diff --git a/.next/app-build-manifest.json b/.next/app-build-manifest.json index 7b83571..6a1bf49 100644 --- a/.next/app-build-manifest.json +++ b/.next/app-build-manifest.json @@ -25,6 +25,11 @@ "static/chunks/webpack.js", "static/chunks/main-app.js", "static/chunks/app/gunbuilder/[categoryId]/[partId]/page.js" + ], + "/gunbuilder/build/page": [ + "static/chunks/webpack.js", + "static/chunks/main-app.js", + "static/chunks/app/gunbuilder/build/page.js" ] } } \ No newline at end of file diff --git a/.next/cache/webpack/client-development/1.pack.gz b/.next/cache/webpack/client-development/1.pack.gz index 9730f87..85d775b 100644 Binary files a/.next/cache/webpack/client-development/1.pack.gz and b/.next/cache/webpack/client-development/1.pack.gz differ diff --git a/.next/cache/webpack/client-development/10.pack.gz b/.next/cache/webpack/client-development/10.pack.gz index cf27f3a..81dca1e 100644 Binary files a/.next/cache/webpack/client-development/10.pack.gz and b/.next/cache/webpack/client-development/10.pack.gz differ diff --git a/.next/cache/webpack/client-development/11.pack.gz b/.next/cache/webpack/client-development/11.pack.gz index 304897a..bfed098 100644 Binary files a/.next/cache/webpack/client-development/11.pack.gz and b/.next/cache/webpack/client-development/11.pack.gz differ diff --git a/.next/cache/webpack/client-development/2.pack.gz b/.next/cache/webpack/client-development/2.pack.gz index 19bdf2e..1f5d5bc 100644 Binary files a/.next/cache/webpack/client-development/2.pack.gz and b/.next/cache/webpack/client-development/2.pack.gz differ diff --git a/.next/cache/webpack/client-development/3.pack.gz b/.next/cache/webpack/client-development/3.pack.gz index d0d3f01..f8317e6 100644 Binary files a/.next/cache/webpack/client-development/3.pack.gz and b/.next/cache/webpack/client-development/3.pack.gz differ diff --git a/.next/cache/webpack/client-development/4.pack.gz b/.next/cache/webpack/client-development/4.pack.gz index 301a814..1ada88e 100644 Binary files a/.next/cache/webpack/client-development/4.pack.gz and b/.next/cache/webpack/client-development/4.pack.gz differ diff --git a/.next/cache/webpack/client-development/5.pack.gz b/.next/cache/webpack/client-development/5.pack.gz index 59cd1c2..2931a21 100644 Binary files a/.next/cache/webpack/client-development/5.pack.gz and b/.next/cache/webpack/client-development/5.pack.gz differ diff --git a/.next/cache/webpack/client-development/6.pack.gz b/.next/cache/webpack/client-development/6.pack.gz index b1bf8e2..50995e3 100644 Binary files a/.next/cache/webpack/client-development/6.pack.gz and b/.next/cache/webpack/client-development/6.pack.gz differ diff --git a/.next/cache/webpack/client-development/7.pack.gz b/.next/cache/webpack/client-development/7.pack.gz index b7255ce..d96a591 100644 Binary files a/.next/cache/webpack/client-development/7.pack.gz and b/.next/cache/webpack/client-development/7.pack.gz differ diff --git a/.next/cache/webpack/client-development/8.pack.gz b/.next/cache/webpack/client-development/8.pack.gz index 299a5e7..0340705 100644 Binary files a/.next/cache/webpack/client-development/8.pack.gz and b/.next/cache/webpack/client-development/8.pack.gz differ diff --git a/.next/cache/webpack/client-development/9.pack.gz b/.next/cache/webpack/client-development/9.pack.gz index 48f2a17..dad201c 100644 Binary files a/.next/cache/webpack/client-development/9.pack.gz and b/.next/cache/webpack/client-development/9.pack.gz differ diff --git a/.next/cache/webpack/client-development/index.pack.gz b/.next/cache/webpack/client-development/index.pack.gz index 8fdd959..a772b6a 100644 Binary files a/.next/cache/webpack/client-development/index.pack.gz and b/.next/cache/webpack/client-development/index.pack.gz differ diff --git a/.next/cache/webpack/client-development/index.pack.gz.old b/.next/cache/webpack/client-development/index.pack.gz.old index 97c0103..33f3c6a 100644 Binary files a/.next/cache/webpack/client-development/index.pack.gz.old and b/.next/cache/webpack/client-development/index.pack.gz.old differ diff --git a/.next/cache/webpack/server-development/0.pack.gz b/.next/cache/webpack/server-development/0.pack.gz index d1c346c..4a76178 100644 Binary files a/.next/cache/webpack/server-development/0.pack.gz and b/.next/cache/webpack/server-development/0.pack.gz differ diff --git a/.next/cache/webpack/server-development/1.pack.gz b/.next/cache/webpack/server-development/1.pack.gz index 77bfa10..63ee217 100644 Binary files a/.next/cache/webpack/server-development/1.pack.gz and b/.next/cache/webpack/server-development/1.pack.gz differ diff --git a/.next/cache/webpack/server-development/2.pack.gz b/.next/cache/webpack/server-development/2.pack.gz index f2a9817..e6f98f3 100644 Binary files a/.next/cache/webpack/server-development/2.pack.gz and b/.next/cache/webpack/server-development/2.pack.gz differ diff --git a/.next/cache/webpack/server-development/3.pack.gz b/.next/cache/webpack/server-development/3.pack.gz index 6a8b521..2db35f8 100644 Binary files a/.next/cache/webpack/server-development/3.pack.gz and b/.next/cache/webpack/server-development/3.pack.gz differ diff --git a/.next/cache/webpack/server-development/4.pack.gz b/.next/cache/webpack/server-development/4.pack.gz index 29bd528..532f52c 100644 Binary files a/.next/cache/webpack/server-development/4.pack.gz and b/.next/cache/webpack/server-development/4.pack.gz differ diff --git a/.next/cache/webpack/server-development/5.pack.gz b/.next/cache/webpack/server-development/5.pack.gz index d3776c9..3c5b998 100644 Binary files a/.next/cache/webpack/server-development/5.pack.gz and b/.next/cache/webpack/server-development/5.pack.gz differ diff --git a/.next/cache/webpack/server-development/6.pack.gz b/.next/cache/webpack/server-development/6.pack.gz index d67fade..e3f895e 100644 Binary files a/.next/cache/webpack/server-development/6.pack.gz and b/.next/cache/webpack/server-development/6.pack.gz differ diff --git a/.next/cache/webpack/server-development/index.pack.gz b/.next/cache/webpack/server-development/index.pack.gz index 5c0e526..e41a1bf 100644 Binary files a/.next/cache/webpack/server-development/index.pack.gz and b/.next/cache/webpack/server-development/index.pack.gz differ diff --git a/.next/cache/webpack/server-development/index.pack.gz.old b/.next/cache/webpack/server-development/index.pack.gz.old index d64289e..d39198a 100644 Binary files a/.next/cache/webpack/server-development/index.pack.gz.old and b/.next/cache/webpack/server-development/index.pack.gz.old differ diff --git a/.next/server/app-paths-manifest.json b/.next/server/app-paths-manifest.json index 6f30181..1cdce68 100644 --- a/.next/server/app-paths-manifest.json +++ b/.next/server/app-paths-manifest.json @@ -1,4 +1,7 @@ { - "/gunbuilder/page": "app/gunbuilder/page.js", - "/gunbuilder/[categoryId]/page": "app/gunbuilder/[categoryId]/page.js" + "/gunbuilder/[categoryId]/page": "app/gunbuilder/[categoryId]/page.js", + "/gunbuilder/build/page": "app/gunbuilder/build/page.js", + "/gunbuilder/[categoryId]/[partId]/page": "app/gunbuilder/[categoryId]/[partId]/page.js", + "/page": "app/page.js", + "/gunbuilder/page": "app/gunbuilder/page.js" } \ No newline at end of file diff --git a/.next/server/app/_not-found/page.js b/.next/server/app/_not-found/page.js new file mode 100644 index 0000000..2158863 --- /dev/null +++ b/.next/server/app/_not-found/page.js @@ -0,0 +1,155 @@ +/* + * 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/_not-found/page"; +exports.ids = ["app/_not-found/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"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&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%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&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?d969\");\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: [\"/_not-found\", {\n children: ['__PAGE__', {}, {\n page: [\n () => 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)),\n \"next/dist/client/components/not-found-error\"\n ]\n }]\n }, {}]\n },\n {\n 'layout': [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/layout.tsx */ \"(rsc)/./app/layout.tsx\")), \"/Users/sean/Dev/gunbuilder-prototype/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 \n }\n ]\n }.children;\nconst pages = [];\n\n\nconst __next_app_require__ = __webpack_require__\nconst __next_app_load_chunk__ = () => Promise.resolve()\nconst originalPathname = \"/_not-found/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: \"/_not-found/page\",\n pathname: \"/_not-found\",\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/bmFtZT1hcHAlMkZfbm90LWZvdW5kJTJGcGFnZSZwYWdlPSUyRl9ub3QtZm91bmQlMkZwYWdlJmFwcFBhdGhzPSZwYWdlUGF0aD1ub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZub3QtZm91bmQtZXJyb3IuanMmYXBwRGlyPSUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGYXBwJnBhZ2VFeHRlbnNpb25zPXRzeCZwYWdlRXh0ZW5zaW9ucz10cyZwYWdlRXh0ZW5zaW9ucz1qc3gmcGFnZUV4dGVuc2lvbnM9anMmcm9vdERpcj0lMkZVc2VycyUyRnNlYW4lMkZEZXYlMkZndW5idWlsZGVyLXByb3RvdHlwZSZpc0Rldj10cnVlJnRzY29uZmlnUGF0aD10c2NvbmZpZy5qc29uJmJhc2VQYXRoPSZhc3NldFByZWZpeD0mbmV4dENvbmZpZ091dHB1dD0mcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCEiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGFBQWEsc0JBQXNCO0FBQ2lFO0FBQ3JDO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0Esc0JBQXNCLDBOQUFnRjtBQUN0RztBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVcsSUFBSTtBQUNmLFNBQVM7QUFDVDtBQUNBLHlCQUF5Qiw0SUFBd0Y7QUFDakgsb0JBQW9CLDBOQUFnRjtBQUNwRztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDdUI7QUFDNkQ7QUFDcEYsNkJBQTZCLG1CQUFtQjtBQUNoRDtBQUNPO0FBQ0E7QUFDUDtBQUNBO0FBQ0E7QUFDdUQ7QUFDdkQ7QUFDTyx3QkFBd0IsOEdBQWtCO0FBQ2pEO0FBQ0EsY0FBYyx5RUFBUztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLz8wZTY0Il0sInNvdXJjZXNDb250ZW50IjpbIlwiVFVSQk9QQUNLIHsgdHJhbnNpdGlvbjogbmV4dC1zc3IgfVwiO1xuaW1wb3J0IHsgQXBwUGFnZVJvdXRlTW9kdWxlIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXBhZ2UvbW9kdWxlLmNvbXBpbGVkXCI7XG5pbXBvcnQgeyBSb3V0ZUtpbmQgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9mdXR1cmUvcm91dGUta2luZFwiO1xuLy8gV2UgaW5qZWN0IHRoZSB0cmVlIGFuZCBwYWdlcyBoZXJlIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGVtIGluIHRoZSByb3V0ZVxuLy8gbW9kdWxlLlxuY29uc3QgdHJlZSA9IHtcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgJycsXG4gICAgICAgIHtcbiAgICAgICAgICBjaGlsZHJlbjogW1wiL19ub3QtZm91bmRcIiwge1xuICAgICAgICAgICAgY2hpbGRyZW46IFsnX19QQUdFX18nLCB7fSwge1xuICAgICAgICAgICAgICBwYWdlOiBbXG4gICAgICAgICAgICAgICAgKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kLWVycm9yXCIpLFxuICAgICAgICAgICAgICAgIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvclwiXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1dXG4gICAgICAgICAgfSwge31dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgJ2xheW91dCc6IFsoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9zZWFuL0Rldi9ndW5idWlsZGVyLXByb3RvdHlwZS9hcHAvbGF5b3V0LnRzeFwiKSwgXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvYXBwL2xheW91dC50c3hcIl0sXG4nbm90LWZvdW5kJzogWygpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvclwiKSwgXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kLWVycm9yXCJdLFxuICAgICAgICBcbiAgICAgIH1cbiAgICAgIF1cbiAgICAgIH0uY2hpbGRyZW47XG5jb25zdCBwYWdlcyA9IFtdO1xuZXhwb3J0IHsgdHJlZSwgcGFnZXMgfTtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgR2xvYmFsRXJyb3IgfSBmcm9tIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2Vycm9yLWJvdW5kYXJ5XCI7XG5jb25zdCBfX25leHRfYXBwX3JlcXVpcmVfXyA9IF9fd2VicGFja19yZXF1aXJlX19cbmNvbnN0IF9fbmV4dF9hcHBfbG9hZF9jaHVua19fID0gKCkgPT4gUHJvbWlzZS5yZXNvbHZlKClcbmV4cG9ydCBjb25zdCBvcmlnaW5hbFBhdGhuYW1lID0gXCIvX25vdC1mb3VuZC9wYWdlXCI7XG5leHBvcnQgY29uc3QgX19uZXh0X2FwcF9fID0ge1xuICAgIHJlcXVpcmU6IF9fbmV4dF9hcHBfcmVxdWlyZV9fLFxuICAgIGxvYWRDaHVuazogX19uZXh0X2FwcF9sb2FkX2NodW5rX19cbn07XG5leHBvcnQgKiBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2VudHJ5LWJhc2VcIjtcbi8vIENyZWF0ZSBhbmQgZXhwb3J0IHRoZSByb3V0ZSBtb2R1bGUgdGhhdCB3aWxsIGJlIGNvbnN1bWVkLlxuZXhwb3J0IGNvbnN0IHJvdXRlTW9kdWxlID0gbmV3IEFwcFBhZ2VSb3V0ZU1vZHVsZSh7XG4gICAgZGVmaW5pdGlvbjoge1xuICAgICAgICBraW5kOiBSb3V0ZUtpbmQuQVBQX1BBR0UsXG4gICAgICAgIHBhZ2U6IFwiL19ub3QtZm91bmQvcGFnZVwiLFxuICAgICAgICBwYXRobmFtZTogXCIvX25vdC1mb3VuZFwiLFxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZW4ndCB1c2VkIGluIHByb2R1Y3Rpb24uXG4gICAgICAgIGJ1bmRsZVBhdGg6IFwiXCIsXG4gICAgICAgIGZpbGVuYW1lOiBcIlwiLFxuICAgICAgICBhcHBQYXRoczogW11cbiAgICB9LFxuICAgIHVzZXJsYW5kOiB7XG4gICAgICAgIGxvYWRlclRyZWU6IHRyZWVcbiAgICB9XG59KTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLXBhZ2UuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!\n"); + +/***/ }), + +/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true!": +/*!********************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***! + \********************************************************************************************************************************************************************************************************************************/ +/***/ (() => { + + + +/***/ }), + +/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!": +/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&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));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/client-page.js */ \"(ssr)/./node_modules/next/dist/client/components/client-page.js\", 23));\n;\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));\n;\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));\n;\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));\n;\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));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGYXBwLXJvdXRlci5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRnNlYW4lMkZEZXYlMkZndW5idWlsZGVyLXByb3RvdHlwZSUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmNsaWVudC1wYWdlLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGZXJyb3ItYm91bmRhcnkuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZzZWFuJTJGRGV2JTJGZ3VuYnVpbGRlci1wcm90b3R5cGUlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZsYXlvdXQtcm91dGVyLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGbm90LWZvdW5kLWJvdW5kYXJ5LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsa09BQWdJO0FBQ2hJO0FBQ0Esb09BQWlJO0FBQ2pJO0FBQ0EsME9BQW9JO0FBQ3BJO0FBQ0Esd09BQW1JO0FBQ25JO0FBQ0Esa1BBQXdJO0FBQ3hJO0FBQ0Esc1FBQWtKIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvPzdiMjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtcGFnZS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3NlYW4vRGV2L2d1bmJ1aWxkZXItcHJvdG90eXBlL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnkuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9zZWFuL0Rldi9ndW5idWlsZGVyLXByb3RvdHlwZS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2xheW91dC1yb3V0ZXIuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9zZWFuL0Rldi9ndW5idWlsZGVyLXByb3RvdHlwZS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1ib3VuZGFyeS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3NlYW4vRGV2L2d1bmJ1aWxkZXItcHJvdG90eXBlL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qc1wiKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n"); + +/***/ }), + +/***/ "(rsc)/./app/globals.css": +/*!*************************!*\ + !*** ./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__ = (\"8e3b978f6080\");\nif (false) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvZ2xvYmFscy5jc3MiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlFQUFlLGNBQWM7QUFDN0IsSUFBSSxLQUFVLEVBQUUsRUFBdUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2FwcC9nbG9iYWxzLmNzcz9jZDI4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IFwiOGUzYjk3OGY2MDgwXCJcbmlmIChtb2R1bGUuaG90KSB7IG1vZHVsZS5ob3QuYWNjZXB0KCkgfVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/globals.css\n"); + +/***/ }), + +/***/ "(rsc)/./app/layout.tsx": +/*!************************!*\ + !*** ./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 */ });\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 _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(rsc)/./app/globals.css\");\n\n\nconst metadata = {\n title: \"Gunbuilder Prototype | Shadow Standard\",\n description: \"Prototype AR-15 build tool by Shadow Standard.\"\n};\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 11,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvbGF5b3V0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBdUI7QUFHaEIsTUFBTUEsV0FBVztJQUN0QkMsT0FBTztJQUNQQyxhQUFhO0FBQ2YsRUFBRTtBQUVhLFNBQVNDLFdBQVcsRUFBRUMsUUFBUSxFQUEyQjtJQUN0RSxxQkFDRSw4REFBQ0M7UUFBS0MsTUFBSztrQkFDVCw0RUFBQ0M7c0JBQU1IOzs7Ozs7Ozs7OztBQUdiIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9hcHAvbGF5b3V0LnRzeD85OTg4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcIi4vZ2xvYmFscy5jc3NcIjtcbmltcG9ydCB0eXBlIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBtZXRhZGF0YSA9IHtcbiAgdGl0bGU6IFwiR3VuYnVpbGRlciBQcm90b3R5cGUgfCBTaGFkb3cgU3RhbmRhcmRcIixcbiAgZGVzY3JpcHRpb246IFwiUHJvdG90eXBlIEFSLTE1IGJ1aWxkIHRvb2wgYnkgU2hhZG93IFN0YW5kYXJkLlwiLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUm9vdExheW91dCh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGh0bWwgbGFuZz1cImVuXCI+XG4gICAgICA8Ym9keT57Y2hpbGRyZW59PC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJtZXRhZGF0YSIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJSb290TGF5b3V0IiwiY2hpbGRyZW4iLCJodG1sIiwibGFuZyIsImJvZHkiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/layout.tsx\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"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"))); +module.exports = __webpack_exports__; + +})(); \ No newline at end of file diff --git a/.next/server/app/_not-found/page_client-reference-manifest.js b/.next/server/app/_not-found/page_client-reference-manifest.js new file mode 100644 index 0000000..bfa5626 --- /dev/null +++ b/.next/server/app/_not-found/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/_not-found/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./node_modules/next/dist/client/link.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/link.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/build/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/build/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/build/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/sean/Dev/gunbuilder-prototype/":[],"/Users/sean/Dev/gunbuilder-prototype/app/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/layout":["static/css/app/layout.css"],"/Users/sean/Dev/gunbuilder-prototype/app/_not-found/page":[]}} \ No newline at end of file diff --git a/.next/server/app/gunbuilder/[categoryId]/[partId]/page_client-reference-manifest.js b/.next/server/app/gunbuilder/[categoryId]/[partId]/page_client-reference-manifest.js index fe6fe5a..82c0f40 100644 --- a/.next/server/app/gunbuilder/[categoryId]/[partId]/page_client-reference-manifest.js +++ b/.next/server/app/gunbuilder/[categoryId]/[partId]/page_client-reference-manifest.js @@ -1 +1 @@ -globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/gunbuilder/[categoryId]/[partId]/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./node_modules/next/dist/client/link.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/link.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/page.tsx","name":"*","chunks":["app/gunbuilder/page","static/chunks/app/gunbuilder/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":["app/gunbuilder/[categoryId]/page","static/chunks/app/gunbuilder/%5BcategoryId%5D/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":["app/gunbuilder/[categoryId]/[partId]/page","static/chunks/app/gunbuilder/%5BcategoryId%5D/%5BpartId%5D/page.js"],"async":false}},"entryCSSFiles":{"/Users/sean/Dev/gunbuilder-prototype/":[],"/Users/sean/Dev/gunbuilder-prototype/app/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/layout":["static/css/app/layout.css"],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page":[]}} \ No newline at end of file +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/gunbuilder/[categoryId]/[partId]/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./node_modules/next/dist/client/link.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/link.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/build/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/build/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/page.tsx","name":"*","chunks":["app/gunbuilder/page","static/chunks/app/gunbuilder/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":["app/gunbuilder/[categoryId]/page","static/chunks/app/gunbuilder/%5BcategoryId%5D/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":["app/gunbuilder/[categoryId]/[partId]/page","static/chunks/app/gunbuilder/%5BcategoryId%5D/%5BpartId%5D/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/build/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/sean/Dev/gunbuilder-prototype/":[],"/Users/sean/Dev/gunbuilder-prototype/app/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/layout":["static/css/app/layout.css"],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page":[]}} \ No newline at end of file diff --git a/.next/server/app/gunbuilder/[categoryId]/page.js b/.next/server/app/gunbuilder/[categoryId]/page.js index 3c07cf1..64b4f51 100644 --- a/.next/server/app/gunbuilder/[categoryId]/page.js +++ b/.next/server/app/gunbuilder/[categoryId]/page.js @@ -137,7 +137,7 @@ eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__w /***/ ((__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 */ CategoryPage)\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 next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(ssr)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(ssr)/./data/gunbuilderParts.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\nfunction CategoryPage() {\n const params = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams)();\n const categoryId = params.categoryId;\n const [viewMode, setViewMode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"card\");\n const category = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.find((c)=>c.id === categoryId), [\n categoryId\n ]);\n const parts = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.filter((p)=>p.categoryId === categoryId), [\n categoryId\n ]);\n if (!category) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"Category Not Found\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 31,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-amber-300 hover:text-amber-200 underline\",\n children: \"Return to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 34,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 30,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 29,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 28,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: \"← Back to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 51,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between gap-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)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 59,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n category.name,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: \"Parts\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 63,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 62,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: [\n \"Browse all available \",\n category.name.toLowerCase(),\n \" options for your build.\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 65,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 58,\n columnNumber: 13\n }, this),\n parts.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2 border border-zinc-800 rounded-md p-1 bg-zinc-950/60\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setViewMode(\"card\"),\n className: `px-3 py-1.5 text-xs font-medium rounded transition-colors ${viewMode === \"card\" ? \"bg-zinc-800 text-zinc-50\" : \"text-zinc-400 hover:text-zinc-300\"}`,\n \"aria-label\": \"Card view\",\n children: \"Card\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 72,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setViewMode(\"list\"),\n className: `px-3 py-1.5 text-xs font-medium rounded transition-colors ${viewMode === \"list\" ? \"bg-zinc-800 text-zinc-50\" : \"text-zinc-400 hover:text-zinc-300\"}`,\n \"aria-label\": \"List view\",\n children: \"List\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 84,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 71,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 57,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 50,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-3 md:p-4\",\n children: parts.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500 text-center py-8\",\n children: \"No parts available for this category yet.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 104,\n columnNumber: 13\n }, this) : viewMode === \"card\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-3 md:grid-cols-2 lg:grid-cols-3\",\n children: parts.map((part)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-zinc-700 rounded-md p-3 bg-zinc-900/50 hover:border-zinc-600 transition-colors flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: `/gunbuilder?select=${categoryId}:${part.id}`,\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center gap-2 mb-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-zinc-50\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-normal\",\n children: [\n \"— \",\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 121,\n columnNumber: 40\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 120,\n columnNumber: 25\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-xs text-zinc-400 line-clamp-2\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 124,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 119,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 129,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 118,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 114,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: `/gunbuilder/${categoryId}/${part.id}`,\n className: \"w-full rounded-md border border-zinc-700 bg-zinc-800/50 px-3 py-2 text-xs font-medium text-zinc-300 hover:bg-zinc-700 hover:border-zinc-600 transition-colors text-center\",\n children: \"View Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 134,\n columnNumber: 19\n }, this)\n ]\n }, part.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 110,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 108,\n columnNumber: 13\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: parts.map((part)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-zinc-700 rounded-md p-3 bg-zinc-900/50 hover:border-zinc-600 transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 min-w-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: `/gunbuilder?select=${categoryId}:${part.id}`,\n className: \"block\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-zinc-50\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-normal\",\n children: [\n \"— \",\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 157,\n columnNumber: 40\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 156,\n columnNumber: 25\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-xs text-zinc-400 line-clamp-1\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 160,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 152,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 151,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 167,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: `/gunbuilder/${categoryId}/${part.id}`,\n className: \"rounded-md border border-zinc-700 bg-zinc-800/50 px-3 py-1.5 text-xs font-medium text-zinc-300 hover:bg-zinc-700 hover:border-zinc-600 transition-colors whitespace-nowrap\",\n children: \"View Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 170,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 166,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 150,\n columnNumber: 19\n }, this)\n }, part.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 146,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 144,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 102,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 48,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 47,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBRTBDO0FBQ2I7QUFDZTtBQUNlO0FBSzVDLFNBQVNNO0lBQ3RCLE1BQU1DLFNBQVNKLDBEQUFTQTtJQUN4QixNQUFNSyxhQUFhRCxPQUFPQyxVQUFVO0lBQ3BDLE1BQU0sQ0FBQ0MsVUFBVUMsWUFBWSxHQUFHVCwrQ0FBUUEsQ0FBVztJQUVuRCxNQUFNVSxXQUFXWCw4Q0FBT0EsQ0FDdEIsSUFBTUksNkRBQVVBLENBQUNRLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxFQUFFLEtBQUtOLGFBQ3RDO1FBQUNBO0tBQVc7SUFHZCxNQUFNTyxRQUFRZiw4Q0FBT0EsQ0FDbkIsSUFBTUssd0RBQUtBLENBQUNXLE1BQU0sQ0FBQyxDQUFDQyxJQUFNQSxFQUFFVCxVQUFVLEtBQUtBLGFBQzNDO1FBQUNBO0tBQVc7SUFHZCxJQUFJLENBQUNHLFVBQVU7UUFDYixxQkFDRSw4REFBQ087WUFBS0MsV0FBVTtzQkFDZCw0RUFBQ0M7Z0JBQUlELFdBQVU7MEJBQ2IsNEVBQUNDO29CQUFJRCxXQUFVOztzQ0FDYiw4REFBQ0U7NEJBQUdGLFdBQVU7c0NBQTJDOzs7Ozs7c0NBR3pELDhEQUFDakIsaURBQUlBOzRCQUNIb0IsTUFBSzs0QkFDTEgsV0FBVTtzQ0FDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU9YO0lBRUEscUJBQ0UsOERBQUNEO1FBQUtDLFdBQVU7a0JBQ2QsNEVBQUNDO1lBQUlELFdBQVU7OzhCQUViLDhEQUFDSTtvQkFBT0osV0FBVTs7c0NBQ2hCLDhEQUFDakIsaURBQUlBOzRCQUNIb0IsTUFBSzs0QkFDTEgsV0FBVTtzQ0FDWDs7Ozs7O3NDQUdELDhEQUFDQzs0QkFBSUQsV0FBVTs7OENBQ2IsOERBQUNDOztzREFDQyw4REFBQ0g7NENBQUVFLFdBQVU7c0RBQWlFOzs7Ozs7c0RBRzlFLDhEQUFDRTs0Q0FBR0YsV0FBVTs7Z0RBQ1hS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QVksRUFBRWQsV0FBVyxDQUFDLEVBQUUwQixLQUFLcEIsRUFBRSxDQUFDLENBQUM7b0RBQzVDSyxXQUFVOzhEQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7K0JBMUJBZSxLQUFLcEIsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QzlCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vcGFnZS50c3g/OGI1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB7IHVzZVBhcmFtcyB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIjtcbmltcG9ydCB7IENBVEVHT1JJRVMsIFBBUlRTIH0gZnJvbSBcIkAvZGF0YS9ndW5idWlsZGVyUGFydHNcIjtcbmltcG9ydCB0eXBlIHsgQ2F0ZWdvcnlJZCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcblxudHlwZSBWaWV3TW9kZSA9IFwiY2FyZFwiIHwgXCJsaXN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENhdGVnb3J5UGFnZSgpIHtcbiAgY29uc3QgcGFyYW1zID0gdXNlUGFyYW1zKCk7XG4gIGNvbnN0IGNhdGVnb3J5SWQgPSBwYXJhbXMuY2F0ZWdvcnlJZCBhcyBDYXRlZ29yeUlkO1xuICBjb25zdCBbdmlld01vZGUsIHNldFZpZXdNb2RlXSA9IHVzZVN0YXRlPFZpZXdNb2RlPihcImNhcmRcIik7XG5cbiAgY29uc3QgY2F0ZWdvcnkgPSB1c2VNZW1vKFxuICAgICgpID0+IENBVEVHT1JJRVMuZmluZCgoYykgPT4gYy5pZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW2NhdGVnb3J5SWRdLFxuICApO1xuXG4gIGNvbnN0IHBhcnRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBQQVJUUy5maWx0ZXIoKHApID0+IHAuY2F0ZWdvcnlJZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW2NhdGVnb3J5SWRdLFxuICApO1xuXG4gIGlmICghY2F0ZWdvcnkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gbWF4LXctNnhsIHB4LTQgcHktNiBsZzpweS0xMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtemluYy01MCBtYi00XCI+XG4gICAgICAgICAgICAgIENhdGVnb3J5IE5vdCBGb3VuZFxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgIGhyZWY9XCIvZ3VuYnVpbGRlclwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwIGhvdmVyOnRleHQtYW1iZXItMjAwIHVuZGVybGluZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJldHVybiB0byBHdW5idWlsZGVyXG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYWluPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxtYWluIGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ibGFjayB0ZXh0LXppbmMtNTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtYXgtdy02eGwgcHgtNCBweS02IGxnOnB5LTEwXCI+XG4gICAgICAgIHsvKiBIZWFkZXIgKi99XG4gICAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwibWItNlwiPlxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBocmVmPVwiL2d1bmJ1aWxkZXJcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0zMDAgbWItNCBpbmxpbmUtYmxvY2tcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIOKGkCBCYWNrIHRvIEd1bmJ1aWxkZXJcbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBnYXAtNFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjJlbV0gdXBwZXJjYXNlIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgICBTaGFkb3cgU3RhbmRhcmRcbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LTJ4bCBtZDp0ZXh0LTN4bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0XCI+XG4gICAgICAgICAgICAgICAge2NhdGVnb3J5Lm5hbWV9IDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwXCI+UGFydHM8L3NwYW4+XG4gICAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTIgdGV4dC1zbSB0ZXh0LXppbmMtNDAwIG1heC13LXhsXCI+XG4gICAgICAgICAgICAgICAgQnJvd3NlIGFsbCBhdmFpbGFibGUge2NhdGVnb3J5Lm5hbWUudG9Mb3dlckNhc2UoKX0gb3B0aW9ucyBmb3IgeW91clxuICAgICAgICAgICAgICAgIGJ1aWxkLlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtwYXJ0cy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0yIGJvcmRlciBib3JkZXItemluYy04MDAgcm91bmRlZC1tZCBwLTEgYmctemluYy05NTAvNjBcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFZpZXdNb2RlKFwiY2FyZFwiKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB4LTMgcHktMS41IHRleHQteHMgZm9udC1tZWRpdW0gcm91bmRlZCB0cmFuc2l0aW9uLWNvbG9ycyAke1xuICAgICAgICAgICAgICAgICAgICB2aWV3TW9kZSA9PT0gXCJjYXJkXCJcbiAgICAgICAgICAgICAgICAgICAgICA/IFwiYmctemluYy04MDAgdGV4dC16aW5jLTUwXCJcbiAgICAgICAgICAgICAgICAgICAgICA6IFwidGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMzAwXCJcbiAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNhcmQgdmlld1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQ2FyZFxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0Vmlld01vZGUoXCJsaXN0XCIpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHgtMyBweS0xLjUgdGV4dC14cyBmb250LW1lZGl1bSByb3VuZGVkIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgICAgIHZpZXdNb2RlID09PSBcImxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgID8gXCJiZy16aW5jLTgwMCB0ZXh0LXppbmMtNTBcIlxuICAgICAgICAgICAgICAgICAgICAgIDogXCJ0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0zMDBcIlxuICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiTGlzdCB2aWV3XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBMaXN0XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgey8qIFBhcnRzIEdyaWQvTGlzdCAqL31cbiAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtMyBtZDpwLTRcIj5cbiAgICAgICAgICB7cGFydHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXppbmMtNTAwIHRleHQtY2VudGVyIHB5LThcIj5cbiAgICAgICAgICAgICAgTm8gcGFydHMgYXZhaWxhYmxlIGZvciB0aGlzIGNhdGVnb3J5IHlldC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICApIDogdmlld01vZGUgPT09IFwiY2FyZFwiID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC0zIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zXCI+XG4gICAgICAgICAgICAgIHtwYXJ0cy5tYXAoKHBhcnQpID0+IChcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBrZXk9e3BhcnQuaWR9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJib3JkZXIgYm9yZGVyLXppbmMtNzAwIHJvdW5kZWQtbWQgcC0zIGJnLXppbmMtOTAwLzUwIGhvdmVyOmJvcmRlci16aW5jLTYwMCB0cmFuc2l0aW9uLWNvbG9ycyBmbGV4IGZsZXgtY29sXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICBocmVmPXtgL2d1bmJ1aWxkZXI/c2VsZWN0PSR7Y2F0ZWdvcnlJZH06JHtwYXJ0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC0yIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0LmJyYW5kfSA8c3BhbiBjbGFzc05hbWU9XCJmb250LW5vcm1hbFwiPuKAlCB7cGFydC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0xIHRleHQteHMgdGV4dC16aW5jLTQwMCBsaW5lLWNsYW1wLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5ub3Rlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMCB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgJHtwYXJ0LnByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyLyR7Y2F0ZWdvcnlJZH0vJHtwYXJ0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy04MDAvNTAgcHgtMyBweS0yIHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTcwMCBob3Zlcjpib3JkZXItemluYy02MDAgdHJhbnNpdGlvbi1jb2xvcnMgdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBWaWV3IERldGFpbHNcbiAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTJcIj5cbiAgICAgICAgICAgICAge3BhcnRzLm1hcCgocGFydCkgPT4gKFxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGtleT17cGFydC5pZH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItemluYy03MDAgcm91bmRlZC1tZCBwLTMgYmctemluYy05MDAvNTAgaG92ZXI6Ym9yZGVyLXppbmMtNjAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBtaW4tdy0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlcj9zZWxlY3Q9JHtjYXRlZ29yeUlkfToke3BhcnQuaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQuYnJhbmR9IDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbm9ybWFsXCI+4oCUIHtwYXJ0Lm5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5ub3RlcyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTEgdGV4dC14cyB0ZXh0LXppbmMtNDAwIGxpbmUtY2xhbXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0Lm5vdGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMCB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgJHtwYXJ0LnByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlci8ke2NhdGVnb3J5SWR9LyR7cGFydC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtODAwLzUwIHB4LTMgcHktMS41IHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTcwMCBob3Zlcjpib3JkZXItemluYy02MDAgdHJhbnNpdGlvbi1jb2xvcnMgd2hpdGVzcGFjZS1ub3dyYXBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIFZpZXcgRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L21haW4+XG4gICk7XG59XG5cbiJdLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlU3RhdGUiLCJMaW5rIiwidXNlUGFyYW1zIiwiQ0FURUdPUklFUyIsIlBBUlRTIiwiQ2F0ZWdvcnlQYWdlIiwicGFyYW1zIiwiY2F0ZWdvcnlJZCIsInZpZXdNb2RlIiwic2V0Vmlld01vZGUiLCJjYXRlZ29yeSIsImZpbmQiLCJjIiwiaWQiLCJwYXJ0cyIsImZpbHRlciIsInAiLCJtYWluIiwiY2xhc3NOYW1lIiwiZGl2IiwiaDEiLCJocmVmIiwiaGVhZGVyIiwibmFtZSIsInNwYW4iLCJ0b0xvd2VyQ2FzZSIsImxlbmd0aCIsImJ1dHRvbiIsInR5cGUiLCJvbkNsaWNrIiwiYXJpYS1sYWJlbCIsInNlY3Rpb24iLCJtYXAiLCJwYXJ0IiwiYnJhbmQiLCJub3RlcyIsInByaWNlIiwidG9GaXhlZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./app/gunbuilder/[categoryId]/page.tsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ CategoryPage)\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 next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(ssr)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(ssr)/./data/gunbuilderParts.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\nfunction CategoryPage() {\n const params = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams)();\n const categoryId = params.categoryId;\n const [viewMode, setViewMode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"card\");\n const category = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.find((c)=>c.id === categoryId), [\n categoryId\n ]);\n const parts = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.filter((p)=>p.categoryId === categoryId), [\n categoryId\n ]);\n if (!category) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"Category Not Found\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 31,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-amber-300 hover:text-amber-200 underline\",\n children: \"Return to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 34,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 30,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 29,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 28,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: \"← Back to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 51,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between gap-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)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 59,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n category.name,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: \"Parts\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 63,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 62,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: [\n \"Browse all available \",\n category.name.toLowerCase(),\n \" options for your build.\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 65,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 58,\n columnNumber: 13\n }, this),\n parts.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2 border border-zinc-800 rounded-md p-1 bg-zinc-950/60\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setViewMode(\"card\"),\n className: `px-3 py-1.5 text-xs font-medium rounded transition-colors ${viewMode === \"card\" ? \"bg-zinc-800 text-zinc-50\" : \"text-zinc-400 hover:text-zinc-300\"}`,\n \"aria-label\": \"Card view\",\n children: \"Card\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 72,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setViewMode(\"list\"),\n className: `px-3 py-1.5 text-xs font-medium rounded transition-colors ${viewMode === \"list\" ? \"bg-zinc-800 text-zinc-50\" : \"text-zinc-400 hover:text-zinc-300\"}`,\n \"aria-label\": \"List view\",\n children: \"List\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 84,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 71,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 57,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 50,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-3 md:p-4\",\n children: parts.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500 text-center py-8\",\n children: \"No parts available for this category yet.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 104,\n columnNumber: 13\n }, this) : viewMode === \"card\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-3 md:grid-cols-2 lg:grid-cols-3\",\n children: parts.map((part)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"group relative border border-zinc-700 rounded-md p-3 bg-zinc-900/50 hover:border-amber-400/60 hover:bg-amber-400/10 transition-all duration-200 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: `/gunbuilder?select=${categoryId}:${part.id}`,\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center gap-2 mb-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-zinc-50\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-normal\",\n children: [\n \"— \",\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 121,\n columnNumber: 40\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 120,\n columnNumber: 25\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-xs text-zinc-400 line-clamp-2\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 124,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 119,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 129,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 118,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 114,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: `/gunbuilder/${categoryId}/${part.id}`,\n className: \"w-full rounded-md border border-zinc-700 bg-zinc-800/50 px-3 py-2 text-xs font-medium text-zinc-300 hover:bg-zinc-700 hover:border-zinc-600 transition-colors text-center\",\n children: \"View Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 134,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 rounded-md bg-amber-400/10 opacity-0 group-hover:opacity-100 transition-opacity duration-200 pointer-events-none flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-200 tracking-wide\",\n children: \"Add to Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 142,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 141,\n columnNumber: 19\n }, this)\n ]\n }, part.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 110,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 108,\n columnNumber: 13\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: parts.map((part)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"group relative border border-zinc-700 rounded-md p-3 bg-zinc-900/50 hover:border-amber-400/60 hover:bg-amber-400/10 transition-all duration-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 min-w-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: `/gunbuilder?select=${categoryId}:${part.id}`,\n className: \"block\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-zinc-50\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-normal\",\n children: [\n \"— \",\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 163,\n columnNumber: 40\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 162,\n columnNumber: 25\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-xs text-zinc-400 line-clamp-1\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 166,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 158,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 157,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 173,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: `/gunbuilder/${categoryId}/${part.id}`,\n className: \"rounded-md border border-zinc-700 bg-zinc-800/50 px-3 py-1.5 text-xs font-medium text-zinc-300 hover:bg-zinc-700 hover:border-zinc-600 transition-colors whitespace-nowrap\",\n children: \"View Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 176,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 172,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 156,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 rounded-md bg-amber-400/10 opacity-0 group-hover:opacity-100 transition-opacity duration-200 pointer-events-none flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-200 tracking-wide\",\n children: \"Add to Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 186,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 185,\n columnNumber: 19\n }, this)\n ]\n }, part.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 152,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 150,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 102,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 48,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 47,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBRTBDO0FBQ2I7QUFDZTtBQUNlO0FBSzVDLFNBQVNNO0lBQ3RCLE1BQU1DLFNBQVNKLDBEQUFTQTtJQUN4QixNQUFNSyxhQUFhRCxPQUFPQyxVQUFVO0lBQ3BDLE1BQU0sQ0FBQ0MsVUFBVUMsWUFBWSxHQUFHVCwrQ0FBUUEsQ0FBVztJQUVuRCxNQUFNVSxXQUFXWCw4Q0FBT0EsQ0FDdEIsSUFBTUksNkRBQVVBLENBQUNRLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxFQUFFLEtBQUtOLGFBQ3RDO1FBQUNBO0tBQVc7SUFHZCxNQUFNTyxRQUFRZiw4Q0FBT0EsQ0FDbkIsSUFBTUssd0RBQUtBLENBQUNXLE1BQU0sQ0FBQyxDQUFDQyxJQUFNQSxFQUFFVCxVQUFVLEtBQUtBLGFBQzNDO1FBQUNBO0tBQVc7SUFHZCxJQUFJLENBQUNHLFVBQVU7UUFDYixxQkFDRSw4REFBQ087WUFBS0MsV0FBVTtzQkFDZCw0RUFBQ0M7Z0JBQUlELFdBQVU7MEJBQ2IsNEVBQUNDO29CQUFJRCxXQUFVOztzQ0FDYiw4REFBQ0U7NEJBQUdGLFdBQVU7c0NBQTJDOzs7Ozs7c0NBR3pELDhEQUFDakIsaURBQUlBOzRCQUNIb0IsTUFBSzs0QkFDTEgsV0FBVTtzQ0FDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU9YO0lBRUEscUJBQ0UsOERBQUNEO1FBQUtDLFdBQVU7a0JBQ2QsNEVBQUNDO1lBQUlELFdBQVU7OzhCQUViLDhEQUFDSTtvQkFBT0osV0FBVTs7c0NBQ2hCLDhEQUFDakIsaURBQUlBOzRCQUNIb0IsTUFBSzs0QkFDTEgsV0FBVTtzQ0FDWDs7Ozs7O3NDQUdELDhEQUFDQzs0QkFBSUQsV0FBVTs7OENBQ2IsOERBQUNDOztzREFDQyw4REFBQ0g7NENBQUVFLFdBQVU7c0RBQWlFOzs7Ozs7c0RBRzlFLDhEQUFDRTs0Q0FBR0YsV0FBVTs7Z0RBQ1hS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S0FBSyxDQUFDQyxPQUFPLENBQUM7Ozs7Ozs7a0VBRXZCLDhEQUFDcEMsaURBQUlBO3dEQUNIb0IsTUFBTSxDQUFDLFlBQVksRUFBRWQsV0FBVyxDQUFDLEVBQUUwQixLQUFLcEIsRUFBRSxDQUFDLENBQUM7d0RBQzVDSyxXQUFVO2tFQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7a0RBTUwsOERBQUNDO3dDQUFJRCxXQUFVO2tEQUNiLDRFQUFDQzs0Q0FBSUQsV0FBVTtzREFBcUQ7Ozs7Ozs7Ozs7OzsrQkFqQ2pFZSxLQUFLcEIsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2QzlCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vcGFnZS50c3g/OGI1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB7IHVzZVBhcmFtcyB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIjtcbmltcG9ydCB7IENBVEVHT1JJRVMsIFBBUlRTIH0gZnJvbSBcIkAvZGF0YS9ndW5idWlsZGVyUGFydHNcIjtcbmltcG9ydCB0eXBlIHsgQ2F0ZWdvcnlJZCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcblxudHlwZSBWaWV3TW9kZSA9IFwiY2FyZFwiIHwgXCJsaXN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENhdGVnb3J5UGFnZSgpIHtcbiAgY29uc3QgcGFyYW1zID0gdXNlUGFyYW1zKCk7XG4gIGNvbnN0IGNhdGVnb3J5SWQgPSBwYXJhbXMuY2F0ZWdvcnlJZCBhcyBDYXRlZ29yeUlkO1xuICBjb25zdCBbdmlld01vZGUsIHNldFZpZXdNb2RlXSA9IHVzZVN0YXRlPFZpZXdNb2RlPihcImNhcmRcIik7XG5cbiAgY29uc3QgY2F0ZWdvcnkgPSB1c2VNZW1vKFxuICAgICgpID0+IENBVEVHT1JJRVMuZmluZCgoYykgPT4gYy5pZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW2NhdGVnb3J5SWRdLFxuICApO1xuXG4gIGNvbnN0IHBhcnRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBQQVJUUy5maWx0ZXIoKHApID0+IHAuY2F0ZWdvcnlJZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW2NhdGVnb3J5SWRdLFxuICApO1xuXG4gIGlmICghY2F0ZWdvcnkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gbWF4LXctNnhsIHB4LTQgcHktNiBsZzpweS0xMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtemluYy01MCBtYi00XCI+XG4gICAgICAgICAgICAgIENhdGVnb3J5IE5vdCBGb3VuZFxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgIGhyZWY9XCIvZ3VuYnVpbGRlclwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwIGhvdmVyOnRleHQtYW1iZXItMjAwIHVuZGVybGluZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJldHVybiB0byBHdW5idWlsZGVyXG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYWluPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxtYWluIGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ibGFjayB0ZXh0LXppbmMtNTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtYXgtdy02eGwgcHgtNCBweS02IGxnOnB5LTEwXCI+XG4gICAgICAgIHsvKiBIZWFkZXIgKi99XG4gICAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwibWItNlwiPlxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBocmVmPVwiL2d1bmJ1aWxkZXJcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0zMDAgbWItNCBpbmxpbmUtYmxvY2tcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIOKGkCBCYWNrIHRvIEd1bmJ1aWxkZXJcbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBnYXAtNFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjJlbV0gdXBwZXJjYXNlIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgICBTaGFkb3cgU3RhbmRhcmRcbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LTJ4bCBtZDp0ZXh0LTN4bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0XCI+XG4gICAgICAgICAgICAgICAge2NhdGVnb3J5Lm5hbWV9IDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwXCI+UGFydHM8L3NwYW4+XG4gICAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTIgdGV4dC1zbSB0ZXh0LXppbmMtNDAwIG1heC13LXhsXCI+XG4gICAgICAgICAgICAgICAgQnJvd3NlIGFsbCBhdmFpbGFibGUge2NhdGVnb3J5Lm5hbWUudG9Mb3dlckNhc2UoKX0gb3B0aW9ucyBmb3IgeW91clxuICAgICAgICAgICAgICAgIGJ1aWxkLlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtwYXJ0cy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0yIGJvcmRlciBib3JkZXItemluYy04MDAgcm91bmRlZC1tZCBwLTEgYmctemluYy05NTAvNjBcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFZpZXdNb2RlKFwiY2FyZFwiKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB4LTMgcHktMS41IHRleHQteHMgZm9udC1tZWRpdW0gcm91bmRlZCB0cmFuc2l0aW9uLWNvbG9ycyAke1xuICAgICAgICAgICAgICAgICAgICB2aWV3TW9kZSA9PT0gXCJjYXJkXCJcbiAgICAgICAgICAgICAgICAgICAgICA/IFwiYmctemluYy04MDAgdGV4dC16aW5jLTUwXCJcbiAgICAgICAgICAgICAgICAgICAgICA6IFwidGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMzAwXCJcbiAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNhcmQgdmlld1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQ2FyZFxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0Vmlld01vZGUoXCJsaXN0XCIpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHgtMyBweS0xLjUgdGV4dC14cyBmb250LW1lZGl1bSByb3VuZGVkIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgICAgIHZpZXdNb2RlID09PSBcImxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgID8gXCJiZy16aW5jLTgwMCB0ZXh0LXppbmMtNTBcIlxuICAgICAgICAgICAgICAgICAgICAgIDogXCJ0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0zMDBcIlxuICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiTGlzdCB2aWV3XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBMaXN0XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgey8qIFBhcnRzIEdyaWQvTGlzdCAqL31cbiAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtMyBtZDpwLTRcIj5cbiAgICAgICAgICB7cGFydHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXppbmMtNTAwIHRleHQtY2VudGVyIHB5LThcIj5cbiAgICAgICAgICAgICAgTm8gcGFydHMgYXZhaWxhYmxlIGZvciB0aGlzIGNhdGVnb3J5IHlldC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICApIDogdmlld01vZGUgPT09IFwiY2FyZFwiID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC0zIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zXCI+XG4gICAgICAgICAgICAgIHtwYXJ0cy5tYXAoKHBhcnQpID0+IChcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBrZXk9e3BhcnQuaWR9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJncm91cCByZWxhdGl2ZSBib3JkZXIgYm9yZGVyLXppbmMtNzAwIHJvdW5kZWQtbWQgcC0zIGJnLXppbmMtOTAwLzUwIGhvdmVyOmJvcmRlci1hbWJlci00MDAvNjAgaG92ZXI6YmctYW1iZXItNDAwLzEwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCBmbGV4IGZsZXgtY29sXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICBocmVmPXtgL2d1bmJ1aWxkZXI/c2VsZWN0PSR7Y2F0ZWdvcnlJZH06JHtwYXJ0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC0yIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0LmJyYW5kfSA8c3BhbiBjbGFzc05hbWU9XCJmb250LW5vcm1hbFwiPuKAlCB7cGFydC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0xIHRleHQteHMgdGV4dC16aW5jLTQwMCBsaW5lLWNsYW1wLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5ub3Rlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMCB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgJHtwYXJ0LnByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyLyR7Y2F0ZWdvcnlJZH0vJHtwYXJ0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy04MDAvNTAgcHgtMyBweS0yIHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTcwMCBob3Zlcjpib3JkZXItemluYy02MDAgdHJhbnNpdGlvbi1jb2xvcnMgdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBWaWV3IERldGFpbHNcbiAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgIHsvKiBIb3ZlciBPdmVybGF5ICovfVxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIHJvdW5kZWQtbWQgYmctYW1iZXItNDAwLzEwIG9wYWNpdHktMCBncm91cC1ob3ZlcjpvcGFjaXR5LTEwMCB0cmFuc2l0aW9uLW9wYWNpdHkgZHVyYXRpb24tMjAwIHBvaW50ZXItZXZlbnRzLW5vbmUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0yMDAgdHJhY2tpbmctd2lkZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIEFkZCB0byBCdWlsZFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICAgICAgICB7cGFydHMubWFwKChwYXJ0KSA9PiAoXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAga2V5PXtwYXJ0LmlkfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZ3JvdXAgcmVsYXRpdmUgYm9yZGVyIGJvcmRlci16aW5jLTcwMCByb3VuZGVkLW1kIHAtMyBiZy16aW5jLTkwMC81MCBob3Zlcjpib3JkZXItYW1iZXItNDAwLzYwIGhvdmVyOmJnLWFtYmVyLTQwMC8xMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG1pbi13LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyP3NlbGVjdD0ke2NhdGVnb3J5SWR9OiR7cGFydC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5icmFuZH0gPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1ub3JtYWxcIj7igJQge3BhcnQubmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0Lm5vdGVzICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LXhzIHRleHQtemluYy00MDAgbGluZS1jbGFtcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMzAwIHdoaXRlc3BhY2Utbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAke3BhcnQucHJpY2UudG9GaXhlZCgyKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyLyR7Y2F0ZWdvcnlJZH0vJHtwYXJ0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy04MDAvNTAgcHgtMyBweS0xLjUgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtMzAwIGhvdmVyOmJnLXppbmMtNzAwIGhvdmVyOmJvcmRlci16aW5jLTYwMCB0cmFuc2l0aW9uLWNvbG9ycyB3aGl0ZXNwYWNlLW5vd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgVmlldyBEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgey8qIEhvdmVyIE92ZXJsYXkgKi99XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgcm91bmRlZC1tZCBiZy1hbWJlci00MDAvMTAgb3BhY2l0eS0wIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi0yMDAgcG9pbnRlci1ldmVudHMtbm9uZSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTIwMCB0cmFja2luZy13aWRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQWRkIHRvIEJ1aWxkXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYWluPlxuICApO1xufVxuXG4iXSwibmFtZXMiOlsidXNlTWVtbyIsInVzZVN0YXRlIiwiTGluayIsInVzZVBhcmFtcyIsIkNBVEVHT1JJRVMiLCJQQVJUUyIsIkNhdGVnb3J5UGFnZSIsInBhcmFtcyIsImNhdGVnb3J5SWQiLCJ2aWV3TW9kZSIsInNldFZpZXdNb2RlIiwiY2F0ZWdvcnkiLCJmaW5kIiwiYyIsImlkIiwicGFydHMiLCJmaWx0ZXIiLCJwIiwibWFpbiIsImNsYXNzTmFtZSIsImRpdiIsImgxIiwiaHJlZiIsImhlYWRlciIsIm5hbWUiLCJzcGFuIiwidG9Mb3dlckNhc2UiLCJsZW5ndGgiLCJidXR0b24iLCJ0eXBlIiwib25DbGljayIsImFyaWEtbGFiZWwiLCJzZWN0aW9uIiwibWFwIiwicGFydCIsImJyYW5kIiwibm90ZXMiLCJwcmljZSIsInRvRml4ZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./app/gunbuilder/[categoryId]/page.tsx\n"); /***/ }), diff --git a/.next/server/app/gunbuilder/[categoryId]/page_client-reference-manifest.js b/.next/server/app/gunbuilder/[categoryId]/page_client-reference-manifest.js index 4c3c409..2973ed3 100644 --- a/.next/server/app/gunbuilder/[categoryId]/page_client-reference-manifest.js +++ b/.next/server/app/gunbuilder/[categoryId]/page_client-reference-manifest.js @@ -1 +1 @@ -globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/gunbuilder/[categoryId]/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./node_modules/next/dist/client/link.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/link.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/page.tsx","name":"*","chunks":["app/gunbuilder/page","static/chunks/app/gunbuilder/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":["app/gunbuilder/[categoryId]/page","static/chunks/app/gunbuilder/%5BcategoryId%5D/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/sean/Dev/gunbuilder-prototype/":[],"/Users/sean/Dev/gunbuilder-prototype/app/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/layout":["static/css/app/layout.css"],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page":[]}} \ No newline at end of file +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/gunbuilder/[categoryId]/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./node_modules/next/dist/client/link.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/link.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/build/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/build/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/page.tsx","name":"*","chunks":["app/gunbuilder/page","static/chunks/app/gunbuilder/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":["app/gunbuilder/[categoryId]/page","static/chunks/app/gunbuilder/%5BcategoryId%5D/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/build/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/sean/Dev/gunbuilder-prototype/":[],"/Users/sean/Dev/gunbuilder-prototype/app/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/layout":["static/css/app/layout.css"],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page":[]}} \ No newline at end of file diff --git a/.next/server/app/gunbuilder/build/page.js b/.next/server/app/gunbuilder/build/page.js new file mode 100644 index 0000000..6f837e3 --- /dev/null +++ b/.next/server/app/gunbuilder/build/page.js @@ -0,0 +1,216 @@ +/* + * 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/gunbuilder/build/page"; +exports.ids = ["app/gunbuilder/build/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"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&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%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&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?d969\");\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: [\n 'gunbuilder',\n {\n children: [\n 'build',\n {\n children: ['__PAGE__', {}, {\n page: [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/gunbuilder/build/page.tsx */ \"(rsc)/./app/gunbuilder/build/page.tsx\")), \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\"],\n \n }]\n },\n {\n \n \n }\n ]\n },\n {\n \n \n }\n ]\n },\n {\n 'layout': [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/layout.tsx */ \"(rsc)/./app/layout.tsx\")), \"/Users/sean/Dev/gunbuilder-prototype/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 \n }\n ]\n }.children;\nconst pages = [\"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\"];\n\n\nconst __next_app_require__ = __webpack_require__\nconst __next_app_load_chunk__ = () => Promise.resolve()\nconst originalPathname = \"/gunbuilder/build/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: \"/gunbuilder/build/page\",\n pathname: \"/gunbuilder/build\",\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/bmFtZT1hcHAlMkZndW5idWlsZGVyJTJGYnVpbGQlMkZwYWdlJnBhZ2U9JTJGZ3VuYnVpbGRlciUyRmJ1aWxkJTJGcGFnZSZhcHBQYXRocz0lMkZndW5idWlsZGVyJTJGYnVpbGQlMkZwYWdlJnBhZ2VQYXRoPXByaXZhdGUtbmV4dC1hcHAtZGlyJTJGZ3VuYnVpbGRlciUyRmJ1aWxkJTJGcGFnZS50c3gmYXBwRGlyPSUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGYXBwJnBhZ2VFeHRlbnNpb25zPXRzeCZwYWdlRXh0ZW5zaW9ucz10cyZwYWdlRXh0ZW5zaW9ucz1qc3gmcGFnZUV4dGVuc2lvbnM9anMmcm9vdERpcj0lMkZVc2VycyUyRnNlYW4lMkZEZXYlMkZndW5idWlsZGVyLXByb3RvdHlwZSZpc0Rldj10cnVlJnRzY29uZmlnUGF0aD10c2NvbmZpZy5qc29uJmJhc2VQYXRoPSZhc3NldFByZWZpeD0mbmV4dENvbmZpZ091dHB1dD0mcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCEiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGFBQWEsc0JBQXNCO0FBQ2lFO0FBQ3JDO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQyx1QkFBdUIsMEtBQXVHO0FBQzlIO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSx5QkFBeUIsNElBQXdGO0FBQ2pILG9CQUFvQiwwTkFBZ0Y7QUFDcEc7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ3VCO0FBQzZEO0FBQ3BGLDZCQUE2QixtQkFBbUI7QUFDaEQ7QUFDTztBQUNBO0FBQ1A7QUFDQTtBQUNBO0FBQ3VEO0FBQ3ZEO0FBQ08sd0JBQXdCLDhHQUFrQjtBQUNqRDtBQUNBLGNBQWMseUVBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8/Y2M1MiJdLCJzb3VyY2VzQ29udGVudCI6WyJcIlRVUkJPUEFDSyB7IHRyYW5zaXRpb246IG5leHQtc3NyIH1cIjtcbmltcG9ydCB7IEFwcFBhZ2VSb3V0ZU1vZHVsZSB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2Z1dHVyZS9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL21vZHVsZS5jb21waWxlZFwiO1xuaW1wb3J0IHsgUm91dGVLaW5kIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvZnV0dXJlL3JvdXRlLWtpbmRcIjtcbi8vIFdlIGluamVjdCB0aGUgdHJlZSBhbmQgcGFnZXMgaGVyZSBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlbSBpbiB0aGUgcm91dGVcbi8vIG1vZHVsZS5cbmNvbnN0IHRyZWUgPSB7XG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICcnLFxuICAgICAgICB7XG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICdndW5idWlsZGVyJyxcbiAgICAgICAge1xuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAnYnVpbGQnLFxuICAgICAgICB7XG4gICAgICAgIGNoaWxkcmVuOiBbJ19fUEFHRV9fJywge30sIHtcbiAgICAgICAgICBwYWdlOiBbKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvYXBwL2d1bmJ1aWxkZXIvYnVpbGQvcGFnZS50c3hcIiksIFwiL1VzZXJzL3NlYW4vRGV2L2d1bmJ1aWxkZXItcHJvdG90eXBlL2FwcC9ndW5idWlsZGVyL2J1aWxkL3BhZ2UudHN4XCJdLFxuICAgICAgICAgIFxuICAgICAgICB9XVxuICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICBcbiAgICAgICAgXG4gICAgICB9XG4gICAgICBdXG4gICAgICB9LFxuICAgICAgICB7XG4gICAgICAgIFxuICAgICAgICBcbiAgICAgIH1cbiAgICAgIF1cbiAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgJ2xheW91dCc6IFsoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9zZWFuL0Rldi9ndW5idWlsZGVyLXByb3RvdHlwZS9hcHAvbGF5b3V0LnRzeFwiKSwgXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvYXBwL2xheW91dC50c3hcIl0sXG4nbm90LWZvdW5kJzogWygpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvclwiKSwgXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kLWVycm9yXCJdLFxuICAgICAgICBcbiAgICAgIH1cbiAgICAgIF1cbiAgICAgIH0uY2hpbGRyZW47XG5jb25zdCBwYWdlcyA9IFtcIi9Vc2Vycy9zZWFuL0Rldi9ndW5idWlsZGVyLXByb3RvdHlwZS9hcHAvZ3VuYnVpbGRlci9idWlsZC9wYWdlLnRzeFwiXTtcbmV4cG9ydCB7IHRyZWUsIHBhZ2VzIH07XG5leHBvcnQgeyBkZWZhdWx0IGFzIEdsb2JhbEVycm9yIH0gZnJvbSBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9lcnJvci1ib3VuZGFyeVwiO1xuY29uc3QgX19uZXh0X2FwcF9yZXF1aXJlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fXG5jb25zdCBfX25leHRfYXBwX2xvYWRfY2h1bmtfXyA9ICgpID0+IFByb21pc2UucmVzb2x2ZSgpXG5leHBvcnQgY29uc3Qgb3JpZ2luYWxQYXRobmFtZSA9IFwiL2d1bmJ1aWxkZXIvYnVpbGQvcGFnZVwiO1xuZXhwb3J0IGNvbnN0IF9fbmV4dF9hcHBfXyA9IHtcbiAgICByZXF1aXJlOiBfX25leHRfYXBwX3JlcXVpcmVfXyxcbiAgICBsb2FkQ2h1bms6IF9fbmV4dF9hcHBfbG9hZF9jaHVua19fXG59O1xuZXhwb3J0ICogZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9lbnRyeS1iYXNlXCI7XG4vLyBDcmVhdGUgYW5kIGV4cG9ydCB0aGUgcm91dGUgbW9kdWxlIHRoYXQgd2lsbCBiZSBjb25zdW1lZC5cbmV4cG9ydCBjb25zdCByb3V0ZU1vZHVsZSA9IG5ldyBBcHBQYWdlUm91dGVNb2R1bGUoe1xuICAgIGRlZmluaXRpb246IHtcbiAgICAgICAga2luZDogUm91dGVLaW5kLkFQUF9QQUdFLFxuICAgICAgICBwYWdlOiBcIi9ndW5idWlsZGVyL2J1aWxkL3BhZ2VcIixcbiAgICAgICAgcGF0aG5hbWU6IFwiL2d1bmJ1aWxkZXIvYnVpbGRcIixcbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmVuJ3QgdXNlZCBpbiBwcm9kdWN0aW9uLlxuICAgICAgICBidW5kbGVQYXRoOiBcIlwiLFxuICAgICAgICBmaWxlbmFtZTogXCJcIixcbiAgICAgICAgYXBwUGF0aHM6IFtdXG4gICAgfSxcbiAgICB1c2VybGFuZDoge1xuICAgICAgICBsb2FkZXJUcmVlOiB0cmVlXG4gICAgfVxufSk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwcC1wYWdlLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!\n"); + +/***/ }), + +/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true!": +/*!********************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***! + \********************************************************************************************************************************************************************************************************************************/ +/***/ (() => { + + + +/***/ }), + +/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!": +/*!**************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***! + \**************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/gunbuilder/build/page.tsx */ \"(ssr)/./app/gunbuilder/build/page.tsx\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGYXBwJTJGZ3VuYnVpbGRlciUyRmJ1aWxkJTJGcGFnZS50c3glMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0Qmc2VydmVyPXRydWUhIiwibWFwcGluZ3MiOiJBQUFBLDBLQUF1RyIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLz9lYzM4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3NlYW4vRGV2L2d1bmJ1aWxkZXItcHJvdG90eXBlL2FwcC9ndW5idWlsZGVyL2J1aWxkL3BhZ2UudHN4XCIpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n"); + +/***/ }), + +/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!": +/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&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));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/client-page.js */ \"(ssr)/./node_modules/next/dist/client/components/client-page.js\", 23));\n;\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));\n;\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));\n;\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));\n;\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));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGYXBwLXJvdXRlci5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRnNlYW4lMkZEZXYlMkZndW5idWlsZGVyLXByb3RvdHlwZSUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmNsaWVudC1wYWdlLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGZXJyb3ItYm91bmRhcnkuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZzZWFuJTJGRGV2JTJGZ3VuYnVpbGRlci1wcm90b3R5cGUlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZsYXlvdXQtcm91dGVyLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGbm90LWZvdW5kLWJvdW5kYXJ5LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsa09BQWdJO0FBQ2hJO0FBQ0Esb09BQWlJO0FBQ2pJO0FBQ0EsME9BQW9JO0FBQ3BJO0FBQ0Esd09BQW1JO0FBQ25JO0FBQ0Esa1BBQXdJO0FBQ3hJO0FBQ0Esc1FBQWtKIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvPzdiMjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtcGFnZS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3NlYW4vRGV2L2d1bmJ1aWxkZXItcHJvdG90eXBlL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnkuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9zZWFuL0Rldi9ndW5idWlsZGVyLXByb3RvdHlwZS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2xheW91dC1yb3V0ZXIuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9zZWFuL0Rldi9ndW5idWlsZGVyLXByb3RvdHlwZS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1ib3VuZGFyeS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3NlYW4vRGV2L2d1bmJ1aWxkZXItcHJvdG90eXBlL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qc1wiKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n"); + +/***/ }), + +/***/ "(ssr)/./app/gunbuilder/build/page.tsx": +/*!***************************************!*\ + !*** ./app/gunbuilder/build/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 */ BuildDetailsPage)\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 next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(ssr)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(ssr)/./data/gunbuilderParts.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\nconst STORAGE_KEY = \"gunbuilder-build-state\";\n// Encode build state to URL-friendly string\nfunction encodeBuildState(build) {\n const entries = Object.entries(build).filter(([_, partId])=>partId).map(([categoryId, partId])=>`${categoryId}:${partId}`).join(\",\");\n return btoa(entries);\n}\n// Decode URL string to build state\nfunction decodeBuildState(encoded) {\n try {\n const decoded = atob(encoded);\n const build = {};\n decoded.split(\",\").forEach((entry)=>{\n const [categoryId, partId] = entry.split(\":\");\n if (categoryId && partId) {\n build[categoryId] = partId;\n }\n });\n return build;\n } catch {\n return {};\n }\n}\nfunction BuildDetailsPage() {\n const searchParams = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useSearchParams)();\n const router = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useRouter)();\n const [build, setBuild] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});\n const [shareUrl, setShareUrl] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [copied, setCopied] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n // Load build from URL params or localStorage\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const buildParam = searchParams.get(\"build\");\n if (buildParam) {\n const decoded = decodeBuildState(buildParam);\n setBuild(decoded);\n // Also save to localStorage\n localStorage.setItem(STORAGE_KEY, JSON.stringify(decoded));\n } else if (false) {}\n }, [\n searchParams\n ]);\n // Generate shareable URL\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (false) {}\n }, [\n build\n ]);\n const selectedParts = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n return Object.entries(build).map(([categoryId, partId])=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId)).filter(Boolean);\n }, [\n build\n ]);\n const totalPrice = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>selectedParts.reduce((sum, p)=>sum + p.price, 0), [\n selectedParts\n ]);\n const handleCopyLink = async ()=>{\n if (shareUrl) {\n try {\n await navigator.clipboard.writeText(shareUrl);\n setCopied(true);\n setTimeout(()=>setCopied(false), 2000);\n } catch (err) {\n console.error(\"Failed to copy:\", err);\n }\n }\n };\n const handleShare = async ()=>{\n if (navigator.share && shareUrl) {\n try {\n await navigator.share({\n title: \"My AR-15 Build\",\n text: `Check out my AR-15 build: $${totalPrice.toFixed(2)}`,\n url: shareUrl\n });\n } catch (err) {\n // User cancelled or share failed, fall back to copy\n handleCopyLink();\n }\n } else {\n handleCopyLink();\n }\n };\n if (selectedParts.length === 0) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-4xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"No Build Selected\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 124,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-400 mb-6\",\n children: \"You need to select at least one part to view your build.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 127,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"inline-block rounded-md border border-amber-400/60 bg-amber-400/10 px-4 py-2 text-sm font-medium text-amber-200 hover:bg-amber-400/15 transition-colors\",\n children: \"Go to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 130,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 123,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 122,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 121,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: \"← Back to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 147,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-4 md:flex-row md:items-end md:justify-between\",\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)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 155,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n \"Build \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: \"Summary\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 159,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 158,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: \"Review your build, purchase parts from our affiliate partners, or share your build with others.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 161,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 154,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 md:mt-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400\",\n children: \"Total Build Price\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 168,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-semibold text-amber-300\",\n children: [\n \"$\",\n totalPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 169,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500\",\n children: [\n selectedParts.length,\n \" / \",\n _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.length,\n \" parts selected\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 172,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 167,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 153,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 146,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"mb-6 rounded-lg border border-zinc-800 bg-zinc-950/60 p-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-2\",\n children: \"Share Your Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 183,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-400\",\n children: \"Share this link to let others view your build or bookmark it to come back later.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 186,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 182,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: handleShare,\n className: \"rounded-md border border-zinc-700 bg-zinc-900/50 px-4 py-2 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors\",\n children: \"Share\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 192,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: handleCopyLink,\n className: `rounded-md border px-4 py-2 text-sm font-medium transition-colors ${copied ? \"border-green-500 bg-green-500/10 text-green-400\" : \"border-zinc-700 bg-zinc-900/50 text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600\"}`,\n children: copied ? \"Copied!\" : \"Copy Link\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 199,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 191,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 181,\n columnNumber: 11\n }, this),\n shareUrl && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 p-3 rounded-md bg-zinc-900/50 border border-zinc-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500 mb-1\",\n children: \"Shareable URL:\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 214,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-400 break-all font-mono\",\n children: shareUrl\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 215,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 213,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 180,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-4\",\n children: \"Selected Parts\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 224,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.map((category)=>{\n const selectedPartId = build[category.id];\n const part = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === selectedPartId && p.categoryId === category.id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-zinc-800 rounded-md p-4 bg-zinc-900/30\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[0.7rem] uppercase tracking-[0.16em] text-zinc-500 mb-2\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 242,\n columnNumber: 23\n }, this),\n part ? /*#__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: \"text-lg font-semibold text-zinc-50 mb-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-zinc-400\",\n children: part.brand\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 248,\n columnNumber: 29\n }, this),\n \" \",\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 247,\n columnNumber: 27\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-400 mt-1\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 252,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 flex gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: part.affiliateUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"inline-flex items-center gap-2 rounded-md border border-amber-400/60 bg-amber-400/10 px-4 py-2 text-sm font-medium text-amber-200 hover:bg-amber-400/15 transition-colors\",\n children: [\n \"Purchase from Retailer\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-4 h-4\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 270,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 264,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 257,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: `/gunbuilder/${category.id}/${part.id}`,\n className: \"inline-flex items-center rounded-md border border-zinc-700 bg-zinc-900/50 px-4 py-2 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors\",\n children: \"View Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 278,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 256,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-600\",\n children: \"Not selected\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 287,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 241,\n columnNumber: 21\n }, this),\n part && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-right\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-semibold text-amber-300\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 294,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 293,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 240,\n columnNumber: 19\n }, this)\n }, category.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 236,\n columnNumber: 17\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 228,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 223,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-6 flex flex-col gap-3 sm:flex-row sm:justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"rounded-md border border-zinc-700 bg-zinc-900/50 px-6 py-3 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors text-center\",\n children: \"Edit Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 308,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>{\n localStorage.removeItem(STORAGE_KEY);\n router.push(\"/gunbuilder\");\n },\n className: \"rounded-md border border-zinc-700 bg-zinc-900/50 px-6 py-3 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors\",\n children: \"Clear Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 315,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 314,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 307,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 144,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 143,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUNBMUR4QmEsU0FBUy9CLEVBQUU7Ozs7OzRCQWlFdEI7Ozs7Ozs7Ozs7Ozs4QkFLSiw4REFBQ3FCO29CQUFJRCxXQUFVOztzQ0FDYiw4REFBQ3ZFLGlEQUFJQTs0QkFDSDBFLE1BQUs7NEJBQ0xILFdBQVU7c0NBQ1g7Ozs7OztzQ0FHRCw4REFBQ0M7NEJBQUlELFdBQVU7c0NBQ2IsNEVBQUNRO2dDQUNDQyxNQUFLO2dDQUNMQyxTQUFTO29DQUNQL0MsYUFBYW1FLFVBQVUsQ0FBQ2hHO29DQUN4QnFCLE9BQU80RSxJQUFJLENBQUM7Z0NBQ2Q7Z0NBQ0EvQixXQUFVOzBDQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUWIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2FwcC9ndW5idWlsZGVyL2J1aWxkL3BhZ2UudHN4PzBjNmMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7IHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB7IHVzZVNlYXJjaFBhcmFtcywgdXNlUm91dGVyIH0gZnJvbSBcIm5leHQvbmF2aWdhdGlvblwiO1xuaW1wb3J0IHsgQ0FURUdPUklFUywgUEFSVFMgfSBmcm9tIFwiQC9kYXRhL2d1bmJ1aWxkZXJQYXJ0c1wiO1xuaW1wb3J0IHR5cGUgeyBDYXRlZ29yeUlkLCBQYXJ0IH0gZnJvbSBcIkAvdHlwZXMvZ3VuYnVpbGRlclwiO1xuXG50eXBlIEJ1aWxkU3RhdGUgPSBQYXJ0aWFsPFJlY29yZDxDYXRlZ29yeUlkLCBzdHJpbmc+PjsgLy8gY2F0ZWdvcnlJZCAtPiBwYXJ0SWRcblxuY29uc3QgU1RPUkFHRV9LRVkgPSBcImd1bmJ1aWxkZXItYnVpbGQtc3RhdGVcIjtcblxuLy8gRW5jb2RlIGJ1aWxkIHN0YXRlIHRvIFVSTC1mcmllbmRseSBzdHJpbmdcbmZ1bmN0aW9uIGVuY29kZUJ1aWxkU3RhdGUoYnVpbGQ6IEJ1aWxkU3RhdGUpOiBzdHJpbmcge1xuICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoYnVpbGQpXG4gICAgLmZpbHRlcigoW18sIHBhcnRJZF0pID0+IHBhcnRJZClcbiAgICAubWFwKChbY2F0ZWdvcnlJZCwgcGFydElkXSkgPT4gYCR7Y2F0ZWdvcnlJZH06JHtwYXJ0SWR9YClcbiAgICAuam9pbihcIixcIik7XG4gIHJldHVybiBidG9hKGVudHJpZXMpO1xufVxuXG4vLyBEZWNvZGUgVVJMIHN0cmluZyB0byBidWlsZCBzdGF0ZVxuZnVuY3Rpb24gZGVjb2RlQnVpbGRTdGF0ZShlbmNvZGVkOiBzdHJpbmcpOiBCdWlsZFN0YXRlIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkZWNvZGVkID0gYXRvYihlbmNvZGVkKTtcbiAgICBjb25zdCBidWlsZDogQnVpbGRTdGF0ZSA9IHt9O1xuICAgIGRlY29kZWQuc3BsaXQoXCIsXCIpLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBbY2F0ZWdvcnlJZCwgcGFydElkXSA9IGVudHJ5LnNwbGl0KFwiOlwiKTtcbiAgICAgIGlmIChjYXRlZ29yeUlkICYmIHBhcnRJZCkge1xuICAgICAgICBidWlsZFtjYXRlZ29yeUlkIGFzIENhdGVnb3J5SWRdID0gcGFydElkO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBidWlsZDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJ1aWxkRGV0YWlsc1BhZ2UoKSB7XG4gIGNvbnN0IHNlYXJjaFBhcmFtcyA9IHVzZVNlYXJjaFBhcmFtcygpO1xuICBjb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKTtcbiAgY29uc3QgW2J1aWxkLCBzZXRCdWlsZF0gPSB1c2VTdGF0ZTxCdWlsZFN0YXRlPih7fSk7XG4gIGNvbnN0IFtzaGFyZVVybCwgc2V0U2hhcmVVcmxdID0gdXNlU3RhdGU8c3RyaW5nPihcIlwiKTtcbiAgY29uc3QgW2NvcGllZCwgc2V0Q29waWVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICAvLyBMb2FkIGJ1aWxkIGZyb20gVVJMIHBhcmFtcyBvciBsb2NhbFN0b3JhZ2VcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBidWlsZFBhcmFtID0gc2VhcmNoUGFyYW1zLmdldChcImJ1aWxkXCIpO1xuICAgIGlmIChidWlsZFBhcmFtKSB7XG4gICAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlQnVpbGRTdGF0ZShidWlsZFBhcmFtKTtcbiAgICAgIHNldEJ1aWxkKGRlY29kZWQpO1xuICAgICAgLy8gQWxzbyBzYXZlIHRvIGxvY2FsU3RvcmFnZVxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oU1RPUkFHRV9LRVksIEpTT04uc3RyaW5naWZ5KGRlY29kZWQpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIC8vIExvYWQgZnJvbSBsb2NhbFN0b3JhZ2VcbiAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKTtcbiAgICAgIGlmIChzdG9yZWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHN0b3JlZCk7XG4gICAgICAgICAgc2V0QnVpbGQocGFyc2VkKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSW52YWxpZCBzdG9yZWQgZGF0YVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCBbc2VhcmNoUGFyYW1zXSk7XG5cbiAgLy8gR2VuZXJhdGUgc2hhcmVhYmxlIFVSTFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIE9iamVjdC5rZXlzKGJ1aWxkKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBlbmNvZGVkID0gZW5jb2RlQnVpbGRTdGF0ZShidWlsZCk7XG4gICAgICBjb25zdCB1cmwgPSBgJHt3aW5kb3cubG9jYXRpb24ub3JpZ2lufS9ndW5idWlsZGVyL2J1aWxkP2J1aWxkPSR7ZW5jb2RlZH1gO1xuICAgICAgc2V0U2hhcmVVcmwodXJsKTtcbiAgICB9XG4gIH0sIFtidWlsZF0pO1xuXG4gIGNvbnN0IHNlbGVjdGVkUGFydHM6IFBhcnRbXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhidWlsZClcbiAgICAgIC5tYXAoKFtjYXRlZ29yeUlkLCBwYXJ0SWRdKSA9PlxuICAgICAgICBQQVJUUy5maW5kKChwKSA9PiBwLmlkID09PSBwYXJ0SWQgJiYgcC5jYXRlZ29yeUlkID09PSBjYXRlZ29yeUlkKSxcbiAgICAgIClcbiAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgUGFydFtdO1xuICB9LCBbYnVpbGRdKTtcblxuICBjb25zdCB0b3RhbFByaWNlID0gdXNlTWVtbyhcbiAgICAoKSA9PiBzZWxlY3RlZFBhcnRzLnJlZHVjZSgoc3VtLCBwKSA9PiBzdW0gKyBwLnByaWNlLCAwKSxcbiAgICBbc2VsZWN0ZWRQYXJ0c10sXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ29weUxpbmsgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKHNoYXJlVXJsKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChzaGFyZVVybCk7XG4gICAgICAgIHNldENvcGllZCh0cnVlKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRDb3BpZWQoZmFsc2UpLCAyMDAwKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvcHk6XCIsIGVycik7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVNoYXJlID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChuYXZpZ2F0b3Iuc2hhcmUgJiYgc2hhcmVVcmwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG5hdmlnYXRvci5zaGFyZSh7XG4gICAgICAgICAgdGl0bGU6IFwiTXkgQVItMTUgQnVpbGRcIixcbiAgICAgICAgICB0ZXh0OiBgQ2hlY2sgb3V0IG15IEFSLTE1IGJ1aWxkOiAkJHt0b3RhbFByaWNlLnRvRml4ZWQoMil9YCxcbiAgICAgICAgICB1cmw6IHNoYXJlVXJsLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBVc2VyIGNhbmNlbGxlZCBvciBzaGFyZSBmYWlsZWQsIGZhbGwgYmFjayB0byBjb3B5XG4gICAgICAgIGhhbmRsZUNvcHlMaW5rKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZUNvcHlMaW5rKCk7XG4gICAgfVxuICB9O1xuXG4gIGlmIChzZWxlY3RlZFBhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICA8bWFpbiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctYmxhY2sgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtYXgtdy00eGwgcHgtNCBweS02IGxnOnB5LTEwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwIG1iLTRcIj5cbiAgICAgICAgICAgICAgTm8gQnVpbGQgU2VsZWN0ZWRcbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtemluYy00MDAgbWItNlwiPlxuICAgICAgICAgICAgICBZb3UgbmVlZCB0byBzZWxlY3QgYXQgbGVhc3Qgb25lIHBhcnQgdG8gdmlldyB5b3VyIGJ1aWxkLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9ndW5idWlsZGVyXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lLWJsb2NrIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1hbWJlci00MDAvNjAgYmctYW1iZXItNDAwLzEwIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtYW1iZXItMjAwIGhvdmVyOmJnLWFtYmVyLTQwMC8xNSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEdvIHRvIEd1bmJ1aWxkZXJcbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21haW4+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIG1heC13LTZ4bCBweC00IHB5LTYgbGc6cHktMTBcIj5cbiAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJtYi02XCI+XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGhyZWY9XCIvZ3VuYnVpbGRlclwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy00MDAgaG92ZXI6dGV4dC16aW5jLTMwMCBtYi00IGlubGluZS1ibG9ja1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAg4oaQIEJhY2sgdG8gR3VuYnVpbGRlclxuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgZ2FwLTQgbWQ6ZmxleC1yb3cgbWQ6aXRlbXMtZW5kIG1kOmp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjJlbV0gdXBwZXJjYXNlIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgICBTaGFkb3cgU3RhbmRhcmRcbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LTJ4bCBtZDp0ZXh0LTN4bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0XCI+XG4gICAgICAgICAgICAgICAgQnVpbGQgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDBcIj5TdW1tYXJ5PC9zcGFuPlxuICAgICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0yIHRleHQtc20gdGV4dC16aW5jLTQwMCBtYXgtdy14bFwiPlxuICAgICAgICAgICAgICAgIFJldmlldyB5b3VyIGJ1aWxkLCBwdXJjaGFzZSBwYXJ0cyBmcm9tIG91ciBhZmZpbGlhdGUgcGFydG5lcnMsIG9yXG4gICAgICAgICAgICAgICAgc2hhcmUgeW91ciBidWlsZCB3aXRoIG90aGVycy5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMyBtZDptdC0wXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNDAwXCI+VG90YWwgQnVpbGQgUHJpY2U8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMzAwXCI+XG4gICAgICAgICAgICAgICAgJHt0b3RhbFByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICAgIHtzZWxlY3RlZFBhcnRzLmxlbmd0aH0gLyB7Q0FURUdPUklFUy5sZW5ndGh9IHBhcnRzIHNlbGVjdGVkXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIHsvKiBTaGFyZSBTZWN0aW9uICovfVxuICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJtYi02IHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTk1MC82MCBwLTRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgZ2FwLTMgc206ZmxleC1yb3cgc206aXRlbXMtY2VudGVyIHNtOmp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4xNmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTQwMCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgU2hhcmUgWW91ciBCdWlsZFxuICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtemluYy00MDBcIj5cbiAgICAgICAgICAgICAgICBTaGFyZSB0aGlzIGxpbmsgdG8gbGV0IG90aGVycyB2aWV3IHlvdXIgYnVpbGQgb3IgYm9va21hcmsgaXQgdG9cbiAgICAgICAgICAgICAgICBjb21lIGJhY2sgbGF0ZXIuXG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTaGFyZX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05MDAvNTAgcHgtNCBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy02MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgU2hhcmVcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDb3B5TGlua31cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Byb3VuZGVkLW1kIGJvcmRlciBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9ycyAke1xuICAgICAgICAgICAgICAgICAgY29waWVkXG4gICAgICAgICAgICAgICAgICAgID8gXCJib3JkZXItZ3JlZW4tNTAwIGJnLWdyZWVuLTUwMC8xMCB0ZXh0LWdyZWVuLTQwMFwiXG4gICAgICAgICAgICAgICAgICAgIDogXCJib3JkZXItemluYy03MDAgYmctemluYy05MDAvNTAgdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy02MDBcIlxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2NvcGllZCA/IFwiQ29waWVkIVwiIDogXCJDb3B5IExpbmtcIn1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7c2hhcmVVcmwgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0zIHAtMyByb3VuZGVkLW1kIGJnLXppbmMtOTAwLzUwIGJvcmRlciBib3JkZXItemluYy04MDBcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIG1iLTFcIj5TaGFyZWFibGUgVVJMOjwvcD5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNDAwIGJyZWFrLWFsbCBmb250LW1vbm9cIj5cbiAgICAgICAgICAgICAgICB7c2hhcmVVcmx9XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICB7LyogQnVpbGQgUGFydHMgKi99XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTk1MC82MCBwLTQgbWQ6cC02XCI+XG4gICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4xNmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTQwMCBtYi00XCI+XG4gICAgICAgICAgICBTZWxlY3RlZCBQYXJ0c1xuICAgICAgICAgIDwvaDI+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktNFwiPlxuICAgICAgICAgICAge0NBVEVHT1JJRVMubWFwKChjYXRlZ29yeSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFBhcnRJZCA9IGJ1aWxkW2NhdGVnb3J5LmlkXTtcbiAgICAgICAgICAgICAgY29uc3QgcGFydCA9IFBBUlRTLmZpbmQoXG4gICAgICAgICAgICAgICAgKHApID0+IHAuaWQgPT09IHNlbGVjdGVkUGFydElkICYmIHAuY2F0ZWdvcnlJZCA9PT0gY2F0ZWdvcnkuaWQsXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBrZXk9e2NhdGVnb3J5LmlkfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci16aW5jLTgwMCByb3VuZGVkLW1kIHAtNCBiZy16aW5jLTkwMC8zMFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1bMC43cmVtXSB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMTZlbV0gdGV4dC16aW5jLTUwMCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2F0ZWdvcnkubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICB7cGFydCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtemluYy01MCBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC16aW5jLTQwMFwiPntwYXJ0LmJyYW5kfTwvc3Bhbj57XCIgXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0Lm5vdGVzICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtemluYy00MDAgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTMgZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtwYXJ0LmFmZmlsaWF0ZVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYW1iZXItNDAwLzYwIGJnLWFtYmVyLTQwMC8xMCBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWFtYmVyLTIwMCBob3ZlcjpiZy1hbWJlci00MDAvMTUgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1cmNoYXNlIGZyb20gUmV0YWlsZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy00IGgtNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwIDZINmEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJ2LTRNMTQgNGg2bTAgMHY2bTAtNkwxMCAxNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlci8ke2NhdGVnb3J5LmlkfS8ke3BhcnQuaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05MDAvNTAgcHgtNCBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy02MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZXcgRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtemluYy02MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAge3BhcnQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMzAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICR7cGFydC5wcmljZS50b0ZpeGVkKDIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgey8qIEFjdGlvbnMgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNiBmbGV4IGZsZXgtY29sIGdhcC0zIHNtOmZsZXgtcm93IHNtOmp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBocmVmPVwiL2d1bmJ1aWxkZXJcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwicm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzUwIHB4LTYgcHktMyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtemluYy0zMDAgaG92ZXI6YmctemluYy04MDAgaG92ZXI6Ym9yZGVyLXppbmMtNjAwIHRyYW5zaXRpb24tY29sb3JzIHRleHQtY2VudGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBFZGl0IEJ1aWxkXG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFNUT1JBR0VfS0VZKTtcbiAgICAgICAgICAgICAgICByb3V0ZXIucHVzaChcIi9ndW5idWlsZGVyXCIpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05MDAvNTAgcHgtNiBweS0zIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy02MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBDbGVhciBCdWlsZFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tYWluPlxuICApO1xufVxuXG4iXSwibmFtZXMiOlsidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiTGluayIsInVzZVNlYXJjaFBhcmFtcyIsInVzZVJvdXRlciIsIkNBVEVHT1JJRVMiLCJQQVJUUyIsIlNUT1JBR0VfS0VZIiwiZW5jb2RlQnVpbGRTdGF0ZSIsImJ1aWxkIiwiZW50cmllcyIsIk9iamVjdCIsImZpbHRlciIsIl8iLCJwYXJ0SWQiLCJtYXAiLCJjYXRlZ29yeUlkIiwiam9pbiIsImJ0b2EiLCJkZWNvZGVCdWlsZFN0YXRlIiwiZW5jb2RlZCIsImRlY29kZWQiLCJhdG9iIiwic3BsaXQiLCJmb3JFYWNoIiwiZW50cnkiLCJCdWlsZERldGFpbHNQYWdlIiwic2VhcmNoUGFyYW1zIiwicm91dGVyIiwic2V0QnVpbGQiLCJzaGFyZVVybCIsInNldFNoYXJlVXJsIiwiY29waWVkIiwic2V0Q29waWVkIiwiYnVpbGRQYXJhbSIsImdldCIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJKU09OIiwic3RyaW5naWZ5Iiwic3RvcmVkIiwiZ2V0SXRlbSIsInBhcnNlZCIsInBhcnNlIiwia2V5cyIsImxlbmd0aCIsInVybCIsIndpbmRvdyIsImxvY2F0aW9uIiwib3JpZ2luIiwic2VsZWN0ZWRQYXJ0cyIsImZpbmQiLCJwIiwiaWQiLCJCb29sZWFuIiwidG90YWxQcmljZSIsInJlZHVjZSIsInN1bSIsInByaWNlIiwiaGFuZGxlQ29weUxpbmsiLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJzZXRUaW1lb3V0IiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwiaGFuZGxlU2hhcmUiLCJzaGFyZSIsInRpdGxlIiwidGV4dCIsInRvRml4ZWQiLCJtYWluIiwiY2xhc3NOYW1lIiwiZGl2IiwiaDEiLCJocmVmIiwiaGVhZGVyIiwic3BhbiIsInNlY3Rpb24iLCJoMiIsImJ1dHRvbiIsInR5cGUiLCJvbkNsaWNrIiwiY2F0ZWdvcnkiLCJzZWxlY3RlZFBhcnRJZCIsInBhcnQiLCJuYW1lIiwiYnJhbmQiLCJub3RlcyIsImEiLCJhZmZpbGlhdGVVcmwiLCJ0YXJnZXQiLCJyZWwiLCJzdmciLCJmaWxsIiwic3Ryb2tlIiwidmlld0JveCIsInBhdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImQiLCJyZW1vdmVJdGVtIiwicHVzaCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./app/gunbuilder/build/page.tsx\n"); + +/***/ }), + +/***/ "(ssr)/./data/gunbuilderParts.ts": +/*!*********************************!*\ + !*** ./data/gunbuilderParts.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 */ CATEGORIES: () => (/* binding */ CATEGORIES),\n/* harmony export */ PARTS: () => (/* binding */ PARTS)\n/* harmony export */ });\nconst CATEGORIES = [\n {\n id: \"lower\",\n name: \"Lower Receiver\"\n },\n {\n id: \"upper\",\n name: \"Upper Receiver\"\n },\n {\n id: \"barrel\",\n name: \"Barrel\"\n },\n {\n id: \"handguard\",\n name: \"Handguard\"\n },\n {\n id: \"stock\",\n name: \"Stock\"\n },\n {\n id: \"optic\",\n name: \"Optic\"\n }\n];\nconst PARTS = [\n {\n id: \"lower-aero-m4e1\",\n name: \"M4E1 Stripped Lower Receiver\",\n brand: \"Aero Precision\",\n categoryId: \"lower\",\n price: 129.99,\n affiliateUrl: \"https://example.com/aero-m4e1\",\n notes: \"Forged 7075-T6, threaded bolt catch\"\n },\n {\n id: \"lower-solgw\",\n name: \"Loyal 9 Stripped Lower\",\n brand: \"Sons of Liberty Gun Works\",\n categoryId: \"lower\",\n price: 189.0,\n affiliateUrl: \"https://example.com/solgw-lower\"\n },\n {\n id: \"upper-aero-enhanced\",\n name: \"Enhanced Upper Receiver\",\n brand: \"Aero Precision\",\n categoryId: \"upper\",\n price: 149.99,\n affiliateUrl: \"https://example.com/aero-enhanced-upper\"\n },\n {\n id: \"upper-bcm-m4\",\n name: \"M4 Upper Receiver\",\n brand: \"BCM\",\n categoryId: \"upper\",\n price: 159.99,\n affiliateUrl: \"https://example.com/bcm-m4-upper\"\n },\n {\n id: \"barrel-criterion-16\",\n name: '16\" Hybrid Barrel',\n brand: \"Criterion\",\n categoryId: \"barrel\",\n price: 279.99,\n affiliateUrl: \"https://example.com/criterion-16\",\n notes: \"Mid-length gas, chrome-lined\"\n },\n {\n id: \"barrel-ba-13-9\",\n name: '13.9\" Hanson Performance Series',\n brand: \"Ballistic Advantage\",\n categoryId: \"barrel\",\n price: 209.99,\n affiliateUrl: \"https://example.com/ba-13-9\"\n },\n {\n id: \"hg-geissele-mk8\",\n name: 'MK8 Rail 13.5\"',\n brand: \"Geissele\",\n categoryId: \"handguard\",\n price: 324.99,\n affiliateUrl: \"https://example.com/geissele-mk8\"\n },\n {\n id: \"hg-centurion-c4\",\n name: 'C4 M-LOK 12\"',\n brand: \"Centurion Arms\",\n categoryId: \"handguard\",\n price: 284.99,\n affiliateUrl: \"https://example.com/centurion-c4\"\n },\n {\n id: \"stock-b5-bravo\",\n name: \"BRAVO Stock\",\n brand: \"B5 Systems\",\n categoryId: \"stock\",\n price: 74.99,\n affiliateUrl: \"https://example.com/b5-bravo\"\n },\n {\n id: \"stock-magpul-sl\",\n name: \"MOE SL Carbine Stock\",\n brand: \"Magpul\",\n categoryId: \"stock\",\n price: 69.99,\n affiliateUrl: \"https://example.com/magpul-sl\"\n },\n {\n id: \"optic-eotech-exps3\",\n name: \"EXPS3 Holographic Sight\",\n brand: \"EOTECH\",\n categoryId: \"optic\",\n price: 749.0,\n affiliateUrl: \"https://example.com/eotech-exps3\"\n },\n {\n id: \"optic-holosun-509t\",\n name: \"HE509T Red Dot\",\n brand: \"Holosun\",\n categoryId: \"optic\",\n price: 349.99,\n affiliateUrl: \"https://example.com/holosun-509t\"\n }\n];\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9kYXRhL2d1bmJ1aWxkZXJQYXJ0cy50cyIsIm1hcHBpbmdzIjoiOzs7OztBQUVPLE1BQU1BLGFBQXlCO0lBQ3BDO1FBQUVDLElBQUk7UUFBU0MsTUFBTTtJQUFpQjtJQUN0QztRQUFFRCxJQUFJO1FBQVNDLE1BQU07SUFBaUI7SUFDdEM7UUFBRUQsSUFBSTtRQUFVQyxNQUFNO0lBQVM7SUFDL0I7UUFBRUQsSUFBSTtRQUFhQyxNQUFNO0lBQVk7SUFDckM7UUFBRUQsSUFBSTtRQUFTQyxNQUFNO0lBQVE7SUFDN0I7UUFBRUQsSUFBSTtRQUFTQyxNQUFNO0lBQVE7Q0FDOUIsQ0FBQztBQUVLLE1BQU1DLFFBQWdCO0lBQzNCO1FBQ0VGLElBQUk7UUFDSkMsTUFBTTtRQUNORSxPQUFPO1FBQ1BDLFlBQVk7UUFDWkMsT0FBTztRQUNQQyxjQUFjO1FBQ2RDLE9BQU87SUFDVDtJQUNBO1FBQ0VQLElBQUk7UUFDSkMsTUFBTTtRQUNORSxPQUFPO1FBQ1BDLFlBQVk7UUFDWkMsT0FBTztRQUNQQyxjQUFjO0lBQ2hCO0lBQ0E7UUFDRU4sSUFBSTtRQUNKQyxNQUFNO1FBQ05FLE9BQU87UUFDUEMsWUFBWTtRQUNaQyxPQUFPO1FBQ1BDLGNBQWM7SUFDaEI7SUFDQTtRQUNFTixJQUFJO1FBQ0pDLE1BQU07UUFDTkUsT0FBTztRQUNQQyxZQUFZO1FBQ1pDLE9BQU87UUFDUEMsY0FBYztJQUNoQjtJQUNBO1FBQ0VOLElBQUk7UUFDSkMsTUFBTTtRQUNORSxPQUFPO1FBQ1BDLFlBQVk7UUFDWkMsT0FBTztRQUNQQyxjQUFjO1FBQ2RDLE9BQU87SUFDVDtJQUNBO1FBQ0VQLElBQUk7UUFDSkMsTUFBTTtRQUNORSxPQUFPO1FBQ1BDLFlBQVk7UUFDWkMsT0FBTztRQUNQQyxjQUFjO0lBQ2hCO0lBQ0E7UUFDRU4sSUFBSTtRQUNKQyxNQUFNO1FBQ05FLE9BQU87UUFDUEMsWUFBWTtRQUNaQyxPQUFPO1FBQ1BDLGNBQWM7SUFDaEI7SUFDQTtRQUNFTixJQUFJO1FBQ0pDLE1BQU07UUFDTkUsT0FBTztRQUNQQyxZQUFZO1FBQ1pDLE9BQU87UUFDUEMsY0FBYztJQUNoQjtJQUNBO1FBQ0VOLElBQUk7UUFDSkMsTUFBTTtRQUNORSxPQUFPO1FBQ1BDLFlBQVk7UUFDWkMsT0FBTztRQUNQQyxjQUFjO0lBQ2hCO0lBQ0E7UUFDRU4sSUFBSTtRQUNKQyxNQUFNO1FBQ05FLE9BQU87UUFDUEMsWUFBWTtRQUNaQyxPQUFPO1FBQ1BDLGNBQWM7SUFDaEI7SUFDQTtRQUNFTixJQUFJO1FBQ0pDLE1BQU07UUFDTkUsT0FBTztRQUNQQyxZQUFZO1FBQ1pDLE9BQU87UUFDUEMsY0FBYztJQUNoQjtJQUNBO1FBQ0VOLElBQUk7UUFDSkMsTUFBTTtRQUNORSxPQUFPO1FBQ1BDLFlBQVk7UUFDWkMsT0FBTztRQUNQQyxjQUFjO0lBQ2hCO0NBQ0QsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLy4vZGF0YS9ndW5idWlsZGVyUGFydHMudHM/NzNhZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENhdGVnb3J5LCBQYXJ0IH0gZnJvbSBcIkAvdHlwZXMvZ3VuYnVpbGRlclwiO1xuXG5leHBvcnQgY29uc3QgQ0FURUdPUklFUzogQ2F0ZWdvcnlbXSA9IFtcbiAgeyBpZDogXCJsb3dlclwiLCBuYW1lOiBcIkxvd2VyIFJlY2VpdmVyXCIgfSxcbiAgeyBpZDogXCJ1cHBlclwiLCBuYW1lOiBcIlVwcGVyIFJlY2VpdmVyXCIgfSxcbiAgeyBpZDogXCJiYXJyZWxcIiwgbmFtZTogXCJCYXJyZWxcIiB9LFxuICB7IGlkOiBcImhhbmRndWFyZFwiLCBuYW1lOiBcIkhhbmRndWFyZFwiIH0sXG4gIHsgaWQ6IFwic3RvY2tcIiwgbmFtZTogXCJTdG9ja1wiIH0sXG4gIHsgaWQ6IFwib3B0aWNcIiwgbmFtZTogXCJPcHRpY1wiIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgUEFSVFM6IFBhcnRbXSA9IFtcbiAge1xuICAgIGlkOiBcImxvd2VyLWFlcm8tbTRlMVwiLFxuICAgIG5hbWU6IFwiTTRFMSBTdHJpcHBlZCBMb3dlciBSZWNlaXZlclwiLFxuICAgIGJyYW5kOiBcIkFlcm8gUHJlY2lzaW9uXCIsXG4gICAgY2F0ZWdvcnlJZDogXCJsb3dlclwiLFxuICAgIHByaWNlOiAxMjkuOTksXG4gICAgYWZmaWxpYXRlVXJsOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vYWVyby1tNGUxXCIsXG4gICAgbm90ZXM6IFwiRm9yZ2VkIDcwNzUtVDYsIHRocmVhZGVkIGJvbHQgY2F0Y2hcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcImxvd2VyLXNvbGd3XCIsXG4gICAgbmFtZTogXCJMb3lhbCA5IFN0cmlwcGVkIExvd2VyXCIsXG4gICAgYnJhbmQ6IFwiU29ucyBvZiBMaWJlcnR5IEd1biBXb3Jrc1wiLFxuICAgIGNhdGVnb3J5SWQ6IFwibG93ZXJcIixcbiAgICBwcmljZTogMTg5LjAsXG4gICAgYWZmaWxpYXRlVXJsOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vc29sZ3ctbG93ZXJcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcInVwcGVyLWFlcm8tZW5oYW5jZWRcIixcbiAgICBuYW1lOiBcIkVuaGFuY2VkIFVwcGVyIFJlY2VpdmVyXCIsXG4gICAgYnJhbmQ6IFwiQWVybyBQcmVjaXNpb25cIixcbiAgICBjYXRlZ29yeUlkOiBcInVwcGVyXCIsXG4gICAgcHJpY2U6IDE0OS45OSxcbiAgICBhZmZpbGlhdGVVcmw6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9hZXJvLWVuaGFuY2VkLXVwcGVyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJ1cHBlci1iY20tbTRcIixcbiAgICBuYW1lOiBcIk00IFVwcGVyIFJlY2VpdmVyXCIsXG4gICAgYnJhbmQ6IFwiQkNNXCIsXG4gICAgY2F0ZWdvcnlJZDogXCJ1cHBlclwiLFxuICAgIHByaWNlOiAxNTkuOTksXG4gICAgYWZmaWxpYXRlVXJsOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vYmNtLW00LXVwcGVyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJiYXJyZWwtY3JpdGVyaW9uLTE2XCIsXG4gICAgbmFtZTogXCIxNlxcXCIgSHlicmlkIEJhcnJlbFwiLFxuICAgIGJyYW5kOiBcIkNyaXRlcmlvblwiLFxuICAgIGNhdGVnb3J5SWQ6IFwiYmFycmVsXCIsXG4gICAgcHJpY2U6IDI3OS45OSxcbiAgICBhZmZpbGlhdGVVcmw6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9jcml0ZXJpb24tMTZcIixcbiAgICBub3RlczogXCJNaWQtbGVuZ3RoIGdhcywgY2hyb21lLWxpbmVkXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJiYXJyZWwtYmEtMTMtOVwiLFxuICAgIG5hbWU6IFwiMTMuOVxcXCIgSGFuc29uIFBlcmZvcm1hbmNlIFNlcmllc1wiLFxuICAgIGJyYW5kOiBcIkJhbGxpc3RpYyBBZHZhbnRhZ2VcIixcbiAgICBjYXRlZ29yeUlkOiBcImJhcnJlbFwiLFxuICAgIHByaWNlOiAyMDkuOTksXG4gICAgYWZmaWxpYXRlVXJsOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vYmEtMTMtOVwiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwiaGctZ2Vpc3NlbGUtbWs4XCIsXG4gICAgbmFtZTogXCJNSzggUmFpbCAxMy41XFxcIlwiLFxuICAgIGJyYW5kOiBcIkdlaXNzZWxlXCIsXG4gICAgY2F0ZWdvcnlJZDogXCJoYW5kZ3VhcmRcIixcbiAgICBwcmljZTogMzI0Ljk5LFxuICAgIGFmZmlsaWF0ZVVybDogXCJodHRwczovL2V4YW1wbGUuY29tL2dlaXNzZWxlLW1rOFwiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwiaGctY2VudHVyaW9uLWM0XCIsXG4gICAgbmFtZTogXCJDNCBNLUxPSyAxMlxcXCJcIixcbiAgICBicmFuZDogXCJDZW50dXJpb24gQXJtc1wiLFxuICAgIGNhdGVnb3J5SWQ6IFwiaGFuZGd1YXJkXCIsXG4gICAgcHJpY2U6IDI4NC45OSxcbiAgICBhZmZpbGlhdGVVcmw6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9jZW50dXJpb24tYzRcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcInN0b2NrLWI1LWJyYXZvXCIsXG4gICAgbmFtZTogXCJCUkFWTyBTdG9ja1wiLFxuICAgIGJyYW5kOiBcIkI1IFN5c3RlbXNcIixcbiAgICBjYXRlZ29yeUlkOiBcInN0b2NrXCIsXG4gICAgcHJpY2U6IDc0Ljk5LFxuICAgIGFmZmlsaWF0ZVVybDogXCJodHRwczovL2V4YW1wbGUuY29tL2I1LWJyYXZvXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJzdG9jay1tYWdwdWwtc2xcIixcbiAgICBuYW1lOiBcIk1PRSBTTCBDYXJiaW5lIFN0b2NrXCIsXG4gICAgYnJhbmQ6IFwiTWFncHVsXCIsXG4gICAgY2F0ZWdvcnlJZDogXCJzdG9ja1wiLFxuICAgIHByaWNlOiA2OS45OSxcbiAgICBhZmZpbGlhdGVVcmw6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9tYWdwdWwtc2xcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcIm9wdGljLWVvdGVjaC1leHBzM1wiLFxuICAgIG5hbWU6IFwiRVhQUzMgSG9sb2dyYXBoaWMgU2lnaHRcIixcbiAgICBicmFuZDogXCJFT1RFQ0hcIixcbiAgICBjYXRlZ29yeUlkOiBcIm9wdGljXCIsXG4gICAgcHJpY2U6IDc0OS4wLFxuICAgIGFmZmlsaWF0ZVVybDogXCJodHRwczovL2V4YW1wbGUuY29tL2VvdGVjaC1leHBzM1wiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwib3B0aWMtaG9sb3N1bi01MDl0XCIsXG4gICAgbmFtZTogXCJIRTUwOVQgUmVkIERvdFwiLFxuICAgIGJyYW5kOiBcIkhvbG9zdW5cIixcbiAgICBjYXRlZ29yeUlkOiBcIm9wdGljXCIsXG4gICAgcHJpY2U6IDM0OS45OSxcbiAgICBhZmZpbGlhdGVVcmw6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9ob2xvc3VuLTUwOXRcIixcbiAgfSxcbl07XG4iXSwibmFtZXMiOlsiQ0FURUdPUklFUyIsImlkIiwibmFtZSIsIlBBUlRTIiwiYnJhbmQiLCJjYXRlZ29yeUlkIiwicHJpY2UiLCJhZmZpbGlhdGVVcmwiLCJub3RlcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./data/gunbuilderParts.ts\n"); + +/***/ }), + +/***/ "(rsc)/./app/globals.css": +/*!*************************!*\ + !*** ./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__ = (\"8e3b978f6080\");\nif (false) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvZ2xvYmFscy5jc3MiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlFQUFlLGNBQWM7QUFDN0IsSUFBSSxLQUFVLEVBQUUsRUFBdUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2FwcC9nbG9iYWxzLmNzcz9jZDI4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IFwiOGUzYjk3OGY2MDgwXCJcbmlmIChtb2R1bGUuaG90KSB7IG1vZHVsZS5ob3QuYWNjZXB0KCkgfVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/globals.css\n"); + +/***/ }), + +/***/ "(rsc)/./app/gunbuilder/build/page.tsx": +/*!***************************************!*\ + !*** ./app/gunbuilder/build/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`/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/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__ = ((0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx#default`)); + + +/***/ }), + +/***/ "(rsc)/./app/layout.tsx": +/*!************************!*\ + !*** ./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 */ });\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 _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(rsc)/./app/globals.css\");\n\n\nconst metadata = {\n title: \"Gunbuilder Prototype | Shadow Standard\",\n description: \"Prototype AR-15 build tool by Shadow Standard.\"\n};\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 11,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvbGF5b3V0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBdUI7QUFHaEIsTUFBTUEsV0FBVztJQUN0QkMsT0FBTztJQUNQQyxhQUFhO0FBQ2YsRUFBRTtBQUVhLFNBQVNDLFdBQVcsRUFBRUMsUUFBUSxFQUEyQjtJQUN0RSxxQkFDRSw4REFBQ0M7UUFBS0MsTUFBSztrQkFDVCw0RUFBQ0M7c0JBQU1IOzs7Ozs7Ozs7OztBQUdiIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9hcHAvbGF5b3V0LnRzeD85OTg4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcIi4vZ2xvYmFscy5jc3NcIjtcbmltcG9ydCB0eXBlIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBtZXRhZGF0YSA9IHtcbiAgdGl0bGU6IFwiR3VuYnVpbGRlciBQcm90b3R5cGUgfCBTaGFkb3cgU3RhbmRhcmRcIixcbiAgZGVzY3JpcHRpb246IFwiUHJvdG90eXBlIEFSLTE1IGJ1aWxkIHRvb2wgYnkgU2hhZG93IFN0YW5kYXJkLlwiLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUm9vdExheW91dCh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGh0bWwgbGFuZz1cImVuXCI+XG4gICAgICA8Ym9keT57Y2hpbGRyZW59PC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJtZXRhZGF0YSIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJSb290TGF5b3V0IiwiY2hpbGRyZW4iLCJodG1sIiwibGFuZyIsImJvZHkiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/layout.tsx\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"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"))); +module.exports = __webpack_exports__; + +})(); \ No newline at end of file diff --git a/.next/server/app/gunbuilder/build/page_client-reference-manifest.js b/.next/server/app/gunbuilder/build/page_client-reference-manifest.js new file mode 100644 index 0000000..4962b6c --- /dev/null +++ b/.next/server/app/gunbuilder/build/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/gunbuilder/build/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./node_modules/next/dist/client/link.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/link.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/build/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/build/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/page.tsx","name":"*","chunks":["app/gunbuilder/page","static/chunks/app/gunbuilder/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/build/page.tsx","name":"*","chunks":["app/gunbuilder/build/page","static/chunks/app/gunbuilder/build/page.js"],"async":false}},"entryCSSFiles":{"/Users/sean/Dev/gunbuilder-prototype/":[],"/Users/sean/Dev/gunbuilder-prototype/app/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/layout":["static/css/app/layout.css"],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page":[]}} \ No newline at end of file diff --git a/.next/server/app/gunbuilder/page.js b/.next/server/app/gunbuilder/page.js index 414f615..3a7f894 100644 --- a/.next/server/app/gunbuilder/page.js +++ b/.next/server/app/gunbuilder/page.js @@ -137,7 +137,7 @@ eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__w /***/ ((__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 */ GunbuilderPage)\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_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/navigation */ \"(ssr)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(ssr)/./data/gunbuilderParts.ts\");\n/* harmony import */ var _components_CategoryColumn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/CategoryColumn */ \"(ssr)/./components/CategoryColumn.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\nconst STORAGE_KEY = \"gunbuilder-build-state\";\nfunction GunbuilderPage() {\n const searchParams = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.useSearchParams)();\n const router = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.useRouter)();\n const [build, setBuild] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(()=>{\n // Initialize from localStorage if available\n if (false) {}\n return {};\n });\n // Handle URL query parameter for part selection\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const selectParam = searchParams.get(\"select\");\n if (selectParam) {\n const [categoryId, partId] = selectParam.split(\":\");\n if (categoryId && partId && _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES.some((c)=>c.id === categoryId)) {\n setBuild((prev)=>{\n const updated = {\n ...prev,\n [categoryId]: partId\n };\n // Persist to localStorage\n localStorage.setItem(STORAGE_KEY, JSON.stringify(updated));\n return updated;\n });\n // Remove query param from URL\n router.replace(\"/gunbuilder\", {\n scroll: false\n });\n }\n }\n }, [\n searchParams,\n router\n ]);\n // Persist build state to localStorage whenever it changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (false) {}\n }, [\n build\n ]);\n const partsByCategory = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const grouped = {};\n for (const category of _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES){\n grouped[category.id] = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.PARTS.filter((p)=>p.categoryId === category.id);\n }\n return grouped;\n }, []);\n const selectedParts = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n return Object.entries(build).map(([categoryId, partId])=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId)).filter(Boolean);\n }, [\n build\n ]);\n const totalPrice = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>selectedParts.reduce((sum, p)=>sum + p.price, 0), [\n selectedParts\n ]);\n const handleSelectPart = (categoryId, partId)=>{\n setBuild((prev)=>({\n ...prev,\n [categoryId]: partId\n }));\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6 flex flex-col gap-2 md:flex-row md:items-end md:justify-between\",\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)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 95,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n \"Gunbuilder \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: \"Prototype\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 99,\n columnNumber: 26\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 98,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: \"Choose one part per category to assemble an AR-15 build. Prices and links are mock data for now—but the flow is close to what the real tool will be.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 101,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 94,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 md:mt-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400\",\n children: \"Current build total\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 109,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-semibold text-amber-300\",\n children: [\n \"$\",\n totalPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 110,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500\",\n children: [\n selectedParts.length,\n \" / \",\n _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES.length,\n \" categories filled\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 113,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 108,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 93,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 lg:grid-cols-[3fr,1.25fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-3 md:p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 md:grid-cols-2 lg:grid-cols-3\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES.map((category)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-zinc-800 rounded-md p-2 md:p-3 bg-zinc-950/60\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_CategoryColumn__WEBPACK_IMPORTED_MODULE_4__.CategoryColumn, {\n category: category,\n parts: partsByCategory[category.id],\n selectedPartId: build[category.id],\n onSelectPart: (partId)=>handleSelectPart(category.id, partId)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 129,\n columnNumber: 19\n }, this)\n }, category.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 125,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 123,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 122,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/80 p-3 md:p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-3\",\n children: \"Current Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 144,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-y-auto pr-1\",\n children: [\n selectedParts.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500\",\n children: \"Select a part from each category to start your build.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 150,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"space-y-2\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES.map((cat)=>{\n const selectedPartId = build[cat.id];\n const part = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.PARTS.find((p)=>p.id === selectedPartId && p.categoryId === cat.id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[0.7rem] uppercase tracking-[0.16em] text-zinc-500\",\n children: cat.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 163,\n columnNumber: 23\n }, this),\n part ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 flex justify-between items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-zinc-400\",\n children: [\n part.brand,\n \" \"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 169,\n columnNumber: 29\n }, this),\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 168,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 174,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 167,\n columnNumber: 25\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 text-xs text-zinc-600\",\n children: \"Not selected\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 179,\n columnNumber: 25\n }, this)\n ]\n }, cat.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 162,\n columnNumber: 21\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 155,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 148,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 border-t border-zinc-800 pt-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n className: \"w-full rounded-md border border-amber-400/60 bg-amber-400/10 px-3 py-2 text-sm font-medium text-amber-200 hover:bg-amber-400/15 disabled:opacity-40 disabled:cursor-not-allowed\",\n disabled: selectedParts.length === 0,\n onClick: ()=>{\n console.log(\"Build:\", build);\n alert(\"Prototype only: in the real app this would go to a sharable build summary with affiliate links.\");\n },\n children: \"Continue to Buy (Prototype)\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 191,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-[0.7rem] text-zinc-500\",\n children: \"In the production version, this will take you to a build page with retailer links and sharing options.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 204,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 190,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 143,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 120,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 91,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 90,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQUUsS0FBS2lDLGtCQUFrQnRCLEVBQUVoQixVQUFVLEtBQUsyQyxJQUFJdEMsRUFBRTtnREFFM0QscUJBQ0UsOERBQUN3Qzs7c0VBQ0MsOERBQUNmOzREQUFJRCxXQUFVO3NFQUNaYyxJQUFJRyxJQUFJOzs7Ozs7d0RBRVZGLHFCQUNDLDhEQUFDZDs0REFBSUQsV0FBVTs7OEVBQ2IsOERBQUNDO29FQUFJRCxXQUFVOztzRkFDYiw4REFBQ0k7NEVBQUtKLFdBQVU7O2dGQUNiZSxLQUFLRyxLQUFLO2dGQUFFOzs7Ozs7O3dFQUVkSCxLQUFLRSxJQUFJOzs7Ozs7OzhFQUVaLDhEQUFDaEI7b0VBQUlELFdBQVU7O3dFQUF5RDt3RUFDcEVlLEtBQUtsQixLQUFLLENBQUNRLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7O2lGQUl6Qiw4REFBQ0o7NERBQUlELFdBQVU7c0VBQTZCOzs7Ozs7O21EQWpCdkNjLElBQUl0QyxFQUFFOzs7Ozs0Q0F1Qm5COzs7Ozs7Ozs7Ozs7OENBS0osOERBQUN5QjtvQ0FBSUQsV0FBVTs7c0RBQ2IsOERBQUNtQjs0Q0FDQ0MsTUFBSzs0Q0FDTHBCLFdBQVU7NENBQ1ZxQixVQUFVakMsY0FBY2tCLE1BQU0sS0FBSzs0Q0FDbkNnQixTQUFTO2dEQUNQQyxRQUFRQyxHQUFHLENBQUMsVUFBVTlEO2dEQUN0QitELE1BQ0U7NENBRUo7c0RBQ0Q7Ozs7OztzREFHRCw4REFBQ3RDOzRDQUFFYSxXQUFVO3NEQUFtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVOUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2FwcC9ndW5idWlsZGVyL3BhZ2UudHN4PzA1NDAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7IHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlYXJjaFBhcmFtcywgdXNlUm91dGVyIH0gZnJvbSBcIm5leHQvbmF2aWdhdGlvblwiO1xuaW1wb3J0IHsgQ0FURUdPUklFUywgUEFSVFMgfSBmcm9tIFwiQC9kYXRhL2d1bmJ1aWxkZXJQYXJ0c1wiO1xuaW1wb3J0IHR5cGUgeyBDYXRlZ29yeUlkLCBQYXJ0IH0gZnJvbSBcIkAvdHlwZXMvZ3VuYnVpbGRlclwiO1xuaW1wb3J0IHsgQ2F0ZWdvcnlDb2x1bW4gfSBmcm9tIFwiQC9jb21wb25lbnRzL0NhdGVnb3J5Q29sdW1uXCI7XG5cbnR5cGUgQnVpbGRTdGF0ZSA9IFBhcnRpYWw8UmVjb3JkPENhdGVnb3J5SWQsIHN0cmluZz4+OyAvLyBjYXRlZ29yeUlkIC0+IHBhcnRJZFxuXG5jb25zdCBTVE9SQUdFX0tFWSA9IFwiZ3VuYnVpbGRlci1idWlsZC1zdGF0ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHdW5idWlsZGVyUGFnZSgpIHtcbiAgY29uc3Qgc2VhcmNoUGFyYW1zID0gdXNlU2VhcmNoUGFyYW1zKCk7XG4gIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpO1xuICBjb25zdCBbYnVpbGQsIHNldEJ1aWxkXSA9IHVzZVN0YXRlPEJ1aWxkU3RhdGU+KCgpID0+IHtcbiAgICAvLyBJbml0aWFsaXplIGZyb20gbG9jYWxTdG9yYWdlIGlmIGF2YWlsYWJsZVxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBjb25zdCBzdG9yZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWSk7XG4gICAgICBpZiAoc3RvcmVkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RvcmVkKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfSk7XG5cbiAgLy8gSGFuZGxlIFVSTCBxdWVyeSBwYXJhbWV0ZXIgZm9yIHBhcnQgc2VsZWN0aW9uXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0UGFyYW0gPSBzZWFyY2hQYXJhbXMuZ2V0KFwic2VsZWN0XCIpO1xuICAgIGlmIChzZWxlY3RQYXJhbSkge1xuICAgICAgY29uc3QgW2NhdGVnb3J5SWQsIHBhcnRJZF0gPSBzZWxlY3RQYXJhbS5zcGxpdChcIjpcIik7XG4gICAgICBpZiAoY2F0ZWdvcnlJZCAmJiBwYXJ0SWQgJiYgQ0FURUdPUklFUy5zb21lKChjKSA9PiBjLmlkID09PSBjYXRlZ29yeUlkKSkge1xuICAgICAgICBzZXRCdWlsZCgocHJldikgPT4ge1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWQgPSB7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgW2NhdGVnb3J5SWRdOiBwYXJ0SWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgICAvLyBQZXJzaXN0IHRvIGxvY2FsU3RvcmFnZVxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFNUT1JBR0VfS0VZLCBKU09OLnN0cmluZ2lmeSh1cGRhdGVkKSk7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBSZW1vdmUgcXVlcnkgcGFyYW0gZnJvbSBVUkxcbiAgICAgICAgcm91dGVyLnJlcGxhY2UoXCIvZ3VuYnVpbGRlclwiLCB7IHNjcm9sbDogZmFsc2UgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbc2VhcmNoUGFyYW1zLCByb3V0ZXJdKTtcblxuICAvLyBQZXJzaXN0IGJ1aWxkIHN0YXRlIHRvIGxvY2FsU3RvcmFnZSB3aGVuZXZlciBpdCBjaGFuZ2VzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFNUT1JBR0VfS0VZLCBKU09OLnN0cmluZ2lmeShidWlsZCkpO1xuICAgIH1cbiAgfSwgW2J1aWxkXSk7XG5cbiAgY29uc3QgcGFydHNCeUNhdGVnb3J5OiBSZWNvcmQ8Q2F0ZWdvcnlJZCwgUGFydFtdPiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGdyb3VwZWQgPSB7fSBhcyBSZWNvcmQ8Q2F0ZWdvcnlJZCwgUGFydFtdPjtcbiAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIENBVEVHT1JJRVMpIHtcbiAgICAgIGdyb3VwZWRbY2F0ZWdvcnkuaWRdID0gUEFSVFMuZmlsdGVyKFxuICAgICAgICAocCkgPT4gcC5jYXRlZ29yeUlkID09PSBjYXRlZ29yeS5pZCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBncm91cGVkO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgc2VsZWN0ZWRQYXJ0czogUGFydFtdID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGJ1aWxkKVxuICAgICAgLm1hcCgoW2NhdGVnb3J5SWQsIHBhcnRJZF0pID0+XG4gICAgICAgIFBBUlRTLmZpbmQoKHApID0+IHAuaWQgPT09IHBhcnRJZCAmJiBwLmNhdGVnb3J5SWQgPT09IGNhdGVnb3J5SWQpLFxuICAgICAgKVxuICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBQYXJ0W107XG4gIH0sIFtidWlsZF0pO1xuXG4gIGNvbnN0IHRvdGFsUHJpY2UgPSB1c2VNZW1vKFxuICAgICgpID0+IHNlbGVjdGVkUGFydHMucmVkdWNlKChzdW0sIHApID0+IHN1bSArIHAucHJpY2UsIDApLFxuICAgIFtzZWxlY3RlZFBhcnRzXSxcbiAgKTtcblxuICBjb25zdCBoYW5kbGVTZWxlY3RQYXJ0ID0gKGNhdGVnb3J5SWQ6IENhdGVnb3J5SWQsIHBhcnRJZDogc3RyaW5nKSA9PiB7XG4gICAgc2V0QnVpbGQoKHByZXYpID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgW2NhdGVnb3J5SWRdOiBwYXJ0SWQsXG4gICAgfSkpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIG1heC13LTZ4bCBweC00IHB5LTYgbGc6cHktMTBcIj5cbiAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJtYi02IGZsZXggZmxleC1jb2wgZ2FwLTIgbWQ6ZmxleC1yb3cgbWQ6aXRlbXMtZW5kIG1kOmp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWzAuMmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICBTaGFkb3cgU3RhbmRhcmRcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJtdC0xIHRleHQtMnhsIG1kOnRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRcIj5cbiAgICAgICAgICAgICAgR3VuYnVpbGRlciA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWFtYmVyLTMwMFwiPlByb3RvdHlwZTwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0yIHRleHQtc20gdGV4dC16aW5jLTQwMCBtYXgtdy14bFwiPlxuICAgICAgICAgICAgICBDaG9vc2Ugb25lIHBhcnQgcGVyIGNhdGVnb3J5IHRvIGFzc2VtYmxlIGFuIEFSLTE1IGJ1aWxkLiBQcmljZXNcbiAgICAgICAgICAgICAgYW5kIGxpbmtzIGFyZSBtb2NrIGRhdGEgZm9yIG5vd+KAlGJ1dCB0aGUgZmxvdyBpcyBjbG9zZSB0byB3aGF0XG4gICAgICAgICAgICAgIHRoZSByZWFsIHRvb2wgd2lsbCBiZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMyBtZDptdC0wXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTQwMFwiPkN1cnJlbnQgYnVpbGQgdG90YWw8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMFwiPlxuICAgICAgICAgICAgICAke3RvdGFsUHJpY2UudG9GaXhlZCgyKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAge3NlbGVjdGVkUGFydHMubGVuZ3RofSAvIHtDQVRFR09SSUVTLmxlbmd0aH0gY2F0ZWdvcmllcyBmaWxsZWRcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICB7LyogTGF5b3V0ICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ2FwLTQgbGc6Z3JpZC1jb2xzLVszZnIsMS4yNWZyXVwiPlxuICAgICAgICAgIHsvKiBDYXRlZ29yaWVzL3BhcnRzICovfVxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTk1MC82MCBwLTMgbWQ6cC00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ2FwLTQgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTNcIj5cbiAgICAgICAgICAgICAge0NBVEVHT1JJRVMubWFwKChjYXRlZ29yeSkgPT4gKFxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGtleT17Y2F0ZWdvcnkuaWR9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJib3JkZXIgYm9yZGVyLXppbmMtODAwIHJvdW5kZWQtbWQgcC0yIG1kOnAtMyBiZy16aW5jLTk1MC82MFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPENhdGVnb3J5Q29sdW1uXG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PXtjYXRlZ29yeX1cbiAgICAgICAgICAgICAgICAgICAgcGFydHM9e3BhcnRzQnlDYXRlZ29yeVtjYXRlZ29yeS5pZF19XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUGFydElkPXtidWlsZFtjYXRlZ29yeS5pZF19XG4gICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0UGFydD17KHBhcnRJZCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RQYXJ0KGNhdGVnb3J5LmlkLCBwYXJ0SWQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgey8qIEJ1aWxkIFN1bW1hcnkgKi99XG4gICAgICAgICAgPGFzaWRlIGNsYXNzTmFtZT1cInJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTk1MC84MCBwLTMgbWQ6cC00IGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWzAuMTZlbV0gdXBwZXJjYXNlIHRleHQtemluYy00MDAgbWItM1wiPlxuICAgICAgICAgICAgICBDdXJyZW50IEJ1aWxkXG4gICAgICAgICAgICA8L2gyPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBvdmVyZmxvdy15LWF1dG8gcHItMVwiPlxuICAgICAgICAgICAgICB7c2VsZWN0ZWRQYXJ0cy5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICAgICAgU2VsZWN0IGEgcGFydCBmcm9tIGVhY2ggY2F0ZWdvcnkgdG8gc3RhcnQgeW91ciBidWlsZC5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICAgICAgICAgIHtDQVRFR09SSUVTLm1hcCgoY2F0KSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFBhcnRJZCA9IGJ1aWxkW2NhdC5pZF07XG4gICAgICAgICAgICAgICAgICBjb25zdCBwYXJ0ID0gUEFSVFMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKHApID0+IHAuaWQgPT09IHNlbGVjdGVkUGFydElkICYmIHAuY2F0ZWdvcnlJZCA9PT0gY2F0LmlkLFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxsaSBrZXk9e2NhdC5pZH0+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LVswLjdyZW1dIHVwcGVyY2FzZSB0cmFja2luZy1bMC4xNmVtXSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2F0Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAge3BhcnQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTEgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXppbmMtNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXppbmMtNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5icmFuZH17XCIgXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMCB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cGFydC5wcmljZS50b0ZpeGVkKDIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTEgdGV4dC14cyB0ZXh0LXppbmMtNjAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBzZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIENUQSAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBib3JkZXItdCBib3JkZXItemluYy04MDAgcHQtM1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1hbWJlci00MDAvNjAgYmctYW1iZXItNDAwLzEwIHB4LTMgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtYW1iZXItMjAwIGhvdmVyOmJnLWFtYmVyLTQwMC8xNSBkaXNhYmxlZDpvcGFjaXR5LTQwIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZFwiXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbGVjdGVkUGFydHMubGVuZ3RoID09PSAwfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQnVpbGQ6XCIsIGJ1aWxkKTtcbiAgICAgICAgICAgICAgICAgIGFsZXJ0KFxuICAgICAgICAgICAgICAgICAgICBcIlByb3RvdHlwZSBvbmx5OiBpbiB0aGUgcmVhbCBhcHAgdGhpcyB3b3VsZCBnbyB0byBhIHNoYXJhYmxlIGJ1aWxkIHN1bW1hcnkgd2l0aCBhZmZpbGlhdGUgbGlua3MuXCIsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBDb250aW51ZSB0byBCdXkgKFByb3RvdHlwZSlcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTIgdGV4dC1bMC43cmVtXSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgICAgSW4gdGhlIHByb2R1Y3Rpb24gdmVyc2lvbiwgdGhpcyB3aWxsIHRha2UgeW91IHRvIGEgYnVpbGQgcGFnZSB3aXRoXG4gICAgICAgICAgICAgICAgcmV0YWlsZXIgbGlua3MgYW5kIHNoYXJpbmcgb3B0aW9ucy5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hc2lkZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21haW4+XG4gICk7XG59XG4iXSwibmFtZXMiOlsidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwidXNlU2VhcmNoUGFyYW1zIiwidXNlUm91dGVyIiwiQ0FURUdPUklFUyIsIlBBUlRTIiwiQ2F0ZWdvcnlDb2x1bW4iLCJTVE9SQUdFX0tFWSIsIkd1bmJ1aWxkZXJQYWdlIiwic2VhcmNoUGFyYW1zIiwicm91dGVyIiwiYnVpbGQiLCJzZXRCdWlsZCIsInN0b3JlZCIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJKU09OIiwicGFyc2UiLCJzZWxlY3RQYXJhbSIsImdldCIsImNhdGVnb3J5SWQiLCJwYXJ0SWQiLCJzcGxpdCIsInNvbWUiLCJjIiwiaWQiLCJwcmV2IiwidXBkYXRlZCIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJyZXBsYWNlIiwic2Nyb2xsIiwicGFydHNCeUNhdGVnb3J5IiwiZ3JvdXBlZCIsImNhdGVnb3J5IiwiZmlsdGVyIiwicCIsInNlbGVjdGVkUGFydHMiLCJPYmplY3QiLCJlbnRyaWVzIiwibWFwIiwiZmluZCIsIkJvb2xlYW4iLCJ0b3RhbFByaWNlIiwicmVkdWNlIiwic3VtIiwicHJpY2UiLCJoYW5kbGVTZWxlY3RQYXJ0IiwibWFpbiIsImNsYXNzTmFtZSIsImRpdiIsImhlYWRlciIsImgxIiwic3BhbiIsInRvRml4ZWQiLCJsZW5ndGgiLCJzZWN0aW9uIiwicGFydHMiLCJzZWxlY3RlZFBhcnRJZCIsIm9uU2VsZWN0UGFydCIsImFzaWRlIiwiaDIiLCJ1bCIsImNhdCIsInBhcnQiLCJsaSIsIm5hbWUiLCJicmFuZCIsImJ1dHRvbiIsInR5cGUiLCJkaXNhYmxlZCIsIm9uQ2xpY2siLCJjb25zb2xlIiwibG9nIiwiYWxlcnQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./app/gunbuilder/page.tsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ GunbuilderPage)\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 next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(ssr)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(ssr)/./data/gunbuilderParts.ts\");\n/* harmony import */ var _components_CategoryColumn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/CategoryColumn */ \"(ssr)/./components/CategoryColumn.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\n\nconst STORAGE_KEY = \"gunbuilder-build-state\";\nfunction GunbuilderPage() {\n const searchParams = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useSearchParams)();\n const router = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useRouter)();\n const [build, setBuild] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(()=>{\n // Initialize from localStorage if available\n if (false) {}\n return {};\n });\n // Handle URL query parameter for part selection\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const selectParam = searchParams.get(\"select\");\n if (selectParam) {\n const [categoryId, partId] = selectParam.split(\":\");\n if (categoryId && partId && _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.some((c)=>c.id === categoryId)) {\n setBuild((prev)=>{\n const updated = {\n ...prev,\n [categoryId]: partId\n };\n // Persist to localStorage\n localStorage.setItem(STORAGE_KEY, JSON.stringify(updated));\n return updated;\n });\n // Remove query param from URL\n router.replace(\"/gunbuilder\", {\n scroll: false\n });\n }\n }\n }, [\n searchParams,\n router\n ]);\n // Persist build state to localStorage whenever it changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (false) {}\n }, [\n build\n ]);\n const partsByCategory = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const grouped = {};\n for (const category of _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES){\n grouped[category.id] = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.filter((p)=>p.categoryId === category.id);\n }\n return grouped;\n }, []);\n const selectedParts = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n return Object.entries(build).map(([categoryId, partId])=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId)).filter(Boolean);\n }, [\n build\n ]);\n const totalPrice = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>selectedParts.reduce((sum, p)=>sum + p.price, 0), [\n selectedParts\n ]);\n const handleSelectPart = (categoryId, partId)=>{\n setBuild((prev)=>({\n ...prev,\n [categoryId]: partId\n }));\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6 flex flex-col gap-2 md:flex-row md:items-end md:justify-between\",\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)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 96,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n \"Gunbuilder \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: \"Prototype\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 100,\n columnNumber: 26\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 99,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: \"Choose one part per category to assemble an AR-15 build. Prices and links are mock data for now—but the flow is close to what the real tool will be.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 102,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 95,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 md:mt-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400\",\n children: \"Current build total\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 110,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-semibold text-amber-300\",\n children: [\n \"$\",\n totalPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 111,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500\",\n children: [\n selectedParts.length,\n \" / \",\n _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.length,\n \" categories filled\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 114,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 109,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 94,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 lg:grid-cols-[3fr,1.25fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-3 md:p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 md:grid-cols-2 lg:grid-cols-3\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.map((category)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-zinc-800 rounded-md p-2 md:p-3 bg-zinc-950/60\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_CategoryColumn__WEBPACK_IMPORTED_MODULE_5__.CategoryColumn, {\n category: category,\n parts: partsByCategory[category.id],\n selectedPartId: build[category.id],\n onSelectPart: (partId)=>handleSelectPart(category.id, partId)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 130,\n columnNumber: 19\n }, this)\n }, category.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 126,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 124,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 123,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/80 p-3 md:p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-3\",\n children: \"Current Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 145,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-y-auto pr-1\",\n children: [\n selectedParts.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500\",\n children: \"Select a part from each category to start your build.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 151,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"space-y-2\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.map((cat)=>{\n const selectedPartId = build[cat.id];\n const part = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === selectedPartId && p.categoryId === cat.id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[0.7rem] uppercase tracking-[0.16em] text-zinc-500\",\n children: cat.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 164,\n columnNumber: 23\n }, this),\n part ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 flex justify-between items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-zinc-400\",\n children: [\n part.brand,\n \" \"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 170,\n columnNumber: 29\n }, this),\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 169,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 175,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 168,\n columnNumber: 25\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 text-xs text-zinc-600\",\n children: \"Not selected\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 180,\n columnNumber: 25\n }, this)\n ]\n }, cat.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 163,\n columnNumber: 21\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 156,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 149,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 border-t border-zinc-800 pt-3 space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/build\",\n className: `block w-full rounded-md border border-amber-400/60 bg-amber-400/10 px-3 py-2 text-sm font-medium text-amber-200 hover:bg-amber-400/15 text-center transition-colors ${selectedParts.length === 0 ? \"opacity-40 cursor-not-allowed pointer-events-none\" : \"\"}`,\n children: \"Continue to Buy\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 192,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>{\n setBuild({});\n localStorage.removeItem(STORAGE_KEY);\n },\n disabled: selectedParts.length === 0,\n className: `w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-3 py-2 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors ${selectedParts.length === 0 ? \"opacity-40 cursor-not-allowed\" : \"\"}`,\n children: \"Clear Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 202,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-[0.7rem] text-zinc-500\",\n children: \"View your build summary with affiliate links and sharing options.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 217,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 191,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 144,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 121,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 92,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 91,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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cC9ndW5idWlsZGVyL3BhZ2UudHN4PzA1NDAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7IHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB7IHVzZVNlYXJjaFBhcmFtcywgdXNlUm91dGVyIH0gZnJvbSBcIm5leHQvbmF2aWdhdGlvblwiO1xuaW1wb3J0IHsgQ0FURUdPUklFUywgUEFSVFMgfSBmcm9tIFwiQC9kYXRhL2d1bmJ1aWxkZXJQYXJ0c1wiO1xuaW1wb3J0IHR5cGUgeyBDYXRlZ29yeUlkLCBQYXJ0IH0gZnJvbSBcIkAvdHlwZXMvZ3VuYnVpbGRlclwiO1xuaW1wb3J0IHsgQ2F0ZWdvcnlDb2x1bW4gfSBmcm9tIFwiQC9jb21wb25lbnRzL0NhdGVnb3J5Q29sdW1uXCI7XG5cbnR5cGUgQnVpbGRTdGF0ZSA9IFBhcnRpYWw8UmVjb3JkPENhdGVnb3J5SWQsIHN0cmluZz4+OyAvLyBjYXRlZ29yeUlkIC0+IHBhcnRJZFxuXG5jb25zdCBTVE9SQUdFX0tFWSA9IFwiZ3VuYnVpbGRlci1idWlsZC1zdGF0ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHdW5idWlsZGVyUGFnZSgpIHtcbiAgY29uc3Qgc2VhcmNoUGFyYW1zID0gdXNlU2VhcmNoUGFyYW1zKCk7XG4gIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpO1xuICBjb25zdCBbYnVpbGQsIHNldEJ1aWxkXSA9IHVzZVN0YXRlPEJ1aWxkU3RhdGU+KCgpID0+IHtcbiAgICAvLyBJbml0aWFsaXplIGZyb20gbG9jYWxTdG9yYWdlIGlmIGF2YWlsYWJsZVxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBjb25zdCBzdG9yZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWSk7XG4gICAgICBpZiAoc3RvcmVkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RvcmVkKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfSk7XG5cbiAgLy8gSGFuZGxlIFVSTCBxdWVyeSBwYXJhbWV0ZXIgZm9yIHBhcnQgc2VsZWN0aW9uXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0UGFyYW0gPSBzZWFyY2hQYXJhbXMuZ2V0KFwic2VsZWN0XCIpO1xuICAgIGlmIChzZWxlY3RQYXJhbSkge1xuICAgICAgY29uc3QgW2NhdGVnb3J5SWQsIHBhcnRJZF0gPSBzZWxlY3RQYXJhbS5zcGxpdChcIjpcIik7XG4gICAgICBpZiAoY2F0ZWdvcnlJZCAmJiBwYXJ0SWQgJiYgQ0FURUdPUklFUy5zb21lKChjKSA9PiBjLmlkID09PSBjYXRlZ29yeUlkKSkge1xuICAgICAgICBzZXRCdWlsZCgocHJldikgPT4ge1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWQgPSB7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgW2NhdGVnb3J5SWRdOiBwYXJ0SWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgICAvLyBQZXJzaXN0IHRvIGxvY2FsU3RvcmFnZVxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFNUT1JBR0VfS0VZLCBKU09OLnN0cmluZ2lmeSh1cGRhdGVkKSk7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBSZW1vdmUgcXVlcnkgcGFyYW0gZnJvbSBVUkxcbiAgICAgICAgcm91dGVyLnJlcGxhY2UoXCIvZ3VuYnVpbGRlclwiLCB7IHNjcm9sbDogZmFsc2UgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbc2VhcmNoUGFyYW1zLCByb3V0ZXJdKTtcblxuICAvLyBQZXJzaXN0IGJ1aWxkIHN0YXRlIHRvIGxvY2FsU3RvcmFnZSB3aGVuZXZlciBpdCBjaGFuZ2VzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFNUT1JBR0VfS0VZLCBKU09OLnN0cmluZ2lmeShidWlsZCkpO1xuICAgIH1cbiAgfSwgW2J1aWxkXSk7XG5cbiAgY29uc3QgcGFydHNCeUNhdGVnb3J5OiBSZWNvcmQ8Q2F0ZWdvcnlJZCwgUGFydFtdPiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGdyb3VwZWQgPSB7fSBhcyBSZWNvcmQ8Q2F0ZWdvcnlJZCwgUGFydFtdPjtcbiAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIENBVEVHT1JJRVMpIHtcbiAgICAgIGdyb3VwZWRbY2F0ZWdvcnkuaWRdID0gUEFSVFMuZmlsdGVyKFxuICAgICAgICAocCkgPT4gcC5jYXRlZ29yeUlkID09PSBjYXRlZ29yeS5pZCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBncm91cGVkO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgc2VsZWN0ZWRQYXJ0czogUGFydFtdID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGJ1aWxkKVxuICAgICAgLm1hcCgoW2NhdGVnb3J5SWQsIHBhcnRJZF0pID0+XG4gICAgICAgIFBBUlRTLmZpbmQoKHApID0+IHAuaWQgPT09IHBhcnRJZCAmJiBwLmNhdGVnb3J5SWQgPT09IGNhdGVnb3J5SWQpLFxuICAgICAgKVxuICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBQYXJ0W107XG4gIH0sIFtidWlsZF0pO1xuXG4gIGNvbnN0IHRvdGFsUHJpY2UgPSB1c2VNZW1vKFxuICAgICgpID0+IHNlbGVjdGVkUGFydHMucmVkdWNlKChzdW0sIHApID0+IHN1bSArIHAucHJpY2UsIDApLFxuICAgIFtzZWxlY3RlZFBhcnRzXSxcbiAgKTtcblxuICBjb25zdCBoYW5kbGVTZWxlY3RQYXJ0ID0gKGNhdGVnb3J5SWQ6IENhdGVnb3J5SWQsIHBhcnRJZDogc3RyaW5nKSA9PiB7XG4gICAgc2V0QnVpbGQoKHByZXYpID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgW2NhdGVnb3J5SWRdOiBwYXJ0SWQsXG4gICAgfSkpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIG1heC13LTZ4bCBweC00IHB5LTYgbGc6cHktMTBcIj5cbiAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJtYi02IGZsZXggZmxleC1jb2wgZ2FwLTIgbWQ6ZmxleC1yb3cgbWQ6aXRlbXMtZW5kIG1kOmp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWzAuMmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICBTaGFkb3cgU3RhbmRhcmRcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJtdC0xIHRleHQtMnhsIG1kOnRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRcIj5cbiAgICAgICAgICAgICAgR3VuYnVpbGRlciA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWFtYmVyLTMwMFwiPlByb3RvdHlwZTwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0yIHRleHQtc20gdGV4dC16aW5jLTQwMCBtYXgtdy14bFwiPlxuICAgICAgICAgICAgICBDaG9vc2Ugb25lIHBhcnQgcGVyIGNhdGVnb3J5IHRvIGFzc2VtYmxlIGFuIEFSLTE1IGJ1aWxkLiBQcmljZXNcbiAgICAgICAgICAgICAgYW5kIGxpbmtzIGFyZSBtb2NrIGRhdGEgZm9yIG5vd+KAlGJ1dCB0aGUgZmxvdyBpcyBjbG9zZSB0byB3aGF0XG4gICAgICAgICAgICAgIHRoZSByZWFsIHRvb2wgd2lsbCBiZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMyBtZDptdC0wXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTQwMFwiPkN1cnJlbnQgYnVpbGQgdG90YWw8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMFwiPlxuICAgICAgICAgICAgICAke3RvdGFsUHJpY2UudG9GaXhlZCgyKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAge3NlbGVjdGVkUGFydHMubGVuZ3RofSAvIHtDQVRFR09SSUVTLmxlbmd0aH0gY2F0ZWdvcmllcyBmaWxsZWRcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICB7LyogTGF5b3V0ICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ2FwLTQgbGc6Z3JpZC1jb2xzLVszZnIsMS4yNWZyXVwiPlxuICAgICAgICAgIHsvKiBDYXRlZ29yaWVzL3BhcnRzICovfVxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTk1MC82MCBwLTMgbWQ6cC00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ2FwLTQgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTNcIj5cbiAgICAgICAgICAgICAge0NBVEVHT1JJRVMubWFwKChjYXRlZ29yeSkgPT4gKFxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGtleT17Y2F0ZWdvcnkuaWR9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJib3JkZXIgYm9yZGVyLXppbmMtODAwIHJvdW5kZWQtbWQgcC0yIG1kOnAtMyBiZy16aW5jLTk1MC82MFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPENhdGVnb3J5Q29sdW1uXG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PXtjYXRlZ29yeX1cbiAgICAgICAgICAgICAgICAgICAgcGFydHM9e3BhcnRzQnlDYXRlZ29yeVtjYXRlZ29yeS5pZF19XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUGFydElkPXtidWlsZFtjYXRlZ29yeS5pZF19XG4gICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0UGFydD17KHBhcnRJZCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RQYXJ0KGNhdGVnb3J5LmlkLCBwYXJ0SWQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgey8qIEJ1aWxkIFN1bW1hcnkgKi99XG4gICAgICAgICAgPGFzaWRlIGNsYXNzTmFtZT1cInJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTk1MC84MCBwLTMgbWQ6cC00IGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWzAuMTZlbV0gdXBwZXJjYXNlIHRleHQtemluYy00MDAgbWItM1wiPlxuICAgICAgICAgICAgICBDdXJyZW50IEJ1aWxkXG4gICAgICAgICAgICA8L2gyPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBvdmVyZmxvdy15LWF1dG8gcHItMVwiPlxuICAgICAgICAgICAgICB7c2VsZWN0ZWRQYXJ0cy5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICAgICAgU2VsZWN0IGEgcGFydCBmcm9tIGVhY2ggY2F0ZWdvcnkgdG8gc3RhcnQgeW91ciBidWlsZC5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICAgICAgICAgIHtDQVRFR09SSUVTLm1hcCgoY2F0KSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFBhcnRJZCA9IGJ1aWxkW2NhdC5pZF07XG4gICAgICAgICAgICAgICAgICBjb25zdCBwYXJ0ID0gUEFSVFMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKHApID0+IHAuaWQgPT09IHNlbGVjdGVkUGFydElkICYmIHAuY2F0ZWdvcnlJZCA9PT0gY2F0LmlkLFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxsaSBrZXk9e2NhdC5pZH0+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LVswLjdyZW1dIHVwcGVyY2FzZSB0cmFja2luZy1bMC4xNmVtXSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2F0Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAge3BhcnQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTEgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXppbmMtNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXppbmMtNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5icmFuZH17XCIgXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMCB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cGFydC5wcmljZS50b0ZpeGVkKDIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTEgdGV4dC14cyB0ZXh0LXppbmMtNjAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBzZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIENUQSAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBib3JkZXItdCBib3JkZXItemluYy04MDAgcHQtMyBzcGFjZS15LTJcIj5cbiAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICBocmVmPVwiL2d1bmJ1aWxkZXIvYnVpbGRcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGJsb2NrIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYW1iZXItNDAwLzYwIGJnLWFtYmVyLTQwMC8xMCBweC0zIHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWFtYmVyLTIwMCBob3ZlcjpiZy1hbWJlci00MDAvMTUgdGV4dC1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnMgJHtcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUGFydHMubGVuZ3RoID09PSAwXG4gICAgICAgICAgICAgICAgICAgID8gXCJvcGFjaXR5LTQwIGN1cnNvci1ub3QtYWxsb3dlZCBwb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBDb250aW51ZSB0byBCdXlcbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgc2V0QnVpbGQoe30pO1xuICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oU1RPUkFHRV9LRVkpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbGVjdGVkUGFydHMubGVuZ3RoID09PSAwfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05MDAvNTAgcHgtMyBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy02MDAgdHJhbnNpdGlvbi1jb2xvcnMgJHtcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUGFydHMubGVuZ3RoID09PSAwXG4gICAgICAgICAgICAgICAgICAgID8gXCJvcGFjaXR5LTQwIGN1cnNvci1ub3QtYWxsb3dlZFwiXG4gICAgICAgICAgICAgICAgICAgIDogXCJcIlxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQ2xlYXIgQnVpbGRcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTIgdGV4dC1bMC43cmVtXSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgICAgVmlldyB5b3VyIGJ1aWxkIHN1bW1hcnkgd2l0aCBhZmZpbGlhdGUgbGlua3MgYW5kIHNoYXJpbmcgb3B0aW9ucy5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hc2lkZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21haW4+XG4gICk7XG59XG4iXSwibmFtZXMiOlsidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiTGluayIsInVzZVNlYXJjaFBhcmFtcyIsInVzZVJvdXRlciIsIkNBVEVHT1JJRVMiLCJQQVJUUyIsIkNhdGVnb3J5Q29sdW1uIiwiU1RPUkFHRV9LRVkiLCJHdW5idWlsZGVyUGFnZSIsInNlYXJjaFBhcmFtcyIsInJvdXRlciIsImJ1aWxkIiwic2V0QnVpbGQiLCJzdG9yZWQiLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwiSlNPTiIsInBhcnNlIiwic2VsZWN0UGFyYW0iLCJnZXQiLCJjYXRlZ29yeUlkIiwicGFydElkIiwic3BsaXQiLCJzb21lIiwiYyIsImlkIiwicHJldiIsInVwZGF0ZWQiLCJzZXRJdGVtIiwic3RyaW5naWZ5IiwicmVwbGFjZSIsInNjcm9sbCIsInBhcnRzQnlDYXRlZ29yeSIsImdyb3VwZWQiLCJjYXRlZ29yeSIsImZpbHRlciIsInAiLCJzZWxlY3RlZFBhcnRzIiwiT2JqZWN0IiwiZW50cmllcyIsIm1hcCIsImZpbmQiLCJCb29sZWFuIiwidG90YWxQcmljZSIsInJlZHVjZSIsInN1bSIsInByaWNlIiwiaGFuZGxlU2VsZWN0UGFydCIsIm1haW4iLCJjbGFzc05hbWUiLCJkaXYiLCJoZWFkZXIiLCJoMSIsInNwYW4iLCJ0b0ZpeGVkIiwibGVuZ3RoIiwic2VjdGlvbiIsInBhcnRzIiwic2VsZWN0ZWRQYXJ0SWQiLCJvblNlbGVjdFBhcnQiLCJhc2lkZSIsImgyIiwidWwiLCJjYXQiLCJwYXJ0IiwibGkiLCJuYW1lIiwiYnJhbmQiLCJocmVmIiwiYnV0dG9uIiwidHlwZSIsIm9uQ2xpY2siLCJyZW1vdmVJdGVtIiwiZGlzYWJsZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./app/gunbuilder/page.tsx\n"); /***/ }), @@ -148,7 +148,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__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 */ CategoryColumn: () => (/* binding */ CategoryColumn)\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 next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var _components_PartCard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/PartCard */ \"(ssr)/./components/PartCard.tsx\");\n/* __next_internal_client_entry_do_not_use__ CategoryColumn auto */ \n\n\nfunction CategoryColumn({ category, parts, selectedPartId, onSelectPart }) {\n // Show selected part if available, otherwise show placeholder\n const displayedPart = selectedPartId ? parts.find((p)=>p.id === selectedPartId) : null;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.15em] text-zinc-400 uppercase\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 28,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 27,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-y-auto pr-1\",\n children: [\n parts.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500\",\n children: \"No parts yet for this category.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 34,\n columnNumber: 11\n }, this),\n !displayedPart && parts.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full border border-zinc-700 rounded-md p-3 mb-2 text-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500\",\n children: \"Choose a Part\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 38,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 37,\n columnNumber: 11\n }, this),\n displayedPart && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_PartCard__WEBPACK_IMPORTED_MODULE_2__.PartCard, {\n part: displayedPart,\n selected: displayedPart.id === selectedPartId,\n onSelect: ()=>onSelectPart(displayedPart.id)\n }, displayedPart.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 42,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 32,\n columnNumber: 7\n }, this),\n parts.length > 1 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: `/gunbuilder/${category.id}`,\n className: \"mt-2 w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-3 py-2 text-xs font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors text-center\",\n children: [\n \"View All (\",\n parts.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 51,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 26,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb21wb25lbnRzL0NhdGVnb3J5Q29sdW1uLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFNkI7QUFFb0I7QUFTMUMsU0FBU0UsZUFBZSxFQUM3QkMsUUFBUSxFQUNSQyxLQUFLLEVBQ0xDLGNBQWMsRUFDZEMsWUFBWSxFQUNRO0lBQ3BCLDhEQUE4RDtJQUM5RCxNQUFNQyxnQkFBZ0JGLGlCQUNsQkQsTUFBTUksSUFBSSxDQUFDLENBQUNDLElBQU1BLEVBQUVDLEVBQUUsS0FBS0wsa0JBQzNCO0lBRUoscUJBQ0UsOERBQUNNO1FBQUlDLFdBQVU7OzBCQUNiLDhEQUFDRDtnQkFBSUMsV0FBVTswQkFDYiw0RUFBQ0M7b0JBQUdELFdBQVU7OEJBQ1hULFNBQVNXLElBQUk7Ozs7Ozs7Ozs7OzBCQUdsQiw4REFBQ0g7Z0JBQUlDLFdBQVU7O29CQUNaUixNQUFNVyxNQUFNLEtBQUssbUJBQ2hCLDhEQUFDTjt3QkFBRUcsV0FBVTtrQ0FBd0I7Ozs7OztvQkFFdEMsQ0FBQ0wsaUJBQWlCSCxNQUFNVyxNQUFNLEdBQUcsbUJBQ2hDLDhEQUFDSjt3QkFBSUMsV0FBVTtrQ0FDYiw0RUFBQ0g7NEJBQUVHLFdBQVU7c0NBQXdCOzs7Ozs7Ozs7OztvQkFHeENMLCtCQUNDLDhEQUFDTiwwREFBUUE7d0JBRVBlLE1BQU1UO3dCQUNOVSxVQUFVVixjQUFjRyxFQUFFLEtBQUtMO3dCQUMvQmEsVUFBVSxJQUFNWixhQUFhQyxjQUFjRyxFQUFFO3VCQUh4Q0gsY0FBY0csRUFBRTs7Ozs7Ozs7Ozs7WUFPMUJOLE1BQU1XLE1BQU0sR0FBRyxtQkFDZCw4REFBQ2YsaURBQUlBO2dCQUNIbUIsTUFBTSxDQUFDLFlBQVksRUFBRWhCLFNBQVNPLEVBQUUsQ0FBQyxDQUFDO2dCQUNsQ0UsV0FBVTs7b0JBQ1g7b0JBQ1lSLE1BQU1XLE1BQU07b0JBQUM7Ozs7Ozs7Ozs7Ozs7QUFLbEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2NvbXBvbmVudHMvQ2F0ZWdvcnlDb2x1bW4udHN4PzljMTgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB0eXBlIHsgQ2F0ZWdvcnksIFBhcnQgfSBmcm9tIFwiQC90eXBlcy9ndW5idWlsZGVyXCI7XG5pbXBvcnQgeyBQYXJ0Q2FyZCB9IGZyb20gXCJAL2NvbXBvbmVudHMvUGFydENhcmRcIjtcblxuaW50ZXJmYWNlIENhdGVnb3J5Q29sdW1uUHJvcHMge1xuICBjYXRlZ29yeTogQ2F0ZWdvcnk7XG4gIHBhcnRzOiBQYXJ0W107XG4gIHNlbGVjdGVkUGFydElkPzogc3RyaW5nO1xuICBvblNlbGVjdFBhcnQ6IChwYXJ0SWQ6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENhdGVnb3J5Q29sdW1uKHtcbiAgY2F0ZWdvcnksXG4gIHBhcnRzLFxuICBzZWxlY3RlZFBhcnRJZCxcbiAgb25TZWxlY3RQYXJ0LFxufTogQ2F0ZWdvcnlDb2x1bW5Qcm9wcykge1xuICAvLyBTaG93IHNlbGVjdGVkIHBhcnQgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2Ugc2hvdyBwbGFjZWhvbGRlclxuICBjb25zdCBkaXNwbGF5ZWRQYXJ0ID0gc2VsZWN0ZWRQYXJ0SWRcbiAgICA/IHBhcnRzLmZpbmQoKHApID0+IHAuaWQgPT09IHNlbGVjdGVkUGFydElkKVxuICAgIDogbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBoLWZ1bGxcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItM1wiPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjE1ZW1dIHRleHQtemluYy00MDAgdXBwZXJjYXNlXCI+XG4gICAgICAgICAge2NhdGVnb3J5Lm5hbWV9XG4gICAgICAgIDwvaDI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG92ZXJmbG93LXktYXV0byBwci0xXCI+XG4gICAgICAgIHtwYXJ0cy5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMFwiPk5vIHBhcnRzIHlldCBmb3IgdGhpcyBjYXRlZ29yeS48L3A+XG4gICAgICAgICl9XG4gICAgICAgIHshZGlzcGxheWVkUGFydCAmJiBwYXJ0cy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIHJvdW5kZWQtbWQgcC0zIG1iLTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTUwMFwiPkNob29zZSBhIFBhcnQ8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICAgIHtkaXNwbGF5ZWRQYXJ0ICYmIChcbiAgICAgICAgICA8UGFydENhcmRcbiAgICAgICAgICAgIGtleT17ZGlzcGxheWVkUGFydC5pZH1cbiAgICAgICAgICAgIHBhcnQ9e2Rpc3BsYXllZFBhcnR9XG4gICAgICAgICAgICBzZWxlY3RlZD17ZGlzcGxheWVkUGFydC5pZCA9PT0gc2VsZWN0ZWRQYXJ0SWR9XG4gICAgICAgICAgICBvblNlbGVjdD17KCkgPT4gb25TZWxlY3RQYXJ0KGRpc3BsYXllZFBhcnQuaWQpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICAgIHtwYXJ0cy5sZW5ndGggPiAxICYmIChcbiAgICAgICAgPExpbmtcbiAgICAgICAgICBocmVmPXtgL2d1bmJ1aWxkZXIvJHtjYXRlZ29yeS5pZH1gfVxuICAgICAgICAgIGNsYXNzTmFtZT1cIm10LTIgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC81MCBweC0zIHB5LTIgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtMzAwIGhvdmVyOmJnLXppbmMtODAwIGhvdmVyOmJvcmRlci16aW5jLTYwMCB0cmFuc2l0aW9uLWNvbG9ycyB0ZXh0LWNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICBWaWV3IEFsbCAoe3BhcnRzLmxlbmd0aH0pXG4gICAgICAgIDwvTGluaz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXSwibmFtZXMiOlsiTGluayIsIlBhcnRDYXJkIiwiQ2F0ZWdvcnlDb2x1bW4iLCJjYXRlZ29yeSIsInBhcnRzIiwic2VsZWN0ZWRQYXJ0SWQiLCJvblNlbGVjdFBhcnQiLCJkaXNwbGF5ZWRQYXJ0IiwiZmluZCIsInAiLCJpZCIsImRpdiIsImNsYXNzTmFtZSIsImgyIiwibmFtZSIsImxlbmd0aCIsInBhcnQiLCJzZWxlY3RlZCIsIm9uU2VsZWN0IiwiaHJlZiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./components/CategoryColumn.tsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CategoryColumn: () => (/* binding */ CategoryColumn)\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 next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var _components_PartCard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/PartCard */ \"(ssr)/./components/PartCard.tsx\");\n/* __next_internal_client_entry_do_not_use__ CategoryColumn auto */ \n\n\nfunction CategoryColumn({ category, parts, selectedPartId, onSelectPart }) {\n // Show selected part if available, otherwise show placeholder\n const displayedPart = selectedPartId ? parts.find((p)=>p.id === selectedPartId) : null;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.15em] text-zinc-400 uppercase\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 28,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 27,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-y-auto pr-1\",\n children: [\n parts.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500\",\n children: \"No parts yet for this category.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 34,\n columnNumber: 11\n }, this),\n !displayedPart && parts.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full border border-zinc-700 rounded-md p-3 mb-2 text-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500 flex items-center justify-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-4 h-4\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M12 4v16m8-8H4\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 45,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 39,\n columnNumber: 15\n }, this),\n \"Choose a Part\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 38,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 37,\n columnNumber: 11\n }, this),\n displayedPart && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_PartCard__WEBPACK_IMPORTED_MODULE_2__.PartCard, {\n part: displayedPart,\n selected: displayedPart.id === selectedPartId,\n onSelect: ()=>onSelectPart(displayedPart.id)\n }, displayedPart.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 57,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 32,\n columnNumber: 7\n }, this),\n parts.length > 1 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: `/gunbuilder/${category.id}`,\n className: \"mt-2 w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-3 py-2 text-xs font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors text-center\",\n children: [\n \"View All (\",\n parts.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 66,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 26,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb21wb25lbnRzL0NhdGVnb3J5Q29sdW1uLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFNkI7QUFFb0I7QUFTMUMsU0FBU0UsZUFBZSxFQUM3QkMsUUFBUSxFQUNSQyxLQUFLLEVBQ0xDLGNBQWMsRUFDZEMsWUFBWSxFQUNRO0lBQ3BCLDhEQUE4RDtJQUM5RCxNQUFNQyxnQkFBZ0JGLGlCQUNsQkQsTUFBTUksSUFBSSxDQUFDLENBQUNDLElBQU1BLEVBQUVDLEVBQUUsS0FBS0wsa0JBQzNCO0lBRUoscUJBQ0UsOERBQUNNO1FBQUlDLFdBQVU7OzBCQUNiLDhEQUFDRDtnQkFBSUMsV0FBVTswQkFDYiw0RUFBQ0M7b0JBQUdELFdBQVU7OEJBQ1hULFNBQVNXLElBQUk7Ozs7Ozs7Ozs7OzBCQUdsQiw4REFBQ0g7Z0JBQUlDLFdBQVU7O29CQUNaUixNQUFNVyxNQUFNLEtBQUssbUJBQ2hCLDhEQUFDTjt3QkFBRUcsV0FBVTtrQ0FBd0I7Ozs7OztvQkFFdEMsQ0FBQ0wsaUJBQWlCSCxNQUFNVyxNQUFNLEdBQUcsbUJBQ2hDLDhEQUFDSjt3QkFBSUMsV0FBVTtrQ0FDYiw0RUFBQ0g7NEJBQUVHLFdBQVU7OzhDQUNYLDhEQUFDSTtvQ0FDQ0osV0FBVTtvQ0FDVkssTUFBSztvQ0FDTEMsUUFBTztvQ0FDUEMsU0FBUTs4Q0FFUiw0RUFBQ0M7d0NBQ0NDLGVBQWM7d0NBQ2RDLGdCQUFlO3dDQUNmQyxhQUFhO3dDQUNiQyxHQUFFOzs7Ozs7Ozs7OztnQ0FFQTs7Ozs7Ozs7Ozs7O29CQUtYakIsK0JBQ0MsOERBQUNOLDBEQUFRQTt3QkFFUHdCLE1BQU1sQjt3QkFDTm1CLFVBQVVuQixjQUFjRyxFQUFFLEtBQUtMO3dCQUMvQnNCLFVBQVUsSUFBTXJCLGFBQWFDLGNBQWNHLEVBQUU7dUJBSHhDSCxjQUFjRyxFQUFFOzs7Ozs7Ozs7OztZQU8xQk4sTUFBTVcsTUFBTSxHQUFHLG1CQUNkLDhEQUFDZixpREFBSUE7Z0JBQ0g0QixNQUFNLENBQUMsWUFBWSxFQUFFekIsU0FBU08sRUFBRSxDQUFDLENBQUM7Z0JBQ2xDRSxXQUFVOztvQkFDWDtvQkFDWVIsTUFBTVcsTUFBTTtvQkFBQzs7Ozs7Ozs7Ozs7OztBQUtsQyIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLy4vY29tcG9uZW50cy9DYXRlZ29yeUNvbHVtbi50c3g/OWMxOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xuaW1wb3J0IHR5cGUgeyBDYXRlZ29yeSwgUGFydCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcbmltcG9ydCB7IFBhcnRDYXJkIH0gZnJvbSBcIkAvY29tcG9uZW50cy9QYXJ0Q2FyZFwiO1xuXG5pbnRlcmZhY2UgQ2F0ZWdvcnlDb2x1bW5Qcm9wcyB7XG4gIGNhdGVnb3J5OiBDYXRlZ29yeTtcbiAgcGFydHM6IFBhcnRbXTtcbiAgc2VsZWN0ZWRQYXJ0SWQ/OiBzdHJpbmc7XG4gIG9uU2VsZWN0UGFydDogKHBhcnRJZDogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2F0ZWdvcnlDb2x1bW4oe1xuICBjYXRlZ29yeSxcbiAgcGFydHMsXG4gIHNlbGVjdGVkUGFydElkLFxuICBvblNlbGVjdFBhcnQsXG59OiBDYXRlZ29yeUNvbHVtblByb3BzKSB7XG4gIC8vIFNob3cgc2VsZWN0ZWQgcGFydCBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBzaG93IHBsYWNlaG9sZGVyXG4gIGNvbnN0IGRpc3BsYXllZFBhcnQgPSBzZWxlY3RlZFBhcnRJZFxuICAgID8gcGFydHMuZmluZCgocCkgPT4gcC5pZCA9PT0gc2VsZWN0ZWRQYXJ0SWQpXG4gICAgOiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGgtZnVsbFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi0zXCI+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWzAuMTVlbV0gdGV4dC16aW5jLTQwMCB1cHBlcmNhc2VcIj5cbiAgICAgICAgICB7Y2F0ZWdvcnkubmFtZX1cbiAgICAgICAgPC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgb3ZlcmZsb3cteS1hdXRvIHByLTFcIj5cbiAgICAgICAge3BhcnRzLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+Tm8gcGFydHMgeWV0IGZvciB0aGlzIGNhdGVnb3J5LjwvcD5cbiAgICAgICAgKX1cbiAgICAgICAgeyFkaXNwbGF5ZWRQYXJ0ICYmIHBhcnRzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGJvcmRlciBib3JkZXItemluYy03MDAgcm91bmRlZC1tZCBwLTMgbWItMiB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXppbmMtNTAwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTQgaC00XCJcbiAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTIgNHYxNm04LThINFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIENob29zZSBhIFBhcnRcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAge2Rpc3BsYXllZFBhcnQgJiYgKFxuICAgICAgICAgIDxQYXJ0Q2FyZFxuICAgICAgICAgICAga2V5PXtkaXNwbGF5ZWRQYXJ0LmlkfVxuICAgICAgICAgICAgcGFydD17ZGlzcGxheWVkUGFydH1cbiAgICAgICAgICAgIHNlbGVjdGVkPXtkaXNwbGF5ZWRQYXJ0LmlkID09PSBzZWxlY3RlZFBhcnRJZH1cbiAgICAgICAgICAgIG9uU2VsZWN0PXsoKSA9PiBvblNlbGVjdFBhcnQoZGlzcGxheWVkUGFydC5pZCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAge3BhcnRzLmxlbmd0aCA+IDEgJiYgKFxuICAgICAgICA8TGlua1xuICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlci8ke2NhdGVnb3J5LmlkfWB9XG4gICAgICAgICAgY2xhc3NOYW1lPVwibXQtMiB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzUwIHB4LTMgcHktMiB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtemluYy0zMDAgaG92ZXI6YmctemluYy04MDAgaG92ZXI6Ym9yZGVyLXppbmMtNjAwIHRyYW5zaXRpb24tY29sb3JzIHRleHQtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIFZpZXcgQWxsICh7cGFydHMubGVuZ3RofSlcbiAgICAgICAgPC9MaW5rPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJMaW5rIiwiUGFydENhcmQiLCJDYXRlZ29yeUNvbHVtbiIsImNhdGVnb3J5IiwicGFydHMiLCJzZWxlY3RlZFBhcnRJZCIsIm9uU2VsZWN0UGFydCIsImRpc3BsYXllZFBhcnQiLCJmaW5kIiwicCIsImlkIiwiZGl2IiwiY2xhc3NOYW1lIiwiaDIiLCJuYW1lIiwibGVuZ3RoIiwic3ZnIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwicGFydCIsInNlbGVjdGVkIiwib25TZWxlY3QiLCJocmVmIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./components/CategoryColumn.tsx\n"); /***/ }), diff --git a/.next/server/app/gunbuilder/page_client-reference-manifest.js b/.next/server/app/gunbuilder/page_client-reference-manifest.js index 82f2267..c583511 100644 --- a/.next/server/app/gunbuilder/page_client-reference-manifest.js +++ b/.next/server/app/gunbuilder/page_client-reference-manifest.js @@ -1 +1 @@ -globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/gunbuilder/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./node_modules/next/dist/client/link.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/link.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/page.tsx","name":"*","chunks":["app/gunbuilder/page","static/chunks/app/gunbuilder/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/sean/Dev/gunbuilder-prototype/":[],"/Users/sean/Dev/gunbuilder-prototype/app/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/layout":["static/css/app/layout.css"],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page":[]}} \ No newline at end of file +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/gunbuilder/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./node_modules/next/dist/client/link.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/link.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/build/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/build/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/page.tsx","name":"*","chunks":["app/gunbuilder/page","static/chunks/app/gunbuilder/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/build/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/sean/Dev/gunbuilder-prototype/":[],"/Users/sean/Dev/gunbuilder-prototype/app/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/layout":["static/css/app/layout.css"],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page":[]}} \ No newline at end of file diff --git a/.next/server/app/page_client-reference-manifest.js b/.next/server/app/page_client-reference-manifest.js index 389a4c9..162c420 100644 --- a/.next/server/app/page_client-reference-manifest.js +++ b/.next/server/app/page_client-reference-manifest.js @@ -1 +1 @@ -globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./node_modules/next/dist/client/link.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/link.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/sean/Dev/gunbuilder-prototype/":[],"/Users/sean/Dev/gunbuilder-prototype/app/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/layout":["static/css/app/layout.css"]}} \ No newline at end of file +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./node_modules/next/dist/client/link.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/link.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/build/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/build/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/build/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/sean/Dev/gunbuilder-prototype/":[],"/Users/sean/Dev/gunbuilder-prototype/app/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/layout":["static/css/app/layout.css"]}} \ No newline at end of file diff --git a/.next/server/vendor-chunks/next.js b/.next/server/vendor-chunks/next.js index 1427964..7c78788 100644 --- a/.next/server/vendor-chunks/next.js +++ b/.next/server/vendor-chunks/next.js @@ -1975,6 +1975,17 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ }), +/***/ "(rsc)/./node_modules/next/dist/api/link.js": +/*!********************************************!*\ + !*** ./node_modules/next/dist/api/link.js ***! + \********************************************/ +/***/ ((__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\": () => (/* reexport default from dynamic */ _client_link__WEBPACK_IMPORTED_MODULE_0___default.a)\n/* harmony export */ });\n/* harmony import */ var _client_link__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../client/link */ \"(rsc)/./node_modules/next/dist/client/link.js\");\n/* harmony import */ var _client_link__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_client_link__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _client_link__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _client_link__WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n\n//# sourceMappingURL=link.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2FwaS9saW5rLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUF5QztBQUNWOztBQUUvQiIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9hcGkvbGluay5qcz9lZmQ0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLi4vY2xpZW50L2xpbmtcIjtcbmV4cG9ydCAqIGZyb20gXCIuLi9jbGllbnQvbGlua1wiO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1saW5rLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/api/link.js\n"); + +/***/ }), + /***/ "(rsc)/./node_modules/next/dist/build/output/log.js": /*!****************************************************!*\ !*** ./node_modules/next/dist/build/output/log.js ***! @@ -2129,6 +2140,21 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n StaticGenBailoutError: function() {\n return StaticGenBailoutError;\n },\n isStaticGenBailoutError: function() {\n return isStaticGenBailoutError;\n }\n});\nconst NEXT_STATIC_GEN_BAILOUT = \"NEXT_STATIC_GEN_BAILOUT\";\nclass StaticGenBailoutError extends Error {\n constructor(...args){\n super(...args);\n this.code = NEXT_STATIC_GEN_BAILOUT;\n }\n}\nfunction isStaticGenBailoutError(error) {\n if (typeof error !== \"object\" || error === null || !(\"code\" in error)) {\n return false;\n }\n return error.code === NEXT_STATIC_GEN_BAILOUT;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=static-generation-bailout.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3N0YXRpYy1nZW5lcmF0aW9uLWJhaWxvdXQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBRWFBLHVCQUFxQjtlQUFyQkE7O0lBSUdDLHlCQUF1QjtlQUF2QkE7OztBQU5oQixNQUFNQywwQkFBMEI7QUFFekIsTUFBTUYsOEJBQThCRzs7O2FBQ3pCQyxJQUFBQSxHQUFPRjs7QUFDekI7QUFFTyxTQUFTRCx3QkFDZEksS0FBYztJQUVkLElBQUksT0FBT0EsVUFBVSxZQUFZQSxVQUFVLFFBQVEsQ0FBRSxXQUFVQSxLQUFBQSxHQUFRO1FBQ3JFLE9BQU87SUFDVDtJQUVBLE9BQU9BLE1BQU1ELElBQUksS0FBS0Y7QUFDeEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uLi8uLi8uLi9zcmMvY2xpZW50L2NvbXBvbmVudHMvc3RhdGljLWdlbmVyYXRpb24tYmFpbG91dC50cz80YzMxIl0sIm5hbWVzIjpbIlN0YXRpY0dlbkJhaWxvdXRFcnJvciIsImlzU3RhdGljR2VuQmFpbG91dEVycm9yIiwiTkVYVF9TVEFUSUNfR0VOX0JBSUxPVVQiLCJFcnJvciIsImNvZGUiLCJlcnJvciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/client/components/static-generation-bailout.js\n"); +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/client/link.js": +/*!***********************************************!*\ + !*** ./node_modules/next/dist/client/link.js ***! + \***********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/* __next_internal_client_entry_do_not_use__ cjs */ +const { createProxy } = __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"); +module.exports = createProxy("/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/link.js"); + //# sourceMappingURL=link.js.map + + /***/ }), /***/ "(rsc)/./node_modules/next/dist/compiled/@opentelemetry/api/index.js": diff --git a/.next/server/webpack-runtime.js b/.next/server/webpack-runtime.js index d4644b9..27e5b49 100644 --- a/.next/server/webpack-runtime.js +++ b/.next/server/webpack-runtime.js @@ -125,7 +125,7 @@ /******/ /******/ /* webpack/runtime/getFullHash */ /******/ (() => { -/******/ __webpack_require__.h = () => ("df229d3c0d803b21") +/******/ __webpack_require__.h = () => ("f1ed3dd09708e67e") /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ diff --git a/.next/static/chunks/app/_not-found/page.js b/.next/static/chunks/app/_not-found/page.js new file mode 100644 index 0000000..9904048 --- /dev/null +++ b/.next/static/chunks/app/_not-found/page.js @@ -0,0 +1,39 @@ +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([["app/_not-found/page"],{ + +/***/ "(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!": +/*!***************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage! ***! + \***************************************************************************************************************************************************************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +eval(__webpack_require__.ts("\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/_not-found/page\",\n function () {\n return __webpack_require__(/*! ./node_modules/next/dist/client/components/not-found-error.js */ \"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-error.js\");\n }\n ]);\n if(true) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/_not-found/page\"])\n });\n }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtY2xpZW50LXBhZ2VzLWxvYWRlci5qcz9hYnNvbHV0ZVBhZ2VQYXRoPSUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGbm90LWZvdW5kLWVycm9yLmpzJnBhZ2U9JTJGX25vdC1mb3VuZCUyRnBhZ2UhIiwibWFwcGluZ3MiOiI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1CQUFPLENBQUMsd0pBQStEO0FBQ3RGO0FBQ0E7QUFDQSxPQUFPLElBQVU7QUFDakIsTUFBTSxVQUFVO0FBQ2hCO0FBQ0EsT0FBTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLz9jODJhIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICh3aW5kb3cuX19ORVhUX1AgPSB3aW5kb3cuX19ORVhUX1AgfHwgW10pLnB1c2goW1xuICAgICAgXCIvX25vdC1mb3VuZC9wYWdlXCIsXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvci5qc1wiKTtcbiAgICAgIH1cbiAgICBdKTtcbiAgICBpZihtb2R1bGUuaG90KSB7XG4gICAgICBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24gKCkge1xuICAgICAgICB3aW5kb3cuX19ORVhUX1AucHVzaChbXCIvX25vdC1mb3VuZC9wYWdlXCJdKVxuICAgICAgfSk7XG4gICAgfVxuICAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/client/components/not-found-error.js": +/*!*********************************************************************!*\ + !*** ./node_modules/next/dist/client/components/not-found-error.js ***! + \*********************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return NotFound;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nconst styles = {\n error: {\n // https://github.com/sindresorhus/modern-normalize/blob/main/modern-normalize.css#L38-L52\n fontFamily: 'system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"',\n height: \"100vh\",\n textAlign: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\"\n },\n desc: {\n display: \"inline-block\"\n },\n h1: {\n display: \"inline-block\",\n margin: \"0 20px 0 0\",\n padding: \"0 23px 0 0\",\n fontSize: 24,\n fontWeight: 500,\n verticalAlign: \"top\",\n lineHeight: \"49px\"\n },\n h2: {\n fontSize: 14,\n fontWeight: 400,\n lineHeight: \"49px\",\n margin: 0\n }\n};\nfunction NotFound() {\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"title\", {\n children: \"404: This page could not be found.\"\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"div\", {\n style: styles.error,\n children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"div\", {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"style\", {\n dangerouslySetInnerHTML: {\n /* Minified CSS from\n body { margin: 0; color: #000; background: #fff; }\n .next-error-h1 {\n border-right: 1px solid rgba(0, 0, 0, .3);\n }\n\n @media (prefers-color-scheme: dark) {\n body { color: #fff; background: #000; }\n .next-error-h1 {\n border-right: 1px solid rgba(255, 255, 255, .3);\n }\n }\n */ __html: \"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"\n }\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"h1\", {\n className: \"next-error-h1\",\n style: styles.h1,\n children: \"404\"\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"div\", {\n style: styles.desc,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(\"h2\", {\n style: styles.h2,\n children: \"This page could not be found.\"\n })\n })\n ]\n })\n })\n ]\n });\n}\n_c = NotFound;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=not-found-error.js.map\nvar _c;\n$RefreshReg$(_c, \"NotFound\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kLWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7MkNBcUNBOzs7ZUFBd0JBOzs7Ozs0RUFyQ047QUFFbEIsTUFBTUMsU0FBOEM7SUFDbERDLE9BQU87UUFDTCwwRkFBMEY7UUFDMUZDLFlBQ0U7UUFDRkMsUUFBUTtRQUNSQyxXQUFXO1FBQ1hDLFNBQVM7UUFDVEMsZUFBZTtRQUNmQyxZQUFZO1FBQ1pDLGdCQUFnQjtJQUNsQjtJQUVBQyxNQUFNO1FBQ0pKLFNBQVM7SUFDWDtJQUVBSyxJQUFJO1FBQ0ZMLFNBQVM7UUFDVE0sUUFBUTtRQUNSQyxTQUFTO1FBQ1RDLFVBQVU7UUFDVkMsWUFBWTtRQUNaQyxlQUFlO1FBQ2ZDLFlBQVk7SUFDZDtJQUVBQyxJQUFJO1FBQ0ZKLFVBQVU7UUFDVkMsWUFBWTtRQUNaRSxZQUFZO1FBQ1pMLFFBQVE7SUFDVjtBQUNGO0FBRWUsU0FBU1o7SUFDdEIsT0FDRSxXQURGLEdBQ0UsSUFBQW1CLFlBQUFDLElBQUEsRUFBQUQsWUFBQUUsUUFBQTs7MEJBRUUsSUFBQUYsWUFBQUcsR0FBQSxFQUFDQyxTQUFBQTswQkFBTTs7MEJBRVAsSUFBQUosWUFBQUcsR0FBQSxFQUFDRSxPQUFBQTtnQkFBSUMsT0FBT3hCLE9BQU9DLEtBQUs7MEJBQ3RCLGtCQUFBaUIsWUFBQUMsSUFBQSxFQUFDSSxPQUFBQTs7c0NBQ0MsSUFBQUwsWUFBQUcsR0FBQSxFQUFDRyxTQUFBQTs0QkFDQ0MseUJBQXlCO2dDQUN2Qjs7Ozs7Ozs7Ozs7O2NBWUEsR0FDQUMsUUFBUzs0QkFDWDs7c0NBRUYsSUFBQVIsWUFBQUcsR0FBQSxFQUFDWCxNQUFBQTs0QkFBR2lCLFdBQVU7NEJBQWdCSCxPQUFPeEIsT0FBT1UsRUFBRTtzQ0FBRTs7c0NBR2hELElBQUFRLFlBQUFHLEdBQUEsRUFBQ0UsT0FBQUE7NEJBQUlDLE9BQU94QixPQUFPUyxJQUFJO3NDQUNyQixrQkFBQVMsWUFBQUcsR0FBQSxFQUFDSixNQUFBQTtnQ0FBR08sT0FBT3hCLE9BQU9pQixFQUFFOzBDQUFFOzs7Ozs7OztBQU1sQztLQXBDd0JsQiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vLi4vc3JjL2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvci50c3g/ZjcwOSJdLCJuYW1lcyI6WyJOb3RGb3VuZCIsInN0eWxlcyIsImVycm9yIiwiZm9udEZhbWlseSIsImhlaWdodCIsInRleHRBbGlnbiIsImRpc3BsYXkiLCJmbGV4RGlyZWN0aW9uIiwiYWxpZ25JdGVtcyIsImp1c3RpZnlDb250ZW50IiwiZGVzYyIsImgxIiwibWFyZ2luIiwicGFkZGluZyIsImZvbnRTaXplIiwiZm9udFdlaWdodCIsInZlcnRpY2FsQWxpZ24iLCJsaW5lSGVpZ2h0IiwiaDIiLCJfanN4cnVudGltZSIsImpzeHMiLCJGcmFnbWVudCIsImpzeCIsInRpdGxlIiwiZGl2Iiwic3R5bGUiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIl9faHRtbCIsImNsYXNzTmFtZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/not-found-error.js\n")); + +/***/ }) + +}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); } +/******/ __webpack_require__.O(0, ["main-app"], function() { return __webpack_exec__("(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!"); }); +/******/ var __webpack_exports__ = __webpack_require__.O(); +/******/ _N_E = __webpack_exports__; +/******/ } +]); \ No newline at end of file diff --git a/.next/static/chunks/app/gunbuilder/[categoryId]/page.js b/.next/static/chunks/app/gunbuilder/[categoryId]/page.js index 5452788..3824742 100644 --- a/.next/static/chunks/app/gunbuilder/[categoryId]/page.js +++ b/.next/static/chunks/app/gunbuilder/[categoryId]/page.js @@ -47,7 +47,7 @@ eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* har /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ CategoryPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\nfunction CategoryPage() {\n _s();\n const params = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams)();\n const categoryId = params.categoryId;\n const [viewMode, setViewMode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"card\");\n const category = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.find((c)=>c.id === categoryId), [\n categoryId\n ]);\n const parts = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.filter((p)=>p.categoryId === categoryId), [\n categoryId\n ]);\n if (!category) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"Category Not Found\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 31,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-amber-300 hover:text-amber-200 underline\",\n children: \"Return to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 34,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 30,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 29,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 28,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: \"← Back to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 51,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between gap-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)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 59,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n category.name,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: \"Parts\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 63,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 62,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: [\n \"Browse all available \",\n category.name.toLowerCase(),\n \" options for your build.\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 65,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 58,\n columnNumber: 13\n }, this),\n parts.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2 border border-zinc-800 rounded-md p-1 bg-zinc-950/60\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setViewMode(\"card\"),\n className: \"px-3 py-1.5 text-xs font-medium rounded transition-colors \".concat(viewMode === \"card\" ? \"bg-zinc-800 text-zinc-50\" : \"text-zinc-400 hover:text-zinc-300\"),\n \"aria-label\": \"Card view\",\n children: \"Card\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 72,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setViewMode(\"list\"),\n className: \"px-3 py-1.5 text-xs font-medium rounded transition-colors \".concat(viewMode === \"list\" ? \"bg-zinc-800 text-zinc-50\" : \"text-zinc-400 hover:text-zinc-300\"),\n \"aria-label\": \"List view\",\n children: \"List\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 84,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 71,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 57,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 50,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-3 md:p-4\",\n children: parts.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500 text-center py-8\",\n children: \"No parts available for this category yet.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 104,\n columnNumber: 13\n }, this) : viewMode === \"card\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-3 md:grid-cols-2 lg:grid-cols-3\",\n children: parts.map((part)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-zinc-700 rounded-md p-3 bg-zinc-900/50 hover:border-zinc-600 transition-colors flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder?select=\".concat(categoryId, \":\").concat(part.id),\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center gap-2 mb-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-zinc-50\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-normal\",\n children: [\n \"— \",\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 121,\n columnNumber: 40\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 120,\n columnNumber: 25\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-xs text-zinc-400 line-clamp-2\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 124,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 119,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 129,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 118,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 114,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/\".concat(categoryId, \"/\").concat(part.id),\n className: \"w-full rounded-md border border-zinc-700 bg-zinc-800/50 px-3 py-2 text-xs font-medium text-zinc-300 hover:bg-zinc-700 hover:border-zinc-600 transition-colors text-center\",\n children: \"View Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 134,\n columnNumber: 19\n }, this)\n ]\n }, part.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 110,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 108,\n columnNumber: 13\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: parts.map((part)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-zinc-700 rounded-md p-3 bg-zinc-900/50 hover:border-zinc-600 transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 min-w-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder?select=\".concat(categoryId, \":\").concat(part.id),\n className: \"block\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-zinc-50\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-normal\",\n children: [\n \"— \",\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 157,\n columnNumber: 40\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 156,\n columnNumber: 25\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-xs text-zinc-400 line-clamp-1\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 160,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 152,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 151,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 167,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/\".concat(categoryId, \"/\").concat(part.id),\n className: \"rounded-md border border-zinc-700 bg-zinc-800/50 px-3 py-1.5 text-xs font-medium text-zinc-300 hover:bg-zinc-700 hover:border-zinc-600 transition-colors whitespace-nowrap\",\n children: \"View Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 170,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 166,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 150,\n columnNumber: 19\n }, this)\n }, part.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 146,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 144,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 102,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 48,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 47,\n columnNumber: 5\n }, this);\n}\n_s(CategoryPage, \"5PCsUt45I0oNlu6HHaoW7COL+Rc=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams\n ];\n});\n_c = CategoryPage;\nvar _c;\n$RefreshReg$(_c, \"CategoryPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL1tjYXRlZ29yeUlkXS9wYWdlLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFFMEM7QUFDYjtBQUNlO0FBQ2U7QUFLNUMsU0FBU007O0lBQ3RCLE1BQU1DLFNBQVNKLDBEQUFTQTtJQUN4QixNQUFNSyxhQUFhRCxPQUFPQyxVQUFVO0lBQ3BDLE1BQU0sQ0FBQ0MsVUFBVUMsWUFBWSxHQUFHVCwrQ0FBUUEsQ0FBVztJQUVuRCxNQUFNVSxXQUFXWCw4Q0FBT0EsQ0FDdEIsSUFBTUksNkRBQVVBLENBQUNRLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxFQUFFLEtBQUtOLGFBQ3RDO1FBQUNBO0tBQVc7SUFHZCxNQUFNTyxRQUFRZiw4Q0FBT0EsQ0FDbkIsSUFBTUssd0RBQUtBLENBQUNXLE1BQU0sQ0FBQyxDQUFDQyxJQUFNQSxFQUFFVCxVQUFVLEtBQUtBLGFBQzNDO1FBQUNBO0tBQVc7SUFHZCxJQUFJLENBQUNHLFVBQVU7UUFDYixxQkFDRSw4REFBQ087WUFBS0MsV0FBVTtzQkFDZCw0RUFBQ0M7Z0JBQUlELFdBQVU7MEJBQ2IsNEVBQUNDO29CQUFJRCxXQUFVOztzQ0FDYiw4REFBQ0U7NEJBQUdGLFdBQVU7c0NBQTJDOzs7Ozs7c0NBR3pELDhEQUFDakIsaURBQUlBOzRCQUNIb0IsTUFBSzs0QkFDTEgsV0FBVTtzQ0FDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU9YO0lBRUEscUJBQ0UsOERBQUNEO1FBQUtDLFdBQVU7a0JBQ2QsNEVBQUNDO1lBQUlELFdBQVU7OzhCQUViLDhEQUFDSTtvQkFBT0osV0FBVTs7c0NBQ2hCLDhEQUFDakIsaURBQUlBOzRCQUNIb0IsTUFBSzs0QkFDTEgsV0FBVTtzQ0FDWDs7Ozs7O3NDQUdELDhEQUFDQzs0QkFBSUQsV0FBVTs7OENBQ2IsOERBQUNDOztzREFDQyw4REFBQ0g7NENBQUVFLFdBQVU7c0RBQWlFOzs7Ozs7c0RBRzlFLDhEQUFDRTs0Q0FBR0YsV0FBVTs7Z0RBQ1hSLFNBQVNhLElBQUk7Z0RBQUM7OERBQUMsOERBQUNDO29EQUFLTixXQUFVOzhEQUFpQjs7Ozs7Ozs7Ozs7O3NEQUVuRCw4REFBQ0Y7NENBQUVFLFdBQVU7O2dEQUFzQztnREFDM0JSLFNBQVNhLElBQUksQ0FBQ0UsV0FBVztnREFBRzs7Ozs7Ozs7Ozs7OztnQ0FJckRYLE1BQU1ZLE1BQU0sR0FBRyxtQkFDZCw4REFBQ1A7b0NBQUlELFdBQVU7O3NEQUNiLDhEQUFDUzs0Q0FDQ0MsTUFBSzs0Q0FDTEMsU0FBUyxJQUFNcEIsWUFBWTs0Q0FDM0JTLFdBQVcsNkRBSVYsT0FIQ1YsYUFBYSxTQUNULDZCQUNBOzRDQUVOc0IsY0FBVztzREFDWjs7Ozs7O3NEQUdELDhEQUFDSDs0Q0FDQ0MsTUFBSzs0Q0FDTEMsU0FBUyxJQUFNcEIsWUFBWTs0Q0FDM0JTLFdBQVcsNkRBSVYsT0FIQ1YsYUFBYSxTQUNULDZCQUNBOzRDQUVOc0IsY0FBVztzREFDWjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCQVNULDhEQUFDQztvQkFBUWIsV0FBVTs4QkFDaEJKLE1BQU1ZLE1BQU0sS0FBSyxrQkFDaEIsOERBQUNWO3dCQUFFRSxXQUFVO2tDQUF5Qzs7Ozs7K0JBR3BEVixhQUFhLHVCQUNmLDhEQUFDVzt3QkFBSUQsV0FBVTtrQ0FDWkosTUFBTWtCLEdBQUcsQ0FBQyxDQUFDQyxxQkFDViw4REFBQ2Q7Z0NBRUNELFdBQVU7O2tEQUVWLDhEQUFDakIsaURBQUlBO3dDQUNIb0IsTUFBTSxzQkFBb0NZLE9BQWQxQixZQUFXLEtBQVcsT0FBUjBCLEtBQUtwQixFQUFFO3dDQUNqREssV0FBVTtrREFFViw0RUFBQ0M7NENBQUlELFdBQVU7OzhEQUNiLDhEQUFDQztvREFBSUQsV0FBVTs7c0VBQ2IsOERBQUNDOzREQUFJRCxXQUFVOztnRUFDWmUsS0FBS0MsS0FBSztnRUFBQzs4RUFBQyw4REFBQ1Y7b0VBQUtOLFdBQVU7O3dFQUFjO3dFQUFHZSxLQUFLVixJQUFJOzs7Ozs7Ozs7Ozs7O3dEQUV4RFUsS0FBS0UsS0FBSyxrQkFDVCw4REFBQ25COzREQUFFRSxXQUFVO3NFQUNWZSxLQUFLRSxLQUFLOzs7Ozs7Ozs7Ozs7OERBSWpCLDhEQUFDaEI7b0RBQUlELFdBQVU7O3dEQUF5RDt3REFDcEVlLEtBQUtHLEtBQUssQ0FBQ0MsT0FBTyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7a0RBSTNCLDhEQUFDcEMsaURBQUlBO3dDQUNIb0IsTUFBTSxlQUE2QlksT0FBZDFCLFlBQVcsS0FBVyxPQUFSMEIsS0FBS3BCLEVBQUU7d0NBQzFDSyxXQUFVO2tEQUNYOzs7Ozs7OytCQTFCSWUsS0FBS3BCLEVBQUU7Ozs7Ozs7Ozs2Q0FpQ2xCLDhEQUFDTTt3QkFBSUQsV0FBVTtrQ0FDWkosTUFBTWtCLEdBQUcsQ0FBQyxDQUFDQyxxQkFDViw4REFBQ2Q7Z0NBRUNELFdBQVU7MENBRVYsNEVBQUNDO29DQUFJRCxXQUFVOztzREFDYiw4REFBQ0M7NENBQUlELFdBQVU7c0RBQ2IsNEVBQUNqQixpREFBSUE7Z0RBQ0hvQixNQUFNLHNCQUFvQ1ksT0FBZDFCLFlBQVcsS0FBVyxPQUFSMEIsS0FBS3BCLEVBQUU7Z0RBQ2pESyxXQUFVOztrRUFFViw4REFBQ0M7d0RBQUlELFdBQVU7OzREQUNaZSxLQUFLQyxLQUFLOzREQUFDOzBFQUFDLDhEQUFDVjtnRUFBS04sV0FBVTs7b0VBQWM7b0VBQUdlLEtBQUtWLElBQUk7Ozs7Ozs7Ozs7Ozs7b0RBRXhEVSxLQUFLRSxLQUFLLGtCQUNULDhEQUFDbkI7d0RBQUVFLFdBQVU7a0VBQ1ZlLEtBQUtFLEtBQUs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NEQUtuQiw4REFBQ2hCOzRDQUFJRCxXQUFVOzs4REFDYiw4REFBQ0M7b0RBQUlELFdBQVU7O3dEQUF5RDt3REFDcEVlLEtBQUtHLEtBQUssQ0FBQ0MsT0FBTyxDQUFDOzs7Ozs7OzhEQUV2Qiw4REFBQ3BDLGlEQUFJQTtvREFDSG9CLE1BQU0sZUFBNkJZLE9BQWQxQixZQUFXLEtBQVcsT0FBUjBCLEtBQUtwQixFQUFFO29EQUMxQ0ssV0FBVTs4REFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCQTFCQWUsS0FBS3BCLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUM5QjtHQS9Ld0JSOztRQUNQSCxzREFBU0E7OztLQURGRyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vcGFnZS50c3g/OGI1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB7IHVzZVBhcmFtcyB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIjtcbmltcG9ydCB7IENBVEVHT1JJRVMsIFBBUlRTIH0gZnJvbSBcIkAvZGF0YS9ndW5idWlsZGVyUGFydHNcIjtcbmltcG9ydCB0eXBlIHsgQ2F0ZWdvcnlJZCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcblxudHlwZSBWaWV3TW9kZSA9IFwiY2FyZFwiIHwgXCJsaXN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENhdGVnb3J5UGFnZSgpIHtcbiAgY29uc3QgcGFyYW1zID0gdXNlUGFyYW1zKCk7XG4gIGNvbnN0IGNhdGVnb3J5SWQgPSBwYXJhbXMuY2F0ZWdvcnlJZCBhcyBDYXRlZ29yeUlkO1xuICBjb25zdCBbdmlld01vZGUsIHNldFZpZXdNb2RlXSA9IHVzZVN0YXRlPFZpZXdNb2RlPihcImNhcmRcIik7XG5cbiAgY29uc3QgY2F0ZWdvcnkgPSB1c2VNZW1vKFxuICAgICgpID0+IENBVEVHT1JJRVMuZmluZCgoYykgPT4gYy5pZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW2NhdGVnb3J5SWRdLFxuICApO1xuXG4gIGNvbnN0IHBhcnRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBQQVJUUy5maWx0ZXIoKHApID0+IHAuY2F0ZWdvcnlJZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW2NhdGVnb3J5SWRdLFxuICApO1xuXG4gIGlmICghY2F0ZWdvcnkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gbWF4LXctNnhsIHB4LTQgcHktNiBsZzpweS0xMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtemluYy01MCBtYi00XCI+XG4gICAgICAgICAgICAgIENhdGVnb3J5IE5vdCBGb3VuZFxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgIGhyZWY9XCIvZ3VuYnVpbGRlclwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwIGhvdmVyOnRleHQtYW1iZXItMjAwIHVuZGVybGluZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJldHVybiB0byBHdW5idWlsZGVyXG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYWluPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxtYWluIGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ibGFjayB0ZXh0LXppbmMtNTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtYXgtdy02eGwgcHgtNCBweS02IGxnOnB5LTEwXCI+XG4gICAgICAgIHsvKiBIZWFkZXIgKi99XG4gICAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwibWItNlwiPlxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBocmVmPVwiL2d1bmJ1aWxkZXJcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0zMDAgbWItNCBpbmxpbmUtYmxvY2tcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIOKGkCBCYWNrIHRvIEd1bmJ1aWxkZXJcbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBnYXAtNFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjJlbV0gdXBwZXJjYXNlIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgICBTaGFkb3cgU3RhbmRhcmRcbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LTJ4bCBtZDp0ZXh0LTN4bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0XCI+XG4gICAgICAgICAgICAgICAge2NhdGVnb3J5Lm5hbWV9IDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwXCI+UGFydHM8L3NwYW4+XG4gICAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTIgdGV4dC1zbSB0ZXh0LXppbmMtNDAwIG1heC13LXhsXCI+XG4gICAgICAgICAgICAgICAgQnJvd3NlIGFsbCBhdmFpbGFibGUge2NhdGVnb3J5Lm5hbWUudG9Mb3dlckNhc2UoKX0gb3B0aW9ucyBmb3IgeW91clxuICAgICAgICAgICAgICAgIGJ1aWxkLlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtwYXJ0cy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0yIGJvcmRlciBib3JkZXItemluYy04MDAgcm91bmRlZC1tZCBwLTEgYmctemluYy05NTAvNjBcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFZpZXdNb2RlKFwiY2FyZFwiKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB4LTMgcHktMS41IHRleHQteHMgZm9udC1tZWRpdW0gcm91bmRlZCB0cmFuc2l0aW9uLWNvbG9ycyAke1xuICAgICAgICAgICAgICAgICAgICB2aWV3TW9kZSA9PT0gXCJjYXJkXCJcbiAgICAgICAgICAgICAgICAgICAgICA/IFwiYmctemluYy04MDAgdGV4dC16aW5jLTUwXCJcbiAgICAgICAgICAgICAgICAgICAgICA6IFwidGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMzAwXCJcbiAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNhcmQgdmlld1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQ2FyZFxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0Vmlld01vZGUoXCJsaXN0XCIpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHgtMyBweS0xLjUgdGV4dC14cyBmb250LW1lZGl1bSByb3VuZGVkIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgICAgIHZpZXdNb2RlID09PSBcImxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgID8gXCJiZy16aW5jLTgwMCB0ZXh0LXppbmMtNTBcIlxuICAgICAgICAgICAgICAgICAgICAgIDogXCJ0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0zMDBcIlxuICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiTGlzdCB2aWV3XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBMaXN0XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgey8qIFBhcnRzIEdyaWQvTGlzdCAqL31cbiAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtMyBtZDpwLTRcIj5cbiAgICAgICAgICB7cGFydHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXppbmMtNTAwIHRleHQtY2VudGVyIHB5LThcIj5cbiAgICAgICAgICAgICAgTm8gcGFydHMgYXZhaWxhYmxlIGZvciB0aGlzIGNhdGVnb3J5IHlldC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICApIDogdmlld01vZGUgPT09IFwiY2FyZFwiID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC0zIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zXCI+XG4gICAgICAgICAgICAgIHtwYXJ0cy5tYXAoKHBhcnQpID0+IChcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBrZXk9e3BhcnQuaWR9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJib3JkZXIgYm9yZGVyLXppbmMtNzAwIHJvdW5kZWQtbWQgcC0zIGJnLXppbmMtOTAwLzUwIGhvdmVyOmJvcmRlci16aW5jLTYwMCB0cmFuc2l0aW9uLWNvbG9ycyBmbGV4IGZsZXgtY29sXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICBocmVmPXtgL2d1bmJ1aWxkZXI/c2VsZWN0PSR7Y2F0ZWdvcnlJZH06JHtwYXJ0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC0yIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0LmJyYW5kfSA8c3BhbiBjbGFzc05hbWU9XCJmb250LW5vcm1hbFwiPuKAlCB7cGFydC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0xIHRleHQteHMgdGV4dC16aW5jLTQwMCBsaW5lLWNsYW1wLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5ub3Rlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMCB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgJHtwYXJ0LnByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyLyR7Y2F0ZWdvcnlJZH0vJHtwYXJ0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy04MDAvNTAgcHgtMyBweS0yIHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTcwMCBob3Zlcjpib3JkZXItemluYy02MDAgdHJhbnNpdGlvbi1jb2xvcnMgdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBWaWV3IERldGFpbHNcbiAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTJcIj5cbiAgICAgICAgICAgICAge3BhcnRzLm1hcCgocGFydCkgPT4gKFxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGtleT17cGFydC5pZH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItemluYy03MDAgcm91bmRlZC1tZCBwLTMgYmctemluYy05MDAvNTAgaG92ZXI6Ym9yZGVyLXppbmMtNjAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBtaW4tdy0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlcj9zZWxlY3Q9JHtjYXRlZ29yeUlkfToke3BhcnQuaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQuYnJhbmR9IDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbm9ybWFsXCI+4oCUIHtwYXJ0Lm5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5ub3RlcyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTEgdGV4dC14cyB0ZXh0LXppbmMtNDAwIGxpbmUtY2xhbXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0Lm5vdGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMCB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgJHtwYXJ0LnByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlci8ke2NhdGVnb3J5SWR9LyR7cGFydC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtODAwLzUwIHB4LTMgcHktMS41IHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTcwMCBob3Zlcjpib3JkZXItemluYy02MDAgdHJhbnNpdGlvbi1jb2xvcnMgd2hpdGVzcGFjZS1ub3dyYXBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIFZpZXcgRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L21haW4+XG4gICk7XG59XG5cbiJdLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlU3RhdGUiLCJMaW5rIiwidXNlUGFyYW1zIiwiQ0FURUdPUklFUyIsIlBBUlRTIiwiQ2F0ZWdvcnlQYWdlIiwicGFyYW1zIiwiY2F0ZWdvcnlJZCIsInZpZXdNb2RlIiwic2V0Vmlld01vZGUiLCJjYXRlZ29yeSIsImZpbmQiLCJjIiwiaWQiLCJwYXJ0cyIsImZpbHRlciIsInAiLCJtYWluIiwiY2xhc3NOYW1lIiwiZGl2IiwiaDEiLCJocmVmIiwiaGVhZGVyIiwibmFtZSIsInNwYW4iLCJ0b0xvd2VyQ2FzZSIsImxlbmd0aCIsImJ1dHRvbiIsInR5cGUiLCJvbkNsaWNrIiwiYXJpYS1sYWJlbCIsInNlY3Rpb24iLCJtYXAiLCJwYXJ0IiwiYnJhbmQiLCJub3RlcyIsInByaWNlIiwidG9GaXhlZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx\n")); +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ CategoryPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\nfunction CategoryPage() {\n _s();\n const params = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams)();\n const categoryId = params.categoryId;\n const [viewMode, setViewMode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"card\");\n const category = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.find((c)=>c.id === categoryId), [\n categoryId\n ]);\n const parts = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.filter((p)=>p.categoryId === categoryId), [\n categoryId\n ]);\n if (!category) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"Category Not Found\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 31,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-amber-300 hover:text-amber-200 underline\",\n children: \"Return to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 34,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 30,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 29,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 28,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: \"← Back to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 51,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between gap-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)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 59,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n category.name,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: \"Parts\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 63,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 62,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: [\n \"Browse all available \",\n category.name.toLowerCase(),\n \" options for your build.\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 65,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 58,\n columnNumber: 13\n }, this),\n parts.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2 border border-zinc-800 rounded-md p-1 bg-zinc-950/60\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setViewMode(\"card\"),\n className: \"px-3 py-1.5 text-xs font-medium rounded transition-colors \".concat(viewMode === \"card\" ? \"bg-zinc-800 text-zinc-50\" : \"text-zinc-400 hover:text-zinc-300\"),\n \"aria-label\": \"Card view\",\n children: \"Card\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 72,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setViewMode(\"list\"),\n className: \"px-3 py-1.5 text-xs font-medium rounded transition-colors \".concat(viewMode === \"list\" ? \"bg-zinc-800 text-zinc-50\" : \"text-zinc-400 hover:text-zinc-300\"),\n \"aria-label\": \"List view\",\n children: \"List\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 84,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 71,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 57,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 50,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-3 md:p-4\",\n children: parts.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500 text-center py-8\",\n children: \"No parts available for this category yet.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 104,\n columnNumber: 13\n }, this) : viewMode === \"card\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-3 md:grid-cols-2 lg:grid-cols-3\",\n children: parts.map((part)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"group relative border border-zinc-700 rounded-md p-3 bg-zinc-900/50 hover:border-amber-400/60 hover:bg-amber-400/10 transition-all duration-200 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder?select=\".concat(categoryId, \":\").concat(part.id),\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center gap-2 mb-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-zinc-50\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-normal\",\n children: [\n \"— \",\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 121,\n columnNumber: 40\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 120,\n columnNumber: 25\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-xs text-zinc-400 line-clamp-2\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 124,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 119,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 129,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 118,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 114,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/\".concat(categoryId, \"/\").concat(part.id),\n className: \"w-full rounded-md border border-zinc-700 bg-zinc-800/50 px-3 py-2 text-xs font-medium text-zinc-300 hover:bg-zinc-700 hover:border-zinc-600 transition-colors text-center\",\n children: \"View Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 134,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 rounded-md bg-amber-400/10 opacity-0 group-hover:opacity-100 transition-opacity duration-200 pointer-events-none flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-200 tracking-wide\",\n children: \"Add to Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 142,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 141,\n columnNumber: 19\n }, this)\n ]\n }, part.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 110,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 108,\n columnNumber: 13\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: parts.map((part)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"group relative border border-zinc-700 rounded-md p-3 bg-zinc-900/50 hover:border-amber-400/60 hover:bg-amber-400/10 transition-all duration-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 min-w-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder?select=\".concat(categoryId, \":\").concat(part.id),\n className: \"block\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-zinc-50\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-normal\",\n children: [\n \"— \",\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 163,\n columnNumber: 40\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 162,\n columnNumber: 25\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-xs text-zinc-400 line-clamp-1\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 166,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 158,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 157,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 173,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/\".concat(categoryId, \"/\").concat(part.id),\n className: \"rounded-md border border-zinc-700 bg-zinc-800/50 px-3 py-1.5 text-xs font-medium text-zinc-300 hover:bg-zinc-700 hover:border-zinc-600 transition-colors whitespace-nowrap\",\n children: \"View Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 176,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 172,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 156,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 rounded-md bg-amber-400/10 opacity-0 group-hover:opacity-100 transition-opacity duration-200 pointer-events-none flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-200 tracking-wide\",\n children: \"Add to Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 186,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 185,\n columnNumber: 19\n }, this)\n ]\n }, part.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 152,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 150,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 102,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 48,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 47,\n columnNumber: 5\n }, this);\n}\n_s(CategoryPage, \"5PCsUt45I0oNlu6HHaoW7COL+Rc=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams\n ];\n});\n_c = CategoryPage;\nvar _c;\n$RefreshReg$(_c, \"CategoryPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL1tjYXRlZ29yeUlkXS9wYWdlLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFFMEM7QUFDYjtBQUNlO0FBQ2U7QUFLNUMsU0FBU007O0lBQ3RCLE1BQU1DLFNBQVNKLDBEQUFTQTtJQUN4QixNQUFNSyxhQUFhRCxPQUFPQyxVQUFVO0lBQ3BDLE1BQU0sQ0FBQ0MsVUFBVUMsWUFBWSxHQUFHVCwrQ0FBUUEsQ0FBVztJQUVuRCxNQUFNVSxXQUFXWCw4Q0FBT0EsQ0FDdEIsSUFBTUksNkRBQVVBLENBQUNRLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxFQUFFLEtBQUtOLGFBQ3RDO1FBQUNBO0tBQVc7SUFHZCxNQUFNTyxRQUFRZiw4Q0FBT0EsQ0FDbkIsSUFBTUssd0RBQUtBLENBQUNXLE1BQU0sQ0FBQyxDQUFDQyxJQUFNQSxFQUFFVCxVQUFVLEtBQUtBLGFBQzNDO1FBQUNBO0tBQVc7SUFHZCxJQUFJLENBQUNHLFVBQVU7UUFDYixxQkFDRSw4REFBQ087WUFBS0MsV0FBVTtzQkFDZCw0RUFBQ0M7Z0JBQUlELFdBQVU7MEJBQ2IsNEVBQUNDO29CQUFJRCxXQUFVOztzQ0FDYiw4REFBQ0U7NEJBQUdGLFdBQVU7c0NBQTJDOzs7Ozs7c0NBR3pELDhEQUFDakIsaURBQUlBOzRCQUNIb0IsTUFBSzs0QkFDTEgsV0FBVTtzQ0FDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU9YO0lBRUEscUJBQ0UsOERBQUNEO1FBQUtDLFdBQVU7a0JBQ2QsNEVBQUNDO1lBQUlELFdBQVU7OzhCQUViLDhEQUFDSTtvQkFBT0osV0FBVTs7c0NBQ2hCLDhEQUFDakIsaURBQUlBOzRCQUNIb0IsTUFBSzs0QkFDTEgsV0FBVTtzQ0FDWDs7Ozs7O3NDQUdELDhEQUFDQzs0QkFBSUQsV0FBVTs7OENBQ2IsOERBQUNDOztzREFDQyw4REFBQ0g7NENBQUVFLFdBQVU7c0RBQWlFOzs7Ozs7c0RBRzlFLDhEQUFDRTs0Q0FB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QU0sZUFBNkJZLE9BQWQxQixZQUFXLEtBQVcsT0FBUjBCLEtBQUtwQixFQUFFO3dEQUMxQ0ssV0FBVTtrRUFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tEQU1MLDhEQUFDQzt3Q0FBSUQsV0FBVTtrREFDYiw0RUFBQ0M7NENBQUlELFdBQVU7c0RBQXFEOzs7Ozs7Ozs7Ozs7K0JBakNqRWUsS0FBS3BCLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkM5QjtHQTNMd0JSOztRQUNQSCxzREFBU0E7OztLQURGRyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vcGFnZS50c3g/OGI1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB7IHVzZVBhcmFtcyB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIjtcbmltcG9ydCB7IENBVEVHT1JJRVMsIFBBUlRTIH0gZnJvbSBcIkAvZGF0YS9ndW5idWlsZGVyUGFydHNcIjtcbmltcG9ydCB0eXBlIHsgQ2F0ZWdvcnlJZCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcblxudHlwZSBWaWV3TW9kZSA9IFwiY2FyZFwiIHwgXCJsaXN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENhdGVnb3J5UGFnZSgpIHtcbiAgY29uc3QgcGFyYW1zID0gdXNlUGFyYW1zKCk7XG4gIGNvbnN0IGNhdGVnb3J5SWQgPSBwYXJhbXMuY2F0ZWdvcnlJZCBhcyBDYXRlZ29yeUlkO1xuICBjb25zdCBbdmlld01vZGUsIHNldFZpZXdNb2RlXSA9IHVzZVN0YXRlPFZpZXdNb2RlPihcImNhcmRcIik7XG5cbiAgY29uc3QgY2F0ZWdvcnkgPSB1c2VNZW1vKFxuICAgICgpID0+IENBVEVHT1JJRVMuZmluZCgoYykgPT4gYy5pZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW2NhdGVnb3J5SWRdLFxuICApO1xuXG4gIGNvbnN0IHBhcnRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBQQVJUUy5maWx0ZXIoKHApID0+IHAuY2F0ZWdvcnlJZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW2NhdGVnb3J5SWRdLFxuICApO1xuXG4gIGlmICghY2F0ZWdvcnkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gbWF4LXctNnhsIHB4LTQgcHktNiBsZzpweS0xMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtemluYy01MCBtYi00XCI+XG4gICAgICAgICAgICAgIENhdGVnb3J5IE5vdCBGb3VuZFxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgIGhyZWY9XCIvZ3VuYnVpbGRlclwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwIGhvdmVyOnRleHQtYW1iZXItMjAwIHVuZGVybGluZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJldHVybiB0byBHdW5idWlsZGVyXG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYWluPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxtYWluIGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ibGFjayB0ZXh0LXppbmMtNTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtYXgtdy02eGwgcHgtNCBweS02IGxnOnB5LTEwXCI+XG4gICAgICAgIHsvKiBIZWFkZXIgKi99XG4gICAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwibWItNlwiPlxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBocmVmPVwiL2d1bmJ1aWxkZXJcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0zMDAgbWItNCBpbmxpbmUtYmxvY2tcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIOKGkCBCYWNrIHRvIEd1bmJ1aWxkZXJcbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBnYXAtNFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjJlbV0gdXBwZXJjYXNlIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgICBTaGFkb3cgU3RhbmRhcmRcbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LTJ4bCBtZDp0ZXh0LTN4bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0XCI+XG4gICAgICAgICAgICAgICAge2NhdGVnb3J5Lm5hbWV9IDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwXCI+UGFydHM8L3NwYW4+XG4gICAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTIgdGV4dC1zbSB0ZXh0LXppbmMtNDAwIG1heC13LXhsXCI+XG4gICAgICAgICAgICAgICAgQnJvd3NlIGFsbCBhdmFpbGFibGUge2NhdGVnb3J5Lm5hbWUudG9Mb3dlckNhc2UoKX0gb3B0aW9ucyBmb3IgeW91clxuICAgICAgICAgICAgICAgIGJ1aWxkLlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtwYXJ0cy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0yIGJvcmRlciBib3JkZXItemluYy04MDAgcm91bmRlZC1tZCBwLTEgYmctemluYy05NTAvNjBcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFZpZXdNb2RlKFwiY2FyZFwiKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB4LTMgcHktMS41IHRleHQteHMgZm9udC1tZWRpdW0gcm91bmRlZCB0cmFuc2l0aW9uLWNvbG9ycyAke1xuICAgICAgICAgICAgICAgICAgICB2aWV3TW9kZSA9PT0gXCJjYXJkXCJcbiAgICAgICAgICAgICAgICAgICAgICA/IFwiYmctemluYy04MDAgdGV4dC16aW5jLTUwXCJcbiAgICAgICAgICAgICAgICAgICAgICA6IFwidGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMzAwXCJcbiAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNhcmQgdmlld1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQ2FyZFxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0Vmlld01vZGUoXCJsaXN0XCIpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHgtMyBweS0xLjUgdGV4dC14cyBmb250LW1lZGl1bSByb3VuZGVkIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgICAgIHZpZXdNb2RlID09PSBcImxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgID8gXCJiZy16aW5jLTgwMCB0ZXh0LXppbmMtNTBcIlxuICAgICAgICAgICAgICAgICAgICAgIDogXCJ0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0zMDBcIlxuICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiTGlzdCB2aWV3XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBMaXN0XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgey8qIFBhcnRzIEdyaWQvTGlzdCAqL31cbiAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtMyBtZDpwLTRcIj5cbiAgICAgICAgICB7cGFydHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXppbmMtNTAwIHRleHQtY2VudGVyIHB5LThcIj5cbiAgICAgICAgICAgICAgTm8gcGFydHMgYXZhaWxhYmxlIGZvciB0aGlzIGNhdGVnb3J5IHlldC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICApIDogdmlld01vZGUgPT09IFwiY2FyZFwiID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC0zIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zXCI+XG4gICAgICAgICAgICAgIHtwYXJ0cy5tYXAoKHBhcnQpID0+IChcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBrZXk9e3BhcnQuaWR9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJncm91cCByZWxhdGl2ZSBib3JkZXIgYm9yZGVyLXppbmMtNzAwIHJvdW5kZWQtbWQgcC0zIGJnLXppbmMtOTAwLzUwIGhvdmVyOmJvcmRlci1hbWJlci00MDAvNjAgaG92ZXI6YmctYW1iZXItNDAwLzEwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCBmbGV4IGZsZXgtY29sXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICBocmVmPXtgL2d1bmJ1aWxkZXI/c2VsZWN0PSR7Y2F0ZWdvcnlJZH06JHtwYXJ0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC0yIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0LmJyYW5kfSA8c3BhbiBjbGFzc05hbWU9XCJmb250LW5vcm1hbFwiPuKAlCB7cGFydC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0xIHRleHQteHMgdGV4dC16aW5jLTQwMCBsaW5lLWNsYW1wLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5ub3Rlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMCB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgJHtwYXJ0LnByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyLyR7Y2F0ZWdvcnlJZH0vJHtwYXJ0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy04MDAvNTAgcHgtMyBweS0yIHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTcwMCBob3Zlcjpib3JkZXItemluYy02MDAgdHJhbnNpdGlvbi1jb2xvcnMgdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBWaWV3IERldGFpbHNcbiAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgIHsvKiBIb3ZlciBPdmVybGF5ICovfVxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIHJvdW5kZWQtbWQgYmctYW1iZXItNDAwLzEwIG9wYWNpdHktMCBncm91cC1ob3ZlcjpvcGFjaXR5LTEwMCB0cmFuc2l0aW9uLW9wYWNpdHkgZHVyYXRpb24tMjAwIHBvaW50ZXItZXZlbnRzLW5vbmUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0yMDAgdHJhY2tpbmctd2lkZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIEFkZCB0byBCdWlsZFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICAgICAgICB7cGFydHMubWFwKChwYXJ0KSA9PiAoXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAga2V5PXtwYXJ0LmlkfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZ3JvdXAgcmVsYXRpdmUgYm9yZGVyIGJvcmRlci16aW5jLTcwMCByb3VuZGVkLW1kIHAtMyBiZy16aW5jLTkwMC81MCBob3Zlcjpib3JkZXItYW1iZXItNDAwLzYwIGhvdmVyOmJnLWFtYmVyLTQwMC8xMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG1pbi13LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyP3NlbGVjdD0ke2NhdGVnb3J5SWR9OiR7cGFydC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5icmFuZH0gPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1ub3JtYWxcIj7igJQge3BhcnQubmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0Lm5vdGVzICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LXhzIHRleHQtemluYy00MDAgbGluZS1jbGFtcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMzAwIHdoaXRlc3BhY2Utbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAke3BhcnQucHJpY2UudG9GaXhlZCgyKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyLyR7Y2F0ZWdvcnlJZH0vJHtwYXJ0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy04MDAvNTAgcHgtMyBweS0xLjUgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtMzAwIGhvdmVyOmJnLXppbmMtNzAwIGhvdmVyOmJvcmRlci16aW5jLTYwMCB0cmFuc2l0aW9uLWNvbG9ycyB3aGl0ZXNwYWNlLW5vd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgVmlldyBEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgey8qIEhvdmVyIE92ZXJsYXkgKi99XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgcm91bmRlZC1tZCBiZy1hbWJlci00MDAvMTAgb3BhY2l0eS0wIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi0yMDAgcG9pbnRlci1ldmVudHMtbm9uZSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTIwMCB0cmFja2luZy13aWRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQWRkIHRvIEJ1aWxkXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYWluPlxuICApO1xufVxuXG4iXSwibmFtZXMiOlsidXNlTWVtbyIsInVzZVN0YXRlIiwiTGluayIsInVzZVBhcmFtcyIsIkNBVEVHT1JJRVMiLCJQQVJUUyIsIkNhdGVnb3J5UGFnZSIsInBhcmFtcyIsImNhdGVnb3J5SWQiLCJ2aWV3TW9kZSIsInNldFZpZXdNb2RlIiwiY2F0ZWdvcnkiLCJmaW5kIiwiYyIsImlkIiwicGFydHMiLCJmaWx0ZXIiLCJwIiwibWFpbiIsImNsYXNzTmFtZSIsImRpdiIsImgxIiwiaHJlZiIsImhlYWRlciIsIm5hbWUiLCJzcGFuIiwidG9Mb3dlckNhc2UiLCJsZW5ndGgiLCJidXR0b24iLCJ0eXBlIiwib25DbGljayIsImFyaWEtbGFiZWwiLCJzZWN0aW9uIiwibWFwIiwicGFydCIsImJyYW5kIiwibm90ZXMiLCJwcmljZSIsInRvRml4ZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx\n")); /***/ }), diff --git a/.next/static/chunks/app/gunbuilder/build/page.js b/.next/static/chunks/app/gunbuilder/build/page.js new file mode 100644 index 0000000..a4bf491 --- /dev/null +++ b/.next/static/chunks/app/gunbuilder/build/page.js @@ -0,0 +1,303 @@ +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([["app/gunbuilder/build/page"],{ + +/***/ "(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!": +/*!***************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false! ***! + \***************************************************************************************************************************************************************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +eval(__webpack_require__.ts("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/gunbuilder/build/page.tsx */ \"(app-pages-browser)/./app/gunbuilder/build/page.tsx\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtZmxpZ2h0LWNsaWVudC1lbnRyeS1sb2FkZXIuanM/bW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZzZWFuJTJGRGV2JTJGZ3VuYnVpbGRlci1wcm90b3R5cGUlMkZhcHAlMkZndW5idWlsZGVyJTJGYnVpbGQlMkZwYWdlLnRzeCUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9ZmFsc2UhIiwibWFwcGluZ3MiOiJBQUFBLHdMQUF1RyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvPzM0N2UiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvYXBwL2d1bmJ1aWxkZXIvYnVpbGQvcGFnZS50c3hcIik7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/api/link.js": +/*!********************************************!*\ + !*** ./node_modules/next/dist/api/link.js ***! + \********************************************/ +/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* reexport default from dynamic */ _client_link__WEBPACK_IMPORTED_MODULE_0___default.a; }\n/* harmony export */ });\n/* harmony import */ var _client_link__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../client/link */ \"(app-pages-browser)/./node_modules/next/dist/client/link.js\");\n/* harmony import */ var _client_link__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_client_link__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _client_link__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _client_link__WEBPACK_IMPORTED_MODULE_0__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n\n//# sourceMappingURL=link.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYXBpL2xpbmsuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQXlDO0FBQ1Y7O0FBRS9CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYXBpL2xpbmsuanM/NzkyYiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi4uL2NsaWVudC9saW5rXCI7XG5leHBvcnQgKiBmcm9tIFwiLi4vY2xpZW50L2xpbmtcIjtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bGluay5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/api/link.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/api/navigation.js": +/*!**************************************************!*\ + !*** ./node_modules/next/dist/api/navigation.js ***! + \**************************************************/ +/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _client_components_navigation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../client/components/navigation */ \"(app-pages-browser)/./node_modules/next/dist/client/components/navigation.js\");\n/* harmony import */ var _client_components_navigation__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_client_components_navigation__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _client_components_navigation__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _client_components_navigation__WEBPACK_IMPORTED_MODULE_0__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n//# sourceMappingURL=navigation.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYXBpL25hdmlnYXRpb24uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWdEOztBQUVoRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2FwaS9uYXZpZ2F0aW9uLmpzPzdkMGYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4uL2NsaWVudC9jb21wb25lbnRzL25hdmlnYXRpb25cIjtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bmF2aWdhdGlvbi5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/api/navigation.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./app/gunbuilder/build/page.tsx": +/*!***************************************!*\ + !*** ./app/gunbuilder/build/page.tsx ***! + \***************************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ BuildDetailsPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\nconst STORAGE_KEY = \"gunbuilder-build-state\";\n// Encode build state to URL-friendly string\nfunction encodeBuildState(build) {\n const entries = Object.entries(build).filter((param)=>{\n let [_, partId] = param;\n return partId;\n }).map((param)=>{\n let [categoryId, partId] = param;\n return \"\".concat(categoryId, \":\").concat(partId);\n }).join(\",\");\n return btoa(entries);\n}\n// Decode URL string to build state\nfunction decodeBuildState(encoded) {\n try {\n const decoded = atob(encoded);\n const build = {};\n decoded.split(\",\").forEach((entry)=>{\n const [categoryId, partId] = entry.split(\":\");\n if (categoryId && partId) {\n build[categoryId] = partId;\n }\n });\n return build;\n } catch (e) {\n return {};\n }\n}\nfunction BuildDetailsPage() {\n _s();\n const searchParams = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useSearchParams)();\n const router = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useRouter)();\n const [build, setBuild] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});\n const [shareUrl, setShareUrl] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [copied, setCopied] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n // Load build from URL params or localStorage\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const buildParam = searchParams.get(\"build\");\n if (buildParam) {\n const decoded = decodeBuildState(buildParam);\n setBuild(decoded);\n // Also save to localStorage\n localStorage.setItem(STORAGE_KEY, JSON.stringify(decoded));\n } else if (true) {\n // Load from localStorage\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored) {\n try {\n const parsed = JSON.parse(stored);\n setBuild(parsed);\n } catch (e) {\n // Invalid stored data\n }\n }\n }\n }, [\n searchParams\n ]);\n // Generate shareable URL\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if ( true && Object.keys(build).length > 0) {\n const encoded = encodeBuildState(build);\n const url = \"\".concat(window.location.origin, \"/gunbuilder/build?build=\").concat(encoded);\n setShareUrl(url);\n }\n }, [\n build\n ]);\n const selectedParts = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n return Object.entries(build).map((param)=>{\n let [categoryId, partId] = param;\n return _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId);\n }).filter(Boolean);\n }, [\n build\n ]);\n const totalPrice = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>selectedParts.reduce((sum, p)=>sum + p.price, 0), [\n selectedParts\n ]);\n const handleCopyLink = async ()=>{\n if (shareUrl) {\n try {\n await navigator.clipboard.writeText(shareUrl);\n setCopied(true);\n setTimeout(()=>setCopied(false), 2000);\n } catch (err) {\n console.error(\"Failed to copy:\", err);\n }\n }\n };\n const handleShare = async ()=>{\n if (navigator.share && shareUrl) {\n try {\n await navigator.share({\n title: \"My AR-15 Build\",\n text: \"Check out my AR-15 build: $\".concat(totalPrice.toFixed(2)),\n url: shareUrl\n });\n } catch (err) {\n // User cancelled or share failed, fall back to copy\n handleCopyLink();\n }\n } else {\n handleCopyLink();\n }\n };\n if (selectedParts.length === 0) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-4xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"No Build Selected\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 124,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-400 mb-6\",\n children: \"You need to select at least one part to view your build.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 127,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"inline-block rounded-md border border-amber-400/60 bg-amber-400/10 px-4 py-2 text-sm font-medium text-amber-200 hover:bg-amber-400/15 transition-colors\",\n children: \"Go to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 130,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 123,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 122,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 121,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: \"← Back to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 147,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-4 md:flex-row md:items-end md:justify-between\",\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)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 155,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n \"Build \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: \"Summary\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 159,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 158,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: \"Review your build, purchase parts from our affiliate partners, or share your build with others.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 161,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 154,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 md:mt-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400\",\n children: \"Total Build Price\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 168,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-semibold text-amber-300\",\n children: [\n \"$\",\n totalPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 169,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500\",\n children: [\n selectedParts.length,\n \" / \",\n _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.length,\n \" parts selected\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 172,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 167,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 153,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 146,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"mb-6 rounded-lg border border-zinc-800 bg-zinc-950/60 p-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-2\",\n children: \"Share Your Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 183,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-400\",\n children: \"Share this link to let others view your build or bookmark it to come back later.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 186,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 182,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: handleShare,\n className: \"rounded-md border border-zinc-700 bg-zinc-900/50 px-4 py-2 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors\",\n children: \"Share\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 192,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: handleCopyLink,\n className: \"rounded-md border px-4 py-2 text-sm font-medium transition-colors \".concat(copied ? \"border-green-500 bg-green-500/10 text-green-400\" : \"border-zinc-700 bg-zinc-900/50 text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600\"),\n children: copied ? \"Copied!\" : \"Copy Link\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 199,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 191,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 181,\n columnNumber: 11\n }, this),\n shareUrl && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 p-3 rounded-md bg-zinc-900/50 border border-zinc-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500 mb-1\",\n children: \"Shareable URL:\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 214,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-400 break-all font-mono\",\n children: shareUrl\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 215,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 213,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 180,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-4\",\n children: \"Selected Parts\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 224,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.map((category)=>{\n const selectedPartId = build[category.id];\n const part = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === selectedPartId && p.categoryId === category.id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-zinc-800 rounded-md p-4 bg-zinc-900/30\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[0.7rem] uppercase tracking-[0.16em] text-zinc-500 mb-2\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 242,\n columnNumber: 23\n }, this),\n part ? /*#__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: \"text-lg font-semibold text-zinc-50 mb-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-zinc-400\",\n children: part.brand\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 248,\n columnNumber: 29\n }, this),\n \" \",\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 247,\n columnNumber: 27\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-400 mt-1\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 252,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 flex gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: part.affiliateUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"inline-flex items-center gap-2 rounded-md border border-amber-400/60 bg-amber-400/10 px-4 py-2 text-sm font-medium text-amber-200 hover:bg-amber-400/15 transition-colors\",\n children: [\n \"Purchase from Retailer\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-4 h-4\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 270,\n columnNumber: 33\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 264,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 257,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/\".concat(category.id, \"/\").concat(part.id),\n className: \"inline-flex items-center rounded-md border border-zinc-700 bg-zinc-900/50 px-4 py-2 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors\",\n children: \"View Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 278,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 256,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-600\",\n children: \"Not selected\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 287,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 241,\n columnNumber: 21\n }, this),\n part && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-right\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-semibold text-amber-300\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 294,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 293,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 240,\n columnNumber: 19\n }, this)\n }, category.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 236,\n columnNumber: 17\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 228,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 223,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-6 flex flex-col gap-3 sm:flex-row sm:justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"rounded-md border border-zinc-700 bg-zinc-900/50 px-6 py-3 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors text-center\",\n children: \"Edit Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 308,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>{\n localStorage.removeItem(STORAGE_KEY);\n router.push(\"/gunbuilder\");\n },\n className: \"rounded-md border border-zinc-700 bg-zinc-900/50 px-6 py-3 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors\",\n children: \"Clear Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 315,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 314,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 307,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 144,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx\",\n lineNumber: 143,\n columnNumber: 5\n }, this);\n}\n_s(BuildDetailsPage, \"n/Kel5fW3fq2b+tkfXG5/aT+QKc=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useSearchParams,\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useRouter\n ];\n});\n_c = BuildDetailsPage;\nvar _c;\n$RefreshReg$(_c, \"BuildDetailsPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL2J1aWxkL3BhZ2UudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUVxRDtBQUN4QjtBQUNnQztBQUNGO0FBSzNELE1BQU1RLGNBQWM7QUFFcEIsNENBQTRDO0FBQzVDLFNBQVNDLGlCQUFpQkMsS0FBaUI7SUFDekMsTUFBTUMsVUFBVUMsT0FBT0QsT0FBTyxDQUFDRCxPQUM1QkcsTUFBTSxDQUFDO1lBQUMsQ0FBQ0MsR0FBR0MsT0FBTztlQUFLQTtPQUN4QkMsR0FBRyxDQUFDO1lBQUMsQ0FBQ0MsWUFBWUYsT0FBTztlQUFLLEdBQWlCQSxPQUFkRSxZQUFXLEtBQVUsT0FBUEY7T0FDL0NHLElBQUksQ0FBQztJQUNSLE9BQU9DLEtBQUtSO0FBQ2Q7QUFFQSxtQ0FBbUM7QUFDbkMsU0FBU1MsaUJBQWlCQyxPQUFlO0lBQ3ZDLElBQUk7UUFDRixNQUFNQyxVQUFVQyxLQUFLRjtRQUNyQixNQUFNWCxRQUFvQixDQUFDO1FBQzNCWSxRQUFRRSxLQUFLLENBQUMsS0FBS0MsT0FBTyxDQUFDLENBQUNDO1lBQzFCLE1BQU0sQ0FBQ1QsWUFBWUYsT0FBTyxHQUFHVyxNQUFNRixLQUFLLENBQUM7WUFDekMsSUFBSVAsY0FBY0YsUUFBUTtnQkFDeEJMLEtBQUssQ0FBQ08sV0FBeUIsR0FBR0Y7WUFDcEM7UUFDRjtRQUNBLE9BQU9MO0lBQ1QsRUFBRSxVQUFNO1FBQ04sT0FBTyxDQUFDO0lBQ1Y7QUFDRjtBQUVlLFNBQVNpQjs7SUFDdEIsTUFBTUMsZUFBZXhCLGdFQUFlQTtJQUNwQyxNQUFNeUIsU0FBU3hCLDBEQUFTQTtJQUN4QixNQUFNLENBQUNLLE9BQU9vQixTQUFTLEdBQUc3QiwrQ0FBUUEsQ0FBYSxDQUFDO0lBQ2hELE1BQU0sQ0FBQzhCLFVBQVVDLFlBQVksR0FBRy9CLCtDQUFRQSxDQUFTO0lBQ2pELE1BQU0sQ0FBQ2dDLFFBQVFDLFVBQVUsR0FBR2pDLCtDQUFRQSxDQUFDO0lBRXJDLDZDQUE2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Q2JDLEdBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7O2tGQUlSLDhEQUFDcEcsaURBQUlBO3dFQUNIMEUsTUFBTSxlQUE4QlUsT0FBZkYsU0FBUy9CLEVBQUUsRUFBQyxLQUFXLE9BQVJpQyxLQUFLakMsRUFBRTt3RUFDM0NvQixXQUFVO2tGQUNYOzs7Ozs7Ozs7Ozs7O3FGQU1MLDhEQUFDQzt3REFBSUQsV0FBVTtrRUFBd0I7Ozs7Ozs7Ozs7Ozs0Q0FLMUNhLHNCQUNDLDhEQUFDWjtnREFBSUQsV0FBVTswREFDYiw0RUFBQ0M7b0RBQUlELFdBQVU7O3dEQUF3Qzt3REFDbkRhLEtBQUs1QixLQUFLLENBQUNhLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DQTFEeEJhLFNBQVMvQixFQUFFOzs7Ozs0QkFpRXRCOzs7Ozs7Ozs7Ozs7OEJBS0osOERBQUNxQjtvQkFBSUQsV0FBVTs7c0NBQ2IsOERBQUN2RSxpREFBSUE7NEJBQ0gwRSxNQUFLOzRCQUNMSCxXQUFVO3NDQUNYOzs7Ozs7c0NBR0QsOERBQUNDOzRCQUFJRCxXQUFVO3NDQUNiLDRFQUFDUTtnQ0FDQ0MsTUFBSztnQ0FDTEMsU0FBUztvQ0FDUC9DLGFBQWFtRSxVQUFVLENBQUNoRztvQ0FDeEJxQixPQUFPNEUsSUFBSSxDQUFDO2dDQUNkO2dDQUNBL0IsV0FBVTswQ0FDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFiO0dBblN3Qi9DOztRQUNEdkIsNERBQWVBO1FBQ3JCQyxzREFBU0E7OztLQUZGc0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2d1bmJ1aWxkZXIvYnVpbGQvcGFnZS50c3g/MGM2YyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgdXNlTWVtbywgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xuaW1wb3J0IHsgdXNlU2VhcmNoUGFyYW1zLCB1c2VSb3V0ZXIgfSBmcm9tIFwibmV4dC9uYXZpZ2F0aW9uXCI7XG5pbXBvcnQgeyBDQVRFR09SSUVTLCBQQVJUUyB9IGZyb20gXCJAL2RhdGEvZ3VuYnVpbGRlclBhcnRzXCI7XG5pbXBvcnQgdHlwZSB7IENhdGVnb3J5SWQsIFBhcnQgfSBmcm9tIFwiQC90eXBlcy9ndW5idWlsZGVyXCI7XG5cbnR5cGUgQnVpbGRTdGF0ZSA9IFBhcnRpYWw8UmVjb3JkPENhdGVnb3J5SWQsIHN0cmluZz4+OyAvLyBjYXRlZ29yeUlkIC0+IHBhcnRJZFxuXG5jb25zdCBTVE9SQUdFX0tFWSA9IFwiZ3VuYnVpbGRlci1idWlsZC1zdGF0ZVwiO1xuXG4vLyBFbmNvZGUgYnVpbGQgc3RhdGUgdG8gVVJMLWZyaWVuZGx5IHN0cmluZ1xuZnVuY3Rpb24gZW5jb2RlQnVpbGRTdGF0ZShidWlsZDogQnVpbGRTdGF0ZSk6IHN0cmluZyB7XG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhidWlsZClcbiAgICAuZmlsdGVyKChbXywgcGFydElkXSkgPT4gcGFydElkKVxuICAgIC5tYXAoKFtjYXRlZ29yeUlkLCBwYXJ0SWRdKSA9PiBgJHtjYXRlZ29yeUlkfToke3BhcnRJZH1gKVxuICAgIC5qb2luKFwiLFwiKTtcbiAgcmV0dXJuIGJ0b2EoZW50cmllcyk7XG59XG5cbi8vIERlY29kZSBVUkwgc3RyaW5nIHRvIGJ1aWxkIHN0YXRlXG5mdW5jdGlvbiBkZWNvZGVCdWlsZFN0YXRlKGVuY29kZWQ6IHN0cmluZyk6IEJ1aWxkU3RhdGUge1xuICB0cnkge1xuICAgIGNvbnN0IGRlY29kZWQgPSBhdG9iKGVuY29kZWQpO1xuICAgIGNvbnN0IGJ1aWxkOiBCdWlsZFN0YXRlID0ge307XG4gICAgZGVjb2RlZC5zcGxpdChcIixcIikuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgIGNvbnN0IFtjYXRlZ29yeUlkLCBwYXJ0SWRdID0gZW50cnkuc3BsaXQoXCI6XCIpO1xuICAgICAgaWYgKGNhdGVnb3J5SWQgJiYgcGFydElkKSB7XG4gICAgICAgIGJ1aWxkW2NhdGVnb3J5SWQgYXMgQ2F0ZWdvcnlJZF0gPSBwYXJ0SWQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGJ1aWxkO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQnVpbGREZXRhaWxzUGFnZSgpIHtcbiAgY29uc3Qgc2VhcmNoUGFyYW1zID0gdXNlU2VhcmNoUGFyYW1zKCk7XG4gIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpO1xuICBjb25zdCBbYnVpbGQsIHNldEJ1aWxkXSA9IHVzZVN0YXRlPEJ1aWxkU3RhdGU+KHt9KTtcbiAgY29uc3QgW3NoYXJlVXJsLCBzZXRTaGFyZVVybF0gPSB1c2VTdGF0ZTxzdHJpbmc+KFwiXCIpO1xuICBjb25zdCBbY29waWVkLCBzZXRDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIC8vIExvYWQgYnVpbGQgZnJvbSBVUkwgcGFyYW1zIG9yIGxvY2FsU3RvcmFnZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGJ1aWxkUGFyYW0gPSBzZWFyY2hQYXJhbXMuZ2V0KFwiYnVpbGRcIik7XG4gICAgaWYgKGJ1aWxkUGFyYW0pIHtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVCdWlsZFN0YXRlKGJ1aWxkUGFyYW0pO1xuICAgICAgc2V0QnVpbGQoZGVjb2RlZCk7XG4gICAgICAvLyBBbHNvIHNhdmUgdG8gbG9jYWxTdG9yYWdlXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkoZGVjb2RlZCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgLy8gTG9hZCBmcm9tIGxvY2FsU3RvcmFnZVxuICAgICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oU1RPUkFHRV9LRVkpO1xuICAgICAgaWYgKHN0b3JlZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2Uoc3RvcmVkKTtcbiAgICAgICAgICBzZXRCdWlsZChwYXJzZWQpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBJbnZhbGlkIHN0b3JlZCBkYXRhXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIFtzZWFyY2hQYXJhbXNdKTtcblxuICAvLyBHZW5lcmF0ZSBzaGFyZWFibGUgVVJMXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgT2JqZWN0LmtleXMoYnVpbGQpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGVuY29kZWQgPSBlbmNvZGVCdWlsZFN0YXRlKGJ1aWxkKTtcbiAgICAgIGNvbnN0IHVybCA9IGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59L2d1bmJ1aWxkZXIvYnVpbGQ/YnVpbGQ9JHtlbmNvZGVkfWA7XG4gICAgICBzZXRTaGFyZVVybCh1cmwpO1xuICAgIH1cbiAgfSwgW2J1aWxkXSk7XG5cbiAgY29uc3Qgc2VsZWN0ZWRQYXJ0czogUGFydFtdID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGJ1aWxkKVxuICAgICAgLm1hcCgoW2NhdGVnb3J5SWQsIHBhcnRJZF0pID0+XG4gICAgICAgIFBBUlRTLmZpbmQoKHApID0+IHAuaWQgPT09IHBhcnRJZCAmJiBwLmNhdGVnb3J5SWQgPT09IGNhdGVnb3J5SWQpLFxuICAgICAgKVxuICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBQYXJ0W107XG4gIH0sIFtidWlsZF0pO1xuXG4gIGNvbnN0IHRvdGFsUHJpY2UgPSB1c2VNZW1vKFxuICAgICgpID0+IHNlbGVjdGVkUGFydHMucmVkdWNlKChzdW0sIHApID0+IHN1bSArIHAucHJpY2UsIDApLFxuICAgIFtzZWxlY3RlZFBhcnRzXSxcbiAgKTtcblxuICBjb25zdCBoYW5kbGVDb3B5TGluayA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoc2hhcmVVcmwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHNoYXJlVXJsKTtcbiAgICAgICAgc2V0Q29waWVkKHRydWUpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHNldENvcGllZChmYWxzZSksIDIwMDApO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY29weTpcIiwgZXJyKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU2hhcmUgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKG5hdmlnYXRvci5zaGFyZSAmJiBzaGFyZVVybCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbmF2aWdhdG9yLnNoYXJlKHtcbiAgICAgICAgICB0aXRsZTogXCJNeSBBUi0xNSBCdWlsZFwiLFxuICAgICAgICAgIHRleHQ6IGBDaGVjayBvdXQgbXkgQVItMTUgYnVpbGQ6ICQke3RvdGFsUHJpY2UudG9GaXhlZCgyKX1gLFxuICAgICAgICAgIHVybDogc2hhcmVVcmwsXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIFVzZXIgY2FuY2VsbGVkIG9yIHNoYXJlIGZhaWxlZCwgZmFsbCBiYWNrIHRvIGNvcHlcbiAgICAgICAgaGFuZGxlQ29weUxpbmsoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlQ29weUxpbmsoKTtcbiAgICB9XG4gIH07XG5cbiAgaWYgKHNlbGVjdGVkUGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxtYWluIGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ibGFjayB0ZXh0LXppbmMtNTBcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIG1heC13LTR4bCBweC00IHB5LTYgbGc6cHktMTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtNTAgbWItNFwiPlxuICAgICAgICAgICAgICBObyBCdWlsZCBTZWxlY3RlZFxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTQwMCBtYi02XCI+XG4gICAgICAgICAgICAgIFlvdSBuZWVkIHRvIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGFydCB0byB2aWV3IHlvdXIgYnVpbGQuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBocmVmPVwiL2d1bmJ1aWxkZXJcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbmxpbmUtYmxvY2sgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWFtYmVyLTQwMC82MCBiZy1hbWJlci00MDAvMTAgcHgtNCBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1hbWJlci0yMDAgaG92ZXI6YmctYW1iZXItNDAwLzE1IHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgR28gdG8gR3VuYnVpbGRlclxuICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWFpbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8bWFpbiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctYmxhY2sgdGV4dC16aW5jLTUwXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gbWF4LXctNnhsIHB4LTQgcHktNiBsZzpweS0xMFwiPlxuICAgICAgICB7LyogSGVhZGVyICovfVxuICAgICAgICA8aGVhZGVyIGNsYXNzTmFtZT1cIm1iLTZcIj5cbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgaHJlZj1cIi9ndW5idWlsZGVyXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMzAwIG1iLTQgaW5saW5lLWJsb2NrXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICDihpAgQmFjayB0byBHdW5idWlsZGVyXG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBnYXAtNCBtZDpmbGV4LXJvdyBtZDppdGVtcy1lbmQgbWQ6anVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWzAuMmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICAgIFNoYWRvdyBTdGFuZGFyZFxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJtdC0xIHRleHQtMnhsIG1kOnRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRcIj5cbiAgICAgICAgICAgICAgICBCdWlsZCA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWFtYmVyLTMwMFwiPlN1bW1hcnk8L3NwYW4+XG4gICAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTIgdGV4dC1zbSB0ZXh0LXppbmMtNDAwIG1heC13LXhsXCI+XG4gICAgICAgICAgICAgICAgUmV2aWV3IHlvdXIgYnVpbGQsIHB1cmNoYXNlIHBhcnRzIGZyb20gb3VyIGFmZmlsaWF0ZSBwYXJ0bmVycywgb3JcbiAgICAgICAgICAgICAgICBzaGFyZSB5b3VyIGJ1aWxkIHdpdGggb3RoZXJzLlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0zIG1kOm10LTBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy00MDBcIj5Ub3RhbCBCdWlsZCBQcmljZTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0zMDBcIj5cbiAgICAgICAgICAgICAgICAke3RvdGFsUHJpY2UudG9GaXhlZCgyKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgICAge3NlbGVjdGVkUGFydHMubGVuZ3RofSAvIHtDQVRFR09SSUVTLmxlbmd0aH0gcGFydHMgc2VsZWN0ZWRcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgey8qIFNoYXJlIFNlY3Rpb24gKi99XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cIm1iLTYgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtNFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBnYXAtMyBzbTpmbGV4LXJvdyBzbTppdGVtcy1jZW50ZXIgc206anVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjE2ZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNDAwIG1iLTJcIj5cbiAgICAgICAgICAgICAgICBTaGFyZSBZb3VyIEJ1aWxkXG4gICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTQwMFwiPlxuICAgICAgICAgICAgICAgIFNoYXJlIHRoaXMgbGluayB0byBsZXQgb3RoZXJzIHZpZXcgeW91ciBidWlsZCBvciBib29rbWFyayBpdCB0b1xuICAgICAgICAgICAgICAgIGNvbWUgYmFjayBsYXRlci5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVNoYXJlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC81MCBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LXppbmMtMzAwIGhvdmVyOmJnLXppbmMtODAwIGhvdmVyOmJvcmRlci16aW5jLTYwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBTaGFyZVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHlMaW5rfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHJvdW5kZWQtbWQgYm9yZGVyIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgICBjb3BpZWRcbiAgICAgICAgICAgICAgICAgICAgPyBcImJvcmRlci1ncmVlbi01MDAgYmctZ3JlZW4tNTAwLzEwIHRleHQtZ3JlZW4tNDAwXCJcbiAgICAgICAgICAgICAgICAgICAgOiBcImJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC81MCB0ZXh0LXppbmMtMzAwIGhvdmVyOmJnLXppbmMtODAwIGhvdmVyOmJvcmRlci16aW5jLTYwMFwiXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Y29waWVkID8gXCJDb3BpZWQhXCIgOiBcIkNvcHkgTGlua1wifVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHtzaGFyZVVybCAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTMgcC0zIHJvdW5kZWQtbWQgYmctemluYy05MDAvNTAgYm9yZGVyIGJvcmRlci16aW5jLTgwMFwiPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy01MDAgbWItMVwiPlNoYXJlYWJsZSBVUkw6PC9wPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy00MDAgYnJlYWstYWxsIGZvbnQtbW9ub1wiPlxuICAgICAgICAgICAgICAgIHtzaGFyZVVybH1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIHsvKiBCdWlsZCBQYXJ0cyAqL31cbiAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtNCBtZDpwLTZcIj5cbiAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjE2ZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNDAwIG1iLTRcIj5cbiAgICAgICAgICAgIFNlbGVjdGVkIFBhcnRzXG4gICAgICAgICAgPC9oMj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgICB7Q0FURUdPUklFUy5tYXAoKGNhdGVnb3J5KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUGFydElkID0gYnVpbGRbY2F0ZWdvcnkuaWRdO1xuICAgICAgICAgICAgICBjb25zdCBwYXJ0ID0gUEFSVFMuZmluZChcbiAgICAgICAgICAgICAgICAocCkgPT4gcC5pZCA9PT0gc2VsZWN0ZWRQYXJ0SWQgJiYgcC5jYXRlZ29yeUlkID09PSBjYXRlZ29yeS5pZCxcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGtleT17Y2F0ZWdvcnkuaWR9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJib3JkZXIgYm9yZGVyLXppbmMtODAwIHJvdW5kZWQtbWQgcC00IGJnLXppbmMtOTAwLzMwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LVswLjdyZW1dIHVwcGVyY2FzZSB0cmFja2luZy1bMC4xNmVtXSB0ZXh0LXppbmMtNTAwIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjYXRlZ29yeS5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXppbmMtNDAwXCI+e3BhcnQuYnJhbmR9PC9zcGFuPntcIiBcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTQwMCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5ub3Rlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMyBmbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e3BhcnQuYWZmaWxpYXRlVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1hbWJlci00MDAvNjAgYmctYW1iZXItNDAwLzEwIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtYW1iZXItMjAwIGhvdmVyOmJnLWFtYmVyLTQwMC8xNSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVyY2hhc2UgZnJvbSBSZXRhaWxlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTQgaC00XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXsyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAgNkg2YTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyLyR7Y2F0ZWdvcnkuaWR9LyR7cGFydC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC81MCBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LXppbmMtMzAwIGhvdmVyOmJnLXppbmMtODAwIGhvdmVyOmJvcmRlci16aW5jLTYwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlldyBEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTYwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBOb3Qgc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB7cGFydCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0zMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwYXJ0LnByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICB7LyogQWN0aW9ucyAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC02IGZsZXggZmxleC1jb2wgZ2FwLTMgc206ZmxleC1yb3cgc206anVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGhyZWY9XCIvZ3VuYnVpbGRlclwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05MDAvNTAgcHgtNiBweS0zIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy02MDAgdHJhbnNpdGlvbi1jb2xvcnMgdGV4dC1jZW50ZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEVkaXQgQnVpbGRcbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0zXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oU1RPUkFHRV9LRVkpO1xuICAgICAgICAgICAgICAgIHJvdXRlci5wdXNoKFwiL2d1bmJ1aWxkZXJcIik7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC81MCBweC02IHB5LTMgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LXppbmMtMzAwIGhvdmVyOmJnLXppbmMtODAwIGhvdmVyOmJvcmRlci16aW5jLTYwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIENsZWFyIEJ1aWxkXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21haW4+XG4gICk7XG59XG5cbiJdLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJMaW5rIiwidXNlU2VhcmNoUGFyYW1zIiwidXNlUm91dGVyIiwiQ0FURUdPUklFUyIsIlBBUlRTIiwiU1RPUkFHRV9LRVkiLCJlbmNvZGVCdWlsZFN0YXRlIiwiYnVpbGQiLCJlbnRyaWVzIiwiT2JqZWN0IiwiZmlsdGVyIiwiXyIsInBhcnRJZCIsIm1hcCIsImNhdGVnb3J5SWQiLCJqb2luIiwiYnRvYSIsImRlY29kZUJ1aWxkU3RhdGUiLCJlbmNvZGVkIiwiZGVjb2RlZCIsImF0b2IiLCJzcGxpdCIsImZvckVhY2giLCJlbnRyeSIsIkJ1aWxkRGV0YWlsc1BhZ2UiLCJzZWFyY2hQYXJhbXMiLCJyb3V0ZXIiLCJzZXRCdWlsZCIsInNoYXJlVXJsIiwic2V0U2hhcmVVcmwiLCJjb3BpZWQiLCJzZXRDb3BpZWQiLCJidWlsZFBhcmFtIiwiZ2V0IiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdG9yZWQiLCJnZXRJdGVtIiwicGFyc2VkIiwicGFyc2UiLCJrZXlzIiwibGVuZ3RoIiwidXJsIiwid2luZG93IiwibG9jYXRpb24iLCJvcmlnaW4iLCJzZWxlY3RlZFBhcnRzIiwiZmluZCIsInAiLCJpZCIsIkJvb2xlYW4iLCJ0b3RhbFByaWNlIiwicmVkdWNlIiwic3VtIiwicHJpY2UiLCJoYW5kbGVDb3B5TGluayIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsInNldFRpbWVvdXQiLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJoYW5kbGVTaGFyZSIsInNoYXJlIiwidGl0bGUiLCJ0ZXh0IiwidG9GaXhlZCIsIm1haW4iLCJjbGFzc05hbWUiLCJkaXYiLCJoMSIsImhyZWYiLCJoZWFkZXIiLCJzcGFuIiwic2VjdGlvbiIsImgyIiwiYnV0dG9uIiwidHlwZSIsIm9uQ2xpY2siLCJjYXRlZ29yeSIsInNlbGVjdGVkUGFydElkIiwicGFydCIsIm5hbWUiLCJicmFuZCIsIm5vdGVzIiwiYSIsImFmZmlsaWF0ZVVybCIsInRhcmdldCIsInJlbCIsInN2ZyIsImZpbGwiLCJzdHJva2UiLCJ2aWV3Qm94IiwicGF0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsInN0cm9rZVdpZHRoIiwiZCIsInJlbW92ZUl0ZW0iLCJwdXNoIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/build/page.tsx\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./data/gunbuilderParts.ts": +/*!*********************************!*\ + !*** ./data/gunbuilderParts.ts ***! + \*********************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CATEGORIES: function() { return /* binding */ CATEGORIES; },\n/* harmony export */ PARTS: function() { return /* binding */ PARTS; }\n/* harmony export */ });\nconst CATEGORIES = [\n {\n id: \"lower\",\n name: \"Lower Receiver\"\n },\n {\n id: \"upper\",\n name: \"Upper Receiver\"\n },\n {\n id: \"barrel\",\n name: \"Barrel\"\n },\n {\n id: \"handguard\",\n name: \"Handguard\"\n },\n {\n id: \"stock\",\n name: \"Stock\"\n },\n {\n id: \"optic\",\n name: \"Optic\"\n }\n];\nconst PARTS = [\n {\n id: \"lower-aero-m4e1\",\n name: \"M4E1 Stripped Lower Receiver\",\n brand: \"Aero Precision\",\n categoryId: \"lower\",\n price: 129.99,\n affiliateUrl: \"https://example.com/aero-m4e1\",\n notes: \"Forged 7075-T6, threaded bolt catch\"\n },\n {\n id: \"lower-solgw\",\n name: \"Loyal 9 Stripped Lower\",\n brand: \"Sons of Liberty Gun Works\",\n categoryId: \"lower\",\n price: 189.0,\n affiliateUrl: \"https://example.com/solgw-lower\"\n },\n {\n id: \"upper-aero-enhanced\",\n name: \"Enhanced Upper Receiver\",\n brand: \"Aero Precision\",\n categoryId: \"upper\",\n price: 149.99,\n affiliateUrl: \"https://example.com/aero-enhanced-upper\"\n },\n {\n id: \"upper-bcm-m4\",\n name: \"M4 Upper Receiver\",\n brand: \"BCM\",\n categoryId: \"upper\",\n price: 159.99,\n affiliateUrl: \"https://example.com/bcm-m4-upper\"\n },\n {\n id: \"barrel-criterion-16\",\n name: '16\" Hybrid Barrel',\n brand: \"Criterion\",\n categoryId: \"barrel\",\n price: 279.99,\n affiliateUrl: \"https://example.com/criterion-16\",\n notes: \"Mid-length gas, chrome-lined\"\n },\n {\n id: \"barrel-ba-13-9\",\n name: '13.9\" Hanson Performance Series',\n brand: \"Ballistic Advantage\",\n categoryId: \"barrel\",\n price: 209.99,\n affiliateUrl: \"https://example.com/ba-13-9\"\n },\n {\n id: \"hg-geissele-mk8\",\n name: 'MK8 Rail 13.5\"',\n brand: \"Geissele\",\n categoryId: \"handguard\",\n price: 324.99,\n affiliateUrl: \"https://example.com/geissele-mk8\"\n },\n {\n id: \"hg-centurion-c4\",\n name: 'C4 M-LOK 12\"',\n brand: \"Centurion Arms\",\n categoryId: \"handguard\",\n price: 284.99,\n affiliateUrl: \"https://example.com/centurion-c4\"\n },\n {\n id: \"stock-b5-bravo\",\n name: \"BRAVO Stock\",\n brand: \"B5 Systems\",\n categoryId: \"stock\",\n price: 74.99,\n affiliateUrl: \"https://example.com/b5-bravo\"\n },\n {\n id: \"stock-magpul-sl\",\n name: \"MOE SL Carbine Stock\",\n brand: \"Magpul\",\n categoryId: \"stock\",\n price: 69.99,\n affiliateUrl: \"https://example.com/magpul-sl\"\n },\n {\n id: \"optic-eotech-exps3\",\n name: \"EXPS3 Holographic Sight\",\n brand: \"EOTECH\",\n categoryId: \"optic\",\n price: 749.0,\n affiliateUrl: \"https://example.com/eotech-exps3\"\n },\n {\n id: \"optic-holosun-509t\",\n name: \"HE509T Red Dot\",\n brand: \"Holosun\",\n categoryId: \"optic\",\n price: 349.99,\n affiliateUrl: \"https://example.com/holosun-509t\"\n }\n];\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2RhdGEvZ3VuYnVpbGRlclBhcnRzLnRzIiwibWFwcGluZ3MiOiI7Ozs7O0FBRU8sTUFBTUEsYUFBeUI7SUFDcEM7UUFBRUMsSUFBSTtRQUFTQyxNQUFNO0lBQWlCO0lBQ3RDO1FBQUVELElBQUk7UUFBU0MsTUFBTTtJQUFpQjtJQUN0QztRQUFFRCxJQUFJO1FBQVVDLE1BQU07SUFBUztJQUMvQjtRQUFFRCxJQUFJO1FBQWFDLE1BQU07SUFBWTtJQUNyQztRQUFFRCxJQUFJO1FBQVNDLE1BQU07SUFBUTtJQUM3QjtRQUFFRCxJQUFJO1FBQVNDLE1BQU07SUFBUTtDQUM5QixDQUFDO0FBRUssTUFBTUMsUUFBZ0I7SUFDM0I7UUFDRUYsSUFBSTtRQUNKQyxNQUFNO1FBQ05FLE9BQU87UUFDUEMsWUFBWTtRQUNaQyxPQUFPO1FBQ1BDLGNBQWM7UUFDZEMsT0FBTztJQUNUO0lBQ0E7UUFDRVAsSUFBSTtRQUNKQyxNQUFNO1FBQ05FLE9BQU87UUFDUEMsWUFBWTtRQUNaQyxPQUFPO1FBQ1BDLGNBQWM7SUFDaEI7SUFDQTtRQUNFTixJQUFJO1FBQ0pDLE1BQU07UUFDTkUsT0FBTztRQUNQQyxZQUFZO1FBQ1pDLE9BQU87UUFDUEMsY0FBYztJQUNoQjtJQUNBO1FBQ0VOLElBQUk7UUFDSkMsTUFBTTtRQUNORSxPQUFPO1FBQ1BDLFlBQVk7UUFDWkMsT0FBTztRQUNQQyxjQUFjO0lBQ2hCO0lBQ0E7UUFDRU4sSUFBSTtRQUNKQyxNQUFNO1FBQ05FLE9BQU87UUFDUEMsWUFBWTtRQUNaQyxPQUFPO1FBQ1BDLGNBQWM7UUFDZEMsT0FBTztJQUNUO0lBQ0E7UUFDRVAsSUFBSTtRQUNKQyxNQUFNO1FBQ05FLE9BQU87UUFDUEMsWUFBWTtRQUNaQyxPQUFPO1FBQ1BDLGNBQWM7SUFDaEI7SUFDQTtRQUNFTixJQUFJO1FBQ0pDLE1BQU07UUFDTkUsT0FBTztRQUNQQyxZQUFZO1FBQ1pDLE9BQU87UUFDUEMsY0FBYztJQUNoQjtJQUNBO1FBQ0VOLElBQUk7UUFDSkMsTUFBTTtRQUNORSxPQUFPO1FBQ1BDLFlBQVk7UUFDWkMsT0FBTztRQUNQQyxjQUFjO0lBQ2hCO0lBQ0E7UUFDRU4sSUFBSTtRQUNKQyxNQUFNO1FBQ05FLE9BQU87UUFDUEMsWUFBWTtRQUNaQyxPQUFPO1FBQ1BDLGNBQWM7SUFDaEI7SUFDQTtRQUNFTixJQUFJO1FBQ0pDLE1BQU07UUFDTkUsT0FBTztRQUNQQyxZQUFZO1FBQ1pDLE9BQU87UUFDUEMsY0FBYztJQUNoQjtJQUNBO1FBQ0VOLElBQUk7UUFDSkMsTUFBTTtRQUNORSxPQUFPO1FBQ1BDLFlBQVk7UUFDWkMsT0FBTztRQUNQQyxjQUFjO0lBQ2hCO0lBQ0E7UUFDRU4sSUFBSTtRQUNKQyxNQUFNO1FBQ05FLE9BQU87UUFDUEMsWUFBWTtRQUNaQyxPQUFPO1FBQ1BDLGNBQWM7SUFDaEI7Q0FDRCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2RhdGEvZ3VuYnVpbGRlclBhcnRzLnRzPzczYWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDYXRlZ29yeSwgUGFydCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcblxuZXhwb3J0IGNvbnN0IENBVEVHT1JJRVM6IENhdGVnb3J5W10gPSBbXG4gIHsgaWQ6IFwibG93ZXJcIiwgbmFtZTogXCJMb3dlciBSZWNlaXZlclwiIH0sXG4gIHsgaWQ6IFwidXBwZXJcIiwgbmFtZTogXCJVcHBlciBSZWNlaXZlclwiIH0sXG4gIHsgaWQ6IFwiYmFycmVsXCIsIG5hbWU6IFwiQmFycmVsXCIgfSxcbiAgeyBpZDogXCJoYW5kZ3VhcmRcIiwgbmFtZTogXCJIYW5kZ3VhcmRcIiB9LFxuICB7IGlkOiBcInN0b2NrXCIsIG5hbWU6IFwiU3RvY2tcIiB9LFxuICB7IGlkOiBcIm9wdGljXCIsIG5hbWU6IFwiT3B0aWNcIiB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IFBBUlRTOiBQYXJ0W10gPSBbXG4gIHtcbiAgICBpZDogXCJsb3dlci1hZXJvLW00ZTFcIixcbiAgICBuYW1lOiBcIk00RTEgU3RyaXBwZWQgTG93ZXIgUmVjZWl2ZXJcIixcbiAgICBicmFuZDogXCJBZXJvIFByZWNpc2lvblwiLFxuICAgIGNhdGVnb3J5SWQ6IFwibG93ZXJcIixcbiAgICBwcmljZTogMTI5Ljk5LFxuICAgIGFmZmlsaWF0ZVVybDogXCJodHRwczovL2V4YW1wbGUuY29tL2Flcm8tbTRlMVwiLFxuICAgIG5vdGVzOiBcIkZvcmdlZCA3MDc1LVQ2LCB0aHJlYWRlZCBib2x0IGNhdGNoXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJsb3dlci1zb2xnd1wiLFxuICAgIG5hbWU6IFwiTG95YWwgOSBTdHJpcHBlZCBMb3dlclwiLFxuICAgIGJyYW5kOiBcIlNvbnMgb2YgTGliZXJ0eSBHdW4gV29ya3NcIixcbiAgICBjYXRlZ29yeUlkOiBcImxvd2VyXCIsXG4gICAgcHJpY2U6IDE4OS4wLFxuICAgIGFmZmlsaWF0ZVVybDogXCJodHRwczovL2V4YW1wbGUuY29tL3NvbGd3LWxvd2VyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJ1cHBlci1hZXJvLWVuaGFuY2VkXCIsXG4gICAgbmFtZTogXCJFbmhhbmNlZCBVcHBlciBSZWNlaXZlclwiLFxuICAgIGJyYW5kOiBcIkFlcm8gUHJlY2lzaW9uXCIsXG4gICAgY2F0ZWdvcnlJZDogXCJ1cHBlclwiLFxuICAgIHByaWNlOiAxNDkuOTksXG4gICAgYWZmaWxpYXRlVXJsOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vYWVyby1lbmhhbmNlZC11cHBlclwiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwidXBwZXItYmNtLW00XCIsXG4gICAgbmFtZTogXCJNNCBVcHBlciBSZWNlaXZlclwiLFxuICAgIGJyYW5kOiBcIkJDTVwiLFxuICAgIGNhdGVnb3J5SWQ6IFwidXBwZXJcIixcbiAgICBwcmljZTogMTU5Ljk5LFxuICAgIGFmZmlsaWF0ZVVybDogXCJodHRwczovL2V4YW1wbGUuY29tL2JjbS1tNC11cHBlclwiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwiYmFycmVsLWNyaXRlcmlvbi0xNlwiLFxuICAgIG5hbWU6IFwiMTZcXFwiIEh5YnJpZCBCYXJyZWxcIixcbiAgICBicmFuZDogXCJDcml0ZXJpb25cIixcbiAgICBjYXRlZ29yeUlkOiBcImJhcnJlbFwiLFxuICAgIHByaWNlOiAyNzkuOTksXG4gICAgYWZmaWxpYXRlVXJsOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vY3JpdGVyaW9uLTE2XCIsXG4gICAgbm90ZXM6IFwiTWlkLWxlbmd0aCBnYXMsIGNocm9tZS1saW5lZFwiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwiYmFycmVsLWJhLTEzLTlcIixcbiAgICBuYW1lOiBcIjEzLjlcXFwiIEhhbnNvbiBQZXJmb3JtYW5jZSBTZXJpZXNcIixcbiAgICBicmFuZDogXCJCYWxsaXN0aWMgQWR2YW50YWdlXCIsXG4gICAgY2F0ZWdvcnlJZDogXCJiYXJyZWxcIixcbiAgICBwcmljZTogMjA5Ljk5LFxuICAgIGFmZmlsaWF0ZVVybDogXCJodHRwczovL2V4YW1wbGUuY29tL2JhLTEzLTlcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcImhnLWdlaXNzZWxlLW1rOFwiLFxuICAgIG5hbWU6IFwiTUs4IFJhaWwgMTMuNVxcXCJcIixcbiAgICBicmFuZDogXCJHZWlzc2VsZVwiLFxuICAgIGNhdGVnb3J5SWQ6IFwiaGFuZGd1YXJkXCIsXG4gICAgcHJpY2U6IDMyNC45OSxcbiAgICBhZmZpbGlhdGVVcmw6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9nZWlzc2VsZS1tazhcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcImhnLWNlbnR1cmlvbi1jNFwiLFxuICAgIG5hbWU6IFwiQzQgTS1MT0sgMTJcXFwiXCIsXG4gICAgYnJhbmQ6IFwiQ2VudHVyaW9uIEFybXNcIixcbiAgICBjYXRlZ29yeUlkOiBcImhhbmRndWFyZFwiLFxuICAgIHByaWNlOiAyODQuOTksXG4gICAgYWZmaWxpYXRlVXJsOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vY2VudHVyaW9uLWM0XCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJzdG9jay1iNS1icmF2b1wiLFxuICAgIG5hbWU6IFwiQlJBVk8gU3RvY2tcIixcbiAgICBicmFuZDogXCJCNSBTeXN0ZW1zXCIsXG4gICAgY2F0ZWdvcnlJZDogXCJzdG9ja1wiLFxuICAgIHByaWNlOiA3NC45OSxcbiAgICBhZmZpbGlhdGVVcmw6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9iNS1icmF2b1wiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwic3RvY2stbWFncHVsLXNsXCIsXG4gICAgbmFtZTogXCJNT0UgU0wgQ2FyYmluZSBTdG9ja1wiLFxuICAgIGJyYW5kOiBcIk1hZ3B1bFwiLFxuICAgIGNhdGVnb3J5SWQ6IFwic3RvY2tcIixcbiAgICBwcmljZTogNjkuOTksXG4gICAgYWZmaWxpYXRlVXJsOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vbWFncHVsLXNsXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJvcHRpYy1lb3RlY2gtZXhwczNcIixcbiAgICBuYW1lOiBcIkVYUFMzIEhvbG9ncmFwaGljIFNpZ2h0XCIsXG4gICAgYnJhbmQ6IFwiRU9URUNIXCIsXG4gICAgY2F0ZWdvcnlJZDogXCJvcHRpY1wiLFxuICAgIHByaWNlOiA3NDkuMCxcbiAgICBhZmZpbGlhdGVVcmw6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9lb3RlY2gtZXhwczNcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcIm9wdGljLWhvbG9zdW4tNTA5dFwiLFxuICAgIG5hbWU6IFwiSEU1MDlUIFJlZCBEb3RcIixcbiAgICBicmFuZDogXCJIb2xvc3VuXCIsXG4gICAgY2F0ZWdvcnlJZDogXCJvcHRpY1wiLFxuICAgIHByaWNlOiAzNDkuOTksXG4gICAgYWZmaWxpYXRlVXJsOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vaG9sb3N1bi01MDl0XCIsXG4gIH0sXG5dO1xuIl0sIm5hbWVzIjpbIkNBVEVHT1JJRVMiLCJpZCIsIm5hbWUiLCJQQVJUUyIsImJyYW5kIiwiY2F0ZWdvcnlJZCIsInByaWNlIiwiYWZmaWxpYXRlVXJsIiwibm90ZXMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./data/gunbuilderParts.ts\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/client/add-locale.js": +/*!*****************************************************!*\ + !*** ./node_modules/next/dist/client/add-locale.js ***! + \*****************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"addLocale\", ({\n enumerable: true,\n get: function() {\n return addLocale;\n }\n}));\nconst _normalizetrailingslash = __webpack_require__(/*! ./normalize-trailing-slash */ \"(app-pages-browser)/./node_modules/next/dist/client/normalize-trailing-slash.js\");\nconst addLocale = function(path) {\n for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n args[_key - 1] = arguments[_key];\n }\n if (false) {}\n return path;\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=add-locale.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FkZC1sb2NhbGUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs2Q0FHYUE7OztlQUFBQTs7O29EQUY4QjtBQUVwQyxNQUFNQSxZQUF1QixTQUFDQyxJQUFBQTtxQ0FBU0MsT0FBQUEsSUFBQUEsTUFBQUEsT0FBQUEsSUFBQUEsT0FBQUEsSUFBQUEsSUFBQUEsT0FBQUEsR0FBQUEsT0FBQUEsTUFBQUEsT0FBQUE7UUFBQUEsSUFBQUEsQ0FBQUEsT0FBQUEsRUFBQUEsR0FBQUEsU0FBQUEsQ0FBQUEsS0FBQUE7O0lBQzVDLElBQUlDLEtBQStCLEVBQUUsRUFJckM7SUFDQSxPQUFPRjtBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi9zcmMvY2xpZW50L2FkZC1sb2NhbGUudHM/ZmFhZSJdLCJuYW1lcyI6WyJhZGRMb2NhbGUiLCJwYXRoIiwiYXJncyIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfSTE4Tl9TVVBQT1JUIiwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJyZXF1aXJlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/add-locale.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/client/get-domain-locale.js": +/*!************************************************************!*\ + !*** ./node_modules/next/dist/client/get-domain-locale.js ***! + \************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getDomainLocale\", ({\n enumerable: true,\n get: function() {\n return getDomainLocale;\n }\n}));\nconst _normalizetrailingslash = __webpack_require__(/*! ./normalize-trailing-slash */ \"(app-pages-browser)/./node_modules/next/dist/client/normalize-trailing-slash.js\");\nconst basePath = false || \"\";\nfunction getDomainLocale(path, locale, locales, domainLocales) {\n if (false) {} else {\n return false;\n }\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=get-domain-locale.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2dldC1kb21haW4tbG9jYWxlLmpzIiwibWFwcGluZ3MiOiI7Ozs7bURBT2dCQTs7O2VBQUFBOzs7b0RBSjJCO0FBRTNDLE1BQU1DLFdBQVdDLE1BQW1DLElBQWU7QUFFNUQsU0FBU0YsZ0JBQ2RLLElBQVksRUFDWkMsTUFBdUIsRUFDdkJDLE9BQWtCLEVBQ2xCQyxhQUE4QjtJQUU5QixJQUFJTixLQUErQixFQUFFLEVBZ0JyQyxNQUFPO1FBQ0wsT0FBTztJQUNUO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uLy4uL3NyYy9jbGllbnQvZ2V0LWRvbWFpbi1sb2NhbGUudHM/MWQ0ZSJdLCJuYW1lcyI6WyJnZXREb21haW5Mb2NhbGUiLCJiYXNlUGF0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfUk9VVEVSX0JBU0VQQVRIIiwicGF0aCIsImxvY2FsZSIsImxvY2FsZXMiLCJkb21haW5Mb2NhbGVzIiwiX19ORVhUX0kxOE5fU1VQUE9SVCIsIm5vcm1hbGl6ZUxvY2FsZVBhdGgiLCJyZXF1aXJlIiwiZGV0ZWN0RG9tYWluTG9jYWxlIiwidGFyZ2V0IiwiZGV0ZWN0ZWRMb2NhbGUiLCJkb21haW4iLCJ1bmRlZmluZWQiLCJwcm90byIsImh0dHAiLCJmaW5hbExvY2FsZSIsImRlZmF1bHRMb2NhbGUiLCJub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/get-domain-locale.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/client/link.js": +/*!***********************************************!*\ + !*** ./node_modules/next/dist/client/link.js ***! + \***********************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("/* __next_internal_client_entry_do_not_use__ cjs */ \nvar _s = $RefreshSig$();\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _default;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nconst _resolvehref = __webpack_require__(/*! ./resolve-href */ \"(app-pages-browser)/./node_modules/next/dist/client/resolve-href.js\");\nconst _islocalurl = __webpack_require__(/*! ../shared/lib/router/utils/is-local-url */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/is-local-url.js\");\nconst _formaturl = __webpack_require__(/*! ../shared/lib/router/utils/format-url */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/format-url.js\");\nconst _utils = __webpack_require__(/*! ../shared/lib/utils */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/utils.js\");\nconst _addlocale = __webpack_require__(/*! ./add-locale */ \"(app-pages-browser)/./node_modules/next/dist/client/add-locale.js\");\nconst _routercontextsharedruntime = __webpack_require__(/*! ../shared/lib/router-context.shared-runtime */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router-context.shared-runtime.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../shared/lib/app-router-context.shared-runtime */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js\");\nconst _useintersection = __webpack_require__(/*! ./use-intersection */ \"(app-pages-browser)/./node_modules/next/dist/client/use-intersection.js\");\nconst _getdomainlocale = __webpack_require__(/*! ./get-domain-locale */ \"(app-pages-browser)/./node_modules/next/dist/client/get-domain-locale.js\");\nconst _addbasepath = __webpack_require__(/*! ./add-base-path */ \"(app-pages-browser)/./node_modules/next/dist/client/add-base-path.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./components/router-reducer/router-reducer-types */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst prefetched = new Set();\nfunction prefetch(router, href, as, options, appOptions, isAppRouter) {\n if (typeof window === \"undefined\") {\n return;\n }\n // app-router supports external urls out of the box so it shouldn't short-circuit here as support for e.g. `replace` is added in the app-router.\n if (!isAppRouter && !(0, _islocalurl.isLocalURL)(href)) {\n return;\n }\n // We should only dedupe requests when experimental.optimisticClientCache is\n // disabled.\n if (!options.bypassPrefetchedCheck) {\n const locale = typeof options.locale !== \"undefined\" ? options.locale : \"locale\" in router ? router.locale : undefined;\n const prefetchedKey = href + \"%\" + as + \"%\" + locale;\n // If we've already fetched the key, then don't prefetch it again!\n if (prefetched.has(prefetchedKey)) {\n return;\n }\n // Mark this URL as prefetched.\n prefetched.add(prefetchedKey);\n }\n const prefetchPromise = isAppRouter ? router.prefetch(href, appOptions) : router.prefetch(href, as, options);\n // Prefetch the JSON page if asked (only in the client)\n // We need to handle a prefetch error here since we may be\n // loading with priority which can reject but we don't\n // want to force navigation since this is only a prefetch\n Promise.resolve(prefetchPromise).catch((err)=>{\n if (true) {\n // rethrow to show invalid URL errors\n throw err;\n }\n });\n}\nfunction isModifiedEvent(event) {\n const eventTarget = event.currentTarget;\n const target = eventTarget.getAttribute(\"target\");\n return target && target !== \"_self\" || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || // triggers resource download\n event.nativeEvent && event.nativeEvent.which === 2;\n}\nfunction linkClicked(e, router, href, as, replace, shallow, scroll, locale, isAppRouter) {\n const { nodeName } = e.currentTarget;\n // anchors inside an svg have a lowercase nodeName\n const isAnchorNodeName = nodeName.toUpperCase() === \"A\";\n if (isAnchorNodeName && (isModifiedEvent(e) || // app-router supports external urls out of the box so it shouldn't short-circuit here as support for e.g. `replace` is added in the app-router.\n !isAppRouter && !(0, _islocalurl.isLocalURL)(href))) {\n // ignore click for browser’s default behavior\n return;\n }\n e.preventDefault();\n const navigate = ()=>{\n // If the router is an NextRouter instance it will have `beforePopState`\n const routerScroll = scroll != null ? scroll : true;\n if (\"beforePopState\" in router) {\n router[replace ? \"replace\" : \"push\"](href, as, {\n shallow,\n locale,\n scroll: routerScroll\n });\n } else {\n router[replace ? \"replace\" : \"push\"](as || href, {\n scroll: routerScroll\n });\n }\n };\n if (isAppRouter) {\n _react.default.startTransition(navigate);\n } else {\n navigate();\n }\n}\nfunction formatStringOrUrl(urlObjOrString) {\n if (typeof urlObjOrString === \"string\") {\n return urlObjOrString;\n }\n return (0, _formaturl.formatUrl)(urlObjOrString);\n}\n/**\n * A React component that extends the HTML `` element to provide [prefetching](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#2-prefetching)\n * and client-side navigation between routes.\n *\n * It is the primary way to navigate between routes in Next.js.\n *\n * Read more: [Next.js docs: ``](https://nextjs.org/docs/app/api-reference/components/link)\n */ const Link = /*#__PURE__*/ _s(_react.default.forwardRef(_c = _s(function LinkComponent(props, forwardedRef) {\n _s();\n let children;\n const { href: hrefProp, as: asProp, children: childrenProp, prefetch: prefetchProp = null, passHref, replace, shallow, scroll, locale, onClick, onMouseEnter: onMouseEnterProp, onTouchStart: onTouchStartProp, legacyBehavior = false, ...restProps } = props;\n children = childrenProp;\n if (legacyBehavior && (typeof children === \"string\" || typeof children === \"number\")) {\n children = /*#__PURE__*/ (0, _jsxruntime.jsx)(\"a\", {\n children: children\n });\n }\n const pagesRouter = _react.default.useContext(_routercontextsharedruntime.RouterContext);\n const appRouter = _react.default.useContext(_approutercontextsharedruntime.AppRouterContext);\n const router = pagesRouter != null ? pagesRouter : appRouter;\n // We're in the app directory if there is no pages router.\n const isAppRouter = !pagesRouter;\n const prefetchEnabled = prefetchProp !== false;\n /**\n * The possible states for prefetch are:\n * - null: this is the default \"auto\" mode, where we will prefetch partially if the link is in the viewport\n * - true: we will prefetch if the link is visible and prefetch the full page, not just partially\n * - false: we will not prefetch if in the viewport at all\n */ const appPrefetchKind = prefetchProp === null ? _routerreducertypes.PrefetchKind.AUTO : _routerreducertypes.PrefetchKind.FULL;\n if (true) {\n function createPropError(args) {\n return new Error(\"Failed prop type: The prop `\" + args.key + \"` expects a \" + args.expected + \" in ``, but got `\" + args.actual + \"` instead.\" + (typeof window !== \"undefined\" ? \"\\nOpen your browser's console to view the Component stack trace.\" : \"\"));\n }\n // TypeScript trick for type-guarding:\n const requiredPropsGuard = {\n href: true\n };\n const requiredProps = Object.keys(requiredPropsGuard);\n requiredProps.forEach((key)=>{\n if (key === \"href\") {\n if (props[key] == null || typeof props[key] !== \"string\" && typeof props[key] !== \"object\") {\n throw createPropError({\n key,\n expected: \"`string` or `object`\",\n actual: props[key] === null ? \"null\" : typeof props[key]\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _ = key;\n }\n });\n // TypeScript trick for type-guarding:\n const optionalPropsGuard = {\n as: true,\n replace: true,\n scroll: true,\n shallow: true,\n passHref: true,\n prefetch: true,\n locale: true,\n onClick: true,\n onMouseEnter: true,\n onTouchStart: true,\n legacyBehavior: true\n };\n const optionalProps = Object.keys(optionalPropsGuard);\n optionalProps.forEach((key)=>{\n const valType = typeof props[key];\n if (key === \"as\") {\n if (props[key] && valType !== \"string\" && valType !== \"object\") {\n throw createPropError({\n key,\n expected: \"`string` or `object`\",\n actual: valType\n });\n }\n } else if (key === \"locale\") {\n if (props[key] && valType !== \"string\") {\n throw createPropError({\n key,\n expected: \"`string`\",\n actual: valType\n });\n }\n } else if (key === \"onClick\" || key === \"onMouseEnter\" || key === \"onTouchStart\") {\n if (props[key] && valType !== \"function\") {\n throw createPropError({\n key,\n expected: \"`function`\",\n actual: valType\n });\n }\n } else if (key === \"replace\" || key === \"scroll\" || key === \"shallow\" || key === \"passHref\" || key === \"prefetch\" || key === \"legacyBehavior\") {\n if (props[key] != null && valType !== \"boolean\") {\n throw createPropError({\n key,\n expected: \"`boolean`\",\n actual: valType\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _ = key;\n }\n });\n // This hook is in a conditional but that is ok because `process.env.NODE_ENV` never changes\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const hasWarned = _react.default.useRef(false);\n if (props.prefetch && !hasWarned.current && !isAppRouter) {\n hasWarned.current = true;\n console.warn(\"Next.js auto-prefetches automatically based on viewport. The prefetch attribute is no longer needed. More: https://nextjs.org/docs/messages/prefetch-true-deprecated\");\n }\n }\n if (true) {\n if (isAppRouter && !asProp) {\n let href;\n if (typeof hrefProp === \"string\") {\n href = hrefProp;\n } else if (typeof hrefProp === \"object\" && typeof hrefProp.pathname === \"string\") {\n href = hrefProp.pathname;\n }\n if (href) {\n const hasDynamicSegment = href.split(\"/\").some((segment)=>segment.startsWith(\"[\") && segment.endsWith(\"]\"));\n if (hasDynamicSegment) {\n throw new Error(\"Dynamic href `\" + href + \"` found in while using the `/app` router, this is not supported. Read more: https://nextjs.org/docs/messages/app-dir-dynamic-href\");\n }\n }\n }\n }\n const { href, as } = _react.default.useMemo(()=>{\n if (!pagesRouter) {\n const resolvedHref = formatStringOrUrl(hrefProp);\n return {\n href: resolvedHref,\n as: asProp ? formatStringOrUrl(asProp) : resolvedHref\n };\n }\n const [resolvedHref, resolvedAs] = (0, _resolvehref.resolveHref)(pagesRouter, hrefProp, true);\n return {\n href: resolvedHref,\n as: asProp ? (0, _resolvehref.resolveHref)(pagesRouter, asProp) : resolvedAs || resolvedHref\n };\n }, [\n pagesRouter,\n hrefProp,\n asProp\n ]);\n const previousHref = _react.default.useRef(href);\n const previousAs = _react.default.useRef(as);\n // This will return the first child, if multiple are provided it will throw an error\n let child;\n if (legacyBehavior) {\n if (true) {\n if (onClick) {\n console.warn('\"onClick\" was passed to with `href` of `' + hrefProp + '` but \"legacyBehavior\" was set. The legacy behavior requires onClick be set on the child of next/link');\n }\n if (onMouseEnterProp) {\n console.warn('\"onMouseEnter\" was passed to with `href` of `' + hrefProp + '` but \"legacyBehavior\" was set. The legacy behavior requires onMouseEnter be set on the child of next/link');\n }\n try {\n child = _react.default.Children.only(children);\n } catch (err) {\n if (!children) {\n throw new Error(\"No children were passed to with `href` of `\" + hrefProp + \"` but one child is required https://nextjs.org/docs/messages/link-no-children\");\n }\n throw new Error(\"Multiple children were passed to with `href` of `\" + hrefProp + \"` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children\" + (typeof window !== \"undefined\" ? \" \\nOpen your browser's console to view the Component stack trace.\" : \"\"));\n }\n } else {}\n } else {\n if (true) {\n if ((children == null ? void 0 : children.type) === \"a\") {\n throw new Error(\"Invalid with child. Please remove or use .\\nLearn more: https://nextjs.org/docs/messages/invalid-new-link-with-extra-anchor\");\n }\n }\n }\n const childRef = legacyBehavior ? child && typeof child === \"object\" && child.ref : forwardedRef;\n const [setIntersectionRef, isVisible, resetVisible] = (0, _useintersection.useIntersection)({\n rootMargin: \"200px\"\n });\n const setRef = _react.default.useCallback((el)=>{\n // Before the link getting observed, check if visible state need to be reset\n if (previousAs.current !== as || previousHref.current !== href) {\n resetVisible();\n previousAs.current = as;\n previousHref.current = href;\n }\n setIntersectionRef(el);\n if (childRef) {\n if (typeof childRef === \"function\") childRef(el);\n else if (typeof childRef === \"object\") {\n childRef.current = el;\n }\n }\n }, [\n as,\n childRef,\n href,\n resetVisible,\n setIntersectionRef\n ]);\n // Prefetch the URL if we haven't already and it's visible.\n _react.default.useEffect(()=>{\n // in dev, we only prefetch on hover to avoid wasting resources as the prefetch will trigger compiling the page.\n if (true) {\n return;\n }\n if (!router) {\n return;\n }\n // If we don't need to prefetch the URL, don't do prefetch.\n if (!isVisible || !prefetchEnabled) {\n return;\n }\n // Prefetch the URL.\n prefetch(router, href, as, {\n locale\n }, {\n kind: appPrefetchKind\n }, isAppRouter);\n }, [\n as,\n href,\n isVisible,\n locale,\n prefetchEnabled,\n pagesRouter == null ? void 0 : pagesRouter.locale,\n router,\n isAppRouter,\n appPrefetchKind\n ]);\n const childProps = {\n ref: setRef,\n onClick (e) {\n if (true) {\n if (!e) {\n throw new Error('Component rendered inside next/link has to pass click event to \"onClick\" prop.');\n }\n }\n if (!legacyBehavior && typeof onClick === \"function\") {\n onClick(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onClick === \"function\") {\n child.props.onClick(e);\n }\n if (!router) {\n return;\n }\n if (e.defaultPrevented) {\n return;\n }\n linkClicked(e, router, href, as, replace, shallow, scroll, locale, isAppRouter);\n },\n onMouseEnter (e) {\n if (!legacyBehavior && typeof onMouseEnterProp === \"function\") {\n onMouseEnterProp(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onMouseEnter === \"function\") {\n child.props.onMouseEnter(e);\n }\n if (!router) {\n return;\n }\n if ((!prefetchEnabled || \"development\" === \"development\") && isAppRouter) {\n return;\n }\n prefetch(router, href, as, {\n locale,\n priority: true,\n // @see {https://github.com/vercel/next.js/discussions/40268?sort=top#discussioncomment-3572642}\n bypassPrefetchedCheck: true\n }, {\n kind: appPrefetchKind\n }, isAppRouter);\n },\n onTouchStart: false ? 0 : function onTouchStart(e) {\n if (!legacyBehavior && typeof onTouchStartProp === \"function\") {\n onTouchStartProp(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onTouchStart === \"function\") {\n child.props.onTouchStart(e);\n }\n if (!router) {\n return;\n }\n if (!prefetchEnabled && isAppRouter) {\n return;\n }\n prefetch(router, href, as, {\n locale,\n priority: true,\n // @see {https://github.com/vercel/next.js/discussions/40268?sort=top#discussioncomment-3572642}\n bypassPrefetchedCheck: true\n }, {\n kind: appPrefetchKind\n }, isAppRouter);\n }\n };\n // If child is an tag and doesn't have a href attribute, or if the 'passHref' property is\n // defined, we specify the current 'href', so that repetition is not needed by the user.\n // If the url is absolute, we can bypass the logic to prepend the domain and locale.\n if ((0, _utils.isAbsoluteUrl)(as)) {\n childProps.href = as;\n } else if (!legacyBehavior || passHref || child.type === \"a\" && !(\"href\" in child.props)) {\n const curLocale = typeof locale !== \"undefined\" ? locale : pagesRouter == null ? void 0 : pagesRouter.locale;\n // we only render domain locales if we are currently on a domain locale\n // so that locale links are still visitable in development/preview envs\n const localeDomain = (pagesRouter == null ? void 0 : pagesRouter.isLocaleDomain) && (0, _getdomainlocale.getDomainLocale)(as, curLocale, pagesRouter == null ? void 0 : pagesRouter.locales, pagesRouter == null ? void 0 : pagesRouter.domainLocales);\n childProps.href = localeDomain || (0, _addbasepath.addBasePath)((0, _addlocale.addLocale)(as, curLocale, pagesRouter == null ? void 0 : pagesRouter.defaultLocale));\n }\n return legacyBehavior ? /*#__PURE__*/ _react.default.cloneElement(child, childProps) : /*#__PURE__*/ (0, _jsxruntime.jsx)(\"a\", {\n ...restProps,\n ...childProps,\n children: children\n });\n}, \"wKD5mb5mk47bkaStGb/Fvd6RWZE=\")), \"wKD5mb5mk47bkaStGb/Fvd6RWZE=\");\n_c1 = Link;\nconst _default = Link;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=link.js.map\nvar _c, _c1;\n$RefreshReg$(_c, \"Link$_react.default.forwardRef\");\n$RefreshReg$(_c1, \"Link\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2xpbmsuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7NkJBUzRCQSx5QkFBQUMsQ0FBQSxDQUFBQyxtQkFBQUEsQ0FBQTt5Q0FDRDt3Q0FDRDt1Q0FDSTs7Ozt1Q0FRRUEsbUJBQUFBLENBQUE7NkNBQ0E7NkNBQ0o7O0FBMkY1QixNQUFNQyxzQkFBaUJDLG1CQUFBQSxDQUFBQSwrSkFBQUE7QUFVdkIsTUFBQUQsYUFDRUUsSUFBQUE7U0FPSUMsU0FBT0MsTUFBQUEsRUFBV0MsSUFBQSxFQUFBQyxFQUFBLEVBQUFDLE9BQWEsRUFBQUMsVUFBQSxFQUFBQyxXQUFBO1FBQ2pDLE9BQUFMLFdBQUE7UUFDRjtJQUVBO0lBQ0EsZ0pBQXVDO1FBQ3JDLENBQUFLLGVBQUEsS0FBQUMsWUFBQUMsVUFBQSxFQUFBTixPQUFBO1FBQ0Y7SUFFQTtJQUNBLDRFQUFZO0lBQ1osWUFBS0U7UUFDSCxDQUFBQSxRQUFNSyxxQkFDSjtRQUNBLE1BQUFBLFNBT0YsT0FBTUMsUUFBQUEsTUFBQUEsS0FBZ0JSLGNBQWtCRSxRQUFNSyxNQUFBQSxHQUFBQSxZQUFBQSxTQUFBQSxPQUFBQSxNQUFBQSxHQUFBQTtRQUU5QyxNQUFBQyxnQkFBQVIsT0FBQSxNQUFBQyxLQUFBLE1BQUFNO1FBQ0Esa0VBQW1DO1lBQ2pDWixXQUFBYyxHQUFBLENBQUFELGdCQUFBO1lBQ0Y7UUFFQTtRQUNBYiwrQkFBZWE7UUFDakJiLFdBQUFlLEdBQUEsQ0FBQUY7SUFFQTtJQUlBLE1BQUFHLGtCQUFBUCxjQUFBUCxPQUFBQyxRQUFBLENBQUFFLE1BQXVERyxjQUFBTixPQUFBQyxRQUFBLENBQUFFLE1BQUFDLElBQUFDO0lBQ3ZEO0lBQ0EsMERBQXNEO0lBQ3REO0lBQ0FVLHlEQUF3Q0M7WUFDbENDLE9BQUFBLENBQVFDLGlCQUFpQkMsS0FBQSxFQUFBSDtZQUMzQkMsSUFBQSxFQUFxQztZQUNyQyxxQ0FBTUQ7WUFD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QUFBdEMsT0FBQXlCLGNBQUEsa0JBQUFjLFlBQUFDLEdBQUE7UUFBRyxHQUFHZixTQUFBQTtxQkFDbkIxRTs7SUFHUCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vc3JjL2NsaWVudC9saW5rLnRzeD9hY2YwIl0sIm5hbWVzIjpbIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsIl8iLCJyZXF1aXJlIiwicHJlZmV0Y2hlZCIsIlNldCIsInJvdXRlciIsInByZWZldGNoIiwid2luZG93IiwiaHJlZiIsImFzIiwib3B0aW9ucyIsImFwcE9wdGlvbnMiLCJpc0FwcFJvdXRlciIsIl9pc2xvY2FsdXJsIiwiaXNMb2NhbFVSTCIsImxvY2FsZSIsInByZWZldGNoZWRLZXkiLCJoYXMiLCJhZGQiLCJwcmVmZXRjaFByb21pc2UiLCJQcm9taXNlIiwiZXJyIiwicHJvY2VzcyIsImVudiIsImNhdGNoIiwiaXNNb2RpZmllZEV2ZW50IiwiZXZlbnQiLCJjdXJyZW50VGFyZ2V0IiwidGFyZ2V0IiwiZXZlbnRUYXJnZXQiLCJuYXRpdmVFdmVudCIsIndoaWNoIiwibWV0YUtleSIsImN0cmxLZXkiLCJzaGlmdEtleSIsImFsdEtleSIsImxpbmtDbGlja2VkIiwiZSIsInJlcGxhY2UiLCJzaGFsbG93Iiwic2Nyb2xsIiwibm9kZU5hbWUiLCJpc0FuY2hvck5vZGVOYW1lIiwicHJldmVudERlZmF1bHQiLCJuYXZpZ2F0ZSIsInJvdXRlclNjcm9sbCIsIlJlYWN0IiwiX3JlYWN0IiwiZGVmYXVsdCIsInN0YXJ0VHJhbnNpdGlvbiIsImZvcm1hdFN0cmluZ09yVXJsIiwidXJsT2JqT3JTdHJpbmciLCJfZm9ybWF0dXJsIiwiZm9ybWF0VXJsIiwiY2hpbGRyZW4iLCJjaGlsZHJlblByb3AiLCJsZWdhY3lCZWhhdmlvciIsImEiLCJhcHBSb3V0ZXIiLCJ1c2VDb250ZXh0IiwiQXBwUm91dGVyQ29udGV4dCIsInBhZ2VzUm91dGVyIiwicHJlZmV0Y2hFbmFibGVkIiwicHJlZmV0Y2hQcm9wIiwiX3JvdXRlcnJlZHVjZXJ0eXBlcyIsIlByZWZldGNoS2luZCIsIkFVVE8iLCJGVUxMIiwiYXJncyIsImNyZWF0ZVByb3BFcnJvciIsIkVycm9yIiwia2V5IiwiZXhwZWN0ZWQiLCJhY3R1YWwiLCJyZXF1aXJlZFByb3BzIiwiT2JqZWN0IiwicHJvcHMiLCJwYXNzSHJlZiIsIm9uQ2xpY2siLCJvbk1vdXNlRW50ZXIiLCJvblRvdWNoU3RhcnQiLCJvcHRpb25hbFByb3BzIiwidmFsVHlwZSIsImhhc1dhcm5lZCIsImN1cnJlbnQiLCJjb25zb2xlIiwid2FybiIsImFzUHJvcCIsImhyZWZQcm9wIiwicGF0aG5hbWUiLCJoYXNEeW5hbWljU2VnbWVudCIsInNwbGl0Iiwic29tZSIsInNlZ21lbnQiLCJzdGFydHNXaXRoIiwiZW5kc1dpdGgiLCJ1c2VNZW1vIiwicmVzb2x2ZWRIcmVmIiwicmVzb2x2ZWRBcyIsIl9yZXNvbHZlaHJlZiIsInJlc29sdmVIcmVmIiwicHJldmlvdXNBcyIsInVzZVJlZiIsImNoaWxkIiwiTk9ERV9FTlYiLCJDaGlsZHJlbiIsIm9ubHkiLCJ0eXBlIiwiY2hpbGRSZWYiLCJzZXRJbnRlcnNlY3Rpb25SZWYiLCJpc1Zpc2libGUiLCJyZXNldFZpc2libGUiLCJ1c2VJbnRlcnNlY3Rpb24iLCJyb290TWFyZ2luIiwiX3VzZWludGVyc2VjdGlvbiIsInNldFJlZiIsInVzZUNhbGxiYWNrIiwiZWwiLCJwcmV2aW91c0hyZWYiLCJ1c2VFZmZlY3QiLCJhcHBQcmVmZXRjaEtpbmQiLCJyZWYiLCJkZWZhdWx0UHJldmVudGVkIiwib25Nb3VzZUVudGVyUHJvcCIsInByaW9yaXR5IiwiYnlwYXNzUHJlZmV0Y2hlZENoZWNrIiwib25Ub3VjaFN0YXJ0UHJvcCIsInVuZGVmaW5lZCIsImNoaWxkUHJvcHMiLCJjdXJMb2NhbGUiLCJpc0xvY2FsZURvbWFpbiIsImxvY2FsZURvbWFpbiIsImFkZEJhc2VQYXRoIiwiYWRkTG9jYWxlIiwiX2dldGRvbWFpbmxvY2FsZSIsImRlZmF1bHRMb2NhbGUiLCJsb2NhbGVzIiwiZG9tYWluTG9jYWxlcyIsIl9hZGRiYXNlcGF0aCIsIl9hZGRsb2NhbGUiLCJyZXN0UHJvcHMiLCJjbG9uZUVsZW1lbnQiLCJfanN4cnVudGltZSIsImpzeCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/link.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/client/request-idle-callback.js": +/*!****************************************************************!*\ + !*** ./node_modules/next/dist/client/request-idle-callback.js ***! + \****************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n cancelIdleCallback: function() {\n return cancelIdleCallback;\n },\n requestIdleCallback: function() {\n return requestIdleCallback;\n }\n});\nconst requestIdleCallback = typeof self !== \"undefined\" && self.requestIdleCallback && self.requestIdleCallback.bind(window) || function(cb) {\n let start = Date.now();\n return self.setTimeout(function() {\n cb({\n didTimeout: false,\n timeRemaining: function() {\n return Math.max(0, 50 - (Date.now() - start));\n }\n });\n }, 1);\n};\nconst cancelIdleCallback = typeof self !== \"undefined\" && self.cancelIdleCallback && self.cancelIdleCallback.bind(window) || function(id) {\n return clearTimeout(id);\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=request-idle-callback.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JlcXVlc3QtaWRsZS1jYWxsYmFjay5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFnQmFBLG9CQUFrQjtlQUFsQkE7O0lBaEJBQyxxQkFBbUI7ZUFBbkJBOzs7QUFBTixNQUFNQSxzQkFDWCxPQUFRQyxTQUFTLGVBQ2ZBLEtBQUtELG1CQUFtQixJQUN4QkMsS0FBS0QsbUJBQW1CLENBQUNFLElBQUksQ0FBQ0MsV0FDaEMsU0FBVUMsRUFBdUI7SUFDL0IsSUFBSUMsUUFBUUMsS0FBS0MsR0FBRztJQUNwQixPQUFPTixLQUFLTyxVQUFVLENBQUM7UUFDckJKLEdBQUc7WUFDREssWUFBWTtZQUNaQyxlQUFlO2dCQUNiLE9BQU9DLEtBQUtDLEdBQUcsQ0FBQyxHQUFHLEtBQU1OLENBQUFBLEtBQUtDLEdBQUcsS0FBS0YsS0FBQUE7WUFDeEM7UUFDRjtJQUNGLEdBQUc7QUFDTDtBQUVLLE1BQU1OLHFCQUNYLE9BQVFFLFNBQVMsZUFDZkEsS0FBS0Ysa0JBQWtCLElBQ3ZCRSxLQUFLRixrQkFBa0IsQ0FBQ0csSUFBSSxDQUFDQyxXQUMvQixTQUFVVSxFQUFVO0lBQ2xCLE9BQU9DLGFBQWFEO0FBQ3RCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi9zcmMvY2xpZW50L3JlcXVlc3QtaWRsZS1jYWxsYmFjay50cz8wNWY0Il0sIm5hbWVzIjpbImNhbmNlbElkbGVDYWxsYmFjayIsInJlcXVlc3RJZGxlQ2FsbGJhY2siLCJzZWxmIiwiYmluZCIsIndpbmRvdyIsImNiIiwic3RhcnQiLCJEYXRlIiwibm93Iiwic2V0VGltZW91dCIsImRpZFRpbWVvdXQiLCJ0aW1lUmVtYWluaW5nIiwiTWF0aCIsIm1heCIsImlkIiwiY2xlYXJUaW1lb3V0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/request-idle-callback.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/client/resolve-href.js": +/*!*******************************************************!*\ + !*** ./node_modules/next/dist/client/resolve-href.js ***! + \*******************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"resolveHref\", ({\n enumerable: true,\n get: function() {\n return resolveHref;\n }\n}));\nconst _querystring = __webpack_require__(/*! ../shared/lib/router/utils/querystring */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nconst _formaturl = __webpack_require__(/*! ../shared/lib/router/utils/format-url */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/format-url.js\");\nconst _omit = __webpack_require__(/*! ../shared/lib/router/utils/omit */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/omit.js\");\nconst _utils = __webpack_require__(/*! ../shared/lib/utils */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/utils.js\");\nconst _normalizetrailingslash = __webpack_require__(/*! ./normalize-trailing-slash */ \"(app-pages-browser)/./node_modules/next/dist/client/normalize-trailing-slash.js\");\nconst _islocalurl = __webpack_require__(/*! ../shared/lib/router/utils/is-local-url */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/is-local-url.js\");\nconst _utils1 = __webpack_require__(/*! ../shared/lib/router/utils */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/index.js\");\nconst _interpolateas = __webpack_require__(/*! ../shared/lib/router/utils/interpolate-as */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/interpolate-as.js\");\nfunction resolveHref(router, href, resolveAs) {\n // we use a dummy base url for relative urls\n let base;\n let urlAsString = typeof href === \"string\" ? href : (0, _formaturl.formatWithValidation)(href);\n // repeated slashes and backslashes in the URL are considered\n // invalid and will never match a Next.js page/file\n const urlProtoMatch = urlAsString.match(/^[a-zA-Z]{1,}:\\/\\//);\n const urlAsStringNoProto = urlProtoMatch ? urlAsString.slice(urlProtoMatch[0].length) : urlAsString;\n const urlParts = urlAsStringNoProto.split(\"?\", 1);\n if ((urlParts[0] || \"\").match(/(\\/\\/|\\\\)/)) {\n console.error(\"Invalid href '\" + urlAsString + \"' passed to next/router in page: '\" + router.pathname + \"'. Repeated forward-slashes (//) or backslashes \\\\ are not valid in the href.\");\n const normalizedUrl = (0, _utils.normalizeRepeatedSlashes)(urlAsStringNoProto);\n urlAsString = (urlProtoMatch ? urlProtoMatch[0] : \"\") + normalizedUrl;\n }\n // Return because it cannot be routed by the Next.js router\n if (!(0, _islocalurl.isLocalURL)(urlAsString)) {\n return resolveAs ? [\n urlAsString\n ] : urlAsString;\n }\n try {\n base = new URL(urlAsString.startsWith(\"#\") ? router.asPath : router.pathname, \"http://n\");\n } catch (_) {\n // fallback to / for invalid asPath values e.g. //\n base = new URL(\"/\", \"http://n\");\n }\n try {\n const finalUrl = new URL(urlAsString, base);\n finalUrl.pathname = (0, _normalizetrailingslash.normalizePathTrailingSlash)(finalUrl.pathname);\n let interpolatedAs = \"\";\n if ((0, _utils1.isDynamicRoute)(finalUrl.pathname) && finalUrl.searchParams && resolveAs) {\n const query = (0, _querystring.searchParamsToUrlQuery)(finalUrl.searchParams);\n const { result, params } = (0, _interpolateas.interpolateAs)(finalUrl.pathname, finalUrl.pathname, query);\n if (result) {\n interpolatedAs = (0, _formaturl.formatWithValidation)({\n pathname: result,\n hash: finalUrl.hash,\n query: (0, _omit.omit)(query, params)\n });\n }\n }\n // if the origin didn't change, it means we received a relative href\n const resolvedHref = finalUrl.origin === base.origin ? finalUrl.href.slice(finalUrl.origin.length) : finalUrl.href;\n return resolveAs ? [\n resolvedHref,\n interpolatedAs || resolvedHref\n ] : resolvedHref;\n } catch (_) {\n return resolveAs ? [\n urlAsString\n ] : urlAsString;\n }\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=resolve-href.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3Jlc29sdmUtaHJlZi5qcyIsIm1hcHBpbmdzIjoiOzs7OytDQXlCZ0JBOzs7ZUFBQUE7Ozt5Q0F2QnVCO3VDQUNGO2tDQUNoQjttQ0FDb0I7b0RBQ0U7d0NBQ2hCO29DQUNJOzJDQUNEO0FBZ0J2QixTQUFTQSxZQUNkQyxNQUFrQixFQUNsQkMsSUFBUyxFQUNUQyxTQUFtQjtJQUVuQiw0Q0FBNEM7SUFDNUMsSUFBSUM7SUFDSixJQUFJQyxjQUFjLE9BQU9ILFNBQVMsV0FBV0EsT0FBT0ksQ0FBQUEsR0FBQUEsV0FBQUEsb0JBQW9CLEVBQUNKO0lBRXpFLDZEQUE2RDtJQUM3RCxtREFBbUQ7SUFDbkQsTUFBTUssZ0JBQWdCRixZQUFZRyxLQUFLLENBQUM7SUFDeEMsTUFBTUMscUJBQXFCRixnQkFDdkJGLFlBQVlLLEtBQUssQ0FBQ0gsYUFBYSxDQUFDLEVBQUUsQ0FBQ0ksTUFBTSxJQUN6Q047SUFFSixNQUFNTyxXQUFXSCxtQkFBbUJJLEtBQUssQ0FBQyxLQUFLO0lBRS9DLElBQUksQ0FBQ0QsUUFBUSxDQUFDLEVBQUUsSUFBSSxJQUFJSixLQUFLLENBQUMsY0FBYztRQUMxQ00sUUFBUUMsS0FBSyxDQUNYLG1CQUFpQlYsY0FBWSx1Q0FBb0NKLE9BQU9lLFFBQVEsR0FBQztRQUVuRixNQUFNQyxnQkFBZ0JDLENBQUFBLEdBQUFBLE9BQUFBLHdCQUF3QixFQUFDVDtRQUMvQ0osY0FBYyxDQUFDRSxnQkFBZ0JBLGFBQWEsQ0FBQyxFQUFFLEdBQUcsTUFBTVU7SUFDMUQ7SUFFQSwyREFBMkQ7SUFDM0QsSUFBSSxDQUFDRSxDQUFBQSxHQUFBQSxZQUFBQSxVQUFVLEVBQUNkLGNBQWM7UUFDNUIsT0FBUUYsWUFBWTtZQUFDRTtTQUFZLEdBQUdBO0lBQ3RDO0lBRUEsSUFBSTtRQUNGRCxPQUFPLElBQUlnQixJQUNUZixZQUFZZ0IsVUFBVSxDQUFDLE9BQU9wQixPQUFPcUIsTUFBTSxHQUFHckIsT0FBT2UsUUFBUSxFQUM3RDtJQUVKLEVBQUUsT0FBT08sR0FBRztRQUNWLGtEQUFrRDtRQUNsRG5CLE9BQU8sSUFBSWdCLElBQUksS0FBSztJQUN0QjtJQUVBLElBQUk7UUFDRixNQUFNSSxXQUFXLElBQUlKLElBQUlmLGFBQWFEO1FBQ3RDb0IsU0FBU1IsUUFBUSxHQUFHUyxDQUFBQSxHQUFBQSx3QkFBQUEsMEJBQTBCLEVBQUNELFNBQVNSLFFBQVE7UUFDaEUsSUFBSVUsaUJBQWlCO1FBRXJCLElBQ0VDLENBQUFBLEdBQUFBLFFBQUFBLGNBQWMsRUFBQ0gsU0FBU1IsUUFBUSxLQUNoQ1EsU0FBU0ksWUFBWSxJQUNyQnpCLFdBQ0E7WUFDQSxNQUFNMEIsUUFBUUMsQ0FBQUEsR0FBQUEsYUFBQUEsc0JBQXNCLEVBQUNOLFNBQVNJLFlBQVk7WUFFMUQsTUFBTSxFQUFFRyxNQUFNLEVBQUVDLE1BQU0sRUFBRSxHQUFHQyxDQUFBQSxHQUFBQSxlQUFBQSxhQUFhLEVBQ3RDVCxTQUFTUixRQUFRLEVBQ2pCUSxTQUFTUixRQUFRLEVBQ2pCYTtZQUdGLElBQUlFLFFBQVE7Z0JBQ1ZMLGlCQUFpQnBCLENBQUFBLEdBQUFBLFdBQUFBLG9CQUFvQixFQUFDO29CQUNwQ1UsVUFBVWU7b0JBQ1ZHLE1BQU1WLFNBQVNVLElBQUk7b0JBQ25CTCxPQUFPTSxDQUFBQSxHQUFBQSxNQUFBQSxJQUFJLEVBQUNOLE9BQU9HO2dCQUNyQjtZQUNGO1FBQ0Y7UUFFQSxvRUFBb0U7UUFDcEUsTUFBTUksZUFDSlosU0FBU2EsTUFBTSxLQUFLakMsS0FBS2lDLE1BQU0sR0FDM0JiLFNBQVN0QixJQUFJLENBQUNRLEtBQUssQ0FBQ2MsU0FBU2EsTUFBTSxDQUFDMUIsTUFBTSxJQUMxQ2EsU0FBU3RCLElBQUk7UUFFbkIsT0FBT0MsWUFDSDtZQUFDaUM7WUFBY1Ysa0JBQWtCVTtTQUFhLEdBQzlDQTtJQUNOLEVBQUUsT0FBT2IsR0FBRztRQUNWLE9BQU9wQixZQUFZO1lBQUNFO1NBQVksR0FBR0E7SUFDckM7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vc3JjL2NsaWVudC9yZXNvbHZlLWhyZWYudHM/ZTZkMiJdLCJuYW1lcyI6WyJyZXNvbHZlSHJlZiIsInJvdXRlciIsImhyZWYiLCJyZXNvbHZlQXMiLCJiYXNlIiwidXJsQXNTdHJpbmciLCJmb3JtYXRXaXRoVmFsaWRhdGlvbiIsInVybFByb3RvTWF0Y2giLCJtYXRjaCIsInVybEFzU3RyaW5nTm9Qcm90byIsInNsaWNlIiwibGVuZ3RoIiwidXJsUGFydHMiLCJzcGxpdCIsImNvbnNvbGUiLCJlcnJvciIsInBhdGhuYW1lIiwibm9ybWFsaXplZFVybCIsIm5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcyIsImlzTG9jYWxVUkwiLCJVUkwiLCJzdGFydHNXaXRoIiwiYXNQYXRoIiwiXyIsImZpbmFsVXJsIiwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJpbnRlcnBvbGF0ZWRBcyIsImlzRHluYW1pY1JvdXRlIiwic2VhcmNoUGFyYW1zIiwicXVlcnkiLCJzZWFyY2hQYXJhbXNUb1VybFF1ZXJ5IiwicmVzdWx0IiwicGFyYW1zIiwiaW50ZXJwb2xhdGVBcyIsImhhc2giLCJvbWl0IiwicmVzb2x2ZWRIcmVmIiwib3JpZ2luIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/resolve-href.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/client/use-intersection.js": +/*!***********************************************************!*\ + !*** ./node_modules/next/dist/client/use-intersection.js ***! + \***********************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"useIntersection\", ({\n enumerable: true,\n get: function() {\n return useIntersection;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\nconst _requestidlecallback = __webpack_require__(/*! ./request-idle-callback */ \"(app-pages-browser)/./node_modules/next/dist/client/request-idle-callback.js\");\nconst hasIntersectionObserver = typeof IntersectionObserver === \"function\";\nconst observers = new Map();\nconst idList = [];\nfunction createObserver(options) {\n const id = {\n root: options.root || null,\n margin: options.rootMargin || \"\"\n };\n const existing = idList.find((obj)=>obj.root === id.root && obj.margin === id.margin);\n let instance;\n if (existing) {\n instance = observers.get(existing);\n if (instance) {\n return instance;\n }\n }\n const elements = new Map();\n const observer = new IntersectionObserver((entries)=>{\n entries.forEach((entry)=>{\n const callback = elements.get(entry.target);\n const isVisible = entry.isIntersecting || entry.intersectionRatio > 0;\n if (callback && isVisible) {\n callback(isVisible);\n }\n });\n }, options);\n instance = {\n id,\n observer,\n elements\n };\n idList.push(id);\n observers.set(id, instance);\n return instance;\n}\nfunction observe(element, callback, options) {\n const { id, observer, elements } = createObserver(options);\n elements.set(element, callback);\n observer.observe(element);\n return function unobserve() {\n elements.delete(element);\n observer.unobserve(element);\n // Destroy observer when there's nothing left to watch:\n if (elements.size === 0) {\n observer.disconnect();\n observers.delete(id);\n const index = idList.findIndex((obj)=>obj.root === id.root && obj.margin === id.margin);\n if (index > -1) {\n idList.splice(index, 1);\n }\n }\n };\n}\nfunction useIntersection(param) {\n let { rootRef, rootMargin, disabled } = param;\n const isDisabled = disabled || !hasIntersectionObserver;\n const [visible, setVisible] = (0, _react.useState)(false);\n const elementRef = (0, _react.useRef)(null);\n const setElement = (0, _react.useCallback)((element)=>{\n elementRef.current = element;\n }, []);\n (0, _react.useEffect)(()=>{\n if (hasIntersectionObserver) {\n if (isDisabled || visible) return;\n const element = elementRef.current;\n if (element && element.tagName) {\n const unobserve = observe(element, (isVisible)=>isVisible && setVisible(isVisible), {\n root: rootRef == null ? void 0 : rootRef.current,\n rootMargin\n });\n return unobserve;\n }\n } else {\n if (!visible) {\n const idleCallback = (0, _requestidlecallback.requestIdleCallback)(()=>setVisible(true));\n return ()=>(0, _requestidlecallback.cancelIdleCallback)(idleCallback);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n isDisabled,\n rootMargin,\n rootRef,\n visible,\n elementRef.current\n ]);\n const resetVisible = (0, _react.useCallback)(()=>{\n setVisible(false);\n }, []);\n return [\n setElement,\n visible,\n resetVisible\n ];\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=use-intersection.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3VzZS1pbnRlcnNlY3Rpb24uanMiLCJtYXBwaW5ncyI6Ijs7OzttREErRmdCQTs7O2VBQUFBOzs7bUNBL0Z5QztpREFJbEQ7QUFxQlAsTUFBTUMsMEJBQTBCLE9BQU9DLHlCQUF5QjtBQUVoRSxNQUFNQyxZQUFZLElBQUlDO0FBQ3RCLE1BQU1DLFNBQXVCLEVBQUU7QUFFL0IsU0FBU0MsZUFBZUMsT0FBb0M7SUFDMUQsTUFBTUMsS0FBSztRQUNUQyxNQUFNRixRQUFRRSxJQUFJLElBQUk7UUFDdEJDLFFBQVFILFFBQVFJLFVBQVUsSUFBSTtJQUNoQztJQUNBLE1BQU1DLFdBQVdQLE9BQU9RLElBQUksQ0FDMUIsQ0FBQ0MsTUFBUUEsSUFBSUwsSUFBSSxLQUFLRCxHQUFHQyxJQUFJLElBQUlLLElBQUlKLE1BQU0sS0FBS0YsR0FBR0UsTUFBTTtJQUUzRCxJQUFJSztJQUVKLElBQUlILFVBQVU7UUFDWkcsV0FBV1osVUFBVWEsR0FBRyxDQUFDSjtRQUN6QixJQUFJRyxVQUFVO1lBQ1osT0FBT0E7UUFDVDtJQUNGO0lBRUEsTUFBTUUsV0FBVyxJQUFJYjtJQUNyQixNQUFNYyxXQUFXLElBQUloQixxQkFBcUIsQ0FBQ2lCO1FBQ3pDQSxRQUFRQyxPQUFPLENBQUMsQ0FBQ0M7WUFDZixNQUFNQyxXQUFXTCxTQUFTRCxHQUFHLENBQUNLLE1BQU1FLE1BQU07WUFDMUMsTUFBTUMsWUFBWUgsTUFBTUksY0FBYyxJQUFJSixNQUFNSyxpQkFBaUIsR0FBRztZQUNwRSxJQUFJSixZQUFZRSxXQUFXO2dCQUN6QkYsU0FBU0U7WUFDWDtRQUNGO0lBQ0YsR0FBR2pCO0lBQ0hRLFdBQVc7UUFDVFA7UUFDQVU7UUFDQUQ7SUFDRjtJQUVBWixPQUFPc0IsSUFBSSxDQUFDbkI7SUFDWkwsVUFBVXlCLEdBQUcsQ0FBQ3BCLElBQUlPO0lBQ2xCLE9BQU9BO0FBQ1Q7QUFFQSxTQUFTYyxRQUNQQyxPQUFnQixFQUNoQlIsUUFBeUIsRUFDekJmLE9BQW9DO0lBRXBDLE1BQU0sRUFBRUMsRUFBRSxFQUFFVSxRQUFRLEVBQUVELFFBQVEsRUFBRSxHQUFHWCxlQUFlQztJQUNsRFUsU0FBU1csR0FBRyxDQUFDRSxTQUFTUjtJQUV0QkosU0FBU1csT0FBTyxDQUFDQztJQUNqQixPQUFPLFNBQVNDO1FBQ2RkLFNBQVNlLE1BQU0sQ0FBQ0Y7UUFDaEJaLFNBQVNhLFNBQVMsQ0FBQ0Q7UUFFbkIsdURBQXVEO1FBQ3ZELElBQUliLFNBQVNnQixJQUFJLEtBQUssR0FBRztZQUN2QmYsU0FBU2dCLFVBQVU7WUFDbkIvQixVQUFVNkIsTUFBTSxDQUFDeEI7WUFDakIsTUFBTTJCLFFBQVE5QixPQUFPK0IsU0FBUyxDQUM1QixDQUFDdEIsTUFBUUEsSUFBSUwsSUFBSSxLQUFLRCxHQUFHQyxJQUFJLElBQUlLLElBQUlKLE1BQU0sS0FBS0YsR0FBR0UsTUFBTTtZQUUzRCxJQUFJeUIsUUFBUSxDQUFDLEdBQUc7Z0JBQ2Q5QixPQUFPZ0MsTUFBTSxDQUFDRixPQUFPO1lBQ3ZCO1FBQ0Y7SUFDRjtBQUNGO0FBRU8sU0FBU25DLGdCQUFtQ3NDLEtBSWpDO0lBSmlDLE1BQ2pEQyxPQUFPLEVBQ1A1QixVQUFVLEVBQ1Y2QixRQUFRLEVBQ1EsR0FKaUNGO0lBS2pELE1BQU1HLGFBQXNCRCxZQUFZLENBQUN2QztJQUV6QyxNQUFNLENBQUN5QyxTQUFTQyxXQUFXLEdBQUdDLENBQUFBLEdBQUFBLE9BQUFBLFFBQVEsRUFBQztJQUN2QyxNQUFNQyxhQUFhQyxDQUFBQSxHQUFBQSxPQUFBQSxNQUFNLEVBQVc7SUFDcEMsTUFBTUMsYUFBYUMsQ0FBQUEsR0FBQUEsT0FBQUEsV0FBVyxFQUFDLENBQUNsQjtRQUM5QmUsV0FBV0ksT0FBTyxHQUFHbkI7SUFDdkIsR0FBRyxFQUFFO0lBRUxvQixDQUFBQSxHQUFBQSxPQUFBQSxTQUFTLEVBQUM7UUFDUixJQUFJakQseUJBQXlCO1lBQzNCLElBQUl3QyxjQUFjQyxTQUFTO1lBRTNCLE1BQU1aLFVBQVVlLFdBQVdJLE9BQU87WUFDbEMsSUFBSW5CLFdBQVdBLFFBQVFxQixPQUFPLEVBQUU7Z0JBQzlCLE1BQU1wQixZQUFZRixRQUNoQkMsU0FDQSxDQUFDTixZQUFjQSxhQUFhbUIsV0FBV25CLFlBQ3ZDO29CQUFFZixNQUFNOEIsV0FBQUEsT0FBQUEsS0FBQUEsSUFBQUEsUUFBU1UsT0FBTztvQkFBRXRDO2dCQUFXO2dCQUd2QyxPQUFPb0I7WUFDVDtRQUNGLE9BQU87WUFDTCxJQUFJLENBQUNXLFNBQVM7Z0JBQ1osTUFBTVUsZUFBZUMsQ0FBQUEsR0FBQUEscUJBQUFBLG1CQUFtQixFQUFDLElBQU1WLFdBQVc7Z0JBQzFELE9BQU8sSUFBTVcsQ0FBQUEsR0FBQUEscUJBQUFBLGtCQUFrQixFQUFDRjtZQUNsQztRQUNGO0lBQ0EsdURBQXVEO0lBQ3pELEdBQUc7UUFBQ1g7UUFBWTlCO1FBQVk0QjtRQUFTRztRQUFTRyxXQUFXSSxPQUFPO0tBQUM7SUFFakUsTUFBTU0sZUFBZVAsQ0FBQUEsR0FBQUEsT0FBQUEsV0FBVyxFQUFDO1FBQy9CTCxXQUFXO0lBQ2IsR0FBRyxFQUFFO0lBRUwsT0FBTztRQUFDSTtRQUFZTDtRQUFTYTtLQUFhO0FBQzVDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi9zcmMvY2xpZW50L3VzZS1pbnRlcnNlY3Rpb24udHN4PzU3ZWUiXSwibmFtZXMiOlsidXNlSW50ZXJzZWN0aW9uIiwiaGFzSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJJbnRlcnNlY3Rpb25PYnNlcnZlciIsIm9ic2VydmVycyIsIk1hcCIsImlkTGlzdCIsImNyZWF0ZU9ic2VydmVyIiwib3B0aW9ucyIsImlkIiwicm9vdCIsIm1hcmdpbiIsInJvb3RNYXJnaW4iLCJleGlzdGluZyIsImZpbmQiLCJvYmoiLCJpbnN0YW5jZSIsImdldCIsImVsZW1lbnRzIiwib2JzZXJ2ZXIiLCJlbnRyaWVzIiwiZm9yRWFjaCIsImVudHJ5IiwiY2FsbGJhY2siLCJ0YXJnZXQiLCJpc1Zpc2libGUiLCJpc0ludGVyc2VjdGluZyIsImludGVyc2VjdGlvblJhdGlvIiwicHVzaCIsInNldCIsIm9ic2VydmUiLCJlbGVtZW50IiwidW5vYnNlcnZlIiwiZGVsZXRlIiwic2l6ZSIsImRpc2Nvbm5lY3QiLCJpbmRleCIsImZpbmRJbmRleCIsInNwbGljZSIsInBhcmFtIiwicm9vdFJlZiIsImRpc2FibGVkIiwiaXNEaXNhYmxlZCIsInZpc2libGUiLCJzZXRWaXNpYmxlIiwidXNlU3RhdGUiLCJlbGVtZW50UmVmIiwidXNlUmVmIiwic2V0RWxlbWVudCIsInVzZUNhbGxiYWNrIiwiY3VycmVudCIsInVzZUVmZmVjdCIsInRhZ05hbWUiLCJpZGxlQ2FsbGJhY2siLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwiY2FuY2VsSWRsZUNhbGxiYWNrIiwicmVzZXRWaXNpYmxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/use-intersection.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/escape-regexp.js": +/*!************************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/escape-regexp.js ***! + \************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("// regexp is based on https://github.com/sindresorhus/escape-string-regexp\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"escapeStringRegexp\", ({\n enumerable: true,\n get: function() {\n return escapeStringRegexp;\n }\n}));\nconst reHasRegExp = /[|\\\\{}()[\\]^$+*?.-]/;\nconst reReplaceRegExp = /[|\\\\{}()[\\]^$+*?.-]/g;\nfunction escapeStringRegexp(str) {\n // see also: https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/escapeRegExp.js#L23\n if (reHasRegExp.test(str)) {\n return str.replace(reReplaceRegExp, \"\\\\$&\");\n }\n return str;\n} //# sourceMappingURL=escape-regexp.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9lc2NhcGUtcmVnZXhwLmpzIiwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTs7Ozs7c0RBSTFEQTs7O2VBQUFBOzs7QUFIaEIsTUFBTUMsY0FBYztBQUNwQixNQUFNQyxrQkFBa0I7QUFFakIsU0FBU0YsbUJBQW1CRyxHQUFXO0lBQzVDLCtHQUErRztJQUMvRyxJQUFJRixZQUFZRyxJQUFJLENBQUNELE1BQU07UUFDekIsT0FBT0EsSUFBSUUsT0FBTyxDQUFDSCxpQkFBaUI7SUFDdEM7SUFDQSxPQUFPQztBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi8uLi9zcmMvc2hhcmVkL2xpYi9lc2NhcGUtcmVnZXhwLnRzP2RjYjEiXSwibmFtZXMiOlsiZXNjYXBlU3RyaW5nUmVnZXhwIiwicmVIYXNSZWdFeHAiLCJyZVJlcGxhY2VSZWdFeHAiLCJzdHIiLCJ0ZXN0IiwicmVwbGFjZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/escape-regexp.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/router-context.shared-runtime.js": +/*!****************************************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/router-context.shared-runtime.js ***! + \****************************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"RouterContext\", ({\n enumerable: true,\n get: function() {\n return RouterContext;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nconst RouterContext = _react.default.createContext(null);\nif (true) {\n RouterContext.displayName = \"RouterContext\";\n} //# sourceMappingURL=router-context.shared-runtime.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZS5qcyIsIm1hcHBpbmdzIjoiOzs7O2lEQUdhQTs7O2VBQUFBOzs7OzRFQUhLO0FBR1gsTUFBTUEsZ0JBQWdCQyxPQUFBQSxPQUFLLENBQUNDLGFBQWEsQ0FBb0I7QUFFcEUsSUFBSUMsSUFBeUIsRUFBYztJQUN6Q0gsY0FBY0ksV0FBVyxHQUFHO0FBQzlCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi8uLi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZS50cz82MzZjIl0sIm5hbWVzIjpbIlJvdXRlckNvbnRleHQiLCJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJwcm9jZXNzIiwiZGlzcGxheU5hbWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/router-context.shared-runtime.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/format-url.js": +/*!**********************************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/router/utils/format-url.js ***! + \**********************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("// Format function modified from nodejs\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n formatUrl: function() {\n return formatUrl;\n },\n formatWithValidation: function() {\n return formatWithValidation;\n },\n urlObjectKeys: function() {\n return urlObjectKeys;\n }\n});\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _querystring = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! ./querystring */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/querystring.js\"));\nconst slashedProtocols = /https?|ftp|gopher|file/;\nfunction formatUrl(urlObj) {\n let { auth, hostname } = urlObj;\n let protocol = urlObj.protocol || \"\";\n let pathname = urlObj.pathname || \"\";\n let hash = urlObj.hash || \"\";\n let query = urlObj.query || \"\";\n let host = false;\n auth = auth ? encodeURIComponent(auth).replace(/%3A/i, \":\") + \"@\" : \"\";\n if (urlObj.host) {\n host = auth + urlObj.host;\n } else if (hostname) {\n host = auth + (~hostname.indexOf(\":\") ? \"[\" + hostname + \"]\" : hostname);\n if (urlObj.port) {\n host += \":\" + urlObj.port;\n }\n }\n if (query && typeof query === \"object\") {\n query = String(_querystring.urlQueryToSearchParams(query));\n }\n let search = urlObj.search || query && \"?\" + query || \"\";\n if (protocol && !protocol.endsWith(\":\")) protocol += \":\";\n if (urlObj.slashes || (!protocol || slashedProtocols.test(protocol)) && host !== false) {\n host = \"//\" + (host || \"\");\n if (pathname && pathname[0] !== \"/\") pathname = \"/\" + pathname;\n } else if (!host) {\n host = \"\";\n }\n if (hash && hash[0] !== \"#\") hash = \"#\" + hash;\n if (search && search[0] !== \"?\") search = \"?\" + search;\n pathname = pathname.replace(/[?#]/g, encodeURIComponent);\n search = search.replace(\"#\", \"%23\");\n return \"\" + protocol + host + pathname + search + hash;\n}\nconst urlObjectKeys = [\n \"auth\",\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"path\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"query\",\n \"search\",\n \"slashes\"\n];\nfunction formatWithValidation(url) {\n if (true) {\n if (url !== null && typeof url === \"object\") {\n Object.keys(url).forEach((key)=>{\n if (!urlObjectKeys.includes(key)) {\n console.warn(\"Unknown key passed via urlObject into url.format: \" + key);\n }\n });\n }\n }\n return formatUrl(url);\n} //# sourceMappingURL=format-url.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZm9ybWF0LXVybC5qcyIsIm1hcHBpbmdzIjoiQUFBQSx1Q0FBdUM7QUFDdkMsc0RBQXNEO0FBQ3RELEVBQUU7QUFDRiwwRUFBMEU7QUFDMUUsZ0VBQWdFO0FBQ2hFLHNFQUFzRTtBQUN0RSxzRUFBc0U7QUFDdEUsNEVBQTRFO0FBQzVFLHFFQUFxRTtBQUNyRSx3QkFBd0I7QUFDeEIsRUFBRTtBQUNGLDBFQUEwRTtBQUMxRSx5REFBeUQ7QUFDekQsRUFBRTtBQUNGLDBFQUEwRTtBQUMxRSw2REFBNkQ7QUFDN0QsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSx3RUFBd0U7QUFDeEUsNEVBQTRFO0FBQzVFLHlDQUF5Qzs7Ozs7Ozs7Ozs7OztJQVF6QkEsV0FBUztlQUFUQTs7SUE2REFDLHNCQUFvQjtlQUFwQkE7O0lBZkhDLGVBQWE7ZUFBYkE7Ozs7bUZBbERnQjtBQUU3QixNQUFNQyxtQkFBbUI7QUFFbEIsU0FBU0gsVUFBVUksTUFBaUI7SUFDekMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLFFBQVEsRUFBRSxHQUFHRjtJQUN6QixJQUFJRyxXQUFXSCxPQUFPRyxRQUFRLElBQUk7SUFDbEMsSUFBSUMsV0FBV0osT0FBT0ksUUFBUSxJQUFJO0lBQ2xDLElBQUlDLE9BQU9MLE9BQU9LLElBQUksSUFBSTtJQUMxQixJQUFJQyxRQUFRTixPQUFPTSxLQUFLLElBQUk7SUFDNUIsSUFBSUMsT0FBdUI7SUFFM0JOLE9BQU9BLE9BQU9PLG1CQUFtQlAsTUFBTVEsT0FBTyxDQUFDLFFBQVEsT0FBTyxNQUFNO0lBRXBFLElBQUlULE9BQU9PLElBQUksRUFBRTtRQUNmQSxPQUFPTixPQUFPRCxPQUFPTyxJQUFJO0lBQzNCLE9BQU8sSUFBSUwsVUFBVTtRQUNuQkssT0FBT04sT0FBUSxFQUFDQyxTQUFTUSxPQUFPLENBQUMsT0FBTyxNQUFJUixXQUFTLE1BQUtBLFFBQUFBO1FBQzFELElBQUlGLE9BQU9XLElBQUksRUFBRTtZQUNmSixRQUFRLE1BQU1QLE9BQU9XLElBQUk7UUFDM0I7SUFDRjtJQUVBLElBQUlMLFNBQVMsT0FBT0EsVUFBVSxVQUFVO1FBQ3RDQSxRQUFRTSxPQUFPQyxhQUFZQyxzQkFBc0IsQ0FBQ1I7SUFDcEQ7SUFFQSxJQUFJUyxTQUFTZixPQUFPZSxNQUFNLElBQUtULFNBQVMsTUFBSUEsU0FBWTtJQUV4RCxJQUFJSCxZQUFZLENBQUNBLFNBQVNhLFFBQVEsQ0FBQyxNQUFNYixZQUFZO0lBRXJELElBQ0VILE9BQU9pQixPQUFPLElBQ2IsQ0FBQyxDQUFDZCxZQUFZSixpQkFBaUJtQixJQUFJLENBQUNmLFNBQUFBLEtBQWNJLFNBQVMsT0FDNUQ7UUFDQUEsT0FBTyxPQUFRQSxDQUFBQSxRQUFRO1FBQ3ZCLElBQUlILFlBQVlBLFFBQVEsQ0FBQyxFQUFFLEtBQUssS0FBS0EsV0FBVyxNQUFNQTtJQUN4RCxPQUFPLElBQUksQ0FBQ0csTUFBTTtRQUNoQkEsT0FBTztJQUNUO0lBRUEsSUFBSUYsUUFBUUEsSUFBSSxDQUFDLEVBQUUsS0FBSyxLQUFLQSxPQUFPLE1BQU1BO0lBQzFDLElBQUlVLFVBQVVBLE1BQU0sQ0FBQyxFQUFFLEtBQUssS0FBS0EsU0FBUyxNQUFNQTtJQUVoRFgsV0FBV0EsU0FBU0ssT0FBTyxDQUFDLFNBQVNEO0lBQ3JDTyxTQUFTQSxPQUFPTixPQUFPLENBQUMsS0FBSztJQUU3QixPQUFPLEtBQUdOLFdBQVdJLE9BQU9ILFdBQVdXLFNBQVNWO0FBQ2xEO0FBRU8sTUFBTVAsZ0JBQWdCO0lBQzNCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRU0sU0FBU0QscUJBQXFCc0IsR0FBYztJQUNqRCxJQUFJQyxJQUF5QixFQUFlO1FBQzFDLElBQUlELFFBQVEsUUFBUSxPQUFPQSxRQUFRLFVBQVU7WUFDM0NFLE9BQU9DLElBQUksQ0FBQ0gsS0FBS0ksT0FBTyxDQUFDLENBQUNDO2dCQUN4QixJQUFJLENBQUMxQixjQUFjMkIsUUFBUSxDQUFDRCxNQUFNO29CQUNoQ0UsUUFBUUMsSUFBSSxDQUNWLHVEQUFxREg7Z0JBRXpEO1lBQ0Y7UUFDRjtJQUNGO0lBRUEsT0FBTzVCLFVBQVV1QjtBQUNuQiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vLi4vLi4vc3JjL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2Zvcm1hdC11cmwudHM/NTJiMSJdLCJuYW1lcyI6WyJmb3JtYXRVcmwiLCJmb3JtYXRXaXRoVmFsaWRhdGlvbiIsInVybE9iamVjdEtleXMiLCJzbGFzaGVkUHJvdG9jb2xzIiwidXJsT2JqIiwiYXV0aCIsImhvc3RuYW1lIiwicHJvdG9jb2wiLCJwYXRobmFtZSIsImhhc2giLCJxdWVyeSIsImhvc3QiLCJlbmNvZGVVUklDb21wb25lbnQiLCJyZXBsYWNlIiwiaW5kZXhPZiIsInBvcnQiLCJTdHJpbmciLCJxdWVyeXN0cmluZyIsInVybFF1ZXJ5VG9TZWFyY2hQYXJhbXMiLCJzZWFyY2giLCJlbmRzV2l0aCIsInNsYXNoZXMiLCJ0ZXN0IiwidXJsIiwicHJvY2VzcyIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwiaW5jbHVkZXMiLCJjb25zb2xlIiwid2FybiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/format-url.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/index.js": +/*!*****************************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/router/utils/index.js ***! + \*****************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getSortedRoutes: function() {\n return _sortedroutes.getSortedRoutes;\n },\n isDynamicRoute: function() {\n return _isdynamic.isDynamicRoute;\n }\n});\nconst _sortedroutes = __webpack_require__(/*! ./sorted-routes */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/sorted-routes.js\");\nconst _isdynamic = __webpack_require__(/*! ./is-dynamic */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/is-dynamic.js\"); //# sourceMappingURL=index.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQVNBLGlCQUFlO2VBQWZBLGNBQUFBLGVBQWU7O0lBQ2ZDLGdCQUFjO2VBQWRBLFdBQUFBLGNBQWM7OzswQ0FEUzt1Q0FDRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi4vLi4vLi4vLi4vc3JjL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2luZGV4LnRzPzkxMmIiXSwibmFtZXMiOlsiZ2V0U29ydGVkUm91dGVzIiwiaXNEeW5hbWljUm91dGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/index.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/interpolate-as.js": +/*!**************************************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/router/utils/interpolate-as.js ***! + \**************************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"interpolateAs\", ({\n enumerable: true,\n get: function() {\n return interpolateAs;\n }\n}));\nconst _routematcher = __webpack_require__(/*! ./route-matcher */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/route-matcher.js\");\nconst _routeregex = __webpack_require__(/*! ./route-regex */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/route-regex.js\");\nfunction interpolateAs(route, asPathname, query) {\n let interpolatedRoute = \"\";\n const dynamicRegex = (0, _routeregex.getRouteRegex)(route);\n const dynamicGroups = dynamicRegex.groups;\n const dynamicMatches = (asPathname !== route ? (0, _routematcher.getRouteMatcher)(dynamicRegex)(asPathname) : \"\") || // Fall back to reading the values from the href\n // TODO: should this take priority; also need to change in the router.\n query;\n interpolatedRoute = route;\n const params = Object.keys(dynamicGroups);\n if (!params.every((param)=>{\n let value = dynamicMatches[param] || \"\";\n const { repeat, optional } = dynamicGroups[param];\n // support single-level catch-all\n // TODO: more robust handling for user-error (passing `/`)\n let replaced = \"[\" + (repeat ? \"...\" : \"\") + param + \"]\";\n if (optional) {\n replaced = (!value ? \"/\" : \"\") + \"[\" + replaced + \"]\";\n }\n if (repeat && !Array.isArray(value)) value = [\n value\n ];\n return (optional || param in dynamicMatches) && // Interpolate group into data URL if present\n (interpolatedRoute = interpolatedRoute.replace(replaced, repeat ? value.map(// path delimiter escaped since they are being inserted\n // into the URL and we expect URL encoded segments\n // when parsing dynamic route params\n (segment)=>encodeURIComponent(segment)).join(\"/\") : encodeURIComponent(value)) || \"/\");\n })) {\n interpolatedRoute = \"\" // did not satisfy all requirements\n ;\n // n.b. We ignore this error because we handle warning for this case in\n // development in the `` component directly.\n }\n return {\n params,\n result: interpolatedRoute\n };\n} //# sourceMappingURL=interpolate-as.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaW50ZXJwb2xhdGUtYXMuanMiLCJtYXBwaW5ncyI6Ijs7OztpREFLZ0JBOzs7ZUFBQUE7OzswQ0FIZ0I7d0NBQ0Y7QUFFdkIsU0FBU0EsY0FDZEMsS0FBYSxFQUNiQyxVQUFrQixFQUNsQkMsS0FBcUI7SUFFckIsSUFBSUMsb0JBQW9CO0lBRXhCLE1BQU1DLGVBQWVDLENBQUFBLEdBQUFBLFlBQUFBLGFBQWEsRUFBQ0w7SUFDbkMsTUFBTU0sZ0JBQWdCRixhQUFhRyxNQUFNO0lBQ3pDLE1BQU1DLGlCQUVIUCxDQUFBQSxlQUFlRCxRQUFRUyxDQUFBQSxHQUFBQSxjQUFBQSxlQUFlLEVBQUNMLGNBQWNILGNBQWMsT0FDcEUsZ0RBQWdEO0lBQ2hELHNFQUFzRTtJQUN0RUM7SUFFRkMsb0JBQW9CSDtJQUNwQixNQUFNVSxTQUFTQyxPQUFPQyxJQUFJLENBQUNOO0lBRTNCLElBQ0UsQ0FBQ0ksT0FBT0csS0FBSyxDQUFDLENBQUNDO1FBQ2IsSUFBSUMsUUFBUVAsY0FBYyxDQUFDTSxNQUFNLElBQUk7UUFDckMsTUFBTSxFQUFFRSxNQUFNLEVBQUVDLFFBQVEsRUFBRSxHQUFHWCxhQUFhLENBQUNRLE1BQU07UUFFakQsaUNBQWlDO1FBQ2pDLDBEQUEwRDtRQUMxRCxJQUFJSSxXQUFXLE1BQUlGLENBQUFBLFNBQVMsUUFBUSxNQUFLRixRQUFNO1FBQy9DLElBQUlHLFVBQVU7WUFDWkMsV0FBVyxDQUFHLENBQUNILFFBQVEsTUFBTSxNQUFHLE1BQUdHLFdBQVM7UUFDOUM7UUFDQSxJQUFJRixVQUFVLENBQUNHLE1BQU1DLE9BQU8sQ0FBQ0wsUUFBUUEsUUFBUTtZQUFDQTtTQUFNO1FBRXBELE9BQ0UsQ0FBQ0UsWUFBWUgsU0FBU04sY0FBQUEsS0FDdEIsNkNBQTZDO1FBQzVDTCxDQUFBQSxvQkFDQ0Esa0JBQW1Ca0IsT0FBTyxDQUN4QkgsVUFDQUYsU0FDSUQsTUFDR08sR0FBRyxDQUVGLHVEQUF1RDtRQUN2RCxrREFBa0Q7UUFDbEQsb0NBQW9DO1FBQ3BDLENBQUNDLFVBQVlDLG1CQUFtQkQsVUFFakNFLElBQUksQ0FBQyxPQUNSRCxtQkFBbUJULFdBQ3BCO0lBRVgsSUFDQTtRQUNBWixvQkFBb0IsR0FBRyxtQ0FBbUM7O0lBRTFELHVFQUF1RTtJQUN2RSxrREFBa0Q7SUFDcEQ7SUFDQSxPQUFPO1FBQ0xPO1FBQ0FnQixRQUFRdkI7SUFDVjtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi8uLi8uLi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaW50ZXJwb2xhdGUtYXMudHM/ODUyZCJdLCJuYW1lcyI6WyJpbnRlcnBvbGF0ZUFzIiwicm91dGUiLCJhc1BhdGhuYW1lIiwicXVlcnkiLCJpbnRlcnBvbGF0ZWRSb3V0ZSIsImR5bmFtaWNSZWdleCIsImdldFJvdXRlUmVnZXgiLCJkeW5hbWljR3JvdXBzIiwiZ3JvdXBzIiwiZHluYW1pY01hdGNoZXMiLCJnZXRSb3V0ZU1hdGNoZXIiLCJwYXJhbXMiLCJPYmplY3QiLCJrZXlzIiwiZXZlcnkiLCJwYXJhbSIsInZhbHVlIiwicmVwZWF0Iiwib3B0aW9uYWwiLCJyZXBsYWNlZCIsIkFycmF5IiwiaXNBcnJheSIsInJlcGxhY2UiLCJtYXAiLCJzZWdtZW50IiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwiam9pbiIsInJlc3VsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/interpolate-as.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/is-dynamic.js": +/*!**********************************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/router/utils/is-dynamic.js ***! + \**********************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isDynamicRoute\", ({\n enumerable: true,\n get: function() {\n return isDynamicRoute;\n }\n}));\nconst _interceptionroutes = __webpack_require__(/*! ../../../../server/future/helpers/interception-routes */ \"(app-pages-browser)/./node_modules/next/dist/server/future/helpers/interception-routes.js\");\n// Identify /[param]/ in route string\nconst TEST_ROUTE = /\\/\\[[^/]+?\\](?=\\/|$)/;\nfunction isDynamicRoute(route) {\n if ((0, _interceptionroutes.isInterceptionRouteAppPath)(route)) {\n route = (0, _interceptionroutes.extractInterceptionRouteInformation)(route).interceptedRoute;\n }\n return TEST_ROUTE.test(route);\n} //# sourceMappingURL=is-dynamic.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtZHluYW1pYy5qcyIsIm1hcHBpbmdzIjoiOzs7O2tEQVFnQkE7OztlQUFBQTs7O2dEQUxUO0FBRVAscUNBQXFDO0FBQ3JDLE1BQU1DLGFBQWE7QUFFWixTQUFTRCxlQUFlRSxLQUFhO0lBQzFDLElBQUlDLENBQUFBLEdBQUFBLG9CQUFBQSwwQkFBMEIsRUFBQ0QsUUFBUTtRQUNyQ0EsUUFBUUUsQ0FBQUEsR0FBQUEsb0JBQUFBLG1DQUFtQyxFQUFDRixPQUFPRyxnQkFBZ0I7SUFDckU7SUFFQSxPQUFPSixXQUFXSyxJQUFJLENBQUNKO0FBQ3pCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi8uLi8uLi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtZHluYW1pYy50cz8xNDY1Il0sIm5hbWVzIjpbImlzRHluYW1pY1JvdXRlIiwiVEVTVF9ST1VURSIsInJvdXRlIiwiaXNJbnRlcmNlcHRpb25Sb3V0ZUFwcFBhdGgiLCJleHRyYWN0SW50ZXJjZXB0aW9uUm91dGVJbmZvcm1hdGlvbiIsImludGVyY2VwdGVkUm91dGUiLCJ0ZXN0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/is-dynamic.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/is-local-url.js": +/*!************************************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/router/utils/is-local-url.js ***! + \************************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isLocalURL\", ({\n enumerable: true,\n get: function() {\n return isLocalURL;\n }\n}));\nconst _utils = __webpack_require__(/*! ../../utils */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/utils.js\");\nconst _hasbasepath = __webpack_require__(/*! ../../../../client/has-base-path */ \"(app-pages-browser)/./node_modules/next/dist/client/has-base-path.js\");\nfunction isLocalURL(url) {\n // prevent a hydration mismatch on href for url with anchor refs\n if (!(0, _utils.isAbsoluteUrl)(url)) return true;\n try {\n // absolute urls can be local if they are on the same origin\n const locationOrigin = (0, _utils.getLocationOrigin)();\n const resolved = new URL(url, locationOrigin);\n return resolved.origin === locationOrigin && (0, _hasbasepath.hasBasePath)(resolved.pathname);\n } catch (_) {\n return false;\n }\n} //# sourceMappingURL=is-local-url.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtbG9jYWwtdXJsLmpzIiwibWFwcGluZ3MiOiI7Ozs7OENBTWdCQTs7O2VBQUFBOzs7bUNBTmlDO3lDQUNyQjtBQUtyQixTQUFTQSxXQUFXQyxHQUFXO0lBQ3BDLGdFQUFnRTtJQUNoRSxJQUFJLENBQUNDLENBQUFBLEdBQUFBLE9BQUFBLGFBQWEsRUFBQ0QsTUFBTSxPQUFPO0lBQ2hDLElBQUk7UUFDRiw0REFBNEQ7UUFDNUQsTUFBTUUsaUJBQWlCQyxDQUFBQSxHQUFBQSxPQUFBQSxpQkFBaUI7UUFDeEMsTUFBTUMsV0FBVyxJQUFJQyxJQUFJTCxLQUFLRTtRQUM5QixPQUFPRSxTQUFTRSxNQUFNLEtBQUtKLGtCQUFrQkssQ0FBQUEsR0FBQUEsYUFBQUEsV0FBVyxFQUFDSCxTQUFTSSxRQUFRO0lBQzVFLEVBQUUsT0FBT0MsR0FBRztRQUNWLE9BQU87SUFDVDtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi8uLi8uLi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtbG9jYWwtdXJsLnRzP2UxYzIiXSwibmFtZXMiOlsiaXNMb2NhbFVSTCIsInVybCIsImlzQWJzb2x1dGVVcmwiLCJsb2NhdGlvbk9yaWdpbiIsImdldExvY2F0aW9uT3JpZ2luIiwicmVzb2x2ZWQiLCJVUkwiLCJvcmlnaW4iLCJoYXNCYXNlUGF0aCIsInBhdGhuYW1lIiwiXyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/is-local-url.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/omit.js": +/*!****************************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/router/utils/omit.js ***! + \****************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"omit\", ({\n enumerable: true,\n get: function() {\n return omit;\n }\n}));\nfunction omit(object, keys) {\n const omitted = {};\n Object.keys(object).forEach((key)=>{\n if (!keys.includes(key)) {\n omitted[key] = object[key];\n }\n });\n return omitted;\n} //# sourceMappingURL=omit.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvb21pdC5qcyIsIm1hcHBpbmdzIjoiOzs7O3dDQUFnQkE7OztlQUFBQTs7O0FBQVQsU0FBU0EsS0FDZEMsTUFBUyxFQUNUQyxJQUFTO0lBRVQsTUFBTUMsVUFBc0MsQ0FBQztJQUM3Q0MsT0FBT0YsSUFBSSxDQUFDRCxRQUFRSSxPQUFPLENBQUMsQ0FBQ0M7UUFDM0IsSUFBSSxDQUFDSixLQUFLSyxRQUFRLENBQUNELE1BQVc7WUFDNUJILE9BQU8sQ0FBQ0csSUFBSSxHQUFHTCxNQUFNLENBQUNLLElBQUk7UUFDNUI7SUFDRjtJQUNBLE9BQU9IO0FBQ1QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uLy4uLy4uLy4uL3NyYy9zaGFyZWQvbGliL3JvdXRlci91dGlscy9vbWl0LnRzP2Y3ZWEiXSwibmFtZXMiOlsib21pdCIsIm9iamVjdCIsImtleXMiLCJvbWl0dGVkIiwiT2JqZWN0IiwiZm9yRWFjaCIsImtleSIsImluY2x1ZGVzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/omit.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/querystring.js": +/*!***********************************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/router/utils/querystring.js ***! + \***********************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n assign: function() {\n return assign;\n },\n searchParamsToUrlQuery: function() {\n return searchParamsToUrlQuery;\n },\n urlQueryToSearchParams: function() {\n return urlQueryToSearchParams;\n }\n});\nfunction searchParamsToUrlQuery(searchParams) {\n const query = {};\n searchParams.forEach((value, key)=>{\n if (typeof query[key] === \"undefined\") {\n query[key] = value;\n } else if (Array.isArray(query[key])) {\n query[key].push(value);\n } else {\n query[key] = [\n query[key],\n value\n ];\n }\n });\n return query;\n}\nfunction stringifyUrlQueryParam(param) {\n if (typeof param === \"string\" || typeof param === \"number\" && !isNaN(param) || typeof param === \"boolean\") {\n return String(param);\n } else {\n return \"\";\n }\n}\nfunction urlQueryToSearchParams(urlQuery) {\n const result = new URLSearchParams();\n Object.entries(urlQuery).forEach((param)=>{\n let [key, value] = param;\n if (Array.isArray(value)) {\n value.forEach((item)=>result.append(key, stringifyUrlQueryParam(item)));\n } else {\n result.set(key, stringifyUrlQueryParam(value));\n }\n });\n return result;\n}\nfunction assign(target) {\n for(var _len = arguments.length, searchParamsList = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n searchParamsList[_key - 1] = arguments[_key];\n }\n searchParamsList.forEach((searchParams)=>{\n Array.from(searchParams.keys()).forEach((key)=>target.delete(key));\n searchParams.forEach((value, key)=>target.append(key, value));\n });\n return target;\n} //# sourceMappingURL=querystring.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcXVlcnlzdHJpbmcuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBNENnQkEsUUFBTTtlQUFOQTs7SUExQ0FDLHdCQUFzQjtlQUF0QkE7O0lBNEJBQyx3QkFBc0I7ZUFBdEJBOzs7QUE1QlQsU0FBU0QsdUJBQ2RFLFlBQTZCO0lBRTdCLE1BQU1DLFFBQXdCLENBQUM7SUFDL0JELGFBQWFFLE9BQU8sQ0FBQyxDQUFDQyxPQUFPQztRQUMzQixJQUFJLE9BQU9ILEtBQUssQ0FBQ0csSUFBSSxLQUFLLGFBQWE7WUFDckNILEtBQUssQ0FBQ0csSUFBSSxHQUFHRDtRQUNmLE9BQU8sSUFBSUUsTUFBTUMsT0FBTyxDQUFDTCxLQUFLLENBQUNHLElBQUksR0FBRztZQUNsQ0gsS0FBSyxDQUFDRyxJQUFJLENBQWNHLElBQUksQ0FBQ0o7UUFDakMsT0FBTztZQUNMRixLQUFLLENBQUNHLElBQUksR0FBRztnQkFBQ0gsS0FBSyxDQUFDRyxJQUFJO2dCQUFZRDthQUFNO1FBQzVDO0lBQ0Y7SUFDQSxPQUFPRjtBQUNUO0FBRUEsU0FBU08sdUJBQXVCQyxLQUFjO0lBQzVDLElBQ0UsT0FBT0EsVUFBVSxZQUNoQixPQUFPQSxVQUFVLFlBQVksQ0FBQ0MsTUFBTUQsVUFDckMsT0FBT0EsVUFBVSxXQUNqQjtRQUNBLE9BQU9FLE9BQU9GO0lBQ2hCLE9BQU87UUFDTCxPQUFPO0lBQ1Q7QUFDRjtBQUVPLFNBQVNWLHVCQUNkYSxRQUF3QjtJQUV4QixNQUFNQyxTQUFTLElBQUlDO0lBQ25CQyxPQUFPQyxPQUFPLENBQUNKLFVBQVVWLE9BQU8sQ0FBQyxDQUFBTztZQUFDLENBQUNMLEtBQUtELE1BQU0sR0FBQU07UUFDNUMsSUFBSUosTUFBTUMsT0FBTyxDQUFDSCxRQUFRO1lBQ3hCQSxNQUFNRCxPQUFPLENBQUMsQ0FBQ2UsT0FBU0osT0FBT0ssTUFBTSxDQUFDZCxLQUFLSSx1QkFBdUJTO1FBQ3BFLE9BQU87WUFDTEosT0FBT00sR0FBRyxDQUFDZixLQUFLSSx1QkFBdUJMO1FBQ3pDO0lBQ0Y7SUFDQSxPQUFPVTtBQUNUO0FBRU8sU0FBU2hCLE9BQ2R1QixNQUF1QjtJQUN2QixRQUFBQyxPQUFBQyxVQUFBQyxNQUFBLEVBQUFDLG1CQUFBLElBQUFuQixNQUFBZ0IsT0FBQSxJQUFBQSxPQUFBLFFBQUFJLE9BQUEsR0FBQUEsT0FBQUosTUFBQUksT0FBQTtRQUFHRCxnQkFBQUEsQ0FBSEMsT0FBQSxLQUFBSCxTQUFBLENBQUFHLEtBQXNDOztJQUV0Q0QsaUJBQWlCdEIsT0FBTyxDQUFDLENBQUNGO1FBQ3hCSyxNQUFNcUIsSUFBSSxDQUFDMUIsYUFBYTJCLElBQUksSUFBSXpCLE9BQU8sQ0FBQyxDQUFDRSxNQUFRZ0IsT0FBT1EsTUFBTSxDQUFDeEI7UUFDL0RKLGFBQWFFLE9BQU8sQ0FBQyxDQUFDQyxPQUFPQyxNQUFRZ0IsT0FBT0YsTUFBTSxDQUFDZCxLQUFLRDtJQUMxRDtJQUNBLE9BQU9pQjtBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi8uLi8uLi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcXVlcnlzdHJpbmcudHM/NTIxNSJdLCJuYW1lcyI6WyJhc3NpZ24iLCJzZWFyY2hQYXJhbXNUb1VybFF1ZXJ5IiwidXJsUXVlcnlUb1NlYXJjaFBhcmFtcyIsInNlYXJjaFBhcmFtcyIsInF1ZXJ5IiwiZm9yRWFjaCIsInZhbHVlIiwia2V5IiwiQXJyYXkiLCJpc0FycmF5IiwicHVzaCIsInN0cmluZ2lmeVVybFF1ZXJ5UGFyYW0iLCJwYXJhbSIsImlzTmFOIiwiU3RyaW5nIiwidXJsUXVlcnkiLCJyZXN1bHQiLCJVUkxTZWFyY2hQYXJhbXMiLCJPYmplY3QiLCJlbnRyaWVzIiwiaXRlbSIsImFwcGVuZCIsInNldCIsInRhcmdldCIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzZWFyY2hQYXJhbXNMaXN0IiwiX2tleSIsImZyb20iLCJrZXlzIiwiZGVsZXRlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/querystring.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/route-matcher.js": +/*!*************************************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/router/utils/route-matcher.js ***! + \*************************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getRouteMatcher\", ({\n enumerable: true,\n get: function() {\n return getRouteMatcher;\n }\n}));\nconst _utils = __webpack_require__(/*! ../../utils */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/utils.js\");\nfunction getRouteMatcher(param) {\n let { re, groups } = param;\n return (pathname)=>{\n const routeMatch = re.exec(pathname);\n if (!routeMatch) {\n return false;\n }\n const decode = (param)=>{\n try {\n return decodeURIComponent(param);\n } catch (_) {\n throw new _utils.DecodeError(\"failed to decode param\");\n }\n };\n const params = {};\n Object.keys(groups).forEach((slugName)=>{\n const g = groups[slugName];\n const m = routeMatch[g.pos];\n if (m !== undefined) {\n params[slugName] = ~m.indexOf(\"/\") ? m.split(\"/\").map((entry)=>decode(entry)) : g.repeat ? [\n decode(m)\n ] : decode(m);\n }\n });\n return params;\n };\n} //# sourceMappingURL=route-matcher.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcm91dGUtbWF0Y2hlci5qcyIsIm1hcHBpbmdzIjoiOzs7O21EQVdnQkE7OztlQUFBQTs7O21DQVZZO0FBVXJCLFNBQVNBLGdCQUFnQkMsS0FBMEI7SUFBMUIsTUFBRUMsRUFBRSxFQUFFQyxNQUFNLEVBQWMsR0FBMUJGO0lBQzlCLE9BQU8sQ0FBQ0c7UUFDTixNQUFNQyxhQUFhSCxHQUFHSSxJQUFJLENBQUNGO1FBQzNCLElBQUksQ0FBQ0MsWUFBWTtZQUNmLE9BQU87UUFDVDtRQUVBLE1BQU1FLFNBQVMsQ0FBQ047WUFDZCxJQUFJO2dCQUNGLE9BQU9PLG1CQUFtQlA7WUFDNUIsRUFBRSxPQUFPUSxHQUFHO2dCQUNWLE1BQU0sSUFBSUMsT0FBQUEsV0FBVyxDQUFDO1lBQ3hCO1FBQ0Y7UUFDQSxNQUFNQyxTQUFxRCxDQUFDO1FBRTVEQyxPQUFPQyxJQUFJLENBQUNWLFFBQVFXLE9BQU8sQ0FBQyxDQUFDQztZQUMzQixNQUFNQyxJQUFJYixNQUFNLENBQUNZLFNBQVM7WUFDMUIsTUFBTUUsSUFBSVosVUFBVSxDQUFDVyxFQUFFRSxHQUFHLENBQUM7WUFDM0IsSUFBSUQsTUFBTUUsV0FBVztnQkFDbkJSLE1BQU0sQ0FBQ0ksU0FBUyxHQUFHLENBQUNFLEVBQUVHLE9BQU8sQ0FBQyxPQUMxQkgsRUFBRUksS0FBSyxDQUFDLEtBQUtDLEdBQUcsQ0FBQyxDQUFDQyxRQUFVaEIsT0FBT2dCLFVBQ25DUCxFQUFFUSxNQUFNLEdBQ1I7b0JBQUNqQixPQUFPVTtpQkFBRyxHQUNYVixPQUFPVTtZQUNiO1FBQ0Y7UUFDQSxPQUFPTjtJQUNUO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uLy4uLy4uLy4uL3NyYy9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yb3V0ZS1tYXRjaGVyLnRzP2JlZmYiXSwibmFtZXMiOlsiZ2V0Um91dGVNYXRjaGVyIiwicGFyYW0iLCJyZSIsImdyb3VwcyIsInBhdGhuYW1lIiwicm91dGVNYXRjaCIsImV4ZWMiLCJkZWNvZGUiLCJkZWNvZGVVUklDb21wb25lbnQiLCJfIiwiRGVjb2RlRXJyb3IiLCJwYXJhbXMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsInNsdWdOYW1lIiwiZyIsIm0iLCJwb3MiLCJ1bmRlZmluZWQiLCJpbmRleE9mIiwic3BsaXQiLCJtYXAiLCJlbnRyeSIsInJlcGVhdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/route-matcher.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/route-regex.js": +/*!***********************************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/router/utils/route-regex.js ***! + \***********************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getNamedMiddlewareRegex: function() {\n return getNamedMiddlewareRegex;\n },\n getNamedRouteRegex: function() {\n return getNamedRouteRegex;\n },\n getRouteRegex: function() {\n return getRouteRegex;\n }\n});\nconst _interceptionroutes = __webpack_require__(/*! ../../../../server/future/helpers/interception-routes */ \"(app-pages-browser)/./node_modules/next/dist/server/future/helpers/interception-routes.js\");\nconst _escaperegexp = __webpack_require__(/*! ../../escape-regexp */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/escape-regexp.js\");\nconst _removetrailingslash = __webpack_require__(/*! ./remove-trailing-slash */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\");\nconst NEXT_QUERY_PARAM_PREFIX = \"nxtP\";\nconst NEXT_INTERCEPTION_MARKER_PREFIX = \"nxtI\";\n/**\n * Parses a given parameter from a route to a data structure that can be used\n * to generate the parametrized route. Examples:\n * - `[...slug]` -> `{ key: 'slug', repeat: true, optional: true }`\n * - `...slug` -> `{ key: 'slug', repeat: true, optional: false }`\n * - `[foo]` -> `{ key: 'foo', repeat: false, optional: true }`\n * - `bar` -> `{ key: 'bar', repeat: false, optional: false }`\n */ function parseParameter(param) {\n const optional = param.startsWith(\"[\") && param.endsWith(\"]\");\n if (optional) {\n param = param.slice(1, -1);\n }\n const repeat = param.startsWith(\"...\");\n if (repeat) {\n param = param.slice(3);\n }\n return {\n key: param,\n repeat,\n optional\n };\n}\nfunction getParametrizedRoute(route) {\n const segments = (0, _removetrailingslash.removeTrailingSlash)(route).slice(1).split(\"/\");\n const groups = {};\n let groupIndex = 1;\n return {\n parameterizedRoute: segments.map((segment)=>{\n const markerMatch = _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m));\n const paramMatches = segment.match(/\\[((?:\\[.*\\])|.+)\\]/) // Check for parameters\n ;\n if (markerMatch && paramMatches) {\n const { key, optional, repeat } = parseParameter(paramMatches[1]);\n groups[key] = {\n pos: groupIndex++,\n repeat,\n optional\n };\n return \"/\" + (0, _escaperegexp.escapeStringRegexp)(markerMatch) + \"([^/]+?)\";\n } else if (paramMatches) {\n const { key, repeat, optional } = parseParameter(paramMatches[1]);\n groups[key] = {\n pos: groupIndex++,\n repeat,\n optional\n };\n return repeat ? optional ? \"(?:/(.+?))?\" : \"/(.+?)\" : \"/([^/]+?)\";\n } else {\n return \"/\" + (0, _escaperegexp.escapeStringRegexp)(segment);\n }\n }).join(\"\"),\n groups\n };\n}\nfunction getRouteRegex(normalizedRoute) {\n const { parameterizedRoute, groups } = getParametrizedRoute(normalizedRoute);\n return {\n re: new RegExp(\"^\" + parameterizedRoute + \"(?:/)?$\"),\n groups: groups\n };\n}\n/**\n * Builds a function to generate a minimal routeKey using only a-z and minimal\n * number of characters.\n */ function buildGetSafeRouteKey() {\n let i = 0;\n return ()=>{\n let routeKey = \"\";\n let j = ++i;\n while(j > 0){\n routeKey += String.fromCharCode(97 + (j - 1) % 26);\n j = Math.floor((j - 1) / 26);\n }\n return routeKey;\n };\n}\nfunction getSafeKeyFromSegment(param) {\n let { interceptionMarker, getSafeRouteKey, segment, routeKeys, keyPrefix } = param;\n const { key, optional, repeat } = parseParameter(segment);\n // replace any non-word characters since they can break\n // the named regex\n let cleanedKey = key.replace(/\\W/g, \"\");\n if (keyPrefix) {\n cleanedKey = \"\" + keyPrefix + cleanedKey;\n }\n let invalidKey = false;\n // check if the key is still invalid and fallback to using a known\n // safe key\n if (cleanedKey.length === 0 || cleanedKey.length > 30) {\n invalidKey = true;\n }\n if (!isNaN(parseInt(cleanedKey.slice(0, 1)))) {\n invalidKey = true;\n }\n if (invalidKey) {\n cleanedKey = getSafeRouteKey();\n }\n if (keyPrefix) {\n routeKeys[cleanedKey] = \"\" + keyPrefix + key;\n } else {\n routeKeys[cleanedKey] = key;\n }\n // if the segment has an interception marker, make sure that's part of the regex pattern\n // this is to ensure that the route with the interception marker doesn't incorrectly match\n // the non-intercepted route (ie /app/(.)[username] should not match /app/[username])\n const interceptionPrefix = interceptionMarker ? (0, _escaperegexp.escapeStringRegexp)(interceptionMarker) : \"\";\n return repeat ? optional ? \"(?:/\" + interceptionPrefix + \"(?<\" + cleanedKey + \">.+?))?\" : \"/\" + interceptionPrefix + \"(?<\" + cleanedKey + \">.+?)\" : \"/\" + interceptionPrefix + \"(?<\" + cleanedKey + \">[^/]+?)\";\n}\nfunction getNamedParametrizedRoute(route, prefixRouteKeys) {\n const segments = (0, _removetrailingslash.removeTrailingSlash)(route).slice(1).split(\"/\");\n const getSafeRouteKey = buildGetSafeRouteKey();\n const routeKeys = {};\n return {\n namedParameterizedRoute: segments.map((segment)=>{\n const hasInterceptionMarker = _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.some((m)=>segment.startsWith(m));\n const paramMatches = segment.match(/\\[((?:\\[.*\\])|.+)\\]/) // Check for parameters\n ;\n if (hasInterceptionMarker && paramMatches) {\n const [usedMarker] = segment.split(paramMatches[0]);\n return getSafeKeyFromSegment({\n getSafeRouteKey,\n interceptionMarker: usedMarker,\n segment: paramMatches[1],\n routeKeys,\n keyPrefix: prefixRouteKeys ? NEXT_INTERCEPTION_MARKER_PREFIX : undefined\n });\n } else if (paramMatches) {\n return getSafeKeyFromSegment({\n getSafeRouteKey,\n segment: paramMatches[1],\n routeKeys,\n keyPrefix: prefixRouteKeys ? NEXT_QUERY_PARAM_PREFIX : undefined\n });\n } else {\n return \"/\" + (0, _escaperegexp.escapeStringRegexp)(segment);\n }\n }).join(\"\"),\n routeKeys\n };\n}\nfunction getNamedRouteRegex(normalizedRoute, prefixRouteKey) {\n const result = getNamedParametrizedRoute(normalizedRoute, prefixRouteKey);\n return {\n ...getRouteRegex(normalizedRoute),\n namedRegex: \"^\" + result.namedParameterizedRoute + \"(?:/)?$\",\n routeKeys: result.routeKeys\n };\n}\nfunction getNamedMiddlewareRegex(normalizedRoute, options) {\n const { parameterizedRoute } = getParametrizedRoute(normalizedRoute);\n const { catchAll = true } = options;\n if (parameterizedRoute === \"/\") {\n let catchAllRegex = catchAll ? \".*\" : \"\";\n return {\n namedRegex: \"^/\" + catchAllRegex + \"$\"\n };\n }\n const { namedParameterizedRoute } = getNamedParametrizedRoute(normalizedRoute, false);\n let catchAllGroupedRegex = catchAll ? \"(?:(/.*)?)\" : \"\";\n return {\n namedRegex: \"^\" + namedParameterizedRoute + catchAllGroupedRegex + \"$\"\n };\n} //# sourceMappingURL=route-regex.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcm91dGUtcmVnZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBMk5nQkEseUJBQXVCO2VBQXZCQTs7SUFoQkFDLG9CQUFrQjtlQUFsQkE7O0lBbklBQyxlQUFhO2VBQWJBOzs7Z0RBeEUyQjswQ0FDUjtpREFDQztBQUVwQyxNQUFNQywwQkFBMEI7QUFDaEMsTUFBTUMsa0NBQWtDO0FBYXhDOzs7Ozs7O0NBT0MsR0FDRCxTQUFTQyxlQUFlQyxLQUFhO0lBQ25DLE1BQU1DLFdBQVdELE1BQU1FLFVBQVUsQ0FBQyxRQUFRRixNQUFNRyxRQUFRLENBQUM7SUFDekQsSUFBSUYsVUFBVTtRQUNaRCxRQUFRQSxNQUFNSSxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQzFCO0lBQ0EsTUFBTUMsU0FBU0wsTUFBTUUsVUFBVSxDQUFDO0lBQ2hDLElBQUlHLFFBQVE7UUFDVkwsUUFBUUEsTUFBTUksS0FBSyxDQUFDO0lBQ3RCO0lBQ0EsT0FBTztRQUFFRSxLQUFLTjtRQUFPSztRQUFRSjtJQUFTO0FBQ3hDO0FBRUEsU0FBU00scUJBQXFCQyxLQUFhO0lBQ3pDLE1BQU1DLFdBQVdDLENBQUFBLEdBQUFBLHFCQUFBQSxtQkFBbUIsRUFBQ0YsT0FBT0osS0FBSyxDQUFDLEdBQUdPLEtBQUssQ0FBQztJQUMzRCxNQUFNQyxTQUF5QyxDQUFDO0lBQ2hELElBQUlDLGFBQWE7SUFDakIsT0FBTztRQUNMQyxvQkFBb0JMLFNBQ2pCTSxHQUFHLENBQUMsQ0FBQ0M7WUFDSixNQUFNQyxjQUFjQyxvQkFBQUEsMEJBQTBCLENBQUNDLElBQUksQ0FBQyxDQUFDQyxJQUNuREosUUFBUWQsVUFBVSxDQUFDa0I7WUFFckIsTUFBTUMsZUFBZUwsUUFBUU0sS0FBSyxDQUFDLHVCQUF1Qix1QkFBdUI7O1lBRWpGLElBQUlMLGVBQWVJLGNBQWM7Z0JBQy9CLE1BQU0sRUFBRWYs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TSxFQUFFN0Msa0JBQWtCLEVBQUUsR0FBR1AscUJBQXFCbUI7SUFDcEQsTUFBTSxFQUFFa0MsV0FBVyxJQUFJLEVBQUUsR0FBR0Q7SUFDNUIsSUFBSTdDLHVCQUF1QixLQUFLO1FBQzlCLElBQUkrQyxnQkFBZ0JELFdBQVcsT0FBTztRQUN0QyxPQUFPO1lBQ0xGLFlBQVksT0FBS0csZ0JBQWM7UUFDakM7SUFDRjtJQUVBLE1BQU0sRUFBRVYsdUJBQXVCLEVBQUUsR0FBR0YsMEJBQ2xDdkIsaUJBQ0E7SUFFRixJQUFJb0MsdUJBQXVCRixXQUFXLGVBQWU7SUFDckQsT0FBTztRQUNMRixZQUFZLE1BQUlQLDBCQUEwQlcsdUJBQXFCO0lBQ2pFO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uLy4uLy4uLy4uL3NyYy9zaGFyZWQvbGliL3JvdXRlci91dGlscy9yb3V0ZS1yZWdleC50cz8yYjM3Il0sIm5hbWVzIjpbImdldE5hbWVkTWlkZGxld2FyZVJlZ2V4IiwiZ2V0TmFtZWRSb3V0ZVJlZ2V4IiwiZ2V0Um91dGVSZWdleCIsIk5FWFRfUVVFUllfUEFSQU1fUFJFRklYIiwiTkVYVF9JTlRFUkNFUFRJT05fTUFSS0VSX1BSRUZJWCIsInBhcnNlUGFyYW1ldGVyIiwicGFyYW0iLCJvcHRpb25hbCIsInN0YXJ0c1dpdGgiLCJlbmRzV2l0aCIsInNsaWNlIiwicmVwZWF0Iiwia2V5IiwiZ2V0UGFyYW1ldHJpemVkUm91dGUiLCJyb3V0ZSIsInNlZ21lbnRzIiwicmVtb3ZlVHJhaWxpbmdTbGFzaCIsInNwbGl0IiwiZ3JvdXBzIiwiZ3JvdXBJbmRleCIsInBhcmFtZXRlcml6ZWRSb3V0ZSIsIm1hcCIsInNlZ21lbnQiLCJtYXJrZXJNYXRjaCIsIklOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTIiwiZmluZCIsIm0iLCJwYXJhbU1hdGNoZXMiLCJtYXRjaCIsInBvcyIsImVzY2FwZVN0cmluZ1JlZ2V4cCIsImpvaW4iLCJub3JtYWxpemVkUm91dGUiLCJyZSIsIlJlZ0V4cCIsImJ1aWxkR2V0U2FmZVJvdXRlS2V5IiwiaSIsInJvdXRlS2V5IiwiaiIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsIk1hdGgiLCJmbG9vciIsImdldFNhZmVLZXlGcm9tU2VnbWVudCIsImludGVyY2VwdGlvbk1hcmtlciIsImdldFNhZmVSb3V0ZUtleSIsInJvdXRlS2V5cyIsImtleVByZWZpeCIsImNsZWFuZWRLZXkiLCJyZXBsYWNlIiwiaW52YWxpZEtleSIsImxlbmd0aCIsImlzTmFOIiwicGFyc2VJbnQiLCJpbnRlcmNlcHRpb25QcmVmaXgiLCJnZXROYW1lZFBhcmFtZXRyaXplZFJvdXRlIiwicHJlZml4Um91dGVLZXlzIiwibmFtZWRQYXJhbWV0ZXJpemVkUm91dGUiLCJoYXNJbnRlcmNlcHRpb25NYXJrZXIiLCJzb21lIiwidXNlZE1hcmtlciIsInVuZGVmaW5lZCIsInByZWZpeFJvdXRlS2V5IiwicmVzdWx0IiwibmFtZWRSZWdleCIsIm9wdGlvbnMiLCJjYXRjaEFsbCIsImNhdGNoQWxsUmVnZXgiLCJjYXRjaEFsbEdyb3VwZWRSZWdleCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/route-regex.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/sorted-routes.js": +/*!*************************************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/router/utils/sorted-routes.js ***! + \*************************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getSortedRoutes\", ({\n enumerable: true,\n get: function() {\n return getSortedRoutes;\n }\n}));\nclass UrlNode {\n insert(urlPath) {\n this._insert(urlPath.split(\"/\").filter(Boolean), [], false);\n }\n smoosh() {\n return this._smoosh();\n }\n _smoosh(prefix) {\n if (prefix === void 0) prefix = \"/\";\n const childrenPaths = [\n ...this.children.keys()\n ].sort();\n if (this.slugName !== null) {\n childrenPaths.splice(childrenPaths.indexOf(\"[]\"), 1);\n }\n if (this.restSlugName !== null) {\n childrenPaths.splice(childrenPaths.indexOf(\"[...]\"), 1);\n }\n if (this.optionalRestSlugName !== null) {\n childrenPaths.splice(childrenPaths.indexOf(\"[[...]]\"), 1);\n }\n const routes = childrenPaths.map((c)=>this.children.get(c)._smoosh(\"\" + prefix + c + \"/\")).reduce((prev, curr)=>[\n ...prev,\n ...curr\n ], []);\n if (this.slugName !== null) {\n routes.push(...this.children.get(\"[]\")._smoosh(prefix + \"[\" + this.slugName + \"]/\"));\n }\n if (!this.placeholder) {\n const r = prefix === \"/\" ? \"/\" : prefix.slice(0, -1);\n if (this.optionalRestSlugName != null) {\n throw new Error('You cannot define a route with the same specificity as a optional catch-all route (\"' + r + '\" and \"' + r + \"[[...\" + this.optionalRestSlugName + ']]\").');\n }\n routes.unshift(r);\n }\n if (this.restSlugName !== null) {\n routes.push(...this.children.get(\"[...]\")._smoosh(prefix + \"[...\" + this.restSlugName + \"]/\"));\n }\n if (this.optionalRestSlugName !== null) {\n routes.push(...this.children.get(\"[[...]]\")._smoosh(prefix + \"[[...\" + this.optionalRestSlugName + \"]]/\"));\n }\n return routes;\n }\n _insert(urlPaths, slugNames, isCatchAll) {\n if (urlPaths.length === 0) {\n this.placeholder = false;\n return;\n }\n if (isCatchAll) {\n throw new Error(\"Catch-all must be the last part of the URL.\");\n }\n // The next segment in the urlPaths list\n let nextSegment = urlPaths[0];\n // Check if the segment matches `[something]`\n if (nextSegment.startsWith(\"[\") && nextSegment.endsWith(\"]\")) {\n // Strip `[` and `]`, leaving only `something`\n let segmentName = nextSegment.slice(1, -1);\n let isOptional = false;\n if (segmentName.startsWith(\"[\") && segmentName.endsWith(\"]\")) {\n // Strip optional `[` and `]`, leaving only `something`\n segmentName = segmentName.slice(1, -1);\n isOptional = true;\n }\n if (segmentName.startsWith(\"...\")) {\n // Strip `...`, leaving only `something`\n segmentName = segmentName.substring(3);\n isCatchAll = true;\n }\n if (segmentName.startsWith(\"[\") || segmentName.endsWith(\"]\")) {\n throw new Error(\"Segment names may not start or end with extra brackets ('\" + segmentName + \"').\");\n }\n if (segmentName.startsWith(\".\")) {\n throw new Error(\"Segment names may not start with erroneous periods ('\" + segmentName + \"').\");\n }\n function handleSlug(previousSlug, nextSlug) {\n if (previousSlug !== null) {\n // If the specific segment already has a slug but the slug is not `something`\n // This prevents collisions like:\n // pages/[post]/index.js\n // pages/[id]/index.js\n // Because currently multiple dynamic params on the same segment level are not supported\n if (previousSlug !== nextSlug) {\n // TODO: This error seems to be confusing for users, needs an error link, the description can be based on above comment.\n throw new Error(\"You cannot use different slug names for the same dynamic path ('\" + previousSlug + \"' !== '\" + nextSlug + \"').\");\n }\n }\n slugNames.forEach((slug)=>{\n if (slug === nextSlug) {\n throw new Error('You cannot have the same slug name \"' + nextSlug + '\" repeat within a single dynamic path');\n }\n if (slug.replace(/\\W/g, \"\") === nextSegment.replace(/\\W/g, \"\")) {\n throw new Error('You cannot have the slug names \"' + slug + '\" and \"' + nextSlug + '\" differ only by non-word symbols within a single dynamic path');\n }\n });\n slugNames.push(nextSlug);\n }\n if (isCatchAll) {\n if (isOptional) {\n if (this.restSlugName != null) {\n throw new Error('You cannot use both an required and optional catch-all route at the same level (\"[...' + this.restSlugName + ']\" and \"' + urlPaths[0] + '\" ).');\n }\n handleSlug(this.optionalRestSlugName, segmentName);\n // slugName is kept as it can only be one particular slugName\n this.optionalRestSlugName = segmentName;\n // nextSegment is overwritten to [[...]] so that it can later be sorted specifically\n nextSegment = \"[[...]]\";\n } else {\n if (this.optionalRestSlugName != null) {\n throw new Error('You cannot use both an optional and required catch-all route at the same level (\"[[...' + this.optionalRestSlugName + ']]\" and \"' + urlPaths[0] + '\").');\n }\n handleSlug(this.restSlugName, segmentName);\n // slugName is kept as it can only be one particular slugName\n this.restSlugName = segmentName;\n // nextSegment is overwritten to [...] so that it can later be sorted specifically\n nextSegment = \"[...]\";\n }\n } else {\n if (isOptional) {\n throw new Error('Optional route parameters are not yet supported (\"' + urlPaths[0] + '\").');\n }\n handleSlug(this.slugName, segmentName);\n // slugName is kept as it can only be one particular slugName\n this.slugName = segmentName;\n // nextSegment is overwritten to [] so that it can later be sorted specifically\n nextSegment = \"[]\";\n }\n }\n // If this UrlNode doesn't have the nextSegment yet we create a new child UrlNode\n if (!this.children.has(nextSegment)) {\n this.children.set(nextSegment, new UrlNode());\n }\n this.children.get(nextSegment)._insert(urlPaths.slice(1), slugNames, isCatchAll);\n }\n constructor(){\n this.placeholder = true;\n this.children = new Map();\n this.slugName = null;\n this.restSlugName = null;\n this.optionalRestSlugName = null;\n }\n}\nfunction getSortedRoutes(normalizedPages) {\n // First the UrlNode is created, and every UrlNode can have only 1 dynamic segment\n // Eg you can't have pages/[post]/abc.js and pages/[hello]/something-else.js\n // Only 1 dynamic segment per nesting level\n // So in the case that is test/integration/dynamic-routing it'll be this:\n // pages/[post]/comments.js\n // pages/blog/[post]/comment/[id].js\n // Both are fine because `pages/[post]` and `pages/blog` are on the same level\n // So in this case `UrlNode` created here has `this.slugName === 'post'`\n // And since your PR passed through `slugName` as an array basically it'd including it in too many possibilities\n // Instead what has to be passed through is the upwards path's dynamic names\n const root = new UrlNode();\n // Here the `root` gets injected multiple paths, and insert will break them up into sublevels\n normalizedPages.forEach((pagePath)=>root.insert(pagePath));\n // Smoosh will then sort those sublevels up to the point where you get the correct route definition priority\n return root.smoosh();\n} //# sourceMappingURL=sorted-routes.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvc29ydGVkLXJvdXRlcy5qcyIsIm1hcHBpbmdzIjoiOzs7O21EQXFNZ0JBOzs7ZUFBQUE7OztBQXJNaEIsTUFBTUM7SUFPSkMsT0FBT0MsT0FBZSxFQUFRO1FBQzVCLElBQUksQ0FBQ0MsT0FBTyxDQUFDRCxRQUFRRSxLQUFLLENBQUMsS0FBS0MsTUFBTSxDQUFDQyxVQUFVLEVBQUUsRUFBRTtJQUN2RDtJQUVBQyxTQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQ0MsT0FBTztJQUNyQjtJQUVRQSxRQUFRQyxNQUFvQixFQUFZO1FBQWhDQSxJQUFBQSxXQUFBQSxLQUFBQSxHQUFBQSxTQUFpQjtRQUMvQixNQUFNQyxnQkFBZ0I7ZUFBSSxJQUFJLENBQUNDLFFBQVEsQ0FBQ0MsSUFBSTtTQUFHLENBQUNDLElBQUk7UUFDcEQsSUFBSSxJQUFJLENBQUNDLFFBQVEsS0FBSyxNQUFNO1lBQzFCSixjQUFjSyxNQUFNLENBQUNMLGNBQWNNLE9BQU8sQ0FBQyxPQUFPO1FBQ3BEO1FBQ0EsSUFBSSxJQUFJLENBQUNDLFlBQVksS0FBSyxNQUFNO1lBQzlCUCxjQUFjSyxNQUFNLENBQUNMLGNBQWNNLE9BQU8sQ0FBQyxVQUFVO1FBQ3ZEO1FBQ0EsSUFBSSxJQUFJLENBQUNFLG9CQUFvQixLQUFLLE1BQU07WUFDdENSLGNBQWNLLE1BQU0sQ0FBQ0wsY0FBY00sT0FBTyxDQUFDLFlBQVk7UUFDekQ7UUFFQSxNQUFNRyxTQUFTVCxjQUNaVSxHQUFHLENBQUMsQ0FBQ0MsSUFBTSxJQUFJLENBQUNWLFFBQVEsQ0FBQ1csR0FBRyxDQUFDRCxHQUFJYixPQUFPLENBQUMsS0FBR0MsU0FBU1ksSUFBRSxNQUN2REUsTUFBTSxDQUFDLENBQUNDLE1BQU1DLE9BQVM7bUJBQUlEO21CQUFTQzthQUFLLEVBQUUsRUFBRTtRQUVoRCxJQUFJLElBQUksQ0FBQ1gsUUFBUSxLQUFL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Q0FBQ3pCLFFBQVEsQ0FBQ3NDLEdBQUcsQ0FBQ2IsYUFBYSxJQUFJcEM7UUFDckM7UUFFQSxJQUFJLENBQUNXLFFBQVEsQ0FDVlcsR0FBRyxDQUFDYyxhQUNKakMsT0FBTyxDQUFDNkIsU0FBU0gsS0FBSyxDQUFDLElBQUlJLFdBQVdDO0lBQzNDOzthQWpNQVAsV0FBQUEsR0FBdUI7YUFDdkJoQixRQUFBQSxHQUFpQyxJQUFJdUM7YUFDckNwQyxRQUFBQSxHQUEwQjthQUMxQkcsWUFBQUEsR0FBOEI7YUFDOUJDLG9CQUFBQSxHQUFzQzs7QUE4THhDO0FBRU8sU0FBU25CLGdCQUNkb0QsZUFBc0M7SUFFdEMsa0ZBQWtGO0lBQ2xGLDRFQUE0RTtJQUM1RSwyQ0FBMkM7SUFFM0MseUVBQXlFO0lBQ3pFLDJCQUEyQjtJQUMzQixvQ0FBb0M7SUFDcEMsOEVBQThFO0lBQzlFLHdFQUF3RTtJQUN4RSxnSEFBZ0g7SUFDaEgsNEVBQTRFO0lBQzVFLE1BQU1DLE9BQU8sSUFBSXBEO0lBRWpCLDZGQUE2RjtJQUM3Rm1ELGdCQUFnQk4sT0FBTyxDQUFDLENBQUNRLFdBQWFELEtBQUtuRCxNQUFNLENBQUNvRDtJQUNsRCw0R0FBNEc7SUFDNUcsT0FBT0QsS0FBSzdDLE1BQU07QUFDcEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uLy4uLy4uLy4uL3NyYy9zaGFyZWQvbGliL3JvdXRlci91dGlscy9zb3J0ZWQtcm91dGVzLnRzP2IwYjAiXSwibmFtZXMiOlsiZ2V0U29ydGVkUm91dGVzIiwiVXJsTm9kZSIsImluc2VydCIsInVybFBhdGgiLCJfaW5zZXJ0Iiwic3BsaXQiLCJmaWx0ZXIiLCJCb29sZWFuIiwic21vb3NoIiwiX3Ntb29zaCIsInByZWZpeCIsImNoaWxkcmVuUGF0aHMiLCJjaGlsZHJlbiIsImtleXMiLCJzb3J0Iiwic2x1Z05hbWUiLCJzcGxpY2UiLCJpbmRleE9mIiwicmVzdFNsdWdOYW1lIiwib3B0aW9uYWxSZXN0U2x1Z05hbWUiLCJyb3V0ZXMiLCJtYXAiLCJjIiwiZ2V0IiwicmVkdWNlIiwicHJldiIsImN1cnIiLCJwdXNoIiwicGxhY2Vob2xkZXIiLCJyIiwic2xpY2UiLCJFcnJvciIsInVuc2hpZnQiLCJ1cmxQYXRocyIsInNsdWdOYW1lcyIsImlzQ2F0Y2hBbGwiLCJsZW5ndGgiLCJuZXh0U2VnbWVudCIsInN0YXJ0c1dpdGgiLCJlbmRzV2l0aCIsInNlZ21lbnROYW1lIiwiaXNPcHRpb25hbCIsInN1YnN0cmluZyIsImhhbmRsZVNsdWciLCJwcmV2aW91c1NsdWciLCJuZXh0U2x1ZyIsImZvckVhY2giLCJzbHVnIiwicmVwbGFjZSIsImhhcyIsInNldCIsIk1hcCIsIm5vcm1hbGl6ZWRQYWdlcyIsInJvb3QiLCJwYWdlUGF0aCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/sorted-routes.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/shared/lib/utils.js": +/*!****************************************************!*\ + !*** ./node_modules/next/dist/shared/lib/utils.js ***! + \****************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DecodeError: function() {\n return DecodeError;\n },\n MiddlewareNotFoundError: function() {\n return MiddlewareNotFoundError;\n },\n MissingStaticPage: function() {\n return MissingStaticPage;\n },\n NormalizeError: function() {\n return NormalizeError;\n },\n PageNotFoundError: function() {\n return PageNotFoundError;\n },\n SP: function() {\n return SP;\n },\n ST: function() {\n return ST;\n },\n WEB_VITALS: function() {\n return WEB_VITALS;\n },\n execOnce: function() {\n return execOnce;\n },\n getDisplayName: function() {\n return getDisplayName;\n },\n getLocationOrigin: function() {\n return getLocationOrigin;\n },\n getURL: function() {\n return getURL;\n },\n isAbsoluteUrl: function() {\n return isAbsoluteUrl;\n },\n isResSent: function() {\n return isResSent;\n },\n loadGetInitialProps: function() {\n return loadGetInitialProps;\n },\n normalizeRepeatedSlashes: function() {\n return normalizeRepeatedSlashes;\n },\n stringifyError: function() {\n return stringifyError;\n }\n});\nconst WEB_VITALS = [\n \"CLS\",\n \"FCP\",\n \"FID\",\n \"INP\",\n \"LCP\",\n \"TTFB\"\n];\nfunction execOnce(fn) {\n let used = false;\n let result;\n return function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (!used) {\n used = true;\n result = fn(...args);\n }\n return result;\n };\n}\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\nconst isAbsoluteUrl = (url)=>ABSOLUTE_URL_REGEX.test(url);\nfunction getLocationOrigin() {\n const { protocol, hostname, port } = window.location;\n return protocol + \"//\" + hostname + (port ? \":\" + port : \"\");\n}\nfunction getURL() {\n const { href } = window.location;\n const origin = getLocationOrigin();\n return href.substring(origin.length);\n}\nfunction getDisplayName(Component) {\n return typeof Component === \"string\" ? Component : Component.displayName || Component.name || \"Unknown\";\n}\nfunction isResSent(res) {\n return res.finished || res.headersSent;\n}\nfunction normalizeRepeatedSlashes(url) {\n const urlParts = url.split(\"?\");\n const urlNoQuery = urlParts[0];\n return urlNoQuery // first we replace any non-encoded backslashes with forward\n // then normalize repeated forward slashes\n .replace(/\\\\/g, \"/\").replace(/\\/\\/+/g, \"/\") + (urlParts[1] ? \"?\" + urlParts.slice(1).join(\"?\") : \"\");\n}\nasync function loadGetInitialProps(App, ctx) {\n if (true) {\n var _App_prototype;\n if ((_App_prototype = App.prototype) == null ? void 0 : _App_prototype.getInitialProps) {\n const message = '\"' + getDisplayName(App) + '.getInitialProps()\" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.';\n throw new Error(message);\n }\n }\n // when called from _app `ctx` is nested in `ctx`\n const res = ctx.res || ctx.ctx && ctx.ctx.res;\n if (!App.getInitialProps) {\n if (ctx.ctx && ctx.Component) {\n // @ts-ignore pageProps default\n return {\n pageProps: await loadGetInitialProps(ctx.Component, ctx.ctx)\n };\n }\n return {};\n }\n const props = await App.getInitialProps(ctx);\n if (res && isResSent(res)) {\n return props;\n }\n if (!props) {\n const message = '\"' + getDisplayName(App) + '.getInitialProps()\" should resolve to an object. But found \"' + props + '\" instead.';\n throw new Error(message);\n }\n if (true) {\n if (Object.keys(props).length === 0 && !ctx.ctx) {\n console.warn(\"\" + getDisplayName(App) + \" returned an empty object from `getInitialProps`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps\");\n }\n }\n return props;\n}\nconst SP = typeof performance !== \"undefined\";\nconst ST = SP && [\n \"mark\",\n \"measure\",\n \"getEntriesByName\"\n].every((method)=>typeof performance[method] === \"function\");\nclass DecodeError extends Error {\n}\nclass NormalizeError extends Error {\n}\nclass PageNotFoundError extends Error {\n constructor(page){\n super();\n this.code = \"ENOENT\";\n this.name = \"PageNotFoundError\";\n this.message = \"Cannot find module for page: \" + page;\n }\n}\nclass MissingStaticPage extends Error {\n constructor(page, message){\n super();\n this.message = \"Failed to load static file for page: \" + page + \" \" + message;\n }\n}\nclass MiddlewareNotFoundError extends Error {\n constructor(){\n super();\n this.code = \"ENOENT\";\n this.message = \"Cannot find the middleware module\";\n }\n}\nfunction stringifyError(error) {\n return JSON.stringify({\n message: error.message,\n stack: error.stack\n });\n} //# sourceMappingURL=utils.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi91dGlscy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFvYWFBLGFBQVc7ZUFBWEE7O0lBb0JBQyx5QkFBdUI7ZUFBdkJBOztJQVBBQyxtQkFBaUI7ZUFBakJBOztJQVpBQyxnQkFBYztlQUFkQTs7SUFDQUMsbUJBQWlCO2VBQWpCQTs7SUFUQUMsSUFBRTtlQUFGQTs7SUFDQUMsSUFBRTtlQUFGQTs7SUFsWEFDLFlBQVU7ZUFBVkE7O0lBc1FHQyxVQUFRO2VBQVJBOztJQStCQUMsZ0JBQWM7ZUFBZEE7O0lBWEFDLG1CQUFpQjtlQUFqQkE7O0lBS0FDLFFBQU07ZUFBTkE7O0lBUEhDLGVBQWE7ZUFBYkE7O0lBbUJHQyxXQUFTO2VBQVRBOztJQWtCTUMscUJBQW1CO2VBQW5CQTs7SUFkTkMsMEJBQXdCO2VBQXhCQTs7SUErR0FDLGdCQUFjO2VBQWRBOzs7QUE5WlQsTUFBTVQsYUFBYTtJQUFDO0lBQU87SUFBTztJQUFPO0lBQU87SUFBTztDQUFPO0FBc1E5RCxTQUFTQyxTQUNkUyxFQUFLO0lBRUwsSUFBSUMsT0FBTztJQUNYLElBQUlDO0lBRUosT0FBUTt5Q0FBSUMsT0FBQUEsSUFBQUEsTUFBQUEsT0FBQUEsT0FBQUEsR0FBQUEsT0FBQUEsTUFBQUEsT0FBQUE7WUFBQUEsSUFBQUEsQ0FBQUEsS0FBQUEsR0FBQUEsU0FBQUEsQ0FBQUEsS0FBQUE7O1FBQ1YsSUFBSSxDQUFDRixNQUFNO1lBQ1RBLE9BQU87WUFDUEMsU0FBU0YsTUFBTUc7UUFDakI7UUFDQSxPQUFPRDtJQUNUO0FBQ0Y7QUFFQSwwREFBMEQ7QUFDMUQsZ0VBQWdFO0FBQ2hFLE1BQU1FLHFCQUFxQjtBQUNwQixNQUFNVCxnQkFBZ0IsQ0FBQ1UsTUFBZ0JELG1CQUFtQkUsSUFBSSxDQUFDRDtBQUUvRCxTQUFTWjtJQUNkLE1BQU0sRUFBRWMsUUFBUSxFQUFFQyxRQUFRLEVBQUVDLElBQUksRUFB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O0lBQ3JDVSxZQUFZQyxJQUFZLEVBQUVaLE9BQWUsQ0FBRTtRQUN6QyxLQUFLO1FBQ0wsSUFBSSxDQUFDQSxPQUFPLEdBQUcsMENBQXdDWSxPQUFLLE1BQUdaO0lBQ2pFO0FBQ0Y7QUFFTyxNQUFNakQsZ0NBQWdDa0Q7SUFFM0NVLGFBQWM7UUFDWixLQUFLO1FBQ0wsSUFBSSxDQUFDRSxJQUFJLEdBQUc7UUFDWixJQUFJLENBQUNiLE9BQU8sR0FBSTtJQUNsQjtBQUNGO0FBV08sU0FBU2xDLGVBQWVnRCxLQUFZO0lBQ3pDLE9BQU9DLEtBQUtDLFNBQVMsQ0FBQztRQUFFaEIsU0FBU2MsTUFBTWQsT0FBTztRQUFFaUIsT0FBT0gsTUFBTUcsS0FBSztJQUFDO0FBQ3JFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi8uLi9zcmMvc2hhcmVkL2xpYi91dGlscy50cz8xYmQ1Il0sIm5hbWVzIjpbIkRlY29kZUVycm9yIiwiTWlkZGxld2FyZU5vdEZvdW5kRXJyb3IiLCJNaXNzaW5nU3RhdGljUGFnZSIsIk5vcm1hbGl6ZUVycm9yIiwiUGFnZU5vdEZvdW5kRXJyb3IiLCJTUCIsIlNUIiwiV0VCX1ZJVEFMUyIsImV4ZWNPbmNlIiwiZ2V0RGlzcGxheU5hbWUiLCJnZXRMb2NhdGlvbk9yaWdpbiIsImdldFVSTCIsImlzQWJzb2x1dGVVcmwiLCJpc1Jlc1NlbnQiLCJsb2FkR2V0SW5pdGlhbFByb3BzIiwibm9ybWFsaXplUmVwZWF0ZWRTbGFzaGVzIiwic3RyaW5naWZ5RXJyb3IiLCJmbiIsInVzZWQiLCJyZXN1bHQiLCJhcmdzIiwiQUJTT0xVVEVfVVJMX1JFR0VYIiwidXJsIiwidGVzdCIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJwb3J0Iiwid2luZG93IiwibG9jYXRpb24iLCJocmVmIiwib3JpZ2luIiwic3Vic3RyaW5nIiwibGVuZ3RoIiwiQ29tcG9uZW50IiwiZGlzcGxheU5hbWUiLCJuYW1lIiwicmVzIiwiZmluaXNoZWQiLCJoZWFkZXJzU2VudCIsInVybFBhcnRzIiwic3BsaXQiLCJ1cmxOb1F1ZXJ5IiwicmVwbGFjZSIsInNsaWNlIiwiam9pbiIsIkFwcCIsImN0eCIsInByb2Nlc3MiLCJwcm90b3R5cGUiLCJnZXRJbml0aWFsUHJvcHMiLCJtZXNzYWdlIiwiRXJyb3IiLCJwYWdlUHJvcHMiLCJwcm9wcyIsIk9iamVjdCIsImtleXMiLCJjb25zb2xlIiwid2FybiIsInBlcmZvcm1hbmNlIiwiZXZlcnkiLCJtZXRob2QiLCJjb25zdHJ1Y3RvciIsInBhZ2UiLCJjb2RlIiwiZXJyb3IiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhY2siXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/shared/lib/utils.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js ***! + \****************************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("/**\n * @license React\n * react-jsx-dev-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n (function() {\n'use strict';\n\nvar React = __webpack_require__(/*! next/dist/compiled/react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider'); // TODO: Delete with enableRenderableContext\n\nvar REACT_CONSUMER_TYPE = Symbol.for('react.consumer');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar REACT_CACHE_TYPE = Symbol.for('react.cache');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\nvar enableRenderableContext = false;\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false;\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n}\n\nvar REACT_CLIENT_REFERENCE$2 = Symbol.for('react.client.reference'); // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n if (typeof type === 'function') {\n if (type.$$typeof === REACT_CLIENT_REFERENCE$2) {\n // TODO: Create a convention for naming client references with debug info.\n return null;\n }\n\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n case REACT_CACHE_TYPE:\n {\n return 'Cache';\n }\n\n }\n\n if (typeof type === 'object') {\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n switch (type.$$typeof) {\n case REACT_PROVIDER_TYPE:\n {\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n }\n\n case REACT_CONTEXT_TYPE:\n var context = type;\n\n {\n return getContextName(context) + '.Consumer';\n }\n\n case REACT_CONSUMER_TYPE:\n {\n return null;\n }\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n }\n }\n\n return null;\n}\n\n// $FlowFixMe[method-unbinding]\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar assign = Object.assign;\n\n/*\n * The `'' + value` pattern (used in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe[incompatible-return] only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object'; // $FlowFixMe[incompatible-return]\n\n return type;\n }\n} // $FlowFixMe[incompatible-return] only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nvar REACT_CLIENT_REFERENCE$1 = Symbol.for('react.client.reference');\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || enableRenderableContext || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_CLIENT_REFERENCE$1 || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe[cannot-write] Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe[cannot-write] Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n/**\n * Leverages native browser/VM stack frames to get proper details (e.g.\n * filename, line + col number) for a single component in a component stack. We\n * do this by:\n * (1) throwing and catching an error in the function - this will be our\n * control error.\n * (2) calling the component which will eventually throw an error that we'll\n * catch - this will be our sample error.\n * (3) diffing the control and sample error stacks to find the stack frame\n * which represents our component.\n */\n\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if (!fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe[incompatible-type] It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n /**\n * Finding a common stack frame between sample and control errors can be\n * tricky given the different types and levels of stack trace truncation from\n * different JS VMs. So instead we'll attempt to control what that common\n * frame should be through this object method:\n * Having both the sample and control errors be in the function under the\n * `DescribeNativeComponentFrameRoot` property, + setting the `name` and\n * `displayName` properties of the function ensures that a stack\n * frame exists that has the method name `DescribeNativeComponentFrameRoot` in\n * it for both control and sample stacks.\n */\n\n\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n var control;\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe[prop-missing]\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n } // $FlowFixMe[prop-missing] found when upgrading Flow\n\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n } // TODO(luna): This will currently only throw if the function component\n // tries to access React/ReactDOM/props. We should probably make this throw\n // in simple components too\n\n\n var maybePromise = fn(); // If the function component returns a promise, it's likely an async\n // component, which we don't yet support. Attach a noop catch handler to\n // silence the error.\n // TODO: Implement component stacks for async client components?\n\n if (maybePromise && typeof maybePromise.catch === 'function') {\n maybePromise.catch(function () {});\n }\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n return [sample.stack, control.stack];\n }\n }\n\n return [null, null];\n }\n }; // $FlowFixMe[prop-missing]\n\n RunInRootFrame.DetermineComponentFrameRoot.displayName = 'DetermineComponentFrameRoot';\n var namePropDescriptor = Object.getOwnPropertyDescriptor(RunInRootFrame.DetermineComponentFrameRoot, 'name'); // Before ES6, the `name` property was not configurable.\n\n if (namePropDescriptor && namePropDescriptor.configurable) {\n // V8 utilizes a function's `name` property when generating a stack trace.\n Object.defineProperty(RunInRootFrame.DetermineComponentFrameRoot, // Configurable properties can be updated even if its writable descriptor\n // is set to `false`.\n // $FlowFixMe[cannot-write]\n 'name', {\n value: 'DetermineComponentFrameRoot'\n });\n }\n\n try {\n var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n\n if (sampleStack && controlStack) {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sampleStack.split('\\n');\n var controlLines = controlStack.split('\\n');\n var s = 0;\n var c = 0;\n\n while (s < sampleLines.length && !sampleLines[s].includes('DetermineComponentFrameRoot')) {\n s++;\n }\n\n while (c < controlLines.length && !controlLines[c].includes('DetermineComponentFrameRoot')) {\n c++;\n } // We couldn't find our intentionally injected common root frame, attempt\n // to find another common root frame by search from the bottom of the\n // control stack...\n\n\n if (s === sampleLines.length || c === controlLines.length) {\n s = sampleLines.length - 1;\n c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('')) {\n _frame = _frame.replace('', fn.displayName);\n }\n\n if (true) {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\nvar REACT_CLIENT_REFERENCE = Symbol.for('react.client.reference');\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nfunction ReactElement(type, key, _ref, self, source, owner, props) {\n var ref;\n\n {\n ref = _ref;\n }\n\n var element;\n\n {\n // In prod, `ref` is a regular property. It will be removed in a\n // future release.\n element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n }\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // debugInfo contains Server Component debug information.\n\n Object.defineProperty(element, '_debugInfo', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n}\nvar didWarnAboutKeySpread = {};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV$1(type, config, maybeKey, isStaticChildren, source, self) {\n {\n if (!isValidElementType(type)) {\n // This is an invalid element type.\n //\n // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n } else {\n // This is a valid element type.\n // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing\n // errors. We don't want exception behavior to differ between dev and\n // prod. (Rendering will throw with a helpful message and as soon as the\n // type is fixed, the key warnings will appear.)\n var children = config.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n } // Warn about key spread regardless of whether the type is valid.\n\n\n if (hasOwnProperty.call(config, 'key')) {\n var componentName = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return k !== 'key';\n });\n var beforeExample = keys.length > 0 ? '{key: someKey, ' + keys.join(': ..., ') + ': ...}' : '{key: someKey}';\n\n if (!didWarnAboutKeySpread[componentName + beforeExample]) {\n var afterExample = keys.length > 0 ? '{' + keys.join(': ..., ') + ': ...}' : '{}';\n\n error('A props object containing a \"key\" prop is being spread into JSX:\\n' + ' let props = %s;\\n' + ' <%s {...props} />\\n' + 'React keys must be passed directly to JSX without using spread:\\n' + ' let props = %s;\\n' + ' <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);\n\n didWarnAboutKeySpread[componentName + beforeExample] = true;\n }\n }\n\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie.
\n // or
). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n //
, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n {\n checkKeyStringCoercion(maybeKey);\n }\n\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n {\n ref = config.ref;\n }\n\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && // Skip over reserved prop names\n propName !== 'key' && (propName !== 'ref')) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n var element = ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n }\n\n return element;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner.current) {\n var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object' || !node) {\n return;\n }\n\n if (node.$$typeof === REACT_CLIENT_REFERENCE) ; else if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nvar ownerHasKeyUseWarning = {};\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement(null);\n }\n}\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = getComponentNameFromType(parentType);\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n // TODO: Move this to render phase instead of at element creation.\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement(null);\n }\n }\n}\n\nvar jsxDEV = jsxDEV$1 ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsxDEV = jsxDEV;\n })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvY2pzL3JlYWN0LWpzeC1kZXYtcnVudGltZS5kZXZlbG9wbWVudC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWIsSUFBSSxJQUFxQztBQUN6QztBQUNBOztBQUVBLFlBQVksbUJBQU8sQ0FBQyxzR0FBMEI7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RDs7QUFFeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlHQUFpRyxlQUFlO0FBQ2hIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07OztBQUdOO0FBQ0E7QUFDQSxLQUFLLEdBQUc7O0FBRVIsa0RBQWtEO0FBQ2xEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLDRCQUE0QjtBQUM1QjtBQUNBLHFDQUFxQzs7QUFFckMsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBOztBQUVBLHFFQUFxRTs7QUFFckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0dBQWtHOztBQUVsRztBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsd0NBQXdDO0FBQ3hDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1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O0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxXQUFXLEdBQUc7QUFDZCxXQUFXLEdBQUc7QUFDZCxXQUFXLGVBQWU7QUFDMUIsV0FBVyxHQUFHO0FBQ2QsV0FBVyxHQUFHO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZDtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtB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QUFXLGNBQWM7QUFDekI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixpQkFBaUI7QUFDckM7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLGdCQUFnQjtBQUNoQixjQUFjO0FBQ2QsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvY2pzL3JlYWN0LWpzeC1kZXYtcnVudGltZS5kZXZlbG9wbWVudC5qcz84MDgxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1kZXYtcnVudGltZS5kZXZlbG9wbWVudC5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIChmdW5jdGlvbigpIHtcbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0ID0gcmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9yZWFjdFwiKTtcblxuLy8gQVRURU5USU9OXG4vLyBXaGVuIGFkZGluZyBuZXcgc3ltYm9scyB0byB0aGlzIGZpbGUsXG4vLyBQbGVhc2UgY29uc2lkZXIgYWxzbyBhZGRpbmcgdG8gJ3JlYWN0LWRldnRvb2xzLXNoYXJlZC9zcmMvYmFja2VuZC9SZWFjdFN5bWJvbHMnXG4vLyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1lbnQtbGlrZSB0eXBlcy5cbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50Jyk7XG52YXIgUkVBQ1RfUE9SVEFMX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wb3J0YWwnKTtcbnZhciBSRUFDVF9GUkFHTUVOVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuZnJhZ21lbnQnKTtcbnZhciBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3RyaWN0X21vZGUnKTtcbnZhciBSRUFDVF9QUk9GSUxFUl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QucHJvZmlsZXInKTtcbnZhciBSRUFDVF9QUk9WSURFUl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QucHJvdmlkZXInKTsgLy8gVE9ETzogRGVsZXRlIHdpdGggZW5hYmxlUmVuZGVyYWJsZUNvbnRleHRcblxudmFyIFJFQUNUX0NPTlNVTUVSX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5jb25zdW1lcicpO1xudmFyIFJFQUNUX0NPTlRFWFRfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmNvbnRleHQnKTtcbnZhciBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuZm9yd2FyZF9yZWYnKTtcbnZhciBSRUFDVF9TVVNQRU5TRV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2UnKTtcbnZhciBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5zdXNwZW5zZV9saXN0Jyk7XG52YXIgUkVBQ1RfTUVNT19UWVBFID0gU3ltYm9sLmZvcigncmVhY3QubWVtbycpO1xudmFyIFJFQUNUX0xBWllfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmxhenknKTtcbnZhciBSRUFDVF9PRkZTQ1JFRU5fVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm9mZnNjcmVlbicpO1xudmFyIFJFQUNUX0NBQ0hFX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5jYWNoZScpO1xudmFyIE1BWUJFX0lURVJBVE9SX1NZTUJPTCA9IFN5bWJvbC5pdGVyYXRvcjtcbnZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJztcbmZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkge1xuICBpZiAobWF5YmVJdGVyYWJsZSA9PT0gbnVsbCB8fCB0eXBlb2YgbWF5YmVJdGVyYWJsZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBtYXliZUl0ZXJhdG9yID0gTUFZQkVfSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbTUFZQkVfSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXTtcblxuICBpZiAodHlwZW9mIG1heWJlSXRlcmF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbWF5YmVJdGVyYXRvcjtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG52YXIgUmVhY3RTaGFyZWRJbnRlcm5hbHMgPSBSZWFjdC5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtcblxuZnVuY3Rpb24gZXJyb3IoZm9ybWF0KSB7XG4gIHtcbiAgICB7XG4gICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIgPiAxID8gX2xlbjIgLSAxIDogMCksIF9rZXkyID0gMTsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgICBhcmdzW19rZXkyIC0gMV0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgICAgfVxuXG4gICAgICBwcmludFdhcm5pbmcoJ2Vycm9yJywgZm9ybWF0LCBhcmdzKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJpbnRXYXJuaW5nKGxldmVsLCBmb3JtYXQsIGFyZ3MpIHtcbiAgLy8gV2hlbiBjaGFuZ2luZyB0aGlzIGxvZ2ljLCB5b3UgbWlnaHQgd2FudCB0byBhbHNvXG4gIC8vIHVwZGF0ZSBjb25zb2xlV2l0aFN0YWNrRGV2Lnd3dy5qcyBhcyB3ZWxsLlxuICB7XG4gICAgdmFyIFJlYWN0RGVidWdDdXJyZW50RnJhbWUgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdERlYnVnQ3VycmVudEZyYW1lO1xuICAgIHZhciBzdGFjayA9IFJlYWN0RGVidWdDdXJyZW50RnJhbWUuZ2V0U3RhY2tBZGRlbmR1bSgpO1xuXG4gICAgaWYgKHN0YWNrICE9PSAnJykge1xuICAgICAgZm9ybWF0ICs9ICclcyc7XG4gICAgICBhcmdzID0gYXJncy5jb25jYXQoW3N0YWNrXSk7XG4gICAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvc2FmZS1zdHJpbmctY29lcmNpb25cblxuXG4gICAgdmFyIGFyZ3NXaXRoRm9ybWF0ID0gYXJncy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBTdHJpbmcoaXRlbSk7XG4gICAgfSk7IC8vIENhcmVmdWw6IFJOIGN1cnJlbnRseSBkZXBlbmRzIG9uIHRoaXMgcHJlZml4XG5cbiAgICBhcmdzV2l0aEZvcm1hdC51bnNoaWZ0KCdXYXJuaW5nOiAnICsgZm9ybWF0KTsgLy8gV2UgaW50ZW50aW9uYWxseSBkb24ndCB1c2Ugc3ByZWFkIChvciAuYXBwbHkpIGRpcmVjdGx5IGJlY2F1c2UgaXRcbiAgICAvLyBicmVha3MgSUU5OiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzEzNjEwXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZ1xuXG4gICAgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoY29uc29sZVtsZXZlbF0sIGNvbnNvbGUsIGFyZ3NXaXRoRm9ybWF0KTtcbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG52YXIgZW5hYmxlU2NvcGVBUEkgPSBmYWxzZTsgLy8gRXhwZXJpbWVudGFsIENyZWF0ZSBFdmVudCBIYW5kbGUgQVBJLlxudmFyIGVuYWJsZUNhY2hlRWxlbWVudCA9IGZhbHNlO1xudmFyIGVuYWJsZVRyYW5zaXRpb25UcmFjaW5nID0gZmFsc2U7IC8vIE5vIGtub3duIGJ1Z3MsIGJ1dCBuZWVkcyBwZXJmb3JtYW5jZSB0ZXN0aW5nXG5cbnZhciBlbmFibGVMZWdhY3lIaWRkZW4gPSBmYWxzZTsgLy8gRW5hYmxlcyB1bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFjayBmZWF0dXJlIGluIEZpYmVyXG52YXIgZW5hYmxlUmVuZGVyYWJsZUNvbnRleHQgPSBmYWxzZTtcbi8vIHN0dWZmLiBJbnRlbmRlZCB0byBlbmFibGUgUmVhY3QgY29yZSBtZW1iZXJzIHRvIG1vcmUgZWFzaWx5IGRlYnVnIHNjaGVkdWxpbmdcbi8vIGlzc3VlcyBpbiBERVYgYnVpbGRzLlxuXG52YXIgZW5hYmxlRGVidWdUcmFjaW5nID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGdldFdyYXBwZWROYW1lKG91dGVyVHlwZSwgaW5uZXJUeXBlLCB3cmFwcGVyTmFtZSkge1xuICB2YXIgZGlzcGxheU5hbWUgPSBvdXRlclR5cGUuZGlzcGxheU5hbWU7XG5cbiAgaWYgKGRpc3BsYXlOYW1lKSB7XG4gICAgcmV0dXJuIGRpc3BsYXlOYW1lO1xuICB9XG5cbiAgdmFyIGZ1bmN0aW9uTmFtZSA9IGlubmVyVHlwZS5kaXNwbGF5TmFtZSB8fCBpbm5lclR5cGUubmFtZSB8fCAnJztcbiAgcmV0dXJuIGZ1bmN0aW9uTmFtZSAhPT0gJycgPyB3cmFwcGVyTmFtZSArIFwiKFwiICsgZnVuY3Rpb25OYW1lICsgXCIpXCIgOiB3cmFwcGVyTmFtZTtcbn0gLy8gS2VlcCBpbiBzeW5jIHdpdGggcmVhY3QtcmVjb25jaWxlci9nZXRDb21wb25lbnROYW1lRnJvbUZpYmVyXG5cblxuZnVuY3Rpb24gZ2V0Q29udGV4dE5hbWUodHlwZSkge1xuICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCAnQ29udGV4dCc7XG59XG5cbnZhciBSRUFDVF9DTElFTlRfUkVGRVJFTkNFJDIgPSBTeW1ib2wuZm9yKCdyZWFjdC5jbGllbnQucmVmZXJlbmNlJyk7IC8vIE5vdGUgdGhhdCB0aGUgcmVjb25jaWxlciBwYWNrYWdlIHNob3VsZCBnZW5lcmFsbHkgcHJlZmVyIHRvIHVzZSBnZXRDb21wb25lbnROYW1lRnJvbUZpYmVyKCkgaW5zdGVhZC5cblxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHtcbiAgaWYgKHR5cGUgPT0gbnVsbCkge1xuICAgIC8vIEhvc3Qgcm9vdCwgdGV4dCBub2RlIG9yIGp1c3QgaW52YWxpZCB0eXBlLlxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0NMSUVOVF9SRUZFUkVOQ0UkMikge1xuICAgICAgLy8gVE9ETzogQ3JlYXRlIGEgY29udmVudGlvbiBmb3IgbmFtaW5nIGNsaWVudCByZWZlcmVuY2VzIHdpdGggZGVidWcgaW5mby5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCBudWxsO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBSRUFDVF9GUkFHTUVOVF9UWVBFOlxuICAgICAgcmV0dXJuICdGcmFnbWVudCc7XG5cbiAgICBjYXNlIFJFQUNUX1BPUlRBTF9UWVBFOlxuICAgICAgcmV0dXJuICdQb3J0YWwnO1xuXG4gICAgY2FzZSBSRUFDVF9QUk9GSUxFUl9UWVBFOlxuICAgICAgcmV0dXJuICdQcm9maWxlcic7XG5cbiAgICBjYXNlIFJFQUNUX1NUUklDVF9NT0RFX1RZUEU6XG4gICAgICByZXR1cm4gJ1N0cmljdE1vZGUnO1xuXG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgcmV0dXJuICdTdXNwZW5zZSc7XG5cbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTpcbiAgICAgIHJldHVybiAnU3VzcGVuc2VMaXN0JztcblxuICAgIGNhc2UgUkVBQ1RfQ0FDSEVfVFlQRTpcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuICdDYWNoZSc7XG4gICAgICB9XG5cbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICB7XG4gICAgICBpZiAodHlwZW9mIHR5cGUudGFnID09PSAnbnVtYmVyJykge1xuICAgICAgICBlcnJvcignUmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBvYmplY3QgaW4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKCkuICcgKyAnVGhpcyBpcyBsaWtlbHkgYSBidWcgaW4gUmVhY3QuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaCAodHlwZS4kJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9QUk9WSURFUl9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIHByb3ZpZGVyID0gdHlwZTtcbiAgICAgICAgICByZXR1cm4gZ2V0Q29udGV4dE5hbWUocHJvdmlkZXIuX2NvbnRleHQpICsgJy5Qcm92aWRlcic7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBSRUFDVF9DT05URVhUX1RZUEU6XG4gICAgICAgIHZhciBjb250ZXh0ID0gdHlwZTtcblxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuIGdldENvbnRleHROYW1lKGNvbnRleHQpICsgJy5Db25zdW1lcic7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBSRUFDVF9DT05TVU1FUl9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICByZXR1cm4gZ2V0V3JhcHBlZE5hbWUodHlwZSwgdHlwZS5yZW5kZXIsICdGb3J3YXJkUmVmJyk7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICB2YXIgb3V0ZXJOYW1lID0gdHlwZS5kaXNwbGF5TmFtZSB8fCBudWxsO1xuXG4gICAgICAgIGlmIChvdXRlck5hbWUgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gb3V0ZXJOYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlLnR5cGUpIHx8ICdNZW1vJztcblxuICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgbGF6eUNvbXBvbmVudCA9IHR5cGU7XG4gICAgICAgICAgdmFyIHBheWxvYWQgPSBsYXp5Q29tcG9uZW50Ll9wYXlsb2FkO1xuICAgICAgICAgIHZhciBpbml0ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGluaXQocGF5bG9hZCkpO1xuICAgICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vLyAkRmxvd0ZpeE1lW21ldGhvZC11bmJpbmRpbmddXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcblxuLypcbiAqIFRoZSBgJycgKyB2YWx1ZWAgcGF0dGVybiAodXNlZCBpbiBwZXJmLXNlbnNpdGl2ZSBjb2RlKSB0aHJvd3MgZm9yIFN5bWJvbFxuICogYW5kIFRlbXBvcmFsLiogdHlwZXMuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC8yMjA2NC5cbiAqXG4gKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlIHdpbGwgdGhyb3cgYW4gZWFzaWVyLXRvLXVuZGVyc3RhbmQsXG4gKiBlYXNpZXItdG8tZGVidWcgZXhjZXB0aW9uIHdpdGggYSBjbGVhciBlcnJvcnMgbWVzc2FnZSBtZXNzYWdlIGV4cGxhaW5pbmcgdGhlXG4gKiBwcm9ibGVtLiAoSW5zdGVhZCBvZiBhIGNvbmZ1c2luZyBleGNlcHRpb24gdGhyb3duIGluc2lkZSB0aGUgaW1wbGVtZW50YXRpb25cbiAqIG9mIHRoZSBgdmFsdWVgIG9iamVjdCkuXG4gKi9cbi8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl0gb25seSBjYWxsZWQgaW4gREVWLCBzbyB2b2lkIHJldHVybiBpcyBub3QgcG9zc2libGUuXG5mdW5jdGlvbiB0eXBlTmFtZSh2YWx1ZSkge1xuICB7XG4gICAgLy8gdG9TdHJpbmdUYWcgaXMgbmVlZGVkIGZvciBuYW1lc3BhY2VkIHR5cGVzIGxpa2UgVGVtcG9yYWwuSW5zdGFudFxuICAgIHZhciBoYXNUb1N0cmluZ1RhZyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLnRvU3RyaW5nVGFnO1xuICAgIHZhciB0eXBlID0gaGFzVG9TdHJpbmdUYWcgJiYgdmFsdWVbU3ltYm9sLnRvU3RyaW5nVGFnXSB8fCB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lIHx8ICdPYmplY3QnOyAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dXG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxufSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dIG9ubHkgY2FsbGVkIGluIERFViwgc28gdm9pZCByZXR1cm4gaXMgbm90IHBvc3NpYmxlLlxuXG5cbmZ1bmN0aW9uIHdpbGxDb2VyY2lvblRocm93KHZhbHVlKSB7XG4gIHtcbiAgICB0cnkge1xuICAgICAgdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKSB7XG4gIC8vIElmIHlvdSBlbmRlZCB1cCBoZXJlIGJ5IGZvbGxvd2luZyBhbiBleGNlcHRpb24gY2FsbCBzdGFjaywgaGVyZSdzIHdoYXQnc1xuICAvLyBoYXBwZW5lZDogeW91IHN1cHBsaWVkIGFuIG9iamVjdCBvciBzeW1ib2wgdmFsdWUgdG8gUmVhY3QgKGFzIGEgcHJvcCwga2V5LFxuICAvLyBET00gYXR0cmlidXRlLCBDU1MgcHJvcGVydHksIHN0cmluZyByZWYsIGV0Yy4pIGFuZCB3aGVuIFJlYWN0IHRyaWVkIHRvXG4gIC8vIGNvZXJjZSBpdCB0byBhIHN0cmluZyB1c2luZyBgJycgKyB2YWx1ZWAsIGFuIGV4Y2VwdGlvbiB3YXMgdGhyb3duLlxuICAvL1xuICAvLyBUaGUgbW9zdCBjb21tb24gdHlwZXMgdGhhdCB3aWxsIGNhdXNlIHRoaXMgZXhjZXB0aW9uIGFyZSBgU3ltYm9sYCBpbnN0YW5jZXNcbiAgLy8gYW5kIFRlbXBvcmFsIG9iamVjdHMgbGlrZSBgVGVtcG9yYWwuSW5zdGFudGAuIEJ1dCBhbnkgb2JqZWN0IHRoYXQgaGFzIGFcbiAgLy8gYHZhbHVlT2ZgIG9yIGBbU3ltYm9sLnRvUHJpbWl0aXZlXWAgbWV0aG9kIHRoYXQgdGhyb3dzIHdpbGwgYWxzbyBjYXVzZSB0aGlzXG4gIC8vIGV4Y2VwdGlvbi4gKExpYnJhcnkgYXV0aG9ycyBkbyB0aGlzIHRvIHByZXZlbnQgdXNlcnMgZnJvbSB1c2luZyBidWlsdC1pblxuICAvLyBudW1lcmljIG9wZXJhdG9ycyBsaWtlIGArYCBvciBjb21wYXJpc29uIG9wZXJhdG9ycyBsaWtlIGA+PWAgYmVjYXVzZSBjdXN0b21cbiAgLy8gbWV0aG9kcyBhcmUgbmVlZGVkIHRvIHBlcmZvcm0gYWNjdXJhdGUgYXJpdGhtZXRpYyBvciBjb21wYXJpc29uLilcbiAgLy9cbiAgLy8gVG8gZml4IHRoZSBwcm9ibGVtLCBjb2VyY2UgdGhpcyBvYmplY3Qgb3Igc3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIGJlZm9yZVxuICAvLyBwYXNzaW5nIGl0IHRvIFJlYWN0LiBUaGUgbW9zdCByZWxpYWJsZSB3YXkgaXMgdXN1YWxseSBgU3RyaW5nKHZhbHVlKWAuXG4gIC8vXG4gIC8vIFRvIGZpbmQgd2hpY2ggdmFsdWUgaXMgdGhyb3dpbmcsIGNoZWNrIHRoZSBicm93c2VyIG9yIGRlYnVnZ2VyIGNvbnNvbGUuXG4gIC8vIEJlZm9yZSB0aGlzIGV4Y2VwdGlvbiB3YXMgdGhyb3duLCB0aGVyZSBzaG91bGQgYmUgYGNvbnNvbGUuZXJyb3JgIG91dHB1dFxuICAvLyB0aGF0IHNob3dzIHRoZSB0eXBlIChTeW1ib2wsIFRlbXBvcmFsLlBsYWluRGF0ZSwgZXRjLikgdGhhdCBjYXVzZWQgdGhlXG4gIC8vIHByb2JsZW0gYW5kIGhvdyB0aGF0IHR5cGUgd2FzIHVzZWQ6IGtleSwgYXRycmlidXRlLCBpbnB1dCB2YWx1ZSBwcm9wLCBldGMuXG4gIC8vIEluIG1vc3QgY2FzZXMsIHRoaXMgY29uc29sZSBvdXRwdXQgYWxzbyBzaG93cyB0aGUgY29tcG9uZW50IGFuZCBpdHNcbiAgLy8gYW5jZXN0b3IgY29tcG9uZW50cyB3aGVyZSB0aGUgZXhjZXB0aW9uIGhhcHBlbmVkLlxuICAvL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvc2FmZS1zdHJpbmctY29lcmNpb25cbiAgcmV0dXJuICcnICsgdmFsdWU7XG59XG5mdW5jdGlvbiBjaGVja0tleVN0cmluZ0NvZXJjaW9uKHZhbHVlKSB7XG4gIHtcbiAgICBpZiAod2lsbENvZXJjaW9uVGhyb3codmFsdWUpKSB7XG4gICAgICBlcnJvcignVGhlIHByb3ZpZGVkIGtleSBpcyBhbiB1bnN1cHBvcnRlZCB0eXBlICVzLicgKyAnIFRoaXMgdmFsdWUgbXVzdCBiZSBjb2VyY2VkIHRvIGEgc3RyaW5nIGJlZm9yZSB1c2luZyBpdCBoZXJlLicsIHR5cGVOYW1lKHZhbHVlKSk7XG5cbiAgICAgIHJldHVybiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpOyAvLyB0aHJvdyAodG8gaGVscCBjYWxsZXJzIGZpbmQgdHJvdWJsZXNob290aW5nIGNvbW1lbnRzKVxuICAgIH1cbiAgfVxufVxuXG52YXIgUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSQxID0gU3ltYm9sLmZvcigncmVhY3QuY2xpZW50LnJlZmVyZW5jZScpO1xuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpIHtcbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIE5vdGU6IHR5cGVvZiBtaWdodCBiZSBvdGhlciB0aGFuICdzeW1ib2wnIG9yICdudW1iZXInIChlLmcuIGlmIGl0J3MgYSBwb2x5ZmlsbCkuXG5cblxuICBpZiAodHlwZSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9QUk9GSUxFUl9UWVBFIHx8IGVuYWJsZURlYnVnVHJhY2luZyAgfHwgdHlwZSA9PT0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSB8fCBlbmFibGVMZWdhY3lIaWRkZW4gIHx8IHR5cGUgPT09IFJFQUNUX09GRlNDUkVFTl9UWVBFIHx8IGVuYWJsZVNjb3BlQVBJICB8fCBlbmFibGVDYWNoZUVsZW1lbnQgIHx8IGVuYWJsZVRyYW5zaXRpb25UcmFjaW5nICkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9PSBudWxsKSB7XG4gICAgaWYgKHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9NRU1PX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX1BST1ZJREVSX1RZUEUgfHwgZW5hYmxlUmVuZGVyYWJsZUNvbnRleHQgIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgfHwgLy8gVGhpcyBuZWVkcyB0byBpbmNsdWRlIGFsbCBwb3NzaWJsZSBtb2R1bGUgcmVmZXJlbmNlIG9iamVjdFxuICAgIC8vIHR5cGVzIHN1cHBvcnRlZCBieSBhbnkgRmxpZ2h0IGNvbmZpZ3VyYXRpb24gYW55d2hlcmUgc2luY2VcbiAgICAvLyB3ZSBkb24ndCBrbm93IHdoaWNoIEZsaWdodCBidWlsZCB0aGlzIHdpbGwgZW5kIHVwIGJlaW5nIHVzZWRcbiAgICAvLyB3aXRoLlxuICAgIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0NMSUVOVF9SRUZFUkVOQ0UkMSB8fCB0eXBlLmdldE1vZHVsZUlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxudmFyIGlzQXJyYXlJbXBsID0gQXJyYXkuaXNBcnJheTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlZGVjbGFyZVxuXG5mdW5jdGlvbiBpc0FycmF5KGEpIHtcbiAgcmV0dXJuIGlzQXJyYXlJbXBsKGEpO1xufVxuXG4vLyBIZWxwZXJzIHRvIHBhdGNoIGNvbnNvbGUubG9ncyB0byBhdm9pZCBsb2dnaW5nIGR1cmluZyBzaWRlLWVmZmVjdCBmcmVlXG4vLyByZXBsYXlpbmcgb24gcmVuZGVyIGZ1bmN0aW9uLiBUaGlzIGN1cnJlbnRseSBvbmx5IHBhdGNoZXMgdGhlIG9iamVjdFxuLy8gbGF6aWx5IHdoaWNoIHdvbid0IGNvdmVyIGlmIHRoZSBsb2cgZnVuY3Rpb24gd2FzIGV4dHJhY3RlZCBlYWdlcmx5LlxuLy8gV2UgY291bGQgYWxzbyBlYWdlcmx5IHBhdGNoIHRoZSBtZXRob2QuXG52YXIgZGlzYWJsZWREZXB0aCA9IDA7XG52YXIgcHJldkxvZztcbnZhciBwcmV2SW5mbztcbnZhciBwcmV2V2FybjtcbnZhciBwcmV2RXJyb3I7XG52YXIgcHJldkdyb3VwO1xudmFyIHByZXZHcm91cENvbGxhcHNlZDtcbnZhciBwcmV2R3JvdXBFbmQ7XG5cbmZ1bmN0aW9uIGRpc2FibGVkTG9nKCkge31cblxuZGlzYWJsZWRMb2cuX19yZWFjdERpc2FibGVkTG9nID0gdHJ1ZTtcbmZ1bmN0aW9uIGRpc2FibGVMb2dzKCkge1xuICB7XG4gICAgaWYgKGRpc2FibGVkRGVwdGggPT09IDApIHtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgICAgcHJldkxvZyA9IGNvbnNvbGUubG9nO1xuICAgICAgcHJldkluZm8gPSBjb25zb2xlLmluZm87XG4gICAgICBwcmV2V2FybiA9IGNvbnNvbGUud2FybjtcbiAgICAgIHByZXZFcnJvciA9IGNvbnNvbGUuZXJyb3I7XG4gICAgICBwcmV2R3JvdXAgPSBjb25zb2xlLmdyb3VwO1xuICAgICAgcHJldkdyb3VwQ29sbGFwc2VkID0gY29uc29sZS5ncm91cENvbGxhcHNlZDtcbiAgICAgIHByZXZHcm91cEVuZCA9IGNvbnNvbGUuZ3JvdXBFbmQ7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTkwOTlcblxuICAgICAgdmFyIHByb3BzID0ge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBkaXNhYmxlZExvZyxcbiAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgIH07IC8vICRGbG93Rml4TWVbY2Fubm90LXdyaXRlXSBGbG93IHRoaW5rcyBjb25zb2xlIGlzIGltbXV0YWJsZS5cblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoY29uc29sZSwge1xuICAgICAgICBpbmZvOiBwcm9wcyxcbiAgICAgICAgbG9nOiBwcm9wcyxcbiAgICAgICAgd2FybjogcHJvcHMsXG4gICAgICAgIGVycm9yOiBwcm9wcyxcbiAgICAgICAgZ3JvdXA6IHByb3BzLFxuICAgICAgICBncm91cENvbGxhcHNlZDogcHJvcHMsXG4gICAgICAgIGdyb3VwRW5kOiBwcm9wc1xuICAgICAgfSk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgIH1cblxuICAgIGRpc2FibGVkRGVwdGgrKztcbiAgfVxufVxuZnVuY3Rpb24gcmVlbmFibGVMb2dzKCkge1xuICB7XG4gICAgZGlzYWJsZWREZXB0aC0tO1xuXG4gICAgaWYgKGRpc2FibGVkRGVwdGggPT09IDApIHtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgICAgdmFyIHByb3BzID0ge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICB9OyAvLyAkRmxvd0ZpeE1lW2Nhbm5vdC13cml0ZV0gRmxvdyB0aGlua3MgY29uc29sZSBpcyBpbW11dGFibGUuXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGNvbnNvbGUsIHtcbiAgICAgICAgbG9nOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZMb2dcbiAgICAgICAgfSksXG4gICAgICAgIGluZm86IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkluZm9cbiAgICAgICAgfSksXG4gICAgICAgIHdhcm46IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldldhcm5cbiAgICAgICAgfSksXG4gICAgICAgIGVycm9yOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZFcnJvclxuICAgICAgICB9KSxcbiAgICAgICAgZ3JvdXA6IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkdyb3VwXG4gICAgICAgIH0pLFxuICAgICAgICBncm91cENvbGxhcHNlZDogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2R3JvdXBDb2xsYXBzZWRcbiAgICAgICAgfSksXG4gICAgICAgIGdyb3VwRW5kOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZHcm91cEVuZFxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgIH1cblxuICAgIGlmIChkaXNhYmxlZERlcHRoIDwgMCkge1xuICAgICAgZXJyb3IoJ2Rpc2FibGVkRGVwdGggZmVsbCBiZWxvdyB6ZXJvLiAnICsgJ1RoaXMgaXMgYSBidWcgaW4gUmVhY3QuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLicpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgUmVhY3RDdXJyZW50RGlzcGF0Y2hlciA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0Q3VycmVudERpc3BhdGNoZXI7XG52YXIgcHJlZml4O1xuZnVuY3Rpb24gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUobmFtZSwgb3duZXJGbikge1xuICB7XG4gICAgaWYgKHByZWZpeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBFeHRyYWN0IHRoZSBWTSBzcGVjaWZpYyBwcmVmaXggdXNlZCBieSBlYWNoIGxpbmUuXG4gICAgICB0cnkge1xuICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICB2YXIgbWF0Y2ggPSB4LnN0YWNrLnRyaW0oKS5tYXRjaCgvXFxuKCAqKGF0ICk/KS8pO1xuICAgICAgICBwcmVmaXggPSBtYXRjaCAmJiBtYXRjaFsxXSB8fCAnJztcbiAgICAgIH1cbiAgICB9IC8vIFdlIHVzZSB0aGUgcHJlZml4IHRvIGVuc3VyZSBvdXIgc3RhY2tzIGxpbmUgdXAgd2l0aCBuYXRpdmUgc3RhY2sgZnJhbWVzLlxuXG5cbiAgICByZXR1cm4gJ1xcbicgKyBwcmVmaXggKyBuYW1lO1xuICB9XG59XG52YXIgcmVlbnRyeSA9IGZhbHNlO1xudmFyIGNvbXBvbmVudEZyYW1lQ2FjaGU7XG5cbntcbiAgdmFyIFBvc3NpYmx5V2Vha01hcCA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nID8gV2Vha01hcCA6IE1hcDtcbiAgY29tcG9uZW50RnJhbWVDYWNoZSA9IG5ldyBQb3NzaWJseVdlYWtNYXAoKTtcbn1cbi8qKlxuICogTGV2ZXJhZ2VzIG5hdGl2ZSBicm93c2VyL1ZNIHN0YWNrIGZyYW1lcyB0byBnZXQgcHJvcGVyIGRldGFpbHMgKGUuZy5cbiAqIGZpbGVuYW1lLCBsaW5lICsgY29sIG51bWJlcikgZm9yIGEgc2luZ2xlIGNvbXBvbmVudCBpbiBhIGNvbXBvbmVudCBzdGFjay4gV2VcbiAqIGRvIHRoaXMgYnk6XG4gKiAgICgxKSB0aHJvd2luZyBhbmQgY2F0Y2hpbmcgYW4gZXJyb3IgaW4gdGhlIGZ1bmN0aW9uIC0gdGhpcyB3aWxsIGJlIG91clxuICogICAgICAgY29udHJvbCBlcnJvci5cbiAqICAgKDIpIGNhbGxpbmcgdGhlIGNvbXBvbmVudCB3aGljaCB3aWxsIGV2ZW50dWFsbHkgdGhyb3cgYW4gZXJyb3IgdGhhdCB3ZSdsbFxuICogICAgICAgY2F0Y2ggLSB0aGlzIHdpbGwgYmUgb3VyIHNhbXBsZSBlcnJvci5cbiAqICAgKDMpIGRpZmZpbmcgdGhlIGNvbnRyb2wgYW5kIHNhbXBsZSBlcnJvciBzdGFja3MgdG8gZmluZCB0aGUgc3RhY2sgZnJhbWVcbiAqICAgICAgIHdoaWNoIHJlcHJlc2VudHMgb3VyIGNvbXBvbmVudC5cbiAqL1xuXG5cbmZ1bmN0aW9uIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUoZm4sIGNvbnN0cnVjdCkge1xuICAvLyBJZiBzb21ldGhpbmcgYXNrZWQgZm9yIGEgc3RhY2sgaW5zaWRlIGEgZmFrZSByZW5kZXIsIGl0IHNob3VsZCBnZXQgaWdub3JlZC5cbiAgaWYgKCFmbiB8fCByZWVudHJ5KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAge1xuICAgIHZhciBmcmFtZSA9IGNvbXBvbmVudEZyYW1lQ2FjaGUuZ2V0KGZuKTtcblxuICAgIGlmIChmcmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZnJhbWU7XG4gICAgfVxuICB9XG5cbiAgcmVlbnRyeSA9IHRydWU7XG4gIHZhciBwcmV2aW91c1ByZXBhcmVTdGFja1RyYWNlID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXR5cGVdIEl0IGRvZXMgYWNjZXB0IHVuZGVmaW5lZC5cblxuICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHVuZGVmaW5lZDtcbiAgdmFyIHByZXZpb3VzRGlzcGF0Y2hlcjtcblxuICB7XG4gICAgcHJldmlvdXNEaXNwYXRjaGVyID0gUmVhY3RDdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50OyAvLyBTZXQgdGhlIGRpc3BhdGNoZXIgaW4gREVWIGJlY2F1c2UgdGhpcyBtaWdodCBiZSBjYWxsIGluIHRoZSByZW5kZXIgZnVuY3Rpb25cbiAgICAvLyBmb3Igd2FybmluZ3MuXG5cbiAgICBSZWFjdEN1cnJlbnREaXNwYXRjaGVyLmN1cnJlbnQgPSBudWxsO1xuICAgIGRpc2FibGVMb2dzKCk7XG4gIH1cbiAgLyoqXG4gICAqIEZpbmRpbmcgYSBjb21tb24gc3RhY2sgZnJhbWUgYmV0d2VlbiBzYW1wbGUgYW5kIGNvbnRyb2wgZXJyb3JzIGNhbiBiZVxuICAgKiB0cmlja3kgZ2l2ZW4gdGhlIGRpZmZlcmVudCB0eXBlcyBhbmQgbGV2ZWxzIG9mIHN0YWNrIHRyYWNlIHRydW5jYXRpb24gZnJvbVxuICAgKiBkaWZmZXJlbnQgSlMgVk1zLiBTbyBpbnN0ZWFkIHdlJ2xsIGF0dGVtcHQgdG8gY29udHJvbCB3aGF0IHRoYXQgY29tbW9uXG4gICAqIGZyYW1lIHNob3VsZCBiZSB0aHJvdWdoIHRoaXMgb2JqZWN0IG1ldGhvZDpcbiAgICogSGF2aW5nIGJvdGggdGhlIHNhbXBsZSBhbmQgY29udHJvbCBlcnJvcnMgYmUgaW4gdGhlIGZ1bmN0aW9uIHVuZGVyIHRoZVxuICAgKiBgRGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZVJvb3RgIHByb3BlcnR5LCArIHNldHRpbmcgdGhlIGBuYW1lYCBhbmRcbiAgICogYGRpc3BsYXlOYW1lYCBwcm9wZXJ0aWVzIG9mIHRoZSBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgYSBzdGFja1xuICAgKiBmcmFtZSBleGlzdHMgdGhhdCBoYXMgdGhlIG1ldGhvZCBuYW1lIGBEZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lUm9vdGAgaW5cbiAgICogaXQgZm9yIGJvdGggY29udHJvbCBhbmQgc2FtcGxlIHN0YWNrcy5cbiAgICovXG5cblxuICB2YXIgUnVuSW5Sb290RnJhbWUgPSB7XG4gICAgRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290OiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgY29udHJvbDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyBzaG91bGQgdGhyb3cuXG4gICAgICAgIGlmIChjb25zdHJ1Y3QpIHtcbiAgICAgICAgICAvLyBTb21ldGhpbmcgc2hvdWxkIGJlIHNldHRpbmcgdGhlIHByb3BzIGluIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICB2YXIgRmFrZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICAgICAgfTsgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG5cblxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGYWtlLnByb3RvdHlwZSwgJ3Byb3BzJywge1xuICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIC8vIFdlIHVzZSBhIHRocm93aW5nIHNldHRlciBpbnN0ZWFkIG9mIGZyb3plbiBvciBub24td3JpdGFibGUgcHJvcHNcbiAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGF0IHdvbid0IHRocm93IGluIGEgbm9uLXN0cmljdCBtb2RlIGZ1bmN0aW9uLlxuICAgICAgICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSAnb2JqZWN0JyAmJiBSZWZsZWN0LmNvbnN0cnVjdCkge1xuICAgICAgICAgICAgLy8gV2UgY29uc3RydWN0IGEgZGlmZmVyZW50IGNvbnRyb2wgZm9yIHRoaXMgY2FzZSB0byBpbmNsdWRlIGFueSBleHRyYVxuICAgICAgICAgICAgLy8gZnJhbWVzIGFkZGVkIGJ5IHRoZSBjb25zdHJ1Y3QgY2FsbC5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIFJlZmxlY3QuY29uc3RydWN0KEZha2UsIFtdKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgICAgY29udHJvbCA9IHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFJlZmxlY3QuY29uc3RydWN0KGZuLCBbXSwgRmFrZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIEZha2UuY2FsbCgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgICBjb250cm9sID0geDtcbiAgICAgICAgICAgIH0gLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddIGZvdW5kIHdoZW4gdXBncmFkaW5nIEZsb3dcblxuXG4gICAgICAgICAgICBmbi5jYWxsKEZha2UucHJvdG90eXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgY29udHJvbCA9IHg7XG4gICAgICAgICAgfSAvLyBUT0RPKGx1bmEpOiBUaGlzIHdpbGwgY3VycmVudGx5IG9ubHkgdGhyb3cgaWYgdGhlIGZ1bmN0aW9uIGNvbXBvbmVudFxuICAgICAgICAgIC8vIHRyaWVzIHRvIGFjY2VzcyBSZWFjdC9SZWFjdERPTS9wcm9wcy4gV2Ugc2hvdWxkIHByb2JhYmx5IG1ha2UgdGhpcyB0aHJvd1xuICAgICAgICAgIC8vIGluIHNpbXBsZSBjb21wb25lbnRzIHRvb1xuXG5cbiAgICAgICAgICB2YXIgbWF5YmVQcm9taXNlID0gZm4oKTsgLy8gSWYgdGhlIGZ1bmN0aW9uIGNvbXBvbmVudCByZXR1cm5zIGEgcHJvbWlzZSwgaXQncyBsaWtlbHkgYW4gYXN5bmNcbiAgICAgICAgICAvLyBjb21wb25lbnQsIHdoaWNoIHdlIGRvbid0IHlldCBzdXBwb3J0LiBBdHRhY2ggYSBub29wIGNhdGNoIGhhbmRsZXIgdG9cbiAgICAgICAgICAvLyBzaWxlbmNlIHRoZSBlcnJvci5cbiAgICAgICAgICAvLyBUT0RPOiBJbXBsZW1lbnQgY29tcG9uZW50IHN0YWNrcyBmb3IgYXN5bmMgY2xpZW50IGNvbXBvbmVudHM/XG5cbiAgICAgICAgICBpZiAobWF5YmVQcm9taXNlICYmIHR5cGVvZiBtYXliZVByb21pc2UuY2F0Y2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG1heWJlUHJvbWlzZS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChzYW1wbGUpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBpbmxpbmVkIG1hbnVhbGx5IGJlY2F1c2UgY2xvc3VyZSBkb2Vzbid0IGRvIGl0IGZvciB1cy5cbiAgICAgICAgaWYgKHNhbXBsZSAmJiBjb250cm9sICYmIHR5cGVvZiBzYW1wbGUuc3RhY2sgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIFtzYW1wbGUuc3RhY2ssIGNvbnRyb2wuc3RhY2tdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07XG4gICAgfVxuICB9OyAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cblxuICBSdW5JblJvb3RGcmFtZS5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QuZGlzcGxheU5hbWUgPSAnRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290JztcbiAgdmFyIG5hbWVQcm9wRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUnVuSW5Sb290RnJhbWUuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290LCAnbmFtZScpOyAvLyBCZWZvcmUgRVM2LCB0aGUgYG5hbWVgIHByb3BlcnR5IHdhcyBub3QgY29uZmlndXJhYmxlLlxuXG4gIGlmIChuYW1lUHJvcERlc2NyaXB0b3IgJiYgbmFtZVByb3BEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSkge1xuICAgIC8vIFY4IHV0aWxpemVzIGEgZnVuY3Rpb24ncyBgbmFtZWAgcHJvcGVydHkgd2hlbiBnZW5lcmF0aW5nIGEgc3RhY2sgdHJhY2UuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJ1bkluUm9vdEZyYW1lLkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCwgLy8gQ29uZmlndXJhYmxlIHByb3BlcnRpZXMgY2FuIGJlIHVwZGF0ZWQgZXZlbiBpZiBpdHMgd3JpdGFibGUgZGVzY3JpcHRvclxuICAgIC8vIGlzIHNldCB0byBgZmFsc2VgLlxuICAgIC8vICRGbG93Rml4TWVbY2Fubm90LXdyaXRlXVxuICAgICduYW1lJywge1xuICAgICAgdmFsdWU6ICdEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QnXG4gICAgfSk7XG4gIH1cblxuICB0cnkge1xuICAgIHZhciBfUnVuSW5Sb290RnJhbWUkRGV0ZXIgPSBSdW5JblJvb3RGcmFtZS5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QoKSxcbiAgICAgICAgc2FtcGxlU3RhY2sgPSBfUnVuSW5Sb290RnJhbWUkRGV0ZXJbMF0sXG4gICAgICAgIGNvbnRyb2xTdGFjayA9IF9SdW5JblJvb3RGcmFtZSREZXRlclsxXTtcblxuICAgIGlmIChzYW1wbGVTdGFjayAmJiBjb250cm9sU3RhY2spIHtcbiAgICAgIC8vIFRoaXMgZXh0cmFjdHMgdGhlIGZpcnN0IGZyYW1lIGZyb20gdGhlIHNhbXBsZSB0aGF0IGlzbid0IGFsc28gaW4gdGhlIGNvbnRyb2wuXG4gICAgICAvLyBTa2lwcGluZyBvbmUgZnJhbWUgdGhhdCB3ZSBhc3N1bWUgaXMgdGhlIGZyYW1lIHRoYXQgY2FsbHMgdGhlIHR3by5cbiAgICAgIHZhciBzYW1wbGVMaW5lcyA9IHNhbXBsZVN0YWNrLnNwbGl0KCdcXG4nKTtcbiAgICAgIHZhciBjb250cm9sTGluZXMgPSBjb250cm9sU3RhY2suc3BsaXQoJ1xcbicpO1xuICAgICAgdmFyIHMgPSAwO1xuICAgICAgdmFyIGMgPSAwO1xuXG4gICAgICB3aGlsZSAocyA8IHNhbXBsZUxpbmVzLmxlbmd0aCAmJiAhc2FtcGxlTGluZXNbc10uaW5jbHVkZXMoJ0RldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCcpKSB7XG4gICAgICAgIHMrKztcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKGMgPCBjb250cm9sTGluZXMubGVuZ3RoICYmICFjb250cm9sTGluZXNbY10uaW5jbHVkZXMoJ0RldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCcpKSB7XG4gICAgICAgIGMrKztcbiAgICAgIH0gLy8gV2UgY291bGRuJ3QgZmluZCBvdXIgaW50ZW50aW9uYWxseSBpbmplY3RlZCBjb21tb24gcm9vdCBmcmFtZSwgYXR0ZW1wdFxuICAgICAgLy8gdG8gZmluZCBhbm90aGVyIGNvbW1vbiByb290IGZyYW1lIGJ5IHNlYXJjaCBmcm9tIHRoZSBib3R0b20gb2YgdGhlXG4gICAgICAvLyBjb250cm9sIHN0YWNrLi4uXG5cblxuICAgICAgaWYgKHMgPT09IHNhbXBsZUxpbmVzLmxlbmd0aCB8fCBjID09PSBjb250cm9sTGluZXMubGVuZ3RoKSB7XG4gICAgICAgIHMgPSBzYW1wbGVMaW5lcy5sZW5ndGggLSAxO1xuICAgICAgICBjID0gY29udHJvbExpbmVzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgd2hpbGUgKHMgPj0gMSAmJiBjID49IDAgJiYgc2FtcGxlTGluZXNbc10gIT09IGNvbnRyb2xMaW5lc1tjXSkge1xuICAgICAgICAgIC8vIFdlIGV4cGVjdCBhdCBsZWFzdCBvbmUgc3RhY2sgZnJhbWUgdG8gYmUgc2hhcmVkLlxuICAgICAgICAgIC8vIFR5cGljYWxseSB0aGlzIHdpbGwgYmUgdGhlIHJvb3QgbW9zdCBvbmUuIEhvd2V2ZXIsIHN0YWNrIGZyYW1lcyBtYXkgYmVcbiAgICAgICAgICAvLyBjdXQgb2ZmIGR1ZSB0byBtYXhpbXVtIHN0YWNrIGxpbWl0cy4gSW4gdGhpcyBjYXNlLCBvbmUgbWF5YmUgY3V0IG9mZlxuICAgICAgICAgIC8vIGVhcmxpZXIgdGhhbiB0aGUgb3RoZXIuIFdlIGFzc3VtZSB0aGF0IHRoZSBzYW1wbGUgaXMgbG9uZ2VyIG9yIHRoZSBzYW1lXG4gICAgICAgICAgLy8gYW5kIHRoZXJlIGZvciBjdXQgb2ZmIGVhcmxpZXIuIFNvIHdlIHNob3VsZCBmaW5kIHRoZSByb290IG1vc3QgZnJhbWUgaW5cbiAgICAgICAgICAvLyB0aGUgc2FtcGxlIHNvbWV3aGVyZSBpbiB0aGUgY29udHJvbC5cbiAgICAgICAgICBjLS07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICg7IHMgPj0gMSAmJiBjID49IDA7IHMtLSwgYy0tKSB7XG4gICAgICAgIC8vIE5leHQgd2UgZmluZCB0aGUgZmlyc3Qgb25lIHRoYXQgaXNuJ3QgdGhlIHNhbWUgd2hpY2ggc2hvdWxkIGJlIHRoZVxuICAgICAgICAvLyBmcmFtZSB0aGF0IGNhbGxlZCBvdXIgc2FtcGxlIGZ1bmN0aW9uIGFuZCB0aGUgY29udHJvbC5cbiAgICAgICAgaWYgKHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcbiAgICAgICAgICAvLyBJbiBWOCwgdGhlIGZpcnN0IGxpbmUgaXMgZGVzY3JpYmluZyB0aGUgbWVzc2FnZSBidXQgb3RoZXIgVk1zIGRvbid0LlxuICAgICAgICAgIC8vIElmIHdlJ3JlIGFib3V0IHRvIHJldHVybiB0aGUgZmlyc3QgbGluZSwgYW5kIHRoZSBjb250cm9sIGlzIGFsc28gb24gdGhlIHNhbWVcbiAgICAgICAgICAvLyBsaW5lLCB0aGF0J3MgYSBwcmV0dHkgZ29vZCBpbmRpY2F0b3IgdGhhdCBvdXIgc2FtcGxlIHRocmV3IGF0IHNhbWUgbGluZSBhc1xuICAgICAgICAgIC8vIHRoZSBjb250cm9sLiBJLmUuIGJlZm9yZSB3ZSBlbnRlcmVkIHRoZSBzYW1wbGUgZnJhbWUuIFNvIHdlIGlnbm9yZSB0aGlzIHJlc3VsdC5cbiAgICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgeW91IHBhc3NlZCBhIGNsYXNzIHRvIGZ1bmN0aW9uIGNvbXBvbmVudCwgb3Igbm9uLWZ1bmN0aW9uLlxuICAgICAgICAgIGlmIChzICE9PSAxIHx8IGMgIT09IDEpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgcy0tO1xuICAgICAgICAgICAgICBjLS07IC8vIFdlIG1heSBzdGlsbCBoYXZlIHNpbWlsYXIgaW50ZXJtZWRpYXRlIGZyYW1lcyBmcm9tIHRoZSBjb25zdHJ1Y3QgY2FsbC5cbiAgICAgICAgICAgICAgLy8gVGhlIG5leHQgb25lIHRoYXQgaXNuJ3QgdGhlIHNhbWUgc2hvdWxkIGJlIG91ciBtYXRjaCB0aG91Z2guXG5cbiAgICAgICAgICAgICAgaWYgKGMgPCAwIHx8IHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcbiAgICAgICAgICAgICAgICAvLyBWOCBhZGRzIGEgXCJuZXdcIiBwcmVmaXggZm9yIG5hdGl2ZSBjbGFzc2VzLiBMZXQncyByZW1vdmUgaXQgdG8gbWFrZSBpdCBwcmV0dGllci5cbiAgICAgICAgICAgICAgICB2YXIgX2ZyYW1lID0gJ1xcbicgKyBzYW1wbGVMaW5lc1tzXS5yZXBsYWNlKCcgYXQgbmV3ICcsICcgYXQgJyk7IC8vIElmIG91ciBjb21wb25lbnQgZnJhbWUgaXMgbGFiZWxlZCBcIjxhbm9ueW1vdXM+XCJcbiAgICAgICAgICAgICAgICAvLyBidXQgd2UgaGF2ZSBhIHVzZXItcHJvdmlkZWQgXCJkaXNwbGF5TmFtZVwiXG4gICAgICAgICAgICAgICAgLy8gc3BsaWNlIGl0IGluIHRvIG1ha2UgdGhlIHN0YWNrIG1vcmUgcmVhZGFibGUuXG5cblxuICAgICAgICAgICAgICAgIGlmIChmbi5kaXNwbGF5TmFtZSAmJiBfZnJhbWUuaW5jbHVkZXMoJzxhbm9ueW1vdXM+JykpIHtcbiAgICAgICAgICAgICAgICAgIF9mcmFtZSA9IF9mcmFtZS5yZXBsYWNlKCc8YW5vbnltb3VzPicsIGZuLmRpc3BsYXlOYW1lKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgX2ZyYW1lKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IC8vIFJldHVybiB0aGUgbGluZSB3ZSBmb3VuZC5cblxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9mcmFtZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB3aGlsZSAocyA+PSAxICYmIGMgPj0gMCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgcmVlbnRyeSA9IGZhbHNlO1xuXG4gICAge1xuICAgICAgUmVhY3RDdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50ID0gcHJldmlvdXNEaXNwYXRjaGVyO1xuICAgICAgcmVlbmFibGVMb2dzKCk7XG4gICAgfVxuXG4gICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBwcmV2aW91c1ByZXBhcmVTdGFja1RyYWNlO1xuICB9IC8vIEZhbGxiYWNrIHRvIGp1c3QgdXNpbmcgdGhlIG5hbWUgaWYgd2UgY291bGRuJ3QgbWFrZSBpdCB0aHJvdy5cblxuXG4gIHZhciBuYW1lID0gZm4gPyBmbi5kaXNwbGF5TmFtZSB8fCBmbi5uYW1lIDogJyc7XG4gIHZhciBzeW50aGV0aWNGcmFtZSA9IG5hbWUgPyBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShuYW1lKSA6ICcnO1xuXG4gIHtcbiAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgc3ludGhldGljRnJhbWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzeW50aGV0aWNGcmFtZTtcbn1cbmZ1bmN0aW9uIGRlc2NyaWJlRnVuY3Rpb25Db21wb25lbnRGcmFtZShmbiwgb3duZXJGbikge1xuICB7XG4gICAgcmV0dXJuIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUoZm4sIGZhbHNlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzaG91bGRDb25zdHJ1Y3QoQ29tcG9uZW50KSB7XG4gIHZhciBwcm90b3R5cGUgPSBDb21wb25lbnQucHJvdG90eXBlO1xuICByZXR1cm4gISEocHJvdG90eXBlICYmIHByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50KTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKHR5cGUsIG93bmVyRm4pIHtcblxuICBpZiAodHlwZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAge1xuICAgICAgcmV0dXJuIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUodHlwZSwgc2hvdWxkQ29uc3RydWN0KHR5cGUpKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKHR5cGUpO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKCdTdXNwZW5zZScpO1xuXG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoJ1N1c3BlbnNlTGlzdCcpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0Jykge1xuICAgIHN3aXRjaCAodHlwZS4kJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICByZXR1cm4gZGVzY3JpYmVGdW5jdGlvbkNvbXBvbmVudEZyYW1lKHR5cGUucmVuZGVyKTtcblxuICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgIC8vIE1lbW8gbWF5IGNvbnRhaW4gYW55IGNvbXBvbmVudCB0eXBlIHNvIHdlIHJlY3Vyc2l2ZWx5IHJlc29sdmUgaXQuXG4gICAgICAgIHJldHVybiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYodHlwZS50eXBlLCBvd25lckZuKTtcblxuICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgbGF6eUNvbXBvbmVudCA9IHR5cGU7XG4gICAgICAgICAgdmFyIHBheWxvYWQgPSBsYXp5Q29tcG9uZW50Ll9wYXlsb2FkO1xuICAgICAgICAgIHZhciBpbml0ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBMYXp5IG1heSBjb250YWluIGFueSBjb21wb25lbnQgdHlwZSBzbyB3ZSByZWN1cnNpdmVseSByZXNvbHZlIGl0LlxuICAgICAgICAgICAgcmV0dXJuIGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihpbml0KHBheWxvYWQpLCBvd25lckZuKTtcbiAgICAgICAgICB9IGNhdGNoICh4KSB7fVxuICAgICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICcnO1xufVxuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdEN1cnJlbnRPd25lcjtcbnZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZTtcbnZhciBSRUFDVF9DTElFTlRfUkVGRVJFTkNFID0gU3ltYm9sLmZvcigncmVhY3QuY2xpZW50LnJlZmVyZW5jZScpO1xudmFyIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duO1xudmFyIHNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duO1xudmFyIGRpZFdhcm5BYm91dFN0cmluZ1JlZnM7XG5cbntcbiAgZGlkV2FybkFib3V0U3RyaW5nUmVmcyA9IHt9O1xufVxuXG5mdW5jdGlvbiBoYXNWYWxpZFJlZihjb25maWcpIHtcbiAge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ3JlZicpKSB7XG4gICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsICdyZWYnKS5nZXQ7XG5cbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uZmlnLnJlZiAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYXNWYWxpZEtleShjb25maWcpIHtcbiAge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ2tleScpKSB7XG4gICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsICdrZXknKS5nZXQ7XG5cbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uZmlnLmtleSAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB3YXJuSWZTdHJpbmdSZWZDYW5ub3RCZUF1dG9Db252ZXJ0ZWQoY29uZmlnLCBzZWxmKSB7XG4gIHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5yZWYgPT09ICdzdHJpbmcnICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgJiYgc2VsZiAmJiBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LnN0YXRlTm9kZSAhPT0gc2VsZikge1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC50eXBlKTtcblxuICAgICAgaWYgKCFkaWRXYXJuQWJvdXRTdHJpbmdSZWZzW2NvbXBvbmVudE5hbWVdKSB7XG4gICAgICAgIGVycm9yKCdDb21wb25lbnQgXCIlc1wiIGNvbnRhaW5zIHRoZSBzdHJpbmcgcmVmIFwiJXNcIi4gJyArICdTdXBwb3J0IGZvciBzdHJpbmcgcmVmcyB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgbWFqb3IgcmVsZWFzZS4gJyArICdUaGlzIGNhc2UgY2Fubm90IGJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIGFuIGFycm93IGZ1bmN0aW9uLiAnICsgJ1dlIGFzayB5b3UgdG8gbWFudWFsbHkgZml4IHRoaXMgY2FzZSBieSB1c2luZyB1c2VSZWYoKSBvciBjcmVhdGVSZWYoKSBpbnN0ZWFkLiAnICsgJ0xlYXJuIG1vcmUgYWJvdXQgdXNpbmcgcmVmcyBzYWZlbHkgaGVyZTogJyArICdodHRwczovL3JlYWN0anMub3JnL2xpbmsvc3RyaWN0LW1vZGUtc3RyaW5nLXJlZicsIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LnR5cGUpLCBjb25maWcucmVmKTtcblxuICAgICAgICBkaWRXYXJuQWJvdXRTdHJpbmdSZWZzW2NvbXBvbmVudE5hbWVdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7XG4gIHtcbiAgICB2YXIgd2FybkFib3V0QWNjZXNzaW5nS2V5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93bikge1xuICAgICAgICBzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93biA9IHRydWU7XG5cbiAgICAgICAgZXJyb3IoJyVzOiBga2V5YCBpcyBub3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3NwZWNpYWwtcHJvcHMpJywgZGlzcGxheU5hbWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkuaXNSZWFjdFdhcm5pbmcgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ2tleScsIHtcbiAgICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nS2V5LFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7XG4gIHtcbiAgICB7XG4gICAgICB2YXIgd2FybkFib3V0QWNjZXNzaW5nUmVmID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duKSB7XG4gICAgICAgICAgc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24gPSB0cnVlO1xuXG4gICAgICAgICAgZXJyb3IoJyVzOiBgcmVmYCBpcyBub3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3NwZWNpYWwtcHJvcHMpJywgZGlzcGxheU5hbWUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYuaXNSZWFjdFdhcm5pbmcgPSB0cnVlO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAncmVmJywge1xuICAgICAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ1JlZixcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbi8qKlxuICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEgbmV3IFJlYWN0IGVsZW1lbnQuIFRoaXMgbm8gbG9uZ2VyIGFkaGVyZXMgdG9cbiAqIHRoZSBjbGFzcyBwYXR0ZXJuLCBzbyBkbyBub3QgdXNlIG5ldyB0byBjYWxsIGl0LiBBbHNvLCBpbnN0YW5jZW9mIGNoZWNrXG4gKiB3aWxsIG5vdCB3b3JrLiBJbnN0ZWFkIHRlc3QgJCR0eXBlb2YgZmllbGQgYWdhaW5zdCBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykgdG8gY2hlY2tcbiAqIGlmIHNvbWV0aGluZyBpcyBhIFJlYWN0IEVsZW1lbnQuXG4gKlxuICogQHBhcmFtIHsqfSB0eXBlXG4gKiBAcGFyYW0geyp9IHByb3BzXG4gKiBAcGFyYW0geyp9IGtleVxuICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSByZWZcbiAqIEBwYXJhbSB7Kn0gb3duZXJcbiAqIEBwYXJhbSB7Kn0gc2VsZiBBICp0ZW1wb3JhcnkqIGhlbHBlciB0byBkZXRlY3QgcGxhY2VzIHdoZXJlIGB0aGlzYCBpc1xuICogZGlmZmVyZW50IGZyb20gdGhlIGBvd25lcmAgd2hlbiBSZWFjdC5jcmVhdGVFbGVtZW50IGlzIGNhbGxlZCwgc28gdGhhdCB3ZVxuICogY2FuIHdhcm4uIFdlIHdhbnQgdG8gZ2V0IHJpZCBvZiBvd25lciBhbmQgcmVwbGFjZSBzdHJpbmcgYHJlZmBzIHdpdGggYXJyb3dcbiAqIGZ1bmN0aW9ucywgYW5kIGFzIGxvbmcgYXMgYHRoaXNgIGFuZCBvd25lciBhcmUgdGhlIHNhbWUsIHRoZXJlIHdpbGwgYmUgbm9cbiAqIGNoYW5nZSBpbiBiZWhhdmlvci5cbiAqIEBwYXJhbSB7Kn0gc291cmNlIEFuIGFubm90YXRpb24gb2JqZWN0IChhZGRlZCBieSBhIHRyYW5zcGlsZXIgb3Igb3RoZXJ3aXNlKVxuICogaW5kaWNhdGluZyBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGFuZC9vciBvdGhlciBpbmZvcm1hdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG5cblxuZnVuY3Rpb24gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgX3JlZiwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpIHtcbiAgdmFyIHJlZjtcblxuICB7XG4gICAgcmVmID0gX3JlZjtcbiAgfVxuXG4gIHZhciBlbGVtZW50O1xuXG4gIHtcbiAgICAvLyBJbiBwcm9kLCBgcmVmYCBpcyBhIHJlZ3VsYXIgcHJvcGVydHkuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBhXG4gICAgLy8gZnV0dXJlIHJlbGVhc2UuXG4gICAgZWxlbWVudCA9IHtcbiAgICAgIC8vIFRoaXMgdGFnIGFsbG93cyB1cyB0byB1bmlxdWVseSBpZGVudGlmeSB0aGlzIGFzIGEgUmVhY3QgRWxlbWVudFxuICAgICAgJCR0eXBlb2Y6IFJFQUNUX0VMRU1FTlRfVFlQRSxcbiAgICAgIC8vIEJ1aWx0LWluIHByb3BlcnRpZXMgdGhhdCBiZWxvbmcgb24gdGhlIGVsZW1lbnRcbiAgICAgIHR5cGU6IHR5cGUsXG4gICAgICBrZXk6IGtleSxcbiAgICAgIHJlZjogcmVmLFxuICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgLy8gUmVjb3JkIHRoZSBjb21wb25lbnQgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoaXMgZWxlbWVudC5cbiAgICAgIF9vd25lcjogb3duZXJcbiAgICB9O1xuICB9XG5cbiAge1xuICAgIC8vIFRoZSB2YWxpZGF0aW9uIGZsYWcgaXMgY3VycmVudGx5IG11dGF0aXZlLiBXZSBwdXQgaXQgb25cbiAgICAvLyBhbiBleHRlcm5hbCBiYWNraW5nIHN0b3JlIHNvIHRoYXQgd2UgY2FuIGZyZWV6ZSB0aGUgd2hvbGUgb2JqZWN0LlxuICAgIC8vIFRoaXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBXZWFrTWFwIG9uY2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgaW5cbiAgICAvLyBjb21tb25seSB1c2VkIGRldmVsb3BtZW50IGVudmlyb25tZW50cy5cbiAgICBlbGVtZW50Ll9zdG9yZSA9IHt9OyAvLyBUbyBtYWtlIGNvbXBhcmluZyBSZWFjdEVsZW1lbnRzIGVhc2llciBmb3IgdGVzdGluZyBwdXJwb3Nlcywgd2UgbWFrZVxuICAgIC8vIHRoZSB2YWxpZGF0aW9uIGZsYWcgbm9uLWVudW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBzaG91bGRcbiAgICAvLyBpbmNsdWRlIGV2ZXJ5IGVudmlyb25tZW50IHdlIHJ1biB0ZXN0cyBpbiksIHNvIHRoZSB0ZXN0IGZyYW1ld29ya1xuICAgIC8vIGlnbm9yZXMgaXQuXG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5fc3RvcmUsICd2YWxpZGF0ZWQnLCB7XG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBmYWxzZVxuICAgIH0pOyAvLyBkZWJ1Z0luZm8gY29udGFpbnMgU2VydmVyIENvbXBvbmVudCBkZWJ1ZyBpbmZvcm1hdGlvbi5cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX2RlYnVnSW5mbycsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IG51bGxcbiAgICB9KTtcblxuICAgIGlmIChPYmplY3QuZnJlZXplKSB7XG4gICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQucHJvcHMpO1xuICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZWxlbWVudDtcbn1cbnZhciBkaWRXYXJuQWJvdXRLZXlTcHJlYWQgPSB7fTtcbi8qKlxuICogaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmZjcy9wdWxsLzEwN1xuICogQHBhcmFtIHsqfSB0eXBlXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAqL1xuXG5mdW5jdGlvbiBqc3hERVYkMSh0eXBlLCBjb25maWcsIG1heWJlS2V5LCBpc1N0YXRpY0NoaWxkcmVuLCBzb3VyY2UsIHNlbGYpIHtcbiAge1xuICAgIGlmICghaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpKSB7XG4gICAgICAvLyBUaGlzIGlzIGFuIGludmFsaWQgZWxlbWVudCB0eXBlLlxuICAgICAgLy9cbiAgICAgIC8vIFdlIHdhcm4gaW4gdGhpcyBjYXNlIGJ1dCBkb24ndCB0aHJvdy4gV2UgZXhwZWN0IHRoZSBlbGVtZW50IGNyZWF0aW9uIHRvXG4gICAgICAvLyBzdWNjZWVkIGFuZCB0aGVyZSB3aWxsIGxpa2VseSBiZSBlcnJvcnMgaW4gcmVuZGVyLlxuICAgICAgdmFyIGluZm8gPSAnJztcblxuICAgICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyh0eXBlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaW5mbyArPSAnIFlvdSBsaWtlbHkgZm9yZ290IHRvIGV4cG9ydCB5b3VyIGNvbXBvbmVudCBmcm9tIHRoZSBmaWxlICcgKyBcIml0J3MgZGVmaW5lZCBpbiwgb3IgeW91IG1pZ2h0IGhhdmUgbWl4ZWQgdXAgZGVmYXVsdCBhbmQgbmFtZWQgaW1wb3J0cy5cIjtcbiAgICAgIH1cblxuICAgICAgdmFyIHR5cGVTdHJpbmc7XG5cbiAgICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICAgIHR5cGVTdHJpbmcgPSAnbnVsbCc7XG4gICAgICB9IGVsc2UgaWYgKGlzQXJyYXkodHlwZSkpIHtcbiAgICAgICAgdHlwZVN0cmluZyA9ICdhcnJheSc7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgIT09IHVuZGVmaW5lZCAmJiB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEUpIHtcbiAgICAgICAgdHlwZVN0cmluZyA9IFwiPFwiICsgKGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlLnR5cGUpIHx8ICdVbmtub3duJykgKyBcIiAvPlwiO1xuICAgICAgICBpbmZvID0gJyBEaWQgeW91IGFjY2lkZW50YWxseSBleHBvcnQgYSBKU1ggbGl0ZXJhbCBpbnN0ZWFkIG9mIGEgY29tcG9uZW50Pyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0eXBlU3RyaW5nID0gdHlwZW9mIHR5cGU7XG4gICAgICB9XG5cbiAgICAgIGVycm9yKCdSZWFjdC5qc3g6IHR5cGUgaXMgaW52YWxpZCAtLSBleHBlY3RlZCBhIHN0cmluZyAoZm9yICcgKyAnYnVpbHQtaW4gY29tcG9uZW50cykgb3IgYSBjbGFzcy9mdW5jdGlvbiAoZm9yIGNvbXBvc2l0ZSAnICsgJ2NvbXBvbmVudHMpIGJ1dCBnb3Q6ICVzLiVzJywgdHlwZVN0cmluZywgaW5mbyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgaXMgYSB2YWxpZCBlbGVtZW50IHR5cGUuXG4gICAgICAvLyBTa2lwIGtleSB3YXJuaW5nIGlmIHRoZSB0eXBlIGlzbid0IHZhbGlkIHNpbmNlIG91ciBrZXkgdmFsaWRhdGlvbiBsb2dpY1xuICAgICAgLy8gZG9lc24ndCBleHBlY3QgYSBub24tc3RyaW5nL2Z1bmN0aW9uIHR5cGUgYW5kIGNhbiB0aHJvdyBjb25mdXNpbmdcbiAgICAgIC8vIGVycm9ycy4gV2UgZG9uJ3Qgd2FudCBleGNlcHRpb24gYmVoYXZpb3IgdG8gZGlmZmVyIGJldHdlZW4gZGV2IGFuZFxuICAgICAgLy8gcHJvZC4gKFJlbmRlcmluZyB3aWxsIHRocm93IHdpdGggYSBoZWxwZnVsIG1lc3NhZ2UgYW5kIGFzIHNvb24gYXMgdGhlXG4gICAgICAvLyB0eXBlIGlzIGZpeGVkLCB0aGUga2V5IHdhcm5pbmdzIHdpbGwgYXBwZWFyLilcbiAgICAgIHZhciBjaGlsZHJlbiA9IGNvbmZpZy5jaGlsZHJlbjtcblxuICAgICAgaWYgKGNoaWxkcmVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGlzU3RhdGljQ2hpbGRyZW4pIHtcbiAgICAgICAgICBpZiAoaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgdmFsaWRhdGVDaGlsZEtleXMoY2hpbGRyZW5baV0sIHR5cGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoT2JqZWN0LmZyZWV6ZSkge1xuICAgICAgICAgICAgICBPYmplY3QuZnJlZXplKGNoaWxkcmVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXJyb3IoJ1JlYWN0LmpzeDogU3RhdGljIGNoaWxkcmVuIHNob3VsZCBhbHdheXMgYmUgYW4gYXJyYXkuICcgKyAnWW91IGFyZSBsaWtlbHkgZXhwbGljaXRseSBjYWxsaW5nIFJlYWN0LmpzeHMgb3IgUmVhY3QuanN4REVWLiAnICsgJ1VzZSB0aGUgQmFiZWwgdHJhbnNmb3JtIGluc3RlYWQuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbGlkYXRlQ2hpbGRLZXlzKGNoaWxkcmVuLCB0eXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gV2FybiBhYm91dCBrZXkgc3ByZWFkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgdHlwZSBpcyB2YWxpZC5cblxuXG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAna2V5JykpIHtcbiAgICAgIHZhciBjb21wb25lbnROYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpO1xuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhjb25maWcpLmZpbHRlcihmdW5jdGlvbiAoaykge1xuICAgICAgICByZXR1cm4gayAhPT0gJ2tleSc7XG4gICAgICB9KTtcbiAgICAgIHZhciBiZWZvcmVFeGFtcGxlID0ga2V5cy5sZW5ndGggPiAwID8gJ3trZXk6IHNvbWVLZXksICcgKyBrZXlzLmpvaW4oJzogLi4uLCAnKSArICc6IC4uLn0nIDogJ3trZXk6IHNvbWVLZXl9JztcblxuICAgICAgaWYgKCFkaWRXYXJuQWJvdXRLZXlTcHJlYWRbY29tcG9uZW50TmFtZSArIGJlZm9yZUV4YW1wbGVdKSB7XG4gICAgICAgIHZhciBhZnRlckV4YW1wbGUgPSBrZXlzLmxlbmd0aCA+IDAgPyAneycgKyBrZXlzLmpvaW4oJzogLi4uLCAnKSArICc6IC4uLn0nIDogJ3t9JztcblxuICAgICAgICBlcnJvcignQSBwcm9wcyBvYmplY3QgY29udGFpbmluZyBhIFwia2V5XCIgcHJvcCBpcyBiZWluZyBzcHJlYWQgaW50byBKU1g6XFxuJyArICcgIGxldCBwcm9wcyA9ICVzO1xcbicgKyAnICA8JXMgey4uLnByb3BzfSAvPlxcbicgKyAnUmVhY3Qga2V5cyBtdXN0IGJlIHBhc3NlZCBkaXJlY3RseSB0byBKU1ggd2l0aG91dCB1c2luZyBzcHJlYWQ6XFxuJyArICcgIGxldCBwcm9wcyA9ICVzO1xcbicgKyAnICA8JXMga2V5PXtzb21lS2V5fSB7Li4ucHJvcHN9IC8+JywgYmVmb3JlRXhhbXBsZSwgY29tcG9uZW50TmFtZSwgYWZ0ZXJFeGFtcGxlLCBjb21wb25lbnROYW1lKTtcblxuICAgICAgICBkaWRXYXJuQWJvdXRLZXlTcHJlYWRbY29tcG9uZW50TmFtZSArIGJlZm9yZUV4YW1wbGVdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcHJvcE5hbWU7IC8vIFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWRcblxuICAgIHZhciBwcm9wcyA9IHt9O1xuICAgIHZhciBrZXkgPSBudWxsO1xuICAgIHZhciByZWYgPSBudWxsOyAvLyBDdXJyZW50bHksIGtleSBjYW4gYmUgc3ByZWFkIGluIGFzIGEgcHJvcC4gVGhpcyBjYXVzZXMgYSBwb3RlbnRpYWxcbiAgICAvLyBpc3N1ZSBpZiBrZXkgaXMgYWxzbyBleHBsaWNpdGx5IGRlY2xhcmVkIChpZS4gPGRpdiB7Li4ucHJvcHN9IGtleT1cIkhpXCIgLz5cbiAgICAvLyBvciA8ZGl2IGtleT1cIkhpXCIgey4uLnByb3BzfSAvPiApLiBXZSB3YW50IHRvIGRlcHJlY2F0ZSBrZXkgc3ByZWFkLFxuICAgIC8vIGJ1dCBhcyBhbiBpbnRlcm1lZGlhcnkgc3RlcCwgd2Ugd2lsbCB1c2UganN4REVWIGZvciBldmVyeXRoaW5nIGV4Y2VwdFxuICAgIC8vIDxkaXYgey4uLnByb3BzfSBrZXk9XCJIaVwiIC8+LCBiZWNhdXNlIHdlIGFyZW4ndCBjdXJyZW50bHkgYWJsZSB0byB0ZWxsIGlmXG4gICAgLy8ga2V5IGlzIGV4cGxpY2l0bHkgZGVjbGFyZWQgdG8gYmUgdW5kZWZpbmVkIG9yIG5vdC5cblxuICAgIGlmIChtYXliZUtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB7XG4gICAgICAgIGNoZWNrS2V5U3RyaW5nQ29lcmNpb24obWF5YmVLZXkpO1xuICAgICAgfVxuXG4gICAgICBrZXkgPSAnJyArIG1heWJlS2V5O1xuICAgIH1cblxuICAgIGlmIChoYXNWYWxpZEtleShjb25maWcpKSB7XG4gICAgICB7XG4gICAgICAgIGNoZWNrS2V5U3RyaW5nQ29lcmNpb24oY29uZmlnLmtleSk7XG4gICAgICB9XG5cbiAgICAgIGtleSA9ICcnICsgY29uZmlnLmtleTtcbiAgICB9XG5cbiAgICBpZiAoaGFzVmFsaWRSZWYoY29uZmlnKSkge1xuICAgICAge1xuICAgICAgICByZWYgPSBjb25maWcucmVmO1xuICAgICAgfVxuXG4gICAgICB3YXJuSWZTdHJpbmdSZWZDYW5ub3RCZUF1dG9Db252ZXJ0ZWQoY29uZmlnLCBzZWxmKTtcbiAgICB9IC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIGFyZSBhZGRlZCB0byBhIG5ldyBwcm9wcyBvYmplY3RcblxuXG4gICAgZm9yIChwcm9wTmFtZSBpbiBjb25maWcpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmIC8vIFNraXAgb3ZlciByZXNlcnZlZCBwcm9wIG5hbWVzXG4gICAgICBwcm9wTmFtZSAhPT0gJ2tleScgJiYgKHByb3BOYW1lICE9PSAncmVmJykpIHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9IC8vIFJlc29sdmUgZGVmYXVsdCBwcm9wc1xuXG5cbiAgICBpZiAodHlwZSAmJiB0eXBlLmRlZmF1bHRQcm9wcykge1xuICAgICAgdmFyIGRlZmF1bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzO1xuXG4gICAgICBmb3IgKHByb3BOYW1lIGluIGRlZmF1bHRQcm9wcykge1xuICAgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGtleSB8fCByZWYpIHtcbiAgICAgIHZhciBkaXNwbGF5TmFtZSA9IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nID8gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgJ1Vua25vd24nIDogdHlwZTtcblxuICAgICAgaWYgKGtleSkge1xuICAgICAgICBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVmKSB7XG4gICAgICAgIGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGVsZW1lbnQgPSBSZWFjdEVsZW1lbnQodHlwZSwga2V5LCByZWYsIHNlbGYsIHNvdXJjZSwgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCwgcHJvcHMpO1xuXG4gICAgaWYgKHR5cGUgPT09IFJFQUNUX0ZSQUdNRU5UX1RZUEUpIHtcbiAgICAgIHZhbGlkYXRlRnJhZ21lbnRQcm9wcyhlbGVtZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKSB7XG4gIHtcbiAgICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC50eXBlKTtcblxuICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuICdcXG5cXG5DaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufVxuLyoqXG4gKiBFbnN1cmUgdGhhdCBldmVyeSBlbGVtZW50IGVpdGhlciBpcyBwYXNzZWQgaW4gYSBzdGF0aWMgbG9jYXRpb24sIGluIGFuXG4gKiBhcnJheSB3aXRoIGFuIGV4cGxpY2l0IGtleXMgcHJvcGVydHkgZGVmaW5lZCwgb3IgaW4gYW4gb2JqZWN0IGxpdGVyYWxcbiAqIHdpdGggdmFsaWQga2V5IHByb3BlcnR5LlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIHtSZWFjdE5vZGV9IG5vZGUgU3RhdGljYWxseSBwYXNzZWQgY2hpbGQgb2YgYW55IHR5cGUuXG4gKiBAcGFyYW0geyp9IHBhcmVudFR5cGUgbm9kZSdzIHBhcmVudCdzIHR5cGUuXG4gKi9cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZUNoaWxkS2V5cyhub2RlLCBwYXJlbnRUeXBlKSB7XG4gIHtcbiAgICBpZiAodHlwZW9mIG5vZGUgIT09ICdvYmplY3QnIHx8ICFub2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG5vZGUuJCR0eXBlb2YgPT09IFJFQUNUX0NMSUVOVF9SRUZFUkVOQ0UpIDsgZWxzZSBpZiAoaXNBcnJheShub2RlKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IG5vZGVbaV07XG5cbiAgICAgICAgaWYgKGlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgICAgIHZhbGlkYXRlRXhwbGljaXRLZXkoY2hpbGQsIHBhcmVudFR5cGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ZhbGlkRWxlbWVudChub2RlKSkge1xuICAgICAgLy8gVGhpcyBlbGVtZW50IHdhcyBwYXNzZWQgaW4gYSB2YWxpZCBsb2NhdGlvbi5cbiAgICAgIGlmIChub2RlLl9zdG9yZSkge1xuICAgICAgICBub2RlLl9zdG9yZS52YWxpZGF0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obm9kZSk7XG5cbiAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBFbnRyeSBpdGVyYXRvcnMgdXNlZCB0byBwcm92aWRlIGltcGxpY2l0IGtleXMsXG4gICAgICAgIC8vIGJ1dCBub3cgd2UgcHJpbnQgYSBzZXBhcmF0ZSB3YXJuaW5nIGZvciB0aGVtIGxhdGVyLlxuICAgICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gbm9kZS5lbnRyaWVzKSB7XG4gICAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG5vZGUpO1xuICAgICAgICAgIHZhciBzdGVwO1xuXG4gICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgICAgaWYgKGlzVmFsaWRFbGVtZW50KHN0ZXAudmFsdWUpKSB7XG4gICAgICAgICAgICAgIHZhbGlkYXRlRXhwbGljaXRLZXkoc3RlcC52YWx1ZSwgcGFyZW50VHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4vKipcbiAqIFZlcmlmaWVzIHRoZSBvYmplY3QgaXMgYSBSZWFjdEVsZW1lbnQuXG4gKiBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlYWN0LWFwaS5odG1sI2lzdmFsaWRlbGVtZW50XG4gKiBAcGFyYW0gez9vYmplY3R9IG9iamVjdFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqZWN0YCBpcyBhIFJlYWN0RWxlbWVudC5cbiAqIEBmaW5hbFxuICovXG5cblxuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnQob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEU7XG59XG52YXIgb3duZXJIYXNLZXlVc2VXYXJuaW5nID0ge307XG4vKipcbiAqIFdhcm4gaWYgdGhlIGVsZW1lbnQgZG9lc24ndCBoYXZlIGFuIGV4cGxpY2l0IGtleSBhc3NpZ25lZCB0byBpdC5cbiAqIFRoaXMgZWxlbWVudCBpcyBpbiBhbiBhcnJheS4gVGhlIGFycmF5IGNvdWxkIGdyb3cgYW5kIHNocmluayBvciBiZVxuICogcmVvcmRlcmVkLiBBbGwgY2hpbGRyZW4gdGhhdCBoYXZlbid0IGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQgYXJlIHJlcXVpcmVkIHRvXG4gKiBoYXZlIGEgXCJrZXlcIiBwcm9wZXJ0eSBhc3NpZ25lZCB0byBpdC4gRXJyb3Igc3RhdHVzZXMgYXJlIGNhY2hlZCBzbyBhIHdhcm5pbmdcbiAqIHdpbGwgb25seSBiZSBzaG93biBvbmNlLlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnQgRWxlbWVudCB0aGF0IHJlcXVpcmVzIGEga2V5LlxuICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIGVsZW1lbnQncyBwYXJlbnQncyB0eXBlLlxuICovXG5cbmZ1bmN0aW9uIHZhbGlkYXRlRXhwbGljaXRLZXkoZWxlbWVudCwgcGFyZW50VHlwZSkge1xuICB7XG4gICAgaWYgKCFlbGVtZW50Ll9zdG9yZSB8fCBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgfHwgZWxlbWVudC5rZXkgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IHRydWU7XG4gICAgdmFyIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8gPSBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpO1xuXG4gICAgaWYgKG93bmVySGFzS2V5VXNlV2FybmluZ1tjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG93bmVySGFzS2V5VXNlV2FybmluZ1tjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvXSA9IHRydWU7IC8vIFVzdWFsbHkgdGhlIGN1cnJlbnQgb3duZXIgaXMgdGhlIG9mZmVuZGVyLCBidXQgaWYgaXQgYWNjZXB0cyBjaGlsZHJlbiBhcyBhXG4gICAgLy8gcHJvcGVydHksIGl0IG1heSBiZSB0aGUgY3JlYXRvciBvZiB0aGUgY2hpbGQgdGhhdCdzIHJlc3BvbnNpYmxlIGZvclxuICAgIC8vIGFzc2lnbmluZyBpdCBhIGtleS5cblxuICAgIHZhciBjaGlsZE93bmVyID0gJyc7XG5cbiAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50Ll9vd25lciAmJiBlbGVtZW50Ll9vd25lciAhPT0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgICAgLy8gR2l2ZSB0aGUgY29tcG9uZW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoaXMgY2hpbGQuXG4gICAgICBjaGlsZE93bmVyID0gXCIgSXQgd2FzIHBhc3NlZCBhIGNoaWxkIGZyb20gXCIgKyBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoZWxlbWVudC5fb3duZXIudHlwZSkgKyBcIi5cIjtcbiAgICB9XG5cbiAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChlbGVtZW50KTtcblxuICAgIGVycm9yKCdFYWNoIGNoaWxkIGluIGEgbGlzdCBzaG91bGQgaGF2ZSBhIHVuaXF1ZSBcImtleVwiIHByb3AuJyArICclcyVzIFNlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvd2FybmluZy1rZXlzIGZvciBtb3JlIGluZm9ybWF0aW9uLicsIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8sIGNoaWxkT3duZXIpO1xuXG4gICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQobnVsbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQoZWxlbWVudCkge1xuICB7XG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHZhciBvd25lciA9IGVsZW1lbnQuX293bmVyO1xuICAgICAgdmFyIHN0YWNrID0gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKGVsZW1lbnQudHlwZSwgb3duZXIgPyBvd25lci50eXBlIDogbnVsbCk7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lLnNldEV4dHJhU3RhY2tGcmFtZShzdGFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIFJlYWN0RGVidWdDdXJyZW50RnJhbWUuc2V0RXh0cmFTdGFja0ZyYW1lKG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpIHtcbiAge1xuICAgIHZhciBpbmZvID0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7XG5cbiAgICBpZiAoIWluZm8pIHtcbiAgICAgIHZhciBwYXJlbnROYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHBhcmVudFR5cGUpO1xuXG4gICAgICBpZiAocGFyZW50TmFtZSkge1xuICAgICAgICBpbmZvID0gXCJcXG5cXG5DaGVjayB0aGUgdG9wLWxldmVsIHJlbmRlciBjYWxsIHVzaW5nIDxcIiArIHBhcmVudE5hbWUgKyBcIj4uXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZm87XG4gIH1cbn1cbi8qKlxuICogR2l2ZW4gYSBmcmFnbWVudCwgdmFsaWRhdGUgdGhhdCBpdCBjYW4gb25seSBiZSBwcm92aWRlZCB3aXRoIGZyYWdtZW50IHByb3BzXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZnJhZ21lbnRcbiAqL1xuXG5cbmZ1bmN0aW9uIHZhbGlkYXRlRnJhZ21lbnRQcm9wcyhmcmFnbWVudCkge1xuICAvLyBUT0RPOiBNb3ZlIHRoaXMgdG8gcmVuZGVyIHBoYXNlIGluc3RlYWQgb2YgYXQgZWxlbWVudCBjcmVhdGlvbi5cbiAge1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZnJhZ21lbnQucHJvcHMpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKGtleSAhPT0gJ2NoaWxkcmVuJyAmJiBrZXkgIT09ICdrZXknKSB7XG4gICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KGZyYWdtZW50KTtcblxuICAgICAgICBlcnJvcignSW52YWxpZCBwcm9wIGAlc2Agc3VwcGxpZWQgdG8gYFJlYWN0LkZyYWdtZW50YC4gJyArICdSZWFjdC5GcmFnbWVudCBjYW4gb25seSBoYXZlIGBrZXlgIGFuZCBgY2hpbGRyZW5gIHByb3BzLicsIGtleSk7XG5cbiAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQobnVsbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmcmFnbWVudC5yZWYgIT09IG51bGwpIHtcbiAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KGZyYWdtZW50KTtcblxuICAgICAgZXJyb3IoJ0ludmFsaWQgYXR0cmlidXRlIGByZWZgIHN1cHBsaWVkIHRvIGBSZWFjdC5GcmFnbWVudGAuJyk7XG5cbiAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG52YXIganN4REVWID0ganN4REVWJDEgO1xuXG5leHBvcnRzLkZyYWdtZW50ID0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcbmV4cG9ydHMuanN4REVWID0ganN4REVWO1xuICB9KSgpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js": +/*!******************************************************************!*\ + !*** ./node_modules/next/dist/compiled/react/jsx-dev-runtime.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-jsx-dev-runtime.development.js */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvanN4LWRldi1ydW50aW1lLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksS0FBcUMsRUFBRSxFQUUxQyxDQUFDO0FBQ0YsRUFBRSw4TEFBc0U7QUFDeEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9yZWFjdC9qc3gtZGV2LXJ1bnRpbWUuanM/YTM2OSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LWRldi1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1kZXYtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\n")); + +/***/ }) + +}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); } +/******/ __webpack_require__.O(0, ["main-app"], function() { return __webpack_exec__("(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"); }); +/******/ var __webpack_exports__ = __webpack_require__.O(); +/******/ _N_E = __webpack_exports__; +/******/ } +]); \ No newline at end of file diff --git a/.next/static/chunks/app/gunbuilder/page.js b/.next/static/chunks/app/gunbuilder/page.js index cb759c6..8299d11 100644 --- a/.next/static/chunks/app/gunbuilder/page.js +++ b/.next/static/chunks/app/gunbuilder/page.js @@ -47,7 +47,7 @@ eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* har /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ GunbuilderPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* harmony import */ var _components_CategoryColumn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/CategoryColumn */ \"(app-pages-browser)/./components/CategoryColumn.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\nconst STORAGE_KEY = \"gunbuilder-build-state\";\nfunction GunbuilderPage() {\n _s();\n const searchParams = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.useSearchParams)();\n const router = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.useRouter)();\n const [build, setBuild] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(()=>{\n // Initialize from localStorage if available\n if (true) {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored) {\n try {\n return JSON.parse(stored);\n } catch (e) {\n return {};\n }\n }\n }\n return {};\n });\n // Handle URL query parameter for part selection\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const selectParam = searchParams.get(\"select\");\n if (selectParam) {\n const [categoryId, partId] = selectParam.split(\":\");\n if (categoryId && partId && _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES.some((c)=>c.id === categoryId)) {\n setBuild((prev)=>{\n const updated = {\n ...prev,\n [categoryId]: partId\n };\n // Persist to localStorage\n localStorage.setItem(STORAGE_KEY, JSON.stringify(updated));\n return updated;\n });\n // Remove query param from URL\n router.replace(\"/gunbuilder\", {\n scroll: false\n });\n }\n }\n }, [\n searchParams,\n router\n ]);\n // Persist build state to localStorage whenever it changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (true) {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(build));\n }\n }, [\n build\n ]);\n const partsByCategory = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const grouped = {};\n for (const category of _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES){\n grouped[category.id] = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.PARTS.filter((p)=>p.categoryId === category.id);\n }\n return grouped;\n }, []);\n const selectedParts = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n return Object.entries(build).map((param)=>{\n let [categoryId, partId] = param;\n return _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId);\n }).filter(Boolean);\n }, [\n build\n ]);\n const totalPrice = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>selectedParts.reduce((sum, p)=>sum + p.price, 0), [\n selectedParts\n ]);\n const handleSelectPart = (categoryId, partId)=>{\n setBuild((prev)=>({\n ...prev,\n [categoryId]: partId\n }));\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6 flex flex-col gap-2 md:flex-row md:items-end md:justify-between\",\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)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 95,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n \"Gunbuilder \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: \"Prototype\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 99,\n columnNumber: 26\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 98,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: \"Choose one part per category to assemble an AR-15 build. Prices and links are mock data for now—but the flow is close to what the real tool will be.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 101,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 94,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 md:mt-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400\",\n children: \"Current build total\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 109,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-semibold text-amber-300\",\n children: [\n \"$\",\n totalPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 110,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500\",\n children: [\n selectedParts.length,\n \" / \",\n _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES.length,\n \" categories filled\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 113,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 108,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 93,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 lg:grid-cols-[3fr,1.25fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-3 md:p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 md:grid-cols-2 lg:grid-cols-3\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES.map((category)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-zinc-800 rounded-md p-2 md:p-3 bg-zinc-950/60\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_CategoryColumn__WEBPACK_IMPORTED_MODULE_4__.CategoryColumn, {\n category: category,\n parts: partsByCategory[category.id],\n selectedPartId: build[category.id],\n onSelectPart: (partId)=>handleSelectPart(category.id, partId)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 129,\n columnNumber: 19\n }, this)\n }, category.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 125,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 123,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 122,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/80 p-3 md:p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-3\",\n children: \"Current Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 144,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-y-auto pr-1\",\n children: [\n selectedParts.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500\",\n children: \"Select a part from each category to start your build.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 150,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"space-y-2\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES.map((cat)=>{\n const selectedPartId = build[cat.id];\n const part = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.PARTS.find((p)=>p.id === selectedPartId && p.categoryId === cat.id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[0.7rem] uppercase tracking-[0.16em] text-zinc-500\",\n children: cat.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 163,\n columnNumber: 23\n }, this),\n part ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 flex justify-between items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-zinc-400\",\n children: [\n part.brand,\n \" \"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 169,\n columnNumber: 29\n }, this),\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 168,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 174,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 167,\n columnNumber: 25\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 text-xs text-zinc-600\",\n children: \"Not selected\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 179,\n columnNumber: 25\n }, this)\n ]\n }, cat.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 162,\n columnNumber: 21\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 155,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 148,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 border-t border-zinc-800 pt-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n className: \"w-full rounded-md border border-amber-400/60 bg-amber-400/10 px-3 py-2 text-sm font-medium text-amber-200 hover:bg-amber-400/15 disabled:opacity-40 disabled:cursor-not-allowed\",\n disabled: selectedParts.length === 0,\n onClick: ()=>{\n console.log(\"Build:\", build);\n alert(\"Prototype only: in the real app this would go to a sharable build summary with affiliate links.\");\n },\n children: \"Continue to Buy (Prototype)\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 191,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-[0.7rem] text-zinc-500\",\n children: \"In the production version, this will take you to a build page with retailer links and sharing options.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 204,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 190,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 143,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 120,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 91,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 90,\n columnNumber: 5\n }, this);\n}\n_s(GunbuilderPage, \"UcwNfiAgvkVgT2sjmQl74nmTISI=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_2__.useSearchParams,\n next_navigation__WEBPACK_IMPORTED_MODULE_2__.useRouter\n ];\n});\n_c = GunbuilderPage;\nvar _c;\n$RefreshReg$(_c, \"GunbuilderPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL3BhZ2UudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUVxRDtBQUNRO0FBQ0Y7QUFFRTtBQUk3RCxNQUFNUSxjQUFjO0FBRUwsU0FBU0M7O0lBQ3RCLE1BQU1DLGVBQWVQLGdFQUFlQTtJQUNwQyxNQUFNUSxTQUFTUCwwREFBU0E7SUFDeEIsTUFBTSxDQUFDUSxPQUFPQyxTQUFTLEdBQUdaLCtDQUFRQSxDQUFhO1FBQzdDLDRDQUE0QztRQUM1QyxJQUFJLElBQTZCLEVBQUU7WUFDakMsTUFBTWEsU0FBU0MsYUFBYUMsT0FBTyxDQUFDUjtZQUNwQyxJQUFJTSxRQUFRO2dCQUNWLElBQUk7b0JBQ0YsT0FBT0csS0FBS0MsS0FBSyxDQUFDSjtnQkFDcEIsRUFBRSxVQUFNO29CQUNOLE9BQU8sQ0FBQztnQkFDVjtZQUNGO1FBQ0Y7UUFDQSxPQUFPLENBQUM7SUFDVjtJQUVBLGdEQUFnRDtJQUNoRFosZ0RBQVNBLENBQUM7UUFDUixNQUFNaUIsY0FBY1QsYUFBYVUsR0FBRyxDQUFDO1FBQ3JDLElBQUlELGFBQWE7WUFDZixNQUFNLENBQUNFLFlBQVlDLE9BQU8sR0FBR0gsWUFBWUksS0FBSyxDQUFDO1lBQy9DLElBQUlGLGNBQWNDLFVBQVVqQiw2REFBVUEsQ0FBQ21CLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxFQUFFLEtBQUtMLGFBQWE7Z0JBQ3ZFUixTQUFTLENBQUNjO29CQUNSLE1BQU1DLFVBQVU7d0JBQ2QsR0FBR0QsSUFBSTt3QkFDUCxDQUFDTixXQUFXLEVBQUVDO29CQUNoQjtvQkFDQSwwQkFBMEI7b0JBQzFCUCxhQUFhYyxPQUFPLENBQUNyQixhQUFhUyxLQUFLYSxTQUFTLENBQUNGO29CQUNqRCxPQUFPQTtnQkFDVDtnQkFDQSw4QkFBOEI7Z0JBQzlCakIsT0FBT29CLE9BQU8sQ0FBQyxlQUFlO29CQUFFQyxRQUFRO2dCQUFNO1lBQ2hEO1FBQ0Y7SUFDRixHQUFHO1FBQUN0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QkMsc0RBQVNBOzs7S0FGRksiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2d1bmJ1aWxkZXIvcGFnZS50c3g/MDU0MCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgdXNlTWVtbywgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VhcmNoUGFyYW1zLCB1c2VSb3V0ZXIgfSBmcm9tIFwibmV4dC9uYXZpZ2F0aW9uXCI7XG5pbXBvcnQgeyBDQVRFR09SSUVTLCBQQVJUUyB9IGZyb20gXCJAL2RhdGEvZ3VuYnVpbGRlclBhcnRzXCI7XG5pbXBvcnQgdHlwZSB7IENhdGVnb3J5SWQsIFBhcnQgfSBmcm9tIFwiQC90eXBlcy9ndW5idWlsZGVyXCI7XG5pbXBvcnQgeyBDYXRlZ29yeUNvbHVtbiB9IGZyb20gXCJAL2NvbXBvbmVudHMvQ2F0ZWdvcnlDb2x1bW5cIjtcblxudHlwZSBCdWlsZFN0YXRlID0gUGFydGlhbDxSZWNvcmQ8Q2F0ZWdvcnlJZCwgc3RyaW5nPj47IC8vIGNhdGVnb3J5SWQgLT4gcGFydElkXG5cbmNvbnN0IFNUT1JBR0VfS0VZID0gXCJndW5idWlsZGVyLWJ1aWxkLXN0YXRlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEd1bmJ1aWxkZXJQYWdlKCkge1xuICBjb25zdCBzZWFyY2hQYXJhbXMgPSB1c2VTZWFyY2hQYXJhbXMoKTtcbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKCk7XG4gIGNvbnN0IFtidWlsZCwgc2V0QnVpbGRdID0gdXNlU3RhdGU8QnVpbGRTdGF0ZT4oKCkgPT4ge1xuICAgIC8vIEluaXRpYWxpemUgZnJvbSBsb2NhbFN0b3JhZ2UgaWYgYXZhaWxhYmxlXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKTtcbiAgICAgIGlmIChzdG9yZWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShzdG9yZWQpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9KTtcblxuICAvLyBIYW5kbGUgVVJMIHF1ZXJ5IHBhcmFtZXRlciBmb3IgcGFydCBzZWxlY3Rpb25cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzZWxlY3RQYXJhbSA9IHNlYXJjaFBhcmFtcy5nZXQoXCJzZWxlY3RcIik7XG4gICAgaWYgKHNlbGVjdFBhcmFtKSB7XG4gICAgICBjb25zdCBbY2F0ZWdvcnlJZCwgcGFydElkXSA9IHNlbGVjdFBhcmFtLnNwbGl0KFwiOlwiKTtcbiAgICAgIGlmIChjYXRlZ29yeUlkICYmIHBhcnRJZCAmJiBDQVRFR09SSUVTLnNvbWUoKGMpID0+IGMuaWQgPT09IGNhdGVnb3J5SWQpKSB7XG4gICAgICAgIHNldEJ1aWxkKChwcmV2KSA9PiB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZCA9IHtcbiAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICBbY2F0ZWdvcnlJZF06IHBhcnRJZCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8vIFBlcnNpc3QgdG8gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oU1RPUkFHRV9LRVksIEpTT04uc3RyaW5naWZ5KHVwZGF0ZWQpKTtcbiAgICAgICAgICByZXR1cm4gdXBkYXRlZDtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFJlbW92ZSBxdWVyeSBwYXJhbSBmcm9tIFVSTFxuICAgICAgICByb3V0ZXIucmVwbGFjZShcIi9ndW5idWlsZGVyXCIsIHsgc2Nyb2xsOiBmYWxzZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtzZWFyY2hQYXJhbXMsIHJvdXRlcl0pO1xuXG4gIC8vIFBlcnNpc3QgYnVpbGQgc3RhdGUgdG8gbG9jYWxTdG9yYWdlIHdoZW5ldmVyIGl0IGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oU1RPUkFHRV9LRVksIEpTT04uc3RyaW5naWZ5KGJ1aWxkKSk7XG4gICAgfVxuICB9LCBbYnVpbGRdKTtcblxuICBjb25zdCBwYXJ0c0J5Q2F0ZWdvcnk6IFJlY29yZDxDYXRlZ29yeUlkLCBQYXJ0W10+ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgZ3JvdXBlZCA9IHt9IGFzIFJlY29yZDxDYXRlZ29yeUlkLCBQYXJ0W10+O1xuICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgb2YgQ0FURUdPUklFUykge1xuICAgICAgZ3JvdXBlZFtjYXRlZ29yeS5pZF0gPSBQQVJUUy5maWx0ZXIoXG4gICAgICAgIChwKSA9PiBwLmNhdGVnb3J5SWQgPT09IGNhdGVnb3J5LmlkLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGdyb3VwZWQ7XG4gIH0sIFtdKTtcblxuICBjb25zdCBzZWxlY3RlZFBhcnRzOiBQYXJ0W10gPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoYnVpbGQpXG4gICAgICAubWFwKChbY2F0ZWdvcnlJZCwgcGFydElkXSkgPT5cbiAgICAgICAgUEFSVFMuZmluZCgocCkgPT4gcC5pZCA9PT0gcGFydElkICYmIHAuY2F0ZWdvcnlJZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgICApXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIFBhcnRbXTtcbiAgfSwgW2J1aWxkXSk7XG5cbiAgY29uc3QgdG90YWxQcmljZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gc2VsZWN0ZWRQYXJ0cy5yZWR1Y2UoKHN1bSwgcCkgPT4gc3VtICsgcC5wcmljZSwgMCksXG4gICAgW3NlbGVjdGVkUGFydHNdLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFBhcnQgPSAoY2F0ZWdvcnlJZDogQ2F0ZWdvcnlJZCwgcGFydElkOiBzdHJpbmcpID0+IHtcbiAgICBzZXRCdWlsZCgocHJldikgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBbY2F0ZWdvcnlJZF06IHBhcnRJZCxcbiAgICB9KSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8bWFpbiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctYmxhY2sgdGV4dC16aW5jLTUwXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gbWF4LXctNnhsIHB4LTQgcHktNiBsZzpweS0xMFwiPlxuICAgICAgICB7LyogSGVhZGVyICovfVxuICAgICAgICA8aGVhZGVyIGNsYXNzTmFtZT1cIm1iLTYgZmxleCBmbGV4LWNvbCBnYXAtMiBtZDpmbGV4LXJvdyBtZDppdGVtcy1lbmQgbWQ6anVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4yZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgIFNoYWRvdyBTdGFuZGFyZFxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cIm10LTEgdGV4dC0yeGwgbWQ6dGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodFwiPlxuICAgICAgICAgICAgICBHdW5idWlsZGVyIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwXCI+UHJvdG90eXBlPC9zcGFuPlxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTIgdGV4dC1zbSB0ZXh0LXppbmMtNDAwIG1heC13LXhsXCI+XG4gICAgICAgICAgICAgIENob29zZSBvbmUgcGFydCBwZXIgY2F0ZWdvcnkgdG8gYXNzZW1ibGUgYW4gQVItMTUgYnVpbGQuIFByaWNlc1xuICAgICAgICAgICAgICBhbmQgbGlua3MgYXJlIG1vY2sgZGF0YSBmb3Igbm934oCUYnV0IHRoZSBmbG93IGlzIGNsb3NlIHRvIHdoYXRcbiAgICAgICAgICAgICAgdGhlIHJlYWwgdG9vbCB3aWxsIGJlLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0zIG1kOm10LTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNDAwXCI+Q3VycmVudCBidWlsZCB0b3RhbDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMzAwXCI+XG4gICAgICAgICAgICAgICR7dG90YWxQcmljZS50b0ZpeGVkKDIpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICB7c2VsZWN0ZWRQYXJ0cy5sZW5ndGh9IC8ge0NBVEVHT1JJRVMubGVuZ3RofSBjYXRlZ29yaWVzIGZpbGxlZFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIHsvKiBMYXlvdXQgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBnYXAtNCBsZzpncmlkLWNvbHMtWzNmciwxLjI1ZnJdXCI+XG4gICAgICAgICAgey8qIENhdGVnb3JpZXMvcGFydHMgKi99XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtMyBtZDpwLTRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBnYXAtNCBtZDpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtM1wiPlxuICAgICAgICAgICAgICB7Q0FURUdPUklFUy5tYXAoKGNhdGVnb3J5KSA9PiAoXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAga2V5PXtjYXRlZ29yeS5pZH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItemluYy04MDAgcm91bmRlZC1tZCBwLTIgbWQ6cC0zIGJnLXppbmMtOTUwLzYwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8Q2F0ZWdvcnlDb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9e2NhdGVnb3J5fVxuICAgICAgICAgICAgICAgICAgICBwYXJ0cz17cGFydHNCeUNhdGVnb3J5W2NhdGVnb3J5LmlkXX1cbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRQYXJ0SWQ9e2J1aWxkW2NhdGVnb3J5LmlkXX1cbiAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RQYXJ0PXsocGFydElkKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdFBhcnQoY2F0ZWdvcnkuaWQsIHBhcnRJZClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICB7LyogQnVpbGQgU3VtbWFyeSAqL31cbiAgICAgICAgICA8YXNpZGUgY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzgwIHAtMyBtZDpwLTQgZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4xNmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTQwMCBtYi0zXCI+XG4gICAgICAgICAgICAgIEN1cnJlbnQgQnVpbGRcbiAgICAgICAgICAgIDwvaDI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG92ZXJmbG93LXktYXV0byBwci0xXCI+XG4gICAgICAgICAgICAgIHtzZWxlY3RlZFBhcnRzLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgICAgICBTZWxlY3QgYSBwYXJ0IGZyb20gZWFjaCBjYXRlZ29yeSB0byBzdGFydCB5b3VyIGJ1aWxkLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwic3BhY2UteS0yXCI+XG4gICAgICAgICAgICAgICAge0NBVEVHT1JJRVMubWFwKChjYXQpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUGFydElkID0gYnVpbGRbY2F0LmlkXTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnQgPSBQQVJUUy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAocCkgPT4gcC5pZCA9PT0gc2VsZWN0ZWRQYXJ0SWQgJiYgcC5jYXRlZ29yeUlkID09PSBjYXQuaWQsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGxpIGtleT17Y2F0LmlkfT5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtWzAuN3JlbV0gdXBwZXJjYXNlIHRyYWNraW5nLVswLjE2ZW1dIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjYXQubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICB7cGFydCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMSBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtemluYy00MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0LmJyYW5kfXtcIiBcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMzAwIHdoaXRlc3BhY2Utbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwYXJ0LnByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LXhzIHRleHQtemluYy02MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogQ1RBICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00IGJvcmRlci10IGJvcmRlci16aW5jLTgwMCBwdC0zXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWFtYmVyLTQwMC82MCBiZy1hbWJlci00MDAvMTAgcHgtMyBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1hbWJlci0yMDAgaG92ZXI6YmctYW1iZXItNDAwLzE1IGRpc2FibGVkOm9wYWNpdHktNDAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkXCJcbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17c2VsZWN0ZWRQYXJ0cy5sZW5ndGggPT09IDB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJCdWlsZDpcIiwgYnVpbGQpO1xuICAgICAgICAgICAgICAgICAgYWxlcnQoXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvdG90eXBlIG9ubHk6IGluIHRoZSByZWFsIGFwcCB0aGlzIHdvdWxkIGdvIHRvIGEgc2hhcmFibGUgYnVpbGQgc3VtbWFyeSB3aXRoIGFmZmlsaWF0ZSBsaW5rcy5cIixcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIENvbnRpbnVlIHRvIEJ1eSAoUHJvdG90eXBlKVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMiB0ZXh0LVswLjdyZW1dIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgICBJbiB0aGUgcHJvZHVjdGlvbiB2ZXJzaW9uLCB0aGlzIHdpbGwgdGFrZSB5b3UgdG8gYSBidWlsZCBwYWdlIHdpdGhcbiAgICAgICAgICAgICAgICByZXRhaWxlciBsaW5rcyBhbmQgc2hhcmluZyBvcHRpb25zLlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FzaWRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWFpbj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJ1c2VTZWFyY2hQYXJhbXMiLCJ1c2VSb3V0ZXIiLCJDQVRFR09SSUVTIiwiUEFSVFMiLCJDYXRlZ29yeUNvbHVtbiIsIlNUT1JBR0VfS0VZIiwiR3VuYnVpbGRlclBhZ2UiLCJzZWFyY2hQYXJhbXMiLCJyb3V0ZXIiLCJidWlsZCIsInNldEJ1aWxkIiwic3RvcmVkIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsIkpTT04iLCJwYXJzZSIsInNlbGVjdFBhcmFtIiwiZ2V0IiwiY2F0ZWdvcnlJZCIsInBhcnRJZCIsInNwbGl0Iiwic29tZSIsImMiLCJpZCIsInByZXYiLCJ1cGRhdGVkIiwic2V0SXRlbSIsInN0cmluZ2lmeSIsInJlcGxhY2UiLCJzY3JvbGwiLCJwYXJ0c0J5Q2F0ZWdvcnkiLCJncm91cGVkIiwiY2F0ZWdvcnkiLCJmaWx0ZXIiLCJwIiwic2VsZWN0ZWRQYXJ0cyIsIk9iamVjdCIsImVudHJpZXMiLCJtYXAiLCJmaW5kIiwiQm9vbGVhbiIsInRvdGFsUHJpY2UiLCJyZWR1Y2UiLCJzdW0iLCJwcmljZSIsImhhbmRsZVNlbGVjdFBhcnQiLCJtYWluIiwiY2xhc3NOYW1lIiwiZGl2IiwiaGVhZGVyIiwiaDEiLCJzcGFuIiwidG9GaXhlZCIsImxlbmd0aCIsInNlY3Rpb24iLCJwYXJ0cyIsInNlbGVjdGVkUGFydElkIiwib25TZWxlY3RQYXJ0IiwiYXNpZGUiLCJoMiIsInVsIiwiY2F0IiwicGFydCIsImxpIiwibmFtZSIsImJyYW5kIiwiYnV0dG9uIiwidHlwZSIsImRpc2FibGVkIiwib25DbGljayIsImNvbnNvbGUiLCJsb2ciLCJhbGVydCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/page.tsx\n")); +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ GunbuilderPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* harmony import */ var _components_CategoryColumn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/CategoryColumn */ \"(app-pages-browser)/./components/CategoryColumn.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\nconst STORAGE_KEY = \"gunbuilder-build-state\";\nfunction GunbuilderPage() {\n _s();\n const searchParams = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useSearchParams)();\n const router = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useRouter)();\n const [build, setBuild] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(()=>{\n // Initialize from localStorage if available\n if (true) {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored) {\n try {\n return JSON.parse(stored);\n } catch (e) {\n return {};\n }\n }\n }\n return {};\n });\n // Handle URL query parameter for part selection\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const selectParam = searchParams.get(\"select\");\n if (selectParam) {\n const [categoryId, partId] = selectParam.split(\":\");\n if (categoryId && partId && _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.some((c)=>c.id === categoryId)) {\n setBuild((prev)=>{\n const updated = {\n ...prev,\n [categoryId]: partId\n };\n // Persist to localStorage\n localStorage.setItem(STORAGE_KEY, JSON.stringify(updated));\n return updated;\n });\n // Remove query param from URL\n router.replace(\"/gunbuilder\", {\n scroll: false\n });\n }\n }\n }, [\n searchParams,\n router\n ]);\n // Persist build state to localStorage whenever it changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (true) {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(build));\n }\n }, [\n build\n ]);\n const partsByCategory = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const grouped = {};\n for (const category of _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES){\n grouped[category.id] = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.filter((p)=>p.categoryId === category.id);\n }\n return grouped;\n }, []);\n const selectedParts = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n return Object.entries(build).map((param)=>{\n let [categoryId, partId] = param;\n return _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId);\n }).filter(Boolean);\n }, [\n build\n ]);\n const totalPrice = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>selectedParts.reduce((sum, p)=>sum + p.price, 0), [\n selectedParts\n ]);\n const handleSelectPart = (categoryId, partId)=>{\n setBuild((prev)=>({\n ...prev,\n [categoryId]: partId\n }));\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6 flex flex-col gap-2 md:flex-row md:items-end md:justify-between\",\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)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 96,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n \"Gunbuilder \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: \"Prototype\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 100,\n columnNumber: 26\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 99,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: \"Choose one part per category to assemble an AR-15 build. Prices and links are mock data for now—but the flow is close to what the real tool will be.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 102,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 95,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 md:mt-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400\",\n children: \"Current build total\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 110,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-semibold text-amber-300\",\n children: [\n \"$\",\n totalPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 111,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500\",\n children: [\n selectedParts.length,\n \" / \",\n _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.length,\n \" categories filled\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 114,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 109,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 94,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 lg:grid-cols-[3fr,1.25fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-3 md:p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 md:grid-cols-2 lg:grid-cols-3\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.map((category)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-zinc-800 rounded-md p-2 md:p-3 bg-zinc-950/60\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_CategoryColumn__WEBPACK_IMPORTED_MODULE_5__.CategoryColumn, {\n category: category,\n parts: partsByCategory[category.id],\n selectedPartId: build[category.id],\n onSelectPart: (partId)=>handleSelectPart(category.id, partId)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 130,\n columnNumber: 19\n }, this)\n }, category.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 126,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 124,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 123,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/80 p-3 md:p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-3\",\n children: \"Current Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 145,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-y-auto pr-1\",\n children: [\n selectedParts.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500\",\n children: \"Select a part from each category to start your build.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 151,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"space-y-2\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.map((cat)=>{\n const selectedPartId = build[cat.id];\n const part = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === selectedPartId && p.categoryId === cat.id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[0.7rem] uppercase tracking-[0.16em] text-zinc-500\",\n children: cat.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 164,\n columnNumber: 23\n }, this),\n part ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 flex justify-between items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-zinc-400\",\n children: [\n part.brand,\n \" \"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 170,\n columnNumber: 29\n }, this),\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 169,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 175,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 168,\n columnNumber: 25\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 text-xs text-zinc-600\",\n children: \"Not selected\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 180,\n columnNumber: 25\n }, this)\n ]\n }, cat.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 163,\n columnNumber: 21\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 156,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 149,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 border-t border-zinc-800 pt-3 space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/build\",\n className: \"block w-full rounded-md border border-amber-400/60 bg-amber-400/10 px-3 py-2 text-sm font-medium text-amber-200 hover:bg-amber-400/15 text-center transition-colors \".concat(selectedParts.length === 0 ? \"opacity-40 cursor-not-allowed pointer-events-none\" : \"\"),\n children: \"Continue to Buy\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 192,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>{\n setBuild({});\n localStorage.removeItem(STORAGE_KEY);\n },\n disabled: selectedParts.length === 0,\n className: \"w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-3 py-2 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors \".concat(selectedParts.length === 0 ? \"opacity-40 cursor-not-allowed\" : \"\"),\n children: \"Clear Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 202,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-[0.7rem] text-zinc-500\",\n children: \"View your build summary with affiliate links and sharing options.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 217,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 191,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 144,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 121,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 92,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 91,\n columnNumber: 5\n }, this);\n}\n_s(GunbuilderPage, \"UcwNfiAgvkVgT2sjmQl74nmTISI=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useSearchParams,\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useRouter\n ];\n});\n_c = GunbuilderPage;\nvar _c;\n$RefreshReg$(_c, \"GunbuilderPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL3BhZ2UudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFFcUQ7QUFDeEI7QUFDZ0M7QUFDRjtBQUVFO0FBSTdELE1BQU1TLGNBQWM7QUFFTCxTQUFTQzs7SUFDdEIsTUFBTUMsZUFBZVAsZ0VBQWVBO0lBQ3BDLE1BQU1RLFNBQVNQLDBEQUFTQTtJQUN4QixNQUFNLENBQUNRLE9BQU9DLFNBQVMsR0FBR2IsK0NBQVFBLENBQWE7UUFDN0MsNENBQTRDO1FBQzVDLElBQUksSUFBNkIsRUFBRTtZQUNqQyxNQUFNYyxTQUFTQyxhQUFhQyxPQUFPLENBQUNSO1lBQ3BDLElBQUlNLFFBQVE7Z0JBQ1YsSUFBSTtvQkFDRixPQUFPRyxLQUFLQyxLQUFLLENBQUNKO2dCQUNwQixFQUFFLFVBQU07b0JBQ04sT0FBTyxDQUFDO2dCQUNWO1lBQ0Y7UUFDRjtRQUNBLE9BQU8sQ0FBQztJQUNWO0lBRUEsZ0RBQWdEO0lBQ2hEYixnREFBU0EsQ0FBQztRQUNSLE1BQU1rQixjQUFjVCxhQUFhVSxHQUFHLENBQUM7UUFDckMsSUFBSUQsYUFBYTtZQUNmLE1BQU0sQ0FBQ0UsWUFBWUMsT0FBTyxHQUFHSCxZQUFZSSxLQUFLLENBQUM7WUFDL0MsSUFBSUYsY0FBY0MsVUFBVWpCLDZEQUFVQSxDQUFDbUIsSUFBSSxDQUFDLENBQUNDLElBQU1BLEVBQUVDLEVBQUUsS0FBS0wsYUFBYTtnQkFDdkVSLFNBQVMsQ0FBQ2M7b0JBQ1IsTUFBTUMsVUFBVTt3QkFDZCxHQUFHRCxJQUFJO3dCQUNQLENBQUNOLFdBQVcsRUFBRUM7b0JBQ2hCO29CQUNBLDBCQUEwQjtvQkFDMUJQLGFBQWFjLE9BQU8sQ0FBQ3JCLGFBQWFTLEtBQUthLFNBQVMsQ0FBQ0Y7b0JBQ2pELE9BQU9BO2dCQUNUO2dCQUNBLDhCQUE4QjtnQkFDOUJqQixPQUFPb0IsT0FBTyxDQUFDLGVBQWU7b0JBQUVDLFFBQVE7Z0JBQU07WUFDaEQ7UUFDRjtJQUNGLEdB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T0FIQ1osY0FBY2tCLE1BQU0sS0FBSyxJQUNyQixrQ0FDQTtzREFFUDs7Ozs7O3NEQUdELDhEQUFDbkI7NENBQUVhLFdBQVU7c0RBQW1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVM5RDtHQXBOd0J6Qzs7UUFDRE4sNERBQWVBO1FBQ3JCQyxzREFBU0E7OztLQUZGSyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9hcHAvZ3VuYnVpbGRlci9wYWdlLnRzeD8wNTQwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgeyB1c2VNZW1vLCB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgTGluayBmcm9tIFwibmV4dC9saW5rXCI7XG5pbXBvcnQgeyB1c2VTZWFyY2hQYXJhbXMsIHVzZVJvdXRlciB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIjtcbmltcG9ydCB7IENBVEVHT1JJRVMsIFBBUlRTIH0gZnJvbSBcIkAvZGF0YS9ndW5idWlsZGVyUGFydHNcIjtcbmltcG9ydCB0eXBlIHsgQ2F0ZWdvcnlJZCwgUGFydCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcbmltcG9ydCB7IENhdGVnb3J5Q29sdW1uIH0gZnJvbSBcIkAvY29tcG9uZW50cy9DYXRlZ29yeUNvbHVtblwiO1xuXG50eXBlIEJ1aWxkU3RhdGUgPSBQYXJ0aWFsPFJlY29yZDxDYXRlZ29yeUlkLCBzdHJpbmc+PjsgLy8gY2F0ZWdvcnlJZCAtPiBwYXJ0SWRcblxuY29uc3QgU1RPUkFHRV9LRVkgPSBcImd1bmJ1aWxkZXItYnVpbGQtc3RhdGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gR3VuYnVpbGRlclBhZ2UoKSB7XG4gIGNvbnN0IHNlYXJjaFBhcmFtcyA9IHVzZVNlYXJjaFBhcmFtcygpO1xuICBjb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKTtcbiAgY29uc3QgW2J1aWxkLCBzZXRCdWlsZF0gPSB1c2VTdGF0ZTxCdWlsZFN0YXRlPigoKSA9PiB7XG4gICAgLy8gSW5pdGlhbGl6ZSBmcm9tIGxvY2FsU3RvcmFnZSBpZiBhdmFpbGFibGVcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oU1RPUkFHRV9LRVkpO1xuICAgICAgaWYgKHN0b3JlZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHN0b3JlZCk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH0pO1xuXG4gIC8vIEhhbmRsZSBVUkwgcXVlcnkgcGFyYW1ldGVyIGZvciBwYXJ0IHNlbGVjdGlvblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdFBhcmFtID0gc2VhcmNoUGFyYW1zLmdldChcInNlbGVjdFwiKTtcbiAgICBpZiAoc2VsZWN0UGFyYW0pIHtcbiAgICAgIGNvbnN0IFtjYXRlZ29yeUlkLCBwYXJ0SWRdID0gc2VsZWN0UGFyYW0uc3BsaXQoXCI6XCIpO1xuICAgICAgaWYgKGNhdGVnb3J5SWQgJiYgcGFydElkICYmIENBVEVHT1JJRVMuc29tZSgoYykgPT4gYy5pZCA9PT0gY2F0ZWdvcnlJZCkpIHtcbiAgICAgICAgc2V0QnVpbGQoKHByZXYpID0+IHtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkID0ge1xuICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgIFtjYXRlZ29yeUlkXTogcGFydElkLFxuICAgICAgICAgIH07XG4gICAgICAgICAgLy8gUGVyc2lzdCB0byBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkodXBkYXRlZCkpO1xuICAgICAgICAgIHJldHVybiB1cGRhdGVkO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gUmVtb3ZlIHF1ZXJ5IHBhcmFtIGZyb20gVVJMXG4gICAgICAgIHJvdXRlci5yZXBsYWNlKFwiL2d1bmJ1aWxkZXJcIiwgeyBzY3JvbGw6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3NlYXJjaFBhcmFtcywgcm91dGVyXSk7XG5cbiAgLy8gUGVyc2lzdCBidWlsZCBzdGF0ZSB0byBsb2NhbFN0b3JhZ2Ugd2hlbmV2ZXIgaXQgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkoYnVpbGQpKTtcbiAgICB9XG4gIH0sIFtidWlsZF0pO1xuXG4gIGNvbnN0IHBhcnRzQnlDYXRlZ29yeTogUmVjb3JkPENhdGVnb3J5SWQsIFBhcnRbXT4gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBncm91cGVkID0ge30gYXMgUmVjb3JkPENhdGVnb3J5SWQsIFBhcnRbXT47XG4gICAgZm9yIChjb25zdCBjYXRlZ29yeSBvZiBDQVRFR09SSUVTKSB7XG4gICAgICBncm91cGVkW2NhdGVnb3J5LmlkXSA9IFBBUlRTLmZpbHRlcihcbiAgICAgICAgKHApID0+IHAuY2F0ZWdvcnlJZCA9PT0gY2F0ZWdvcnkuaWQsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZ3JvdXBlZDtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHNlbGVjdGVkUGFydHM6IFBhcnRbXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhidWlsZClcbiAgICAgIC5tYXAoKFtjYXRlZ29yeUlkLCBwYXJ0SWRdKSA9PlxuICAgICAgICBQQVJUUy5maW5kKChwKSA9PiBwLmlkID09PSBwYXJ0SWQgJiYgcC5jYXRlZ29yeUlkID09PSBjYXRlZ29yeUlkKSxcbiAgICAgIClcbiAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgUGFydFtdO1xuICB9LCBbYnVpbGRdKTtcblxuICBjb25zdCB0b3RhbFByaWNlID0gdXNlTWVtbyhcbiAgICAoKSA9PiBzZWxlY3RlZFBhcnRzLnJlZHVjZSgoc3VtLCBwKSA9PiBzdW0gKyBwLnByaWNlLCAwKSxcbiAgICBbc2VsZWN0ZWRQYXJ0c10sXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0UGFydCA9IChjYXRlZ29yeUlkOiBDYXRlZ29yeUlkLCBwYXJ0SWQ6IHN0cmluZykgPT4ge1xuICAgIHNldEJ1aWxkKChwcmV2KSA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIFtjYXRlZ29yeUlkXTogcGFydElkLFxuICAgIH0pKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxtYWluIGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ibGFjayB0ZXh0LXppbmMtNTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtYXgtdy02eGwgcHgtNCBweS02IGxnOnB5LTEwXCI+XG4gICAgICAgIHsvKiBIZWFkZXIgKi99XG4gICAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwibWItNiBmbGV4IGZsZXgtY29sIGdhcC0yIG1kOmZsZXgtcm93IG1kOml0ZW1zLWVuZCBtZDpqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjJlbV0gdXBwZXJjYXNlIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgU2hhZG93IFN0YW5kYXJkXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LTJ4bCBtZDp0ZXh0LTN4bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0XCI+XG4gICAgICAgICAgICAgIEd1bmJ1aWxkZXIgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDBcIj5Qcm90b3R5cGU8L3NwYW4+XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMiB0ZXh0LXNtIHRleHQtemluYy00MDAgbWF4LXcteGxcIj5cbiAgICAgICAgICAgICAgQ2hvb3NlIG9uZSBwYXJ0IHBlciBjYXRlZ29yeSB0byBhc3NlbWJsZSBhbiBBUi0xNSBidWlsZC4gUHJpY2VzXG4gICAgICAgICAgICAgIGFuZCBsaW5rcyBhcmUgbW9jayBkYXRhIGZvciBub3figJRidXQgdGhlIGZsb3cgaXMgY2xvc2UgdG8gd2hhdFxuICAgICAgICAgICAgICB0aGUgcmVhbCB0b29sIHdpbGwgYmUuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTMgbWQ6bXQtMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy00MDBcIj5DdXJyZW50IGJ1aWxkIHRvdGFsPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0zMDBcIj5cbiAgICAgICAgICAgICAgJHt0b3RhbFByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgIHtzZWxlY3RlZFBhcnRzLmxlbmd0aH0gLyB7Q0FURUdPUklFUy5sZW5ndGh9IGNhdGVnb3JpZXMgZmlsbGVkXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgey8qIExheW91dCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC00IGxnOmdyaWQtY29scy1bM2ZyLDEuMjVmcl1cIj5cbiAgICAgICAgICB7LyogQ2F0ZWdvcmllcy9wYXJ0cyAqL31cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItemluYy04MDAgYmctemluYy05NTAvNjAgcC0zIG1kOnAtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC00IG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zXCI+XG4gICAgICAgICAgICAgIHtDQVRFR09SSUVTLm1hcCgoY2F0ZWdvcnkpID0+IChcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBrZXk9e2NhdGVnb3J5LmlkfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci16aW5jLTgwMCByb3VuZGVkLW1kIHAtMiBtZDpwLTMgYmctemluYy05NTAvNjBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxDYXRlZ29yeUNvbHVtblxuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT17Y2F0ZWdvcnl9XG4gICAgICAgICAgICAgICAgICAgIHBhcnRzPXtwYXJ0c0J5Q2F0ZWdvcnlbY2F0ZWdvcnkuaWRdfVxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFBhcnRJZD17YnVpbGRbY2F0ZWdvcnkuaWRdfVxuICAgICAgICAgICAgICAgICAgICBvblNlbGVjdFBhcnQ9eyhwYXJ0SWQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0UGFydChjYXRlZ29yeS5pZCwgcGFydElkKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgIHsvKiBCdWlsZCBTdW1tYXJ5ICovfVxuICAgICAgICAgIDxhc2lkZSBjbGFzc05hbWU9XCJyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItemluYy04MDAgYmctemluYy05NTAvODAgcC0zIG1kOnAtNCBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjE2ZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNDAwIG1iLTNcIj5cbiAgICAgICAgICAgICAgQ3VycmVudCBCdWlsZFxuICAgICAgICAgICAgPC9oMj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgb3ZlcmZsb3cteS1hdXRvIHByLTFcIj5cbiAgICAgICAgICAgICAge3NlbGVjdGVkUGFydHMubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgICAgIFNlbGVjdCBhIHBhcnQgZnJvbSBlYWNoIGNhdGVnb3J5IHRvIHN0YXJ0IHlvdXIgYnVpbGQuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJzcGFjZS15LTJcIj5cbiAgICAgICAgICAgICAgICB7Q0FURUdPUklFUy5tYXAoKGNhdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRQYXJ0SWQgPSBidWlsZFtjYXQuaWRdO1xuICAgICAgICAgICAgICAgICAgY29uc3QgcGFydCA9IFBBUlRTLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChwKSA9PiBwLmlkID09PSBzZWxlY3RlZFBhcnRJZCAmJiBwLmNhdGVnb3J5SWQgPT09IGNhdC5pZCxcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8bGkga2V5PXtjYXQuaWR9PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1bMC43cmVtXSB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMTZlbV0gdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2NhdC5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0xIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC16aW5jLTQwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQuYnJhbmR9e1wiIFwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0zMDAgd2hpdGVzcGFjZS1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3BhcnQucHJpY2UudG9GaXhlZCgyKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0xIHRleHQteHMgdGV4dC16aW5jLTYwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBOb3Qgc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHsvKiBDVEEgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTQgYm9yZGVyLXQgYm9yZGVyLXppbmMtODAwIHB0LTMgc3BhY2UteS0yXCI+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj1cIi9ndW5idWlsZGVyL2J1aWxkXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BibG9jayB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWFtYmVyLTQwMC82MCBiZy1hbWJlci00MDAvMTAgcHgtMyBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1hbWJlci0yMDAgaG92ZXI6YmctYW1iZXItNDAwLzE1IHRleHQtY2VudGVyIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZFBhcnRzLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFwib3BhY2l0eS00MCBjdXJzb3Itbm90LWFsbG93ZWQgcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIDogXCJcIlxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQ29udGludWUgdG8gQnV5XG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIHNldEJ1aWxkKHt9KTtcbiAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFNUT1JBR0VfS0VZKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzZWxlY3RlZFBhcnRzLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2B3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzUwIHB4LTMgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtemluYy0zMDAgaG92ZXI6YmctemluYy04MDAgaG92ZXI6Ym9yZGVyLXppbmMtNjAwIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZFBhcnRzLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFwib3BhY2l0eS00MCBjdXJzb3Itbm90LWFsbG93ZWRcIlxuICAgICAgICAgICAgICAgICAgICA6IFwiXCJcbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIENsZWFyIEJ1aWxkXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0yIHRleHQtWzAuN3JlbV0gdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICAgIFZpZXcgeW91ciBidWlsZCBzdW1tYXJ5IHdpdGggYWZmaWxpYXRlIGxpbmtzIGFuZCBzaGFyaW5nIG9wdGlvbnMuXG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXNpZGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tYWluPlxuICApO1xufVxuIl0sIm5hbWVzIjpbInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIkxpbmsiLCJ1c2VTZWFyY2hQYXJhbXMiLCJ1c2VSb3V0ZXIiLCJDQVRFR09SSUVTIiwiUEFSVFMiLCJDYXRlZ29yeUNvbHVtbiIsIlNUT1JBR0VfS0VZIiwiR3VuYnVpbGRlclBhZ2UiLCJzZWFyY2hQYXJhbXMiLCJyb3V0ZXIiLCJidWlsZCIsInNldEJ1aWxkIiwic3RvcmVkIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsIkpTT04iLCJwYXJzZSIsInNlbGVjdFBhcmFtIiwiZ2V0IiwiY2F0ZWdvcnlJZCIsInBhcnRJZCIsInNwbGl0Iiwic29tZSIsImMiLCJpZCIsInByZXYiLCJ1cGRhdGVkIiwic2V0SXRlbSIsInN0cmluZ2lmeSIsInJlcGxhY2UiLCJzY3JvbGwiLCJwYXJ0c0J5Q2F0ZWdvcnkiLCJncm91cGVkIiwiY2F0ZWdvcnkiLCJmaWx0ZXIiLCJwIiwic2VsZWN0ZWRQYXJ0cyIsIk9iamVjdCIsImVudHJpZXMiLCJtYXAiLCJmaW5kIiwiQm9vbGVhbiIsInRvdGFsUHJpY2UiLCJyZWR1Y2UiLCJzdW0iLCJwcmljZSIsImhhbmRsZVNlbGVjdFBhcnQiLCJtYWluIiwiY2xhc3NOYW1lIiwiZGl2IiwiaGVhZGVyIiwiaDEiLCJzcGFuIiwidG9GaXhlZCIsImxlbmd0aCIsInNlY3Rpb24iLCJwYXJ0cyIsInNlbGVjdGVkUGFydElkIiwib25TZWxlY3RQYXJ0IiwiYXNpZGUiLCJoMiIsInVsIiwiY2F0IiwicGFydCIsImxpIiwibmFtZSIsImJyYW5kIiwiaHJlZiIsImJ1dHRvbiIsInR5cGUiLCJvbkNsaWNrIiwicmVtb3ZlSXRlbSIsImRpc2FibGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/page.tsx\n")); /***/ }), @@ -58,7 +58,7 @@ eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* har /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CategoryColumn: function() { return /* binding */ CategoryColumn; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var _components_PartCard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/PartCard */ \"(app-pages-browser)/./components/PartCard.tsx\");\n/* __next_internal_client_entry_do_not_use__ CategoryColumn auto */ \n\n\nfunction CategoryColumn(param) {\n let { category, parts, selectedPartId, onSelectPart } = param;\n // Show selected part if available, otherwise show placeholder\n const displayedPart = selectedPartId ? parts.find((p)=>p.id === selectedPartId) : null;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.15em] text-zinc-400 uppercase\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 28,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 27,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-y-auto pr-1\",\n children: [\n parts.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500\",\n children: \"No parts yet for this category.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 34,\n columnNumber: 11\n }, this),\n !displayedPart && parts.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full border border-zinc-700 rounded-md p-3 mb-2 text-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500\",\n children: \"Choose a Part\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 38,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 37,\n columnNumber: 11\n }, this),\n displayedPart && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_PartCard__WEBPACK_IMPORTED_MODULE_2__.PartCard, {\n part: displayedPart,\n selected: displayedPart.id === selectedPartId,\n onSelect: ()=>onSelectPart(displayedPart.id)\n }, displayedPart.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 42,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 32,\n columnNumber: 7\n }, this),\n parts.length > 1 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/gunbuilder/\".concat(category.id),\n className: \"mt-2 w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-3 py-2 text-xs font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors text-center\",\n children: [\n \"View All (\",\n parts.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 51,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 26,\n columnNumber: 5\n }, this);\n}\n_c = CategoryColumn;\nvar _c;\n$RefreshReg$(_c, \"CategoryColumn\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvQ2F0ZWdvcnlDb2x1bW4udHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRTZCO0FBRW9CO0FBUzFDLFNBQVNFLGVBQWUsS0FLVDtRQUxTLEVBQzdCQyxRQUFRLEVBQ1JDLEtBQUssRUFDTEMsY0FBYyxFQUNkQyxZQUFZLEVBQ1EsR0FMUztJQU03Qiw4REFBOEQ7SUFDOUQsTUFBTUMsZ0JBQWdCRixpQkFDbEJELE1BQU1JLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxFQUFFLEtBQUtMLGtCQUMzQjtJQUVKLHFCQUNFLDhEQUFDTTtRQUFJQyxXQUFVOzswQkFDYiw4REFBQ0Q7Z0JBQUlDLFdBQVU7MEJBQ2IsNEVBQUNDO29CQUFHRCxXQUFVOzhCQUNYVCxTQUFTVyxJQUFJOzs7Ozs7Ozs7OzswQkFHbEIsOERBQUNIO2dCQUFJQyxXQUFVOztvQkFDWlIsTUFBTVcsTUFBTSxLQUFLLG1CQUNoQiw4REFBQ047d0JBQUVHLFdBQVU7a0NBQXdCOzs7Ozs7b0JBRXRDLENBQUNMLGlCQUFpQkgsTUFBTVcsTUFBTSxHQUFHLG1CQUNoQyw4REFBQ0o7d0JBQUlDLFdBQVU7a0NBQ2IsNEVBQUNIOzRCQUFFRyxXQUFVO3NDQUF3Qjs7Ozs7Ozs7Ozs7b0JBR3hDTCwrQkFDQyw4REFBQ04sMERBQVFBO3dCQUVQZSxNQUFNVDt3QkFDTlUsVUFBVVYsY0FBY0csRUFBRSxLQUFLTDt3QkFDL0JhLFVBQVUsSUFBTVosYUFBYUMsY0FBY0csRUFBRTt1QkFIeENILGNBQWNHLEVBQUU7Ozs7Ozs7Ozs7O1lBTzFCTixNQUFNVyxNQUFNLEdBQUcsbUJBQ2QsOERBQUNmLGlEQUFJQTtnQkFDSG1CLE1BQU0sZUFBMkIsT0FBWmhCLFNBQVNPLEVBQUU7Z0JBQ2hDRSxXQUFVOztvQkFDWDtvQkFDWVIsTUFBTVcsTUFBTTtvQkFBQzs7Ozs7Ozs7Ozs7OztBQUtsQztLQTlDZ0JiIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2NvbXBvbmVudHMvQ2F0ZWdvcnlDb2x1bW4udHN4PzljMTgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB0eXBlIHsgQ2F0ZWdvcnksIFBhcnQgfSBmcm9tIFwiQC90eXBlcy9ndW5idWlsZGVyXCI7XG5pbXBvcnQgeyBQYXJ0Q2FyZCB9IGZyb20gXCJAL2NvbXBvbmVudHMvUGFydENhcmRcIjtcblxuaW50ZXJmYWNlIENhdGVnb3J5Q29sdW1uUHJvcHMge1xuICBjYXRlZ29yeTogQ2F0ZWdvcnk7XG4gIHBhcnRzOiBQYXJ0W107XG4gIHNlbGVjdGVkUGFydElkPzogc3RyaW5nO1xuICBvblNlbGVjdFBhcnQ6IChwYXJ0SWQ6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENhdGVnb3J5Q29sdW1uKHtcbiAgY2F0ZWdvcnksXG4gIHBhcnRzLFxuICBzZWxlY3RlZFBhcnRJZCxcbiAgb25TZWxlY3RQYXJ0LFxufTogQ2F0ZWdvcnlDb2x1bW5Qcm9wcykge1xuICAvLyBTaG93IHNlbGVjdGVkIHBhcnQgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2Ugc2hvdyBwbGFjZWhvbGRlclxuICBjb25zdCBkaXNwbGF5ZWRQYXJ0ID0gc2VsZWN0ZWRQYXJ0SWRcbiAgICA/IHBhcnRzLmZpbmQoKHApID0+IHAuaWQgPT09IHNlbGVjdGVkUGFydElkKVxuICAgIDogbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBoLWZ1bGxcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItM1wiPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjE1ZW1dIHRleHQtemluYy00MDAgdXBwZXJjYXNlXCI+XG4gICAgICAgICAge2NhdGVnb3J5Lm5hbWV9XG4gICAgICAgIDwvaDI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG92ZXJmbG93LXktYXV0byBwci0xXCI+XG4gICAgICAgIHtwYXJ0cy5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMFwiPk5vIHBhcnRzIHlldCBmb3IgdGhpcyBjYXRlZ29yeS48L3A+XG4gICAgICAgICl9XG4gICAgICAgIHshZGlzcGxheWVkUGFydCAmJiBwYXJ0cy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIHJvdW5kZWQtbWQgcC0zIG1iLTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTUwMFwiPkNob29zZSBhIFBhcnQ8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICAgIHtkaXNwbGF5ZWRQYXJ0ICYmIChcbiAgICAgICAgICA8UGFydENhcmRcbiAgICAgICAgICAgIGtleT17ZGlzcGxheWVkUGFydC5pZH1cbiAgICAgICAgICAgIHBhcnQ9e2Rpc3BsYXllZFBhcnR9XG4gICAgICAgICAgICBzZWxlY3RlZD17ZGlzcGxheWVkUGFydC5pZCA9PT0gc2VsZWN0ZWRQYXJ0SWR9XG4gICAgICAgICAgICBvblNlbGVjdD17KCkgPT4gb25TZWxlY3RQYXJ0KGRpc3BsYXllZFBhcnQuaWQpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICAgIHtwYXJ0cy5sZW5ndGggPiAxICYmIChcbiAgICAgICAgPExpbmtcbiAgICAgICAgICBocmVmPXtgL2d1bmJ1aWxkZXIvJHtjYXRlZ29yeS5pZH1gfVxuICAgICAgICAgIGNsYXNzTmFtZT1cIm10LTIgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC81MCBweC0zIHB5LTIgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtMzAwIGhvdmVyOmJnLXppbmMtODAwIGhvdmVyOmJvcmRlci16aW5jLTYwMCB0cmFuc2l0aW9uLWNvbG9ycyB0ZXh0LWNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICBWaWV3IEFsbCAoe3BhcnRzLmxlbmd0aH0pXG4gICAgICAgIDwvTGluaz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXSwibmFtZXMiOlsiTGluayIsIlBhcnRDYXJkIiwiQ2F0ZWdvcnlDb2x1bW4iLCJjYXRlZ29yeSIsInBhcnRzIiwic2VsZWN0ZWRQYXJ0SWQiLCJvblNlbGVjdFBhcnQiLCJkaXNwbGF5ZWRQYXJ0IiwiZmluZCIsInAiLCJpZCIsImRpdiIsImNsYXNzTmFtZSIsImgyIiwibmFtZSIsImxlbmd0aCIsInBhcnQiLCJzZWxlY3RlZCIsIm9uU2VsZWN0IiwiaHJlZiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/CategoryColumn.tsx\n")); +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CategoryColumn: function() { return /* binding */ CategoryColumn; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var _components_PartCard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/PartCard */ \"(app-pages-browser)/./components/PartCard.tsx\");\n/* __next_internal_client_entry_do_not_use__ CategoryColumn auto */ \n\n\nfunction CategoryColumn(param) {\n let { category, parts, selectedPartId, onSelectPart } = param;\n // Show selected part if available, otherwise show placeholder\n const displayedPart = selectedPartId ? parts.find((p)=>p.id === selectedPartId) : null;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.15em] text-zinc-400 uppercase\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 28,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 27,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-y-auto pr-1\",\n children: [\n parts.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500\",\n children: \"No parts yet for this category.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 34,\n columnNumber: 11\n }, this),\n !displayedPart && parts.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full border border-zinc-700 rounded-md p-3 mb-2 text-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500 flex items-center justify-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-4 h-4\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M12 4v16m8-8H4\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 45,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 39,\n columnNumber: 15\n }, this),\n \"Choose a Part\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 38,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 37,\n columnNumber: 11\n }, this),\n displayedPart && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_PartCard__WEBPACK_IMPORTED_MODULE_2__.PartCard, {\n part: displayedPart,\n selected: displayedPart.id === selectedPartId,\n onSelect: ()=>onSelectPart(displayedPart.id)\n }, displayedPart.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 57,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 32,\n columnNumber: 7\n }, this),\n parts.length > 1 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/gunbuilder/\".concat(category.id),\n className: \"mt-2 w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-3 py-2 text-xs font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors text-center\",\n children: [\n \"View All (\",\n parts.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 66,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 26,\n columnNumber: 5\n }, this);\n}\n_c = CategoryColumn;\nvar _c;\n$RefreshReg$(_c, \"CategoryColumn\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvQ2F0ZWdvcnlDb2x1bW4udHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRTZCO0FBRW9CO0FBUzFDLFNBQVNFLGVBQWUsS0FLVDtRQUxTLEVBQzdCQyxRQUFRLEVBQ1JDLEtBQUssRUFDTEMsY0FBYyxFQUNkQyxZQUFZLEVBQ1EsR0FMUztJQU03Qiw4REFBOEQ7SUFDOUQsTUFBTUMsZ0JBQWdCRixpQkFDbEJELE1BQU1JLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxFQUFFLEtBQUtMLGtCQUMzQjtJQUVKLHFCQUNFLDhEQUFDTTtRQUFJQyxXQUFVOzswQkFDYiw4REFBQ0Q7Z0JBQUlDLFdBQVU7MEJBQ2IsNEVBQUNDO29CQUFHRCxXQUFVOzhCQUNYVCxTQUFTVyxJQUFJOzs7Ozs7Ozs7OzswQkFHbEIsOERBQUNIO2dCQUFJQyxXQUFVOztvQkFDWlIsTUFBTVcsTUFBTSxLQUFLLG1CQUNoQiw4REFBQ047d0JBQUVHLFdBQVU7a0NBQXdCOzs7Ozs7b0JBRXRDLENBQUNMLGlCQUFpQkgsTUFBTVcsTUFBTSxHQUFHLG1CQUNoQyw4REFBQ0o7d0JBQUlDLFdBQVU7a0NBQ2IsNEVBQUNIOzRCQUFFRyxXQUFVOzs4Q0FDWCw4REFBQ0k7b0NBQ0NKLFdBQVU7b0NBQ1ZLLE1BQUs7b0NBQ0xDLFFBQU87b0NBQ1BDLFNBQVE7OENBRVIsNEVBQUNDO3dDQUNDQyxlQUFjO3dDQUNkQyxnQkFBZTt3Q0FDZkMsYUFBYTt3Q0FDYkMsR0FBRTs7Ozs7Ozs7Ozs7Z0NBRUE7Ozs7Ozs7Ozs7OztvQkFLWGpCLCtCQUNDLDhEQUFDTiwwREFBUUE7d0JBRVB3QixNQUFNbEI7d0JBQ05tQixVQUFVbkIsY0FBY0csRUFBRSxLQUFLTDt3QkFDL0JzQixVQUFVLElBQU1yQixhQUFhQyxjQUFjRyxFQUFFO3VCQUh4Q0gsY0FBY0csRUFBRTs7Ozs7Ozs7Ozs7WUFPMUJOLE1BQU1XLE1BQU0sR0FBRyxtQkFDZCw4REFBQ2YsaURBQUlBO2dCQUNINEIsTUFBTSxlQUEyQixPQUFaekIsU0FBU08sRUFBRTtnQkFDaENFLFdBQVU7O29CQUNYO29CQUNZUixNQUFNVyxNQUFNO29CQUFDOzs7Ozs7Ozs7Ozs7O0FBS2xDO0tBN0RnQmIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vY29tcG9uZW50cy9DYXRlZ29yeUNvbHVtbi50c3g/OWMxOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xuaW1wb3J0IHR5cGUgeyBDYXRlZ29yeSwgUGFydCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcbmltcG9ydCB7IFBhcnRDYXJkIH0gZnJvbSBcIkAvY29tcG9uZW50cy9QYXJ0Q2FyZFwiO1xuXG5pbnRlcmZhY2UgQ2F0ZWdvcnlDb2x1bW5Qcm9wcyB7XG4gIGNhdGVnb3J5OiBDYXRlZ29yeTtcbiAgcGFydHM6IFBhcnRbXTtcbiAgc2VsZWN0ZWRQYXJ0SWQ/OiBzdHJpbmc7XG4gIG9uU2VsZWN0UGFydDogKHBhcnRJZDogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2F0ZWdvcnlDb2x1bW4oe1xuICBjYXRlZ29yeSxcbiAgcGFydHMsXG4gIHNlbGVjdGVkUGFydElkLFxuICBvblNlbGVjdFBhcnQsXG59OiBDYXRlZ29yeUNvbHVtblByb3BzKSB7XG4gIC8vIFNob3cgc2VsZWN0ZWQgcGFydCBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBzaG93IHBsYWNlaG9sZGVyXG4gIGNvbnN0IGRpc3BsYXllZFBhcnQgPSBzZWxlY3RlZFBhcnRJZFxuICAgID8gcGFydHMuZmluZCgocCkgPT4gcC5pZCA9PT0gc2VsZWN0ZWRQYXJ0SWQpXG4gICAgOiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGgtZnVsbFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi0zXCI+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWzAuMTVlbV0gdGV4dC16aW5jLTQwMCB1cHBlcmNhc2VcIj5cbiAgICAgICAgICB7Y2F0ZWdvcnkubmFtZX1cbiAgICAgICAgPC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgb3ZlcmZsb3cteS1hdXRvIHByLTFcIj5cbiAgICAgICAge3BhcnRzLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+Tm8gcGFydHMgeWV0IGZvciB0aGlzIGNhdGVnb3J5LjwvcD5cbiAgICAgICAgKX1cbiAgICAgICAgeyFkaXNwbGF5ZWRQYXJ0ICYmIHBhcnRzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGJvcmRlciBib3JkZXItemluYy03MDAgcm91bmRlZC1tZCBwLTMgbWItMiB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXppbmMtNTAwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTQgaC00XCJcbiAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTIgNHYxNm04LThINFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIENob29zZSBhIFBhcnRcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAge2Rpc3BsYXllZFBhcnQgJiYgKFxuICAgICAgICAgIDxQYXJ0Q2FyZFxuICAgICAgICAgICAga2V5PXtkaXNwbGF5ZWRQYXJ0LmlkfVxuICAgICAgICAgICAgcGFydD17ZGlzcGxheWVkUGFydH1cbiAgICAgICAgICAgIHNlbGVjdGVkPXtkaXNwbGF5ZWRQYXJ0LmlkID09PSBzZWxlY3RlZFBhcnRJZH1cbiAgICAgICAgICAgIG9uU2VsZWN0PXsoKSA9PiBvblNlbGVjdFBhcnQoZGlzcGxheWVkUGFydC5pZCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAge3BhcnRzLmxlbmd0aCA+IDEgJiYgKFxuICAgICAgICA8TGlua1xuICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlci8ke2NhdGVnb3J5LmlkfWB9XG4gICAgICAgICAgY2xhc3NOYW1lPVwibXQtMiB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzUwIHB4LTMgcHktMiB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtemluYy0zMDAgaG92ZXI6YmctemluYy04MDAgaG92ZXI6Ym9yZGVyLXppbmMtNjAwIHRyYW5zaXRpb24tY29sb3JzIHRleHQtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIFZpZXcgQWxsICh7cGFydHMubGVuZ3RofSlcbiAgICAgICAgPC9MaW5rPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJMaW5rIiwiUGFydENhcmQiLCJDYXRlZ29yeUNvbHVtbiIsImNhdGVnb3J5IiwicGFydHMiLCJzZWxlY3RlZFBhcnRJZCIsIm9uU2VsZWN0UGFydCIsImRpc3BsYXllZFBhcnQiLCJmaW5kIiwicCIsImlkIiwiZGl2IiwiY2xhc3NOYW1lIiwiaDIiLCJuYW1lIiwibGVuZ3RoIiwic3ZnIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwicGFydCIsInNlbGVjdGVkIiwib25TZWxlY3QiLCJocmVmIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/CategoryColumn.tsx\n")); /***/ }), diff --git a/.next/static/chunks/app/layout.js b/.next/static/chunks/app/layout.js index 08c5260..4a3f013 100644 --- a/.next/static/chunks/app/layout.js +++ b/.next/static/chunks/app/layout.js @@ -25,7 +25,7 @@ eval(__webpack_require__.ts("Promise.resolve(/*! import() eager */).then(__webpa /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"2205c020ffc8\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCIyMjA1YzAyMGZmYzhcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"eebfcdab4246\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJlZWJmY2RhYjQyNDZcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); /***/ }) diff --git a/.next/static/chunks/webpack.js b/.next/static/chunks/webpack.js index ab2643f..0f805fb 100644 --- a/.next/static/chunks/webpack.js +++ b/.next/static/chunks/webpack.js @@ -192,7 +192,7 @@ /******/ /******/ /* webpack/runtime/getFullHash */ /******/ !function() { -/******/ __webpack_require__.h = function() { return "470106d2483fe157"; } +/******/ __webpack_require__.h = function() { return "b9562c6bb83d9ef0"; } /******/ }(); /******/ /******/ /* webpack/runtime/global */ diff --git a/.next/static/css/app/layout.css b/.next/static/css/app/layout.css index 92dd72d..d3858c7 100644 --- a/.next/static/css/app/layout.css +++ b/.next/static/css/app/layout.css @@ -504,6 +504,18 @@ video { --tw-contain-paint: ; --tw-contain-style: ; } +.pointer-events-none { + pointer-events: none; +} +.absolute { + position: absolute; +} +.relative { + position: relative; +} +.inset-0 { + inset: 0px; +} .mx-auto { margin-left: auto; margin-right: auto; @@ -577,6 +589,9 @@ video { .h-full { height: 100%; } +.h-4 { + height: 1rem; +} .min-h-screen { min-height: 100vh; } @@ -586,6 +601,9 @@ video { .w-full { width: 100%; } +.w-4 { + width: 1rem; +} .min-w-0 { min-width: 0px; } @@ -598,9 +616,15 @@ video { .max-w-xl { max-width: 36rem; } +.max-w-4xl { + max-width: 56rem; +} .flex-1 { flex: 1 1 0%; } +.cursor-not-allowed { + cursor: not-allowed; +} .flex-col { flex-direction: column; } @@ -638,12 +662,20 @@ video { margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse))); margin-bottom: calc(0.75rem * var(--tw-space-y-reverse)); } +.space-y-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1rem * var(--tw-space-y-reverse)); +} .overflow-y-auto { overflow-y: auto; } .whitespace-nowrap { white-space: nowrap; } +.break-all { + word-break: break-all; +} .rounded { border-radius: 0.25rem; } @@ -677,6 +709,10 @@ video { --tw-border-opacity: 1; border-color: rgb(39 39 42 / var(--tw-border-opacity)); } +.border-green-500 { + --tw-border-opacity: 1; + border-color: rgb(34 197 94 / var(--tw-border-opacity)); +} .bg-amber-400\/10 { background-color: rgb(251 191 36 / 0.1); } @@ -707,6 +743,9 @@ video { .bg-zinc-950\/80 { background-color: rgb(9 9 11 / 0.8); } +.bg-green-500\/10 { + background-color: rgb(34 197 94 / 0.1); +} .p-1 { padding: 0.25rem; } @@ -754,6 +793,10 @@ video { padding-top: 2rem; padding-bottom: 2rem; } +.px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; +} .pr-1 { padding-right: 0.25rem; } @@ -766,6 +809,12 @@ video { .text-center { text-align: center; } +.text-right { + text-align: right; +} +.font-mono { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} .text-2xl { font-size: 1.5rem; line-height: 2rem; @@ -847,9 +896,19 @@ video { --tw-text-opacity: 1; color: rgb(82 82 91 / var(--tw-text-opacity)); } +.text-green-400 { + --tw-text-opacity: 1; + color: rgb(74 222 128 / var(--tw-text-opacity)); +} .underline { text-decoration-line: underline; } +.opacity-40 { + opacity: 0.4; +} +.opacity-0 { + opacity: 0; +} .filter { filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } @@ -863,6 +922,19 @@ video { transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } +.transition-all { + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition-opacity { + transition-property: opacity; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.duration-200 { + transition-duration: 200ms; +} body { --tw-bg-opacity: 1; @@ -881,6 +953,10 @@ body { border-color: rgb(82 82 91 / var(--tw-border-opacity)); } +.hover\:border-amber-400\/60:hover { + border-color: rgb(251 191 36 / 0.6); +} + .hover\:bg-amber-400\/15:hover { background-color: rgb(251 191 36 / 0.15); } @@ -895,6 +971,10 @@ body { background-color: rgb(39 39 42 / var(--tw-bg-opacity)); } +.hover\:bg-amber-400\/10:hover { + background-color: rgb(251 191 36 / 0.1); +} + .hover\:text-amber-200:hover { --tw-text-opacity: 1; color: rgb(253 230 138 / var(--tw-text-opacity)); @@ -913,6 +993,25 @@ body { opacity: 0.4; } +.group:hover .group-hover\:opacity-100 { + opacity: 1; +} + +@media (min-width: 640px) { + + .sm\:flex-row { + flex-direction: row; + } + + .sm\:items-center { + align-items: center; + } + + .sm\:justify-between { + justify-content: space-between; + } +} + @media (min-width: 768px) { .md\:mt-0 { diff --git a/.next/static/webpack/046d14ac1f24d478.webpack.hot-update.json b/.next/static/webpack/046d14ac1f24d478.webpack.hot-update.json new file mode 100644 index 0000000..31f1cde --- /dev/null +++ b/.next/static/webpack/046d14ac1f24d478.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","app/gunbuilder/page","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/128627853224a2d4.webpack.hot-update.json b/.next/static/webpack/128627853224a2d4.webpack.hot-update.json new file mode 100644 index 0000000..949c8b3 --- /dev/null +++ b/.next/static/webpack/128627853224a2d4.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":["app/_not-found/page"],"m":["(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!","(app-pages-browser)/./node_modules/next/dist/client/components/not-found-error.js"]} \ No newline at end of file diff --git a/.next/static/webpack/3b6503389f6ac034.webpack.hot-update.json b/.next/static/webpack/3b6503389f6ac034.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/.next/static/webpack/3b6503389f6ac034.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/3bebdd7477e09e2a.webpack.hot-update.json b/.next/static/webpack/3bebdd7477e09e2a.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/.next/static/webpack/3bebdd7477e09e2a.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/470106d2483fe157.webpack.hot-update.json b/.next/static/webpack/470106d2483fe157.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/.next/static/webpack/470106d2483fe157.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/51a0251b56f840c5.webpack.hot-update.json b/.next/static/webpack/51a0251b56f840c5.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/.next/static/webpack/51a0251b56f840c5.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/580f64a4930cd520.webpack.hot-update.json b/.next/static/webpack/580f64a4930cd520.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/.next/static/webpack/580f64a4930cd520.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/62829ecc5a9f016d.webpack.hot-update.json b/.next/static/webpack/62829ecc5a9f016d.webpack.hot-update.json new file mode 100644 index 0000000..6a4f8ba --- /dev/null +++ b/.next/static/webpack/62829ecc5a9f016d.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","app/gunbuilder/[categoryId]/page","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/73f26e6e39ca6219.webpack.hot-update.json b/.next/static/webpack/73f26e6e39ca6219.webpack.hot-update.json new file mode 100644 index 0000000..6a4f8ba --- /dev/null +++ b/.next/static/webpack/73f26e6e39ca6219.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","app/gunbuilder/[categoryId]/page","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/7bb4a4e9a866cbdd.webpack.hot-update.json b/.next/static/webpack/7bb4a4e9a866cbdd.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/.next/static/webpack/7bb4a4e9a866cbdd.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/7cec39c7e4aa49e7.webpack.hot-update.json b/.next/static/webpack/7cec39c7e4aa49e7.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/.next/static/webpack/7cec39c7e4aa49e7.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/ac57d1da09eaaba0.webpack.hot-update.json b/.next/static/webpack/ac57d1da09eaaba0.webpack.hot-update.json new file mode 100644 index 0000000..31f1cde --- /dev/null +++ b/.next/static/webpack/ac57d1da09eaaba0.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","app/gunbuilder/page","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/app/gunbuilder/[categoryId]/page.62829ecc5a9f016d.hot-update.js b/.next/static/webpack/app/gunbuilder/[categoryId]/page.62829ecc5a9f016d.hot-update.js new file mode 100644 index 0000000..3bd1e61 --- /dev/null +++ b/.next/static/webpack/app/gunbuilder/[categoryId]/page.62829ecc5a9f016d.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/gunbuilder/[categoryId]/page",{ + +/***/ "(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx": +/*!**********************************************!*\ + !*** ./app/gunbuilder/[categoryId]/page.tsx ***! + \**********************************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ CategoryPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\nfunction CategoryPage() {\n _s();\n const params = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams)();\n const categoryId = params.categoryId;\n const [viewMode, setViewMode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"card\");\n const category = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.find((c)=>c.id === categoryId), [\n categoryId\n ]);\n const parts = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.filter((p)=>p.categoryId === categoryId), [\n categoryId\n ]);\n if (!category) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"Category Not Found\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 31,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-amber-300 hover:text-amber-200 underline\",\n children: \"Return to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 34,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 30,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 29,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 28,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: \"← Back to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 51,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between gap-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)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 59,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n category.name,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: \"Parts\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 63,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 62,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: [\n \"Browse all available \",\n category.name.toLowerCase(),\n \" options for your build.\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 65,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 58,\n columnNumber: 13\n }, this),\n parts.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2 border border-zinc-800 rounded-md p-1 bg-zinc-950/60\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setViewMode(\"card\"),\n className: \"px-3 py-1.5 text-xs font-medium rounded transition-colors \".concat(viewMode === \"card\" ? \"bg-zinc-800 text-zinc-50\" : \"text-zinc-400 hover:text-zinc-300\"),\n \"aria-label\": \"Card view\",\n children: \"Card\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 72,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setViewMode(\"list\"),\n className: \"px-3 py-1.5 text-xs font-medium rounded transition-colors \".concat(viewMode === \"list\" ? \"bg-zinc-800 text-zinc-50\" : \"text-zinc-400 hover:text-zinc-300\"),\n \"aria-label\": \"List view\",\n children: \"List\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 84,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 71,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 57,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 50,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-3 md:p-4\",\n children: parts.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500 text-center py-8\",\n children: \"No parts available for this category yet.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 104,\n columnNumber: 13\n }, this) : viewMode === \"card\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-3 md:grid-cols-2 lg:grid-cols-3\",\n children: parts.map((part)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"group relative border border-zinc-700 rounded-md p-3 bg-zinc-900/50 hover:border-amber-400/60 hover:bg-amber-400/10 transition-all duration-200 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder?select=\".concat(categoryId, \":\").concat(part.id),\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center gap-2 mb-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-zinc-50\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-normal\",\n children: [\n \"— \",\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 121,\n columnNumber: 40\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 120,\n columnNumber: 25\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-xs text-zinc-400 line-clamp-2\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 124,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 119,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 129,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 118,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 114,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/\".concat(categoryId, \"/\").concat(part.id),\n className: \"w-full rounded-md border border-zinc-700 bg-zinc-800/50 px-3 py-2 text-xs font-medium text-zinc-300 hover:bg-zinc-700 hover:border-zinc-600 transition-colors text-center\",\n children: \"View Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 134,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 rounded-md bg-amber-400/10 opacity-0 group-hover:opacity-100 transition-opacity duration-200 pointer-events-none flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-200 tracking-wide\",\n children: \"Add to Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 142,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 141,\n columnNumber: 19\n }, this)\n ]\n }, part.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 110,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 108,\n columnNumber: 13\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: parts.map((part)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"group relative border border-zinc-700 rounded-md p-3 bg-zinc-900/50 hover:border-amber-400/60 hover:bg-amber-400/10 transition-all duration-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 min-w-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder?select=\".concat(categoryId, \":\").concat(part.id),\n className: \"block\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-zinc-50\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-normal\",\n children: [\n \"— \",\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 163,\n columnNumber: 40\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 162,\n columnNumber: 25\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-xs text-zinc-400 line-clamp-1\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 166,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 158,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 157,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 173,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/\".concat(categoryId, \"/\").concat(part.id),\n className: \"rounded-md border border-zinc-700 bg-zinc-800/50 px-3 py-1.5 text-xs font-medium text-zinc-300 hover:bg-zinc-700 hover:border-zinc-600 transition-colors whitespace-nowrap\",\n children: \"View Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 176,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 172,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 156,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 rounded-md bg-amber-400/10 opacity-0 group-hover:opacity-100 transition-opacity duration-200 pointer-events-none flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-200 tracking-wide\",\n children: \"Add to Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 186,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 185,\n columnNumber: 19\n }, this)\n ]\n }, part.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 152,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 150,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 102,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 48,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 47,\n columnNumber: 5\n }, this);\n}\n_s(CategoryPage, \"5PCsUt45I0oNlu6HHaoW7COL+Rc=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams\n ];\n});\n_c = CategoryPage;\nvar _c;\n$RefreshReg$(_c, \"CategoryPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL1tjYXRlZ29yeUlkXS9wYWdlLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFFMEM7QUFDYjtBQUNlO0FBQ2U7QUFLNUMsU0FBU007O0lBQ3RCLE1BQU1DLFNBQVNKLDBEQUFTQTtJQUN4QixNQUFNSyxhQUFhRCxPQUFPQyxVQUFVO0lBQ3BDLE1BQU0sQ0FBQ0MsVUFBVUMsWUFBWSxHQUFHVCwrQ0FBUUEsQ0FBVztJQUVuRCxNQUFNVSxXQUFXWCw4Q0FBT0EsQ0FDdEIsSUFBTUksNkRBQVVBLENBQUNRLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxFQUFFLEtBQUtOLGFBQ3RDO1FBQUNBO0tBQVc7SUFHZCxNQUFNTyxRQUFRZiw4Q0FBT0EsQ0FDbkIsSUFBTUssd0RBQUtBLENBQUNXLE1BQU0sQ0FBQyxDQUFDQyxJQUFNQSxFQUFFVCxVQUFVLEtBQUtBLGFBQzNDO1FBQUNBO0tBQVc7SUFHZCxJQUFJLENBQUNHLFVBQVU7UUFDYixxQkFDRSw4REFBQ087WUFBS0MsV0FBVTtzQkFDZCw0RUFBQ0M7Z0JBQUlELFdBQVU7MEJBQ2IsNEVBQUNDO29CQUFJRCxXQUFVOztzQ0FDYiw4REFBQ0U7NEJBQUdGLFdBQVU7c0NBQTJDOzs7Ozs7c0NBR3pELDhEQUFDakIsaURBQUlBOzRCQUNIb0IsTUFBSzs0QkFDTEgsV0FBVTtzQ0FDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU9YO0lBRUEscUJBQ0UsOERBQUNEO1FBQUtDLFdBQVU7a0JBQ2QsNEVBQUNDO1lBQUlELFdBQVU7OzhCQUViLDhEQUFDSTtvQkFBT0osV0FBVTs7c0NBQ2hCLDhEQUFDakIsaURBQUlBOzRCQUNIb0IsTUFBSzs0QkFDTEgsV0FBVTtzQ0FDWDs7Ozs7O3NDQUdELDhEQUFDQzs0QkFBSUQsV0FBVTs7OENBQ2IsOERBQUNDOztzREFDQyw4REFBQ0g7NENBQUVFLFdBQVU7c0RBQWlFOzs7Ozs7c0RBRzlFLDhEQUFDRTs0Q0FB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QU0sZUFBNkJZLE9BQWQxQixZQUFXLEtBQVcsT0FBUjBCLEtBQUtwQixFQUFFO3dEQUMxQ0ssV0FBVTtrRUFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tEQU1MLDhEQUFDQzt3Q0FBSUQsV0FBVTtrREFDYiw0RUFBQ0M7NENBQUlELFdBQVU7c0RBQXFEOzs7Ozs7Ozs7Ozs7K0JBakNqRWUsS0FBS3BCLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkM5QjtHQTNMd0JSOztRQUNQSCxzREFBU0E7OztLQURGRyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vcGFnZS50c3g/OGI1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB7IHVzZVBhcmFtcyB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIjtcbmltcG9ydCB7IENBVEVHT1JJRVMsIFBBUlRTIH0gZnJvbSBcIkAvZGF0YS9ndW5idWlsZGVyUGFydHNcIjtcbmltcG9ydCB0eXBlIHsgQ2F0ZWdvcnlJZCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcblxudHlwZSBWaWV3TW9kZSA9IFwiY2FyZFwiIHwgXCJsaXN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENhdGVnb3J5UGFnZSgpIHtcbiAgY29uc3QgcGFyYW1zID0gdXNlUGFyYW1zKCk7XG4gIGNvbnN0IGNhdGVnb3J5SWQgPSBwYXJhbXMuY2F0ZWdvcnlJZCBhcyBDYXRlZ29yeUlkO1xuICBjb25zdCBbdmlld01vZGUsIHNldFZpZXdNb2RlXSA9IHVzZVN0YXRlPFZpZXdNb2RlPihcImNhcmRcIik7XG5cbiAgY29uc3QgY2F0ZWdvcnkgPSB1c2VNZW1vKFxuICAgICgpID0+IENBVEVHT1JJRVMuZmluZCgoYykgPT4gYy5pZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW2NhdGVnb3J5SWRdLFxuICApO1xuXG4gIGNvbnN0IHBhcnRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBQQVJUUy5maWx0ZXIoKHApID0+IHAuY2F0ZWdvcnlJZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW2NhdGVnb3J5SWRdLFxuICApO1xuXG4gIGlmICghY2F0ZWdvcnkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gbWF4LXctNnhsIHB4LTQgcHktNiBsZzpweS0xMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtemluYy01MCBtYi00XCI+XG4gICAgICAgICAgICAgIENhdGVnb3J5IE5vdCBGb3VuZFxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgIGhyZWY9XCIvZ3VuYnVpbGRlclwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwIGhvdmVyOnRleHQtYW1iZXItMjAwIHVuZGVybGluZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJldHVybiB0byBHdW5idWlsZGVyXG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYWluPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxtYWluIGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ibGFjayB0ZXh0LXppbmMtNTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtYXgtdy02eGwgcHgtNCBweS02IGxnOnB5LTEwXCI+XG4gICAgICAgIHsvKiBIZWFkZXIgKi99XG4gICAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwibWItNlwiPlxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBocmVmPVwiL2d1bmJ1aWxkZXJcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0zMDAgbWItNCBpbmxpbmUtYmxvY2tcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIOKGkCBCYWNrIHRvIEd1bmJ1aWxkZXJcbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBnYXAtNFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjJlbV0gdXBwZXJjYXNlIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgICBTaGFkb3cgU3RhbmRhcmRcbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LTJ4bCBtZDp0ZXh0LTN4bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0XCI+XG4gICAgICAgICAgICAgICAge2NhdGVnb3J5Lm5hbWV9IDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwXCI+UGFydHM8L3NwYW4+XG4gICAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTIgdGV4dC1zbSB0ZXh0LXppbmMtNDAwIG1heC13LXhsXCI+XG4gICAgICAgICAgICAgICAgQnJvd3NlIGFsbCBhdmFpbGFibGUge2NhdGVnb3J5Lm5hbWUudG9Mb3dlckNhc2UoKX0gb3B0aW9ucyBmb3IgeW91clxuICAgICAgICAgICAgICAgIGJ1aWxkLlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtwYXJ0cy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0yIGJvcmRlciBib3JkZXItemluYy04MDAgcm91bmRlZC1tZCBwLTEgYmctemluYy05NTAvNjBcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFZpZXdNb2RlKFwiY2FyZFwiKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB4LTMgcHktMS41IHRleHQteHMgZm9udC1tZWRpdW0gcm91bmRlZCB0cmFuc2l0aW9uLWNvbG9ycyAke1xuICAgICAgICAgICAgICAgICAgICB2aWV3TW9kZSA9PT0gXCJjYXJkXCJcbiAgICAgICAgICAgICAgICAgICAgICA/IFwiYmctemluYy04MDAgdGV4dC16aW5jLTUwXCJcbiAgICAgICAgICAgICAgICAgICAgICA6IFwidGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMzAwXCJcbiAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNhcmQgdmlld1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQ2FyZFxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0Vmlld01vZGUoXCJsaXN0XCIpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHgtMyBweS0xLjUgdGV4dC14cyBmb250LW1lZGl1bSByb3VuZGVkIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgICAgIHZpZXdNb2RlID09PSBcImxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgID8gXCJiZy16aW5jLTgwMCB0ZXh0LXppbmMtNTBcIlxuICAgICAgICAgICAgICAgICAgICAgIDogXCJ0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0zMDBcIlxuICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiTGlzdCB2aWV3XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBMaXN0XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgey8qIFBhcnRzIEdyaWQvTGlzdCAqL31cbiAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtMyBtZDpwLTRcIj5cbiAgICAgICAgICB7cGFydHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXppbmMtNTAwIHRleHQtY2VudGVyIHB5LThcIj5cbiAgICAgICAgICAgICAgTm8gcGFydHMgYXZhaWxhYmxlIGZvciB0aGlzIGNhdGVnb3J5IHlldC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICApIDogdmlld01vZGUgPT09IFwiY2FyZFwiID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC0zIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zXCI+XG4gICAgICAgICAgICAgIHtwYXJ0cy5tYXAoKHBhcnQpID0+IChcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBrZXk9e3BhcnQuaWR9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJncm91cCByZWxhdGl2ZSBib3JkZXIgYm9yZGVyLXppbmMtNzAwIHJvdW5kZWQtbWQgcC0zIGJnLXppbmMtOTAwLzUwIGhvdmVyOmJvcmRlci1hbWJlci00MDAvNjAgaG92ZXI6YmctYW1iZXItNDAwLzEwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCBmbGV4IGZsZXgtY29sXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICBocmVmPXtgL2d1bmJ1aWxkZXI/c2VsZWN0PSR7Y2F0ZWdvcnlJZH06JHtwYXJ0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC0yIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0LmJyYW5kfSA8c3BhbiBjbGFzc05hbWU9XCJmb250LW5vcm1hbFwiPuKAlCB7cGFydC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0xIHRleHQteHMgdGV4dC16aW5jLTQwMCBsaW5lLWNsYW1wLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5ub3Rlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMCB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgJHtwYXJ0LnByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyLyR7Y2F0ZWdvcnlJZH0vJHtwYXJ0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy04MDAvNTAgcHgtMyBweS0yIHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTcwMCBob3Zlcjpib3JkZXItemluYy02MDAgdHJhbnNpdGlvbi1jb2xvcnMgdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBWaWV3IERldGFpbHNcbiAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgIHsvKiBIb3ZlciBPdmVybGF5ICovfVxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIHJvdW5kZWQtbWQgYmctYW1iZXItNDAwLzEwIG9wYWNpdHktMCBncm91cC1ob3ZlcjpvcGFjaXR5LTEwMCB0cmFuc2l0aW9uLW9wYWNpdHkgZHVyYXRpb24tMjAwIHBvaW50ZXItZXZlbnRzLW5vbmUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0yMDAgdHJhY2tpbmctd2lkZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIEFkZCB0byBCdWlsZFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICAgICAgICB7cGFydHMubWFwKChwYXJ0KSA9PiAoXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAga2V5PXtwYXJ0LmlkfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZ3JvdXAgcmVsYXRpdmUgYm9yZGVyIGJvcmRlci16aW5jLTcwMCByb3VuZGVkLW1kIHAtMyBiZy16aW5jLTkwMC81MCBob3Zlcjpib3JkZXItYW1iZXItNDAwLzYwIGhvdmVyOmJnLWFtYmVyLTQwMC8xMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG1pbi13LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyP3NlbGVjdD0ke2NhdGVnb3J5SWR9OiR7cGFydC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5icmFuZH0gPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1ub3JtYWxcIj7igJQge3BhcnQubmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0Lm5vdGVzICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LXhzIHRleHQtemluYy00MDAgbGluZS1jbGFtcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMzAwIHdoaXRlc3BhY2Utbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAke3BhcnQucHJpY2UudG9GaXhlZCgyKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyLyR7Y2F0ZWdvcnlJZH0vJHtwYXJ0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy04MDAvNTAgcHgtMyBweS0xLjUgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtMzAwIGhvdmVyOmJnLXppbmMtNzAwIGhvdmVyOmJvcmRlci16aW5jLTYwMCB0cmFuc2l0aW9uLWNvbG9ycyB3aGl0ZXNwYWNlLW5vd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgVmlldyBEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgey8qIEhvdmVyIE92ZXJsYXkgKi99XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgcm91bmRlZC1tZCBiZy1hbWJlci00MDAvMTAgb3BhY2l0eS0wIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi0yMDAgcG9pbnRlci1ldmVudHMtbm9uZSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTIwMCB0cmFja2luZy13aWRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQWRkIHRvIEJ1aWxkXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYWluPlxuICApO1xufVxuXG4iXSwibmFtZXMiOlsidXNlTWVtbyIsInVzZVN0YXRlIiwiTGluayIsInVzZVBhcmFtcyIsIkNBVEVHT1JJRVMiLCJQQVJUUyIsIkNhdGVnb3J5UGFnZSIsInBhcmFtcyIsImNhdGVnb3J5SWQiLCJ2aWV3TW9kZSIsInNldFZpZXdNb2RlIiwiY2F0ZWdvcnkiLCJmaW5kIiwiYyIsImlkIiwicGFydHMiLCJmaWx0ZXIiLCJwIiwibWFpbiIsImNsYXNzTmFtZSIsImRpdiIsImgxIiwiaHJlZiIsImhlYWRlciIsIm5hbWUiLCJzcGFuIiwidG9Mb3dlckNhc2UiLCJsZW5ndGgiLCJidXR0b24iLCJ0eXBlIiwib25DbGljayIsImFyaWEtbGFiZWwiLCJzZWN0aW9uIiwibWFwIiwicGFydCIsImJyYW5kIiwibm90ZXMiLCJwcmljZSIsInRvRml4ZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/gunbuilder/[categoryId]/page.73f26e6e39ca6219.hot-update.js b/.next/static/webpack/app/gunbuilder/[categoryId]/page.73f26e6e39ca6219.hot-update.js new file mode 100644 index 0000000..20b8059 --- /dev/null +++ b/.next/static/webpack/app/gunbuilder/[categoryId]/page.73f26e6e39ca6219.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/gunbuilder/[categoryId]/page",{ + +/***/ "(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx": +/*!**********************************************!*\ + !*** ./app/gunbuilder/[categoryId]/page.tsx ***! + \**********************************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ CategoryPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\nfunction CategoryPage() {\n _s();\n const params = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams)();\n const categoryId = params.categoryId;\n const [viewMode, setViewMode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"card\");\n const category = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.find((c)=>c.id === categoryId), [\n categoryId\n ]);\n const parts = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.filter((p)=>p.categoryId === categoryId), [\n categoryId\n ]);\n if (!category) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"Category Not Found\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 31,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-amber-300 hover:text-amber-200 underline\",\n children: \"Return to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 34,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 30,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 29,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 28,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: \"← Back to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 51,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between gap-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)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 59,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n category.name,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: \"Parts\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 63,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 62,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: [\n \"Browse all available \",\n category.name.toLowerCase(),\n \" options for your build.\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 65,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 58,\n columnNumber: 13\n }, this),\n parts.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2 border border-zinc-800 rounded-md p-1 bg-zinc-950/60\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setViewMode(\"card\"),\n className: \"px-3 py-1.5 text-xs font-medium rounded transition-colors \".concat(viewMode === \"card\" ? \"bg-zinc-800 text-zinc-50\" : \"text-zinc-400 hover:text-zinc-300\"),\n \"aria-label\": \"Card view\",\n children: \"Card\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 72,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setViewMode(\"list\"),\n className: \"px-3 py-1.5 text-xs font-medium rounded transition-colors \".concat(viewMode === \"list\" ? \"bg-zinc-800 text-zinc-50\" : \"text-zinc-400 hover:text-zinc-300\"),\n \"aria-label\": \"List view\",\n children: \"List\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 84,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 71,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 57,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 50,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-3 md:p-4\",\n children: parts.length === 0 ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500 text-center py-8\",\n children: \"No parts available for this category yet.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 104,\n columnNumber: 13\n }, this) : viewMode === \"card\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-3 md:grid-cols-2 lg:grid-cols-3\",\n children: parts.map((part)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"group relative border border-zinc-700 rounded-md p-3 bg-zinc-900/50 hover:border-amber-400/60 hover:bg-amber-400/10 transition-all duration-200 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder?select=\".concat(categoryId, \":\").concat(part.id),\n className: \"flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between items-center gap-2 mb-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-zinc-50\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-normal\",\n children: [\n \"— \",\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 121,\n columnNumber: 40\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 120,\n columnNumber: 25\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-xs text-zinc-400 line-clamp-2\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 124,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 119,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 129,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 118,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 114,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/\".concat(categoryId, \"/\").concat(part.id),\n className: \"w-full rounded-md border border-zinc-700 bg-zinc-800/50 px-3 py-2 text-xs font-medium text-zinc-300 hover:bg-zinc-700 hover:border-zinc-600 transition-colors text-center\",\n children: \"View Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 134,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 rounded-md bg-amber-400/10 opacity-0 group-hover:opacity-100 transition-opacity duration-200 pointer-events-none flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-200 tracking-wide\",\n children: \"Add to Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 142,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 141,\n columnNumber: 19\n }, this)\n ]\n }, part.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 110,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 108,\n columnNumber: 13\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: parts.map((part)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-zinc-700 rounded-md p-3 bg-zinc-900/50 hover:border-zinc-600 transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 min-w-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder?select=\".concat(categoryId, \":\").concat(part.id),\n className: \"block\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-zinc-50\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-normal\",\n children: [\n \"— \",\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 163,\n columnNumber: 40\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 162,\n columnNumber: 25\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-xs text-zinc-400 line-clamp-1\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 166,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 158,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 157,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 173,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/\".concat(categoryId, \"/\").concat(part.id),\n className: \"rounded-md border border-zinc-700 bg-zinc-800/50 px-3 py-1.5 text-xs font-medium text-zinc-300 hover:bg-zinc-700 hover:border-zinc-600 transition-colors whitespace-nowrap\",\n children: \"View Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 176,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 172,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 156,\n columnNumber: 19\n }, this)\n }, part.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 152,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 150,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 102,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 48,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx\",\n lineNumber: 47,\n columnNumber: 5\n }, this);\n}\n_s(CategoryPage, \"5PCsUt45I0oNlu6HHaoW7COL+Rc=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams\n ];\n});\n_c = CategoryPage;\nvar _c;\n$RefreshReg$(_c, \"CategoryPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL1tjYXRlZ29yeUlkXS9wYWdlLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFFMEM7QUFDYjtBQUNlO0FBQ2U7QUFLNUMsU0FBU007O0lBQ3RCLE1BQU1DLFNBQVNKLDBEQUFTQTtJQUN4QixNQUFNSyxhQUFhRCxPQUFPQyxVQUFVO0lBQ3BDLE1BQU0sQ0FBQ0MsVUFBVUMsWUFBWSxHQUFHVCwrQ0FBUUEsQ0FBVztJQUVuRCxNQUFNVSxXQUFXWCw4Q0FBT0EsQ0FDdEIsSUFBTUksNkRBQVVBLENBQUNRLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxFQUFFLEtBQUtOLGFBQ3RDO1FBQUNBO0tBQVc7SUFHZCxNQUFNTyxRQUFRZiw4Q0FBT0EsQ0FDbkIsSUFBTUssd0RBQUtBLENBQUNXLE1BQU0sQ0FBQyxDQUFDQyxJQUFNQSxFQUFFVCxVQUFVLEtBQUtBLGFBQzNDO1FBQUNBO0tBQVc7SUFHZCxJQUFJLENBQUNHLFVBQVU7UUFDYixxQkFDRSw4REFBQ087WUFBS0MsV0FBVTtzQkFDZCw0RUFBQ0M7Z0JBQUlELFdBQVU7MEJBQ2IsNEVBQUNDO29CQUFJRCxXQUFVOztzQ0FDYiw4REFBQ0U7NEJBQUdGLFdBQVU7c0NBQTJDOzs7Ozs7c0NBR3pELDhEQUFDakIsaURBQUlBOzRCQUNIb0IsTUFBSzs0QkFDTEgsV0FBVTtzQ0FDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU9YO0lBRUEscUJBQ0UsOERBQUNEO1FBQUtDLFdBQVU7a0JBQ2QsNEVBQUNDO1lBQUlELFdBQVU7OzhCQUViLDhEQUFDSTtvQkFBT0osV0FBVTs7c0NBQ2hCLDhEQUFDakIsaURBQUlBOzRCQUNIb0IsTUFBSzs0QkFDTEgsV0FBVTtzQ0FDWDs7Ozs7O3NDQUdELDhEQUFDQzs0QkFBSUQsV0FBVTs7OENBQ2IsOERBQUNDOztzREFDQyw4REFBQ0g7NENBQUVFLFdBQVU7c0RBQWlFOzs7Ozs7c0RBRzlFLDhEQUFDRTs0Q0FB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TSxlQUE2QlksT0FBZDFCLFlBQVcsS0FBVyxPQUFSMEIsS0FBS3BCLEVBQUU7b0RBQzFDSyxXQUFVOzhEQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7K0JBMUJBZSxLQUFLcEIsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QzlCO0dBckx3QlI7O1FBQ1BILHNEQUFTQTs7O0tBREZHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2FwcC9ndW5idWlsZGVyL1tjYXRlZ29yeUlkXS9wYWdlLnRzeD84YjVkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgeyB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xuaW1wb3J0IHsgdXNlUGFyYW1zIH0gZnJvbSBcIm5leHQvbmF2aWdhdGlvblwiO1xuaW1wb3J0IHsgQ0FURUdPUklFUywgUEFSVFMgfSBmcm9tIFwiQC9kYXRhL2d1bmJ1aWxkZXJQYXJ0c1wiO1xuaW1wb3J0IHR5cGUgeyBDYXRlZ29yeUlkIH0gZnJvbSBcIkAvdHlwZXMvZ3VuYnVpbGRlclwiO1xuXG50eXBlIFZpZXdNb2RlID0gXCJjYXJkXCIgfCBcImxpc3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2F0ZWdvcnlQYWdlKCkge1xuICBjb25zdCBwYXJhbXMgPSB1c2VQYXJhbXMoKTtcbiAgY29uc3QgY2F0ZWdvcnlJZCA9IHBhcmFtcy5jYXRlZ29yeUlkIGFzIENhdGVnb3J5SWQ7XG4gIGNvbnN0IFt2aWV3TW9kZSwgc2V0Vmlld01vZGVdID0gdXNlU3RhdGU8Vmlld01vZGU+KFwiY2FyZFwiKTtcblxuICBjb25zdCBjYXRlZ29yeSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gQ0FURUdPUklFUy5maW5kKChjKSA9PiBjLmlkID09PSBjYXRlZ29yeUlkKSxcbiAgICBbY2F0ZWdvcnlJZF0sXG4gICk7XG5cbiAgY29uc3QgcGFydHMgPSB1c2VNZW1vKFxuICAgICgpID0+IFBBUlRTLmZpbHRlcigocCkgPT4gcC5jYXRlZ29yeUlkID09PSBjYXRlZ29yeUlkKSxcbiAgICBbY2F0ZWdvcnlJZF0sXG4gICk7XG5cbiAgaWYgKCFjYXRlZ29yeSkge1xuICAgIHJldHVybiAoXG4gICAgICA8bWFpbiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctYmxhY2sgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtYXgtdy02eGwgcHgtNCBweS02IGxnOnB5LTEwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwIG1iLTRcIj5cbiAgICAgICAgICAgICAgQ2F0ZWdvcnkgTm90IEZvdW5kXG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9ndW5idWlsZGVyXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDAgaG92ZXI6dGV4dC1hbWJlci0yMDAgdW5kZXJsaW5lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmV0dXJuIHRvIEd1bmJ1aWxkZXJcbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21haW4+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIG1heC13LTZ4bCBweC00IHB5LTYgbGc6cHktMTBcIj5cbiAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJtYi02XCI+XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGhyZWY9XCIvZ3VuYnVpbGRlclwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy00MDAgaG92ZXI6dGV4dC16aW5jLTMwMCBtYi00IGlubGluZS1ibG9ja1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAg4oaQIEJhY2sgdG8gR3VuYnVpbGRlclxuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIGdhcC00XCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWzAuMmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICAgIFNoYWRvdyBTdGFuZGFyZFxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJtdC0xIHRleHQtMnhsIG1kOnRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRcIj5cbiAgICAgICAgICAgICAgICB7Y2F0ZWdvcnkubmFtZX0gPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDBcIj5QYXJ0czwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMiB0ZXh0LXNtIHRleHQtemluYy00MDAgbWF4LXcteGxcIj5cbiAgICAgICAgICAgICAgICBCcm93c2UgYWxsIGF2YWlsYWJsZSB7Y2F0ZWdvcnkubmFtZS50b0xvd2VyQ2FzZSgpfSBvcHRpb25zIGZvciB5b3VyXG4gICAgICAgICAgICAgICAgYnVpbGQuXG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAge3BhcnRzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZ2FwLTIgYm9yZGVyIGJvcmRlci16aW5jLTgwMCByb3VuZGVkLW1kIHAtMSBiZy16aW5jLTk1MC82MFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0Vmlld01vZGUoXCJjYXJkXCIpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHgtMyBweS0xLjUgdGV4dC14cyBmb250LW1lZGl1bSByb3VuZGVkIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgICAgIHZpZXdNb2RlID09PSBcImNhcmRcIlxuICAgICAgICAgICAgICAgICAgICAgID8gXCJiZy16aW5jLTgwMCB0ZXh0LXppbmMtNTBcIlxuICAgICAgICAgICAgICAgICAgICAgIDogXCJ0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0zMDBcIlxuICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2FyZCB2aWV3XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBDYXJkXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRWaWV3TW9kZShcImxpc3RcIil9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BweC0zIHB5LTEuNSB0ZXh0LXhzIGZvbnQtbWVkaXVtIHJvdW5kZWQgdHJhbnNpdGlvbi1jb2xvcnMgJHtcbiAgICAgICAgICAgICAgICAgICAgdmlld01vZGUgPT09IFwibGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgPyBcImJnLXppbmMtODAwIHRleHQtemluYy01MFwiXG4gICAgICAgICAgICAgICAgICAgICAgOiBcInRleHQtemluYy00MDAgaG92ZXI6dGV4dC16aW5jLTMwMFwiXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJMaXN0IHZpZXdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIExpc3RcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICB7LyogUGFydHMgR3JpZC9MaXN0ICovfVxuICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItemluYy04MDAgYmctemluYy05NTAvNjAgcC0zIG1kOnAtNFwiPlxuICAgICAgICAgIHtwYXJ0cy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtemluYy01MDAgdGV4dC1jZW50ZXIgcHktOFwiPlxuICAgICAgICAgICAgICBObyBwYXJ0cyBhdmFpbGFibGUgZm9yIHRoaXMgY2F0ZWdvcnkgeWV0LlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICkgOiB2aWV3TW9kZSA9PT0gXCJjYXJkXCIgPyAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ2FwLTMgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTNcIj5cbiAgICAgICAgICAgICAge3BhcnRzLm1hcCgocGFydCkgPT4gKFxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGtleT17cGFydC5pZH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImdyb3VwIHJlbGF0aXZlIGJvcmRlciBib3JkZXItemluYy03MDAgcm91bmRlZC1tZCBwLTMgYmctemluYy05MDAvNTAgaG92ZXI6Ym9yZGVyLWFtYmVyLTQwMC82MCBob3ZlcjpiZy1hbWJlci00MDAvMTAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwIGZsZXggZmxleC1jb2xcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlcj9zZWxlY3Q9JHtjYXRlZ29yeUlkfToke3BhcnQuaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleC0xXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgZ2FwLTIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQuYnJhbmR9IDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbm9ybWFsXCI+4oCUIHtwYXJ0Lm5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5ub3RlcyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTEgdGV4dC14cyB0ZXh0LXppbmMtNDAwIGxpbmUtY2xhbXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0Lm5vdGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMzAwIHdoaXRlc3BhY2Utbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAke3BhcnQucHJpY2UudG9GaXhlZCgyKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICBocmVmPXtgL2d1bmJ1aWxkZXIvJHtjYXRlZ29yeUlkfS8ke3BhcnQuaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTgwMC81MCBweC0zIHB5LTIgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtMzAwIGhvdmVyOmJnLXppbmMtNzAwIGhvdmVyOmJvcmRlci16aW5jLTYwMCB0cmFuc2l0aW9uLWNvbG9ycyB0ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIFZpZXcgRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgICAgey8qIEhvdmVyIE92ZXJsYXkgKi99XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgcm91bmRlZC1tZCBiZy1hbWJlci00MDAvMTAgb3BhY2l0eS0wIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi0yMDAgcG9pbnRlci1ldmVudHMtbm9uZSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTIwMCB0cmFja2luZy13aWRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQWRkIHRvIEJ1aWxkXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0yXCI+XG4gICAgICAgICAgICAgIHtwYXJ0cy5tYXAoKHBhcnQpID0+IChcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBrZXk9e3BhcnQuaWR9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJib3JkZXIgYm9yZGVyLXppbmMtNzAwIHJvdW5kZWQtbWQgcC0zIGJnLXppbmMtOTAwLzUwIGhvdmVyOmJvcmRlci16aW5jLTYwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgbWluLXctMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtgL2d1bmJ1aWxkZXI/c2VsZWN0PSR7Y2F0ZWdvcnlJZH06JHtwYXJ0LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0LmJyYW5kfSA8c3BhbiBjbGFzc05hbWU9XCJmb250LW5vcm1hbFwiPuKAlCB7cGFydC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0xIHRleHQteHMgdGV4dC16aW5jLTQwMCBsaW5lLWNsYW1wLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5ub3Rlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0zMDAgd2hpdGVzcGFjZS1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICR7cGFydC5wcmljZS50b0ZpeGVkKDIpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtgL2d1bmJ1aWxkZXIvJHtjYXRlZ29yeUlkfS8ke3BhcnQuaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTgwMC81MCBweC0zIHB5LTEuNSB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtemluYy0zMDAgaG92ZXI6YmctemluYy03MDAgaG92ZXI6Ym9yZGVyLXppbmMtNjAwIHRyYW5zaXRpb24tY29sb3JzIHdoaXRlc3BhY2Utbm93cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBWaWV3IERldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYWluPlxuICApO1xufVxuXG4iXSwibmFtZXMiOlsidXNlTWVtbyIsInVzZVN0YXRlIiwiTGluayIsInVzZVBhcmFtcyIsIkNBVEVHT1JJRVMiLCJQQVJUUyIsIkNhdGVnb3J5UGFnZSIsInBhcmFtcyIsImNhdGVnb3J5SWQiLCJ2aWV3TW9kZSIsInNldFZpZXdNb2RlIiwiY2F0ZWdvcnkiLCJmaW5kIiwiYyIsImlkIiwicGFydHMiLCJmaWx0ZXIiLCJwIiwibWFpbiIsImNsYXNzTmFtZSIsImRpdiIsImgxIiwiaHJlZiIsImhlYWRlciIsIm5hbWUiLCJzcGFuIiwidG9Mb3dlckNhc2UiLCJsZW5ndGgiLCJidXR0b24iLCJ0eXBlIiwib25DbGljayIsImFyaWEtbGFiZWwiLCJzZWN0aW9uIiwibWFwIiwicGFydCIsImJyYW5kIiwibm90ZXMiLCJwcmljZSIsInRvRml4ZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/gunbuilder/page.046d14ac1f24d478.hot-update.js b/.next/static/webpack/app/gunbuilder/page.046d14ac1f24d478.hot-update.js new file mode 100644 index 0000000..baa9868 --- /dev/null +++ b/.next/static/webpack/app/gunbuilder/page.046d14ac1f24d478.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/gunbuilder/page",{ + +/***/ "(app-pages-browser)/./components/CategoryColumn.tsx": +/*!***************************************!*\ + !*** ./components/CategoryColumn.tsx ***! + \***************************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CategoryColumn: function() { return /* binding */ CategoryColumn; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var _components_PartCard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/PartCard */ \"(app-pages-browser)/./components/PartCard.tsx\");\n/* __next_internal_client_entry_do_not_use__ CategoryColumn auto */ \n\n\nfunction CategoryColumn(param) {\n let { category, parts, selectedPartId, onSelectPart } = param;\n // Show selected part if available, otherwise show placeholder\n const displayedPart = selectedPartId ? parts.find((p)=>p.id === selectedPartId) : null;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.15em] text-zinc-400 uppercase\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 28,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 27,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-y-auto pr-1\",\n children: [\n parts.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500\",\n children: \"No parts yet for this category.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 34,\n columnNumber: 11\n }, this),\n !displayedPart && parts.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full border border-zinc-700 rounded-md p-3 mb-2 text-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500 flex items-center justify-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-4 h-4\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M12 4v16m8-8H4\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 45,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 39,\n columnNumber: 15\n }, this),\n \"Choose a Part\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 38,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 37,\n columnNumber: 11\n }, this),\n displayedPart && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_PartCard__WEBPACK_IMPORTED_MODULE_2__.PartCard, {\n part: displayedPart,\n selected: displayedPart.id === selectedPartId,\n onSelect: ()=>onSelectPart(displayedPart.id)\n }, displayedPart.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 57,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 32,\n columnNumber: 7\n }, this),\n parts.length > 1 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/gunbuilder/\".concat(category.id),\n className: \"mt-2 w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-3 py-2 text-xs font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors text-center\",\n children: [\n \"View All (\",\n parts.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 66,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 26,\n columnNumber: 5\n }, this);\n}\n_c = CategoryColumn;\nvar _c;\n$RefreshReg$(_c, \"CategoryColumn\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvQ2F0ZWdvcnlDb2x1bW4udHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRTZCO0FBRW9CO0FBUzFDLFNBQVNFLGVBQWUsS0FLVDtRQUxTLEVBQzdCQyxRQUFRLEVBQ1JDLEtBQUssRUFDTEMsY0FBYyxFQUNkQyxZQUFZLEVBQ1EsR0FMUztJQU03Qiw4REFBOEQ7SUFDOUQsTUFBTUMsZ0JBQWdCRixpQkFDbEJELE1BQU1JLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxFQUFFLEtBQUtMLGtCQUMzQjtJQUVKLHFCQUNFLDhEQUFDTTtRQUFJQyxXQUFVOzswQkFDYiw4REFBQ0Q7Z0JBQUlDLFdBQVU7MEJBQ2IsNEVBQUNDO29CQUFHRCxXQUFVOzhCQUNYVCxTQUFTVyxJQUFJOzs7Ozs7Ozs7OzswQkFHbEIsOERBQUNIO2dCQUFJQyxXQUFVOztvQkFDWlIsTUFBTVcsTUFBTSxLQUFLLG1CQUNoQiw4REFBQ047d0JBQUVHLFdBQVU7a0NBQXdCOzs7Ozs7b0JBRXRDLENBQUNMLGlCQUFpQkgsTUFBTVcsTUFBTSxHQUFHLG1CQUNoQyw4REFBQ0o7d0JBQUlDLFdBQVU7a0NBQ2IsNEVBQUNIOzRCQUFFRyxXQUFVOzs4Q0FDWCw4REFBQ0k7b0NBQ0NKLFdBQVU7b0NBQ1ZLLE1BQUs7b0NBQ0xDLFFBQU87b0NBQ1BDLFNBQVE7OENBRVIsNEVBQUNDO3dDQUNDQyxlQUFjO3dDQUNkQyxnQkFBZTt3Q0FDZkMsYUFBYTt3Q0FDYkMsR0FBRTs7Ozs7Ozs7Ozs7Z0NBRUE7Ozs7Ozs7Ozs7OztvQkFLWGpCLCtCQUNDLDhEQUFDTiwwREFBUUE7d0JBRVB3QixNQUFNbEI7d0JBQ05tQixVQUFVbkIsY0FBY0csRUFBRSxLQUFLTDt3QkFDL0JzQixVQUFVLElBQU1yQixhQUFhQyxjQUFjRyxFQUFFO3VCQUh4Q0gsY0FBY0csRUFBRTs7Ozs7Ozs7Ozs7WUFPMUJOLE1BQU1XLE1BQU0sR0FBRyxtQkFDZCw4REFBQ2YsaURBQUlBO2dCQUNINEIsTUFBTSxlQUEyQixPQUFaekIsU0FBU08sRUFBRTtnQkFDaENFLFdBQVU7O29CQUNYO29CQUNZUixNQUFNVyxNQUFNO29CQUFDOzs7Ozs7Ozs7Ozs7O0FBS2xDO0tBN0RnQmIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vY29tcG9uZW50cy9DYXRlZ29yeUNvbHVtbi50c3g/OWMxOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xuaW1wb3J0IHR5cGUgeyBDYXRlZ29yeSwgUGFydCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcbmltcG9ydCB7IFBhcnRDYXJkIH0gZnJvbSBcIkAvY29tcG9uZW50cy9QYXJ0Q2FyZFwiO1xuXG5pbnRlcmZhY2UgQ2F0ZWdvcnlDb2x1bW5Qcm9wcyB7XG4gIGNhdGVnb3J5OiBDYXRlZ29yeTtcbiAgcGFydHM6IFBhcnRbXTtcbiAgc2VsZWN0ZWRQYXJ0SWQ/OiBzdHJpbmc7XG4gIG9uU2VsZWN0UGFydDogKHBhcnRJZDogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2F0ZWdvcnlDb2x1bW4oe1xuICBjYXRlZ29yeSxcbiAgcGFydHMsXG4gIHNlbGVjdGVkUGFydElkLFxuICBvblNlbGVjdFBhcnQsXG59OiBDYXRlZ29yeUNvbHVtblByb3BzKSB7XG4gIC8vIFNob3cgc2VsZWN0ZWQgcGFydCBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBzaG93IHBsYWNlaG9sZGVyXG4gIGNvbnN0IGRpc3BsYXllZFBhcnQgPSBzZWxlY3RlZFBhcnRJZFxuICAgID8gcGFydHMuZmluZCgocCkgPT4gcC5pZCA9PT0gc2VsZWN0ZWRQYXJ0SWQpXG4gICAgOiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGgtZnVsbFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi0zXCI+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWzAuMTVlbV0gdGV4dC16aW5jLTQwMCB1cHBlcmNhc2VcIj5cbiAgICAgICAgICB7Y2F0ZWdvcnkubmFtZX1cbiAgICAgICAgPC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgb3ZlcmZsb3cteS1hdXRvIHByLTFcIj5cbiAgICAgICAge3BhcnRzLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+Tm8gcGFydHMgeWV0IGZvciB0aGlzIGNhdGVnb3J5LjwvcD5cbiAgICAgICAgKX1cbiAgICAgICAgeyFkaXNwbGF5ZWRQYXJ0ICYmIHBhcnRzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGJvcmRlciBib3JkZXItemluYy03MDAgcm91bmRlZC1tZCBwLTMgbWItMiB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXppbmMtNTAwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTQgaC00XCJcbiAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTIgNHYxNm04LThINFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIENob29zZSBhIFBhcnRcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAge2Rpc3BsYXllZFBhcnQgJiYgKFxuICAgICAgICAgIDxQYXJ0Q2FyZFxuICAgICAgICAgICAga2V5PXtkaXNwbGF5ZWRQYXJ0LmlkfVxuICAgICAgICAgICAgcGFydD17ZGlzcGxheWVkUGFydH1cbiAgICAgICAgICAgIHNlbGVjdGVkPXtkaXNwbGF5ZWRQYXJ0LmlkID09PSBzZWxlY3RlZFBhcnRJZH1cbiAgICAgICAgICAgIG9uU2VsZWN0PXsoKSA9PiBvblNlbGVjdFBhcnQoZGlzcGxheWVkUGFydC5pZCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAge3BhcnRzLmxlbmd0aCA+IDEgJiYgKFxuICAgICAgICA8TGlua1xuICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlci8ke2NhdGVnb3J5LmlkfWB9XG4gICAgICAgICAgY2xhc3NOYW1lPVwibXQtMiB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzUwIHB4LTMgcHktMiB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtemluYy0zMDAgaG92ZXI6YmctemluYy04MDAgaG92ZXI6Ym9yZGVyLXppbmMtNjAwIHRyYW5zaXRpb24tY29sb3JzIHRleHQtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIFZpZXcgQWxsICh7cGFydHMubGVuZ3RofSlcbiAgICAgICAgPC9MaW5rPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJMaW5rIiwiUGFydENhcmQiLCJDYXRlZ29yeUNvbHVtbiIsImNhdGVnb3J5IiwicGFydHMiLCJzZWxlY3RlZFBhcnRJZCIsIm9uU2VsZWN0UGFydCIsImRpc3BsYXllZFBhcnQiLCJmaW5kIiwicCIsImlkIiwiZGl2IiwiY2xhc3NOYW1lIiwiaDIiLCJuYW1lIiwibGVuZ3RoIiwic3ZnIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwicGFydCIsInNlbGVjdGVkIiwib25TZWxlY3QiLCJocmVmIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/CategoryColumn.tsx\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/gunbuilder/page.ac57d1da09eaaba0.hot-update.js b/.next/static/webpack/app/gunbuilder/page.ac57d1da09eaaba0.hot-update.js new file mode 100644 index 0000000..9bc177f --- /dev/null +++ b/.next/static/webpack/app/gunbuilder/page.ac57d1da09eaaba0.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/gunbuilder/page",{ + +/***/ "(app-pages-browser)/./app/gunbuilder/page.tsx": +/*!*********************************!*\ + !*** ./app/gunbuilder/page.tsx ***! + \*********************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ GunbuilderPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* harmony import */ var _components_CategoryColumn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/CategoryColumn */ \"(app-pages-browser)/./components/CategoryColumn.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\nconst STORAGE_KEY = \"gunbuilder-build-state\";\nfunction GunbuilderPage() {\n _s();\n const searchParams = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.useSearchParams)();\n const router = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.useRouter)();\n const [build, setBuild] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(()=>{\n // Initialize from localStorage if available\n if (true) {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored) {\n try {\n return JSON.parse(stored);\n } catch (e) {\n return {};\n }\n }\n }\n return {};\n });\n // Handle URL query parameter for part selection\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const selectParam = searchParams.get(\"select\");\n if (selectParam) {\n const [categoryId, partId] = selectParam.split(\":\");\n if (categoryId && partId && _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES.some((c)=>c.id === categoryId)) {\n setBuild((prev)=>{\n const updated = {\n ...prev,\n [categoryId]: partId\n };\n // Persist to localStorage\n localStorage.setItem(STORAGE_KEY, JSON.stringify(updated));\n return updated;\n });\n // Remove query param from URL\n router.replace(\"/gunbuilder\", {\n scroll: false\n });\n }\n }\n }, [\n searchParams,\n router\n ]);\n // Persist build state to localStorage whenever it changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (true) {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(build));\n }\n }, [\n build\n ]);\n const partsByCategory = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const grouped = {};\n for (const category of _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES){\n grouped[category.id] = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.PARTS.filter((p)=>p.categoryId === category.id);\n }\n return grouped;\n }, []);\n const selectedParts = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n return Object.entries(build).map((param)=>{\n let [categoryId, partId] = param;\n return _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId);\n }).filter(Boolean);\n }, [\n build\n ]);\n const totalPrice = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>selectedParts.reduce((sum, p)=>sum + p.price, 0), [\n selectedParts\n ]);\n const handleSelectPart = (categoryId, partId)=>{\n setBuild((prev)=>({\n ...prev,\n [categoryId]: partId\n }));\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6 flex flex-col gap-2 md:flex-row md:items-end md:justify-between\",\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)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 96,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n \"Gunbuilder \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: \"Prototype\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 100,\n columnNumber: 26\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 99,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: \"Choose one part per category to assemble an AR-15 build. Prices and links are mock data for now—but the flow is close to what the real tool will be.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 102,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 95,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 md:mt-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400\",\n children: \"Current build total\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 110,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-semibold text-amber-300\",\n children: [\n \"$\",\n totalPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 111,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500\",\n children: [\n selectedParts.length,\n \" / \",\n _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES.length,\n \" categories filled\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 114,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 109,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 94,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 lg:grid-cols-[3fr,1.25fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-3 md:p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 md:grid-cols-2 lg:grid-cols-3\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES.map((category)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-zinc-800 rounded-md p-2 md:p-3 bg-zinc-950/60\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_CategoryColumn__WEBPACK_IMPORTED_MODULE_4__.CategoryColumn, {\n category: category,\n parts: partsByCategory[category.id],\n selectedPartId: build[category.id],\n onSelectPart: (partId)=>handleSelectPart(category.id, partId)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 130,\n columnNumber: 19\n }, this)\n }, category.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 126,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 124,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 123,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/80 p-3 md:p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-3\",\n children: \"Current Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 145,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-y-auto pr-1\",\n children: [\n selectedParts.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500\",\n children: \"Select a part from each category to start your build.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 151,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"space-y-2\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES.map((cat)=>{\n const selectedPartId = build[cat.id];\n const part = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.PARTS.find((p)=>p.id === selectedPartId && p.categoryId === cat.id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[0.7rem] uppercase tracking-[0.16em] text-zinc-500\",\n children: cat.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 164,\n columnNumber: 23\n }, this),\n part ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 flex justify-between items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-zinc-400\",\n children: [\n part.brand,\n \" \"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 170,\n columnNumber: 29\n }, this),\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 169,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 175,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 168,\n columnNumber: 25\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 text-xs text-zinc-600\",\n children: \"Not selected\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 180,\n columnNumber: 25\n }, this)\n ]\n }, cat.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 163,\n columnNumber: 21\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 156,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 149,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 border-t border-zinc-800 pt-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n className: \"w-full rounded-md border border-amber-400/60 bg-amber-400/10 px-3 py-2 text-sm font-medium text-amber-200 hover:bg-amber-400/15 disabled:opacity-40 disabled:cursor-not-allowed\",\n disabled: selectedParts.length === 0,\n onClick: ()=>{\n console.log(\"Build:\", build);\n alert(\"Prototype only: in the real app this would go to a sharable build summary with affiliate links.\");\n },\n children: \"Continue to Buy (Prototype)\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 192,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-[0.7rem] text-zinc-500\",\n children: \"In the production version, this will take you to a build page with retailer links and sharing options.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 205,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 191,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 144,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 121,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 92,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 91,\n columnNumber: 5\n }, this);\n}\n_s(GunbuilderPage, \"UcwNfiAgvkVgT2sjmQl74nmTISI=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_2__.useSearchParams,\n next_navigation__WEBPACK_IMPORTED_MODULE_2__.useRouter\n ];\n});\n_c = GunbuilderPage;\nvar _c;\n$RefreshReg$(_c, \"GunbuilderPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL3BhZ2UudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUVxRDtBQUVRO0FBQ0Y7QUFFRTtBQUk3RCxNQUFNUSxjQUFjO0FBRUwsU0FBU0M7O0lBQ3RCLE1BQU1DLGVBQWVQLGdFQUFlQTtJQUNwQyxNQUFNUSxTQUFTUCwwREFBU0E7SUFDeEIsTUFBTSxDQUFDUSxPQUFPQyxTQUFTLEdBQUdaLCtDQUFRQSxDQUFhO1FBQzdDLDRDQUE0QztRQUM1QyxJQUFJLElBQTZCLEVBQUU7WUFDakMsTUFBTWEsU0FBU0MsYUFBYUMsT0FBTyxDQUFDUjtZQUNwQyxJQUFJTSxRQUFRO2dCQUNWLElBQUk7b0JBQ0YsT0FBT0csS0FBS0MsS0FBSyxDQUFDSjtnQkFDcEIsRUFBRSxVQUFNO29CQUNOLE9BQU8sQ0FBQztnQkFDVjtZQUNGO1FBQ0Y7UUFDQSxPQUFPLENBQUM7SUFDVjtJQUVBLGdEQUFnRDtJQUNoRFosZ0RBQVNBLENBQUM7UUFDUixNQUFNaUIsY0FBY1QsYUFBYVUsR0FBRyxDQUFDO1FBQ3JDLElBQUlELGFBQWE7WUFDZixNQUFNLENBQUNFLFlBQVlDLE9BQU8sR0FBR0gsWUFBWUksS0FBSyxDQUFDO1lBQy9DLElBQUlGLGNBQWNDLFVBQVVqQiw2REFBVUEsQ0FBQ21CLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxFQUFFLEtBQUtMLGFBQWE7Z0JBQ3ZFUixTQUFTLENBQUNjO29CQUNSLE1BQU1DLFVBQVU7d0JBQ2QsR0FBR0QsSUFBSTt3QkFDUCxDQUFDTixXQUFXLEVBQUVDO29CQUNoQjtvQkFDQSwwQkFBMEI7b0JBQzFCUCxhQUFhYyxPQUFPLENBQUNyQixhQUFhUyxLQUFLYSxTQUFTLENBQUNGO29CQUNqRCxPQUFPQTtnQkFDVDtnQkFDQSw4QkFBOEI7Z0JBQzlCakIsT0FBT29CLE9BQU8sQ0FBQyxlQUFlO29CQUFFQyxRQUFRO2dCQUFNO1lBQ2hEO1FBQ0Y7SUFDRixHQUFHO1FBQUN0QjtRQUFjQztLQUFPO0lBRXpCLDBEQUEwRDtJQUMxRFQsZ0RBQVNBLENBQUM7UUFDUixJQUFJLElBQTZCLEVBQUU7WUFDakNhLGFBQWFjLE9BQU8sQ0FBQ3JCLGFBQWFTLEtBQUthLFNBQVMsQ0FBQ2xCO1FBQ25EO0lBQ0YsR0FBRztRQUFDQTtLQUFNO0lBRVYsTUFBTXFCLGtCQUE4Q2pDLDhDQUFPQSxDQUFDO1FBQzFELE1BQU1rQyxVQUFVLENBQUM7UUFDakIsS0FBSyxNQUFNQyxZQUFZOUIsNkRBQVVBLENBQUU7WUFDakM2QixPQUFPLENBQUNDLFNBQVNULEVBQUUsQ0FBQyxHQUFHcEIsd0RBQUtBLENBQUM4QixNQUFNLENBQ2pDLENBQUNDLElBQU1BLEVBQUVoQixVQUFVLEtBQUtjLFNBQVNULEVBQUU7UUFFdkM7UUFDQSxPQUFPUTtJQUNULEdBQUcsRUFBRTtJQUVMLE1BQU1JLGdCQUF3QnRDLDhDQUFPQSxDQUFDO1FBQ3BDLE9BQU91QyxPQUFPQyxPQUFPLENBQUM1QixPQUNuQjZCLEdBQUcsQ0FBQztnQkFBQyxDQUFDcEIsWUFBWUMsT0FBTzttQkFDeEJoQix3REFBS0EsQ0FBQ29DLElBQUksQ0FBQyxDQUFDTCxJQUFNQSxFQUFFWCxFQUFFLEtBQUtKLFVBQVVlLEVBQUVoQixVQUFVLEtBQUtBO1dBRXZEZSxNQUFNLENBQUNPO0lBQ1osR0FBRztRQUFDL0I7S0FBTTtJQUVWLE1BQU1nQyxhQUFhNUMsOENBQU9BLENBQ3hCLElBQU1zQyxjQUFjTyxNQUFNLENBQUMsQ0FBQ0MsS0FBS1QsSUFBTVMsTUFBTVQsRUFBRVUsS0FBSyxFQUFFLElBQ3REO1FBQUNUO0tBQWM7SUFHakIsTUFBTVUsbUJBQW1CLENBQUMzQixZQUF3QkM7UUFDaERULFNBQVMsQ0FBQ2MsT0FBVTtnQkFDbEIsR0FBR0EsSUFBSTtnQkFDUCxDQUFDTixXQUFXLEVBQUVDO1lBQ2hCO0lBQ0Y7SUFFQSxxQkFDRSw4REFBQzJCO1FBQUtDLFdBQVU7a0JBQ2QsNEVBQUNDO1lBQUlELFdBQVU7OzhCQUViLDhEQUFDRTtvQkFBT0YsV0FBVTs7c0NBQ2hCLDhEQUFDQzs7OENBQ0MsOERBQUNkO29DQUFFYSxXQUFVOzhDQUFpRTs7Ozs7OzhDQUc5RSw4REFBQ0c7b0NBQUdILFdBQVU7O3dDQUF5RDtzREFDMUQsOERBQUNJOzRDQUFLSixXQUFVO3NEQUFpQjs7Ozs7Ozs7Ozs7OzhDQUU5Qyw4REFBQ2I7b0NBQUVhLFdBQVU7OENBQXNDOzs7Ozs7Ozs7Ozs7c0NBT3JELDhEQUFDQzs0QkFBSUQsV0FBVTs7OENBQ2IsOERBQUNDO29DQUFJRCxXQUFVOzhDQUF3Qjs7Ozs7OzhDQUN2Qyw4REFBQ0M7b0NBQUlELFdBQVU7O3dDQUF3Qzt3Q0FDbkROLFdBQVdXLE9BQU8sQ0FBQzs7Ozs7Ozs4Q0FFdkIsOERBQUNKO29DQUFJRCxXQUFVOzt3Q0FDWlosY0FBY2tCLE1BQU07d0NBQUM7d0NBQUluRCw2REFBVUEsQ0FBQ21ELE1BQU07d0NBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEJBTWxELDhEQUFDTDtvQkFBSUQsV0FBVTs7c0NBRWIsOERBQUNPOzRCQUFRUCxXQUFVO3NDQUNqQiw0RUFBQ0M7Z0NBQUlELFdBQVU7MENBQ1o3Qyw2REFBVUEsQ0FBQ29DLEdBQUcsQ0FBQyxDQUFDTix5QkFDZiw4REFBQ2dCO3dDQUVDRCxXQUFVO2tEQUVWLDRFQUFDM0Msc0VBQWNBOzRDQUNiNEIsVUFBVUE7NENBQ1Z1QixPQUFPekIsZUFBZSxDQUFDRSxTQUFTVCxFQUFFLENBQUM7NENBQ25DaUMsZ0JBQWdCL0MsS0FBSyxDQUFDdUIsU0FBU1QsRUFBRSxDQUFDOzRDQUNsQ2tDLGNBQWMsQ0FBQ3RDLFNBQ2IwQixpQkFBaUJiLFNBQVNULEVBQUUsRUFBRUo7Ozs7Ozt1Q0FSN0JhLFNBQVNULEVBQUU7Ozs7Ozs7Ozs7Ozs7OztzQ0FpQnhCLDhEQUFDbUM7NEJBQU1YLFdBQVU7OzhDQUNmLDhEQUFDWTtvQ0FBR1osV0FBVTs4Q0FBdUU7Ozs7Ozs4Q0FJckYsOERBQUNDO29DQUFJRCxXQUFVOzt3Q0FDWlosY0FBY2tCLE1BQU0sS0FBSyxtQkFDeEIsOERBQUNuQjs0Q0FBRWEsV0FBVTtzREFBd0I7Ozs7OztzREFLdkMsOERBQUNhOzRDQUFHYixXQUFVO3NEQUNYN0MsNkRBQVVBLENBQUNvQyxHQUFHLENBQUMsQ0FBQ3VCO2dEQUNmLE1BQU1MLGlCQUFpQi9DLEtBQUssQ0FBQ29ELElBQUl0QyxFQUFFLENBQUM7Z0RBQ3BDLE1BQU11QyxPQUFPM0Qsd0RBQUtBLENBQUNvQyxJQUFJLENBQ3JCLENBQUNMLElBQU1BLEVBQUVYLEVBQUUsS0FBS2lDLGtCQUFrQnRCLEVBQUVoQixVQUFVLEtBQUsyQyxJQUFJdEMsRUFBRTtnREFFM0QscUJBQ0UsOERBQUN3Qzs7c0VBQ0MsOERBQUNmOzREQUFJRCxXQUFVO3NFQUNaYyxJQUFJRyxJQUFJOzs7Ozs7d0RBRVZGLHFCQUNDLDhEQUFDZDs0REFBSUQsV0FBVTs7OEVBQ2IsOERBQUNDO29FQUFJRCxXQUFVOztzRkFDYiw4REFBQ0k7NEVBQUtKLFdBQVU7O2dGQUNiZSxLQUFLRyxLQUFLO2dGQUFFOzs7Ozs7O3dFQUVkSCxLQUFLRSxJQUFJOzs7Ozs7OzhFQUVaLDhEQUFDaEI7b0VBQUlELFdBQVU7O3dFQUF5RDt3RUFDcEVlLEtBQUtsQixLQUFLLENBQUNRLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7O2lGQUl6Qiw4REFBQ0o7NERBQUlELFdBQVU7c0VBQTZCOzs7Ozs7O21EQWpCdkNjLElBQUl0QyxFQUFFOzs7Ozs0Q0F1Qm5COzs7Ozs7Ozs7Ozs7OENBS0osOERBQUN5QjtvQ0FBSUQsV0FBVTs7c0RBQ2IsOERBQUNtQjs0Q0FDQ0MsTUFBSzs0Q0FDTHBCLFdBQVU7NENBQ1ZxQixVQUFVakMsY0FBY2tCLE1BQU0sS0FBSzs0Q0FDbkNnQixTQUFTO2dEQUNQQyxRQUFRQyxHQUFHLENBQUMsVUFBVTlEO2dEQUN0QitELE1BQ0U7NENBRUo7c0RBQ0Q7Ozs7OztzREFHRCw4REFBQ3RDOzRDQUFFYSxXQUFVO3NEQUFtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVOUQ7R0F6TXdCekM7O1FBQ0ROLDREQUFlQTtRQUNyQkMsc0RBQVNBOzs7S0FGRksiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2d1bmJ1aWxkZXIvcGFnZS50c3g/MDU0MCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgdXNlTWVtbywgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xuaW1wb3J0IHsgdXNlU2VhcmNoUGFyYW1zLCB1c2VSb3V0ZXIgfSBmcm9tIFwibmV4dC9uYXZpZ2F0aW9uXCI7XG5pbXBvcnQgeyBDQVRFR09SSUVTLCBQQVJUUyB9IGZyb20gXCJAL2RhdGEvZ3VuYnVpbGRlclBhcnRzXCI7XG5pbXBvcnQgdHlwZSB7IENhdGVnb3J5SWQsIFBhcnQgfSBmcm9tIFwiQC90eXBlcy9ndW5idWlsZGVyXCI7XG5pbXBvcnQgeyBDYXRlZ29yeUNvbHVtbiB9IGZyb20gXCJAL2NvbXBvbmVudHMvQ2F0ZWdvcnlDb2x1bW5cIjtcblxudHlwZSBCdWlsZFN0YXRlID0gUGFydGlhbDxSZWNvcmQ8Q2F0ZWdvcnlJZCwgc3RyaW5nPj47IC8vIGNhdGVnb3J5SWQgLT4gcGFydElkXG5cbmNvbnN0IFNUT1JBR0VfS0VZID0gXCJndW5idWlsZGVyLWJ1aWxkLXN0YXRlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEd1bmJ1aWxkZXJQYWdlKCkge1xuICBjb25zdCBzZWFyY2hQYXJhbXMgPSB1c2VTZWFyY2hQYXJhbXMoKTtcbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKCk7XG4gIGNvbnN0IFtidWlsZCwgc2V0QnVpbGRdID0gdXNlU3RhdGU8QnVpbGRTdGF0ZT4oKCkgPT4ge1xuICAgIC8vIEluaXRpYWxpemUgZnJvbSBsb2NhbFN0b3JhZ2UgaWYgYXZhaWxhYmxlXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKTtcbiAgICAgIGlmIChzdG9yZWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShzdG9yZWQpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9KTtcblxuICAvLyBIYW5kbGUgVVJMIHF1ZXJ5IHBhcmFtZXRlciBmb3IgcGFydCBzZWxlY3Rpb25cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzZWxlY3RQYXJhbSA9IHNlYXJjaFBhcmFtcy5nZXQoXCJzZWxlY3RcIik7XG4gICAgaWYgKHNlbGVjdFBhcmFtKSB7XG4gICAgICBjb25zdCBbY2F0ZWdvcnlJZCwgcGFydElkXSA9IHNlbGVjdFBhcmFtLnNwbGl0KFwiOlwiKTtcbiAgICAgIGlmIChjYXRlZ29yeUlkICYmIHBhcnRJZCAmJiBDQVRFR09SSUVTLnNvbWUoKGMpID0+IGMuaWQgPT09IGNhdGVnb3J5SWQpKSB7XG4gICAgICAgIHNldEJ1aWxkKChwcmV2KSA9PiB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZCA9IHtcbiAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICBbY2F0ZWdvcnlJZF06IHBhcnRJZCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8vIFBlcnNpc3QgdG8gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oU1RPUkFHRV9LRVksIEpTT04uc3RyaW5naWZ5KHVwZGF0ZWQpKTtcbiAgICAgICAgICByZXR1cm4gdXBkYXRlZDtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFJlbW92ZSBxdWVyeSBwYXJhbSBmcm9tIFVSTFxuICAgICAgICByb3V0ZXIucmVwbGFjZShcIi9ndW5idWlsZGVyXCIsIHsgc2Nyb2xsOiBmYWxzZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtzZWFyY2hQYXJhbXMsIHJvdXRlcl0pO1xuXG4gIC8vIFBlcnNpc3QgYnVpbGQgc3RhdGUgdG8gbG9jYWxTdG9yYWdlIHdoZW5ldmVyIGl0IGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oU1RPUkFHRV9LRVksIEpTT04uc3RyaW5naWZ5KGJ1aWxkKSk7XG4gICAgfVxuICB9LCBbYnVpbGRdKTtcblxuICBjb25zdCBwYXJ0c0J5Q2F0ZWdvcnk6IFJlY29yZDxDYXRlZ29yeUlkLCBQYXJ0W10+ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgZ3JvdXBlZCA9IHt9IGFzIFJlY29yZDxDYXRlZ29yeUlkLCBQYXJ0W10+O1xuICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgb2YgQ0FURUdPUklFUykge1xuICAgICAgZ3JvdXBlZFtjYXRlZ29yeS5pZF0gPSBQQVJUUy5maWx0ZXIoXG4gICAgICAgIChwKSA9PiBwLmNhdGVnb3J5SWQgPT09IGNhdGVnb3J5LmlkLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGdyb3VwZWQ7XG4gIH0sIFtdKTtcblxuICBjb25zdCBzZWxlY3RlZFBhcnRzOiBQYXJ0W10gPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoYnVpbGQpXG4gICAgICAubWFwKChbY2F0ZWdvcnlJZCwgcGFydElkXSkgPT5cbiAgICAgICAgUEFSVFMuZmluZCgocCkgPT4gcC5pZCA9PT0gcGFydElkICYmIHAuY2F0ZWdvcnlJZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgICApXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIFBhcnRbXTtcbiAgfSwgW2J1aWxkXSk7XG5cbiAgY29uc3QgdG90YWxQcmljZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gc2VsZWN0ZWRQYXJ0cy5yZWR1Y2UoKHN1bSwgcCkgPT4gc3VtICsgcC5wcmljZSwgMCksXG4gICAgW3NlbGVjdGVkUGFydHNdLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFBhcnQgPSAoY2F0ZWdvcnlJZDogQ2F0ZWdvcnlJZCwgcGFydElkOiBzdHJpbmcpID0+IHtcbiAgICBzZXRCdWlsZCgocHJldikgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBbY2F0ZWdvcnlJZF06IHBhcnRJZCxcbiAgICB9KSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8bWFpbiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctYmxhY2sgdGV4dC16aW5jLTUwXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gbWF4LXctNnhsIHB4LTQgcHktNiBsZzpweS0xMFwiPlxuICAgICAgICB7LyogSGVhZGVyICovfVxuICAgICAgICA8aGVhZGVyIGNsYXNzTmFtZT1cIm1iLTYgZmxleCBmbGV4LWNvbCBnYXAtMiBtZDpmbGV4LXJvdyBtZDppdGVtcy1lbmQgbWQ6anVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4yZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgIFNoYWRvdyBTdGFuZGFyZFxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cIm10LTEgdGV4dC0yeGwgbWQ6dGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodFwiPlxuICAgICAgICAgICAgICBHdW5idWlsZGVyIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwXCI+UHJvdG90eXBlPC9zcGFuPlxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTIgdGV4dC1zbSB0ZXh0LXppbmMtNDAwIG1heC13LXhsXCI+XG4gICAgICAgICAgICAgIENob29zZSBvbmUgcGFydCBwZXIgY2F0ZWdvcnkgdG8gYXNzZW1ibGUgYW4gQVItMTUgYnVpbGQuIFByaWNlc1xuICAgICAgICAgICAgICBhbmQgbGlua3MgYXJlIG1vY2sgZGF0YSBmb3Igbm934oCUYnV0IHRoZSBmbG93IGlzIGNsb3NlIHRvIHdoYXRcbiAgICAgICAgICAgICAgdGhlIHJlYWwgdG9vbCB3aWxsIGJlLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0zIG1kOm10LTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNDAwXCI+Q3VycmVudCBidWlsZCB0b3RhbDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMzAwXCI+XG4gICAgICAgICAgICAgICR7dG90YWxQcmljZS50b0ZpeGVkKDIpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICB7c2VsZWN0ZWRQYXJ0cy5sZW5ndGh9IC8ge0NBVEVHT1JJRVMubGVuZ3RofSBjYXRlZ29yaWVzIGZpbGxlZFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIHsvKiBMYXlvdXQgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBnYXAtNCBsZzpncmlkLWNvbHMtWzNmciwxLjI1ZnJdXCI+XG4gICAgICAgICAgey8qIENhdGVnb3JpZXMvcGFydHMgKi99XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtMyBtZDpwLTRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBnYXAtNCBtZDpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtM1wiPlxuICAgICAgICAgICAgICB7Q0FURUdPUklFUy5tYXAoKGNhdGVnb3J5KSA9PiAoXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAga2V5PXtjYXRlZ29yeS5pZH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItemluYy04MDAgcm91bmRlZC1tZCBwLTIgbWQ6cC0zIGJnLXppbmMtOTUwLzYwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8Q2F0ZWdvcnlDb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9e2NhdGVnb3J5fVxuICAgICAgICAgICAgICAgICAgICBwYXJ0cz17cGFydHNCeUNhdGVnb3J5W2NhdGVnb3J5LmlkXX1cbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRQYXJ0SWQ9e2J1aWxkW2NhdGVnb3J5LmlkXX1cbiAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RQYXJ0PXsocGFydElkKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdFBhcnQoY2F0ZWdvcnkuaWQsIHBhcnRJZClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICB7LyogQnVpbGQgU3VtbWFyeSAqL31cbiAgICAgICAgICA8YXNpZGUgY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzgwIHAtMyBtZDpwLTQgZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4xNmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTQwMCBtYi0zXCI+XG4gICAgICAgICAgICAgIEN1cnJlbnQgQnVpbGRcbiAgICAgICAgICAgIDwvaDI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG92ZXJmbG93LXktYXV0byBwci0xXCI+XG4gICAgICAgICAgICAgIHtzZWxlY3RlZFBhcnRzLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgICAgICBTZWxlY3QgYSBwYXJ0IGZyb20gZWFjaCBjYXRlZ29yeSB0byBzdGFydCB5b3VyIGJ1aWxkLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwic3BhY2UteS0yXCI+XG4gICAgICAgICAgICAgICAge0NBVEVHT1JJRVMubWFwKChjYXQpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUGFydElkID0gYnVpbGRbY2F0LmlkXTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnQgPSBQQVJUUy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAocCkgPT4gcC5pZCA9PT0gc2VsZWN0ZWRQYXJ0SWQgJiYgcC5jYXRlZ29yeUlkID09PSBjYXQuaWQsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGxpIGtleT17Y2F0LmlkfT5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtWzAuN3JlbV0gdXBwZXJjYXNlIHRyYWNraW5nLVswLjE2ZW1dIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjYXQubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICB7cGFydCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMSBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtemluYy00MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0LmJyYW5kfXtcIiBcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMzAwIHdoaXRlc3BhY2Utbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwYXJ0LnByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LXhzIHRleHQtemluYy02MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogQ1RBICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00IGJvcmRlci10IGJvcmRlci16aW5jLTgwMCBwdC0zXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWFtYmVyLTQwMC82MCBiZy1hbWJlci00MDAvMTAgcHgtMyBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1hbWJlci0yMDAgaG92ZXI6YmctYW1iZXItNDAwLzE1IGRpc2FibGVkOm9wYWNpdHktNDAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkXCJcbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17c2VsZWN0ZWRQYXJ0cy5sZW5ndGggPT09IDB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJCdWlsZDpcIiwgYnVpbGQpO1xuICAgICAgICAgICAgICAgICAgYWxlcnQoXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvdG90eXBlIG9ubHk6IGluIHRoZSByZWFsIGFwcCB0aGlzIHdvdWxkIGdvIHRvIGEgc2hhcmFibGUgYnVpbGQgc3VtbWFyeSB3aXRoIGFmZmlsaWF0ZSBsaW5rcy5cIixcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIENvbnRpbnVlIHRvIEJ1eSAoUHJvdG90eXBlKVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMiB0ZXh0LVswLjdyZW1dIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgICBJbiB0aGUgcHJvZHVjdGlvbiB2ZXJzaW9uLCB0aGlzIHdpbGwgdGFrZSB5b3UgdG8gYSBidWlsZCBwYWdlIHdpdGhcbiAgICAgICAgICAgICAgICByZXRhaWxlciBsaW5rcyBhbmQgc2hhcmluZyBvcHRpb25zLlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FzaWRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWFpbj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJ1c2VTZWFyY2hQYXJhbXMiLCJ1c2VSb3V0ZXIiLCJDQVRFR09SSUVTIiwiUEFSVFMiLCJDYXRlZ29yeUNvbHVtbiIsIlNUT1JBR0VfS0VZIiwiR3VuYnVpbGRlclBhZ2UiLCJzZWFyY2hQYXJhbXMiLCJyb3V0ZXIiLCJidWlsZCIsInNldEJ1aWxkIiwic3RvcmVkIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsIkpTT04iLCJwYXJzZSIsInNlbGVjdFBhcmFtIiwiZ2V0IiwiY2F0ZWdvcnlJZCIsInBhcnRJZCIsInNwbGl0Iiwic29tZSIsImMiLCJpZCIsInByZXYiLCJ1cGRhdGVkIiwic2V0SXRlbSIsInN0cmluZ2lmeSIsInJlcGxhY2UiLCJzY3JvbGwiLCJwYXJ0c0J5Q2F0ZWdvcnkiLCJncm91cGVkIiwiY2F0ZWdvcnkiLCJmaWx0ZXIiLCJwIiwic2VsZWN0ZWRQYXJ0cyIsIk9iamVjdCIsImVudHJpZXMiLCJtYXAiLCJmaW5kIiwiQm9vbGVhbiIsInRvdGFsUHJpY2UiLCJyZWR1Y2UiLCJzdW0iLCJwcmljZSIsImhhbmRsZVNlbGVjdFBhcnQiLCJtYWluIiwiY2xhc3NOYW1lIiwiZGl2IiwiaGVhZGVyIiwiaDEiLCJzcGFuIiwidG9GaXhlZCIsImxlbmd0aCIsInNlY3Rpb24iLCJwYXJ0cyIsInNlbGVjdGVkUGFydElkIiwib25TZWxlY3RQYXJ0IiwiYXNpZGUiLCJoMiIsInVsIiwiY2F0IiwicGFydCIsImxpIiwibmFtZSIsImJyYW5kIiwiYnV0dG9uIiwidHlwZSIsImRpc2FibGVkIiwib25DbGljayIsImNvbnNvbGUiLCJsb2ciLCJhbGVydCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/page.tsx\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/gunbuilder/page.c81c5ba568e3f3ba.hot-update.js b/.next/static/webpack/app/gunbuilder/page.c81c5ba568e3f3ba.hot-update.js new file mode 100644 index 0000000..36bcb54 --- /dev/null +++ b/.next/static/webpack/app/gunbuilder/page.c81c5ba568e3f3ba.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/gunbuilder/page",{ + +/***/ "(app-pages-browser)/./app/gunbuilder/page.tsx": +/*!*********************************!*\ + !*** ./app/gunbuilder/page.tsx ***! + \*********************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ GunbuilderPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* harmony import */ var _components_CategoryColumn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/CategoryColumn */ \"(app-pages-browser)/./components/CategoryColumn.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\nconst STORAGE_KEY = \"gunbuilder-build-state\";\nfunction GunbuilderPage() {\n _s();\n const searchParams = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useSearchParams)();\n const router = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useRouter)();\n const [build, setBuild] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(()=>{\n // Initialize from localStorage if available\n if (true) {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored) {\n try {\n return JSON.parse(stored);\n } catch (e) {\n return {};\n }\n }\n }\n return {};\n });\n // Handle URL query parameter for part selection\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const selectParam = searchParams.get(\"select\");\n if (selectParam) {\n const [categoryId, partId] = selectParam.split(\":\");\n if (categoryId && partId && _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.some((c)=>c.id === categoryId)) {\n setBuild((prev)=>{\n const updated = {\n ...prev,\n [categoryId]: partId\n };\n // Persist to localStorage\n localStorage.setItem(STORAGE_KEY, JSON.stringify(updated));\n return updated;\n });\n // Remove query param from URL\n router.replace(\"/gunbuilder\", {\n scroll: false\n });\n }\n }\n }, [\n searchParams,\n router\n ]);\n // Persist build state to localStorage whenever it changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (true) {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(build));\n }\n }, [\n build\n ]);\n const partsByCategory = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const grouped = {};\n for (const category of _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES){\n grouped[category.id] = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.filter((p)=>p.categoryId === category.id);\n }\n return grouped;\n }, []);\n const selectedParts = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n return Object.entries(build).map((param)=>{\n let [categoryId, partId] = param;\n return _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId);\n }).filter(Boolean);\n }, [\n build\n ]);\n const totalPrice = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>selectedParts.reduce((sum, p)=>sum + p.price, 0), [\n selectedParts\n ]);\n const handleSelectPart = (categoryId, partId)=>{\n setBuild((prev)=>({\n ...prev,\n [categoryId]: partId\n }));\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6 flex flex-col gap-2 md:flex-row md:items-end md:justify-between\",\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)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 96,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n \"Gunbuilder \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: \"Prototype\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 100,\n columnNumber: 26\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 99,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: \"Choose one part per category to assemble an AR-15 build. Prices and links are mock data for now—but the flow is close to what the real tool will be.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 102,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 95,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 md:mt-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400\",\n children: \"Current build total\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 110,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-semibold text-amber-300\",\n children: [\n \"$\",\n totalPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 111,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500\",\n children: [\n selectedParts.length,\n \" / \",\n _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.length,\n \" categories filled\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 114,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 109,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 94,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 lg:grid-cols-[3fr,1.25fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-3 md:p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 md:grid-cols-2 lg:grid-cols-3\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.map((category)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-zinc-800 rounded-md p-2 md:p-3 bg-zinc-950/60\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_CategoryColumn__WEBPACK_IMPORTED_MODULE_5__.CategoryColumn, {\n category: category,\n parts: partsByCategory[category.id],\n selectedPartId: build[category.id],\n onSelectPart: (partId)=>handleSelectPart(category.id, partId)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 130,\n columnNumber: 19\n }, this)\n }, category.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 126,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 124,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 123,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/80 p-3 md:p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-3\",\n children: \"Current Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 145,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-y-auto pr-1\",\n children: [\n selectedParts.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500\",\n children: \"Select a part from each category to start your build.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 151,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"space-y-2\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.map((cat)=>{\n const selectedPartId = build[cat.id];\n const part = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === selectedPartId && p.categoryId === cat.id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[0.7rem] uppercase tracking-[0.16em] text-zinc-500\",\n children: cat.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 164,\n columnNumber: 23\n }, this),\n part ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 flex justify-between items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-zinc-400\",\n children: [\n part.brand,\n \" \"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 170,\n columnNumber: 29\n }, this),\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 169,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 175,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 168,\n columnNumber: 25\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 text-xs text-zinc-600\",\n children: \"Not selected\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 180,\n columnNumber: 25\n }, this)\n ]\n }, cat.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 163,\n columnNumber: 21\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 156,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 149,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 border-t border-zinc-800 pt-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/build\",\n className: \"block w-full rounded-md border border-amber-400/60 bg-amber-400/10 px-3 py-2 text-sm font-medium text-amber-200 hover:bg-amber-400/15 text-center transition-colors \".concat(selectedParts.length === 0 ? \"opacity-40 cursor-not-allowed pointer-events-none\" : \"\"),\n children: \"Continue to Buy\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 192,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-[0.7rem] text-zinc-500\",\n children: \"View your build summary with affiliate links and sharing options.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 202,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 191,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 144,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 121,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 92,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 91,\n columnNumber: 5\n }, this);\n}\n_s(GunbuilderPage, \"UcwNfiAgvkVgT2sjmQl74nmTISI=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useSearchParams,\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useRouter\n ];\n});\n_c = GunbuilderPage;\nvar _c;\n$RefreshReg$(_c, \"GunbuilderPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL3BhZ2UudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFFcUQ7QUFDeEI7QUFDZ0M7QUFDRjtBQUVFO0FBSTdELE1BQU1TLGNBQWM7QUFFTCxTQUFTQzs7SUFDdEIsTUFBTUMsZUFBZVAsZ0VBQWVBO0lBQ3BDLE1BQU1RLFNBQVNQLDBEQUFTQTtJQUN4QixNQUFNLENBQUNRLE9BQU9DLFNBQVMsR0FBR2IsK0NBQVFBLENBQWE7UUFDN0MsNENBQTRDO1FBQzVDLElBQUksSUFBNkIsRUFBRTtZQUNqQyxNQUFNYyxTQUFTQyxhQUFhQyxPQUFPLENBQUNSO1lBQ3BDLElBQUlNLFFBQVE7Z0JBQ1YsSUFBSTtvQkFDRixPQUFPRyxLQUFLQyxLQUFLLENBQUNKO2dCQUNwQixFQUFFLFVBQU07b0JBQ04sT0FBTyxDQUFDO2dCQUNWO1lBQ0Y7UUFDRjtRQUNBLE9BQU8sQ0FBQztJQUNWO0lBRUEsZ0RBQWdEO0lBQ2hEYixnREFBU0EsQ0FBQztRQUNSLE1BQU1rQixjQUFjVCxhQUFhVSxHQUFHLENBQUM7UUFDckMsSUFBSUQsYUFBYTtZQUNmLE1BQU0sQ0FBQ0UsWUFBWUMsT0FBTyxHQUFHSCxZQUFZSSxLQUFLLENBQUM7WUFDL0MsSUFBSUYsY0FBY0MsVUFBVWpCLDZEQUFVQSxDQUFDbUIsSUFBSSxDQUFDLENBQUNDLElBQU1BLEVBQUVDLEVBQUUsS0FBS0wsYUFBYTtnQkFDdkVSLFNBQVMsQ0FBQ2M7b0JBQ1IsTUFBTUMsVUFBVTt3QkFDZCxHQUFHRCxJQUFJO3dCQUNQLENBQUNOLFdBQVcsRUFBRUM7b0JBQ2hCO29CQUNBLDBCQUEwQjtvQkFDMUJQLGFBQWFjLE9BQU8sQ0FBQ3JCLGFBQWFTLEtBQUthLFNBQVMsQ0FBQ0Y7b0JBQ2pELE9BQU9BO2dCQUNUO2dCQUNBLDhCQUE4QjtnQkFDOUJqQixPQUFPb0IsT0FBTyxDQUFDLGVBQWU7b0JBQUVDLFFBQVE7Z0JBQU07WUFDaEQ7UUFDRjtJQUNGLEdB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Ly9fTl9FLy4vYXBwL2d1bmJ1aWxkZXIvcGFnZS50c3g/MDU0MCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgdXNlTWVtbywgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xuaW1wb3J0IHsgdXNlU2VhcmNoUGFyYW1zLCB1c2VSb3V0ZXIgfSBmcm9tIFwibmV4dC9uYXZpZ2F0aW9uXCI7XG5pbXBvcnQgeyBDQVRFR09SSUVTLCBQQVJUUyB9IGZyb20gXCJAL2RhdGEvZ3VuYnVpbGRlclBhcnRzXCI7XG5pbXBvcnQgdHlwZSB7IENhdGVnb3J5SWQsIFBhcnQgfSBmcm9tIFwiQC90eXBlcy9ndW5idWlsZGVyXCI7XG5pbXBvcnQgeyBDYXRlZ29yeUNvbHVtbiB9IGZyb20gXCJAL2NvbXBvbmVudHMvQ2F0ZWdvcnlDb2x1bW5cIjtcblxudHlwZSBCdWlsZFN0YXRlID0gUGFydGlhbDxSZWNvcmQ8Q2F0ZWdvcnlJZCwgc3RyaW5nPj47IC8vIGNhdGVnb3J5SWQgLT4gcGFydElkXG5cbmNvbnN0IFNUT1JBR0VfS0VZID0gXCJndW5idWlsZGVyLWJ1aWxkLXN0YXRlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEd1bmJ1aWxkZXJQYWdlKCkge1xuICBjb25zdCBzZWFyY2hQYXJhbXMgPSB1c2VTZWFyY2hQYXJhbXMoKTtcbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKCk7XG4gIGNvbnN0IFtidWlsZCwgc2V0QnVpbGRdID0gdXNlU3RhdGU8QnVpbGRTdGF0ZT4oKCkgPT4ge1xuICAgIC8vIEluaXRpYWxpemUgZnJvbSBsb2NhbFN0b3JhZ2UgaWYgYXZhaWxhYmxlXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKTtcbiAgICAgIGlmIChzdG9yZWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShzdG9yZWQpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9KTtcblxuICAvLyBIYW5kbGUgVVJMIHF1ZXJ5IHBhcmFtZXRlciBmb3IgcGFydCBzZWxlY3Rpb25cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzZWxlY3RQYXJhbSA9IHNlYXJjaFBhcmFtcy5nZXQoXCJzZWxlY3RcIik7XG4gICAgaWYgKHNlbGVjdFBhcmFtKSB7XG4gICAgICBjb25zdCBbY2F0ZWdvcnlJZCwgcGFydElkXSA9IHNlbGVjdFBhcmFtLnNwbGl0KFwiOlwiKTtcbiAgICAgIGlmIChjYXRlZ29yeUlkICYmIHBhcnRJZCAmJiBDQVRFR09SSUVTLnNvbWUoKGMpID0+IGMuaWQgPT09IGNhdGVnb3J5SWQpKSB7XG4gICAgICAgIHNldEJ1aWxkKChwcmV2KSA9PiB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZCA9IHtcbiAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICBbY2F0ZWdvcnlJZF06IHBhcnRJZCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8vIFBlcnNpc3QgdG8gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oU1RPUkFHRV9LRVksIEpTT04uc3RyaW5naWZ5KHVwZGF0ZWQpKTtcbiAgICAgICAgICByZXR1cm4gdXBkYXRlZDtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFJlbW92ZSBxdWVyeSBwYXJhbSBmcm9tIFVSTFxuICAgICAgICByb3V0ZXIucmVwbGFjZShcIi9ndW5idWlsZGVyXCIsIHsgc2Nyb2xsOiBmYWxzZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtzZWFyY2hQYXJhbXMsIHJvdXRlcl0pO1xuXG4gIC8vIFBlcnNpc3QgYnVpbGQgc3RhdGUgdG8gbG9jYWxTdG9yYWdlIHdoZW5ldmVyIGl0IGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oU1RPUkFHRV9LRVksIEpTT04uc3RyaW5naWZ5KGJ1aWxkKSk7XG4gICAgfVxuICB9LCBbYnVpbGRdKTtcblxuICBjb25zdCBwYXJ0c0J5Q2F0ZWdvcnk6IFJlY29yZDxDYXRlZ29yeUlkLCBQYXJ0W10+ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgZ3JvdXBlZCA9IHt9IGFzIFJlY29yZDxDYXRlZ29yeUlkLCBQYXJ0W10+O1xuICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgb2YgQ0FURUdPUklFUykge1xuICAgICAgZ3JvdXBlZFtjYXRlZ29yeS5pZF0gPSBQQVJUUy5maWx0ZXIoXG4gICAgICAgIChwKSA9PiBwLmNhdGVnb3J5SWQgPT09IGNhdGVnb3J5LmlkLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGdyb3VwZWQ7XG4gIH0sIFtdKTtcblxuICBjb25zdCBzZWxlY3RlZFBhcnRzOiBQYXJ0W10gPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoYnVpbGQpXG4gICAgICAubWFwKChbY2F0ZWdvcnlJZCwgcGFydElkXSkgPT5cbiAgICAgICAgUEFSVFMuZmluZCgocCkgPT4gcC5pZCA9PT0gcGFydElkICYmIHAuY2F0ZWdvcnlJZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgICApXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIFBhcnRbXTtcbiAgfSwgW2J1aWxkXSk7XG5cbiAgY29uc3QgdG90YWxQcmljZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gc2VsZWN0ZWRQYXJ0cy5yZWR1Y2UoKHN1bSwgcCkgPT4gc3VtICsgcC5wcmljZSwgMCksXG4gICAgW3NlbGVjdGVkUGFydHNdLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFBhcnQgPSAoY2F0ZWdvcnlJZDogQ2F0ZWdvcnlJZCwgcGFydElkOiBzdHJpbmcpID0+IHtcbiAgICBzZXRCdWlsZCgocHJldikgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBbY2F0ZWdvcnlJZF06IHBhcnRJZCxcbiAgICB9KSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8bWFpbiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctYmxhY2sgdGV4dC16aW5jLTUwXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gbWF4LXctNnhsIHB4LTQgcHktNiBsZzpweS0xMFwiPlxuICAgICAgICB7LyogSGVhZGVyICovfVxuICAgICAgICA8aGVhZGVyIGNsYXNzTmFtZT1cIm1iLTYgZmxleCBmbGV4LWNvbCBnYXAtMiBtZDpmbGV4LXJvdyBtZDppdGVtcy1lbmQgbWQ6anVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4yZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgIFNoYWRvdyBTdGFuZGFyZFxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cIm10LTEgdGV4dC0yeGwgbWQ6dGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodFwiPlxuICAgICAgICAgICAgICBHdW5idWlsZGVyIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwXCI+UHJvdG90eXBlPC9zcGFuPlxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTIgdGV4dC1zbSB0ZXh0LXppbmMtNDAwIG1heC13LXhsXCI+XG4gICAgICAgICAgICAgIENob29zZSBvbmUgcGFydCBwZXIgY2F0ZWdvcnkgdG8gYXNzZW1ibGUgYW4gQVItMTUgYnVpbGQuIFByaWNlc1xuICAgICAgICAgICAgICBhbmQgbGlua3MgYXJlIG1vY2sgZGF0YSBmb3Igbm934oCUYnV0IHRoZSBmbG93IGlzIGNsb3NlIHRvIHdoYXRcbiAgICAgICAgICAgICAgdGhlIHJlYWwgdG9vbCB3aWxsIGJlLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0zIG1kOm10LTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNDAwXCI+Q3VycmVudCBidWlsZCB0b3RhbDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMzAwXCI+XG4gICAgICAgICAgICAgICR7dG90YWxQcmljZS50b0ZpeGVkKDIpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICB7c2VsZWN0ZWRQYXJ0cy5sZW5ndGh9IC8ge0NBVEVHT1JJRVMubGVuZ3RofSBjYXRlZ29yaWVzIGZpbGxlZFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIHsvKiBMYXlvdXQgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBnYXAtNCBsZzpncmlkLWNvbHMtWzNmciwxLjI1ZnJdXCI+XG4gICAgICAgICAgey8qIENhdGVnb3JpZXMvcGFydHMgKi99XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtMyBtZDpwLTRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBnYXAtNCBtZDpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtM1wiPlxuICAgICAgICAgICAgICB7Q0FURUdPUklFUy5tYXAoKGNhdGVnb3J5KSA9PiAoXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAga2V5PXtjYXRlZ29yeS5pZH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItemluYy04MDAgcm91bmRlZC1tZCBwLTIgbWQ6cC0zIGJnLXppbmMtOTUwLzYwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8Q2F0ZWdvcnlDb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9e2NhdGVnb3J5fVxuICAgICAgICAgICAgICAgICAgICBwYXJ0cz17cGFydHNCeUNhdGVnb3J5W2NhdGVnb3J5LmlkXX1cbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRQYXJ0SWQ9e2J1aWxkW2NhdGVnb3J5LmlkXX1cbiAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RQYXJ0PXsocGFydElkKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdFBhcnQoY2F0ZWdvcnkuaWQsIHBhcnRJZClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICB7LyogQnVpbGQgU3VtbWFyeSAqL31cbiAgICAgICAgICA8YXNpZGUgY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzgwIHAtMyBtZDpwLTQgZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4xNmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTQwMCBtYi0zXCI+XG4gICAgICAgICAgICAgIEN1cnJlbnQgQnVpbGRcbiAgICAgICAgICAgIDwvaDI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG92ZXJmbG93LXktYXV0byBwci0xXCI+XG4gICAgICAgICAgICAgIHtzZWxlY3RlZFBhcnRzLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgICAgICBTZWxlY3QgYSBwYXJ0IGZyb20gZWFjaCBjYXRlZ29yeSB0byBzdGFydCB5b3VyIGJ1aWxkLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwic3BhY2UteS0yXCI+XG4gICAgICAgICAgICAgICAge0NBVEVHT1JJRVMubWFwKChjYXQpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUGFydElkID0gYnVpbGRbY2F0LmlkXTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnQgPSBQQVJUUy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAocCkgPT4gcC5pZCA9PT0gc2VsZWN0ZWRQYXJ0SWQgJiYgcC5jYXRlZ29yeUlkID09PSBjYXQuaWQsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGxpIGtleT17Y2F0LmlkfT5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtWzAuN3JlbV0gdXBwZXJjYXNlIHRyYWNraW5nLVswLjE2ZW1dIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjYXQubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICB7cGFydCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMSBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtemluYy00MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0LmJyYW5kfXtcIiBcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMzAwIHdoaXRlc3BhY2Utbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwYXJ0LnByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LXhzIHRleHQtemluYy02MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogQ1RBICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC00IGJvcmRlci10IGJvcmRlci16aW5jLTgwMCBwdC0zXCI+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj1cIi9ndW5idWlsZGVyL2J1aWxkXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BibG9jayB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWFtYmVyLTQwMC82MCBiZy1hbWJlci00MDAvMTAgcHgtMyBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1hbWJlci0yMDAgaG92ZXI6YmctYW1iZXItNDAwLzE1IHRleHQtY2VudGVyIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZFBhcnRzLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFwib3BhY2l0eS00MCBjdXJzb3Itbm90LWFsbG93ZWQgcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIDogXCJcIlxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQ29udGludWUgdG8gQnV5XG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMiB0ZXh0LVswLjdyZW1dIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgICBWaWV3IHlvdXIgYnVpbGQgc3VtbWFyeSB3aXRoIGFmZmlsaWF0ZSBsaW5rcyBhbmQgc2hhcmluZyBvcHRpb25zLlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FzaWRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWFpbj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJMaW5rIiwidXNlU2VhcmNoUGFyYW1zIiwidXNlUm91dGVyIiwiQ0FURUdPUklFUyIsIlBBUlRTIiwiQ2F0ZWdvcnlDb2x1bW4iLCJTVE9SQUdFX0tFWSIsIkd1bmJ1aWxkZXJQYWdlIiwic2VhcmNoUGFyYW1zIiwicm91dGVyIiwiYnVpbGQiLCJzZXRCdWlsZCIsInN0b3JlZCIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJKU09OIiwicGFyc2UiLCJzZWxlY3RQYXJhbSIsImdldCIsImNhdGVnb3J5SWQiLCJwYXJ0SWQiLCJzcGxpdCIsInNvbWUiLCJjIiwiaWQiLCJwcmV2IiwidXBkYXRlZCIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJyZXBsYWNlIiwic2Nyb2xsIiwicGFydHNCeUNhdGVnb3J5IiwiZ3JvdXBlZCIsImNhdGVnb3J5IiwiZmlsdGVyIiwicCIsInNlbGVjdGVkUGFydHMiLCJPYmplY3QiLCJlbnRyaWVzIiwibWFwIiwiZmluZCIsIkJvb2xlYW4iLCJ0b3RhbFByaWNlIiwicmVkdWNlIiwic3VtIiwicHJpY2UiLCJoYW5kbGVTZWxlY3RQYXJ0IiwibWFpbiIsImNsYXNzTmFtZSIsImRpdiIsImhlYWRlciIsImgxIiwic3BhbiIsInRvRml4ZWQiLCJsZW5ndGgiLCJzZWN0aW9uIiwicGFydHMiLCJzZWxlY3RlZFBhcnRJZCIsIm9uU2VsZWN0UGFydCIsImFzaWRlIiwiaDIiLCJ1bCIsImNhdCIsInBhcnQiLCJsaSIsIm5hbWUiLCJicmFuZCIsImhyZWYiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/page.tsx\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/gunbuilder/page.dfb10022e50981f7.hot-update.js b/.next/static/webpack/app/gunbuilder/page.dfb10022e50981f7.hot-update.js new file mode 100644 index 0000000..5f705f9 --- /dev/null +++ b/.next/static/webpack/app/gunbuilder/page.dfb10022e50981f7.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/gunbuilder/page",{ + +/***/ "(app-pages-browser)/./app/gunbuilder/page.tsx": +/*!*********************************!*\ + !*** ./app/gunbuilder/page.tsx ***! + \*********************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ GunbuilderPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* harmony import */ var _components_CategoryColumn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/CategoryColumn */ \"(app-pages-browser)/./components/CategoryColumn.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\nconst STORAGE_KEY = \"gunbuilder-build-state\";\nfunction GunbuilderPage() {\n _s();\n const searchParams = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useSearchParams)();\n const router = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useRouter)();\n const [build, setBuild] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(()=>{\n // Initialize from localStorage if available\n if (true) {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored) {\n try {\n return JSON.parse(stored);\n } catch (e) {\n return {};\n }\n }\n }\n return {};\n });\n // Handle URL query parameter for part selection\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const selectParam = searchParams.get(\"select\");\n if (selectParam) {\n const [categoryId, partId] = selectParam.split(\":\");\n if (categoryId && partId && _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.some((c)=>c.id === categoryId)) {\n setBuild((prev)=>{\n const updated = {\n ...prev,\n [categoryId]: partId\n };\n // Persist to localStorage\n localStorage.setItem(STORAGE_KEY, JSON.stringify(updated));\n return updated;\n });\n // Remove query param from URL\n router.replace(\"/gunbuilder\", {\n scroll: false\n });\n }\n }\n }, [\n searchParams,\n router\n ]);\n // Persist build state to localStorage whenever it changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (true) {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(build));\n }\n }, [\n build\n ]);\n const partsByCategory = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const grouped = {};\n for (const category of _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES){\n grouped[category.id] = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.filter((p)=>p.categoryId === category.id);\n }\n return grouped;\n }, []);\n const selectedParts = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n return Object.entries(build).map((param)=>{\n let [categoryId, partId] = param;\n return _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId);\n }).filter(Boolean);\n }, [\n build\n ]);\n const totalPrice = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>selectedParts.reduce((sum, p)=>sum + p.price, 0), [\n selectedParts\n ]);\n const handleSelectPart = (categoryId, partId)=>{\n setBuild((prev)=>({\n ...prev,\n [categoryId]: partId\n }));\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6 flex flex-col gap-2 md:flex-row md:items-end md:justify-between\",\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)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 96,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n \"Gunbuilder \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: \"Prototype\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 100,\n columnNumber: 26\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 99,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: \"Choose one part per category to assemble an AR-15 build. Prices and links are mock data for now—but the flow is close to what the real tool will be.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 102,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 95,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 md:mt-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400\",\n children: \"Current build total\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 110,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-semibold text-amber-300\",\n children: [\n \"$\",\n totalPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 111,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500\",\n children: [\n selectedParts.length,\n \" / \",\n _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.length,\n \" categories filled\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 114,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 109,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 94,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 lg:grid-cols-[3fr,1.25fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-3 md:p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 md:grid-cols-2 lg:grid-cols-3\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.map((category)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-zinc-800 rounded-md p-2 md:p-3 bg-zinc-950/60\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_CategoryColumn__WEBPACK_IMPORTED_MODULE_5__.CategoryColumn, {\n category: category,\n parts: partsByCategory[category.id],\n selectedPartId: build[category.id],\n onSelectPart: (partId)=>handleSelectPart(category.id, partId)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 130,\n columnNumber: 19\n }, this)\n }, category.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 126,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 124,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 123,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/80 p-3 md:p-4 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-3\",\n children: \"Current Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 145,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-y-auto pr-1\",\n children: [\n selectedParts.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500\",\n children: \"Select a part from each category to start your build.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 151,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"space-y-2\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.map((cat)=>{\n const selectedPartId = build[cat.id];\n const part = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === selectedPartId && p.categoryId === cat.id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[0.7rem] uppercase tracking-[0.16em] text-zinc-500\",\n children: cat.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 164,\n columnNumber: 23\n }, this),\n part ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 flex justify-between items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-zinc-400\",\n children: [\n part.brand,\n \" \"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 170,\n columnNumber: 29\n }, this),\n part.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 169,\n columnNumber: 27\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold text-amber-300 whitespace-nowrap\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 175,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 168,\n columnNumber: 25\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 text-xs text-zinc-600\",\n children: \"Not selected\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 180,\n columnNumber: 25\n }, this)\n ]\n }, cat.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 163,\n columnNumber: 21\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 156,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 149,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 border-t border-zinc-800 pt-3 space-y-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/build\",\n className: \"block w-full rounded-md border border-amber-400/60 bg-amber-400/10 px-3 py-2 text-sm font-medium text-amber-200 hover:bg-amber-400/15 text-center transition-colors \".concat(selectedParts.length === 0 ? \"opacity-40 cursor-not-allowed pointer-events-none\" : \"\"),\n children: \"Continue to Buy\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 192,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>{\n setBuild({});\n localStorage.removeItem(STORAGE_KEY);\n },\n disabled: selectedParts.length === 0,\n className: \"w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-3 py-2 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors \".concat(selectedParts.length === 0 ? \"opacity-40 cursor-not-allowed\" : \"\"),\n children: \"Clear Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 202,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-[0.7rem] text-zinc-500\",\n children: \"View your build summary with affiliate links and sharing options.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 217,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 191,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 144,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 121,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 92,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 91,\n columnNumber: 5\n }, this);\n}\n_s(GunbuilderPage, \"UcwNfiAgvkVgT2sjmQl74nmTISI=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useSearchParams,\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useRouter\n ];\n});\n_c = GunbuilderPage;\nvar _c;\n$RefreshReg$(_c, \"GunbuilderPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL3BhZ2UudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFFcUQ7QUFDeEI7QUFDZ0M7QUFDRjtBQUVFO0FBSTdELE1BQU1TLGNBQWM7QUFFTCxTQUFTQzs7SUFDdEIsTUFBTUMsZUFBZVAsZ0VBQWVBO0lBQ3BDLE1BQU1RLFNBQVNQLDBEQUFTQTtJQUN4QixNQUFNLENBQUNRLE9BQU9DLFNBQVMsR0FBR2IsK0NBQVFBLENBQWE7UUFDN0MsNENBQTRDO1FBQzVDLElBQUksSUFBNkIsRUFBRTtZQUNqQyxNQUFNYyxTQUFTQyxhQUFhQyxPQUFPLENBQUNSO1lBQ3BDLElBQUlNLFFBQVE7Z0JBQ1YsSUFBSTtvQkFDRixPQUFPRyxLQUFLQyxLQUFLLENBQUNKO2dCQUNwQixFQUFFLFVBQU07b0JBQ04sT0FBTyxDQUFDO2dCQUNWO1lBQ0Y7UUFDRjtRQUNBLE9BQU8sQ0FBQztJQUNWO0lBRUEsZ0RBQWdEO0lBQ2hEYixnREFBU0EsQ0FBQztRQUNSLE1BQU1rQixjQUFjVCxhQUFhVSxHQUFHLENBQUM7UUFDckMsSUFBSUQsYUFBYTtZQUNmLE1BQU0sQ0FBQ0UsWUFBWUMsT0FBTyxHQUFHSCxZQUFZSSxLQUFLLENBQUM7WUFDL0MsSUFBSUYsY0FBY0MsVUFBVWpCLDZEQUFVQSxDQUFDbUIsSUFBSSxDQUFDLENBQUNDLElBQU1BLEVBQUVDLEVBQUUsS0FBS0wsYUFBYTtnQkFDdkVSLFNBQVMsQ0FBQ2M7b0JBQ1IsTUFBTUMsVUFBVTt3QkFDZCxHQUFHRCxJQUFJO3dCQUNQLENBQUNOLFdBQVcsRUFBRUM7b0JBQ2hCO29CQUNBLDBCQUEwQjtvQkFDMUJQLGFBQWFjLE9BQU8sQ0FBQ3JCLGFBQWFTLEtBQUthLFNBQVMsQ0FBQ0Y7b0JBQ2pELE9BQU9BO2dCQUNUO2dCQUNBLDhCQUE4QjtnQkFDOUJqQixPQUFPb0IsT0FBTyxDQUFDLGVBQWU7b0JBQUVDLFFBQVE7Z0JBQU07WUFDaEQ7UUFDRjtJQUNGLEdB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T0FIQ1osY0FBY2tCLE1BQU0sS0FBSyxJQUNyQixrQ0FDQTtzREFFUDs7Ozs7O3NEQUdELDhEQUFDbkI7NENBQUVhLFdBQVU7c0RBQW1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVM5RDtHQXBOd0J6Qzs7UUFDRE4sNERBQWVBO1FBQ3JCQyxzREFBU0E7OztLQUZGSyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9hcHAvZ3VuYnVpbGRlci9wYWdlLnRzeD8wNTQwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgeyB1c2VNZW1vLCB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgTGluayBmcm9tIFwibmV4dC9saW5rXCI7XG5pbXBvcnQgeyB1c2VTZWFyY2hQYXJhbXMsIHVzZVJvdXRlciB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIjtcbmltcG9ydCB7IENBVEVHT1JJRVMsIFBBUlRTIH0gZnJvbSBcIkAvZGF0YS9ndW5idWlsZGVyUGFydHNcIjtcbmltcG9ydCB0eXBlIHsgQ2F0ZWdvcnlJZCwgUGFydCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcbmltcG9ydCB7IENhdGVnb3J5Q29sdW1uIH0gZnJvbSBcIkAvY29tcG9uZW50cy9DYXRlZ29yeUNvbHVtblwiO1xuXG50eXBlIEJ1aWxkU3RhdGUgPSBQYXJ0aWFsPFJlY29yZDxDYXRlZ29yeUlkLCBzdHJpbmc+PjsgLy8gY2F0ZWdvcnlJZCAtPiBwYXJ0SWRcblxuY29uc3QgU1RPUkFHRV9LRVkgPSBcImd1bmJ1aWxkZXItYnVpbGQtc3RhdGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gR3VuYnVpbGRlclBhZ2UoKSB7XG4gIGNvbnN0IHNlYXJjaFBhcmFtcyA9IHVzZVNlYXJjaFBhcmFtcygpO1xuICBjb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKTtcbiAgY29uc3QgW2J1aWxkLCBzZXRCdWlsZF0gPSB1c2VTdGF0ZTxCdWlsZFN0YXRlPigoKSA9PiB7XG4gICAgLy8gSW5pdGlhbGl6ZSBmcm9tIGxvY2FsU3RvcmFnZSBpZiBhdmFpbGFibGVcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oU1RPUkFHRV9LRVkpO1xuICAgICAgaWYgKHN0b3JlZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHN0b3JlZCk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH0pO1xuXG4gIC8vIEhhbmRsZSBVUkwgcXVlcnkgcGFyYW1ldGVyIGZvciBwYXJ0IHNlbGVjdGlvblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdFBhcmFtID0gc2VhcmNoUGFyYW1zLmdldChcInNlbGVjdFwiKTtcbiAgICBpZiAoc2VsZWN0UGFyYW0pIHtcbiAgICAgIGNvbnN0IFtjYXRlZ29yeUlkLCBwYXJ0SWRdID0gc2VsZWN0UGFyYW0uc3BsaXQoXCI6XCIpO1xuICAgICAgaWYgKGNhdGVnb3J5SWQgJiYgcGFydElkICYmIENBVEVHT1JJRVMuc29tZSgoYykgPT4gYy5pZCA9PT0gY2F0ZWdvcnlJZCkpIHtcbiAgICAgICAgc2V0QnVpbGQoKHByZXYpID0+IHtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkID0ge1xuICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgIFtjYXRlZ29yeUlkXTogcGFydElkLFxuICAgICAgICAgIH07XG4gICAgICAgICAgLy8gUGVyc2lzdCB0byBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkodXBkYXRlZCkpO1xuICAgICAgICAgIHJldHVybiB1cGRhdGVkO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gUmVtb3ZlIHF1ZXJ5IHBhcmFtIGZyb20gVVJMXG4gICAgICAgIHJvdXRlci5yZXBsYWNlKFwiL2d1bmJ1aWxkZXJcIiwgeyBzY3JvbGw6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3NlYXJjaFBhcmFtcywgcm91dGVyXSk7XG5cbiAgLy8gUGVyc2lzdCBidWlsZCBzdGF0ZSB0byBsb2NhbFN0b3JhZ2Ugd2hlbmV2ZXIgaXQgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkoYnVpbGQpKTtcbiAgICB9XG4gIH0sIFtidWlsZF0pO1xuXG4gIGNvbnN0IHBhcnRzQnlDYXRlZ29yeTogUmVjb3JkPENhdGVnb3J5SWQsIFBhcnRbXT4gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBncm91cGVkID0ge30gYXMgUmVjb3JkPENhdGVnb3J5SWQsIFBhcnRbXT47XG4gICAgZm9yIChjb25zdCBjYXRlZ29yeSBvZiBDQVRFR09SSUVTKSB7XG4gICAgICBncm91cGVkW2NhdGVnb3J5LmlkXSA9IFBBUlRTLmZpbHRlcihcbiAgICAgICAgKHApID0+IHAuY2F0ZWdvcnlJZCA9PT0gY2F0ZWdvcnkuaWQsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZ3JvdXBlZDtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHNlbGVjdGVkUGFydHM6IFBhcnRbXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhidWlsZClcbiAgICAgIC5tYXAoKFtjYXRlZ29yeUlkLCBwYXJ0SWRdKSA9PlxuICAgICAgICBQQVJUUy5maW5kKChwKSA9PiBwLmlkID09PSBwYXJ0SWQgJiYgcC5jYXRlZ29yeUlkID09PSBjYXRlZ29yeUlkKSxcbiAgICAgIClcbiAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgUGFydFtdO1xuICB9LCBbYnVpbGRdKTtcblxuICBjb25zdCB0b3RhbFByaWNlID0gdXNlTWVtbyhcbiAgICAoKSA9PiBzZWxlY3RlZFBhcnRzLnJlZHVjZSgoc3VtLCBwKSA9PiBzdW0gKyBwLnByaWNlLCAwKSxcbiAgICBbc2VsZWN0ZWRQYXJ0c10sXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0UGFydCA9IChjYXRlZ29yeUlkOiBDYXRlZ29yeUlkLCBwYXJ0SWQ6IHN0cmluZykgPT4ge1xuICAgIHNldEJ1aWxkKChwcmV2KSA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIFtjYXRlZ29yeUlkXTogcGFydElkLFxuICAgIH0pKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxtYWluIGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ibGFjayB0ZXh0LXppbmMtNTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtYXgtdy02eGwgcHgtNCBweS02IGxnOnB5LTEwXCI+XG4gICAgICAgIHsvKiBIZWFkZXIgKi99XG4gICAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwibWItNiBmbGV4IGZsZXgtY29sIGdhcC0yIG1kOmZsZXgtcm93IG1kOml0ZW1zLWVuZCBtZDpqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjJlbV0gdXBwZXJjYXNlIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgU2hhZG93IFN0YW5kYXJkXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LTJ4bCBtZDp0ZXh0LTN4bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0XCI+XG4gICAgICAgICAgICAgIEd1bmJ1aWxkZXIgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDBcIj5Qcm90b3R5cGU8L3NwYW4+XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMiB0ZXh0LXNtIHRleHQtemluYy00MDAgbWF4LXcteGxcIj5cbiAgICAgICAgICAgICAgQ2hvb3NlIG9uZSBwYXJ0IHBlciBjYXRlZ29yeSB0byBhc3NlbWJsZSBhbiBBUi0xNSBidWlsZC4gUHJpY2VzXG4gICAgICAgICAgICAgIGFuZCBsaW5rcyBhcmUgbW9jayBkYXRhIGZvciBub3figJRidXQgdGhlIGZsb3cgaXMgY2xvc2UgdG8gd2hhdFxuICAgICAgICAgICAgICB0aGUgcmVhbCB0b29sIHdpbGwgYmUuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTMgbWQ6bXQtMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy00MDBcIj5DdXJyZW50IGJ1aWxkIHRvdGFsPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0zMDBcIj5cbiAgICAgICAgICAgICAgJHt0b3RhbFByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgIHtzZWxlY3RlZFBhcnRzLmxlbmd0aH0gLyB7Q0FURUdPUklFUy5sZW5ndGh9IGNhdGVnb3JpZXMgZmlsbGVkXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgey8qIExheW91dCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC00IGxnOmdyaWQtY29scy1bM2ZyLDEuMjVmcl1cIj5cbiAgICAgICAgICB7LyogQ2F0ZWdvcmllcy9wYXJ0cyAqL31cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItemluYy04MDAgYmctemluYy05NTAvNjAgcC0zIG1kOnAtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC00IG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zXCI+XG4gICAgICAgICAgICAgIHtDQVRFR09SSUVTLm1hcCgoY2F0ZWdvcnkpID0+IChcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBrZXk9e2NhdGVnb3J5LmlkfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci16aW5jLTgwMCByb3VuZGVkLW1kIHAtMiBtZDpwLTMgYmctemluYy05NTAvNjBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxDYXRlZ29yeUNvbHVtblxuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT17Y2F0ZWdvcnl9XG4gICAgICAgICAgICAgICAgICAgIHBhcnRzPXtwYXJ0c0J5Q2F0ZWdvcnlbY2F0ZWdvcnkuaWRdfVxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFBhcnRJZD17YnVpbGRbY2F0ZWdvcnkuaWRdfVxuICAgICAgICAgICAgICAgICAgICBvblNlbGVjdFBhcnQ9eyhwYXJ0SWQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0UGFydChjYXRlZ29yeS5pZCwgcGFydElkKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgIHsvKiBCdWlsZCBTdW1tYXJ5ICovfVxuICAgICAgICAgIDxhc2lkZSBjbGFzc05hbWU9XCJyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItemluYy04MDAgYmctemluYy05NTAvODAgcC0zIG1kOnAtNCBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjE2ZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNDAwIG1iLTNcIj5cbiAgICAgICAgICAgICAgQ3VycmVudCBCdWlsZFxuICAgICAgICAgICAgPC9oMj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgb3ZlcmZsb3cteS1hdXRvIHByLTFcIj5cbiAgICAgICAgICAgICAge3NlbGVjdGVkUGFydHMubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgICAgIFNlbGVjdCBhIHBhcnQgZnJvbSBlYWNoIGNhdGVnb3J5IHRvIHN0YXJ0IHlvdXIgYnVpbGQuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJzcGFjZS15LTJcIj5cbiAgICAgICAgICAgICAgICB7Q0FURUdPUklFUy5tYXAoKGNhdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRQYXJ0SWQgPSBidWlsZFtjYXQuaWRdO1xuICAgICAgICAgICAgICAgICAgY29uc3QgcGFydCA9IFBBUlRTLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChwKSA9PiBwLmlkID09PSBzZWxlY3RlZFBhcnRJZCAmJiBwLmNhdGVnb3J5SWQgPT09IGNhdC5pZCxcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8bGkga2V5PXtjYXQuaWR9PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1bMC43cmVtXSB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMTZlbV0gdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2NhdC5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0xIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC16aW5jLTQwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQuYnJhbmR9e1wiIFwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0zMDAgd2hpdGVzcGFjZS1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3BhcnQucHJpY2UudG9GaXhlZCgyKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0xIHRleHQteHMgdGV4dC16aW5jLTYwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBOb3Qgc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHsvKiBDVEEgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTQgYm9yZGVyLXQgYm9yZGVyLXppbmMtODAwIHB0LTMgc3BhY2UteS0yXCI+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj1cIi9ndW5idWlsZGVyL2J1aWxkXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BibG9jayB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWFtYmVyLTQwMC82MCBiZy1hbWJlci00MDAvMTAgcHgtMyBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1hbWJlci0yMDAgaG92ZXI6YmctYW1iZXItNDAwLzE1IHRleHQtY2VudGVyIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZFBhcnRzLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFwib3BhY2l0eS00MCBjdXJzb3Itbm90LWFsbG93ZWQgcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIDogXCJcIlxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQ29udGludWUgdG8gQnV5XG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIHNldEJ1aWxkKHt9KTtcbiAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFNUT1JBR0VfS0VZKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzZWxlY3RlZFBhcnRzLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2B3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzUwIHB4LTMgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtemluYy0zMDAgaG92ZXI6YmctemluYy04MDAgaG92ZXI6Ym9yZGVyLXppbmMtNjAwIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZFBhcnRzLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFwib3BhY2l0eS00MCBjdXJzb3Itbm90LWFsbG93ZWRcIlxuICAgICAgICAgICAgICAgICAgICA6IFwiXCJcbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIENsZWFyIEJ1aWxkXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0yIHRleHQtWzAuN3JlbV0gdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICAgIFZpZXcgeW91ciBidWlsZCBzdW1tYXJ5IHdpdGggYWZmaWxpYXRlIGxpbmtzIGFuZCBzaGFyaW5nIG9wdGlvbnMuXG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXNpZGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tYWluPlxuICApO1xufVxuIl0sIm5hbWVzIjpbInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIkxpbmsiLCJ1c2VTZWFyY2hQYXJhbXMiLCJ1c2VSb3V0ZXIiLCJDQVRFR09SSUVTIiwiUEFSVFMiLCJDYXRlZ29yeUNvbHVtbiIsIlNUT1JBR0VfS0VZIiwiR3VuYnVpbGRlclBhZ2UiLCJzZWFyY2hQYXJhbXMiLCJyb3V0ZXIiLCJidWlsZCIsInNldEJ1aWxkIiwic3RvcmVkIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsIkpTT04iLCJwYXJzZSIsInNlbGVjdFBhcmFtIiwiZ2V0IiwiY2F0ZWdvcnlJZCIsInBhcnRJZCIsInNwbGl0Iiwic29tZSIsImMiLCJpZCIsInByZXYiLCJ1cGRhdGVkIiwic2V0SXRlbSIsInN0cmluZ2lmeSIsInJlcGxhY2UiLCJzY3JvbGwiLCJwYXJ0c0J5Q2F0ZWdvcnkiLCJncm91cGVkIiwiY2F0ZWdvcnkiLCJmaWx0ZXIiLCJwIiwic2VsZWN0ZWRQYXJ0cyIsIk9iamVjdCIsImVudHJpZXMiLCJtYXAiLCJmaW5kIiwiQm9vbGVhbiIsInRvdGFsUHJpY2UiLCJyZWR1Y2UiLCJzdW0iLCJwcmljZSIsImhhbmRsZVNlbGVjdFBhcnQiLCJtYWluIiwiY2xhc3NOYW1lIiwiZGl2IiwiaGVhZGVyIiwiaDEiLCJzcGFuIiwidG9GaXhlZCIsImxlbmd0aCIsInNlY3Rpb24iLCJwYXJ0cyIsInNlbGVjdGVkUGFydElkIiwib25TZWxlY3RQYXJ0IiwiYXNpZGUiLCJoMiIsInVsIiwiY2F0IiwicGFydCIsImxpIiwibmFtZSIsImJyYW5kIiwiaHJlZiIsImJ1dHRvbiIsInR5cGUiLCJvbkNsaWNrIiwicmVtb3ZlSXRlbSIsImRpc2FibGVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/page.tsx\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.046d14ac1f24d478.hot-update.js b/.next/static/webpack/app/layout.046d14ac1f24d478.hot-update.js new file mode 100644 index 0000000..d76e478 --- /dev/null +++ b/.next/static/webpack/app/layout.046d14ac1f24d478.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"eedd160618c3\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJlZWRkMTYwNjE4YzNcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.128627853224a2d4.hot-update.js b/.next/static/webpack/app/layout.128627853224a2d4.hot-update.js new file mode 100644 index 0000000..012b3d9 --- /dev/null +++ b/.next/static/webpack/app/layout.128627853224a2d4.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"ffae9c85647d\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJmZmFlOWM4NTY0N2RcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.3b6503389f6ac034.hot-update.js b/.next/static/webpack/app/layout.3b6503389f6ac034.hot-update.js new file mode 100644 index 0000000..2ebd041 --- /dev/null +++ b/.next/static/webpack/app/layout.3b6503389f6ac034.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"61cf095c03ae\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI2MWNmMDk1YzAzYWVcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.3bebdd7477e09e2a.hot-update.js b/.next/static/webpack/app/layout.3bebdd7477e09e2a.hot-update.js new file mode 100644 index 0000000..df32e47 --- /dev/null +++ b/.next/static/webpack/app/layout.3bebdd7477e09e2a.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"738f319964c9\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI3MzhmMzE5OTY0YzlcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.470106d2483fe157.hot-update.js b/.next/static/webpack/app/layout.470106d2483fe157.hot-update.js new file mode 100644 index 0000000..a42665e --- /dev/null +++ b/.next/static/webpack/app/layout.470106d2483fe157.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"9b737540a384\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI5YjczNzU0MGEzODRcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.51a0251b56f840c5.hot-update.js b/.next/static/webpack/app/layout.51a0251b56f840c5.hot-update.js new file mode 100644 index 0000000..eef86b6 --- /dev/null +++ b/.next/static/webpack/app/layout.51a0251b56f840c5.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"632b0fa9e308\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI2MzJiMGZhOWUzMDhcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.580f64a4930cd520.hot-update.js b/.next/static/webpack/app/layout.580f64a4930cd520.hot-update.js new file mode 100644 index 0000000..1c4bdad --- /dev/null +++ b/.next/static/webpack/app/layout.580f64a4930cd520.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"c6435c311551\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJjNjQzNWMzMTE1NTFcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.62829ecc5a9f016d.hot-update.js b/.next/static/webpack/app/layout.62829ecc5a9f016d.hot-update.js new file mode 100644 index 0000000..748f026 --- /dev/null +++ b/.next/static/webpack/app/layout.62829ecc5a9f016d.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"6dc9a1dd8479\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI2ZGM5YTFkZDg0NzlcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.73f26e6e39ca6219.hot-update.js b/.next/static/webpack/app/layout.73f26e6e39ca6219.hot-update.js new file mode 100644 index 0000000..e650d7c --- /dev/null +++ b/.next/static/webpack/app/layout.73f26e6e39ca6219.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"956c150ca78a\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI5NTZjMTUwY2E3OGFcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.7bb4a4e9a866cbdd.hot-update.js b/.next/static/webpack/app/layout.7bb4a4e9a866cbdd.hot-update.js new file mode 100644 index 0000000..2aba071 --- /dev/null +++ b/.next/static/webpack/app/layout.7bb4a4e9a866cbdd.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"eebfcdab4246\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJlZWJmY2RhYjQyNDZcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.7cec39c7e4aa49e7.hot-update.js b/.next/static/webpack/app/layout.7cec39c7e4aa49e7.hot-update.js new file mode 100644 index 0000000..54b54c7 --- /dev/null +++ b/.next/static/webpack/app/layout.7cec39c7e4aa49e7.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"7ddaf62fdeac\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI3ZGRhZjYyZmRlYWNcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.ac57d1da09eaaba0.hot-update.js b/.next/static/webpack/app/layout.ac57d1da09eaaba0.hot-update.js new file mode 100644 index 0000000..4b8ff03 --- /dev/null +++ b/.next/static/webpack/app/layout.ac57d1da09eaaba0.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"62dc0312b971\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI2MmRjMDMxMmI5NzFcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.c81c5ba568e3f3ba.hot-update.js b/.next/static/webpack/app/layout.c81c5ba568e3f3ba.hot-update.js new file mode 100644 index 0000000..f60f003 --- /dev/null +++ b/.next/static/webpack/app/layout.c81c5ba568e3f3ba.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"ea83046c2320\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJlYTgzMDQ2YzIzMjBcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.dfb10022e50981f7.hot-update.js b/.next/static/webpack/app/layout.dfb10022e50981f7.hot-update.js new file mode 100644 index 0000000..0c87b31 --- /dev/null +++ b/.next/static/webpack/app/layout.dfb10022e50981f7.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"2689aa9e2ade\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCIyNjg5YWE5ZTJhZGVcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/b3ad1fad31e1ee28.webpack.hot-update.json b/.next/static/webpack/b3ad1fad31e1ee28.webpack.hot-update.json new file mode 100644 index 0000000..3823c4c --- /dev/null +++ b/.next/static/webpack/b3ad1fad31e1ee28.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/c81c5ba568e3f3ba.webpack.hot-update.json b/.next/static/webpack/c81c5ba568e3f3ba.webpack.hot-update.json new file mode 100644 index 0000000..31f1cde --- /dev/null +++ b/.next/static/webpack/c81c5ba568e3f3ba.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","app/gunbuilder/page","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/dfb10022e50981f7.webpack.hot-update.json b/.next/static/webpack/dfb10022e50981f7.webpack.hot-update.json new file mode 100644 index 0000000..31f1cde --- /dev/null +++ b/.next/static/webpack/dfb10022e50981f7.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","app/gunbuilder/page","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/dffab0dd64ea971c.webpack.hot-update.json b/.next/static/webpack/dffab0dd64ea971c.webpack.hot-update.json new file mode 100644 index 0000000..3823c4c --- /dev/null +++ b/.next/static/webpack/dffab0dd64ea971c.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/webpack.046d14ac1f24d478.hot-update.js b/.next/static/webpack/webpack.046d14ac1f24d478.hot-update.js new file mode 100644 index 0000000..7ba83c0 --- /dev/null +++ b/.next/static/webpack/webpack.046d14ac1f24d478.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "7bb4a4e9a866cbdd"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.128627853224a2d4.hot-update.js b/.next/static/webpack/webpack.128627853224a2d4.hot-update.js new file mode 100644 index 0000000..57316fd --- /dev/null +++ b/.next/static/webpack/webpack.128627853224a2d4.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "dfb10022e50981f7"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.3b6503389f6ac034.hot-update.js b/.next/static/webpack/webpack.3b6503389f6ac034.hot-update.js new file mode 100644 index 0000000..eb9faac --- /dev/null +++ b/.next/static/webpack/webpack.3b6503389f6ac034.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "73f26e6e39ca6219"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.3bebdd7477e09e2a.hot-update.js b/.next/static/webpack/webpack.3bebdd7477e09e2a.hot-update.js new file mode 100644 index 0000000..7a68577 --- /dev/null +++ b/.next/static/webpack/webpack.3bebdd7477e09e2a.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "dffab0dd64ea971c"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.470106d2483fe157.hot-update.js b/.next/static/webpack/webpack.470106d2483fe157.hot-update.js new file mode 100644 index 0000000..b8de0d2 --- /dev/null +++ b/.next/static/webpack/webpack.470106d2483fe157.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "3bebdd7477e09e2a"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.51a0251b56f840c5.hot-update.js b/.next/static/webpack/webpack.51a0251b56f840c5.hot-update.js new file mode 100644 index 0000000..3b9254f --- /dev/null +++ b/.next/static/webpack/webpack.51a0251b56f840c5.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "046d14ac1f24d478"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.580f64a4930cd520.hot-update.js b/.next/static/webpack/webpack.580f64a4930cd520.hot-update.js new file mode 100644 index 0000000..61df624 --- /dev/null +++ b/.next/static/webpack/webpack.580f64a4930cd520.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "3b6503389f6ac034"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.62829ecc5a9f016d.hot-update.js b/.next/static/webpack/webpack.62829ecc5a9f016d.hot-update.js new file mode 100644 index 0000000..a4aaa0e --- /dev/null +++ b/.next/static/webpack/webpack.62829ecc5a9f016d.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "51a0251b56f840c5"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.73f26e6e39ca6219.hot-update.js b/.next/static/webpack/webpack.73f26e6e39ca6219.hot-update.js new file mode 100644 index 0000000..7d8efa2 --- /dev/null +++ b/.next/static/webpack/webpack.73f26e6e39ca6219.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "62829ecc5a9f016d"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.7bb4a4e9a866cbdd.hot-update.js b/.next/static/webpack/webpack.7bb4a4e9a866cbdd.hot-update.js new file mode 100644 index 0000000..077d660 --- /dev/null +++ b/.next/static/webpack/webpack.7bb4a4e9a866cbdd.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "b9562c6bb83d9ef0"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.7cec39c7e4aa49e7.hot-update.js b/.next/static/webpack/webpack.7cec39c7e4aa49e7.hot-update.js new file mode 100644 index 0000000..0944b50 --- /dev/null +++ b/.next/static/webpack/webpack.7cec39c7e4aa49e7.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "b3ad1fad31e1ee28"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.ac57d1da09eaaba0.hot-update.js b/.next/static/webpack/webpack.ac57d1da09eaaba0.hot-update.js new file mode 100644 index 0000000..b30078d --- /dev/null +++ b/.next/static/webpack/webpack.ac57d1da09eaaba0.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "c81c5ba568e3f3ba"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.b3ad1fad31e1ee28.hot-update.js b/.next/static/webpack/webpack.b3ad1fad31e1ee28.hot-update.js new file mode 100644 index 0000000..c7eaf3e --- /dev/null +++ b/.next/static/webpack/webpack.b3ad1fad31e1ee28.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "128627853224a2d4"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.c81c5ba568e3f3ba.hot-update.js b/.next/static/webpack/webpack.c81c5ba568e3f3ba.hot-update.js new file mode 100644 index 0000000..8dc6904 --- /dev/null +++ b/.next/static/webpack/webpack.c81c5ba568e3f3ba.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "7cec39c7e4aa49e7"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.dfb10022e50981f7.hot-update.js b/.next/static/webpack/webpack.dfb10022e50981f7.hot-update.js new file mode 100644 index 0000000..f182dc5 --- /dev/null +++ b/.next/static/webpack/webpack.dfb10022e50981f7.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "580f64a4930cd520"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.dffab0dd64ea971c.hot-update.js b/.next/static/webpack/webpack.dffab0dd64ea971c.hot-update.js new file mode 100644 index 0000000..d747915 --- /dev/null +++ b/.next/static/webpack/webpack.dffab0dd64ea971c.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "ac57d1da09eaaba0"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/trace b/.next/trace index 464fa0c..4b51aa7 100644 --- a/.next/trace +++ b/.next/trace @@ -27,3 +27,24 @@ [{"name":"handle-request","duration":7618,"timestamp":474202453880,"id":2259,"tags":{"url":"/gunbuilder?select=upper%3Aupper-bcm-m4&_rsc=1jouf","isTurbopack":false},"startTime":1764106847541,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474202461522,"id":2261,"parentId":2259,"tags":{"url":"/gunbuilder?select=upper%3Aupper-bcm-m4&_rsc=1jouf","memory.rss":"567984128","memory.heapUsed":"203993072","memory.heapTotal":"231309312"},"startTime":1764106847549,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":8373,"timestamp":474202454063,"id":2260,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764106847541,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474202462451,"id":2262,"parentId":2260,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"567984128","memory.heapUsed":"204081000","memory.heapTotal":"231309312"},"startTime":1764106847549,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":9785,"timestamp":474210996553,"id":2263,"tags":{"url":"/gunbuilder/lower?_rsc=145qt","isTurbopack":false},"startTime":1764106856084,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474211006372,"id":2264,"parentId":2263,"tags":{"url":"/gunbuilder/lower?_rsc=145qt","memory.rss":"568459264","memory.heapUsed":"205643728","memory.heapTotal":"231768064"},"startTime":1764106856093,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5384,"timestamp":474211009503,"id":2265,"tags":{"url":"/gunbuilder/lower?_rsc=1o5jb","isTurbopack":false},"startTime":1764106856097,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474211014910,"id":2266,"parentId":2265,"tags":{"url":"/gunbuilder/lower?_rsc=1o5jb","memory.rss":"568459264","memory.heapUsed":"206469624","memory.heapTotal":"231768064"},"startTime":1764106856102,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4442,"timestamp":474211672206,"id":2267,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=uiigs","isTurbopack":false},"startTime":1764106856759,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474211676686,"id":2268,"parentId":2267,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=uiigs","memory.rss":"568475648","memory.heapUsed":"207088744","memory.heapTotal":"231768064"},"startTime":1764106856764,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4624,"timestamp":474211679429,"id":2269,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=1kfpz","isTurbopack":false},"startTime":1764106856766,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474211684074,"id":2270,"parentId":2269,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=1kfpz","memory.rss":"568508416","memory.heapUsed":"207732696","memory.heapTotal":"231768064"},"startTime":1764106856771,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5646,"timestamp":474261203330,"id":2271,"tags":{"url":"/gunbuilder?_rsc=x5p1f","isTurbopack":false},"startTime":1764106906290,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":2,"timestamp":474261209026,"id":2272,"parentId":2271,"tags":{"url":"/gunbuilder?_rsc=x5p1f","memory.rss":"530071552","memory.heapUsed":"208567936","memory.heapTotal":"231768064"},"startTime":1764106906296,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4458,"timestamp":474276001741,"id":2278,"parentId":2276,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764106921089,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1442,"timestamp":474276005770,"id":2281,"parentId":2280,"tags":{},"startTime":1764106921093,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1525,"timestamp":474276005689,"id":2280,"parentId":2279,"tags":{},"startTime":1764106921093,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":3211,"timestamp":474276005441,"id":2279,"parentId":2275,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"rsc"},"startTime":1764106921092,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8306,"timestamp":474276001692,"id":2277,"parentId":2276,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764106921089,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2304,"timestamp":474276011184,"id":2290,"parentId":2289,"tags":{},"startTime":1764106921098,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2370,"timestamp":474276011122,"id":2289,"parentId":2288,"tags":{},"startTime":1764106921098,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":6562,"timestamp":474276010998,"id":2288,"parentId":2275,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"ssr"},"startTime":1764106921098,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":47306,"timestamp":474276000575,"id":2276,"parentId":2275,"tags":{},"startTime":1764106921088,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":753,"timestamp":474276049209,"id":2292,"parentId":2291,"tags":{},"startTime":1764106921136,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":474276049972,"id":2294,"parentId":2291,"tags":{},"startTime":1764106921137,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":612,"timestamp":474276049983,"id":2295,"parentId":2291,"tags":{},"startTime":1764106921137,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":474276050606,"id":2296,"parentId":2291,"tags":{},"startTime":1764106921138,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":474276050618,"id":2297,"parentId":2291,"tags":{},"startTime":1764106921138,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":815,"timestamp":474276049969,"id":2293,"parentId":2291,"tags":{},"startTime":1764106921137,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":193,"timestamp":474276051155,"id":2298,"parentId":2291,"tags":{},"startTime":1764106921138,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":1244,"timestamp":474276051352,"id":2299,"parentId":2291,"tags":{},"startTime":1764106921138,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":862,"timestamp":474276053243,"id":2300,"parentId":2291,"tags":{},"startTime":1764106921140,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":58,"timestamp":474276054105,"id":2301,"parentId":2291,"tags":{},"startTime":1764106921141,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":42,"timestamp":474276054158,"id":2302,"parentId":2291,"tags":{},"startTime":1764106921141,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1295,"timestamp":474276054203,"id":2303,"parentId":2291,"tags":{},"startTime":1764106921141,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7428,"timestamp":474276048949,"id":2291,"parentId":2275,"tags":{},"startTime":1764106921136,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":56990,"timestamp":474276000343,"id":2275,"parentId":2273,"tags":{"name":"server"},"startTime":1764106921087,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1378,"timestamp":474276057356,"id":2304,"parentId":2273,"tags":{},"startTime":1764106921144,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":65792,"timestamp":474275993167,"id":2273,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764106921080,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3603,"timestamp":474276061800,"id":2314,"parentId":2306,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764106921149,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3923,"timestamp":474276061767,"id":2307,"parentId":2306,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764106921149,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4796,"timestamp":474276061799,"id":2313,"parentId":2306,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764106921149,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2626,"timestamp":474276064709,"id":2318,"parentId":2317,"tags":{},"startTime":1764106921152,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2749,"timestamp":474276064587,"id":2317,"parentId":2316,"tags":{},"startTime":1764106921152,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":8365,"timestamp":474276064479,"id":2316,"parentId":2305,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"app-pages-browser"},"startTime":1764106921151,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":11492,"timestamp":474276061792,"id":2309,"parentId":2306,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764106921149,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":11616,"timestamp":474276061795,"id":2311,"parentId":2306,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764106921149,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":6652,"timestamp":474276066767,"id":2320,"parentId":2319,"tags":{},"startTime":1764106921154,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":14304,"timestamp":474276061789,"id":2308,"parentId":2306,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764106921149,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":13101,"timestamp":474276073442,"id":2322,"parentId":2321,"tags":{},"startTime":1764106921160,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":13321,"timestamp":474276073431,"id":2321,"parentId":2319,"tags":{},"startTime":1764106921160,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2825,"timestamp":474276086776,"id":2323,"parentId":2319,"tags":{"astUsed":"true"},"startTime":1764106921174,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":23544,"timestamp":474276066698,"id":2319,"parentId":2315,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764106921154,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":35268,"timestamp":474276064230,"id":2315,"parentId":2305,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764106921151,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":21,"timestamp":474276100443,"id":2324,"parentId":2315,"tags":{},"startTime":1764106921187,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":38684,"timestamp":474276061794,"id":2310,"parentId":2306,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764106921149,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":44994,"timestamp":474276061797,"id":2312,"parentId":2306,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764106921149,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":47054,"timestamp":474276059746,"id":2306,"parentId":2305,"tags":{},"startTime":1764106921147,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":688,"timestamp":474276107658,"id":2326,"parentId":2325,"tags":{},"startTime":1764106921195,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":3,"timestamp":474276108357,"id":2328,"parentId":2325,"tags":{},"startTime":1764106921195,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":17,"timestamp":474276108367,"id":2329,"parentId":2325,"tags":{},"startTime":1764106921195,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":474276108391,"id":2330,"parentId":2325,"tags":{},"startTime":1764106921195,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":474276108403,"id":2331,"parentId":2325,"tags":{},"startTime":1764106921195,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":261,"timestamp":474276108352,"id":2327,"parentId":2325,"tags":{},"startTime":1764106921195,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":193,"timestamp":474276108988,"id":2332,"parentId":2325,"tags":{},"startTime":1764106921196,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":767,"timestamp":474276109185,"id":2333,"parentId":2325,"tags":{},"startTime":1764106921196,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1945,"timestamp":474276110788,"id":2334,"parentId":2325,"tags":{},"startTime":1764106921198,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":112,"timestamp":474276112730,"id":2335,"parentId":2325,"tags":{},"startTime":1764106921200,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":34,"timestamp":474276112834,"id":2336,"parentId":2325,"tags":{},"startTime":1764106921200,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1964,"timestamp":474276112874,"id":2337,"parentId":2325,"tags":{},"startTime":1764106921200,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":44,"timestamp":474276115331,"id":2339,"parentId":2305,"tags":{},"startTime":1764106921202,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":81,"timestamp":474276115298,"id":2338,"parentId":2305,"tags":{},"startTime":1764106921202,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":8819,"timestamp":474276107416,"id":2325,"parentId":2305,"tags":{},"startTime":1764106921194,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":56642,"timestamp":474276059606,"id":2305,"parentId":2274,"tags":{"name":"client"},"startTime":1764106921147,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":10047,"timestamp":474276116257,"id":2340,"parentId":2274,"tags":{},"startTime":1764106921203,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":133701,"timestamp":474275993229,"id":2274,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764106921080,"traceId":"e274ac96b05c42d4"}] [{"name":"client-success","duration":7,"timestamp":474276127540,"id":2341,"parentId":3,"tags":{},"startTime":1764106921214,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474276128709,"id":2343,"parentId":3,"tags":{},"startTime":1764106921216,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":10418,"timestamp":474276128129,"id":2342,"tags":{"url":"/gunbuilder?_rsc=9gfev","isTurbopack":false},"startTime":1764106921215,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474276138572,"id":2345,"parentId":2342,"tags":{"url":"/gunbuilder?_rsc=9gfev","memory.rss":"570425344","memory.heapUsed":"196316408","memory.heapTotal":"228048896"},"startTime":1764106921226,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":145000,"timestamp":474275994552,"id":2346,"parentId":3,"tags":{"updatedModules":["[project]/node_modules/next/dist/api/navigation.js","[project]/app/gunbuilder/[categoryId]/page.tsx","[project]/app/gunbuilder/page.tsx"],"page":"/gunbuilder","isPageHidden":false},"startTime":1764106921226,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":11258,"timestamp":474276130168,"id":2344,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764106921217,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474276141441,"id":2347,"parentId":2344,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"570425344","memory.heapUsed":"196908704","memory.heapTotal":"228048896"},"startTime":1764106921228,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":159000,"timestamp":474275994429,"id":2348,"parentId":3,"tags":{"updatedModules":["[project]/node_modules/next/dist/api/navigation.js","[project]/app/gunbuilder/page.tsx"],"page":"/gunbuilder","isPageHidden":true},"startTime":1764106921240,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":14245,"timestamp":474295440194,"id":2349,"tags":{"url":"/gunbuilder/lower?_rsc=fbwoq","isTurbopack":false},"startTime":1764106940527,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":2,"timestamp":474295454496,"id":2350,"parentId":2349,"tags":{"url":"/gunbuilder/lower?_rsc=fbwoq","memory.rss":"520355840","memory.heapUsed":"182505096","memory.heapTotal":"191250432"},"startTime":1764106940541,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7390,"timestamp":474296040964,"id":2351,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=1kfpz","isTurbopack":false},"startTime":1764106941128,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":2,"timestamp":474296048400,"id":2352,"parentId":2351,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=1kfpz","memory.rss":"520470528","memory.heapUsed":"182465872","memory.heapTotal":"191512576"},"startTime":1764106941135,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7736,"timestamp":474296058138,"id":2353,"tags":{"url":"/gunbuilder?_rsc=x5p1f","isTurbopack":false},"startTime":1764106941145,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474296065896,"id":2354,"parentId":2353,"tags":{"url":"/gunbuilder?_rsc=x5p1f","memory.rss":"520470528","memory.heapUsed":"182427800","memory.heapTotal":"191512576"},"startTime":1764106941153,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":9633,"timestamp":474297703883,"id":2355,"tags":{"url":"/gunbuilder/upper?_rsc=1tdvv","isTurbopack":false},"startTime":1764106942791,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":3,"timestamp":474297713574,"id":2356,"parentId":2355,"tags":{"url":"/gunbuilder/upper?_rsc=1tdvv","memory.rss":"520470528","memory.heapUsed":"182579960","memory.heapTotal":"190464000"},"startTime":1764106942800,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":8415,"timestamp":474298393942,"id":2357,"tags":{"url":"/gunbuilder?select=upper%3Aupper-bcm-m4&_rsc=nxvwl","isTurbopack":false},"startTime":1764106943481,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474298402396,"id":2358,"parentId":2357,"tags":{"url":"/gunbuilder?select=upper%3Aupper-bcm-m4&_rsc=nxvwl","memory.rss":"520486912","memory.heapUsed":"182503936","memory.heapTotal":"191250432"},"startTime":1764106943489,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7340,"timestamp":474299828959,"id":2359,"tags":{"url":"/gunbuilder/barrel?_rsc=1acsq","isTurbopack":false},"startTime":1764106944916,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474299836345,"id":2360,"parentId":2359,"tags":{"url":"/gunbuilder/barrel?_rsc=1acsq","memory.rss":"520486912","memory.heapUsed":"182538424","memory.heapTotal":"190464000"},"startTime":1764106944923,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6873,"timestamp":474299840985,"id":2361,"tags":{"url":"/gunbuilder/barrel?_rsc=2b9yl","isTurbopack":false},"startTime":1764106944928,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474299847896,"id":2362,"parentId":2361,"tags":{"url":"/gunbuilder/barrel?_rsc=2b9yl","memory.rss":"520486912","memory.heapUsed":"182641472","memory.heapTotal":"191250432"},"startTime":1764106944935,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5305,"timestamp":474300820710,"id":2363,"tags":{"url":"/gunbuilder?select=barrel%3Abarrel-criterion-16&_rsc=2t5kv","isTurbopack":false},"startTime":1764106945908,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474300826068,"id":2364,"parentId":2363,"tags":{"url":"/gunbuilder?select=barrel%3Abarrel-criterion-16&_rsc=2t5kv","memory.rss":"520486912","memory.heapUsed":"182522752","memory.heapTotal":"190464000"},"startTime":1764106945913,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6901,"timestamp":474300829423,"id":2365,"tags":{"url":"/gunbuilder?select=barrel%3Abarrel-criterion-16&_rsc=zfc1s","isTurbopack":false},"startTime":1764106945916,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474300836364,"id":2366,"parentId":2365,"tags":{"url":"/gunbuilder?select=barrel%3Abarrel-criterion-16&_rsc=zfc1s","memory.rss":"520552448","memory.heapUsed":"182304216","memory.heapTotal":"190726144"},"startTime":1764106945923,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6519,"timestamp":474302344754,"id":2367,"tags":{"url":"/gunbuilder/handguard?_rsc=1acsq","isTurbopack":false},"startTime":1764106947432,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474302351312,"id":2368,"parentId":2367,"tags":{"url":"/gunbuilder/handguard?_rsc=1acsq","memory.rss":"505004032","memory.heapUsed":"182323312","memory.heapTotal":"191512576"},"startTime":1764106947438,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":3747,"timestamp":474302353812,"id":2369,"tags":{"url":"/gunbuilder/handguard?_rsc=rs5ev","isTurbopack":false},"startTime":1764106947441,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474302357591,"id":2370,"parentId":2369,"tags":{"url":"/gunbuilder/handguard?_rsc=rs5ev","memory.rss":"505004032","memory.heapUsed":"182423968","memory.heapTotal":"191512576"},"startTime":1764106947444,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1369,"timestamp":474303755567,"id":2379,"parentId":2378,"tags":{},"startTime":1764106948842,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1535,"timestamp":474303755412,"id":2378,"parentId":2377,"tags":{},"startTime":1764106948842,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":3376,"timestamp":474303755075,"id":2377,"parentId":2373,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"rsc"},"startTime":1764106948842,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":10549,"timestamp":474303749136,"id":2375,"parentId":2374,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764106948836,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":11955,"timestamp":474303749185,"id":2376,"parentId":2374,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764106948836,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1892,"timestamp":474303762472,"id":2388,"parentId":2387,"tags":{},"startTime":1764106948849,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1977,"timestamp":474303762393,"id":2387,"parentId":2386,"tags":{},"startTime":1764106948849,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":7175,"timestamp":474303762290,"id":2386,"parentId":2373,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"ssr"},"startTime":1764106948849,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":25016,"timestamp":474303747836,"id":2374,"parentId":2373,"tags":{},"startTime":1764106948835,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":744,"timestamp":474303773919,"id":2390,"parentId":2389,"tags":{},"startTime":1764106948861,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":474303774672,"id":2392,"parentId":2389,"tags":{},"startTime":1764106948862,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":616,"timestamp":474303774694,"id":2393,"parentId":2389,"tags":{},"startTime":1764106948862,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":474303775320,"id":2394,"parentId":2389,"tags":{},"startTime":1764106948862,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":474303775335,"id":2395,"parentId":2389,"tags":{},"startTime":1764106948862,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":882,"timestamp":474303774669,"id":2391,"parentId":2389,"tags":{},"startTime":1764106948862,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":681,"timestamp":474303775954,"id":2396,"parentId":2389,"tags":{},"startTime":1764106948863,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":532,"timestamp":474303776661,"id":2397,"parentId":2389,"tags":{},"startTime":1764106948864,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":831,"timestamp":474303777751,"id":2398,"parentId":2389,"tags":{},"startTime":1764106948865,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":49,"timestamp":474303778581,"id":2399,"parentId":2389,"tags":{},"startTime":1764106948865,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":36,"timestamp":474303778621,"id":2400,"parentId":2389,"tags":{},"startTime":1764106948866,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":64,"timestamp":474303778659,"id":2401,"parentId":2389,"tags":{},"startTime":1764106948866,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":5782,"timestamp":474303773634,"id":2389,"parentId":2373,"tags":{},"startTime":1764106948861,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":32668,"timestamp":474303747622,"id":2373,"parentId":2371,"tags":{"name":"server"},"startTime":1764106948835,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1029,"timestamp":474303780308,"id":2402,"parentId":2371,"tags":{},"startTime":1764106948867,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":41609,"timestamp":474303740038,"id":2371,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764106948827,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2636,"timestamp":474303785557,"id":2412,"parentId":2404,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764106948872,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2899,"timestamp":474303785516,"id":2405,"parentId":2404,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764106948872,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3522,"timestamp":474303785551,"id":2411,"parentId":2404,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764106948872,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4351,"timestamp":474303785544,"id":2407,"parentId":2404,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764106948872,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4430,"timestamp":474303785547,"id":2409,"parentId":2404,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764106948872,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2410,"timestamp":474303787660,"id":2416,"parentId":2415,"tags":{},"startTime":1764106948875,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2463,"timestamp":474303787607,"id":2415,"parentId":2414,"tags":{},"startTime":1764106948875,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":6563,"timestamp":474303787538,"id":2414,"parentId":2403,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"app-pages-browser"},"startTime":1764106948874,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":4915,"timestamp":474303789200,"id":2418,"parentId":2417,"tags":{},"startTime":1764106948876,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":10710,"timestamp":474303785540,"id":2406,"parentId":2404,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764106948872,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":13739,"timestamp":474303794138,"id":2420,"parentId":2419,"tags":{},"startTime":1764106948881,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":13984,"timestamp":474303794125,"id":2419,"parentId":2417,"tags":{},"startTime":1764106948881,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":3165,"timestamp":474303808132,"id":2421,"parentId":2417,"tags":{"astUsed":"true"},"startTime":1764106948895,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":23326,"timestamp":474303789149,"id":2417,"parentId":2413,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764106948876,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":26967,"timestamp":474303785550,"id":2410,"parentId":2404,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764106948872,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":26894,"timestamp":474303787323,"id":2413,"parentId":2403,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764106948874,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":15,"timestamp":474303814295,"id":2422,"parentId":2413,"tags":{},"startTime":1764106948901,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":28784,"timestamp":474303785546,"id":2408,"parentId":2404,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764106948872,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":31597,"timestamp":474303782742,"id":2404,"parentId":2403,"tags":{},"startTime":1764106948870,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":745,"timestamp":474303815149,"id":2424,"parentId":2423,"tags":{},"startTime":1764106948902,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":474303815902,"id":2426,"parentId":2423,"tags":{},"startTime":1764106948903,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":29,"timestamp":474303815910,"id":2427,"parentId":2423,"tags":{},"startTime":1764106948903,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":7,"timestamp":474303815945,"id":2428,"parentId":2423,"tags":{},"startTime":1764106948903,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":474303815960,"id":2429,"parentId":2423,"tags":{},"startTime":1764106948903,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":370,"timestamp":474303815900,"id":2425,"parentId":2423,"tags":{},"startTime":1764106948903,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":156,"timestamp":474303816654,"id":2430,"parentId":2423,"tags":{},"startTime":1764106948904,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":410,"timestamp":474303816813,"id":2431,"parentId":2423,"tags":{},"startTime":1764106948904,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1431,"timestamp":474303817644,"id":2432,"parentId":2423,"tags":{},"startTime":1764106948905,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":54,"timestamp":474303819075,"id":2433,"parentId":2423,"tags":{},"startTime":1764106948906,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":24,"timestamp":474303819125,"id":2434,"parentId":2423,"tags":{},"startTime":1764106948906,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1745,"timestamp":474303819151,"id":2435,"parentId":2423,"tags":{},"startTime":1764106948906,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":49,"timestamp":474303821260,"id":2437,"parentId":2403,"tags":{},"startTime":1764106948908,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":83,"timestamp":474303821230,"id":2436,"parentId":2403,"tags":{},"startTime":1764106948908,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7124,"timestamp":474303814918,"id":2423,"parentId":2403,"tags":{},"startTime":1764106948902,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":39566,"timestamp":474303782492,"id":2403,"parentId":2372,"tags":{"name":"client"},"startTime":1764106948869,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2812,"timestamp":474303822070,"id":2438,"parentId":2372,"tags":{},"startTime":1764106948909,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":85496,"timestamp":474303740103,"id":2372,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764106948827,"traceId":"e274ac96b05c42d4"}] [{"name":"client-success","duration":1,"timestamp":474303826417,"id":2440,"parentId":3,"tags":{},"startTime":1764106948913,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474303828300,"id":2441,"parentId":3,"tags":{},"startTime":1764106948915,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":89000,"timestamp":474303740370,"id":2443,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder/handguard","isPageHidden":false},"startTime":1764106948921,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":11408,"timestamp":474303824396,"id":2439,"tags":{"url":"/gunbuilder?select=handguard%3Ahg-centurion-c4&_rsc=1wjnh","isTurbopack":false},"startTime":1764106948911,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474303835822,"id":2444,"parentId":2439,"tags":{"url":"/gunbuilder?select=handguard%3Ahg-centurion-c4&_rsc=1wjnh","memory.rss":"526188544","memory.heapUsed":"198505976","memory.heapTotal":"214384640"},"startTime":1764106948923,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":95000,"timestamp":474303740800,"id":2445,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764106948924,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":12326,"timestamp":474303828812,"id":2442,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764106948916,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474303841158,"id":2447,"parentId":2442,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"526237696","memory.heapUsed":"199856008","memory.heapTotal":"214384640"},"startTime":1764106948928,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":10008,"timestamp":474303836931,"id":2446,"tags":{"url":"/gunbuilder?select=handguard%3Ahg-centurion-c4&_rsc=13zj1","isTurbopack":false},"startTime":1764106948924,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474303846956,"id":2448,"parentId":2446,"tags":{"url":"/gunbuilder?select=handguard%3Ahg-centurion-c4&_rsc=13zj1","memory.rss":"526286848","memory.heapUsed":"188992928","memory.heapTotal":"212811776"},"startTime":1764106948934,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3817,"timestamp":474307369992,"id":2460,"parentId":2452,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764106952457,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4173,"timestamp":474307369937,"id":2453,"parentId":2452,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764106952457,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4900,"timestamp":474307369990,"id":2459,"parentId":2452,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764106952457,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2328,"timestamp":474307373144,"id":2464,"parentId":2463,"tags":{},"startTime":1764106952460,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2416,"timestamp":474307373059,"id":2463,"parentId":2462,"tags":{},"startTime":1764106952460,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":6455,"timestamp":474307372957,"id":2462,"parentId":2451,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"app-pages-browser"},"startTime":1764106952460,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":10053,"timestamp":474307369981,"id":2455,"parentId":2452,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764106952457,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":10215,"timestamp":474307369985,"id":2457,"parentId":2452,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764106952457,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":5781,"timestamp":474307375045,"id":2466,"parentId":2465,"tags":{},"startTime":1764106952462,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12460,"timestamp":474307369988,"id":2458,"parentId":2452,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764106952457,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12490,"timestamp":474307369977,"id":2454,"parentId":2452,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764106952457,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":10900,"timestamp":474307380856,"id":2468,"parentId":2467,"tags":{},"startTime":1764106952468,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":11186,"timestamp":474307380841,"id":2467,"parentId":2465,"tags":{},"startTime":1764106952468,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2874,"timestamp":474307392047,"id":2469,"parentId":2465,"tags":{"astUsed":"true"},"startTime":1764106952479,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":20502,"timestamp":474307374980,"id":2465,"parentId":2461,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764106952462,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":25850,"timestamp":474307372711,"id":2461,"parentId":2451,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764106952460,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":12,"timestamp":474307398640,"id":2470,"parentId":2461,"tags":{},"startTime":1764106952486,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":28688,"timestamp":474307369983,"id":2456,"parentId":2452,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764106952457,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":28896,"timestamp":474307369784,"id":2452,"parentId":2451,"tags":{},"startTime":1764106952457,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":655,"timestamp":474307399586,"id":2472,"parentId":2471,"tags":{},"startTime":1764106952486,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":474307400248,"id":2474,"parentId":2471,"tags":{},"startTime":1764106952487,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":17,"timestamp":474307400259,"id":2475,"parentId":2471,"tags":{},"startTime":1764106952487,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":474307400282,"id":2476,"parentId":2471,"tags":{},"startTime":1764106952487,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":474307400291,"id":2477,"parentId":2471,"tags":{},"startTime":1764106952487,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":264,"timestamp":474307400245,"id":2473,"parentId":2471,"tags":{},"startTime":1764106952487,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":165,"timestamp":474307400863,"id":2478,"parentId":2471,"tags":{},"startTime":1764106952488,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":525,"timestamp":474307401033,"id":2479,"parentId":2471,"tags":{},"startTime":1764106952488,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1543,"timestamp":474307402037,"id":2480,"parentId":2471,"tags":{},"startTime":1764106952489,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":61,"timestamp":474307403580,"id":2481,"parentId":2471,"tags":{},"startTime":1764106952490,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":23,"timestamp":474307403636,"id":2482,"parentId":2471,"tags":{},"startTime":1764106952491,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1395,"timestamp":474307403662,"id":2483,"parentId":2471,"tags":{},"startTime":1764106952491,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":29,"timestamp":474307405406,"id":2485,"parentId":2451,"tags":{},"startTime":1764106952492,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":56,"timestamp":474307405381,"id":2484,"parentId":2451,"tags":{},"startTime":1764106952492,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":6802,"timestamp":474307399319,"id":2471,"parentId":2451,"tags":{},"startTime":1764106952486,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":36530,"timestamp":474307369602,"id":2451,"parentId":2449,"tags":{"name":"client"},"startTime":1764106952457,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1875,"timestamp":474307406141,"id":2486,"parentId":2449,"tags":{},"startTime":1764106952493,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":45459,"timestamp":474307362903,"id":2449,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764106952450,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":1,"timestamp":474307411248,"id":2489,"parentId":3,"tags":{},"startTime":1764106952498,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474307411277,"id":2490,"parentId":3,"tags":{},"startTime":1764106952498,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":52000,"timestamp":474307363375,"id":2493,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":false},"startTime":1764106952502,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3799,"timestamp":474307412218,"id":2492,"parentId":2488,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764106952499,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":949,"timestamp":474307415684,"id":2496,"parentId":2495,"tags":{},"startTime":1764106952503,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1008,"timestamp":474307415628,"id":2495,"parentId":2494,"tags":{},"startTime":1764106952503,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":1635,"timestamp":474307415471,"id":2494,"parentId":2487,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"rsc"},"startTime":1764106952502,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5952,"timestamp":474307412198,"id":2491,"parentId":2488,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764106952499,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":55000,"timestamp":474307362619,"id":2503,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764106952506,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1659,"timestamp":474307419144,"id":2506,"parentId":2505,"tags":{},"startTime":1764106952506,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1709,"timestamp":474307419095,"id":2505,"parentId":2504,"tags":{},"startTime":1764106952506,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":4232,"timestamp":474307418999,"id":2504,"parentId":2487,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"ssr"},"startTime":1764106952506,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":15785,"timestamp":474307409412,"id":2488,"parentId":2487,"tags":{},"startTime":1764106952496,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":664,"timestamp":474307426022,"id":2508,"parentId":2507,"tags":{},"startTime":1764106952513,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":474307426695,"id":2510,"parentId":2507,"tags":{},"startTime":1764106952514,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":578,"timestamp":474307426702,"id":2511,"parentId":2507,"tags":{},"startTime":1764106952514,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":7,"timestamp":474307427285,"id":2512,"parentId":2507,"tags":{},"startTime":1764106952514,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":474307427296,"id":2513,"parentId":2507,"tags":{},"startTime":1764106952514,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":763,"timestamp":474307426690,"id":2509,"parentId":2507,"tags":{},"startTime":1764106952514,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":190,"timestamp":474307427840,"id":2514,"parentId":2507,"tags":{},"startTime":1764106952515,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":355,"timestamp":474307428033,"id":2515,"parentId":2507,"tags":{},"startTime":1764106952515,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":593,"timestamp":474307428737,"id":2516,"parentId":2507,"tags":{},"startTime":1764106952516,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":34,"timestamp":474307429330,"id":2517,"parentId":2507,"tags":{},"startTime":1764106952516,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":14,"timestamp":474307429362,"id":2518,"parentId":2507,"tags":{},"startTime":1764106952516,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":57,"timestamp":474307429378,"id":2519,"parentId":2507,"tags":{},"startTime":1764106952516,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":4824,"timestamp":474307425852,"id":2507,"parentId":2487,"tags":{},"startTime":1764106952513,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":22012,"timestamp":474307409262,"id":2487,"parentId":2450,"tags":{"name":"server"},"startTime":1764106952496,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":745,"timestamp":474307431286,"id":2520,"parentId":2450,"tags":{},"startTime":1764106952518,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":69354,"timestamp":474307363062,"id":2450,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764106952450,"traceId":"e274ac96b05c42d4"}] +[{"name":"handle-request","duration":7492,"timestamp":474307434933,"id":2522,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764106952522,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474307442442,"id":2523,"parentId":2522,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"543981568","memory.heapUsed":"204752504","memory.heapTotal":"231489536"},"startTime":1764106952529,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7737,"timestamp":474307434756,"id":2521,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764106952522,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474307442498,"id":2524,"parentId":2521,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"543981568","memory.heapUsed":"204764200","memory.heapTotal":"231489536"},"startTime":1764106952529,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":14801,"timestamp":474487367766,"id":2525,"tags":{"url":"/gunbuilder/upper?_rsc=1acsq","isTurbopack":false},"startTime":1764107132454,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474487382613,"id":2526,"parentId":2525,"tags":{"url":"/gunbuilder/upper?_rsc=1acsq","memory.rss":"553893888","memory.heapUsed":"185355728","memory.heapTotal":"226263040"},"startTime":1764107132469,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6030,"timestamp":474487386939,"id":2527,"tags":{"url":"/gunbuilder/upper?_rsc=17gjd","isTurbopack":false},"startTime":1764107132474,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474487392988,"id":2528,"parentId":2527,"tags":{"url":"/gunbuilder/upper?_rsc=17gjd","memory.rss":"553893888","memory.heapUsed":"186196568","memory.heapTotal":"226263040"},"startTime":1764107132480,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":21666,"timestamp":474488887309,"id":2536,"parentId":2533,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107133974,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":24145,"timestamp":474488887212,"id":2534,"parentId":2533,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107133974,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":40515,"timestamp":474488887301,"id":2535,"parentId":2533,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107133974,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":48869,"timestamp":474488885752,"id":2533,"parentId":2532,"tags":{},"startTime":1764107133972,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1019,"timestamp":474488935850,"id":2547,"parentId":2546,"tags":{},"startTime":1764107134023,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":474488936878,"id":2549,"parentId":2546,"tags":{},"startTime":1764107134024,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":870,"timestamp":474488936888,"id":2550,"parentId":2546,"tags":{},"startTime":1764107134024,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":474488937767,"id":2551,"parentId":2546,"tags":{},"startTime":1764107134024,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":474488937779,"id":2552,"parentId":2546,"tags":{},"startTime":1764107134024,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1144,"timestamp":474488936875,"id":2548,"parentId":2546,"tags":{},"startTime":1764107134024,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":195,"timestamp":474488938486,"id":2553,"parentId":2546,"tags":{},"startTime":1764107134025,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":346,"timestamp":474488938687,"id":2554,"parentId":2546,"tags":{},"startTime":1764107134025,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":699,"timestamp":474488939679,"id":2555,"parentId":2546,"tags":{},"startTime":1764107134026,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":41,"timestamp":474488940378,"id":2556,"parentId":2546,"tags":{},"startTime":1764107134027,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":18,"timestamp":474488940416,"id":2557,"parentId":2546,"tags":{},"startTime":1764107134027,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":136,"timestamp":474488940436,"id":2558,"parentId":2546,"tags":{},"startTime":1764107134027,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":5530,"timestamp":474488935670,"id":2546,"parentId":2532,"tags":{},"startTime":1764107134022,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":56882,"timestamp":474488885357,"id":2532,"parentId":2530,"tags":{"name":"server"},"startTime":1764107133972,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1332,"timestamp":474488942248,"id":2559,"parentId":2530,"tags":{},"startTime":1764107134029,"traceId":"e274ac96b05c42d4"},{"name":"compile-path","duration":62655,"timestamp":474488881336,"id":2531,"tags":{"trigger":"/gunbuilder/[categoryId]/[partId]","isTurbopack":false},"startTime":1764107133968,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":62884,"timestamp":474488881178,"id":2530,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764107133968,"traceId":"e274ac96b05c42d4"}] +[{"name":"handle-request","duration":77489,"timestamp":474488876356,"id":2529,"tags":{"url":"/gunbuilder/upper/upper-bcm-m4?_rsc=1d33p","isTurbopack":false},"startTime":1764107133963,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474488953860,"id":2560,"parentId":2529,"tags":{"url":"/gunbuilder/upper/upper-bcm-m4?_rsc=1d33p","memory.rss":"557858816","memory.heapUsed":"190950680","memory.heapTotal":"209485824"},"startTime":1764107134041,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4990,"timestamp":474488959075,"id":2561,"tags":{"url":"/gunbuilder/upper/upper-bcm-m4?_rsc=fkro0","isTurbopack":false},"startTime":1764107134046,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474488964076,"id":2562,"parentId":2561,"tags":{"url":"/gunbuilder/upper/upper-bcm-m4?_rsc=fkro0","memory.rss":"557858816","memory.heapUsed":"191921424","memory.heapTotal":"209485824"},"startTime":1764107134051,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":10472,"timestamp":474490803652,"id":2563,"tags":{"url":"/gunbuilder?select=upper%3Aupper-bcm-m4&_rsc=12xd6","isTurbopack":false},"startTime":1764107135890,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474490814184,"id":2564,"parentId":2563,"tags":{"url":"/gunbuilder?select=upper%3Aupper-bcm-m4&_rsc=12xd6","memory.rss":"557858816","memory.heapUsed":"191107272","memory.heapTotal":"209485824"},"startTime":1764107135901,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7543,"timestamp":474490817382,"id":2565,"tags":{"url":"/gunbuilder?select=upper%3Aupper-bcm-m4&_rsc=nxvwl","isTurbopack":false},"startTime":1764107135904,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474490824952,"id":2566,"parentId":2565,"tags":{"url":"/gunbuilder?select=upper%3Aupper-bcm-m4&_rsc=nxvwl","memory.rss":"557858816","memory.heapUsed":"191740832","memory.heapTotal":"209485824"},"startTime":1764107135912,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5407,"timestamp":474490843276,"id":2567,"tags":{"url":"/gunbuilder?_rsc=1us9o","isTurbopack":false},"startTime":1764107135930,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":6,"timestamp":474490848717,"id":2568,"parentId":2567,"tags":{"url":"/gunbuilder?_rsc=1us9o","memory.rss":"557858816","memory.heapUsed":"192279136","memory.heapTotal":"209485824"},"startTime":1764107135935,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":16823,"timestamp":474492379585,"id":2569,"tags":{"url":"/gunbuilder/barrel?_rsc=1jn8g","isTurbopack":false},"startTime":1764107137466,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474492396450,"id":2570,"parentId":2569,"tags":{"url":"/gunbuilder/barrel?_rsc=1jn8g","memory.rss":"558055424","memory.heapUsed":"193299024","memory.heapTotal":"209682432"},"startTime":1764107137483,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6060,"timestamp":474492403955,"id":2571,"tags":{"url":"/gunbuilder/barrel?_rsc=2b9yl","isTurbopack":false},"startTime":1764107137491,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474492410033,"id":2572,"parentId":2571,"tags":{"url":"/gunbuilder/barrel?_rsc=2b9yl","memory.rss":"558055424","memory.heapUsed":"194125040","memory.heapTotal":"209682432"},"startTime":1764107137497,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7735,"timestamp":474493418350,"id":2573,"tags":{"url":"/gunbuilder?select=barrel%3Abarrel-ba-13-9&_rsc=2t5kv","isTurbopack":false},"startTime":1764107138505,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474493426276,"id":2574,"parentId":2573,"tags":{"url":"/gunbuilder?select=barrel%3Abarrel-ba-13-9&_rsc=2t5kv","memory.rss":"558055424","memory.heapUsed":"194742048","memory.heapTotal":"209682432"},"startTime":1764107138513,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":9929,"timestamp":474493430229,"id":2575,"tags":{"url":"/gunbuilder?select=barrel%3Abarrel-ba-13-9&_rsc=bpw29","isTurbopack":false},"startTime":1764107138517,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474493440191,"id":2576,"parentId":2575,"tags":{"url":"/gunbuilder?select=barrel%3Abarrel-ba-13-9&_rsc=bpw29","memory.rss":"558055424","memory.heapUsed":"195368032","memory.heapTotal":"209944576"},"startTime":1764107138527,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7515,"timestamp":474494970679,"id":2577,"tags":{"url":"/gunbuilder/lower?_rsc=1jn8g","isTurbopack":false},"startTime":1764107140057,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474494978231,"id":2578,"parentId":2577,"tags":{"url":"/gunbuilder/lower?_rsc=1jn8g","memory.rss":"558055424","memory.heapUsed":"196160544","memory.heapTotal":"210731008"},"startTime":1764107140065,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5679,"timestamp":474494984605,"id":2579,"tags":{"url":"/gunbuilder/lower?_rsc=1o5jb","isTurbopack":false},"startTime":1764107140071,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474494990302,"id":2580,"parentId":2579,"tags":{"url":"/gunbuilder/lower?_rsc=1o5jb","memory.rss":"558055424","memory.heapUsed":"196976256","memory.heapTotal":"211517440"},"startTime":1764107140077,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":8334,"timestamp":474496127697,"id":2581,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=uiigs","isTurbopack":false},"startTime":1764107141214,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":2,"timestamp":474496136100,"id":2582,"parentId":2581,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=uiigs","memory.rss":"558071808","memory.heapUsed":"197634952","memory.heapTotal":"212041728"},"startTime":1764107141223,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7084,"timestamp":474496139162,"id":2583,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=1kfpz","isTurbopack":false},"startTime":1764107141226,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474496146279,"id":2584,"parentId":2583,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=1kfpz","memory.rss":"558071808","memory.heapUsed":"191985880","memory.heapTotal":"212303872"},"startTime":1764107141233,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4429,"timestamp":474613461971,"id":2595,"parentId":2587,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258549,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4810,"timestamp":474613461911,"id":2588,"parentId":2587,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107258548,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5144,"timestamp":474613461970,"id":2594,"parentId":2587,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258549,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5573,"timestamp":474613461968,"id":2593,"parentId":2587,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258549,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6861,"timestamp":474613461962,"id":2590,"parentId":2587,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107258548,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6940,"timestamp":474613461966,"id":2592,"parentId":2587,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258549,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":1259,"timestamp":474613467670,"id":2598,"parentId":2597,"tags":{},"startTime":1764107258554,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":9930,"timestamp":474613461958,"id":2589,"parentId":2587,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107258548,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":10747,"timestamp":474613468976,"id":2600,"parentId":2599,"tags":{},"startTime":1764107258556,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":11085,"timestamp":474613468953,"id":2599,"parentId":2597,"tags":{},"startTime":1764107258555,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2522,"timestamp":474613480058,"id":2601,"parentId":2597,"tags":{"astUsed":"true"},"startTime":1764107258567,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":15969,"timestamp":474613467621,"id":2597,"parentId":2596,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107258554,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":19528,"timestamp":474613465540,"id":2596,"parentId":2586,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107258552,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":59,"timestamp":474613485662,"id":2602,"parentId":2596,"tags":{},"startTime":1764107258572,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":23794,"timestamp":474613461964,"id":2591,"parentId":2587,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258548,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":24044,"timestamp":474613461733,"id":2587,"parentId":2586,"tags":{},"startTime":1764107258548,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":875,"timestamp":474613491587,"id":2604,"parentId":2603,"tags":{},"startTime":1764107258578,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":10,"timestamp":474613492478,"id":2606,"parentId":2603,"tags":{},"startTime":1764107258579,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":23,"timestamp":474613492500,"id":2607,"parentId":2603,"tags":{},"startTime":1764107258579,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":4,"timestamp":474613492534,"id":2608,"parentId":2603,"tags":{},"startTime":1764107258579,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":3,"timestamp":474613492548,"id":2609,"parentId":2603,"tags":{},"startTime":1764107258579,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":331,"timestamp":474613492473,"id":2605,"parentId":2603,"tags":{},"startTime":1764107258579,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":168,"timestamp":474613493271,"id":2610,"parentId":2603,"tags":{},"startTime":1764107258580,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":502,"timestamp":474613493443,"id":2611,"parentId":2603,"tags":{},"startTime":1764107258580,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":13126,"timestamp":474613494490,"id":2612,"parentId":2603,"tags":{},"startTime":1764107258581,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":89,"timestamp":474613507615,"id":2613,"parentId":2603,"tags":{},"startTime":1764107258594,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":30,"timestamp":474613507699,"id":2614,"parentId":2603,"tags":{},"startTime":1764107258594,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1030,"timestamp":474613507732,"id":2615,"parentId":2603,"tags":{},"startTime":1764107258594,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":32,"timestamp":474613509107,"id":2617,"parentId":2586,"tags":{},"startTime":1764107258596,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":63,"timestamp":474613509077,"id":2616,"parentId":2586,"tags":{},"startTime":1764107258596,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":18522,"timestamp":474613491313,"id":2603,"parentId":2586,"tags":{},"startTime":1764107258578,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":48310,"timestamp":474613461538,"id":2586,"parentId":2585,"tags":{"name":"client"},"startTime":1764107258548,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2213,"timestamp":474613509857,"id":2618,"parentId":2585,"tags":{},"startTime":1764107258596,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":58272,"timestamp":474613454583,"id":2585,"parentId":3,"tags":{"trigger":"app/gunbuilder/build"},"startTime":1764107258541,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":6,"timestamp":474613513445,"id":2619,"parentId":3,"tags":{},"startTime":1764107258600,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474613513473,"id":2620,"parentId":3,"tags":{},"startTime":1764107258600,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":62000,"timestamp":474613454235,"id":2623,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107258607,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7357,"timestamp":474613513998,"id":2621,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107258601,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474613521367,"id":2625,"parentId":2621,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"538738688","memory.heapUsed":"193627296","memory.heapTotal":"207896576"},"startTime":1764107258608,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6533,"timestamp":474613514909,"id":2622,"tags":{"url":"/gunbuilder?_rsc=9gfev","isTurbopack":false},"startTime":1764107258601,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474613521447,"id":2626,"parentId":2622,"tags":{"url":"/gunbuilder?_rsc=9gfev","memory.rss":"538738688","memory.heapUsed":"193637496","memory.heapTotal":"207896576"},"startTime":1764107258608,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":3000,"timestamp":474613521162,"id":2627,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":false},"startTime":1764107258612,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3283,"timestamp":474613526372,"id":2637,"parentId":2629,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258613,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3640,"timestamp":474613526311,"id":2630,"parentId":2629,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107258613,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3877,"timestamp":474613526371,"id":2636,"parentId":2629,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258613,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4339,"timestamp":474613526369,"id":2635,"parentId":2629,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258613,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5127,"timestamp":474613526363,"id":2632,"parentId":2629,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107258613,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5202,"timestamp":474613526367,"id":2634,"parentId":2629,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258613,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":703,"timestamp":474613530893,"id":2640,"parentId":2639,"tags":{},"startTime":1764107258617,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6745,"timestamp":474613526359,"id":2631,"parentId":2629,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107258613,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":12618,"timestamp":474613531631,"id":2642,"parentId":2641,"tags":{},"startTime":1764107258618,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":12826,"timestamp":474613531615,"id":2641,"parentId":2639,"tags":{},"startTime":1764107258618,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":1900,"timestamp":474613544453,"id":2643,"parentId":2639,"tags":{"astUsed":"true"},"startTime":1764107258631,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":16121,"timestamp":474613530809,"id":2639,"parentId":2638,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107258617,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":20303,"timestamp":474613528914,"id":2638,"parentId":2628,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107258615,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":25,"timestamp":474613549369,"id":2644,"parentId":2638,"tags":{},"startTime":1764107258636,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":23057,"timestamp":474613526365,"id":2633,"parentId":2629,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258613,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":23319,"timestamp":474613526120,"id":2629,"parentId":2628,"tags":{},"startTime":1764107258613,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":645,"timestamp":474613550443,"id":2646,"parentId":2645,"tags":{},"startTime":1764107258637,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":474613551096,"id":2648,"parentId":2645,"tags":{},"startTime":1764107258638,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":19,"timestamp":474613551103,"id":2649,"parentId":2645,"tags":{},"startTime":1764107258638,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":474613551130,"id":2650,"parentId":2645,"tags":{},"startTime":1764107258638,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":474613551139,"id":2651,"parentId":2645,"tags":{},"startTime":1764107258638,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":191,"timestamp":474613551093,"id":2647,"parentId":2645,"tags":{},"startTime":1764107258638,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":118,"timestamp":474613551658,"id":2652,"parentId":2645,"tags":{},"startTime":1764107258638,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":374,"timestamp":474613551780,"id":2653,"parentId":2645,"tags":{},"startTime":1764107258638,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":2490,"timestamp":474613552520,"id":2654,"parentId":2645,"tags":{},"startTime":1764107258639,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":102,"timestamp":474613555005,"id":2655,"parentId":2645,"tags":{},"startTime":1764107258642,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":36,"timestamp":474613555097,"id":2656,"parentId":2645,"tags":{},"startTime":1764107258642,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1510,"timestamp":474613555140,"id":2657,"parentId":2645,"tags":{},"startTime":1764107258642,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":25,"timestamp":474613557077,"id":2659,"parentId":2628,"tags":{},"startTime":1764107258644,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":58,"timestamp":474613557048,"id":2658,"parentId":2628,"tags":{},"startTime":1764107258644,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7593,"timestamp":474613550106,"id":2645,"parentId":2628,"tags":{},"startTime":1764107258637,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":31799,"timestamp":474613525913,"id":2628,"parentId":2624,"tags":{"name":"client"},"startTime":1764107258612,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2076,"timestamp":474613557720,"id":2660,"parentId":2624,"tags":{},"startTime":1764107258644,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":39562,"timestamp":474613520758,"id":2624,"parentId":3,"tags":{"trigger":"app/gunbuilder/build/page.tsx"},"startTime":1764107258607,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":1,"timestamp":474613560986,"id":2661,"parentId":3,"tags":{},"startTime":1764107258648,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474613561012,"id":2662,"parentId":3,"tags":{},"startTime":1764107258648,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":43000,"timestamp":474613521574,"id":2665,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":false},"startTime":1764107258652,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":44000,"timestamp":474613520596,"id":2666,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107258652,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6268,"timestamp":474613561521,"id":2663,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107258648,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474613567804,"id":2667,"parentId":2663,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"538787840","memory.heapUsed":"198480600","memory.heapTotal":"216809472"},"startTime":1764107258654,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7040,"timestamp":474613561734,"id":2664,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107258648,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474613568785,"id":2668,"parentId":2664,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"538787840","memory.heapUsed":"198560216","memory.heapTotal":"216809472"},"startTime":1764107258655,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3794,"timestamp":474613725445,"id":2681,"parentId":2673,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258812,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3994,"timestamp":474613725383,"id":2674,"parentId":2673,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107258812,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4226,"timestamp":474613725442,"id":2680,"parentId":2673,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258812,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4683,"timestamp":474613725439,"id":2679,"parentId":2673,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258812,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4696,"timestamp":474613725431,"id":2677,"parentId":2673,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258812,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5327,"timestamp":474613725427,"id":2676,"parentId":2673,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107258812,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5393,"timestamp":474613725434,"id":2678,"parentId":2673,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258812,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5707,"timestamp":474613725420,"id":2675,"parentId":2673,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107258812,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":5949,"timestamp":474613725193,"id":2673,"parentId":2672,"tags":{},"startTime":1764107258812,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":912,"timestamp":474613731961,"id":2685,"parentId":2684,"tags":{},"startTime":1764107258818,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":474613732880,"id":2687,"parentId":2684,"tags":{},"startTime":1764107258819,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":13,"timestamp":474613732887,"id":2688,"parentId":2684,"tags":{},"startTime":1764107258819,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":474613732905,"id":2689,"parentId":2684,"tags":{},"startTime":1764107258819,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":474613732912,"id":2690,"parentId":2684,"tags":{},"startTime":1764107258819,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":160,"timestamp":474613732878,"id":2686,"parentId":2684,"tags":{},"startTime":1764107258819,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":119,"timestamp":474613733399,"id":2691,"parentId":2684,"tags":{},"startTime":1764107258820,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":521,"timestamp":474613733522,"id":2692,"parentId":2684,"tags":{},"startTime":1764107258820,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1585,"timestamp":474613734619,"id":2693,"parentId":2684,"tags":{},"startTime":1764107258821,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":55,"timestamp":474613736204,"id":2694,"parentId":2684,"tags":{},"startTime":1764107258823,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":23,"timestamp":474613736255,"id":2695,"parentId":2684,"tags":{},"startTime":1764107258823,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":2111,"timestamp":474613736280,"id":2696,"parentId":2684,"tags":{},"startTime":1764107258823,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":27,"timestamp":474613738577,"id":2698,"parentId":2672,"tags":{},"startTime":1764107258825,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":93,"timestamp":474613738517,"id":2697,"parentId":2672,"tags":{},"startTime":1764107258825,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7526,"timestamp":474613731661,"id":2684,"parentId":2672,"tags":{},"startTime":1764107258818,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":14272,"timestamp":474613724932,"id":2672,"parentId":2669,"tags":{"name":"client"},"startTime":1764107258811,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1414,"timestamp":474613739218,"id":2699,"parentId":2669,"tags":{},"startTime":1764107258826,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":17667,"timestamp":474613723304,"id":2669,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764107258810,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":1,"timestamp":474613742583,"id":2702,"parentId":3,"tags":{},"startTime":1764107258829,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474613742609,"id":2703,"parentId":3,"tags":{},"startTime":1764107258829,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3136,"timestamp":474613744391,"id":2705,"parentId":2701,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107258831,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3455,"timestamp":474613744371,"id":2704,"parentId":2701,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107258831,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":8315,"timestamp":474613742062,"id":2701,"parentId":2700,"tags":{},"startTime":1764107258829,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1077,"timestamp":474613755080,"id":2715,"parentId":2714,"tags":{},"startTime":1764107258842,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":3,"timestamp":474613756177,"id":2717,"parentId":2714,"tags":{},"startTime":1764107258843,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":938,"timestamp":474613756198,"id":2718,"parentId":2714,"tags":{},"startTime":1764107258843,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":4,"timestamp":474613757153,"id":2719,"parentId":2714,"tags":{},"startTime":1764107258844,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":3,"timestamp":474613757168,"id":2720,"parentId":2714,"tags":{},"startTime":1764107258844,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1245,"timestamp":474613756169,"id":2716,"parentId":2714,"tags":{},"startTime":1764107258843,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":123,"timestamp":474613757933,"id":2721,"parentId":2714,"tags":{},"startTime":1764107258844,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":417,"timestamp":474613758061,"id":2722,"parentId":2714,"tags":{},"startTime":1764107258845,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":657,"timestamp":474613758905,"id":2723,"parentId":2714,"tags":{},"startTime":1764107258845,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":44,"timestamp":474613759563,"id":2724,"parentId":2714,"tags":{},"startTime":1764107258846,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":17,"timestamp":474613759603,"id":2725,"parentId":2714,"tags":{},"startTime":1764107258846,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":130,"timestamp":474613759623,"id":2726,"parentId":2714,"tags":{},"startTime":1764107258846,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":5486,"timestamp":474613754856,"id":2714,"parentId":2700,"tags":{},"startTime":1764107258841,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":19357,"timestamp":474613741890,"id":2700,"parentId":2670,"tags":{"name":"server"},"startTime":1764107258828,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1319,"timestamp":474613761277,"id":2727,"parentId":2670,"tags":{},"startTime":1764107258848,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":4,"timestamp":474613762798,"id":2728,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764107258849,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":2857,"timestamp":474613763963,"id":2730,"parentId":2729,"tags":{},"startTime":1764107258850,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":16,"timestamp":474613767184,"id":2732,"parentId":2731,"tags":{},"startTime":1764107258854,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":474613767211,"id":2734,"parentId":2731,"tags":{},"startTime":1764107258854,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":5,"timestamp":474613767221,"id":2735,"parentId":2731,"tags":{},"startTime":1764107258854,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":474613767239,"id":2736,"parentId":2731,"tags":{},"startTime":1764107258854,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":474613767258,"id":2737,"parentId":2731,"tags":{},"startTime":1764107258854,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":61,"timestamp":474613767207,"id":2733,"parentId":2731,"tags":{},"startTime":1764107258854,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":3,"timestamp":474613767343,"id":2738,"parentId":2731,"tags":{},"startTime":1764107258854,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":4,"timestamp":474613767351,"id":2739,"parentId":2731,"tags":{},"startTime":1764107258854,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":31,"timestamp":474613767368,"id":2740,"parentId":2731,"tags":{},"startTime":1764107258854,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":13,"timestamp":474613767400,"id":2741,"parentId":2731,"tags":{},"startTime":1764107258854,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":6,"timestamp":474613767408,"id":2742,"parentId":2731,"tags":{},"startTime":1764107258854,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":7,"timestamp":474613767416,"id":2743,"parentId":2731,"tags":{},"startTime":1764107258854,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":608,"timestamp":474613767160,"id":2731,"parentId":2729,"tags":{},"startTime":1764107258854,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":4359,"timestamp":474613763420,"id":2729,"parentId":2671,"tags":{"name":"edge-server"},"startTime":1764107258850,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":608,"timestamp":474613767788,"id":2744,"parentId":2671,"tags":{},"startTime":1764107258854,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-edge-server","duration":45222,"timestamp":474613723417,"id":2671,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764107258810,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2675,"timestamp":474613770359,"id":2754,"parentId":2746,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258857,"traceId":"e274ac96b05c42d4"},{"name":"next-client-pages-loader","duration":82,"timestamp":474613773382,"id":2757,"parentId":2756,"tags":{"absolutePagePath":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-error.js"},"startTime":1764107258860,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":881,"timestamp":474613773081,"id":2756,"parentId":2755,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!","layer":"app-pages-browser"},"startTime":1764107258860,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":10408,"timestamp":474613770318,"id":2747,"parentId":2746,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107258857,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":10879,"timestamp":474613770357,"id":2753,"parentId":2746,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258857,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":11797,"timestamp":474613770355,"id":2752,"parentId":2746,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258857,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":11809,"timestamp":474613770347,"id":2750,"parentId":2746,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258857,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12510,"timestamp":474613770344,"id":2749,"parentId":2746,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107258857,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12588,"timestamp":474613770349,"id":2751,"parentId":2746,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107258857,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12623,"timestamp":474613770338,"id":2748,"parentId":2746,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107258857,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1169,"timestamp":474613783295,"id":2760,"parentId":2759,"tags":{},"startTime":1764107258870,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1233,"timestamp":474613783237,"id":2759,"parentId":2758,"tags":{},"startTime":1764107258870,"traceId":"e274ac96b05c42d4"},{"name":"build-module-js","duration":3112,"timestamp":474613783164,"id":2758,"parentId":2756,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-error.js","layer":"app-pages-browser"},"startTime":1764107258870,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":65957,"timestamp":474613770361,"id":2755,"parentId":2746,"tags":{"request":"next-client-pages-loader?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!"},"startTime":1764107258857,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":66556,"timestamp":474613769773,"id":2746,"parentId":2745,"tags":{},"startTime":1764107258856,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":612,"timestamp":474613836981,"id":2762,"parentId":2761,"tags":{},"startTime":1764107258924,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":474613837600,"id":2764,"parentId":2761,"tags":{},"startTime":1764107258924,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":13,"timestamp":474613837608,"id":2765,"parentId":2761,"tags":{},"startTime":1764107258924,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":474613837626,"id":2766,"parentId":2761,"tags":{},"startTime":1764107258924,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":474613837636,"id":2767,"parentId":2761,"tags":{},"startTime":1764107258924,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":333,"timestamp":474613837598,"id":2763,"parentId":2761,"tags":{},"startTime":1764107258924,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":125,"timestamp":474613838271,"id":2768,"parentId":2761,"tags":{},"startTime":1764107258925,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":405,"timestamp":474613838400,"id":2769,"parentId":2761,"tags":{},"startTime":1764107258925,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":960,"timestamp":474613839294,"id":2770,"parentId":2761,"tags":{},"startTime":1764107258926,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":43,"timestamp":474613840254,"id":2771,"parentId":2761,"tags":{},"startTime":1764107258927,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":18,"timestamp":474613840294,"id":2772,"parentId":2761,"tags":{},"startTime":1764107258927,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":3145,"timestamp":474613840315,"id":2773,"parentId":2761,"tags":{},"startTime":1764107258927,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":31,"timestamp":474613843802,"id":2775,"parentId":2745,"tags":{},"startTime":1764107258930,"traceId":"e274ac96b05c42d4"}] +[{"name":"NextJsBuildManifest-createassets","duration":150,"timestamp":474613843776,"id":2774,"parentId":2745,"tags":{},"startTime":1764107258930,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7787,"timestamp":474613836776,"id":2761,"parentId":2745,"tags":{},"startTime":1764107258923,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":75035,"timestamp":474613769543,"id":2745,"parentId":2707,"tags":{"name":"client"},"startTime":1764107258856,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2278,"timestamp":474613844591,"id":2776,"parentId":2707,"tags":{},"startTime":1764107258931,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":102629,"timestamp":474613744642,"id":2707,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764107258831,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":1,"timestamp":474613848927,"id":2779,"parentId":3,"tags":{},"startTime":1764107258935,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474613848950,"id":2780,"parentId":3,"tags":{},"startTime":1764107258935,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4202,"timestamp":474613850170,"id":2783,"parentId":2778,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107258937,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4791,"timestamp":474613850167,"id":2782,"parentId":2778,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107258937,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":111000,"timestamp":474613744412,"id":2785,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107258942,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":111000,"timestamp":474613744509,"id":2786,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":false},"startTime":1764107258944,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":3870,"timestamp":474613853681,"id":2784,"parentId":2781,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!","layer":"rsc"},"startTime":1764107258940,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":9518,"timestamp":474613850132,"id":2781,"parentId":2778,"tags":{"request":"next-app-loader?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107258937,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":14144,"timestamp":474613848409,"id":2778,"parentId":2777,"tags":{},"startTime":1764107258935,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":930,"timestamp":474613863563,"id":2796,"parentId":2795,"tags":{},"startTime":1764107258950,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":474613864502,"id":2798,"parentId":2795,"tags":{},"startTime":1764107258951,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":993,"timestamp":474613864510,"id":2799,"parentId":2795,"tags":{},"startTime":1764107258951,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":474613865512,"id":2800,"parentId":2795,"tags":{},"startTime":1764107258952,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":13,"timestamp":474613865521,"id":2801,"parentId":2795,"tags":{},"startTime":1764107258952,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1247,"timestamp":474613864498,"id":2797,"parentId":2795,"tags":{},"startTime":1764107258951,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":139,"timestamp":474613866155,"id":2802,"parentId":2795,"tags":{},"startTime":1764107258953,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":552,"timestamp":474613866297,"id":2803,"parentId":2795,"tags":{},"startTime":1764107258953,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":372,"timestamp":474613867134,"id":2804,"parentId":2795,"tags":{},"startTime":1764107258954,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":39,"timestamp":474613867506,"id":2805,"parentId":2795,"tags":{},"startTime":1764107258954,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":15,"timestamp":474613867543,"id":2806,"parentId":2795,"tags":{},"startTime":1764107258954,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":338,"timestamp":474613867560,"id":2807,"parentId":2795,"tags":{},"startTime":1764107258954,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":5332,"timestamp":474613863333,"id":2795,"parentId":2777,"tags":{},"startTime":1764107258950,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":21713,"timestamp":474613848260,"id":2777,"parentId":3,"tags":{"name":"server"},"startTime":1764107258935,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1212,"timestamp":474613869994,"id":2808,"parentId":3,"tags":{},"startTime":1764107258957,"traceId":"e274ac96b05c42d4"},{"name":"compile-path","duration":126854,"timestamp":474613744631,"id":2706,"tags":{"trigger":"/_not-found","isTurbopack":false},"startTime":1764107258831,"traceId":"e274ac96b05c42d4"}] +[{"name":"handle-request","duration":155762,"timestamp":474613727178,"id":2683,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107258814,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474613882960,"id":2810,"parentId":2683,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"642531328","memory.heapUsed":"221728240","memory.heapTotal":"263864320"},"startTime":1764107258969,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":155955,"timestamp":474613727109,"id":2682,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107258814,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474613883069,"id":2811,"parentId":2682,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"642564096","memory.heapUsed":"221759200","memory.heapTotal":"263864320"},"startTime":1764107258970,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4951,"timestamp":474613882596,"id":2809,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107258969,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474613887561,"id":2813,"parentId":2809,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"644038656","memory.heapUsed":"223396488","memory.heapTotal":"265404416"},"startTime":1764107258974,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6706,"timestamp":474613883656,"id":2812,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107258970,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474613890385,"id":2815,"parentId":2812,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"644431872","memory.heapUsed":"223811144","memory.heapTotal":"265666560"},"startTime":1764107258977,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":35527,"timestamp":474613889329,"id":2814,"tags":{"url":"/gunbuilder","isTurbopack":false},"startTime":1764107258976,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474613924880,"id":2817,"parentId":2814,"tags":{"url":"/gunbuilder","memory.rss":"643792896","memory.heapUsed":"204295680","memory.heapTotal":"265338880"},"startTime":1764107259011,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":30126,"timestamp":474613900815,"id":2816,"tags":{"url":"/gunbuilder","isTurbopack":false},"startTime":1764107258987,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474613930957,"id":2818,"parentId":2816,"tags":{"url":"/gunbuilder","memory.rss":"643825664","memory.heapUsed":"205613808","memory.heapTotal":"265338880"},"startTime":1764107259017,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":2,"timestamp":474614157393,"id":2819,"parentId":3,"tags":{},"startTime":1764107259244,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":1,"timestamp":474614158871,"id":2820,"parentId":3,"tags":{},"startTime":1764107259245,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":4,"timestamp":474614180628,"id":2821,"parentId":3,"tags":{},"startTime":1764107259267,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4734,"timestamp":474633170570,"id":2833,"parentId":2825,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107278257,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4745,"timestamp":474633170572,"id":2834,"parentId":2825,"tags":{"request":"next-client-pages-loader?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!"},"startTime":1764107278257,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5153,"timestamp":474633170498,"id":2826,"parentId":2825,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107278257,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6458,"timestamp":474633170569,"id":2832,"parentId":2825,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107278257,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2726,"timestamp":474633174556,"id":2838,"parentId":2837,"tags":{},"startTime":1764107278261,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2817,"timestamp":474633174466,"id":2837,"parentId":2836,"tags":{},"startTime":1764107278261,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":9691,"timestamp":474633174380,"id":2836,"parentId":2824,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"app-pages-browser"},"startTime":1764107278261,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":14438,"timestamp":474633170560,"id":2828,"parentId":2825,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107278257,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":15000,"timestamp":474633170563,"id":2830,"parentId":2825,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107278257,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":8545,"timestamp":474633177186,"id":2840,"parentId":2839,"tags":{},"startTime":1764107278264,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":37175,"timestamp":474633170555,"id":2827,"parentId":2825,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107278257,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":33820,"timestamp":474633185762,"id":2842,"parentId":2841,"tags":{},"startTime":1764107278272,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":34137,"timestamp":474633185749,"id":2841,"parentId":2839,"tags":{},"startTime":1764107278272,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":3311,"timestamp":474633219918,"id":2843,"parentId":2839,"tags":{"astUsed":"true"},"startTime":1764107278306,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":48108,"timestamp":474633177127,"id":2839,"parentId":2835,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107278264,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":54102,"timestamp":474633174128,"id":2835,"parentId":2824,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107278261,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":16,"timestamp":474633228681,"id":2844,"parentId":2835,"tags":{},"startTime":1764107278315,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":58163,"timestamp":474633170567,"id":2831,"parentId":2825,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107278257,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":58175,"timestamp":474633170562,"id":2829,"parentId":2825,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107278257,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":59640,"timestamp":474633169108,"id":2825,"parentId":2824,"tags":{},"startTime":1764107278256,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1393,"timestamp":474633229709,"id":2846,"parentId":2845,"tags":{},"startTime":1764107278316,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":474633231112,"id":2848,"parentId":2845,"tags":{},"startTime":1764107278318,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":24,"timestamp":474633231122,"id":2849,"parentId":2845,"tags":{},"startTime":1764107278318,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":474633231156,"id":2850,"parentId":2845,"tags":{},"startTime":1764107278318,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":474633231167,"id":2851,"parentId":2845,"tags":{},"startTime":1764107278318,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":381,"timestamp":474633231109,"id":2847,"parentId":2845,"tags":{},"startTime":1764107278318,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":151,"timestamp":474633231870,"id":2852,"parentId":2845,"tags":{},"startTime":1764107278318,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":645,"timestamp":474633232025,"id":2853,"parentId":2845,"tags":{},"startTime":1764107278319,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1728,"timestamp":474633233077,"id":2854,"parentId":2845,"tags":{},"startTime":1764107278320,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":71,"timestamp":474633234805,"id":2855,"parentId":2845,"tags":{},"startTime":1764107278321,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":29,"timestamp":474633234868,"id":2856,"parentId":2845,"tags":{},"startTime":1764107278321,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1926,"timestamp":474633234904,"id":2857,"parentId":2845,"tags":{},"startTime":1764107278321,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":28,"timestamp":474633237176,"id":2859,"parentId":2824,"tags":{},"startTime":1764107278324,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":56,"timestamp":474633237151,"id":2858,"parentId":2824,"tags":{},"startTime":1764107278324,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":8465,"timestamp":474633229428,"id":2845,"parentId":2824,"tags":{},"startTime":1764107278316,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":68973,"timestamp":474633168935,"id":2824,"parentId":2822,"tags":{"name":"client"},"startTime":1764107278255,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2616,"timestamp":474633237917,"id":2860,"parentId":2822,"tags":{},"startTime":1764107278324,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":79370,"timestamp":474633161730,"id":2822,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764107278248,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":1,"timestamp":474633243521,"id":2863,"parentId":3,"tags":{},"startTime":1764107278330,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474633243552,"id":2864,"parentId":3,"tags":{},"startTime":1764107278330,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4895,"timestamp":474633245191,"id":2867,"parentId":2862,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107278332,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5353,"timestamp":474633245164,"id":2865,"parentId":2862,"tags":{"request":"next-app-loader?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107278332,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":894,"timestamp":474633249731,"id":2870,"parentId":2869,"tags":{},"startTime":1764107278336,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":958,"timestamp":474633249667,"id":2869,"parentId":2868,"tags":{},"startTime":1764107278336,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":1778,"timestamp":474633249501,"id":2868,"parentId":2861,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"rsc"},"startTime":1764107278336,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7647,"timestamp":474633245188,"id":2866,"parentId":2862,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107278332,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":90000,"timestamp":474633162653,"id":2879,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/page.tsx"],"page":"/gunbuilder","isPageHidden":false},"startTime":1764107278340,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1949,"timestamp":474633255137,"id":2882,"parentId":2881,"tags":{},"startTime":1764107278342,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2023,"timestamp":474633255067,"id":2881,"parentId":2880,"tags":{},"startTime":1764107278342,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":5870,"timestamp":474633254936,"id":2880,"parentId":2861,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"ssr"},"startTime":1764107278341,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":99000,"timestamp":474633162071,"id":2883,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/page.tsx"],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107278349,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":20850,"timestamp":474633242348,"id":2862,"parentId":2861,"tags":{},"startTime":1764107278329,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":844,"timestamp":474633264227,"id":2885,"parentId":2884,"tags":{},"startTime":1764107278351,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":474633265085,"id":2887,"parentId":2884,"tags":{},"startTime":1764107278352,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1383,"timestamp":474633265097,"id":2888,"parentId":2884,"tags":{},"startTime":1764107278352,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":474633266487,"id":2889,"parentId":2884,"tags":{},"startTime":1764107278353,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":474633266495,"id":2890,"parentId":2884,"tags":{},"startTime":1764107278353,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1604,"timestamp":474633265081,"id":2886,"parentId":2884,"tags":{},"startTime":1764107278352,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":158,"timestamp":474633267056,"id":2891,"parentId":2884,"tags":{},"startTime":1764107278354,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":609,"timestamp":474633267217,"id":2892,"parentId":2884,"tags":{},"startTime":1764107278354,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":653,"timestamp":474633268203,"id":2893,"parentId":2884,"tags":{},"startTime":1764107278355,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":40,"timestamp":474633268856,"id":2894,"parentId":2884,"tags":{},"startTime":1764107278355,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":15,"timestamp":474633268892,"id":2895,"parentId":2884,"tags":{},"startTime":1764107278355,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":622,"timestamp":474633268910,"id":2896,"parentId":2884,"tags":{},"startTime":1764107278355,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":6419,"timestamp":474633263988,"id":2884,"parentId":2861,"tags":{},"startTime":1764107278350,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":29239,"timestamp":474633242189,"id":2861,"parentId":2823,"tags":{"name":"server"},"startTime":1764107278329,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1645,"timestamp":474633271449,"id":2897,"parentId":2823,"tags":{},"startTime":1764107278358,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":111664,"timestamp":474633161919,"id":2823,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764107278248,"traceId":"e274ac96b05c42d4"}] +[{"name":"handle-request","duration":8097,"timestamp":474633276460,"id":2899,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107278363,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474633284582,"id":2900,"parentId":2899,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"599523328","memory.heapUsed":"207136048","memory.heapTotal":"220348416"},"startTime":1764107278371,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":9788,"timestamp":474633276225,"id":2898,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107278363,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":6,"timestamp":474633286030,"id":2901,"parentId":2898,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"599523328","memory.heapUsed":"207169088","memory.heapTotal":"220348416"},"startTime":1764107278373,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3274,"timestamp":474638289847,"id":2908,"parentId":2905,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107283376,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3670,"timestamp":474638289815,"id":2906,"parentId":2905,"tags":{"request":"next-app-loader?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107283376,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":864,"timestamp":474638292842,"id":2911,"parentId":2910,"tags":{},"startTime":1764107283379,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":909,"timestamp":474638292799,"id":2910,"parentId":2909,"tags":{},"startTime":1764107283379,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":1438,"timestamp":474638292686,"id":2909,"parentId":2904,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"rsc"},"startTime":1764107283379,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5485,"timestamp":474638289845,"id":2907,"parentId":2905,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107283376,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1923,"timestamp":474638296553,"id":2922,"parentId":2921,"tags":{},"startTime":1764107283383,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1967,"timestamp":474638296511,"id":2921,"parentId":2920,"tags":{},"startTime":1764107283383,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":4861,"timestamp":474638296429,"id":2920,"parentId":2904,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"ssr"},"startTime":1764107283383,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":17658,"timestamp":474638287862,"id":2905,"parentId":2904,"tags":{},"startTime":1764107283374,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":787,"timestamp":474638306302,"id":2924,"parentId":2923,"tags":{},"startTime":1764107283393,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":474638307096,"id":2926,"parentId":2923,"tags":{},"startTime":1764107283394,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":819,"timestamp":474638307104,"id":2927,"parentId":2923,"tags":{},"startTime":1764107283394,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":1,"timestamp":474638307930,"id":2928,"parentId":2923,"tags":{},"startTime":1764107283394,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":474638307938,"id":2929,"parentId":2923,"tags":{},"startTime":1764107283394,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":963,"timestamp":474638307094,"id":2925,"parentId":2923,"tags":{},"startTime":1764107283394,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":171,"timestamp":474638308466,"id":2930,"parentId":2923,"tags":{},"startTime":1764107283395,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":556,"timestamp":474638308647,"id":2931,"parentId":2923,"tags":{},"startTime":1764107283395,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":607,"timestamp":474638309490,"id":2932,"parentId":2923,"tags":{},"startTime":1764107283396,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":31,"timestamp":474638310097,"id":2933,"parentId":2923,"tags":{},"startTime":1764107283397,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":14,"timestamp":474638310126,"id":2934,"parentId":2923,"tags":{},"startTime":1764107283397,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":688,"timestamp":474638310142,"id":2935,"parentId":2923,"tags":{},"startTime":1764107283397,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":5306,"timestamp":474638306124,"id":2923,"parentId":2904,"tags":{},"startTime":1764107283393,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":24867,"timestamp":474638287649,"id":2904,"parentId":2902,"tags":{"name":"server"},"startTime":1764107283374,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1091,"timestamp":474638312527,"id":2936,"parentId":2902,"tags":{},"startTime":1764107283399,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":33180,"timestamp":474638280584,"id":2902,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764107283367,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2480,"timestamp":474638316556,"id":2946,"parentId":2938,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107283403,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2486,"timestamp":474638316558,"id":2947,"parentId":2938,"tags":{"request":"next-client-pages-loader?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!"},"startTime":1764107283403,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2705,"timestamp":474638316528,"id":2939,"parentId":2938,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107283403,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3312,"timestamp":474638316555,"id":2945,"parentId":2938,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107283403,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3954,"timestamp":474638316548,"id":2941,"parentId":2938,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107283403,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4014,"timestamp":474638316551,"id":2943,"parentId":2938,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107283403,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":596,"timestamp":474638319975,"id":2953,"parentId":2952,"tags":{},"startTime":1764107283406,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5054,"timestamp":474638316544,"id":2940,"parentId":2938,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107283403,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":3075,"timestamp":474638318583,"id":2951,"parentId":2950,"tags":{},"startTime":1764107283405,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":3127,"timestamp":474638318533,"id":2950,"parentId":2949,"tags":{},"startTime":1764107283405,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":6205,"timestamp":474638318469,"id":2949,"parentId":2937,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"app-pages-browser"},"startTime":1764107283405,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":13665,"timestamp":474638320588,"id":2955,"parentId":2954,"tags":{},"startTime":1764107283407,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":13765,"timestamp":474638320581,"id":2954,"parentId":2952,"tags":{},"startTime":1764107283407,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2034,"timestamp":474638334366,"id":2956,"parentId":2952,"tags":{"astUsed":"true"},"startTime":1764107283421,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":18980,"timestamp":474638319935,"id":2952,"parentId":2948,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107283406,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":22962,"timestamp":474638316554,"id":2944,"parentId":2938,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107283403,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":22698,"timestamp":474638318296,"id":2948,"parentId":2937,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107283405,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":18,"timestamp":474638341094,"id":2957,"parentId":2948,"tags":{},"startTime":1764107283428,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":24623,"timestamp":474638316550,"id":2942,"parentId":2938,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107283403,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":26683,"timestamp":474638314501,"id":2938,"parentId":2937,"tags":{},"startTime":1764107283401,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":839,"timestamp":474638342083,"id":2959,"parentId":2958,"tags":{},"startTime":1764107283429,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":3,"timestamp":474638342933,"id":2961,"parentId":2958,"tags":{},"startTime":1764107283429,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":22,"timestamp":474638342943,"id":2962,"parentId":2958,"tags":{},"startTime":1764107283429,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":474638342973,"id":2963,"parentId":2958,"tags":{},"startTime":1764107283429,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":3,"timestamp":474638342985,"id":2964,"parentId":2958,"tags":{},"startTime":1764107283429,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":222,"timestamp":474638342929,"id":2960,"parentId":2958,"tags":{},"startTime":1764107283429,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":288,"timestamp":474638343587,"id":2965,"parentId":2958,"tags":{},"startTime":1764107283430,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":915,"timestamp":474638343887,"id":2966,"parentId":2958,"tags":{},"startTime":1764107283430,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1636,"timestamp":474638345437,"id":2967,"parentId":2958,"tags":{},"startTime":1764107283432,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":71,"timestamp":474638347073,"id":2968,"parentId":2958,"tags":{},"startTime":1764107283434,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":26,"timestamp":474638347140,"id":2969,"parentId":2958,"tags":{},"startTime":1764107283434,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":2080,"timestamp":474638347169,"id":2970,"parentId":2958,"tags":{},"startTime":1764107283434,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":27,"timestamp":474638349693,"id":2972,"parentId":2937,"tags":{},"startTime":1764107283436,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":67,"timestamp":474638349656,"id":2971,"parentId":2937,"tags":{},"startTime":1764107283436,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":8676,"timestamp":474638341811,"id":2958,"parentId":2937,"tags":{},"startTime":1764107283428,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":36145,"timestamp":474638314366,"id":2937,"parentId":2903,"tags":{"name":"client"},"startTime":1764107283401,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2637,"timestamp":474638350523,"id":2973,"parentId":2903,"tags":{},"startTime":1764107283437,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":73083,"timestamp":474638280641,"id":2903,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764107283367,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":2,"timestamp":474638354576,"id":2974,"parentId":3,"tags":{},"startTime":1764107283441,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474638354908,"id":2975,"parentId":3,"tags":{},"startTime":1764107283441,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":15218,"timestamp":474638355662,"id":2977,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107283442,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474638370897,"id":2978,"parentId":2977,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"625672192","memory.heapUsed":"207056488","memory.heapTotal":"246792192"},"startTime":1764107283457,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":15951,"timestamp":474638355065,"id":2976,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107283442,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474638371022,"id":2979,"parentId":2976,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"625672192","memory.heapUsed":"207082304","memory.heapTotal":"246792192"},"startTime":1764107283458,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":93000,"timestamp":474638280799,"id":2980,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/page.tsx"],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107283460,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":102000,"timestamp":474638281359,"id":2981,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/page.tsx"],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107283471,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5495,"timestamp":474657086795,"id":2993,"parentId":2985,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107302173,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5510,"timestamp":474657086800,"id":2994,"parentId":2985,"tags":{"request":"next-client-pages-loader?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!"},"startTime":1764107302173,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7099,"timestamp":474657086740,"id":2986,"parentId":2985,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107302173,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":3482,"timestamp":474657091366,"id":2998,"parentId":2997,"tags":{},"startTime":1764107302178,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":3633,"timestamp":474657091218,"id":2997,"parentId":2996,"tags":{},"startTime":1764107302178,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":11824,"timestamp":474657091053,"id":2996,"parentId":2984,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"app-pages-browser"},"startTime":1764107302178,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":16422,"timestamp":474657086793,"id":2992,"parentId":2985,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107302173,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":18730,"timestamp":474657086784,"id":2988,"parentId":2985,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107302173,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":18823,"timestamp":474657086788,"id":2990,"parentId":2985,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107302173,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":19577,"timestamp":474657086791,"id":2991,"parentId":2985,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107302173,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":2787,"timestamp":474657103636,"id":3000,"parentId":2999,"tags":{},"startTime":1764107302190,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":21877,"timestamp":474657086780,"id":2987,"parentId":2985,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107302173,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":15470,"timestamp":474657106495,"id":3002,"parentId":3001,"tags":{},"startTime":1764107302193,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":15810,"timestamp":474657106461,"id":3001,"parentId":2999,"tags":{},"startTime":1764107302193,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":3227,"timestamp":474657122293,"id":3003,"parentId":2999,"tags":{"astUsed":"true"},"startTime":1764107302209,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":23585,"timestamp":474657103543,"id":2999,"parentId":2995,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107302190,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":38277,"timestamp":474657090822,"id":2995,"parentId":2984,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107302177,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":25,"timestamp":474657129231,"id":3004,"parentId":2995,"tags":{},"startTime":1764107302216,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":42493,"timestamp":474657086786,"id":2989,"parentId":2985,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107302173,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":43556,"timestamp":474657085736,"id":2985,"parentId":2984,"tags":{},"startTime":1764107302172,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":750,"timestamp":474657130322,"id":3006,"parentId":3005,"tags":{},"startTime":1764107302217,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":474657131080,"id":3008,"parentId":3005,"tags":{},"startTime":1764107302218,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":21,"timestamp":474657131090,"id":3009,"parentId":3005,"tags":{},"startTime":1764107302218,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":474657131117,"id":3010,"parentId":3005,"tags":{},"startTime":1764107302218,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":474657131672,"id":3011,"parentId":3005,"tags":{},"startTime":1764107302218,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":876,"timestamp":474657131078,"id":3007,"parentId":3005,"tags":{},"startTime":1764107302218,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":181,"timestamp":474657132362,"id":3012,"parentId":3005,"tags":{},"startTime":1764107302219,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":446,"timestamp":474657132548,"id":3013,"parentId":3005,"tags":{},"startTime":1764107302219,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1389,"timestamp":474657133430,"id":3014,"parentId":3005,"tags":{},"startTime":1764107302220,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":58,"timestamp":474657134819,"id":3015,"parentId":3005,"tags":{},"startTime":1764107302221,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":25,"timestamp":474657134873,"id":3016,"parentId":3005,"tags":{},"startTime":1764107302221,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1543,"timestamp":474657134900,"id":3017,"parentId":3005,"tags":{},"startTime":1764107302221,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":30,"timestamp":474657136741,"id":3019,"parentId":2984,"tags":{},"startTime":1764107302223,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":58,"timestamp":474657136715,"id":3018,"parentId":2984,"tags":{},"startTime":1764107302223,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7363,"timestamp":474657130021,"id":3005,"parentId":2984,"tags":{},"startTime":1764107302217,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":51981,"timestamp":474657085417,"id":2984,"parentId":2982,"tags":{"name":"client"},"startTime":1764107302172,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2530,"timestamp":474657137408,"id":3020,"parentId":2982,"tags":{},"startTime":1764107302224,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":63264,"timestamp":474657077224,"id":2982,"parentId":3,"tags":{"trigger":"app/gunbuilder/build/page.tsx"},"startTime":1764107302164,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":1,"timestamp":474657142464,"id":3023,"parentId":3,"tags":{},"startTime":1764107302229,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474657142493,"id":3024,"parentId":3,"tags":{},"startTime":1764107302229,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":69000,"timestamp":474657077049,"id":3028,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107302235,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":72000,"timestamp":474657077228,"id":3032,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107302237,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6214,"timestamp":474657144248,"id":3027,"parentId":3022,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107302231,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6500,"timestamp":474657144224,"id":3025,"parentId":3022,"tags":{"request":"next-app-loader?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107302231,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":889,"timestamp":474657150122,"id":3031,"parentId":3030,"tags":{},"startTime":1764107302237,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":952,"timestamp":474657150059,"id":3030,"parentId":3029,"tags":{},"startTime":1764107302237,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":1874,"timestamp":474657149869,"id":3029,"parentId":3021,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"rsc"},"startTime":1764107302236,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8656,"timestamp":474657144243,"id":3026,"parentId":3022,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107302231,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1676,"timestamp":474657154319,"id":3043,"parentId":3042,"tags":{},"startTime":1764107302241,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1742,"timestamp":474657154255,"id":3042,"parentId":3041,"tags":{},"startTime":1764107302241,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":5117,"timestamp":474657154144,"id":3041,"parentId":3021,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"ssr"},"startTime":1764107302241,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":21096,"timestamp":474657141756,"id":3022,"parentId":3021,"tags":{},"startTime":1764107302228,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":816,"timestamp":474657163709,"id":3045,"parentId":3044,"tags":{},"startTime":1764107302250,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":474657164532,"id":3047,"parentId":3044,"tags":{},"startTime":1764107302251,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":833,"timestamp":474657164540,"id":3048,"parentId":3044,"tags":{},"startTime":1764107302251,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":7,"timestamp":474657165379,"id":3049,"parentId":3044,"tags":{},"startTime":1764107302252,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":474657165391,"id":3050,"parentId":3044,"tags":{},"startTime":1764107302252,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1088,"timestamp":474657164529,"id":3046,"parentId":3044,"tags":{},"startTime":1764107302251,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":192,"timestamp":474657166051,"id":3051,"parentId":3044,"tags":{},"startTime":1764107302253,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":1061,"timestamp":474657166247,"id":3052,"parentId":3044,"tags":{},"startTime":1764107302253,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":401,"timestamp":474657167659,"id":3053,"parentId":3044,"tags":{},"startTime":1764107302254,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":38,"timestamp":474657168059,"id":3054,"parentId":3044,"tags":{},"startTime":1764107302255,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":17,"timestamp":474657168094,"id":3055,"parentId":3044,"tags":{},"startTime":1764107302255,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":64,"timestamp":474657168114,"id":3056,"parentId":3044,"tags":{},"startTime":1764107302255,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":5287,"timestamp":474657163535,"id":3044,"parentId":3021,"tags":{},"startTime":1764107302250,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":28148,"timestamp":474657141594,"id":3021,"parentId":2983,"tags":{"name":"server"},"startTime":1764107302228,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":856,"timestamp":474657169754,"id":3057,"parentId":2983,"tags":{},"startTime":1764107302256,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":93507,"timestamp":474657077474,"id":2983,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764107302164,"traceId":"e274ac96b05c42d4"}] +[{"name":"handle-request","duration":9008,"timestamp":474657173411,"id":3058,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107302260,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474657182437,"id":3060,"parentId":3058,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"548093952","memory.heapUsed":"201898632","memory.heapTotal":"220217344"},"startTime":1764107302269,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":8684,"timestamp":474657173825,"id":3059,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107302260,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474657182514,"id":3061,"parentId":3059,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"548093952","memory.heapUsed":"201910312","memory.heapTotal":"220217344"},"startTime":1764107302269,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":11757,"timestamp":474670649625,"id":3068,"parentId":3066,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107315736,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":11762,"timestamp":474670649632,"id":3069,"parentId":3066,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107315736,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":13898,"timestamp":474670649552,"id":3067,"parentId":3066,"tags":{"request":"next-app-loader?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107315736,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":13352,"timestamp":474670660464,"id":3071,"parentId":3070,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!","layer":"rsc"},"startTime":1764107315747,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1436,"timestamp":474670678668,"id":3074,"parentId":3073,"tags":{},"startTime":1764107315765,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1510,"timestamp":474670678596,"id":3073,"parentId":3072,"tags":{},"startTime":1764107315765,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":2192,"timestamp":474670678429,"id":3072,"parentId":3071,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx","layer":"rsc"},"startTime":1764107315765,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":41224,"timestamp":474670649639,"id":3070,"parentId":3066,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107315736,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":517,"timestamp":474670692368,"id":3087,"parentId":3065,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!","layer":"ssr"},"startTime":1764107315779,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2211,"timestamp":474670694855,"id":3090,"parentId":3089,"tags":{},"startTime":1764107315781,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2282,"timestamp":474670694792,"id":3089,"parentId":3088,"tags":{},"startTime":1764107315781,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":6184,"timestamp":474670694663,"id":3088,"parentId":3087,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx","layer":"ssr"},"startTime":1764107315781,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":56129,"timestamp":474670647543,"id":3066,"parentId":3065,"tags":{},"startTime":1764107315734,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1172,"timestamp":474670704814,"id":3092,"parentId":3091,"tags":{},"startTime":1764107315791,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":474670705994,"id":3094,"parentId":3091,"tags":{},"startTime":1764107315792,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1101,"timestamp":474670706008,"id":3095,"parentId":3091,"tags":{},"startTime":1764107315792,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":474670707117,"id":3096,"parentId":3091,"tags":{},"startTime":1764107315794,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":474670707129,"id":3097,"parentId":3091,"tags":{},"startTime":1764107315794,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1367,"timestamp":474670705991,"id":3093,"parentId":3091,"tags":{},"startTime":1764107315792,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":210,"timestamp":474670707822,"id":3098,"parentId":3091,"tags":{},"startTime":1764107315794,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":1065,"timestamp":474670708036,"id":3099,"parentId":3091,"tags":{},"startTime":1764107315795,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":715,"timestamp":474670709575,"id":3100,"parentId":3091,"tags":{},"startTime":1764107315796,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":44,"timestamp":474670710291,"id":3101,"parentId":3091,"tags":{},"startTime":1764107315797,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":19,"timestamp":474670710332,"id":3102,"parentId":3091,"tags":{},"startTime":1764107315797,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":2379,"timestamp":474670710353,"id":3103,"parentId":3091,"tags":{},"startTime":1764107315797,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":8994,"timestamp":474670704534,"id":3091,"parentId":3065,"tags":{},"startTime":1764107315791,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":67732,"timestamp":474670647091,"id":3065,"parentId":3063,"tags":{"name":"server"},"startTime":1764107315734,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1364,"timestamp":474670714835,"id":3104,"parentId":3063,"tags":{},"startTime":1764107315801,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":72200,"timestamp":474670644292,"id":3063,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764107315731,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":553,"timestamp":474670723330,"id":3117,"parentId":3115,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!","layer":"app-pages-browser"},"startTime":1764107315810,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2426,"timestamp":474670722004,"id":3113,"parentId":3106,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107315808,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2439,"timestamp":474670722007,"id":3114,"parentId":3106,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107315808,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2440,"timestamp":474670722011,"id":3116,"parentId":3106,"tags":{"request":"next-client-pages-loader?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!"},"startTime":1764107315808,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2843,"timestamp":474670721967,"id":3107,"parentId":3106,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107315808,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3523,"timestamp":474670722003,"id":3112,"parentId":3106,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107315808,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3529,"timestamp":474670721999,"id":3110,"parentId":3106,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107315808,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4349,"timestamp":474670721997,"id":3109,"parentId":3106,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107315808,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4428,"timestamp":474670722000,"id":3111,"parentId":3106,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107315808,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4464,"timestamp":474670721993,"id":3108,"parentId":3106,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107315808,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2533,"timestamp":474670726100,"id":3120,"parentId":3119,"tags":{},"startTime":1764107315813,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2594,"timestamp":474670726041,"id":3119,"parentId":3118,"tags":{},"startTime":1764107315813,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":6555,"timestamp":474670725924,"id":3118,"parentId":3117,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx","layer":"app-pages-browser"},"startTime":1764107315812,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12829,"timestamp":474670722009,"id":3115,"parentId":3106,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107315808,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":17445,"timestamp":474670717413,"id":3106,"parentId":3105,"tags":{},"startTime":1764107315804,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":680,"timestamp":474670735590,"id":3122,"parentId":3121,"tags":{},"startTime":1764107315822,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":474670736278,"id":3124,"parentId":3121,"tags":{},"startTime":1764107315823,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":33,"timestamp":474670736287,"id":3125,"parentId":3121,"tags":{},"startTime":1764107315823,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":474670736325,"id":3126,"parentId":3121,"tags":{},"startTime":1764107315823,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":3,"timestamp":474670736332,"id":3127,"parentId":3121,"tags":{},"startTime":1764107315823,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":336,"timestamp":474670736276,"id":3123,"parentId":3121,"tags":{},"startTime":1764107315823,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":178,"timestamp":474670737030,"id":3128,"parentId":3121,"tags":{},"startTime":1764107315823,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":812,"timestamp":474670737212,"id":3129,"parentId":3121,"tags":{},"startTime":1764107315824,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1287,"timestamp":474670738554,"id":3130,"parentId":3121,"tags":{},"startTime":1764107315825,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":1060,"timestamp":474670739842,"id":3131,"parentId":3121,"tags":{},"startTime":1764107315826,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":31,"timestamp":474670740893,"id":3132,"parentId":3121,"tags":{},"startTime":1764107315827,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1707,"timestamp":474670740927,"id":3133,"parentId":3121,"tags":{},"startTime":1764107315827,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":36,"timestamp":474670742902,"id":3135,"parentId":3105,"tags":{},"startTime":1764107315829,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":67,"timestamp":474670742874,"id":3134,"parentId":3105,"tags":{},"startTime":1764107315829,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":8197,"timestamp":474670735371,"id":3121,"parentId":3105,"tags":{},"startTime":1764107315822,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":26351,"timestamp":474670717231,"id":3105,"parentId":3086,"tags":{"name":"client"},"startTime":1764107315804,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1886,"timestamp":474670743595,"id":3136,"parentId":3086,"tags":{},"startTime":1764107315830,"traceId":"e274ac96b05c42d4"},{"name":"compile-path","duration":101400,"timestamp":474670644337,"id":3064,"tags":{"trigger":"/gunbuilder/build","isTurbopack":false},"startTime":1764107315731,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":54250,"timestamp":474670691696,"id":3086,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764107315778,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":2,"timestamp":474670746787,"id":3137,"parentId":3,"tags":{},"startTime":1764107315833,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474670746809,"id":3138,"parentId":3,"tags":{},"startTime":1764107315833,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":61000,"timestamp":474670692466,"id":3139,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107315840,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":113127,"timestamp":474670640829,"id":3062,"tags":{"url":"/gunbuilder/build?_rsc=1acsq","isTurbopack":false},"startTime":1764107315727,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474670753969,"id":3140,"parentId":3062,"tags":{"url":"/gunbuilder/build?_rsc=1acsq","memory.rss":"566067200","memory.heapUsed":"214439560","memory.heapTotal":"236765184"},"startTime":1764107315840,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":66000,"timestamp":474670692490,"id":3141,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":false},"startTime":1764107315845,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4863,"timestamp":474670758614,"id":3142,"tags":{"url":"/gunbuilder/build?_rsc=1bjq3","isTurbopack":false},"startTime":1764107315845,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474670763486,"id":3143,"parentId":3142,"tags":{"url":"/gunbuilder/build?_rsc=1bjq3","memory.rss":"566902784","memory.heapUsed":"215320368","memory.heapTotal":"237551616"},"startTime":1764107315850,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":37611,"timestamp":474693331047,"id":3150,"parentId":3148,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107338417,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":37615,"timestamp":474693331053,"id":3151,"parentId":3148,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107338417,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":38268,"timestamp":474693330987,"id":3149,"parentId":3148,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107338417,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":63102,"timestamp":474693331061,"id":3152,"parentId":3148,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107338418,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":69029,"timestamp":474693329280,"id":3148,"parentId":3147,"tags":{},"startTime":1764107338416,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1276,"timestamp":474693399379,"id":3166,"parentId":3165,"tags":{},"startTime":1764107338486,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":3,"timestamp":474693400667,"id":3168,"parentId":3165,"tags":{},"startTime":1764107338487,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1184,"timestamp":474693400681,"id":3169,"parentId":3165,"tags":{},"startTime":1764107338487,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":5,"timestamp":474693401876,"id":3170,"parentId":3165,"tags":{},"startTime":1764107338488,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":474693401893,"id":3171,"parentId":3165,"tags":{},"startTime":1764107338488,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1456,"timestamp":474693400663,"id":3167,"parentId":3165,"tags":{},"startTime":1764107338487,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":234,"timestamp":474693402617,"id":3172,"parentId":3165,"tags":{},"startTime":1764107338489,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":474,"timestamp":474693402857,"id":3173,"parentId":3165,"tags":{},"startTime":1764107338489,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":537,"timestamp":474693403887,"id":3174,"parentId":3165,"tags":{},"startTime":1764107338490,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":52,"timestamp":474693404424,"id":3175,"parentId":3165,"tags":{},"startTime":1764107338491,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":22,"timestamp":474693404473,"id":3176,"parentId":3165,"tags":{},"startTime":1764107338491,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1474,"timestamp":474693404497,"id":3177,"parentId":3165,"tags":{},"startTime":1764107338491,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7590,"timestamp":474693399170,"id":3165,"parentId":3147,"tags":{},"startTime":1764107338486,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":79255,"timestamp":474693328853,"id":3147,"parentId":3145,"tags":{"name":"server"},"startTime":1764107338415,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2373,"timestamp":474693408123,"id":3178,"parentId":3145,"tags":{},"startTime":1764107338495,"traceId":"e274ac96b05c42d4"},{"name":"compile-path","duration":85238,"timestamp":474693325655,"id":3146,"tags":{"trigger":"/","isTurbopack":false},"startTime":1764107338412,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":85347,"timestamp":474693325618,"id":3145,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764107338412,"traceId":"e274ac96b05c42d4"}] +[{"name":"handle-request","duration":137411,"timestamp":474693323462,"id":3144,"tags":{"url":"/","isTurbopack":false},"startTime":1764107338410,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474693460900,"id":3179,"parentId":3144,"tags":{"url":"/","memory.rss":"590856192","memory.heapUsed":"219506232","memory.heapTotal":"245170176"},"startTime":1764107338547,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":3,"timestamp":474693648686,"id":3180,"parentId":3,"tags":{},"startTime":1764107338735,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":2,"timestamp":474693651941,"id":3181,"parentId":3,"tags":{},"startTime":1764107338738,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":13795,"timestamp":474731900899,"id":3182,"tags":{"url":"/gunbuilder?_rsc=1wtp7","isTurbopack":false},"startTime":1764107376987,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474731914728,"id":3183,"parentId":3182,"tags":{"url":"/gunbuilder?_rsc=1wtp7","memory.rss":"594132992","memory.heapUsed":"196781328","memory.heapTotal":"246972416"},"startTime":1764107377001,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7103,"timestamp":474731923325,"id":3184,"tags":{"url":"/gunbuilder?_rsc=52fbb","isTurbopack":false},"startTime":1764107377010,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474731930452,"id":3185,"parentId":3184,"tags":{"url":"/gunbuilder?_rsc=52fbb","memory.rss":"594132992","memory.heapUsed":"197467312","memory.heapTotal":"246972416"},"startTime":1764107377017,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":15271,"timestamp":474746226404,"id":3186,"tags":{"url":"/gunbuilder/lower?_rsc=1acsq","isTurbopack":false},"startTime":1764107391313,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474746241715,"id":3187,"parentId":3186,"tags":{"url":"/gunbuilder/lower?_rsc=1acsq","memory.rss":"539639808","memory.heapUsed":"187699584","memory.heapTotal":"195936256"},"startTime":1764107391328,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6256,"timestamp":474746249674,"id":3188,"tags":{"url":"/gunbuilder/lower?_rsc=1o5jb","isTurbopack":false},"startTime":1764107391336,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474746255946,"id":3189,"parentId":3188,"tags":{"url":"/gunbuilder/lower?_rsc=1o5jb","memory.rss":"540229632","memory.heapUsed":"187878592","memory.heapTotal":"196984832"},"startTime":1764107391342,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":36832,"timestamp":474759949233,"id":3197,"parentId":3194,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107405036,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":36842,"timestamp":474759949237,"id":3198,"parentId":3194,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107405036,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":37094,"timestamp":474759949226,"id":3196,"parentId":3194,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107405036,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":39094,"timestamp":474759949148,"id":3195,"parentId":3194,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107405036,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":46849,"timestamp":474759949241,"id":3199,"parentId":3194,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107405036,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":66179,"timestamp":474759947073,"id":3194,"parentId":3193,"tags":{},"startTime":1764107405033,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1110,"timestamp":474760014189,"id":3216,"parentId":3215,"tags":{},"startTime":1764107405101,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":474760015306,"id":3218,"parentId":3215,"tags":{},"startTime":1764107405102,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1010,"timestamp":474760015342,"id":3219,"parentId":3215,"tags":{},"startTime":1764107405102,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":474760016371,"id":3220,"parentId":3215,"tags":{},"startTime":1764107405103,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":474760016393,"id":3221,"parentId":3215,"tags":{},"startTime":1764107405103,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1273,"timestamp":474760015304,"id":3217,"parentId":3215,"tags":{},"startTime":1764107405102,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":169,"timestamp":474760016995,"id":3222,"parentId":3215,"tags":{},"startTime":1764107405103,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":368,"timestamp":474760017167,"id":3223,"parentId":3215,"tags":{},"startTime":1764107405104,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":660,"timestamp":474760018103,"id":3224,"parentId":3215,"tags":{},"startTime":1764107405104,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":50,"timestamp":474760018764,"id":3225,"parentId":3215,"tags":{},"startTime":1764107405105,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":23,"timestamp":474760018811,"id":3226,"parentId":3215,"tags":{},"startTime":1764107405105,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":182,"timestamp":474760018836,"id":3227,"parentId":3215,"tags":{},"startTime":1764107405105,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":6219,"timestamp":474760014030,"id":3215,"parentId":3193,"tags":{},"startTime":1764107405100,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":75278,"timestamp":474759946714,"id":3193,"parentId":3191,"tags":{"name":"server"},"startTime":1764107405033,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1393,"timestamp":474760022011,"id":3228,"parentId":3191,"tags":{},"startTime":1764107405108,"traceId":"e274ac96b05c42d4"},{"name":"compile-path","duration":79489,"timestamp":474759944404,"id":3192,"tags":{"trigger":"/gunbuilder/[categoryId]/[partId]","isTurbopack":false},"startTime":1764107405031,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":79653,"timestamp":474759944363,"id":3191,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764107405031,"traceId":"e274ac96b05c42d4"}] +[{"name":"handle-request","duration":101918,"timestamp":474759938628,"id":3190,"tags":{"url":"/gunbuilder/lower/lower-aero-m4e1?_rsc=uiigs","isTurbopack":false},"startTime":1764107405025,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474760040565,"id":3229,"parentId":3190,"tags":{"url":"/gunbuilder/lower/lower-aero-m4e1?_rsc=uiigs","memory.rss":"580435968","memory.heapUsed":"195284368","memory.heapTotal":"226902016"},"startTime":1764107405127,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5133,"timestamp":474760046203,"id":3230,"tags":{"url":"/gunbuilder/lower/lower-aero-m4e1?_rsc=rksw7","isTurbopack":false},"startTime":1764107405133,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474760051347,"id":3231,"parentId":3230,"tags":{"url":"/gunbuilder/lower/lower-aero-m4e1?_rsc=rksw7","memory.rss":"580435968","memory.heapUsed":"196318648","memory.heapTotal":"226902016"},"startTime":1764107405138,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":11373,"timestamp":474765155576,"id":3232,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=1o8dd","isTurbopack":false},"startTime":1764107410242,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474765167012,"id":3233,"parentId":3232,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=1o8dd","memory.rss":"580796416","memory.heapUsed":"197530648","memory.heapTotal":"227393536"},"startTime":1764107410253,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":10567,"timestamp":474765173685,"id":3234,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=1kfpz","isTurbopack":false},"startTime":1764107410260,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474765184285,"id":3235,"parentId":3234,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=1kfpz","memory.rss":"580796416","memory.heapUsed":"198182544","memory.heapTotal":"227393536"},"startTime":1764107410271,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7130,"timestamp":474765213096,"id":3236,"tags":{"url":"/gunbuilder?_rsc=x5p1f","isTurbopack":false},"startTime":1764107410299,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474765220260,"id":3237,"parentId":3236,"tags":{"url":"/gunbuilder?_rsc=x5p1f","memory.rss":"580796416","memory.heapUsed":"198819352","memory.heapTotal":"227393536"},"startTime":1764107410307,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":13796,"timestamp":474767940119,"id":3238,"tags":{"url":"/gunbuilder/handguard?_rsc=1jn8g","isTurbopack":false},"startTime":1764107413026,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474767953955,"id":3239,"parentId":3238,"tags":{"url":"/gunbuilder/handguard?_rsc=1jn8g","memory.rss":"580993024","memory.heapUsed":"199862448","memory.heapTotal":"227590144"},"startTime":1764107413040,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5932,"timestamp":474767960708,"id":3240,"tags":{"url":"/gunbuilder/handguard?_rsc=rs5ev","isTurbopack":false},"startTime":1764107413047,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474767966660,"id":3241,"parentId":3240,"tags":{"url":"/gunbuilder/handguard?_rsc=rs5ev","memory.rss":"580993024","memory.heapUsed":"200702072","memory.heapTotal":"227590144"},"startTime":1764107413053,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":9194,"timestamp":474769274008,"id":3242,"tags":{"url":"/gunbuilder?select=handguard%3Ahg-geissele-mk8&_rsc=1wjnh","isTurbopack":false},"startTime":1764107414360,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":2,"timestamp":474769283270,"id":3243,"parentId":3242,"tags":{"url":"/gunbuilder?select=handguard%3Ahg-geissele-mk8&_rsc=1wjnh","memory.rss":"580993024","memory.heapUsed":"201322784","memory.heapTotal":"227590144"},"startTime":1764107414370,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6260,"timestamp":474769286037,"id":3244,"tags":{"url":"/gunbuilder?select=handguard%3Ahg-geissele-mk8&_rsc=5xggt","isTurbopack":false},"startTime":1764107414372,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":2,"timestamp":474769292344,"id":3245,"parentId":3244,"tags":{"url":"/gunbuilder?select=handguard%3Ahg-geissele-mk8&_rsc=5xggt","memory.rss":"580993024","memory.heapUsed":"201970920","memory.heapTotal":"227590144"},"startTime":1764107414379,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":9812,"timestamp":474770407313,"id":3246,"tags":{"url":"/gunbuilder/stock?_rsc=1acsq","isTurbopack":false},"startTime":1764107415494,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474770417172,"id":3247,"parentId":3246,"tags":{"url":"/gunbuilder/stock?_rsc=1acsq","memory.rss":"580993024","memory.heapUsed":"202779080","memory.heapTotal":"227590144"},"startTime":1764107415504,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5929,"timestamp":474770419215,"id":3248,"tags":{"url":"/gunbuilder/stock?_rsc=iik8j","isTurbopack":false},"startTime":1764107415506,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474770425168,"id":3249,"parentId":3248,"tags":{"url":"/gunbuilder/stock?_rsc=iik8j","memory.rss":"581615616","memory.heapUsed":"203607560","memory.heapTotal":"228114432"},"startTime":1764107415512,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":13725,"timestamp":474771383716,"id":3250,"tags":{"url":"/gunbuilder?select=stock%3Astock-b5-bravo&_rsc=g9x6a","isTurbopack":false},"startTime":1764107416470,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474771397543,"id":3251,"parentId":3250,"tags":{"url":"/gunbuilder?select=stock%3Astock-b5-bravo&_rsc=g9x6a","memory.rss":"582254592","memory.heapUsed":"204533288","memory.heapTotal":"229163008"},"startTime":1764107416484,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5827,"timestamp":474771403493,"id":3252,"tags":{"url":"/gunbuilder?select=stock%3Astock-b5-bravo&_rsc=16qd3","isTurbopack":false},"startTime":1764107416490,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474771409350,"id":3253,"parentId":3252,"tags":{"url":"/gunbuilder?select=stock%3Astock-b5-bravo&_rsc=16qd3","memory.rss":"582909952","memory.heapUsed":"204907312","memory.heapTotal":"229687296"},"startTime":1764107416496,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":13537,"timestamp":474772365861,"id":3254,"tags":{"url":"/gunbuilder/optic?_rsc=1acsq","isTurbopack":false},"startTime":1764107417452,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474772379441,"id":3255,"parentId":3254,"tags":{"url":"/gunbuilder/optic?_rsc=1acsq","memory.rss":"582385664","memory.heapUsed":"194562328","memory.heapTotal":"202653696"},"startTime":1764107417466,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6972,"timestamp":474772383132,"id":3256,"tags":{"url":"/gunbuilder/optic?_rsc=l6cyw","isTurbopack":false},"startTime":1764107417469,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474772390127,"id":3257,"parentId":3256,"tags":{"url":"/gunbuilder/optic?_rsc=l6cyw","memory.rss":"582434816","memory.heapUsed":"194666568","memory.heapTotal":"203702272"},"startTime":1764107417476,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":10896,"timestamp":474773297987,"id":3258,"tags":{"url":"/gunbuilder?select=optic%3Aoptic-holosun-509t&_rsc=kbx68","isTurbopack":false},"startTime":1764107418384,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":2,"timestamp":474773308951,"id":3259,"parentId":3258,"tags":{"url":"/gunbuilder?select=optic%3Aoptic-holosun-509t&_rsc=kbx68","memory.rss":"563576832","memory.heapUsed":"195291872","memory.heapTotal":"204226560"},"startTime":1764107418395,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6180,"timestamp":474773311171,"id":3260,"tags":{"url":"/gunbuilder?select=optic%3Aoptic-holosun-509t&_rsc=tinzo","isTurbopack":false},"startTime":1764107418398,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474773317379,"id":3261,"parentId":3260,"tags":{"url":"/gunbuilder?select=optic%3Aoptic-holosun-509t&_rsc=tinzo","memory.rss":"563576832","memory.heapUsed":"195926240","memory.heapTotal":"205012992"},"startTime":1764107418404,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":12039,"timestamp":474780030566,"id":3262,"tags":{"url":"/gunbuilder/build?_rsc=1acsq","isTurbopack":false},"startTime":1764107425117,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":2,"timestamp":474780042671,"id":3263,"parentId":3262,"tags":{"url":"/gunbuilder/build?_rsc=1acsq","memory.rss":"563838976","memory.heapUsed":"196796616","memory.heapTotal":"205783040"},"startTime":1764107425129,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":8207,"timestamp":474780046801,"id":3264,"tags":{"url":"/gunbuilder/build?_rsc=1bjq3","isTurbopack":false},"startTime":1764107425133,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474780055040,"id":3265,"parentId":3264,"tags":{"url":"/gunbuilder/build?_rsc=1bjq3","memory.rss":"563838976","memory.heapUsed":"197522568","memory.heapTotal":"206569472"},"startTime":1764107425141,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":45660,"timestamp":474790866408,"id":3266,"tags":{"url":"/gunbuilder/build?build=dXBwZXI6dXBwZXItYmNtLW00LGJhcnJlbDpiYXJyZWwtYmEtMTMtOSxsb3dlcjpsb3dlci1hZXJvLW00ZTEsaGFuZGd1YXJkOmhnLWdlaXNzZWxlLW1rOCxzdG9jazpzdG9jay1iNS1icmF2byxvcHRpYzpvcHRpYy1ob2xvc3VuLTUwOXQ=","isTurbopack":false},"startTime":1764107435953,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474790912098,"id":3267,"parentId":3266,"tags":{"url":"/gunbuilder/build?build=dXBwZXI6dXBwZXItYmNtLW00LGJhcnJlbDpiYXJyZWwtYmEtMTMtOSxsb3dlcjpsb3dlci1hZXJvLW00ZTEsaGFuZGd1YXJkOmhnLWdlaXNzZWxlLW1rOCxzdG9jazpzdG9jay1iNS1icmF2byxvcHRpYzpvcHRpYy1ob2xvc3VuLTUwOXQ=","memory.rss":"556793856","memory.heapUsed":"196667816","memory.heapTotal":"203849728"},"startTime":1764107435998,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":3,"timestamp":474791089015,"id":3268,"parentId":3,"tags":{},"startTime":1764107436175,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474791089094,"id":3269,"parentId":3,"tags":{},"startTime":1764107436175,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":3,"timestamp":474791112332,"id":3270,"parentId":3,"tags":{},"startTime":1764107436199,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7888,"timestamp":474800565719,"id":3271,"tags":{"url":"/gunbuilder?_rsc=1tfg7","isTurbopack":false},"startTime":1764107445652,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474800573670,"id":3272,"parentId":3271,"tags":{"url":"/gunbuilder?_rsc=1tfg7","memory.rss":"534659072","memory.heapUsed":"196517912","memory.heapTotal":"203587584"},"startTime":1764107445660,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7497,"timestamp":474800578194,"id":3273,"tags":{"url":"/gunbuilder?_rsc=x5p1f","isTurbopack":false},"startTime":1764107445665,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474800585722,"id":3274,"parentId":3273,"tags":{"url":"/gunbuilder?_rsc=x5p1f","memory.rss":"534659072","memory.heapUsed":"197154488","memory.heapTotal":"203587584"},"startTime":1764107445672,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5474,"timestamp":474816921168,"id":3280,"parentId":3278,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107462007,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5480,"timestamp":474816921171,"id":3281,"parentId":3278,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107462007,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5485,"timestamp":474816921174,"id":3283,"parentId":3278,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107462007,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5645,"timestamp":474816921173,"id":3282,"parentId":3278,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107462007,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1028,"timestamp":474816926339,"id":3286,"parentId":3285,"tags":{},"startTime":1764107462013,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1113,"timestamp":474816926256,"id":3285,"parentId":3284,"tags":{},"startTime":1764107462013,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":2733,"timestamp":474816926033,"id":3284,"parentId":3277,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"rsc"},"startTime":1764107462012,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8914,"timestamp":474816921137,"id":3279,"parentId":3278,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107462007,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1610,"timestamp":474816931726,"id":3304,"parentId":3303,"tags":{},"startTime":1764107462018,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1661,"timestamp":474816931677,"id":3303,"parentId":3302,"tags":{},"startTime":1764107462018,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":6194,"timestamp":474816931586,"id":3302,"parentId":3277,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"ssr"},"startTime":1764107462018,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":21567,"timestamp":474816920061,"id":3278,"parentId":3277,"tags":{},"startTime":1764107462006,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1271,"timestamp":474816942998,"id":3306,"parentId":3305,"tags":{},"startTime":1764107462029,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":474816944284,"id":3308,"parentId":3305,"tags":{},"startTime":1764107462031,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1143,"timestamp":474816944295,"id":3309,"parentId":3305,"tags":{},"startTime":1764107462031,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":474816945451,"id":3310,"parentId":3305,"tags":{},"startTime":1764107462032,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":474816945462,"id":3311,"parentId":3305,"tags":{},"startTime":1764107462032,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1349,"timestamp":474816944279,"id":3307,"parentId":3305,"tags":{},"startTime":1764107462031,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":174,"timestamp":474816946063,"id":3312,"parentId":3305,"tags":{},"startTime":1764107462032,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":701,"timestamp":474816946241,"id":3313,"parentId":3305,"tags":{},"startTime":1764107462033,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":662,"timestamp":474816947297,"id":3314,"parentId":3305,"tags":{},"startTime":1764107462034,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":31,"timestamp":474816947958,"id":3315,"parentId":3305,"tags":{},"startTime":1764107462034,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":23,"timestamp":474816947986,"id":3316,"parentId":3305,"tags":{},"startTime":1764107462034,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":85,"timestamp":474816948012,"id":3317,"parentId":3305,"tags":{},"startTime":1764107462034,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":6488,"timestamp":474816942458,"id":3305,"parentId":3277,"tags":{},"startTime":1764107462029,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":30572,"timestamp":474816919889,"id":3277,"parentId":3275,"tags":{"name":"server"},"startTime":1764107462006,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1277,"timestamp":474816950474,"id":3318,"parentId":3275,"tags":{},"startTime":1764107462037,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":39351,"timestamp":474816912550,"id":3275,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764107461999,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3616,"timestamp":474816956101,"id":3328,"parentId":3320,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107462042,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3646,"timestamp":474816956102,"id":3329,"parentId":3320,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107462042,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3951,"timestamp":474816956069,"id":3321,"parentId":3320,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107462042,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4722,"timestamp":474816956099,"id":3327,"parentId":3320,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107462042,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2950,"timestamp":474816958683,"id":3333,"parentId":3332,"tags":{},"startTime":1764107462045,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":3026,"timestamp":474816958612,"id":3332,"parentId":3331,"tags":{},"startTime":1764107462045,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":8431,"timestamp":474816958504,"id":3331,"parentId":3319,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"app-pages-browser"},"startTime":1764107462045,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":11341,"timestamp":474816956093,"id":3323,"parentId":3320,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107462042,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12111,"timestamp":474816956096,"id":3325,"parentId":3320,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107462042,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":7163,"timestamp":474816961053,"id":3335,"parentId":3334,"tags":{},"startTime":1764107462047,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":14586,"timestamp":474816956089,"id":3322,"parentId":3320,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107462042,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":14613,"timestamp":474816956098,"id":3326,"parentId":3320,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107462042,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":13908,"timestamp":474816968241,"id":3337,"parentId":3336,"tags":{},"startTime":1764107462055,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":14124,"timestamp":474816968229,"id":3336,"parentId":3334,"tags":{},"startTime":1764107462055,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2532,"timestamp":474816982366,"id":3338,"parentId":3334,"tags":{"astUsed":"true"},"startTime":1764107462069,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":25271,"timestamp":474816960930,"id":3334,"parentId":3330,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107462047,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":35835,"timestamp":474816957852,"id":3330,"parentId":3319,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107462044,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":12,"timestamp":474816993772,"id":3339,"parentId":3330,"tags":{},"startTime":1764107462080,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":37699,"timestamp":474816956094,"id":3324,"parentId":3320,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107462042,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":41222,"timestamp":474816952582,"id":3320,"parentId":3319,"tags":{},"startTime":1764107462039,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":797,"timestamp":474817001181,"id":3341,"parentId":3340,"tags":{},"startTime":1764107462087,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":3,"timestamp":474817001991,"id":3343,"parentId":3340,"tags":{},"startTime":1764107462088,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":23,"timestamp":474817002034,"id":3344,"parentId":3340,"tags":{},"startTime":1764107462088,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":4,"timestamp":474817002069,"id":3345,"parentId":3340,"tags":{},"startTime":1764107462088,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":474817002083,"id":3346,"parentId":3340,"tags":{},"startTime":1764107462088,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":322,"timestamp":474817001987,"id":3342,"parentId":3340,"tags":{},"startTime":1764107462088,"traceId":"e274ac96b05c42d4"}] +[{"name":"module-hash","duration":236,"timestamp":474817002973,"id":3347,"parentId":3340,"tags":{},"startTime":1764107462089,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":540,"timestamp":474817003229,"id":3348,"parentId":3340,"tags":{},"startTime":1764107462090,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":2050,"timestamp":474817004344,"id":3349,"parentId":3340,"tags":{},"startTime":1764107462091,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":127,"timestamp":474817006393,"id":3350,"parentId":3340,"tags":{},"startTime":1764107462093,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":51,"timestamp":474817006509,"id":3351,"parentId":3340,"tags":{},"startTime":1764107462093,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1884,"timestamp":474817006564,"id":3352,"parentId":3340,"tags":{},"startTime":1764107462093,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":57,"timestamp":474817009118,"id":3354,"parentId":3319,"tags":{},"startTime":1764107462095,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":89,"timestamp":474817009091,"id":3353,"parentId":3319,"tags":{},"startTime":1764107462095,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":9201,"timestamp":474817000866,"id":3340,"parentId":3319,"tags":{},"startTime":1764107462087,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":57638,"timestamp":474816952444,"id":3319,"parentId":3276,"tags":{"name":"client"},"startTime":1764107462039,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2230,"timestamp":474817010090,"id":3355,"parentId":3276,"tags":{},"startTime":1764107462096,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":100311,"timestamp":474816912608,"id":3276,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764107461999,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":2,"timestamp":474817022153,"id":3356,"parentId":3,"tags":{},"startTime":1764107462108,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474817022198,"id":3357,"parentId":3,"tags":{},"startTime":1764107462108,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474817022237,"id":3358,"parentId":3,"tags":{},"startTime":1764107462109,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":114000,"timestamp":474816912399,"id":3362,"parentId":3,"tags":{"updatedModules":["[project]/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!","[project]/node_modules/next/dist/client/components/not-found-error.js"],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107462119,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":121000,"timestamp":474816913616,"id":3363,"parentId":3,"tags":{"updatedModules":["[project]/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!","[project]/node_modules/next/dist/client/components/not-found-error.js"],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107462122,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":12764,"timestamp":474817023997,"id":3361,"tags":{"url":"/gunbuilder?_rsc=9gfev","isTurbopack":false},"startTime":1764107462110,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474817036779,"id":3364,"parentId":3361,"tags":{"url":"/gunbuilder?_rsc=9gfev","memory.rss":"549978112","memory.heapUsed":"199799480","memory.heapTotal":"235225088"},"startTime":1764107462123,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":13759,"timestamp":474817023073,"id":3359,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107462109,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474817036840,"id":3365,"parentId":3359,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"549978112","memory.heapUsed":"199810608","memory.heapTotal":"235225088"},"startTime":1764107462123,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":14460,"timestamp":474817023601,"id":3360,"tags":{"url":"/gunbuilder/build?_rsc=3o5pd","isTurbopack":false},"startTime":1764107462110,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474817038076,"id":3366,"parentId":3360,"tags":{"url":"/gunbuilder/build?_rsc=3o5pd","memory.rss":"549978112","memory.heapUsed":"199890216","memory.heapTotal":"235225088"},"startTime":1764107462124,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":126000,"timestamp":474816912772,"id":3367,"parentId":3,"tags":{"updatedModules":["[project]/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!","[project]/node_modules/next/dist/client/components/not-found-error.js"],"page":"/gunbuilder/build","isPageHidden":true},"startTime":1764107462126,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3059,"timestamp":474859614314,"id":3379,"parentId":3371,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107504701,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3085,"timestamp":474859614315,"id":3380,"parentId":3371,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107504701,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3396,"timestamp":474859614262,"id":3372,"parentId":3371,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107504701,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3985,"timestamp":474859614312,"id":3378,"parentId":3371,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107504701,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4622,"timestamp":474859614304,"id":3374,"parentId":3371,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107504701,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4694,"timestamp":474859614308,"id":3376,"parentId":3371,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107504701,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2237,"timestamp":474859616853,"id":3384,"parentId":3383,"tags":{},"startTime":1764107504703,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2303,"timestamp":474859616787,"id":3383,"parentId":3382,"tags":{},"startTime":1764107504703,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":6070,"timestamp":474859616717,"id":3382,"parentId":3370,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"app-pages-browser"},"startTime":1764107504703,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":4553,"timestamp":474859618426,"id":3386,"parentId":3385,"tags":{},"startTime":1764107504705,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":10652,"timestamp":474859614300,"id":3373,"parentId":3371,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107504701,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":10348,"timestamp":474859622995,"id":3388,"parentId":3387,"tags":{},"startTime":1764107504709,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":10575,"timestamp":474859622987,"id":3387,"parentId":3385,"tags":{},"startTime":1764107504709,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2321,"timestamp":474859633575,"id":3389,"parentId":3385,"tags":{"astUsed":"true"},"startTime":1764107504720,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":18040,"timestamp":474859618373,"id":3385,"parentId":3381,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107504705,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":23584,"timestamp":474859614310,"id":3377,"parentId":3371,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107504701,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":22797,"timestamp":474859616556,"id":3381,"parentId":3370,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107504703,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":15,"timestamp":474859639477,"id":3390,"parentId":3381,"tags":{},"startTime":1764107504726,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":25249,"timestamp":474859614306,"id":3375,"parentId":3371,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107504701,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":25470,"timestamp":474859614095,"id":3371,"parentId":3370,"tags":{},"startTime":1764107504700,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1019,"timestamp":474859640498,"id":3392,"parentId":3391,"tags":{},"startTime":1764107504727,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":474859641530,"id":3394,"parentId":3391,"tags":{},"startTime":1764107504728,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":20,"timestamp":474859641538,"id":3395,"parentId":3391,"tags":{},"startTime":1764107504728,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":474859641568,"id":3396,"parentId":3391,"tags":{},"startTime":1764107504728,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":474859641577,"id":3397,"parentId":3391,"tags":{},"startTime":1764107504728,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":196,"timestamp":474859641526,"id":3393,"parentId":3391,"tags":{},"startTime":1764107504728,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":181,"timestamp":474859642050,"id":3398,"parentId":3391,"tags":{},"startTime":1764107504728,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":729,"timestamp":474859642235,"id":3399,"parentId":3391,"tags":{},"startTime":1764107504728,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1414,"timestamp":474859643360,"id":3400,"parentId":3391,"tags":{},"startTime":1764107504730,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":65,"timestamp":474859644773,"id":3401,"parentId":3391,"tags":{},"startTime":1764107504731,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":25,"timestamp":474859644835,"id":3402,"parentId":3391,"tags":{},"startTime":1764107504731,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1841,"timestamp":474859644862,"id":3403,"parentId":3391,"tags":{},"startTime":1764107504731,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":23,"timestamp":474859647038,"id":3405,"parentId":3370,"tags":{},"startTime":1764107504733,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":52,"timestamp":474859647012,"id":3404,"parentId":3370,"tags":{},"startTime":1764107504733,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7460,"timestamp":474859640233,"id":3391,"parentId":3370,"tags":{},"startTime":1764107504726,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":33778,"timestamp":474859613930,"id":3370,"parentId":3368,"tags":{"name":"client"},"startTime":1764107504700,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2184,"timestamp":474859647717,"id":3406,"parentId":3368,"tags":{},"startTime":1764107504734,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":42859,"timestamp":474859607349,"id":3368,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764107504694,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":1,"timestamp":474859652619,"id":3409,"parentId":3,"tags":{},"startTime":1764107504739,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474859652644,"id":3410,"parentId":3,"tags":{},"startTime":1764107504739,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474859652655,"id":3411,"parentId":3,"tags":{},"startTime":1764107504739,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5989,"timestamp":474859653914,"id":3413,"parentId":3408,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107504740,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5998,"timestamp":474859653917,"id":3414,"parentId":3408,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107504740,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6006,"timestamp":474859653921,"id":3416,"parentId":3408,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107504740,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6175,"timestamp":474859653919,"id":3415,"parentId":3408,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107504740,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1067,"timestamp":474859659506,"id":3419,"parentId":3418,"tags":{},"startTime":1764107504746,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1129,"timestamp":474859659446,"id":3418,"parentId":3417,"tags":{},"startTime":1764107504746,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":1837,"timestamp":474859659273,"id":3417,"parentId":3407,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"rsc"},"startTime":1764107504746,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":53000,"timestamp":474859607598,"id":3420,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/page.tsx"],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107504748,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":9078,"timestamp":474859653895,"id":3412,"parentId":3408,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107504740,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1970,"timestamp":474859664611,"id":3438,"parentId":3437,"tags":{},"startTime":1764107504751,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2024,"timestamp":474859664561,"id":3437,"parentId":3436,"tags":{},"startTime":1764107504751,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":4916,"timestamp":474859664456,"id":3436,"parentId":3407,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"ssr"},"startTime":1764107504751,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":61000,"timestamp":474859608185,"id":3439,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/page.tsx"],"page":"/gunbuilder/build","isPageHidden":true},"startTime":1764107504756,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":61000,"timestamp":474859608212,"id":3440,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/page.tsx"],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107504756,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":21186,"timestamp":474859651323,"id":3408,"parentId":3407,"tags":{},"startTime":1764107504738,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1250,"timestamp":474859673559,"id":3442,"parentId":3441,"tags":{},"startTime":1764107504760,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":474859674822,"id":3444,"parentId":3441,"tags":{},"startTime":1764107504761,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1105,"timestamp":474859674831,"id":3445,"parentId":3441,"tags":{},"startTime":1764107504761,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":5,"timestamp":474859675945,"id":3446,"parentId":3441,"tags":{},"startTime":1764107504762,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":474859675955,"id":3447,"parentId":3441,"tags":{},"startTime":1764107504762,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1389,"timestamp":474859674819,"id":3443,"parentId":3441,"tags":{},"startTime":1764107504761,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":183,"timestamp":474859676654,"id":3448,"parentId":3441,"tags":{},"startTime":1764107504763,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":700,"timestamp":474859676840,"id":3449,"parentId":3441,"tags":{},"startTime":1764107504763,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":487,"timestamp":474859677921,"id":3450,"parentId":3441,"tags":{},"startTime":1764107504764,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":40,"timestamp":474859678407,"id":3451,"parentId":3441,"tags":{},"startTime":1764107504765,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":22,"timestamp":474859678444,"id":3452,"parentId":3441,"tags":{},"startTime":1764107504765,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":948,"timestamp":474859678468,"id":3453,"parentId":3441,"tags":{},"startTime":1764107504765,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":8006,"timestamp":474859673363,"id":3441,"parentId":3407,"tags":{},"startTime":1764107504760,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":31778,"timestamp":474859651182,"id":3407,"parentId":3369,"tags":{"name":"server"},"startTime":1764107504737,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1395,"timestamp":474859682978,"id":3454,"parentId":3369,"tags":{},"startTime":1764107504769,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":77464,"timestamp":474859607517,"id":3369,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764107504694,"traceId":"e274ac96b05c42d4"}] +[{"name":"handle-request","duration":11333,"timestamp":474859688170,"id":3456,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107504774,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474859699524,"id":3458,"parentId":3456,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"550469632","memory.heapUsed":"216829608","memory.heapTotal":"241483776"},"startTime":1764107504786,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":11562,"timestamp":474859688017,"id":3455,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107504774,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474859699585,"id":3459,"parentId":3455,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"550469632","memory.heapUsed":"216840728","memory.heapTotal":"241483776"},"startTime":1764107504786,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":11505,"timestamp":474859688203,"id":3457,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","isTurbopack":false},"startTime":1764107504774,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474859699713,"id":3460,"parentId":3457,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","memory.rss":"550469632","memory.heapUsed":"216856024","memory.heapTotal":"241483776"},"startTime":1764107504786,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3375,"timestamp":474870842795,"id":3472,"parentId":3464,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107515929,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3404,"timestamp":474870842797,"id":3473,"parentId":3464,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107515929,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3754,"timestamp":474870842735,"id":3465,"parentId":3464,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107515929,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4444,"timestamp":474870842793,"id":3471,"parentId":3464,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107515929,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5193,"timestamp":474870842783,"id":3467,"parentId":3464,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107515929,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5271,"timestamp":474870842788,"id":3469,"parentId":3464,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107515929,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":727,"timestamp":474870847374,"id":3479,"parentId":3478,"tags":{},"startTime":1764107515934,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":4051,"timestamp":474870845583,"id":3477,"parentId":3476,"tags":{},"startTime":1764107515932,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":4137,"timestamp":474870845498,"id":3476,"parentId":3475,"tags":{},"startTime":1764107515932,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":8228,"timestamp":474870845423,"id":3475,"parentId":3463,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"app-pages-browser"},"startTime":1764107515932,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":11124,"timestamp":474870842778,"id":3466,"parentId":3464,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107515929,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":15134,"timestamp":474870848127,"id":3481,"parentId":3480,"tags":{},"startTime":1764107515934,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":16199,"timestamp":474870848116,"id":3480,"parentId":3478,"tags":{},"startTime":1764107515934,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2292,"timestamp":474870864327,"id":3482,"parentId":3478,"tags":{"astUsed":"true"},"startTime":1764107515951,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":19784,"timestamp":474870847317,"id":3478,"parentId":3474,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107515934,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":24512,"timestamp":474870842790,"id":3470,"parentId":3464,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107515929,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":23097,"timestamp":474870845261,"id":3474,"parentId":3463,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107515931,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":8,"timestamp":474870868429,"id":3483,"parentId":3474,"tags":{},"startTime":1764107515955,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":25670,"timestamp":474870842786,"id":3468,"parentId":3464,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107515929,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":25951,"timestamp":474870842512,"id":3464,"parentId":3463,"tags":{},"startTime":1764107515929,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":694,"timestamp":474870869203,"id":3485,"parentId":3484,"tags":{},"startTime":1764107515955,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":474870869903,"id":3487,"parentId":3484,"tags":{},"startTime":1764107515956,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":19,"timestamp":474870869911,"id":3488,"parentId":3484,"tags":{},"startTime":1764107515956,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":474870869936,"id":3489,"parentId":3484,"tags":{},"startTime":1764107515956,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":474870869946,"id":3490,"parentId":3484,"tags":{},"startTime":1764107515956,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":271,"timestamp":474870869901,"id":3486,"parentId":3484,"tags":{},"startTime":1764107515956,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":145,"timestamp":474870870531,"id":3491,"parentId":3484,"tags":{},"startTime":1764107515957,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":429,"timestamp":474870870680,"id":3492,"parentId":3484,"tags":{},"startTime":1764107515957,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1287,"timestamp":474870871479,"id":3493,"parentId":3484,"tags":{},"startTime":1764107515958,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":47,"timestamp":474870872766,"id":3494,"parentId":3484,"tags":{},"startTime":1764107515959,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":19,"timestamp":474870872810,"id":3495,"parentId":3484,"tags":{},"startTime":1764107515959,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1068,"timestamp":474870872831,"id":3496,"parentId":3484,"tags":{},"startTime":1764107515959,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":31,"timestamp":474870874205,"id":3498,"parentId":3463,"tags":{},"startTime":1764107515960,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":60,"timestamp":474870874179,"id":3497,"parentId":3463,"tags":{},"startTime":1764107515960,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":6033,"timestamp":474870868947,"id":3484,"parentId":3463,"tags":{},"startTime":1764107515955,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":32693,"timestamp":474870842299,"id":3463,"parentId":3461,"tags":{"name":"client"},"startTime":1764107515929,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1841,"timestamp":474870875000,"id":3499,"parentId":3461,"tags":{},"startTime":1764107515961,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":41542,"timestamp":474870835682,"id":3461,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764107515922,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":4,"timestamp":474870879180,"id":3502,"parentId":3,"tags":{},"startTime":1764107515965,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474870879206,"id":3503,"parentId":3,"tags":{},"startTime":1764107515965,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474870879217,"id":3504,"parentId":3,"tags":{},"startTime":1764107515965,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":49000,"timestamp":474870835732,"id":3510,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107515971,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":50000,"timestamp":474870835725,"id":3514,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":false},"startTime":1764107515973,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6720,"timestamp":474870880327,"id":3507,"parentId":3501,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107515967,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6727,"timestamp":474870880328,"id":3508,"parentId":3501,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107515967,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6727,"timestamp":474870880331,"id":3509,"parentId":3501,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107515967,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2006,"timestamp":474870886641,"id":3513,"parentId":3512,"tags":{},"startTime":1764107515973,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2087,"timestamp":474870886562,"id":3512,"parentId":3511,"tags":{},"startTime":1764107515973,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":2905,"timestamp":474870886386,"id":3511,"parentId":3500,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"rsc"},"startTime":1764107515973,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":9161,"timestamp":474870880324,"id":3506,"parentId":3501,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107515967,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":10872,"timestamp":474870880308,"id":3505,"parentId":3501,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107515967,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":55000,"timestamp":474870836183,"id":3530,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder/build","isPageHidden":true},"startTime":1764107515978,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1804,"timestamp":474870893036,"id":3533,"parentId":3532,"tags":{},"startTime":1764107515979,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1858,"timestamp":474870892985,"id":3532,"parentId":3531,"tags":{},"startTime":1764107515979,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":4118,"timestamp":474870892883,"id":3531,"parentId":3500,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"ssr"},"startTime":1764107515979,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":20874,"timestamp":474870878607,"id":3501,"parentId":3500,"tags":{},"startTime":1764107515965,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1256,"timestamp":474870900548,"id":3535,"parentId":3534,"tags":{},"startTime":1764107515987,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":474870901815,"id":3537,"parentId":3534,"tags":{},"startTime":1764107515988,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1220,"timestamp":474870901827,"id":3538,"parentId":3534,"tags":{},"startTime":1764107515988,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":474870903062,"id":3539,"parentId":3534,"tags":{},"startTime":1764107515989,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":474870903076,"id":3540,"parentId":3534,"tags":{},"startTime":1764107515989,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1540,"timestamp":474870901813,"id":3536,"parentId":3534,"tags":{},"startTime":1764107515988,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":223,"timestamp":474870903968,"id":3541,"parentId":3534,"tags":{},"startTime":1764107515990,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":472,"timestamp":474870904199,"id":3542,"parentId":3534,"tags":{},"startTime":1764107515990,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":516,"timestamp":474870905187,"id":3543,"parentId":3534,"tags":{},"startTime":1764107515991,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":36,"timestamp":474870905703,"id":3544,"parentId":3534,"tags":{},"startTime":1764107515992,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":21,"timestamp":474870905736,"id":3545,"parentId":3534,"tags":{},"startTime":1764107515992,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":79,"timestamp":474870905759,"id":3546,"parentId":3534,"tags":{},"startTime":1764107515992,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":6324,"timestamp":474870900342,"id":3534,"parentId":3500,"tags":{},"startTime":1764107515987,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":29900,"timestamp":474870878461,"id":3500,"parentId":3462,"tags":{"name":"server"},"startTime":1764107515965,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1126,"timestamp":474870908375,"id":3547,"parentId":3462,"tags":{},"startTime":1764107515995,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":74183,"timestamp":474870835826,"id":3462,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764107515922,"traceId":"e274ac96b05c42d4"}] +[{"name":"handle-request","duration":9253,"timestamp":474870915442,"id":3548,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107516002,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474870924714,"id":3551,"parentId":3548,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"566624256","memory.heapUsed":"199776848","memory.heapTotal":"259325952"},"startTime":1764107516011,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":10774,"timestamp":474870915624,"id":3549,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","isTurbopack":false},"startTime":1764107516002,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474870926412,"id":3552,"parentId":3549,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","memory.rss":"566624256","memory.heapUsed":"199995672","memory.heapTotal":"259325952"},"startTime":1764107516013,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":12627,"timestamp":474870915655,"id":3550,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107516002,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474870928296,"id":3553,"parentId":3550,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"566624256","memory.heapUsed":"200073784","memory.heapTotal":"259325952"},"startTime":1764107516015,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5799,"timestamp":474888459690,"id":3560,"parentId":3557,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107533546,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5807,"timestamp":474888459695,"id":3561,"parentId":3557,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107533546,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5809,"timestamp":474888459697,"id":3562,"parentId":3557,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107533546,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6351,"timestamp":474888459654,"id":3558,"parentId":3557,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107533546,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1340,"timestamp":474888465108,"id":3565,"parentId":3564,"tags":{},"startTime":1764107533551,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1405,"timestamp":474888465046,"id":3564,"parentId":3563,"tags":{},"startTime":1764107533551,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":2103,"timestamp":474888464865,"id":3563,"parentId":3556,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"rsc"},"startTime":1764107533551,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8538,"timestamp":474888459686,"id":3559,"parentId":3557,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107533546,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2102,"timestamp":474888470019,"id":3583,"parentId":3582,"tags":{},"startTime":1764107533556,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2152,"timestamp":474888469971,"id":3582,"parentId":3581,"tags":{},"startTime":1764107533556,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":4470,"timestamp":474888469883,"id":3581,"parentId":3556,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"ssr"},"startTime":1764107533556,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":21576,"timestamp":474888458473,"id":3557,"parentId":3556,"tags":{},"startTime":1764107533545,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1129,"timestamp":474888481206,"id":3585,"parentId":3584,"tags":{},"startTime":1764107533567,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":474888482343,"id":3587,"parentId":3584,"tags":{},"startTime":1764107533569,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1252,"timestamp":474888482353,"id":3588,"parentId":3584,"tags":{},"startTime":1764107533569,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":474888483614,"id":3589,"parentId":3584,"tags":{},"startTime":1764107533570,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":474888483624,"id":3590,"parentId":3584,"tags":{},"startTime":1764107533570,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1454,"timestamp":474888482340,"id":3586,"parentId":3584,"tags":{},"startTime":1764107533569,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":216,"timestamp":474888484309,"id":3591,"parentId":3584,"tags":{},"startTime":1764107533571,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":383,"timestamp":474888484529,"id":3592,"parentId":3584,"tags":{},"startTime":1764107533571,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":507,"timestamp":474888485313,"id":3593,"parentId":3584,"tags":{},"startTime":1764107533572,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":37,"timestamp":474888485820,"id":3594,"parentId":3584,"tags":{},"startTime":1764107533572,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":26,"timestamp":474888485854,"id":3595,"parentId":3584,"tags":{},"startTime":1764107533572,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":90,"timestamp":474888485882,"id":3596,"parentId":3584,"tags":{},"startTime":1764107533572,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":5993,"timestamp":474888480976,"id":3584,"parentId":3556,"tags":{},"startTime":1764107533567,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":30428,"timestamp":474888458238,"id":3556,"parentId":3554,"tags":{"name":"server"},"startTime":1764107533544,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1231,"timestamp":474888488683,"id":3597,"parentId":3554,"tags":{},"startTime":1764107533575,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":39447,"timestamp":474888450662,"id":3554,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764107533537,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2104,"timestamp":474888494593,"id":3607,"parentId":3599,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107533581,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2127,"timestamp":474888494595,"id":3608,"parentId":3599,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107533581,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2465,"timestamp":474888494550,"id":3600,"parentId":3599,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107533581,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3149,"timestamp":474888494591,"id":3606,"parentId":3599,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107533581,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4445,"timestamp":474888494582,"id":3602,"parentId":3599,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107533581,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4528,"timestamp":474888494587,"id":3604,"parentId":3599,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107533581,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4561,"timestamp":474888494574,"id":3601,"parentId":3599,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107533581,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":1114,"timestamp":474888498028,"id":3614,"parentId":3613,"tags":{},"startTime":1764107533584,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":4111,"timestamp":474888496149,"id":3612,"parentId":3611,"tags":{},"startTime":1764107533582,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":4162,"timestamp":474888496100,"id":3611,"parentId":3610,"tags":{},"startTime":1764107533582,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":6628,"timestamp":474888496025,"id":3610,"parentId":3598,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx","layer":"app-pages-browser"},"startTime":1764107533582,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":12601,"timestamp":474888499178,"id":3616,"parentId":3615,"tags":{},"startTime":1764107533585,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":12683,"timestamp":474888499164,"id":3615,"parentId":3613,"tags":{},"startTime":1764107533585,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":1562,"timestamp":474888511858,"id":3617,"parentId":3613,"tags":{"astUsed":"true"},"startTime":1764107533598,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":15918,"timestamp":474888497931,"id":3613,"parentId":3609,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107533584,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":19281,"timestamp":474888494589,"id":3605,"parentId":3599,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107533581,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":19029,"timestamp":474888495885,"id":3609,"parentId":3598,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107533582,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":7,"timestamp":474888514973,"id":3618,"parentId":3609,"tags":{},"startTime":1764107533601,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":20412,"timestamp":474888494585,"id":3603,"parentId":3599,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107533581,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":24030,"timestamp":474888490973,"id":3599,"parentId":3598,"tags":{},"startTime":1764107533577,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":515,"timestamp":474888515704,"id":3620,"parentId":3619,"tags":{},"startTime":1764107533602,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":474888516226,"id":3622,"parentId":3619,"tags":{},"startTime":1764107533602,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":19,"timestamp":474888516233,"id":3623,"parentId":3619,"tags":{},"startTime":1764107533602,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":474888516257,"id":3624,"parentId":3619,"tags":{},"startTime":1764107533602,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":474888516266,"id":3625,"parentId":3619,"tags":{},"startTime":1764107533602,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":196,"timestamp":474888516224,"id":3621,"parentId":3619,"tags":{},"startTime":1764107533602,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":166,"timestamp":474888516802,"id":3626,"parentId":3619,"tags":{},"startTime":1764107533603,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":423,"timestamp":474888516973,"id":3627,"parentId":3619,"tags":{},"startTime":1764107533603,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1128,"timestamp":474888517745,"id":3628,"parentId":3619,"tags":{},"startTime":1764107533604,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":60,"timestamp":474888518873,"id":3629,"parentId":3619,"tags":{},"startTime":1764107533605,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":27,"timestamp":474888518929,"id":3630,"parentId":3619,"tags":{},"startTime":1764107533605,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1027,"timestamp":474888518958,"id":3631,"parentId":3619,"tags":{},"startTime":1764107533605,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":22,"timestamp":474888520307,"id":3633,"parentId":3598,"tags":{},"startTime":1764107533607,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":51,"timestamp":474888520281,"id":3632,"parentId":3598,"tags":{},"startTime":1764107533606,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":5528,"timestamp":474888515470,"id":3619,"parentId":3598,"tags":{},"startTime":1764107533602,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":30226,"timestamp":474888490788,"id":3598,"parentId":3555,"tags":{"name":"client"},"startTime":1764107533577,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":3414,"timestamp":474888521025,"id":3634,"parentId":3555,"tags":{},"startTime":1764107533607,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":74257,"timestamp":474888450735,"id":3555,"parentId":3,"tags":{"trigger":"app/gunbuilder/page.tsx"},"startTime":1764107533537,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":2,"timestamp":474888525787,"id":3635,"parentId":3,"tags":{},"startTime":1764107533612,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":1,"timestamp":474888526809,"id":3637,"parentId":3,"tags":{},"startTime":1764107533613,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474888527048,"id":3638,"parentId":3,"tags":{},"startTime":1764107533613,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":78000,"timestamp":474888450515,"id":3639,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107533619,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":8327,"timestamp":474888526583,"id":3636,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107533613,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474888534929,"id":3642,"parentId":3636,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"566788096","memory.heapUsed":"210441600","memory.heapTotal":"259751936"},"startTime":1764107533621,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":89000,"timestamp":474888450382,"id":3643,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107533631,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":91000,"timestamp":474888450703,"id":3644,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder/build","isPageHidden":true},"startTime":1764107533631,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":11998,"timestamp":474888532850,"id":3640,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","isTurbopack":false},"startTime":1764107533619,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474888544873,"id":3645,"parentId":3640,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","memory.rss":"567099392","memory.heapUsed":"192952240","memory.heapTotal":"256704512"},"startTime":1764107533631,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":11164,"timestamp":474888533812,"id":3641,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107533620,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474888544981,"id":3646,"parentId":3641,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"567099392","memory.heapUsed":"192970376","memory.heapTotal":"256704512"},"startTime":1764107533631,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":15911,"timestamp":474890882414,"id":3647,"tags":{"url":"/gunbuilder/lower?_rsc=1acsq","isTurbopack":false},"startTime":1764107535969,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474890898367,"id":3648,"parentId":3647,"tags":{"url":"/gunbuilder/lower?_rsc=1acsq","memory.rss":"567345152","memory.heapUsed":"194933296","memory.heapTotal":"256901120"},"startTime":1764107535985,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4208,"timestamp":474890904073,"id":3649,"tags":{"url":"/gunbuilder/lower?_rsc=1o5jb","isTurbopack":false},"startTime":1764107535990,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474890908300,"id":3650,"parentId":3649,"tags":{"url":"/gunbuilder/lower?_rsc=1o5jb","memory.rss":"567345152","memory.heapUsed":"195786448","memory.heapTotal":"256901120"},"startTime":1764107535995,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":19637,"timestamp":474892326216,"id":3651,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=uiigs","isTurbopack":false},"startTime":1764107537412,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474892345902,"id":3652,"parentId":3651,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=uiigs","memory.rss":"567345152","memory.heapUsed":"196553544","memory.heapTotal":"256901120"},"startTime":1764107537432,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5528,"timestamp":474892349627,"id":3653,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=1kfpz","isTurbopack":false},"startTime":1764107537436,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474892355178,"id":3654,"parentId":3653,"tags":{"url":"/gunbuilder?select=lower%3Alower-aero-m4e1&_rsc=1kfpz","memory.rss":"567345152","memory.heapUsed":"197188504","memory.heapTotal":"256901120"},"startTime":1764107537441,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7190,"timestamp":474892383356,"id":3655,"tags":{"url":"/gunbuilder?_rsc=x5p1f","isTurbopack":false},"startTime":1764107537470,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":474892390585,"id":3656,"parentId":3655,"tags":{"url":"/gunbuilder?_rsc=x5p1f","memory.rss":"567345152","memory.heapUsed":"197820040","memory.heapTotal":"256901120"},"startTime":1764107537477,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6459,"timestamp":474975425822,"id":3662,"parentId":3660,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107620512,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6467,"timestamp":474975425828,"id":3663,"parentId":3660,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107620512,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6475,"timestamp":474975425831,"id":3665,"parentId":3660,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107620512,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6739,"timestamp":474975425829,"id":3664,"parentId":3660,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107620512,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":992,"timestamp":474975431933,"id":3668,"parentId":3667,"tags":{},"startTime":1764107620518,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1070,"timestamp":474975431856,"id":3667,"parentId":3666,"tags":{},"startTime":1764107620518,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":2368,"timestamp":474975431654,"id":3666,"parentId":3659,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx","layer":"rsc"},"startTime":1764107620518,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":29877,"timestamp":474975425784,"id":3661,"parentId":3660,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107620512,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1650,"timestamp":474975457963,"id":3686,"parentId":3685,"tags":{},"startTime":1764107620544,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1732,"timestamp":474975457884,"id":3685,"parentId":3684,"tags":{},"startTime":1764107620544,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":3901,"timestamp":474975457736,"id":3684,"parentId":3659,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx","layer":"ssr"},"startTime":1764107620544,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":41031,"timestamp":474975424114,"id":3660,"parentId":3659,"tags":{},"startTime":1764107620510,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1126,"timestamp":474975466569,"id":3688,"parentId":3687,"tags":{},"startTime":1764107620553,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":474975467703,"id":3690,"parentId":3687,"tags":{},"startTime":1764107620554,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1005,"timestamp":474975467711,"id":3691,"parentId":3687,"tags":{},"startTime":1764107620554,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":474975468725,"id":3692,"parentId":3687,"tags":{},"startTime":1764107620555,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":3,"timestamp":474975468740,"id":3693,"parentId":3687,"tags":{},"startTime":1764107620555,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1274,"timestamp":474975467701,"id":3689,"parentId":3687,"tags":{},"startTime":1764107620554,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":184,"timestamp":474975469408,"id":3694,"parentId":3687,"tags":{},"startTime":1764107620556,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":889,"timestamp":474975469596,"id":3695,"parentId":3687,"tags":{},"startTime":1764107620556,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":443,"timestamp":474975470951,"id":3696,"parentId":3687,"tags":{},"startTime":1764107620557,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":43,"timestamp":474975471394,"id":3697,"parentId":3687,"tags":{},"startTime":1764107620557,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":22,"timestamp":474975471433,"id":3698,"parentId":3687,"tags":{},"startTime":1764107620558,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":937,"timestamp":474975471458,"id":3699,"parentId":3687,"tags":{},"startTime":1764107620558,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7177,"timestamp":474975465977,"id":3687,"parentId":3659,"tags":{},"startTime":1764107620552,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":50700,"timestamp":474975423961,"id":3659,"parentId":3657,"tags":{"name":"server"},"startTime":1764107620510,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1413,"timestamp":474975474671,"id":3700,"parentId":3657,"tags":{},"startTime":1764107620561,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":58327,"timestamp":474975417954,"id":3657,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/page.tsx"},"startTime":1764107620504,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2025,"timestamp":474975480324,"id":3710,"parentId":3702,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107620566,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2047,"timestamp":474975480326,"id":3711,"parentId":3702,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107620566,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2335,"timestamp":474975480279,"id":3703,"parentId":3702,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107620566,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2932,"timestamp":474975480321,"id":3708,"parentId":3702,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107620566,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2709,"timestamp":474975481888,"id":3715,"parentId":3714,"tags":{},"startTime":1764107620568,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2771,"timestamp":474975481828,"id":3714,"parentId":3713,"tags":{},"startTime":1764107620568,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":5011,"timestamp":474975481758,"id":3713,"parentId":3701,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx","layer":"app-pages-browser"},"startTime":1764107620568,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6776,"timestamp":474975480311,"id":3705,"parentId":3702,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107620566,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6873,"timestamp":474975480319,"id":3707,"parentId":3702,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107620566,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":3816,"timestamp":474975483382,"id":3717,"parentId":3716,"tags":{},"startTime":1764107620569,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":9106,"timestamp":474975480306,"id":3704,"parentId":3702,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107620566,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":14548,"timestamp":474975487214,"id":3719,"parentId":3718,"tags":{},"startTime":1764107620573,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":14784,"timestamp":474975487208,"id":3718,"parentId":3716,"tags":{},"startTime":1764107620573,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2646,"timestamp":474975502005,"id":3720,"parentId":3716,"tags":{"astUsed":"true"},"startTime":1764107620588,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":21863,"timestamp":474975483331,"id":3716,"parentId":3712,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107620569,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":33325,"timestamp":474975481591,"id":3712,"parentId":3701,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107620568,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":27,"timestamp":474975515617,"id":3721,"parentId":3712,"tags":{},"startTime":1764107620602,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":35349,"timestamp":474975480315,"id":3706,"parentId":3702,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107620566,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":41162,"timestamp":474975480323,"id":3709,"parentId":3702,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107620566,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":44580,"timestamp":474975476920,"id":3702,"parentId":3701,"tags":{},"startTime":1764107620563,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":754,"timestamp":474975522478,"id":3723,"parentId":3722,"tags":{},"startTime":1764107620609,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":3,"timestamp":474975523244,"id":3725,"parentId":3722,"tags":{},"startTime":1764107620609,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":23,"timestamp":474975523284,"id":3726,"parentId":3722,"tags":{},"startTime":1764107620609,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":5,"timestamp":474975523317,"id":3727,"parentId":3722,"tags":{},"startTime":1764107620609,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":3,"timestamp":474975523332,"id":3728,"parentId":3722,"tags":{},"startTime":1764107620609,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":333,"timestamp":474975523240,"id":3724,"parentId":3722,"tags":{},"startTime":1764107620609,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":223,"timestamp":474975524009,"id":3729,"parentId":3722,"tags":{},"startTime":1764107620610,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":830,"timestamp":474975524237,"id":3730,"parentId":3722,"tags":{},"startTime":1764107620610,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1468,"timestamp":474975526057,"id":3731,"parentId":3722,"tags":{},"startTime":1764107620612,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":72,"timestamp":474975527525,"id":3732,"parentId":3722,"tags":{},"startTime":1764107620614,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":25,"timestamp":474975527593,"id":3733,"parentId":3722,"tags":{},"startTime":1764107620614,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":2377,"timestamp":474975527620,"id":3734,"parentId":3722,"tags":{},"startTime":1764107620614,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":63,"timestamp":474975530541,"id":3736,"parentId":3701,"tags":{},"startTime":1764107620617,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":97,"timestamp":474975530512,"id":3735,"parentId":3701,"tags":{},"startTime":1764107620617,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":9328,"timestamp":474975522203,"id":3722,"parentId":3701,"tags":{},"startTime":1764107620608,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":54755,"timestamp":474975476793,"id":3701,"parentId":3658,"tags":{"name":"client"},"startTime":1764107620563,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":13095,"timestamp":474975531557,"id":3737,"parentId":3658,"tags":{},"startTime":1764107620618,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":127563,"timestamp":474975417997,"id":3658,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/page.tsx"},"startTime":1764107620504,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":2,"timestamp":474975547054,"id":3738,"parentId":3,"tags":{},"startTime":1764107620633,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":1,"timestamp":474975547181,"id":3739,"parentId":3,"tags":{},"startTime":1764107620633,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474975547201,"id":3740,"parentId":3,"tags":{},"startTime":1764107620633,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":134000,"timestamp":474975417719,"id":3744,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107620639,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":137000,"timestamp":474975418678,"id":3745,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/[categoryId]/page.tsx"],"page":"/gunbuilder/build","isPageHidden":true},"startTime":1764107620653,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":21690,"timestamp":474975547838,"id":3741,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107620634,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474975569541,"id":3746,"parentId":3741,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"586743808","memory.heapUsed":"199723304","memory.heapTotal":"226295808"},"startTime":1764107620656,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":155000,"timestamp":474975419373,"id":3747,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/[categoryId]/page.tsx"],"page":"/gunbuilder/lower","isPageHidden":false},"startTime":1764107620660,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":26417,"timestamp":474975548151,"id":3742,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","isTurbopack":false},"startTime":1764107620634,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474975574581,"id":3748,"parentId":3742,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","memory.rss":"586940416","memory.heapUsed":"201196600","memory.heapTotal":"226754560"},"startTime":1764107620661,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":26527,"timestamp":474975549374,"id":3743,"tags":{"url":"/gunbuilder/lower?_rsc=441g4","isTurbopack":false},"startTime":1764107620635,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474975575908,"id":3749,"parentId":3743,"tags":{"url":"/gunbuilder/lower?_rsc=441g4","memory.rss":"586940416","memory.heapUsed":"201225328","memory.heapTotal":"226754560"},"startTime":1764107620662,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4741,"timestamp":474989191413,"id":3755,"parentId":3753,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107634277,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4747,"timestamp":474989191416,"id":3756,"parentId":3753,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107634278,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4755,"timestamp":474989191419,"id":3758,"parentId":3753,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107634278,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4925,"timestamp":474989191418,"id":3757,"parentId":3753,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107634278,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1463,"timestamp":474989195859,"id":3761,"parentId":3760,"tags":{},"startTime":1764107634282,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1541,"timestamp":474989195781,"id":3760,"parentId":3759,"tags":{},"startTime":1764107634282,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":2411,"timestamp":474989195630,"id":3759,"parentId":3752,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx","layer":"rsc"},"startTime":1764107634282,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7894,"timestamp":474989191388,"id":3754,"parentId":3753,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107634277,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1732,"timestamp":474989200891,"id":3779,"parentId":3778,"tags":{},"startTime":1764107634287,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1789,"timestamp":474989200837,"id":3778,"parentId":3777,"tags":{},"startTime":1764107634287,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":5784,"timestamp":474989200722,"id":3777,"parentId":3752,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx","layer":"ssr"},"startTime":1764107634287,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":18138,"timestamp":474989190588,"id":3753,"parentId":3752,"tags":{},"startTime":1764107634277,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1241,"timestamp":474989209708,"id":3781,"parentId":3780,"tags":{},"startTime":1764107634296,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":474989210957,"id":3783,"parentId":3780,"tags":{},"startTime":1764107634297,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1148,"timestamp":474989210967,"id":3784,"parentId":3780,"tags":{},"startTime":1764107634297,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":474989212127,"id":3785,"parentId":3780,"tags":{},"startTime":1764107634298,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":474989212136,"id":3786,"parentId":3780,"tags":{},"startTime":1764107634298,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1379,"timestamp":474989210954,"id":3782,"parentId":3780,"tags":{},"startTime":1764107634297,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":173,"timestamp":474989212738,"id":3787,"parentId":3780,"tags":{},"startTime":1764107634299,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":520,"timestamp":474989212914,"id":3788,"parentId":3780,"tags":{},"startTime":1764107634299,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":365,"timestamp":474989213778,"id":3789,"parentId":3780,"tags":{},"startTime":1764107634300,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":29,"timestamp":474989214143,"id":3790,"parentId":3780,"tags":{},"startTime":1764107634300,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":20,"timestamp":474989214170,"id":3791,"parentId":3780,"tags":{},"startTime":1764107634300,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1802,"timestamp":474989214193,"id":3792,"parentId":3780,"tags":{},"startTime":1764107634300,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7716,"timestamp":474989209512,"id":3780,"parentId":3752,"tags":{},"startTime":1764107634296,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":28695,"timestamp":474989190437,"id":3752,"parentId":3750,"tags":{"name":"server"},"startTime":1764107634277,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1496,"timestamp":474989219157,"id":3793,"parentId":3750,"tags":{},"startTime":1764107634305,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":37300,"timestamp":474989183554,"id":3750,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/page.tsx"},"startTime":1764107634270,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2561,"timestamp":474989225434,"id":3803,"parentId":3795,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107634312,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2585,"timestamp":474989225436,"id":3804,"parentId":3795,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107634312,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2881,"timestamp":474989225388,"id":3796,"parentId":3795,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107634311,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3563,"timestamp":474989225429,"id":3801,"parentId":3795,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107634312,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2289,"timestamp":474989227367,"id":3808,"parentId":3807,"tags":{},"startTime":1764107634313,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2357,"timestamp":474989227300,"id":3807,"parentId":3806,"tags":{},"startTime":1764107634313,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":6173,"timestamp":474989227213,"id":3806,"parentId":3794,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx","layer":"app-pages-browser"},"startTime":1764107634313,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8436,"timestamp":474989225420,"id":3798,"parentId":3795,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107634312,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":9138,"timestamp":474989225427,"id":3800,"parentId":3795,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107634312,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":9135,"timestamp":474989225432,"id":3802,"parentId":3795,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107634312,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":5423,"timestamp":474989229151,"id":3810,"parentId":3809,"tags":{},"startTime":1764107634315,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":11312,"timestamp":474989225415,"id":3797,"parentId":3795,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107634312,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":21543,"timestamp":474989234597,"id":3812,"parentId":3811,"tags":{},"startTime":1764107634321,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":21785,"timestamp":474989234586,"id":3811,"parentId":3809,"tags":{},"startTime":1764107634321,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":1671,"timestamp":474989256390,"id":3813,"parentId":3809,"tags":{"astUsed":"true"},"startTime":1764107634342,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":29611,"timestamp":474989229094,"id":3809,"parentId":3805,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107634315,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":33180,"timestamp":474989227002,"id":3805,"parentId":3794,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107634313,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":9,"timestamp":474989260257,"id":3814,"parentId":3805,"tags":{},"startTime":1764107634346,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":34861,"timestamp":474989225425,"id":3799,"parentId":3795,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107634312,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":38546,"timestamp":474989221761,"id":3795,"parentId":3794,"tags":{},"startTime":1764107634308,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":652,"timestamp":474989261088,"id":3816,"parentId":3815,"tags":{},"startTime":1764107634347,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":474989261745,"id":3818,"parentId":3815,"tags":{},"startTime":1764107634348,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":17,"timestamp":474989261751,"id":3819,"parentId":3815,"tags":{},"startTime":1764107634348,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":474989261772,"id":3820,"parentId":3815,"tags":{},"startTime":1764107634348,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":474989261793,"id":3821,"parentId":3815,"tags":{},"startTime":1764107634348,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":307,"timestamp":474989261743,"id":3817,"parentId":3815,"tags":{},"startTime":1764107634348,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":135,"timestamp":474989262408,"id":3822,"parentId":3815,"tags":{},"startTime":1764107634348,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":581,"timestamp":474989262546,"id":3823,"parentId":3815,"tags":{},"startTime":1764107634349,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1180,"timestamp":474989263508,"id":3824,"parentId":3815,"tags":{},"startTime":1764107634350,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":45,"timestamp":474989264688,"id":3825,"parentId":3815,"tags":{},"startTime":1764107634351,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":21,"timestamp":474989264729,"id":3826,"parentId":3815,"tags":{},"startTime":1764107634351,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1799,"timestamp":474989264752,"id":3827,"parentId":3815,"tags":{},"startTime":1764107634351,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":49,"timestamp":474989266947,"id":3829,"parentId":3794,"tags":{},"startTime":1764107634353,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":87,"timestamp":474989266913,"id":3828,"parentId":3794,"tags":{},"startTime":1764107634353,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":6893,"timestamp":474989260845,"id":3815,"parentId":3794,"tags":{},"startTime":1764107634347,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":46170,"timestamp":474989221583,"id":3794,"parentId":3751,"tags":{"name":"client"},"startTime":1764107634308,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2588,"timestamp":474989267762,"id":3830,"parentId":3751,"tags":{},"startTime":1764107634354,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":87303,"timestamp":474989183598,"id":3751,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/page.tsx"},"startTime":1764107634270,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":1,"timestamp":474989271579,"id":3831,"parentId":3,"tags":{},"startTime":1764107634358,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":1,"timestamp":474989272762,"id":3833,"parentId":3,"tags":{},"startTime":1764107634359,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474989272780,"id":3834,"parentId":3,"tags":{},"startTime":1764107634359,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":92000,"timestamp":474989183767,"id":3837,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107634366,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":9491,"timestamp":474989272055,"id":3832,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107634358,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474989281557,"id":3838,"parentId":3832,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"580059136","memory.heapUsed":"222366600","memory.heapTotal":"244203520"},"startTime":1764107634368,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":11627,"timestamp":474989274200,"id":3835,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","isTurbopack":false},"startTime":1764107634360,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474989285849,"id":3839,"parentId":3835,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","memory.rss":"580304896","memory.heapUsed":"223710032","memory.heapTotal":"245235712"},"startTime":1764107634372,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":102000,"timestamp":474989184051,"id":3840,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/[categoryId]/page.tsx"],"page":"/gunbuilder/build","isPageHidden":true},"startTime":1764107634375,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":14649,"timestamp":474989275596,"id":3836,"tags":{"url":"/gunbuilder/lower?_rsc=z5mrr","isTurbopack":false},"startTime":1764107634362,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474989290258,"id":3841,"parentId":3836,"tags":{"url":"/gunbuilder/lower?_rsc=z5mrr","memory.rss":"580517888","memory.heapUsed":"225014400","memory.heapTotal":"246235136"},"startTime":1764107634376,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":111000,"timestamp":474989183605,"id":3842,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/[categoryId]/page.tsx"],"page":"/gunbuilder/lower","isPageHidden":true},"startTime":1764107634381,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":10287,"timestamp":475003547408,"id":3843,"tags":{"url":"/gunbuilder?_rsc=x5p1f","isTurbopack":false},"startTime":1764107648633,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":2,"timestamp":475003557766,"id":3844,"parentId":3843,"tags":{"url":"/gunbuilder?_rsc=x5p1f","memory.rss":"573882368","memory.heapUsed":"226128160","memory.heapTotal":"247283712"},"startTime":1764107648644,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6235,"timestamp":475004853971,"id":3856,"parentId":3848,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6257,"timestamp":475004853972,"id":3857,"parentId":3848,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6626,"timestamp":475004853900,"id":3849,"parentId":3848,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7331,"timestamp":475004853967,"id":3854,"parentId":3848,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8270,"timestamp":475004853962,"id":3851,"parentId":3848,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2840,"timestamp":475004859506,"id":3861,"parentId":3860,"tags":{},"startTime":1764107649946,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2918,"timestamp":475004859429,"id":3860,"parentId":3859,"tags":{},"startTime":1764107649945,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":7008,"timestamp":475004859321,"id":3859,"parentId":3847,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx","layer":"app-pages-browser"},"startTime":1764107649945,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12686,"timestamp":475004853965,"id":3853,"parentId":3848,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":5167,"timestamp":475004861553,"id":3863,"parentId":3862,"tags":{},"startTime":1764107649948,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":14725,"timestamp":475004853969,"id":3855,"parentId":3848,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":14878,"timestamp":475004853958,"id":3850,"parentId":3848,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":10233,"timestamp":475004866743,"id":3865,"parentId":3864,"tags":{},"startTime":1764107649953,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":10351,"timestamp":475004866733,"id":3864,"parentId":3862,"tags":{},"startTime":1764107649953,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":1627,"timestamp":475004877100,"id":3866,"parentId":3862,"tags":{"astUsed":"true"},"startTime":1764107649963,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":17956,"timestamp":475004861433,"id":3862,"parentId":3858,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107649948,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":22026,"timestamp":475004859026,"id":3858,"parentId":3847,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107649945,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":13,"timestamp":475004881146,"id":3867,"parentId":3858,"tags":{},"startTime":1764107649967,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":27218,"timestamp":475004853963,"id":3852,"parentId":3848,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":27536,"timestamp":475004853658,"id":3848,"parentId":3847,"tags":{},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":872,"timestamp":475004882140,"id":3869,"parentId":3868,"tags":{},"startTime":1764107649968,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":475004883022,"id":3871,"parentId":3868,"tags":{},"startTime":1764107649969,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":21,"timestamp":475004883030,"id":3872,"parentId":3868,"tags":{},"startTime":1764107649969,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":475004883058,"id":3873,"parentId":3868,"tags":{},"startTime":1764107649969,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":475004883067,"id":3874,"parentId":3868,"tags":{},"startTime":1764107649969,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":210,"timestamp":475004883019,"id":3870,"parentId":3868,"tags":{},"startTime":1764107649969,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":212,"timestamp":475004883684,"id":3875,"parentId":3868,"tags":{},"startTime":1764107649970,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":465,"timestamp":475004883900,"id":3876,"parentId":3868,"tags":{},"startTime":1764107649970,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1640,"timestamp":475004884907,"id":3877,"parentId":3868,"tags":{},"startTime":1764107649971,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":67,"timestamp":475004886547,"id":3878,"parentId":3868,"tags":{},"startTime":1764107649973,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":27,"timestamp":475004886608,"id":3879,"parentId":3868,"tags":{},"startTime":1764107649973,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1415,"timestamp":475004886638,"id":3880,"parentId":3868,"tags":{},"startTime":1764107649973,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":30,"timestamp":475004888457,"id":3882,"parentId":3847,"tags":{},"startTime":1764107649975,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":68,"timestamp":475004888423,"id":3881,"parentId":3847,"tags":{},"startTime":1764107649974,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7371,"timestamp":475004881852,"id":3868,"parentId":3847,"tags":{},"startTime":1764107649968,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":35806,"timestamp":475004853436,"id":3847,"parentId":3845,"tags":{"name":"client"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2147,"timestamp":475004889250,"id":3883,"parentId":3845,"tags":{},"startTime":1764107649975,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":45699,"timestamp":475004846103,"id":3845,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/page.tsx"},"startTime":1764107649932,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":10,"timestamp":475004896037,"id":3886,"parentId":3,"tags":{},"startTime":1764107649982,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475004896091,"id":3887,"parentId":3,"tags":{},"startTime":1764107649982,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475004896103,"id":3888,"parentId":3,"tags":{},"startTime":1764107649982,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":55000,"timestamp":475004846944,"id":3894,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107649988,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":55000,"timestamp":475004847070,"id":3895,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder/build","isPageHidden":true},"startTime":1764107649988,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":55000,"timestamp":475004846892,"id":3896,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":false},"startTime":1764107649989,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5765,"timestamp":475004897769,"id":3891,"parentId":3885,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107649984,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5771,"timestamp":475004897771,"id":3892,"parentId":3885,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107649984,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5950,"timestamp":475004897773,"id":3893,"parentId":3885,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107649984,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6125,"timestamp":475004897741,"id":3889,"parentId":3885,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107649984,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":826,"timestamp":475004903184,"id":3899,"parentId":3898,"tags":{},"startTime":1764107649989,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":891,"timestamp":475004903119,"id":3898,"parentId":3897,"tags":{},"startTime":1764107649989,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":1552,"timestamp":475004902988,"id":3897,"parentId":3884,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx","layer":"rsc"},"startTime":1764107649989,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8072,"timestamp":475004897767,"id":3890,"parentId":3885,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107649984,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1952,"timestamp":475004907673,"id":3917,"parentId":3916,"tags":{},"startTime":1764107649994,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2026,"timestamp":475004907603,"id":3916,"parentId":3915,"tags":{},"startTime":1764107649994,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":4276,"timestamp":475004907480,"id":3915,"parentId":3884,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx","layer":"ssr"},"startTime":1764107649994,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":20824,"timestamp":475004893300,"id":3885,"parentId":3884,"tags":{},"startTime":1764107649979,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1177,"timestamp":475004915034,"id":3919,"parentId":3918,"tags":{},"startTime":1764107650001,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":475004916217,"id":3921,"parentId":3918,"tags":{},"startTime":1764107650002,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":998,"timestamp":475004916225,"id":3922,"parentId":3918,"tags":{},"startTime":1764107650002,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":475004917229,"id":3923,"parentId":3918,"tags":{},"startTime":1764107650003,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":475004917236,"id":3924,"parentId":3918,"tags":{},"startTime":1764107650003,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1201,"timestamp":475004916215,"id":3920,"parentId":3918,"tags":{},"startTime":1764107650002,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":150,"timestamp":475004917793,"id":3925,"parentId":3918,"tags":{},"startTime":1764107650004,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":284,"timestamp":475004917947,"id":3926,"parentId":3918,"tags":{},"startTime":1764107650004,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":364,"timestamp":475004918530,"id":3927,"parentId":3918,"tags":{},"startTime":1764107650005,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":25,"timestamp":475004918894,"id":3928,"parentId":3918,"tags":{},"startTime":1764107650005,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":16,"timestamp":475004918917,"id":3929,"parentId":3918,"tags":{},"startTime":1764107650005,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":74,"timestamp":475004918936,"id":3930,"parentId":3918,"tags":{},"startTime":1764107650005,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":4867,"timestamp":475004914861,"id":3918,"parentId":3884,"tags":{},"startTime":1764107650001,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":28068,"timestamp":475004893127,"id":3884,"parentId":3846,"tags":{"name":"server"},"startTime":1764107649979,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1103,"timestamp":475004921204,"id":3931,"parentId":3846,"tags":{},"startTime":1764107650007,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":76221,"timestamp":475004846430,"id":3846,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/page.tsx"},"startTime":1764107649932,"traceId":"e274ac96b05c42d4"}] +[{"name":"handle-request","duration":9575,"timestamp":475004928275,"id":3933,"tags":{"url":"/gunbuilder?_rsc=9gfev","isTurbopack":false},"startTime":1764107650014,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475004937872,"id":3935,"parentId":3933,"tags":{"url":"/gunbuilder?_rsc=9gfev","memory.rss":"589332480","memory.heapUsed":"217720280","memory.heapTotal":"275857408"},"startTime":1764107650024,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":9836,"timestamp":475004928095,"id":3932,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107650014,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475004937935,"id":3936,"parentId":3932,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"589332480","memory.heapUsed":"217730408","memory.heapTotal":"275857408"},"startTime":1764107650024,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":11005,"timestamp":475004928305,"id":3934,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","isTurbopack":false},"startTime":1764107650014,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475004939326,"id":3937,"parentId":3934,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","memory.rss":"589332480","memory.heapUsed":"217853816","memory.heapTotal":"275857408"},"startTime":1764107650025,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":12202,"timestamp":475037936813,"id":3938,"tags":{"url":"/gunbuilder/upper?_rsc=1acsq","isTurbopack":false},"startTime":1764107683023,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475037949058,"id":3939,"parentId":3938,"tags":{"url":"/gunbuilder/upper?_rsc=1acsq","memory.rss":"580812800","memory.heapUsed":"219680088","memory.heapTotal":"276070400"},"startTime":1764107683035,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6225,"timestamp":475037954450,"id":3940,"tags":{"url":"/gunbuilder/upper?_rsc=17gjd","isTurbopack":false},"startTime":1764107683040,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475037960698,"id":3941,"parentId":3940,"tags":{"url":"/gunbuilder/upper?_rsc=17gjd","memory.rss":"580829184","memory.heapUsed":"220517032","memory.heapTotal":"276070400"},"startTime":1764107683047,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5398,"timestamp":475042299259,"id":3942,"tags":{"url":"/gunbuilder?select=upper%3Aupper-aero-enhanced&_rsc=1d33p","isTurbopack":false},"startTime":1764107687385,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475042304695,"id":3943,"parentId":3942,"tags":{"url":"/gunbuilder?select=upper%3Aupper-aero-enhanced&_rsc=1d33p","memory.rss":"580845568","memory.heapUsed":"221160728","memory.heapTotal":"276070400"},"startTime":1764107687391,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4462,"timestamp":475042307574,"id":3944,"tags":{"url":"/gunbuilder?select=upper%3Aupper-aero-enhanced&_rsc=1fb4y","isTurbopack":false},"startTime":1764107687394,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475042312058,"id":3945,"parentId":3944,"tags":{"url":"/gunbuilder?select=upper%3Aupper-aero-enhanced&_rsc=1fb4y","memory.rss":"580845568","memory.heapUsed":"221797024","memory.heapTotal":"276070400"},"startTime":1764107687398,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4789,"timestamp":475042331773,"id":3946,"tags":{"url":"/gunbuilder?_rsc=x5p1f","isTurbopack":false},"startTime":1764107687418,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":475042336597,"id":3947,"parentId":3946,"tags":{"url":"/gunbuilder?_rsc=x5p1f","memory.rss":"580845568","memory.heapUsed":"222429608","memory.heapTotal":"276070400"},"startTime":1764107687423,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3423,"timestamp":475078230498,"id":3958,"parentId":3951,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3438,"timestamp":475078230499,"id":3959,"parentId":3951,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3455,"timestamp":475078230500,"id":3960,"parentId":3951,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4292,"timestamp":475078230454,"id":3952,"parentId":3951,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1275,"timestamp":475078234295,"id":3964,"parentId":3963,"tags":{},"startTime":1764107723320,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1351,"timestamp":475078234221,"id":3963,"parentId":3962,"tags":{},"startTime":1764107723320,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":4897,"timestamp":475078234132,"id":3962,"parentId":3950,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx","layer":"app-pages-browser"},"startTime":1764107723320,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":9221,"timestamp":475078230491,"id":3954,"parentId":3951,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":9561,"timestamp":475078230494,"id":3956,"parentId":3951,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":4664,"timestamp":475078235513,"id":3966,"parentId":3965,"tags":{},"startTime":1764107723321,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12017,"timestamp":475078230487,"id":3953,"parentId":3951,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":11936,"timestamp":475078240209,"id":3968,"parentId":3967,"tags":{},"startTime":1764107723326,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":12215,"timestamp":475078240188,"id":3967,"parentId":3965,"tags":{},"startTime":1764107723326,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2981,"timestamp":475078252414,"id":3969,"parentId":3965,"tags":{"astUsed":"true"},"startTime":1764107723338,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":21625,"timestamp":475078235459,"id":3965,"parentId":3961,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107723321,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":33639,"timestamp":475078233306,"id":3961,"parentId":3950,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107723319,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":12,"timestamp":475078267176,"id":3970,"parentId":3961,"tags":{},"startTime":1764107723353,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":36722,"timestamp":475078230493,"id":3955,"parentId":3951,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":40343,"timestamp":475078230496,"id":3957,"parentId":3951,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":40557,"timestamp":475078230294,"id":3951,"parentId":3950,"tags":{},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":821,"timestamp":475078271757,"id":3972,"parentId":3971,"tags":{},"startTime":1764107723358,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":3,"timestamp":475078272590,"id":3974,"parentId":3971,"tags":{},"startTime":1764107723359,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":43,"timestamp":475078272638,"id":3975,"parentId":3971,"tags":{},"startTime":1764107723359,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":5,"timestamp":475078272704,"id":3976,"parentId":3971,"tags":{},"startTime":1764107723359,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":3,"timestamp":475078272732,"id":3977,"parentId":3971,"tags":{},"startTime":1764107723359,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":497,"timestamp":475078272586,"id":3973,"parentId":3971,"tags":{},"startTime":1764107723359,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":260,"timestamp":475078273648,"id":3978,"parentId":3971,"tags":{},"startTime":1764107723360,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":724,"timestamp":475078273913,"id":3979,"parentId":3971,"tags":{},"startTime":1764107723360,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1990,"timestamp":475078275277,"id":3980,"parentId":3971,"tags":{},"startTime":1764107723361,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":111,"timestamp":475078277266,"id":3981,"parentId":3971,"tags":{},"startTime":1764107723363,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":29,"timestamp":475078277372,"id":3982,"parentId":3971,"tags":{},"startTime":1764107723363,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":2127,"timestamp":475078277404,"id":3983,"parentId":3971,"tags":{},"startTime":1764107723363,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":65,"timestamp":475078280150,"id":3985,"parentId":3950,"tags":{},"startTime":1764107723366,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":96,"timestamp":475078280120,"id":3984,"parentId":3950,"tags":{},"startTime":1764107723366,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":9703,"timestamp":475078271507,"id":3971,"parentId":3950,"tags":{},"startTime":1764107723357,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":51093,"timestamp":475078230129,"id":3950,"parentId":3948,"tags":{"name":"client"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":7566,"timestamp":475078281231,"id":3986,"parentId":3948,"tags":{},"startTime":1764107723367,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":66160,"timestamp":475078223151,"id":3948,"parentId":3,"tags":{"trigger":"components/CategoryColumn.tsx"},"startTime":1764107723309,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":4,"timestamp":475078290876,"id":3989,"parentId":3,"tags":{},"startTime":1764107723377,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475078290904,"id":3990,"parentId":3,"tags":{},"startTime":1764107723377,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475078290916,"id":3991,"parentId":3,"tags":{},"startTime":1764107723377,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":73000,"timestamp":475078222973,"id":3997,"parentId":3,"tags":{"updatedModules":["[project]/components/CategoryColumn.tsx"],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107723383,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7909,"timestamp":475078292543,"id":3993,"parentId":3988,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107723379,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7912,"timestamp":475078292546,"id":3994,"parentId":3988,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107723379,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7913,"timestamp":475078292547,"id":3995,"parentId":3988,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107723379,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8232,"timestamp":475078292549,"id":3996,"parentId":3988,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107723379,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8465,"timestamp":475078292518,"id":3992,"parentId":3988,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107723378,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":78000,"timestamp":475078224154,"id":4016,"parentId":3,"tags":{"updatedModules":["[project]/components/CategoryColumn.tsx"],"page":"/gunbuilder","isPageHidden":false},"startTime":1764107723389,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2067,"timestamp":475078303067,"id":4015,"parentId":4014,"tags":{},"startTime":1764107723389,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2127,"timestamp":475078303009,"id":4014,"parentId":4013,"tags":{},"startTime":1764107723389,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":3935,"timestamp":475078302845,"id":4013,"parentId":3987,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx","layer":"ssr"},"startTime":1764107723389,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":81000,"timestamp":475078224018,"id":4017,"parentId":3,"tags":{"updatedModules":["[project]/components/CategoryColumn.tsx"],"page":"/gunbuilder/build","isPageHidden":true},"startTime":1764107723393,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":26262,"timestamp":475078290297,"id":3988,"parentId":3987,"tags":{},"startTime":1764107723376,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1388,"timestamp":475078329476,"id":4019,"parentId":4018,"tags":{},"startTime":1764107723415,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":3,"timestamp":475078330881,"id":4021,"parentId":4018,"tags":{},"startTime":1764107723417,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1125,"timestamp":475078330958,"id":4022,"parentId":4018,"tags":{},"startTime":1764107723417,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":475078332100,"id":4023,"parentId":4018,"tags":{},"startTime":1764107723418,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":475078332113,"id":4024,"parentId":4018,"tags":{},"startTime":1764107723418,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1441,"timestamp":475078330876,"id":4020,"parentId":4018,"tags":{},"startTime":1764107723417,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":154,"timestamp":475078332734,"id":4025,"parentId":4018,"tags":{},"startTime":1764107723419,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":487,"timestamp":475078332891,"id":4026,"parentId":4018,"tags":{},"startTime":1764107723419,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":726,"timestamp":475078333982,"id":4027,"parentId":4018,"tags":{},"startTime":1764107723420,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":38,"timestamp":475078334709,"id":4028,"parentId":4018,"tags":{},"startTime":1764107723421,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":26,"timestamp":475078334744,"id":4029,"parentId":4018,"tags":{},"startTime":1764107723421,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":569,"timestamp":475078334771,"id":4030,"parentId":4018,"tags":{},"startTime":1764107723421,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7080,"timestamp":475078329218,"id":4018,"parentId":3987,"tags":{},"startTime":1764107723415,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":47784,"timestamp":475078290145,"id":3987,"parentId":3949,"tags":{"name":"server"},"startTime":1764107723376,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1377,"timestamp":475078337944,"id":4031,"parentId":3949,"tags":{},"startTime":1764107723424,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":116493,"timestamp":475078223359,"id":3949,"parentId":3,"tags":{"trigger":"components/CategoryColumn.tsx"},"startTime":1764107723309,"traceId":"e274ac96b05c42d4"}] +[{"name":"handle-request","duration":19169,"timestamp":475078343955,"id":4033,"tags":{"url":"/gunbuilder?_rsc=9gfev","isTurbopack":false},"startTime":1764107723430,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475078363149,"id":4035,"parentId":4033,"tags":{"url":"/gunbuilder?_rsc=9gfev","memory.rss":"536625152","memory.heapUsed":"194713712","memory.heapTotal":"220971008"},"startTime":1764107723449,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":19712,"timestamp":475078343765,"id":4032,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107723430,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475078363483,"id":4036,"parentId":4032,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"536625152","memory.heapUsed":"194871808","memory.heapTotal":"220971008"},"startTime":1764107723449,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":20716,"timestamp":475078343983,"id":4034,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","isTurbopack":false},"startTime":1764107723430,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475078364707,"id":4037,"parentId":4034,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","memory.rss":"536625152","memory.heapUsed":"194976432","memory.heapTotal":"220971008"},"startTime":1764107723451,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3395,"timestamp":475085642294,"id":4048,"parentId":4041,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3412,"timestamp":475085642296,"id":4049,"parentId":4041,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3428,"timestamp":475085642298,"id":4050,"parentId":4041,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3981,"timestamp":475085642251,"id":4042,"parentId":4041,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1559,"timestamp":475085646126,"id":4054,"parentId":4053,"tags":{},"startTime":1764107730732,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1661,"timestamp":475085646027,"id":4053,"parentId":4052,"tags":{},"startTime":1764107730732,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":4474,"timestamp":475085645928,"id":4052,"parentId":4040,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx","layer":"app-pages-browser"},"startTime":1764107730732,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8572,"timestamp":475085642286,"id":4044,"parentId":4041,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8695,"timestamp":475085642291,"id":4046,"parentId":4041,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":4177,"timestamp":475085647232,"id":4056,"parentId":4055,"tags":{},"startTime":1764107730733,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":11152,"timestamp":475085642292,"id":4047,"parentId":4041,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":11281,"timestamp":475085642282,"id":4043,"parentId":4041,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":10691,"timestamp":475085651434,"id":4058,"parentId":4057,"tags":{},"startTime":1764107730737,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":10987,"timestamp":475085651422,"id":4057,"parentId":4055,"tags":{},"startTime":1764107730737,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":3990,"timestamp":475085662433,"id":4059,"parentId":4055,"tags":{"astUsed":"true"},"startTime":1764107730748,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":21242,"timestamp":475085647163,"id":4055,"parentId":4051,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107730733,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":25516,"timestamp":475085644971,"id":4051,"parentId":4040,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107730731,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":9,"timestamp":475085670578,"id":4060,"parentId":4051,"tags":{},"startTime":1764107730757,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":28319,"timestamp":475085642288,"id":4045,"parentId":4041,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":28543,"timestamp":475085642073,"id":4041,"parentId":4040,"tags":{},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":764,"timestamp":475085671460,"id":4062,"parentId":4061,"tags":{},"startTime":1764107730757,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":475085672234,"id":4064,"parentId":4061,"tags":{},"startTime":1764107730758,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":22,"timestamp":475085672242,"id":4065,"parentId":4061,"tags":{},"startTime":1764107730758,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":475085672274,"id":4066,"parentId":4061,"tags":{},"startTime":1764107730758,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":475085672284,"id":4067,"parentId":4061,"tags":{},"startTime":1764107730758,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":305,"timestamp":475085672231,"id":4063,"parentId":4061,"tags":{},"startTime":1764107730758,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":203,"timestamp":475085672929,"id":4068,"parentId":4061,"tags":{},"startTime":1764107730759,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":585,"timestamp":475085673136,"id":4069,"parentId":4061,"tags":{},"startTime":1764107730759,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1615,"timestamp":475085674301,"id":4070,"parentId":4061,"tags":{},"startTime":1764107730760,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":68,"timestamp":475085675915,"id":4071,"parentId":4061,"tags":{},"startTime":1764107730762,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":30,"timestamp":475085675979,"id":4072,"parentId":4061,"tags":{},"startTime":1764107730762,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1080,"timestamp":475085676012,"id":4073,"parentId":4061,"tags":{},"startTime":1764107730762,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":29,"timestamp":475085677468,"id":4075,"parentId":4040,"tags":{},"startTime":1764107730763,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":63,"timestamp":475085677436,"id":4074,"parentId":4040,"tags":{},"startTime":1764107730763,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7054,"timestamp":475085671197,"id":4061,"parentId":4040,"tags":{},"startTime":1764107730757,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":36377,"timestamp":475085641889,"id":4040,"parentId":4038,"tags":{"name":"client"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2743,"timestamp":475085678276,"id":4076,"parentId":4038,"tags":{},"startTime":1764107730764,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":46414,"timestamp":475085634997,"id":4038,"parentId":3,"tags":{"trigger":"components/CategoryColumn.tsx"},"startTime":1764107730721,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":3,"timestamp":475085685330,"id":4079,"parentId":3,"tags":{},"startTime":1764107730771,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475085685379,"id":4080,"parentId":3,"tags":{},"startTime":1764107730771,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475085685393,"id":4081,"parentId":3,"tags":{},"startTime":1764107730771,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":57000,"timestamp":475085635123,"id":4087,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107730778,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":61000,"timestamp":475085635766,"id":4088,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder/build","isPageHidden":true},"startTime":1764107730784,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":63000,"timestamp":475085636411,"id":4089,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107730785,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12968,"timestamp":475085689272,"id":4083,"parentId":4078,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107730775,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12971,"timestamp":475085689276,"id":4084,"parentId":4078,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107730775,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12967,"timestamp":475085689290,"id":4086,"parentId":4078,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107730775,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":13124,"timestamp":475085689279,"id":4085,"parentId":4078,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107730775,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":13279,"timestamp":475085689246,"id":4082,"parentId":4078,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107730775,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1202,"timestamp":475085705216,"id":4107,"parentId":4106,"tags":{},"startTime":1764107730791,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1270,"timestamp":475085705152,"id":4106,"parentId":4105,"tags":{},"startTime":1764107730791,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":2857,"timestamp":475085705003,"id":4105,"parentId":4077,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx","layer":"ssr"},"startTime":1764107730791,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":35717,"timestamp":475085682952,"id":4078,"parentId":4077,"tags":{},"startTime":1764107730769,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1270,"timestamp":475085719857,"id":4109,"parentId":4108,"tags":{},"startTime":1764107730806,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":475085721136,"id":4111,"parentId":4108,"tags":{},"startTime":1764107730807,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1067,"timestamp":475085721146,"id":4112,"parentId":4108,"tags":{},"startTime":1764107730807,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":475085722222,"id":4113,"parentId":4108,"tags":{},"startTime":1764107730808,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":475085722234,"id":4114,"parentId":4108,"tags":{},"startTime":1764107730808,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1303,"timestamp":475085721133,"id":4110,"parentId":4108,"tags":{},"startTime":1764107730807,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":143,"timestamp":475085722849,"id":4115,"parentId":4108,"tags":{},"startTime":1764107730809,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":323,"timestamp":475085722996,"id":4116,"parentId":4108,"tags":{},"startTime":1764107730809,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":644,"timestamp":475085723700,"id":4117,"parentId":4108,"tags":{},"startTime":1764107730810,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":26,"timestamp":475085724344,"id":4118,"parentId":4108,"tags":{},"startTime":1764107730810,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":20,"timestamp":475085724368,"id":4119,"parentId":4108,"tags":{},"startTime":1764107730810,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":66,"timestamp":475085724389,"id":4120,"parentId":4108,"tags":{},"startTime":1764107730810,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":5997,"timestamp":475085719654,"id":4108,"parentId":4077,"tags":{},"startTime":1764107730806,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":44621,"timestamp":475085682796,"id":4077,"parentId":4039,"tags":{"name":"server"},"startTime":1764107730769,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1242,"timestamp":475085727441,"id":4121,"parentId":4039,"tags":{},"startTime":1764107730813,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":94115,"timestamp":475085635182,"id":4039,"parentId":3,"tags":{"trigger":"components/CategoryColumn.tsx"},"startTime":1764107730721,"traceId":"e274ac96b05c42d4"}] diff --git a/.next/types/app/gunbuilder/build/page.ts b/.next/types/app/gunbuilder/build/page.ts new file mode 100644 index 0000000..4110657 --- /dev/null +++ b/.next/types/app/gunbuilder/build/page.ts @@ -0,0 +1,79 @@ +// File: /Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx +import * as entry from '../../../../../app/gunbuilder/build/page.js' +import type { ResolvingMetadata, ResolvingViewport } from 'next/dist/lib/metadata/types/metadata-interface.js' + +type TEntry = typeof import('../../../../../app/gunbuilder/build/page.js') + +// Check that the entry is a valid entry +checkFields | false + dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static' + dynamicParams?: boolean + fetchCache?: 'auto' | 'force-no-store' | 'only-no-store' | 'default-no-store' | 'default-cache' | 'only-cache' | 'force-cache' + preferredRegion?: 'auto' | 'global' | 'home' | string | string[] + runtime?: 'nodejs' | 'experimental-edge' | 'edge' + maxDuration?: number + + metadata?: any + generateMetadata?: Function + viewport?: any + generateViewport?: Function + +}, TEntry, ''>>() + +// Check the prop type of the entry function +checkFields, 'default'>>() + +// Check the arguments and return type of the generateMetadata function +if ('generateMetadata' in entry) { + checkFields>, 'generateMetadata'>>() + checkFields>, 'generateMetadata'>>() +} + +// Check the arguments and return type of the generateViewport function +if ('generateViewport' in entry) { + checkFields>, 'generateViewport'>>() + checkFields>, 'generateViewport'>>() +} + +// Check the arguments and return type of the generateStaticParams function +if ('generateStaticParams' in entry) { + checkFields>, 'generateStaticParams'>>() + checkFields }, { __tag__: 'generateStaticParams', __return_type__: ReturnType> }>>() +} + +type PageParams = any +export interface PageProps { + params?: any + searchParams?: any +} +export interface LayoutProps { + children?: React.ReactNode + + params?: any +} + +// ============= +// Utility types +type RevalidateRange = T extends { revalidate: any } ? NonNegative : never + +// If T is unknown or any, it will be an empty {} type. Otherwise, it will be the same as Omit. +type OmitWithTag = Omit +type Diff = 0 extends (1 & T) ? {} : OmitWithTag + +type FirstArg = T extends (...args: [infer T, any]) => any ? unknown extends T ? any : T : never +type SecondArg = T extends (...args: [any, infer T]) => any ? unknown extends T ? any : T : never +type MaybeField = T extends { [k in K]: infer G } ? G extends Function ? G : never : never + + + +function checkFields<_ extends { [k in keyof any]: never }>() {} + +// https://github.com/sindresorhus/type-fest +type Numeric = number | bigint +type Zero = 0 | 0n +type Negative = T extends Zero ? never : `${T}` extends `-${string}` ? T : never +type NonNegative = T extends Zero ? T : Negative extends never ? T : '__invalid_negative_number__' diff --git a/app/gunbuilder/[categoryId]/page.tsx b/app/gunbuilder/[categoryId]/page.tsx index c364b00..bc2e240 100644 --- a/app/gunbuilder/[categoryId]/page.tsx +++ b/app/gunbuilder/[categoryId]/page.tsx @@ -109,7 +109,7 @@ export default function CategoryPage() { {parts.map((part) => (
View Details + {/* Hover Overlay */} +
+
+ Add to Build +
+
))}
@@ -145,7 +151,7 @@ export default function CategoryPage() { {parts.map((part) => (
@@ -175,6 +181,12 @@ export default function CategoryPage() {
+ {/* Hover Overlay */} +
+
+ Add to Build +
+
))}
diff --git a/app/gunbuilder/build/page.tsx b/app/gunbuilder/build/page.tsx new file mode 100644 index 0000000..af6d35a --- /dev/null +++ b/app/gunbuilder/build/page.tsx @@ -0,0 +1,331 @@ +"use client"; + +import { useMemo, useState, useEffect } from "react"; +import Link from "next/link"; +import { useSearchParams, useRouter } from "next/navigation"; +import { CATEGORIES, PARTS } from "@/data/gunbuilderParts"; +import type { CategoryId, Part } from "@/types/gunbuilder"; + +type BuildState = Partial>; // categoryId -> partId + +const STORAGE_KEY = "gunbuilder-build-state"; + +// Encode build state to URL-friendly string +function encodeBuildState(build: BuildState): string { + const entries = Object.entries(build) + .filter(([_, partId]) => partId) + .map(([categoryId, partId]) => `${categoryId}:${partId}`) + .join(","); + return btoa(entries); +} + +// Decode URL string to build state +function decodeBuildState(encoded: string): BuildState { + try { + const decoded = atob(encoded); + const build: BuildState = {}; + decoded.split(",").forEach((entry) => { + const [categoryId, partId] = entry.split(":"); + if (categoryId && partId) { + build[categoryId as CategoryId] = partId; + } + }); + return build; + } catch { + return {}; + } +} + +export default function BuildDetailsPage() { + const searchParams = useSearchParams(); + const router = useRouter(); + const [build, setBuild] = useState({}); + const [shareUrl, setShareUrl] = useState(""); + const [copied, setCopied] = useState(false); + + // Load build from URL params or localStorage + useEffect(() => { + const buildParam = searchParams.get("build"); + if (buildParam) { + const decoded = decodeBuildState(buildParam); + setBuild(decoded); + // Also save to localStorage + localStorage.setItem(STORAGE_KEY, JSON.stringify(decoded)); + } else if (typeof window !== "undefined") { + // Load from localStorage + const stored = localStorage.getItem(STORAGE_KEY); + if (stored) { + try { + const parsed = JSON.parse(stored); + setBuild(parsed); + } catch { + // Invalid stored data + } + } + } + }, [searchParams]); + + // Generate shareable URL + useEffect(() => { + if (typeof window !== "undefined" && Object.keys(build).length > 0) { + const encoded = encodeBuildState(build); + const url = `${window.location.origin}/gunbuilder/build?build=${encoded}`; + setShareUrl(url); + } + }, [build]); + + const selectedParts: Part[] = useMemo(() => { + return Object.entries(build) + .map(([categoryId, partId]) => + PARTS.find((p) => p.id === partId && p.categoryId === categoryId), + ) + .filter(Boolean) as Part[]; + }, [build]); + + const totalPrice = useMemo( + () => selectedParts.reduce((sum, p) => sum + p.price, 0), + [selectedParts], + ); + + const handleCopyLink = async () => { + if (shareUrl) { + try { + await navigator.clipboard.writeText(shareUrl); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + } catch (err) { + console.error("Failed to copy:", err); + } + } + }; + + const handleShare = async () => { + if (navigator.share && shareUrl) { + try { + await navigator.share({ + title: "My AR-15 Build", + text: `Check out my AR-15 build: $${totalPrice.toFixed(2)}`, + url: shareUrl, + }); + } catch (err) { + // User cancelled or share failed, fall back to copy + handleCopyLink(); + } + } else { + handleCopyLink(); + } + }; + + if (selectedParts.length === 0) { + return ( +
+
+
+

+ No Build Selected +

+

+ You need to select at least one part to view your build. +

+ + Go to Gunbuilder + +
+
+
+ ); + } + + return ( +
+
+ {/* Header */} +
+ + ← Back to Gunbuilder + +
+
+

+ Shadow Standard +

+

+ Build Summary +

+

+ Review your build, purchase parts from our affiliate partners, or + share your build with others. +

+
+ +
+
Total Build Price
+
+ ${totalPrice.toFixed(2)} +
+
+ {selectedParts.length} / {CATEGORIES.length} parts selected +
+
+
+
+ + {/* Share Section */} +
+
+
+

+ Share Your Build +

+

+ Share this link to let others view your build or bookmark it to + come back later. +

+
+
+ + +
+
+ {shareUrl && ( +
+

Shareable URL:

+

+ {shareUrl} +

+
+ )} +
+ + {/* Build Parts */} +
+

+ Selected Parts +

+ +
+ {CATEGORIES.map((category) => { + const selectedPartId = build[category.id]; + const part = PARTS.find( + (p) => p.id === selectedPartId && p.categoryId === category.id, + ); + + return ( + + ); + })} +
+
+ + {/* Actions */} +
+ + Edit Build + +
+ +
+
+
+
+ ); +} + diff --git a/app/gunbuilder/page.tsx b/app/gunbuilder/page.tsx index 73d6d60..bb88385 100644 --- a/app/gunbuilder/page.tsx +++ b/app/gunbuilder/page.tsx @@ -1,6 +1,7 @@ "use client"; import { useMemo, useState, useEffect } from "react"; +import Link from "next/link"; import { useSearchParams, useRouter } from "next/navigation"; import { CATEGORIES, PARTS } from "@/data/gunbuilderParts"; import type { CategoryId, Part } from "@/types/gunbuilder"; @@ -187,23 +188,34 @@ export default function GunbuilderPage() {
{/* CTA */} -
+
+ + Continue to Buy +

- In the production version, this will take you to a build page with - retailer links and sharing options. + View your build summary with affiliate links and sharing options.

diff --git a/components/CategoryColumn.tsx b/components/CategoryColumn.tsx index 408eaec..0da2945 100644 --- a/components/CategoryColumn.tsx +++ b/components/CategoryColumn.tsx @@ -35,7 +35,22 @@ export function CategoryColumn({ )} {!displayedPart && parts.length > 0 && (
-

Choose a Part

+

+ + + + Choose a Part +

)} {displayedPart && (