/* * 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/). */ (() => { var exports = {}; exports.id = "app/page"; exports.ids = ["app/page"]; exports.modules = { /***/ "./action-async-storage.external": /*!****************************************************************************!*\ !*** external "next/dist/client/components/action-async-storage.external" ***! \****************************************************************************/ /***/ ((module) => { "use strict"; module.exports = require("next/dist/client/components/action-async-storage.external"); /***/ }), /***/ "../../client/components/action-async-storage.external": /*!*******************************************************************************!*\ !*** external "next/dist/client/components/action-async-storage.external.js" ***! \*******************************************************************************/ /***/ ((module) => { "use strict"; module.exports = require("next/dist/client/components/action-async-storage.external.js"); /***/ }), /***/ "./request-async-storage.external": /*!*****************************************************************************!*\ !*** external "next/dist/client/components/request-async-storage.external" ***! \*****************************************************************************/ /***/ ((module) => { "use strict"; module.exports = require("next/dist/client/components/request-async-storage.external"); /***/ }), /***/ "../../client/components/request-async-storage.external": /*!********************************************************************************!*\ !*** external "next/dist/client/components/request-async-storage.external.js" ***! \********************************************************************************/ /***/ ((module) => { "use strict"; module.exports = require("next/dist/client/components/request-async-storage.external.js"); /***/ }), /***/ "./static-generation-async-storage.external": /*!***************************************************************************************!*\ !*** external "next/dist/client/components/static-generation-async-storage.external" ***! \***************************************************************************************/ /***/ ((module) => { "use strict"; module.exports = require("next/dist/client/components/static-generation-async-storage.external"); /***/ }), /***/ "../../client/components/static-generation-async-storage.external": /*!******************************************************************************************!*\ !*** external "next/dist/client/components/static-generation-async-storage.external.js" ***! \******************************************************************************************/ /***/ ((module) => { "use strict"; module.exports = require("next/dist/client/components/static-generation-async-storage.external.js"); /***/ }), /***/ "next/dist/compiled/next-server/app-page.runtime.dev.js": /*!*************************************************************************!*\ !*** external "next/dist/compiled/next-server/app-page.runtime.dev.js" ***! \*************************************************************************/ /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-page.runtime.dev.js"); /***/ }), /***/ "buffer": /*!*************************!*\ !*** external "buffer" ***! \*************************/ /***/ ((module) => { "use strict"; module.exports = require("buffer"); /***/ }), /***/ "crypto": /*!*************************!*\ !*** external "crypto" ***! \*************************/ /***/ ((module) => { "use strict"; module.exports = require("crypto"); /***/ }), /***/ "events": /*!*************************!*\ !*** external "events" ***! \*************************/ /***/ ((module) => { "use strict"; module.exports = require("events"); /***/ }), /***/ "http": /*!***********************!*\ !*** external "http" ***! \***********************/ /***/ ((module) => { "use strict"; module.exports = require("http"); /***/ }), /***/ "https": /*!************************!*\ !*** external "https" ***! \************************/ /***/ ((module) => { "use strict"; module.exports = require("https"); /***/ }), /***/ "node:crypto": /*!******************************!*\ !*** external "node:crypto" ***! \******************************/ /***/ ((module) => { "use strict"; module.exports = require("node:crypto"); /***/ }), /***/ "util": /*!***********************!*\ !*** external "util" ***! \***********************/ /***/ ((module) => { "use strict"; module.exports = require("util"); /***/ }), /***/ "zlib": /*!***********************!*\ !*** external "zlib" ***! \***********************/ /***/ ((module) => { "use strict"; module.exports = require("zlib"); /***/ }), /***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!": /*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D! ***! \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GlobalError: () => (/* reexport default from dynamic */ next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2___default.a),\n/* harmony export */ __next_app__: () => (/* binding */ __next_app__),\n/* harmony export */ originalPathname: () => (/* binding */ originalPathname),\n/* harmony export */ pages: () => (/* binding */ pages),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ tree: () => (/* binding */ tree)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/future/route-modules/app-page/module.compiled */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js?9d97\");\n/* harmony import */ var next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/future/route-kind */ \"(rsc)/./node_modules/next/dist/server/future/route-kind.js\");\n/* harmony import */ var next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/client/components/error-boundary */ \"(rsc)/./node_modules/next/dist/client/components/error-boundary.js\");\n/* harmony import */ var next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/server/app-render/entry-base */ \"(rsc)/./node_modules/next/dist/server/app-render/entry-base.js\");\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__) if([\"default\",\"tree\",\"pages\",\"GlobalError\",\"originalPathname\",\"__next_app__\",\"routeModule\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\"TURBOPACK { transition: next-ssr }\";\n\n\n// We inject the tree and pages here so that we can use them in the route\n// module.\nconst tree = {\n children: [\n '',\n {\n children: ['__PAGE__', {}, {\n page: [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/app/page.tsx */ \"(rsc)/./src/app/page.tsx\")), \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\"],\n metadata: {\n icon: [],\n apple: [],\n openGraph: [],\n twitter: [],\n manifest: \"/manifest.webmanifest\"\n }\n }]\n },\n {\n 'layout': [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/app/layout.tsx */ \"(rsc)/./src/app/layout.tsx\")), \"/home/robin/AI/Coding/Whisky/src/app/layout.tsx\"],\n'not-found': [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/not-found-error */ \"(rsc)/./node_modules/next/dist/client/components/not-found-error.js\", 23)), \"next/dist/client/components/not-found-error\"],\n metadata: {\n icon: [],\n apple: [],\n openGraph: [],\n twitter: [],\n manifest: \"/manifest.webmanifest\"\n }\n }\n ]\n }.children;\nconst pages = [\"/home/robin/AI/Coding/Whisky/src/app/page.tsx\"];\n\n\nconst __next_app_require__ = __webpack_require__\nconst __next_app_load_chunk__ = () => Promise.resolve()\nconst originalPathname = \"/page\";\nconst __next_app__ = {\n require: __next_app_require__,\n loadChunk: __next_app_load_chunk__\n};\n\n// Create and export the route module that will be consumed.\nconst routeModule = new next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppPageRouteModule({\n definition: {\n kind: next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,\n page: \"/page\",\n pathname: \"/\",\n // The following aren't used in production.\n bundlePath: \"\",\n filename: \"\",\n appPaths: []\n },\n userland: {\n loaderTree: tree\n }\n});\n\n//# sourceMappingURL=app-page.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXIuanM/bmFtZT1hcHAlMkZwYWdlJnBhZ2U9JTJGcGFnZSZhcHBQYXRocz0lMkZwYWdlJnBhZ2VQYXRoPXByaXZhdGUtbmV4dC1hcHAtZGlyJTJGcGFnZS50c3gmYXBwRGlyPSUyRmhvbWUlMkZyb2JpbiUyRkFJJTJGQ29kaW5nJTJGV2hpc2t5JTJGc3JjJTJGYXBwJnBhZ2VFeHRlbnNpb25zPXRzeCZwYWdlRXh0ZW5zaW9ucz10cyZwYWdlRXh0ZW5zaW9ucz1qc3gmcGFnZUV4dGVuc2lvbnM9anMmcm9vdERpcj0lMkZob21lJTJGcm9iaW4lMkZBSSUyRkNvZGluZyUyRldoaXNreSZpc0Rldj10cnVlJnRzY29uZmlnUGF0aD10c2NvbmZpZy5qc29uJmJhc2VQYXRoPSZhc3NldFByZWZpeD0mbmV4dENvbmZpZ091dHB1dD0mcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCEiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGFBQWEsc0JBQXNCO0FBQ2lFO0FBQ3JDO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQyx1QkFBdUIsZ0pBQWtGO0FBQ3pHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLHlCQUF5QixvSkFBb0Y7QUFDN0csb0JBQW9CLDBOQUFnRjtBQUNwRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDdUI7QUFDNkQ7QUFDcEYsNkJBQTZCLG1CQUFtQjtBQUNoRDtBQUNPO0FBQ0E7QUFDUDtBQUNBO0FBQ0E7QUFDdUQ7QUFDdkQ7QUFDTyx3QkFBd0IsOEdBQWtCO0FBQ2pEO0FBQ0EsY0FBYyx5RUFBUztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCIsInNvdXJjZXMiOlsid2VicGFjazovL3doaXNreS12YXVsdC8/MzRmZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcIlRVUkJPUEFDSyB7IHRyYW5zaXRpb246IG5leHQtc3NyIH1cIjtcbmltcG9ydCB7IEFwcFBhZ2VSb3V0ZU1vZHVsZSB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2Z1dHVyZS9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL21vZHVsZS5jb21waWxlZFwiO1xuaW1wb3J0IHsgUm91dGVLaW5kIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvZnV0dXJlL3JvdXRlLWtpbmRcIjtcbi8vIFdlIGluamVjdCB0aGUgdHJlZSBhbmQgcGFnZXMgaGVyZSBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlbSBpbiB0aGUgcm91dGVcbi8vIG1vZHVsZS5cbmNvbnN0IHRyZWUgPSB7XG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICcnLFxuICAgICAgICB7XG4gICAgICAgIGNoaWxkcmVuOiBbJ19fUEFHRV9fJywge30sIHtcbiAgICAgICAgICBwYWdlOiBbKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvaG9tZS9yb2Jpbi9BSS9Db2RpbmcvV2hpc2t5L3NyYy9hcHAvcGFnZS50c3hcIiksIFwiL2hvbWUvcm9iaW4vQUkvQ29kaW5nL1doaXNreS9zcmMvYXBwL3BhZ2UudHN4XCJdLFxuICAgICAgICAgIG1ldGFkYXRhOiB7XG4gICAgaWNvbjogW10sXG4gICAgYXBwbGU6IFtdLFxuICAgIG9wZW5HcmFwaDogW10sXG4gICAgdHdpdHRlcjogW10sXG4gICAgbWFuaWZlc3Q6IFwiL21hbmlmZXN0LndlYm1hbmlmZXN0XCJcbiAgfVxuICAgICAgICB9XVxuICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAnbGF5b3V0JzogWygpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL2hvbWUvcm9iaW4vQUkvQ29kaW5nL1doaXNreS9zcmMvYXBwL2xheW91dC50c3hcIiksIFwiL2hvbWUvcm9iaW4vQUkvQ29kaW5nL1doaXNreS9zcmMvYXBwL2xheW91dC50c3hcIl0sXG4nbm90LWZvdW5kJzogWygpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvclwiKSwgXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kLWVycm9yXCJdLFxuICAgICAgICBtZXRhZGF0YToge1xuICAgIGljb246IFtdLFxuICAgIGFwcGxlOiBbXSxcbiAgICBvcGVuR3JhcGg6IFtdLFxuICAgIHR3aXR0ZXI6IFtdLFxuICAgIG1hbmlmZXN0OiBcIi9tYW5pZmVzdC53ZWJtYW5pZmVzdFwiXG4gIH1cbiAgICAgIH1cbiAgICAgIF1cbiAgICAgIH0uY2hpbGRyZW47XG5jb25zdCBwYWdlcyA9IFtcIi9ob21lL3JvYmluL0FJL0NvZGluZy9XaGlza3kvc3JjL2FwcC9wYWdlLnRzeFwiXTtcbmV4cG9ydCB7IHRyZWUsIHBhZ2VzIH07XG5leHBvcnQgeyBkZWZhdWx0IGFzIEdsb2JhbEVycm9yIH0gZnJvbSBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9lcnJvci1ib3VuZGFyeVwiO1xuY29uc3QgX19uZXh0X2FwcF9yZXF1aXJlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fXG5jb25zdCBfX25leHRfYXBwX2xvYWRfY2h1bmtfXyA9ICgpID0+IFByb21pc2UucmVzb2x2ZSgpXG5leHBvcnQgY29uc3Qgb3JpZ2luYWxQYXRobmFtZSA9IFwiL3BhZ2VcIjtcbmV4cG9ydCBjb25zdCBfX25leHRfYXBwX18gPSB7XG4gICAgcmVxdWlyZTogX19uZXh0X2FwcF9yZXF1aXJlX18sXG4gICAgbG9hZENodW5rOiBfX25leHRfYXBwX2xvYWRfY2h1bmtfX1xufTtcbmV4cG9ydCAqIGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvZW50cnktYmFzZVwiO1xuLy8gQ3JlYXRlIGFuZCBleHBvcnQgdGhlIHJvdXRlIG1vZHVsZSB0aGF0IHdpbGwgYmUgY29uc3VtZWQuXG5leHBvcnQgY29uc3Qgcm91dGVNb2R1bGUgPSBuZXcgQXBwUGFnZVJvdXRlTW9kdWxlKHtcbiAgICBkZWZpbml0aW9uOiB7XG4gICAgICAgIGtpbmQ6IFJvdXRlS2luZC5BUFBfUEFHRSxcbiAgICAgICAgcGFnZTogXCIvcGFnZVwiLFxuICAgICAgICBwYXRobmFtZTogXCIvXCIsXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlbid0IHVzZWQgaW4gcHJvZHVjdGlvbi5cbiAgICAgICAgYnVuZGxlUGF0aDogXCJcIixcbiAgICAgICAgZmlsZW5hbWU6IFwiXCIsXG4gICAgICAgIGFwcFBhdGhzOiBbXVxuICAgIH0sXG4gICAgdXNlcmxhbmQ6IHtcbiAgICAgICAgbG9hZGVyVHJlZTogdHJlZVxuICAgIH1cbn0pO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcHAtcGFnZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!\n"); /***/ }), /***/ "(action-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-action-entry-loader.js?actions=%5B%5B%22%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fservices%2Fanalyze-bottle.ts%22%2C%5B%22analyzeBottle%22%5D%5D%2C%5B%22%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fservices%2Fsave-bottle.ts%22%2C%5B%22saveBottle%22%5D%5D%5D&__client_imported__=true!": /*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-action-entry-loader.js?actions=%5B%5B%22%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fservices%2Fanalyze-bottle.ts%22%2C%5B%22analyzeBottle%22%5D%5D%2C%5B%22%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fservices%2Fsave-bottle.ts%22%2C%5B%22saveBottle%22%5D%5D%5D&__client_imported__=true! ***! \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { eval("\nconst actions = {\n'af8f7c7b0fe98b99031bb1c9e8ef0ed13b2eae40': () => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/services/analyze-bottle.ts */ \"(action-browser)/./src/services/analyze-bottle.ts\")).then(mod => mod[\"analyzeBottle\"]),\n'9cc2ffbf85f4e72220537b4253faa867d3a48bad': () => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/services/save-bottle.ts */ \"(action-browser)/./src/services/save-bottle.ts\")).then(mod => mod[\"saveBottle\"]),\n}\n\nasync function endpoint(id, ...args) {\n const action = await actions[id]()\n return action.apply(null, args)\n}\n\n// Using CJS to avoid this to be tree-shaken away due to unused exports.\nmodule.exports = {\n 'af8f7c7b0fe98b99031bb1c9e8ef0ed13b2eae40': endpoint.bind(null, 'af8f7c7b0fe98b99031bb1c9e8ef0ed13b2eae40'),\n '9cc2ffbf85f4e72220537b4253faa867d3a48bad': endpoint.bind(null, '9cc2ffbf85f4e72220537b4253faa867d3a48bad'),\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFjdGlvbi1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtZmxpZ2h0LWFjdGlvbi1lbnRyeS1sb2FkZXIuanM/YWN0aW9ucz0lNUIlNUIlMjIlMkZob21lJTJGcm9iaW4lMkZBSSUyRkNvZGluZyUyRldoaXNreSUyRnNyYyUyRnNlcnZpY2VzJTJGYW5hbHl6ZS1ib3R0bGUudHMlMjIlMkMlNUIlMjJhbmFseXplQm90dGxlJTIyJTVEJTVEJTJDJTVCJTIyJTJGaG9tZSUyRnJvYmluJTJGQUklMkZDb2RpbmclMkZXaGlza3klMkZzcmMlMkZzZXJ2aWNlcyUyRnNhdmUtYm90dGxlLnRzJTIyJTJDJTVCJTIyc2F2ZUJvdHRsZSUyMiU1RCU1RCU1RCZfX2NsaWVudF9pbXBvcnRlZF9fPXRydWUhIiwibWFwcGluZ3MiOiI7QUFDQTtBQUNBLGtEQUFrRCx1TEFBZ0c7QUFDbEosa0RBQWtELGlMQUE2RjtBQUMvSTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd2hpc2t5LXZhdWx0Lz85NDhlIl0sInNvdXJjZXNDb250ZW50IjpbIlxuY29uc3QgYWN0aW9ucyA9IHtcbidhZjhmN2M3YjBmZTk4Yjk5MDMxYmIxYzllOGVmMGVkMTNiMmVhZTQwJzogKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvaG9tZS9yb2Jpbi9BSS9Db2RpbmcvV2hpc2t5L3NyYy9zZXJ2aWNlcy9hbmFseXplLWJvdHRsZS50c1wiKS50aGVuKG1vZCA9PiBtb2RbXCJhbmFseXplQm90dGxlXCJdKSxcbic5Y2MyZmZiZjg1ZjRlNzIyMjA1MzdiNDI1M2ZhYTg2N2QzYTQ4YmFkJzogKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvaG9tZS9yb2Jpbi9BSS9Db2RpbmcvV2hpc2t5L3NyYy9zZXJ2aWNlcy9zYXZlLWJvdHRsZS50c1wiKS50aGVuKG1vZCA9PiBtb2RbXCJzYXZlQm90dGxlXCJdKSxcbn1cblxuYXN5bmMgZnVuY3Rpb24gZW5kcG9pbnQoaWQsIC4uLmFyZ3MpIHtcbiAgY29uc3QgYWN0aW9uID0gYXdhaXQgYWN0aW9uc1tpZF0oKVxuICByZXR1cm4gYWN0aW9uLmFwcGx5KG51bGwsIGFyZ3MpXG59XG5cbi8vIFVzaW5nIENKUyB0byBhdm9pZCB0aGlzIHRvIGJlIHRyZWUtc2hha2VuIGF3YXkgZHVlIHRvIHVudXNlZCBleHBvcnRzLlxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICdhZjhmN2M3YjBmZTk4Yjk5MDMxYmIxYzllOGVmMGVkMTNiMmVhZTQwJzogZW5kcG9pbnQuYmluZChudWxsLCAnYWY4ZjdjN2IwZmU5OGI5OTAzMWJiMWM5ZThlZjBlZDEzYjJlYWU0MCcpLFxuICAnOWNjMmZmYmY4NWY0ZTcyMjIwNTM3YjQyNTNmYWE4NjdkM2E0OGJhZCc6IGVuZHBvaW50LmJpbmQobnVsbCwgJzljYzJmZmJmODVmNGU3MjIyMDUzN2I0MjUzZmFhODY3ZDNhNDhiYWQnKSxcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(action-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-action-entry-loader.js?actions=%5B%5B%22%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fservices%2Fanalyze-bottle.ts%22%2C%5B%22analyzeBottle%22%5D%5D%2C%5B%22%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fservices%2Fsave-bottle.ts%22%2C%5B%22saveBottle%22%5D%5D%5D&__client_imported__=true!\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=true!": /*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=true! ***! \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/app-router.js */ \"(ssr)/./node_modules/next/dist/client/components/app-router.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/error-boundary.js */ \"(ssr)/./node_modules/next/dist/client/components/error-boundary.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/layout-router.js */ \"(ssr)/./node_modules/next/dist/client/components/layout-router.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/not-found-boundary.js */ \"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/render-from-template-context.js */ \"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/static-generation-searchparams-bailout-provider.js */ \"(ssr)/./node_modules/next/dist/client/components/static-generation-searchparams-bailout-provider.js\", 23))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTJGaG9tZSUyRnJvYmluJTJGQUklMkZDb2RpbmclMkZXaGlza3klMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZhcHAtcm91dGVyLmpzJm1vZHVsZXM9JTJGaG9tZSUyRnJvYmluJTJGQUklMkZDb2RpbmclMkZXaGlza3klMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZlcnJvci1ib3VuZGFyeS5qcyZtb2R1bGVzPSUyRmhvbWUlMkZyb2JpbiUyRkFJJTJGQ29kaW5nJTJGV2hpc2t5JTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGbGF5b3V0LXJvdXRlci5qcyZtb2R1bGVzPSUyRmhvbWUlMkZyb2JpbiUyRkFJJTJGQ29kaW5nJTJGV2hpc2t5JTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGbm90LWZvdW5kLWJvdW5kYXJ5LmpzJm1vZHVsZXM9JTJGaG9tZSUyRnJvYmluJTJGQUklMkZDb2RpbmclMkZXaGlza3klMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZyZW5kZXItZnJvbS10ZW1wbGF0ZS1jb250ZXh0LmpzJm1vZHVsZXM9JTJGaG9tZSUyRnJvYmluJTJGQUklMkZDb2RpbmclMkZXaGlza3klMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZzdGF0aWMtZ2VuZXJhdGlvbi1zZWFyY2hwYXJhbXMtYmFpbG91dC1wcm92aWRlci5qcyZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsa09BQXdIO0FBQ3hILDBPQUE0SDtBQUM1SCx3T0FBMkg7QUFDM0gsa1BBQWdJO0FBQ2hJLHNRQUEwSTtBQUMxSSIsInNvdXJjZXMiOlsid2VicGFjazovL3doaXNreS12YXVsdC8/ZTM3NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9ob21lL3JvYmluL0FJL0NvZGluZy9XaGlza3kvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLmpzXCIpO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvaG9tZS9yb2Jpbi9BSS9Db2RpbmcvV2hpc2t5L25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnkuanNcIik7XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9ob21lL3JvYmluL0FJL0NvZGluZy9XaGlza3kvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9sYXlvdXQtcm91dGVyLmpzXCIpO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvaG9tZS9yb2Jpbi9BSS9Db2RpbmcvV2hpc2t5L25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kLWJvdW5kYXJ5LmpzXCIpO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvaG9tZS9yb2Jpbi9BSS9Db2RpbmcvV2hpc2t5L25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qc1wiKTtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL2hvbWUvcm9iaW4vQUkvQ29kaW5nL1doaXNreS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3N0YXRpYy1nZW5lcmF0aW9uLXNlYXJjaHBhcmFtcy1iYWlsb3V0LXByb3ZpZGVyLmpzXCIpIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=true!\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.tsx%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fapp%2Fglobals.css&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fcomponents%2FOfflineIndicator.tsx&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fcomponents%2FPWARegistration.tsx&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fcomponents%2FUploadQueue.tsx&server=true!": /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.tsx%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fapp%2Fglobals.css&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fcomponents%2FOfflineIndicator.tsx&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fcomponents%2FPWARegistration.tsx&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fcomponents%2FUploadQueue.tsx&server=true! ***! \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/components/OfflineIndicator.tsx */ \"(ssr)/./src/components/OfflineIndicator.tsx\"));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/components/PWARegistration.tsx */ \"(ssr)/./src/components/PWARegistration.tsx\"));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/components/UploadQueue.tsx */ \"(ssr)/./src/components/UploadQueue.tsx\"))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTJGaG9tZSUyRnJvYmluJTJGQUklMkZDb2RpbmclMkZXaGlza3klMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZm9udCUyRmdvb2dsZSUyRnRhcmdldC5jc3MlM0YlN0IlMjJwYXRoJTIyJTNBJTIyc3JjJTJGYXBwJTJGbGF5b3V0LnRzeCUyMiUyQyUyMmltcG9ydCUyMiUzQSUyMkludGVyJTIyJTJDJTIyYXJndW1lbnRzJTIyJTNBJTVCJTdCJTIyc3Vic2V0cyUyMiUzQSU1QiUyMmxhdGluJTIyJTVEJTdEJTVEJTJDJTIydmFyaWFibGVOYW1lJTIyJTNBJTIyaW50ZXIlMjIlN0QmbW9kdWxlcz0lMkZob21lJTJGcm9iaW4lMkZBSSUyRkNvZGluZyUyRldoaXNreSUyRnNyYyUyRmFwcCUyRmdsb2JhbHMuY3NzJm1vZHVsZXM9JTJGaG9tZSUyRnJvYmluJTJGQUklMkZDb2RpbmclMkZXaGlza3klMkZzcmMlMkZjb21wb25lbnRzJTJGT2ZmbGluZUluZGljYXRvci50c3gmbW9kdWxlcz0lMkZob21lJTJGcm9iaW4lMkZBSSUyRkNvZGluZyUyRldoaXNreSUyRnNyYyUyRmNvbXBvbmVudHMlMkZQV0FSZWdpc3RyYXRpb24udHN4Jm1vZHVsZXM9JTJGaG9tZSUyRnJvYmluJTJGQUklMkZDb2RpbmclMkZXaGlza3klMkZzcmMlMkZjb21wb25lbnRzJTJGVXBsb2FkUXVldWUudHN4JnNlcnZlcj10cnVlISIsIm1hcHBpbmdzIjoiQUFBQSxzTEFBcUc7QUFDckcsb0xBQW9HO0FBQ3BHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd2hpc2t5LXZhdWx0Lz9mZWQzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL2hvbWUvcm9iaW4vQUkvQ29kaW5nL1doaXNreS9zcmMvY29tcG9uZW50cy9PZmZsaW5lSW5kaWNhdG9yLnRzeFwiKTtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL2hvbWUvcm9iaW4vQUkvQ29kaW5nL1doaXNreS9zcmMvY29tcG9uZW50cy9QV0FSZWdpc3RyYXRpb24udHN4XCIpO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvaG9tZS9yb2Jpbi9BSS9Db2RpbmcvV2hpc2t5L3NyYy9jb21wb25lbnRzL1VwbG9hZFF1ZXVlLnRzeFwiKSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.tsx%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fapp%2Fglobals.css&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fcomponents%2FOfflineIndicator.tsx&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fcomponents%2FPWARegistration.tsx&modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fcomponents%2FUploadQueue.tsx&server=true!\n"); /***/ }), /***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fapp%2Fpage.tsx&server=true!": /*!****************************************************************************************************************************************************************************!*\ !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fapp%2Fpage.tsx&server=true! ***! \****************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/app/page.tsx */ \"(ssr)/./src/app/page.tsx\"))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTJGaG9tZSUyRnJvYmluJTJGQUklMkZDb2RpbmclMkZXaGlza3klMkZzcmMlMkZhcHAlMkZwYWdlLnRzeCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aGlza3ktdmF1bHQvPzM5YjgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvaG9tZS9yb2Jpbi9BSS9Db2RpbmcvV2hpc2t5L3NyYy9hcHAvcGFnZS50c3hcIikiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fapp%2Fpage.tsx&server=true!\n"); /***/ }), /***/ "(ssr)/./src/app/page.tsx": /*!**************************!*\ !*** ./src/app/page.tsx ***! \**************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__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 */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @supabase/auth-helpers-nextjs */ \"(ssr)/./node_modules/@supabase/auth-helpers-nextjs/dist/index.js\");\n/* harmony import */ var _supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_CameraCapture__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/CameraCapture */ \"(ssr)/./src/components/CameraCapture.tsx\");\n/* harmony import */ var _components_BottleGrid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/BottleGrid */ \"(ssr)/./src/components/BottleGrid.tsx\");\n/* harmony import */ var _components_AuthForm__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/AuthForm */ \"(ssr)/./src/components/AuthForm.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\n\nfunction Home() {\n const supabase = (0,_supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_2__.createClientComponentClient)();\n const [bottles, setBottles] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [isLoading, setIsLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [user, setUser] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null); // Added user state\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n // Check session\n const checkUser = async ()=>{\n const { data: { session } } = await supabase.auth.getSession();\n setUser(session?.user ?? null);\n if (session?.user) {\n fetchCollection();\n } else {\n setIsLoading(false);\n }\n };\n checkUser();\n // Listen for auth changes\n const { data: { subscription } } = supabase.auth.onAuthStateChange((_event, session)=>{\n setUser(session?.user ?? null);\n if (session?.user) {\n fetchCollection();\n } else {\n setBottles([]);\n }\n });\n return ()=>subscription.unsubscribe();\n }, []);\n const fetchCollection = async ()=>{\n setIsLoading(true);\n try {\n // Fetch bottles with their latest tasting date\n const { data, error } = await supabase.from(\"bottles\").select(`\n *,\n tastings (\n created_at\n )\n `).order(\"created_at\", {\n ascending: false\n });\n if (error) throw error;\n // Process data to get the absolute latest tasting date for each bottle\n const processedBottles = (data || []).map((bottle)=>{\n const lastTasted = bottle.tastings && bottle.tastings.length > 0 ? bottle.tastings.reduce((latest, current)=>new Date(current.created_at) > new Date(latest) ? current.created_at : latest, bottle.tastings[0].created_at) : null;\n return {\n ...bottle,\n last_tasted: lastTasted\n };\n });\n setBottles(processedBottles);\n } catch (err) {\n console.error(\"Error fetching collection:\", err);\n } finally{\n setIsLoading(false);\n }\n };\n const handleLogout = async ()=>{\n await supabase.auth.signOut();\n };\n if (!user) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"flex min-h-screen flex-col items-center justify-center p-6 bg-zinc-50 dark:bg-black\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-12 text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-5xl font-black text-zinc-900 dark:text-white tracking-tighter mb-4\",\n children: [\n \"WHISKY\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-600\",\n children: \"VAULT\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 90,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 89,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-zinc-500 max-w-sm mx-auto\",\n children: \"Scanne deine Flaschen, tracke deine Tastings und verwalte deinen Keller.\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 92,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 88,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_AuthForm__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {}, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 94,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 87,\n columnNumber: 13\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"flex min-h-screen flex-col items-center gap-12 p-6 md:p-24 bg-zinc-50 dark:bg-black\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"z-10 max-w-5xl w-full flex flex-col items-center gap-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"w-full flex justify-between items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-4xl font-black text-zinc-900 dark:text-white tracking-tighter\",\n children: [\n \"WHISKY\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-600\",\n children: \"VAULT\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 104,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 103,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleLogout,\n className: \"text-sm font-medium text-zinc-500 hover:text-zinc-800 dark:hover:text-zinc-300 transition-colors\",\n children: \"Abmelden\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 106,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 102,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_CameraCapture__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n onSaveComplete: fetchCollection\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 114,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full mt-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-2xl font-bold mb-6 text-zinc-800 dark:text-zinc-100 flex items-center gap-3\",\n children: [\n \"Deine Sammlung\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-normal text-zinc-500 bg-zinc-100 dark:bg-zinc-800 px-3 py-1 rounded-full\",\n children: bottles.length\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 119,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 117,\n columnNumber: 21\n }, this),\n isLoading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center py-12\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"animate-spin rounded-full h-8 w-8 border-b-2 border-amber-600\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 126,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 125,\n columnNumber: 25\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_BottleGrid__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n bottles: bottles\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 129,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 116,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 101,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 100,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNFOzRCQUFHRixXQUFVOztnQ0FBcUU7OENBQ3pFLDhEQUFDRztvQ0FBS0gsV0FBVTs4Q0FBaUI7Ozs7Ozs7Ozs7OztzQ0FFM0MsOERBQUNNOzRCQUNHQyxTQUFTVjs0QkFDVEcsV0FBVTtzQ0FDYjs7Ozs7Ozs7Ozs7OzhCQUtMLDhEQUFDM0MsaUVBQWFBO29CQUFDbUQsZ0JBQWdCbkM7Ozs7Ozs4QkFFL0IsOERBQUM0QjtvQkFBSUQsV0FBVTs7c0NBQ1gsOERBQUNTOzRCQUFHVCxXQUFVOztnQ0FBbUY7OENBRTdGLDhEQUFDRztvQ0FBS0gsV0FBVTs4Q0FDWHRDLFFBQVEwQixNQUFNOzs7Ozs7Ozs7Ozs7d0JBSXRCeEIsMEJBQ0csOERBQUNxQzs0QkFBSUQsV0FBVTtzQ0FDWCw0RUFBQ0M7Z0NBQUlELFdBQVU7Ozs7Ozs7Ozs7aURBR25CLDhEQUFDMUMsOERBQVVBOzRCQUFDSSxTQUFTQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNN0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aGlza3ktdmF1bHQvLi9zcmMvYXBwL3BhZ2UudHN4P2Y2OGEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3JlYXRlQ2xpZW50Q29tcG9uZW50Q2xpZW50IH0gZnJvbSAnQHN1cGFiYXNlL2F1dGgtaGVscGVycy1uZXh0anMnO1xuaW1wb3J0IENhbWVyYUNhcHR1cmUgZnJvbSBcIkAvY29tcG9uZW50cy9DYW1lcmFDYXB0dXJlXCI7XG5pbXBvcnQgQm90dGxlR3JpZCBmcm9tIFwiQC9jb21wb25lbnRzL0JvdHRsZUdyaWRcIjtcbmltcG9ydCBBdXRoRm9ybSBmcm9tIFwiQC9jb21wb25lbnRzL0F1dGhGb3JtXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEhvbWUoKSB7XG4gICAgY29uc3Qgc3VwYWJhc2UgPSBjcmVhdGVDbGllbnRDb21wb25lbnRDbGllbnQoKTtcbiAgICBjb25zdCBbYm90dGxlcywgc2V0Qm90dGxlc10gPSB1c2VTdGF0ZTxhbnlbXT4oW10pO1xuICAgIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBbdXNlciwgc2V0VXNlcl0gPSB1c2VTdGF0ZTxhbnk+KG51bGwpOyAvLyBBZGRlZCB1c2VyIHN0YXRlXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyBDaGVjayBzZXNzaW9uXG4gICAgICAgIGNvbnN0IGNoZWNrVXNlciA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZGF0YTogeyBzZXNzaW9uIH0gfSA9IGF3YWl0IHN1cGFiYXNlLmF1dGguZ2V0U2Vzc2lvbigpO1xuICAgICAgICAgICAgc2V0VXNlcihzZXNzaW9uPy51c2VyID8/IG51bGwpO1xuICAgICAgICAgICAgaWYgKHNlc3Npb24/LnVzZXIpIHtcbiAgICAgICAgICAgICAgICBmZXRjaENvbGxlY3Rpb24oKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBjaGVja1VzZXIoKTtcblxuICAgICAgICAvLyBMaXN0ZW4gZm9yIGF1dGggY2hhbmdlc1xuICAgICAgICBjb25zdCB7IGRhdGE6IHsgc3Vic2NyaXB0aW9uIH0gfSA9IHN1cGFiYXNlLmF1dGgub25BdXRoU3RhdGVDaGFuZ2UoKF9ldmVudCwgc2Vzc2lvbikgPT4ge1xuICAgICAgICAgICAgc2V0VXNlcihzZXNzaW9uPy51c2VyID8/IG51bGwpO1xuICAgICAgICAgICAgaWYgKHNlc3Npb24/LnVzZXIpIHtcbiAgICAgICAgICAgICAgICBmZXRjaENvbGxlY3Rpb24oKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0Qm90dGxlcyhbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBmZXRjaENvbGxlY3Rpb24gPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIEZldGNoIGJvdHRsZXMgd2l0aCB0aGVpciBsYXRlc3QgdGFzdGluZyBkYXRlXG4gICAgICAgICAgICBjb25zdCB7IGRhdGEsIGVycm9yIH0gPSBhd2FpdCBzdXBhYmFzZVxuICAgICAgICAgICAgICAgIC5mcm9tKCdib3R0bGVzJylcbiAgICAgICAgICAgICAgICAuc2VsZWN0KGBcbiAgICAgICAgICAqLFxuICAgICAgICAgIHRhc3RpbmdzIChcbiAgICAgICAgICAgIGNyZWF0ZWRfYXRcbiAgICAgICAgICApXG4gICAgICAgIGApXG4gICAgICAgICAgICAgICAgLm9yZGVyKCdjcmVhdGVkX2F0JywgeyBhc2NlbmRpbmc6IGZhbHNlIH0pO1xuXG4gICAgICAgICAgICBpZiAoZXJyb3IpIHRocm93IGVycm9yO1xuXG4gICAgICAgICAgICAvLyBQcm9jZXNzIGRhdGEgdG8gZ2V0IHRoZSBhYnNvbHV0ZSBsYXRlc3QgdGFzdGluZyBkYXRlIGZvciBlYWNoIGJvdHRsZVxuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2VkQm90dGxlcyA9IChkYXRhIHx8IFtdKS5tYXAoYm90dGxlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0VGFzdGVkID0gYm90dGxlLnRhc3RpbmdzICYmIGJvdHRsZS50YXN0aW5ncy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgID8gYm90dGxlLnRhc3RpbmdzLnJlZHVjZSgobGF0ZXN0OiBzdHJpbmcsIGN1cnJlbnQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKGN1cnJlbnQuY3JlYXRlZF9hdCkgPiBuZXcgRGF0ZShsYXRlc3QpID8gY3VycmVudC5jcmVhdGVkX2F0IDogbGF0ZXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgYm90dGxlLnRhc3RpbmdzWzBdLmNyZWF0ZWRfYXRcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5ib3R0bGUsXG4gICAgICAgICAgICAgICAgICAgIGxhc3RfdGFzdGVkOiBsYXN0VGFzdGVkXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBzZXRCb3R0bGVzKHByb2Nlc3NlZEJvdHRsZXMpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNvbGxlY3Rpb246JywgZXJyKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlTG9nb3V0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBzdXBhYmFzZS5hdXRoLnNpZ25PdXQoKTtcbiAgICB9O1xuXG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8bWFpbiBjbGFzc05hbWU9XCJmbGV4IG1pbi1oLXNjcmVlbiBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC02IGJnLXppbmMtNTAgZGFyazpiZy1ibGFja1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItMTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtNXhsIGZvbnQtYmxhY2sgdGV4dC16aW5jLTkwMCBkYXJrOnRleHQtd2hpdGUgdHJhY2tpbmctdGlnaHRlciBtYi00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBXSElTS1k8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWFtYmVyLTYwMFwiPlZBVUxUPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXppbmMtNTAwIG1heC13LXNtIG14LWF1dG9cIj5TY2FubmUgZGVpbmUgRmxhc2NoZW4sIHRyYWNrZSBkZWluZSBUYXN0aW5ncyB1bmQgdmVyd2FsdGUgZGVpbmVuIEtlbGxlci48L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPEF1dGhGb3JtIC8+XG4gICAgICAgICAgICA8L21haW4+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwiZmxleCBtaW4taC1zY3JlZW4gZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC0xMiBwLTYgbWQ6cC0yNCBiZy16aW5jLTUwIGRhcms6YmctYmxhY2tcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiei0xMCBtYXgtdy01eGwgdy1mdWxsIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC04XCI+XG4gICAgICAgICAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJ3LWZ1bGwgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTR4bCBmb250LWJsYWNrIHRleHQtemluYy05MDAgZGFyazp0ZXh0LXdoaXRlIHRyYWNraW5nLXRpZ2h0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFdISVNLWTxzcGFuIGNsYXNzTmFtZT1cInRleHQtYW1iZXItNjAwXCI+VkFVTFQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUxvZ291dH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC16aW5jLTUwMCBob3Zlcjp0ZXh0LXppbmMtODAwIGRhcms6aG92ZXI6dGV4dC16aW5jLTMwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEFibWVsZGVuXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgPENhbWVyYUNhcHR1cmUgb25TYXZlQ29tcGxldGU9e2ZldGNoQ29sbGVjdGlvbn0gLz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIG10LTEyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgbWItNiB0ZXh0LXppbmMtODAwIGRhcms6dGV4dC16aW5jLTEwMCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRGVpbmUgU2FtbWx1bmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1ub3JtYWwgdGV4dC16aW5jLTUwMCBiZy16aW5jLTEwMCBkYXJrOmJnLXppbmMtODAwIHB4LTMgcHktMSByb3VuZGVkLWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ym90dGxlcy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvaDI+XG5cbiAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBweS0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBoLTggdy04IGJvcmRlci1iLTIgYm9yZGVyLWFtYmVyLTYwMFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Qm90dGxlR3JpZCBib3R0bGVzPXtib3R0bGVzfSAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWFpbj5cbiAgICApO1xufVxuIl0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY3JlYXRlQ2xpZW50Q29tcG9uZW50Q2xpZW50IiwiQ2FtZXJhQ2FwdHVyZSIsIkJvdHRsZUdyaWQiLCJBdXRoRm9ybSIsIkhvbWUiLCJzdXBhYmFzZSIsImJvdHRsZXMiLCJzZXRCb3R0bGVzIiwiaXNMb2FkaW5nIiwic2V0SXNMb2FkaW5nIiwidXNlciIsInNldFVzZXIiLCJjaGVja1VzZXIiLCJkYXRhIiwic2Vzc2lvbiIsImF1dGgiLCJnZXRTZXNzaW9uIiwiZmV0Y2hDb2xsZWN0aW9uIiwic3Vic2NyaXB0aW9uIiwib25BdXRoU3RhdGVDaGFuZ2UiLCJfZXZlbnQiLCJ1bnN1YnNjcmliZSIsImVycm9yIiwiZnJvbSIsInNlbGVjdCIsIm9yZGVyIiwiYXNjZW5kaW5nIiwicHJvY2Vzc2VkQm90dGxlcyIsIm1hcCIsImJvdHRsZSIsImxhc3RUYXN0ZWQiLCJ0YXN0aW5ncyIsImxlbmd0aCIsInJlZHVjZSIsImxhdGVzdCIsImN1cnJlbnQiLCJEYXRlIiwiY3JlYXRlZF9hdCIsImxhc3RfdGFzdGVkIiwiZXJyIiwiY29uc29sZSIsImhhbmRsZUxvZ291dCIsInNpZ25PdXQiLCJtYWluIiwiY2xhc3NOYW1lIiwiZGl2IiwiaDEiLCJzcGFuIiwicCIsImhlYWRlciIsImJ1dHRvbiIsIm9uQ2xpY2siLCJvblNhdmVDb21wbGV0ZSIsImgyIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./src/app/page.tsx\n"); /***/ }), /***/ "(ssr)/./src/components/AuthForm.tsx": /*!*************************************!*\ !*** ./src/components/AuthForm.tsx ***! \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ AuthForm)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @supabase/auth-helpers-nextjs */ \"(ssr)/./node_modules/@supabase/auth-helpers-nextjs/dist/index.js\");\n/* harmony import */ var _supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Loader2_Lock_LogIn_Mail_UserPlus_lucide_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Loader2,Lock,LogIn,Mail,UserPlus!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/log-in.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Loader2_Lock_LogIn_Mail_UserPlus_lucide_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Loader2,Lock,LogIn,Mail,UserPlus!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/user-plus.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Loader2_Lock_LogIn_Mail_UserPlus_lucide_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Loader2,Lock,LogIn,Mail,UserPlus!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/mail.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Loader2_Lock_LogIn_Mail_UserPlus_lucide_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Loader2,Lock,LogIn,Mail,UserPlus!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/lock.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Loader2_Lock_LogIn_Mail_UserPlus_lucide_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Loader2,Lock,LogIn,Mail,UserPlus!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/alert-circle.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Loader2_Lock_LogIn_Mail_UserPlus_lucide_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Loader2,Lock,LogIn,Mail,UserPlus!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/loader-2.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\nfunction AuthForm() {\n const supabase = (0,_supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_2__.createClientComponentClient)();\n const [isLogin, setIsLogin] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [email, setEmail] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [password, setPassword] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [message, setMessage] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const handleSubmit = async (e)=>{\n e.preventDefault();\n setLoading(true);\n setError(null);\n setMessage(null);\n try {\n if (isLogin) {\n const { error } = await supabase.auth.signInWithPassword({\n email,\n password\n });\n if (error) throw error;\n } else {\n const { error } = await supabase.auth.signUp({\n email,\n password,\n options: {\n emailRedirectTo: `${window.location.origin}/auth/callback`\n }\n });\n if (error) throw error;\n setMessage(\"Checke deine E-Mails, um dein Konto zu best\\xe4tigen!\");\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : \"Ein Fehler ist aufgetreten\");\n } finally{\n setLoading(false);\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full max-w-md p-8 bg-white dark:bg-zinc-900 rounded-3xl shadow-2xl border border-zinc-200 dark:border-zinc-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-16 h-16 bg-amber-100 dark:bg-amber-900/30 rounded-2xl flex items-center justify-center mb-4\",\n children: isLogin ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Loader2_Lock_LogIn_Mail_UserPlus_lucide_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"text-amber-600\",\n size: 32\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 48,\n columnNumber: 32\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Loader2_Lock_LogIn_Mail_UserPlus_lucide_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"text-amber-600\",\n size: 32\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 48,\n columnNumber: 81\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 47,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-3xl font-black text-zinc-900 dark:text-white tracking-tight\",\n children: isLogin ? \"Willkommen zur\\xfcck\" : \"Vault erstellen\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 50,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-zinc-500 dark:text-zinc-400 mt-2 text-center text-sm\",\n children: isLogin ? \"Logge dich ein, um auf deine Sammlung zuzugreifen.\" : \"Starte heute mit deinem digitalen Whisky-Vault.\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 53,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 46,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: handleSubmit,\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"text-sm font-semibold text-zinc-700 dark:text-zinc-300 ml-1\",\n children: \"E-Mail\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 62,\n columnNumber: 21\n }, this),\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)(_barrel_optimize_names_AlertCircle_Loader2_Lock_LogIn_Mail_UserPlus_lucide_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"absolute left-3 top-1/2 -translate-y-1/2 text-zinc-400\",\n size: 18\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 64,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"email\",\n value: email,\n onChange: (e)=>setEmail(e.target.value),\n placeholder: \"name@beispiel.de\",\n required: true,\n className: \"w-full pl-10 pr-4 py-3 bg-zinc-50 dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 rounded-xl focus:ring-2 focus:ring-amber-500 focus:border-transparent outline-none transition-all dark:text-white\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 65,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 63,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 61,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"text-sm font-semibold text-zinc-700 dark:text-zinc-300 ml-1\",\n children: \"Passwort\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 77,\n columnNumber: 21\n }, this),\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)(_barrel_optimize_names_AlertCircle_Loader2_Lock_LogIn_Mail_UserPlus_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"absolute left-3 top-1/2 -translate-y-1/2 text-zinc-400\",\n size: 18\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 79,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"password\",\n value: password,\n onChange: (e)=>setPassword(e.target.value),\n placeholder: \"••••••••\",\n required: true,\n className: \"w-full pl-10 pr-4 py-3 bg-zinc-50 dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 rounded-xl focus:ring-2 focus:ring-amber-500 focus:border-transparent outline-none transition-all dark:text-white\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 80,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 78,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 76,\n columnNumber: 17\n }, this),\n error && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 p-3 bg-red-50 dark:bg-red-900/20 text-red-600 dark:text-red-400 text-sm rounded-lg border border-red-100 dark:border-red-900/50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Loader2_Lock_LogIn_Mail_UserPlus_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n size: 16\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 93,\n columnNumber: 25\n }, this),\n error\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 92,\n columnNumber: 21\n }, this),\n message && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-3 bg-green-50 dark:bg-green-900/20 text-green-600 dark:text-green-400 text-sm rounded-lg border border-green-100 dark:border-green-900/50\",\n children: message\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 99,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n disabled: loading,\n className: \"w-full py-4 bg-amber-600 hover:bg-amber-700 text-white font-bold rounded-xl shadow-lg shadow-amber-600/20 transition-all active:scale-[0.98] disabled:opacity-50 flex items-center justify-center gap-2\",\n children: loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Loader2_Lock_LogIn_Mail_UserPlus_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"animate-spin\",\n size: 20\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 109,\n columnNumber: 32\n }, this) : isLogin ? \"Einloggen\" : \"Konto erstellen\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 104,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 60,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-6 text-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setIsLogin(!isLogin),\n className: \"text-sm font-medium text-amber-600 hover:text-amber-700 transition-colors\",\n children: isLogin ? \"Noch kein Konto? Registrieren\" : \"Bereits ein Konto? Einloggen\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 114,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 113,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/AuthForm.tsx\",\n lineNumber: 45,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9zcmMvY29tcG9uZW50cy9BdXRoRm9ybS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFd0M7QUFDb0M7QUFDSztBQUVsRSxTQUFTUztJQUNwQixNQUFNQyxXQUFXUiwwRkFBMkJBO0lBQzVDLE1BQU0sQ0FBQ1MsU0FBU0MsV0FBVyxHQUFHWCwrQ0FBUUEsQ0FBQztJQUN2QyxNQUFNLENBQUNZLE9BQU9DLFNBQVMsR0FBR2IsK0NBQVFBLENBQUM7SUFDbkMsTUFBTSxDQUFDYyxVQUFVQyxZQUFZLEdBQUdmLCtDQUFRQSxDQUFDO0lBQ3pDLE1BQU0sQ0FBQ2dCLFNBQVNDLFdBQVcsR0FBR2pCLCtDQUFRQSxDQUFDO0lBQ3ZDLE1BQU0sQ0FBQ2tCLE9BQU9DLFNBQVMsR0FBR25CLCtDQUFRQSxDQUFnQjtJQUNsRCxNQUFNLENBQUNvQixTQUFTQyxXQUFXLEdBQUdyQiwrQ0FBUUEsQ0FBZ0I7SUFFdEQsTUFBTXNCLGVBQWUsT0FBT0M7UUFDeEJBLEVBQUVDLGNBQWM7UUFDaEJQLFdBQVc7UUFDWEUsU0FBUztRQUNURSxXQUFXO1FBRVgsSUFBSTtZQUNBLElBQUlYLFNBQVM7Z0JBQ1QsTUFBTSxFQUFFUSxLQUFLLEVBQUUsR0FBRyxNQUFNVCxTQUFTZ0IsSUFBSSxDQUFDQyxrQkFBa0IsQ0FBQztvQkFBRWQ7b0JBQU9FO2dCQUFTO2dCQUMzRSxJQUFJSSxPQUFPLE1BQU1BO1lBQ3JCLE9BQU87Z0JBQ0gsTUFBTSxFQUFFQSxLQUFLLEVBQUUsR0FBRyxNQUFNVCxTQUFTZ0IsSUFBSSxDQUFDRSxNQUFNLENBQUM7b0JBQ3pDZjtvQkFDQUU7b0JBQ0FjLFNBQVM7d0JBQ0xDLGlCQUFpQixDQUFDLEVBQUVDLE9BQU9DLFFBQVEsQ0FBQ0MsTUFBTSxDQUFDLGNBQWMsQ0FBQztvQkFDOUQ7Z0JBQ0o7Z0JBQ0EsSUFBSWQsT0FBTyxNQUFNQTtnQkFDakJHLFdBQVc7WUFDZjtRQUNKLEVBQUUsT0FBT1ksS0FBSztZQUNWZCxTQUFTYyxlQUFlQyxRQUFRRCxJQUFJYixPQUFPLEdBQUc7UUFDbEQsU0FBVTtZQUNOSCxXQUFXO1FBQ2Y7SUFDSjtJQUVBLHFCQUNJLDhEQUFDa0I7UUFBSUMsV0FBVTs7MEJBQ1gsOERBQUNEO2dCQUFJQyxXQUFVOztrQ0FDWCw4REFBQ0Q7d0JBQUlDLFdBQVU7a0NBQ1YxQix3QkFBVSw4REFBQ1Isd0hBQUtBOzRCQUFDa0MsV0FBVTs0QkFBaUJDLE1BQU07Ozs7O2lEQUFTLDhEQUFDbEMsd0hBQVFBOzRCQUFDaUMsV0FBVTs0QkFBaUJDLE1BQU07Ozs7Ozs7Ozs7O2tDQUUzRyw4REFBQ0M7d0JBQUdGLFdBQVU7a0NBQ1QxQixVQUFVLHlCQUFzQjs7Ozs7O2tDQUVyQyw4REFBQzZCO3dCQUFFSCxXQUFVO2tDQUNSMUIsVUFDSyx1REFDQTs7Ozs7Ozs7Ozs7OzBCQUlkLDhEQUFDOEI7Z0JBQUtDLFVBQVVuQjtnQkFBY2MsV0FBVTs7a0NBQ3BDLDhEQUFDRDt3QkFBSUMsV0FBVTs7MENBQ1gsOERBQUNNO2dDQUFNTixXQUFVOzBDQUE4RDs7Ozs7OzBDQUMvRSw4REFBQ0Q7Z0NBQUlDLFdBQVU7O2tEQUNYLDhEQUFDaEMsd0hBQUlBO3dDQUFDZ0MsV0FBVTt3Q0FBeURDLE1BQU07Ozs7OztrREFDL0UsOERBQUNNO3dDQUNHQyxNQUFLO3dDQUNMQyxPQUFPakM7d0NBQ1BrQyxVQUFVLENBQUN2QixJQUFNVixTQUFTVSxFQUFFd0IsTUFBTSxDQUFDRixLQUFLO3dDQUN4Q0csYUFBWTt3Q0FDWkMsUUFBUTt3Q0FDUmIsV0FBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDQUt0Qiw4REFBQ0Q7d0JBQUlDLFdBQVU7OzBDQUNYLDhEQUFDTTtnQ0FBTU4sV0FBVTswQ0FBOEQ7Ozs7OzswQ0FDL0UsOERBQUNEO2dDQUFJQyxXQUFVOztrREFDWCw4REFBQy9CLHdIQUFJQTt3Q0FBQytCLFdBQVU7d0NBQXlEQyxNQUFNOzs7Ozs7a0RBQy9FLDhEQUFDTTt3Q0FDR0MsTUFBSzt3Q0FDTEMsT0FBTy9CO3dDQUNQZ0MsVUFBVSxDQUFDdkIsSUFBTVIsWUFBWVEsRUFBRXdCLE1BQU0sQ0FBQ0YsS0FBSzt3Q0FDM0NHLGFBQVk7d0NBQ1pDLFFBQVE7d0NBQ1JiLFdBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQkFLckJsQix1QkFDRyw4REFBQ2lCO3dCQUFJQyxXQUFVOzswQ0FDWCw4REFBQzdCLHdIQUFXQTtnQ0FBQzhCLE1BQU07Ozs7Ozs0QkFDbEJuQjs7Ozs7OztvQkFJUkUseUJBQ0csOERBQUNlO3dCQUFJQyxXQUFVO2tDQUNWaEI7Ozs7OztrQ0FJVCw4REFBQzhCO3dCQUNHTixNQUFLO3dCQUNMTyxVQUFVbkM7d0JBQ1ZvQixXQUFVO2tDQUVUcEIsd0JBQVUsOERBQUNWLHdIQUFPQTs0QkFBQzhCLFdBQVU7NEJBQWVDLE1BQU07Ozs7O21DQUFVM0IsVUFBVSxjQUFjOzs7Ozs7Ozs7Ozs7MEJBSTdGLDhEQUFDeUI7Z0JBQUlDLFdBQVU7MEJBQ1gsNEVBQUNjO29CQUNHRSxTQUFTLElBQU16QyxXQUFXLENBQUNEO29CQUMzQjBCLFdBQVU7OEJBRVQxQixVQUFVLGtDQUFrQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLakUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aGlza3ktdmF1bHQvLi9zcmMvY29tcG9uZW50cy9BdXRoRm9ybS50c3g/M2M4YyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZUNsaWVudENvbXBvbmVudENsaWVudCB9IGZyb20gJ0BzdXBhYmFzZS9hdXRoLWhlbHBlcnMtbmV4dGpzJztcbmltcG9ydCB7IExvZ0luLCBVc2VyUGx1cywgTWFpbCwgTG9jaywgTG9hZGVyMiwgQWxlcnRDaXJjbGUgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBdXRoRm9ybSgpIHtcbiAgICBjb25zdCBzdXBhYmFzZSA9IGNyZWF0ZUNsaWVudENvbXBvbmVudENsaWVudCgpO1xuICAgIGNvbnN0IFtpc0xvZ2luLCBzZXRJc0xvZ2luXSA9IHVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFtlbWFpbCwgc2V0RW1haWxdID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFtwYXNzd29yZCwgc2V0UGFzc3dvcmRdID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICAgIGNvbnN0IFttZXNzYWdlLCBzZXRNZXNzYWdlXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gICAgY29uc3QgaGFuZGxlU3VibWl0ID0gYXN5bmMgKGU6IFJlYWN0LkZvcm1FdmVudCkgPT4ge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgICAgIHNldEVycm9yKG51bGwpO1xuICAgICAgICBzZXRNZXNzYWdlKG51bGwpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoaXNMb2dpbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZXJyb3IgfSA9IGF3YWl0IHN1cGFiYXNlLmF1dGguc2lnbkluV2l0aFBhc3N3b3JkKHsgZW1haWwsIHBhc3N3b3JkIH0pO1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZXJyb3IgfSA9IGF3YWl0IHN1cGFiYXNlLmF1dGguc2lnblVwKHtcbiAgICAgICAgICAgICAgICAgICAgZW1haWwsXG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbFJlZGlyZWN0VG86IGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59L2F1dGgvY2FsbGJhY2tgLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICBzZXRNZXNzYWdlKCdDaGVja2UgZGVpbmUgRS1NYWlscywgdW0gZGVpbiBLb250byB6dSBiZXN0w6R0aWdlbiEnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBzZXRFcnJvcihlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ0VpbiBGZWhsZXIgaXN0IGF1ZmdldHJldGVuJyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBtYXgtdy1tZCBwLTggYmctd2hpdGUgZGFyazpiZy16aW5jLTkwMCByb3VuZGVkLTN4bCBzaGFkb3ctMnhsIGJvcmRlciBib3JkZXItemluYy0yMDAgZGFyazpib3JkZXItemluYy04MDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgbWItOFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xNiBoLTE2IGJnLWFtYmVyLTEwMCBkYXJrOmJnLWFtYmVyLTkwMC8zMCByb3VuZGVkLTJ4bCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBtYi00XCI+XG4gICAgICAgICAgICAgICAgICAgIHtpc0xvZ2luID8gPExvZ0luIGNsYXNzTmFtZT1cInRleHQtYW1iZXItNjAwXCIgc2l6ZT17MzJ9IC8+IDogPFVzZXJQbHVzIGNsYXNzTmFtZT1cInRleHQtYW1iZXItNjAwXCIgc2l6ZT17MzJ9IC8+fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJsYWNrIHRleHQtemluYy05MDAgZGFyazp0ZXh0LXdoaXRlIHRyYWNraW5nLXRpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIHtpc0xvZ2luID8gJ1dpbGxrb21tZW4genVyw7xjaycgOiAnVmF1bHQgZXJzdGVsbGVuJ31cbiAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtemluYy01MDAgZGFyazp0ZXh0LXppbmMtNDAwIG10LTIgdGV4dC1jZW50ZXIgdGV4dC1zbVwiPlxuICAgICAgICAgICAgICAgICAgICB7aXNMb2dpblxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnTG9nZ2UgZGljaCBlaW4sIHVtIGF1ZiBkZWluZSBTYW1tbHVuZyB6dXp1Z3JlaWZlbi4nXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdTdGFydGUgaGV1dGUgbWl0IGRlaW5lbSBkaWdpdGFsZW4gV2hpc2t5LVZhdWx0Lid9XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9IGNsYXNzTmFtZT1cInNwYWNlLXktNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTcwMCBkYXJrOnRleHQtemluYy0zMDAgbWwtMVwiPkUtTWFpbDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlsIGNsYXNzTmFtZT1cImFic29sdXRlIGxlZnQtMyB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgdGV4dC16aW5jLTQwMFwiIHNpemU9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZW1haWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRFbWFpbChlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJuYW1lQGJlaXNwaWVsLmRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBwbC0xMCBwci00IHB5LTMgYmctemluYy01MCBkYXJrOmJnLXppbmMtODAwIGJvcmRlciBib3JkZXItemluYy0yMDAgZGFyazpib3JkZXItemluYy03MDAgcm91bmRlZC14bCBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1hbWJlci01MDAgZm9jdXM6Ym9yZGVyLXRyYW5zcGFyZW50IG91dGxpbmUtbm9uZSB0cmFuc2l0aW9uLWFsbCBkYXJrOnRleHQtd2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtemluYy03MDAgZGFyazp0ZXh0LXppbmMtMzAwIG1sLTFcIj5QYXNzd29ydDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxMb2NrIGNsYXNzTmFtZT1cImFic29sdXRlIGxlZnQtMyB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgdGV4dC16aW5jLTQwMFwiIHNpemU9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cGFzc3dvcmR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRQYXNzd29yZChlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLigKLigKLigKLigKLigKLigKLigKLigKJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHBsLTEwIHByLTQgcHktMyBiZy16aW5jLTUwIGRhcms6YmctemluYy04MDAgYm9yZGVyIGJvcmRlci16aW5jLTIwMCBkYXJrOmJvcmRlci16aW5jLTcwMCByb3VuZGVkLXhsIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWFtYmVyLTUwMCBmb2N1czpib3JkZXItdHJhbnNwYXJlbnQgb3V0bGluZS1ub25lIHRyYW5zaXRpb24tYWxsIGRhcms6dGV4dC13aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIHtlcnJvciAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcC0zIGJnLXJlZC01MCBkYXJrOmJnLXJlZC05MDAvMjAgdGV4dC1yZWQtNjAwIGRhcms6dGV4dC1yZWQtNDAwIHRleHQtc20gcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXJlZC0xMDAgZGFyazpib3JkZXItcmVkLTkwMC81MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0Q2lyY2xlIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAge2Vycm9yfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAge21lc3NhZ2UgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtMyBiZy1ncmVlbi01MCBkYXJrOmJnLWdyZWVuLTkwMC8yMCB0ZXh0LWdyZWVuLTYwMCBkYXJrOnRleHQtZ3JlZW4tNDAwIHRleHQtc20gcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyZWVuLTEwMCBkYXJrOmJvcmRlci1ncmVlbi05MDAvNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHttZXNzYWdlfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2xvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBweS00IGJnLWFtYmVyLTYwMCBob3ZlcjpiZy1hbWJlci03MDAgdGV4dC13aGl0ZSBmb250LWJvbGQgcm91bmRlZC14bCBzaGFkb3ctbGcgc2hhZG93LWFtYmVyLTYwMC8yMCB0cmFuc2l0aW9uLWFsbCBhY3RpdmU6c2NhbGUtWzAuOThdIGRpc2FibGVkOm9wYWNpdHktNTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2xvYWRpbmcgPyA8TG9hZGVyMiBjbGFzc05hbWU9XCJhbmltYXRlLXNwaW5cIiBzaXplPXsyMH0gLz4gOiAoaXNMb2dpbiA/ICdFaW5sb2dnZW4nIDogJ0tvbnRvIGVyc3RlbGxlbicpfVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9mb3JtPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTYgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzTG9naW4oIWlzTG9naW4pfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtYW1iZXItNjAwIGhvdmVyOnRleHQtYW1iZXItNzAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtpc0xvZ2luID8gJ05vY2gga2VpbiBLb250bz8gUmVnaXN0cmllcmVuJyA6ICdCZXJlaXRzIGVpbiBLb250bz8gRWlubG9nZ2VuJ31cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufVxuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJjcmVhdGVDbGllbnRDb21wb25lbnRDbGllbnQiLCJMb2dJbiIsIlVzZXJQbHVzIiwiTWFpbCIsIkxvY2siLCJMb2FkZXIyIiwiQWxlcnRDaXJjbGUiLCJBdXRoRm9ybSIsInN1cGFiYXNlIiwiaXNMb2dpbiIsInNldElzTG9naW4iLCJlbWFpbCIsInNldEVtYWlsIiwicGFzc3dvcmQiLCJzZXRQYXNzd29yZCIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiZXJyb3IiLCJzZXRFcnJvciIsIm1lc3NhZ2UiLCJzZXRNZXNzYWdlIiwiaGFuZGxlU3VibWl0IiwiZSIsInByZXZlbnREZWZhdWx0IiwiYXV0aCIsInNpZ25JbldpdGhQYXNzd29yZCIsInNpZ25VcCIsIm9wdGlvbnMiLCJlbWFpbFJlZGlyZWN0VG8iLCJ3aW5kb3ciLCJsb2NhdGlvbiIsIm9yaWdpbiIsImVyciIsIkVycm9yIiwiZGl2IiwiY2xhc3NOYW1lIiwic2l6ZSIsImgyIiwicCIsImZvcm0iLCJvblN1Ym1pdCIsImxhYmVsIiwiaW5wdXQiLCJ0eXBlIiwidmFsdWUiLCJvbkNoYW5nZSIsInRhcmdldCIsInBsYWNlaG9sZGVyIiwicmVxdWlyZWQiLCJidXR0b24iLCJkaXNhYmxlZCIsIm9uQ2xpY2siXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./src/components/AuthForm.tsx\n"); /***/ }), /***/ "(ssr)/./src/components/BottleGrid.tsx": /*!***************************************!*\ !*** ./src/components/BottleGrid.tsx ***! \***************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ BottleGrid)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Calendar,Clock,FlaskConical,Ghost,Lock,Search,Unlock,X!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/unlock.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Calendar,Clock,FlaskConical,Ghost,Lock,Search,Unlock,X!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/flask-conical.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Calendar,Clock,FlaskConical,Ghost,Lock,Search,Unlock,X!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/ghost.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Calendar,Clock,FlaskConical,Ghost,Lock,Search,Unlock,X!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/lock.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Calendar,Clock,FlaskConical,Ghost,Lock,Search,Unlock,X!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/clock.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Calendar,Clock,FlaskConical,Ghost,Lock,Search,Unlock,X!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/alert-circle.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Calendar,Clock,FlaskConical,Ghost,Lock,Search,Unlock,X!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/calendar.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Calendar,Clock,FlaskConical,Ghost,Lock,Search,Unlock,X!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/search.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Calendar,Clock,FlaskConical,Ghost,Lock,Search,Unlock,X!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/x.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\nfunction BottleCard({ bottle }) {\n const statusConfig = {\n open: {\n icon: _barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n color: \"bg-amber-500/80 border-amber-400/50\",\n label: \"Offen\"\n },\n sampled: {\n icon: _barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n color: \"bg-purple-500/80 border-purple-400/50\",\n label: \"Sample\"\n },\n empty: {\n icon: _barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n color: \"bg-zinc-500/80 border-zinc-400/50\",\n label: \"Leer\"\n },\n sealed: {\n icon: _barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n color: \"bg-blue-600/80 border-blue-400/50\",\n label: \"Versiegelt\"\n }\n };\n const StatusIcon = statusConfig[bottle.status]?.icon || _barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n const statusStyle = statusConfig[bottle.status] || statusConfig.sealed;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: `/bottles/${bottle.id}`,\n className: \"block h-full group\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full bg-white dark:bg-zinc-900 rounded-[2rem] overflow-hidden border border-zinc-200 dark:border-zinc-800 shadow-sm transition-all duration-300 hover:shadow-2xl hover:shadow-amber-900/10 hover:-translate-y-1 group-hover:border-amber-500/30\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"aspect-[4/3] overflow-hidden bg-zinc-100 dark:bg-zinc-800 relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: bottle.image_url,\n alt: bottle.name,\n className: \"w-full h-full object-cover transition-transform duration-700 group-hover:scale-110\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 26,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-gradient-to-t from-black/40 via-transparent to-transparent opacity-0 group-hover:opacity-100 transition-opacity\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 31,\n columnNumber: 21\n }, this),\n bottle.last_tasted && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-3 right-3 bg-zinc-900/80 backdrop-blur-md text-white text-[9px] font-black px-2 py-1 rounded-lg flex items-center gap-1 border border-white/10 ring-1 ring-black/5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n size: 10\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 35,\n columnNumber: 29\n }, this),\n new Date(bottle.last_tasted).toLocaleDateString(\"de-DE\")\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 34,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `absolute bottom-3 left-3 px-3 py-1.5 rounded-xl text-[10px] font-black uppercase flex items-center gap-2 backdrop-blur-md border shadow-lg ${statusStyle.color}`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(StatusIcon, {\n size: 12\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 41,\n columnNumber: 25\n }, this),\n statusStyle.label\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 40,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 25,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-5 space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-start mb-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-[10px] font-black text-amber-600 uppercase tracking-[0.2em] leading-none\",\n children: bottle.distillery\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 49,\n columnNumber: 29\n }, this),\n (bottle.is_whisky === false || bottle.confidence && bottle.confidence < 70) && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1 text-[8px] font-black bg-red-500 text-white px-1.5 py-0.5 rounded-full animate-pulse\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n size: 8\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 52,\n columnNumber: 37\n }, this),\n \"REVIEW\"\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 51,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 48,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: `font-black text-xl leading-tight group-hover:text-amber-600 transition-colors line-clamp-2 min-h-[3.5rem] flex items-center ${bottle.is_whisky === false ? \"text-red-600 dark:text-red-400\" : \"text-zinc-900 dark:text-zinc-100\"}`,\n children: bottle.name || \"Unbekannte Flasche\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 57,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 47,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-2.5 py-1 bg-zinc-100 dark:bg-zinc-800 text-zinc-600 dark:text-zinc-400 text-[10px] font-black uppercase tracking-widest rounded-lg border border-zinc-200/50 dark:border-zinc-700/50\",\n children: bottle.category\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 64,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-2.5 py-1 bg-amber-50 dark:bg-amber-900/20 text-amber-700 dark:text-amber-400 text-[10px] font-black uppercase tracking-widest rounded-lg border border-amber-200/50 dark:border-amber-800/20\",\n children: [\n bottle.abv,\n \"% VOL\"\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 67,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 63,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"pt-2 flex items-center gap-2 text-[10px] font-bold text-zinc-400 uppercase tracking-wider border-t border-zinc-100 dark:border-zinc-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n size: 12,\n className: \"text-zinc-300\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 73,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"opacity-70 text-[9px]\",\n children: \"Hinzugef\\xfcgt am\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 74,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-zinc-500 dark:text-zinc-300\",\n children: new Date(bottle.created_at).toLocaleDateString(\"de-DE\")\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 75,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 72,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 46,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 24,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 23,\n columnNumber: 9\n }, this);\n}\nfunction BottleGrid({ bottles }) {\n const [searchQuery, setSearchQuery] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [selectedCategory, setSelectedCategory] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [selectedDistillery, setSelectedDistillery] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [selectedStatus, setSelectedStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [sortBy, setSortBy] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"created_at\");\n const categories = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const cats = new Set(bottles.map((b)=>b.category).filter(Boolean));\n return Array.from(cats).sort();\n }, [\n bottles\n ]);\n const distilleries = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const dists = new Set(bottles.map((b)=>b.distillery).filter(Boolean));\n return Array.from(dists).sort();\n }, [\n bottles\n ]);\n const filteredBottles = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n let result = bottles.filter((bottle)=>{\n const matchesSearch = bottle.name?.toLowerCase().includes(searchQuery.toLowerCase()) || bottle.distillery?.toLowerCase().includes(searchQuery.toLowerCase());\n const matchesCategory = !selectedCategory || bottle.category === selectedCategory;\n const matchesDistillery = !selectedDistillery || bottle.distillery === selectedDistillery;\n const matchesStatus = !selectedStatus || bottle.status === selectedStatus;\n return matchesSearch && matchesCategory && matchesDistillery && matchesStatus;\n });\n // Sorting logic\n return result.sort((a, b)=>{\n if (sortBy === \"name\") {\n return (a.name || \"\").localeCompare(b.name || \"\");\n } else if (sortBy === \"last_tasted\") {\n const dateA = a.last_tasted ? new Date(a.last_tasted).getTime() : 0;\n const dateB = b.last_tasted ? new Date(b.last_tasted).getTime() : 0;\n return dateB - dateA;\n } else {\n return new Date(b.created_at).getTime() - new Date(a.created_at).getTime();\n }\n });\n }, [\n bottles,\n searchQuery,\n selectedCategory,\n selectedDistillery,\n sortBy\n ]);\n if (!bottles || bottles.length === 0) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12 p-8 bg-zinc-50 dark:bg-zinc-900/50 rounded-3xl border-2 border-dashed border-zinc-200 dark:border-zinc-800\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-zinc-500\",\n children: \"Noch keine Flaschen im Vault. Zeit f\\xfcr den ersten Scan! \\uD83E\\uDD43\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 134,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 133,\n columnNumber: 13\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full space-y-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full max-w-6xl mx-auto px-4 space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col md:flex-row gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"absolute left-3 top-1/2 -translate-y-1/2 text-zinc-400\",\n size: 18\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 145,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n placeholder: \"Suchen nach Name oder Distille...\",\n value: searchQuery,\n onChange: (e)=>setSearchQuery(e.target.value),\n className: \"w-full pl-10 pr-4 py-3 bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 rounded-xl focus:ring-2 focus:ring-amber-500 outline-none transition-all\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 146,\n columnNumber: 25\n }, this),\n searchQuery && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSearchQuery(\"\"),\n className: \"absolute right-3 top-1/2 -translate-y-1/2 text-zinc-400 hover:text-zinc-600\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Calendar_Clock_FlaskConical_Ghost_Lock_Search_Unlock_X_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n size: 16\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 158,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 154,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 144,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"select\", {\n value: sortBy,\n onChange: (e)=>setSortBy(e.target.value),\n className: \"px-4 py-3 bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 rounded-xl text-sm font-medium focus:ring-2 focus:ring-amber-500 outline-none cursor-pointer\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"created_at\",\n children: \"Neueste zuerst\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 168,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"last_tasted\",\n children: \"Zuletzt verkostet\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 169,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"name\",\n children: \"Alphabetisch\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 170,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 163,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 143,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] font-black uppercase tracking-widest text-zinc-400 px-1\",\n children: \"Kategorie\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 177,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2 overflow-x-auto pb-2 scrollbar-hide\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedCategory(null),\n className: `px-4 py-2 rounded-xl text-xs font-bold whitespace-nowrap transition-all border ${selectedCategory === null ? \"bg-amber-600 border-amber-600 text-white shadow-lg shadow-amber-600/20\" : \"bg-white dark:bg-zinc-900 border-zinc-200 dark:border-zinc-800 text-zinc-600 dark:text-zinc-400\"}`,\n children: \"ALLE\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 179,\n columnNumber: 29\n }, this),\n categories.map((cat)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedCategory(cat),\n className: `px-4 py-2 rounded-xl text-xs font-bold whitespace-nowrap transition-all border ${selectedCategory === cat ? \"bg-amber-600 border-amber-600 text-white shadow-lg shadow-amber-600/20\" : \"bg-white dark:bg-zinc-900 border-zinc-200 dark:border-zinc-800 text-zinc-600 dark:text-zinc-400\"}`,\n children: cat.toUpperCase()\n }, cat, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 189,\n columnNumber: 33\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 178,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 176,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] font-black uppercase tracking-widest text-zinc-400 px-1\",\n children: \"Distillery\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 205,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2 overflow-x-auto pb-2 scrollbar-hide\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedDistillery(null),\n className: `px-4 py-2 rounded-xl text-xs font-bold whitespace-nowrap transition-all border ${selectedDistillery === null ? \"bg-zinc-900 dark:bg-white text-white dark:text-zinc-900 border-zinc-900 dark:border-white\" : \"bg-white dark:bg-zinc-900 border-zinc-200 dark:border-zinc-800 text-zinc-600 dark:text-zinc-400\"}`,\n children: \"ALLE\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 207,\n columnNumber: 29\n }, this),\n distilleries.map((dist)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedDistillery(dist),\n className: `px-4 py-2 rounded-xl text-xs font-bold whitespace-nowrap transition-all border ${selectedDistillery === dist ? \"bg-zinc-900 dark:bg-white text-white dark:text-zinc-900 border-zinc-900 dark:border-white\" : \"bg-white dark:bg-zinc-900 border-zinc-200 dark:border-zinc-800 text-zinc-600 dark:text-zinc-400\"}`,\n children: dist.toUpperCase()\n }, dist, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 217,\n columnNumber: 33\n }, this))\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 206,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 204,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] font-black uppercase tracking-widest text-zinc-400 px-1\",\n children: \"Status\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 233,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2 overflow-x-auto pb-2 scrollbar-hide\",\n children: [\n \"sealed\",\n \"open\",\n \"sampled\",\n \"empty\"\n ].map((status)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSelectedStatus(selectedStatus === status ? null : status),\n className: `px-4 py-2 rounded-xl text-xs font-bold whitespace-nowrap transition-all border ${selectedStatus === status ? status === \"open\" ? \"bg-amber-500 border-amber-500 text-white\" : status === \"sampled\" ? \"bg-purple-500 border-purple-500 text-white\" : status === \"empty\" ? \"bg-zinc-500 border-zinc-500 text-white\" : \"bg-blue-600 border-blue-600 text-white\" : \"bg-white dark:bg-zinc-900 border-zinc-200 dark:border-zinc-800 text-zinc-600 dark:text-zinc-400\"}`,\n children: status.toUpperCase()\n }, status, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 236,\n columnNumber: 33\n }, this))\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 234,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 232,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 174,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 142,\n columnNumber: 13\n }, this),\n filteredBottles.length > 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 w-full max-w-6xl mx-auto px-4\",\n children: filteredBottles.map((bottle)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(BottleCard, {\n bottle: bottle\n }, bottle.id, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 256,\n columnNumber: 25\n }, this))\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 254,\n columnNumber: 17\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-zinc-500 italic\",\n children: \"Keine Flaschen gefunden, die deinen Filtern entsprechen. \\uD83D\\uDD0E\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 261,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 260,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 140,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LENBQUMsQ0FBQ2pELHVCQUNsQiw4REFBQ0Q7d0JBQTJCQyxRQUFRQTt1QkFBbkJBLE9BQU9hLEVBQUU7Ozs7Ozs7OztxQ0FJbEMsOERBQUNFO2dCQUFJRCxXQUFVOzBCQUNYLDRFQUFDVztvQkFBRVgsV0FBVTs4QkFBdUI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS3hEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd2hpc2t5LXZhdWx0Ly4vc3JjL2NvbXBvbmVudHMvQm90dGxlR3JpZC50c3g/NjJiOSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBMaW5rIGZyb20gJ25leHQvbGluayc7XG5pbXBvcnQgeyBTZWFyY2gsIEZpbHRlciwgWCwgQ2FsZW5kYXIsIENsb2NrLCBQYWNrYWdlLCBMb2NrLCBVbmxvY2ssIEdob3N0LCBGbGFza0NvbmljYWwsIEFsZXJ0Q2lyY2xlIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcblxuaW50ZXJmYWNlIEJvdHRsZUNhcmRQcm9wcyB7XG4gICAgYm90dGxlOiBhbnk7XG59XG5cbmZ1bmN0aW9uIEJvdHRsZUNhcmQoeyBib3R0bGUgfTogQm90dGxlQ2FyZFByb3BzKSB7XG4gICAgY29uc3Qgc3RhdHVzQ29uZmlnID0ge1xuICAgICAgICBvcGVuOiB7IGljb246IFVubG9jaywgY29sb3I6ICdiZy1hbWJlci01MDAvODAgYm9yZGVyLWFtYmVyLTQwMC81MCcsIGxhYmVsOiAnT2ZmZW4nIH0sXG4gICAgICAgIHNhbXBsZWQ6IHsgaWNvbjogRmxhc2tDb25pY2FsLCBjb2xvcjogJ2JnLXB1cnBsZS01MDAvODAgYm9yZGVyLXB1cnBsZS00MDAvNTAnLCBsYWJlbDogJ1NhbXBsZScgfSxcbiAgICAgICAgZW1wdHk6IHsgaWNvbjogR2hvc3QsIGNvbG9yOiAnYmctemluYy01MDAvODAgYm9yZGVyLXppbmMtNDAwLzUwJywgbGFiZWw6ICdMZWVyJyB9LFxuICAgICAgICBzZWFsZWQ6IHsgaWNvbjogTG9jaywgY29sb3I6ICdiZy1ibHVlLTYwMC84MCBib3JkZXItYmx1ZS00MDAvNTAnLCBsYWJlbDogJ1ZlcnNpZWdlbHQnIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IFN0YXR1c0ljb24gPSBzdGF0dXNDb25maWdbYm90dGxlLnN0YXR1cyBhcyBrZXlvZiB0eXBlb2Ygc3RhdHVzQ29uZmlnXT8uaWNvbiB8fCBMb2NrO1xuICAgIGNvbnN0IHN0YXR1c1N0eWxlID0gc3RhdHVzQ29uZmlnW2JvdHRsZS5zdGF0dXMgYXMga2V5b2YgdHlwZW9mIHN0YXR1c0NvbmZpZ10gfHwgc3RhdHVzQ29uZmlnLnNlYWxlZDtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxMaW5rIGhyZWY9e2AvYm90dGxlcy8ke2JvdHRsZS5pZH1gfSBjbGFzc05hbWU9XCJibG9jayBoLWZ1bGwgZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1mdWxsIGJnLXdoaXRlIGRhcms6YmctemluYy05MDAgcm91bmRlZC1bMnJlbV0gb3ZlcmZsb3ctaGlkZGVuIGJvcmRlciBib3JkZXItemluYy0yMDAgZGFyazpib3JkZXItemluYy04MDAgc2hhZG93LXNtIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBob3ZlcjpzaGFkb3ctMnhsIGhvdmVyOnNoYWRvdy1hbWJlci05MDAvMTAgaG92ZXI6LXRyYW5zbGF0ZS15LTEgZ3JvdXAtaG92ZXI6Ym9yZGVyLWFtYmVyLTUwMC8zMFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXNwZWN0LVs0LzNdIG92ZXJmbG93LWhpZGRlbiBiZy16aW5jLTEwMCBkYXJrOmJnLXppbmMtODAwIHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17Ym90dGxlLmltYWdlX3VybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdD17Ym90dGxlLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIG9iamVjdC1jb3ZlciB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi03MDAgZ3JvdXAtaG92ZXI6c2NhbGUtMTEwXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIGJnLWdyYWRpZW50LXRvLXQgZnJvbS1ibGFjay80MCB2aWEtdHJhbnNwYXJlbnQgdG8tdHJhbnNwYXJlbnQgb3BhY2l0eS0wIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eVwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAge2JvdHRsZS5sYXN0X3Rhc3RlZCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0zIHJpZ2h0LTMgYmctemluYy05MDAvODAgYmFja2Ryb3AtYmx1ci1tZCB0ZXh0LXdoaXRlIHRleHQtWzlweF0gZm9udC1ibGFjayBweC0yIHB5LTEgcm91bmRlZC1sZyBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIHJpbmctMSByaW5nLWJsYWNrLzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2xvY2sgc2l6ZT17MTB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge25ldyBEYXRlKGJvdHRsZS5sYXN0X3Rhc3RlZCkudG9Mb2NhbGVEYXRlU3RyaW5nKCdkZS1ERScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BhYnNvbHV0ZSBib3R0b20tMyBsZWZ0LTMgcHgtMyBweS0xLjUgcm91bmRlZC14bCB0ZXh0LVsxMHB4XSBmb250LWJsYWNrIHVwcGVyY2FzZSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBiYWNrZHJvcC1ibHVyLW1kIGJvcmRlciBzaGFkb3ctbGcgJHtzdGF0dXNTdHlsZS5jb2xvcn1gfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGF0dXNJY29uIHNpemU9ezEyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAge3N0YXR1c1N0eWxlLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC01IHNwYWNlLXktNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1zdGFydCBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1bMTBweF0gZm9udC1ibGFjayB0ZXh0LWFtYmVyLTYwMCB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMmVtXSBsZWFkaW5nLW5vbmVcIj57Ym90dGxlLmRpc3RpbGxlcnl9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoYm90dGxlLmlzX3doaXNreSA9PT0gZmFsc2UgfHwgKGJvdHRsZS5jb25maWRlbmNlICYmIGJvdHRsZS5jb25maWRlbmNlIDwgNzApKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC1bOHB4XSBmb250LWJsYWNrIGJnLXJlZC01MDAgdGV4dC13aGl0ZSBweC0xLjUgcHktMC41IHJvdW5kZWQtZnVsbCBhbmltYXRlLXB1bHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnRDaXJjbGUgc2l6ZT17OH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFVklFV1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPXtgZm9udC1ibGFjayB0ZXh0LXhsIGxlYWRpbmctdGlnaHQgZ3JvdXAtaG92ZXI6dGV4dC1hbWJlci02MDAgdHJhbnNpdGlvbi1jb2xvcnMgbGluZS1jbGFtcC0yIG1pbi1oLVszLjVyZW1dIGZsZXggaXRlbXMtY2VudGVyICR7Ym90dGxlLmlzX3doaXNreSA9PT0gZmFsc2UgPyAndGV4dC1yZWQtNjAwIGRhcms6dGV4dC1yZWQtNDAwJyA6ICd0ZXh0LXppbmMtOTAwIGRhcms6dGV4dC16aW5jLTEwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9YH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2JvdHRsZS5uYW1lIHx8ICdVbmJla2FubnRlIEZsYXNjaGUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHgtMi41IHB5LTEgYmctemluYy0xMDAgZGFyazpiZy16aW5jLTgwMCB0ZXh0LXppbmMtNjAwIGRhcms6dGV4dC16aW5jLTQwMCB0ZXh0LVsxMHB4XSBmb250LWJsYWNrIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3Qgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtMjAwLzUwIGRhcms6Ym9yZGVyLXppbmMtNzAwLzUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2JvdHRsZS5jYXRlZ29yeX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInB4LTIuNSBweS0xIGJnLWFtYmVyLTUwIGRhcms6YmctYW1iZXItOTAwLzIwIHRleHQtYW1iZXItNzAwIGRhcms6dGV4dC1hbWJlci00MDAgdGV4dC1bMTBweF0gZm9udC1ibGFjayB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1hbWJlci0yMDAvNTAgZGFyazpib3JkZXItYW1iZXItODAwLzIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2JvdHRsZS5hYnZ9JSBWT0xcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwdC0yIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtWzEwcHhdIGZvbnQtYm9sZCB0ZXh0LXppbmMtNDAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlciBib3JkZXItdCBib3JkZXItemluYy0xMDAgZGFyazpib3JkZXItemluYy04MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDYWxlbmRhciBzaXplPXsxMn0gY2xhc3NOYW1lPVwidGV4dC16aW5jLTMwMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJvcGFjaXR5LTcwIHRleHQtWzlweF1cIj5IaW56dWdlZsO8Z3QgYW08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXppbmMtNTAwIGRhcms6dGV4dC16aW5jLTMwMFwiPntuZXcgRGF0ZShib3R0bGUuY3JlYXRlZF9hdCkudG9Mb2NhbGVEYXRlU3RyaW5nKCdkZS1ERScpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9MaW5rPlxuICAgICk7XG59XG5cbmludGVyZmFjZSBCb3R0bGVHcmlkUHJvcHMge1xuICAgIGJvdHRsZXM6IGFueVtdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCb3R0bGVHcmlkKHsgYm90dGxlcyB9OiBCb3R0bGVHcmlkUHJvcHMpIHtcbiAgICBjb25zdCBbc2VhcmNoUXVlcnksIHNldFNlYXJjaFF1ZXJ5XSA9IHVzZVN0YXRlKCcnKTtcbiAgICBjb25zdCBbc2VsZWN0ZWRDYXRlZ29yeSwgc2V0U2VsZWN0ZWRDYXRlZ29yeV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBbc2VsZWN0ZWREaXN0aWxsZXJ5LCBzZXRTZWxlY3RlZERpc3RpbGxlcnldID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3QgW3NlbGVjdGVkU3RhdHVzLCBzZXRTZWxlY3RlZFN0YXR1c10gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBbc29ydEJ5LCBzZXRTb3J0QnldID0gdXNlU3RhdGU8J25hbWUnIHwgJ2xhc3RfdGFzdGVkJyB8ICdjcmVhdGVkX2F0Jz4oJ2NyZWF0ZWRfYXQnKTtcblxuICAgIGNvbnN0IGNhdGVnb3JpZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3QgY2F0cyA9IG5ldyBTZXQoYm90dGxlcy5tYXAoYiA9PiBiLmNhdGVnb3J5KS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShjYXRzKS5zb3J0KCkgYXMgc3RyaW5nW107XG4gICAgfSwgW2JvdHRsZXNdKTtcblxuICAgIGNvbnN0IGRpc3RpbGxlcmllcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCBkaXN0cyA9IG5ldyBTZXQoYm90dGxlcy5tYXAoYiA9PiBiLmRpc3RpbGxlcnkpLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGRpc3RzKS5zb3J0KCkgYXMgc3RyaW5nW107XG4gICAgfSwgW2JvdHRsZXNdKTtcblxuICAgIGNvbnN0IGZpbHRlcmVkQm90dGxlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gYm90dGxlcy5maWx0ZXIoKGJvdHRsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlc1NlYXJjaCA9XG4gICAgICAgICAgICAgICAgYm90dGxlLm5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoUXVlcnkudG9Mb3dlckNhc2UoKSkgfHxcbiAgICAgICAgICAgICAgICBib3R0bGUuZGlzdGlsbGVyeT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hRdWVyeS50b0xvd2VyQ2FzZSgpKTtcblxuICAgICAgICAgICAgY29uc3QgbWF0Y2hlc0NhdGVnb3J5ID0gIXNlbGVjdGVkQ2F0ZWdvcnkgfHwgYm90dGxlLmNhdGVnb3J5ID09PSBzZWxlY3RlZENhdGVnb3J5O1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlc0Rpc3RpbGxlcnkgPSAhc2VsZWN0ZWREaXN0aWxsZXJ5IHx8IGJvdHRsZS5kaXN0aWxsZXJ5ID09PSBzZWxlY3RlZERpc3RpbGxlcnk7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzU3RhdHVzID0gIXNlbGVjdGVkU3RhdHVzIHx8IGJvdHRsZS5zdGF0dXMgPT09IHNlbGVjdGVkU3RhdHVzO1xuXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlc1NlYXJjaCAmJiBtYXRjaGVzQ2F0ZWdvcnkgJiYgbWF0Y2hlc0Rpc3RpbGxlcnkgJiYgbWF0Y2hlc1N0YXR1cztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU29ydGluZyBsb2dpY1xuICAgICAgICByZXR1cm4gcmVzdWx0LnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgIGlmIChzb3J0QnkgPT09ICduYW1lJykge1xuICAgICAgICAgICAgICAgIHJldHVybiAoYS5uYW1lIHx8ICcnKS5sb2NhbGVDb21wYXJlKGIubmFtZSB8fCAnJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNvcnRCeSA9PT0gJ2xhc3RfdGFzdGVkJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVBID0gYS5sYXN0X3Rhc3RlZCA/IG5ldyBEYXRlKGEubGFzdF90YXN0ZWQpLmdldFRpbWUoKSA6IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZUIgPSBiLmxhc3RfdGFzdGVkID8gbmV3IERhdGUoYi5sYXN0X3Rhc3RlZCkuZ2V0VGltZSgpIDogMDtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZUIgLSBkYXRlQTtcbiAgICAgICAgICAgIH0gZWxzZSB7IC8vIHNvcnRCeSA9PT0gJ2NyZWF0ZWRfYXQnXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sIFtib3R0bGVzLCBzZWFyY2hRdWVyeSwgc2VsZWN0ZWRDYXRlZ29yeSwgc2VsZWN0ZWREaXN0aWxsZXJ5LCBzb3J0QnldKTtcblxuICAgIGlmICghYm90dGxlcyB8fCBib3R0bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS0xMiBwLTggYmctemluYy01MCBkYXJrOmJnLXppbmMtOTAwLzUwIHJvdW5kZWQtM3hsIGJvcmRlci0yIGJvcmRlci1kYXNoZWQgYm9yZGVyLXppbmMtMjAwIGRhcms6Ym9yZGVyLXppbmMtODAwXCI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC16aW5jLTUwMFwiPk5vY2gga2VpbmUgRmxhc2NoZW4gaW0gVmF1bHQuIFplaXQgZsO8ciBkZW4gZXJzdGVuIFNjYW4hIPCfpYM8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBzcGFjZS15LThcIj5cbiAgICAgICAgICAgIHsvKiBTZWFyY2ggYW5kIEZpbHRlcnMgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBtYXgtdy02eGwgbXgtYXV0byBweC00IHNwYWNlLXktNlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBtZDpmbGV4LXJvdyBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNlYXJjaCBjbGFzc05hbWU9XCJhYnNvbHV0ZSBsZWZ0LTMgdG9wLTEvMiAtdHJhbnNsYXRlLXktMS8yIHRleHQtemluYy00MDBcIiBzaXplPXsxOH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlN1Y2hlbiBuYWNoIE5hbWUgb2RlciBEaXN0aWxsZS4uLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlYXJjaFF1ZXJ5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoUXVlcnkoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBwbC0xMCBwci00IHB5LTMgYmctd2hpdGUgZGFyazpiZy16aW5jLTkwMCBib3JkZXIgYm9yZGVyLXppbmMtMjAwIGRhcms6Ym9yZGVyLXppbmMtODAwIHJvdW5kZWQteGwgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctYW1iZXItNTAwIG91dGxpbmUtbm9uZSB0cmFuc2l0aW9uLWFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAge3NlYXJjaFF1ZXJ5ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNlYXJjaFF1ZXJ5KCcnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgcmlnaHQtMyB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgdGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtNjAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NvcnRCeX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U29ydEJ5KGUudGFyZ2V0LnZhbHVlIGFzIGFueSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJweC00IHB5LTMgYmctd2hpdGUgZGFyazpiZy16aW5jLTkwMCBib3JkZXIgYm9yZGVyLXppbmMtMjAwIGRhcms6Ym9yZGVyLXppbmMtODAwIHJvdW5kZWQteGwgdGV4dC1zbSBmb250LW1lZGl1bSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1hbWJlci01MDAgb3V0bGluZS1ub25lIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNyZWF0ZWRfYXRcIj5OZXVlc3RlIHp1ZXJzdDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImxhc3RfdGFzdGVkXCI+WnVsZXR6dCB2ZXJrb3N0ZXQ8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJuYW1lXCI+QWxwaGFiZXRpc2NoPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgey8qIENhdGVnb3J5IEZpbHRlciAqL31cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsxMHB4XSBmb250LWJsYWNrIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QgdGV4dC16aW5jLTQwMCBweC0xXCI+S2F0ZWdvcmllPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0yIG92ZXJmbG93LXgtYXV0byBwYi0yIHNjcm9sbGJhci1oaWRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZENhdGVnb3J5KG51bGwpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BweC00IHB5LTIgcm91bmRlZC14bCB0ZXh0LXhzIGZvbnQtYm9sZCB3aGl0ZXNwYWNlLW5vd3JhcCB0cmFuc2l0aW9uLWFsbCBib3JkZXIgJHtzZWxlY3RlZENhdGVnb3J5ID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdiZy1hbWJlci02MDAgYm9yZGVyLWFtYmVyLTYwMCB0ZXh0LXdoaXRlIHNoYWRvdy1sZyBzaGFkb3ctYW1iZXItNjAwLzIwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnYmctd2hpdGUgZGFyazpiZy16aW5jLTkwMCBib3JkZXItemluYy0yMDAgZGFyazpib3JkZXItemluYy04MDAgdGV4dC16aW5jLTYwMCBkYXJrOnRleHQtemluYy00MDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFMTEVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2F0ZWdvcmllcy5tYXAoKGNhdCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NhdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNlbGVjdGVkQ2F0ZWdvcnkoY2F0KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB4LTQgcHktMiByb3VuZGVkLXhsIHRleHQteHMgZm9udC1ib2xkIHdoaXRlc3BhY2Utbm93cmFwIHRyYW5zaXRpb24tYWxsIGJvcmRlciAke3NlbGVjdGVkQ2F0ZWdvcnkgPT09IGNhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2JnLWFtYmVyLTYwMCBib3JkZXItYW1iZXItNjAwIHRleHQtd2hpdGUgc2hhZG93LWxnIHNoYWRvdy1hbWJlci02MDAvMjAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnYmctd2hpdGUgZGFyazpiZy16aW5jLTkwMCBib3JkZXItemluYy0yMDAgZGFyazpib3JkZXItemluYy04MDAgdGV4dC16aW5jLTYwMCBkYXJrOnRleHQtemluYy00MDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYXQudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgey8qIERpc3RpbGxlcnkgRmlsdGVyICovfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzEwcHhdIGZvbnQtYmxhY2sgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCB0ZXh0LXppbmMtNDAwIHB4LTFcIj5EaXN0aWxsZXJ5PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0yIG92ZXJmbG93LXgtYXV0byBwYi0yIHNjcm9sbGJhci1oaWRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZERpc3RpbGxlcnkobnVsbCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB4LTQgcHktMiByb3VuZGVkLXhsIHRleHQteHMgZm9udC1ib2xkIHdoaXRlc3BhY2Utbm93cmFwIHRyYW5zaXRpb24tYWxsIGJvcmRlciAke3NlbGVjdGVkRGlzdGlsbGVyeSA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnYmctemluYy05MDAgZGFyazpiZy13aGl0ZSB0ZXh0LXdoaXRlIGRhcms6dGV4dC16aW5jLTkwMCBib3JkZXItemluYy05MDAgZGFyazpib3JkZXItd2hpdGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdiZy13aGl0ZSBkYXJrOmJnLXppbmMtOTAwIGJvcmRlci16aW5jLTIwMCBkYXJrOmJvcmRlci16aW5jLTgwMCB0ZXh0LXppbmMtNjAwIGRhcms6dGV4dC16aW5jLTQwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUxMRVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkaXN0aWxsZXJpZXMubWFwKChkaXN0KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17ZGlzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNlbGVjdGVkRGlzdGlsbGVyeShkaXN0KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB4LTQgcHktMiByb3VuZGVkLXhsIHRleHQteHMgZm9udC1ib2xkIHdoaXRlc3BhY2Utbm93cmFwIHRyYW5zaXRpb24tYWxsIGJvcmRlciAke3NlbGVjdGVkRGlzdGlsbGVyeSA9PT0gZGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2JnLXppbmMtOTAwIGRhcms6Ymctd2hpdGUgdGV4dC13aGl0ZSBkYXJrOnRleHQtemluYy05MDAgYm9yZGVyLXppbmMtOTAwIGRhcms6Ym9yZGVyLXdoaXRlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2JnLXdoaXRlIGRhcms6YmctemluYy05MDAgYm9yZGVyLXppbmMtMjAwIGRhcms6Ym9yZGVyLXppbmMtODAwIHRleHQtemluYy02MDAgZGFyazp0ZXh0LXppbmMtNDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGlzdC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICB7LyogU3RhdHVzIEZpbHRlciAqL31cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsxMHB4XSBmb250LWJsYWNrIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QgdGV4dC16aW5jLTQwMCBweC0xXCI+U3RhdHVzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0yIG92ZXJmbG93LXgtYXV0byBwYi0yIHNjcm9sbGJhci1oaWRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1snc2VhbGVkJywgJ29wZW4nLCAnc2FtcGxlZCcsICdlbXB0eSddLm1hcCgoc3RhdHVzKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17c3RhdHVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2VsZWN0ZWRTdGF0dXMoc2VsZWN0ZWRTdGF0dXMgPT09IHN0YXR1cyA/IG51bGwgOiBzdGF0dXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHgtNCBweS0yIHJvdW5kZWQteGwgdGV4dC14cyBmb250LWJvbGQgd2hpdGVzcGFjZS1ub3dyYXAgdHJhbnNpdGlvbi1hbGwgYm9yZGVyICR7c2VsZWN0ZWRTdGF0dXMgPT09IHN0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc3RhdHVzID09PSAnb3BlbicgPyAnYmctYW1iZXItNTAwIGJvcmRlci1hbWJlci01MDAgdGV4dC13aGl0ZScgOiBzdGF0dXMgPT09ICdzYW1wbGVkJyA/ICdiZy1wdXJwbGUtNTAwIGJvcmRlci1wdXJwbGUtNTAwIHRleHQtd2hpdGUnIDogc3RhdHVzID09PSAnZW1wdHknID8gJ2JnLXppbmMtNTAwIGJvcmRlci16aW5jLTUwMCB0ZXh0LXdoaXRlJyA6ICdiZy1ibHVlLTYwMCBib3JkZXItYmx1ZS02MDAgdGV4dC13aGl0ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdiZy13aGl0ZSBkYXJrOmJnLXppbmMtOTAwIGJvcmRlci16aW5jLTIwMCBkYXJrOmJvcmRlci16aW5jLTgwMCB0ZXh0LXppbmMtNjAwIGRhcms6dGV4dC16aW5jLTQwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXR1cy50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogR3JpZCAqL31cbiAgICAgICAgICAgIHtmaWx0ZXJlZEJvdHRsZXMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgc206Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMgZ2FwLTYgdy1mdWxsIG1heC13LTZ4bCBteC1hdXRvIHB4LTRcIj5cbiAgICAgICAgICAgICAgICAgICAge2ZpbHRlcmVkQm90dGxlcy5tYXAoKGJvdHRsZSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJvdHRsZUNhcmQga2V5PXtib3R0bGUuaWR9IGJvdHRsZT17Ym90dGxlfSAvPlxuICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS0xMlwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXppbmMtNTAwIGl0YWxpY1wiPktlaW5lIEZsYXNjaGVuIGdlZnVuZGVuLCBkaWUgZGVpbmVuIEZpbHRlcm4gZW50c3ByZWNoZW4uIPCflI48L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufVxuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJ1c2VNZW1vIiwiTGluayIsIlNlYXJjaCIsIlgiLCJDYWxlbmRhciIsIkNsb2NrIiwiTG9jayIsIlVubG9jayIsIkdob3N0IiwiRmxhc2tDb25pY2FsIiwiQWxlcnRDaXJjbGUiLCJCb3R0bGVDYXJkIiwiYm90dGxlIiwic3RhdHVzQ29uZmlnIiwib3BlbiIsImljb24iLCJjb2xvciIsImxhYmVsIiwic2FtcGxlZCIsImVtcHR5Iiwic2VhbGVkIiwiU3RhdHVzSWNvbiIsInN0YXR1cyIsInN0YXR1c1N0eWxlIiwiaHJlZiIsImlkIiwiY2xhc3NOYW1lIiwiZGl2IiwiaW1nIiwic3JjIiwiaW1hZ2VfdXJsIiwiYWx0IiwibmFtZSIsImxhc3RfdGFzdGVkIiwic2l6ZSIsIkRhdGUiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJwIiwiZGlzdGlsbGVyeSIsImlzX3doaXNreSIsImNvbmZpZGVuY2UiLCJoMyIsInNwYW4iLCJjYXRlZ29yeSIsImFidiIsImNyZWF0ZWRfYXQiLCJCb3R0bGVHcmlkIiwiYm90dGxlcyIsInNlYXJjaFF1ZXJ5Iiwic2V0U2VhcmNoUXVlcnkiLCJzZWxlY3RlZENhdGVnb3J5Iiwic2V0U2VsZWN0ZWRDYXRlZ29yeSIsInNlbGVjdGVkRGlzdGlsbGVyeSIsInNldFNlbGVjdGVkRGlzdGlsbGVyeSIsInNlbGVjdGVkU3RhdHVzIiwic2V0U2VsZWN0ZWRTdGF0dXMiLCJzb3J0QnkiLCJzZXRTb3J0QnkiLCJjYXRlZ29yaWVzIiwiY2F0cyIsIlNldCIsIm1hcCIsImIiLCJmaWx0ZXIiLCJCb29sZWFuIiwiQXJyYXkiLCJmcm9tIiwic29ydCIsImRpc3RpbGxlcmllcyIsImRpc3RzIiwiZmlsdGVyZWRCb3R0bGVzIiwicmVzdWx0IiwibWF0Y2hlc1NlYXJjaCIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJtYXRjaGVzQ2F0ZWdvcnkiLCJtYXRjaGVzRGlzdGlsbGVyeSIsIm1hdGNoZXNTdGF0dXMiLCJhIiwibG9jYWxlQ29tcGFyZSIsImRhdGVBIiwiZ2V0VGltZSIsImRhdGVCIiwibGVuZ3RoIiwiaW5wdXQiLCJ0eXBlIiwicGxhY2Vob2xkZXIiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJzZWxlY3QiLCJvcHRpb24iLCJjYXQiLCJ0b1VwcGVyQ2FzZSIsImRpc3QiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./src/components/BottleGrid.tsx\n"); /***/ }), /***/ "(ssr)/./src/components/CameraCapture.tsx": /*!******************************************!*\ !*** ./src/components/CameraCapture.tsx ***! \******************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ CameraCapture)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Sparkles_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Camera,CheckCircle2,Sparkles,Upload!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/camera.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Sparkles_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Camera,CheckCircle2,Sparkles,Upload!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/check-circle-2.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Sparkles_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Camera,CheckCircle2,Sparkles,Upload!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/upload.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Sparkles_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Camera,CheckCircle2,Sparkles,Upload!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/alert-circle.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Sparkles_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Camera,CheckCircle2,Sparkles,Upload!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/sparkles.js\");\n/* harmony import */ var _supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @supabase/auth-helpers-nextjs */ \"(ssr)/./node_modules/@supabase/auth-helpers-nextjs/dist/index.js\");\n/* harmony import */ var _supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _services_analyze_bottle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/services/analyze-bottle */ \"(ssr)/./src/services/analyze-bottle.ts\");\n/* harmony import */ var _services_save_bottle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/services/save-bottle */ \"(ssr)/./src/services/save-bottle.ts\");\n/* harmony import */ var _lib_offline_db__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/lib/offline-db */ \"(ssr)/./src/lib/offline-db.ts\");\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! uuid */ \"(ssr)/./node_modules/uuid/dist-node/v4.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\n\n\n\nfunction CameraCapture({ onImageCaptured, onAnalysisComplete, onSaveComplete }) {\n const supabase = (0,_supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_2__.createClientComponentClient)();\n const fileInputRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const [isProcessing, setIsProcessing] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [isSaving, setIsSaving] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [previewUrl, setPreviewUrl] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [analysisResult, setAnalysisResult] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [isQueued, setIsQueued] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const handleCapture = async (event)=>{\n const file = event.target.files?.[0];\n if (!file) return;\n setIsProcessing(true);\n setError(null);\n setAnalysisResult(null);\n setIsQueued(false);\n try {\n const compressedBase64 = await compressImage(file);\n setPreviewUrl(compressedBase64);\n if (onImageCaptured) {\n onImageCaptured(compressedBase64);\n }\n // Check if Offline\n if (!navigator.onLine) {\n console.log(\"Offline detected. Queuing image...\");\n await (0,_lib_offline_db__WEBPACK_IMPORTED_MODULE_5__.savePendingBottle)({\n id: (0,uuid__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(),\n imageBase64: compressedBase64,\n timestamp: Date.now()\n });\n setIsQueued(true);\n return;\n }\n const response = await (0,_services_analyze_bottle__WEBPACK_IMPORTED_MODULE_3__.analyzeBottle)(compressedBase64);\n if (response.success && response.data) {\n setAnalysisResult(response.data);\n if (onAnalysisComplete) {\n onAnalysisComplete(response.data);\n }\n } else {\n setError(response.error || \"Analyse fehlgeschlagen.\");\n }\n } catch (err) {\n console.error(\"Processing failed:\", err);\n setError(\"Verarbeitung fehlgeschlagen. Bitte erneut versuchen.\");\n } finally{\n setIsProcessing(false);\n }\n };\n const handleSave = async ()=>{\n if (!analysisResult || !previewUrl) return;\n setIsSaving(true);\n setError(null);\n try {\n // Get current user (simple check for now, can be improved with Auth)\n const { data: { user } } = await supabase.auth.getUser();\n if (!user) {\n throw new Error(\"Bitte melde dich an, um Flaschen zu speichern.\");\n }\n const response = await (0,_services_save_bottle__WEBPACK_IMPORTED_MODULE_4__.saveBottle)(analysisResult, previewUrl, user.id);\n if (response.success) {\n setPreviewUrl(null);\n setAnalysisResult(null);\n if (onSaveComplete) onSaveComplete();\n // Optionale Erfolgsmeldung oder Redirect\n } else {\n setError(response.error || \"Speichern fehlgeschlagen.\");\n }\n } catch (err) {\n console.error(\"Save failed:\", err);\n setError(err instanceof Error ? err.message : \"Speichern fehlgeschlagen.\");\n } finally{\n setIsSaving(false);\n }\n };\n const compressImage = (file)=>{\n return new Promise((resolve, reject)=>{\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = (event)=>{\n const img = new Image();\n img.src = event.target?.result;\n img.onload = ()=>{\n const canvas = document.createElement(\"canvas\");\n const MAX_WIDTH = 1024;\n let width = img.width;\n let height = img.height;\n if (width > MAX_WIDTH) {\n height = height * MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"Canvas context not available\"));\n return;\n }\n ctx.drawImage(img, 0, 0, width, height);\n const base64 = canvas.toDataURL(\"image/jpeg\", 0.8);\n resolve(base64);\n };\n img.onerror = reject;\n };\n reader.onerror = reject;\n });\n };\n const triggerUpload = ()=>{\n fileInputRef.current?.click();\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center gap-6 w-full max-w-md mx-auto p-6 bg-white dark:bg-zinc-900 rounded-3xl shadow-2xl border border-zinc-200 dark:border-zinc-800 transition-all hover:shadow-whisky-amber/20\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-2xl font-bold text-zinc-800 dark:text-zinc-100 italic\",\n children: \"Magic Shot\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 149,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative group cursor-pointer w-full aspect-square rounded-2xl border-2 border-dashed border-zinc-300 dark:border-zinc-700 overflow-hidden flex items-center justify-center bg-zinc-50 dark:bg-zinc-800/50 hover:border-amber-500 transition-colors\",\n onClick: triggerUpload,\n children: [\n previewUrl ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: previewUrl,\n alt: \"Preview\",\n className: \"w-full h-full object-cover\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 156,\n columnNumber: 21\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center gap-2 text-zinc-400 group-hover:text-amber-500 transition-colors\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Sparkles_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n size: 48,\n strokeWidth: 1.5\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 159,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium\",\n children: \"Flasche scannen\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 160,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 158,\n columnNumber: 21\n }, this),\n isProcessing && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"animate-spin rounded-full h-12 w-12 border-b-2 border-white\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 166,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 165,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 151,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"file\",\n accept: \"image/*\",\n capture: \"environment\",\n ref: fileInputRef,\n onChange: handleCapture,\n className: \"hidden\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 171,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: isQueued ? ()=>setPreviewUrl(null) : previewUrl && analysisResult ? handleSave : triggerUpload,\n disabled: isProcessing || isSaving,\n className: \"w-full py-4 px-6 bg-amber-600 hover:bg-amber-700 text-white rounded-xl font-semibold flex items-center justify-center gap-2 transition-all active:scale-[0.98] shadow-lg shadow-amber-600/20 disabled:opacity-50\",\n children: isSaving ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"animate-spin rounded-full h-5 w-5 border-b-2 border-white\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 187,\n columnNumber: 25\n }, this),\n \"Wird gespeichert...\"\n ]\n }, void 0, true) : isQueued ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Sparkles_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n size: 20\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 192,\n columnNumber: 25\n }, this),\n \"N\\xe4chste Flasche\"\n ]\n }, void 0, true) : previewUrl && analysisResult ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Sparkles_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n size: 20\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 197,\n columnNumber: 25\n }, this),\n \"Im Vault speichern\"\n ]\n }, void 0, true) : previewUrl ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Sparkles_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n size: 20\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 202,\n columnNumber: 25\n }, this),\n \"Neu aufnehmen\"\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Sparkles_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n size: 20\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 207,\n columnNumber: 25\n }, this),\n \"Kamera \\xf6ffnen\"\n ]\n }, void 0, true)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 180,\n columnNumber: 13\n }, this),\n error && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 text-red-500 text-sm bg-red-50 dark:bg-red-900/10 p-3 rounded-lg w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Sparkles_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n size: 16\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 215,\n columnNumber: 21\n }, this),\n error\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 214,\n columnNumber: 17\n }, this),\n isQueued && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 text-purple-500 text-sm bg-purple-50 dark:bg-purple-900/10 p-4 rounded-xl w-full border border-purple-100 dark:border-purple-800/30 font-medium\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Sparkles_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n size: 16\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 222,\n columnNumber: 21\n }, this),\n \"Offline! Foto wurde gemerkt – wird automatisch analysiert, sobald du wieder Netz hast. \\uD83D\\uDCE1\"\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 221,\n columnNumber: 17\n }, this),\n previewUrl && !isProcessing && !error && !isQueued && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-3 w-full animate-in fade-in slide-in-from-top-4 duration-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 text-green-500 text-sm bg-green-50 dark:bg-green-900/10 p-3 rounded-lg w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Sparkles_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n size: 16\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 230,\n columnNumber: 25\n }, this),\n \"Bild erfolgreich analysiert\"\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 229,\n columnNumber: 21\n }, this),\n analysisResult && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4 bg-zinc-50 dark:bg-zinc-800/50 rounded-2xl border border-zinc-200 dark:border-zinc-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 mb-3 text-amber-600 dark:text-amber-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Camera_CheckCircle2_Sparkles_Upload_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n size: 18\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 237,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-bold text-sm uppercase tracking-wider\",\n children: \"Ergebnisse\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 238,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 236,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-zinc-500\",\n children: \"Name:\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 242,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold\",\n children: analysisResult.name || \"-\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 243,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 241,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-zinc-500\",\n children: \"Distille:\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 246,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold\",\n children: analysisResult.distillery || \"-\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 247,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 245,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-zinc-500\",\n children: \"Kategorie:\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 250,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold\",\n children: analysisResult.category || \"-\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 251,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 249,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-zinc-500\",\n children: \"ABV:\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 254,\n columnNumber: 37\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold\",\n children: analysisResult.abv ? `${analysisResult.abv}%` : \"-\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 255,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 253,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 240,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 235,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 228,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/CameraCapture.tsx\",\n lineNumber: 148,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFHLEdBQUcsQ0FBQyxFQUFFM0UsZUFBZTJFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU3JIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd2hpc2t5LXZhdWx0Ly4vc3JjL2NvbXBvbmVudHMvQ2FtZXJhQ2FwdHVyZS50c3g/MWMzNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBSZWFjdCwgeyB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ2FtZXJhLCBVcGxvYWQsIENoZWNrQ2lyY2xlMiwgQWxlcnRDaXJjbGUsIFNwYXJrbGVzIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IGNyZWF0ZUNsaWVudENvbXBvbmVudENsaWVudCB9IGZyb20gJ0BzdXBhYmFzZS9hdXRoLWhlbHBlcnMtbmV4dGpzJztcbmltcG9ydCB7IGFuYWx5emVCb3R0bGUgfSBmcm9tICdAL3NlcnZpY2VzL2FuYWx5emUtYm90dGxlJztcbmltcG9ydCB7IHNhdmVCb3R0bGUgfSBmcm9tICdAL3NlcnZpY2VzL3NhdmUtYm90dGxlJztcbmltcG9ydCB7IEJvdHRsZU1ldGFkYXRhIH0gZnJvbSAnQC90eXBlcy93aGlza3knO1xuaW1wb3J0IHsgc2F2ZVBlbmRpbmdCb3R0bGUgfSBmcm9tICdAL2xpYi9vZmZsaW5lLWRiJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuXG5pbnRlcmZhY2UgQ2FtZXJhQ2FwdHVyZVByb3BzIHtcbiAgICBvbkltYWdlQ2FwdHVyZWQ/OiAoYmFzZTY0SW1hZ2U6IHN0cmluZykgPT4gdm9pZDtcbiAgICBvbkFuYWx5c2lzQ29tcGxldGU/OiAoZGF0YTogQm90dGxlTWV0YWRhdGEpID0+IHZvaWQ7XG4gICAgb25TYXZlQ29tcGxldGU/OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDYW1lcmFDYXB0dXJlKHsgb25JbWFnZUNhcHR1cmVkLCBvbkFuYWx5c2lzQ29tcGxldGUsIG9uU2F2ZUNvbXBsZXRlIH06IENhbWVyYUNhcHR1cmVQcm9wcykge1xuICAgIGNvbnN0IHN1cGFiYXNlID0gY3JlYXRlQ2xpZW50Q29tcG9uZW50Q2xpZW50KCk7XG4gICAgY29uc3QgZmlsZUlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IFtpc1Byb2Nlc3NpbmcsIHNldElzUHJvY2Vzc2luZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzU2F2aW5nLCBzZXRJc1NhdmluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3ByZXZpZXdVcmwsIHNldFByZXZpZXdVcmxdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBbYW5hbHlzaXNSZXN1bHQsIHNldEFuYWx5c2lzUmVzdWx0XSA9IHVzZVN0YXRlPEJvdHRsZU1ldGFkYXRhIHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3QgW2lzUXVldWVkLCBzZXRJc1F1ZXVlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICBjb25zdCBoYW5kbGVDYXB0dXJlID0gYXN5bmMgKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgICBjb25zdCBmaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzPy5bMF07XG4gICAgICAgIGlmICghZmlsZSkgcmV0dXJuO1xuXG4gICAgICAgIHNldElzUHJvY2Vzc2luZyh0cnVlKTtcbiAgICAgICAgc2V0RXJyb3IobnVsbCk7XG4gICAgICAgIHNldEFuYWx5c2lzUmVzdWx0KG51bGwpO1xuICAgICAgICBzZXRJc1F1ZXVlZChmYWxzZSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXByZXNzZWRCYXNlNjQgPSBhd2FpdCBjb21wcmVzc0ltYWdlKGZpbGUpO1xuICAgICAgICAgICAgc2V0UHJldmlld1VybChjb21wcmVzc2VkQmFzZTY0KTtcblxuICAgICAgICAgICAgaWYgKG9uSW1hZ2VDYXB0dXJlZCkge1xuICAgICAgICAgICAgICAgIG9uSW1hZ2VDYXB0dXJlZChjb21wcmVzc2VkQmFzZTY0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgT2ZmbGluZVxuICAgICAgICAgICAgaWYgKCFuYXZpZ2F0b3Iub25MaW5lKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ09mZmxpbmUgZGV0ZWN0ZWQuIFF1ZXVpbmcgaW1hZ2UuLi4nKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBzYXZlUGVuZGluZ0JvdHRsZSh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VCYXNlNjQ6IGNvbXByZXNzZWRCYXNlNjQsXG4gICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzZXRJc1F1ZXVlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYW5hbHl6ZUJvdHRsZShjb21wcmVzc2VkQmFzZTY0KTtcblxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgICAgIHNldEFuYWx5c2lzUmVzdWx0KHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlmIChvbkFuYWx5c2lzQ29tcGxldGUpIHtcbiAgICAgICAgICAgICAgICAgICAgb25BbmFseXNpc0NvbXBsZXRlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0RXJyb3IocmVzcG9uc2UuZXJyb3IgfHwgJ0FuYWx5c2UgZmVobGdlc2NobGFnZW4uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignUHJvY2Vzc2luZyBmYWlsZWQ6JywgZXJyKTtcbiAgICAgICAgICAgIHNldEVycm9yKCdWZXJhcmJlaXR1bmcgZmVobGdlc2NobGFnZW4uIEJpdHRlIGVybmV1dCB2ZXJzdWNoZW4uJyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBzZXRJc1Byb2Nlc3NpbmcoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVNhdmUgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmICghYW5hbHlzaXNSZXN1bHQgfHwgIXByZXZpZXdVcmwpIHJldHVybjtcblxuICAgICAgICBzZXRJc1NhdmluZyh0cnVlKTtcbiAgICAgICAgc2V0RXJyb3IobnVsbCk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIEdldCBjdXJyZW50IHVzZXIgKHNpbXBsZSBjaGVjayBmb3Igbm93LCBjYW4gYmUgaW1wcm92ZWQgd2l0aCBBdXRoKVxuICAgICAgICAgICAgY29uc3QgeyBkYXRhOiB7IHVzZXIgfSB9ID0gYXdhaXQgc3VwYWJhc2UuYXV0aC5nZXRVc2VyKCk7XG4gICAgICAgICAgICBpZiAoIXVzZXIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0JpdHRlIG1lbGRlIGRpY2ggYW4sIHVtIEZsYXNjaGVuIHp1IHNwZWljaGVybi4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzYXZlQm90dGxlKGFuYWx5c2lzUmVzdWx0LCBwcmV2aWV3VXJsLCB1c2VyLmlkKTtcblxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICBzZXRQcmV2aWV3VXJsKG51bGwpO1xuICAgICAgICAgICAgICAgIHNldEFuYWx5c2lzUmVzdWx0KG51bGwpO1xuICAgICAgICAgICAgICAgIGlmIChvblNhdmVDb21wbGV0ZSkgb25TYXZlQ29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAvLyBPcHRpb25hbGUgRXJmb2xnc21lbGR1bmcgb2RlciBSZWRpcmVjdFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRFcnJvcihyZXNwb25zZS5lcnJvciB8fCAnU3BlaWNoZXJuIGZlaGxnZXNjaGxhZ2VuLicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NhdmUgZmFpbGVkOicsIGVycik7XG4gICAgICAgICAgICBzZXRFcnJvcihlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ1NwZWljaGVybiBmZWhsZ2VzY2hsYWdlbi4nKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHNldElzU2F2aW5nKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBjb21wcmVzc0ltYWdlID0gKGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgICAgIGltZy5zcmMgPSBldmVudC50YXJnZXQ/LnJlc3VsdCBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IE1BWF9XSURUSCA9IDEwMjQ7XG4gICAgICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9IGltZy53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGhlaWdodCA9IGltZy5oZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gTUFYX1dJRFRIKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSAoaGVpZ2h0ICogTUFYX1dJRFRIKSAvIHdpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBNQVhfV0lEVEg7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjYW52YXMud2lkdGggPSB3aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjdHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0NhbnZhcyBjb250ZXh0IG5vdCBhdmFpbGFibGUnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnLCAwLjgpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGJhc2U2NCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpbWcub25lcnJvciA9IHJlamVjdDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXIub25lcnJvciA9IHJlamVjdDtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHRyaWdnZXJVcGxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC02IHctZnVsbCBtYXgtdy1tZCBteC1hdXRvIHAtNiBiZy13aGl0ZSBkYXJrOmJnLXppbmMtOTAwIHJvdW5kZWQtM3hsIHNoYWRvdy0yeGwgYm9yZGVyIGJvcmRlci16aW5jLTIwMCBkYXJrOmJvcmRlci16aW5jLTgwMCB0cmFuc2l0aW9uLWFsbCBob3ZlcjpzaGFkb3ctd2hpc2t5LWFtYmVyLzIwXCI+XG4gICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtemluYy04MDAgZGFyazp0ZXh0LXppbmMtMTAwIGl0YWxpY1wiPk1hZ2ljIFNob3Q8L2gyPlxuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicmVsYXRpdmUgZ3JvdXAgY3Vyc29yLXBvaW50ZXIgdy1mdWxsIGFzcGVjdC1zcXVhcmUgcm91bmRlZC0yeGwgYm9yZGVyLTIgYm9yZGVyLWRhc2hlZCBib3JkZXItemluYy0zMDAgZGFyazpib3JkZXItemluYy03MDAgb3ZlcmZsb3ctaGlkZGVuIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLXppbmMtNTAgZGFyazpiZy16aW5jLTgwMC81MCBob3Zlcjpib3JkZXItYW1iZXItNTAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXt0cmlnZ2VyVXBsb2FkfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtwcmV2aWV3VXJsID8gKFxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz17cHJldmlld1VybH0gYWx0PVwiUHJldmlld1wiIGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgb2JqZWN0LWNvdmVyXCIgLz5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtemluYy00MDAgZ3JvdXAtaG92ZXI6dGV4dC1hbWJlci01MDAgdHJhbnNpdGlvbi1jb2xvcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDYW1lcmEgc2l6ZT17NDh9IHN0cm9rZVdpZHRoPXsxLjV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtXCI+Rmxhc2NoZSBzY2FubmVuPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAge2lzUHJvY2Vzc2luZyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBiZy1ibGFjay81MCBiYWNrZHJvcC1ibHVyLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgaC0xMiB3LTEyIGJvcmRlci1iLTIgYm9yZGVyLXdoaXRlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlLypcIlxuICAgICAgICAgICAgICAgIGNhcHR1cmU9XCJlbnZpcm9ubWVudFwiXG4gICAgICAgICAgICAgICAgcmVmPXtmaWxlSW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNhcHR1cmV9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaGlkZGVuXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtpc1F1ZXVlZCA/ICgpID0+IHNldFByZXZpZXdVcmwobnVsbCkgOiAocHJldmlld1VybCAmJiBhbmFseXNpc1Jlc3VsdCA/IGhhbmRsZVNhdmUgOiB0cmlnZ2VyVXBsb2FkKX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNQcm9jZXNzaW5nIHx8IGlzU2F2aW5nfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBweS00IHB4LTYgYmctYW1iZXItNjAwIGhvdmVyOmJnLWFtYmVyLTcwMCB0ZXh0LXdoaXRlIHJvdW5kZWQteGwgZm9udC1zZW1pYm9sZCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiB0cmFuc2l0aW9uLWFsbCBhY3RpdmU6c2NhbGUtWzAuOThdIHNoYWRvdy1sZyBzaGFkb3ctYW1iZXItNjAwLzIwIGRpc2FibGVkOm9wYWNpdHktNTBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtpc1NhdmluZyA/IChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBoLTUgdy01IGJvcmRlci1iLTIgYm9yZGVyLXdoaXRlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICBXaXJkIGdlc3BlaWNoZXJ0Li4uXG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICkgOiBpc1F1ZXVlZCA/IChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja0NpcmNsZTIgc2l6ZT17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICBOw6RjaHN0ZSBGbGFzY2hlXG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICkgOiBwcmV2aWV3VXJsICYmIGFuYWx5c2lzUmVzdWx0ID8gKFxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrQ2lyY2xlMiBzaXplPXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIEltIFZhdWx0IHNwZWljaGVyblxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApIDogcHJldmlld1VybCA/IChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxVcGxvYWQgc2l6ZT17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICBOZXUgYXVmbmVobWVuXG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2FtZXJhIHNpemU9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgS2FtZXJhIMO2ZmZuZW5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICB7ZXJyb3IgJiYgKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1yZWQtNTAwIHRleHQtc20gYmctcmVkLTUwIGRhcms6YmctcmVkLTkwMC8xMCBwLTMgcm91bmRlZC1sZyB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPEFsZXJ0Q2lyY2xlIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICB7ZXJyb3J9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7aXNRdWV1ZWQgJiYgKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1wdXJwbGUtNTAwIHRleHQtc20gYmctcHVycGxlLTUwIGRhcms6YmctcHVycGxlLTkwMC8xMCBwLTQgcm91bmRlZC14bCB3LWZ1bGwgYm9yZGVyIGJvcmRlci1wdXJwbGUtMTAwIGRhcms6Ym9yZGVyLXB1cnBsZS04MDAvMzAgZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPFNwYXJrbGVzIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICBPZmZsaW5lISBGb3RvIHd1cmRlIGdlbWVya3Qg4oCTIHdpcmQgYXV0b21hdGlzY2ggYW5hbHlzaWVydCwgc29iYWxkIGR1IHdpZWRlciBOZXR6IGhhc3QuIPCfk6FcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtwcmV2aWV3VXJsICYmICFpc1Byb2Nlc3NpbmcgJiYgIWVycm9yICYmICFpc1F1ZXVlZCAmJiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGdhcC0zIHctZnVsbCBhbmltYXRlLWluIGZhZGUtaW4gc2xpZGUtaW4tZnJvbS10b3AtNCBkdXJhdGlvbi01MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LWdyZWVuLTUwMCB0ZXh0LXNtIGJnLWdyZWVuLTUwIGRhcms6YmctZ3JlZW4tOTAwLzEwIHAtMyByb3VuZGVkLWxnIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrQ2lyY2xlMiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIEJpbGQgZXJmb2xncmVpY2ggYW5hbHlzaWVydFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICB7YW5hbHlzaXNSZXN1bHQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTQgYmctemluYy01MCBkYXJrOmJnLXppbmMtODAwLzUwIHJvdW5kZWQtMnhsIGJvcmRlciBib3JkZXItemluYy0yMDAgZGFyazpib3JkZXItemluYy03MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIG1iLTMgdGV4dC1hbWJlci02MDAgZGFyazp0ZXh0LWFtYmVyLTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3BhcmtsZXMgc2l6ZT17MTh9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtYm9sZCB0ZXh0LXNtIHVwcGVyY2FzZSB0cmFja2luZy13aWRlclwiPkVyZ2Vibmlzc2U8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiB0ZXh0LXNtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXppbmMtNTAwXCI+TmFtZTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkXCI+e2FuYWx5c2lzUmVzdWx0Lm5hbWUgfHwgJy0nfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gdGV4dC1zbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC16aW5jLTUwMFwiPkRpc3RpbGxlOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGRcIj57YW5hbHlzaXNSZXN1bHQuZGlzdGlsbGVyeSB8fCAnLSd9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiB0ZXh0LXNtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXppbmMtNTAwXCI+S2F0ZWdvcmllOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGRcIj57YW5hbHlzaXNSZXN1bHQuY2F0ZWdvcnkgfHwgJy0nfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gdGV4dC1zbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC16aW5jLTUwMFwiPkFCVjo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkXCI+e2FuYWx5c2lzUmVzdWx0LmFidiA/IGAke2FuYWx5c2lzUmVzdWx0LmFidn0lYCA6ICctJ308L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufVxuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJDYW1lcmEiLCJVcGxvYWQiLCJDaGVja0NpcmNsZTIiLCJBbGVydENpcmNsZSIsIlNwYXJrbGVzIiwiY3JlYXRlQ2xpZW50Q29tcG9uZW50Q2xpZW50IiwiYW5hbHl6ZUJvdHRsZSIsInNhdmVCb3R0bGUiLCJzYXZlUGVuZGluZ0JvdHRsZSIsInY0IiwidXVpZHY0IiwiQ2FtZXJhQ2FwdHVyZSIsIm9uSW1hZ2VDYXB0dXJlZCIsIm9uQW5hbHlzaXNDb21wbGV0ZSIsIm9uU2F2ZUNvbXBsZXRlIiwic3VwYWJhc2UiLCJmaWxlSW5wdXRSZWYiLCJpc1Byb2Nlc3NpbmciLCJzZXRJc1Byb2Nlc3NpbmciLCJpc1NhdmluZyIsInNldElzU2F2aW5nIiwicHJldmlld1VybCIsInNldFByZXZpZXdVcmwiLCJlcnJvciIsInNldEVycm9yIiwiYW5hbHlzaXNSZXN1bHQiLCJzZXRBbmFseXNpc1Jlc3VsdCIsImlzUXVldWVkIiwic2V0SXNRdWV1ZWQiLCJoYW5kbGVDYXB0dXJlIiwiZXZlbnQiLCJmaWxlIiwidGFyZ2V0IiwiZmlsZXMiLCJjb21wcmVzc2VkQmFzZTY0IiwiY29tcHJlc3NJbWFnZSIsIm5hdmlnYXRvciIsIm9uTGluZSIsImNvbnNvbGUiLCJsb2ciLCJpZCIsImltYWdlQmFzZTY0IiwidGltZXN0YW1wIiwiRGF0ZSIsIm5vdyIsInJlc3BvbnNlIiwic3VjY2VzcyIsImRhdGEiLCJlcnIiLCJoYW5kbGVTYXZlIiwidXNlciIsImF1dGgiLCJnZXRVc2VyIiwiRXJyb3IiLCJtZXNzYWdlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWFkZXIiLCJGaWxlUmVhZGVyIiwicmVhZEFzRGF0YVVSTCIsIm9ubG9hZCIsImltZyIsIkltYWdlIiwic3JjIiwicmVzdWx0IiwiY2FudmFzIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiTUFYX1dJRFRIIiwid2lkdGgiLCJoZWlnaHQiLCJjdHgiLCJnZXRDb250ZXh0IiwiZHJhd0ltYWdlIiwiYmFzZTY0IiwidG9EYXRhVVJMIiwib25lcnJvciIsInRyaWdnZXJVcGxvYWQiLCJjdXJyZW50IiwiY2xpY2siLCJkaXYiLCJjbGFzc05hbWUiLCJoMiIsIm9uQ2xpY2siLCJhbHQiLCJzaXplIiwic3Ryb2tlV2lkdGgiLCJzcGFuIiwiaW5wdXQiLCJ0eXBlIiwiYWNjZXB0IiwiY2FwdHVyZSIsInJlZiIsIm9uQ2hhbmdlIiwiYnV0dG9uIiwiZGlzYWJsZWQiLCJuYW1lIiwiZGlzdGlsbGVyeSIsImNhdGVnb3J5IiwiYWJ2Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./src/components/CameraCapture.tsx\n"); /***/ }), /***/ "(ssr)/./src/components/OfflineIndicator.tsx": /*!*********************************************!*\ !*** ./src/components/OfflineIndicator.tsx ***! \*********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ OfflineIndicator)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_WifiOff_lucide_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=WifiOff!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/wifi-off.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\nfunction OfflineIndicator() {\n const [isOffline, setIsOffline] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n setIsOffline(!navigator.onLine);\n const handleOnline = ()=>setIsOffline(false);\n const handleOffline = ()=>setIsOffline(true);\n window.addEventListener(\"online\", handleOnline);\n window.addEventListener(\"offline\", handleOffline);\n return ()=>{\n window.removeEventListener(\"online\", handleOnline);\n window.removeEventListener(\"offline\", handleOffline);\n };\n }, []);\n if (!isOffline) return null;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed top-0 left-0 w-full bg-red-600 text-white text-[10px] font-black uppercase tracking-widest py-1 flex items-center justify-center gap-2 z-[9999] animate-pulse\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_WifiOff_lucide_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n size: 12\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/OfflineIndicator.tsx\",\n lineNumber: 28,\n columnNumber: 13\n }, this),\n \"Offline-Modus: Du siehst eine gespeicherte Version\"\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/OfflineIndicator.tsx\",\n lineNumber: 27,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9zcmMvY29tcG9uZW50cy9PZmZsaW5lSW5kaWNhdG9yLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBRW1EO0FBQ1o7QUFFeEIsU0FBU0k7SUFDcEIsTUFBTSxDQUFDQyxXQUFXQyxhQUFhLEdBQUdMLCtDQUFRQSxDQUFDO0lBRTNDQyxnREFBU0EsQ0FBQztRQUNOSSxhQUFhLENBQUNDLFVBQVVDLE1BQU07UUFFOUIsTUFBTUMsZUFBZSxJQUFNSCxhQUFhO1FBQ3hDLE1BQU1JLGdCQUFnQixJQUFNSixhQUFhO1FBRXpDSyxPQUFPQyxnQkFBZ0IsQ0FBQyxVQUFVSDtRQUNsQ0UsT0FBT0MsZ0JBQWdCLENBQUMsV0FBV0Y7UUFFbkMsT0FBTztZQUNIQyxPQUFPRSxtQkFBbUIsQ0FBQyxVQUFVSjtZQUNyQ0UsT0FBT0UsbUJBQW1CLENBQUMsV0FBV0g7UUFDMUM7SUFDSixHQUFHLEVBQUU7SUFFTCxJQUFJLENBQUNMLFdBQVcsT0FBTztJQUV2QixxQkFDSSw4REFBQ1M7UUFBSUMsV0FBVTs7MEJBQ1gsOERBQUNaLG1GQUFPQTtnQkFBQ2EsTUFBTTs7Ozs7O1lBQU07Ozs7Ozs7QUFJakMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aGlza3ktdmF1bHQvLi9zcmMvY29tcG9uZW50cy9PZmZsaW5lSW5kaWNhdG9yLnRzeD80MjIyIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBXaWZpT2ZmIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gT2ZmbGluZUluZGljYXRvcigpIHtcbiAgICBjb25zdCBbaXNPZmZsaW5lLCBzZXRJc09mZmxpbmVdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2V0SXNPZmZsaW5lKCFuYXZpZ2F0b3Iub25MaW5lKTtcblxuICAgICAgICBjb25zdCBoYW5kbGVPbmxpbmUgPSAoKSA9PiBzZXRJc09mZmxpbmUoZmFsc2UpO1xuICAgICAgICBjb25zdCBoYW5kbGVPZmZsaW5lID0gKCkgPT4gc2V0SXNPZmZsaW5lKHRydWUpO1xuXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvbmxpbmUnLCBoYW5kbGVPbmxpbmUpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignb2ZmbGluZScsIGhhbmRsZU9mZmxpbmUpO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignb25saW5lJywgaGFuZGxlT25saW5lKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgaGFuZGxlT2ZmbGluZSk7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgaWYgKCFpc09mZmxpbmUpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaXhlZCB0b3AtMCBsZWZ0LTAgdy1mdWxsIGJnLXJlZC02MDAgdGV4dC13aGl0ZSB0ZXh0LVsxMHB4XSBmb250LWJsYWNrIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QgcHktMSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiB6LVs5OTk5XSBhbmltYXRlLXB1bHNlXCI+XG4gICAgICAgICAgICA8V2lmaU9mZiBzaXplPXsxMn0gLz5cbiAgICAgICAgICAgIE9mZmxpbmUtTW9kdXM6IER1IHNpZWhzdCBlaW5lIGdlc3BlaWNoZXJ0ZSBWZXJzaW9uXG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIldpZmlPZmYiLCJPZmZsaW5lSW5kaWNhdG9yIiwiaXNPZmZsaW5lIiwic2V0SXNPZmZsaW5lIiwibmF2aWdhdG9yIiwib25MaW5lIiwiaGFuZGxlT25saW5lIiwiaGFuZGxlT2ZmbGluZSIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZGl2IiwiY2xhc3NOYW1lIiwic2l6ZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./src/components/OfflineIndicator.tsx\n"); /***/ }), /***/ "(ssr)/./src/components/PWARegistration.tsx": /*!********************************************!*\ !*** ./src/components/PWARegistration.tsx ***! \********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PWARegistration)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* __next_internal_client_entry_do_not_use__ default auto */ \nfunction PWARegistration() {\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{\n if (\"serviceWorker\" in navigator && window.location.hostname !== \"localhost\") {\n window.addEventListener(\"load\", ()=>{\n navigator.serviceWorker.register(\"/sw.js\").then((registration)=>{\n console.log(\"SW registered: \", registration);\n }).catch((registrationError)=>{\n console.log(\"SW registration failed: \", registrationError);\n });\n });\n }\n }, []);\n return null;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9zcmMvY29tcG9uZW50cy9QV0FSZWdpc3RyYXRpb24udHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs2REFFa0M7QUFFbkIsU0FBU0M7SUFDcEJELGdEQUFTQSxDQUFDO1FBQ04sSUFBSSxtQkFBbUJFLGFBQWFDLE9BQU9DLFFBQVEsQ0FBQ0MsUUFBUSxLQUFLLGFBQWE7WUFDMUVGLE9BQU9HLGdCQUFnQixDQUFDLFFBQVE7Z0JBQzVCSixVQUFVSyxhQUFhLENBQ2xCQyxRQUFRLENBQUMsVUFDVEMsSUFBSSxDQUFDLENBQUNDO29CQUNIQyxRQUFRQyxHQUFHLENBQUMsbUJBQW1CRjtnQkFDbkMsR0FDQ0csS0FBSyxDQUFDLENBQUNDO29CQUNKSCxRQUFRQyxHQUFHLENBQUMsNEJBQTRCRTtnQkFDNUM7WUFDUjtRQUNKO0lBQ0osR0FBRyxFQUFFO0lBRUwsT0FBTztBQUNYIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd2hpc2t5LXZhdWx0Ly4vc3JjL2NvbXBvbmVudHMvUFdBUmVnaXN0cmF0aW9uLnRzeD9kODZhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQV0FSZWdpc3RyYXRpb24oKSB7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCdzZXJ2aWNlV29ya2VyJyBpbiBuYXZpZ2F0b3IgJiYgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0Jykge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXJcbiAgICAgICAgICAgICAgICAgICAgLnJlZ2lzdGVyKCcvc3cuanMnKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigocmVnaXN0cmF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU1cgcmVnaXN0ZXJlZDogJywgcmVnaXN0cmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChyZWdpc3RyYXRpb25FcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1NXIHJlZ2lzdHJhdGlvbiBmYWlsZWQ6ICcsIHJlZ2lzdHJhdGlvbkVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiBudWxsO1xufVxuIl0sIm5hbWVzIjpbInVzZUVmZmVjdCIsIlBXQVJlZ2lzdHJhdGlvbiIsIm5hdmlnYXRvciIsIndpbmRvdyIsImxvY2F0aW9uIiwiaG9zdG5hbWUiLCJhZGRFdmVudExpc3RlbmVyIiwic2VydmljZVdvcmtlciIsInJlZ2lzdGVyIiwidGhlbiIsInJlZ2lzdHJhdGlvbiIsImNvbnNvbGUiLCJsb2ciLCJjYXRjaCIsInJlZ2lzdHJhdGlvbkVycm9yIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./src/components/PWARegistration.tsx\n"); /***/ }), /***/ "(ssr)/./src/components/UploadQueue.tsx": /*!****************************************!*\ !*** ./src/components/UploadQueue.tsx ***! \****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ UploadQueue)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lib_offline_db__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/lib/offline-db */ \"(ssr)/./src/lib/offline-db.ts\");\n/* harmony import */ var _services_analyze_bottle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/services/analyze-bottle */ \"(ssr)/./src/services/analyze-bottle.ts\");\n/* harmony import */ var _services_save_bottle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/services/save-bottle */ \"(ssr)/./src/services/save-bottle.ts\");\n/* harmony import */ var _supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @supabase/auth-helpers-nextjs */ \"(ssr)/./node_modules/@supabase/auth-helpers-nextjs/dist/index.js\");\n/* harmony import */ var _supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Loader2_RefreshCw_lucide_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Loader2,RefreshCw!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/refresh-cw.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Loader2_RefreshCw_lucide_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Loader2,RefreshCw!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/loader-2.js\");\n/* harmony import */ var _barrel_optimize_names_AlertCircle_Loader2_RefreshCw_lucide_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=AlertCircle,Loader2,RefreshCw!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/alert-circle.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\n\n\nfunction UploadQueue() {\n const supabase = (0,_supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_5__.createClientComponentClient)();\n const [queue, setQueue] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [isSyncing, setIsSyncing] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [currentProgress, setCurrentProgress] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const loadQueue = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async ()=>{\n const pending = await (0,_lib_offline_db__WEBPACK_IMPORTED_MODULE_2__.getAllPendingBottles)();\n setQueue(pending);\n }, []);\n const syncQueue = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async ()=>{\n if (isSyncing || !navigator.onLine || queue.length === 0) return;\n setIsSyncing(true);\n const { data: { user } } = await supabase.auth.getUser();\n if (!user) {\n console.error(\"No user found for background sync\");\n setIsSyncing(false);\n return;\n }\n for (const item of queue){\n setCurrentProgress({\n id: item.id,\n status: \"Analysiere...\"\n });\n try {\n // 1. Analyze\n const analysis = await (0,_services_analyze_bottle__WEBPACK_IMPORTED_MODULE_3__.analyzeBottle)(item.imageBase64);\n if (analysis.success && analysis.data) {\n setCurrentProgress({\n id: item.id,\n status: \"Speichere...\"\n });\n // 2. Save\n const save = await (0,_services_save_bottle__WEBPACK_IMPORTED_MODULE_4__.saveBottle)(analysis.data, item.imageBase64, user.id);\n if (save.success) {\n await (0,_lib_offline_db__WEBPACK_IMPORTED_MODULE_2__.deletePendingBottle)(item.id);\n }\n }\n } catch (err) {\n console.error(\"Sync failed for item\", item.id, err);\n }\n }\n setIsSyncing(false);\n setCurrentProgress(null);\n loadQueue();\n }, [\n isSyncing,\n queue,\n supabase,\n loadQueue\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n loadQueue();\n // Listen for storage changes (e.g. from CameraCapture)\n const interval = setInterval(loadQueue, 5000);\n const handleOnline = ()=>{\n console.log(\"Back online! Triggering sync...\");\n syncQueue();\n };\n window.addEventListener(\"online\", handleOnline);\n return ()=>{\n clearInterval(interval);\n window.removeEventListener(\"online\", handleOnline);\n };\n }, [\n loadQueue,\n syncQueue\n ]);\n if (queue.length === 0) return null;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed bottom-6 right-6 z-50 animate-in slide-in-from-right-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-zinc-900 text-white p-4 rounded-2xl shadow-2xl border border-white/10 flex flex-col gap-3 min-w-[280px]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between border-b border-white/10 pb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Loader2_RefreshCw_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n size: 16,\n className: isSyncing ? \"animate-spin text-amber-500\" : \"text-zinc-400\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 81,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs font-black uppercase tracking-widest\",\n children: \"Upload Queue\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 82,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 80,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"bg-amber-600 text-[10px] font-black px-1.5 py-0.5 rounded-md\",\n children: queue.length\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 84,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 79,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: [\n queue.slice(0, 3).map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between text-[11px] font-medium text-zinc-400\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-6 h-6 rounded bg-zinc-800 overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: item.imageBase64,\n className: \"w-full h-full object-cover opacity-50\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 94,\n columnNumber: 37\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 93,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"truncate max-w-[120px]\",\n children: currentProgress?.id === item.id ? currentProgress.status : \"Wartet auf Netz...\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 96,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 92,\n columnNumber: 29\n }, this),\n currentProgress?.id === item.id ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Loader2_RefreshCw_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n size: 12,\n className: \"animate-spin text-amber-500\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 101,\n columnNumber: 33\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_AlertCircle_Loader2_RefreshCw_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n size: 12,\n className: \"text-zinc-600\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 103,\n columnNumber: 33\n }, this)\n ]\n }, item.id, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 91,\n columnNumber: 25\n }, this)),\n queue.length > 3 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[10px] text-zinc-500 text-center font-bold italic pt-1\",\n children: [\n \"+ \",\n queue.length - 3,\n \" weitere Flaschen\"\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 108,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 89,\n columnNumber: 17\n }, this),\n navigator.onLine && !isSyncing && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: syncQueue,\n className: \"w-full py-2 bg-amber-600 hover:bg-amber-500 text-[10px] font-black uppercase rounded-lg transition-colors cursor-pointer\",\n children: \"Jetzt Synchronisieren\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 115,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 78,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx\",\n lineNumber: 77,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QjtvQkFBSUMsV0FBVTs7d0JBQ1ZuQyxNQUFNc0MsS0FBSyxDQUFDLEdBQUcsR0FBR0MsR0FBRyxDQUFDLENBQUNyQixxQkFDcEIsOERBQUNnQjtnQ0FBa0JDLFdBQVU7O2tEQUN6Qiw4REFBQ0Q7d0NBQUlDLFdBQVU7OzBEQUNYLDhEQUFDRDtnREFBSUMsV0FBVTswREFDWCw0RUFBQ0s7b0RBQUlDLEtBQUt2QixLQUFLSSxXQUFXO29EQUFFYSxXQUFVOzs7Ozs7Ozs7OzswREFFMUMsOERBQUNFO2dEQUFLRixXQUFVOzBEQUNYL0IsaUJBQWlCZSxPQUFPRCxLQUFLQyxFQUFFLEdBQUdmLGdCQUFnQmdCLE1BQU0sR0FBRzs7Ozs7Ozs7Ozs7O29DQUduRWhCLGlCQUFpQmUsT0FBT0QsS0FBS0MsRUFBRSxpQkFDNUIsOERBQUN0Qix5R0FBT0E7d0NBQUN1QyxNQUFNO3dDQUFJRCxXQUFVOzs7Ozs2REFFN0IsOERBQUN2Qyx5R0FBV0E7d0NBQUN3QyxNQUFNO3dDQUFJRCxXQUFVOzs7Ozs7OytCQVovQmpCLEtBQUtDLEVBQUU7Ozs7O3dCQWdCcEJuQixNQUFNVyxNQUFNLEdBQUcsbUJBQ1osOERBQUN1Qjs0QkFBSUMsV0FBVTs7Z0NBQThEO2dDQUN0RW5DLE1BQU1XLE1BQU0sR0FBRztnQ0FBRTs7Ozs7Ozs7Ozs7OztnQkFLL0JGLFVBQVVDLE1BQU0sSUFBSSxDQUFDUiwyQkFDbEIsOERBQUN3QztvQkFDR0MsU0FBU25DO29CQUNUMkIsV0FBVTs4QkFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPckIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aGlza3ktdmF1bHQvLi9zcmMvY29tcG9uZW50cy9VcGxvYWRRdWV1ZS50c3g/OWJkMCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGdldEFsbFBlbmRpbmdCb3R0bGVzLCBkZWxldGVQZW5kaW5nQm90dGxlLCBQZW5kaW5nQm90dGxlIH0gZnJvbSAnQC9saWIvb2ZmbGluZS1kYic7XG5pbXBvcnQgeyBhbmFseXplQm90dGxlIH0gZnJvbSAnQC9zZXJ2aWNlcy9hbmFseXplLWJvdHRsZSc7XG5pbXBvcnQgeyBzYXZlQm90dGxlIH0gZnJvbSAnQC9zZXJ2aWNlcy9zYXZlLWJvdHRsZSc7XG5pbXBvcnQgeyBjcmVhdGVDbGllbnRDb21wb25lbnRDbGllbnQgfSBmcm9tICdAc3VwYWJhc2UvYXV0aC1oZWxwZXJzLW5leHRqcyc7XG5pbXBvcnQgeyBSZWZyZXNoQ3csIENoZWNrQ2lyY2xlMiwgQWxlcnRDaXJjbGUsIExvYWRlcjIgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBVcGxvYWRRdWV1ZSgpIHtcbiAgICBjb25zdCBzdXBhYmFzZSA9IGNyZWF0ZUNsaWVudENvbXBvbmVudENsaWVudCgpO1xuICAgIGNvbnN0IFtxdWV1ZSwgc2V0UXVldWVdID0gdXNlU3RhdGU8UGVuZGluZ0JvdHRsZVtdPihbXSk7XG4gICAgY29uc3QgW2lzU3luY2luZywgc2V0SXNTeW5jaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbY3VycmVudFByb2dyZXNzLCBzZXRDdXJyZW50UHJvZ3Jlc3NdID0gdXNlU3RhdGU8eyBpZDogc3RyaW5nLCBzdGF0dXM6IHN0cmluZyB9IHwgbnVsbD4obnVsbCk7XG5cbiAgICBjb25zdCBsb2FkUXVldWUgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBlbmRpbmcgPSBhd2FpdCBnZXRBbGxQZW5kaW5nQm90dGxlcygpO1xuICAgICAgICBzZXRRdWV1ZShwZW5kaW5nKTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBzeW5jUXVldWUgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChpc1N5bmNpbmcgfHwgIW5hdmlnYXRvci5vbkxpbmUgfHwgcXVldWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICAgICAgc2V0SXNTeW5jaW5nKHRydWUpO1xuICAgICAgICBjb25zdCB7IGRhdGE6IHsgdXNlciB9IH0gPSBhd2FpdCBzdXBhYmFzZS5hdXRoLmdldFVzZXIoKTtcblxuICAgICAgICBpZiAoIXVzZXIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHVzZXIgZm91bmQgZm9yIGJhY2tncm91bmQgc3luYycpO1xuICAgICAgICAgICAgc2V0SXNTeW5jaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBxdWV1ZSkge1xuICAgICAgICAgICAgc2V0Q3VycmVudFByb2dyZXNzKHsgaWQ6IGl0ZW0uaWQsIHN0YXR1czogJ0FuYWx5c2llcmUuLi4nIH0pO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAvLyAxLiBBbmFseXplXG4gICAgICAgICAgICAgICAgY29uc3QgYW5hbHlzaXMgPSBhd2FpdCBhbmFseXplQm90dGxlKGl0ZW0uaW1hZ2VCYXNlNjQpO1xuICAgICAgICAgICAgICAgIGlmIChhbmFseXNpcy5zdWNjZXNzICYmIGFuYWx5c2lzLmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q3VycmVudFByb2dyZXNzKHsgaWQ6IGl0ZW0uaWQsIHN0YXR1czogJ1NwZWljaGVyZS4uLicgfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIDIuIFNhdmVcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2F2ZSA9IGF3YWl0IHNhdmVCb3R0bGUoYW5hbHlzaXMuZGF0YSwgaXRlbS5pbWFnZUJhc2U2NCwgdXNlci5pZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzYXZlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGRlbGV0ZVBlbmRpbmdCb3R0bGUoaXRlbS5pZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdTeW5jIGZhaWxlZCBmb3IgaXRlbScsIGl0ZW0uaWQsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXRJc1N5bmNpbmcoZmFsc2UpO1xuICAgICAgICBzZXRDdXJyZW50UHJvZ3Jlc3MobnVsbCk7XG4gICAgICAgIGxvYWRRdWV1ZSgpO1xuICAgIH0sIFtpc1N5bmNpbmcsIHF1ZXVlLCBzdXBhYmFzZSwgbG9hZFF1ZXVlXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsb2FkUXVldWUoKTtcblxuICAgICAgICAvLyBMaXN0ZW4gZm9yIHN0b3JhZ2UgY2hhbmdlcyAoZS5nLiBmcm9tIENhbWVyYUNhcHR1cmUpXG4gICAgICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwobG9hZFF1ZXVlLCA1MDAwKTtcblxuICAgICAgICBjb25zdCBoYW5kbGVPbmxpbmUgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQmFjayBvbmxpbmUhIFRyaWdnZXJpbmcgc3luYy4uLicpO1xuICAgICAgICAgICAgc3luY1F1ZXVlKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ29ubGluZScsIGhhbmRsZU9ubGluZSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdvbmxpbmUnLCBoYW5kbGVPbmxpbmUpO1xuICAgICAgICB9O1xuICAgIH0sIFtsb2FkUXVldWUsIHN5bmNRdWV1ZV0pO1xuXG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpeGVkIGJvdHRvbS02IHJpZ2h0LTYgei01MCBhbmltYXRlLWluIHNsaWRlLWluLWZyb20tcmlnaHQtMTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctemluYy05MDAgdGV4dC13aGl0ZSBwLTQgcm91bmRlZC0yeGwgc2hhZG93LTJ4bCBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIGZsZXggZmxleC1jb2wgZ2FwLTMgbWluLXctWzI4MHB4XVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJvcmRlci1iIGJvcmRlci13aGl0ZS8xMCBwYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSZWZyZXNoQ3cgc2l6ZT17MTZ9IGNsYXNzTmFtZT17aXNTeW5jaW5nID8gJ2FuaW1hdGUtc3BpbiB0ZXh0LWFtYmVyLTUwMCcgOiAndGV4dC16aW5jLTQwMCd9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtYmxhY2sgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdFwiPlVwbG9hZCBRdWV1ZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImJnLWFtYmVyLTYwMCB0ZXh0LVsxMHB4XSBmb250LWJsYWNrIHB4LTEuNSBweS0wLjUgcm91bmRlZC1tZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3F1ZXVlLmxlbmd0aH1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTJcIj5cbiAgICAgICAgICAgICAgICAgICAge3F1ZXVlLnNsaWNlKDAsIDMpLm1hcCgoaXRlbSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2l0ZW0uaWR9IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiB0ZXh0LVsxMXB4XSBmb250LW1lZGl1bSB0ZXh0LXppbmMtNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNiBoLTYgcm91bmRlZCBiZy16aW5jLTgwMCBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPXtpdGVtLmltYWdlQmFzZTY0fSBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsIG9iamVjdC1jb3ZlciBvcGFjaXR5LTUwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRydW5jYXRlIG1heC13LVsxMjBweF1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50UHJvZ3Jlc3M/LmlkID09PSBpdGVtLmlkID8gY3VycmVudFByb2dyZXNzLnN0YXR1cyA6ICdXYXJ0ZXQgYXVmIE5ldHouLi4nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRQcm9ncmVzcz8uaWQgPT09IGl0ZW0uaWQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMb2FkZXIyIHNpemU9ezEyfSBjbGFzc05hbWU9XCJhbmltYXRlLXNwaW4gdGV4dC1hbWJlci01MDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBbGVydENpcmNsZSBzaXplPXsxMn0gY2xhc3NOYW1lPVwidGV4dC16aW5jLTYwMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAge3F1ZXVlLmxlbmd0aCA+IDMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LVsxMHB4XSB0ZXh0LXppbmMtNTAwIHRleHQtY2VudGVyIGZvbnQtYm9sZCBpdGFsaWMgcHQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICsge3F1ZXVlLmxlbmd0aCAtIDN9IHdlaXRlcmUgRmxhc2NoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAge25hdmlnYXRvci5vbkxpbmUgJiYgIWlzU3luY2luZyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3N5bmNRdWV1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBweS0yIGJnLWFtYmVyLTYwMCBob3ZlcjpiZy1hbWJlci01MDAgdGV4dC1bMTBweF0gZm9udC1ibGFjayB1cHBlcmNhc2Ugcm91bmRlZC1sZyB0cmFuc2l0aW9uLWNvbG9ycyBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEpldHp0IFN5bmNocm9uaXNpZXJlblxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwiZ2V0QWxsUGVuZGluZ0JvdHRsZXMiLCJkZWxldGVQZW5kaW5nQm90dGxlIiwiYW5hbHl6ZUJvdHRsZSIsInNhdmVCb3R0bGUiLCJjcmVhdGVDbGllbnRDb21wb25lbnRDbGllbnQiLCJSZWZyZXNoQ3ciLCJBbGVydENpcmNsZSIsIkxvYWRlcjIiLCJVcGxvYWRRdWV1ZSIsInN1cGFiYXNlIiwicXVldWUiLCJzZXRRdWV1ZSIsImlzU3luY2luZyIsInNldElzU3luY2luZyIsImN1cnJlbnRQcm9ncmVzcyIsInNldEN1cnJlbnRQcm9ncmVzcyIsImxvYWRRdWV1ZSIsInBlbmRpbmciLCJzeW5jUXVldWUiLCJuYXZpZ2F0b3IiLCJvbkxpbmUiLCJsZW5ndGgiLCJkYXRhIiwidXNlciIsImF1dGgiLCJnZXRVc2VyIiwiY29uc29sZSIsImVycm9yIiwiaXRlbSIsImlkIiwic3RhdHVzIiwiYW5hbHlzaXMiLCJpbWFnZUJhc2U2NCIsInN1Y2Nlc3MiLCJzYXZlIiwiZXJyIiwiaW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsImhhbmRsZU9ubGluZSIsImxvZyIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJjbGVhckludGVydmFsIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRpdiIsImNsYXNzTmFtZSIsInNpemUiLCJzcGFuIiwic2xpY2UiLCJtYXAiLCJpbWciLCJzcmMiLCJidXR0b24iLCJvbkNsaWNrIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./src/components/UploadQueue.tsx\n"); /***/ }), /***/ "(ssr)/./src/lib/offline-db.ts": /*!*******************************!*\ !*** ./src/lib/offline-db.ts ***! \*******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ deletePendingBottle: () => (/* binding */ deletePendingBottle),\n/* harmony export */ getAllPendingBottles: () => (/* binding */ getAllPendingBottles),\n/* harmony export */ openDB: () => (/* binding */ openDB),\n/* harmony export */ savePendingBottle: () => (/* binding */ savePendingBottle)\n/* harmony export */ });\nconst DB_NAME = \"WhiskyVaultOffline\";\nconst STORE_NAME = \"pendingCaptures\";\nconst DB_VERSION = 1;\nconst openDB = ()=>{\n return new Promise((resolve, reject)=>{\n const request = indexedDB.open(DB_NAME, DB_VERSION);\n request.onupgradeneeded = (event)=>{\n const db = event.target.result;\n if (!db.objectStoreNames.contains(STORE_NAME)) {\n db.createObjectStore(STORE_NAME, {\n keyPath: \"id\"\n });\n }\n };\n request.onsuccess = (event)=>{\n resolve(event.target.result);\n };\n request.onerror = (event)=>{\n reject(event.target.error);\n };\n });\n};\nconst savePendingBottle = async (bottle)=>{\n const db = await openDB();\n return new Promise((resolve, reject)=>{\n const transaction = db.transaction(STORE_NAME, \"readwrite\");\n const store = transaction.objectStore(STORE_NAME);\n const request = store.put(bottle);\n request.onsuccess = ()=>resolve();\n request.onerror = ()=>reject(request.error);\n });\n};\nconst getAllPendingBottles = async ()=>{\n const db = await openDB();\n return new Promise((resolve, reject)=>{\n const transaction = db.transaction(STORE_NAME, \"readonly\");\n const store = transaction.objectStore(STORE_NAME);\n const request = store.getAll();\n request.onsuccess = ()=>resolve(request.result);\n request.onerror = ()=>reject(request.error);\n });\n};\nconst deletePendingBottle = async (id)=>{\n const db = await openDB();\n return new Promise((resolve, reject)=>{\n const transaction = db.transaction(STORE_NAME, \"readwrite\");\n const store = transaction.objectStore(STORE_NAME);\n const request = store.delete(id);\n request.onsuccess = ()=>resolve();\n request.onerror = ()=>reject(request.error);\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9zcmMvbGliL29mZmxpbmUtZGIudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQU1BLE1BQU1BLFVBQVU7QUFDaEIsTUFBTUMsYUFBYTtBQUNuQixNQUFNQyxhQUFhO0FBRVosTUFBTUMsU0FBUztJQUNsQixPQUFPLElBQUlDLFFBQVEsQ0FBQ0MsU0FBU0M7UUFDekIsTUFBTUMsVUFBVUMsVUFBVUMsSUFBSSxDQUFDVCxTQUFTRTtRQUV4Q0ssUUFBUUcsZUFBZSxHQUFHLENBQUNDO1lBQ3ZCLE1BQU1DLEtBQUssTUFBT0MsTUFBTSxDQUFzQkMsTUFBTTtZQUNwRCxJQUFJLENBQUNGLEdBQUdHLGdCQUFnQixDQUFDQyxRQUFRLENBQUNmLGFBQWE7Z0JBQzNDVyxHQUFHSyxpQkFBaUIsQ0FBQ2hCLFlBQVk7b0JBQUVpQixTQUFTO2dCQUFLO1lBQ3JEO1FBQ0o7UUFFQVgsUUFBUVksU0FBUyxHQUFHLENBQUNSO1lBQ2pCTixRQUFRLE1BQU9RLE1BQU0sQ0FBc0JDLE1BQU07UUFDckQ7UUFFQVAsUUFBUWEsT0FBTyxHQUFHLENBQUNUO1lBQ2ZMLE9BQU8sTUFBT08sTUFBTSxDQUFzQlEsS0FBSztRQUNuRDtJQUNKO0FBQ0osRUFBRTtBQUVLLE1BQU1DLG9CQUFvQixPQUFPQztJQUNwQyxNQUFNWCxLQUFLLE1BQU1UO0lBQ2pCLE9BQU8sSUFBSUMsUUFBUSxDQUFDQyxTQUFTQztRQUN6QixNQUFNa0IsY0FBY1osR0FBR1ksV0FBVyxDQUFDdkIsWUFBWTtRQUMvQyxNQUFNd0IsUUFBUUQsWUFBWUUsV0FBVyxDQUFDekI7UUFDdEMsTUFBTU0sVUFBVWtCLE1BQU1FLEdBQUcsQ0FBQ0o7UUFFMUJoQixRQUFRWSxTQUFTLEdBQUcsSUFBTWQ7UUFDMUJFLFFBQVFhLE9BQU8sR0FBRyxJQUFNZCxPQUFPQyxRQUFRYyxLQUFLO0lBQ2hEO0FBQ0osRUFBRTtBQUVLLE1BQU1PLHVCQUF1QjtJQUNoQyxNQUFNaEIsS0FBSyxNQUFNVDtJQUNqQixPQUFPLElBQUlDLFFBQVEsQ0FBQ0MsU0FBU0M7UUFDekIsTUFBTWtCLGNBQWNaLEdBQUdZLFdBQVcsQ0FBQ3ZCLFlBQVk7UUFDL0MsTUFBTXdCLFFBQVFELFlBQVlFLFdBQVcsQ0FBQ3pCO1FBQ3RDLE1BQU1NLFVBQVVrQixNQUFNSSxNQUFNO1FBRTVCdEIsUUFBUVksU0FBUyxHQUFHLElBQU1kLFFBQVFFLFFBQVFPLE1BQU07UUFDaERQLFFBQVFhLE9BQU8sR0FBRyxJQUFNZCxPQUFPQyxRQUFRYyxLQUFLO0lBQ2hEO0FBQ0osRUFBRTtBQUVLLE1BQU1TLHNCQUFzQixPQUFPQztJQUN0QyxNQUFNbkIsS0FBSyxNQUFNVDtJQUNqQixPQUFPLElBQUlDLFFBQVEsQ0FBQ0MsU0FBU0M7UUFDekIsTUFBTWtCLGNBQWNaLEdBQUdZLFdBQVcsQ0FBQ3ZCLFlBQVk7UUFDL0MsTUFBTXdCLFFBQVFELFlBQVlFLFdBQVcsQ0FBQ3pCO1FBQ3RDLE1BQU1NLFVBQVVrQixNQUFNTyxNQUFNLENBQUNEO1FBRTdCeEIsUUFBUVksU0FBUyxHQUFHLElBQU1kO1FBQzFCRSxRQUFRYSxPQUFPLEdBQUcsSUFBTWQsT0FBT0MsUUFBUWMsS0FBSztJQUNoRDtBQUNKLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aGlza3ktdmF1bHQvLi9zcmMvbGliL29mZmxpbmUtZGIudHM/YmI4YiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFBlbmRpbmdCb3R0bGUge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgaW1hZ2VCYXNlNjQ6IHN0cmluZztcbiAgICB0aW1lc3RhbXA6IG51bWJlcjtcbn1cblxuY29uc3QgREJfTkFNRSA9ICdXaGlza3lWYXVsdE9mZmxpbmUnO1xuY29uc3QgU1RPUkVfTkFNRSA9ICdwZW5kaW5nQ2FwdHVyZXMnO1xuY29uc3QgREJfVkVSU0lPTiA9IDE7XG5cbmV4cG9ydCBjb25zdCBvcGVuREIgPSAoKTogUHJvbWlzZTxJREJEYXRhYmFzZT4gPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihEQl9OQU1FLCBEQl9WRVJTSU9OKTtcblxuICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGIgPSAoZXZlbnQudGFyZ2V0IGFzIElEQk9wZW5EQlJlcXVlc3QpLnJlc3VsdDtcbiAgICAgICAgICAgIGlmICghZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucyhTVE9SRV9OQU1FKSkge1xuICAgICAgICAgICAgICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKFNUT1JFX05BTUUsIHsga2V5UGF0aDogJ2lkJyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZSgoZXZlbnQudGFyZ2V0IGFzIElEQk9wZW5EQlJlcXVlc3QpLnJlc3VsdCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICByZWplY3QoKGV2ZW50LnRhcmdldCBhcyBJREJPcGVuREJSZXF1ZXN0KS5lcnJvcik7XG4gICAgICAgIH07XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2F2ZVBlbmRpbmdCb3R0bGUgPSBhc3luYyAoYm90dGxlOiBQZW5kaW5nQm90dGxlKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCBvcGVuREIoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFNUT1JFX05BTUUsICdyZWFkd3JpdGUnKTtcbiAgICAgICAgY29uc3Qgc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShTVE9SRV9OQU1FKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHN0b3JlLnB1dChib3R0bGUpO1xuXG4gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gcmVzb2x2ZSgpO1xuICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QWxsUGVuZGluZ0JvdHRsZXMgPSBhc3luYyAoKTogUHJvbWlzZTxQZW5kaW5nQm90dGxlW10+ID0+IHtcbiAgICBjb25zdCBkYiA9IGF3YWl0IG9wZW5EQigpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oU1RPUkVfTkFNRSwgJ3JlYWRvbmx5Jyk7XG4gICAgICAgIGNvbnN0IHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoU1RPUkVfTkFNRSk7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBzdG9yZS5nZXRBbGwoKTtcblxuICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHJlc29sdmUocmVxdWVzdC5yZXN1bHQpO1xuICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlUGVuZGluZ0JvdHRsZSA9IGFzeW5jIChpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCBvcGVuREIoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFNUT1JFX05BTUUsICdyZWFkd3JpdGUnKTtcbiAgICAgICAgY29uc3Qgc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShTVE9SRV9OQU1FKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHN0b3JlLmRlbGV0ZShpZCk7XG5cbiAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiByZXNvbHZlKCk7XG4gICAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHJlamVjdChyZXF1ZXN0LmVycm9yKTtcbiAgICB9KTtcbn07XG4iXSwibmFtZXMiOlsiREJfTkFNRSIsIlNUT1JFX05BTUUiLCJEQl9WRVJTSU9OIiwib3BlbkRCIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZXF1ZXN0IiwiaW5kZXhlZERCIiwib3BlbiIsIm9udXBncmFkZW5lZWRlZCIsImV2ZW50IiwiZGIiLCJ0YXJnZXQiLCJyZXN1bHQiLCJvYmplY3RTdG9yZU5hbWVzIiwiY29udGFpbnMiLCJjcmVhdGVPYmplY3RTdG9yZSIsImtleVBhdGgiLCJvbnN1Y2Nlc3MiLCJvbmVycm9yIiwiZXJyb3IiLCJzYXZlUGVuZGluZ0JvdHRsZSIsImJvdHRsZSIsInRyYW5zYWN0aW9uIiwic3RvcmUiLCJvYmplY3RTdG9yZSIsInB1dCIsImdldEFsbFBlbmRpbmdCb3R0bGVzIiwiZ2V0QWxsIiwiZGVsZXRlUGVuZGluZ0JvdHRsZSIsImlkIiwiZGVsZXRlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./src/lib/offline-db.ts\n"); /***/ }), /***/ "(ssr)/./src/services/analyze-bottle.ts": /*!****************************************!*\ !*** ./src/services/analyze-bottle.ts ***! \****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ analyzeBottle: () => (/* binding */ analyzeBottle) /* harmony export */ }); /* harmony import */ var next_dist_client_app_call_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/client/app-call-server */ "(ssr)/./node_modules/next/dist/client/app-call-server.js"); /* harmony import */ var next_dist_client_app_call_server__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_app_call_server__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var private_next_rsc_action_client_wrapper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! private-next-rsc-action-client-wrapper */ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/action-client-wrapper.js"); function __build_action__(action, args) { return (0,next_dist_client_app_call_server__WEBPACK_IMPORTED_MODULE_0__.callServer)(action.$$id, args) } /* __next_internal_action_entry_do_not_use__ {"af8f7c7b0fe98b99031bb1c9e8ef0ed13b2eae40":"analyzeBottle"} */ var analyzeBottle = (0,private_next_rsc_action_client_wrapper__WEBPACK_IMPORTED_MODULE_1__.createServerReference)("af8f7c7b0fe98b99031bb1c9e8ef0ed13b2eae40"); /***/ }), /***/ "(ssr)/./src/services/save-bottle.ts": /*!*************************************!*\ !*** ./src/services/save-bottle.ts ***! \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ saveBottle: () => (/* binding */ saveBottle) /* harmony export */ }); /* harmony import */ var next_dist_client_app_call_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/client/app-call-server */ "(ssr)/./node_modules/next/dist/client/app-call-server.js"); /* harmony import */ var next_dist_client_app_call_server__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_app_call_server__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var private_next_rsc_action_client_wrapper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! private-next-rsc-action-client-wrapper */ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/action-client-wrapper.js"); function __build_action__(action, args) { return (0,next_dist_client_app_call_server__WEBPACK_IMPORTED_MODULE_0__.callServer)(action.$$id, args) } /* __next_internal_action_entry_do_not_use__ {"9cc2ffbf85f4e72220537b4253faa867d3a48bad":"saveBottle"} */ var saveBottle = (0,private_next_rsc_action_client_wrapper__WEBPACK_IMPORTED_MODULE_1__.createServerReference)("9cc2ffbf85f4e72220537b4253faa867d3a48bad"); /***/ }), /***/ "(rsc)/./src/app/globals.css": /*!*****************************!*\ !*** ./src/app/globals.css ***! \*****************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"955ec95b3e6f\");\nif (false) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9zcmMvYXBwL2dsb2JhbHMuY3NzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxpRUFBZSxjQUFjO0FBQzdCLElBQUksS0FBVSxFQUFFLEVBQXVCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd2hpc2t5LXZhdWx0Ly4vc3JjL2FwcC9nbG9iYWxzLmNzcz81NWFiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IFwiOTU1ZWM5NWIzZTZmXCJcbmlmIChtb2R1bGUuaG90KSB7IG1vZHVsZS5ob3QuYWNjZXB0KCkgfVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./src/app/globals.css\n"); /***/ }), /***/ "(rsc)/./src/app/layout.tsx": /*!****************************!*\ !*** ./src/app/layout.tsx ***! \****************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ RootLayout),\n/* harmony export */ metadata: () => (/* binding */ metadata),\n/* harmony export */ viewport: () => (/* binding */ viewport)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(rsc)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_font_google_target_css_path_src_app_layout_tsx_import_Inter_arguments_subsets_latin_variableName_inter___WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"} */ \"(rsc)/./node_modules/next/font/google/target.css?{\\\"path\\\":\\\"src/app/layout.tsx\\\",\\\"import\\\":\\\"Inter\\\",\\\"arguments\\\":[{\\\"subsets\\\":[\\\"latin\\\"]}],\\\"variableName\\\":\\\"inter\\\"}\");\n/* harmony import */ var next_font_google_target_css_path_src_app_layout_tsx_import_Inter_arguments_subsets_latin_variableName_inter___WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(next_font_google_target_css_path_src_app_layout_tsx_import_Inter_arguments_subsets_latin_variableName_inter___WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(rsc)/./src/app/globals.css\");\n/* harmony import */ var _components_PWARegistration__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/PWARegistration */ \"(rsc)/./src/components/PWARegistration.tsx\");\n/* harmony import */ var _components_OfflineIndicator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/OfflineIndicator */ \"(rsc)/./src/components/OfflineIndicator.tsx\");\n/* harmony import */ var _components_UploadQueue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/UploadQueue */ \"(rsc)/./src/components/UploadQueue.tsx\");\n\n\n\n\n\n\nconst metadata = {\n title: {\n default: \"Whisky Vault\",\n template: \"%s | Whisky Vault\"\n },\n description: \"Dein pers\\xf6nlicher Whisky-Begleiter zum Scannen und Verkosten.\",\n manifest: \"/manifest.json\",\n appleWebApp: {\n capable: true,\n statusBarStyle: \"default\",\n title: \"Whisky Vault\"\n },\n formatDetection: {\n telephone: false\n }\n};\nconst viewport = {\n themeColor: \"#000000\",\n width: \"device-width\",\n initialScale: 1,\n maximumScale: 1,\n userScalable: false\n};\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"de\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: (next_font_google_target_css_path_src_app_layout_tsx_import_Inter_arguments_subsets_latin_variableName_inter___WEBPACK_IMPORTED_MODULE_5___default().className),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_PWARegistration__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/layout.tsx\",\n lineNumber: 43,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_OfflineIndicator__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/layout.tsx\",\n lineNumber: 44,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_UploadQueue__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {}, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/layout.tsx\",\n lineNumber: 45,\n columnNumber: 17\n }, this),\n children\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/layout.tsx\",\n lineNumber: 42,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/layout.tsx\",\n lineNumber: 41,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9zcmMvYXBwL2xheW91dC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBT01BO0FBTGlCO0FBQ29DO0FBQ0U7QUFDVjtBQUk1QyxNQUFNSSxXQUFxQjtJQUM5QkMsT0FBTztRQUNIQyxTQUFTO1FBQ1RDLFVBQVU7SUFDZDtJQUNBQyxhQUFhO0lBQ2JDLFVBQVU7SUFDVkMsYUFBYTtRQUNUQyxTQUFTO1FBQ1RDLGdCQUFnQjtRQUNoQlAsT0FBTztJQUNYO0lBQ0FRLGlCQUFpQjtRQUNiQyxXQUFXO0lBQ2Y7QUFDSixFQUFFO0FBRUssTUFBTUMsV0FBVztJQUNwQkMsWUFBWTtJQUNaQyxPQUFPO0lBQ1BDLGNBQWM7SUFDZEMsY0FBYztJQUNkQyxjQUFjO0FBQ2xCLEVBQUU7QUFFYSxTQUFTQyxXQUFXLEVBQy9CQyxRQUFRLEVBR1Y7SUFDRSxxQkFDSSw4REFBQ0M7UUFBS0MsTUFBSztrQkFDUCw0RUFBQ0M7WUFBS0MsV0FBVzFCLCtKQUFlOzs4QkFDNUIsOERBQUNDLG1FQUFlQTs7Ozs7OEJBQ2hCLDhEQUFDQyxvRUFBZ0JBOzs7Ozs4QkFDakIsOERBQUNDLCtEQUFXQTs7Ozs7Z0JBQ1htQjs7Ozs7Ozs7Ozs7O0FBSWpCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd2hpc2t5LXZhdWx0Ly4vc3JjL2FwcC9sYXlvdXQudHN4PzU3YTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNZXRhZGF0YSB9IGZyb20gXCJuZXh0XCI7XG5pbXBvcnQgeyBJbnRlciB9IGZyb20gXCJuZXh0L2ZvbnQvZ29vZ2xlXCI7XG5pbXBvcnQgXCIuL2dsb2JhbHMuY3NzXCI7XG5pbXBvcnQgUFdBUmVnaXN0cmF0aW9uIGZyb20gXCJAL2NvbXBvbmVudHMvUFdBUmVnaXN0cmF0aW9uXCI7XG5pbXBvcnQgT2ZmbGluZUluZGljYXRvciBmcm9tIFwiQC9jb21wb25lbnRzL09mZmxpbmVJbmRpY2F0b3JcIjtcbmltcG9ydCBVcGxvYWRRdWV1ZSBmcm9tIFwiQC9jb21wb25lbnRzL1VwbG9hZFF1ZXVlXCI7XG5cbmNvbnN0IGludGVyID0gSW50ZXIoeyBzdWJzZXRzOiBbXCJsYXRpblwiXSB9KTtcblxuZXhwb3J0IGNvbnN0IG1ldGFkYXRhOiBNZXRhZGF0YSA9IHtcbiAgICB0aXRsZToge1xuICAgICAgICBkZWZhdWx0OiBcIldoaXNreSBWYXVsdFwiLFxuICAgICAgICB0ZW1wbGF0ZTogXCIlcyB8IFdoaXNreSBWYXVsdFwiXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjogXCJEZWluIHBlcnPDtm5saWNoZXIgV2hpc2t5LUJlZ2xlaXRlciB6dW0gU2Nhbm5lbiB1bmQgVmVya29zdGVuLlwiLFxuICAgIG1hbmlmZXN0OiBcIi9tYW5pZmVzdC5qc29uXCIsXG4gICAgYXBwbGVXZWJBcHA6IHtcbiAgICAgICAgY2FwYWJsZTogdHJ1ZSxcbiAgICAgICAgc3RhdHVzQmFyU3R5bGU6IFwiZGVmYXVsdFwiLFxuICAgICAgICB0aXRsZTogXCJXaGlza3kgVmF1bHRcIixcbiAgICB9LFxuICAgIGZvcm1hdERldGVjdGlvbjoge1xuICAgICAgICB0ZWxlcGhvbmU6IGZhbHNlLFxuICAgIH0sXG59O1xuXG5leHBvcnQgY29uc3Qgdmlld3BvcnQgPSB7XG4gICAgdGhlbWVDb2xvcjogXCIjMDAwMDAwXCIsXG4gICAgd2lkdGg6IFwiZGV2aWNlLXdpZHRoXCIsXG4gICAgaW5pdGlhbFNjYWxlOiAxLFxuICAgIG1heGltdW1TY2FsZTogMSxcbiAgICB1c2VyU2NhbGFibGU6IGZhbHNlLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUm9vdExheW91dCh7XG4gICAgY2hpbGRyZW4sXG59OiBSZWFkb25seTx7XG4gICAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn0+KSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPGh0bWwgbGFuZz1cImRlXCI+XG4gICAgICAgICAgICA8Ym9keSBjbGFzc05hbWU9e2ludGVyLmNsYXNzTmFtZX0+XG4gICAgICAgICAgICAgICAgPFBXQVJlZ2lzdHJhdGlvbiAvPlxuICAgICAgICAgICAgICAgIDxPZmZsaW5lSW5kaWNhdG9yIC8+XG4gICAgICAgICAgICAgICAgPFVwbG9hZFF1ZXVlIC8+XG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgPC9ib2R5PlxuICAgICAgICA8L2h0bWw+XG4gICAgKTtcbn1cbiJdLCJuYW1lcyI6WyJpbnRlciIsIlBXQVJlZ2lzdHJhdGlvbiIsIk9mZmxpbmVJbmRpY2F0b3IiLCJVcGxvYWRRdWV1ZSIsIm1ldGFkYXRhIiwidGl0bGUiLCJkZWZhdWx0IiwidGVtcGxhdGUiLCJkZXNjcmlwdGlvbiIsIm1hbmlmZXN0IiwiYXBwbGVXZWJBcHAiLCJjYXBhYmxlIiwic3RhdHVzQmFyU3R5bGUiLCJmb3JtYXREZXRlY3Rpb24iLCJ0ZWxlcGhvbmUiLCJ2aWV3cG9ydCIsInRoZW1lQ29sb3IiLCJ3aWR0aCIsImluaXRpYWxTY2FsZSIsIm1heGltdW1TY2FsZSIsInVzZXJTY2FsYWJsZSIsIlJvb3RMYXlvdXQiLCJjaGlsZHJlbiIsImh0bWwiLCJsYW5nIiwiYm9keSIsImNsYXNzTmFtZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./src/app/layout.tsx\n"); /***/ }), /***/ "(rsc)/./src/app/page.tsx": /*!**************************!*\ !*** ./src/app/page.tsx ***! \**************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ $$typeof: () => (/* binding */ $$typeof), /* harmony export */ __esModule: () => (/* binding */ __esModule), /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js"); const proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/home/robin/AI/Coding/Whisky/src/app/page.tsx`) // Accessing the __esModule property and exporting $$typeof are required here. // The __esModule getter forces the proxy target to create the default export // and the $$typeof value is for rendering logic to determine if the module // is a client boundary. const { __esModule, $$typeof } = proxy; const __default__ = proxy.default; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__default__); /***/ }), /***/ "(rsc)/./src/components/OfflineIndicator.tsx": /*!*********************************************!*\ !*** ./src/components/OfflineIndicator.tsx ***! \*********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ $$typeof: () => (/* binding */ $$typeof), /* harmony export */ __esModule: () => (/* binding */ __esModule), /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js"); const proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/home/robin/AI/Coding/Whisky/src/components/OfflineIndicator.tsx`) // Accessing the __esModule property and exporting $$typeof are required here. // The __esModule getter forces the proxy target to create the default export // and the $$typeof value is for rendering logic to determine if the module // is a client boundary. const { __esModule, $$typeof } = proxy; const __default__ = proxy.default; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__default__); /***/ }), /***/ "(rsc)/./src/components/PWARegistration.tsx": /*!********************************************!*\ !*** ./src/components/PWARegistration.tsx ***! \********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ $$typeof: () => (/* binding */ $$typeof), /* harmony export */ __esModule: () => (/* binding */ __esModule), /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js"); const proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/home/robin/AI/Coding/Whisky/src/components/PWARegistration.tsx`) // Accessing the __esModule property and exporting $$typeof are required here. // The __esModule getter forces the proxy target to create the default export // and the $$typeof value is for rendering logic to determine if the module // is a client boundary. const { __esModule, $$typeof } = proxy; const __default__ = proxy.default; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__default__); /***/ }), /***/ "(rsc)/./src/components/UploadQueue.tsx": /*!****************************************!*\ !*** ./src/components/UploadQueue.tsx ***! \****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ $$typeof: () => (/* binding */ $$typeof), /* harmony export */ __esModule: () => (/* binding */ __esModule), /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js"); const proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/home/robin/AI/Coding/Whisky/src/components/UploadQueue.tsx`) // Accessing the __esModule property and exporting $$typeof are required here. // The __esModule getter forces the proxy target to create the default export // and the $$typeof value is for rendering logic to determine if the module // is a client boundary. const { __esModule, $$typeof } = proxy; const __default__ = proxy.default; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__default__); /***/ }), /***/ "(action-browser)/./src/lib/gemini.ts": /*!***************************!*\ !*** ./src/lib/gemini.ts ***! \***************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SYSTEM_INSTRUCTION: () => (/* binding */ SYSTEM_INSTRUCTION),\n/* harmony export */ geminiModel: () => (/* binding */ geminiModel)\n/* harmony export */ });\n/* harmony import */ var _google_generative_ai__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @google/generative-ai */ \"(action-browser)/./node_modules/@google/generative-ai/dist/index.mjs\");\n\nconst apiKey = process.env.GEMINI_API_KEY;\nconst genAI = new _google_generative_ai__WEBPACK_IMPORTED_MODULE_0__.GoogleGenerativeAI(apiKey);\nconst geminiModel = genAI.getGenerativeModel({\n model: \"gemini-3-flash-preview\",\n generationConfig: {\n responseMimeType: \"application/json\"\n }\n});\nconst SYSTEM_INSTRUCTION = `\nYou are a sommelier and database clerk. Analyze the whisky bottle image. Extract precise metadata.\nIf the image is NOT a whisky bottle or if you are very unsure, set \"is_whisky\" to false and provide a low \"confidence\" score.\nIf a value is not visible, use null.\nInfer the 'Category' (e.g., Islay Single Malt) based on the Distillery if possible.\nSearch specifically for a \"Whiskybase ID\" or \"WB ID\" on the label. \nOutput raw JSON matching the following schema:\n{\n \"name\": string | null,\n \"distillery\": string | null,\n \"category\": string | null,\n \"abv\": number | null,\n \"age\": number | null,\n \"vintage\": string | null,\n \"bottleCode\": string | null,\n \"whiskybaseId\": string | null,\n \"is_whisky\": boolean,\n \"confidence\": number (0-100)\n}\n`;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFjdGlvbi1icm93c2VyKS8uL3NyYy9saWIvZ2VtaW5pLnRzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUEyRDtBQUUzRCxNQUFNQyxTQUFTQyxRQUFRQyxHQUFHLENBQUNDLGNBQWM7QUFFekMsTUFBTUMsUUFBUSxJQUFJTCxxRUFBa0JBLENBQUNDO0FBRTlCLE1BQU1LLGNBQWNELE1BQU1FLGtCQUFrQixDQUFDO0lBQ2xEQyxPQUFPO0lBQ1BDLGtCQUFrQjtRQUNoQkMsa0JBQWtCO0lBQ3BCO0FBQ0YsR0FBRztBQUVJLE1BQU1DLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJuQyxDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aGlza3ktdmF1bHQvLi9zcmMvbGliL2dlbWluaS50cz85OTRmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdvb2dsZUdlbmVyYXRpdmVBSSB9IGZyb20gJ0Bnb29nbGUvZ2VuZXJhdGl2ZS1haSc7XG5cbmNvbnN0IGFwaUtleSA9IHByb2Nlc3MuZW52LkdFTUlOSV9BUElfS0VZITtcblxuY29uc3QgZ2VuQUkgPSBuZXcgR29vZ2xlR2VuZXJhdGl2ZUFJKGFwaUtleSk7XG5cbmV4cG9ydCBjb25zdCBnZW1pbmlNb2RlbCA9IGdlbkFJLmdldEdlbmVyYXRpdmVNb2RlbCh7XG4gIG1vZGVsOiAnZ2VtaW5pLTMtZmxhc2gtcHJldmlldycsXG4gIGdlbmVyYXRpb25Db25maWc6IHtcbiAgICByZXNwb25zZU1pbWVUeXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IFNZU1RFTV9JTlNUUlVDVElPTiA9IGBcbllvdSBhcmUgYSBzb21tZWxpZXIgYW5kIGRhdGFiYXNlIGNsZXJrLiBBbmFseXplIHRoZSB3aGlza3kgYm90dGxlIGltYWdlLiBFeHRyYWN0IHByZWNpc2UgbWV0YWRhdGEuXG5JZiB0aGUgaW1hZ2UgaXMgTk9UIGEgd2hpc2t5IGJvdHRsZSBvciBpZiB5b3UgYXJlIHZlcnkgdW5zdXJlLCBzZXQgXCJpc193aGlza3lcIiB0byBmYWxzZSBhbmQgcHJvdmlkZSBhIGxvdyBcImNvbmZpZGVuY2VcIiBzY29yZS5cbklmIGEgdmFsdWUgaXMgbm90IHZpc2libGUsIHVzZSBudWxsLlxuSW5mZXIgdGhlICdDYXRlZ29yeScgKGUuZy4sIElzbGF5IFNpbmdsZSBNYWx0KSBiYXNlZCBvbiB0aGUgRGlzdGlsbGVyeSBpZiBwb3NzaWJsZS5cblNlYXJjaCBzcGVjaWZpY2FsbHkgZm9yIGEgXCJXaGlza3liYXNlIElEXCIgb3IgXCJXQiBJRFwiIG9uIHRoZSBsYWJlbC4gXG5PdXRwdXQgcmF3IEpTT04gbWF0Y2hpbmcgdGhlIGZvbGxvd2luZyBzY2hlbWE6XG57XG4gIFwibmFtZVwiOiBzdHJpbmcgfCBudWxsLFxuICBcImRpc3RpbGxlcnlcIjogc3RyaW5nIHwgbnVsbCxcbiAgXCJjYXRlZ29yeVwiOiBzdHJpbmcgfCBudWxsLFxuICBcImFidlwiOiBudW1iZXIgfCBudWxsLFxuICBcImFnZVwiOiBudW1iZXIgfCBudWxsLFxuICBcInZpbnRhZ2VcIjogc3RyaW5nIHwgbnVsbCxcbiAgXCJib3R0bGVDb2RlXCI6IHN0cmluZyB8IG51bGwsXG4gIFwid2hpc2t5YmFzZUlkXCI6IHN0cmluZyB8IG51bGwsXG4gIFwiaXNfd2hpc2t5XCI6IGJvb2xlYW4sXG4gIFwiY29uZmlkZW5jZVwiOiBudW1iZXIgKDAtMTAwKVxufVxuYDtcbiJdLCJuYW1lcyI6WyJHb29nbGVHZW5lcmF0aXZlQUkiLCJhcGlLZXkiLCJwcm9jZXNzIiwiZW52IiwiR0VNSU5JX0FQSV9LRVkiLCJnZW5BSSIsImdlbWluaU1vZGVsIiwiZ2V0R2VuZXJhdGl2ZU1vZGVsIiwibW9kZWwiLCJnZW5lcmF0aW9uQ29uZmlnIiwicmVzcG9uc2VNaW1lVHlwZSIsIlNZU1RFTV9JTlNUUlVDVElPTiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(action-browser)/./src/lib/gemini.ts\n"); /***/ }), /***/ "(action-browser)/./src/services/analyze-bottle.ts": /*!****************************************!*\ !*** ./src/services/analyze-bottle.ts ***! \****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ analyzeBottle: () => (/* binding */ analyzeBottle)\n/* harmony export */ });\n/* harmony import */ var private_next_rsc_action_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! private-next-rsc-action-proxy */ \"(action-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/action-proxy.js\");\n/* harmony import */ var private_next_rsc_action_encryption__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! private-next-rsc-action-encryption */ \"(action-browser)/./node_modules/next/dist/server/app-render/action-encryption.js\");\n/* harmony import */ var private_next_rsc_action_encryption__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(private_next_rsc_action_encryption__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lib_gemini__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/lib/gemini */ \"(action-browser)/./src/lib/gemini.ts\");\n/* harmony import */ var _types_whisky__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/types/whisky */ \"(action-browser)/./src/types/whisky.ts\");\n/* harmony import */ var _supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @supabase/auth-helpers-nextjs */ \"(action-browser)/./node_modules/@supabase/auth-helpers-nextjs/dist/index.js\");\n/* harmony import */ var _supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var next_headers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! next/headers */ \"(action-browser)/./node_modules/next/dist/api/headers.js\");\n/* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! crypto */ \"crypto\");\n/* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(crypto__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var private_next_rsc_action_validate__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! private-next-rsc-action-validate */ \"(action-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/action-validate.js\");\n/* __next_internal_action_entry_do_not_use__ {\"af8f7c7b0fe98b99031bb1c9e8ef0ed13b2eae40\":\"analyzeBottle\"} */ \n\n\n\n\n\n\nasync function analyzeBottle(base64Image) {\n const supabase = (0,_supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_4__.createServerActionClient)({\n cookies: next_headers__WEBPACK_IMPORTED_MODULE_5__.cookies\n });\n if (!process.env.GEMINI_API_KEY) {\n return {\n success: false,\n error: \"GEMINI_API_KEY is not configured.\"\n };\n }\n try {\n // Ensure user is authenticated for tracking/billing\n const { data: { session } } = await supabase.auth.getSession();\n if (!session) {\n return {\n success: false,\n error: \"Nicht autorisiert oder Session abgelaufen.\"\n };\n }\n // 1. Generate Hash for Caching\n const base64Data = base64Image.split(\",\")[1] || base64Image;\n const imageHash = (0,crypto__WEBPACK_IMPORTED_MODULE_6__.createHash)(\"sha256\").update(base64Data).digest(\"hex\");\n console.log(`[AI Cache] Checking hash: ${imageHash}`);\n // 2. Check Cache\n const { data: cachedResult } = await supabase.from(\"vision_cache\").select(\"result\").eq(\"hash\", imageHash).maybeSingle();\n if (cachedResult) {\n console.log(`[AI Cache] Hit! hash: ${imageHash}`);\n return {\n success: true,\n data: cachedResult.result\n };\n }\n console.log(`[AI Cache] Miss. Calling Gemini...`);\n // 3. AI Analysis\n const result = await _lib_gemini__WEBPACK_IMPORTED_MODULE_2__.geminiModel.generateContent([\n {\n inlineData: {\n data: base64Data,\n mimeType: \"image/jpeg\"\n }\n },\n {\n text: _lib_gemini__WEBPACK_IMPORTED_MODULE_2__.SYSTEM_INSTRUCTION\n }\n ]);\n const responseText = result.response.text();\n let jsonData = JSON.parse(responseText);\n if (Array.isArray(jsonData)) {\n jsonData = jsonData[0];\n }\n if (!jsonData) {\n throw new Error(\"Keine Daten in der KI-Antwort gefunden.\");\n }\n const validatedData = _types_whisky__WEBPACK_IMPORTED_MODULE_3__.BottleMetadataSchema.parse(jsonData);\n // 4. Store in Cache\n const { error: storeError } = await supabase.from(\"vision_cache\").insert({\n hash: imageHash,\n result: validatedData\n });\n if (storeError) {\n console.warn(`[AI Cache] Storage failed: ${storeError.message}`);\n } else {\n console.log(`[AI Cache] Stored new result for hash: ${imageHash}`);\n }\n return {\n success: true,\n data: validatedData\n };\n } catch (error) {\n console.error(\"Gemini Analysis Error:\", error);\n return {\n success: false,\n error: error instanceof Error ? error.message : \"An unknown error occurred during analysis.\"\n };\n }\n}\n\n(0,private_next_rsc_action_validate__WEBPACK_IMPORTED_MODULE_7__.ensureServerEntryExports)([\n analyzeBottle\n]);\n(0,private_next_rsc_action_proxy__WEBPACK_IMPORTED_MODULE_0__.createActionProxy)(\"af8f7c7b0fe98b99031bb1c9e8ef0ed13b2eae40\", analyzeBottle);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFjdGlvbi1icm93c2VyKS8uL3NyYy9zZXJ2aWNlcy9hbmFseXplLWJvdHRsZS50cyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUUrRDtBQUNTO0FBQ0M7QUFDbEM7QUFDSDtBQUU3QixlQUFlTSxjQUFjQyxXQUFtQjtJQUNuRCxNQUFNQyxXQUFXTCx1RkFBd0JBLENBQUM7UUFBRUMsT0FBT0EsbURBQUFBO0lBQUM7SUFFcEQsSUFBSSxDQUFDSyxRQUFRQyxHQUFHLENBQUNDLGNBQWMsRUFBRTtRQUM3QixPQUFPO1lBQUVDLFNBQVM7WUFBT0MsT0FBTztRQUFvQztJQUN4RTtJQUVBLElBQUk7UUFDQSxvREFBb0Q7UUFDcEQsTUFBTSxFQUFFQyxNQUFNLEVBQUVDLE9BQU8sRUFBRSxFQUFFLEdBQUcsTUFBTVAsU0FBU1EsSUFBSSxDQUFDQyxVQUFVO1FBQzVELElBQUksQ0FBQ0YsU0FBUztZQUNWLE9BQU87Z0JBQUVILFNBQVM7Z0JBQU9DLE9BQU87WUFBNkM7UUFDakY7UUFFQSwrQkFBK0I7UUFDL0IsTUFBTUssYUFBYVgsWUFBWVksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUlaO1FBQ2hELE1BQU1hLFlBQVlmLGtEQUFVQSxDQUFDLFVBQVVnQixNQUFNLENBQUNILFlBQVlJLE1BQU0sQ0FBQztRQUNqRUMsUUFBUUMsR0FBRyxDQUFDLENBQUMsMEJBQTBCLEVBQUVKLFVBQVUsQ0FBQztRQUVwRCxpQkFBaUI7UUFDakIsTUFBTSxFQUFFTixNQUFNVyxZQUFZLEVBQUUsR0FBRyxNQUFNakIsU0FDaENrQixJQUFJLENBQUMsZ0JBQ0xDLE1BQU0sQ0FBQyxVQUNQQyxFQUFFLENBQUMsUUFBUVIsV0FDWFMsV0FBVztRQUVoQixJQUFJSixjQUFjO1lBQ2RGLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLHNCQUFzQixFQUFFSixVQUFVLENBQUM7WUFDaEQsT0FBTztnQkFDSFIsU0FBUztnQkFDVEUsTUFBTVcsYUFBYUssTUFBTTtZQUM3QjtRQUNKO1FBRUFQLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLGtDQUFrQyxDQUFDO1FBRWhELGlCQUFpQjtRQUNqQixNQUFNTSxTQUFTLE1BQU05QixvREFBV0EsQ0FBQytCLGVBQWUsQ0FBQztZQUM3QztnQkFDSUMsWUFBWTtvQkFDUmxCLE1BQU1JO29CQUNOZSxVQUFVO2dCQUNkO1lBQ0o7WUFDQTtnQkFBRUMsTUFBTWpDLDJEQUFrQkE7WUFBQztTQUM5QjtRQUVELE1BQU1rQyxlQUFlTCxPQUFPTSxRQUFRLENBQUNGLElBQUk7UUFDekMsSUFBSUcsV0FBV0MsS0FBS0MsS0FBSyxDQUFDSjtRQUUxQixJQUFJSyxNQUFNQyxPQUFPLENBQUNKLFdBQVc7WUFDekJBLFdBQVdBLFFBQVEsQ0FBQyxFQUFFO1FBQzFCO1FBRUEsSUFBSSxDQUFDQSxVQUFVO1lBQ1gsTUFBTSxJQUFJSyxNQUFNO1FBQ3BCO1FBRUEsTUFBTUMsZ0JBQWdCekMsK0RBQW9CQSxDQUFDcUMsS0FBSyxDQUFDRjtRQUVqRCxvQkFBb0I7UUFDcEIsTUFBTSxFQUFFeEIsT0FBTytCLFVBQVUsRUFBRSxHQUFHLE1BQU1wQyxTQUMvQmtCLElBQUksQ0FBQyxnQkFDTG1CLE1BQU0sQ0FBQztZQUFFQyxNQUFNMUI7WUFBV1UsUUFBUWE7UUFBYztRQUVyRCxJQUFJQyxZQUFZO1lBQ1pyQixRQUFRd0IsSUFBSSxDQUFDLENBQUMsMkJBQTJCLEVBQUVILFdBQVdJLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLE9BQU87WUFDSHpCLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLHVDQUF1QyxFQUFFSixVQUFVLENBQUM7UUFDckU7UUFFQSxPQUFPO1lBQ0hSLFNBQVM7WUFDVEUsTUFBTTZCO1FBQ1Y7SUFDSixFQUFFLE9BQU85QixPQUFPO1FBQ1pVLFFBQVFWLEtBQUssQ0FBQywwQkFBMEJBO1FBQ3hDLE9BQU87WUFDSEQsU0FBUztZQUNUQyxPQUFPQSxpQkFBaUI2QixRQUFRN0IsTUFBTW1DLE9BQU8sR0FBRztRQUNwRDtJQUNKO0FBQ0oiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aGlza3ktdmF1bHQvLi9zcmMvc2VydmljZXMvYW5hbHl6ZS1ib3R0bGUudHM/ZGQxMCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcic7XG5cbmltcG9ydCB7IGdlbWluaU1vZGVsLCBTWVNURU1fSU5TVFJVQ1RJT04gfSBmcm9tICdAL2xpYi9nZW1pbmknO1xuaW1wb3J0IHsgQm90dGxlTWV0YWRhdGFTY2hlbWEsIEFuYWx5c2lzUmVzcG9uc2UgfSBmcm9tICdAL3R5cGVzL3doaXNreSc7XG5pbXBvcnQgeyBjcmVhdGVTZXJ2ZXJBY3Rpb25DbGllbnQgfSBmcm9tICdAc3VwYWJhc2UvYXV0aC1oZWxwZXJzLW5leHRqcyc7XG5pbXBvcnQgeyBjb29raWVzIH0gZnJvbSAnbmV4dC9oZWFkZXJzJztcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYW5hbHl6ZUJvdHRsZShiYXNlNjRJbWFnZTogc3RyaW5nKTogUHJvbWlzZTxBbmFseXNpc1Jlc3BvbnNlPiB7XG4gICAgY29uc3Qgc3VwYWJhc2UgPSBjcmVhdGVTZXJ2ZXJBY3Rpb25DbGllbnQoeyBjb29raWVzIH0pO1xuXG4gICAgaWYgKCFwcm9jZXNzLmVudi5HRU1JTklfQVBJX0tFWSkge1xuICAgICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3I6ICdHRU1JTklfQVBJX0tFWSBpcyBub3QgY29uZmlndXJlZC4nIH07XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgICAgLy8gRW5zdXJlIHVzZXIgaXMgYXV0aGVudGljYXRlZCBmb3IgdHJhY2tpbmcvYmlsbGluZ1xuICAgICAgICBjb25zdCB7IGRhdGE6IHsgc2Vzc2lvbiB9IH0gPSBhd2FpdCBzdXBhYmFzZS5hdXRoLmdldFNlc3Npb24oKTtcbiAgICAgICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3I6ICdOaWNodCBhdXRvcmlzaWVydCBvZGVyIFNlc3Npb24gYWJnZWxhdWZlbi4nIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyAxLiBHZW5lcmF0ZSBIYXNoIGZvciBDYWNoaW5nXG4gICAgICAgIGNvbnN0IGJhc2U2NERhdGEgPSBiYXNlNjRJbWFnZS5zcGxpdCgnLCcpWzFdIHx8IGJhc2U2NEltYWdlO1xuICAgICAgICBjb25zdCBpbWFnZUhhc2ggPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoYmFzZTY0RGF0YSkuZGlnZXN0KCdoZXgnKTtcbiAgICAgICAgY29uc29sZS5sb2coYFtBSSBDYWNoZV0gQ2hlY2tpbmcgaGFzaDogJHtpbWFnZUhhc2h9YCk7XG5cbiAgICAgICAgLy8gMi4gQ2hlY2sgQ2FjaGVcbiAgICAgICAgY29uc3QgeyBkYXRhOiBjYWNoZWRSZXN1bHQgfSA9IGF3YWl0IHN1cGFiYXNlXG4gICAgICAgICAgICAuZnJvbSgndmlzaW9uX2NhY2hlJylcbiAgICAgICAgICAgIC5zZWxlY3QoJ3Jlc3VsdCcpXG4gICAgICAgICAgICAuZXEoJ2hhc2gnLCBpbWFnZUhhc2gpXG4gICAgICAgICAgICAubWF5YmVTaW5nbGUoKTtcblxuICAgICAgICBpZiAoY2FjaGVkUmVzdWx0KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgW0FJIENhY2hlXSBIaXQhIGhhc2g6ICR7aW1hZ2VIYXNofWApO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGE6IGNhY2hlZFJlc3VsdC5yZXN1bHQgYXMgYW55LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBbQUkgQ2FjaGVdIE1pc3MuIENhbGxpbmcgR2VtaW5pLi4uYCk7XG5cbiAgICAgICAgLy8gMy4gQUkgQW5hbHlzaXNcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2VtaW5pTW9kZWwuZ2VuZXJhdGVDb250ZW50KFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbmxpbmVEYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGJhc2U2NERhdGEsXG4gICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlOiAnaW1hZ2UvanBlZycsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IHRleHQ6IFNZU1RFTV9JTlNUUlVDVElPTiB9LFxuICAgICAgICBdKTtcblxuICAgICAgICBjb25zdCByZXNwb25zZVRleHQgPSByZXN1bHQucmVzcG9uc2UudGV4dCgpO1xuICAgICAgICBsZXQganNvbkRhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlVGV4dCk7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoanNvbkRhdGEpKSB7XG4gICAgICAgICAgICBqc29uRGF0YSA9IGpzb25EYXRhWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFqc29uRGF0YSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdLZWluZSBEYXRlbiBpbiBkZXIgS0ktQW50d29ydCBnZWZ1bmRlbi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlZERhdGEgPSBCb3R0bGVNZXRhZGF0YVNjaGVtYS5wYXJzZShqc29uRGF0YSk7XG5cbiAgICAgICAgLy8gNC4gU3RvcmUgaW4gQ2FjaGVcbiAgICAgICAgY29uc3QgeyBlcnJvcjogc3RvcmVFcnJvciB9ID0gYXdhaXQgc3VwYWJhc2VcbiAgICAgICAgICAgIC5mcm9tKCd2aXNpb25fY2FjaGUnKVxuICAgICAgICAgICAgLmluc2VydCh7IGhhc2g6IGltYWdlSGFzaCwgcmVzdWx0OiB2YWxpZGF0ZWREYXRhIH0pO1xuXG4gICAgICAgIGlmIChzdG9yZUVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFtBSSBDYWNoZV0gU3RvcmFnZSBmYWlsZWQ6ICR7c3RvcmVFcnJvci5tZXNzYWdlfWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYFtBSSBDYWNoZV0gU3RvcmVkIG5ldyByZXN1bHQgZm9yIGhhc2g6ICR7aW1hZ2VIYXNofWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICBkYXRhOiB2YWxpZGF0ZWREYXRhLFxuICAgICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0dlbWluaSBBbmFseXNpcyBFcnJvcjonLCBlcnJvcik7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdBbiB1bmtub3duIGVycm9yIG9jY3VycmVkIGR1cmluZyBhbmFseXNpcy4nLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6WyJnZW1pbmlNb2RlbCIsIlNZU1RFTV9JTlNUUlVDVElPTiIsIkJvdHRsZU1ldGFkYXRhU2NoZW1hIiwiY3JlYXRlU2VydmVyQWN0aW9uQ2xpZW50IiwiY29va2llcyIsImNyZWF0ZUhhc2giLCJhbmFseXplQm90dGxlIiwiYmFzZTY0SW1hZ2UiLCJzdXBhYmFzZSIsInByb2Nlc3MiLCJlbnYiLCJHRU1JTklfQVBJX0tFWSIsInN1Y2Nlc3MiLCJlcnJvciIsImRhdGEiLCJzZXNzaW9uIiwiYXV0aCIsImdldFNlc3Npb24iLCJiYXNlNjREYXRhIiwic3BsaXQiLCJpbWFnZUhhc2giLCJ1cGRhdGUiLCJkaWdlc3QiLCJjb25zb2xlIiwibG9nIiwiY2FjaGVkUmVzdWx0IiwiZnJvbSIsInNlbGVjdCIsImVxIiwibWF5YmVTaW5nbGUiLCJyZXN1bHQiLCJnZW5lcmF0ZUNvbnRlbnQiLCJpbmxpbmVEYXRhIiwibWltZVR5cGUiLCJ0ZXh0IiwicmVzcG9uc2VUZXh0IiwicmVzcG9uc2UiLCJqc29uRGF0YSIsIkpTT04iLCJwYXJzZSIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwidmFsaWRhdGVkRGF0YSIsInN0b3JlRXJyb3IiLCJpbnNlcnQiLCJoYXNoIiwid2FybiIsIm1lc3NhZ2UiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(action-browser)/./src/services/analyze-bottle.ts\n"); /***/ }), /***/ "(action-browser)/./src/services/save-bottle.ts": /*!*************************************!*\ !*** ./src/services/save-bottle.ts ***! \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ saveBottle: () => (/* binding */ saveBottle)\n/* harmony export */ });\n/* harmony import */ var private_next_rsc_action_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! private-next-rsc-action-proxy */ \"(action-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/action-proxy.js\");\n/* harmony import */ var private_next_rsc_action_encryption__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! private-next-rsc-action-encryption */ \"(action-browser)/./node_modules/next/dist/server/app-render/action-encryption.js\");\n/* harmony import */ var private_next_rsc_action_encryption__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(private_next_rsc_action_encryption__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @supabase/auth-helpers-nextjs */ \"(action-browser)/./node_modules/@supabase/auth-helpers-nextjs/dist/index.js\");\n/* harmony import */ var _supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_headers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/headers */ \"(action-browser)/./node_modules/next/dist/api/headers.js\");\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! uuid */ \"(action-browser)/./node_modules/uuid/dist-node/index.js\");\n/* harmony import */ var private_next_rsc_action_validate__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! private-next-rsc-action-validate */ \"(action-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/action-validate.js\");\n/* __next_internal_action_entry_do_not_use__ {\"9cc2ffbf85f4e72220537b4253faa867d3a48bad\":\"saveBottle\"} */ \n\n\n\n\nasync function saveBottle(metadata, base64Image, _ignoredUserId // Keeping for signature compatibility if needed, but using session internally\n) {\n const supabase = (0,_supabase_auth_helpers_nextjs__WEBPACK_IMPORTED_MODULE_2__.createServerActionClient)({\n cookies: next_headers__WEBPACK_IMPORTED_MODULE_3__.cookies\n });\n try {\n // Verify user session and get ID from the server side (secure)\n const { data: { session } } = await supabase.auth.getSession();\n if (!session) {\n throw new Error(\"Nicht autorisiert oder Session abgelaufen.\");\n }\n const userId = session.user.id;\n // 1. Upload Image to Storage\n const base64Data = base64Image.split(\",\")[1] || base64Image;\n const buffer = Buffer.from(base64Data, \"base64\");\n const fileName = `${userId}/${(0,uuid__WEBPACK_IMPORTED_MODULE_4__.v4)()}.jpg`;\n const { data: uploadData, error: uploadError } = await supabase.storage.from(\"bottles\").upload(fileName, buffer, {\n contentType: \"image/jpeg\",\n upsert: true\n });\n if (uploadError) throw new Error(`Upload Error: ${uploadError.message}`);\n // Get Public URL\n const { data: { publicUrl } } = supabase.storage.from(\"bottles\").getPublicUrl(fileName);\n // 2. Save Metadata to Database\n const { data: bottleData, error: dbError } = await supabase.from(\"bottles\").insert({\n user_id: userId,\n name: metadata.name,\n distillery: metadata.distillery,\n category: metadata.category,\n abv: metadata.abv,\n age: metadata.age,\n whiskybase_id: metadata.whiskybaseId,\n image_url: publicUrl,\n status: \"sealed\",\n is_whisky: metadata.is_whisky ?? true,\n confidence: metadata.confidence ?? 100\n }).select().single();\n if (dbError) throw new Error(`Database Error: ${dbError.message}`);\n return {\n success: true,\n data: bottleData\n };\n } catch (error) {\n console.error(\"Save Bottle Error:\", error);\n return {\n success: false,\n error: error instanceof Error ? error.message : \"An unknown error occurred while saving.\"\n };\n }\n}\n\n(0,private_next_rsc_action_validate__WEBPACK_IMPORTED_MODULE_5__.ensureServerEntryExports)([\n saveBottle\n]);\n(0,private_next_rsc_action_proxy__WEBPACK_IMPORTED_MODULE_0__.createActionProxy)(\"9cc2ffbf85f4e72220537b4253faa867d3a48bad\", saveBottle);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFjdGlvbi1icm93c2VyKS8uL3NyYy9zZXJ2aWNlcy9zYXZlLWJvdHRsZS50cyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUV5RTtBQUNsQztBQUVIO0FBRTdCLGVBQWVJLFdBQ2xCQyxRQUF3QixFQUN4QkMsV0FBbUIsRUFDbkJDLGVBQXVCLDhFQUE4RTtBQUEvRTtJQUV0QixNQUFNQyxXQUFXUix1RkFBd0JBLENBQUM7UUFBRUMsT0FBT0EsbURBQUFBO0lBQUM7SUFFcEQsSUFBSTtRQUNBLCtEQUErRDtRQUMvRCxNQUFNLEVBQUVRLE1BQU0sRUFBRUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxNQUFNRixTQUFTRyxJQUFJLENBQUNDLFVBQVU7UUFDNUQsSUFBSSxDQUFDRixTQUFTO1lBQ1YsTUFBTSxJQUFJRyxNQUFNO1FBQ3BCO1FBRUEsTUFBTUMsU0FBU0osUUFBUUssSUFBSSxDQUFDQyxFQUFFO1FBRTlCLDZCQUE2QjtRQUM3QixNQUFNQyxhQUFhWCxZQUFZWSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSVo7UUFDaEQsTUFBTWEsU0FBU0MsT0FBT0MsSUFBSSxDQUFDSixZQUFZO1FBQ3ZDLE1BQU1LLFdBQVcsQ0FBQyxFQUFFUixPQUFPLENBQUMsRUFBRVgsd0NBQU1BLEdBQUcsSUFBSSxDQUFDO1FBRTVDLE1BQU0sRUFBRU0sTUFBTWMsVUFBVSxFQUFFQyxPQUFPQyxXQUFXLEVBQUUsR0FBRyxNQUFNakIsU0FBU2tCLE9BQU8sQ0FDbEVMLElBQUksQ0FBQyxXQUNMTSxNQUFNLENBQUNMLFVBQVVILFFBQVE7WUFDdEJTLGFBQWE7WUFDYkMsUUFBUTtRQUNaO1FBRUosSUFBSUosYUFBYSxNQUFNLElBQUlaLE1BQU0sQ0FBQyxjQUFjLEVBQUVZLFlBQVlLLE9BQU8sQ0FBQyxDQUFDO1FBRXZFLGlCQUFpQjtRQUNqQixNQUFNLEVBQUVyQixNQUFNLEVBQUVzQixTQUFTLEVBQUUsRUFBRSxHQUFHdkIsU0FBU2tCLE9BQU8sQ0FDM0NMLElBQUksQ0FBQyxXQUNMVyxZQUFZLENBQUNWO1FBRWxCLCtCQUErQjtRQUMvQixNQUFNLEVBQUViLE1BQU13QixVQUFVLEVBQUVULE9BQU9VLE9BQU8sRUFBRSxHQUFHLE1BQU0xQixTQUM5Q2EsSUFBSSxDQUFDLFdBQ0xjLE1BQU0sQ0FBQztZQUNKQyxTQUFTdEI7WUFDVHVCLE1BQU1oQyxTQUFTZ0MsSUFBSTtZQUNuQkMsWUFBWWpDLFNBQVNpQyxVQUFVO1lBQy9CQyxVQUFVbEMsU0FBU2tDLFFBQVE7WUFDM0JDLEtBQUtuQyxTQUFTbUMsR0FBRztZQUNqQkMsS0FBS3BDLFNBQVNvQyxHQUFHO1lBQ2pCQyxlQUFlckMsU0FBU3NDLFlBQVk7WUFDcENDLFdBQVdiO1lBQ1hjLFFBQVE7WUFDUkMsV0FBV3pDLFNBQVN5QyxTQUFTLElBQUk7WUFDakNDLFlBQVkxQyxTQUFTMEMsVUFBVSxJQUFJO1FBQ3ZDLEdBQ0NDLE1BQU0sR0FDTkMsTUFBTTtRQUVYLElBQUlmLFNBQVMsTUFBTSxJQUFJckIsTUFBTSxDQUFDLGdCQUFnQixFQUFFcUIsUUFBUUosT0FBTyxDQUFDLENBQUM7UUFFakUsT0FBTztZQUFFb0IsU0FBUztZQUFNekMsTUFBTXdCO1FBQVc7SUFDN0MsRUFBRSxPQUFPVCxPQUFPO1FBQ1oyQixRQUFRM0IsS0FBSyxDQUFDLHNCQUFzQkE7UUFDcEMsT0FBTztZQUNIMEIsU0FBUztZQUNUMUIsT0FBT0EsaUJBQWlCWCxRQUFRVyxNQUFNTSxPQUFPLEdBQUc7UUFDcEQ7SUFDSjtBQUNKIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd2hpc2t5LXZhdWx0Ly4vc3JjL3NlcnZpY2VzL3NhdmUtYm90dGxlLnRzP2NlMzYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInO1xuXG5pbXBvcnQgeyBjcmVhdGVTZXJ2ZXJBY3Rpb25DbGllbnQgfSBmcm9tICdAc3VwYWJhc2UvYXV0aC1oZWxwZXJzLW5leHRqcyc7XG5pbXBvcnQgeyBjb29raWVzIH0gZnJvbSAnbmV4dC9oZWFkZXJzJztcbmltcG9ydCB7IEJvdHRsZU1ldGFkYXRhIH0gZnJvbSAnQC90eXBlcy93aGlza3knO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYXZlQm90dGxlKFxuICAgIG1ldGFkYXRhOiBCb3R0bGVNZXRhZGF0YSxcbiAgICBiYXNlNjRJbWFnZTogc3RyaW5nLFxuICAgIF9pZ25vcmVkVXNlcklkOiBzdHJpbmcgLy8gS2VlcGluZyBmb3Igc2lnbmF0dXJlIGNvbXBhdGliaWxpdHkgaWYgbmVlZGVkLCBidXQgdXNpbmcgc2Vzc2lvbiBpbnRlcm5hbGx5XG4pIHtcbiAgICBjb25zdCBzdXBhYmFzZSA9IGNyZWF0ZVNlcnZlckFjdGlvbkNsaWVudCh7IGNvb2tpZXMgfSk7XG5cbiAgICB0cnkge1xuICAgICAgICAvLyBWZXJpZnkgdXNlciBzZXNzaW9uIGFuZCBnZXQgSUQgZnJvbSB0aGUgc2VydmVyIHNpZGUgKHNlY3VyZSlcbiAgICAgICAgY29uc3QgeyBkYXRhOiB7IHNlc3Npb24gfSB9ID0gYXdhaXQgc3VwYWJhc2UuYXV0aC5nZXRTZXNzaW9uKCk7XG4gICAgICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOaWNodCBhdXRvcmlzaWVydCBvZGVyIFNlc3Npb24gYWJnZWxhdWZlbi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVzZXJJZCA9IHNlc3Npb24udXNlci5pZDtcblxuICAgICAgICAvLyAxLiBVcGxvYWQgSW1hZ2UgdG8gU3RvcmFnZVxuICAgICAgICBjb25zdCBiYXNlNjREYXRhID0gYmFzZTY0SW1hZ2Uuc3BsaXQoJywnKVsxXSB8fCBiYXNlNjRJbWFnZTtcbiAgICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oYmFzZTY0RGF0YSwgJ2Jhc2U2NCcpO1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGAke3VzZXJJZH0vJHt1dWlkdjQoKX0uanBnYDtcblxuICAgICAgICBjb25zdCB7IGRhdGE6IHVwbG9hZERhdGEsIGVycm9yOiB1cGxvYWRFcnJvciB9ID0gYXdhaXQgc3VwYWJhc2Uuc3RvcmFnZVxuICAgICAgICAgICAgLmZyb20oJ2JvdHRsZXMnKVxuICAgICAgICAgICAgLnVwbG9hZChmaWxlTmFtZSwgYnVmZmVyLCB7XG4gICAgICAgICAgICAgICAgY29udGVudFR5cGU6ICdpbWFnZS9qcGVnJyxcbiAgICAgICAgICAgICAgICB1cHNlcnQ6IHRydWUsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBpZiAodXBsb2FkRXJyb3IpIHRocm93IG5ldyBFcnJvcihgVXBsb2FkIEVycm9yOiAke3VwbG9hZEVycm9yLm1lc3NhZ2V9YCk7XG5cbiAgICAgICAgLy8gR2V0IFB1YmxpYyBVUkxcbiAgICAgICAgY29uc3QgeyBkYXRhOiB7IHB1YmxpY1VybCB9IH0gPSBzdXBhYmFzZS5zdG9yYWdlXG4gICAgICAgICAgICAuZnJvbSgnYm90dGxlcycpXG4gICAgICAgICAgICAuZ2V0UHVibGljVXJsKGZpbGVOYW1lKTtcblxuICAgICAgICAvLyAyLiBTYXZlIE1ldGFkYXRhIHRvIERhdGFiYXNlXG4gICAgICAgIGNvbnN0IHsgZGF0YTogYm90dGxlRGF0YSwgZXJyb3I6IGRiRXJyb3IgfSA9IGF3YWl0IHN1cGFiYXNlXG4gICAgICAgICAgICAuZnJvbSgnYm90dGxlcycpXG4gICAgICAgICAgICAuaW5zZXJ0KHtcbiAgICAgICAgICAgICAgICB1c2VyX2lkOiB1c2VySWQsXG4gICAgICAgICAgICAgICAgbmFtZTogbWV0YWRhdGEubmFtZSxcbiAgICAgICAgICAgICAgICBkaXN0aWxsZXJ5OiBtZXRhZGF0YS5kaXN0aWxsZXJ5LFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBtZXRhZGF0YS5jYXRlZ29yeSxcbiAgICAgICAgICAgICAgICBhYnY6IG1ldGFkYXRhLmFidixcbiAgICAgICAgICAgICAgICBhZ2U6IG1ldGFkYXRhLmFnZSxcbiAgICAgICAgICAgICAgICB3aGlza3liYXNlX2lkOiBtZXRhZGF0YS53aGlza3liYXNlSWQsXG4gICAgICAgICAgICAgICAgaW1hZ2VfdXJsOiBwdWJsaWNVcmwsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAnc2VhbGVkJywgLy8gRGVmYXVsdCBzdGF0dXNcbiAgICAgICAgICAgICAgICBpc193aGlza3k6IG1ldGFkYXRhLmlzX3doaXNreSA/PyB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbmZpZGVuY2U6IG1ldGFkYXRhLmNvbmZpZGVuY2UgPz8gMTAwLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5zZWxlY3QoKVxuICAgICAgICAgICAgLnNpbmdsZSgpO1xuXG4gICAgICAgIGlmIChkYkVycm9yKSB0aHJvdyBuZXcgRXJyb3IoYERhdGFiYXNlIEVycm9yOiAke2RiRXJyb3IubWVzc2FnZX1gKTtcblxuICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBkYXRhOiBib3R0bGVEYXRhIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignU2F2ZSBCb3R0bGUgRXJyb3I6JywgZXJyb3IpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCB3aGlsZSBzYXZpbmcuJyxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlU2VydmVyQWN0aW9uQ2xpZW50IiwiY29va2llcyIsInY0IiwidXVpZHY0Iiwic2F2ZUJvdHRsZSIsIm1ldGFkYXRhIiwiYmFzZTY0SW1hZ2UiLCJfaWdub3JlZFVzZXJJZCIsInN1cGFiYXNlIiwiZGF0YSIsInNlc3Npb24iLCJhdXRoIiwiZ2V0U2Vzc2lvbiIsIkVycm9yIiwidXNlcklkIiwidXNlciIsImlkIiwiYmFzZTY0RGF0YSIsInNwbGl0IiwiYnVmZmVyIiwiQnVmZmVyIiwiZnJvbSIsImZpbGVOYW1lIiwidXBsb2FkRGF0YSIsImVycm9yIiwidXBsb2FkRXJyb3IiLCJzdG9yYWdlIiwidXBsb2FkIiwiY29udGVudFR5cGUiLCJ1cHNlcnQiLCJtZXNzYWdlIiwicHVibGljVXJsIiwiZ2V0UHVibGljVXJsIiwiYm90dGxlRGF0YSIsImRiRXJyb3IiLCJpbnNlcnQiLCJ1c2VyX2lkIiwibmFtZSIsImRpc3RpbGxlcnkiLCJjYXRlZ29yeSIsImFidiIsImFnZSIsIndoaXNreWJhc2VfaWQiLCJ3aGlza3liYXNlSWQiLCJpbWFnZV91cmwiLCJzdGF0dXMiLCJpc193aGlza3kiLCJjb25maWRlbmNlIiwic2VsZWN0Iiwic2luZ2xlIiwic3VjY2VzcyIsImNvbnNvbGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(action-browser)/./src/services/save-bottle.ts\n"); /***/ }), /***/ "(action-browser)/./src/types/whisky.ts": /*!*****************************!*\ !*** ./src/types/whisky.ts ***! \*****************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BottleMetadataSchema: () => (/* binding */ BottleMetadataSchema)\n/* harmony export */ });\n/* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zod */ \"(action-browser)/./node_modules/zod/index.js\");\n\nconst BottleMetadataSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n name: zod__WEBPACK_IMPORTED_MODULE_0__.z.string().nullable(),\n distillery: zod__WEBPACK_IMPORTED_MODULE_0__.z.string().nullable(),\n category: zod__WEBPACK_IMPORTED_MODULE_0__.z.string().nullable(),\n abv: zod__WEBPACK_IMPORTED_MODULE_0__.z.number().nullable(),\n age: zod__WEBPACK_IMPORTED_MODULE_0__.z.number().nullable(),\n vintage: zod__WEBPACK_IMPORTED_MODULE_0__.z.string().nullable(),\n bottleCode: zod__WEBPACK_IMPORTED_MODULE_0__.z.string().nullable(),\n whiskybaseId: zod__WEBPACK_IMPORTED_MODULE_0__.z.string().nullable(),\n is_whisky: zod__WEBPACK_IMPORTED_MODULE_0__.z.boolean().default(true),\n confidence: zod__WEBPACK_IMPORTED_MODULE_0__.z.number().min(0).max(100).default(100)\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFjdGlvbi1icm93c2VyKS8uL3NyYy90eXBlcy93aGlza3kudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBd0I7QUFFakIsTUFBTUMsdUJBQXVCRCxrQ0FBQ0EsQ0FBQ0UsTUFBTSxDQUFDO0lBQ3pDQyxNQUFNSCxrQ0FBQ0EsQ0FBQ0ksTUFBTSxHQUFHQyxRQUFRO0lBQ3pCQyxZQUFZTixrQ0FBQ0EsQ0FBQ0ksTUFBTSxHQUFHQyxRQUFRO0lBQy9CRSxVQUFVUCxrQ0FBQ0EsQ0FBQ0ksTUFBTSxHQUFHQyxRQUFRO0lBQzdCRyxLQUFLUixrQ0FBQ0EsQ0FBQ1MsTUFBTSxHQUFHSixRQUFRO0lBQ3hCSyxLQUFLVixrQ0FBQ0EsQ0FBQ1MsTUFBTSxHQUFHSixRQUFRO0lBQ3hCTSxTQUFTWCxrQ0FBQ0EsQ0FBQ0ksTUFBTSxHQUFHQyxRQUFRO0lBQzVCTyxZQUFZWixrQ0FBQ0EsQ0FBQ0ksTUFBTSxHQUFHQyxRQUFRO0lBQy9CUSxjQUFjYixrQ0FBQ0EsQ0FBQ0ksTUFBTSxHQUFHQyxRQUFRO0lBQ2pDUyxXQUFXZCxrQ0FBQ0EsQ0FBQ2UsT0FBTyxHQUFHQyxPQUFPLENBQUM7SUFDL0JDLFlBQVlqQixrQ0FBQ0EsQ0FBQ1MsTUFBTSxHQUFHUyxHQUFHLENBQUMsR0FBR0MsR0FBRyxDQUFDLEtBQUtILE9BQU8sQ0FBQztBQUNuRCxHQUFHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd2hpc2t5LXZhdWx0Ly4vc3JjL3R5cGVzL3doaXNreS50cz84NTQ3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuXG5leHBvcnQgY29uc3QgQm90dGxlTWV0YWRhdGFTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICAgIGRpc3RpbGxlcnk6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICBjYXRlZ29yeTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICAgIGFidjogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICAgIGFnZTogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICAgIHZpbnRhZ2U6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICBib3R0bGVDb2RlOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAgd2hpc2t5YmFzZUlkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAgaXNfd2hpc2t5OiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICAgIGNvbmZpZGVuY2U6IHoubnVtYmVyKCkubWluKDApLm1heCgxMDApLmRlZmF1bHQoMTAwKSxcbn0pO1xuXG5leHBvcnQgdHlwZSBCb3R0bGVNZXRhZGF0YSA9IHouaW5mZXI8dHlwZW9mIEJvdHRsZU1ldGFkYXRhU2NoZW1hPjtcblxuZXhwb3J0IGludGVyZmFjZSBBbmFseXNpc1Jlc3BvbnNlIHtcbiAgICBzdWNjZXNzOiBib29sZWFuO1xuICAgIGRhdGE/OiBCb3R0bGVNZXRhZGF0YTtcbiAgICBlcnJvcj86IHN0cmluZztcbn1cbiJdLCJuYW1lcyI6WyJ6IiwiQm90dGxlTWV0YWRhdGFTY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwibnVsbGFibGUiLCJkaXN0aWxsZXJ5IiwiY2F0ZWdvcnkiLCJhYnYiLCJudW1iZXIiLCJhZ2UiLCJ2aW50YWdlIiwiYm90dGxlQ29kZSIsIndoaXNreWJhc2VJZCIsImlzX3doaXNreSIsImJvb2xlYW4iLCJkZWZhdWx0IiwiY29uZmlkZW5jZSIsIm1pbiIsIm1heCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(action-browser)/./src/types/whisky.ts\n"); /***/ }) }; ; // load runtime var __webpack_require__ = require("../webpack-runtime.js"); __webpack_require__.C(exports); var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) var __webpack_exports__ = __webpack_require__.X(0, ["vendor-chunks/next","vendor-chunks/@swc","vendor-chunks/@supabase","vendor-chunks/jose","vendor-chunks/zod","vendor-chunks/@google","vendor-chunks/tslib","vendor-chunks/iceberg-js","vendor-chunks/lucide-react","vendor-chunks/set-cookie-parser","vendor-chunks/uuid"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"))); module.exports = __webpack_exports__; })();