diff --git a/.next/app-build-manifest.json b/.next/app-build-manifest.json index fa81859f..86cea48a 100644 --- a/.next/app-build-manifest.json +++ b/.next/app-build-manifest.json @@ -10,6 +10,11 @@ "static/chunks/webpack.js", "static/chunks/main-app.js", "static/chunks/app/page.js" + ], + "/api/monitor/route": [ + "static/chunks/webpack.js", + "static/chunks/main-app.js", + "static/chunks/app/api/monitor/route.js" ] } } \ No newline at end of file diff --git a/.next/cache/webpack/client-development/0.pack.gz b/.next/cache/webpack/client-development/0.pack.gz index 35762471..673359ba 100644 Binary files a/.next/cache/webpack/client-development/0.pack.gz and b/.next/cache/webpack/client-development/0.pack.gz differ diff --git a/.next/cache/webpack/client-development/2.pack.gz b/.next/cache/webpack/client-development/2.pack.gz index 4aa0ced3..70522111 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/20.pack.gz b/.next/cache/webpack/client-development/20.pack.gz index 588e4d43..fceb0eff 100644 Binary files a/.next/cache/webpack/client-development/20.pack.gz and b/.next/cache/webpack/client-development/20.pack.gz differ diff --git a/.next/cache/webpack/client-development/22.pack.gz b/.next/cache/webpack/client-development/22.pack.gz new file mode 100644 index 00000000..dd9a0a06 Binary files /dev/null and b/.next/cache/webpack/client-development/22.pack.gz differ diff --git a/.next/cache/webpack/client-development/3.pack.gz b/.next/cache/webpack/client-development/3.pack.gz index 3250ac0e..bd75d8dc 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 a8c91c97..baa52908 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/index.pack.gz b/.next/cache/webpack/client-development/index.pack.gz index 75fff823..500b6ee8 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 175a8ab4..6caa0832 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 df541224..26c0c18a 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 53c7d810..a1471dd6 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/14.pack.gz b/.next/cache/webpack/server-development/14.pack.gz index 1412ce74..aa97b41f 100644 Binary files a/.next/cache/webpack/server-development/14.pack.gz and b/.next/cache/webpack/server-development/14.pack.gz differ diff --git a/.next/cache/webpack/server-development/16.pack.gz b/.next/cache/webpack/server-development/16.pack.gz index bf425e91..7215896c 100644 Binary files a/.next/cache/webpack/server-development/16.pack.gz and b/.next/cache/webpack/server-development/16.pack.gz differ diff --git a/.next/cache/webpack/server-development/2.pack.gz b/.next/cache/webpack/server-development/2.pack.gz index 7b7160f1..ea8885af 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/21.pack.gz b/.next/cache/webpack/server-development/21.pack.gz index 351f5b1a..5420bc01 100644 Binary files a/.next/cache/webpack/server-development/21.pack.gz and b/.next/cache/webpack/server-development/21.pack.gz differ diff --git a/.next/cache/webpack/server-development/3.pack.gz b/.next/cache/webpack/server-development/3.pack.gz index 2d89995e..11738c7a 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/index.pack.gz b/.next/cache/webpack/server-development/index.pack.gz index ecf88e3e..d16df4b7 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 d2f8fd70..05c65cc4 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 e234c2ed..98d61fca 100644 --- a/.next/server/app-paths-manifest.json +++ b/.next/server/app-paths-manifest.json @@ -1,3 +1,4 @@ { + "/api/monitor/route": "app/api/monitor/route.js", "/page": "app/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 00000000..49a7816a --- /dev/null +++ b/.next/server/app/_not-found/page.js @@ -0,0 +1,164 @@ +/* + * 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 = { + +/***/ "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"); + +/***/ }), + +/***/ "../app-render/action-async-storage.external": +/*!*******************************************************************************!*\ + !*** external "next/dist/server/app-render/action-async-storage.external.js" ***! + \*******************************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/server/app-render/action-async-storage.external.js"); + +/***/ }), + +/***/ "../app-render/after-task-async-storage.external": +/*!***********************************************************************************!*\ + !*** external "next/dist/server/app-render/after-task-async-storage.external.js" ***! + \***********************************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/server/app-render/after-task-async-storage.external.js"); + +/***/ }), + +/***/ "../app-render/work-async-storage.external": +/*!*****************************************************************************!*\ + !*** external "next/dist/server/app-render/work-async-storage.external.js" ***! + \*****************************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/server/app-render/work-async-storage.external.js"); + +/***/ }), + +/***/ "./work-unit-async-storage.external": +/*!**********************************************************************************!*\ + !*** external "next/dist/server/app-render/work-unit-async-storage.external.js" ***! + \**********************************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js"); + +/***/ }), + +/***/ "path": +/*!***********************!*\ + !*** external "path" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("path"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=..%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!": +/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=..%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor&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 */ 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_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/route-modules/app-page/module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?91d2\");\n/* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/route-kind */ \"(rsc)/./node_modules/next/dist/server/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\",\"__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__);\nconst notFound0 = () => 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));\nconst module1 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/app/layout.tsx */ \"(rsc)/./src/app/layout.tsx\"));\nconst module2 = () => 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));\nconst module3 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/forbidden-error */ \"(rsc)/./node_modules/next/dist/client/components/forbidden-error.js\", 23));\nconst module4 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/unauthorized-error */ \"(rsc)/./node_modules/next/dist/client/components/unauthorized-error.js\", 23));\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 notFound0,\n \"next/dist/client/components/not-found-error\"\n ]\n }]\n }, {}]\n },\n {\n 'layout': [module1, \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/layout.tsx\"],\n'not-found': [module2, \"next/dist/client/components/not-found-error\"],\n'forbidden': [module3, \"next/dist/client/components/forbidden-error\"],\n'unauthorized': [module4, \"next/dist/client/components/unauthorized-error\"],\n \n }\n ]\n }.children;\nconst pages = [];\n\n\nconst __next_app_require__ = __webpack_require__\nconst __next_app_load_chunk__ = () => Promise.resolve()\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_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppPageRouteModule({\n definition: {\n kind: next_dist_server_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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXIvaW5kZXguanM/bmFtZT1hcHAlMkZfbm90LWZvdW5kJTJGcGFnZSZwYWdlPSUyRl9ub3QtZm91bmQlMkZwYWdlJmFwcFBhdGhzPSZwYWdlUGF0aD0uLiUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRm5vdC1mb3VuZC1lcnJvci5qcyZhcHBEaXI9JTJGVXNlcnMlMkZtYXR0YnJ1Y2UlMkZEb2N1bWVudHMlMkZQcm9qZWN0cyUyRk9wZW5DbGF3JTJGV2ViJTJGaGVhcnRiZWF0LW1vbml0b3IlMkZzcmMlMkZhcHAmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZyb290RGlyPSUyRlVzZXJzJTJGbWF0dGJydWNlJTJGRG9jdW1lbnRzJTJGUHJvamVjdHMlMkZPcGVuQ2xhdyUyRldlYiUyRmhlYXJ0YmVhdC1tb25pdG9yJmlzRGV2PXRydWUmdHNjb25maWdQYXRoPXRzY29uZmlnLmpzb24mYmFzZVBhdGg9JmFzc2V0UHJlZml4PSZuZXh0Q29uZmlnT3V0cHV0PSZwcmVmZXJyZWRSZWdpb249Jm1pZGRsZXdhcmVDb25maWc9ZTMwJTNEISIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3QkFBd0IsME5BQWdGO0FBQ3hHLHNCQUFzQixvSkFBMEg7QUFDaEosc0JBQXNCLDBOQUFnRjtBQUN0RyxzQkFBc0IsME5BQWdGO0FBQ3RHLHNCQUFzQixnT0FBbUY7QUFHdkc7QUFDc0Q7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVyxJQUFJO0FBQ2YsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDdUI7QUFDNkQ7QUFDcEYsNkJBQTZCLG1CQUFtQjtBQUNoRDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ3VEO0FBQ3ZEO0FBQ08sd0JBQXdCLHVHQUFrQjtBQUNqRDtBQUNBLGNBQWMsa0VBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQiLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBub3RGb3VuZDAgPSAoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9ub3QtZm91bmQtZXJyb3JcIik7XG5jb25zdCBtb2R1bGUxID0gKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivc3JjL2FwcC9sYXlvdXQudHN4XCIpO1xuY29uc3QgbW9kdWxlMiA9ICgpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvclwiKTtcbmNvbnN0IG1vZHVsZTMgPSAoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9mb3JiaWRkZW4tZXJyb3JcIik7XG5jb25zdCBtb2R1bGU0ID0gKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvdW5hdXRob3JpemVkLWVycm9yXCIpO1xuaW1wb3J0IHsgQXBwUGFnZVJvdXRlTW9kdWxlIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvcm91dGUtbW9kdWxlcy9hcHAtcGFnZS9tb2R1bGUuY29tcGlsZWRcIiB3aXRoIHtcbiAgICAndHVyYm9wYWNrLXRyYW5zaXRpb24nOiAnbmV4dC1zc3InXG59O1xuaW1wb3J0IHsgUm91dGVLaW5kIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvcm91dGUta2luZFwiO1xuLy8gV2UgaW5qZWN0IHRoZSB0cmVlIGFuZCBwYWdlcyBoZXJlIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGVtIGluIHRoZSByb3V0ZVxuLy8gbW9kdWxlLlxuY29uc3QgdHJlZSA9IHtcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgJycsXG4gICAgICAgIHtcbiAgICAgICAgICBjaGlsZHJlbjogW1wiL19ub3QtZm91bmRcIiwge1xuICAgICAgICAgICAgY2hpbGRyZW46IFsnX19QQUdFX18nLCB7fSwge1xuICAgICAgICAgICAgICBwYWdlOiBbXG4gICAgICAgICAgICAgICAgbm90Rm91bmQwLFxuICAgICAgICAgICAgICAgIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvclwiXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1dXG4gICAgICAgICAgfSwge31dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgJ2xheW91dCc6IFttb2R1bGUxLCBcIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9zcmMvYXBwL2xheW91dC50c3hcIl0sXG4nbm90LWZvdW5kJzogW21vZHVsZTIsIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvclwiXSxcbidmb3JiaWRkZW4nOiBbbW9kdWxlMywgXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZm9yYmlkZGVuLWVycm9yXCJdLFxuJ3VuYXV0aG9yaXplZCc6IFttb2R1bGU0LCBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy91bmF1dGhvcml6ZWQtZXJyb3JcIl0sXG4gICAgICAgIFxuICAgICAgfVxuICAgICAgXVxuICAgICAgfS5jaGlsZHJlbjtcbmNvbnN0IHBhZ2VzID0gW107XG5leHBvcnQgeyB0cmVlLCBwYWdlcyB9O1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBHbG9iYWxFcnJvciB9IGZyb20gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnlcIjtcbmNvbnN0IF9fbmV4dF9hcHBfcmVxdWlyZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfX1xuY29uc3QgX19uZXh0X2FwcF9sb2FkX2NodW5rX18gPSAoKSA9PiBQcm9taXNlLnJlc29sdmUoKVxuZXhwb3J0IGNvbnN0IF9fbmV4dF9hcHBfXyA9IHtcbiAgICByZXF1aXJlOiBfX25leHRfYXBwX3JlcXVpcmVfXyxcbiAgICBsb2FkQ2h1bms6IF9fbmV4dF9hcHBfbG9hZF9jaHVua19fXG59O1xuZXhwb3J0ICogZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9lbnRyeS1iYXNlXCI7XG4vLyBDcmVhdGUgYW5kIGV4cG9ydCB0aGUgcm91dGUgbW9kdWxlIHRoYXQgd2lsbCBiZSBjb25zdW1lZC5cbmV4cG9ydCBjb25zdCByb3V0ZU1vZHVsZSA9IG5ldyBBcHBQYWdlUm91dGVNb2R1bGUoe1xuICAgIGRlZmluaXRpb246IHtcbiAgICAgICAga2luZDogUm91dGVLaW5kLkFQUF9QQUdFLFxuICAgICAgICBwYWdlOiBcIi9fbm90LWZvdW5kL3BhZ2VcIixcbiAgICAgICAgcGF0aG5hbWU6IFwiL19ub3QtZm91bmRcIixcbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmVuJ3QgdXNlZCBpbiBwcm9kdWN0aW9uLlxuICAgICAgICBidW5kbGVQYXRoOiAnJyxcbiAgICAgICAgZmlsZW5hbWU6ICcnLFxuICAgICAgICBhcHBQYXRoczogW11cbiAgICB9LFxuICAgIHVzZXJsYW5kOiB7XG4gICAgICAgIGxvYWRlclRyZWU6IHRyZWVcbiAgICB9XG59KTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLXBhZ2UuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=..%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!\n"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fmetadata-boundary.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%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fmetadata-boundary.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/client-page.js */ \"(rsc)/./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/client-segment.js */ \"(rsc)/./node_modules/next/dist/client/components/client-segment.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/error-boundary.js */ \"(rsc)/./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/http-access-fallback/error-boundary.js */ \"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/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 */ \"(rsc)/./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/render-from-template-context.js */ \"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/lib/metadata/metadata-boundary.js */ \"(rsc)/./node_modules/next/dist/lib/metadata/metadata-boundary.js\", 23));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGbWF0dGJydWNlJTJGRG9jdW1lbnRzJTJGUHJvamVjdHMlMkZPcGVuQ2xhdyUyRldlYiUyRmhlYXJ0YmVhdC1tb25pdG9yJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGY2xpZW50LXBhZ2UuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZtYXR0YnJ1Y2UlMkZEb2N1bWVudHMlMkZQcm9qZWN0cyUyRk9wZW5DbGF3JTJGV2ViJTJGaGVhcnRiZWF0LW1vbml0b3IlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZjbGllbnQtc2VnbWVudC5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRm1hdHRicnVjZSUyRkRvY3VtZW50cyUyRlByb2plY3RzJTJGT3BlbkNsYXclMkZXZWIlMkZoZWFydGJlYXQtbW9uaXRvciUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmVycm9yLWJvdW5kYXJ5LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGbWF0dGJydWNlJTJGRG9jdW1lbnRzJTJGUHJvamVjdHMlMkZPcGVuQ2xhdyUyRldlYiUyRmhlYXJ0YmVhdC1tb25pdG9yJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGaHR0cC1hY2Nlc3MtZmFsbGJhY2slMkZlcnJvci1ib3VuZGFyeS5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRm1hdHRicnVjZSUyRkRvY3VtZW50cyUyRlByb2plY3RzJTJGT3BlbkNsYXclMkZXZWIlMkZoZWFydGJlYXQtbW9uaXRvciUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmxheW91dC1yb3V0ZXIuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZtYXR0YnJ1Y2UlMkZEb2N1bWVudHMlMkZQcm9qZWN0cyUyRk9wZW5DbGF3JTJGV2ViJTJGaGVhcnRiZWF0LW1vbml0b3IlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZyZW5kZXItZnJvbS10ZW1wbGF0ZS1jb250ZXh0LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGbWF0dGJydWNlJTJGRG9jdW1lbnRzJTJGUHJvamVjdHMlMkZPcGVuQ2xhdyUyRldlYiUyRmhlYXJ0YmVhdC1tb25pdG9yJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZsaWIlMkZtZXRhZGF0YSUyRm1ldGFkYXRhLWJvdW5kYXJ5LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJnNlcnZlcj10cnVlISIsIm1hcHBpbmdzIjoiQUFBQSxvT0FBK0o7QUFDL0o7QUFDQSwwT0FBa0s7QUFDbEs7QUFDQSwwT0FBa0s7QUFDbEs7QUFDQSxvUkFBdUw7QUFDdkw7QUFDQSx3T0FBaUs7QUFDaks7QUFDQSxzUUFBZ0w7QUFDaEw7QUFDQSxzT0FBZ0siLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1wYWdlLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtc2VnbWVudC5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnkuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWJvdW5kYXJ5LmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9sYXlvdXQtcm91dGVyLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9yZW5kZXItZnJvbS10ZW1wbGF0ZS1jb250ZXh0LmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvbWV0YWRhdGEvbWV0YWRhdGEtYm91bmRhcnkuanNcIik7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fmetadata-boundary.js%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%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fmetadata-boundary.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%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fmetadata-boundary.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/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/client-segment.js */ \"(ssr)/./node_modules/next/dist/client/components/client-segment.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/http-access-fallback/error-boundary.js */ \"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/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/render-from-template-context.js */ \"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/lib/metadata/metadata-boundary.js */ \"(ssr)/./node_modules/next/dist/lib/metadata/metadata-boundary.js\", 23));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGbWF0dGJydWNlJTJGRG9jdW1lbnRzJTJGUHJvamVjdHMlMkZPcGVuQ2xhdyUyRldlYiUyRmhlYXJ0YmVhdC1tb25pdG9yJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGY2xpZW50LXBhZ2UuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZtYXR0YnJ1Y2UlMkZEb2N1bWVudHMlMkZQcm9qZWN0cyUyRk9wZW5DbGF3JTJGV2ViJTJGaGVhcnRiZWF0LW1vbml0b3IlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZjbGllbnQtc2VnbWVudC5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRm1hdHRicnVjZSUyRkRvY3VtZW50cyUyRlByb2plY3RzJTJGT3BlbkNsYXclMkZXZWIlMkZoZWFydGJlYXQtbW9uaXRvciUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmVycm9yLWJvdW5kYXJ5LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGbWF0dGJydWNlJTJGRG9jdW1lbnRzJTJGUHJvamVjdHMlMkZPcGVuQ2xhdyUyRldlYiUyRmhlYXJ0YmVhdC1tb25pdG9yJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGaHR0cC1hY2Nlc3MtZmFsbGJhY2slMkZlcnJvci1ib3VuZGFyeS5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRm1hdHRicnVjZSUyRkRvY3VtZW50cyUyRlByb2plY3RzJTJGT3BlbkNsYXclMkZXZWIlMkZoZWFydGJlYXQtbW9uaXRvciUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmxheW91dC1yb3V0ZXIuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZtYXR0YnJ1Y2UlMkZEb2N1bWVudHMlMkZQcm9qZWN0cyUyRk9wZW5DbGF3JTJGV2ViJTJGaGVhcnRiZWF0LW1vbml0b3IlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZyZW5kZXItZnJvbS10ZW1wbGF0ZS1jb250ZXh0LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGbWF0dGJydWNlJTJGRG9jdW1lbnRzJTJGUHJvamVjdHMlMkZPcGVuQ2xhdyUyRldlYiUyRmhlYXJ0YmVhdC1tb25pdG9yJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZsaWIlMkZtZXRhZGF0YSUyRm1ldGFkYXRhLWJvdW5kYXJ5LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJnNlcnZlcj10cnVlISIsIm1hcHBpbmdzIjoiQUFBQSxvT0FBK0o7QUFDL0o7QUFDQSwwT0FBa0s7QUFDbEs7QUFDQSwwT0FBa0s7QUFDbEs7QUFDQSxvUkFBdUw7QUFDdkw7QUFDQSx3T0FBaUs7QUFDaks7QUFDQSxzUUFBZ0w7QUFDaEw7QUFDQSxzT0FBZ0siLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1wYWdlLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtc2VnbWVudC5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnkuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWJvdW5kYXJ5LmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9sYXlvdXQtcm91dGVyLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9yZW5kZXItZnJvbS10ZW1wbGF0ZS1jb250ZXh0LmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvbWV0YWRhdGEvbWV0YWRhdGEtYm91bmRhcnkuanNcIik7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\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%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fmetadata-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%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%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%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%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%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%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***! + \**************************************************************************************************************************************************************************************************************************************************************************/ +/***/ (() => { + + + +/***/ }), + +/***/ "(rsc)/./src/app/globals.css": +/*!*****************************!*\ + !*** ./src/app/globals.css ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"43019ed0b75a\");\nif (false) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9zcmMvYXBwL2dsb2JhbHMuY3NzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxpRUFBZSxjQUFjO0FBQzdCLElBQUksS0FBVSxFQUFFLEVBQXVCIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivc3JjL2FwcC9nbG9iYWxzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcIjQzMDE5ZWQwYjc1YVwiXG5pZiAobW9kdWxlLmhvdCkgeyBtb2R1bGUuaG90LmFjY2VwdCgpIH1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./src/app/globals.css\n"); + +/***/ }), + +/***/ "(rsc)/./src/app/layout.tsx": +/*!****************************!*\ + !*** ./src/app/layout.tsx ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ RootLayout),\n/* harmony export */ metadata: () => (/* binding */ metadata)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(rsc)/./node_modules/next/dist/server/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)/./src/app/globals.css\");\n\n\nconst metadata = {\n title: \"Heartbeat Monitor\",\n description: \"Real-time monitoring dashboard for your web applications\"\n};\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n className: \"dark\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: \"antialiased\",\n children: children\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/layout.tsx\",\n lineNumber: 16,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/layout.tsx\",\n lineNumber: 15,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9zcmMvYXBwL2xheW91dC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQ3VCO0FBRWhCLE1BQU1BLFdBQXFCO0lBQ2hDQyxPQUFPO0lBQ1BDLGFBQWE7QUFDZixFQUFFO0FBRWEsU0FBU0MsV0FBVyxFQUNqQ0MsUUFBUSxFQUdSO0lBQ0EscUJBQ0UsOERBQUNDO1FBQUtDLE1BQUs7UUFBS0MsV0FBVTtrQkFDeEIsNEVBQUNDO1lBQUtELFdBQVU7c0JBQWVIOzs7Ozs7Ozs7OztBQUdyQyIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL3NyYy9hcHAvbGF5b3V0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE1ldGFkYXRhIH0gZnJvbSBcIm5leHRcIjtcbmltcG9ydCBcIi4vZ2xvYmFscy5jc3NcIjtcblxuZXhwb3J0IGNvbnN0IG1ldGFkYXRhOiBNZXRhZGF0YSA9IHtcbiAgdGl0bGU6IFwiSGVhcnRiZWF0IE1vbml0b3JcIixcbiAgZGVzY3JpcHRpb246IFwiUmVhbC10aW1lIG1vbml0b3JpbmcgZGFzaGJvYXJkIGZvciB5b3VyIHdlYiBhcHBsaWNhdGlvbnNcIixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJvb3RMYXlvdXQoe1xuICBjaGlsZHJlbixcbn06IFJlYWRvbmx5PHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn0+KSB7XG4gIHJldHVybiAoXG4gICAgPGh0bWwgbGFuZz1cImVuXCIgY2xhc3NOYW1lPVwiZGFya1wiPlxuICAgICAgPGJvZHkgY2xhc3NOYW1lPVwiYW50aWFsaWFzZWRcIj57Y2hpbGRyZW59PC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJtZXRhZGF0YSIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJSb290TGF5b3V0IiwiY2hpbGRyZW4iLCJodG1sIiwibGFuZyIsImNsYXNzTmFtZSIsImJvZHkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./src/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/index.js?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=..%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor&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 00000000..a4dcd6cb --- /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)/./src/app/page.tsx":{"*":{"id":"(ssr)/./src/app/page.tsx","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/client-segment.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-segment.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/http-access-fallback/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/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/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)/./node_modules/next/dist/lib/metadata/metadata-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/metadata/metadata-boundary.js","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/globals.css":{"id":"(app-pages-browser)/./src/app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx":{"id":"(app-pages-browser)/./src/app/page.tsx","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/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/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/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/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/next/dist/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/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/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/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/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/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/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/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/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/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/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/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/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/next/dist/lib/metadata/metadata-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/metadata-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/next/dist/esm/lib/metadata/metadata-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/metadata-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false}},"entryCSSFiles":{"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/":[],"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/layout":[{"inlined":false,"path":"static/css/app/layout.css"}],"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page":[],"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/_not-found/page":[]},"rscModuleMapping":{"(app-pages-browser)/./src/app/globals.css":{"*":{"id":"(rsc)/./src/app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./src/app/page.tsx":{"*":{"id":"(rsc)/./src/app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/metadata-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/metadata/metadata-boundary.js","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}} \ No newline at end of file diff --git a/.next/server/app/api/monitor/route.js b/.next/server/app/api/monitor/route.js new file mode 100644 index 00000000..ce3aef28 --- /dev/null +++ b/.next/server/app/api/monitor/route.js @@ -0,0 +1,144 @@ +/* + * 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/api/monitor/route"; +exports.ids = ["app/api/monitor/route"]; +exports.modules = { + +/***/ "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"); + +/***/ }), + +/***/ "next/dist/compiled/next-server/app-route.runtime.dev.js": +/*!**************************************************************************!*\ + !*** external "next/dist/compiled/next-server/app-route.runtime.dev.js" ***! + \**************************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/compiled/next-server/app-route.runtime.dev.js"); + +/***/ }), + +/***/ "../app-render/after-task-async-storage.external": +/*!***********************************************************************************!*\ + !*** external "next/dist/server/app-render/after-task-async-storage.external.js" ***! + \***********************************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/server/app-render/after-task-async-storage.external.js"); + +/***/ }), + +/***/ "../app-render/work-async-storage.external": +/*!*****************************************************************************!*\ + !*** external "next/dist/server/app-render/work-async-storage.external.js" ***! + \*****************************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/server/app-render/work-async-storage.external.js"); + +/***/ }), + +/***/ "./work-unit-async-storage.external": +/*!**********************************************************************************!*\ + !*** external "next/dist/server/app-render/work-unit-async-storage.external.js" ***! + \**********************************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js"); + +/***/ }), + +/***/ "fs": +/*!*********************!*\ + !*** external "fs" ***! + \*********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("fs"); + +/***/ }), + +/***/ "path": +/*!***********************!*\ + !*** external "path" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("path"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fapi%2Fmonitor%2Froute&page=%2Fapi%2Fmonitor%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fmonitor%2Froute.ts&appDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!": +/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fapi%2Fmonitor%2Froute&page=%2Fapi%2Fmonitor%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fmonitor%2Froute.ts&appDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor&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 */ patchFetch: () => (/* binding */ patchFetch),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ serverHooks: () => (/* binding */ serverHooks),\n/* harmony export */ workAsyncStorage: () => (/* binding */ workAsyncStorage),\n/* harmony export */ workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/route-modules/app-route/module.compiled */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-route/module.compiled.js\");\n/* harmony import */ var next_dist_server_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/route-kind */ \"(rsc)/./node_modules/next/dist/server/route-kind.js\");\n/* harmony import */ var next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/server/lib/patch-fetch */ \"(rsc)/./node_modules/next/dist/server/lib/patch-fetch.js\");\n/* harmony import */ var next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _Users_mattbruce_Documents_Projects_OpenClaw_Web_heartbeat_monitor_src_app_api_monitor_route_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./src/app/api/monitor/route.ts */ \"(rsc)/./src/app/api/monitor/route.ts\");\n\n\n\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"\"\nconst routeModule = new next_dist_server_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppRouteRouteModule({\n definition: {\n kind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_ROUTE,\n page: \"/api/monitor/route\",\n pathname: \"/api/monitor\",\n filename: \"route\",\n bundlePath: \"app/api/monitor/route\"\n },\n resolvedPagePath: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/api/monitor/route.ts\",\n nextConfigOutput,\n userland: _Users_mattbruce_Documents_Projects_OpenClaw_Web_heartbeat_monitor_src_app_api_monitor_route_ts__WEBPACK_IMPORTED_MODULE_3__\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule;\nfunction patchFetch() {\n return (0,next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__.patchFetch)({\n workAsyncStorage,\n workUnitAsyncStorage\n });\n}\n\n\n//# sourceMappingURL=app-route.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXIvaW5kZXguanM/bmFtZT1hcHAlMkZhcGklMkZtb25pdG9yJTJGcm91dGUmcGFnZT0lMkZhcGklMkZtb25pdG9yJTJGcm91dGUmYXBwUGF0aHM9JnBhZ2VQYXRoPXByaXZhdGUtbmV4dC1hcHAtZGlyJTJGYXBpJTJGbW9uaXRvciUyRnJvdXRlLnRzJmFwcERpcj0lMkZVc2VycyUyRm1hdHRicnVjZSUyRkRvY3VtZW50cyUyRlByb2plY3RzJTJGT3BlbkNsYXclMkZXZWIlMkZoZWFydGJlYXQtbW9uaXRvciUyRnNyYyUyRmFwcCZwYWdlRXh0ZW5zaW9ucz10c3gmcGFnZUV4dGVuc2lvbnM9dHMmcGFnZUV4dGVuc2lvbnM9anN4JnBhZ2VFeHRlbnNpb25zPWpzJnJvb3REaXI9JTJGVXNlcnMlMkZtYXR0YnJ1Y2UlMkZEb2N1bWVudHMlMkZQcm9qZWN0cyUyRk9wZW5DbGF3JTJGV2ViJTJGaGVhcnRiZWF0LW1vbml0b3ImaXNEZXY9dHJ1ZSZ0c2NvbmZpZ1BhdGg9dHNjb25maWcuanNvbiZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JnByZWZlcnJlZFJlZ2lvbj0mbWlkZGxld2FyZUNvbmZpZz1lMzAlM0QhIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQStGO0FBQ3ZDO0FBQ3FCO0FBQytDO0FBQzVIO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix5R0FBbUI7QUFDM0M7QUFDQSxjQUFjLGtFQUFTO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxZQUFZO0FBQ1osQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLFFBQVEsc0RBQXNEO0FBQzlEO0FBQ0EsV0FBVyw0RUFBVztBQUN0QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQzBGOztBQUUxRiIsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcFJvdXRlUm91dGVNb2R1bGUgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1yb3V0ZS9tb2R1bGUuY29tcGlsZWRcIjtcbmltcG9ydCB7IFJvdXRlS2luZCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL3JvdXRlLWtpbmRcIjtcbmltcG9ydCB7IHBhdGNoRmV0Y2ggYXMgX3BhdGNoRmV0Y2ggfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9saWIvcGF0Y2gtZmV0Y2hcIjtcbmltcG9ydCAqIGFzIHVzZXJsYW5kIGZyb20gXCIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivc3JjL2FwcC9hcGkvbW9uaXRvci9yb3V0ZS50c1wiO1xuLy8gV2UgaW5qZWN0IHRoZSBuZXh0Q29uZmlnT3V0cHV0IGhlcmUgc28gdGhhdCB3ZSBjYW4gdXNlIHRoZW0gaW4gdGhlIHJvdXRlXG4vLyBtb2R1bGUuXG5jb25zdCBuZXh0Q29uZmlnT3V0cHV0ID0gXCJcIlxuY29uc3Qgcm91dGVNb2R1bGUgPSBuZXcgQXBwUm91dGVSb3V0ZU1vZHVsZSh7XG4gICAgZGVmaW5pdGlvbjoge1xuICAgICAgICBraW5kOiBSb3V0ZUtpbmQuQVBQX1JPVVRFLFxuICAgICAgICBwYWdlOiBcIi9hcGkvbW9uaXRvci9yb3V0ZVwiLFxuICAgICAgICBwYXRobmFtZTogXCIvYXBpL21vbml0b3JcIixcbiAgICAgICAgZmlsZW5hbWU6IFwicm91dGVcIixcbiAgICAgICAgYnVuZGxlUGF0aDogXCJhcHAvYXBpL21vbml0b3Ivcm91dGVcIlxuICAgIH0sXG4gICAgcmVzb2x2ZWRQYWdlUGF0aDogXCIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivc3JjL2FwcC9hcGkvbW9uaXRvci9yb3V0ZS50c1wiLFxuICAgIG5leHRDb25maWdPdXRwdXQsXG4gICAgdXNlcmxhbmRcbn0pO1xuLy8gUHVsbCBvdXQgdGhlIGV4cG9ydHMgdGhhdCB3ZSBuZWVkIHRvIGV4cG9zZSBmcm9tIHRoZSBtb2R1bGUuIFRoaXMgc2hvdWxkXG4vLyBiZSBlbGltaW5hdGVkIHdoZW4gd2UndmUgbW92ZWQgdGhlIG90aGVyIHJvdXRlcyB0byB0aGUgbmV3IGZvcm1hdC4gVGhlc2Vcbi8vIGFyZSB1c2VkIHRvIGhvb2sgaW50byB0aGUgcm91dGUuXG5jb25zdCB7IHdvcmtBc3luY1N0b3JhZ2UsIHdvcmtVbml0QXN5bmNTdG9yYWdlLCBzZXJ2ZXJIb29rcyB9ID0gcm91dGVNb2R1bGU7XG5mdW5jdGlvbiBwYXRjaEZldGNoKCkge1xuICAgIHJldHVybiBfcGF0Y2hGZXRjaCh7XG4gICAgICAgIHdvcmtBc3luY1N0b3JhZ2UsXG4gICAgICAgIHdvcmtVbml0QXN5bmNTdG9yYWdlXG4gICAgfSk7XG59XG5leHBvcnQgeyByb3V0ZU1vZHVsZSwgd29ya0FzeW5jU3RvcmFnZSwgd29ya1VuaXRBc3luY1N0b3JhZ2UsIHNlcnZlckhvb2tzLCBwYXRjaEZldGNoLCAgfTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLXJvdXRlLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fapi%2Fmonitor%2Froute&page=%2Fapi%2Fmonitor%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fmonitor%2Froute.ts&appDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!\n"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?server=true!": +/*!******************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?server=true! ***! + \******************************************************************************************************/ +/***/ (() => { + + + +/***/ }), + +/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?server=true!": +/*!******************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?server=true! ***! + \******************************************************************************************************/ +/***/ (() => { + + + +/***/ }), + +/***/ "(rsc)/./src/app/api/monitor/route.ts": +/*!**************************************!*\ + !*** ./src/app/api/monitor/route.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 */ GET: () => (/* binding */ GET),\n/* harmony export */ POST: () => (/* binding */ POST)\n/* harmony export */ });\n/* harmony import */ var next_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/server */ \"(rsc)/./node_modules/next/dist/api/server.js\");\n/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fs */ \"fs\");\n/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! path */ \"path\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nconst APPS_FILE = (0,path__WEBPACK_IMPORTED_MODULE_2__.join)(process.cwd(), \"data\", \"apps.json\");\nconst STATUS_FILE = (0,path__WEBPACK_IMPORTED_MODULE_2__.join)(process.cwd(), \"data\", \"status.json\");\nfunction getApps() {\n if (!(0,fs__WEBPACK_IMPORTED_MODULE_1__.existsSync)(APPS_FILE)) return [];\n try {\n const data = JSON.parse((0,fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync)(APPS_FILE, \"utf-8\"));\n return data.apps || [];\n } catch {\n return [];\n }\n}\nfunction saveApps(apps) {\n const dir = (0,path__WEBPACK_IMPORTED_MODULE_2__.join)(process.cwd(), \"data\");\n if (!(0,fs__WEBPACK_IMPORTED_MODULE_1__.existsSync)(dir)) (__webpack_require__(/*! fs */ \"fs\").mkdirSync)(dir, {\n recursive: true\n });\n (0,fs__WEBPACK_IMPORTED_MODULE_1__.writeFileSync)(APPS_FILE, JSON.stringify({\n apps\n }, null, 2));\n}\nfunction getStatus() {\n if (!(0,fs__WEBPACK_IMPORTED_MODULE_1__.existsSync)(STATUS_FILE)) return [];\n try {\n const data = JSON.parse((0,fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync)(STATUS_FILE, \"utf-8\"));\n return data.entries || [];\n } catch {\n return [];\n }\n}\nfunction saveStatus(entries) {\n const dir = (0,path__WEBPACK_IMPORTED_MODULE_2__.join)(process.cwd(), \"data\");\n if (!(0,fs__WEBPACK_IMPORTED_MODULE_1__.existsSync)(dir)) (__webpack_require__(/*! fs */ \"fs\").mkdirSync)(dir, {\n recursive: true\n });\n (0,fs__WEBPACK_IMPORTED_MODULE_1__.writeFileSync)(STATUS_FILE, JSON.stringify({\n entries\n }, null, 2));\n}\nasync function GET(request) {\n const { searchParams } = new URL(request.url);\n const type = searchParams.get(\"type\");\n if (type === \"apps\") {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n apps: getApps()\n });\n }\n if (type === \"status\") {\n const appId = searchParams.get(\"appId\");\n const entries = getStatus();\n if (appId) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n entries: entries.filter((e)=>e.appId === appId).slice(-100)\n });\n }\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n entries: entries.slice(-500)\n });\n }\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n apps: getApps(),\n status: getStatus().slice(-100)\n });\n}\nasync function POST(request) {\n const body = await request.json();\n if (body.action === \"addApp\") {\n const apps = getApps();\n const newApp = {\n ...body.app,\n id: body.app.id || Date.now().toString()\n };\n apps.push(newApp);\n saveApps(apps);\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json(newApp);\n }\n if (body.action === \"updateApp\") {\n const apps = getApps();\n const index = apps.findIndex((a)=>a.id === body.id);\n if (index >= 0) {\n apps[index] = {\n ...apps[index],\n ...body.updates\n };\n saveApps(apps);\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json(apps[index]);\n }\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"App not found\"\n }, {\n status: 404\n });\n }\n if (body.action === \"deleteApp\") {\n const apps = getApps().filter((a)=>a.id !== body.id);\n saveApps(apps);\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n success: true\n });\n }\n if (body.action === \"recordStatus\") {\n const entries = getStatus();\n entries.push(body.entry);\n // Keep last 1000 entries\n if (entries.length > 1000) entries.shift();\n saveStatus(entries);\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n success: true\n });\n }\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Unknown action\"\n }, {\n status: 400\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LHFEQUFZQSxDQUFDOEIsSUFBSSxDQUFDO1FBQUVvQixPQUFPO0lBQWlCLEdBQUc7UUFBRWYsUUFBUTtJQUFJO0FBQ3RFIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivc3JjL2FwcC9hcGkvbW9uaXRvci9yb3V0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZXh0UmVzcG9uc2UgfSBmcm9tIFwibmV4dC9zZXJ2ZXJcIjtcbmltcG9ydCB7IHJlYWRGaWxlU3luYywgd3JpdGVGaWxlU3luYywgZXhpc3RzU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJwYXRoXCI7XG5cbmNvbnN0IEFQUFNfRklMRSA9IGpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJkYXRhXCIsIFwiYXBwcy5qc29uXCIpO1xuY29uc3QgU1RBVFVTX0ZJTEUgPSBqb2luKHByb2Nlc3MuY3dkKCksIFwiZGF0YVwiLCBcInN0YXR1cy5qc29uXCIpO1xuXG5pbnRlcmZhY2UgQXBwIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgcG9ydDogbnVtYmVyO1xuICBwYXRoOiBzdHJpbmc7XG4gIGNvbW1hbmQ6IHN0cmluZztcbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgZW5hYmxlZDogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFN0YXR1c0VudHJ5IHtcbiAgYXBwSWQ6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHN0YXR1czogXCJ1cFwiIHwgXCJkb3duXCI7XG4gIHJlc3BvbnNlVGltZT86IG51bWJlcjtcbiAgZXJyb3I/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBBcHBzRGF0YSB7XG4gIGFwcHM6IEFwcFtdO1xufVxuXG5pbnRlcmZhY2UgU3RhdHVzRGF0YSB7XG4gIGVudHJpZXM6IFN0YXR1c0VudHJ5W107XG59XG5cbmZ1bmN0aW9uIGdldEFwcHMoKTogQXBwW10ge1xuICBpZiAoIWV4aXN0c1N5bmMoQVBQU19GSUxFKSkgcmV0dXJuIFtdO1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhBUFBTX0ZJTEUsIFwidXRmLThcIikpO1xuICAgIHJldHVybiBkYXRhLmFwcHMgfHwgW107XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzYXZlQXBwcyhhcHBzOiBBcHBbXSkge1xuICBjb25zdCBkaXIgPSBqb2luKHByb2Nlc3MuY3dkKCksIFwiZGF0YVwiKTtcbiAgaWYgKCFleGlzdHNTeW5jKGRpcikpIHJlcXVpcmUoXCJmc1wiKS5ta2RpclN5bmMoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgd3JpdGVGaWxlU3luYyhBUFBTX0ZJTEUsIEpTT04uc3RyaW5naWZ5KHsgYXBwcyB9LCBudWxsLCAyKSk7XG59XG5cbmZ1bmN0aW9uIGdldFN0YXR1cygpOiBTdGF0dXNFbnRyeVtdIHtcbiAgaWYgKCFleGlzdHNTeW5jKFNUQVRVU19GSUxFKSkgcmV0dXJuIFtdO1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhTVEFUVVNfRklMRSwgXCJ1dGYtOFwiKSk7XG4gICAgcmV0dXJuIGRhdGEuZW50cmllcyB8fCBbXTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNhdmVTdGF0dXMoZW50cmllczogU3RhdHVzRW50cnlbXSkge1xuICBjb25zdCBkaXIgPSBqb2luKHByb2Nlc3MuY3dkKCksIFwiZGF0YVwiKTtcbiAgaWYgKCFleGlzdHNTeW5jKGRpcikpIHJlcXVpcmUoXCJmc1wiKS5ta2RpclN5bmMoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgd3JpdGVGaWxlU3luYyhTVEFUVVNfRklMRSwgSlNPTi5zdHJpbmdpZnkoeyBlbnRyaWVzIH0sIG51bGwsIDIpKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIEdFVChyZXF1ZXN0OiBSZXF1ZXN0KSB7XG4gIGNvbnN0IHsgc2VhcmNoUGFyYW1zIH0gPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcbiAgY29uc3QgdHlwZSA9IHNlYXJjaFBhcmFtcy5nZXQoXCJ0eXBlXCIpO1xuXG4gIGlmICh0eXBlID09PSBcImFwcHNcIikge1xuICAgIHJldHVybiBOZXh0UmVzcG9uc2UuanNvbih7IGFwcHM6IGdldEFwcHMoKSB9KTtcbiAgfVxuXG4gIGlmICh0eXBlID09PSBcInN0YXR1c1wiKSB7XG4gICAgY29uc3QgYXBwSWQgPSBzZWFyY2hQYXJhbXMuZ2V0KFwiYXBwSWRcIik7XG4gICAgY29uc3QgZW50cmllcyA9IGdldFN0YXR1cygpO1xuICAgIGlmIChhcHBJZCkge1xuICAgICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKHtcbiAgICAgICAgZW50cmllczogZW50cmllcy5maWx0ZXIoKGUpID0+IGUuYXBwSWQgPT09IGFwcElkKS5zbGljZSgtMTAwKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gTmV4dFJlc3BvbnNlLmpzb24oeyBlbnRyaWVzOiBlbnRyaWVzLnNsaWNlKC01MDApIH0pO1xuICB9XG5cbiAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKHsgYXBwczogZ2V0QXBwcygpLCBzdGF0dXM6IGdldFN0YXR1cygpLnNsaWNlKC0xMDApIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gUE9TVChyZXF1ZXN0OiBSZXF1ZXN0KSB7XG4gIGNvbnN0IGJvZHkgPSBhd2FpdCByZXF1ZXN0Lmpzb24oKTtcblxuICBpZiAoYm9keS5hY3Rpb24gPT09IFwiYWRkQXBwXCIpIHtcbiAgICBjb25zdCBhcHBzID0gZ2V0QXBwcygpO1xuICAgIGNvbnN0IG5ld0FwcDogQXBwID0ge1xuICAgICAgLi4uYm9keS5hcHAsXG4gICAgICBpZDogYm9keS5hcHAuaWQgfHwgRGF0ZS5ub3coKS50b1N0cmluZygpLFxuICAgIH07XG4gICAgYXBwcy5wdXNoKG5ld0FwcCk7XG4gICAgc2F2ZUFwcHMoYXBwcyk7XG4gICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKG5ld0FwcCk7XG4gIH1cblxuICBpZiAoYm9keS5hY3Rpb24gPT09IFwidXBkYXRlQXBwXCIpIHtcbiAgICBjb25zdCBhcHBzID0gZ2V0QXBwcygpO1xuICAgIGNvbnN0IGluZGV4ID0gYXBwcy5maW5kSW5kZXgoKGEpID0+IGEuaWQgPT09IGJvZHkuaWQpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBhcHBzW2luZGV4XSA9IHsgLi4uYXBwc1tpbmRleF0sIC4uLmJvZHkudXBkYXRlcyB9O1xuICAgICAgc2F2ZUFwcHMoYXBwcyk7XG4gICAgICByZXR1cm4gTmV4dFJlc3BvbnNlLmpzb24oYXBwc1tpbmRleF0pO1xuICAgIH1cbiAgICByZXR1cm4gTmV4dFJlc3BvbnNlLmpzb24oeyBlcnJvcjogXCJBcHAgbm90IGZvdW5kXCIgfSwgeyBzdGF0dXM6IDQwNCB9KTtcbiAgfVxuXG4gIGlmIChib2R5LmFjdGlvbiA9PT0gXCJkZWxldGVBcHBcIikge1xuICAgIGNvbnN0IGFwcHMgPSBnZXRBcHBzKCkuZmlsdGVyKChhKSA9PiBhLmlkICE9PSBib2R5LmlkKTtcbiAgICBzYXZlQXBwcyhhcHBzKTtcbiAgICByZXR1cm4gTmV4dFJlc3BvbnNlLmpzb24oeyBzdWNjZXNzOiB0cnVlIH0pO1xuICB9XG5cbiAgaWYgKGJvZHkuYWN0aW9uID09PSBcInJlY29yZFN0YXR1c1wiKSB7XG4gICAgY29uc3QgZW50cmllcyA9IGdldFN0YXR1cygpO1xuICAgIGVudHJpZXMucHVzaChib2R5LmVudHJ5KTtcbiAgICAvLyBLZWVwIGxhc3QgMTAwMCBlbnRyaWVzXG4gICAgaWYgKGVudHJpZXMubGVuZ3RoID4gMTAwMCkgZW50cmllcy5zaGlmdCgpO1xuICAgIHNhdmVTdGF0dXMoZW50cmllcyk7XG4gICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKHsgc3VjY2VzczogdHJ1ZSB9KTtcbiAgfVxuXG4gIHJldHVybiBOZXh0UmVzcG9uc2UuanNvbih7IGVycm9yOiBcIlVua25vd24gYWN0aW9uXCIgfSwgeyBzdGF0dXM6IDQwMCB9KTtcbn1cbiJdLCJuYW1lcyI6WyJOZXh0UmVzcG9uc2UiLCJyZWFkRmlsZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwiZXhpc3RzU3luYyIsImpvaW4iLCJBUFBTX0ZJTEUiLCJwcm9jZXNzIiwiY3dkIiwiU1RBVFVTX0ZJTEUiLCJnZXRBcHBzIiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsImFwcHMiLCJzYXZlQXBwcyIsImRpciIsInJlcXVpcmUiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJzdHJpbmdpZnkiLCJnZXRTdGF0dXMiLCJlbnRyaWVzIiwic2F2ZVN0YXR1cyIsIkdFVCIsInJlcXVlc3QiLCJzZWFyY2hQYXJhbXMiLCJVUkwiLCJ1cmwiLCJ0eXBlIiwiZ2V0IiwianNvbiIsImFwcElkIiwiZmlsdGVyIiwiZSIsInNsaWNlIiwic3RhdHVzIiwiUE9TVCIsImJvZHkiLCJhY3Rpb24iLCJuZXdBcHAiLCJhcHAiLCJpZCIsIkRhdGUiLCJub3ciLCJ0b1N0cmluZyIsInB1c2giLCJpbmRleCIsImZpbmRJbmRleCIsImEiLCJ1cGRhdGVzIiwiZXJyb3IiLCJzdWNjZXNzIiwiZW50cnkiLCJsZW5ndGgiLCJzaGlmdCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./src/app/api/monitor/route.ts\n"); + +/***/ }) + +}; +; + +// load runtime +var __webpack_require__ = require("../../../webpack-runtime.js"); +__webpack_require__.C(exports); +var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) +var __webpack_exports__ = __webpack_require__.X(0, ["vendor-chunks/next"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fapi%2Fmonitor%2Froute&page=%2Fapi%2Fmonitor%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fmonitor%2Froute.ts&appDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor&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/api/monitor/route_client-reference-manifest.js b/.next/server/app/api/monitor/route_client-reference-manifest.js new file mode 100644 index 00000000..d234bf06 --- /dev/null +++ b/.next/server/app/api/monitor/route_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/monitor/route"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./src/app/page.tsx":{"*":{"id":"(ssr)/./src/app/page.tsx","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/client-segment.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-segment.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/http-access-fallback/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/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/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)/./node_modules/next/dist/lib/metadata/metadata-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/lib/metadata/metadata-boundary.js","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/globals.css":{"id":"(app-pages-browser)/./src/app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx":{"id":"(app-pages-browser)/./src/app/page.tsx","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/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/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/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/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/next/dist/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/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/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/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/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/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/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/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/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/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/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/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/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/next/dist/lib/metadata/metadata-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/metadata-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/next/dist/esm/lib/metadata/metadata-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/lib/metadata/metadata-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false}},"entryCSSFiles":{"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/":[],"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/layout":[{"inlined":false,"path":"static/css/app/layout.css"}],"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page":[],"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/api/monitor/route":[]},"rscModuleMapping":{"(app-pages-browser)/./src/app/globals.css":{"*":{"id":"(rsc)/./src/app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./src/app/page.tsx":{"*":{"id":"(rsc)/./src/app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-segment.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/client-segment.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/lib/metadata/metadata-boundary.js":{"*":{"id":"(rsc)/./node_modules/next/dist/lib/metadata/metadata-boundary.js","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}} \ No newline at end of file diff --git a/.next/server/app/page.js b/.next/server/app/page.js index e5e0b477..cd91689c 100644 --- a/.next/server/app/page.js +++ b/.next/server/app/page.js @@ -156,7 +156,7 @@ eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__web /***/ ((__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 */ Dashboard)\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/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/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 framer_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! framer-motion */ \"(ssr)/./node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! framer-motion */ \"(ssr)/./node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(ssr)/./node_modules/recharts/es6/component/ResponsiveContainer.js\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(ssr)/./node_modules/recharts/es6/chart/LineChart.js\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(ssr)/./node_modules/recharts/es6/cartesian/Line.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/server.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/external-link.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/clock.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/refresh-cw.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/settings.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/trash-2.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/layout-dashboard.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/monitor.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/triangle-alert.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/history.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/activity.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/chevron-right.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/chevron-left.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/search.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/plus.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/bell.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/circle-check.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/zap.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\n// Mock data generator for sparklines\nconst generateSparklineData = (points, isUp)=>{\n return Array.from({\n length: points\n }, (_, i)=>({\n value: isUp ? 80 + Math.random() * 20 : Math.random() * 30,\n time: i\n }));\n};\n// Components\nconst SidebarItem = ({ item, isActive, isCollapsed, onClick })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.button, {\n onClick: onClick,\n whileHover: {\n x: 2\n },\n whileTap: {\n scale: 0.98\n },\n className: `w-full flex items-center gap-3 px-3 py-2.5 rounded-lg transition-all duration-200 ${isActive ? \"bg-emerald-500/10 text-emerald-400 border border-emerald-500/20\" : \"text-slate-400 hover:text-slate-100 hover:bg-slate-800/50\"}`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"flex-shrink-0\",\n children: item.icon\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 96,\n columnNumber: 5\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.AnimatePresence, {\n mode: \"wait\",\n children: !isCollapsed && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.span, {\n initial: {\n opacity: 0,\n width: 0\n },\n animate: {\n opacity: 1,\n width: \"auto\"\n },\n exit: {\n opacity: 0,\n width: 0\n },\n className: \"text-sm font-medium whitespace-nowrap overflow-hidden\",\n children: item.label\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 99,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 97,\n columnNumber: 5\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 86,\n columnNumber: 3\n }, undefined);\nconst MetricCard = ({ title, value, subtitle, icon: Icon, color, data, trend })=>{\n const colorClasses = {\n emerald: \"from-emerald-500/20 to-emerald-500/5 border-emerald-500/20\",\n blue: \"from-blue-500/20 to-blue-500/5 border-blue-500/20\",\n purple: \"from-purple-500/20 to-purple-500/5 border-purple-500/20\",\n amber: \"from-amber-500/20 to-amber-500/5 border-amber-500/20\"\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n whileHover: {\n y: -4,\n transition: {\n duration: 0.2\n }\n },\n className: `relative overflow-hidden rounded-xl border bg-gradient-to-br p-5 ${colorClasses[color]} backdrop-blur-sm`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start 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-slate-400 text-sm font-medium mb-1\",\n children: title\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 143,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-3xl font-bold text-white\",\n children: value\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 144,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 mt-2\",\n children: [\n trend && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `text-xs ${trend === \"up\" ? \"text-emerald-400\" : trend === \"down\" ? \"text-red-400\" : \"text-slate-400\"}`,\n children: trend === \"up\" ? \"↑\" : trend === \"down\" ? \"↓\" : \"→\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 147,\n columnNumber: 15\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-slate-500 text-xs\",\n children: subtitle\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 151,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 145,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 142,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `p-2.5 rounded-lg bg-${color}-500/10`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Icon, {\n className: `w-5 h-5 text-${color}-400`,\n style: {\n color: color === \"emerald\" ? \"#34d399\" : color === \"blue\" ? \"#60a5fa\" : color === \"purple\" ? \"#a78bfa\" : \"#fbbf24\"\n }\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 155,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 154,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 141,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 h-12\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__.ResponsiveContainer, {\n width: \"100%\",\n height: \"100%\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__.LineChart, {\n data: data,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_6__.Line, {\n type: \"monotone\",\n dataKey: \"value\",\n stroke: color === \"emerald\" ? \"#34d399\" : color === \"blue\" ? \"#60a5fa\" : color === \"purple\" ? \"#a78bfa\" : \"#fbbf24\",\n strokeWidth: 2,\n dot: false\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 162,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 161,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 160,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 159,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 137,\n columnNumber: 5\n }, undefined);\n};\nconst ServiceCard = ({ app, status, onDelete })=>{\n const [isHovered, setIsHovered] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const sparklineData = generateSparklineData(12, status.isUp);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n layout: true,\n initial: {\n opacity: 0,\n scale: 0.95\n },\n animate: {\n opacity: 1,\n scale: 1\n },\n exit: {\n opacity: 0,\n scale: 0.95\n },\n whileHover: {\n y: -2\n },\n onHoverStart: ()=>setIsHovered(true),\n onHoverEnd: ()=>setIsHovered(false),\n className: \"group relative bg-slate-900/50 border border-slate-800 rounded-xl p-5 hover:border-slate-700 transition-all duration-300\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `absolute top-0 left-4 right-4 h-0.5 rounded-full ${status.isUp ? \"bg-emerald-500\" : \"bg-red-500\"}`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 200,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between mb-4\",\n children: [\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: `w-10 h-10 rounded-lg flex items-center justify-center ${status.isUp ? \"bg-emerald-500/10\" : \"bg-red-500/10\"}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: `w-5 h-5 ${status.isUp ? \"text-emerald-400\" : \"text-red-400\"}`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 205,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 204,\n columnNumber: 11\n }, undefined),\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)(\"h3\", {\n className: \"font-semibold text-white flex items-center gap-2\",\n children: [\n app.name,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: app.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"text-slate-500 hover:text-emerald-400 transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"w-3.5 h-3.5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 211,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 210,\n columnNumber: 15\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 208,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-slate-500\",\n children: [\n \"Port \",\n app.port\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 214,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 207,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 203,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium border ${status.isUp ? \"bg-emerald-500/10 border-emerald-500/20 text-emerald-400\" : \"bg-red-500/10 border-red-500/20 text-red-400\"}`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative flex h-1.5 w-1.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `animate-ping absolute inline-flex h-full w-full rounded-full opacity-75 ${status.isUp ? \"bg-emerald-400\" : \"bg-red-400\"}`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 224,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `relative inline-flex rounded-full h-1.5 w-1.5 ${status.isUp ? \"bg-emerald-500\" : \"bg-red-500\"}`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 225,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 223,\n columnNumber: 11\n }, undefined),\n status.isUp ? \"Operational\" : \"Down\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 218,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 202,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-1.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-slate-400\",\n children: \"Uptime\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 236,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-semibold text-white\",\n children: [\n status.uptime,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 237,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 235,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-1.5 w-full bg-slate-800 rounded-full overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n width: 0\n },\n animate: {\n width: `${status.uptime}%`\n },\n transition: {\n duration: 1,\n delay: 0.2\n },\n className: `h-full rounded-full ${status.uptime > 95 ? \"bg-emerald-500\" : status.uptime > 80 ? \"bg-amber-500\" : \"bg-red-500\"}`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 240,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 239,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 234,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-slate-400\",\n children: \"Response Time\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 251,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg font-semibold text-white\",\n children: status.avgResponseTime > 0 ? `${status.avgResponseTime}ms` : \"—\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 252,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 250,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-10 -mx-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__.ResponsiveContainer, {\n width: \"100%\",\n height: \"100%\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__.LineChart, {\n data: sparklineData,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_6__.Line, {\n type: \"monotone\",\n dataKey: \"value\",\n stroke: status.isUp ? \"#34d399\" : \"#f87171\",\n strokeWidth: 1.5,\n dot: false\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 261,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 260,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 259,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 258,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between text-xs text-slate-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"w-3 h-3\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 275,\n columnNumber: 13\n }, undefined),\n status.latest ? new Date(status.latest.timestamp).toLocaleTimeString() : \"Never\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 274,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.AnimatePresence, {\n children: isHovered && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n x: 10\n },\n animate: {\n opacity: 1,\n x: 0\n },\n exit: {\n opacity: 0,\n x: 10\n },\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-1.5 text-slate-400 hover:text-white hover:bg-slate-800 rounded transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"w-3.5 h-3.5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 289,\n columnNumber: 19\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 288,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-1.5 text-slate-400 hover:text-white hover:bg-slate-800 rounded transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"w-3.5 h-3.5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 292,\n columnNumber: 19\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 291,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: onDelete,\n className: \"p-1.5 text-slate-400 hover:text-red-400 hover:bg-red-500/10 rounded transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"w-3.5 h-3.5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 298,\n columnNumber: 19\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 294,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 282,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 280,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 273,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 232,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 189,\n columnNumber: 5\n }, undefined);\n};\nfunction Dashboard() {\n const [apps, setApps] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [status, setStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [sidebarCollapsed, setSidebarCollapsed] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [activeNav, setActiveNav] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"overview\");\n const [showAddModal, setShowAddModal] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [newApp, setNewApp] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n name: \"\",\n url: \"http://localhost:\",\n port: 3000,\n enabled: true\n });\n const navItems = [\n {\n id: \"overview\",\n label: \"Overview\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 324,\n columnNumber: 48\n }, this)\n },\n {\n id: \"services\",\n label: \"Monitored Services\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 325,\n columnNumber: 58\n }, this)\n },\n {\n id: \"incidents\",\n label: \"Incidents\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 326,\n columnNumber: 50\n }, this)\n },\n {\n id: \"history\",\n label: \"History / Logs\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 327,\n columnNumber: 53\n }, this)\n },\n {\n id: \"settings\",\n label: \"Settings\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 328,\n columnNumber: 48\n }, this)\n }\n ];\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Dashboard.useEffect\": ()=>{\n fetchData();\n const interval = setInterval(fetchData, 30000);\n return ({\n \"Dashboard.useEffect\": ()=>clearInterval(interval)\n })[\"Dashboard.useEffect\"];\n }\n }[\"Dashboard.useEffect\"], []);\n async function fetchData() {\n try {\n const res = await fetch(\"/api/monitor\");\n const data = await res.json();\n setApps(data.apps || []);\n setStatus(data.status || []);\n } catch (err) {\n console.error(\"Failed to fetch data:\", err);\n } finally{\n setLoading(false);\n }\n }\n async function addApp(e) {\n e.preventDefault();\n if (!newApp.name || !newApp.url) return;\n await fetch(\"/api/monitor\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n action: \"addApp\",\n app: newApp\n })\n });\n setShowAddModal(false);\n setNewApp({\n name: \"\",\n url: \"http://localhost:\",\n port: 3000,\n enabled: true\n });\n fetchData();\n }\n async function deleteApp(id) {\n if (!confirm(\"Delete this monitor?\")) return;\n await fetch(\"/api/monitor\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n action: \"deleteApp\",\n id\n })\n });\n fetchData();\n }\n function getAppStatus(appId) {\n const appStatus = status.filter((s)=>s.appId === appId);\n const latest = appStatus[appStatus.length - 1];\n const isUp = latest?.status === \"up\";\n const uptime = appStatus.length > 0 ? Math.round(appStatus.filter((s)=>s.status === \"up\").length / appStatus.length * 100) : 100;\n const avgResponseTime = appStatus.length > 0 ? Math.round(appStatus.filter((s)=>s.responseTime).reduce((acc, s)=>acc + (s.responseTime || 0), 0) / appStatus.filter((s)=>s.responseTime).length) || 0 : 0;\n return {\n latest,\n isUp,\n uptime,\n avgResponseTime\n };\n }\n const stats = {\n total: apps.length,\n online: apps.filter((app)=>getAppStatus(app.id).isUp).length,\n offline: apps.filter((app)=>!getAppStatus(app.id).isUp).length,\n avgUptime: apps.length > 0 ? Math.round(apps.reduce((acc, app)=>acc + getAppStatus(app.id).uptime, 0) / apps.length) : 0,\n avgResponseTime: apps.length > 0 ? Math.round(apps.reduce((acc, app)=>acc + getAppStatus(app.id).avgResponseTime, 0) / apps.length) : 0,\n incidents: status.filter((s)=>s.status === \"down\").length\n };\n const allUp = stats.online === stats.total && stats.total > 0;\n // Generate sparkline data for metrics\n const servicesData = generateSparklineData(20, true);\n const uptimeData = generateSparklineData(20, true);\n const responseData = generateSparklineData(20, true).map((d)=>({\n ...d,\n value: d.value * 2\n }));\n const incidentsData = generateSparklineData(20, false);\n if (loading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-slate-950 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n className: \"flex flex-col items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n animate: {\n rotate: 360\n },\n transition: {\n duration: 2,\n repeat: Infinity,\n ease: \"linear\"\n },\n className: \"w-12 h-12 rounded-xl bg-gradient-to-br from-emerald-500 to-cyan-500\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 416,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 w-12 h-12 rounded-xl bg-gradient-to-br from-emerald-500 to-cyan-500 blur-xl opacity-50\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 421,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 415,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-400\",\n children: \"Loading dashboard...\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 423,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 410,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 409,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-slate-950 text-slate-100 flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.aside, {\n initial: false,\n animate: {\n width: sidebarCollapsed ? 72 : 240\n },\n className: \"fixed left-0 top-0 bottom-0 bg-slate-900/80 backdrop-blur-xl border-r border-slate-800 z-50 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-16 flex items-center px-4 border-b border-slate-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-8 rounded-lg bg-gradient-to-br from-emerald-500 to-cyan-500 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n className: \"w-4 h-4 text-white\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 440,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 439,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.AnimatePresence, {\n mode: \"wait\",\n children: !sidebarCollapsed && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.span, {\n initial: {\n opacity: 0,\n width: 0\n },\n animate: {\n opacity: 1,\n width: \"auto\"\n },\n exit: {\n opacity: 0,\n width: 0\n },\n className: \"ml-3 font-bold text-lg whitespace-nowrap overflow-hidden\",\n children: \"Heartbeat\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 444,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 442,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 438,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"flex-1 p-3 space-y-1\",\n children: navItems.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n item: item,\n isActive: activeNav === item.id,\n isCollapsed: sidebarCollapsed,\n onClick: ()=>setActiveNav(item.id)\n }, item.id, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 459,\n columnNumber: 13\n }, this))\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 457,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-3 border-t border-slate-800\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSidebarCollapsed(!sidebarCollapsed),\n className: \"w-full flex items-center justify-center p-2 text-slate-400 hover:text-white hover:bg-slate-800/50 rounded-lg transition-colors\",\n children: sidebarCollapsed ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 475,\n columnNumber: 33\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 475,\n columnNumber: 72\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 471,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 470,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 432,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"flex-1 min-h-screen transition-all duration-300\",\n style: {\n marginLeft: sidebarCollapsed ? 72 : 240\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"h-16 bg-slate-900/50 backdrop-blur-sm border-b border-slate-800 sticky top-0 z-40 px-6 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `flex items-center gap-2 px-3 py-1.5 rounded-full border ${allUp ? \"bg-emerald-500/10 border-emerald-500/20\" : \"bg-amber-500/10 border-amber-500/20\"}`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `relative flex h-2 w-2`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `animate-ping absolute inline-flex h-full w-full rounded-full opacity-75 ${allUp ? \"bg-emerald-400\" : \"bg-amber-400\"}`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 495,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `relative inline-flex rounded-full h-2 w-2 ${allUp ? \"bg-emerald-500\" : \"bg-amber-500\"}`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 496,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 494,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `text-sm font-medium ${allUp ? \"text-emerald-400\" : \"text-amber-400\"}`,\n children: allUp ? \"All Systems Operational\" : `${stats.offline} Service${stats.offline > 1 ? 's' : ''} Down`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 498,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-slate-500 text-xs\",\n children: [\n \"• Updated \",\n new Date().toLocaleTimeString()\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 501,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 489,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 488,\n columnNumber: 11\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: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n className: \"w-4 h-4 absolute left-3 top-1/2 -translate-y-1/2 text-slate-500\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 509,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n placeholder: \"Search...\",\n className: \"w-64 bg-slate-800/50 border border-slate-700 rounded-lg pl-10 pr-4 py-2 text-sm text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none transition-colors\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 510,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 508,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowAddModal(true),\n className: \"flex items-center gap-2 px-4 py-2 bg-emerald-600 hover:bg-emerald-500 text-white rounded-lg text-sm font-medium transition-colors\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 522,\n columnNumber: 15\n }, this),\n \"Add Monitor\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 518,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: fetchData,\n className: \"p-2 text-slate-400 hover:text-white hover:bg-slate-800 rounded-lg transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 531,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 527,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-2 text-slate-400 hover:text-white hover:bg-slate-800 rounded-lg transition-colors relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 536,\n columnNumber: 15\n }, this),\n stats.incidents > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"absolute top-1 right-1 w-2 h-2 bg-red-500 rounded-full\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 538,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 535,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-9 h-9 rounded-full bg-gradient-to-br from-emerald-500 to-cyan-500 flex items-center justify-center text-white font-medium text-sm\",\n children: \"MB\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 543,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 506,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 486,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6 space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MetricCard, {\n title: \"Services Online\",\n value: `${stats.online}/${stats.total}`,\n subtitle: allUp ? \"All healthy\" : `${stats.offline} down`,\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n color: \"emerald\",\n data: servicesData,\n trend: \"up\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 553,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MetricCard, {\n title: \"Average Uptime\",\n value: `${stats.avgUptime}%`,\n subtitle: \"Last 30 days\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_23__[\"default\"],\n color: \"blue\",\n data: uptimeData,\n trend: \"up\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 562,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MetricCard, {\n title: \"Avg Response Time\",\n value: `${stats.avgResponseTime}ms`,\n subtitle: \"Across all services\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_24__[\"default\"],\n color: \"purple\",\n data: responseData,\n trend: stats.avgResponseTime < 200 ? \"up\" : \"down\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 571,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MetricCard, {\n title: \"Total Incidents\",\n value: stats.incidents,\n subtitle: \"Last 24 hours\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n color: \"amber\",\n data: incidentsData,\n trend: stats.incidents === 0 ? \"up\" : \"down\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 580,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 552,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold text-white\",\n children: \"Monitored Services\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 594,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-slate-500\",\n children: [\n stats.total,\n \" services\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 595,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 593,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n layout: true,\n className: \"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.AnimatePresence, {\n mode: \"popLayout\",\n children: apps.map((app)=>{\n const appStatus = getAppStatus(app.id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ServiceCard, {\n app: app,\n status: appStatus,\n onDelete: ()=>deleteApp(app.id)\n }, app.id, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 606,\n columnNumber: 21\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 602,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 598,\n columnNumber: 13\n }, this),\n apps.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n y: 20\n },\n animate: {\n opacity: 1,\n y: 0\n },\n className: \"text-center py-16 bg-slate-900/30 rounded-xl border border-dashed border-slate-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-16 h-16 bg-slate-800 rounded-2xl flex items-center justify-center mx-auto mb-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n className: \"w-8 h-8 text-slate-600\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 624,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 623,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold text-white mb-2\",\n children: \"No monitors yet\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 626,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-500 mb-4\",\n children: \"Start monitoring your services\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 627,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowAddModal(true),\n className: \"px-4 py-2 bg-emerald-600 hover:bg-emerald-500 text-white rounded-lg transition-colors\",\n children: \"Add Your First Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 628,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 618,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 592,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 550,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 481,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.AnimatePresence, {\n children: showAddModal && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n exit: {\n opacity: 0\n },\n className: \"fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-50 p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n scale: 0.95,\n y: 20\n },\n animate: {\n opacity: 1,\n scale: 1,\n y: 0\n },\n exit: {\n opacity: 0,\n scale: 0.95,\n y: 20\n },\n className: \"bg-slate-900 border border-slate-800 rounded-xl p-6 w-full max-w-md shadow-2xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xl font-bold text-white mb-2\",\n children: \"Add New Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 655,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-400 text-sm mb-6\",\n children: \"Configure a new service to monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 656,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: addApp,\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-slate-300 mb-2\",\n children: \"Service Name\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 660,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: newApp.name,\n onChange: (e)=>setNewApp({\n ...newApp,\n name: e.target.value\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none transition-colors\",\n placeholder: \"My Service\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 661,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 659,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 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)(\"label\", {\n className: \"block text-sm font-medium text-slate-300 mb-2\",\n children: \"URL\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 673,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"url\",\n value: newApp.url,\n onChange: (e)=>setNewApp({\n ...newApp,\n url: e.target.value\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none transition-colors\",\n placeholder: \"http://localhost:3000\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 674,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 672,\n columnNumber: 19\n }, this),\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)(\"label\", {\n className: \"block text-sm font-medium text-slate-300 mb-2\",\n children: \"Port\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 684,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n value: newApp.port,\n onChange: (e)=>setNewApp({\n ...newApp,\n port: parseInt(e.target.value)\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none transition-colors\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 685,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 683,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 671,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-3 pt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setShowAddModal(false),\n className: \"flex-1 px-4 py-2.5 border border-slate-700 rounded-lg text-slate-300 hover:bg-slate-800 transition-colors\",\n children: \"Cancel\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 696,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n className: \"flex-1 px-4 py-2.5 bg-emerald-600 hover:bg-emerald-500 text-white rounded-lg font-medium transition-colors\",\n children: \"Add Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 703,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 695,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 658,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 649,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 643,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 641,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 430,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Z0RBQ0xuQyxTQUFTLElBQU00RSxnQkFBZ0I7Z0RBQy9CdEUsV0FBVTswREFDWDs7Ozs7OzBEQUdELDhEQUFDTDtnREFDQ2tDLE1BQUs7Z0RBQ0w3QixXQUFVOzBEQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV25CIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivc3JjL2FwcC9wYWdlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IG1vdGlvbiwgQW5pbWF0ZVByZXNlbmNlIH0gZnJvbSBcImZyYW1lci1tb3Rpb25cIjtcbmltcG9ydCB7XG4gIExpbmVDaGFydCxcbiAgTGluZSxcbiAgUmVzcG9uc2l2ZUNvbnRhaW5lcixcbiAgWUF4aXMsXG59IGZyb20gXCJyZWNoYXJ0c1wiO1xuaW1wb3J0IHtcbiAgQWN0aXZpdHksXG4gIFBsdXMsXG4gIFJlZnJlc2hDdyxcbiAgVHJhc2gyLFxuICBFeHRlcm5hbExpbmssXG4gIFNlYXJjaCxcbiAgQmVsbCxcbiAgU2V0dGluZ3MsXG4gIENoZXZyb25MZWZ0LFxuICBDaGV2cm9uUmlnaHQsXG4gIExheW91dERhc2hib2FyZCxcbiAgTW9uaXRvcixcbiAgQWxlcnRUcmlhbmdsZSxcbiAgSGlzdG9yeSxcbiAgTW9yZVZlcnRpY2FsLFxuICBDaGVja0NpcmNsZTIsXG4gIFhDaXJjbGUsXG4gIEFsZXJ0Q2lyY2xlLFxuICBDbG9jayxcbiAgWmFwLFxuICBUcmVuZGluZ1VwLFxuICBTZXJ2ZXIsXG4gIE1lbnUsXG59IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuLy8gVHlwZXNcbmludGVyZmFjZSBBcHAge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBwb3J0OiBudW1iZXI7XG4gIHBhdGg6IHN0cmluZztcbiAgY29tbWFuZDogc3RyaW5nO1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBjb2xvcjogc3RyaW5nO1xuICBlbmFibGVkOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgU3RhdHVzRW50cnkge1xuICBhcHBJZDogc3RyaW5nO1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgc3RhdHVzOiBcInVwXCIgfCBcImRvd25cIjtcbiAgcmVzcG9uc2VUaW1lPzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgTmF2SXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb246IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuLy8gTW9jayBkYXRhIGdlbmVyYXRvciBmb3Igc3BhcmtsaW5lc1xuY29uc3QgZ2VuZXJhdGVTcGFya2xpbmVEYXRhID0gKHBvaW50czogbnVtYmVyLCBpc1VwOiBib29sZWFuKSA9PiB7XG4gIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBwb2ludHMgfSwgKF8sIGkpID0+ICh7XG4gICAgdmFsdWU6IGlzVXAgXG4gICAgICA/IDgwICsgTWF0aC5yYW5kb20oKSAqIDIwIFxuICAgICAgOiBNYXRoLnJhbmRvbSgpICogMzAsXG4gICAgdGltZTogaSxcbiAgfSkpO1xufTtcblxuLy8gQ29tcG9uZW50c1xuY29uc3QgU2lkZWJhckl0ZW0gPSAoeyBcbiAgaXRlbSwgXG4gIGlzQWN0aXZlLCBcbiAgaXNDb2xsYXBzZWQsIFxuICBvbkNsaWNrIFxufTogeyBcbiAgaXRlbTogTmF2SXRlbTsgXG4gIGlzQWN0aXZlOiBib29sZWFuOyBcbiAgaXNDb2xsYXBzZWQ6IGJvb2xlYW47XG4gIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG59KSA9PiAoXG4gIDxtb3Rpb24uYnV0dG9uXG4gICAgb25DbGljaz17b25DbGlja31cbiAgICB3aGlsZUhvdmVyPXt7IHg6IDIgfX1cbiAgICB3aGlsZVRhcD17eyBzY2FsZTogMC45OCB9fVxuICAgIGNsYXNzTmFtZT17YHctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBweC0zIHB5LTIuNSByb3VuZGVkLWxnIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCAke1xuICAgICAgaXNBY3RpdmUgXG4gICAgICAgID8gXCJiZy1lbWVyYWxkLTUwMC8xMCB0ZXh0LWVtZXJhbGQtNDAwIGJvcmRlciBib3JkZXItZW1lcmFsZC01MDAvMjBcIiBcbiAgICAgICAgOiBcInRleHQtc2xhdGUtNDAwIGhvdmVyOnRleHQtc2xhdGUtMTAwIGhvdmVyOmJnLXNsYXRlLTgwMC81MFwiXG4gICAgfWB9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4LXNocmluay0wXCI+e2l0ZW0uaWNvbn08L3NwYW4+XG4gICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgeyFpc0NvbGxhcHNlZCAmJiAoXG4gICAgICAgIDxtb3Rpb24uc3BhblxuICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgd2lkdGg6IDAgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHdpZHRoOiBcImF1dG9cIiB9fVxuICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgd2lkdGg6IDAgfX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHdoaXRlc3BhY2Utbm93cmFwIG92ZXJmbG93LWhpZGRlblwiXG4gICAgICAgID5cbiAgICAgICAgICB7aXRlbS5sYWJlbH1cbiAgICAgICAgPC9tb3Rpb24uc3Bhbj5cbiAgICAgICl9XG4gICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gIDwvbW90aW9uLmJ1dHRvbj5cbik7XG5cbmNvbnN0IE1ldHJpY0NhcmQgPSAoeyBcbiAgdGl0bGUsIFxuICB2YWx1ZSwgXG4gIHN1YnRpdGxlLCBcbiAgaWNvbjogSWNvbiwgXG4gIGNvbG9yLCBcbiAgZGF0YSxcbiAgdHJlbmQgXG59OiB7IFxuICB0aXRsZTogc3RyaW5nOyBcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjsgXG4gIHN1YnRpdGxlOiBzdHJpbmc7XG4gIGljb246IGFueTtcbiAgY29sb3I6IHN0cmluZztcbiAgZGF0YTogYW55W107XG4gIHRyZW5kPzogXCJ1cFwiIHwgXCJkb3duXCIgfCBcIm5ldXRyYWxcIjtcbn0pID0+IHtcbiAgY29uc3QgY29sb3JDbGFzc2VzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGVtZXJhbGQ6IFwiZnJvbS1lbWVyYWxkLTUwMC8yMCB0by1lbWVyYWxkLTUwMC81IGJvcmRlci1lbWVyYWxkLTUwMC8yMFwiLFxuICAgIGJsdWU6IFwiZnJvbS1ibHVlLTUwMC8yMCB0by1ibHVlLTUwMC81IGJvcmRlci1ibHVlLTUwMC8yMFwiLFxuICAgIHB1cnBsZTogXCJmcm9tLXB1cnBsZS01MDAvMjAgdG8tcHVycGxlLTUwMC81IGJvcmRlci1wdXJwbGUtNTAwLzIwXCIsXG4gICAgYW1iZXI6IFwiZnJvbS1hbWJlci01MDAvMjAgdG8tYW1iZXItNTAwLzUgYm9yZGVyLWFtYmVyLTUwMC8yMFwiLFxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPG1vdGlvbi5kaXZcbiAgICAgIHdoaWxlSG92ZXI9e3sgeTogLTQsIHRyYW5zaXRpb246IHsgZHVyYXRpb246IDAuMiB9IH19XG4gICAgICBjbGFzc05hbWU9e2ByZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC14bCBib3JkZXIgYmctZ3JhZGllbnQtdG8tYnIgcC01ICR7Y29sb3JDbGFzc2VzW2NvbG9yXX0gYmFja2Ryb3AtYmx1ci1zbWB9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNDAwIHRleHQtc20gZm9udC1tZWRpdW0gbWItMVwiPnt0aXRsZX08L3A+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1ib2xkIHRleHQtd2hpdGVcIj57dmFsdWV9PC9wPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgbXQtMlwiPlxuICAgICAgICAgICAge3RyZW5kICYmIChcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgdGV4dC14cyAke3RyZW5kID09PSBcInVwXCIgPyBcInRleHQtZW1lcmFsZC00MDBcIiA6IHRyZW5kID09PSBcImRvd25cIiA/IFwidGV4dC1yZWQtNDAwXCIgOiBcInRleHQtc2xhdGUtNDAwXCJ9YH0+XG4gICAgICAgICAgICAgICAge3RyZW5kID09PSBcInVwXCIgPyBcIuKGkVwiIDogdHJlbmQgPT09IFwiZG93blwiID8gXCLihpNcIiA6IFwi4oaSXCJ9IFxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbGF0ZS01MDAgdGV4dC14c1wiPntzdWJ0aXRsZX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHAtMi41IHJvdW5kZWQtbGcgYmctJHtjb2xvcn0tNTAwLzEwYH0+XG4gICAgICAgICAgPEljb24gY2xhc3NOYW1lPXtgdy01IGgtNSB0ZXh0LSR7Y29sb3J9LTQwMGB9IHN0eWxlPXt7IGNvbG9yOiBjb2xvciA9PT0gXCJlbWVyYWxkXCIgPyBcIiMzNGQzOTlcIiA6IGNvbG9yID09PSBcImJsdWVcIiA/IFwiIzYwYTVmYVwiIDogY29sb3IgPT09IFwicHVycGxlXCIgPyBcIiNhNzhiZmFcIiA6IFwiI2ZiYmYyNFwiIH19IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBoLTEyXCI+XG4gICAgICAgIDxSZXNwb25zaXZlQ29udGFpbmVyIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIj5cbiAgICAgICAgICA8TGluZUNoYXJ0IGRhdGE9e2RhdGF9PlxuICAgICAgICAgICAgPExpbmVcbiAgICAgICAgICAgICAgdHlwZT1cIm1vbm90b25lXCJcbiAgICAgICAgICAgICAgZGF0YUtleT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPXtjb2xvciA9PT0gXCJlbWVyYWxkXCIgPyBcIiMzNGQzOTlcIiA6IGNvbG9yID09PSBcImJsdWVcIiA/IFwiIzYwYTVmYVwiIDogY29sb3IgPT09IFwicHVycGxlXCIgPyBcIiNhNzhiZmFcIiA6IFwiI2ZiYmYyNFwifVxuICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgICAgZG90PXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9MaW5lQ2hhcnQ+XG4gICAgICAgIDwvUmVzcG9uc2l2ZUNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbmNvbnN0IFNlcnZpY2VDYXJkID0gKHsgXG4gIGFwcCwgXG4gIHN0YXR1cywgXG4gIG9uRGVsZXRlIFxufTogeyBcbiAgYXBwOiBBcHA7IFxuICBzdGF0dXM6IHsgaXNVcDogYm9vbGVhbjsgdXB0aW1lOiBudW1iZXI7IGF2Z1Jlc3BvbnNlVGltZTogbnVtYmVyOyBsYXRlc3Q/OiBTdGF0dXNFbnRyeSB9OyBcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG59KSA9PiB7XG4gIGNvbnN0IFtpc0hvdmVyZWQsIHNldElzSG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNwYXJrbGluZURhdGEgPSBnZW5lcmF0ZVNwYXJrbGluZURhdGEoMTIsIHN0YXR1cy5pc1VwKTtcblxuICByZXR1cm4gKFxuICAgIDxtb3Rpb24uZGl2XG4gICAgICBsYXlvdXRcbiAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgc2NhbGU6IDAuOTUgfX1cbiAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgc2NhbGU6IDEgfX1cbiAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgc2NhbGU6IDAuOTUgfX1cbiAgICAgIHdoaWxlSG92ZXI9e3sgeTogLTIgfX1cbiAgICAgIG9uSG92ZXJTdGFydD17KCkgPT4gc2V0SXNIb3ZlcmVkKHRydWUpfVxuICAgICAgb25Ib3ZlckVuZD17KCkgPT4gc2V0SXNIb3ZlcmVkKGZhbHNlKX1cbiAgICAgIGNsYXNzTmFtZT1cImdyb3VwIHJlbGF0aXZlIGJnLXNsYXRlLTkwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTgwMCByb3VuZGVkLXhsIHAtNSBob3Zlcjpib3JkZXItc2xhdGUtNzAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMFwiXG4gICAgPlxuICAgICAgey8qIFN0YXR1cyBJbmRpY2F0b3IgTGluZSAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYWJzb2x1dGUgdG9wLTAgbGVmdC00IHJpZ2h0LTQgaC0wLjUgcm91bmRlZC1mdWxsICR7c3RhdHVzLmlzVXAgPyBcImJnLWVtZXJhbGQtNTAwXCIgOiBcImJnLXJlZC01MDBcIn1gfSAvPlxuICAgICAgXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIG1iLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy0xMCBoLTEwIHJvdW5kZWQtbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgJHtzdGF0dXMuaXNVcCA/IFwiYmctZW1lcmFsZC01MDAvMTBcIiA6IFwiYmctcmVkLTUwMC8xMFwifWB9PlxuICAgICAgICAgICAgPFNlcnZlciBjbGFzc05hbWU9e2B3LTUgaC01ICR7c3RhdHVzLmlzVXAgPyBcInRleHQtZW1lcmFsZC00MDBcIiA6IFwidGV4dC1yZWQtNDAwXCJ9YH0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICB7YXBwLm5hbWV9XG4gICAgICAgICAgICAgIDxhIGhyZWY9e2FwcC51cmx9IHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTUwMCBob3Zlcjp0ZXh0LWVtZXJhbGQtNDAwIHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgICAgICAgPEV4dGVybmFsTGluayBjbGFzc05hbWU9XCJ3LTMuNSBoLTMuNVwiIC8+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtc2xhdGUtNTAwXCI+UG9ydCB7YXBwLnBvcnR9PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcHgtMi41IHB5LTEgcm91bmRlZC1mdWxsIHRleHQteHMgZm9udC1tZWRpdW0gYm9yZGVyICR7XG4gICAgICAgICAgc3RhdHVzLmlzVXAgXG4gICAgICAgICAgICA/IFwiYmctZW1lcmFsZC01MDAvMTAgYm9yZGVyLWVtZXJhbGQtNTAwLzIwIHRleHQtZW1lcmFsZC00MDBcIiBcbiAgICAgICAgICAgIDogXCJiZy1yZWQtNTAwLzEwIGJvcmRlci1yZWQtNTAwLzIwIHRleHQtcmVkLTQwMFwiXG4gICAgICAgIH1gfT5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4IGgtMS41IHctMS41XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2BhbmltYXRlLXBpbmcgYWJzb2x1dGUgaW5saW5lLWZsZXggaC1mdWxsIHctZnVsbCByb3VuZGVkLWZ1bGwgb3BhY2l0eS03NSAke3N0YXR1cy5pc1VwID8gXCJiZy1lbWVyYWxkLTQwMFwiIDogXCJiZy1yZWQtNDAwXCJ9YH0+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgcmVsYXRpdmUgaW5saW5lLWZsZXggcm91bmRlZC1mdWxsIGgtMS41IHctMS41ICR7c3RhdHVzLmlzVXAgPyBcImJnLWVtZXJhbGQtNTAwXCIgOiBcImJnLXJlZC01MDBcIn1gfT48L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtzdGF0dXMuaXNVcCA/IFwiT3BlcmF0aW9uYWxcIiA6IFwiRG93blwifVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogTWV0cmljcyAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgIHsvKiBVcHRpbWUgKi99XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMS41XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtc2xhdGUtNDAwXCI+VXB0aW1lPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtd2hpdGVcIj57c3RhdHVzLnVwdGltZX0lPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC0xLjUgdy1mdWxsIGJnLXNsYXRlLTgwMCByb3VuZGVkLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICA8bW90aW9uLmRpdiBcbiAgICAgICAgICAgICAgaW5pdGlhbD17eyB3aWR0aDogMCB9fVxuICAgICAgICAgICAgICBhbmltYXRlPXt7IHdpZHRoOiBgJHtzdGF0dXMudXB0aW1lfSVgIH19XG4gICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDEsIGRlbGF5OiAwLjIgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgaC1mdWxsIHJvdW5kZWQtZnVsbCAke3N0YXR1cy51cHRpbWUgPiA5NSA/IFwiYmctZW1lcmFsZC01MDBcIiA6IHN0YXR1cy51cHRpbWUgPiA4MCA/IFwiYmctYW1iZXItNTAwXCIgOiBcImJnLXJlZC01MDBcIn1gfSBcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBSZXNwb25zZSBUaW1lICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1zbGF0ZS00MDBcIj5SZXNwb25zZSBUaW1lPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlXCI+XG4gICAgICAgICAgICB7c3RhdHVzLmF2Z1Jlc3BvbnNlVGltZSA+IDAgPyBgJHtzdGF0dXMuYXZnUmVzcG9uc2VUaW1lfW1zYCA6IFwi4oCUXCJ9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogU3BhcmtsaW5lICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtMTAgLW14LTFcIj5cbiAgICAgICAgICA8UmVzcG9uc2l2ZUNvbnRhaW5lciB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCI+XG4gICAgICAgICAgICA8TGluZUNoYXJ0IGRhdGE9e3NwYXJrbGluZURhdGF9PlxuICAgICAgICAgICAgICA8TGluZVxuICAgICAgICAgICAgICAgIHR5cGU9XCJtb25vdG9uZVwiXG4gICAgICAgICAgICAgICAgZGF0YUtleT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBzdHJva2U9e3N0YXR1cy5pc1VwID8gXCIjMzRkMzk5XCIgOiBcIiNmODcxNzFcIn1cbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17MS41fVxuICAgICAgICAgICAgICAgIGRvdD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0xpbmVDaGFydD5cbiAgICAgICAgICA8L1Jlc3BvbnNpdmVDb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBMYXN0IENoZWNrZWQgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHRleHQteHMgdGV4dC1zbGF0ZS01MDBcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICAgICAgPENsb2NrIGNsYXNzTmFtZT1cInctMyBoLTNcIiAvPlxuICAgICAgICAgICAge3N0YXR1cy5sYXRlc3QgPyBuZXcgRGF0ZShzdGF0dXMubGF0ZXN0LnRpbWVzdGFtcCkudG9Mb2NhbGVUaW1lU3RyaW5nKCkgOiBcIk5ldmVyXCJ9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIFxuICAgICAgICAgIHsvKiBIb3ZlciBBY3Rpb25zICovfVxuICAgICAgICAgIDxBbmltYXRlUHJlc2VuY2U+XG4gICAgICAgICAgICB7aXNIb3ZlcmVkICYmIChcbiAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHg6IDEwIH19XG4gICAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxLCB4OiAwIH19XG4gICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB4OiAxMCB9fVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwicC0xLjUgdGV4dC1zbGF0ZS00MDAgaG92ZXI6dGV4dC13aGl0ZSBob3ZlcjpiZy1zbGF0ZS04MDAgcm91bmRlZCB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICAgICAgICAgICAgPFJlZnJlc2hDdyBjbGFzc05hbWU9XCJ3LTMuNSBoLTMuNVwiIC8+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwLTEuNSB0ZXh0LXNsYXRlLTQwMCBob3Zlcjp0ZXh0LXdoaXRlIGhvdmVyOmJnLXNsYXRlLTgwMCByb3VuZGVkIHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgICAgICAgICA8U2V0dGluZ3MgY2xhc3NOYW1lPVwidy0zLjUgaC0zLjVcIiAvPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkRlbGV0ZX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInAtMS41IHRleHQtc2xhdGUtNDAwIGhvdmVyOnRleHQtcmVkLTQwMCBob3ZlcjpiZy1yZWQtNTAwLzEwIHJvdW5kZWQgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxUcmFzaDIgY2xhc3NOYW1lPVwidy0zLjUgaC0zLjVcIiAvPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhc2hib2FyZCgpIHtcbiAgY29uc3QgW2FwcHMsIHNldEFwcHNdID0gdXNlU3RhdGU8QXBwW10+KFtdKTtcbiAgY29uc3QgW3N0YXR1cywgc2V0U3RhdHVzXSA9IHVzZVN0YXRlPFN0YXR1c0VudHJ5W10+KFtdKTtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtzaWRlYmFyQ29sbGFwc2VkLCBzZXRTaWRlYmFyQ29sbGFwc2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2FjdGl2ZU5hdiwgc2V0QWN0aXZlTmF2XSA9IHVzZVN0YXRlKFwib3ZlcnZpZXdcIik7XG4gIGNvbnN0IFtzaG93QWRkTW9kYWwsIHNldFNob3dBZGRNb2RhbF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtuZXdBcHAsIHNldE5ld0FwcF0gPSB1c2VTdGF0ZTxQYXJ0aWFsPEFwcD4+KHtcbiAgICBuYW1lOiBcIlwiLFxuICAgIHVybDogXCJodHRwOi8vbG9jYWxob3N0OlwiLFxuICAgIHBvcnQ6IDMwMDAsXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgfSk7XG5cbiAgY29uc3QgbmF2SXRlbXM6IE5hdkl0ZW1bXSA9IFtcbiAgICB7IGlkOiBcIm92ZXJ2aWV3XCIsIGxhYmVsOiBcIk92ZXJ2aWV3XCIsIGljb246IDxMYXlvdXREYXNoYm9hcmQgY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+IH0sXG4gICAgeyBpZDogXCJzZXJ2aWNlc1wiLCBsYWJlbDogXCJNb25pdG9yZWQgU2VydmljZXNcIiwgaWNvbjogPE1vbml0b3IgY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+IH0sXG4gICAgeyBpZDogXCJpbmNpZGVudHNcIiwgbGFiZWw6IFwiSW5jaWRlbnRzXCIsIGljb246IDxBbGVydFRyaWFuZ2xlIGNsYXNzTmFtZT1cInctNSBoLTVcIiAvPiB9LFxuICAgIHsgaWQ6IFwiaGlzdG9yeVwiLCBsYWJlbDogXCJIaXN0b3J5IC8gTG9nc1wiLCBpY29uOiA8SGlzdG9yeSBjbGFzc05hbWU9XCJ3LTUgaC01XCIgLz4gfSxcbiAgICB7IGlkOiBcInNldHRpbmdzXCIsIGxhYmVsOiBcIlNldHRpbmdzXCIsIGljb246IDxTZXR0aW5ncyBjbGFzc05hbWU9XCJ3LTUgaC01XCIgLz4gfSxcbiAgXTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YSgpO1xuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoZmV0Y2hEYXRhLCAzMDAwMCk7XG4gICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICB9LCBbXSk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChcIi9hcGkvbW9uaXRvclwiKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXMuanNvbigpO1xuICAgICAgc2V0QXBwcyhkYXRhLmFwcHMgfHwgW10pO1xuICAgICAgc2V0U3RhdHVzKGRhdGEuc3RhdHVzIHx8IFtdKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggZGF0YTpcIiwgZXJyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gYWRkQXBwKGU6IFJlYWN0LkZvcm1FdmVudCkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoIW5ld0FwcC5uYW1lIHx8ICFuZXdBcHAudXJsKSByZXR1cm47XG4gICAgYXdhaXQgZmV0Y2goXCIvYXBpL21vbml0b3JcIiwge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgYWN0aW9uOiBcImFkZEFwcFwiLCBhcHA6IG5ld0FwcCB9KSxcbiAgICB9KTtcbiAgICBzZXRTaG93QWRkTW9kYWwoZmFsc2UpO1xuICAgIHNldE5ld0FwcCh7IG5hbWU6IFwiXCIsIHVybDogXCJodHRwOi8vbG9jYWxob3N0OlwiLCBwb3J0OiAzMDAwLCBlbmFibGVkOiB0cnVlIH0pO1xuICAgIGZldGNoRGF0YSgpO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGVsZXRlQXBwKGlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIWNvbmZpcm0oXCJEZWxldGUgdGhpcyBtb25pdG9yP1wiKSkgcmV0dXJuO1xuICAgIGF3YWl0IGZldGNoKFwiL2FwaS9tb25pdG9yXCIsIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGFjdGlvbjogXCJkZWxldGVBcHBcIiwgaWQgfSksXG4gICAgfSk7XG4gICAgZmV0Y2hEYXRhKCk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRBcHBTdGF0dXMoYXBwSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGFwcFN0YXR1cyA9IHN0YXR1cy5maWx0ZXIoKHMpID0+IHMuYXBwSWQgPT09IGFwcElkKTtcbiAgICBjb25zdCBsYXRlc3QgPSBhcHBTdGF0dXNbYXBwU3RhdHVzLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGlzVXAgPSBsYXRlc3Q/LnN0YXR1cyA9PT0gXCJ1cFwiO1xuICAgIGNvbnN0IHVwdGltZSA9IGFwcFN0YXR1cy5sZW5ndGggPiAwIFxuICAgICAgPyBNYXRoLnJvdW5kKChhcHBTdGF0dXMuZmlsdGVyKHMgPT4gcy5zdGF0dXMgPT09IFwidXBcIikubGVuZ3RoIC8gYXBwU3RhdHVzLmxlbmd0aCkgKiAxMDApXG4gICAgICA6IDEwMDtcbiAgICBjb25zdCBhdmdSZXNwb25zZVRpbWUgPSBhcHBTdGF0dXMubGVuZ3RoID4gMFxuICAgICAgPyBNYXRoLnJvdW5kKGFwcFN0YXR1cy5maWx0ZXIocyA9PiBzLnJlc3BvbnNlVGltZSkucmVkdWNlKChhY2MsIHMpID0+IGFjYyArIChzLnJlc3BvbnNlVGltZSB8fCAwKSwgMCkgLyBhcHBTdGF0dXMuZmlsdGVyKHMgPT4gcy5yZXNwb25zZVRpbWUpLmxlbmd0aCkgfHwgMFxuICAgICAgOiAwO1xuICAgIHJldHVybiB7IGxhdGVzdCwgaXNVcCwgdXB0aW1lLCBhdmdSZXNwb25zZVRpbWUgfTtcbiAgfVxuXG4gIGNvbnN0IHN0YXRzID0ge1xuICAgIHRvdGFsOiBhcHBzLmxlbmd0aCxcbiAgICBvbmxpbmU6IGFwcHMuZmlsdGVyKChhcHApID0+IGdldEFwcFN0YXR1cyhhcHAuaWQpLmlzVXApLmxlbmd0aCxcbiAgICBvZmZsaW5lOiBhcHBzLmZpbHRlcigoYXBwKSA9PiAhZ2V0QXBwU3RhdHVzKGFwcC5pZCkuaXNVcCkubGVuZ3RoLFxuICAgIGF2Z1VwdGltZTogYXBwcy5sZW5ndGggPiAwIFxuICAgICAgPyBNYXRoLnJvdW5kKGFwcHMucmVkdWNlKChhY2MsIGFwcCkgPT4gYWNjICsgZ2V0QXBwU3RhdHVzKGFwcC5pZCkudXB0aW1lLCAwKSAvIGFwcHMubGVuZ3RoKVxuICAgICAgOiAwLFxuICAgIGF2Z1Jlc3BvbnNlVGltZTogYXBwcy5sZW5ndGggPiAwXG4gICAgICA/IE1hdGgucm91bmQoYXBwcy5yZWR1Y2UoKGFjYywgYXBwKSA9PiBhY2MgKyBnZXRBcHBTdGF0dXMoYXBwLmlkKS5hdmdSZXNwb25zZVRpbWUsIDApIC8gYXBwcy5sZW5ndGgpXG4gICAgICA6IDAsXG4gICAgaW5jaWRlbnRzOiBzdGF0dXMuZmlsdGVyKHMgPT4gcy5zdGF0dXMgPT09IFwiZG93blwiKS5sZW5ndGgsXG4gIH07XG5cbiAgY29uc3QgYWxsVXAgPSBzdGF0cy5vbmxpbmUgPT09IHN0YXRzLnRvdGFsICYmIHN0YXRzLnRvdGFsID4gMDtcblxuICAvLyBHZW5lcmF0ZSBzcGFya2xpbmUgZGF0YSBmb3IgbWV0cmljc1xuICBjb25zdCBzZXJ2aWNlc0RhdGEgPSBnZW5lcmF0ZVNwYXJrbGluZURhdGEoMjAsIHRydWUpO1xuICBjb25zdCB1cHRpbWVEYXRhID0gZ2VuZXJhdGVTcGFya2xpbmVEYXRhKDIwLCB0cnVlKTtcbiAgY29uc3QgcmVzcG9uc2VEYXRhID0gZ2VuZXJhdGVTcGFya2xpbmVEYXRhKDIwLCB0cnVlKS5tYXAoZCA9PiAoeyAuLi5kLCB2YWx1ZTogZC52YWx1ZSAqIDIgfSkpO1xuICBjb25zdCBpbmNpZGVudHNEYXRhID0gZ2VuZXJhdGVTcGFya2xpbmVEYXRhKDIwLCBmYWxzZSk7XG5cbiAgaWYgKGxvYWRpbmcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctc2xhdGUtOTUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPG1vdGlvbi5kaXYgXG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgcm90YXRlOiAzNjAgfX1cbiAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMiwgcmVwZWF0OiBJbmZpbml0eSwgZWFzZTogXCJsaW5lYXJcIiB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTEyIGgtMTIgcm91bmRlZC14bCBiZy1ncmFkaWVudC10by1iciBmcm9tLWVtZXJhbGQtNTAwIHRvLWN5YW4tNTAwXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgdy0xMiBoLTEyIHJvdW5kZWQteGwgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1lbWVyYWxkLTUwMCB0by1jeWFuLTUwMCBibHVyLXhsIG9wYWNpdHktNTBcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNDAwXCI+TG9hZGluZyBkYXNoYm9hcmQuLi48L3A+XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLXNsYXRlLTk1MCB0ZXh0LXNsYXRlLTEwMCBmbGV4XCI+XG4gICAgICB7LyogQ29sbGFwc2libGUgU2lkZWJhciAqL31cbiAgICAgIDxtb3Rpb24uYXNpZGVcbiAgICAgICAgaW5pdGlhbD17ZmFsc2V9XG4gICAgICAgIGFuaW1hdGU9e3sgd2lkdGg6IHNpZGViYXJDb2xsYXBzZWQgPyA3MiA6IDI0MCB9fVxuICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCBsZWZ0LTAgdG9wLTAgYm90dG9tLTAgYmctc2xhdGUtOTAwLzgwIGJhY2tkcm9wLWJsdXIteGwgYm9yZGVyLXIgYm9yZGVyLXNsYXRlLTgwMCB6LTUwIGZsZXggZmxleC1jb2xcIlxuICAgICAgPlxuICAgICAgICB7LyogTG9nbyBBcmVhICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtMTYgZmxleCBpdGVtcy1jZW50ZXIgcHgtNCBib3JkZXItYiBib3JkZXItc2xhdGUtODAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTggaC04IHJvdW5kZWQtbGcgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1lbWVyYWxkLTUwMCB0by1jeWFuLTUwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPEFjdGl2aXR5IGNsYXNzTmFtZT1cInctNCBoLTQgdGV4dC13aGl0ZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgICAgeyFzaWRlYmFyQ29sbGFwc2VkICYmIChcbiAgICAgICAgICAgICAgPG1vdGlvbi5zcGFuXG4gICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB3aWR0aDogMCB9fVxuICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgd2lkdGg6IFwiYXV0b1wiIH19XG4gICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB3aWR0aDogMCB9fVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1sLTMgZm9udC1ib2xkIHRleHQtbGcgd2hpdGVzcGFjZS1ub3dyYXAgb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEhlYXJ0YmVhdFxuICAgICAgICAgICAgICA8L21vdGlvbi5zcGFuPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIE5hdmlnYXRpb24gKi99XG4gICAgICAgIDxuYXYgY2xhc3NOYW1lPVwiZmxleC0xIHAtMyBzcGFjZS15LTFcIj5cbiAgICAgICAgICB7bmF2SXRlbXMubWFwKChpdGVtKSA9PiAoXG4gICAgICAgICAgICA8U2lkZWJhckl0ZW1cbiAgICAgICAgICAgICAga2V5PXtpdGVtLmlkfVxuICAgICAgICAgICAgICBpdGVtPXtpdGVtfVxuICAgICAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlTmF2ID09PSBpdGVtLmlkfVxuICAgICAgICAgICAgICBpc0NvbGxhcHNlZD17c2lkZWJhckNvbGxhcHNlZH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlTmF2KGl0ZW0uaWQpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9uYXY+XG5cbiAgICAgICAgey8qIENvbGxhcHNlIEJ1dHRvbiAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTMgYm9yZGVyLXQgYm9yZGVyLXNsYXRlLTgwMFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNpZGViYXJDb2xsYXBzZWQoIXNpZGViYXJDb2xsYXBzZWQpfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtMiB0ZXh0LXNsYXRlLTQwMCBob3Zlcjp0ZXh0LXdoaXRlIGhvdmVyOmJnLXNsYXRlLTgwMC81MCByb3VuZGVkLWxnIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2lkZWJhckNvbGxhcHNlZCA/IDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+IDogPENoZXZyb25MZWZ0IGNsYXNzTmFtZT1cInctNSBoLTVcIiAvPn1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21vdGlvbi5hc2lkZT5cblxuICAgICAgey8qIE1haW4gQ29udGVudCAqL31cbiAgICAgIDxtYWluIFxuICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTEgbWluLWgtc2NyZWVuIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMFwiXG4gICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IHNpZGViYXJDb2xsYXBzZWQgPyA3MiA6IDI0MCB9fVxuICAgICAgPlxuICAgICAgICB7LyogVG9wIE5hdmJhciAqL31cbiAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJoLTE2IGJnLXNsYXRlLTkwMC81MCBiYWNrZHJvcC1ibHVyLXNtIGJvcmRlci1iIGJvcmRlci1zbGF0ZS04MDAgc3RpY2t5IHRvcC0wIHotNDAgcHgtNiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICB7LyogR2xvYmFsIFN0YXR1cyBCYW5uZXIgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBweC0zIHB5LTEuNSByb3VuZGVkLWZ1bGwgYm9yZGVyICR7XG4gICAgICAgICAgICAgIGFsbFVwIFxuICAgICAgICAgICAgICAgID8gXCJiZy1lbWVyYWxkLTUwMC8xMCBib3JkZXItZW1lcmFsZC01MDAvMjBcIiBcbiAgICAgICAgICAgICAgICA6IFwiYmctYW1iZXItNTAwLzEwIGJvcmRlci1hbWJlci01MDAvMjBcIlxuICAgICAgICAgICAgfWB9PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2ByZWxhdGl2ZSBmbGV4IGgtMiB3LTJgfT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2BhbmltYXRlLXBpbmcgYWJzb2x1dGUgaW5saW5lLWZsZXggaC1mdWxsIHctZnVsbCByb3VuZGVkLWZ1bGwgb3BhY2l0eS03NSAke2FsbFVwID8gXCJiZy1lbWVyYWxkLTQwMFwiIDogXCJiZy1hbWJlci00MDBcIn1gfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgcmVsYXRpdmUgaW5saW5lLWZsZXggcm91bmRlZC1mdWxsIGgtMiB3LTIgJHthbGxVcCA/IFwiYmctZW1lcmFsZC01MDBcIiA6IFwiYmctYW1iZXItNTAwXCJ9YH0+PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YHRleHQtc20gZm9udC1tZWRpdW0gJHthbGxVcCA/IFwidGV4dC1lbWVyYWxkLTQwMFwiIDogXCJ0ZXh0LWFtYmVyLTQwMFwifWB9PlxuICAgICAgICAgICAgICAgIHthbGxVcCA/IFwiQWxsIFN5c3RlbXMgT3BlcmF0aW9uYWxcIiA6IGAke3N0YXRzLm9mZmxpbmV9IFNlcnZpY2Uke3N0YXRzLm9mZmxpbmUgPiAxID8gJ3MnIDogJyd9IERvd25gfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNTAwIHRleHQteHNcIj7igKIgVXBkYXRlZCB7bmV3IERhdGUoKS50b0xvY2FsZVRpbWVTdHJpbmcoKX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiBSaWdodCBTaWRlIEFjdGlvbnMgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgey8qIFNlYXJjaCAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPFNlYXJjaCBjbGFzc05hbWU9XCJ3LTQgaC00IGFic29sdXRlIGxlZnQtMyB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgdGV4dC1zbGF0ZS01MDBcIiAvPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctNjQgYmctc2xhdGUtODAwLzUwIGJvcmRlciBib3JkZXItc2xhdGUtNzAwIHJvdW5kZWQtbGcgcGwtMTAgcHItNCBweS0yIHRleHQtc20gdGV4dC13aGl0ZSBwbGFjZWhvbGRlci1zbGF0ZS01MDAgZm9jdXM6Ym9yZGVyLWVtZXJhbGQtNTAwLzUwIGZvY3VzOm91dGxpbmUtbm9uZSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIEFkZCBNb25pdG9yICovfVxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QWRkTW9kYWwodHJ1ZSl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHB4LTQgcHktMiBiZy1lbWVyYWxkLTYwMCBob3ZlcjpiZy1lbWVyYWxkLTUwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbGcgdGV4dC1zbSBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxQbHVzIGNsYXNzTmFtZT1cInctNCBoLTRcIiAvPlxuICAgICAgICAgICAgICBBZGQgTW9uaXRvclxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIHsvKiBSZWZyZXNoICovfVxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXtmZXRjaERhdGF9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInAtMiB0ZXh0LXNsYXRlLTQwMCBob3Zlcjp0ZXh0LXdoaXRlIGhvdmVyOmJnLXNsYXRlLTgwMCByb3VuZGVkLWxnIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFJlZnJlc2hDdyBjbGFzc05hbWU9XCJ3LTUgaC01XCIgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICB7LyogTm90aWZpY2F0aW9ucyAqL31cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwicC0yIHRleHQtc2xhdGUtNDAwIGhvdmVyOnRleHQtd2hpdGUgaG92ZXI6Ymctc2xhdGUtODAwIHJvdW5kZWQtbGcgdHJhbnNpdGlvbi1jb2xvcnMgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPEJlbGwgY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+XG4gICAgICAgICAgICAgIHtzdGF0cy5pbmNpZGVudHMgPiAwICYmIChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMSByaWdodC0xIHctMiBoLTIgYmctcmVkLTUwMCByb3VuZGVkLWZ1bGxcIiAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIHsvKiBBdmF0YXIgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctOSBoLTkgcm91bmRlZC1mdWxsIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tZW1lcmFsZC01MDAgdG8tY3lhbi01MDAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LW1lZGl1bSB0ZXh0LXNtXCI+XG4gICAgICAgICAgICAgIE1CXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgey8qIERhc2hib2FyZCBDb250ZW50ICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtNiBzcGFjZS15LTZcIj5cbiAgICAgICAgICB7LyogS1BJIFJvdyAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgc206Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTQgZ2FwLTRcIj5cbiAgICAgICAgICAgIDxNZXRyaWNDYXJkXG4gICAgICAgICAgICAgIHRpdGxlPVwiU2VydmljZXMgT25saW5lXCJcbiAgICAgICAgICAgICAgdmFsdWU9e2Ake3N0YXRzLm9ubGluZX0vJHtzdGF0cy50b3RhbH1gfVxuICAgICAgICAgICAgICBzdWJ0aXRsZT17YWxsVXAgPyBcIkFsbCBoZWFsdGh5XCIgOiBgJHtzdGF0cy5vZmZsaW5lfSBkb3duYH1cbiAgICAgICAgICAgICAgaWNvbj17U2VydmVyfVxuICAgICAgICAgICAgICBjb2xvcj1cImVtZXJhbGRcIlxuICAgICAgICAgICAgICBkYXRhPXtzZXJ2aWNlc0RhdGF9XG4gICAgICAgICAgICAgIHRyZW5kPVwidXBcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxNZXRyaWNDYXJkXG4gICAgICAgICAgICAgIHRpdGxlPVwiQXZlcmFnZSBVcHRpbWVcIlxuICAgICAgICAgICAgICB2YWx1ZT17YCR7c3RhdHMuYXZnVXB0aW1lfSVgfVxuICAgICAgICAgICAgICBzdWJ0aXRsZT1cIkxhc3QgMzAgZGF5c1wiXG4gICAgICAgICAgICAgIGljb249e0NoZWNrQ2lyY2xlMn1cbiAgICAgICAgICAgICAgY29sb3I9XCJibHVlXCJcbiAgICAgICAgICAgICAgZGF0YT17dXB0aW1lRGF0YX1cbiAgICAgICAgICAgICAgdHJlbmQ9XCJ1cFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPE1ldHJpY0NhcmRcbiAgICAgICAgICAgICAgdGl0bGU9XCJBdmcgUmVzcG9uc2UgVGltZVwiXG4gICAgICAgICAgICAgIHZhbHVlPXtgJHtzdGF0cy5hdmdSZXNwb25zZVRpbWV9bXNgfVxuICAgICAgICAgICAgICBzdWJ0aXRsZT1cIkFjcm9zcyBhbGwgc2VydmljZXNcIlxuICAgICAgICAgICAgICBpY29uPXtaYXB9XG4gICAgICAgICAgICAgIGNvbG9yPVwicHVycGxlXCJcbiAgICAgICAgICAgICAgZGF0YT17cmVzcG9uc2VEYXRhfVxuICAgICAgICAgICAgICB0cmVuZD17c3RhdHMuYXZnUmVzcG9uc2VUaW1lIDwgMjAwID8gXCJ1cFwiIDogXCJkb3duXCJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPE1ldHJpY0NhcmRcbiAgICAgICAgICAgICAgdGl0bGU9XCJUb3RhbCBJbmNpZGVudHNcIlxuICAgICAgICAgICAgICB2YWx1ZT17c3RhdHMuaW5jaWRlbnRzfVxuICAgICAgICAgICAgICBzdWJ0aXRsZT1cIkxhc3QgMjQgaG91cnNcIlxuICAgICAgICAgICAgICBpY29uPXtBbGVydFRyaWFuZ2xlfVxuICAgICAgICAgICAgICBjb2xvcj1cImFtYmVyXCJcbiAgICAgICAgICAgICAgZGF0YT17aW5jaWRlbnRzRGF0YX1cbiAgICAgICAgICAgICAgdHJlbmQ9e3N0YXRzLmluY2lkZW50cyA9PT0gMCA/IFwidXBcIiA6IFwiZG93blwifVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiBTZXJ2aWNlcyBHcmlkICovfVxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi00XCI+XG4gICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZVwiPk1vbml0b3JlZCBTZXJ2aWNlczwvaDI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1zbGF0ZS01MDBcIj57c3RhdHMudG90YWx9IHNlcnZpY2VzPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxtb3Rpb24uZGl2IFxuICAgICAgICAgICAgICBsYXlvdXRcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiB4bDpncmlkLWNvbHMtMyBnYXAtNFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cInBvcExheW91dFwiPlxuICAgICAgICAgICAgICAgIHthcHBzLm1hcCgoYXBwKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBhcHBTdGF0dXMgPSBnZXRBcHBTdGF0dXMoYXBwLmlkKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxTZXJ2aWNlQ2FyZFxuICAgICAgICAgICAgICAgICAgICAgIGtleT17YXBwLmlkfVxuICAgICAgICAgICAgICAgICAgICAgIGFwcD17YXBwfVxuICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz17YXBwU3RhdHVzfVxuICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlPXsoKSA9PiBkZWxldGVBcHAoYXBwLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuXG4gICAgICAgICAgICB7YXBwcy5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgeTogMjAgfX1cbiAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS0xNiBiZy1zbGF0ZS05MDAvMzAgcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLWRhc2hlZCBib3JkZXItc2xhdGUtODAwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xNiBoLTE2IGJnLXNsYXRlLTgwMCByb3VuZGVkLTJ4bCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBteC1hdXRvIG1iLTRcIj5cbiAgICAgICAgICAgICAgICAgIDxNb25pdG9yIGNsYXNzTmFtZT1cInctOCBoLTggdGV4dC1zbGF0ZS02MDBcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZSBtYi0yXCI+Tm8gbW9uaXRvcnMgeWV0PC9oMz5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTUwMCBtYi00XCI+U3RhcnQgbW9uaXRvcmluZyB5b3VyIHNlcnZpY2VzPC9wPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dBZGRNb2RhbCh0cnVlKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInB4LTQgcHktMiBiZy1lbWVyYWxkLTYwMCBob3ZlcjpiZy1lbWVyYWxkLTUwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbGcgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEFkZCBZb3VyIEZpcnN0IE1vbml0b3JcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21haW4+XG5cbiAgICAgIHsvKiBBZGQgTW9uaXRvciBNb2RhbCAqL31cbiAgICAgIDxBbmltYXRlUHJlc2VuY2U+XG4gICAgICAgIHtzaG93QWRkTW9kYWwgJiYgKFxuICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIGJnLWJsYWNrLzYwIGJhY2tkcm9wLWJsdXItc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgei01MCBwLTRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgc2NhbGU6IDAuOTUsIHk6IDIwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgc2NhbGU6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCBzY2FsZTogMC45NSwgeTogMjAgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctc2xhdGUtOTAwIGJvcmRlciBib3JkZXItc2xhdGUtODAwIHJvdW5kZWQteGwgcC02IHctZnVsbCBtYXgtdy1tZCBzaGFkb3ctMnhsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMlwiPkFkZCBOZXcgTW9uaXRvcjwvaDI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNDAwIHRleHQtc20gbWItNlwiPkNvbmZpZ3VyZSBhIG5ldyBzZXJ2aWNlIHRvIG1vbml0b3I8L3A+XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8Zm9ybSBvblN1Ym1pdD17YWRkQXBwfSBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1zbGF0ZS0zMDAgbWItMlwiPlNlcnZpY2UgTmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmV3QXBwLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0TmV3QXBwKHsgLi4ubmV3QXBwLCBuYW1lOiBlLnRhcmdldC52YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLXNsYXRlLTgwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCByb3VuZGVkLWxnIHB4LTQgcHktMi41IHRleHQtd2hpdGUgcGxhY2Vob2xkZXItc2xhdGUtNTAwIGZvY3VzOmJvcmRlci1lbWVyYWxkLTUwMC81MCBmb2N1czpvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk15IFNlcnZpY2VcIlxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtc2xhdGUtMzAwIG1iLTJcIj5VUkw8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmV3QXBwLnVybH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldE5ld0FwcCh7IC4uLm5ld0FwcCwgdXJsOiBlLnRhcmdldC52YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgYmctc2xhdGUtODAwLzUwIGJvcmRlciBib3JkZXItc2xhdGUtNzAwIHJvdW5kZWQtbGcgcHgtNCBweS0yLjUgdGV4dC13aGl0ZSBwbGFjZWhvbGRlci1zbGF0ZS01MDAgZm9jdXM6Ym9yZGVyLWVtZXJhbGQtNTAwLzUwIGZvY3VzOm91dGxpbmUtbm9uZSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtc2xhdGUtMzAwIG1iLTJcIj5Qb3J0PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e25ld0FwcC5wb3J0fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0TmV3QXBwKHsgLi4ubmV3QXBwLCBwb3J0OiBwYXJzZUludChlLnRhcmdldC52YWx1ZSkgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLXNsYXRlLTgwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCByb3VuZGVkLWxnIHB4LTQgcHktMi41IHRleHQtd2hpdGUgcGxhY2Vob2xkZXItc2xhdGUtNTAwIGZvY3VzOmJvcmRlci1lbWVyYWxkLTUwMC81MCBmb2N1czpvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMyBwdC00XCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QWRkTW9kYWwoZmFsc2UpfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTEgcHgtNCBweS0yLjUgYm9yZGVyIGJvcmRlci1zbGF0ZS03MDAgcm91bmRlZC1sZyB0ZXh0LXNsYXRlLTMwMCBob3ZlcjpiZy1zbGF0ZS04MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleC0xIHB4LTQgcHktMi41IGJnLWVtZXJhbGQtNjAwIGhvdmVyOmJnLWVtZXJhbGQtNTAwIHRleHQtd2hpdGUgcm91bmRlZC1sZyBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEFkZCBNb25pdG9yXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgIDwvZGl2PlxuICApO1xufSJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwibW90aW9uIiwiQW5pbWF0ZVByZXNlbmNlIiwiTGluZUNoYXJ0IiwiTGluZSIsIlJlc3BvbnNpdmVDb250YWluZXIiLCJBY3Rpdml0eSIsIlBsdXMiLCJSZWZyZXNoQ3ciLCJUcmFzaDIiLCJFeHRlcm5hbExpbmsiLCJTZWFyY2giLCJCZWxsIiwiU2V0dGluZ3MiLCJDaGV2cm9uTGVmdCIsIkNoZXZyb25SaWdodCIsIkxheW91dERhc2hib2FyZCIsIk1vbml0b3IiLCJBbGVydFRyaWFuZ2xlIiwiSGlzdG9yeSIsIkNoZWNrQ2lyY2xlMiIsIkNsb2NrIiwiWmFwIiwiU2VydmVyIiwiZ2VuZXJhdGVTcGFya2xpbmVEYXRhIiwicG9pbnRzIiwiaXNVcCIsIkFycmF5IiwiZnJvbSIsImxlbmd0aCIsIl8iLCJpIiwidmFsdWUiLCJNYXRoIiwicmFuZG9tIiwidGltZSIsIlNpZGViYXJJdGVtIiwiaXRlbSIsImlzQWN0aXZlIiwiaXNDb2xsYXBzZWQiLCJvbkNsaWNrIiwiYnV0dG9uIiwid2hpbGVIb3ZlciIsIngiLCJ3aGlsZVRhcCIsInNjYWxlIiwiY2xhc3NOYW1lIiwic3BhbiIsImljb24iLCJtb2RlIiwiaW5pdGlhbCIsIm9wYWNpdHkiLCJ3aWR0aCIsImFuaW1hdGUiLCJleGl0IiwibGFiZWwiLCJNZXRyaWNDYXJkIiwidGl0bGUiLCJzdWJ0aXRsZSIsIkljb24iLCJjb2xvciIsImRhdGEiLCJ0cmVuZCIsImNvbG9yQ2xhc3NlcyIsImVtZXJhbGQiLCJibHVlIiwicHVycGxlIiwiYW1iZXIiLCJkaXYiLCJ5IiwidHJhbnNpdGlvbiIsImR1cmF0aW9uIiwicCIsInN0eWxlIiwiaGVpZ2h0IiwidHlwZSIsImRhdGFLZXkiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsImRvdCIsIlNlcnZpY2VDYXJkIiwiYXBwIiwic3RhdHVzIiwib25EZWxldGUiLCJpc0hvdmVyZWQiLCJzZXRJc0hvdmVyZWQiLCJzcGFya2xpbmVEYXRhIiwibGF5b3V0Iiwib25Ib3ZlclN0YXJ0Iiwib25Ib3ZlckVuZCIsImgzIiwibmFtZSIsImEiLCJocmVmIiwidXJsIiwidGFyZ2V0IiwicmVsIiwicG9ydCIsInVwdGltZSIsImRlbGF5IiwiYXZnUmVzcG9uc2VUaW1lIiwibGF0ZXN0IiwiRGF0ZSIsInRpbWVzdGFtcCIsInRvTG9jYWxlVGltZVN0cmluZyIsIkRhc2hib2FyZCIsImFwcHMiLCJzZXRBcHBzIiwic2V0U3RhdHVzIiwibG9hZGluZyIsInNldExvYWRpbmciLCJzaWRlYmFyQ29sbGFwc2VkIiwic2V0U2lkZWJhckNvbGxhcHNlZCIsImFjdGl2ZU5hdiIsInNldEFjdGl2ZU5hdiIsInNob3dBZGRNb2RhbCIsInNldFNob3dBZGRNb2RhbCIsIm5ld0FwcCIsInNldE5ld0FwcCIsImVuYWJsZWQiLCJuYXZJdGVtcyIsImlkIiwiZmV0Y2hEYXRhIiwiaW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJyZXMiLCJmZXRjaCIsImpzb24iLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJhZGRBcHAiLCJlIiwicHJldmVudERlZmF1bHQiLCJtZXRob2QiLCJoZWFkZXJzIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJhY3Rpb24iLCJkZWxldGVBcHAiLCJjb25maXJtIiwiZ2V0QXBwU3RhdHVzIiwiYXBwSWQiLCJhcHBTdGF0dXMiLCJmaWx0ZXIiLCJzIiwicm91bmQiLCJyZXNwb25zZVRpbWUiLCJyZWR1Y2UiLCJhY2MiLCJzdGF0cyIsInRvdGFsIiwib25saW5lIiwib2ZmbGluZSIsImF2Z1VwdGltZSIsImluY2lkZW50cyIsImFsbFVwIiwic2VydmljZXNEYXRhIiwidXB0aW1lRGF0YSIsInJlc3BvbnNlRGF0YSIsIm1hcCIsImQiLCJpbmNpZGVudHNEYXRhIiwicm90YXRlIiwicmVwZWF0IiwiSW5maW5pdHkiLCJlYXNlIiwiYXNpZGUiLCJuYXYiLCJtYWluIiwibWFyZ2luTGVmdCIsImhlYWRlciIsImlucHV0IiwicGxhY2Vob2xkZXIiLCJoMiIsImZvcm0iLCJvblN1Ym1pdCIsIm9uQ2hhbmdlIiwicmVxdWlyZWQiLCJwYXJzZUludCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./src/app/page.tsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Dashboard)\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/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/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 framer_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! framer-motion */ \"(ssr)/./node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! framer-motion */ \"(ssr)/./node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/server.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/external-link.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/clock.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/refresh-cw.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/settings.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/trash-2.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/activity.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/layout-dashboard.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/monitor.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/triangle-alert.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/history.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/search.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/plus.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/bell.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/circle-check.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/zap.js\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(ssr)/./node_modules/recharts/es6/component/ResponsiveContainer.js\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(ssr)/./node_modules/recharts/es6/chart/LineChart.js\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(ssr)/./node_modules/recharts/es6/cartesian/Line.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\n// Generate sparkline data\nconst generateSparklineData = (points, isUp)=>{\n return Array.from({\n length: points\n }, (_, i)=>({\n value: isUp ? 80 + Math.random() * 20 : Math.random() * 30,\n time: i\n }));\n};\n// shadcn-style Card Component\nconst Card = ({ children, className = \"\" })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `bg-slate-900/60 backdrop-blur-xl border border-slate-800/60 rounded-xl overflow-hidden ${className}`,\n children: children\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 66,\n columnNumber: 3\n }, undefined);\nconst CardContent = ({ children, className = \"\" })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `p-6 ${className}`,\n children: children\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 72,\n columnNumber: 3\n }, undefined);\n// shadcn-style Badge\nconst Badge = ({ children, variant = \"default\", className = \"\" })=>{\n const variants = {\n default: \"bg-slate-800 text-slate-200 border-slate-700\",\n success: \"bg-emerald-500/10 text-emerald-400 border-emerald-500/20\",\n destructive: \"bg-red-500/10 text-red-400 border-red-500/20\",\n warning: \"bg-amber-500/10 text-amber-400 border-amber-500/20\"\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium border ${variants[variant]} ${className}`,\n children: children\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 92,\n columnNumber: 5\n }, undefined);\n};\n// shadcn-style Progress\nconst Progress = ({ value, className = \"\" })=>{\n const getColor = ()=>{\n if (value >= 95) return \"bg-emerald-500\";\n if (value >= 80) return \"bg-amber-500\";\n return \"bg-red-500\";\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `w-full bg-slate-800 rounded-full h-2 overflow-hidden ${className}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n width: 0\n },\n animate: {\n width: `${value}%`\n },\n transition: {\n duration: 1,\n ease: \"easeOut\"\n },\n className: `h-full rounded-full ${getColor()}`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 107,\n columnNumber: 7\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 106,\n columnNumber: 5\n }, undefined);\n};\n// shadcn-style Button\nconst Button = ({ children, variant = \"default\", size = \"default\", className = \"\", ...props })=>{\n const variants = {\n default: \"bg-emerald-600 hover:bg-emerald-500 text-white\",\n ghost: \"hover:bg-slate-800 text-slate-400 hover:text-white\",\n outline: \"border border-slate-700 hover:bg-slate-800 text-slate-300\"\n };\n const sizes = {\n default: \"px-4 py-2\",\n sm: \"px-3 py-1.5 text-sm\",\n icon: \"p-2\"\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: `inline-flex items-center justify-center rounded-lg font-medium transition-colors ${variants[variant]} ${sizes[size]} ${className}`,\n ...props,\n children: children\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 141,\n columnNumber: 5\n }, undefined);\n};\n// Sidebar Item Component\nconst SidebarItem = ({ icon: Icon, label, isActive, onClick })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.button, {\n onClick: onClick,\n whileHover: {\n x: 2\n },\n whileTap: {\n scale: 0.98\n },\n className: `w-full flex items-center gap-3 px-3 py-2.5 rounded-lg transition-all duration-200 ${isActive ? \"bg-emerald-500/10 text-emerald-400 border border-emerald-500/20\" : \"text-slate-400 hover:text-slate-100 hover:bg-slate-800/50\"}`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Icon, {\n className: \"w-5 h-5 flex-shrink-0\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 172,\n columnNumber: 5\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium whitespace-nowrap\",\n children: label\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 173,\n columnNumber: 5\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 162,\n columnNumber: 3\n }, undefined);\n// KPI Card Component\nconst KPICard = ({ title, value, subtitle, icon: Icon, color, data })=>{\n const colorMap = {\n emerald: {\n bg: \"bg-emerald-500/10\",\n text: \"text-emerald-400\",\n bar: \"#10b981\"\n },\n blue: {\n bg: \"bg-blue-500/10\",\n text: \"text-blue-400\",\n bar: \"#3b82f6\"\n },\n purple: {\n bg: \"bg-purple-500/10\",\n text: \"text-purple-400\",\n bar: \"#a855f7\"\n },\n amber: {\n bg: \"bg-amber-500/10\",\n text: \"text-amber-400\",\n bar: \"#f59e0b\"\n }\n };\n const colors = colorMap[color] || colorMap.emerald;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Card, {\n className: \"hover:border-slate-700/60 transition-all duration-300 hover:shadow-xl hover:shadow-black/20 hover:scale-[1.02]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(CardContent, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start 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-slate-400 text-sm font-medium mb-1\",\n children: title\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 206,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-3xl font-bold text-white\",\n children: value\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 207,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-500 text-xs mt-1\",\n children: subtitle\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 208,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 205,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `p-2.5 rounded-lg ${colors.bg}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Icon, {\n className: `w-5 h-5 ${colors.text}`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 211,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 210,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 204,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 h-12\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_3__.ResponsiveContainer, {\n width: \"100%\",\n height: \"100%\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__.LineChart, {\n data: data,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__.Line, {\n type: \"monotone\",\n dataKey: \"value\",\n stroke: colors.bar,\n strokeWidth: 2,\n dot: false\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 217,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 216,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 215,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 214,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 203,\n columnNumber: 7\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 202,\n columnNumber: 5\n }, undefined);\n};\n// Service Card Component\nconst ServiceCard = ({ app, status, onDelete })=>{\n const [isHovered, setIsHovered] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const sparklineData = generateSparklineData(10, status.isUp);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n layout: true,\n initial: {\n opacity: 0,\n scale: 0.95\n },\n animate: {\n opacity: 1,\n scale: 1\n },\n exit: {\n opacity: 0,\n scale: 0.95\n },\n whileHover: {\n scale: 1.02,\n transition: {\n duration: 0.2\n }\n },\n onHoverStart: ()=>setIsHovered(true),\n onHoverEnd: ()=>setIsHovered(false),\n className: \"group\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Card, {\n className: \"h-full hover:border-slate-700/60 transition-all duration-300 hover:shadow-xl hover:shadow-black/20\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `h-1 w-full ${status.isUp ? \"bg-emerald-500\" : \"bg-red-500\"}`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 258,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(CardContent, {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between\",\n children: [\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: `w-10 h-10 rounded-lg flex items-center justify-center ${status.isUp ? \"bg-emerald-500/10\" : \"bg-red-500/10\"}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: `w-5 h-5 ${status.isUp ? \"text-emerald-400\" : \"text-red-400\"}`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 265,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 264,\n columnNumber: 15\n }, undefined),\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)(\"h3\", {\n className: \"font-semibold text-white flex items-center gap-2\",\n children: [\n app.name,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: app.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"text-slate-500 hover:text-emerald-400 transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"w-3.5 h-3.5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 276,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 270,\n columnNumber: 19\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 268,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-slate-500\",\n children: [\n \"Port \",\n app.port\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 279,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 267,\n columnNumber: 15\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 263,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Badge, {\n variant: status.isUp ? \"success\" : \"destructive\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative flex h-1.5 w-1.5 mr-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `animate-ping absolute inline-flex h-full w-full rounded-full opacity-75 ${status.isUp ? \"bg-emerald-400\" : \"bg-red-400\"}`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 285,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `relative inline-flex rounded-full h-1.5 w-1.5 ${status.isUp ? \"bg-emerald-500\" : \"bg-red-500\"}`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 286,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 284,\n columnNumber: 15\n }, undefined),\n status.isUp ? \"Operational\" : \"Down\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 283,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 262,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-slate-400\",\n children: \"Uptime\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 295,\n columnNumber: 15\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg font-semibold text-white\",\n children: [\n status.uptime,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 296,\n columnNumber: 15\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 294,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Progress, {\n value: status.uptime\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 298,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 293,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-slate-400\",\n children: \"Response Time\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 303,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-2xl font-bold text-white\",\n children: status.avgResponseTime > 0 ? `${status.avgResponseTime}ms` : \"—\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 304,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 302,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-10 -mx-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_3__.ResponsiveContainer, {\n width: \"100%\",\n height: \"100%\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__.LineChart, {\n data: sparklineData,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__.Line, {\n type: \"monotone\",\n dataKey: \"value\",\n stroke: status.isUp ? \"#10b981\" : \"#ef4444\",\n strokeWidth: 1.5,\n dot: false\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 313,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 312,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 311,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 310,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between pt-2 border-t border-slate-800/60\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-slate-500 flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"w-3 h-3\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 327,\n columnNumber: 15\n }, undefined),\n status.latest ? new Date(status.latest.timestamp).toLocaleTimeString() : \"Never\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 326,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_9__.AnimatePresence, {\n children: isHovered && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n x: 10\n },\n animate: {\n opacity: 1,\n x: 0\n },\n exit: {\n opacity: 0,\n x: 10\n },\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n variant: \"ghost\",\n size: \"icon\",\n className: \"h-8 w-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 340,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 339,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n variant: \"ghost\",\n size: \"icon\",\n className: \"h-8 w-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 343,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 342,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n variant: \"ghost\",\n size: \"icon\",\n className: \"h-8 w-8 hover:text-red-400 hover:bg-red-500/10\",\n onClick: onDelete,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 351,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 345,\n columnNumber: 19\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 333,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 331,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 325,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 260,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 256,\n columnNumber: 7\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 246,\n columnNumber: 5\n }, undefined);\n};\nfunction Dashboard() {\n const [apps, setApps] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [status, setStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [activeNav, setActiveNav] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"overview\");\n const [showAddModal, setShowAddModal] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [newApp, setNewApp] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n name: \"\",\n url: \"http://localhost:\",\n port: 3000,\n enabled: true\n });\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Dashboard.useEffect\": ()=>{\n fetchData();\n const interval = setInterval(fetchData, 30000);\n return ({\n \"Dashboard.useEffect\": ()=>clearInterval(interval)\n })[\"Dashboard.useEffect\"];\n }\n }[\"Dashboard.useEffect\"], []);\n async function fetchData() {\n try {\n const res = await fetch(\"/api/monitor\");\n const data = await res.json();\n setApps(data.apps || []);\n setStatus(data.status || []);\n } catch (err) {\n console.error(\"Failed to fetch data:\", err);\n } finally{\n setLoading(false);\n }\n }\n async function addApp(e) {\n e.preventDefault();\n if (!newApp.name || !newApp.url) return;\n await fetch(\"/api/monitor\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n action: \"addApp\",\n app: newApp\n })\n });\n setShowAddModal(false);\n setNewApp({\n name: \"\",\n url: \"http://localhost:\",\n port: 3000,\n enabled: true\n });\n fetchData();\n }\n async function deleteApp(id) {\n if (!confirm(\"Delete this monitor?\")) return;\n await fetch(\"/api/monitor\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n action: \"deleteApp\",\n id\n })\n });\n fetchData();\n }\n function getAppStatus(appId) {\n const appStatus = status.filter((s)=>s.appId === appId);\n const latest = appStatus[appStatus.length - 1];\n const isUp = latest?.status === \"up\";\n const uptime = appStatus.length > 0 ? Math.round(appStatus.filter((s)=>s.status === \"up\").length / appStatus.length * 100) : 100;\n const avgResponseTime = appStatus.length > 0 ? Math.round(appStatus.filter((s)=>s.responseTime).reduce((acc, s)=>acc + (s.responseTime || 0), 0) / appStatus.filter((s)=>s.responseTime).length) || 0 : 0;\n return {\n latest,\n isUp,\n uptime,\n avgResponseTime\n };\n }\n const stats = {\n total: apps.length,\n online: apps.filter((app)=>getAppStatus(app.id).isUp).length,\n offline: apps.filter((app)=>!getAppStatus(app.id).isUp).length,\n avgUptime: apps.length > 0 ? Math.round(apps.reduce((acc, app)=>acc + getAppStatus(app.id).uptime, 0) / apps.length) : 0,\n avgResponseTime: apps.length > 0 ? Math.round(apps.reduce((acc, app)=>acc + getAppStatus(app.id).avgResponseTime, 0) / apps.length) : 0,\n incidents: status.filter((s)=>s.status === \"down\").length\n };\n const allUp = stats.online === stats.total && stats.total > 0;\n // Sparkline data for KPI cards\n const servicesData = generateSparklineData(20, true);\n const uptimeData = generateSparklineData(20, true);\n const responseData = generateSparklineData(20, true).map((d)=>({\n ...d,\n value: d.value * 2\n }));\n const incidentsData = generateSparklineData(20, false);\n if (loading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-slate-950 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n className: \"flex flex-col items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n animate: {\n rotate: 360\n },\n transition: {\n duration: 2,\n repeat: Infinity,\n ease: \"linear\"\n },\n className: \"w-12 h-12 rounded-xl bg-gradient-to-br from-emerald-500 to-cyan-500\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 461,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 w-12 h-12 rounded-xl bg-gradient-to-br from-emerald-500 to-cyan-500 blur-xl opacity-50\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 466,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 460,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-400\",\n children: \"Loading dashboard...\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 468,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 455,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 454,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-slate-950 text-slate-100 flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"fixed left-0 top-0 bottom-0 w-[280px] bg-slate-900/80 backdrop-blur-xl border-r border-slate-800/60 z-50 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-16 flex items-center px-4 border-b border-slate-800/60\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-9 h-9 rounded-lg bg-gradient-to-br from-emerald-500 to-cyan-500 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"w-5 h-5 text-white\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 481,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 480,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"ml-3 font-bold text-lg text-white\",\n children: \"Heartbeat\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 483,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 479,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"flex-1 p-3 space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n label: \"Overview\",\n isActive: activeNav === \"overview\",\n onClick: ()=>setActiveNav(\"overview\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 488,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n label: \"Monitored Services\",\n isActive: activeNav === \"services\",\n onClick: ()=>setActiveNav(\"services\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 494,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n label: \"Incidents\",\n isActive: activeNav === \"incidents\",\n onClick: ()=>setActiveNav(\"incidents\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 500,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n label: \"History / Logs\",\n isActive: activeNav === \"history\",\n onClick: ()=>setActiveNav(\"history\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 506,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n label: \"Settings\",\n isActive: activeNav === \"settings\",\n onClick: ()=>setActiveNav(\"settings\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 512,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 487,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 477,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"flex-1 ml-[280px] min-h-screen flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"h-16 bg-slate-900/50 backdrop-blur-sm border-b border-slate-800/60 sticky top-0 z-40 px-6 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `flex items-center gap-2 px-3 py-1.5 rounded-full border ${allUp ? \"bg-emerald-500/10 border-emerald-500/20\" : \"bg-amber-500/10 border-amber-500/20\"}`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative flex h-2 w-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `animate-ping absolute inline-flex h-full w-full rounded-full opacity-75 ${allUp ? \"bg-emerald-400\" : \"bg-amber-400\"}`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 532,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `relative inline-flex rounded-full h-2 w-2 ${allUp ? \"bg-emerald-500\" : \"bg-amber-500\"}`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 533,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 531,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `text-sm font-medium ${allUp ? \"text-emerald-400\" : \"text-amber-400\"}`,\n children: allUp ? \"All Systems Operational\" : `${stats.offline} Service${stats.offline > 1 ? 's' : ''} Down`\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 535,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-slate-500 text-xs\",\n children: [\n \"• Updated \",\n new Date().toLocaleTimeString()\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 538,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 526,\n columnNumber: 11\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: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n className: \"w-4 h-4 absolute left-3 top-1/2 -translate-y-1/2 text-slate-500\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 544,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n placeholder: \"Search...\",\n className: \"w-64 bg-slate-800/50 border border-slate-700 rounded-lg pl-10 pr-4 py-2 text-sm text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 545,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 543,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n onClick: ()=>setShowAddModal(true),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n className: \"w-4 h-4 mr-2\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 553,\n columnNumber: 15\n }, this),\n \"Add Monitor\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 552,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n variant: \"ghost\",\n size: \"icon\",\n onClick: fetchData,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 558,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 557,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n variant: \"ghost\",\n size: \"icon\",\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 562,\n columnNumber: 15\n }, this),\n stats.incidents > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"absolute top-1 right-1 w-2 h-2 bg-red-500 rounded-full\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 564,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 561,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-9 h-9 rounded-full bg-gradient-to-br from-emerald-500 to-cyan-500 flex items-center justify-center text-white font-medium text-sm\",\n children: \"MB\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 568,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 542,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 524,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 p-6 overflow-auto\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 md:grid-cols-4 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(KPICard, {\n title: \"Services Online\",\n value: `${stats.online}/${stats.total}`,\n subtitle: allUp ? \"All healthy\" : `${stats.offline} down`,\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n color: \"emerald\",\n data: servicesData\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 579,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(KPICard, {\n title: \"Average Uptime\",\n value: `${stats.avgUptime}%`,\n subtitle: \"Last 30 days\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_21__[\"default\"],\n color: \"blue\",\n data: uptimeData\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 587,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(KPICard, {\n title: \"Avg Response Time\",\n value: `${stats.avgResponseTime}ms`,\n subtitle: \"Across all services\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_22__[\"default\"],\n color: \"purple\",\n data: responseData\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 595,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(KPICard, {\n title: \"Total Incidents\",\n value: stats.incidents,\n subtitle: \"Last 24 hours\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n color: \"amber\",\n data: incidentsData\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 603,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 578,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold text-white\",\n children: \"Monitored Services\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 616,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-slate-500\",\n children: [\n stats.total,\n \" services\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 617,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 615,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n layout: true,\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_9__.AnimatePresence, {\n mode: \"popLayout\",\n children: apps.map((app)=>{\n const appStatus = getAppStatus(app.id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ServiceCard, {\n app: app,\n status: appStatus,\n onDelete: ()=>deleteApp(app.id)\n }, app.id, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 628,\n columnNumber: 23\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 624,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 620,\n columnNumber: 15\n }, this),\n apps.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n y: 20\n },\n animate: {\n opacity: 1,\n y: 0\n },\n className: \"text-center py-16 bg-slate-900/30 rounded-xl border border-dashed border-slate-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-16 h-16 bg-slate-800 rounded-2xl flex items-center justify-center mx-auto mb-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n className: \"w-8 h-8 text-slate-600\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 646,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 645,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold text-white mb-2\",\n children: \"No monitors yet\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 648,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-500 mb-4\",\n children: \"Start monitoring your services\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 649,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n onClick: ()=>setShowAddModal(true),\n children: \"Add Your First Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 650,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 640,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 614,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 576,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 575,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 522,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_9__.AnimatePresence, {\n children: showAddModal && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n exit: {\n opacity: 0\n },\n className: \"fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-50 p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n scale: 0.95,\n y: 20\n },\n animate: {\n opacity: 1,\n scale: 1,\n y: 0\n },\n exit: {\n opacity: 0,\n scale: 0.95,\n y: 20\n },\n className: \"bg-slate-900 border border-slate-800 rounded-xl p-6 w-full max-w-md shadow-2xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xl font-bold text-white mb-2\",\n children: \"Add New Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 675,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-400 text-sm mb-6\",\n children: \"Configure a new service to monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 676,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: addApp,\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-slate-300 mb-2\",\n children: \"Service Name\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 680,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: newApp.name,\n onChange: (e)=>setNewApp({\n ...newApp,\n name: e.target.value\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none\",\n placeholder: \"My Service\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 681,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 679,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 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)(\"label\", {\n className: \"block text-sm font-medium text-slate-300 mb-2\",\n children: \"URL\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 693,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"url\",\n value: newApp.url,\n onChange: (e)=>setNewApp({\n ...newApp,\n url: e.target.value\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none\",\n placeholder: \"http://localhost:3000\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 694,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 692,\n columnNumber: 19\n }, this),\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)(\"label\", {\n className: \"block text-sm font-medium text-slate-300 mb-2\",\n children: \"Port\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 704,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n value: newApp.port,\n onChange: (e)=>setNewApp({\n ...newApp,\n port: parseInt(e.target.value)\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 705,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 703,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 691,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-3 pt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n type: \"button\",\n variant: \"outline\",\n onClick: ()=>setShowAddModal(false),\n className: \"flex-1\",\n children: \"Cancel\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 716,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n type: \"submit\",\n className: \"flex-1\",\n children: \"Add Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 724,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 715,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 678,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 669,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 663,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 661,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 475,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9zcmMvYXBwL3BhZ2UudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVtRDtBQUNLO0FBd0JsQztBQUtKO0FBdUJsQiwwQkFBMEI7QUFDMUIsTUFBTXdCLHdCQUF3QixDQUFDQyxRQUFnQkM7SUFDN0MsT0FBT0MsTUFBTUMsSUFBSSxDQUFDO1FBQUVDLFFBQVFKO0lBQU8sR0FBRyxDQUFDSyxHQUFHQyxJQUFPO1lBQy9DQyxPQUFPTixPQUFPLEtBQUtPLEtBQUtDLE1BQU0sS0FBSyxLQUFLRCxLQUFLQyxNQUFNLEtBQUs7WUFDeERDLE1BQU1KO1FBQ1I7QUFDRjtBQUVBLDhCQUE4QjtBQUM5QixNQUFNSyxPQUFPLENBQUMsRUFBRUMsUUFBUSxFQUFFQyxZQUFZLEVBQUUsRUFBcUQsaUJBQzNGLDhEQUFDQztRQUFJRCxXQUFXLENBQUMsdUZBQXVGLEVBQUVBLFdBQVc7a0JBQ2xIRDs7Ozs7O0FBSUwsTUFBTUcsY0FBYyxDQUFDLEVBQUVILFFBQVEsRUFBRUMsWUFBWSxFQUFFLEVBQXFELGlCQUNsRyw4REFBQ0M7UUFBSUQsV0FBVyxDQUFDLElBQUksRUFBRUEsV0FBVztrQkFBR0Q7Ozs7OztBQUd2QyxxQkFBcUI7QUFDckIsTUFBTUksUUFBUSxDQUFDLEVBQ2JKLFFBQVEsRUFDUkssVUFBVSxTQUFTLEVBQ25CSixZQUFZLEVBQUUsRUFLZjtJQUNDLE1BQU1LLFdBQVc7UUFDZkMsU0FBUztRQUNUQyxTQUFTO1FBQ1RDLGFBQWE7UUFDYkMsU0FBUztJQUNYO0lBQ0EscUJBQ0UsOERBQUNDO1FBQUtWLFdBQVcsQ0FBQyxxRkFBcUYsRUFBRUssUUFBUSxDQUFDRCxRQUFRLENBQUMsQ0FBQyxFQUFFSixXQUFXO2tCQUN0SUQ7Ozs7OztBQUdQO0FBRUEsd0JBQXdCO0FBQ3hCLE1BQU1ZLFdBQVcsQ0FBQyxFQUFFakIsS0FBSyxFQUFFTSxZQUFZLEVBQUUsRUFBeUM7SUFDaEYsTUFBTVksV0FBVztRQUNmLElBQUlsQixTQUFTLElBQUksT0FBTztRQUN4QixJQUFJQSxTQUFTLElBQUksT0FBTztRQUN4QixPQUFPO0lBQ1Q7SUFDQSxxQkFDRSw4REFBQ087UUFBSUQsV0FBVyxDQUFDLHFEQUFxRCxFQUFFQSxXQUFXO2tCQUNqRiw0RUFBQ25DLGlEQUFNQSxDQUFDb0MsR0FBRztZQUNUWSxTQUFTO2dCQUFFQyxPQUFPO1lBQUU7WUFDcEJDLFNBQVM7Z0JBQUVELE9BQU8sR0FBR3BCLE1BQU0sQ0FBQyxDQUFDO1lBQUM7WUFDOUJzQixZQUFZO2dCQUFFQyxVQUFVO2dCQUFHQyxNQUFNO1lBQVU7WUFDM0NsQixXQUFXLENBQUMsb0JBQW9CLEVBQUVZLFlBQVk7Ozs7Ozs7Ozs7O0FBSXREO0FBRUEsc0JBQXNCO0FBQ3RCLE1BQU1PLFNBQVMsQ0FBQyxFQUNkcEIsUUFBUSxFQUNSSyxVQUFVLFNBQVMsRUFDbkJnQixPQUFPLFNBQVMsRUFDaEJwQixZQUFZLEVBQUUsRUFDZCxHQUFHcUIsT0FNNEM7SUFDL0MsTUFBTWhCLFdBQVc7UUFDZkMsU0FBUztRQUNUZ0IsT0FBTztRQUNQQyxTQUFTO0lBQ1g7SUFDQSxNQUFNQyxRQUFRO1FBQ1psQixTQUFTO1FBQ1RtQixJQUFJO1FBQ0pDLE1BQU07SUFDUjtJQUNBLHFCQUNFLDhEQUFDQztRQUNDM0IsV0FBVyxDQUFDLGlGQUFpRixFQUFFSyxRQUFRLENBQUNELFFBQVEsQ0FBQyxDQUFDLEVBQUVvQixLQUFLLENBQUNKLEtBQUssQ0FBQyxDQUFDLEVBQUVwQixXQUFXO1FBQzdJLEdBQUdxQixLQUFLO2tCQUVSdEI7Ozs7OztBQUdQO0FBRUEseUJBQXlCO0FBQ3pCLE1BQU02QixjQUFjLENBQUMsRUFDbkJGLE1BQU1HLElBQUksRUFDVkMsS0FBSyxFQUNMQyxRQUFRLEVBQ1JDLE9BQU8sRUFNUixpQkFDQyw4REFBQ25FLGlEQUFNQSxDQUFDOEQsTUFBTTtRQUNaSyxTQUFTQTtRQUNUQyxZQUFZO1lBQUVDLEdBQUc7UUFBRTtRQUNuQkMsVUFBVTtZQUFFQyxPQUFPO1FBQUs7UUFDeEJwQyxXQUFXLENBQUMsa0ZBQWtGLEVBQzVGK0IsV0FDSSxvRUFDQSw2REFDSjs7MEJBRUYsOERBQUNGO2dCQUFLN0IsV0FBVTs7Ozs7OzBCQUNoQiw4REFBQ1U7Z0JBQUtWLFdBQVU7MEJBQXlDOEI7Ozs7Ozs7Ozs7OztBQUk3RCxxQkFBcUI7QUFDckIsTUFBTU8sVUFBVSxDQUFDLEVBQ2ZDLEtBQUssRUFDTDVDLEtBQUssRUFDTDZDLFFBQVEsRUFDUmIsTUFBTUcsSUFBSSxFQUNWVyxLQUFLLEVBQ0xDLElBQUksRUFRTDtJQUNDLE1BQU1DLFdBQXNFO1FBQzFFQyxTQUFTO1lBQUVDLElBQUk7WUFBcUJDLE1BQU07WUFBb0JDLEtBQUs7UUFBVTtRQUM3RUMsTUFBTTtZQUFFSCxJQUFJO1lBQWtCQyxNQUFNO1lBQWlCQyxLQUFLO1FBQVU7UUFDcEVFLFFBQVE7WUFBRUosSUFBSTtZQUFvQkMsTUFBTTtZQUFtQkMsS0FBSztRQUFVO1FBQzFFRyxPQUFPO1lBQUVMLElBQUk7WUFBbUJDLE1BQU07WUFBa0JDLEtBQUs7UUFBVTtJQUN6RTtJQUNBLE1BQU1JLFNBQVNSLFFBQVEsQ0FBQ0YsTUFBTSxJQUFJRSxTQUFTQyxPQUFPO0lBRWxELHFCQUNFLDhEQUFDN0M7UUFBS0UsV0FBVTtrQkFDZCw0RUFBQ0U7OzhCQUNDLDhEQUFDRDtvQkFBSUQsV0FBVTs7c0NBQ2IsOERBQUNDOzs4Q0FDQyw4REFBQ2tEO29DQUFFbkQsV0FBVTs4Q0FBMkNzQzs7Ozs7OzhDQUN4RCw4REFBQ2E7b0NBQUVuRCxXQUFVOzhDQUFpQ047Ozs7Ozs4Q0FDOUMsOERBQUN5RDtvQ0FBRW5ELFdBQVU7OENBQStCdUM7Ozs7Ozs7Ozs7OztzQ0FFOUMsOERBQUN0Qzs0QkFBSUQsV0FBVyxDQUFDLGlCQUFpQixFQUFFa0QsT0FBT04sRUFBRSxFQUFFO3NDQUM3Qyw0RUFBQ2Y7Z0NBQUs3QixXQUFXLENBQUMsUUFBUSxFQUFFa0QsT0FBT0wsSUFBSSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs4QkFHN0MsOERBQUM1QztvQkFBSUQsV0FBVTs4QkFDYiw0RUFBQ2YsbUhBQW1CQTt3QkFBQzZCLE9BQU07d0JBQU9zQyxRQUFPO2tDQUN2Qyw0RUFBQ3JFLHlHQUFTQTs0QkFBQzBELE1BQU1BO3NDQUNmLDRFQUFDekQsb0dBQUlBO2dDQUNIcUUsTUFBSztnQ0FDTEMsU0FBUTtnQ0FDUkMsUUFBUUwsT0FBT0osR0FBRztnQ0FDbEJVLGFBQWE7Z0NBQ2JDLEtBQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXJCO0FBRUEseUJBQXlCO0FBQ3pCLE1BQU1DLGNBQWMsQ0FBQyxFQUNuQkMsR0FBRyxFQUNIQyxNQUFNLEVBQ05DLFFBQVEsRUFLVDtJQUNDLE1BQU0sQ0FBQ0MsV0FBV0MsYUFBYSxHQUFHcEcsK0NBQVFBLENBQUM7SUFDM0MsTUFBTXFHLGdCQUFnQjlFLHNCQUFzQixJQUFJMEUsT0FBT3hFLElBQUk7SUFFM0QscUJBQ0UsOERBQUN2QixpREFBTUEsQ0FBQ29DLEdBQUc7UUFDVGdFLE1BQU07UUFDTnBELFNBQVM7WUFBRXFELFNBQVM7WUFBRzlCLE9BQU87UUFBSztRQUNuQ3JCLFNBQVM7WUFBRW1ELFNBQVM7WUFBRzlCLE9BQU87UUFBRTtRQUNoQytCLE1BQU07WUFBRUQsU0FBUztZQUFHOUIsT0FBTztRQUFLO1FBQ2hDSCxZQUFZO1lBQUVHLE9BQU87WUFBTXBCLFlBQVk7Z0JBQUVDLFVBQVU7WUFBSTtRQUFFO1FBQ3pEbUQsY0FBYyxJQUFNTCxhQUFhO1FBQ2pDTSxZQUFZLElBQU1OLGFBQWE7UUFDL0IvRCxXQUFVO2tCQUVWLDRFQUFDRjtZQUFLRSxXQUFVOzs4QkFFZCw4REFBQ0M7b0JBQUlELFdBQVcsQ0FBQyxXQUFXLEVBQUU0RCxPQUFPeEUsSUFBSSxHQUFHLG1CQUFtQixjQUFjOzs7Ozs7OEJBRTdFLDhEQUFDYztvQkFBWUYsV0FBVTs7c0NBRXJCLDhEQUFDQzs0QkFBSUQsV0FBVTs7OENBQ2IsOERBQUNDO29DQUFJRCxXQUFVOztzREFDYiw4REFBQ0M7NENBQUlELFdBQVcsQ0FBQyxzREFBc0QsRUFBRTRELE9BQU94RSxJQUFJLEdBQUcsc0JBQXNCLGlCQUFpQjtzREFDNUgsNEVBQUNOLHdOQUFNQTtnREFBQ2tCLFdBQVcsQ0FBQyxRQUFRLEVBQUU0RCxPQUFPeEUsSUFBSSxHQUFHLHFCQUFxQixnQkFBZ0I7Ozs7Ozs7Ozs7O3NEQUVuRiw4REFBQ2E7OzhEQUNDLDhEQUFDcUU7b0RBQUd0RSxXQUFVOzt3REFDWDJELElBQUlZLElBQUk7c0VBQ1QsOERBQUNDOzREQUNDQyxNQUFNZCxJQUFJZSxHQUFHOzREQUNiQyxRQUFPOzREQUNQQyxLQUFJOzREQUNKNUUsV0FBVTtzRUFFViw0RUFBQzdCLHdOQUFZQTtnRUFBQzZCLFdBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7OzhEQUc1Qiw4REFBQ21EO29EQUFFbkQsV0FBVTs7d0RBQXlCO3dEQUFNMkQsSUFBSWtCLElBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OENBSXhELDhEQUFDMUU7b0NBQU1DLFNBQVN3RCxPQUFPeEUsSUFBSSxHQUFHLFlBQVk7O3NEQUN4Qyw4REFBQ3NCOzRDQUFLVixXQUFVOzs4REFDZCw4REFBQ1U7b0RBQUtWLFdBQVcsQ0FBQyx3RUFBd0UsRUFBRTRELE9BQU94RSxJQUFJLEdBQUcsbUJBQW1CLGNBQWM7Ozs7Ozs4REFDM0ksOERBQUNzQjtvREFBS1YsV0FBVyxDQUFDLDhDQUE4QyxFQUFFNEQsT0FBT3hFLElBQUksR0FBRyxtQkFBbUIsY0FBYzs7Ozs7Ozs7Ozs7O3dDQUVsSHdFLE9BQU94RSxJQUFJLEdBQUcsZ0JBQWdCOzs7Ozs7Ozs7Ozs7O3NDQUtuQyw4REFBQ2E7OzhDQUNDLDhEQUFDQTtvQ0FBSUQsV0FBVTs7c0RBQ2IsOERBQUNVOzRDQUFLVixXQUFVO3NEQUF5Qjs7Ozs7O3NEQUN6Qyw4REFBQ1U7NENBQUtWLFdBQVU7O2dEQUFvQzRELE9BQU9rQixNQUFNO2dEQUFDOzs7Ozs7Ozs7Ozs7OzhDQUVwRSw4REFBQ25FO29DQUFTakIsT0FBT2tFLE9BQU9rQixNQUFNOzs7Ozs7Ozs7Ozs7c0NBSWhDLDhEQUFDN0U7NEJBQUlELFdBQVU7OzhDQUNiLDhEQUFDVTtvQ0FBS1YsV0FBVTs4Q0FBeUI7Ozs7Ozs4Q0FDekMsOERBQUNVO29DQUFLVixXQUFVOzhDQUNiNEQsT0FBT21CLGVBQWUsR0FBRyxJQUFJLEdBQUduQixPQUFPbUIsZUFBZSxDQUFDLEVBQUUsQ0FBQyxHQUFHOzs7Ozs7Ozs7Ozs7c0NBS2xFLDhEQUFDOUU7NEJBQUlELFdBQVU7c0NBQ2IsNEVBQUNmLG1IQUFtQkE7Z0NBQUM2QixPQUFNO2dDQUFPc0MsUUFBTzswQ0FDdkMsNEVBQUNyRSx5R0FBU0E7b0NBQUMwRCxNQUFNdUI7OENBQ2YsNEVBQUNoRixvR0FBSUE7d0NBQ0hxRSxNQUFLO3dDQUNMQyxTQUFRO3dDQUNSQyxRQUFRSyxPQUFPeEUsSUFBSSxHQUFHLFlBQVk7d0NBQ2xDb0UsYUFBYTt3Q0FDYkMsS0FBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NDQU9iLDhEQUFDeEQ7NEJBQUlELFdBQVU7OzhDQUNiLDhEQUFDVTtvQ0FBS1YsV0FBVTs7c0RBQ2QsOERBQUNwQix3TkFBS0E7NENBQUNvQixXQUFVOzs7Ozs7d0NBQ2hCNEQsT0FBT29CLE1BQU0sR0FBRyxJQUFJQyxLQUFLckIsT0FBT29CLE1BQU0sQ0FBQ0UsU0FBUyxFQUFFQyxrQkFBa0IsS0FBSzs7Ozs7Ozs4Q0FHNUUsOERBQUNySCwwREFBZUE7OENBQ2JnRywyQkFDQyw4REFBQ2pHLGlEQUFNQSxDQUFDb0MsR0FBRzt3Q0FDVFksU0FBUzs0Q0FBRXFELFNBQVM7NENBQUdoQyxHQUFHO3dDQUFHO3dDQUM3Qm5CLFNBQVM7NENBQUVtRCxTQUFTOzRDQUFHaEMsR0FBRzt3Q0FBRTt3Q0FDNUJpQyxNQUFNOzRDQUFFRCxTQUFTOzRDQUFHaEMsR0FBRzt3Q0FBRzt3Q0FDMUJsQyxXQUFVOzswREFFViw4REFBQ21CO2dEQUFPZixTQUFRO2dEQUFRZ0IsTUFBSztnREFBT3BCLFdBQVU7MERBQzVDLDRFQUFDL0IseU5BQVNBO29EQUFDK0IsV0FBVTs7Ozs7Ozs7Ozs7MERBRXZCLDhEQUFDbUI7Z0RBQU9mLFNBQVE7Z0RBQVFnQixNQUFLO2dEQUFPcEIsV0FBVTswREFDNUMsNEVBQUMxQix5TkFBUUE7b0RBQUMwQixXQUFVOzs7Ozs7Ozs7OzswREFFdEIsOERBQUNtQjtnREFDQ2YsU0FBUTtnREFDUmdCLE1BQUs7Z0RBQ0xwQixXQUFVO2dEQUNWZ0MsU0FBUzZCOzBEQUVULDRFQUFDM0YseU5BQU1BO29EQUFDOEIsV0FBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVXRDO0FBRWUsU0FBU29GO0lBQ3RCLE1BQU0sQ0FBQ0MsTUFBTUMsUUFBUSxHQUFHM0gsK0NBQVFBLENBQVEsRUFBRTtJQUMxQyxNQUFNLENBQUNpRyxRQUFRMkIsVUFBVSxHQUFHNUgsK0NBQVFBLENBQWdCLEVBQUU7SUFDdEQsTUFBTSxDQUFDNkgsU0FBU0MsV0FBVyxHQUFHOUgsK0NBQVFBLENBQUM7SUFDdkMsTUFBTSxDQUFDK0gsV0FBV0MsYUFBYSxHQUFHaEksK0NBQVFBLENBQUM7SUFDM0MsTUFBTSxDQUFDaUksY0FBY0MsZ0JBQWdCLEdBQUdsSSwrQ0FBUUEsQ0FBQztJQUNqRCxNQUFNLENBQUNtSSxRQUFRQyxVQUFVLEdBQUdwSSwrQ0FBUUEsQ0FBZTtRQUNqRDRHLE1BQU07UUFDTkcsS0FBSztRQUNMRyxNQUFNO1FBQ05tQixTQUFTO0lBQ1g7SUFFQXBJLGdEQUFTQTsrQkFBQztZQUNScUk7WUFDQSxNQUFNQyxXQUFXQyxZQUFZRixXQUFXO1lBQ3hDO3VDQUFPLElBQU1HLGNBQWNGOztRQUM3Qjs4QkFBRyxFQUFFO0lBRUwsZUFBZUQ7UUFDYixJQUFJO1lBQ0YsTUFBTUksTUFBTSxNQUFNQyxNQUFNO1lBQ3hCLE1BQU03RCxPQUFPLE1BQU00RCxJQUFJRSxJQUFJO1lBQzNCakIsUUFBUTdDLEtBQUs0QyxJQUFJLElBQUksRUFBRTtZQUN2QkUsVUFBVTlDLEtBQUttQixNQUFNLElBQUksRUFBRTtRQUM3QixFQUFFLE9BQU80QyxLQUFLO1lBQ1pDLFFBQVFDLEtBQUssQ0FBQyx5QkFBeUJGO1FBQ3pDLFNBQVU7WUFDUmYsV0FBVztRQUNiO0lBQ0Y7SUFFQSxlQUFla0IsT0FBT0MsQ0FBa0I7UUFDdENBLEVBQUVDLGNBQWM7UUFDaEIsSUFBSSxDQUFDZixPQUFPdkIsSUFBSSxJQUFJLENBQUN1QixPQUFPcEIsR0FBRyxFQUFFO1FBQ2pDLE1BQU00QixNQUFNLGdCQUFnQjtZQUMxQlEsUUFBUTtZQUNSQyxTQUFTO2dCQUFFLGdCQUFnQjtZQUFtQjtZQUM5Q0MsTUFBTUMsS0FBS0MsU0FBUyxDQUFDO2dCQUFFQyxRQUFRO2dCQUFVeEQsS0FBS21DO1lBQU87UUFDdkQ7UUFDQUQsZ0JBQWdCO1FBQ2hCRSxVQUFVO1lBQUV4QixNQUFNO1lBQUlHLEtBQUs7WUFBcUJHLE1BQU07WUFBTW1CLFNBQVM7UUFBSztRQUMxRUM7SUFDRjtJQUVBLGVBQWVtQixVQUFVQyxFQUFVO1FBQ2pDLElBQUksQ0FBQ0MsUUFBUSx5QkFBeUI7UUFDdEMsTUFBTWhCLE1BQU0sZ0JBQWdCO1lBQzFCUSxRQUFRO1lBQ1JDLFNBQVM7Z0JBQUUsZ0JBQWdCO1lBQW1CO1lBQzlDQyxNQUFNQyxLQUFLQyxTQUFTLENBQUM7Z0JBQUVDLFFBQVE7Z0JBQWFFO1lBQUc7UUFDakQ7UUFDQXBCO0lBQ0Y7SUFFQSxTQUFTc0IsYUFBYUMsS0FBYTtRQUNqQyxNQUFNQyxZQUFZN0QsT0FBTzhELE1BQU0sQ0FBQyxDQUFDQyxJQUFNQSxFQUFFSCxLQUFLLEtBQUtBO1FBQ25ELE1BQU14QyxTQUFTeUMsU0FBUyxDQUFDQSxVQUFVbEksTUFBTSxHQUFHLEVBQUU7UUFDOUMsTUFBTUgsT0FBTzRGLFFBQVFwQixXQUFXO1FBQ2hDLE1BQU1rQixTQUFTMkMsVUFBVWxJLE1BQU0sR0FBRyxJQUM5QkksS0FBS2lJLEtBQUssQ0FBQyxVQUFXRixNQUFNLENBQUNDLENBQUFBLElBQUtBLEVBQUUvRCxNQUFNLEtBQUssTUFBTXJFLE1BQU0sR0FBR2tJLFVBQVVsSSxNQUFNLEdBQUksT0FDbEY7UUFDSixNQUFNd0Ysa0JBQWtCMEMsVUFBVWxJLE1BQU0sR0FBRyxJQUN2Q0ksS0FBS2lJLEtBQUssQ0FBQ0gsVUFBVUMsTUFBTSxDQUFDQyxDQUFBQSxJQUFLQSxFQUFFRSxZQUFZLEVBQUVDLE1BQU0sQ0FBQyxDQUFDQyxLQUFLSixJQUFNSSxNQUFPSixDQUFBQSxFQUFFRSxZQUFZLElBQUksSUFBSSxLQUFLSixVQUFVQyxNQUFNLENBQUNDLENBQUFBLElBQUtBLEVBQUVFLFlBQVksRUFBRXRJLE1BQU0sS0FBSyxJQUN2SjtRQUNKLE9BQU87WUFBRXlGO1lBQVE1RjtZQUFNMEY7WUFBUUM7UUFBZ0I7SUFDakQ7SUFFQSxNQUFNaUQsUUFBUTtRQUNaQyxPQUFPNUMsS0FBSzlGLE1BQU07UUFDbEIySSxRQUFRN0MsS0FBS3FDLE1BQU0sQ0FBQyxDQUFDL0QsTUFBUTRELGFBQWE1RCxJQUFJMEQsRUFBRSxFQUFFakksSUFBSSxFQUFFRyxNQUFNO1FBQzlENEksU0FBUzlDLEtBQUtxQyxNQUFNLENBQUMsQ0FBQy9ELE1BQVEsQ0FBQzRELGFBQWE1RCxJQUFJMEQsRUFBRSxFQUFFakksSUFBSSxFQUFFRyxNQUFNO1FBQ2hFNkksV0FBVy9DLEtBQUs5RixNQUFNLEdBQUcsSUFDckJJLEtBQUtpSSxLQUFLLENBQUN2QyxLQUFLeUMsTUFBTSxDQUFDLENBQUNDLEtBQUtwRSxNQUFRb0UsTUFBTVIsYUFBYTVELElBQUkwRCxFQUFFLEVBQUV2QyxNQUFNLEVBQUUsS0FBS08sS0FBSzlGLE1BQU0sSUFDeEY7UUFDSndGLGlCQUFpQk0sS0FBSzlGLE1BQU0sR0FBRyxJQUMzQkksS0FBS2lJLEtBQUssQ0FBQ3ZDLEtBQUt5QyxNQUFNLENBQUMsQ0FBQ0MsS0FBS3BFLE1BQVFvRSxNQUFNUixhQUFhNUQsSUFBSTBELEVBQUUsRUFBRXRDLGVBQWUsRUFBRSxLQUFLTSxLQUFLOUYsTUFBTSxJQUNqRztRQUNKOEksV0FBV3pFLE9BQU84RCxNQUFNLENBQUNDLENBQUFBLElBQUtBLEVBQUUvRCxNQUFNLEtBQUssUUFBUXJFLE1BQU07SUFDM0Q7SUFFQSxNQUFNK0ksUUFBUU4sTUFBTUUsTUFBTSxLQUFLRixNQUFNQyxLQUFLLElBQUlELE1BQU1DLEtBQUssR0FBRztJQUU1RCwrQkFBK0I7SUFDL0IsTUFBTU0sZUFBZXJKLHNCQUFzQixJQUFJO0lBQy9DLE1BQU1zSixhQUFhdEosc0JBQXNCLElBQUk7SUFDN0MsTUFBTXVKLGVBQWV2SixzQkFBc0IsSUFBSSxNQUFNd0osR0FBRyxDQUFDQyxDQUFBQSxJQUFNO1lBQUUsR0FBR0EsQ0FBQztZQUFFakosT0FBT2lKLEVBQUVqSixLQUFLLEdBQUc7UUFBRTtJQUMxRixNQUFNa0osZ0JBQWdCMUosc0JBQXNCLElBQUk7SUFFaEQsSUFBSXNHLFNBQVM7UUFDWCxxQkFDRSw4REFBQ3ZGO1lBQUlELFdBQVU7c0JBQ2IsNEVBQUNuQyxpREFBTUEsQ0FBQ29DLEdBQUc7Z0JBQ1RZLFNBQVM7b0JBQUVxRCxTQUFTO2dCQUFFO2dCQUN0Qm5ELFNBQVM7b0JBQUVtRCxTQUFTO2dCQUFFO2dCQUN0QmxFLFdBQVU7O2tDQUVWLDhEQUFDQzt3QkFBSUQsV0FBVTs7MENBQ2IsOERBQUNuQyxpREFBTUEsQ0FBQ29DLEdBQUc7Z0NBQ1RjLFNBQVM7b0NBQUU4SCxRQUFRO2dDQUFJO2dDQUN2QjdILFlBQVk7b0NBQUVDLFVBQVU7b0NBQUc2SCxRQUFRQztvQ0FBVTdILE1BQU07Z0NBQVM7Z0NBQzVEbEIsV0FBVTs7Ozs7OzBDQUVaLDhEQUFDQztnQ0FBSUQsV0FBVTs7Ozs7Ozs7Ozs7O2tDQUVqQiw4REFBQ21EO3dCQUFFbkQsV0FBVTtrQ0FBaUI7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBSXRDO0lBRUEscUJBQ0UsOERBQUNDO1FBQUlELFdBQVU7OzBCQUViLDhEQUFDZ0o7Z0JBQU1oSixXQUFVOztrQ0FFZiw4REFBQ0M7d0JBQUlELFdBQVU7OzBDQUNiLDhEQUFDQztnQ0FBSUQsV0FBVTswQ0FDYiw0RUFBQ2pDLHlOQUFRQTtvQ0FBQ2lDLFdBQVU7Ozs7Ozs7Ozs7OzBDQUV0Qiw4REFBQ1U7Z0NBQUtWLFdBQVU7MENBQW9DOzs7Ozs7Ozs7Ozs7a0NBSXRELDhEQUFDaUo7d0JBQUlqSixXQUFVOzswQ0FDYiw4REFBQzRCO2dDQUNDRixNQUFNbkQseU5BQWVBO2dDQUNyQnVELE9BQU07Z0NBQ05DLFVBQVUyRCxjQUFjO2dDQUN4QjFELFNBQVMsSUFBTTJELGFBQWE7Ozs7OzswQ0FFOUIsOERBQUMvRDtnQ0FDQ0YsTUFBTWxELHlOQUFPQTtnQ0FDYnNELE9BQU07Z0NBQ05DLFVBQVUyRCxjQUFjO2dDQUN4QjFELFNBQVMsSUFBTTJELGFBQWE7Ozs7OzswQ0FFOUIsOERBQUMvRDtnQ0FDQ0YsTUFBTWpELHlOQUFhQTtnQ0FDbkJxRCxPQUFNO2dDQUNOQyxVQUFVMkQsY0FBYztnQ0FDeEIxRCxTQUFTLElBQU0yRCxhQUFhOzs7Ozs7MENBRTlCLDhEQUFDL0Q7Z0NBQ0NGLE1BQU1oRCx5TkFBT0E7Z0NBQ2JvRCxPQUFNO2dDQUNOQyxVQUFVMkQsY0FBYztnQ0FDeEIxRCxTQUFTLElBQU0yRCxhQUFhOzs7Ozs7MENBRTlCLDhEQUFDL0Q7Z0NBQ0NGLE1BQU1wRCx5TkFBUUE7Z0NBQ2R3RCxPQUFNO2dDQUNOQyxVQUFVMkQsY0FBYztnQ0FDeEIxRCxTQUFTLElBQU0yRCxhQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBTWxDLDhEQUFDdUQ7Z0JBQUtsSixXQUFVOztrQ0FFZCw4REFBQ21KO3dCQUFPbkosV0FBVTs7MENBRWhCLDhEQUFDQztnQ0FBSUQsV0FBVyxDQUFDLHdEQUF3RCxFQUN2RXNJLFFBQ0ksNENBQ0EsdUNBQ0o7O2tEQUNBLDhEQUFDNUg7d0NBQUtWLFdBQVU7OzBEQUNkLDhEQUFDVTtnREFBS1YsV0FBVyxDQUFDLHdFQUF3RSxFQUFFc0ksUUFBUSxtQkFBbUIsZ0JBQWdCOzs7Ozs7MERBQ3ZJLDhEQUFDNUg7Z0RBQUtWLFdBQVcsQ0FBQywwQ0FBMEMsRUFBRXNJLFFBQVEsbUJBQW1CLGdCQUFnQjs7Ozs7Ozs7Ozs7O2tEQUUzRyw4REFBQzVIO3dDQUFLVixXQUFXLENBQUMsb0JBQW9CLEVBQUVzSSxRQUFRLHFCQUFxQixrQkFBa0I7a0RBQ3BGQSxRQUFRLDRCQUE0QixHQUFHTixNQUFNRyxPQUFPLENBQUMsUUFBUSxFQUFFSCxNQUFNRyxPQUFPLEdBQUcsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDOzs7Ozs7a0RBRXJHLDhEQUFDekg7d0NBQUtWLFdBQVU7OzRDQUF5Qjs0Q0FBVyxJQUFJaUYsT0FBT0Usa0JBQWtCOzs7Ozs7Ozs7Ozs7OzBDQUluRiw4REFBQ2xGO2dDQUFJRCxXQUFVOztrREFDYiw4REFBQ0M7d0NBQUlELFdBQVU7OzBEQUNiLDhEQUFDNUIseU5BQU1BO2dEQUFDNEIsV0FBVTs7Ozs7OzBEQUNsQiw4REFBQ29KO2dEQUNDL0YsTUFBSztnREFDTGdHLGFBQVk7Z0RBQ1pySixXQUFVOzs7Ozs7Ozs7Ozs7a0RBSWQsOERBQUNtQjt3Q0FBT2EsU0FBUyxJQUFNNkQsZ0JBQWdCOzswREFDckMsOERBQUM3SCx5TkFBSUE7Z0RBQUNnQyxXQUFVOzs7Ozs7NENBQWlCOzs7Ozs7O2tEQUluQyw4REFBQ21CO3dDQUFPZixTQUFRO3dDQUFRZ0IsTUFBSzt3Q0FBT1ksU0FBU2lFO2tEQUMzQyw0RUFBQ2hJLHlOQUFTQTs0Q0FBQytCLFdBQVU7Ozs7Ozs7Ozs7O2tEQUd2Qiw4REFBQ21CO3dDQUFPZixTQUFRO3dDQUFRZ0IsTUFBSzt3Q0FBT3BCLFdBQVU7OzBEQUM1Qyw4REFBQzNCLHlOQUFJQTtnREFBQzJCLFdBQVU7Ozs7Ozs0Q0FDZmdJLE1BQU1LLFNBQVMsR0FBRyxtQkFDakIsOERBQUMzSDtnREFBS1YsV0FBVTs7Ozs7Ozs7Ozs7O2tEQUlwQiw4REFBQ0M7d0NBQUlELFdBQVU7a0RBQXNJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBT3pKLDhEQUFDQzt3QkFBSUQsV0FBVTtrQ0FDYiw0RUFBQ0M7NEJBQUlELFdBQVU7OzhDQUViLDhEQUFDQztvQ0FBSUQsV0FBVTs7c0RBQ2IsOERBQUNxQzs0Q0FDQ0MsT0FBTTs0Q0FDTjVDLE9BQU8sR0FBR3NJLE1BQU1FLE1BQU0sQ0FBQyxDQUFDLEVBQUVGLE1BQU1DLEtBQUssRUFBRTs0Q0FDdkMxRixVQUFVK0YsUUFBUSxnQkFBZ0IsR0FBR04sTUFBTUcsT0FBTyxDQUFDLEtBQUssQ0FBQzs0Q0FDekR6RyxNQUFNNUMsd05BQU1BOzRDQUNaMEQsT0FBTTs0Q0FDTkMsTUFBTThGOzs7Ozs7c0RBRVIsOERBQUNsRzs0Q0FDQ0MsT0FBTTs0Q0FDTjVDLE9BQU8sR0FBR3NJLE1BQU1JLFNBQVMsQ0FBQyxDQUFDLENBQUM7NENBQzVCN0YsVUFBUzs0Q0FDVGIsTUFBTS9DLHlOQUFZQTs0Q0FDbEI2RCxPQUFNOzRDQUNOQyxNQUFNK0Y7Ozs7OztzREFFUiw4REFBQ25HOzRDQUNDQyxPQUFNOzRDQUNONUMsT0FBTyxHQUFHc0ksTUFBTWpELGVBQWUsQ0FBQyxFQUFFLENBQUM7NENBQ25DeEMsVUFBUzs0Q0FDVGIsTUFBTTdDLHlOQUFHQTs0Q0FDVDJELE9BQU07NENBQ05DLE1BQU1nRzs7Ozs7O3NEQUVSLDhEQUFDcEc7NENBQ0NDLE9BQU07NENBQ041QyxPQUFPc0ksTUFBTUssU0FBUzs0Q0FDdEI5RixVQUFTOzRDQUNUYixNQUFNakQseU5BQWFBOzRDQUNuQitELE9BQU07NENBQ05DLE1BQU1tRzs7Ozs7Ozs7Ozs7OzhDQUtWLDhEQUFDM0k7O3NEQUNDLDhEQUFDQTs0Q0FBSUQsV0FBVTs7OERBQ2IsOERBQUNzSjtvREFBR3RKLFdBQVU7OERBQW1DOzs7Ozs7OERBQ2pELDhEQUFDVTtvREFBS1YsV0FBVTs7d0RBQTBCZ0ksTUFBTUMsS0FBSzt3REFBQzs7Ozs7Ozs7Ozs7OztzREFHeEQsOERBQUNwSyxpREFBTUEsQ0FBQ29DLEdBQUc7NENBQ1RnRSxNQUFNOzRDQUNOakUsV0FBVTtzREFFViw0RUFBQ2xDLDBEQUFlQTtnREFBQ3lMLE1BQUs7MERBQ25CbEUsS0FBS3FELEdBQUcsQ0FBQyxDQUFDL0U7b0RBQ1QsTUFBTThELFlBQVlGLGFBQWE1RCxJQUFJMEQsRUFBRTtvREFDckMscUJBQ0UsOERBQUMzRDt3REFFQ0MsS0FBS0E7d0RBQ0xDLFFBQVE2RDt3REFDUjVELFVBQVUsSUFBTXVELFVBQVV6RCxJQUFJMEQsRUFBRTt1REFIM0IxRCxJQUFJMEQsRUFBRTs7Ozs7Z0RBTWpCOzs7Ozs7Ozs7Ozt3Q0FJSGhDLEtBQUs5RixNQUFNLEtBQUssbUJBQ2YsOERBQUMxQixpREFBTUEsQ0FBQ29DLEdBQUc7NENBQ1RZLFNBQVM7Z0RBQUVxRCxTQUFTO2dEQUFHc0YsR0FBRzs0Q0FBRzs0Q0FDN0J6SSxTQUFTO2dEQUFFbUQsU0FBUztnREFBR3NGLEdBQUc7NENBQUU7NENBQzVCeEosV0FBVTs7OERBRVYsOERBQUNDO29EQUFJRCxXQUFVOzhEQUNiLDRFQUFDeEIseU5BQU9BO3dEQUFDd0IsV0FBVTs7Ozs7Ozs7Ozs7OERBRXJCLDhEQUFDc0U7b0RBQUd0RSxXQUFVOzhEQUF3Qzs7Ozs7OzhEQUN0RCw4REFBQ21EO29EQUFFbkQsV0FBVTs4REFBc0I7Ozs7Ozs4REFDbkMsOERBQUNtQjtvREFBT2EsU0FBUyxJQUFNNkQsZ0JBQWdCOzhEQUFPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkFXMUQsOERBQUMvSCwwREFBZUE7MEJBQ2I4SCw4QkFDQyw4REFBQy9ILGlEQUFNQSxDQUFDb0MsR0FBRztvQkFDVFksU0FBUzt3QkFBRXFELFNBQVM7b0JBQUU7b0JBQ3RCbkQsU0FBUzt3QkFBRW1ELFNBQVM7b0JBQUU7b0JBQ3RCQyxNQUFNO3dCQUFFRCxTQUFTO29CQUFFO29CQUNuQmxFLFdBQVU7OEJBRVYsNEVBQUNuQyxpREFBTUEsQ0FBQ29DLEdBQUc7d0JBQ1RZLFNBQVM7NEJBQUVxRCxTQUFTOzRCQUFHOUIsT0FBTzs0QkFBTW9ILEdBQUc7d0JBQUc7d0JBQzFDekksU0FBUzs0QkFBRW1ELFNBQVM7NEJBQUc5QixPQUFPOzRCQUFHb0gsR0FBRzt3QkFBRTt3QkFDdENyRixNQUFNOzRCQUFFRCxTQUFTOzRCQUFHOUIsT0FBTzs0QkFBTW9ILEdBQUc7d0JBQUc7d0JBQ3ZDeEosV0FBVTs7MENBRVYsOERBQUNzSjtnQ0FBR3RKLFdBQVU7MENBQW9DOzs7Ozs7MENBQ2xELDhEQUFDbUQ7Z0NBQUVuRCxXQUFVOzBDQUE4Qjs7Ozs7OzBDQUUzQyw4REFBQ3lKO2dDQUFLQyxVQUFVL0M7Z0NBQVEzRyxXQUFVOztrREFDaEMsOERBQUNDOzswREFDQyw4REFBQzZCO2dEQUFNOUIsV0FBVTswREFBZ0Q7Ozs7OzswREFDakUsOERBQUNvSjtnREFDQy9GLE1BQUs7Z0RBQ0wzRCxPQUFPb0csT0FBT3ZCLElBQUk7Z0RBQ2xCb0YsVUFBVSxDQUFDL0MsSUFBTWIsVUFBVTt3REFBRSxHQUFHRCxNQUFNO3dEQUFFdkIsTUFBTXFDLEVBQUVqQyxNQUFNLENBQUNqRixLQUFLO29EQUFDO2dEQUM3RE0sV0FBVTtnREFDVnFKLGFBQVk7Z0RBQ1pPLFFBQVE7Ozs7Ozs7Ozs7OztrREFJWiw4REFBQzNKO3dDQUFJRCxXQUFVOzswREFDYiw4REFBQ0M7O2tFQUNDLDhEQUFDNkI7d0RBQU05QixXQUFVO2tFQUFnRDs7Ozs7O2tFQUNqRSw4REFBQ29KO3dEQUNDL0YsTUFBSzt3REFDTDNELE9BQU9vRyxPQUFPcEIsR0FBRzt3REFDakJpRixVQUFVLENBQUMvQyxJQUFNYixVQUFVO2dFQUFFLEdBQUdELE1BQU07Z0VBQUVwQixLQUFLa0MsRUFBRWpDLE1BQU0sQ0FBQ2pGLEtBQUs7NERBQUM7d0RBQzVETSxXQUFVO3dEQUNWcUosYUFBWTt3REFDWk8sUUFBUTs7Ozs7Ozs7Ozs7OzBEQUdaLDhEQUFDM0o7O2tFQUNDLDhEQUFDNkI7d0RBQU05QixXQUFVO2tFQUFnRDs7Ozs7O2tFQUNqRSw4REFBQ29KO3dEQUNDL0YsTUFBSzt3REFDTDNELE9BQU9vRyxPQUFPakIsSUFBSTt3REFDbEI4RSxVQUFVLENBQUMvQyxJQUFNYixVQUFVO2dFQUFFLEdBQUdELE1BQU07Z0VBQUVqQixNQUFNZ0YsU0FBU2pELEVBQUVqQyxNQUFNLENBQUNqRixLQUFLOzREQUFFO3dEQUN2RU0sV0FBVTt3REFDVjRKLFFBQVE7Ozs7Ozs7Ozs7Ozs7Ozs7OztrREFLZCw4REFBQzNKO3dDQUFJRCxXQUFVOzswREFDYiw4REFBQ21CO2dEQUNDa0MsTUFBSztnREFDTGpELFNBQVE7Z0RBQ1I0QixTQUFTLElBQU02RCxnQkFBZ0I7Z0RBQy9CN0YsV0FBVTswREFDWDs7Ozs7OzBEQUdELDhEQUFDbUI7Z0RBQU9rQyxNQUFLO2dEQUFTckQsV0FBVTswREFBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVczRCIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL3NyYy9hcHAvcGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBtb3Rpb24sIEFuaW1hdGVQcmVzZW5jZSB9IGZyb20gXCJmcmFtZXItbW90aW9uXCI7XG5pbXBvcnQge1xuICBBY3Rpdml0eSxcbiAgUGx1cyxcbiAgUmVmcmVzaEN3LFxuICBUcmFzaDIsXG4gIEV4dGVybmFsTGluayxcbiAgU2VhcmNoLFxuICBCZWxsLFxuICBTZXR0aW5ncyxcbiAgQ2hldnJvbkxlZnQsXG4gIENoZXZyb25SaWdodCxcbiAgTGF5b3V0RGFzaGJvYXJkLFxuICBNb25pdG9yLFxuICBBbGVydFRyaWFuZ2xlLFxuICBIaXN0b3J5LFxuICBDaGVja0NpcmNsZTIsXG4gIFhDaXJjbGUsXG4gIENsb2NrLFxuICBaYXAsXG4gIFRyZW5kaW5nVXAsXG4gIFNlcnZlcixcbiAgTW9yZVZlcnRpY2FsLFxuICBNZW51LFxufSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQge1xuICBMaW5lQ2hhcnQsXG4gIExpbmUsXG4gIFJlc3BvbnNpdmVDb250YWluZXIsXG59IGZyb20gXCJyZWNoYXJ0c1wiO1xuXG4vLyBUeXBlc1xuaW50ZXJmYWNlIEFwcCB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIHBvcnQ6IG51bWJlcjtcbiAgcGF0aDogc3RyaW5nO1xuICBjb21tYW5kOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBTdGF0dXNFbnRyeSB7XG4gIGFwcElkOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBzdGF0dXM6IFwidXBcIiB8IFwiZG93blwiO1xuICByZXNwb25zZVRpbWU/OiBudW1iZXI7XG59XG5cbi8vIEdlbmVyYXRlIHNwYXJrbGluZSBkYXRhXG5jb25zdCBnZW5lcmF0ZVNwYXJrbGluZURhdGEgPSAocG9pbnRzOiBudW1iZXIsIGlzVXA6IGJvb2xlYW4pID0+IHtcbiAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IHBvaW50cyB9LCAoXywgaSkgPT4gKHtcbiAgICB2YWx1ZTogaXNVcCA/IDgwICsgTWF0aC5yYW5kb20oKSAqIDIwIDogTWF0aC5yYW5kb20oKSAqIDMwLFxuICAgIHRpbWU6IGksXG4gIH0pKTtcbn07XG5cbi8vIHNoYWRjbi1zdHlsZSBDYXJkIENvbXBvbmVudFxuY29uc3QgQ2FyZCA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUgPSBcIlwiIH06IHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTsgY2xhc3NOYW1lPzogc3RyaW5nIH0pID0+IChcbiAgPGRpdiBjbGFzc05hbWU9e2BiZy1zbGF0ZS05MDAvNjAgYmFja2Ryb3AtYmx1ci14bCBib3JkZXIgYm9yZGVyLXNsYXRlLTgwMC82MCByb3VuZGVkLXhsIG92ZXJmbG93LWhpZGRlbiAke2NsYXNzTmFtZX1gfT5cbiAgICB7Y2hpbGRyZW59XG4gIDwvZGl2PlxuKTtcblxuY29uc3QgQ2FyZENvbnRlbnQgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lID0gXCJcIiB9OiB7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7IGNsYXNzTmFtZT86IHN0cmluZyB9KSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPXtgcC02ICR7Y2xhc3NOYW1lfWB9PntjaGlsZHJlbn08L2Rpdj5cbik7XG5cbi8vIHNoYWRjbi1zdHlsZSBCYWRnZVxuY29uc3QgQmFkZ2UgPSAoeyBcbiAgY2hpbGRyZW4sIFxuICB2YXJpYW50ID0gXCJkZWZhdWx0XCIsXG4gIGNsYXNzTmFtZSA9IFwiXCIgXG59OiB7IFxuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlOyBcbiAgdmFyaWFudD86IFwiZGVmYXVsdFwiIHwgXCJzdWNjZXNzXCIgfCBcImRlc3RydWN0aXZlXCIgfCBcIndhcm5pbmdcIjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkgPT4ge1xuICBjb25zdCB2YXJpYW50cyA9IHtcbiAgICBkZWZhdWx0OiBcImJnLXNsYXRlLTgwMCB0ZXh0LXNsYXRlLTIwMCBib3JkZXItc2xhdGUtNzAwXCIsXG4gICAgc3VjY2VzczogXCJiZy1lbWVyYWxkLTUwMC8xMCB0ZXh0LWVtZXJhbGQtNDAwIGJvcmRlci1lbWVyYWxkLTUwMC8yMFwiLFxuICAgIGRlc3RydWN0aXZlOiBcImJnLXJlZC01MDAvMTAgdGV4dC1yZWQtNDAwIGJvcmRlci1yZWQtNTAwLzIwXCIsXG4gICAgd2FybmluZzogXCJiZy1hbWJlci01MDAvMTAgdGV4dC1hbWJlci00MDAgYm9yZGVyLWFtYmVyLTUwMC8yMFwiLFxuICB9O1xuICByZXR1cm4gKFxuICAgIDxzcGFuIGNsYXNzTmFtZT17YGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHB4LTIuNSBweS0xIHJvdW5kZWQtZnVsbCB0ZXh0LXhzIGZvbnQtbWVkaXVtIGJvcmRlciAke3ZhcmlhbnRzW3ZhcmlhbnRdfSAke2NsYXNzTmFtZX1gfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L3NwYW4+XG4gICk7XG59O1xuXG4vLyBzaGFkY24tc3R5bGUgUHJvZ3Jlc3NcbmNvbnN0IFByb2dyZXNzID0gKHsgdmFsdWUsIGNsYXNzTmFtZSA9IFwiXCIgfTogeyB2YWx1ZTogbnVtYmVyOyBjbGFzc05hbWU/OiBzdHJpbmcgfSkgPT4ge1xuICBjb25zdCBnZXRDb2xvciA9ICgpID0+IHtcbiAgICBpZiAodmFsdWUgPj0gOTUpIHJldHVybiBcImJnLWVtZXJhbGQtNTAwXCI7XG4gICAgaWYgKHZhbHVlID49IDgwKSByZXR1cm4gXCJiZy1hbWJlci01MDBcIjtcbiAgICByZXR1cm4gXCJiZy1yZWQtNTAwXCI7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2B3LWZ1bGwgYmctc2xhdGUtODAwIHJvdW5kZWQtZnVsbCBoLTIgb3ZlcmZsb3ctaGlkZGVuICR7Y2xhc3NOYW1lfWB9PlxuICAgICAgPG1vdGlvbi5kaXYgXG4gICAgICAgIGluaXRpYWw9e3sgd2lkdGg6IDAgfX1cbiAgICAgICAgYW5pbWF0ZT17eyB3aWR0aDogYCR7dmFsdWV9JWAgfX1cbiAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMSwgZWFzZTogXCJlYXNlT3V0XCIgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgaC1mdWxsIHJvdW5kZWQtZnVsbCAke2dldENvbG9yKCl9YH1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG4vLyBzaGFkY24tc3R5bGUgQnV0dG9uXG5jb25zdCBCdXR0b24gPSAoeyBcbiAgY2hpbGRyZW4sIFxuICB2YXJpYW50ID0gXCJkZWZhdWx0XCIsIFxuICBzaXplID0gXCJkZWZhdWx0XCIsXG4gIGNsYXNzTmFtZSA9IFwiXCIsXG4gIC4uLnByb3BzIFxufTogeyBcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTsgXG4gIHZhcmlhbnQ/OiBcImRlZmF1bHRcIiB8IFwiZ2hvc3RcIiB8IFwib3V0bGluZVwiO1xuICBzaXplPzogXCJkZWZhdWx0XCIgfCBcInNtXCIgfCBcImljb25cIjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSAmIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICBjb25zdCB2YXJpYW50cyA9IHtcbiAgICBkZWZhdWx0OiBcImJnLWVtZXJhbGQtNjAwIGhvdmVyOmJnLWVtZXJhbGQtNTAwIHRleHQtd2hpdGVcIixcbiAgICBnaG9zdDogXCJob3ZlcjpiZy1zbGF0ZS04MDAgdGV4dC1zbGF0ZS00MDAgaG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgIG91dGxpbmU6IFwiYm9yZGVyIGJvcmRlci1zbGF0ZS03MDAgaG92ZXI6Ymctc2xhdGUtODAwIHRleHQtc2xhdGUtMzAwXCIsXG4gIH07XG4gIGNvbnN0IHNpemVzID0ge1xuICAgIGRlZmF1bHQ6IFwicHgtNCBweS0yXCIsXG4gICAgc206IFwicHgtMyBweS0xLjUgdGV4dC1zbVwiLFxuICAgIGljb246IFwicC0yXCIsXG4gIH07XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvbiBcbiAgICAgIGNsYXNzTmFtZT17YGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzICR7dmFyaWFudHNbdmFyaWFudF19ICR7c2l6ZXNbc2l6ZV19ICR7Y2xhc3NOYW1lfWB9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvYnV0dG9uPlxuICApO1xufTtcblxuLy8gU2lkZWJhciBJdGVtIENvbXBvbmVudFxuY29uc3QgU2lkZWJhckl0ZW0gPSAoeyBcbiAgaWNvbjogSWNvbiwgXG4gIGxhYmVsLCBcbiAgaXNBY3RpdmUsIFxuICBvbkNsaWNrIFxufTogeyBcbiAgaWNvbjogYW55O1xuICBsYWJlbDogc3RyaW5nOyBcbiAgaXNBY3RpdmU6IGJvb2xlYW47IFxuICBvbkNsaWNrOiAoKSA9PiB2b2lkO1xufSkgPT4gKFxuICA8bW90aW9uLmJ1dHRvblxuICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgd2hpbGVIb3Zlcj17eyB4OiAyIH19XG4gICAgd2hpbGVUYXA9e3sgc2NhbGU6IDAuOTggfX1cbiAgICBjbGFzc05hbWU9e2B3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMgcHgtMyBweS0yLjUgcm91bmRlZC1sZyB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgJHtcbiAgICAgIGlzQWN0aXZlIFxuICAgICAgICA/IFwiYmctZW1lcmFsZC01MDAvMTAgdGV4dC1lbWVyYWxkLTQwMCBib3JkZXIgYm9yZGVyLWVtZXJhbGQtNTAwLzIwXCIgXG4gICAgICAgIDogXCJ0ZXh0LXNsYXRlLTQwMCBob3Zlcjp0ZXh0LXNsYXRlLTEwMCBob3ZlcjpiZy1zbGF0ZS04MDAvNTBcIlxuICAgIH1gfVxuICA+XG4gICAgPEljb24gY2xhc3NOYW1lPVwidy01IGgtNSBmbGV4LXNocmluay0wXCIgLz5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHdoaXRlc3BhY2Utbm93cmFwXCI+e2xhYmVsfTwvc3Bhbj5cbiAgPC9tb3Rpb24uYnV0dG9uPlxuKTtcblxuLy8gS1BJIENhcmQgQ29tcG9uZW50XG5jb25zdCBLUElDYXJkID0gKHsgXG4gIHRpdGxlLCBcbiAgdmFsdWUsIFxuICBzdWJ0aXRsZSwgXG4gIGljb246IEljb24sIFxuICBjb2xvcixcbiAgZGF0YSxcbn06IHsgXG4gIHRpdGxlOiBzdHJpbmc7IFxuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyOyBcbiAgc3VidGl0bGU6IHN0cmluZztcbiAgaWNvbjogYW55O1xuICBjb2xvcjogc3RyaW5nO1xuICBkYXRhOiBhbnlbXTtcbn0pID0+IHtcbiAgY29uc3QgY29sb3JNYXA6IFJlY29yZDxzdHJpbmcsIHsgYmc6IHN0cmluZzsgdGV4dDogc3RyaW5nOyBiYXI6IHN0cmluZyB9PiA9IHtcbiAgICBlbWVyYWxkOiB7IGJnOiBcImJnLWVtZXJhbGQtNTAwLzEwXCIsIHRleHQ6IFwidGV4dC1lbWVyYWxkLTQwMFwiLCBiYXI6IFwiIzEwYjk4MVwiIH0sXG4gICAgYmx1ZTogeyBiZzogXCJiZy1ibHVlLTUwMC8xMFwiLCB0ZXh0OiBcInRleHQtYmx1ZS00MDBcIiwgYmFyOiBcIiMzYjgyZjZcIiB9LFxuICAgIHB1cnBsZTogeyBiZzogXCJiZy1wdXJwbGUtNTAwLzEwXCIsIHRleHQ6IFwidGV4dC1wdXJwbGUtNDAwXCIsIGJhcjogXCIjYTg1NWY3XCIgfSxcbiAgICBhbWJlcjogeyBiZzogXCJiZy1hbWJlci01MDAvMTBcIiwgdGV4dDogXCJ0ZXh0LWFtYmVyLTQwMFwiLCBiYXI6IFwiI2Y1OWUwYlwiIH0sXG4gIH07XG4gIGNvbnN0IGNvbG9ycyA9IGNvbG9yTWFwW2NvbG9yXSB8fCBjb2xvck1hcC5lbWVyYWxkO1xuXG4gIHJldHVybiAoXG4gICAgPENhcmQgY2xhc3NOYW1lPVwiaG92ZXI6Ym9yZGVyLXNsYXRlLTcwMC82MCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgaG92ZXI6c2hhZG93LXhsIGhvdmVyOnNoYWRvdy1ibGFjay8yMCBob3ZlcjpzY2FsZS1bMS4wMl1cIj5cbiAgICAgIDxDYXJkQ29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTQwMCB0ZXh0LXNtIGZvbnQtbWVkaXVtIG1iLTFcIj57dGl0bGV9PC9wPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1ib2xkIHRleHQtd2hpdGVcIj57dmFsdWV9PC9wPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbGF0ZS01MDAgdGV4dC14cyBtdC0xXCI+e3N1YnRpdGxlfTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHAtMi41IHJvdW5kZWQtbGcgJHtjb2xvcnMuYmd9YH0+XG4gICAgICAgICAgICA8SWNvbiBjbGFzc05hbWU9e2B3LTUgaC01ICR7Y29sb3JzLnRleHR9YH0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBoLTEyXCI+XG4gICAgICAgICAgPFJlc3BvbnNpdmVDb250YWluZXIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiPlxuICAgICAgICAgICAgPExpbmVDaGFydCBkYXRhPXtkYXRhfT5cbiAgICAgICAgICAgICAgPExpbmVcbiAgICAgICAgICAgICAgICB0eXBlPVwibW9ub3RvbmVcIlxuICAgICAgICAgICAgICAgIGRhdGFLZXk9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlPXtjb2xvcnMuYmFyfVxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXsyfVxuICAgICAgICAgICAgICAgIGRvdD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0xpbmVDaGFydD5cbiAgICAgICAgICA8L1Jlc3BvbnNpdmVDb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkQ29udGVudD5cbiAgICA8L0NhcmQ+XG4gICk7XG59O1xuXG4vLyBTZXJ2aWNlIENhcmQgQ29tcG9uZW50XG5jb25zdCBTZXJ2aWNlQ2FyZCA9ICh7IFxuICBhcHAsIFxuICBzdGF0dXMsIFxuICBvbkRlbGV0ZSBcbn06IHsgXG4gIGFwcDogQXBwOyBcbiAgc3RhdHVzOiB7IGlzVXA6IGJvb2xlYW47IHVwdGltZTogbnVtYmVyOyBhdmdSZXNwb25zZVRpbWU6IG51bWJlcjsgbGF0ZXN0PzogU3RhdHVzRW50cnkgfTsgXG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xufSkgPT4ge1xuICBjb25zdCBbaXNIb3ZlcmVkLCBzZXRJc0hvdmVyZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzcGFya2xpbmVEYXRhID0gZ2VuZXJhdGVTcGFya2xpbmVEYXRhKDEwLCBzdGF0dXMuaXNVcCk7XG5cbiAgcmV0dXJuIChcbiAgICA8bW90aW9uLmRpdlxuICAgICAgbGF5b3V0XG4gICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHNjYWxlOiAwLjk1IH19XG4gICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHNjYWxlOiAxIH19XG4gICAgICBleGl0PXt7IG9wYWNpdHk6IDAsIHNjYWxlOiAwLjk1IH19XG4gICAgICB3aGlsZUhvdmVyPXt7IHNjYWxlOiAxLjAyLCB0cmFuc2l0aW9uOiB7IGR1cmF0aW9uOiAwLjIgfSB9fVxuICAgICAgb25Ib3ZlclN0YXJ0PXsoKSA9PiBzZXRJc0hvdmVyZWQodHJ1ZSl9XG4gICAgICBvbkhvdmVyRW5kPXsoKSA9PiBzZXRJc0hvdmVyZWQoZmFsc2UpfVxuICAgICAgY2xhc3NOYW1lPVwiZ3JvdXBcIlxuICAgID5cbiAgICAgIDxDYXJkIGNsYXNzTmFtZT1cImgtZnVsbCBob3Zlcjpib3JkZXItc2xhdGUtNzAwLzYwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBob3ZlcjpzaGFkb3cteGwgaG92ZXI6c2hhZG93LWJsYWNrLzIwXCI+XG4gICAgICAgIHsvKiBUb3AgY29sb3JlZCBsaW5lICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGgtMSB3LWZ1bGwgJHtzdGF0dXMuaXNVcCA/IFwiYmctZW1lcmFsZC01MDBcIiA6IFwiYmctcmVkLTUwMFwifWB9IC8+XG4gICAgICAgIFxuICAgICAgICA8Q2FyZENvbnRlbnQgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy0xMCBoLTEwIHJvdW5kZWQtbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgJHtzdGF0dXMuaXNVcCA/IFwiYmctZW1lcmFsZC01MDAvMTBcIiA6IFwiYmctcmVkLTUwMC8xMFwifWB9PlxuICAgICAgICAgICAgICAgIDxTZXJ2ZXIgY2xhc3NOYW1lPXtgdy01IGgtNSAke3N0YXR1cy5pc1VwID8gXCJ0ZXh0LWVtZXJhbGQtNDAwXCIgOiBcInRleHQtcmVkLTQwMFwifWB9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkIHRleHQtd2hpdGUgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIHthcHAubmFtZX1cbiAgICAgICAgICAgICAgICAgIDxhIFxuICAgICAgICAgICAgICAgICAgICBocmVmPXthcHAudXJsfSBcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCIgXG4gICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTUwMCBob3Zlcjp0ZXh0LWVtZXJhbGQtNDAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEV4dGVybmFsTGluayBjbGFzc05hbWU9XCJ3LTMuNSBoLTMuNVwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtc2xhdGUtNTAwXCI+UG9ydCB7YXBwLnBvcnR9PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8QmFkZ2UgdmFyaWFudD17c3RhdHVzLmlzVXAgPyBcInN1Y2Nlc3NcIiA6IFwiZGVzdHJ1Y3RpdmVcIn0+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInJlbGF0aXZlIGZsZXggaC0xLjUgdy0xLjUgbXItMVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YGFuaW1hdGUtcGluZyBhYnNvbHV0ZSBpbmxpbmUtZmxleCBoLWZ1bGwgdy1mdWxsIHJvdW5kZWQtZnVsbCBvcGFjaXR5LTc1ICR7c3RhdHVzLmlzVXAgPyBcImJnLWVtZXJhbGQtNDAwXCIgOiBcImJnLXJlZC00MDBcIn1gfSAvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YHJlbGF0aXZlIGlubGluZS1mbGV4IHJvdW5kZWQtZnVsbCBoLTEuNSB3LTEuNSAke3N0YXR1cy5pc1VwID8gXCJiZy1lbWVyYWxkLTUwMFwiIDogXCJiZy1yZWQtNTAwXCJ9YH0gLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB7c3RhdHVzLmlzVXAgPyBcIk9wZXJhdGlvbmFsXCIgOiBcIkRvd25cIn1cbiAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogVXB0aW1lICovfVxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi0yXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1zbGF0ZS00MDBcIj5VcHRpbWU8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlXCI+e3N0YXR1cy51cHRpbWV9JTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPFByb2dyZXNzIHZhbHVlPXtzdGF0dXMudXB0aW1lfSAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIFJlc3BvbnNlIFRpbWUgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1zbGF0ZS00MDBcIj5SZXNwb25zZSBUaW1lPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtd2hpdGVcIj5cbiAgICAgICAgICAgICAge3N0YXR1cy5hdmdSZXNwb25zZVRpbWUgPiAwID8gYCR7c3RhdHVzLmF2Z1Jlc3BvbnNlVGltZX1tc2AgOiBcIuKAlFwifVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIFNwYXJrbGluZSAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtMTAgLW14LTJcIj5cbiAgICAgICAgICAgIDxSZXNwb25zaXZlQ29udGFpbmVyIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIj5cbiAgICAgICAgICAgICAgPExpbmVDaGFydCBkYXRhPXtzcGFya2xpbmVEYXRhfT5cbiAgICAgICAgICAgICAgICA8TGluZVxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm1vbm90b25lXCJcbiAgICAgICAgICAgICAgICAgIGRhdGFLZXk9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBzdHJva2U9e3N0YXR1cy5pc1VwID8gXCIjMTBiOTgxXCIgOiBcIiNlZjQ0NDRcIn1cbiAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXsxLjV9XG4gICAgICAgICAgICAgICAgICBkb3Q9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvTGluZUNoYXJ0PlxuICAgICAgICAgICAgPC9SZXNwb25zaXZlQ29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIEZvb3RlciAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwdC0yIGJvcmRlci10IGJvcmRlci1zbGF0ZS04MDAvNjBcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1zbGF0ZS01MDAgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgPENsb2NrIGNsYXNzTmFtZT1cInctMyBoLTNcIiAvPlxuICAgICAgICAgICAgICB7c3RhdHVzLmxhdGVzdCA/IG5ldyBEYXRlKHN0YXR1cy5sYXRlc3QudGltZXN0YW1wKS50b0xvY2FsZVRpbWVTdHJpbmcoKSA6IFwiTmV2ZXJcIn1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPEFuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgICAgICAge2lzSG92ZXJlZCAmJiAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgeDogMTAgfX1cbiAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeDogMCB9fVxuICAgICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB4OiAxMCB9fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cImljb25cIiBjbGFzc05hbWU9XCJoLTggdy04XCI+XG4gICAgICAgICAgICAgICAgICAgIDxSZWZyZXNoQ3cgY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cImljb25cIiBjbGFzc05hbWU9XCJoLTggdy04XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTZXR0aW5ncyBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImdob3N0XCIgXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJpY29uXCIgXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtOCB3LTggaG92ZXI6dGV4dC1yZWQtNDAwIGhvdmVyOmJnLXJlZC01MDAvMTBcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkRlbGV0ZX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFRyYXNoMiBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9DYXJkPlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhc2hib2FyZCgpIHtcbiAgY29uc3QgW2FwcHMsIHNldEFwcHNdID0gdXNlU3RhdGU8QXBwW10+KFtdKTtcbiAgY29uc3QgW3N0YXR1cywgc2V0U3RhdHVzXSA9IHVzZVN0YXRlPFN0YXR1c0VudHJ5W10+KFtdKTtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFthY3RpdmVOYXYsIHNldEFjdGl2ZU5hdl0gPSB1c2VTdGF0ZShcIm92ZXJ2aWV3XCIpO1xuICBjb25zdCBbc2hvd0FkZE1vZGFsLCBzZXRTaG93QWRkTW9kYWxdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbbmV3QXBwLCBzZXROZXdBcHBdID0gdXNlU3RhdGU8UGFydGlhbDxBcHA+Pih7XG4gICAgbmFtZTogXCJcIixcbiAgICB1cmw6IFwiaHR0cDovL2xvY2FsaG9zdDpcIixcbiAgICBwb3J0OiAzMDAwLFxuICAgIGVuYWJsZWQ6IHRydWUsXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hEYXRhKCk7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChmZXRjaERhdGEsIDMwMDAwKTtcbiAgICByZXR1cm4gKCkgPT4gY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gIH0sIFtdKTtcblxuICBhc3luYyBmdW5jdGlvbiBmZXRjaERhdGEoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKFwiL2FwaS9tb25pdG9yXCIpO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlcy5qc29uKCk7XG4gICAgICBzZXRBcHBzKGRhdGEuYXBwcyB8fCBbXSk7XG4gICAgICBzZXRTdGF0dXMoZGF0YS5zdGF0dXMgfHwgW10pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBmZXRjaCBkYXRhOlwiLCBlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBhZGRBcHAoZTogUmVhY3QuRm9ybUV2ZW50KSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICghbmV3QXBwLm5hbWUgfHwgIW5ld0FwcC51cmwpIHJldHVybjtcbiAgICBhd2FpdCBmZXRjaChcIi9hcGkvbW9uaXRvclwiLCB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBhY3Rpb246IFwiYWRkQXBwXCIsIGFwcDogbmV3QXBwIH0pLFxuICAgIH0pO1xuICAgIHNldFNob3dBZGRNb2RhbChmYWxzZSk7XG4gICAgc2V0TmV3QXBwKHsgbmFtZTogXCJcIiwgdXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6XCIsIHBvcnQ6IDMwMDAsIGVuYWJsZWQ6IHRydWUgfSk7XG4gICAgZmV0Y2hEYXRhKCk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBkZWxldGVBcHAoaWQ6IHN0cmluZykge1xuICAgIGlmICghY29uZmlybShcIkRlbGV0ZSB0aGlzIG1vbml0b3I/XCIpKSByZXR1cm47XG4gICAgYXdhaXQgZmV0Y2goXCIvYXBpL21vbml0b3JcIiwge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgYWN0aW9uOiBcImRlbGV0ZUFwcFwiLCBpZCB9KSxcbiAgICB9KTtcbiAgICBmZXRjaERhdGEoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEFwcFN0YXR1cyhhcHBJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgYXBwU3RhdHVzID0gc3RhdHVzLmZpbHRlcigocykgPT4gcy5hcHBJZCA9PT0gYXBwSWQpO1xuICAgIGNvbnN0IGxhdGVzdCA9IGFwcFN0YXR1c1thcHBTdGF0dXMubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgaXNVcCA9IGxhdGVzdD8uc3RhdHVzID09PSBcInVwXCI7XG4gICAgY29uc3QgdXB0aW1lID0gYXBwU3RhdHVzLmxlbmd0aCA+IDAgXG4gICAgICA/IE1hdGgucm91bmQoKGFwcFN0YXR1cy5maWx0ZXIocyA9PiBzLnN0YXR1cyA9PT0gXCJ1cFwiKS5sZW5ndGggLyBhcHBTdGF0dXMubGVuZ3RoKSAqIDEwMClcbiAgICAgIDogMTAwO1xuICAgIGNvbnN0IGF2Z1Jlc3BvbnNlVGltZSA9IGFwcFN0YXR1cy5sZW5ndGggPiAwXG4gICAgICA/IE1hdGgucm91bmQoYXBwU3RhdHVzLmZpbHRlcihzID0+IHMucmVzcG9uc2VUaW1lKS5yZWR1Y2UoKGFjYywgcykgPT4gYWNjICsgKHMucmVzcG9uc2VUaW1lIHx8IDApLCAwKSAvIGFwcFN0YXR1cy5maWx0ZXIocyA9PiBzLnJlc3BvbnNlVGltZSkubGVuZ3RoKSB8fCAwXG4gICAgICA6IDA7XG4gICAgcmV0dXJuIHsgbGF0ZXN0LCBpc1VwLCB1cHRpbWUsIGF2Z1Jlc3BvbnNlVGltZSB9O1xuICB9XG5cbiAgY29uc3Qgc3RhdHMgPSB7XG4gICAgdG90YWw6IGFwcHMubGVuZ3RoLFxuICAgIG9ubGluZTogYXBwcy5maWx0ZXIoKGFwcCkgPT4gZ2V0QXBwU3RhdHVzKGFwcC5pZCkuaXNVcCkubGVuZ3RoLFxuICAgIG9mZmxpbmU6IGFwcHMuZmlsdGVyKChhcHApID0+ICFnZXRBcHBTdGF0dXMoYXBwLmlkKS5pc1VwKS5sZW5ndGgsXG4gICAgYXZnVXB0aW1lOiBhcHBzLmxlbmd0aCA+IDAgXG4gICAgICA/IE1hdGgucm91bmQoYXBwcy5yZWR1Y2UoKGFjYywgYXBwKSA9PiBhY2MgKyBnZXRBcHBTdGF0dXMoYXBwLmlkKS51cHRpbWUsIDApIC8gYXBwcy5sZW5ndGgpXG4gICAgICA6IDAsXG4gICAgYXZnUmVzcG9uc2VUaW1lOiBhcHBzLmxlbmd0aCA+IDBcbiAgICAgID8gTWF0aC5yb3VuZChhcHBzLnJlZHVjZSgoYWNjLCBhcHApID0+IGFjYyArIGdldEFwcFN0YXR1cyhhcHAuaWQpLmF2Z1Jlc3BvbnNlVGltZSwgMCkgLyBhcHBzLmxlbmd0aClcbiAgICAgIDogMCxcbiAgICBpbmNpZGVudHM6IHN0YXR1cy5maWx0ZXIocyA9PiBzLnN0YXR1cyA9PT0gXCJkb3duXCIpLmxlbmd0aCxcbiAgfTtcblxuICBjb25zdCBhbGxVcCA9IHN0YXRzLm9ubGluZSA9PT0gc3RhdHMudG90YWwgJiYgc3RhdHMudG90YWwgPiAwO1xuXG4gIC8vIFNwYXJrbGluZSBkYXRhIGZvciBLUEkgY2FyZHNcbiAgY29uc3Qgc2VydmljZXNEYXRhID0gZ2VuZXJhdGVTcGFya2xpbmVEYXRhKDIwLCB0cnVlKTtcbiAgY29uc3QgdXB0aW1lRGF0YSA9IGdlbmVyYXRlU3BhcmtsaW5lRGF0YSgyMCwgdHJ1ZSk7XG4gIGNvbnN0IHJlc3BvbnNlRGF0YSA9IGdlbmVyYXRlU3BhcmtsaW5lRGF0YSgyMCwgdHJ1ZSkubWFwKGQgPT4gKHsgLi4uZCwgdmFsdWU6IGQudmFsdWUgKiAyIH0pKTtcbiAgY29uc3QgaW5jaWRlbnRzRGF0YSA9IGdlbmVyYXRlU3BhcmtsaW5lRGF0YSgyMCwgZmFsc2UpO1xuXG4gIGlmIChsb2FkaW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLXNsYXRlLTk1MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC00XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgIDxtb3Rpb24uZGl2IFxuICAgICAgICAgICAgICBhbmltYXRlPXt7IHJvdGF0ZTogMzYwIH19XG4gICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDIsIHJlcGVhdDogSW5maW5pdHksIGVhc2U6IFwibGluZWFyXCIgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0xMiBoLTEyIHJvdW5kZWQteGwgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1lbWVyYWxkLTUwMCB0by1jeWFuLTUwMFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIHctMTIgaC0xMiByb3VuZGVkLXhsIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tZW1lcmFsZC01MDAgdG8tY3lhbi01MDAgYmx1ci14bCBvcGFjaXR5LTUwXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTQwMFwiPkxvYWRpbmcgZGFzaGJvYXJkLi4uPC9wPlxuICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1zbGF0ZS05NTAgdGV4dC1zbGF0ZS0xMDAgZmxleFwiPlxuICAgICAgey8qIEZpeGVkIFNpZGViYXIgLSAyODBweCAqL31cbiAgICAgIDxhc2lkZSBjbGFzc05hbWU9XCJmaXhlZCBsZWZ0LTAgdG9wLTAgYm90dG9tLTAgdy1bMjgwcHhdIGJnLXNsYXRlLTkwMC84MCBiYWNrZHJvcC1ibHVyLXhsIGJvcmRlci1yIGJvcmRlci1zbGF0ZS04MDAvNjAgei01MCBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgIHsvKiBMb2dvICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtMTYgZmxleCBpdGVtcy1jZW50ZXIgcHgtNCBib3JkZXItYiBib3JkZXItc2xhdGUtODAwLzYwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTkgaC05IHJvdW5kZWQtbGcgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1lbWVyYWxkLTUwMCB0by1jeWFuLTUwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPEFjdGl2aXR5IGNsYXNzTmFtZT1cInctNSBoLTUgdGV4dC13aGl0ZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWwtMyBmb250LWJvbGQgdGV4dC1sZyB0ZXh0LXdoaXRlXCI+SGVhcnRiZWF0PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogTmF2aWdhdGlvbiAqL31cbiAgICAgICAgPG5hdiBjbGFzc05hbWU9XCJmbGV4LTEgcC0zIHNwYWNlLXktMVwiPlxuICAgICAgICAgIDxTaWRlYmFySXRlbVxuICAgICAgICAgICAgaWNvbj17TGF5b3V0RGFzaGJvYXJkfVxuICAgICAgICAgICAgbGFiZWw9XCJPdmVydmlld1wiXG4gICAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlTmF2ID09PSBcIm92ZXJ2aWV3XCJ9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVOYXYoXCJvdmVydmlld1wiKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxTaWRlYmFySXRlbVxuICAgICAgICAgICAgaWNvbj17TW9uaXRvcn1cbiAgICAgICAgICAgIGxhYmVsPVwiTW9uaXRvcmVkIFNlcnZpY2VzXCJcbiAgICAgICAgICAgIGlzQWN0aXZlPXthY3RpdmVOYXYgPT09IFwic2VydmljZXNcIn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZU5hdihcInNlcnZpY2VzXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPFNpZGViYXJJdGVtXG4gICAgICAgICAgICBpY29uPXtBbGVydFRyaWFuZ2xlfVxuICAgICAgICAgICAgbGFiZWw9XCJJbmNpZGVudHNcIlxuICAgICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZU5hdiA9PT0gXCJpbmNpZGVudHNcIn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZU5hdihcImluY2lkZW50c1wiKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxTaWRlYmFySXRlbVxuICAgICAgICAgICAgaWNvbj17SGlzdG9yeX1cbiAgICAgICAgICAgIGxhYmVsPVwiSGlzdG9yeSAvIExvZ3NcIlxuICAgICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZU5hdiA9PT0gXCJoaXN0b3J5XCJ9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVOYXYoXCJoaXN0b3J5XCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPFNpZGViYXJJdGVtXG4gICAgICAgICAgICBpY29uPXtTZXR0aW5nc31cbiAgICAgICAgICAgIGxhYmVsPVwiU2V0dGluZ3NcIlxuICAgICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZU5hdiA9PT0gXCJzZXR0aW5nc1wifVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlTmF2KFwic2V0dGluZ3NcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9uYXY+XG4gICAgICA8L2FzaWRlPlxuXG4gICAgICB7LyogTWFpbiBDb250ZW50ICovfVxuICAgICAgPG1haW4gY2xhc3NOYW1lPVwiZmxleC0xIG1sLVsyODBweF0gbWluLWgtc2NyZWVuIGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgey8qIFRvcCBOYXZiYXIgKi99XG4gICAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwiaC0xNiBiZy1zbGF0ZS05MDAvNTAgYmFja2Ryb3AtYmx1ci1zbSBib3JkZXItYiBib3JkZXItc2xhdGUtODAwLzYwIHN0aWNreSB0b3AtMCB6LTQwIHB4LTYgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgey8qIEdsb2JhbCBTdGF0dXMgQmFubmVyICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMyBweS0xLjUgcm91bmRlZC1mdWxsIGJvcmRlciAke1xuICAgICAgICAgICAgYWxsVXAgXG4gICAgICAgICAgICAgID8gXCJiZy1lbWVyYWxkLTUwMC8xMCBib3JkZXItZW1lcmFsZC01MDAvMjBcIiBcbiAgICAgICAgICAgICAgOiBcImJnLWFtYmVyLTUwMC8xMCBib3JkZXItYW1iZXItNTAwLzIwXCJcbiAgICAgICAgICB9YH0+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4IGgtMiB3LTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgYW5pbWF0ZS1waW5nIGFic29sdXRlIGlubGluZS1mbGV4IGgtZnVsbCB3LWZ1bGwgcm91bmRlZC1mdWxsIG9wYWNpdHktNzUgJHthbGxVcCA/IFwiYmctZW1lcmFsZC00MDBcIiA6IFwiYmctYW1iZXItNDAwXCJ9YH0gLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgcmVsYXRpdmUgaW5saW5lLWZsZXggcm91bmRlZC1mdWxsIGgtMiB3LTIgJHthbGxVcCA/IFwiYmctZW1lcmFsZC01MDBcIiA6IFwiYmctYW1iZXItNTAwXCJ9YH0gLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YHRleHQtc20gZm9udC1tZWRpdW0gJHthbGxVcCA/IFwidGV4dC1lbWVyYWxkLTQwMFwiIDogXCJ0ZXh0LWFtYmVyLTQwMFwifWB9PlxuICAgICAgICAgICAgICB7YWxsVXAgPyBcIkFsbCBTeXN0ZW1zIE9wZXJhdGlvbmFsXCIgOiBgJHtzdGF0cy5vZmZsaW5lfSBTZXJ2aWNlJHtzdGF0cy5vZmZsaW5lID4gMSA/ICdzJyA6ICcnfSBEb3duYH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNTAwIHRleHQteHNcIj7igKIgVXBkYXRlZCB7bmV3IERhdGUoKS50b0xvY2FsZVRpbWVTdHJpbmcoKX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogUmlnaHQgQWN0aW9ucyAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgIDxTZWFyY2ggY2xhc3NOYW1lPVwidy00IGgtNCBhYnNvbHV0ZSBsZWZ0LTMgdG9wLTEvMiAtdHJhbnNsYXRlLXktMS8yIHRleHQtc2xhdGUtNTAwXCIgLz5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTY0IGJnLXNsYXRlLTgwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCByb3VuZGVkLWxnIHBsLTEwIHByLTQgcHktMiB0ZXh0LXNtIHRleHQtd2hpdGUgcGxhY2Vob2xkZXItc2xhdGUtNTAwIGZvY3VzOmJvcmRlci1lbWVyYWxkLTUwMC81MCBmb2N1czpvdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxCdXR0b24gb25DbGljaz17KCkgPT4gc2V0U2hvd0FkZE1vZGFsKHRydWUpfT5cbiAgICAgICAgICAgICAgPFBsdXMgY2xhc3NOYW1lPVwidy00IGgtNCBtci0yXCIgLz5cbiAgICAgICAgICAgICAgQWRkIE1vbml0b3JcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJpY29uXCIgb25DbGljaz17ZmV0Y2hEYXRhfT5cbiAgICAgICAgICAgICAgPFJlZnJlc2hDdyBjbGFzc05hbWU9XCJ3LTUgaC01XCIgLz5cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJpY29uXCIgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPEJlbGwgY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+XG4gICAgICAgICAgICAgIHtzdGF0cy5pbmNpZGVudHMgPiAwICYmIChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMSByaWdodC0xIHctMiBoLTIgYmctcmVkLTUwMCByb3VuZGVkLWZ1bGxcIiAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy05IGgtOSByb3VuZGVkLWZ1bGwgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1lbWVyYWxkLTUwMCB0by1jeWFuLTUwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIGZvbnQtbWVkaXVtIHRleHQtc21cIj5cbiAgICAgICAgICAgICAgTUJcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICB7LyogRGFzaGJvYXJkIENvbnRlbnQgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHAtNiBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byBzcGFjZS15LTZcIj5cbiAgICAgICAgICAgIHsvKiBLUEkgUm93IC0gNCBjYXJkcyAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBtZDpncmlkLWNvbHMtNCBnYXAtNFwiPlxuICAgICAgICAgICAgICA8S1BJQ2FyZFxuICAgICAgICAgICAgICAgIHRpdGxlPVwiU2VydmljZXMgT25saW5lXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17YCR7c3RhdHMub25saW5lfS8ke3N0YXRzLnRvdGFsfWB9XG4gICAgICAgICAgICAgICAgc3VidGl0bGU9e2FsbFVwID8gXCJBbGwgaGVhbHRoeVwiIDogYCR7c3RhdHMub2ZmbGluZX0gZG93bmB9XG4gICAgICAgICAgICAgICAgaWNvbj17U2VydmVyfVxuICAgICAgICAgICAgICAgIGNvbG9yPVwiZW1lcmFsZFwiXG4gICAgICAgICAgICAgICAgZGF0YT17c2VydmljZXNEYXRhfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8S1BJQ2FyZFxuICAgICAgICAgICAgICAgIHRpdGxlPVwiQXZlcmFnZSBVcHRpbWVcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtgJHtzdGF0cy5hdmdVcHRpbWV9JWB9XG4gICAgICAgICAgICAgICAgc3VidGl0bGU9XCJMYXN0IDMwIGRheXNcIlxuICAgICAgICAgICAgICAgIGljb249e0NoZWNrQ2lyY2xlMn1cbiAgICAgICAgICAgICAgICBjb2xvcj1cImJsdWVcIlxuICAgICAgICAgICAgICAgIGRhdGE9e3VwdGltZURhdGF9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxLUElDYXJkXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJBdmcgUmVzcG9uc2UgVGltZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e2Ake3N0YXRzLmF2Z1Jlc3BvbnNlVGltZX1tc2B9XG4gICAgICAgICAgICAgICAgc3VidGl0bGU9XCJBY3Jvc3MgYWxsIHNlcnZpY2VzXCJcbiAgICAgICAgICAgICAgICBpY29uPXtaYXB9XG4gICAgICAgICAgICAgICAgY29sb3I9XCJwdXJwbGVcIlxuICAgICAgICAgICAgICAgIGRhdGE9e3Jlc3BvbnNlRGF0YX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEtQSUNhcmRcbiAgICAgICAgICAgICAgICB0aXRsZT1cIlRvdGFsIEluY2lkZW50c1wiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3N0YXRzLmluY2lkZW50c31cbiAgICAgICAgICAgICAgICBzdWJ0aXRsZT1cIkxhc3QgMjQgaG91cnNcIlxuICAgICAgICAgICAgICAgIGljb249e0FsZXJ0VHJpYW5nbGV9XG4gICAgICAgICAgICAgICAgY29sb3I9XCJhbWJlclwiXG4gICAgICAgICAgICAgICAgZGF0YT17aW5jaWRlbnRzRGF0YX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogTW9uaXRvcmVkIFNlcnZpY2VzIFNlY3Rpb24gKi99XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi00XCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlXCI+TW9uaXRvcmVkIFNlcnZpY2VzPC9oMj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtc2xhdGUtNTAwXCI+e3N0YXRzLnRvdGFsfSBzZXJ2aWNlczwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8bW90aW9uLmRpdiBcbiAgICAgICAgICAgICAgICBsYXlvdXRcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zIGdhcC02XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cInBvcExheW91dFwiPlxuICAgICAgICAgICAgICAgICAge2FwcHMubWFwKChhcHApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBwU3RhdHVzID0gZ2V0QXBwU3RhdHVzKGFwcC5pZCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPFNlcnZpY2VDYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2FwcC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcD17YXBwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPXthcHBTdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZT17KCkgPT4gZGVsZXRlQXBwKGFwcC5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG5cbiAgICAgICAgICAgICAge2FwcHMubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB5OiAyMCB9fVxuICAgICAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxLCB5OiAwIH19XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS0xNiBiZy1zbGF0ZS05MDAvMzAgcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLWRhc2hlZCBib3JkZXItc2xhdGUtODAwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMTYgaC0xNiBiZy1zbGF0ZS04MDAgcm91bmRlZC0yeGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgbXgtYXV0byBtYi00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxNb25pdG9yIGNsYXNzTmFtZT1cInctOCBoLTggdGV4dC1zbGF0ZS02MDBcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtd2hpdGUgbWItMlwiPk5vIG1vbml0b3JzIHlldDwvaDM+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTUwMCBtYi00XCI+U3RhcnQgbW9uaXRvcmluZyB5b3VyIHNlcnZpY2VzPC9wPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QWRkTW9kYWwodHJ1ZSl9PlxuICAgICAgICAgICAgICAgICAgICBBZGQgWW91ciBGaXJzdCBNb25pdG9yXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21haW4+XG5cbiAgICAgIHsvKiBBZGQgTW9uaXRvciBNb2RhbCAqL31cbiAgICAgIDxBbmltYXRlUHJlc2VuY2U+XG4gICAgICAgIHtzaG93QWRkTW9kYWwgJiYgKFxuICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIGJnLWJsYWNrLzYwIGJhY2tkcm9wLWJsdXItc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgei01MCBwLTRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgc2NhbGU6IDAuOTUsIHk6IDIwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgc2NhbGU6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCBzY2FsZTogMC45NSwgeTogMjAgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctc2xhdGUtOTAwIGJvcmRlciBib3JkZXItc2xhdGUtODAwIHJvdW5kZWQteGwgcC02IHctZnVsbCBtYXgtdy1tZCBzaGFkb3ctMnhsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMlwiPkFkZCBOZXcgTW9uaXRvcjwvaDI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNDAwIHRleHQtc20gbWItNlwiPkNvbmZpZ3VyZSBhIG5ldyBzZXJ2aWNlIHRvIG1vbml0b3I8L3A+XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8Zm9ybSBvblN1Ym1pdD17YWRkQXBwfSBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1zbGF0ZS0zMDAgbWItMlwiPlNlcnZpY2UgTmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmV3QXBwLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0TmV3QXBwKHsgLi4ubmV3QXBwLCBuYW1lOiBlLnRhcmdldC52YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLXNsYXRlLTgwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCByb3VuZGVkLWxnIHB4LTQgcHktMi41IHRleHQtd2hpdGUgcGxhY2Vob2xkZXItc2xhdGUtNTAwIGZvY3VzOmJvcmRlci1lbWVyYWxkLTUwMC81MCBmb2N1czpvdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk15IFNlcnZpY2VcIlxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtc2xhdGUtMzAwIG1iLTJcIj5VUkw8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmV3QXBwLnVybH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldE5ld0FwcCh7IC4uLm5ld0FwcCwgdXJsOiBlLnRhcmdldC52YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgYmctc2xhdGUtODAwLzUwIGJvcmRlciBib3JkZXItc2xhdGUtNzAwIHJvdW5kZWQtbGcgcHgtNCBweS0yLjUgdGV4dC13aGl0ZSBwbGFjZWhvbGRlci1zbGF0ZS01MDAgZm9jdXM6Ym9yZGVyLWVtZXJhbGQtNTAwLzUwIGZvY3VzOm91dGxpbmUtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtc2xhdGUtMzAwIG1iLTJcIj5Qb3J0PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e25ld0FwcC5wb3J0fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0TmV3QXBwKHsgLi4ubmV3QXBwLCBwb3J0OiBwYXJzZUludChlLnRhcmdldC52YWx1ZSkgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLXNsYXRlLTgwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCByb3VuZGVkLWxnIHB4LTQgcHktMi41IHRleHQtd2hpdGUgcGxhY2Vob2xkZXItc2xhdGUtNTAwIGZvY3VzOmJvcmRlci1lbWVyYWxkLTUwMC81MCBmb2N1czpvdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMyBwdC00XCI+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dBZGRNb2RhbChmYWxzZSl9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgQWRkIE1vbml0b3JcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICApfVxuICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIm1vdGlvbiIsIkFuaW1hdGVQcmVzZW5jZSIsIkFjdGl2aXR5IiwiUGx1cyIsIlJlZnJlc2hDdyIsIlRyYXNoMiIsIkV4dGVybmFsTGluayIsIlNlYXJjaCIsIkJlbGwiLCJTZXR0aW5ncyIsIkxheW91dERhc2hib2FyZCIsIk1vbml0b3IiLCJBbGVydFRyaWFuZ2xlIiwiSGlzdG9yeSIsIkNoZWNrQ2lyY2xlMiIsIkNsb2NrIiwiWmFwIiwiU2VydmVyIiwiTGluZUNoYXJ0IiwiTGluZSIsIlJlc3BvbnNpdmVDb250YWluZXIiLCJnZW5lcmF0ZVNwYXJrbGluZURhdGEiLCJwb2ludHMiLCJpc1VwIiwiQXJyYXkiLCJmcm9tIiwibGVuZ3RoIiwiXyIsImkiLCJ2YWx1ZSIsIk1hdGgiLCJyYW5kb20iLCJ0aW1lIiwiQ2FyZCIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiZGl2IiwiQ2FyZENvbnRlbnQiLCJCYWRnZSIsInZhcmlhbnQiLCJ2YXJpYW50cyIsImRlZmF1bHQiLCJzdWNjZXNzIiwiZGVzdHJ1Y3RpdmUiLCJ3YXJuaW5nIiwic3BhbiIsIlByb2dyZXNzIiwiZ2V0Q29sb3IiLCJpbml0aWFsIiwid2lkdGgiLCJhbmltYXRlIiwidHJhbnNpdGlvbiIsImR1cmF0aW9uIiwiZWFzZSIsIkJ1dHRvbiIsInNpemUiLCJwcm9wcyIsImdob3N0Iiwib3V0bGluZSIsInNpemVzIiwic20iLCJpY29uIiwiYnV0dG9uIiwiU2lkZWJhckl0ZW0iLCJJY29uIiwibGFiZWwiLCJpc0FjdGl2ZSIsIm9uQ2xpY2siLCJ3aGlsZUhvdmVyIiwieCIsIndoaWxlVGFwIiwic2NhbGUiLCJLUElDYXJkIiwidGl0bGUiLCJzdWJ0aXRsZSIsImNvbG9yIiwiZGF0YSIsImNvbG9yTWFwIiwiZW1lcmFsZCIsImJnIiwidGV4dCIsImJhciIsImJsdWUiLCJwdXJwbGUiLCJhbWJlciIsImNvbG9ycyIsInAiLCJoZWlnaHQiLCJ0eXBlIiwiZGF0YUtleSIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwiZG90IiwiU2VydmljZUNhcmQiLCJhcHAiLCJzdGF0dXMiLCJvbkRlbGV0ZSIsImlzSG92ZXJlZCIsInNldElzSG92ZXJlZCIsInNwYXJrbGluZURhdGEiLCJsYXlvdXQiLCJvcGFjaXR5IiwiZXhpdCIsIm9uSG92ZXJTdGFydCIsIm9uSG92ZXJFbmQiLCJoMyIsIm5hbWUiLCJhIiwiaHJlZiIsInVybCIsInRhcmdldCIsInJlbCIsInBvcnQiLCJ1cHRpbWUiLCJhdmdSZXNwb25zZVRpbWUiLCJsYXRlc3QiLCJEYXRlIiwidGltZXN0YW1wIiwidG9Mb2NhbGVUaW1lU3RyaW5nIiwiRGFzaGJvYXJkIiwiYXBwcyIsInNldEFwcHMiLCJzZXRTdGF0dXMiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsImFjdGl2ZU5hdiIsInNldEFjdGl2ZU5hdiIsInNob3dBZGRNb2RhbCIsInNldFNob3dBZGRNb2RhbCIsIm5ld0FwcCIsInNldE5ld0FwcCIsImVuYWJsZWQiLCJmZXRjaERhdGEiLCJpbnRlcnZhbCIsInNldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsInJlcyIsImZldGNoIiwianNvbiIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsImFkZEFwcCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsIm1ldGhvZCIsImhlYWRlcnMiLCJib2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsImFjdGlvbiIsImRlbGV0ZUFwcCIsImlkIiwiY29uZmlybSIsImdldEFwcFN0YXR1cyIsImFwcElkIiwiYXBwU3RhdHVzIiwiZmlsdGVyIiwicyIsInJvdW5kIiwicmVzcG9uc2VUaW1lIiwicmVkdWNlIiwiYWNjIiwic3RhdHMiLCJ0b3RhbCIsIm9ubGluZSIsIm9mZmxpbmUiLCJhdmdVcHRpbWUiLCJpbmNpZGVudHMiLCJhbGxVcCIsInNlcnZpY2VzRGF0YSIsInVwdGltZURhdGEiLCJyZXNwb25zZURhdGEiLCJtYXAiLCJkIiwiaW5jaWRlbnRzRGF0YSIsInJvdGF0ZSIsInJlcGVhdCIsIkluZmluaXR5IiwiYXNpZGUiLCJuYXYiLCJtYWluIiwiaGVhZGVyIiwiaW5wdXQiLCJwbGFjZWhvbGRlciIsImgyIiwibW9kZSIsInkiLCJmb3JtIiwib25TdWJtaXQiLCJvbkNoYW5nZSIsInJlcXVpcmVkIiwicGFyc2VJbnQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./src/app/page.tsx\n"); /***/ }), diff --git a/.next/server/vendor-chunks/lucide-react.js b/.next/server/vendor-chunks/lucide-react.js index abd51410..71783d8b 100644 --- a/.next/server/vendor-chunks/lucide-react.js +++ b/.next/server/vendor-chunks/lucide-react.js @@ -61,26 +61,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), -/***/ "(ssr)/./node_modules/lucide-react/dist/esm/icons/chevron-left.js": -/*!******************************************************************!*\ - !*** ./node_modules/lucide-react/dist/esm/icons/chevron-left.js ***! - \******************************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ __iconNode: () => (/* binding */ __iconNode),\n/* harmony export */ \"default\": () => (/* binding */ ChevronLeft)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(ssr)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.474.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m15 18-6-6 6-6\",\n key: \"1wnfg3\"\n }\n ]\n];\nconst ChevronLeft = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"ChevronLeft\", __iconNode);\n //# sourceMappingURL=chevron-left.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L2Rpc3QvZXNtL2ljb25zL2NoZXZyb24tbGVmdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFHYSxpQkFBdUI7SUFBQztRQUFDLE1BQVE7UUFBQSxDQUFFO1lBQUEsRUFBRyxpQkFBa0I7WUFBQSxLQUFLLENBQVM7UUFBQSxDQUFDO0tBQUM7Q0FBQTtBQWEvRSxrQkFBYyxrRUFBaUIsZ0JBQWUsQ0FBVSIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvc3JjL2ljb25zL2NoZXZyb24tbGVmdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcbmltcG9ydCB7IEljb25Ob2RlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgX19pY29uTm9kZTogSWNvbk5vZGUgPSBbWydwYXRoJywgeyBkOiAnbTE1IDE4LTYtNiA2LTYnLCBrZXk6ICcxd25mZzMnIH1dXTtcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25MZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVFVnTVRndE5pMDJJRFl0TmlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25MZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbkxlZnQnLCBfX2ljb25Ob2RlKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbkxlZnQ7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/lucide-react/dist/esm/icons/chevron-left.js\n"); - -/***/ }), - -/***/ "(ssr)/./node_modules/lucide-react/dist/esm/icons/chevron-right.js": -/*!*******************************************************************!*\ - !*** ./node_modules/lucide-react/dist/esm/icons/chevron-right.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ __iconNode: () => (/* binding */ __iconNode),\n/* harmony export */ \"default\": () => (/* binding */ ChevronRight)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(ssr)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.474.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m9 18 6-6-6-6\",\n key: \"mthhwq\"\n }\n ]\n];\nconst ChevronRight = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"ChevronRight\", __iconNode);\n //# sourceMappingURL=chevron-right.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L2Rpc3QvZXNtL2ljb25zL2NoZXZyb24tcmlnaHQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR2EsaUJBQXVCO0lBQUM7UUFBQyxNQUFRO1FBQUEsQ0FBRTtZQUFBLEVBQUcsZ0JBQWlCO1lBQUEsS0FBSyxDQUFTO1FBQUEsQ0FBQztLQUFDO0NBQUE7QUFhOUUsbUJBQWUsa0VBQWlCLGlCQUFnQixDQUFVIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9zcmMvaWNvbnMvY2hldnJvbi1yaWdodC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcbmltcG9ydCB7IEljb25Ob2RlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgX19pY29uTm9kZTogSWNvbk5vZGUgPSBbWydwYXRoJywgeyBkOiAnbTkgMTggNi02LTYtNicsIGtleTogJ210aGh3cScgfV1dO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvblJpZ2h0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRPU0F4T0NBMkxUWXROaTAySWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi1yaWdodFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25SaWdodCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25SaWdodCcsIF9faWNvbk5vZGUpO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uUmlnaHQ7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/lucide-react/dist/esm/icons/chevron-right.js\n"); - -/***/ }), - /***/ "(ssr)/./node_modules/lucide-react/dist/esm/icons/circle-check.js": /*!******************************************************************!*\ !*** ./node_modules/lucide-react/dist/esm/icons/circle-check.js ***! diff --git a/.next/server/vendor-chunks/next.js b/.next/server/vendor-chunks/next.js index a1604c90..971ff3b4 100644 --- a/.next/server/vendor-chunks/next.js +++ b/.next/server/vendor-chunks/next.js @@ -1634,6 +1634,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _sha /***/ }), +/***/ "(rsc)/./node_modules/next/dist/api/server.js": +/*!**********************************************!*\ + !*** ./node_modules/next/dist/api/server.js ***! + \**********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _server_web_exports_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../server/web/exports/index */ \"(rsc)/./node_modules/next/dist/server/web/exports/index.js\");\n/* harmony import */ var _server_web_exports_index__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_server_web_exports_index__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _server_web_exports_index__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _server_web_exports_index__WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n//# sourceMappingURL=server.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2FwaS9zZXJ2ZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTRDOztBQUU1QyIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYXBpL3NlcnZlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuLi9zZXJ2ZXIvd2ViL2V4cG9ydHMvaW5kZXgnO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZXJ2ZXIuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/api/server.js\n"); + +/***/ }), + /***/ "(rsc)/./node_modules/next/dist/build/output/log.js": /*!****************************************************!*\ !*** ./node_modules/next/dist/build/output/log.js ***! @@ -1873,6 +1884,16 @@ eval("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/compiled/ua-parser-js/ua-parser.js": +/*!*******************************************************************!*\ + !*** ./node_modules/next/dist/compiled/ua-parser-js/ua-parser.js ***! + \*******************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +eval("var __WEBPACK_AMD_DEFINE_RESULT__;(()=>{var i={226:function(i,e){(function(o,a){\"use strict\";var r=\"1.0.35\",t=\"\",n=\"?\",s=\"function\",b=\"undefined\",w=\"object\",l=\"string\",d=\"major\",c=\"model\",u=\"name\",p=\"type\",m=\"vendor\",f=\"version\",h=\"architecture\",v=\"console\",g=\"mobile\",k=\"tablet\",x=\"smarttv\",_=\"wearable\",y=\"embedded\",q=350;var T=\"Amazon\",S=\"Apple\",z=\"ASUS\",N=\"BlackBerry\",A=\"Browser\",C=\"Chrome\",E=\"Edge\",O=\"Firefox\",U=\"Google\",j=\"Huawei\",P=\"LG\",R=\"Microsoft\",M=\"Motorola\",B=\"Opera\",V=\"Samsung\",D=\"Sharp\",I=\"Sony\",W=\"Viera\",F=\"Xiaomi\",G=\"Zebra\",H=\"Facebook\",L=\"Chromium OS\",Z=\"Mac OS\";var extend=function(i,e){var o={};for(var a in i){if(e[a]&&e[a].length%2===0){o[a]=e[a].concat(i[a])}else{o[a]=i[a]}}return o},enumerize=function(i){var e={};for(var o=0;o0){if(b.length===2){if(typeof b[1]==s){this[b[0]]=b[1].call(this,d)}else{this[b[0]]=b[1]}}else if(b.length===3){if(typeof b[1]===s&&!(b[1].exec&&b[1].test)){this[b[0]]=d?b[1].call(this,d,b[2]):a}else{this[b[0]]=d?d.replace(b[1],b[2]):a}}else if(b.length===4){this[b[0]]=d?b[3].call(this,d.replace(b[1],b[2])):a}}else{this[b]=d?d:a}}}}o+=2}},strMapper=function(i,e){for(var o in e){if(typeof e[o]===w&&e[o].length>0){for(var r=0;r2){i[c]=\"iPad\";i[p]=k}return i};this.getEngine=function(){var i={};i[u]=a;i[f]=a;rgxMapper.call(i,n,x.engine);return i};this.getOS=function(){var i={};i[u]=a;i[f]=a;rgxMapper.call(i,n,x.os);if(_&&!i[u]&&v&&v.platform!=\"Unknown\"){i[u]=v.platform.replace(/chrome os/i,L).replace(/macos/i,Z)}return i};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return n};this.setUA=function(i){n=typeof i===l&&i.length>q?trim(i,q):i;return this};this.setUA(n);return this};UAParser.VERSION=r;UAParser.BROWSER=enumerize([u,f,d]);UAParser.CPU=enumerize([h]);UAParser.DEVICE=enumerize([c,m,p,v,g,x,k,_,y]);UAParser.ENGINE=UAParser.OS=enumerize([u,f]);if(typeof e!==b){if(\"object\"!==b&&i.exports){e=i.exports=UAParser}e.UAParser=UAParser}else{if(\"function\"===s&&__webpack_require__.amdO){!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(){return UAParser}).call(exports, __webpack_require__, exports, module),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))}else if(typeof o!==b){o.UAParser=UAParser}}var Q=typeof o!==b&&(o.jQuery||o.Zepto);if(Q&&!Q.ua){var Y=new UAParser;Q.ua=Y.getResult();Q.ua.get=function(){return Y.getUA()};Q.ua.set=function(i){Y.setUA(i);var e=Y.getResult();for(var o in e){Q.ua[o]=e[o]}}}})(typeof window===\"object\"?window:this)}};var e={};function __nccwpck_require__(o){var a=e[o];if(a!==undefined){return a.exports}var r=e[o]={exports:{}};var t=true;try{i[o].call(r.exports,r,r.exports,__nccwpck_require__);t=false}finally{if(t)delete e[o]}return r.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var o=__nccwpck_require__(226);module.exports=o})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3VhLXBhcnNlci1qcy91YS1wYXJzZXIuanMiLCJtYXBwaW5ncyI6IkFBQUEsd0NBQU0sT0FBTyxrQkFBa0IsZUFBZSxhQUFhLHVPQUF1TyxxUUFBcVEseUJBQXlCLFNBQVMsZ0JBQWdCLDRCQUE0Qix1QkFBdUIsS0FBSyxXQUFXLFNBQVMsdUJBQXVCLFNBQVMsWUFBWSxXQUFXLEtBQUssMkJBQTJCLFNBQVMsbUJBQW1CLGdFQUFnRSxzQkFBc0IsdUJBQXVCLHNCQUFzQiw0REFBNEQsb0JBQW9CLGlCQUFpQix3QkFBd0IseUNBQXlDLDRCQUE0QixvQkFBb0Isc0JBQXNCLG9CQUFvQixNQUFNLHNCQUFzQixVQUFVLE1BQU0saUJBQWlCLFFBQVEsUUFBUSxXQUFXLEtBQUssU0FBUyxPQUFPLDZCQUE2QixpQkFBaUIsbUJBQW1CLDZCQUE2QixLQUFLLGlCQUFpQixzQkFBc0IsNkNBQTZDLHNDQUFzQyxLQUFLLHFDQUFxQyxzQkFBc0IscURBQXFELEtBQUssaUJBQWlCLE1BQU0seUJBQXlCLGdCQUFnQixtQ0FBbUMsWUFBWSxjQUFjLEtBQUssbUJBQW1CLG1CQUFtQixxQkFBcUIsa0JBQWtCLFVBQVUsT0FBTywrRkFBK0YsSUFBSSxzS0FBc0ssT0FBTywySkFBMkosSUFBSSx3M0JBQXczQixJQUFJLHEyQkFBcTJCLGdCQUFnQixraEJBQWtoQixHQUFHLHlWQUF5ViwyZkFBMmYscUhBQXFILGdDQUFnQyx5Q0FBeUMsZ0pBQWdKLElBQUksbURBQW1ELDRDQUE0Qyx5Q0FBeUMsMENBQTBDLDZIQUE2SCxJQUFJLFdBQVcsSUFBSSxvTUFBb00sZ0NBQWdDLFNBQVMsb0VBQW9FLDBDQUEwQyw2R0FBNkcsRUFBRSw4REFBOEQsc0JBQXNCLElBQUkscUdBQXFHLDhUQUE4VCxpQ0FBaUMsRUFBRSw4R0FBOEcsRUFBRSxpQkFBaUIseUNBQXlDLEVBQUUsVUFBVSxzS0FBc0ssSUFBSSw4REFBOEQsSUFBSSxrREFBa0QsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLGFBQWEsSUFBSSxxRkFBcUYseUpBQXlKLEVBQUUsV0FBVyxFQUFFLHlLQUF5SyxlQUFlLElBQUkscURBQXFELEVBQUUsV0FBVyxFQUFFLHlEQUF5RCxJQUFJLHFQQUFxUCxFQUFFLFlBQVksRUFBRSxzS0FBc0ssU0FBUyxpRUFBaUUsd0RBQXdELE1BQU0sZ0xBQWdMLElBQUksSUFBSSwwR0FBMEcsdUVBQXVFLDZEQUE2RCxpQ0FBaUMsR0FBRyxnTEFBZ0wsK1JBQStSLElBQUksNEJBQTRCLEVBQUUsNEJBQTRCLElBQUksMkdBQTJHLGlMQUFpTCxJQUFJLHNLQUFzSyxFQUFFLGdGQUFnRixFQUFFLHVDQUF1QyxFQUFFLDZDQUE2QyxFQUFFLHVGQUF1RixFQUFFLG1DQUFtQyxFQUFFLGdEQUFnRCxJQUFJLG9EQUFvRCxJQUFJLCtiQUErYixFQUFFLDRDQUE0QywwRUFBMEUsaUdBQWlHLGlEQUFpRCwwTUFBME0sNEdBQTRHLEVBQUUsbURBQW1ELDhGQUE4RixXQUFXLElBQUksSUFBSSwyRUFBMkUsa0ZBQWtGLGtIQUFrSCxXQUFXLHdIQUF3SCx5Q0FBeUMsUUFBUSxJQUFJLDZKQUE2SixJQUFJLGtFQUFrRSxJQUFJLDRFQUE0RSwwREFBMEQsMEVBQTBFLElBQUksRUFBRSxxWEFBcVgsSUFBSSwwRkFBMEYsc05BQXNOLElBQUksNkJBQTZCLGNBQWMsZ1hBQWdYLHFCQUFxQiw2Q0FBNkMsa0dBQWtHLFNBQVMsa0RBQWtELGdPQUFnTyxrSEFBa0gsWUFBWSwrRkFBK0Ysb1hBQW9YLElBQUksbUNBQW1DLElBQUksNlBBQTZQLDJCQUEyQixpQkFBaUIsSUFBSSxJQUFJLGdDQUFnQyxxQ0FBcUMsOENBQThDLHdDQUF3QywyQ0FBMkMsc0JBQXNCLHdCQUF3QiwyQkFBMkIsU0FBUyxPQUFPLE9BQU8sOEJBQThCLG9CQUFvQiw2Q0FBNkMsYUFBYSxVQUFVLHVCQUF1QixTQUFTLE9BQU8sMEJBQTBCLFVBQVUsMEJBQTBCLFNBQVMsT0FBTyxPQUFPLE9BQU8sNkJBQTZCLDBCQUEwQixPQUFPLDJGQUEyRixZQUFZLE9BQU8sVUFBVSwwQkFBMEIsU0FBUyxPQUFPLE9BQU8sNkJBQTZCLFVBQVUsc0JBQXNCLFNBQVMsT0FBTyxPQUFPLHlCQUF5Qix1Q0FBdUMsNERBQTRELFVBQVUsMEJBQTBCLE9BQU8sOEhBQThILHNCQUFzQixVQUFVLHVCQUF1Qix1Q0FBdUMsYUFBYSxjQUFjLGFBQWEsbUJBQW1CLG9DQUFvQyw0QkFBNEIsK0NBQStDLDZDQUE2QyxpQkFBaUIsNEJBQTRCLHFCQUFxQixvQkFBb0IsS0FBSyxHQUFHLFVBQWEsTUFBTSx3QkFBVSxFQUFFLG1DQUFRLFdBQVcsZ0JBQWdCO0FBQUEsa0dBQUUsQ0FBQyxzQkFBc0IscUJBQXFCLHdDQUF3QyxhQUFhLG1CQUFtQixtQkFBbUIsb0JBQW9CLGtCQUFrQixxQkFBcUIsV0FBVyxvQkFBb0IsZ0JBQWdCLGdCQUFnQiwwQ0FBMEMsU0FBUyxnQ0FBZ0MsV0FBVyxrQkFBa0IsaUJBQWlCLFlBQVksWUFBWSxXQUFXLElBQUkscURBQXFELFFBQVEsUUFBUSxpQkFBaUIsaUJBQWlCLGlGQUFpRiwrQkFBK0IsaUJBQWlCIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC91YS1wYXJzZXItanMvdWEtcGFyc2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIigoKT0+e3ZhciBpPXsyMjY6ZnVuY3Rpb24oaSxlKXsoZnVuY3Rpb24obyxhKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1cIjEuMC4zNVwiLHQ9XCJcIixuPVwiP1wiLHM9XCJmdW5jdGlvblwiLGI9XCJ1bmRlZmluZWRcIix3PVwib2JqZWN0XCIsbD1cInN0cmluZ1wiLGQ9XCJtYWpvclwiLGM9XCJtb2RlbFwiLHU9XCJuYW1lXCIscD1cInR5cGVcIixtPVwidmVuZG9yXCIsZj1cInZlcnNpb25cIixoPVwiYXJjaGl0ZWN0dXJlXCIsdj1cImNvbnNvbGVcIixnPVwibW9iaWxlXCIsaz1cInRhYmxldFwiLHg9XCJzbWFydHR2XCIsXz1cIndlYXJhYmxlXCIseT1cImVtYmVkZGVkXCIscT0zNTA7dmFyIFQ9XCJBbWF6b25cIixTPVwiQXBwbGVcIix6PVwiQVNVU1wiLE49XCJCbGFja0JlcnJ5XCIsQT1cIkJyb3dzZXJcIixDPVwiQ2hyb21lXCIsRT1cIkVkZ2VcIixPPVwiRmlyZWZveFwiLFU9XCJHb29nbGVcIixqPVwiSHVhd2VpXCIsUD1cIkxHXCIsUj1cIk1pY3Jvc29mdFwiLE09XCJNb3Rvcm9sYVwiLEI9XCJPcGVyYVwiLFY9XCJTYW1zdW5nXCIsRD1cIlNoYXJwXCIsST1cIlNvbnlcIixXPVwiVmllcmFcIixGPVwiWGlhb21pXCIsRz1cIlplYnJhXCIsSD1cIkZhY2Vib29rXCIsTD1cIkNocm9taXVtIE9TXCIsWj1cIk1hYyBPU1wiO3ZhciBleHRlbmQ9ZnVuY3Rpb24oaSxlKXt2YXIgbz17fTtmb3IodmFyIGEgaW4gaSl7aWYoZVthXSYmZVthXS5sZW5ndGglMj09PTApe29bYV09ZVthXS5jb25jYXQoaVthXSl9ZWxzZXtvW2FdPWlbYV19fXJldHVybiBvfSxlbnVtZXJpemU9ZnVuY3Rpb24oaSl7dmFyIGU9e307Zm9yKHZhciBvPTA7bzxpLmxlbmd0aDtvKyspe2VbaVtvXS50b1VwcGVyQ2FzZSgpXT1pW29dfXJldHVybiBlfSxoYXM9ZnVuY3Rpb24oaSxlKXtyZXR1cm4gdHlwZW9mIGk9PT1sP2xvd2VyaXplKGUpLmluZGV4T2YobG93ZXJpemUoaSkpIT09LTE6ZmFsc2V9LGxvd2VyaXplPWZ1bmN0aW9uKGkpe3JldHVybiBpLnRvTG93ZXJDYXNlKCl9LG1ham9yaXplPWZ1bmN0aW9uKGkpe3JldHVybiB0eXBlb2YgaT09PWw/aS5yZXBsYWNlKC9bXlxcZFxcLl0vZyx0KS5zcGxpdChcIi5cIilbMF06YX0sdHJpbT1mdW5jdGlvbihpLGUpe2lmKHR5cGVvZiBpPT09bCl7aT1pLnJlcGxhY2UoL15cXHNcXHMqLyx0KTtyZXR1cm4gdHlwZW9mIGU9PT1iP2k6aS5zdWJzdHJpbmcoMCxxKX19O3ZhciByZ3hNYXBwZXI9ZnVuY3Rpb24oaSxlKXt2YXIgbz0wLHIsdCxuLGIsbCxkO3doaWxlKG88ZS5sZW5ndGgmJiFsKXt2YXIgYz1lW29dLHU9ZVtvKzFdO3I9dD0wO3doaWxlKHI8Yy5sZW5ndGgmJiFsKXtpZighY1tyXSl7YnJlYWt9bD1jW3IrK10uZXhlYyhpKTtpZighIWwpe2ZvcihuPTA7bjx1Lmxlbmd0aDtuKyspe2Q9bFsrK3RdO2I9dVtuXTtpZih0eXBlb2YgYj09PXcmJmIubGVuZ3RoPjApe2lmKGIubGVuZ3RoPT09Mil7aWYodHlwZW9mIGJbMV09PXMpe3RoaXNbYlswXV09YlsxXS5jYWxsKHRoaXMsZCl9ZWxzZXt0aGlzW2JbMF1dPWJbMV19fWVsc2UgaWYoYi5sZW5ndGg9PT0zKXtpZih0eXBlb2YgYlsxXT09PXMmJiEoYlsxXS5leGVjJiZiWzFdLnRlc3QpKXt0aGlzW2JbMF1dPWQ/YlsxXS5jYWxsKHRoaXMsZCxiWzJdKTphfWVsc2V7dGhpc1tiWzBdXT1kP2QucmVwbGFjZShiWzFdLGJbMl0pOmF9fWVsc2UgaWYoYi5sZW5ndGg9PT00KXt0aGlzW2JbMF1dPWQ/YlszXS5jYWxsKHRoaXMsZC5yZXBsYWNlKGJbMV0sYlsyXSkpOmF9fWVsc2V7dGhpc1tiXT1kP2Q6YX19fX1vKz0yfX0sc3RyTWFwcGVyPWZ1bmN0aW9uKGksZSl7Zm9yKHZhciBvIGluIGUpe2lmKHR5cGVvZiBlW29dPT09dyYmZVtvXS5sZW5ndGg+MCl7Zm9yKHZhciByPTA7cjxlW29dLmxlbmd0aDtyKyspe2lmKGhhcyhlW29dW3JdLGkpKXtyZXR1cm4gbz09PW4/YTpvfX19ZWxzZSBpZihoYXMoZVtvXSxpKSl7cmV0dXJuIG89PT1uP2E6b319cmV0dXJuIGl9O3ZhciAkPXtcIjEuMFwiOlwiLzhcIiwxLjI6XCIvMVwiLDEuMzpcIi8zXCIsXCIyLjBcIjpcIi80MTJcIixcIjIuMC4yXCI6XCIvNDE2XCIsXCIyLjAuM1wiOlwiLzQxN1wiLFwiMi4wLjRcIjpcIi80MTlcIixcIj9cIjpcIi9cIn0sWD17TUU6XCI0LjkwXCIsXCJOVCAzLjExXCI6XCJOVDMuNTFcIixcIk5UIDQuMFwiOlwiTlQ0LjBcIiwyZTM6XCJOVCA1LjBcIixYUDpbXCJOVCA1LjFcIixcIk5UIDUuMlwiXSxWaXN0YTpcIk5UIDYuMFwiLDc6XCJOVCA2LjFcIiw4OlwiTlQgNi4yXCIsOC4xOlwiTlQgNi4zXCIsMTA6W1wiTlQgNi40XCIsXCJOVCAxMC4wXCJdLFJUOlwiQVJNXCJ9O3ZhciBLPXticm93c2VyOltbL1xcYig/OmNybW98Y3Jpb3MpXFwvKFtcXHdcXC5dKykvaV0sW2YsW3UsXCJDaHJvbWVcIl1dLFsvZWRnKD86ZXxpb3N8YSk/XFwvKFtcXHdcXC5dKykvaV0sW2YsW3UsXCJFZGdlXCJdXSxbLyhvcGVyYSBtaW5pKVxcLyhbLVxcd1xcLl0rKS9pLC8ob3BlcmEgW21vYmlsZXRhYl17Myw2fSlcXGIuK3ZlcnNpb25cXC8oWy1cXHdcXC5dKykvaSwvKG9wZXJhKSg/Oi4rdmVyc2lvblxcL3xbXFwvIF0rKShbXFx3XFwuXSspL2ldLFt1LGZdLFsvb3Bpb3NbXFwvIF0rKFtcXHdcXC5dKykvaV0sW2YsW3UsQitcIiBNaW5pXCJdXSxbL1xcYm9wclxcLyhbXFx3XFwuXSspL2ldLFtmLFt1LEJdXSxbLyhraW5kbGUpXFwvKFtcXHdcXC5dKykvaSwvKGx1bmFzY2FwZXxtYXh0aG9ufG5ldGZyb250fGphc21pbmV8YmxhemVyKVtcXC8gXT8oW1xcd1xcLl0qKS9pLC8oYXZhbnQgfGllbW9iaWxlfHNsaW0pKD86YnJvd3Nlcik/W1xcLyBdPyhbXFx3XFwuXSopL2ksLyhiYT9pZHVicm93c2VyKVtcXC8gXT8oW1xcd1xcLl0rKS9pLC8oPzptc3xcXCgpKGllKSAoW1xcd1xcLl0rKS9pLC8oZmxvY2t8cm9ja21lbHR8bWlkb3JpfGVwaXBoYW55fHNpbGt8c2t5ZmlyZXxib2x0fGlyb258dml2YWxkaXxpcmlkaXVtfHBoYW50b21qc3xib3dzZXJ8cXVhcmt8cXVwemlsbGF8ZmFsa29ufHJla29ucXxwdWZmaW58YnJhdmV8d2hhbGUoPyEuK25hdmVyKXxxcWJyb3dzZXJsaXRlfHFxfGR1Y2tkdWNrZ28pXFwvKFstXFx3XFwuXSspL2ksLyhoZXl0YXB8b3ZpKWJyb3dzZXJcXC8oW1xcZFxcLl0rKS9pLC8od2VpYm8pX18oW1xcZFxcLl0rKS9pXSxbdSxmXSxbLyg/OlxcYnVjPyA/YnJvd3NlcnwoPzpqdWMuKyl1Y3dlYilbXFwvIF0/KFtcXHdcXC5dKykvaV0sW2YsW3UsXCJVQ1wiK0FdXSxbL21pY3JvbS4rXFxicWJjb3JlXFwvKFtcXHdcXC5dKykvaSwvXFxicWJjb3JlXFwvKFtcXHdcXC5dKykuK21pY3JvbS9pXSxbZixbdSxcIldlQ2hhdChXaW4pIERlc2t0b3BcIl1dLFsvbWljcm9tZXNzZW5nZXJcXC8oW1xcd1xcLl0rKS9pXSxbZixbdSxcIldlQ2hhdFwiXV0sWy9rb25xdWVyb3JcXC8oW1xcd1xcLl0rKS9pXSxbZixbdSxcIktvbnF1ZXJvclwiXV0sWy90cmlkZW50Litydls6IF0oW1xcd1xcLl17MSw5fSlcXGIuK2xpa2UgZ2Vja28vaV0sW2YsW3UsXCJJRVwiXV0sWy95YSg/OnNlYXJjaCk/YnJvd3NlclxcLyhbXFx3XFwuXSspL2ldLFtmLFt1LFwiWWFuZGV4XCJdXSxbLyhhdmFzdHxhdmcpXFwvKFtcXHdcXC5dKykvaV0sW1t1LC8oLispLyxcIiQxIFNlY3VyZSBcIitBXSxmXSxbL1xcYmZvY3VzXFwvKFtcXHdcXC5dKykvaV0sW2YsW3UsTytcIiBGb2N1c1wiXV0sWy9cXGJvcHRcXC8oW1xcd1xcLl0rKS9pXSxbZixbdSxCK1wiIFRvdWNoXCJdXSxbL2NvY19jb2NcXHcrXFwvKFtcXHdcXC5dKykvaV0sW2YsW3UsXCJDb2MgQ29jXCJdXSxbL2RvbGZpblxcLyhbXFx3XFwuXSspL2ldLFtmLFt1LFwiRG9scGhpblwiXV0sWy9jb2FzdFxcLyhbXFx3XFwuXSspL2ldLFtmLFt1LEIrXCIgQ29hc3RcIl1dLFsvbWl1aWJyb3dzZXJcXC8oW1xcd1xcLl0rKS9pXSxbZixbdSxcIk1JVUkgXCIrQV1dLFsvZnhpb3NcXC8oWy1cXHdcXC5dKykvaV0sW2YsW3UsT11dLFsvXFxicWlodXwocWk/aG8/bz98MzYwKWJyb3dzZXIvaV0sW1t1LFwiMzYwIFwiK0FdXSxbLyhvY3VsdXN8c2Ftc3VuZ3xzYWlsZmlzaHxodWF3ZWkpYnJvd3NlclxcLyhbXFx3XFwuXSspL2ldLFtbdSwvKC4rKS8sXCIkMSBcIitBXSxmXSxbLyhjb21vZG9fZHJhZ29uKVxcLyhbXFx3XFwuXSspL2ldLFtbdSwvXy9nLFwiIFwiXSxmXSxbLyhlbGVjdHJvbilcXC8oW1xcd1xcLl0rKSBzYWZhcmkvaSwvKHRlc2xhKSg/OiBxdGNhcmJyb3dzZXJ8XFwvKDIwXFxkXFxkXFwuWy1cXHdcXC5dKykpL2ksL20/KHFxYnJvd3NlcnxiYWlkdWJveGFwcHwyMzQ1RXhwbG9yZXIpW1xcLyBdPyhbXFx3XFwuXSspL2ldLFt1LGZdLFsvKG1ldGFzcilbXFwvIF0/KFtcXHdcXC5dKykvaSwvKGxiYnJvd3NlcikvaSwvXFxbKGxpbmtlZGluKWFwcFxcXS9pXSxbdV0sWy8oKD86ZmJhblxcL2ZiaW9zfGZiX2lhYlxcL2ZiNGEpKD8hLitmYmF2KXw7ZmJhdlxcLyhbXFx3XFwuXSspOykvaV0sW1t1LEhdLGZdLFsvKGtha2FvKD86dGFsa3xzdG9yeSkpW1xcLyBdKFtcXHdcXC5dKykvaSwvKG5hdmVyKVxcKC4qPyhcXGQrXFwuW1xcd1xcLl0rKS4qXFwpL2ksL3NhZmFyaSAobGluZSlcXC8oW1xcd1xcLl0rKS9pLC9cXGIobGluZSlcXC8oW1xcd1xcLl0rKVxcL2lhYi9pLC8oY2hyb21pdW18aW5zdGFncmFtKVtcXC8gXShbLVxcd1xcLl0rKS9pXSxbdSxmXSxbL1xcYmdzYVxcLyhbXFx3XFwuXSspIC4qc2FmYXJpXFwvL2ldLFtmLFt1LFwiR1NBXCJdXSxbL211c2ljYWxfbHkoPzouK2FwcF8/dmVyc2lvblxcL3xfKShbXFx3XFwuXSspL2ldLFtmLFt1LFwiVGlrVG9rXCJdXSxbL2hlYWRsZXNzY2hyb21lKD86XFwvKFtcXHdcXC5dKyl8ICkvaV0sW2YsW3UsQytcIiBIZWFkbGVzc1wiXV0sWy8gd3ZcXCkuKyhjaHJvbWUpXFwvKFtcXHdcXC5dKykvaV0sW1t1LEMrXCIgV2ViVmlld1wiXSxmXSxbL2Ryb2lkLisgdmVyc2lvblxcLyhbXFx3XFwuXSspXFxiLisoPzptb2JpbGUgc2FmYXJpfHNhZmFyaSkvaV0sW2YsW3UsXCJBbmRyb2lkIFwiK0FdXSxbLyhjaHJvbWV8b21uaXdlYnxhcm9yYXxbdGl6ZW5va2FdezV9ID9icm93c2VyKVxcL3Y/KFtcXHdcXC5dKykvaV0sW3UsZl0sWy92ZXJzaW9uXFwvKFtcXHdcXC5cXCxdKykgLiptb2JpbGVcXC9cXHcrIChzYWZhcmkpL2ldLFtmLFt1LFwiTW9iaWxlIFNhZmFyaVwiXV0sWy92ZXJzaW9uXFwvKFtcXHcoXFwufFxcLCldKykgLioobW9iaWxlID9zYWZhcml8c2FmYXJpKS9pXSxbZix1XSxbL3dlYmtpdC4rPyhtb2JpbGUgP3NhZmFyaXxzYWZhcmkpKFxcL1tcXHdcXC5dKykvaV0sW3UsW2Ysc3RyTWFwcGVyLCRdXSxbLyh3ZWJraXR8a2h0bWwpXFwvKFtcXHdcXC5dKykvaV0sW3UsZl0sWy8obmF2aWdhdG9yfG5ldHNjYXBlXFxkPylcXC8oWy1cXHdcXC5dKykvaV0sW1t1LFwiTmV0c2NhcGVcIl0sZl0sWy9tb2JpbGUgdnI7IHJ2OihbXFx3XFwuXSspXFwpLitmaXJlZm94L2ldLFtmLFt1LE8rXCIgUmVhbGl0eVwiXV0sWy9la2lvaGYuKyhmbG93KVxcLyhbXFx3XFwuXSspL2ksLyhzd2lmdGZveCkvaSwvKGljZWRyYWdvbnxpY2V3ZWFzZWx8Y2FtaW5vfGNoaW1lcmF8ZmVubmVjfG1hZW1vIGJyb3dzZXJ8bWluaW1vfGNvbmtlcm9yfGtsYXIpW1xcLyBdPyhbXFx3XFwuXFwrXSspL2ksLyhzZWFtb25rZXl8ay1tZWxlb258aWNlY2F0fGljZWFwZXxmaXJlYmlyZHxwaG9lbml4fHBhbGVtb29ufGJhc2lsaXNrfHdhdGVyZm94KVxcLyhbLVxcd1xcLl0rKSQvaSwvKGZpcmVmb3gpXFwvKFtcXHdcXC5dKykvaSwvKG1vemlsbGEpXFwvKFtcXHdcXC5dKykgLitydlxcOi4rZ2Vja29cXC9cXGQrL2ksLyhwb2xhcmlzfGx5bnh8ZGlsbG98aWNhYnxkb3Jpc3xhbWF5YXx3M218bmV0c3VyZnxzbGVpcG5pcnxvYmlnb3xtb3NhaWN8KD86Z298aWNlfHVwKVtcXC4gXT9icm93c2VyKVstXFwvIF0/dj8oW1xcd1xcLl0rKS9pLC8obGlua3MpIFxcKChbXFx3XFwuXSspL2ksL3BhbmFzb25pYzsodmllcmEpL2ldLFt1LGZdLFsvKGNvYmFsdClcXC8oW1xcd1xcLl0rKS9pXSxbdSxbZiwvbWFzdGVyLnxsdHMuLyxcIlwiXV1dLGNwdTpbWy8oPzooYW1kfHgoPzooPzo4Nnw2NClbLV9dKT98d293fHdpbik2NClbO1xcKV0vaV0sW1toLFwiYW1kNjRcIl1dLFsvKGlhMzIoPz07KSkvaV0sW1toLGxvd2VyaXplXV0sWy8oKD86aVszNDZdfHgpODYpWztcXCldL2ldLFtbaCxcImlhMzJcIl1dLFsvXFxiKGFhcmNoNjR8YXJtKHY/OGU/bD98Xz82NCkpXFxiL2ldLFtbaCxcImFybTY0XCJdXSxbL1xcYihhcm0oPzp2WzY3XSk/aHQ/bj9bZmxdcD8pXFxiL2ldLFtbaCxcImFybWhmXCJdXSxbL3dpbmRvd3MgKGNlfG1vYmlsZSk7IHBwYzsvaV0sW1toLFwiYXJtXCJdXSxbLygoPzpwcGN8cG93ZXJwYykoPzo2NCk/KSg/OiBtYWN8O3xcXCkpL2ldLFtbaCwvb3dlci8sdCxsb3dlcml6ZV1dLFsvKHN1bjRcXHcpWztcXCldL2ldLFtbaCxcInNwYXJjXCJdXSxbLygoPzphdnIzMnxpYTY0KD89OykpfDY4ayg/PVxcKSl8XFxiYXJtKD89dig/OlsxLTddfFs1LTddMSlsP3w7fGVhYmkpfCg/PWF0bWVsIClhdnJ8KD86aXJpeHxtaXBzfHNwYXJjKSg/OjY0KT9cXGJ8cGEtcmlzYykvaV0sW1toLGxvd2VyaXplXV1dLGRldmljZTpbWy9cXGIoc2NoLWlbODldMFxcZHxzaHctbTM4MHN8c20tW3B0eF1cXHd7Miw0fXxndC1bcG5dXFxkezIsNH18c2doLXQ4WzU2XTl8bmV4dXMgMTApL2ldLFtjLFttLFZdLFtwLGtdXSxbL1xcYigoPzpzW2NncF1ofGd0fHNtKS1cXHcrfHNjW2ctXT9bXFxkXSthP3xnYWxheHkgbmV4dXMpL2ksL3NhbXN1bmdbLSBdKFstXFx3XSspL2ksL3NlYy0oc2doXFx3KykvaV0sW2MsW20sVl0sW3AsZ11dLFsvKD86XFwvfFxcKCkoaXAoPzpob25lfG9kKVtcXHcsIF0qKSg/OlxcL3w7KS9pXSxbYyxbbSxTXSxbcCxnXV0sWy9cXCgoaXBhZCk7Wy1cXHdcXCksOyBdK2FwcGxlL2ksL2FwcGxlY29yZW1lZGlhXFwvW1xcd1xcLl0rIFxcKChpcGFkKS9pLC9cXGIoaXBhZClcXGRcXGQ/LFxcZFxcZD9bO1xcXV0uK2lvcy9pXSxbYyxbbSxTXSxbcCxrXV0sWy8obWFjaW50b3NoKTsvaV0sW2MsW20sU11dLFsvXFxiKHNoLT9bYWx0dnpdP1xcZFxcZFthLWVrbV0/KS9pXSxbYyxbbSxEXSxbcCxnXV0sWy9cXGIoKD86YWdbcnNdWzIzXT98YmFoMj98c2h0P3xidHYpLWE/W2x3XVxcZHsyfSlcXGIoPyEuK2RcXC9zKS9pXSxbYyxbbSxqXSxbcCxrXV0sWy8oPzpodWF3ZWl8aG9ub3IpKFstXFx3IF0rKVs7XFwpXS9pLC9cXGIobmV4dXMgNnB8XFx3ezIsNH1lPy1bYXR1XT9bbG5dW1xcZHhdWzAxMjM1OWNdW2Fkbl0/KVxcYig/IS4rZFxcL3MpL2ldLFtjLFttLGpdLFtwLGddXSxbL1xcYihwb2NvW1xcdyBdKykoPzogYnVpfFxcKSkvaSwvXFxiOyAoXFx3KykgYnVpbGRcXC9obVxcMS9pLC9cXGIoaG1bLV8gXT9ub3RlP1tfIF0/KD86XFxkXFx3KT8pIGJ1aS9pLC9cXGIocmVkbWlbXFwtXyBdPyg/Om5vdGV8ayk/W1xcd18gXSspKD86IGJ1aXxcXCkpL2ksL1xcYihtaVstXyBdPyg/OmFcXGR8b25lfG9uZVtfIF1wbHVzfG5vdGUgbHRlfG1heHxjYyk/W18gXT8oPzpcXGQ/XFx3PylbXyBdPyg/OnBsdXN8c2V8bGl0ZSk/KSg/OiBidWl8XFwpKS9pXSxbW2MsL18vZyxcIiBcIl0sW20sRl0sW3AsZ11dLFsvXFxiKG1pWy1fIF0/KD86cGFkKSg/OltcXHdfIF0rKSkoPzogYnVpfFxcKSkvaV0sW1tjLC9fL2csXCIgXCJdLFttLEZdLFtwLGtdXSxbLzsgKFxcdyspIGJ1aS4rIG9wcG8vaSwvXFxiKGNwaFsxMl1cXGR7M318cCg/OmFmfGNbYWxdfGRcXHd8ZVthcl0pW210XVxcZDB8eDkwMDd8YTEwMW9wKVxcYi9pXSxbYyxbbSxcIk9QUE9cIl0sW3AsZ11dLFsvdml2byAoXFx3KykoPzogYnVpfFxcKSkvaSwvXFxiKHZbMTJdXFxkezN9XFx3P1thdF0pKD86IGJ1aXw7KS9pXSxbYyxbbSxcIlZpdm9cIl0sW3AsZ11dLFsvXFxiKHJteFsxMl1cXGR7M30pKD86IGJ1aXw7fFxcKSkvaV0sW2MsW20sXCJSZWFsbWVcIl0sW3AsZ11dLFsvXFxiKG1pbGVzdG9uZXxkcm9pZCg/OlsyLTR4XXwgKD86YmlvbmljfHgyfHByb3xyYXpyKSk/Oj8oIDRnKT8pXFxiW1xcdyBdK2J1aWxkXFwvL2ksL1xcYm1vdCg/Om9yb2xhKT9bLSBdKFxcdyopL2ksLygoPzptb3RvW1xcd1xcKFxcKSBdK3x4dFxcZHszLDR9fG5leHVzIDYpKD89IGJ1aXxcXCkpKS9pXSxbYyxbbSxNXSxbcCxnXV0sWy9cXGIobXo2MFxcZHx4b29tWzIgXXswLDJ9KSBidWlsZFxcLy9pXSxbYyxbbSxNXSxbcCxrXV0sWy8oKD89bGcpP1t2bF1rXFwtP1xcZHszfSkgYnVpfCAzXFwuWy1cXHc7IF17MTB9bGc/LShbMDZjdjldezMsNH0pL2ldLFtjLFttLFBdLFtwLGtdXSxbLyhsbSg/Oi0/ZjEwMFtudl0/fC1bXFx3XFwuXSspKD89IGJ1aXxcXCkpfG5leHVzIFs0NV0pL2ksL1xcYmxnWy1lO1xcLyBdKygoPyFicm93c2VyfG5ldGNhc3R8YW5kcm9pZCB0dilcXHcrKS9pLC9cXGJsZy0/KFtcXGRcXHddKykgYnVpL2ldLFtjLFttLFBdLFtwLGddXSxbLyhpZGVhdGFiWy1cXHcgXSspL2ksL2xlbm92byA/KHNbNTZdMDAwWy1cXHddK3x0YWIoPzpbXFx3IF0rKXx5dFstXFxkXFx3XXs2fXx0YlstXFxkXFx3XXs2fSkvaV0sW2MsW20sXCJMZW5vdm9cIl0sW3Asa11dLFsvKD86bWFlbW98bm9raWEpLioobjkwMHxsdW1pYSBcXGQrKS9pLC9ub2tpYVstXyBdPyhbLVxcd1xcLl0qKS9pXSxbW2MsL18vZyxcIiBcIl0sW20sXCJOb2tpYVwiXSxbcCxnXV0sWy8ocGl4ZWwgYylcXGIvaV0sW2MsW20sVV0sW3Asa11dLFsvZHJvaWQuKzsgKHBpeGVsW1xcZGF4bCBdezAsNn0pKD86IGJ1aXxcXCkpL2ldLFtjLFttLFVdLFtwLGddXSxbL2Ryb2lkLisgKGE/XFxkWzAtMl17Mn1zb3xbYy1nXVxcZHs0fXxzb1stZ2xdXFx3K3x4cS1hXFx3WzQtN11bMTJdKSg/PSBidWl8XFwpLitjaHJvbWVcXC8oPyFbMS02XXswLDF9XFxkXFwuKSkvaV0sW2MsW20sSV0sW3AsZ11dLFsvc29ueSB0YWJsZXQgW3BzXS9pLC9cXGIoPzpzb255KT9zZ3BcXHcrKD86IGJ1aXxcXCkpL2ldLFtbYyxcIlhwZXJpYSBUYWJsZXRcIl0sW20sSV0sW3Asa11dLFsvIChrYjIwMDV8aW4yMFsxMl01fGJlMjBbMTJdWzU5XSlcXGIvaSwvKD86b25lKT8oPzpwbHVzKT8gKGFcXGQwXFxkXFxkKSg/OiBifFxcKSkvaV0sW2MsW20sXCJPbmVQbHVzXCJdLFtwLGddXSxbLyhhbGV4YSl3ZWJtL2ksLyhrZlthLXpdezJ9d2l8YWVvW2Mtcl17Mn0pKCBidWl8XFwpKS9pLC8oa2ZbYS16XSspKCBidWl8XFwpKS4rc2lsa1xcLy9pXSxbYyxbbSxUXSxbcCxrXV0sWy8oKD86c2R8a2YpWzAzNDloaWpvcnN0dXddKykoIGJ1aXxcXCkpLitzaWxrXFwvL2ldLFtbYywvKC4rKS9nLFwiRmlyZSBQaG9uZSAkMVwiXSxbbSxUXSxbcCxnXV0sWy8ocGxheWJvb2spO1stXFx3XFwpLDsgXSsocmltKS9pXSxbYyxtLFtwLGtdXSxbL1xcYigoPzpiYlthLWZdfHN0W2h2XSkxMDAtXFxkKS9pLC9cXChiYjEwOyAoXFx3KykvaV0sW2MsW20sTl0sW3AsZ11dLFsvKD86XFxifGFzdXNfKSh0cmFuc2ZvW3ByaW1lIF17NCwxMH0gXFx3K3xlZWVwY3xzbGlkZXIgXFx3K3xuZXh1cyA3fHBhZGZvbmV8cDAwW2NqXSkvaV0sW2MsW20sel0sW3Asa11dLFsvICh6W2Jlc102WzAyN11bMDEyXVtrbV1bbHNdfHplbmZvbmUgXFxkXFx3PylcXGIvaV0sW2MsW20sel0sW3AsZ11dLFsvKG5leHVzIDkpL2ldLFtjLFttLFwiSFRDXCJdLFtwLGtdXSxbLyhodGMpWy07XyBdezEsMn0oW1xcdyBdKyg/PVxcKXwgYnVpKXxcXHcrKS9pLC8oenRlKVstIF0oW1xcdyBdKz8pKD86IGJ1aXxcXC98XFwpKS9pLC8oYWxjYXRlbHxnZWVrc3Bob25lfG5leGlhbnxwYW5hc29uaWMoPyEoPzo7fFxcLikpfHNvbnkoPyEtYnJhKSlbLV8gXT8oWy1cXHddKikvaV0sW20sW2MsL18vZyxcIiBcIl0sW3AsZ11dLFsvZHJvaWQuKzsgKFthYl1bMS03XS0/WzAxNzhhXVxcZFxcZD8pL2ldLFtjLFttLFwiQWNlclwiXSxbcCxrXV0sWy9kcm9pZC4rOyAobVsxLTVdIG5vdGUpIGJ1aS9pLC9cXGJtei0oWy1cXHddezIsfSkvaV0sW2MsW20sXCJNZWl6dVwiXSxbcCxnXV0sWy8oYmxhY2tiZXJyeXxiZW5xfHBhbG0oPz1cXC0pfHNvbnllcmljc3NvbnxhY2VyfGFzdXN8ZGVsbHxtZWl6dXxtb3Rvcm9sYXxwb2x5dHJvbilbLV8gXT8oWy1cXHddKikvaSwvKGhwKSAoW1xcdyBdK1xcdykvaSwvKGFzdXMpLT8oXFx3KykvaSwvKG1pY3Jvc29mdCk7IChsdW1pYVtcXHcgXSspL2ksLyhsZW5vdm8pWy1fIF0/KFstXFx3XSspL2ksLyhqb2xsYSkvaSwvKG9wcG8pID8oW1xcdyBdKykgYnVpL2ldLFttLGMsW3AsZ11dLFsvKGtvYm8pXFxzKGVyZWFkZXJ8dG91Y2gpL2ksLyhhcmNob3MpIChnYW1lcGFkMj8pL2ksLyhocCkuKyh0b3VjaHBhZCg/IS4rdGFibGV0KXx0YWJsZXQpL2ksLyhraW5kbGUpXFwvKFtcXHdcXC5dKykvaSwvKG5vb2spW1xcdyBdK2J1aWxkXFwvKFxcdyspL2ksLyhkZWxsKSAoc3RyZWFba3ByXFxkIF0qW1xcZGtvXSkvaSwvKGxlWy0gXStwYW4pWy0gXSsoXFx3ezEsOX0pIGJ1aS9pLC8odHJpbml0eSlbLSBdKih0XFxkezN9KSBidWkvaSwvKGdpZ2FzZXQpWy0gXSsocVxcd3sxLDl9KSBidWkvaSwvKHZvZGFmb25lKSAoW1xcdyBdKykoPzpcXCl8IGJ1aSkvaV0sW20sYyxbcCxrXV0sWy8oc3VyZmFjZSBkdW8pL2ldLFtjLFttLFJdLFtwLGtdXSxbL2Ryb2lkIFtcXGRcXC5dKzsgKGZwXFxkdT8pKD86IGJ8XFwpKS9pXSxbYyxbbSxcIkZhaXJwaG9uZVwiXSxbcCxnXV0sWy8odTMwNGFhKS9pXSxbYyxbbSxcIkFUJlRcIl0sW3AsZ11dLFsvXFxic2llLShcXHcqKS9pXSxbYyxbbSxcIlNpZW1lbnNcIl0sW3AsZ11dLFsvXFxiKHJjdFxcdyspIGIvaV0sW2MsW20sXCJSQ0FcIl0sW3Asa11dLFsvXFxiKHZlbnVlW1xcZCBdezIsN30pIGIvaV0sW2MsW20sXCJEZWxsXCJdLFtwLGtdXSxbL1xcYihxKD86bXZ8dGEpXFx3KykgYi9pXSxbYyxbbSxcIlZlcml6b25cIl0sW3Asa11dLFsvXFxiKD86YmFybmVzWyYgXStub2JsZSB8Ym5bcnRdKShbXFx3XFwrIF0qKSBiL2ldLFtjLFttLFwiQmFybmVzICYgTm9ibGVcIl0sW3Asa11dLFsvXFxiKHRtXFxkezN9XFx3KykgYi9pXSxbYyxbbSxcIk51VmlzaW9uXCJdLFtwLGtdXSxbL1xcYihrODgpIGIvaV0sW2MsW20sXCJaVEVcIl0sW3Asa11dLFsvXFxiKG54XFxkezN9aikgYi9pXSxbYyxbbSxcIlpURVwiXSxbcCxnXV0sWy9cXGIoZ2VuXFxkezN9KSBiLis0OWgvaV0sW2MsW20sXCJTd2lzc1wiXSxbcCxnXV0sWy9cXGIoenVyXFxkezN9KSBiL2ldLFtjLFttLFwiU3dpc3NcIl0sW3Asa11dLFsvXFxiKCh6ZWtpKT90Yi4qXFxiKSBiL2ldLFtjLFttLFwiWmVraVwiXSxbcCxrXV0sWy9cXGIoW3lyXVxcZHsyfSkgYi9pLC9cXGIoZHJhZ29uWy0gXSt0b3VjaCB8ZHQpKFxcd3s1fSkgYi9pXSxbW20sXCJEcmFnb24gVG91Y2hcIl0sYyxbcCxrXV0sWy9cXGIobnMtP1xcd3swLDl9KSBiL2ldLFtjLFttLFwiSW5zaWduaWFcIl0sW3Asa11dLFsvXFxiKChueGF8bmV4dCktP1xcd3swLDl9KSBiL2ldLFtjLFttLFwiTmV4dEJvb2tcIl0sW3Asa11dLFsvXFxiKHh0cmVtZVxcXyk/KHYoMVswNDVdfDJbMDE1XXxbMzQ2OV0wfDdbMDVdKSkgYi9pXSxbW20sXCJWb2ljZVwiXSxjLFtwLGddXSxbL1xcYihsdnRlbFxcLSk/KHYxWzEyXSkgYi9pXSxbW20sXCJMdlRlbFwiXSxjLFtwLGddXSxbL1xcYihwaC0xKSAvaV0sW2MsW20sXCJFc3NlbnRpYWxcIl0sW3AsZ11dLFsvXFxiKHYoMTAwbWR8NzAwbmF8NzAxMXw5MTdnKS4qXFxiKSBiL2ldLFtjLFttLFwiRW52aXplblwiXSxbcCxrXV0sWy9cXGIodHJpb1stXFx3XFwuIF0rKSBiL2ldLFtjLFttLFwiTWFjaFNwZWVkXCJdLFtwLGtdXSxbL1xcYnR1XygxNDkxKSBiL2ldLFtjLFttLFwiUm90b3JcIl0sW3Asa11dLFsvKHNoaWVsZFtcXHcgXSspIGIvaV0sW2MsW20sXCJOdmlkaWFcIl0sW3Asa11dLFsvKHNwcmludCkgKFxcdyspL2ldLFttLGMsW3AsZ11dLFsvKGtpblxcLltvbmV0d117M30pL2ldLFtbYywvXFwuL2csXCIgXCJdLFttLFJdLFtwLGddXSxbL2Ryb2lkLis7IChjYzY2NjY/fGV0NVsxNl18bWNbMjM5XVsyM114P3x2YzhbMDNdeD8pXFwpL2ldLFtjLFttLEddLFtwLGtdXSxbL2Ryb2lkLis7IChlYzMwfHBzMjB8dGNbMi04XVxcZFtreF0pXFwpL2ldLFtjLFttLEddLFtwLGddXSxbL3NtYXJ0LXR2Lisoc2Ftc3VuZykvaV0sW20sW3AseF1dLFsvaGJidHYuK21hcGxlOyhcXGQrKS9pXSxbW2MsL14vLFwiU21hcnRUVlwiXSxbbSxWXSxbcCx4XV0sWy8obnV4OyBuZXRjYXN0LitzbWFydHR2fGxnIChuZXRjYXN0XFwudHYtMjAxXFxkfGFuZHJvaWQgdHYpKS9pXSxbW20sUF0sW3AseF1dLFsvKGFwcGxlKSA/dHYvaV0sW20sW2MsUytcIiBUVlwiXSxbcCx4XV0sWy9jcmtleS9pXSxbW2MsQytcImNhc3RcIl0sW20sVV0sW3AseF1dLFsvZHJvaWQuK2FmdChcXHcpKCBidWl8XFwpKS9pXSxbYyxbbSxUXSxbcCx4XV0sWy9cXChkdHZbXFwpO10uKyhhcXVvcykvaSwvKGFxdW9zLXR2W1xcdyBdKylcXCkvaV0sW2MsW20sRF0sW3AseF1dLFsvKGJyYXZpYVtcXHcgXSspKCBidWl8XFwpKS9pXSxbYyxbbSxJXSxbcCx4XV0sWy8obWl0di1cXHd7NX0pIGJ1aS9pXSxbYyxbbSxGXSxbcCx4XV0sWy9IYmJ0di4qKHRlY2huaXNhdCkgKC4qKTsvaV0sW20sYyxbcCx4XV0sWy9cXGIocm9rdSlbXFxkeF0qW1xcKVxcL10oKD86ZHZwLSk/W1xcZFxcLl0qKS9pLC9oYmJ0dlxcL1xcZCtcXC5cXGQrXFwuXFxkKyArXFwoW1xcd1xcKyBdKjsgKihbXFx3XFxkXVteO10qKTsoW147XSopL2ldLFtbbSx0cmltXSxbYyx0cmltXSxbcCx4XV0sWy9cXGIoYW5kcm9pZCB0dnxzbWFydFstIF0/dHZ8b3BlcmEgdHZ8dHY7IHJ2OilcXGIvaV0sW1twLHhdXSxbLyhvdXlhKS9pLC8obmludGVuZG8pIChbd2lkczN1dGNoXSspL2ldLFttLGMsW3Asdl1dLFsvZHJvaWQuKzsgKHNoaWVsZCkgYnVpL2ldLFtjLFttLFwiTnZpZGlhXCJdLFtwLHZdXSxbLyhwbGF5c3RhdGlvbiBbMzQ1cG9ydGFibGV2aV0rKS9pXSxbYyxbbSxJXSxbcCx2XV0sWy9cXGIoeGJveCg/OiBvbmUpPyg/ITsgeGJveCkpW1xcKTsgXS9pXSxbYyxbbSxSXSxbcCx2XV0sWy8oKHBlYmJsZSkpYXBwL2ldLFttLGMsW3AsX11dLFsvKHdhdGNoKSg/OiA/b3NbLFxcL118XFxkLFxcZFxcLylbXFxkXFwuXSsvaV0sW2MsW20sU10sW3AsX11dLFsvZHJvaWQuKzsgKGdsYXNzKSBcXGQvaV0sW2MsW20sVV0sW3AsX11dLFsvZHJvaWQuKzsgKHd0NjM/MHsyLDN9KVxcKS9pXSxbYyxbbSxHXSxbcCxfXV0sWy8ocXVlc3QoIDJ8IHBybyk/KS9pXSxbYyxbbSxIXSxbcCxfXV0sWy8odGVzbGEpKD86IHF0Y2FyYnJvd3NlcnxcXC9bLVxcd1xcLl0rKS9pXSxbbSxbcCx5XV0sWy8oYWVvYmMpXFxiL2ldLFtjLFttLFRdLFtwLHldXSxbL2Ryb2lkIC4rPzsgKFteO10rPykoPzogYnVpfFxcKSBhcHBsZXcpLis/IG1vYmlsZSBzYWZhcmkvaV0sW2MsW3AsZ11dLFsvZHJvaWQgLis/OyAoW147XSs/KSg/OiBidWl8XFwpIGFwcGxldykuKz8oPyEgbW9iaWxlKSBzYWZhcmkvaV0sW2MsW3Asa11dLFsvXFxiKCh0YWJsZXR8dGFiKVs7XFwvXXxmb2N1c1xcL1xcZCg/IS4rbW9iaWxlKSkvaV0sW1twLGtdXSxbLyhwaG9uZXxtb2JpbGUoPzpbO1xcL118IFsgXFx3XFwvXFwuXSpzYWZhcmkpfHBkYSg/PS4rd2luZG93cyBjZSkpL2ldLFtbcCxnXV0sWy8oYW5kcm9pZFstXFx3XFwuIF17MCw5fSk7LitidWlsL2ldLFtjLFttLFwiR2VuZXJpY1wiXV1dLGVuZ2luZTpbWy93aW5kb3dzLisgZWRnZVxcLyhbXFx3XFwuXSspL2ldLFtmLFt1LEUrXCJIVE1MXCJdXSxbL3dlYmtpdFxcLzUzN1xcLjM2LitjaHJvbWVcXC8oPyEyNykoW1xcd1xcLl0rKS9pXSxbZixbdSxcIkJsaW5rXCJdXSxbLyhwcmVzdG8pXFwvKFtcXHdcXC5dKykvaSwvKHdlYmtpdHx0cmlkZW50fG5ldGZyb250fG5ldHN1cmZ8YW1heWF8bHlueHx3M218Z29hbm5hKVxcLyhbXFx3XFwuXSspL2ksL2VraW9oKGZsb3cpXFwvKFtcXHdcXC5dKykvaSwvKGtodG1sfHRhc21hbnxsaW5rcylbXFwvIF1cXCg/KFtcXHdcXC5dKykvaSwvKGljYWIpW1xcLyBdKFsyM11cXC5bXFxkXFwuXSspL2ksL1xcYihsaWJ3ZWIpL2ldLFt1LGZdLFsvcnZcXDooW1xcd1xcLl17MSw5fSlcXGIuKyhnZWNrbykvaV0sW2YsdV1dLG9zOltbL21pY3Jvc29mdCAod2luZG93cykgKHZpc3RhfHhwKS9pXSxbdSxmXSxbLyh3aW5kb3dzKSBudCA2XFwuMjsgKGFybSkvaSwvKHdpbmRvd3MgKD86cGhvbmUoPzogb3MpP3xtb2JpbGUpKVtcXC8gXT8oW1xcZFxcLlxcdyBdKikvaSwvKHdpbmRvd3MpW1xcLyBdPyhbbnRjZVxcZFxcLiBdK1xcdykoPyEuK3hib3gpL2ldLFt1LFtmLHN0ck1hcHBlcixYXV0sWy8od2luKD89M3w5fG4pfHdpbiA5eCApKFtudFxcZFxcLl0rKS9pXSxbW3UsXCJXaW5kb3dzXCJdLFtmLHN0ck1hcHBlcixYXV0sWy9pcFtob25lYWRdezIsNH1cXGIoPzouKm9zIChbXFx3XSspIGxpa2UgbWFjfDsgb3BlcmEpL2ksL2lvcztmYnN2XFwvKFtcXGRcXC5dKykvaSwvY2ZuZXR3b3JrXFwvLitkYXJ3aW4vaV0sW1tmLC9fL2csXCIuXCJdLFt1LFwiaU9TXCJdXSxbLyhtYWMgb3MgeCkgPyhbXFx3XFwuIF0qKS9pLC8obWFjaW50b3NofG1hY19wb3dlcnBjXFxiKSg/IS4raGFpa3UpL2ldLFtbdSxaXSxbZiwvXy9nLFwiLlwiXV0sWy9kcm9pZCAoW1xcd1xcLl0rKVxcYi4rKGFuZHJvaWRbLSBdeDg2fGhhcm1vbnlvcykvaV0sW2YsdV0sWy8oYW5kcm9pZHx3ZWJvc3xxbnh8YmFkYXxyaW0gdGFibGV0IG9zfG1hZW1vfG1lZWdvfHNhaWxmaXNoKVstXFwvIF0/KFtcXHdcXC5dKikvaSwvKGJsYWNrYmVycnkpXFx3KlxcLyhbXFx3XFwuXSopL2ksLyh0aXplbnxrYWlvcylbXFwvIF0oW1xcd1xcLl0rKS9pLC9cXCgoc2VyaWVzNDApOy9pXSxbdSxmXSxbL1xcKGJiKDEwKTsvaV0sW2YsW3UsTl1dLFsvKD86c3ltYmlhbiA/b3N8c3ltYm9zfHM2MCg/PTspfHNlcmllczYwKVstXFwvIF0/KFtcXHdcXC5dKikvaV0sW2YsW3UsXCJTeW1iaWFuXCJdXSxbL21vemlsbGFcXC9bXFxkXFwuXSsgXFwoKD86bW9iaWxlfHRhYmxldHx0dnxtb2JpbGU7IFtcXHcgXSspOyBydjouKyBnZWNrb1xcLyhbXFx3XFwuXSspL2ldLFtmLFt1LE8rXCIgT1NcIl1dLFsvd2ViMHM7LitydCh0dikvaSwvXFxiKD86aHApP3dvcyg/OmJyb3dzZXIpP1xcLyhbXFx3XFwuXSspL2ldLFtmLFt1LFwid2ViT1NcIl1dLFsvd2F0Y2goPzogP29zWyxcXC9dfFxcZCxcXGRcXC8pKFtcXGRcXC5dKykvaV0sW2YsW3UsXCJ3YXRjaE9TXCJdXSxbL2Nya2V5XFwvKFtcXGRcXC5dKykvaV0sW2YsW3UsQytcImNhc3RcIl1dLFsvKGNyb3MpIFtcXHddKyg/OlxcKXwgKFtcXHdcXC5dKylcXGIpL2ldLFtbdSxMXSxmXSxbL3BhbmFzb25pYzsodmllcmEpL2ksLyhuZXRyYW5nZSltbWgvaSwvKG5ldHR2KVxcLyhcXGQrXFwuW1xcd1xcLl0rKS9pLC8obmludGVuZG98cGxheXN0YXRpb24pIChbd2lkczM0NXBvcnRhYmxldnVjaF0rKS9pLC8oeGJveCk7ICt4Ym94IChbXlxcKTtdKykvaSwvXFxiKGpvbGl8cGFsbSlcXGIgPyg/Om9zKT9cXC8/KFtcXHdcXC5dKikvaSwvKG1pbnQpW1xcL1xcKFxcKSBdPyhcXHcqKS9pLC8obWFnZWlhfHZlY3RvcmxpbnV4KVs7IF0vaSwvKFtreGxuXT91YnVudHV8ZGViaWFufHN1c2V8b3BlbnN1c2V8Z2VudG9vfGFyY2goPz0gbGludXgpfHNsYWNrd2FyZXxmZWRvcmF8bWFuZHJpdmF8Y2VudG9zfHBjbGludXhvc3xyZWQgP2hhdHx6ZW53YWxrfGxpbnB1c3xyYXNwYmlhbnxwbGFuIDl8bWluaXh8cmlzYyBvc3xjb250aWtpfGRlZXBpbnxtYW5qYXJvfGVsZW1lbnRhcnkgb3N8c2FiYXlvbnxsaW5zcGlyZSkoPzogZ251XFwvbGludXgpPyg/OiBlbnRlcnByaXNlKT8oPzpbLSBdbGludXgpPyg/Oi1nbnUpP1stXFwvIF0/KD8hY2hyb218cGFja2FnZSkoWy1cXHdcXC5dKikvaSwvKGh1cmR8bGludXgpID8oW1xcd1xcLl0qKS9pLC8oZ251KSA/KFtcXHdcXC5dKikvaSwvXFxiKFstZnJlbnRvcGNnaHNdezAsNX1ic2R8ZHJhZ29uZmx5KVtcXC8gXT8oPyFhbWR8W2l4MzQ2XXsxLDJ9ODYpKFtcXHdcXC5dKikvaSwvKGhhaWt1KSAoXFx3KykvaV0sW3UsZl0sWy8oc3Vub3MpID8oW1xcd1xcLlxcZF0qKS9pXSxbW3UsXCJTb2xhcmlzXCJdLGZdLFsvKCg/Om9wZW4pP3NvbGFyaXMpWy1cXC8gXT8oW1xcd1xcLl0qKS9pLC8oYWl4KSAoKFxcZCkoPz1cXC58XFwpfCApW1xcd1xcLl0pKi9pLC9cXGIoYmVvc3xvc1xcLzJ8YW1pZ2Fvc3xtb3JwaG9zfG9wZW52bXN8ZnVjaHNpYXxocC11eHxzZXJlbml0eW9zKS9pLC8odW5peCkgPyhbXFx3XFwuXSopL2ldLFt1LGZdXX07dmFyIFVBUGFyc2VyPWZ1bmN0aW9uKGksZSl7aWYodHlwZW9mIGk9PT13KXtlPWk7aT1hfWlmKCEodGhpcyBpbnN0YW5jZW9mIFVBUGFyc2VyKSl7cmV0dXJuIG5ldyBVQVBhcnNlcihpLGUpLmdldFJlc3VsdCgpfXZhciByPXR5cGVvZiBvIT09YiYmby5uYXZpZ2F0b3I/by5uYXZpZ2F0b3I6YTt2YXIgbj1pfHwociYmci51c2VyQWdlbnQ/ci51c2VyQWdlbnQ6dCk7dmFyIHY9ciYmci51c2VyQWdlbnREYXRhP3IudXNlckFnZW50RGF0YTphO3ZhciB4PWU/ZXh0ZW5kKEssZSk6Szt2YXIgXz1yJiZyLnVzZXJBZ2VudD09bjt0aGlzLmdldEJyb3dzZXI9ZnVuY3Rpb24oKXt2YXIgaT17fTtpW3VdPWE7aVtmXT1hO3JneE1hcHBlci5jYWxsKGksbix4LmJyb3dzZXIpO2lbZF09bWFqb3JpemUoaVtmXSk7aWYoXyYmciYmci5icmF2ZSYmdHlwZW9mIHIuYnJhdmUuaXNCcmF2ZT09cyl7aVt1XT1cIkJyYXZlXCJ9cmV0dXJuIGl9O3RoaXMuZ2V0Q1BVPWZ1bmN0aW9uKCl7dmFyIGk9e307aVtoXT1hO3JneE1hcHBlci5jYWxsKGksbix4LmNwdSk7cmV0dXJuIGl9O3RoaXMuZ2V0RGV2aWNlPWZ1bmN0aW9uKCl7dmFyIGk9e307aVttXT1hO2lbY109YTtpW3BdPWE7cmd4TWFwcGVyLmNhbGwoaSxuLHguZGV2aWNlKTtpZihfJiYhaVtwXSYmdiYmdi5tb2JpbGUpe2lbcF09Z31pZihfJiZpW2NdPT1cIk1hY2ludG9zaFwiJiZyJiZ0eXBlb2Ygci5zdGFuZGFsb25lIT09YiYmci5tYXhUb3VjaFBvaW50cyYmci5tYXhUb3VjaFBvaW50cz4yKXtpW2NdPVwiaVBhZFwiO2lbcF09a31yZXR1cm4gaX07dGhpcy5nZXRFbmdpbmU9ZnVuY3Rpb24oKXt2YXIgaT17fTtpW3VdPWE7aVtmXT1hO3JneE1hcHBlci5jYWxsKGksbix4LmVuZ2luZSk7cmV0dXJuIGl9O3RoaXMuZ2V0T1M9ZnVuY3Rpb24oKXt2YXIgaT17fTtpW3VdPWE7aVtmXT1hO3JneE1hcHBlci5jYWxsKGksbix4Lm9zKTtpZihfJiYhaVt1XSYmdiYmdi5wbGF0Zm9ybSE9XCJVbmtub3duXCIpe2lbdV09di5wbGF0Zm9ybS5yZXBsYWNlKC9jaHJvbWUgb3MvaSxMKS5yZXBsYWNlKC9tYWNvcy9pLFopfXJldHVybiBpfTt0aGlzLmdldFJlc3VsdD1mdW5jdGlvbigpe3JldHVybnt1YTp0aGlzLmdldFVBKCksYnJvd3Nlcjp0aGlzLmdldEJyb3dzZXIoKSxlbmdpbmU6dGhpcy5nZXRFbmdpbmUoKSxvczp0aGlzLmdldE9TKCksZGV2aWNlOnRoaXMuZ2V0RGV2aWNlKCksY3B1OnRoaXMuZ2V0Q1BVKCl9fTt0aGlzLmdldFVBPWZ1bmN0aW9uKCl7cmV0dXJuIG59O3RoaXMuc2V0VUE9ZnVuY3Rpb24oaSl7bj10eXBlb2YgaT09PWwmJmkubGVuZ3RoPnE/dHJpbShpLHEpOmk7cmV0dXJuIHRoaXN9O3RoaXMuc2V0VUEobik7cmV0dXJuIHRoaXN9O1VBUGFyc2VyLlZFUlNJT049cjtVQVBhcnNlci5CUk9XU0VSPWVudW1lcml6ZShbdSxmLGRdKTtVQVBhcnNlci5DUFU9ZW51bWVyaXplKFtoXSk7VUFQYXJzZXIuREVWSUNFPWVudW1lcml6ZShbYyxtLHAsdixnLHgsayxfLHldKTtVQVBhcnNlci5FTkdJTkU9VUFQYXJzZXIuT1M9ZW51bWVyaXplKFt1LGZdKTtpZih0eXBlb2YgZSE9PWIpe2lmKFwib2JqZWN0XCIhPT1iJiZpLmV4cG9ydHMpe2U9aS5leHBvcnRzPVVBUGFyc2VyfWUuVUFQYXJzZXI9VUFQYXJzZXJ9ZWxzZXtpZih0eXBlb2YgZGVmaW5lPT09cyYmZGVmaW5lLmFtZCl7ZGVmaW5lKChmdW5jdGlvbigpe3JldHVybiBVQVBhcnNlcn0pKX1lbHNlIGlmKHR5cGVvZiBvIT09Yil7by5VQVBhcnNlcj1VQVBhcnNlcn19dmFyIFE9dHlwZW9mIG8hPT1iJiYoby5qUXVlcnl8fG8uWmVwdG8pO2lmKFEmJiFRLnVhKXt2YXIgWT1uZXcgVUFQYXJzZXI7US51YT1ZLmdldFJlc3VsdCgpO1EudWEuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIFkuZ2V0VUEoKX07US51YS5zZXQ9ZnVuY3Rpb24oaSl7WS5zZXRVQShpKTt2YXIgZT1ZLmdldFJlc3VsdCgpO2Zvcih2YXIgbyBpbiBlKXtRLnVhW29dPWVbb119fX19KSh0eXBlb2Ygd2luZG93PT09XCJvYmplY3RcIj93aW5kb3c6dGhpcyl9fTt2YXIgZT17fTtmdW5jdGlvbiBfX25jY3dwY2tfcmVxdWlyZV9fKG8pe3ZhciBhPWVbb107aWYoYSE9PXVuZGVmaW5lZCl7cmV0dXJuIGEuZXhwb3J0c312YXIgcj1lW29dPXtleHBvcnRzOnt9fTt2YXIgdD10cnVlO3RyeXtpW29dLmNhbGwoci5leHBvcnRzLHIsci5leHBvcnRzLF9fbmNjd3Bja19yZXF1aXJlX18pO3Q9ZmFsc2V9ZmluYWxseXtpZih0KWRlbGV0ZSBlW29dfXJldHVybiByLmV4cG9ydHN9aWYodHlwZW9mIF9fbmNjd3Bja19yZXF1aXJlX18hPT1cInVuZGVmaW5lZFwiKV9fbmNjd3Bja19yZXF1aXJlX18uYWI9X19kaXJuYW1lK1wiL1wiO3ZhciBvPV9fbmNjd3Bja19yZXF1aXJlX18oMjI2KTttb2R1bGUuZXhwb3J0cz1vfSkoKTsiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/compiled/ua-parser-js/ua-parser.js\n"); + /***/ }), /***/ "(rsc)/./node_modules/next/dist/lib/batcher.js": @@ -2163,6 +2184,28 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ }), +/***/ "(rsc)/./node_modules/next/dist/server/after/after.js": +/*!******************************************************!*\ + !*** ./node_modules/next/dist/server/after/after.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"after\", ({\n enumerable: true,\n get: function() {\n return after;\n }\n}));\nconst _workasyncstorageexternal = __webpack_require__(/*! ../app-render/work-async-storage.external */ \"../app-render/work-async-storage.external\");\nfunction after(task) {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n if (!workStore) {\n // TODO(after): the linked docs page talks about *dynamic* APIs, which after soon won't be anymore\n throw new Error('`after` was called outside a request scope. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context');\n }\n const { afterContext } = workStore;\n return afterContext.after(task);\n}\n\n//# sourceMappingURL=after.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hZnRlci9hZnRlci5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLHlDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGLGtDQUFrQyxtQkFBTyxDQUFDLDRGQUEyQztBQUNyRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGVBQWU7QUFDM0I7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2FmdGVyL2FmdGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiYWZ0ZXJcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGFmdGVyO1xuICAgIH1cbn0pO1xuY29uc3QgX3dvcmthc3luY3N0b3JhZ2VleHRlcm5hbCA9IHJlcXVpcmUoXCIuLi9hcHAtcmVuZGVyL3dvcmstYXN5bmMtc3RvcmFnZS5leHRlcm5hbFwiKTtcbmZ1bmN0aW9uIGFmdGVyKHRhc2spIHtcbiAgICBjb25zdCB3b3JrU3RvcmUgPSBfd29ya2FzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICBpZiAoIXdvcmtTdG9yZSkge1xuICAgICAgICAvLyBUT0RPKGFmdGVyKTogdGhlIGxpbmtlZCBkb2NzIHBhZ2UgdGFsa3MgYWJvdXQgKmR5bmFtaWMqIEFQSXMsIHdoaWNoIGFmdGVyIHNvb24gd29uJ3QgYmUgYW55bW9yZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2BhZnRlcmAgd2FzIGNhbGxlZCBvdXRzaWRlIGEgcmVxdWVzdCBzY29wZS4gUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LWR5bmFtaWMtYXBpLXdyb25nLWNvbnRleHQnKTtcbiAgICB9XG4gICAgY29uc3QgeyBhZnRlckNvbnRleHQgfSA9IHdvcmtTdG9yZTtcbiAgICByZXR1cm4gYWZ0ZXJDb250ZXh0LmFmdGVyKHRhc2spO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hZnRlci5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/after/after.js\n"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/server/after/index.js": +/*!******************************************************!*\ + !*** ./node_modules/next/dist/server/after/index.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && 0;\n_export_star(__webpack_require__(/*! ./after */ \"(rsc)/./node_modules/next/dist/server/after/after.js\"), exports);\nfunction _export_star(from, to) {\n Object.keys(from).forEach(function(k) {\n if (k !== \"default\" && !Object.prototype.hasOwnProperty.call(to, k)) {\n Object.defineProperty(to, k, {\n enumerable: true,\n get: function() {\n return from[k];\n }\n });\n }\n });\n return from;\n}\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9hZnRlci9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLEtBQUssQ0FBNEI7QUFDakMsYUFBYSxtQkFBTyxDQUFDLHFFQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL2FmdGVyL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiBfX2V4cG9ydChyZXF1aXJlKFwiLi9hZnRlclwiKSk7XG5fZXhwb3J0X3N0YXIocmVxdWlyZShcIi4vYWZ0ZXJcIiksIGV4cG9ydHMpO1xuZnVuY3Rpb24gX2V4cG9ydF9zdGFyKGZyb20sIHRvKSB7XG4gICAgT2JqZWN0LmtleXMoZnJvbSkuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgICAgIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRvLCBrKSkge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRvLCBrLCB7XG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbVtrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmcm9tO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/after/index.js\n"); + +/***/ }), + /***/ "(rsc)/./node_modules/next/dist/server/app-render/collect-segment-data.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/server/app-render/collect-segment-data.js ***! @@ -2383,6 +2426,17 @@ eval("/* eslint-disable no-redeclare */ \nObject.defineProperty(exports, \"__esM /***/ }), +/***/ "(rsc)/./node_modules/next/dist/server/request/connection.js": +/*!*************************************************************!*\ + !*** ./node_modules/next/dist/server/request/connection.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"connection\", ({\n enumerable: true,\n get: function() {\n return connection;\n }\n}));\nconst _workasyncstorageexternal = __webpack_require__(/*! ../app-render/work-async-storage.external */ \"../app-render/work-async-storage.external\");\nconst _workunitasyncstorageexternal = __webpack_require__(/*! ../app-render/work-unit-async-storage.external */ \"./work-unit-async-storage.external\");\nconst _dynamicrendering = __webpack_require__(/*! ../app-render/dynamic-rendering */ \"(rsc)/./node_modules/next/dist/server/app-render/dynamic-rendering.js\");\nconst _staticgenerationbailout = __webpack_require__(/*! ../../client/components/static-generation-bailout */ \"(rsc)/./node_modules/next/dist/client/components/static-generation-bailout.js\");\nconst _dynamicrenderingutils = __webpack_require__(/*! ../dynamic-rendering-utils */ \"(rsc)/./node_modules/next/dist/server/dynamic-rendering-utils.js\");\nconst _utils = __webpack_require__(/*! ./utils */ \"(rsc)/./node_modules/next/dist/server/request/utils.js\");\nfunction connection() {\n const workStore = _workasyncstorageexternal.workAsyncStorage.getStore();\n const workUnitStore = _workunitasyncstorageexternal.workUnitAsyncStorage.getStore();\n if (workStore) {\n if (workUnitStore && workUnitStore.phase === 'after' && !(0, _utils.isRequestAPICallableInsideAfter)()) {\n throw new Error(`Route ${workStore.route} used \"connection\" inside \"after(...)\". The \\`connection()\\` function is used to indicate the subsequent code must only run when there is an actual Request, but \"after(...)\" executes after the request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`);\n }\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // headers object without tracking\n return Promise.resolve(undefined);\n }\n if (workUnitStore) {\n if (workUnitStore.type === 'cache') {\n throw new Error(`Route ${workStore.route} used \"connection\" inside \"use cache\". The \\`connection()\\` function is used to indicate the subsequent code must only run when there is an actual Request, but caches must be able to be produced before a Request so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`);\n } else if (workUnitStore.type === 'unstable-cache') {\n throw new Error(`Route ${workStore.route} used \"connection\" inside a function cached with \"unstable_cache(...)\". The \\`connection()\\` function is used to indicate the subsequent code must only run when there is an actual Request, but caches must be able to be produced before a Request so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`);\n }\n }\n if (workStore.dynamicShouldError) {\n throw new _staticgenerationbailout.StaticGenBailoutError(`Route ${workStore.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`connection\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);\n }\n if (workUnitStore) {\n if (workUnitStore.type === 'prerender') {\n // dynamicIO Prerender\n // We return a promise that never resolves to allow the prender to stall at this point\n return (0, _dynamicrenderingutils.makeHangingPromise)(workUnitStore.renderSignal, '`connection()`');\n } else if (workUnitStore.type === 'prerender-ppr') {\n // PPR Prerender (no dynamicIO)\n // We use React's postpone API to interrupt rendering here to create a dynamic hole\n (0, _dynamicrendering.postponeWithTracking)(workStore.route, 'connection', workUnitStore.dynamicTracking);\n } else if (workUnitStore.type === 'prerender-legacy') {\n // Legacy Prerender\n // We throw an error here to interrupt prerendering to mark the route as dynamic\n (0, _dynamicrendering.throwToInterruptStaticGeneration)('connection', workStore, workUnitStore);\n }\n }\n // We fall through to the dynamic context below but we still track dynamic access\n // because in dev we can still error for things like using headers inside a cache context\n (0, _dynamicrendering.trackDynamicDataInDynamicRender)(workStore, workUnitStore);\n }\n return Promise.resolve(undefined);\n}\n\n//# sourceMappingURL=connection.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L2Nvbm5lY3Rpb24uanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRiw4Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRixrQ0FBa0MsbUJBQU8sQ0FBQyw0RkFBMkM7QUFDckYsc0NBQXNDLG1CQUFPLENBQUMsMEZBQWdEO0FBQzlGLDBCQUEwQixtQkFBTyxDQUFDLDhHQUFpQztBQUNuRSxpQ0FBaUMsbUJBQU8sQ0FBQyx3SUFBbUQ7QUFDNUYsK0JBQStCLG1CQUFPLENBQUMsb0dBQTRCO0FBQ25FLGVBQWUsbUJBQU8sQ0FBQyx1RUFBUztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLGlCQUFpQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLGlCQUFpQjtBQUMxRCxjQUFjO0FBQ2QseUNBQXlDLGlCQUFpQjtBQUMxRDtBQUNBO0FBQ0E7QUFDQSw4RUFBOEUsaUJBQWlCO0FBQy9GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3JlcXVlc3QvY29ubmVjdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNvbm5lY3Rpb25cIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb247XG4gICAgfVxufSk7XG5jb25zdCBfd29ya2FzeW5jc3RvcmFnZWV4dGVybmFsID0gcmVxdWlyZShcIi4uL2FwcC1yZW5kZXIvd29yay1hc3luYy1zdG9yYWdlLmV4dGVybmFsXCIpO1xuY29uc3QgX3dvcmt1bml0YXN5bmNzdG9yYWdlZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vYXBwLXJlbmRlci93b3JrLXVuaXQtYXN5bmMtc3RvcmFnZS5leHRlcm5hbFwiKTtcbmNvbnN0IF9keW5hbWljcmVuZGVyaW5nID0gcmVxdWlyZShcIi4uL2FwcC1yZW5kZXIvZHluYW1pYy1yZW5kZXJpbmdcIik7XG5jb25zdCBfc3RhdGljZ2VuZXJhdGlvbmJhaWxvdXQgPSByZXF1aXJlKFwiLi4vLi4vY2xpZW50L2NvbXBvbmVudHMvc3RhdGljLWdlbmVyYXRpb24tYmFpbG91dFwiKTtcbmNvbnN0IF9keW5hbWljcmVuZGVyaW5ndXRpbHMgPSByZXF1aXJlKFwiLi4vZHluYW1pYy1yZW5kZXJpbmctdXRpbHNcIik7XG5jb25zdCBfdXRpbHMgPSByZXF1aXJlKFwiLi91dGlsc1wiKTtcbmZ1bmN0aW9uIGNvbm5lY3Rpb24oKSB7XG4gICAgY29uc3Qgd29ya1N0b3JlID0gX3dvcmthc3luY3N0b3JhZ2VleHRlcm5hbC53b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgY29uc3Qgd29ya1VuaXRTdG9yZSA9IF93b3JrdW5pdGFzeW5jc3RvcmFnZWV4dGVybmFsLndvcmtVbml0QXN5bmNTdG9yYWdlLmdldFN0b3JlKCk7XG4gICAgaWYgKHdvcmtTdG9yZSkge1xuICAgICAgICBpZiAod29ya1VuaXRTdG9yZSAmJiB3b3JrVW5pdFN0b3JlLnBoYXNlID09PSAnYWZ0ZXInICYmICEoMCwgX3V0aWxzLmlzUmVxdWVzdEFQSUNhbGxhYmxlSW5zaWRlQWZ0ZXIpKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUm91dGUgJHt3b3JrU3RvcmUucm91dGV9IHVzZWQgXCJjb25uZWN0aW9uXCIgaW5zaWRlIFwiYWZ0ZXIoLi4uKVwiLiBUaGUgXFxgY29ubmVjdGlvbigpXFxgIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHN1YnNlcXVlbnQgY29kZSBtdXN0IG9ubHkgcnVuIHdoZW4gdGhlcmUgaXMgYW4gYWN0dWFsIFJlcXVlc3QsIGJ1dCBcImFmdGVyKC4uLilcIiBleGVjdXRlcyBhZnRlciB0aGUgcmVxdWVzdCwgc28gdGhpcyBmdW5jdGlvbiBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHNjb3BlLiBTZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2NhbmFyeS9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvYWZ0ZXJgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod29ya1N0b3JlLmZvcmNlU3RhdGljKSB7XG4gICAgICAgICAgICAvLyBXaGVuIHVzaW5nIGZvcmNlU3RhdGljIHdlIG92ZXJyaWRlIGFsbCBvdGhlciBsb2dpYyBhbmQgYWx3YXlzIGp1c3QgcmV0dXJuIGFuIGVtcHR5XG4gICAgICAgICAgICAvLyBoZWFkZXJzIG9iamVjdCB3aXRob3V0IHRyYWNraW5nXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgICAgIGlmICh3b3JrVW5pdFN0b3JlLnR5cGUgPT09ICdjYWNoZScpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvdXRlICR7d29ya1N0b3JlLnJvdXRlfSB1c2VkIFwiY29ubmVjdGlvblwiIGluc2lkZSBcInVzZSBjYWNoZVwiLiBUaGUgXFxgY29ubmVjdGlvbigpXFxgIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHN1YnNlcXVlbnQgY29kZSBtdXN0IG9ubHkgcnVuIHdoZW4gdGhlcmUgaXMgYW4gYWN0dWFsIFJlcXVlc3QsIGJ1dCBjYWNoZXMgbXVzdCBiZSBhYmxlIHRvIGJlIHByb2R1Y2VkIGJlZm9yZSBhIFJlcXVlc3Qgc28gdGhpcyBmdW5jdGlvbiBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHNjb3BlLiBTZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtcmVxdWVzdC1pbi11c2UtY2FjaGVgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAod29ya1VuaXRTdG9yZS50eXBlID09PSAndW5zdGFibGUtY2FjaGUnKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSb3V0ZSAke3dvcmtTdG9yZS5yb3V0ZX0gdXNlZCBcImNvbm5lY3Rpb25cIiBpbnNpZGUgYSBmdW5jdGlvbiBjYWNoZWQgd2l0aCBcInVuc3RhYmxlX2NhY2hlKC4uLilcIi4gVGhlIFxcYGNvbm5lY3Rpb24oKVxcYCBmdW5jdGlvbiBpcyB1c2VkIHRvIGluZGljYXRlIHRoZSBzdWJzZXF1ZW50IGNvZGUgbXVzdCBvbmx5IHJ1biB3aGVuIHRoZXJlIGlzIGFuIGFjdHVhbCBSZXF1ZXN0LCBidXQgY2FjaGVzIG11c3QgYmUgYWJsZSB0byBiZSBwcm9kdWNlZCBiZWZvcmUgYSBSZXF1ZXN0IHNvIHRoaXMgZnVuY3Rpb24gaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBzY29wZS4gU2VlIG1vcmUgaW5mbyBoZXJlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdW5zdGFibGVfY2FjaGVgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAod29ya1N0b3JlLmR5bmFtaWNTaG91bGRFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IF9zdGF0aWNnZW5lcmF0aW9uYmFpbG91dC5TdGF0aWNHZW5CYWlsb3V0RXJyb3IoYFJvdXRlICR7d29ya1N0b3JlLnJvdXRlfSB3aXRoIFxcYGR5bmFtaWMgPSBcImVycm9yXCJcXGAgY291bGRuJ3QgYmUgcmVuZGVyZWQgc3RhdGljYWxseSBiZWNhdXNlIGl0IHVzZWQgXFxgY29ubmVjdGlvblxcYC4gU2VlIG1vcmUgaW5mbyBoZXJlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc3RhdGljLWFuZC1keW5hbWljI2R5bmFtaWMtcmVuZGVyaW5nYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdvcmtVbml0U3RvcmUpIHtcbiAgICAgICAgICAgIGlmICh3b3JrVW5pdFN0b3JlLnR5cGUgPT09ICdwcmVyZW5kZXInKSB7XG4gICAgICAgICAgICAgICAgLy8gZHluYW1pY0lPIFByZXJlbmRlclxuICAgICAgICAgICAgICAgIC8vIFdlIHJldHVybiBhIHByb21pc2UgdGhhdCBuZXZlciByZXNvbHZlcyB0byBhbGxvdyB0aGUgcHJlbmRlciB0byBzdGFsbCBhdCB0aGlzIHBvaW50XG4gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBfZHluYW1pY3JlbmRlcmluZ3V0aWxzLm1ha2VIYW5naW5nUHJvbWlzZSkod29ya1VuaXRTdG9yZS5yZW5kZXJTaWduYWwsICdgY29ubmVjdGlvbigpYCcpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh3b3JrVW5pdFN0b3JlLnR5cGUgPT09ICdwcmVyZW5kZXItcHByJykge1xuICAgICAgICAgICAgICAgIC8vIFBQUiBQcmVyZW5kZXIgKG5vIGR5bmFtaWNJTylcbiAgICAgICAgICAgICAgICAvLyBXZSB1c2UgUmVhY3QncyBwb3N0cG9uZSBBUEkgdG8gaW50ZXJydXB0IHJlbmRlcmluZyBoZXJlIHRvIGNyZWF0ZSBhIGR5bmFtaWMgaG9sZVxuICAgICAgICAgICAgICAgICgwLCBfZHluYW1pY3JlbmRlcmluZy5wb3N0cG9uZVdpdGhUcmFja2luZykod29ya1N0b3JlLnJvdXRlLCAnY29ubmVjdGlvbicsIHdvcmtVbml0U3RvcmUuZHluYW1pY1RyYWNraW5nKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAod29ya1VuaXRTdG9yZS50eXBlID09PSAncHJlcmVuZGVyLWxlZ2FjeScpIHtcbiAgICAgICAgICAgICAgICAvLyBMZWdhY3kgUHJlcmVuZGVyXG4gICAgICAgICAgICAgICAgLy8gV2UgdGhyb3cgYW4gZXJyb3IgaGVyZSB0byBpbnRlcnJ1cHQgcHJlcmVuZGVyaW5nIHRvIG1hcmsgdGhlIHJvdXRlIGFzIGR5bmFtaWNcbiAgICAgICAgICAgICAgICAoMCwgX2R5bmFtaWNyZW5kZXJpbmcudGhyb3dUb0ludGVycnVwdFN0YXRpY0dlbmVyYXRpb24pKCdjb25uZWN0aW9uJywgd29ya1N0b3JlLCB3b3JrVW5pdFN0b3JlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBXZSBmYWxsIHRocm91Z2ggdG8gdGhlIGR5bmFtaWMgY29udGV4dCBiZWxvdyBidXQgd2Ugc3RpbGwgdHJhY2sgZHluYW1pYyBhY2Nlc3NcbiAgICAgICAgLy8gYmVjYXVzZSBpbiBkZXYgd2UgY2FuIHN0aWxsIGVycm9yIGZvciB0aGluZ3MgbGlrZSB1c2luZyBoZWFkZXJzIGluc2lkZSBhIGNhY2hlIGNvbnRleHRcbiAgICAgICAgKDAsIF9keW5hbWljcmVuZGVyaW5nLnRyYWNrRHluYW1pY0RhdGFJbkR5bmFtaWNSZW5kZXIpKHdvcmtTdG9yZSwgd29ya1VuaXRTdG9yZSk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29ubmVjdGlvbi5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/request/connection.js\n"); + +/***/ }), + /***/ "(rsc)/./node_modules/next/dist/server/request/params.js": /*!*********************************************************!*\ !*** ./node_modules/next/dist/server/request/params.js ***! @@ -2537,6 +2591,17 @@ eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr /***/ }), +/***/ "(rsc)/./node_modules/next/dist/server/route-modules/app-route/module.compiled.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js ***! + \**********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\nif (false) {} else {\n if (false) {} else {\n if (true) {\n module.exports = __webpack_require__(/*! next/dist/compiled/next-server/app-route.runtime.dev.js */ \"next/dist/compiled/next-server/app-route.runtime.dev.js\");\n } else {}\n }\n}\n\n//# sourceMappingURL=module.compiled.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1yb3V0ZS9tb2R1bGUuY29tcGlsZWQuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYixJQUFJLEtBQW1DLEVBQUUsRUFFeEMsQ0FBQztBQUNGLFFBQVEsS0FBcUMsRUFBRSxFQVExQyxDQUFDO0FBQ04sWUFBWSxJQUFzQztBQUNsRCxZQUFZLDhKQUFtRjtBQUMvRixVQUFVLEtBQUssRUFJTjtBQUNUO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1yb3V0ZS9tb2R1bGUuY29tcGlsZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5pZiAocHJvY2Vzcy5lbnYuTkVYVF9SVU5USU1FID09PSAnZWRnZScpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ25leHQvZGlzdC9zZXJ2ZXIvcm91dGUtbW9kdWxlcy9hcHAtcm91dGUvbW9kdWxlLmpzJyk7XG59IGVsc2Uge1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfRVhQRVJJTUVOVEFMX1JFQUNUKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1zZXJ2ZXIvYXBwLXJvdXRlLWV4cGVyaW1lbnRhbC5ydW50aW1lLmRldi5qcycpO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52LlRVUkJPUEFDSykge1xuICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1zZXJ2ZXIvYXBwLXJvdXRlLXR1cmJvLWV4cGVyaW1lbnRhbC5ydW50aW1lLnByb2QuanMnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL25leHQtc2VydmVyL2FwcC1yb3V0ZS1leHBlcmltZW50YWwucnVudGltZS5wcm9kLmpzJyk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL25leHQtc2VydmVyL2FwcC1yb3V0ZS5ydW50aW1lLmRldi5qcycpO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52LlRVUkJPUEFDSykge1xuICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1zZXJ2ZXIvYXBwLXJvdXRlLXR1cmJvLnJ1bnRpbWUucHJvZC5qcycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCduZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1zZXJ2ZXIvYXBwLXJvdXRlLnJ1bnRpbWUucHJvZC5qcycpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1tb2R1bGUuY29tcGlsZWQuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/route-modules/app-route/module.compiled.js\n"); + +/***/ }), + /***/ "(rsc)/./node_modules/next/dist/server/stream-utils/encodedTags.js": /*!*******************************************************************!*\ !*** ./node_modules/next/dist/server/stream-utils/encodedTags.js ***! @@ -2581,6 +2646,17 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ }), +/***/ "(rsc)/./node_modules/next/dist/server/web/exports/index.js": +/*!************************************************************!*\ + !*** ./node_modules/next/dist/server/web/exports/index.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("// Alias index file of next/server for edge runtime for tree-shaking purpose\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 ImageResponse: function() {\n return _imageresponse.ImageResponse;\n },\n NextRequest: function() {\n return _request.NextRequest;\n },\n NextResponse: function() {\n return _response.NextResponse;\n },\n URLPattern: function() {\n return _urlpattern.URLPattern;\n },\n after: function() {\n return _after.after;\n },\n connection: function() {\n return _connection.connection;\n },\n userAgent: function() {\n return _useragent.userAgent;\n },\n userAgentFromString: function() {\n return _useragent.userAgentFromString;\n }\n});\nconst _imageresponse = __webpack_require__(/*! ../spec-extension/image-response */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/image-response.js\");\nconst _request = __webpack_require__(/*! ../spec-extension/request */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/request.js\");\nconst _response = __webpack_require__(/*! ../spec-extension/response */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/response.js\");\nconst _useragent = __webpack_require__(/*! ../spec-extension/user-agent */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/user-agent.js\");\nconst _urlpattern = __webpack_require__(/*! ../spec-extension/url-pattern */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/url-pattern.js\");\nconst _after = __webpack_require__(/*! ../../after */ \"(rsc)/./node_modules/next/dist/server/after/index.js\");\nconst _connection = __webpack_require__(/*! ../../request/connection */ \"(rsc)/./node_modules/next/dist/server/request/connection.js\");\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvZXhwb3J0cy9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsTUFBTSxDQVNMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELHVCQUF1QixtQkFBTyxDQUFDLG9IQUFrQztBQUNqRSxpQkFBaUIsbUJBQU8sQ0FBQyxzR0FBMkI7QUFDcEQsa0JBQWtCLG1CQUFPLENBQUMsd0dBQTRCO0FBQ3RELG1CQUFtQixtQkFBTyxDQUFDLDRHQUE4QjtBQUN6RCxvQkFBb0IsbUJBQU8sQ0FBQyw4R0FBK0I7QUFDM0QsZUFBZSxtQkFBTyxDQUFDLHlFQUFhO0FBQ3BDLG9CQUFvQixtQkFBTyxDQUFDLDZGQUEwQjs7QUFFdEQiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvZXhwb3J0cy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbGlhcyBpbmRleCBmaWxlIG9mIG5leHQvc2VydmVyIGZvciBlZGdlIHJ1bnRpbWUgZm9yIHRyZWUtc2hha2luZyBwdXJwb3NlXG5cInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIEltYWdlUmVzcG9uc2U6IG51bGwsXG4gICAgTmV4dFJlcXVlc3Q6IG51bGwsXG4gICAgTmV4dFJlc3BvbnNlOiBudWxsLFxuICAgIFVSTFBhdHRlcm46IG51bGwsXG4gICAgYWZ0ZXI6IG51bGwsXG4gICAgY29ubmVjdGlvbjogbnVsbCxcbiAgICB1c2VyQWdlbnQ6IG51bGwsXG4gICAgdXNlckFnZW50RnJvbVN0cmluZzogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBJbWFnZVJlc3BvbnNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9pbWFnZXJlc3BvbnNlLkltYWdlUmVzcG9uc2U7XG4gICAgfSxcbiAgICBOZXh0UmVxdWVzdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfcmVxdWVzdC5OZXh0UmVxdWVzdDtcbiAgICB9LFxuICAgIE5leHRSZXNwb25zZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfcmVzcG9uc2UuTmV4dFJlc3BvbnNlO1xuICAgIH0sXG4gICAgVVJMUGF0dGVybjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfdXJscGF0dGVybi5VUkxQYXR0ZXJuO1xuICAgIH0sXG4gICAgYWZ0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2FmdGVyLmFmdGVyO1xuICAgIH0sXG4gICAgY29ubmVjdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfY29ubmVjdGlvbi5jb25uZWN0aW9uO1xuICAgIH0sXG4gICAgdXNlckFnZW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF91c2VyYWdlbnQudXNlckFnZW50O1xuICAgIH0sXG4gICAgdXNlckFnZW50RnJvbVN0cmluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfdXNlcmFnZW50LnVzZXJBZ2VudEZyb21TdHJpbmc7XG4gICAgfVxufSk7XG5jb25zdCBfaW1hZ2VyZXNwb25zZSA9IHJlcXVpcmUoXCIuLi9zcGVjLWV4dGVuc2lvbi9pbWFnZS1yZXNwb25zZVwiKTtcbmNvbnN0IF9yZXF1ZXN0ID0gcmVxdWlyZShcIi4uL3NwZWMtZXh0ZW5zaW9uL3JlcXVlc3RcIik7XG5jb25zdCBfcmVzcG9uc2UgPSByZXF1aXJlKFwiLi4vc3BlYy1leHRlbnNpb24vcmVzcG9uc2VcIik7XG5jb25zdCBfdXNlcmFnZW50ID0gcmVxdWlyZShcIi4uL3NwZWMtZXh0ZW5zaW9uL3VzZXItYWdlbnRcIik7XG5jb25zdCBfdXJscGF0dGVybiA9IHJlcXVpcmUoXCIuLi9zcGVjLWV4dGVuc2lvbi91cmwtcGF0dGVyblwiKTtcbmNvbnN0IF9hZnRlciA9IHJlcXVpcmUoXCIuLi8uLi9hZnRlclwiKTtcbmNvbnN0IF9jb25uZWN0aW9uID0gcmVxdWlyZShcIi4uLy4uL3JlcXVlc3QvY29ubmVjdGlvblwiKTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/exports/index.js\n"); + +/***/ }), + /***/ "(rsc)/./node_modules/next/dist/server/web/next-url.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/server/web/next-url.js ***! @@ -2625,6 +2701,17 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ }), +/***/ "(rsc)/./node_modules/next/dist/server/web/spec-extension/image-response.js": +/*!****************************************************************************!*\ + !*** ./node_modules/next/dist/server/web/spec-extension/image-response.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("/**\n * @deprecated ImageResponse moved from \"next/server\" to \"next/og\" since Next.js 14, please import from \"next/og\" instead.\n * Migration with codemods: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#next-og-import\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"ImageResponse\", ({\n enumerable: true,\n get: function() {\n return ImageResponse;\n }\n}));\nfunction ImageResponse() {\n throw new Error('ImageResponse moved from \"next/server\" to \"next/og\" since Next.js 14, please import from \"next/og\" instead');\n}\n\n//# sourceMappingURL=image-response.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vaW1hZ2UtcmVzcG9uc2UuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsSUFBaUI7QUFDakIsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YsaURBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Y7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvd2ViL3NwZWMtZXh0ZW5zaW9uL2ltYWdlLXJlc3BvbnNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlcHJlY2F0ZWQgSW1hZ2VSZXNwb25zZSBtb3ZlZCBmcm9tIFwibmV4dC9zZXJ2ZXJcIiB0byBcIm5leHQvb2dcIiBzaW5jZSBOZXh0LmpzIDE0LCBwbGVhc2UgaW1wb3J0IGZyb20gXCJuZXh0L29nXCIgaW5zdGVhZC5cbiAqIE1pZ3JhdGlvbiB3aXRoIGNvZGVtb2RzOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi91cGdyYWRpbmcvY29kZW1vZHMjbmV4dC1vZy1pbXBvcnRcbiAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkltYWdlUmVzcG9uc2VcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEltYWdlUmVzcG9uc2U7XG4gICAgfVxufSk7XG5mdW5jdGlvbiBJbWFnZVJlc3BvbnNlKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW1hZ2VSZXNwb25zZSBtb3ZlZCBmcm9tIFwibmV4dC9zZXJ2ZXJcIiB0byBcIm5leHQvb2dcIiBzaW5jZSBOZXh0LmpzIDE0LCBwbGVhc2UgaW1wb3J0IGZyb20gXCJuZXh0L29nXCIgaW5zdGVhZCcpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1yZXNwb25zZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/spec-extension/image-response.js\n"); + +/***/ }), + /***/ "(rsc)/./node_modules/next/dist/server/web/spec-extension/request.js": /*!*********************************************************************!*\ !*** ./node_modules/next/dist/server/web/spec-extension/request.js ***! @@ -2636,6 +2723,39 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ }), +/***/ "(rsc)/./node_modules/next/dist/server/web/spec-extension/response.js": +/*!**********************************************************************!*\ + !*** ./node_modules/next/dist/server/web/spec-extension/response.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"NextResponse\", ({\n enumerable: true,\n get: function() {\n return NextResponse;\n }\n}));\nconst _cookies = __webpack_require__(/*! ../../web/spec-extension/cookies */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/cookies.js\");\nconst _nexturl = __webpack_require__(/*! ../next-url */ \"(rsc)/./node_modules/next/dist/server/web/next-url.js\");\nconst _utils = __webpack_require__(/*! ../utils */ \"(rsc)/./node_modules/next/dist/server/web/utils.js\");\nconst _reflect = __webpack_require__(/*! ./adapters/reflect */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/adapters/reflect.js\");\nconst _cookies1 = __webpack_require__(/*! ./cookies */ \"(rsc)/./node_modules/next/dist/server/web/spec-extension/cookies.js\");\nconst INTERNALS = Symbol('internal response');\nconst REDIRECTS = new Set([\n 301,\n 302,\n 303,\n 307,\n 308\n]);\nfunction handleMiddlewareField(init, headers) {\n var _init_request;\n if (init == null ? void 0 : (_init_request = init.request) == null ? void 0 : _init_request.headers) {\n if (!(init.request.headers instanceof Headers)) {\n throw new Error('request.headers must be an instance of Headers');\n }\n const keys = [];\n for (const [key, value] of init.request.headers){\n headers.set('x-middleware-request-' + key, value);\n keys.push(key);\n }\n headers.set('x-middleware-override-headers', keys.join(','));\n }\n}\nclass NextResponse extends Response {\n constructor(body, init = {}){\n super(body, init);\n const headers = this.headers;\n const cookies = new _cookies1.ResponseCookies(headers);\n const cookiesProxy = new Proxy(cookies, {\n get (target, prop, receiver) {\n switch(prop){\n case 'delete':\n case 'set':\n {\n return (...args)=>{\n const result = Reflect.apply(target[prop], target, args);\n const newHeaders = new Headers(headers);\n if (result instanceof _cookies1.ResponseCookies) {\n headers.set('x-middleware-set-cookie', result.getAll().map((cookie)=>(0, _cookies.stringifyCookie)(cookie)).join(','));\n }\n handleMiddlewareField(init, newHeaders);\n return result;\n };\n }\n default:\n return _reflect.ReflectAdapter.get(target, prop, receiver);\n }\n }\n });\n this[INTERNALS] = {\n cookies: cookiesProxy,\n url: init.url ? new _nexturl.NextURL(init.url, {\n headers: (0, _utils.toNodeOutgoingHttpHeaders)(headers),\n nextConfig: init.nextConfig\n }) : undefined\n };\n }\n [Symbol.for('edge-runtime.inspect.custom')]() {\n return {\n cookies: this.cookies,\n url: this.url,\n // rest of props come from Response\n body: this.body,\n bodyUsed: this.bodyUsed,\n headers: Object.fromEntries(this.headers),\n ok: this.ok,\n redirected: this.redirected,\n status: this.status,\n statusText: this.statusText,\n type: this.type\n };\n }\n get cookies() {\n return this[INTERNALS].cookies;\n }\n static json(body, init) {\n const response = Response.json(body, init);\n return new NextResponse(response.body, response);\n }\n static redirect(url, init) {\n const status = typeof init === 'number' ? init : (init == null ? void 0 : init.status) ?? 307;\n if (!REDIRECTS.has(status)) {\n throw new RangeError('Failed to execute \"redirect\" on \"response\": Invalid status code');\n }\n const initObj = typeof init === 'object' ? init : {};\n const headers = new Headers(initObj == null ? void 0 : initObj.headers);\n headers.set('Location', (0, _utils.validateURL)(url));\n return new NextResponse(null, {\n ...initObj,\n headers,\n status\n });\n }\n static rewrite(destination, init) {\n const headers = new Headers(init == null ? void 0 : init.headers);\n headers.set('x-middleware-rewrite', (0, _utils.validateURL)(destination));\n handleMiddlewareField(init, headers);\n return new NextResponse(null, {\n ...init,\n headers\n });\n }\n static next(init) {\n const headers = new Headers(init == null ? void 0 : init.headers);\n headers.set('x-middleware-next', '1');\n handleMiddlewareField(init, headers);\n return new NextResponse(null, {\n ...init,\n headers\n });\n }\n}\n\n//# sourceMappingURL=response.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vcmVzcG9uc2UuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixnREFBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRixpQkFBaUIsbUJBQU8sQ0FBQyw2R0FBa0M7QUFDM0QsaUJBQWlCLG1CQUFPLENBQUMsMEVBQWE7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLG9FQUFVO0FBQ2pDLGlCQUFpQixtQkFBTyxDQUFDLHdHQUFvQjtBQUM3QyxrQkFBa0IsbUJBQU8sQ0FBQyxzRkFBVztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL09wZW5DbGF3L1dlYi9oZWFydGJlYXQtbW9uaXRvci9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vcmVzcG9uc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJOZXh0UmVzcG9uc2VcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5leHRSZXNwb25zZTtcbiAgICB9XG59KTtcbmNvbnN0IF9jb29raWVzID0gcmVxdWlyZShcIi4uLy4uL3dlYi9zcGVjLWV4dGVuc2lvbi9jb29raWVzXCIpO1xuY29uc3QgX25leHR1cmwgPSByZXF1aXJlKFwiLi4vbmV4dC11cmxcIik7XG5jb25zdCBfdXRpbHMgPSByZXF1aXJlKFwiLi4vdXRpbHNcIik7XG5jb25zdCBfcmVmbGVjdCA9IHJlcXVpcmUoXCIuL2FkYXB0ZXJzL3JlZmxlY3RcIik7XG5jb25zdCBfY29va2llczEgPSByZXF1aXJlKFwiLi9jb29raWVzXCIpO1xuY29uc3QgSU5URVJOQUxTID0gU3ltYm9sKCdpbnRlcm5hbCByZXNwb25zZScpO1xuY29uc3QgUkVESVJFQ1RTID0gbmV3IFNldChbXG4gICAgMzAxLFxuICAgIDMwMixcbiAgICAzMDMsXG4gICAgMzA3LFxuICAgIDMwOFxuXSk7XG5mdW5jdGlvbiBoYW5kbGVNaWRkbGV3YXJlRmllbGQoaW5pdCwgaGVhZGVycykge1xuICAgIHZhciBfaW5pdF9yZXF1ZXN0O1xuICAgIGlmIChpbml0ID09IG51bGwgPyB2b2lkIDAgOiAoX2luaXRfcmVxdWVzdCA9IGluaXQucmVxdWVzdCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9pbml0X3JlcXVlc3QuaGVhZGVycykge1xuICAgICAgICBpZiAoIShpbml0LnJlcXVlc3QuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlcXVlc3QuaGVhZGVycyBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEhlYWRlcnMnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXlzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGluaXQucmVxdWVzdC5oZWFkZXJzKXtcbiAgICAgICAgICAgIGhlYWRlcnMuc2V0KCd4LW1pZGRsZXdhcmUtcmVxdWVzdC0nICsga2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBoZWFkZXJzLnNldCgneC1taWRkbGV3YXJlLW92ZXJyaWRlLWhlYWRlcnMnLCBrZXlzLmpvaW4oJywnKSk7XG4gICAgfVxufVxuY2xhc3MgTmV4dFJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuICAgIGNvbnN0cnVjdG9yKGJvZHksIGluaXQgPSB7fSl7XG4gICAgICAgIHN1cGVyKGJvZHksIGluaXQpO1xuICAgICAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzO1xuICAgICAgICBjb25zdCBjb29raWVzID0gbmV3IF9jb29raWVzMS5SZXNwb25zZUNvb2tpZXMoaGVhZGVycyk7XG4gICAgICAgIGNvbnN0IGNvb2tpZXNQcm94eSA9IG5ldyBQcm94eShjb29raWVzLCB7XG4gICAgICAgICAgICBnZXQgKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2gocHJvcCl7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NldCc6XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICguLi5hcmdzKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBSZWZsZWN0LmFwcGx5KHRhcmdldFtwcm9wXSwgdGFyZ2V0LCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3SGVhZGVycyA9IG5ldyBIZWFkZXJzKGhlYWRlcnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgX2Nvb2tpZXMxLlJlc3BvbnNlQ29va2llcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycy5zZXQoJ3gtbWlkZGxld2FyZS1zZXQtY29va2llJywgcmVzdWx0LmdldEFsbCgpLm1hcCgoY29va2llKT0+KDAsIF9jb29raWVzLnN0cmluZ2lmeUNvb2tpZSkoY29va2llKSkuam9pbignLCcpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVNaWRkbGV3YXJlRmllbGQoaW5pdCwgbmV3SGVhZGVycyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmbGVjdC5SZWZsZWN0QWRhcHRlci5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpc1tJTlRFUk5BTFNdID0ge1xuICAgICAgICAgICAgY29va2llczogY29va2llc1Byb3h5LFxuICAgICAgICAgICAgdXJsOiBpbml0LnVybCA/IG5ldyBfbmV4dHVybC5OZXh0VVJMKGluaXQudXJsLCB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczogKDAsIF91dGlscy50b05vZGVPdXRnb2luZ0h0dHBIZWFkZXJzKShoZWFkZXJzKSxcbiAgICAgICAgICAgICAgICBuZXh0Q29uZmlnOiBpbml0Lm5leHRDb25maWdcbiAgICAgICAgICAgIH0pIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgfVxuICAgIFtTeW1ib2wuZm9yKCdlZGdlLXJ1bnRpbWUuaW5zcGVjdC5jdXN0b20nKV0oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb29raWVzOiB0aGlzLmNvb2tpZXMsXG4gICAgICAgICAgICB1cmw6IHRoaXMudXJsLFxuICAgICAgICAgICAgLy8gcmVzdCBvZiBwcm9wcyBjb21lIGZyb20gUmVzcG9uc2VcbiAgICAgICAgICAgIGJvZHk6IHRoaXMuYm9keSxcbiAgICAgICAgICAgIGJvZHlVc2VkOiB0aGlzLmJvZHlVc2VkLFxuICAgICAgICAgICAgaGVhZGVyczogT2JqZWN0LmZyb21FbnRyaWVzKHRoaXMuaGVhZGVycyksXG4gICAgICAgICAgICBvazogdGhpcy5vayxcbiAgICAgICAgICAgIHJlZGlyZWN0ZWQ6IHRoaXMucmVkaXJlY3RlZCxcbiAgICAgICAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICAgICAgICBzdGF0dXNUZXh0OiB0aGlzLnN0YXR1c1RleHQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0IGNvb2tpZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzW0lOVEVSTkFMU10uY29va2llcztcbiAgICB9XG4gICAgc3RhdGljIGpzb24oYm9keSwgaW5pdCkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IFJlc3BvbnNlLmpzb24oYm9keSwgaW5pdCk7XG4gICAgICAgIHJldHVybiBuZXcgTmV4dFJlc3BvbnNlKHJlc3BvbnNlLmJvZHksIHJlc3BvbnNlKTtcbiAgICB9XG4gICAgc3RhdGljIHJlZGlyZWN0KHVybCwgaW5pdCkge1xuICAgICAgICBjb25zdCBzdGF0dXMgPSB0eXBlb2YgaW5pdCA9PT0gJ251bWJlcicgPyBpbml0IDogKGluaXQgPT0gbnVsbCA/IHZvaWQgMCA6IGluaXQuc3RhdHVzKSA/PyAzMDc7XG4gICAgICAgIGlmICghUkVESVJFQ1RTLmhhcyhzdGF0dXMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignRmFpbGVkIHRvIGV4ZWN1dGUgXCJyZWRpcmVjdFwiIG9uIFwicmVzcG9uc2VcIjogSW52YWxpZCBzdGF0dXMgY29kZScpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluaXRPYmogPSB0eXBlb2YgaW5pdCA9PT0gJ29iamVjdCcgPyBpbml0IDoge307XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbml0T2JqID09IG51bGwgPyB2b2lkIDAgOiBpbml0T2JqLmhlYWRlcnMpO1xuICAgICAgICBoZWFkZXJzLnNldCgnTG9jYXRpb24nLCAoMCwgX3V0aWxzLnZhbGlkYXRlVVJMKSh1cmwpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBOZXh0UmVzcG9uc2UobnVsbCwge1xuICAgICAgICAgICAgLi4uaW5pdE9iaixcbiAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHN0YXRpYyByZXdyaXRlKGRlc3RpbmF0aW9uLCBpbml0KSB7XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbml0ID09IG51bGwgPyB2b2lkIDAgOiBpbml0LmhlYWRlcnMpO1xuICAgICAgICBoZWFkZXJzLnNldCgneC1taWRkbGV3YXJlLXJld3JpdGUnLCAoMCwgX3V0aWxzLnZhbGlkYXRlVVJMKShkZXN0aW5hdGlvbikpO1xuICAgICAgICBoYW5kbGVNaWRkbGV3YXJlRmllbGQoaW5pdCwgaGVhZGVycyk7XG4gICAgICAgIHJldHVybiBuZXcgTmV4dFJlc3BvbnNlKG51bGwsIHtcbiAgICAgICAgICAgIC4uLmluaXQsXG4gICAgICAgICAgICBoZWFkZXJzXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdGF0aWMgbmV4dChpbml0KSB7XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbml0ID09IG51bGwgPyB2b2lkIDAgOiBpbml0LmhlYWRlcnMpO1xuICAgICAgICBoZWFkZXJzLnNldCgneC1taWRkbGV3YXJlLW5leHQnLCAnMScpO1xuICAgICAgICBoYW5kbGVNaWRkbGV3YXJlRmllbGQoaW5pdCwgaGVhZGVycyk7XG4gICAgICAgIHJldHVybiBuZXcgTmV4dFJlc3BvbnNlKG51bGwsIHtcbiAgICAgICAgICAgIC4uLmluaXQsXG4gICAgICAgICAgICBoZWFkZXJzXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVzcG9uc2UuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/spec-extension/response.js\n"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/server/web/spec-extension/url-pattern.js": +/*!*************************************************************************!*\ + !*** ./node_modules/next/dist/server/web/spec-extension/url-pattern.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"URLPattern\", ({\n enumerable: true,\n get: function() {\n return GlobalURLPattern;\n }\n}));\nconst GlobalURLPattern = // @ts-expect-error: URLPattern is not available in Node.js\ntypeof URLPattern === 'undefined' ? undefined : URLPattern;\n\n//# sourceMappingURL=url-pattern.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vdXJsLXBhdHRlcm4uanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRiw4Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjtBQUNBOztBQUVBIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvd2ViL3NwZWMtZXh0ZW5zaW9uL3VybC1wYXR0ZXJuLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVVJMUGF0dGVyblwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gR2xvYmFsVVJMUGF0dGVybjtcbiAgICB9XG59KTtcbmNvbnN0IEdsb2JhbFVSTFBhdHRlcm4gPSAvLyBAdHMtZXhwZWN0LWVycm9yOiBVUkxQYXR0ZXJuIGlzIG5vdCBhdmFpbGFibGUgaW4gTm9kZS5qc1xudHlwZW9mIFVSTFBhdHRlcm4gPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVVJMUGF0dGVybjtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXJsLXBhdHRlcm4uanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/spec-extension/url-pattern.js\n"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/server/web/spec-extension/user-agent.js": +/*!************************************************************************!*\ + !*** ./node_modules/next/dist/server/web/spec-extension/user-agent.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"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 isBot: function() {\n return isBot;\n },\n userAgent: function() {\n return userAgent;\n },\n userAgentFromString: function() {\n return userAgentFromString;\n }\n});\nconst _uaparserjs = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! next/dist/compiled/ua-parser-js */ \"(rsc)/./node_modules/next/dist/compiled/ua-parser-js/ua-parser.js\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction isBot(input) {\n return /Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Google-InspectionTool|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(input);\n}\nfunction userAgentFromString(input) {\n return {\n ...(0, _uaparserjs.default)(input),\n isBot: input === undefined ? false : isBot(input)\n };\n}\nfunction userAgent({ headers }) {\n return userAgentFromString(headers.get('user-agent') || undefined);\n}\n\n//# sourceMappingURL=user-agent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci93ZWIvc3BlYy1leHRlbnNpb24vdXNlci1hZ2VudC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLE1BQU0sQ0FJTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELDJEQUEyRCxtQkFBTyxDQUFDLDBHQUFpQztBQUNwRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2VydmVyL3dlYi9zcGVjLWV4dGVuc2lvbi91c2VyLWFnZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgaXNCb3Q6IG51bGwsXG4gICAgdXNlckFnZW50OiBudWxsLFxuICAgIHVzZXJBZ2VudEZyb21TdHJpbmc6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgaXNCb3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNCb3Q7XG4gICAgfSxcbiAgICB1c2VyQWdlbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdXNlckFnZW50O1xuICAgIH0sXG4gICAgdXNlckFnZW50RnJvbVN0cmluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB1c2VyQWdlbnRGcm9tU3RyaW5nO1xuICAgIH1cbn0pO1xuY29uc3QgX3VhcGFyc2VyanMgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChyZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3VhLXBhcnNlci1qc1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGlzQm90KGlucHV0KSB7XG4gICAgcmV0dXJuIC9Hb29nbGVib3R8TWVkaWFwYXJ0bmVycy1Hb29nbGV8QWRzQm90LUdvb2dsZXxnb29nbGV3ZWJsaWdodHxTdG9yZWJvdC1Hb29nbGV8R29vZ2xlLVBhZ2VSZW5kZXJlcnxHb29nbGUtSW5zcGVjdGlvblRvb2x8QmluZ2JvdHxCaW5nUHJldmlld3xTbHVycHxEdWNrRHVja0JvdHxiYWlkdXNwaWRlcnx5YW5kZXh8c29nb3V8TGlua2VkSW5Cb3R8Yml0bHlib3R8dHVtYmxyfHZrU2hhcmV8cXVvcmEgbGluayBwcmV2aWV3fGZhY2Vib29rZXh0ZXJuYWxoaXR8ZmFjZWJvb2tjYXRhbG9nfFR3aXR0ZXJib3R8YXBwbGVib3R8cmVkZGl0Ym90fFNsYWNrYm90fERpc2NvcmRib3R8V2hhdHNBcHB8U2t5cGVVcmlQcmV2aWV3fGlhX2FyY2hpdmVyL2kudGVzdChpbnB1dCk7XG59XG5mdW5jdGlvbiB1c2VyQWdlbnRGcm9tU3RyaW5nKGlucHV0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uKDAsIF91YXBhcnNlcmpzLmRlZmF1bHQpKGlucHV0KSxcbiAgICAgICAgaXNCb3Q6IGlucHV0ID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IGlzQm90KGlucHV0KVxuICAgIH07XG59XG5mdW5jdGlvbiB1c2VyQWdlbnQoeyBoZWFkZXJzIH0pIHtcbiAgICByZXR1cm4gdXNlckFnZW50RnJvbVN0cmluZyhoZWFkZXJzLmdldCgndXNlci1hZ2VudCcpIHx8IHVuZGVmaW5lZCk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZXItYWdlbnQuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/web/spec-extension/user-agent.js\n"); + +/***/ }), + /***/ "(rsc)/./node_modules/next/dist/server/web/utils.js": /*!****************************************************!*\ !*** ./node_modules/next/dist/server/web/utils.js ***! diff --git a/.next/server/webpack-runtime.js b/.next/server/webpack-runtime.js index 404fcef2..041dedd8 100644 --- a/.next/server/webpack-runtime.js +++ b/.next/server/webpack-runtime.js @@ -47,6 +47,11 @@ /******/ __webpack_require__.m = __webpack_modules__; /******/ /************************************************************************/ +/******/ /* webpack/runtime/amd options */ +/******/ (() => { +/******/ __webpack_require__.amdO = {}; +/******/ })(); +/******/ /******/ /* webpack/runtime/compat get default export */ /******/ (() => { /******/ // getDefaultExport function for compatibility with non-harmony modules @@ -125,7 +130,7 @@ /******/ /******/ /* webpack/runtime/getFullHash */ /******/ (() => { -/******/ __webpack_require__.h = () => ("c6e563d4ee2c6c8a") +/******/ __webpack_require__.h = () => ("b99e5d3b3445fbfa") /******/ })(); /******/ /******/ /* 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 00000000..5768c908 --- /dev/null +++ b/.next/static/chunks/app/_not-found/page.js @@ -0,0 +1,50 @@ +/* + * 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%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%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%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage! ***! + \***************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtY2xpZW50LXBhZ2VzLWxvYWRlci5qcz9hYnNvbHV0ZVBhZ2VQYXRoPSUyRlVzZXJzJTJGbWF0dGJydWNlJTJGRG9jdW1lbnRzJTJGUHJvamVjdHMlMkZPcGVuQ2xhdyUyRldlYiUyRmhlYXJ0YmVhdC1tb25pdG9yJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGbm90LWZvdW5kLWVycm9yLmpzJnBhZ2U9JTJGX25vdC1mb3VuZCUyRnBhZ2UhIiwibWFwcGluZ3MiOiI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1CQUFPLENBQUMsd0pBQStEO0FBQ3RGO0FBQ0E7QUFDQSxPQUFPLElBQVU7QUFDakIsTUFBTSxVQUFVO0FBQ2hCO0FBQ0EsT0FBTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAod2luZG93Ll9fTkVYVF9QID0gd2luZG93Ll9fTkVYVF9QIHx8IFtdKS5wdXNoKFtcbiAgICAgIFwiL19ub3QtZm91bmQvcGFnZVwiLFxuICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZShcIi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9ub3QtZm91bmQtZXJyb3IuanNcIik7XG4gICAgICB9XG4gICAgXSk7XG4gICAgaWYobW9kdWxlLmhvdCkge1xuICAgICAgbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgd2luZG93Ll9fTkVYVF9QLnB1c2goW1wiL19ub3QtZm91bmQvcGFnZVwiXSlcbiAgICAgIH0pO1xuICAgIH1cbiAgIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%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/http-access-fallback/error-fallback.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/next/dist/client/components/http-access-fallback/error-fallback.js ***! + \*****************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"HTTPAccessErrorFallback\", ({\n enumerable: true,\n get: function() {\n return HTTPAccessErrorFallback;\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 HTTPAccessErrorFallback(param) {\n let { status, message } = param;\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"title\", {\n children: status + \": \" + message\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: status\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"div\", {\n style: styles.desc,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(\"h2\", {\n style: styles.h2,\n children: message\n })\n })\n ]\n })\n })\n ]\n });\n}\n_c = HTTPAccessErrorFallback;\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=error-fallback.js.map\nvar _c;\n$RefreshReg$(_c, \"HTTPAccessErrorFallback\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvaHR0cC1hY2Nlc3MtZmFsbGJhY2svZXJyb3ItZmFsbGJhY2suanMiLCJtYXBwaW5ncyI6Ijs7OzsyREFxQ2dCQTs7O2VBQUFBOzs7Ozs0RUFyQ0U7QUFFbEIsTUFBTUMsU0FBOEM7SUFDbERDLE9BQU87UUFDTCwwRkFBMEY7UUFDMUZDLFlBQ0U7UUFDRkMsUUFBUTtRQUNSQyxXQUFXO1FBQ1hDLFNBQVM7UUFDVEMsZUFBZTtRQUNmQyxZQUFZO1FBQ1pDLGdCQUFnQjtJQUNsQjtJQUVBQyxNQUFNO1FBQ0pKLFNBQVM7SUFDWDtJQUVBSyxJQUFJO1FBQ0ZMLFNBQVM7UUFDVE0sUUFBUTtRQUNSQyxTQUFTO1FBQ1RDLFVBQVU7UUFDVkMsWUFBWTtRQUNaQyxlQUFlO1FBQ2ZDLFlBQVk7SUFDZDtJQUVBQyxJQUFJO1FBQ0ZKLFVBQVU7UUFDVkMsWUFBWTtRQUNaRSxZQUFZO1FBQ1pMLFFBQVE7SUFDVjtBQUNGO0FBRU8saUNBQWlDLEtBTXZDO0lBTnVDLE1BQ3RDTyxNQUFNLEVBQ05DLE9BQU8sRUFJUixHQU51QztJQU90QyxxQkFDRTs7MEJBRUUscUJBQUNDLFNBQUFBOzBCQUFVRixTQUFPLE9BQUlDOzswQkFFdEIscUJBQUNFLE9BQUFBO2dCQUFJQyxPQUFPdEIsT0FBT0MsS0FBSzswQkFDdEIsb0NBQUNvQixPQUFBQTs7c0NBQ0MscUJBQUNDLFNBQUFBOzRCQUNDQyx5QkFBeUI7Z0NBQ3ZCOzs7Ozs7Ozs7Ozs7Y0FZQSxHQUNBQyxRQUFTOzRCQUNYOztzQ0FFRixxQkFBQ2QsTUFBQUE7NEJBQUdlLFdBQVU7NEJBQWdCSCxPQUFPdEIsT0FBT1UsRUFBRTtzQ0FDM0NROztzQ0FFSCxxQkFBQ0csT0FBQUE7NEJBQUlDLE9BQU90QixPQUFPUyxJQUFJO3NDQUNyQixtQ0FBQ1EsTUFBQUE7Z0NBQUdLLE9BQU90QixPQUFPaUIsRUFBRTswQ0FBR0U7Ozs7Ozs7O0FBTW5DO0tBMUNnQnBCIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9zcmMvY2xpZW50L2NvbXBvbmVudHMvaHR0cC1hY2Nlc3MtZmFsbGJhY2svZXJyb3ItZmFsbGJhY2sudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3Qgc3R5bGVzOiBSZWNvcmQ8c3RyaW5nLCBSZWFjdC5DU1NQcm9wZXJ0aWVzPiA9IHtcbiAgZXJyb3I6IHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vc2luZHJlc29yaHVzL21vZGVybi1ub3JtYWxpemUvYmxvYi9tYWluL21vZGVybi1ub3JtYWxpemUuY3NzI0wzOC1MNTJcbiAgICBmb250RmFtaWx5OlxuICAgICAgJ3N5c3RlbS11aSxcIlNlZ29lIFVJXCIsUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmLFwiQXBwbGUgQ29sb3IgRW1vamlcIixcIlNlZ29lIFVJIEVtb2ppXCInLFxuICAgIGhlaWdodDogJzEwMHZoJyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gIH0sXG5cbiAgZGVzYzoge1xuICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICB9LFxuXG4gIGgxOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgbWFyZ2luOiAnMCAyMHB4IDAgMCcsXG4gICAgcGFkZGluZzogJzAgMjNweCAwIDAnLFxuICAgIGZvbnRTaXplOiAyNCxcbiAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgbGluZUhlaWdodDogJzQ5cHgnLFxuICB9LFxuXG4gIGgyOiB7XG4gICAgZm9udFNpemU6IDE0LFxuICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICBsaW5lSGVpZ2h0OiAnNDlweCcsXG4gICAgbWFyZ2luOiAwLFxuICB9LFxufVxuXG5leHBvcnQgZnVuY3Rpb24gSFRUUEFjY2Vzc0Vycm9yRmFsbGJhY2soe1xuICBzdGF0dXMsXG4gIG1lc3NhZ2UsXG59OiB7XG4gIHN0YXR1czogbnVtYmVyXG4gIG1lc3NhZ2U6IHN0cmluZ1xufSkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7LyogPGhlYWQ+ICovfVxuICAgICAgPHRpdGxlPntgJHtzdGF0dXN9OiAke21lc3NhZ2V9YH08L3RpdGxlPlxuICAgICAgey8qIDwvaGVhZD4gKi99XG4gICAgICA8ZGl2IHN0eWxlPXtzdHlsZXMuZXJyb3J9PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzdHlsZVxuICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgICAgLyogTWluaWZpZWQgQ1NTIGZyb21cbiAgICAgICAgICAgICAgICBib2R5IHsgbWFyZ2luOiAwOyBjb2xvcjogIzAwMDsgYmFja2dyb3VuZDogI2ZmZjsgfVxuICAgICAgICAgICAgICAgIC5uZXh0LWVycm9yLWgxIHtcbiAgICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgLjMpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgICAgICAgICAgICAgIGJvZHkgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZDogIzAwMDsgfVxuICAgICAgICAgICAgICAgICAgLm5leHQtZXJyb3ItaDEge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4zKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgIF9faHRtbDogYGJvZHl7Y29sb3I6IzAwMDtiYWNrZ3JvdW5kOiNmZmY7bWFyZ2luOjB9Lm5leHQtZXJyb3ItaDF7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCByZ2JhKDAsMCwwLC4zKX1AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOmRhcmspe2JvZHl7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiMwMDB9Lm5leHQtZXJyb3ItaDF7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4zKX19YCxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwibmV4dC1lcnJvci1oMVwiIHN0eWxlPXtzdHlsZXMuaDF9PlxuICAgICAgICAgICAge3N0YXR1c31cbiAgICAgICAgICA8L2gxPlxuICAgICAgICAgIDxkaXYgc3R5bGU9e3N0eWxlcy5kZXNjfT5cbiAgICAgICAgICAgIDxoMiBzdHlsZT17c3R5bGVzLmgyfT57bWVzc2FnZX08L2gyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApXG59XG4iXSwibmFtZXMiOlsiSFRUUEFjY2Vzc0Vycm9yRmFsbGJhY2siLCJzdHlsZXMiLCJlcnJvciIsImZvbnRGYW1pbHkiLCJoZWlnaHQiLCJ0ZXh0QWxpZ24iLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImFsaWduSXRlbXMiLCJqdXN0aWZ5Q29udGVudCIsImRlc2MiLCJoMSIsIm1hcmdpbiIsInBhZGRpbmciLCJmb250U2l6ZSIsImZvbnRXZWlnaHQiLCJ2ZXJ0aWNhbEFsaWduIiwibGluZUhlaWdodCIsImgyIiwic3RhdHVzIiwibWVzc2FnZSIsInRpdGxlIiwiZGl2Iiwic3R5bGUiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIl9faHRtbCIsImNsYXNzTmFtZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-fallback.js\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./node_modules/next/dist/client/components/not-found-error.js": +/*!*********************************************************************!*\ + !*** ./node_modules/next/dist/client/components/not-found-error.js ***! + \*********************************************************************/ +/***/ ((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 _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _errorfallback = __webpack_require__(/*! ./http-access-fallback/error-fallback */ \"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-fallback.js\");\nfunction NotFound() {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_errorfallback.HTTPAccessErrorFallback, {\n status: 404,\n message: \"This page could not be found.\"\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kLWVycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7MkNBRUE7OztlQUF3QkE7Ozs7MkNBRmdCO0FBRXpCO0lBQ2IscUJBQ0UscUJBQUNDLGVBQUFBLHVCQUF1QjtRQUN0QkMsUUFBUTtRQUNSQyxTQUFROztBQUdkO0tBUHdCSCIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvc3JjL2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSFRUUEFjY2Vzc0Vycm9yRmFsbGJhY2sgfSBmcm9tICcuL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWZhbGxiYWNrJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBOb3RGb3VuZCgpIHtcbiAgcmV0dXJuIChcbiAgICA8SFRUUEFjY2Vzc0Vycm9yRmFsbGJhY2tcbiAgICAgIHN0YXR1cz17NDA0fVxuICAgICAgbWVzc2FnZT1cIlRoaXMgcGFnZSBjb3VsZCBub3QgYmUgZm91bmQuXCJcbiAgICAvPlxuICApXG59XG4iXSwibmFtZXMiOlsiTm90Rm91bmQiLCJIVFRQQWNjZXNzRXJyb3JGYWxsYmFjayIsInN0YXR1cyIsIm1lc3NhZ2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/not-found-error.js\n")); + +/***/ }) + +}, +/******/ __webpack_require__ => { // webpackRuntimeModules +/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) +/******/ __webpack_require__.O(0, ["main-app"], () => (__webpack_exec__("(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%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/api/monitor/route.js b/.next/static/chunks/app/api/monitor/route.js new file mode 100644 index 00000000..f40a45e3 --- /dev/null +++ b/.next/static/chunks/app/api/monitor/route.js @@ -0,0 +1,28 @@ +/* + * 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/api/monitor/route"],{ + +/***/ "(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?server=false!": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?server=false! ***! + \*******************************************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + + + +/***/ }) + +}, +/******/ __webpack_require__ => { // webpackRuntimeModules +/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) +/******/ __webpack_require__.O(0, ["main-app"], () => (__webpack_exec__("(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?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/page.js b/.next/static/chunks/app/page.js index 4920b358..534f3362 100644 --- a/.next/static/chunks/app/page.js +++ b/.next/static/chunks/app/page.js @@ -3006,7 +3006,7 @@ eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* har /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Dashboard)\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 framer_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! framer-motion */ \"(app-pages-browser)/./node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! framer-motion */ \"(app-pages-browser)/./node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/component/ResponsiveContainer.js\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/chart/LineChart.js\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/cartesian/Line.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/server.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/external-link.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/clock.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/refresh-cw.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/settings.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/trash-2.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/layout-dashboard.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/monitor.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/triangle-alert.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/history.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/activity.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-right.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-left.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/search.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/plus.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/bell.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/circle-check.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,ChevronLeft,ChevronRight,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/zap.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$(), _s1 = $RefreshSig$();\n\n\n\n\n// Mock data generator for sparklines\nconst generateSparklineData = (points, isUp)=>{\n return Array.from({\n length: points\n }, (_, i)=>({\n value: isUp ? 80 + Math.random() * 20 : Math.random() * 30,\n time: i\n }));\n};\n// Components\nconst SidebarItem = (param)=>{\n let { item, isActive, isCollapsed, onClick } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.button, {\n onClick: onClick,\n whileHover: {\n x: 2\n },\n whileTap: {\n scale: 0.98\n },\n className: \"w-full flex items-center gap-3 px-3 py-2.5 rounded-lg transition-all duration-200 \".concat(isActive ? \"bg-emerald-500/10 text-emerald-400 border border-emerald-500/20\" : \"text-slate-400 hover:text-slate-100 hover:bg-slate-800/50\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"flex-shrink-0\",\n children: item.icon\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 96,\n columnNumber: 5\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.AnimatePresence, {\n mode: \"wait\",\n children: !isCollapsed && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.span, {\n initial: {\n opacity: 0,\n width: 0\n },\n animate: {\n opacity: 1,\n width: \"auto\"\n },\n exit: {\n opacity: 0,\n width: 0\n },\n className: \"text-sm font-medium whitespace-nowrap overflow-hidden\",\n children: item.label\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 99,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 97,\n columnNumber: 5\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 86,\n columnNumber: 3\n }, undefined);\n};\n_c = SidebarItem;\nconst MetricCard = (param)=>{\n let { title, value, subtitle, icon: Icon, color, data, trend } = param;\n const colorClasses = {\n emerald: \"from-emerald-500/20 to-emerald-500/5 border-emerald-500/20\",\n blue: \"from-blue-500/20 to-blue-500/5 border-blue-500/20\",\n purple: \"from-purple-500/20 to-purple-500/5 border-purple-500/20\",\n amber: \"from-amber-500/20 to-amber-500/5 border-amber-500/20\"\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n whileHover: {\n y: -4,\n transition: {\n duration: 0.2\n }\n },\n className: \"relative overflow-hidden rounded-xl border bg-gradient-to-br p-5 \".concat(colorClasses[color], \" backdrop-blur-sm\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start 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-slate-400 text-sm font-medium mb-1\",\n children: title\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 143,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-3xl font-bold text-white\",\n children: value\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 144,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 mt-2\",\n children: [\n trend && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs \".concat(trend === \"up\" ? \"text-emerald-400\" : trend === \"down\" ? \"text-red-400\" : \"text-slate-400\"),\n children: trend === \"up\" ? \"↑\" : trend === \"down\" ? \"↓\" : \"→\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 147,\n columnNumber: 15\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-slate-500 text-xs\",\n children: subtitle\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 151,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 145,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 142,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-2.5 rounded-lg bg-\".concat(color, \"-500/10\"),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Icon, {\n className: \"w-5 h-5 text-\".concat(color, \"-400\"),\n style: {\n color: color === \"emerald\" ? \"#34d399\" : color === \"blue\" ? \"#60a5fa\" : color === \"purple\" ? \"#a78bfa\" : \"#fbbf24\"\n }\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 155,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 154,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 141,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 h-12\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__.ResponsiveContainer, {\n width: \"100%\",\n height: \"100%\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__.LineChart, {\n data: data,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_6__.Line, {\n type: \"monotone\",\n dataKey: \"value\",\n stroke: color === \"emerald\" ? \"#34d399\" : color === \"blue\" ? \"#60a5fa\" : color === \"purple\" ? \"#a78bfa\" : \"#fbbf24\",\n strokeWidth: 2,\n dot: false\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 162,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 161,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 160,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 159,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 137,\n columnNumber: 5\n }, undefined);\n};\n_c1 = MetricCard;\nconst ServiceCard = (param)=>{\n let { app, status, onDelete } = param;\n _s();\n const [isHovered, setIsHovered] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const sparklineData = generateSparklineData(12, status.isUp);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n layout: true,\n initial: {\n opacity: 0,\n scale: 0.95\n },\n animate: {\n opacity: 1,\n scale: 1\n },\n exit: {\n opacity: 0,\n scale: 0.95\n },\n whileHover: {\n y: -2\n },\n onHoverStart: ()=>setIsHovered(true),\n onHoverEnd: ()=>setIsHovered(false),\n className: \"group relative bg-slate-900/50 border border-slate-800 rounded-xl p-5 hover:border-slate-700 transition-all duration-300\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-0 left-4 right-4 h-0.5 rounded-full \".concat(status.isUp ? \"bg-emerald-500\" : \"bg-red-500\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 200,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between mb-4\",\n children: [\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: \"w-10 h-10 rounded-lg flex items-center justify-center \".concat(status.isUp ? \"bg-emerald-500/10\" : \"bg-red-500/10\"),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"w-5 h-5 \".concat(status.isUp ? \"text-emerald-400\" : \"text-red-400\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 205,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 204,\n columnNumber: 11\n }, undefined),\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)(\"h3\", {\n className: \"font-semibold text-white flex items-center gap-2\",\n children: [\n app.name,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: app.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"text-slate-500 hover:text-emerald-400 transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"w-3.5 h-3.5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 211,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 210,\n columnNumber: 15\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 208,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-slate-500\",\n children: [\n \"Port \",\n app.port\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 214,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 207,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 203,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium border \".concat(status.isUp ? \"bg-emerald-500/10 border-emerald-500/20 text-emerald-400\" : \"bg-red-500/10 border-red-500/20 text-red-400\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative flex h-1.5 w-1.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"animate-ping absolute inline-flex h-full w-full rounded-full opacity-75 \".concat(status.isUp ? \"bg-emerald-400\" : \"bg-red-400\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 224,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative inline-flex rounded-full h-1.5 w-1.5 \".concat(status.isUp ? \"bg-emerald-500\" : \"bg-red-500\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 225,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 223,\n columnNumber: 11\n }, undefined),\n status.isUp ? \"Operational\" : \"Down\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 218,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 202,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-1.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-slate-400\",\n children: \"Uptime\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 236,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-semibold text-white\",\n children: [\n status.uptime,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 237,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 235,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-1.5 w-full bg-slate-800 rounded-full overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n width: 0\n },\n animate: {\n width: \"\".concat(status.uptime, \"%\")\n },\n transition: {\n duration: 1,\n delay: 0.2\n },\n className: \"h-full rounded-full \".concat(status.uptime > 95 ? \"bg-emerald-500\" : status.uptime > 80 ? \"bg-amber-500\" : \"bg-red-500\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 240,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 239,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 234,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-slate-400\",\n children: \"Response Time\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 251,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg font-semibold text-white\",\n children: status.avgResponseTime > 0 ? \"\".concat(status.avgResponseTime, \"ms\") : \"—\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 252,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 250,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-10 -mx-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__.ResponsiveContainer, {\n width: \"100%\",\n height: \"100%\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__.LineChart, {\n data: sparklineData,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_6__.Line, {\n type: \"monotone\",\n dataKey: \"value\",\n stroke: status.isUp ? \"#34d399\" : \"#f87171\",\n strokeWidth: 1.5,\n dot: false\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 261,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 260,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 259,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 258,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between text-xs text-slate-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n className: \"w-3 h-3\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 275,\n columnNumber: 13\n }, undefined),\n status.latest ? new Date(status.latest.timestamp).toLocaleTimeString() : \"Never\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 274,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.AnimatePresence, {\n children: isHovered && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n x: 10\n },\n animate: {\n opacity: 1,\n x: 0\n },\n exit: {\n opacity: 0,\n x: 10\n },\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-1.5 text-slate-400 hover:text-white hover:bg-slate-800 rounded transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"w-3.5 h-3.5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 289,\n columnNumber: 19\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 288,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-1.5 text-slate-400 hover:text-white hover:bg-slate-800 rounded transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"w-3.5 h-3.5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 292,\n columnNumber: 19\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 291,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: onDelete,\n className: \"p-1.5 text-slate-400 hover:text-red-400 hover:bg-red-500/10 rounded transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"w-3.5 h-3.5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 298,\n columnNumber: 19\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 294,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 282,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 280,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 273,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 232,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 189,\n columnNumber: 5\n }, undefined);\n};\n_s(ServiceCard, \"FPQn8a98tPjpohC7NUYORQR8GJE=\");\n_c2 = ServiceCard;\nfunction Dashboard() {\n _s1();\n const [apps, setApps] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [status, setStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [sidebarCollapsed, setSidebarCollapsed] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [activeNav, setActiveNav] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"overview\");\n const [showAddModal, setShowAddModal] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [newApp, setNewApp] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n name: \"\",\n url: \"http://localhost:\",\n port: 3000,\n enabled: true\n });\n const navItems = [\n {\n id: \"overview\",\n label: \"Overview\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 324,\n columnNumber: 48\n }, this)\n },\n {\n id: \"services\",\n label: \"Monitored Services\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 325,\n columnNumber: 58\n }, this)\n },\n {\n id: \"incidents\",\n label: \"Incidents\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 326,\n columnNumber: 50\n }, this)\n },\n {\n id: \"history\",\n label: \"History / Logs\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 327,\n columnNumber: 53\n }, this)\n },\n {\n id: \"settings\",\n label: \"Settings\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 328,\n columnNumber: 48\n }, this)\n }\n ];\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Dashboard.useEffect\": ()=>{\n fetchData();\n const interval = setInterval(fetchData, 30000);\n return ({\n \"Dashboard.useEffect\": ()=>clearInterval(interval)\n })[\"Dashboard.useEffect\"];\n }\n }[\"Dashboard.useEffect\"], []);\n async function fetchData() {\n try {\n const res = await fetch(\"/api/monitor\");\n const data = await res.json();\n setApps(data.apps || []);\n setStatus(data.status || []);\n } catch (err) {\n console.error(\"Failed to fetch data:\", err);\n } finally{\n setLoading(false);\n }\n }\n async function addApp(e) {\n e.preventDefault();\n if (!newApp.name || !newApp.url) return;\n await fetch(\"/api/monitor\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n action: \"addApp\",\n app: newApp\n })\n });\n setShowAddModal(false);\n setNewApp({\n name: \"\",\n url: \"http://localhost:\",\n port: 3000,\n enabled: true\n });\n fetchData();\n }\n async function deleteApp(id) {\n if (!confirm(\"Delete this monitor?\")) return;\n await fetch(\"/api/monitor\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n action: \"deleteApp\",\n id\n })\n });\n fetchData();\n }\n function getAppStatus(appId) {\n const appStatus = status.filter((s)=>s.appId === appId);\n const latest = appStatus[appStatus.length - 1];\n const isUp = (latest === null || latest === void 0 ? void 0 : latest.status) === \"up\";\n const uptime = appStatus.length > 0 ? Math.round(appStatus.filter((s)=>s.status === \"up\").length / appStatus.length * 100) : 100;\n const avgResponseTime = appStatus.length > 0 ? Math.round(appStatus.filter((s)=>s.responseTime).reduce((acc, s)=>acc + (s.responseTime || 0), 0) / appStatus.filter((s)=>s.responseTime).length) || 0 : 0;\n return {\n latest,\n isUp,\n uptime,\n avgResponseTime\n };\n }\n const stats = {\n total: apps.length,\n online: apps.filter((app)=>getAppStatus(app.id).isUp).length,\n offline: apps.filter((app)=>!getAppStatus(app.id).isUp).length,\n avgUptime: apps.length > 0 ? Math.round(apps.reduce((acc, app)=>acc + getAppStatus(app.id).uptime, 0) / apps.length) : 0,\n avgResponseTime: apps.length > 0 ? Math.round(apps.reduce((acc, app)=>acc + getAppStatus(app.id).avgResponseTime, 0) / apps.length) : 0,\n incidents: status.filter((s)=>s.status === \"down\").length\n };\n const allUp = stats.online === stats.total && stats.total > 0;\n // Generate sparkline data for metrics\n const servicesData = generateSparklineData(20, true);\n const uptimeData = generateSparklineData(20, true);\n const responseData = generateSparklineData(20, true).map((d)=>({\n ...d,\n value: d.value * 2\n }));\n const incidentsData = generateSparklineData(20, false);\n if (loading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-slate-950 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n className: \"flex flex-col items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n animate: {\n rotate: 360\n },\n transition: {\n duration: 2,\n repeat: Infinity,\n ease: \"linear\"\n },\n className: \"w-12 h-12 rounded-xl bg-gradient-to-br from-emerald-500 to-cyan-500\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 416,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 w-12 h-12 rounded-xl bg-gradient-to-br from-emerald-500 to-cyan-500 blur-xl opacity-50\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 421,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 415,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-400\",\n children: \"Loading dashboard...\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 423,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 410,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 409,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-slate-950 text-slate-100 flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.aside, {\n initial: false,\n animate: {\n width: sidebarCollapsed ? 72 : 240\n },\n className: \"fixed left-0 top-0 bottom-0 bg-slate-900/80 backdrop-blur-xl border-r border-slate-800 z-50 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-16 flex items-center px-4 border-b border-slate-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-8 rounded-lg bg-gradient-to-br from-emerald-500 to-cyan-500 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n className: \"w-4 h-4 text-white\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 440,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 439,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.AnimatePresence, {\n mode: \"wait\",\n children: !sidebarCollapsed && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.span, {\n initial: {\n opacity: 0,\n width: 0\n },\n animate: {\n opacity: 1,\n width: \"auto\"\n },\n exit: {\n opacity: 0,\n width: 0\n },\n className: \"ml-3 font-bold text-lg whitespace-nowrap overflow-hidden\",\n children: \"Heartbeat\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 444,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 442,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 438,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"flex-1 p-3 space-y-1\",\n children: navItems.map((item)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n item: item,\n isActive: activeNav === item.id,\n isCollapsed: sidebarCollapsed,\n onClick: ()=>setActiveNav(item.id)\n }, item.id, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 459,\n columnNumber: 13\n }, this))\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 457,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-3 border-t border-slate-800\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setSidebarCollapsed(!sidebarCollapsed),\n className: \"w-full flex items-center justify-center p-2 text-slate-400 hover:text-white hover:bg-slate-800/50 rounded-lg transition-colors\",\n children: sidebarCollapsed ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 475,\n columnNumber: 33\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 475,\n columnNumber: 72\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 471,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 470,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 432,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"flex-1 min-h-screen transition-all duration-300\",\n style: {\n marginLeft: sidebarCollapsed ? 72 : 240\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"h-16 bg-slate-900/50 backdrop-blur-sm border-b border-slate-800 sticky top-0 z-40 px-6 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 px-3 py-1.5 rounded-full border \".concat(allUp ? \"bg-emerald-500/10 border-emerald-500/20\" : \"bg-amber-500/10 border-amber-500/20\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative flex h-2 w-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"animate-ping absolute inline-flex h-full w-full rounded-full opacity-75 \".concat(allUp ? \"bg-emerald-400\" : \"bg-amber-400\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 495,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative inline-flex rounded-full h-2 w-2 \".concat(allUp ? \"bg-emerald-500\" : \"bg-amber-500\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 496,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 494,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium \".concat(allUp ? \"text-emerald-400\" : \"text-amber-400\"),\n children: allUp ? \"All Systems Operational\" : \"\".concat(stats.offline, \" Service\").concat(stats.offline > 1 ? 's' : '', \" Down\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 498,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-slate-500 text-xs\",\n children: [\n \"• Updated \",\n new Date().toLocaleTimeString()\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 501,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 489,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 488,\n columnNumber: 11\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: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n className: \"w-4 h-4 absolute left-3 top-1/2 -translate-y-1/2 text-slate-500\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 509,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n placeholder: \"Search...\",\n className: \"w-64 bg-slate-800/50 border border-slate-700 rounded-lg pl-10 pr-4 py-2 text-sm text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none transition-colors\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 510,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 508,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowAddModal(true),\n className: \"flex items-center gap-2 px-4 py-2 bg-emerald-600 hover:bg-emerald-500 text-white rounded-lg text-sm font-medium transition-colors\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 522,\n columnNumber: 15\n }, this),\n \"Add Monitor\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 518,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: fetchData,\n className: \"p-2 text-slate-400 hover:text-white hover:bg-slate-800 rounded-lg transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 531,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 527,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"p-2 text-slate-400 hover:text-white hover:bg-slate-800 rounded-lg transition-colors relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 536,\n columnNumber: 15\n }, this),\n stats.incidents > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"absolute top-1 right-1 w-2 h-2 bg-red-500 rounded-full\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 538,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 535,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-9 h-9 rounded-full bg-gradient-to-br from-emerald-500 to-cyan-500 flex items-center justify-center text-white font-medium text-sm\",\n children: \"MB\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 543,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 506,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 486,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6 space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MetricCard, {\n title: \"Services Online\",\n value: \"\".concat(stats.online, \"/\").concat(stats.total),\n subtitle: allUp ? \"All healthy\" : \"\".concat(stats.offline, \" down\"),\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n color: \"emerald\",\n data: servicesData,\n trend: \"up\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 553,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MetricCard, {\n title: \"Average Uptime\",\n value: \"\".concat(stats.avgUptime, \"%\"),\n subtitle: \"Last 30 days\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_23__[\"default\"],\n color: \"blue\",\n data: uptimeData,\n trend: \"up\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 562,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MetricCard, {\n title: \"Avg Response Time\",\n value: \"\".concat(stats.avgResponseTime, \"ms\"),\n subtitle: \"Across all services\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_24__[\"default\"],\n color: \"purple\",\n data: responseData,\n trend: stats.avgResponseTime < 200 ? \"up\" : \"down\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 571,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MetricCard, {\n title: \"Total Incidents\",\n value: stats.incidents,\n subtitle: \"Last 24 hours\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n color: \"amber\",\n data: incidentsData,\n trend: stats.incidents === 0 ? \"up\" : \"down\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 580,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 552,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold text-white\",\n children: \"Monitored Services\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 594,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-slate-500\",\n children: [\n stats.total,\n \" services\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 595,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 593,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n layout: true,\n className: \"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.AnimatePresence, {\n mode: \"popLayout\",\n children: apps.map((app)=>{\n const appStatus = getAppStatus(app.id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ServiceCard, {\n app: app,\n status: appStatus,\n onDelete: ()=>deleteApp(app.id)\n }, app.id, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 606,\n columnNumber: 21\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 602,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 598,\n columnNumber: 13\n }, this),\n apps.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n y: 20\n },\n animate: {\n opacity: 1,\n y: 0\n },\n className: \"text-center py-16 bg-slate-900/30 rounded-xl border border-dashed border-slate-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-16 h-16 bg-slate-800 rounded-2xl flex items-center justify-center mx-auto mb-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_ChevronLeft_ChevronRight_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n className: \"w-8 h-8 text-slate-600\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 624,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 623,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold text-white mb-2\",\n children: \"No monitors yet\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 626,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-500 mb-4\",\n children: \"Start monitoring your services\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 627,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>setShowAddModal(true),\n className: \"px-4 py-2 bg-emerald-600 hover:bg-emerald-500 text-white rounded-lg transition-colors\",\n children: \"Add Your First Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 628,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 618,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 592,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 550,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 481,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_3__.AnimatePresence, {\n children: showAddModal && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n exit: {\n opacity: 0\n },\n className: \"fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-50 p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n scale: 0.95,\n y: 20\n },\n animate: {\n opacity: 1,\n scale: 1,\n y: 0\n },\n exit: {\n opacity: 0,\n scale: 0.95,\n y: 20\n },\n className: \"bg-slate-900 border border-slate-800 rounded-xl p-6 w-full max-w-md shadow-2xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xl font-bold text-white mb-2\",\n children: \"Add New Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 655,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-400 text-sm mb-6\",\n children: \"Configure a new service to monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 656,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: addApp,\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-slate-300 mb-2\",\n children: \"Service Name\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 660,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: newApp.name,\n onChange: (e)=>setNewApp({\n ...newApp,\n name: e.target.value\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none transition-colors\",\n placeholder: \"My Service\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 661,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 659,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 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)(\"label\", {\n className: \"block text-sm font-medium text-slate-300 mb-2\",\n children: \"URL\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 673,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"url\",\n value: newApp.url,\n onChange: (e)=>setNewApp({\n ...newApp,\n url: e.target.value\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none transition-colors\",\n placeholder: \"http://localhost:3000\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 674,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 672,\n columnNumber: 19\n }, this),\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)(\"label\", {\n className: \"block text-sm font-medium text-slate-300 mb-2\",\n children: \"Port\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 684,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n value: newApp.port,\n onChange: (e)=>setNewApp({\n ...newApp,\n port: parseInt(e.target.value)\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none transition-colors\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 685,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 683,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 671,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-3 pt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>setShowAddModal(false),\n className: \"flex-1 px-4 py-2.5 border border-slate-700 rounded-lg text-slate-300 hover:bg-slate-800 transition-colors\",\n children: \"Cancel\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 696,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n className: \"flex-1 px-4 py-2.5 bg-emerald-600 hover:bg-emerald-500 text-white rounded-lg font-medium transition-colors\",\n children: \"Add Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 703,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 695,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 658,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 649,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 643,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 641,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 430,\n columnNumber: 5\n }, this);\n}\n_s1(Dashboard, \"oWLErnwVJVcXRzhBAYwsceDoLkg=\");\n_c3 = Dashboard;\nvar _c, _c1, _c2, _c3;\n$RefreshReg$(_c, \"SidebarItem\");\n$RefreshReg$(_c1, \"MetricCard\");\n$RefreshReg$(_c2, \"ServiceCard\");\n$RefreshReg$(_c3, \"Dashboard\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9hcHAvcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbUQ7QUFDSztBQU10QztBQXlCSTtBQTZCdEIscUNBQXFDO0FBQ3JDLE1BQU0wQix3QkFBd0IsQ0FBQ0MsUUFBZ0JDO0lBQzdDLE9BQU9DLE1BQU1DLElBQUksQ0FBQztRQUFFQyxRQUFRSjtJQUFPLEdBQUcsQ0FBQ0ssR0FBR0MsSUFBTztZQUMvQ0MsT0FBT04sT0FDSCxLQUFLTyxLQUFLQyxNQUFNLEtBQUssS0FDckJELEtBQUtDLE1BQU0sS0FBSztZQUNwQkMsTUFBTUo7UUFDUjtBQUNGO0FBRUEsYUFBYTtBQUNiLE1BQU1LLGNBQWM7UUFBQyxFQUNuQkMsSUFBSSxFQUNKQyxRQUFRLEVBQ1JDLFdBQVcsRUFDWEMsT0FBTyxFQU1SO3lCQUNDLDhEQUFDdkMsaURBQU1BLENBQUN3QyxNQUFNO1FBQ1pELFNBQVNBO1FBQ1RFLFlBQVk7WUFBRUMsR0FBRztRQUFFO1FBQ25CQyxVQUFVO1lBQUVDLE9BQU87UUFBSztRQUN4QkMsV0FBVyxxRkFJVixPQUhDUixXQUNJLG9FQUNBOzswQkFHTiw4REFBQ1M7Z0JBQUtELFdBQVU7MEJBQWlCVCxLQUFLVyxJQUFJOzs7Ozs7MEJBQzFDLDhEQUFDOUMsMERBQWVBO2dCQUFDK0MsTUFBSzswQkFDbkIsQ0FBQ1YsNkJBQ0EsOERBQUN0QyxpREFBTUEsQ0FBQzhDLElBQUk7b0JBQ1ZHLFNBQVM7d0JBQUVDLFNBQVM7d0JBQUdDLE9BQU87b0JBQUU7b0JBQ2hDQyxTQUFTO3dCQUFFRixTQUFTO3dCQUFHQyxPQUFPO29CQUFPO29CQUNyQ0UsTUFBTTt3QkFBRUgsU0FBUzt3QkFBR0MsT0FBTztvQkFBRTtvQkFDN0JOLFdBQVU7OEJBRVRULEtBQUtrQixLQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7S0E5QmZuQjtBQXFDTixNQUFNb0IsYUFBYTtRQUFDLEVBQ2xCQyxLQUFLLEVBQ0x6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V25CO0lBeFp3QjJEO01BQUFBIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9PcGVuQ2xhdy9XZWIvaGVhcnRiZWF0LW1vbml0b3Ivc3JjL2FwcC9wYWdlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IG1vdGlvbiwgQW5pbWF0ZVByZXNlbmNlIH0gZnJvbSBcImZyYW1lci1tb3Rpb25cIjtcbmltcG9ydCB7XG4gIExpbmVDaGFydCxcbiAgTGluZSxcbiAgUmVzcG9uc2l2ZUNvbnRhaW5lcixcbiAgWUF4aXMsXG59IGZyb20gXCJyZWNoYXJ0c1wiO1xuaW1wb3J0IHtcbiAgQWN0aXZpdHksXG4gIFBsdXMsXG4gIFJlZnJlc2hDdyxcbiAgVHJhc2gyLFxuICBFeHRlcm5hbExpbmssXG4gIFNlYXJjaCxcbiAgQmVsbCxcbiAgU2V0dGluZ3MsXG4gIENoZXZyb25MZWZ0LFxuICBDaGV2cm9uUmlnaHQsXG4gIExheW91dERhc2hib2FyZCxcbiAgTW9uaXRvcixcbiAgQWxlcnRUcmlhbmdsZSxcbiAgSGlzdG9yeSxcbiAgTW9yZVZlcnRpY2FsLFxuICBDaGVja0NpcmNsZTIsXG4gIFhDaXJjbGUsXG4gIEFsZXJ0Q2lyY2xlLFxuICBDbG9jayxcbiAgWmFwLFxuICBUcmVuZGluZ1VwLFxuICBTZXJ2ZXIsXG4gIE1lbnUsXG59IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuLy8gVHlwZXNcbmludGVyZmFjZSBBcHAge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBwb3J0OiBudW1iZXI7XG4gIHBhdGg6IHN0cmluZztcbiAgY29tbWFuZDogc3RyaW5nO1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBjb2xvcjogc3RyaW5nO1xuICBlbmFibGVkOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgU3RhdHVzRW50cnkge1xuICBhcHBJZDogc3RyaW5nO1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgc3RhdHVzOiBcInVwXCIgfCBcImRvd25cIjtcbiAgcmVzcG9uc2VUaW1lPzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgTmF2SXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb246IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuLy8gTW9jayBkYXRhIGdlbmVyYXRvciBmb3Igc3BhcmtsaW5lc1xuY29uc3QgZ2VuZXJhdGVTcGFya2xpbmVEYXRhID0gKHBvaW50czogbnVtYmVyLCBpc1VwOiBib29sZWFuKSA9PiB7XG4gIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBwb2ludHMgfSwgKF8sIGkpID0+ICh7XG4gICAgdmFsdWU6IGlzVXAgXG4gICAgICA/IDgwICsgTWF0aC5yYW5kb20oKSAqIDIwIFxuICAgICAgOiBNYXRoLnJhbmRvbSgpICogMzAsXG4gICAgdGltZTogaSxcbiAgfSkpO1xufTtcblxuLy8gQ29tcG9uZW50c1xuY29uc3QgU2lkZWJhckl0ZW0gPSAoeyBcbiAgaXRlbSwgXG4gIGlzQWN0aXZlLCBcbiAgaXNDb2xsYXBzZWQsIFxuICBvbkNsaWNrIFxufTogeyBcbiAgaXRlbTogTmF2SXRlbTsgXG4gIGlzQWN0aXZlOiBib29sZWFuOyBcbiAgaXNDb2xsYXBzZWQ6IGJvb2xlYW47XG4gIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG59KSA9PiAoXG4gIDxtb3Rpb24uYnV0dG9uXG4gICAgb25DbGljaz17b25DbGlja31cbiAgICB3aGlsZUhvdmVyPXt7IHg6IDIgfX1cbiAgICB3aGlsZVRhcD17eyBzY2FsZTogMC45OCB9fVxuICAgIGNsYXNzTmFtZT17YHctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBweC0zIHB5LTIuNSByb3VuZGVkLWxnIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCAke1xuICAgICAgaXNBY3RpdmUgXG4gICAgICAgID8gXCJiZy1lbWVyYWxkLTUwMC8xMCB0ZXh0LWVtZXJhbGQtNDAwIGJvcmRlciBib3JkZXItZW1lcmFsZC01MDAvMjBcIiBcbiAgICAgICAgOiBcInRleHQtc2xhdGUtNDAwIGhvdmVyOnRleHQtc2xhdGUtMTAwIGhvdmVyOmJnLXNsYXRlLTgwMC81MFwiXG4gICAgfWB9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4LXNocmluay0wXCI+e2l0ZW0uaWNvbn08L3NwYW4+XG4gICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgeyFpc0NvbGxhcHNlZCAmJiAoXG4gICAgICAgIDxtb3Rpb24uc3BhblxuICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgd2lkdGg6IDAgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHdpZHRoOiBcImF1dG9cIiB9fVxuICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgd2lkdGg6IDAgfX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHdoaXRlc3BhY2Utbm93cmFwIG92ZXJmbG93LWhpZGRlblwiXG4gICAgICAgID5cbiAgICAgICAgICB7aXRlbS5sYWJlbH1cbiAgICAgICAgPC9tb3Rpb24uc3Bhbj5cbiAgICAgICl9XG4gICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gIDwvbW90aW9uLmJ1dHRvbj5cbik7XG5cbmNvbnN0IE1ldHJpY0NhcmQgPSAoeyBcbiAgdGl0bGUsIFxuICB2YWx1ZSwgXG4gIHN1YnRpdGxlLCBcbiAgaWNvbjogSWNvbiwgXG4gIGNvbG9yLCBcbiAgZGF0YSxcbiAgdHJlbmQgXG59OiB7IFxuICB0aXRsZTogc3RyaW5nOyBcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjsgXG4gIHN1YnRpdGxlOiBzdHJpbmc7XG4gIGljb246IGFueTtcbiAgY29sb3I6IHN0cmluZztcbiAgZGF0YTogYW55W107XG4gIHRyZW5kPzogXCJ1cFwiIHwgXCJkb3duXCIgfCBcIm5ldXRyYWxcIjtcbn0pID0+IHtcbiAgY29uc3QgY29sb3JDbGFzc2VzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGVtZXJhbGQ6IFwiZnJvbS1lbWVyYWxkLTUwMC8yMCB0by1lbWVyYWxkLTUwMC81IGJvcmRlci1lbWVyYWxkLTUwMC8yMFwiLFxuICAgIGJsdWU6IFwiZnJvbS1ibHVlLTUwMC8yMCB0by1ibHVlLTUwMC81IGJvcmRlci1ibHVlLTUwMC8yMFwiLFxuICAgIHB1cnBsZTogXCJmcm9tLXB1cnBsZS01MDAvMjAgdG8tcHVycGxlLTUwMC81IGJvcmRlci1wdXJwbGUtNTAwLzIwXCIsXG4gICAgYW1iZXI6IFwiZnJvbS1hbWJlci01MDAvMjAgdG8tYW1iZXItNTAwLzUgYm9yZGVyLWFtYmVyLTUwMC8yMFwiLFxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPG1vdGlvbi5kaXZcbiAgICAgIHdoaWxlSG92ZXI9e3sgeTogLTQsIHRyYW5zaXRpb246IHsgZHVyYXRpb246IDAuMiB9IH19XG4gICAgICBjbGFzc05hbWU9e2ByZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC14bCBib3JkZXIgYmctZ3JhZGllbnQtdG8tYnIgcC01ICR7Y29sb3JDbGFzc2VzW2NvbG9yXX0gYmFja2Ryb3AtYmx1ci1zbWB9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNDAwIHRleHQtc20gZm9udC1tZWRpdW0gbWItMVwiPnt0aXRsZX08L3A+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1ib2xkIHRleHQtd2hpdGVcIj57dmFsdWV9PC9wPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgbXQtMlwiPlxuICAgICAgICAgICAge3RyZW5kICYmIChcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgdGV4dC14cyAke3RyZW5kID09PSBcInVwXCIgPyBcInRleHQtZW1lcmFsZC00MDBcIiA6IHRyZW5kID09PSBcImRvd25cIiA/IFwidGV4dC1yZWQtNDAwXCIgOiBcInRleHQtc2xhdGUtNDAwXCJ9YH0+XG4gICAgICAgICAgICAgICAge3RyZW5kID09PSBcInVwXCIgPyBcIuKGkVwiIDogdHJlbmQgPT09IFwiZG93blwiID8gXCLihpNcIiA6IFwi4oaSXCJ9IFxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbGF0ZS01MDAgdGV4dC14c1wiPntzdWJ0aXRsZX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHAtMi41IHJvdW5kZWQtbGcgYmctJHtjb2xvcn0tNTAwLzEwYH0+XG4gICAgICAgICAgPEljb24gY2xhc3NOYW1lPXtgdy01IGgtNSB0ZXh0LSR7Y29sb3J9LTQwMGB9IHN0eWxlPXt7IGNvbG9yOiBjb2xvciA9PT0gXCJlbWVyYWxkXCIgPyBcIiMzNGQzOTlcIiA6IGNvbG9yID09PSBcImJsdWVcIiA/IFwiIzYwYTVmYVwiIDogY29sb3IgPT09IFwicHVycGxlXCIgPyBcIiNhNzhiZmFcIiA6IFwiI2ZiYmYyNFwiIH19IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBoLTEyXCI+XG4gICAgICAgIDxSZXNwb25zaXZlQ29udGFpbmVyIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIj5cbiAgICAgICAgICA8TGluZUNoYXJ0IGRhdGE9e2RhdGF9PlxuICAgICAgICAgICAgPExpbmVcbiAgICAgICAgICAgICAgdHlwZT1cIm1vbm90b25lXCJcbiAgICAgICAgICAgICAgZGF0YUtleT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPXtjb2xvciA9PT0gXCJlbWVyYWxkXCIgPyBcIiMzNGQzOTlcIiA6IGNvbG9yID09PSBcImJsdWVcIiA/IFwiIzYwYTVmYVwiIDogY29sb3IgPT09IFwicHVycGxlXCIgPyBcIiNhNzhiZmFcIiA6IFwiI2ZiYmYyNFwifVxuICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgICAgZG90PXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9MaW5lQ2hhcnQ+XG4gICAgICAgIDwvUmVzcG9uc2l2ZUNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbmNvbnN0IFNlcnZpY2VDYXJkID0gKHsgXG4gIGFwcCwgXG4gIHN0YXR1cywgXG4gIG9uRGVsZXRlIFxufTogeyBcbiAgYXBwOiBBcHA7IFxuICBzdGF0dXM6IHsgaXNVcDogYm9vbGVhbjsgdXB0aW1lOiBudW1iZXI7IGF2Z1Jlc3BvbnNlVGltZTogbnVtYmVyOyBsYXRlc3Q/OiBTdGF0dXNFbnRyeSB9OyBcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG59KSA9PiB7XG4gIGNvbnN0IFtpc0hvdmVyZWQsIHNldElzSG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNwYXJrbGluZURhdGEgPSBnZW5lcmF0ZVNwYXJrbGluZURhdGEoMTIsIHN0YXR1cy5pc1VwKTtcblxuICByZXR1cm4gKFxuICAgIDxtb3Rpb24uZGl2XG4gICAgICBsYXlvdXRcbiAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgc2NhbGU6IDAuOTUgfX1cbiAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgc2NhbGU6IDEgfX1cbiAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgc2NhbGU6IDAuOTUgfX1cbiAgICAgIHdoaWxlSG92ZXI9e3sgeTogLTIgfX1cbiAgICAgIG9uSG92ZXJTdGFydD17KCkgPT4gc2V0SXNIb3ZlcmVkKHRydWUpfVxuICAgICAgb25Ib3ZlckVuZD17KCkgPT4gc2V0SXNIb3ZlcmVkKGZhbHNlKX1cbiAgICAgIGNsYXNzTmFtZT1cImdyb3VwIHJlbGF0aXZlIGJnLXNsYXRlLTkwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTgwMCByb3VuZGVkLXhsIHAtNSBob3Zlcjpib3JkZXItc2xhdGUtNzAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMFwiXG4gICAgPlxuICAgICAgey8qIFN0YXR1cyBJbmRpY2F0b3IgTGluZSAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYWJzb2x1dGUgdG9wLTAgbGVmdC00IHJpZ2h0LTQgaC0wLjUgcm91bmRlZC1mdWxsICR7c3RhdHVzLmlzVXAgPyBcImJnLWVtZXJhbGQtNTAwXCIgOiBcImJnLXJlZC01MDBcIn1gfSAvPlxuICAgICAgXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIG1iLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy0xMCBoLTEwIHJvdW5kZWQtbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgJHtzdGF0dXMuaXNVcCA/IFwiYmctZW1lcmFsZC01MDAvMTBcIiA6IFwiYmctcmVkLTUwMC8xMFwifWB9PlxuICAgICAgICAgICAgPFNlcnZlciBjbGFzc05hbWU9e2B3LTUgaC01ICR7c3RhdHVzLmlzVXAgPyBcInRleHQtZW1lcmFsZC00MDBcIiA6IFwidGV4dC1yZWQtNDAwXCJ9YH0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICB7YXBwLm5hbWV9XG4gICAgICAgICAgICAgIDxhIGhyZWY9e2FwcC51cmx9IHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTUwMCBob3Zlcjp0ZXh0LWVtZXJhbGQtNDAwIHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgICAgICAgPEV4dGVybmFsTGluayBjbGFzc05hbWU9XCJ3LTMuNSBoLTMuNVwiIC8+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtc2xhdGUtNTAwXCI+UG9ydCB7YXBwLnBvcnR9PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcHgtMi41IHB5LTEgcm91bmRlZC1mdWxsIHRleHQteHMgZm9udC1tZWRpdW0gYm9yZGVyICR7XG4gICAgICAgICAgc3RhdHVzLmlzVXAgXG4gICAgICAgICAgICA/IFwiYmctZW1lcmFsZC01MDAvMTAgYm9yZGVyLWVtZXJhbGQtNTAwLzIwIHRleHQtZW1lcmFsZC00MDBcIiBcbiAgICAgICAgICAgIDogXCJiZy1yZWQtNTAwLzEwIGJvcmRlci1yZWQtNTAwLzIwIHRleHQtcmVkLTQwMFwiXG4gICAgICAgIH1gfT5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4IGgtMS41IHctMS41XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2BhbmltYXRlLXBpbmcgYWJzb2x1dGUgaW5saW5lLWZsZXggaC1mdWxsIHctZnVsbCByb3VuZGVkLWZ1bGwgb3BhY2l0eS03NSAke3N0YXR1cy5pc1VwID8gXCJiZy1lbWVyYWxkLTQwMFwiIDogXCJiZy1yZWQtNDAwXCJ9YH0+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgcmVsYXRpdmUgaW5saW5lLWZsZXggcm91bmRlZC1mdWxsIGgtMS41IHctMS41ICR7c3RhdHVzLmlzVXAgPyBcImJnLWVtZXJhbGQtNTAwXCIgOiBcImJnLXJlZC01MDBcIn1gfT48L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtzdGF0dXMuaXNVcCA/IFwiT3BlcmF0aW9uYWxcIiA6IFwiRG93blwifVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogTWV0cmljcyAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgIHsvKiBVcHRpbWUgKi99XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMS41XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtc2xhdGUtNDAwXCI+VXB0aW1lPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtd2hpdGVcIj57c3RhdHVzLnVwdGltZX0lPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC0xLjUgdy1mdWxsIGJnLXNsYXRlLTgwMCByb3VuZGVkLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICA8bW90aW9uLmRpdiBcbiAgICAgICAgICAgICAgaW5pdGlhbD17eyB3aWR0aDogMCB9fVxuICAgICAgICAgICAgICBhbmltYXRlPXt7IHdpZHRoOiBgJHtzdGF0dXMudXB0aW1lfSVgIH19XG4gICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDEsIGRlbGF5OiAwLjIgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgaC1mdWxsIHJvdW5kZWQtZnVsbCAke3N0YXR1cy51cHRpbWUgPiA5NSA/IFwiYmctZW1lcmFsZC01MDBcIiA6IHN0YXR1cy51cHRpbWUgPiA4MCA/IFwiYmctYW1iZXItNTAwXCIgOiBcImJnLXJlZC01MDBcIn1gfSBcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBSZXNwb25zZSBUaW1lICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1zbGF0ZS00MDBcIj5SZXNwb25zZSBUaW1lPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlXCI+XG4gICAgICAgICAgICB7c3RhdHVzLmF2Z1Jlc3BvbnNlVGltZSA+IDAgPyBgJHtzdGF0dXMuYXZnUmVzcG9uc2VUaW1lfW1zYCA6IFwi4oCUXCJ9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogU3BhcmtsaW5lICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtMTAgLW14LTFcIj5cbiAgICAgICAgICA8UmVzcG9uc2l2ZUNvbnRhaW5lciB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCI+XG4gICAgICAgICAgICA8TGluZUNoYXJ0IGRhdGE9e3NwYXJrbGluZURhdGF9PlxuICAgICAgICAgICAgICA8TGluZVxuICAgICAgICAgICAgICAgIHR5cGU9XCJtb25vdG9uZVwiXG4gICAgICAgICAgICAgICAgZGF0YUtleT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBzdHJva2U9e3N0YXR1cy5pc1VwID8gXCIjMzRkMzk5XCIgOiBcIiNmODcxNzFcIn1cbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17MS41fVxuICAgICAgICAgICAgICAgIGRvdD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0xpbmVDaGFydD5cbiAgICAgICAgICA8L1Jlc3BvbnNpdmVDb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBMYXN0IENoZWNrZWQgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHRleHQteHMgdGV4dC1zbGF0ZS01MDBcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICAgICAgPENsb2NrIGNsYXNzTmFtZT1cInctMyBoLTNcIiAvPlxuICAgICAgICAgICAge3N0YXR1cy5sYXRlc3QgPyBuZXcgRGF0ZShzdGF0dXMubGF0ZXN0LnRpbWVzdGFtcCkudG9Mb2NhbGVUaW1lU3RyaW5nKCkgOiBcIk5ldmVyXCJ9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIFxuICAgICAgICAgIHsvKiBIb3ZlciBBY3Rpb25zICovfVxuICAgICAgICAgIDxBbmltYXRlUHJlc2VuY2U+XG4gICAgICAgICAgICB7aXNIb3ZlcmVkICYmIChcbiAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHg6IDEwIH19XG4gICAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxLCB4OiAwIH19XG4gICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB4OiAxMCB9fVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwicC0xLjUgdGV4dC1zbGF0ZS00MDAgaG92ZXI6dGV4dC13aGl0ZSBob3ZlcjpiZy1zbGF0ZS04MDAgcm91bmRlZCB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICAgICAgICAgICAgPFJlZnJlc2hDdyBjbGFzc05hbWU9XCJ3LTMuNSBoLTMuNVwiIC8+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwLTEuNSB0ZXh0LXNsYXRlLTQwMCBob3Zlcjp0ZXh0LXdoaXRlIGhvdmVyOmJnLXNsYXRlLTgwMCByb3VuZGVkIHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgICAgICAgICA8U2V0dGluZ3MgY2xhc3NOYW1lPVwidy0zLjUgaC0zLjVcIiAvPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkRlbGV0ZX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInAtMS41IHRleHQtc2xhdGUtNDAwIGhvdmVyOnRleHQtcmVkLTQwMCBob3ZlcjpiZy1yZWQtNTAwLzEwIHJvdW5kZWQgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxUcmFzaDIgY2xhc3NOYW1lPVwidy0zLjUgaC0zLjVcIiAvPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhc2hib2FyZCgpIHtcbiAgY29uc3QgW2FwcHMsIHNldEFwcHNdID0gdXNlU3RhdGU8QXBwW10+KFtdKTtcbiAgY29uc3QgW3N0YXR1cywgc2V0U3RhdHVzXSA9IHVzZVN0YXRlPFN0YXR1c0VudHJ5W10+KFtdKTtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtzaWRlYmFyQ29sbGFwc2VkLCBzZXRTaWRlYmFyQ29sbGFwc2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2FjdGl2ZU5hdiwgc2V0QWN0aXZlTmF2XSA9IHVzZVN0YXRlKFwib3ZlcnZpZXdcIik7XG4gIGNvbnN0IFtzaG93QWRkTW9kYWwsIHNldFNob3dBZGRNb2RhbF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtuZXdBcHAsIHNldE5ld0FwcF0gPSB1c2VTdGF0ZTxQYXJ0aWFsPEFwcD4+KHtcbiAgICBuYW1lOiBcIlwiLFxuICAgIHVybDogXCJodHRwOi8vbG9jYWxob3N0OlwiLFxuICAgIHBvcnQ6IDMwMDAsXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgfSk7XG5cbiAgY29uc3QgbmF2SXRlbXM6IE5hdkl0ZW1bXSA9IFtcbiAgICB7IGlkOiBcIm92ZXJ2aWV3XCIsIGxhYmVsOiBcIk92ZXJ2aWV3XCIsIGljb246IDxMYXlvdXREYXNoYm9hcmQgY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+IH0sXG4gICAgeyBpZDogXCJzZXJ2aWNlc1wiLCBsYWJlbDogXCJNb25pdG9yZWQgU2VydmljZXNcIiwgaWNvbjogPE1vbml0b3IgY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+IH0sXG4gICAgeyBpZDogXCJpbmNpZGVudHNcIiwgbGFiZWw6IFwiSW5jaWRlbnRzXCIsIGljb246IDxBbGVydFRyaWFuZ2xlIGNsYXNzTmFtZT1cInctNSBoLTVcIiAvPiB9LFxuICAgIHsgaWQ6IFwiaGlzdG9yeVwiLCBsYWJlbDogXCJIaXN0b3J5IC8gTG9nc1wiLCBpY29uOiA8SGlzdG9yeSBjbGFzc05hbWU9XCJ3LTUgaC01XCIgLz4gfSxcbiAgICB7IGlkOiBcInNldHRpbmdzXCIsIGxhYmVsOiBcIlNldHRpbmdzXCIsIGljb246IDxTZXR0aW5ncyBjbGFzc05hbWU9XCJ3LTUgaC01XCIgLz4gfSxcbiAgXTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YSgpO1xuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoZmV0Y2hEYXRhLCAzMDAwMCk7XG4gICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICB9LCBbXSk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChcIi9hcGkvbW9uaXRvclwiKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXMuanNvbigpO1xuICAgICAgc2V0QXBwcyhkYXRhLmFwcHMgfHwgW10pO1xuICAgICAgc2V0U3RhdHVzKGRhdGEuc3RhdHVzIHx8IFtdKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggZGF0YTpcIiwgZXJyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gYWRkQXBwKGU6IFJlYWN0LkZvcm1FdmVudCkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoIW5ld0FwcC5uYW1lIHx8ICFuZXdBcHAudXJsKSByZXR1cm47XG4gICAgYXdhaXQgZmV0Y2goXCIvYXBpL21vbml0b3JcIiwge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgYWN0aW9uOiBcImFkZEFwcFwiLCBhcHA6IG5ld0FwcCB9KSxcbiAgICB9KTtcbiAgICBzZXRTaG93QWRkTW9kYWwoZmFsc2UpO1xuICAgIHNldE5ld0FwcCh7IG5hbWU6IFwiXCIsIHVybDogXCJodHRwOi8vbG9jYWxob3N0OlwiLCBwb3J0OiAzMDAwLCBlbmFibGVkOiB0cnVlIH0pO1xuICAgIGZldGNoRGF0YSgpO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGVsZXRlQXBwKGlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIWNvbmZpcm0oXCJEZWxldGUgdGhpcyBtb25pdG9yP1wiKSkgcmV0dXJuO1xuICAgIGF3YWl0IGZldGNoKFwiL2FwaS9tb25pdG9yXCIsIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGFjdGlvbjogXCJkZWxldGVBcHBcIiwgaWQgfSksXG4gICAgfSk7XG4gICAgZmV0Y2hEYXRhKCk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRBcHBTdGF0dXMoYXBwSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGFwcFN0YXR1cyA9IHN0YXR1cy5maWx0ZXIoKHMpID0+IHMuYXBwSWQgPT09IGFwcElkKTtcbiAgICBjb25zdCBsYXRlc3QgPSBhcHBTdGF0dXNbYXBwU3RhdHVzLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGlzVXAgPSBsYXRlc3Q/LnN0YXR1cyA9PT0gXCJ1cFwiO1xuICAgIGNvbnN0IHVwdGltZSA9IGFwcFN0YXR1cy5sZW5ndGggPiAwIFxuICAgICAgPyBNYXRoLnJvdW5kKChhcHBTdGF0dXMuZmlsdGVyKHMgPT4gcy5zdGF0dXMgPT09IFwidXBcIikubGVuZ3RoIC8gYXBwU3RhdHVzLmxlbmd0aCkgKiAxMDApXG4gICAgICA6IDEwMDtcbiAgICBjb25zdCBhdmdSZXNwb25zZVRpbWUgPSBhcHBTdGF0dXMubGVuZ3RoID4gMFxuICAgICAgPyBNYXRoLnJvdW5kKGFwcFN0YXR1cy5maWx0ZXIocyA9PiBzLnJlc3BvbnNlVGltZSkucmVkdWNlKChhY2MsIHMpID0+IGFjYyArIChzLnJlc3BvbnNlVGltZSB8fCAwKSwgMCkgLyBhcHBTdGF0dXMuZmlsdGVyKHMgPT4gcy5yZXNwb25zZVRpbWUpLmxlbmd0aCkgfHwgMFxuICAgICAgOiAwO1xuICAgIHJldHVybiB7IGxhdGVzdCwgaXNVcCwgdXB0aW1lLCBhdmdSZXNwb25zZVRpbWUgfTtcbiAgfVxuXG4gIGNvbnN0IHN0YXRzID0ge1xuICAgIHRvdGFsOiBhcHBzLmxlbmd0aCxcbiAgICBvbmxpbmU6IGFwcHMuZmlsdGVyKChhcHApID0+IGdldEFwcFN0YXR1cyhhcHAuaWQpLmlzVXApLmxlbmd0aCxcbiAgICBvZmZsaW5lOiBhcHBzLmZpbHRlcigoYXBwKSA9PiAhZ2V0QXBwU3RhdHVzKGFwcC5pZCkuaXNVcCkubGVuZ3RoLFxuICAgIGF2Z1VwdGltZTogYXBwcy5sZW5ndGggPiAwIFxuICAgICAgPyBNYXRoLnJvdW5kKGFwcHMucmVkdWNlKChhY2MsIGFwcCkgPT4gYWNjICsgZ2V0QXBwU3RhdHVzKGFwcC5pZCkudXB0aW1lLCAwKSAvIGFwcHMubGVuZ3RoKVxuICAgICAgOiAwLFxuICAgIGF2Z1Jlc3BvbnNlVGltZTogYXBwcy5sZW5ndGggPiAwXG4gICAgICA/IE1hdGgucm91bmQoYXBwcy5yZWR1Y2UoKGFjYywgYXBwKSA9PiBhY2MgKyBnZXRBcHBTdGF0dXMoYXBwLmlkKS5hdmdSZXNwb25zZVRpbWUsIDApIC8gYXBwcy5sZW5ndGgpXG4gICAgICA6IDAsXG4gICAgaW5jaWRlbnRzOiBzdGF0dXMuZmlsdGVyKHMgPT4gcy5zdGF0dXMgPT09IFwiZG93blwiKS5sZW5ndGgsXG4gIH07XG5cbiAgY29uc3QgYWxsVXAgPSBzdGF0cy5vbmxpbmUgPT09IHN0YXRzLnRvdGFsICYmIHN0YXRzLnRvdGFsID4gMDtcblxuICAvLyBHZW5lcmF0ZSBzcGFya2xpbmUgZGF0YSBmb3IgbWV0cmljc1xuICBjb25zdCBzZXJ2aWNlc0RhdGEgPSBnZW5lcmF0ZVNwYXJrbGluZURhdGEoMjAsIHRydWUpO1xuICBjb25zdCB1cHRpbWVEYXRhID0gZ2VuZXJhdGVTcGFya2xpbmVEYXRhKDIwLCB0cnVlKTtcbiAgY29uc3QgcmVzcG9uc2VEYXRhID0gZ2VuZXJhdGVTcGFya2xpbmVEYXRhKDIwLCB0cnVlKS5tYXAoZCA9PiAoeyAuLi5kLCB2YWx1ZTogZC52YWx1ZSAqIDIgfSkpO1xuICBjb25zdCBpbmNpZGVudHNEYXRhID0gZ2VuZXJhdGVTcGFya2xpbmVEYXRhKDIwLCBmYWxzZSk7XG5cbiAgaWYgKGxvYWRpbmcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctc2xhdGUtOTUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPG1vdGlvbi5kaXYgXG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgcm90YXRlOiAzNjAgfX1cbiAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMiwgcmVwZWF0OiBJbmZpbml0eSwgZWFzZTogXCJsaW5lYXJcIiB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTEyIGgtMTIgcm91bmRlZC14bCBiZy1ncmFkaWVudC10by1iciBmcm9tLWVtZXJhbGQtNTAwIHRvLWN5YW4tNTAwXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgdy0xMiBoLTEyIHJvdW5kZWQteGwgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1lbWVyYWxkLTUwMCB0by1jeWFuLTUwMCBibHVyLXhsIG9wYWNpdHktNTBcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNDAwXCI+TG9hZGluZyBkYXNoYm9hcmQuLi48L3A+XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLXNsYXRlLTk1MCB0ZXh0LXNsYXRlLTEwMCBmbGV4XCI+XG4gICAgICB7LyogQ29sbGFwc2libGUgU2lkZWJhciAqL31cbiAgICAgIDxtb3Rpb24uYXNpZGVcbiAgICAgICAgaW5pdGlhbD17ZmFsc2V9XG4gICAgICAgIGFuaW1hdGU9e3sgd2lkdGg6IHNpZGViYXJDb2xsYXBzZWQgPyA3MiA6IDI0MCB9fVxuICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCBsZWZ0LTAgdG9wLTAgYm90dG9tLTAgYmctc2xhdGUtOTAwLzgwIGJhY2tkcm9wLWJsdXIteGwgYm9yZGVyLXIgYm9yZGVyLXNsYXRlLTgwMCB6LTUwIGZsZXggZmxleC1jb2xcIlxuICAgICAgPlxuICAgICAgICB7LyogTG9nbyBBcmVhICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtMTYgZmxleCBpdGVtcy1jZW50ZXIgcHgtNCBib3JkZXItYiBib3JkZXItc2xhdGUtODAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTggaC04IHJvdW5kZWQtbGcgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1lbWVyYWxkLTUwMCB0by1jeWFuLTUwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPEFjdGl2aXR5IGNsYXNzTmFtZT1cInctNCBoLTQgdGV4dC13aGl0ZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgICAgeyFzaWRlYmFyQ29sbGFwc2VkICYmIChcbiAgICAgICAgICAgICAgPG1vdGlvbi5zcGFuXG4gICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB3aWR0aDogMCB9fVxuICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgd2lkdGg6IFwiYXV0b1wiIH19XG4gICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB3aWR0aDogMCB9fVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1sLTMgZm9udC1ib2xkIHRleHQtbGcgd2hpdGVzcGFjZS1ub3dyYXAgb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEhlYXJ0YmVhdFxuICAgICAgICAgICAgICA8L21vdGlvbi5zcGFuPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIE5hdmlnYXRpb24gKi99XG4gICAgICAgIDxuYXYgY2xhc3NOYW1lPVwiZmxleC0xIHAtMyBzcGFjZS15LTFcIj5cbiAgICAgICAgICB7bmF2SXRlbXMubWFwKChpdGVtKSA9PiAoXG4gICAgICAgICAgICA8U2lkZWJhckl0ZW1cbiAgICAgICAgICAgICAga2V5PXtpdGVtLmlkfVxuICAgICAgICAgICAgICBpdGVtPXtpdGVtfVxuICAgICAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlTmF2ID09PSBpdGVtLmlkfVxuICAgICAgICAgICAgICBpc0NvbGxhcHNlZD17c2lkZWJhckNvbGxhcHNlZH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlTmF2KGl0ZW0uaWQpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9uYXY+XG5cbiAgICAgICAgey8qIENvbGxhcHNlIEJ1dHRvbiAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTMgYm9yZGVyLXQgYm9yZGVyLXNsYXRlLTgwMFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNpZGViYXJDb2xsYXBzZWQoIXNpZGViYXJDb2xsYXBzZWQpfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtMiB0ZXh0LXNsYXRlLTQwMCBob3Zlcjp0ZXh0LXdoaXRlIGhvdmVyOmJnLXNsYXRlLTgwMC81MCByb3VuZGVkLWxnIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2lkZWJhckNvbGxhcHNlZCA/IDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+IDogPENoZXZyb25MZWZ0IGNsYXNzTmFtZT1cInctNSBoLTVcIiAvPn1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21vdGlvbi5hc2lkZT5cblxuICAgICAgey8qIE1haW4gQ29udGVudCAqL31cbiAgICAgIDxtYWluIFxuICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTEgbWluLWgtc2NyZWVuIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMFwiXG4gICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IHNpZGViYXJDb2xsYXBzZWQgPyA3MiA6IDI0MCB9fVxuICAgICAgPlxuICAgICAgICB7LyogVG9wIE5hdmJhciAqL31cbiAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJoLTE2IGJnLXNsYXRlLTkwMC81MCBiYWNrZHJvcC1ibHVyLXNtIGJvcmRlci1iIGJvcmRlci1zbGF0ZS04MDAgc3RpY2t5IHRvcC0wIHotNDAgcHgtNiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICB7LyogR2xvYmFsIFN0YXR1cyBCYW5uZXIgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBweC0zIHB5LTEuNSByb3VuZGVkLWZ1bGwgYm9yZGVyICR7XG4gICAgICAgICAgICAgIGFsbFVwIFxuICAgICAgICAgICAgICAgID8gXCJiZy1lbWVyYWxkLTUwMC8xMCBib3JkZXItZW1lcmFsZC01MDAvMjBcIiBcbiAgICAgICAgICAgICAgICA6IFwiYmctYW1iZXItNTAwLzEwIGJvcmRlci1hbWJlci01MDAvMjBcIlxuICAgICAgICAgICAgfWB9PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2ByZWxhdGl2ZSBmbGV4IGgtMiB3LTJgfT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2BhbmltYXRlLXBpbmcgYWJzb2x1dGUgaW5saW5lLWZsZXggaC1mdWxsIHctZnVsbCByb3VuZGVkLWZ1bGwgb3BhY2l0eS03NSAke2FsbFVwID8gXCJiZy1lbWVyYWxkLTQwMFwiIDogXCJiZy1hbWJlci00MDBcIn1gfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgcmVsYXRpdmUgaW5saW5lLWZsZXggcm91bmRlZC1mdWxsIGgtMiB3LTIgJHthbGxVcCA/IFwiYmctZW1lcmFsZC01MDBcIiA6IFwiYmctYW1iZXItNTAwXCJ9YH0+PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YHRleHQtc20gZm9udC1tZWRpdW0gJHthbGxVcCA/IFwidGV4dC1lbWVyYWxkLTQwMFwiIDogXCJ0ZXh0LWFtYmVyLTQwMFwifWB9PlxuICAgICAgICAgICAgICAgIHthbGxVcCA/IFwiQWxsIFN5c3RlbXMgT3BlcmF0aW9uYWxcIiA6IGAke3N0YXRzLm9mZmxpbmV9IFNlcnZpY2Uke3N0YXRzLm9mZmxpbmUgPiAxID8gJ3MnIDogJyd9IERvd25gfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNTAwIHRleHQteHNcIj7igKIgVXBkYXRlZCB7bmV3IERhdGUoKS50b0xvY2FsZVRpbWVTdHJpbmcoKX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiBSaWdodCBTaWRlIEFjdGlvbnMgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgey8qIFNlYXJjaCAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPFNlYXJjaCBjbGFzc05hbWU9XCJ3LTQgaC00IGFic29sdXRlIGxlZnQtMyB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgdGV4dC1zbGF0ZS01MDBcIiAvPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctNjQgYmctc2xhdGUtODAwLzUwIGJvcmRlciBib3JkZXItc2xhdGUtNzAwIHJvdW5kZWQtbGcgcGwtMTAgcHItNCBweS0yIHRleHQtc20gdGV4dC13aGl0ZSBwbGFjZWhvbGRlci1zbGF0ZS01MDAgZm9jdXM6Ym9yZGVyLWVtZXJhbGQtNTAwLzUwIGZvY3VzOm91dGxpbmUtbm9uZSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIEFkZCBNb25pdG9yICovfVxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QWRkTW9kYWwodHJ1ZSl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHB4LTQgcHktMiBiZy1lbWVyYWxkLTYwMCBob3ZlcjpiZy1lbWVyYWxkLTUwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbGcgdGV4dC1zbSBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxQbHVzIGNsYXNzTmFtZT1cInctNCBoLTRcIiAvPlxuICAgICAgICAgICAgICBBZGQgTW9uaXRvclxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIHsvKiBSZWZyZXNoICovfVxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXtmZXRjaERhdGF9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInAtMiB0ZXh0LXNsYXRlLTQwMCBob3Zlcjp0ZXh0LXdoaXRlIGhvdmVyOmJnLXNsYXRlLTgwMCByb3VuZGVkLWxnIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFJlZnJlc2hDdyBjbGFzc05hbWU9XCJ3LTUgaC01XCIgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICB7LyogTm90aWZpY2F0aW9ucyAqL31cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwicC0yIHRleHQtc2xhdGUtNDAwIGhvdmVyOnRleHQtd2hpdGUgaG92ZXI6Ymctc2xhdGUtODAwIHJvdW5kZWQtbGcgdHJhbnNpdGlvbi1jb2xvcnMgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPEJlbGwgY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+XG4gICAgICAgICAgICAgIHtzdGF0cy5pbmNpZGVudHMgPiAwICYmIChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMSByaWdodC0xIHctMiBoLTIgYmctcmVkLTUwMCByb3VuZGVkLWZ1bGxcIiAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIHsvKiBBdmF0YXIgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctOSBoLTkgcm91bmRlZC1mdWxsIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tZW1lcmFsZC01MDAgdG8tY3lhbi01MDAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LW1lZGl1bSB0ZXh0LXNtXCI+XG4gICAgICAgICAgICAgIE1CXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgey8qIERhc2hib2FyZCBDb250ZW50ICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtNiBzcGFjZS15LTZcIj5cbiAgICAgICAgICB7LyogS1BJIFJvdyAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgc206Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTQgZ2FwLTRcIj5cbiAgICAgICAgICAgIDxNZXRyaWNDYXJkXG4gICAgICAgICAgICAgIHRpdGxlPVwiU2VydmljZXMgT25saW5lXCJcbiAgICAgICAgICAgICAgdmFsdWU9e2Ake3N0YXRzLm9ubGluZX0vJHtzdGF0cy50b3RhbH1gfVxuICAgICAgICAgICAgICBzdWJ0aXRsZT17YWxsVXAgPyBcIkFsbCBoZWFsdGh5XCIgOiBgJHtzdGF0cy5vZmZsaW5lfSBkb3duYH1cbiAgICAgICAgICAgICAgaWNvbj17U2VydmVyfVxuICAgICAgICAgICAgICBjb2xvcj1cImVtZXJhbGRcIlxuICAgICAgICAgICAgICBkYXRhPXtzZXJ2aWNlc0RhdGF9XG4gICAgICAgICAgICAgIHRyZW5kPVwidXBcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxNZXRyaWNDYXJkXG4gICAgICAgICAgICAgIHRpdGxlPVwiQXZlcmFnZSBVcHRpbWVcIlxuICAgICAgICAgICAgICB2YWx1ZT17YCR7c3RhdHMuYXZnVXB0aW1lfSVgfVxuICAgICAgICAgICAgICBzdWJ0aXRsZT1cIkxhc3QgMzAgZGF5c1wiXG4gICAgICAgICAgICAgIGljb249e0NoZWNrQ2lyY2xlMn1cbiAgICAgICAgICAgICAgY29sb3I9XCJibHVlXCJcbiAgICAgICAgICAgICAgZGF0YT17dXB0aW1lRGF0YX1cbiAgICAgICAgICAgICAgdHJlbmQ9XCJ1cFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPE1ldHJpY0NhcmRcbiAgICAgICAgICAgICAgdGl0bGU9XCJBdmcgUmVzcG9uc2UgVGltZVwiXG4gICAgICAgICAgICAgIHZhbHVlPXtgJHtzdGF0cy5hdmdSZXNwb25zZVRpbWV9bXNgfVxuICAgICAgICAgICAgICBzdWJ0aXRsZT1cIkFjcm9zcyBhbGwgc2VydmljZXNcIlxuICAgICAgICAgICAgICBpY29uPXtaYXB9XG4gICAgICAgICAgICAgIGNvbG9yPVwicHVycGxlXCJcbiAgICAgICAgICAgICAgZGF0YT17cmVzcG9uc2VEYXRhfVxuICAgICAgICAgICAgICB0cmVuZD17c3RhdHMuYXZnUmVzcG9uc2VUaW1lIDwgMjAwID8gXCJ1cFwiIDogXCJkb3duXCJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPE1ldHJpY0NhcmRcbiAgICAgICAgICAgICAgdGl0bGU9XCJUb3RhbCBJbmNpZGVudHNcIlxuICAgICAgICAgICAgICB2YWx1ZT17c3RhdHMuaW5jaWRlbnRzfVxuICAgICAgICAgICAgICBzdWJ0aXRsZT1cIkxhc3QgMjQgaG91cnNcIlxuICAgICAgICAgICAgICBpY29uPXtBbGVydFRyaWFuZ2xlfVxuICAgICAgICAgICAgICBjb2xvcj1cImFtYmVyXCJcbiAgICAgICAgICAgICAgZGF0YT17aW5jaWRlbnRzRGF0YX1cbiAgICAgICAgICAgICAgdHJlbmQ9e3N0YXRzLmluY2lkZW50cyA9PT0gMCA/IFwidXBcIiA6IFwiZG93blwifVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiBTZXJ2aWNlcyBHcmlkICovfVxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi00XCI+XG4gICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZVwiPk1vbml0b3JlZCBTZXJ2aWNlczwvaDI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1zbGF0ZS01MDBcIj57c3RhdHMudG90YWx9IHNlcnZpY2VzPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxtb3Rpb24uZGl2IFxuICAgICAgICAgICAgICBsYXlvdXRcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiB4bDpncmlkLWNvbHMtMyBnYXAtNFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cInBvcExheW91dFwiPlxuICAgICAgICAgICAgICAgIHthcHBzLm1hcCgoYXBwKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBhcHBTdGF0dXMgPSBnZXRBcHBTdGF0dXMoYXBwLmlkKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxTZXJ2aWNlQ2FyZFxuICAgICAgICAgICAgICAgICAgICAgIGtleT17YXBwLmlkfVxuICAgICAgICAgICAgICAgICAgICAgIGFwcD17YXBwfVxuICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz17YXBwU3RhdHVzfVxuICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlPXsoKSA9PiBkZWxldGVBcHAoYXBwLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuXG4gICAgICAgICAgICB7YXBwcy5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgeTogMjAgfX1cbiAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS0xNiBiZy1zbGF0ZS05MDAvMzAgcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLWRhc2hlZCBib3JkZXItc2xhdGUtODAwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xNiBoLTE2IGJnLXNsYXRlLTgwMCByb3VuZGVkLTJ4bCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBteC1hdXRvIG1iLTRcIj5cbiAgICAgICAgICAgICAgICAgIDxNb25pdG9yIGNsYXNzTmFtZT1cInctOCBoLTggdGV4dC1zbGF0ZS02MDBcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZSBtYi0yXCI+Tm8gbW9uaXRvcnMgeWV0PC9oMz5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTUwMCBtYi00XCI+U3RhcnQgbW9uaXRvcmluZyB5b3VyIHNlcnZpY2VzPC9wPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dBZGRNb2RhbCh0cnVlKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInB4LTQgcHktMiBiZy1lbWVyYWxkLTYwMCBob3ZlcjpiZy1lbWVyYWxkLTUwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbGcgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEFkZCBZb3VyIEZpcnN0IE1vbml0b3JcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21haW4+XG5cbiAgICAgIHsvKiBBZGQgTW9uaXRvciBNb2RhbCAqL31cbiAgICAgIDxBbmltYXRlUHJlc2VuY2U+XG4gICAgICAgIHtzaG93QWRkTW9kYWwgJiYgKFxuICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIGJnLWJsYWNrLzYwIGJhY2tkcm9wLWJsdXItc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgei01MCBwLTRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgc2NhbGU6IDAuOTUsIHk6IDIwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgc2NhbGU6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCBzY2FsZTogMC45NSwgeTogMjAgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctc2xhdGUtOTAwIGJvcmRlciBib3JkZXItc2xhdGUtODAwIHJvdW5kZWQteGwgcC02IHctZnVsbCBtYXgtdy1tZCBzaGFkb3ctMnhsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMlwiPkFkZCBOZXcgTW9uaXRvcjwvaDI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNDAwIHRleHQtc20gbWItNlwiPkNvbmZpZ3VyZSBhIG5ldyBzZXJ2aWNlIHRvIG1vbml0b3I8L3A+XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8Zm9ybSBvblN1Ym1pdD17YWRkQXBwfSBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1zbGF0ZS0zMDAgbWItMlwiPlNlcnZpY2UgTmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmV3QXBwLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0TmV3QXBwKHsgLi4ubmV3QXBwLCBuYW1lOiBlLnRhcmdldC52YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLXNsYXRlLTgwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCByb3VuZGVkLWxnIHB4LTQgcHktMi41IHRleHQtd2hpdGUgcGxhY2Vob2xkZXItc2xhdGUtNTAwIGZvY3VzOmJvcmRlci1lbWVyYWxkLTUwMC81MCBmb2N1czpvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk15IFNlcnZpY2VcIlxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtc2xhdGUtMzAwIG1iLTJcIj5VUkw8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmV3QXBwLnVybH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldE5ld0FwcCh7IC4uLm5ld0FwcCwgdXJsOiBlLnRhcmdldC52YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgYmctc2xhdGUtODAwLzUwIGJvcmRlciBib3JkZXItc2xhdGUtNzAwIHJvdW5kZWQtbGcgcHgtNCBweS0yLjUgdGV4dC13aGl0ZSBwbGFjZWhvbGRlci1zbGF0ZS01MDAgZm9jdXM6Ym9yZGVyLWVtZXJhbGQtNTAwLzUwIGZvY3VzOm91dGxpbmUtbm9uZSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtc2xhdGUtMzAwIG1iLTJcIj5Qb3J0PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e25ld0FwcC5wb3J0fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0TmV3QXBwKHsgLi4ubmV3QXBwLCBwb3J0OiBwYXJzZUludChlLnRhcmdldC52YWx1ZSkgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLXNsYXRlLTgwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCByb3VuZGVkLWxnIHB4LTQgcHktMi41IHRleHQtd2hpdGUgcGxhY2Vob2xkZXItc2xhdGUtNTAwIGZvY3VzOmJvcmRlci1lbWVyYWxkLTUwMC81MCBmb2N1czpvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMyBwdC00XCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QWRkTW9kYWwoZmFsc2UpfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTEgcHgtNCBweS0yLjUgYm9yZGVyIGJvcmRlci1zbGF0ZS03MDAgcm91bmRlZC1sZyB0ZXh0LXNsYXRlLTMwMCBob3ZlcjpiZy1zbGF0ZS04MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleC0xIHB4LTQgcHktMi41IGJnLWVtZXJhbGQtNjAwIGhvdmVyOmJnLWVtZXJhbGQtNTAwIHRleHQtd2hpdGUgcm91bmRlZC1sZyBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEFkZCBNb25pdG9yXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgIDwvZGl2PlxuICApO1xufSJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwibW90aW9uIiwiQW5pbWF0ZVByZXNlbmNlIiwiTGluZUNoYXJ0IiwiTGluZSIsIlJlc3BvbnNpdmVDb250YWluZXIiLCJBY3Rpdml0eSIsIlBsdXMiLCJSZWZyZXNoQ3ciLCJUcmFzaDIiLCJFeHRlcm5hbExpbmsiLCJTZWFyY2giLCJCZWxsIiwiU2V0dGluZ3MiLCJDaGV2cm9uTGVmdCIsIkNoZXZyb25SaWdodCIsIkxheW91dERhc2hib2FyZCIsIk1vbml0b3IiLCJBbGVydFRyaWFuZ2xlIiwiSGlzdG9yeSIsIkNoZWNrQ2lyY2xlMiIsIkNsb2NrIiwiWmFwIiwiU2VydmVyIiwiZ2VuZXJhdGVTcGFya2xpbmVEYXRhIiwicG9pbnRzIiwiaXNVcCIsIkFycmF5IiwiZnJvbSIsImxlbmd0aCIsIl8iLCJpIiwidmFsdWUiLCJNYXRoIiwicmFuZG9tIiwidGltZSIsIlNpZGViYXJJdGVtIiwiaXRlbSIsImlzQWN0aXZlIiwiaXNDb2xsYXBzZWQiLCJvbkNsaWNrIiwiYnV0dG9uIiwid2hpbGVIb3ZlciIsIngiLCJ3aGlsZVRhcCIsInNjYWxlIiwiY2xhc3NOYW1lIiwic3BhbiIsImljb24iLCJtb2RlIiwiaW5pdGlhbCIsIm9wYWNpdHkiLCJ3aWR0aCIsImFuaW1hdGUiLCJleGl0IiwibGFiZWwiLCJNZXRyaWNDYXJkIiwidGl0bGUiLCJzdWJ0aXRsZSIsIkljb24iLCJjb2xvciIsImRhdGEiLCJ0cmVuZCIsImNvbG9yQ2xhc3NlcyIsImVtZXJhbGQiLCJibHVlIiwicHVycGxlIiwiYW1iZXIiLCJkaXYiLCJ5IiwidHJhbnNpdGlvbiIsImR1cmF0aW9uIiwicCIsInN0eWxlIiwiaGVpZ2h0IiwidHlwZSIsImRhdGFLZXkiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsImRvdCIsIlNlcnZpY2VDYXJkIiwiYXBwIiwic3RhdHVzIiwib25EZWxldGUiLCJpc0hvdmVyZWQiLCJzZXRJc0hvdmVyZWQiLCJzcGFya2xpbmVEYXRhIiwibGF5b3V0Iiwib25Ib3ZlclN0YXJ0Iiwib25Ib3ZlckVuZCIsImgzIiwibmFtZSIsImEiLCJocmVmIiwidXJsIiwidGFyZ2V0IiwicmVsIiwicG9ydCIsInVwdGltZSIsImRlbGF5IiwiYXZnUmVzcG9uc2VUaW1lIiwibGF0ZXN0IiwiRGF0ZSIsInRpbWVzdGFtcCIsInRvTG9jYWxlVGltZVN0cmluZyIsIkRhc2hib2FyZCIsImFwcHMiLCJzZXRBcHBzIiwic2V0U3RhdHVzIiwibG9hZGluZyIsInNldExvYWRpbmciLCJzaWRlYmFyQ29sbGFwc2VkIiwic2V0U2lkZWJhckNvbGxhcHNlZCIsImFjdGl2ZU5hdiIsInNldEFjdGl2ZU5hdiIsInNob3dBZGRNb2RhbCIsInNldFNob3dBZGRNb2RhbCIsIm5ld0FwcCIsInNldE5ld0FwcCIsImVuYWJsZWQiLCJuYXZJdGVtcyIsImlkIiwiZmV0Y2hEYXRhIiwiaW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJyZXMiLCJmZXRjaCIsImpzb24iLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJhZGRBcHAiLCJlIiwicHJldmVudERlZmF1bHQiLCJtZXRob2QiLCJoZWFkZXJzIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJhY3Rpb24iLCJkZWxldGVBcHAiLCJjb25maXJtIiwiZ2V0QXBwU3RhdHVzIiwiYXBwSWQiLCJhcHBTdGF0dXMiLCJmaWx0ZXIiLCJzIiwicm91bmQiLCJyZXNwb25zZVRpbWUiLCJyZWR1Y2UiLCJhY2MiLCJzdGF0cyIsInRvdGFsIiwib25saW5lIiwib2ZmbGluZSIsImF2Z1VwdGltZSIsImluY2lkZW50cyIsImFsbFVwIiwic2VydmljZXNEYXRhIiwidXB0aW1lRGF0YSIsInJlc3BvbnNlRGF0YSIsIm1hcCIsImQiLCJpbmNpZGVudHNEYXRhIiwicm90YXRlIiwicmVwZWF0IiwiSW5maW5pdHkiLCJlYXNlIiwiYXNpZGUiLCJuYXYiLCJtYWluIiwibWFyZ2luTGVmdCIsImhlYWRlciIsImlucHV0IiwicGxhY2Vob2xkZXIiLCJoMiIsImZvcm0iLCJvblN1Ym1pdCIsIm9uQ2hhbmdlIiwicmVxdWlyZWQiLCJwYXJzZUludCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/app/page.tsx\n")); +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Dashboard)\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 framer_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! framer-motion */ \"(app-pages-browser)/./node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! framer-motion */ \"(app-pages-browser)/./node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/server.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/external-link.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/clock.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/refresh-cw.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/settings.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/trash-2.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/activity.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/layout-dashboard.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/monitor.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/triangle-alert.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/history.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/search.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/plus.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/bell.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/circle-check.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/zap.js\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/component/ResponsiveContainer.js\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/chart/LineChart.js\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/cartesian/Line.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$(), _s1 = $RefreshSig$();\n\n\n\n\n// Generate sparkline data\nconst generateSparklineData = (points, isUp)=>{\n return Array.from({\n length: points\n }, (_, i)=>({\n value: isUp ? 80 + Math.random() * 20 : Math.random() * 30,\n time: i\n }));\n};\n// shadcn-style Card Component\nconst Card = (param)=>{\n let { children, className = \"\" } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-slate-900/60 backdrop-blur-xl border border-slate-800/60 rounded-xl overflow-hidden \".concat(className),\n children: children\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 66,\n columnNumber: 3\n }, undefined);\n};\n_c = Card;\nconst CardContent = (param)=>{\n let { children, className = \"\" } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6 \".concat(className),\n children: children\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 72,\n columnNumber: 3\n }, undefined);\n};\n_c1 = CardContent;\n// shadcn-style Badge\nconst Badge = (param)=>{\n let { children, variant = \"default\", className = \"\" } = param;\n const variants = {\n default: \"bg-slate-800 text-slate-200 border-slate-700\",\n success: \"bg-emerald-500/10 text-emerald-400 border-emerald-500/20\",\n destructive: \"bg-red-500/10 text-red-400 border-red-500/20\",\n warning: \"bg-amber-500/10 text-amber-400 border-amber-500/20\"\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium border \".concat(variants[variant], \" \").concat(className),\n children: children\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 92,\n columnNumber: 5\n }, undefined);\n};\n_c2 = Badge;\n// shadcn-style Progress\nconst Progress = (param)=>{\n let { value, className = \"\" } = param;\n const getColor = ()=>{\n if (value >= 95) return \"bg-emerald-500\";\n if (value >= 80) return \"bg-amber-500\";\n return \"bg-red-500\";\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-slate-800 rounded-full h-2 overflow-hidden \".concat(className),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n width: 0\n },\n animate: {\n width: \"\".concat(value, \"%\")\n },\n transition: {\n duration: 1,\n ease: \"easeOut\"\n },\n className: \"h-full rounded-full \".concat(getColor())\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 107,\n columnNumber: 7\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 106,\n columnNumber: 5\n }, undefined);\n};\n_c3 = Progress;\n// shadcn-style Button\nconst Button = (param)=>{\n let { children, variant = \"default\", size = \"default\", className = \"\", ...props } = param;\n const variants = {\n default: \"bg-emerald-600 hover:bg-emerald-500 text-white\",\n ghost: \"hover:bg-slate-800 text-slate-400 hover:text-white\",\n outline: \"border border-slate-700 hover:bg-slate-800 text-slate-300\"\n };\n const sizes = {\n default: \"px-4 py-2\",\n sm: \"px-3 py-1.5 text-sm\",\n icon: \"p-2\"\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"inline-flex items-center justify-center rounded-lg font-medium transition-colors \".concat(variants[variant], \" \").concat(sizes[size], \" \").concat(className),\n ...props,\n children: children\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 141,\n columnNumber: 5\n }, undefined);\n};\n_c4 = Button;\n// Sidebar Item Component\nconst SidebarItem = (param)=>{\n let { icon: Icon, label, isActive, onClick } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.button, {\n onClick: onClick,\n whileHover: {\n x: 2\n },\n whileTap: {\n scale: 0.98\n },\n className: \"w-full flex items-center gap-3 px-3 py-2.5 rounded-lg transition-all duration-200 \".concat(isActive ? \"bg-emerald-500/10 text-emerald-400 border border-emerald-500/20\" : \"text-slate-400 hover:text-slate-100 hover:bg-slate-800/50\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Icon, {\n className: \"w-5 h-5 flex-shrink-0\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 172,\n columnNumber: 5\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium whitespace-nowrap\",\n children: label\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 173,\n columnNumber: 5\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 162,\n columnNumber: 3\n }, undefined);\n};\n_c5 = SidebarItem;\n// KPI Card Component\nconst KPICard = (param)=>{\n let { title, value, subtitle, icon: Icon, color, data } = param;\n const colorMap = {\n emerald: {\n bg: \"bg-emerald-500/10\",\n text: \"text-emerald-400\",\n bar: \"#10b981\"\n },\n blue: {\n bg: \"bg-blue-500/10\",\n text: \"text-blue-400\",\n bar: \"#3b82f6\"\n },\n purple: {\n bg: \"bg-purple-500/10\",\n text: \"text-purple-400\",\n bar: \"#a855f7\"\n },\n amber: {\n bg: \"bg-amber-500/10\",\n text: \"text-amber-400\",\n bar: \"#f59e0b\"\n }\n };\n const colors = colorMap[color] || colorMap.emerald;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Card, {\n className: \"hover:border-slate-700/60 transition-all duration-300 hover:shadow-xl hover:shadow-black/20 hover:scale-[1.02]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(CardContent, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start 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-slate-400 text-sm font-medium mb-1\",\n children: title\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 206,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-3xl font-bold text-white\",\n children: value\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 207,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-500 text-xs mt-1\",\n children: subtitle\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 208,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 205,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-2.5 rounded-lg \".concat(colors.bg),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Icon, {\n className: \"w-5 h-5 \".concat(colors.text)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 211,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 210,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 204,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 h-12\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_3__.ResponsiveContainer, {\n width: \"100%\",\n height: \"100%\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__.LineChart, {\n data: data,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__.Line, {\n type: \"monotone\",\n dataKey: \"value\",\n stroke: colors.bar,\n strokeWidth: 2,\n dot: false\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 217,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 216,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 215,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 214,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 203,\n columnNumber: 7\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 202,\n columnNumber: 5\n }, undefined);\n};\n_c6 = KPICard;\n// Service Card Component\nconst ServiceCard = (param)=>{\n let { app, status, onDelete } = param;\n _s();\n const [isHovered, setIsHovered] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const sparklineData = generateSparklineData(10, status.isUp);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n layout: true,\n initial: {\n opacity: 0,\n scale: 0.95\n },\n animate: {\n opacity: 1,\n scale: 1\n },\n exit: {\n opacity: 0,\n scale: 0.95\n },\n whileHover: {\n scale: 1.02,\n transition: {\n duration: 0.2\n }\n },\n onHoverStart: ()=>setIsHovered(true),\n onHoverEnd: ()=>setIsHovered(false),\n className: \"group\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Card, {\n className: \"h-full hover:border-slate-700/60 transition-all duration-300 hover:shadow-xl hover:shadow-black/20\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-1 w-full \".concat(status.isUp ? \"bg-emerald-500\" : \"bg-red-500\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 258,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(CardContent, {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between\",\n children: [\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: \"w-10 h-10 rounded-lg flex items-center justify-center \".concat(status.isUp ? \"bg-emerald-500/10\" : \"bg-red-500/10\"),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"w-5 h-5 \".concat(status.isUp ? \"text-emerald-400\" : \"text-red-400\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 265,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 264,\n columnNumber: 15\n }, undefined),\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)(\"h3\", {\n className: \"font-semibold text-white flex items-center gap-2\",\n children: [\n app.name,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: app.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"text-slate-500 hover:text-emerald-400 transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"w-3.5 h-3.5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 276,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 270,\n columnNumber: 19\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 268,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-slate-500\",\n children: [\n \"Port \",\n app.port\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 279,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 267,\n columnNumber: 15\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 263,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Badge, {\n variant: status.isUp ? \"success\" : \"destructive\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative flex h-1.5 w-1.5 mr-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"animate-ping absolute inline-flex h-full w-full rounded-full opacity-75 \".concat(status.isUp ? \"bg-emerald-400\" : \"bg-red-400\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 285,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative inline-flex rounded-full h-1.5 w-1.5 \".concat(status.isUp ? \"bg-emerald-500\" : \"bg-red-500\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 286,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 284,\n columnNumber: 15\n }, undefined),\n status.isUp ? \"Operational\" : \"Down\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 283,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 262,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-slate-400\",\n children: \"Uptime\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 295,\n columnNumber: 15\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg font-semibold text-white\",\n children: [\n status.uptime,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 296,\n columnNumber: 15\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 294,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Progress, {\n value: status.uptime\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 298,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 293,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-slate-400\",\n children: \"Response Time\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 303,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-2xl font-bold text-white\",\n children: status.avgResponseTime > 0 ? \"\".concat(status.avgResponseTime, \"ms\") : \"—\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 304,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 302,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-10 -mx-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_3__.ResponsiveContainer, {\n width: \"100%\",\n height: \"100%\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__.LineChart, {\n data: sparklineData,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__.Line, {\n type: \"monotone\",\n dataKey: \"value\",\n stroke: status.isUp ? \"#10b981\" : \"#ef4444\",\n strokeWidth: 1.5,\n dot: false\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 313,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 312,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 311,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 310,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between pt-2 border-t border-slate-800/60\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-slate-500 flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"w-3 h-3\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 327,\n columnNumber: 15\n }, undefined),\n status.latest ? new Date(status.latest.timestamp).toLocaleTimeString() : \"Never\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 326,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_9__.AnimatePresence, {\n children: isHovered && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n x: 10\n },\n animate: {\n opacity: 1,\n x: 0\n },\n exit: {\n opacity: 0,\n x: 10\n },\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n variant: \"ghost\",\n size: \"icon\",\n className: \"h-8 w-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 340,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 339,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n variant: \"ghost\",\n size: \"icon\",\n className: \"h-8 w-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 343,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 342,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n variant: \"ghost\",\n size: \"icon\",\n className: \"h-8 w-8 hover:text-red-400 hover:bg-red-500/10\",\n onClick: onDelete,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 351,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 345,\n columnNumber: 19\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 333,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 331,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 325,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 260,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 256,\n columnNumber: 7\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 246,\n columnNumber: 5\n }, undefined);\n};\n_s(ServiceCard, \"FPQn8a98tPjpohC7NUYORQR8GJE=\");\n_c7 = ServiceCard;\nfunction Dashboard() {\n _s1();\n const [apps, setApps] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [status, setStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [activeNav, setActiveNav] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"overview\");\n const [showAddModal, setShowAddModal] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [newApp, setNewApp] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n name: \"\",\n url: \"http://localhost:\",\n port: 3000,\n enabled: true\n });\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Dashboard.useEffect\": ()=>{\n fetchData();\n const interval = setInterval(fetchData, 30000);\n return ({\n \"Dashboard.useEffect\": ()=>clearInterval(interval)\n })[\"Dashboard.useEffect\"];\n }\n }[\"Dashboard.useEffect\"], []);\n async function fetchData() {\n try {\n const res = await fetch(\"/api/monitor\");\n const data = await res.json();\n setApps(data.apps || []);\n setStatus(data.status || []);\n } catch (err) {\n console.error(\"Failed to fetch data:\", err);\n } finally{\n setLoading(false);\n }\n }\n async function addApp(e) {\n e.preventDefault();\n if (!newApp.name || !newApp.url) return;\n await fetch(\"/api/monitor\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n action: \"addApp\",\n app: newApp\n })\n });\n setShowAddModal(false);\n setNewApp({\n name: \"\",\n url: \"http://localhost:\",\n port: 3000,\n enabled: true\n });\n fetchData();\n }\n async function deleteApp(id) {\n if (!confirm(\"Delete this monitor?\")) return;\n await fetch(\"/api/monitor\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n action: \"deleteApp\",\n id\n })\n });\n fetchData();\n }\n function getAppStatus(appId) {\n const appStatus = status.filter((s)=>s.appId === appId);\n const latest = appStatus[appStatus.length - 1];\n const isUp = (latest === null || latest === void 0 ? void 0 : latest.status) === \"up\";\n const uptime = appStatus.length > 0 ? Math.round(appStatus.filter((s)=>s.status === \"up\").length / appStatus.length * 100) : 100;\n const avgResponseTime = appStatus.length > 0 ? Math.round(appStatus.filter((s)=>s.responseTime).reduce((acc, s)=>acc + (s.responseTime || 0), 0) / appStatus.filter((s)=>s.responseTime).length) || 0 : 0;\n return {\n latest,\n isUp,\n uptime,\n avgResponseTime\n };\n }\n const stats = {\n total: apps.length,\n online: apps.filter((app)=>getAppStatus(app.id).isUp).length,\n offline: apps.filter((app)=>!getAppStatus(app.id).isUp).length,\n avgUptime: apps.length > 0 ? Math.round(apps.reduce((acc, app)=>acc + getAppStatus(app.id).uptime, 0) / apps.length) : 0,\n avgResponseTime: apps.length > 0 ? Math.round(apps.reduce((acc, app)=>acc + getAppStatus(app.id).avgResponseTime, 0) / apps.length) : 0,\n incidents: status.filter((s)=>s.status === \"down\").length\n };\n const allUp = stats.online === stats.total && stats.total > 0;\n // Sparkline data for KPI cards\n const servicesData = generateSparklineData(20, true);\n const uptimeData = generateSparklineData(20, true);\n const responseData = generateSparklineData(20, true).map((d)=>({\n ...d,\n value: d.value * 2\n }));\n const incidentsData = generateSparklineData(20, false);\n if (loading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-slate-950 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n className: \"flex flex-col items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n animate: {\n rotate: 360\n },\n transition: {\n duration: 2,\n repeat: Infinity,\n ease: \"linear\"\n },\n className: \"w-12 h-12 rounded-xl bg-gradient-to-br from-emerald-500 to-cyan-500\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 461,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 w-12 h-12 rounded-xl bg-gradient-to-br from-emerald-500 to-cyan-500 blur-xl opacity-50\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 466,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 460,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-400\",\n children: \"Loading dashboard...\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 468,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 455,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 454,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-slate-950 text-slate-100 flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"fixed left-0 top-0 bottom-0 w-[280px] bg-slate-900/80 backdrop-blur-xl border-r border-slate-800/60 z-50 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-16 flex items-center px-4 border-b border-slate-800/60\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-9 h-9 rounded-lg bg-gradient-to-br from-emerald-500 to-cyan-500 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"w-5 h-5 text-white\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 481,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 480,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"ml-3 font-bold text-lg text-white\",\n children: \"Heartbeat\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 483,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 479,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"flex-1 p-3 space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n label: \"Overview\",\n isActive: activeNav === \"overview\",\n onClick: ()=>setActiveNav(\"overview\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 488,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n label: \"Monitored Services\",\n isActive: activeNav === \"services\",\n onClick: ()=>setActiveNav(\"services\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 494,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n label: \"Incidents\",\n isActive: activeNav === \"incidents\",\n onClick: ()=>setActiveNav(\"incidents\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 500,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n label: \"History / Logs\",\n isActive: activeNav === \"history\",\n onClick: ()=>setActiveNav(\"history\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 506,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n label: \"Settings\",\n isActive: activeNav === \"settings\",\n onClick: ()=>setActiveNav(\"settings\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 512,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 487,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 477,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"flex-1 ml-[280px] min-h-screen flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"h-16 bg-slate-900/50 backdrop-blur-sm border-b border-slate-800/60 sticky top-0 z-40 px-6 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 px-3 py-1.5 rounded-full border \".concat(allUp ? \"bg-emerald-500/10 border-emerald-500/20\" : \"bg-amber-500/10 border-amber-500/20\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative flex h-2 w-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"animate-ping absolute inline-flex h-full w-full rounded-full opacity-75 \".concat(allUp ? \"bg-emerald-400\" : \"bg-amber-400\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 532,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative inline-flex rounded-full h-2 w-2 \".concat(allUp ? \"bg-emerald-500\" : \"bg-amber-500\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 533,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 531,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium \".concat(allUp ? \"text-emerald-400\" : \"text-amber-400\"),\n children: allUp ? \"All Systems Operational\" : \"\".concat(stats.offline, \" Service\").concat(stats.offline > 1 ? 's' : '', \" Down\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 535,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-slate-500 text-xs\",\n children: [\n \"• Updated \",\n new Date().toLocaleTimeString()\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 538,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 526,\n columnNumber: 11\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: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n className: \"w-4 h-4 absolute left-3 top-1/2 -translate-y-1/2 text-slate-500\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 544,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n placeholder: \"Search...\",\n className: \"w-64 bg-slate-800/50 border border-slate-700 rounded-lg pl-10 pr-4 py-2 text-sm text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 545,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 543,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n onClick: ()=>setShowAddModal(true),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n className: \"w-4 h-4 mr-2\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 553,\n columnNumber: 15\n }, this),\n \"Add Monitor\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 552,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n variant: \"ghost\",\n size: \"icon\",\n onClick: fetchData,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 558,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 557,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n variant: \"ghost\",\n size: \"icon\",\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 562,\n columnNumber: 15\n }, this),\n stats.incidents > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"absolute top-1 right-1 w-2 h-2 bg-red-500 rounded-full\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 564,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 561,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-9 h-9 rounded-full bg-gradient-to-br from-emerald-500 to-cyan-500 flex items-center justify-center text-white font-medium text-sm\",\n children: \"MB\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 568,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 542,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 524,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 p-6 overflow-auto\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 md:grid-cols-4 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(KPICard, {\n title: \"Services Online\",\n value: \"\".concat(stats.online, \"/\").concat(stats.total),\n subtitle: allUp ? \"All healthy\" : \"\".concat(stats.offline, \" down\"),\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n color: \"emerald\",\n data: servicesData\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 579,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(KPICard, {\n title: \"Average Uptime\",\n value: \"\".concat(stats.avgUptime, \"%\"),\n subtitle: \"Last 30 days\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_21__[\"default\"],\n color: \"blue\",\n data: uptimeData\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 587,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(KPICard, {\n title: \"Avg Response Time\",\n value: \"\".concat(stats.avgResponseTime, \"ms\"),\n subtitle: \"Across all services\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_22__[\"default\"],\n color: \"purple\",\n data: responseData\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 595,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(KPICard, {\n title: \"Total Incidents\",\n value: stats.incidents,\n subtitle: \"Last 24 hours\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n color: \"amber\",\n data: incidentsData\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 603,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 578,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold text-white\",\n children: \"Monitored Services\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 616,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-slate-500\",\n children: [\n stats.total,\n \" services\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 617,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 615,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n layout: true,\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_9__.AnimatePresence, {\n mode: \"popLayout\",\n children: apps.map((app)=>{\n const appStatus = getAppStatus(app.id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ServiceCard, {\n app: app,\n status: appStatus,\n onDelete: ()=>deleteApp(app.id)\n }, app.id, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 628,\n columnNumber: 23\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 624,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 620,\n columnNumber: 15\n }, this),\n apps.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n y: 20\n },\n animate: {\n opacity: 1,\n y: 0\n },\n className: \"text-center py-16 bg-slate-900/30 rounded-xl border border-dashed border-slate-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-16 h-16 bg-slate-800 rounded-2xl flex items-center justify-center mx-auto mb-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n className: \"w-8 h-8 text-slate-600\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 646,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 645,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold text-white mb-2\",\n children: \"No monitors yet\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 648,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-500 mb-4\",\n children: \"Start monitoring your services\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 649,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n onClick: ()=>setShowAddModal(true),\n children: \"Add Your First Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 650,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 640,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 614,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 576,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 575,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 522,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_9__.AnimatePresence, {\n children: showAddModal && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n exit: {\n opacity: 0\n },\n className: \"fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-50 p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n scale: 0.95,\n y: 20\n },\n animate: {\n opacity: 1,\n scale: 1,\n y: 0\n },\n exit: {\n opacity: 0,\n scale: 0.95,\n y: 20\n },\n className: \"bg-slate-900 border border-slate-800 rounded-xl p-6 w-full max-w-md shadow-2xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xl font-bold text-white mb-2\",\n children: \"Add New Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 675,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-400 text-sm mb-6\",\n children: \"Configure a new service to monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 676,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: addApp,\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-slate-300 mb-2\",\n children: \"Service Name\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 680,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: newApp.name,\n onChange: (e)=>setNewApp({\n ...newApp,\n name: e.target.value\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none\",\n placeholder: \"My Service\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 681,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 679,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 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)(\"label\", {\n className: \"block text-sm font-medium text-slate-300 mb-2\",\n children: \"URL\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 693,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"url\",\n value: newApp.url,\n onChange: (e)=>setNewApp({\n ...newApp,\n url: e.target.value\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none\",\n placeholder: \"http://localhost:3000\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 694,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 692,\n columnNumber: 19\n }, this),\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)(\"label\", {\n className: \"block text-sm font-medium text-slate-300 mb-2\",\n children: \"Port\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 704,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n value: newApp.port,\n onChange: (e)=>setNewApp({\n ...newApp,\n port: parseInt(e.target.value)\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 705,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 703,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 691,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-3 pt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n type: \"button\",\n variant: \"outline\",\n onClick: ()=>setShowAddModal(false),\n className: \"flex-1\",\n children: \"Cancel\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 716,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n type: \"submit\",\n className: \"flex-1\",\n children: \"Add Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 724,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 715,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 678,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 669,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 663,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 661,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 475,\n columnNumber: 5\n }, this);\n}\n_s1(Dashboard, \"oMishvHAmlkTZHuM0+UU7NPSeps=\");\n_c8 = Dashboard;\nvar _c, _c1, _c2, _c3, _c4, _c5, _c6, _c7, _c8;\n$RefreshReg$(_c, \"Card\");\n$RefreshReg$(_c1, \"CardContent\");\n$RefreshReg$(_c2, \"Badge\");\n$RefreshReg$(_c3, \"Progress\");\n$RefreshReg$(_c4, \"Button\");\n$RefreshReg$(_c5, \"SidebarItem\");\n$RefreshReg$(_c6, \"KPICard\");\n$RefreshReg$(_c7, \"ServiceCard\");\n$RefreshReg$(_c8, \"Dashboard\");\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,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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVczRDtJQXBYd0JvRjtNQUFBQSIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL3NyYy9hcHAvcGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBtb3Rpb24sIEFuaW1hdGVQcmVzZW5jZSB9IGZyb20gXCJmcmFtZXItbW90aW9uXCI7XG5pbXBvcnQge1xuICBBY3Rpdml0eSxcbiAgUGx1cyxcbiAgUmVmcmVzaEN3LFxuICBUcmFzaDIsXG4gIEV4dGVybmFsTGluayxcbiAgU2VhcmNoLFxuICBCZWxsLFxuICBTZXR0aW5ncyxcbiAgQ2hldnJvbkxlZnQsXG4gIENoZXZyb25SaWdodCxcbiAgTGF5b3V0RGFzaGJvYXJkLFxuICBNb25pdG9yLFxuICBBbGVydFRyaWFuZ2xlLFxuICBIaXN0b3J5LFxuICBDaGVja0NpcmNsZTIsXG4gIFhDaXJjbGUsXG4gIENsb2NrLFxuICBaYXAsXG4gIFRyZW5kaW5nVXAsXG4gIFNlcnZlcixcbiAgTW9yZVZlcnRpY2FsLFxuICBNZW51LFxufSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQge1xuICBMaW5lQ2hhcnQsXG4gIExpbmUsXG4gIFJlc3BvbnNpdmVDb250YWluZXIsXG59IGZyb20gXCJyZWNoYXJ0c1wiO1xuXG4vLyBUeXBlc1xuaW50ZXJmYWNlIEFwcCB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIHBvcnQ6IG51bWJlcjtcbiAgcGF0aDogc3RyaW5nO1xuICBjb21tYW5kOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBTdGF0dXNFbnRyeSB7XG4gIGFwcElkOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBzdGF0dXM6IFwidXBcIiB8IFwiZG93blwiO1xuICByZXNwb25zZVRpbWU/OiBudW1iZXI7XG59XG5cbi8vIEdlbmVyYXRlIHNwYXJrbGluZSBkYXRhXG5jb25zdCBnZW5lcmF0ZVNwYXJrbGluZURhdGEgPSAocG9pbnRzOiBudW1iZXIsIGlzVXA6IGJvb2xlYW4pID0+IHtcbiAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IHBvaW50cyB9LCAoXywgaSkgPT4gKHtcbiAgICB2YWx1ZTogaXNVcCA/IDgwICsgTWF0aC5yYW5kb20oKSAqIDIwIDogTWF0aC5yYW5kb20oKSAqIDMwLFxuICAgIHRpbWU6IGksXG4gIH0pKTtcbn07XG5cbi8vIHNoYWRjbi1zdHlsZSBDYXJkIENvbXBvbmVudFxuY29uc3QgQ2FyZCA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUgPSBcIlwiIH06IHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTsgY2xhc3NOYW1lPzogc3RyaW5nIH0pID0+IChcbiAgPGRpdiBjbGFzc05hbWU9e2BiZy1zbGF0ZS05MDAvNjAgYmFja2Ryb3AtYmx1ci14bCBib3JkZXIgYm9yZGVyLXNsYXRlLTgwMC82MCByb3VuZGVkLXhsIG92ZXJmbG93LWhpZGRlbiAke2NsYXNzTmFtZX1gfT5cbiAgICB7Y2hpbGRyZW59XG4gIDwvZGl2PlxuKTtcblxuY29uc3QgQ2FyZENvbnRlbnQgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lID0gXCJcIiB9OiB7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7IGNsYXNzTmFtZT86IHN0cmluZyB9KSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPXtgcC02ICR7Y2xhc3NOYW1lfWB9PntjaGlsZHJlbn08L2Rpdj5cbik7XG5cbi8vIHNoYWRjbi1zdHlsZSBCYWRnZVxuY29uc3QgQmFkZ2UgPSAoeyBcbiAgY2hpbGRyZW4sIFxuICB2YXJpYW50ID0gXCJkZWZhdWx0XCIsXG4gIGNsYXNzTmFtZSA9IFwiXCIgXG59OiB7IFxuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlOyBcbiAgdmFyaWFudD86IFwiZGVmYXVsdFwiIHwgXCJzdWNjZXNzXCIgfCBcImRlc3RydWN0aXZlXCIgfCBcIndhcm5pbmdcIjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkgPT4ge1xuICBjb25zdCB2YXJpYW50cyA9IHtcbiAgICBkZWZhdWx0OiBcImJnLXNsYXRlLTgwMCB0ZXh0LXNsYXRlLTIwMCBib3JkZXItc2xhdGUtNzAwXCIsXG4gICAgc3VjY2VzczogXCJiZy1lbWVyYWxkLTUwMC8xMCB0ZXh0LWVtZXJhbGQtNDAwIGJvcmRlci1lbWVyYWxkLTUwMC8yMFwiLFxuICAgIGRlc3RydWN0aXZlOiBcImJnLXJlZC01MDAvMTAgdGV4dC1yZWQtNDAwIGJvcmRlci1yZWQtNTAwLzIwXCIsXG4gICAgd2FybmluZzogXCJiZy1hbWJlci01MDAvMTAgdGV4dC1hbWJlci00MDAgYm9yZGVyLWFtYmVyLTUwMC8yMFwiLFxuICB9O1xuICByZXR1cm4gKFxuICAgIDxzcGFuIGNsYXNzTmFtZT17YGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHB4LTIuNSBweS0xIHJvdW5kZWQtZnVsbCB0ZXh0LXhzIGZvbnQtbWVkaXVtIGJvcmRlciAke3ZhcmlhbnRzW3ZhcmlhbnRdfSAke2NsYXNzTmFtZX1gfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L3NwYW4+XG4gICk7XG59O1xuXG4vLyBzaGFkY24tc3R5bGUgUHJvZ3Jlc3NcbmNvbnN0IFByb2dyZXNzID0gKHsgdmFsdWUsIGNsYXNzTmFtZSA9IFwiXCIgfTogeyB2YWx1ZTogbnVtYmVyOyBjbGFzc05hbWU/OiBzdHJpbmcgfSkgPT4ge1xuICBjb25zdCBnZXRDb2xvciA9ICgpID0+IHtcbiAgICBpZiAodmFsdWUgPj0gOTUpIHJldHVybiBcImJnLWVtZXJhbGQtNTAwXCI7XG4gICAgaWYgKHZhbHVlID49IDgwKSByZXR1cm4gXCJiZy1hbWJlci01MDBcIjtcbiAgICByZXR1cm4gXCJiZy1yZWQtNTAwXCI7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2B3LWZ1bGwgYmctc2xhdGUtODAwIHJvdW5kZWQtZnVsbCBoLTIgb3ZlcmZsb3ctaGlkZGVuICR7Y2xhc3NOYW1lfWB9PlxuICAgICAgPG1vdGlvbi5kaXYgXG4gICAgICAgIGluaXRpYWw9e3sgd2lkdGg6IDAgfX1cbiAgICAgICAgYW5pbWF0ZT17eyB3aWR0aDogYCR7dmFsdWV9JWAgfX1cbiAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMSwgZWFzZTogXCJlYXNlT3V0XCIgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgaC1mdWxsIHJvdW5kZWQtZnVsbCAke2dldENvbG9yKCl9YH1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG4vLyBzaGFkY24tc3R5bGUgQnV0dG9uXG5jb25zdCBCdXR0b24gPSAoeyBcbiAgY2hpbGRyZW4sIFxuICB2YXJpYW50ID0gXCJkZWZhdWx0XCIsIFxuICBzaXplID0gXCJkZWZhdWx0XCIsXG4gIGNsYXNzTmFtZSA9IFwiXCIsXG4gIC4uLnByb3BzIFxufTogeyBcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTsgXG4gIHZhcmlhbnQ/OiBcImRlZmF1bHRcIiB8IFwiZ2hvc3RcIiB8IFwib3V0bGluZVwiO1xuICBzaXplPzogXCJkZWZhdWx0XCIgfCBcInNtXCIgfCBcImljb25cIjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSAmIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICBjb25zdCB2YXJpYW50cyA9IHtcbiAgICBkZWZhdWx0OiBcImJnLWVtZXJhbGQtNjAwIGhvdmVyOmJnLWVtZXJhbGQtNTAwIHRleHQtd2hpdGVcIixcbiAgICBnaG9zdDogXCJob3ZlcjpiZy1zbGF0ZS04MDAgdGV4dC1zbGF0ZS00MDAgaG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgIG91dGxpbmU6IFwiYm9yZGVyIGJvcmRlci1zbGF0ZS03MDAgaG92ZXI6Ymctc2xhdGUtODAwIHRleHQtc2xhdGUtMzAwXCIsXG4gIH07XG4gIGNvbnN0IHNpemVzID0ge1xuICAgIGRlZmF1bHQ6IFwicHgtNCBweS0yXCIsXG4gICAgc206IFwicHgtMyBweS0xLjUgdGV4dC1zbVwiLFxuICAgIGljb246IFwicC0yXCIsXG4gIH07XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvbiBcbiAgICAgIGNsYXNzTmFtZT17YGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzICR7dmFyaWFudHNbdmFyaWFudF19ICR7c2l6ZXNbc2l6ZV19ICR7Y2xhc3NOYW1lfWB9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvYnV0dG9uPlxuICApO1xufTtcblxuLy8gU2lkZWJhciBJdGVtIENvbXBvbmVudFxuY29uc3QgU2lkZWJhckl0ZW0gPSAoeyBcbiAgaWNvbjogSWNvbiwgXG4gIGxhYmVsLCBcbiAgaXNBY3RpdmUsIFxuICBvbkNsaWNrIFxufTogeyBcbiAgaWNvbjogYW55O1xuICBsYWJlbDogc3RyaW5nOyBcbiAgaXNBY3RpdmU6IGJvb2xlYW47IFxuICBvbkNsaWNrOiAoKSA9PiB2b2lkO1xufSkgPT4gKFxuICA8bW90aW9uLmJ1dHRvblxuICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgd2hpbGVIb3Zlcj17eyB4OiAyIH19XG4gICAgd2hpbGVUYXA9e3sgc2NhbGU6IDAuOTggfX1cbiAgICBjbGFzc05hbWU9e2B3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMgcHgtMyBweS0yLjUgcm91bmRlZC1sZyB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgJHtcbiAgICAgIGlzQWN0aXZlIFxuICAgICAgICA/IFwiYmctZW1lcmFsZC01MDAvMTAgdGV4dC1lbWVyYWxkLTQwMCBib3JkZXIgYm9yZGVyLWVtZXJhbGQtNTAwLzIwXCIgXG4gICAgICAgIDogXCJ0ZXh0LXNsYXRlLTQwMCBob3Zlcjp0ZXh0LXNsYXRlLTEwMCBob3ZlcjpiZy1zbGF0ZS04MDAvNTBcIlxuICAgIH1gfVxuICA+XG4gICAgPEljb24gY2xhc3NOYW1lPVwidy01IGgtNSBmbGV4LXNocmluay0wXCIgLz5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHdoaXRlc3BhY2Utbm93cmFwXCI+e2xhYmVsfTwvc3Bhbj5cbiAgPC9tb3Rpb24uYnV0dG9uPlxuKTtcblxuLy8gS1BJIENhcmQgQ29tcG9uZW50XG5jb25zdCBLUElDYXJkID0gKHsgXG4gIHRpdGxlLCBcbiAgdmFsdWUsIFxuICBzdWJ0aXRsZSwgXG4gIGljb246IEljb24sIFxuICBjb2xvcixcbiAgZGF0YSxcbn06IHsgXG4gIHRpdGxlOiBzdHJpbmc7IFxuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyOyBcbiAgc3VidGl0bGU6IHN0cmluZztcbiAgaWNvbjogYW55O1xuICBjb2xvcjogc3RyaW5nO1xuICBkYXRhOiBhbnlbXTtcbn0pID0+IHtcbiAgY29uc3QgY29sb3JNYXA6IFJlY29yZDxzdHJpbmcsIHsgYmc6IHN0cmluZzsgdGV4dDogc3RyaW5nOyBiYXI6IHN0cmluZyB9PiA9IHtcbiAgICBlbWVyYWxkOiB7IGJnOiBcImJnLWVtZXJhbGQtNTAwLzEwXCIsIHRleHQ6IFwidGV4dC1lbWVyYWxkLTQwMFwiLCBiYXI6IFwiIzEwYjk4MVwiIH0sXG4gICAgYmx1ZTogeyBiZzogXCJiZy1ibHVlLTUwMC8xMFwiLCB0ZXh0OiBcInRleHQtYmx1ZS00MDBcIiwgYmFyOiBcIiMzYjgyZjZcIiB9LFxuICAgIHB1cnBsZTogeyBiZzogXCJiZy1wdXJwbGUtNTAwLzEwXCIsIHRleHQ6IFwidGV4dC1wdXJwbGUtNDAwXCIsIGJhcjogXCIjYTg1NWY3XCIgfSxcbiAgICBhbWJlcjogeyBiZzogXCJiZy1hbWJlci01MDAvMTBcIiwgdGV4dDogXCJ0ZXh0LWFtYmVyLTQwMFwiLCBiYXI6IFwiI2Y1OWUwYlwiIH0sXG4gIH07XG4gIGNvbnN0IGNvbG9ycyA9IGNvbG9yTWFwW2NvbG9yXSB8fCBjb2xvck1hcC5lbWVyYWxkO1xuXG4gIHJldHVybiAoXG4gICAgPENhcmQgY2xhc3NOYW1lPVwiaG92ZXI6Ym9yZGVyLXNsYXRlLTcwMC82MCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgaG92ZXI6c2hhZG93LXhsIGhvdmVyOnNoYWRvdy1ibGFjay8yMCBob3ZlcjpzY2FsZS1bMS4wMl1cIj5cbiAgICAgIDxDYXJkQ29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTQwMCB0ZXh0LXNtIGZvbnQtbWVkaXVtIG1iLTFcIj57dGl0bGV9PC9wPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1ib2xkIHRleHQtd2hpdGVcIj57dmFsdWV9PC9wPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbGF0ZS01MDAgdGV4dC14cyBtdC0xXCI+e3N1YnRpdGxlfTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHAtMi41IHJvdW5kZWQtbGcgJHtjb2xvcnMuYmd9YH0+XG4gICAgICAgICAgICA8SWNvbiBjbGFzc05hbWU9e2B3LTUgaC01ICR7Y29sb3JzLnRleHR9YH0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBoLTEyXCI+XG4gICAgICAgICAgPFJlc3BvbnNpdmVDb250YWluZXIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiPlxuICAgICAgICAgICAgPExpbmVDaGFydCBkYXRhPXtkYXRhfT5cbiAgICAgICAgICAgICAgPExpbmVcbiAgICAgICAgICAgICAgICB0eXBlPVwibW9ub3RvbmVcIlxuICAgICAgICAgICAgICAgIGRhdGFLZXk9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlPXtjb2xvcnMuYmFyfVxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXsyfVxuICAgICAgICAgICAgICAgIGRvdD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0xpbmVDaGFydD5cbiAgICAgICAgICA8L1Jlc3BvbnNpdmVDb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkQ29udGVudD5cbiAgICA8L0NhcmQ+XG4gICk7XG59O1xuXG4vLyBTZXJ2aWNlIENhcmQgQ29tcG9uZW50XG5jb25zdCBTZXJ2aWNlQ2FyZCA9ICh7IFxuICBhcHAsIFxuICBzdGF0dXMsIFxuICBvbkRlbGV0ZSBcbn06IHsgXG4gIGFwcDogQXBwOyBcbiAgc3RhdHVzOiB7IGlzVXA6IGJvb2xlYW47IHVwdGltZTogbnVtYmVyOyBhdmdSZXNwb25zZVRpbWU6IG51bWJlcjsgbGF0ZXN0PzogU3RhdHVzRW50cnkgfTsgXG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xufSkgPT4ge1xuICBjb25zdCBbaXNIb3ZlcmVkLCBzZXRJc0hvdmVyZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzcGFya2xpbmVEYXRhID0gZ2VuZXJhdGVTcGFya2xpbmVEYXRhKDEwLCBzdGF0dXMuaXNVcCk7XG5cbiAgcmV0dXJuIChcbiAgICA8bW90aW9uLmRpdlxuICAgICAgbGF5b3V0XG4gICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHNjYWxlOiAwLjk1IH19XG4gICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHNjYWxlOiAxIH19XG4gICAgICBleGl0PXt7IG9wYWNpdHk6IDAsIHNjYWxlOiAwLjk1IH19XG4gICAgICB3aGlsZUhvdmVyPXt7IHNjYWxlOiAxLjAyLCB0cmFuc2l0aW9uOiB7IGR1cmF0aW9uOiAwLjIgfSB9fVxuICAgICAgb25Ib3ZlclN0YXJ0PXsoKSA9PiBzZXRJc0hvdmVyZWQodHJ1ZSl9XG4gICAgICBvbkhvdmVyRW5kPXsoKSA9PiBzZXRJc0hvdmVyZWQoZmFsc2UpfVxuICAgICAgY2xhc3NOYW1lPVwiZ3JvdXBcIlxuICAgID5cbiAgICAgIDxDYXJkIGNsYXNzTmFtZT1cImgtZnVsbCBob3Zlcjpib3JkZXItc2xhdGUtNzAwLzYwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBob3ZlcjpzaGFkb3cteGwgaG92ZXI6c2hhZG93LWJsYWNrLzIwXCI+XG4gICAgICAgIHsvKiBUb3AgY29sb3JlZCBsaW5lICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGgtMSB3LWZ1bGwgJHtzdGF0dXMuaXNVcCA/IFwiYmctZW1lcmFsZC01MDBcIiA6IFwiYmctcmVkLTUwMFwifWB9IC8+XG4gICAgICAgIFxuICAgICAgICA8Q2FyZENvbnRlbnQgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy0xMCBoLTEwIHJvdW5kZWQtbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgJHtzdGF0dXMuaXNVcCA/IFwiYmctZW1lcmFsZC01MDAvMTBcIiA6IFwiYmctcmVkLTUwMC8xMFwifWB9PlxuICAgICAgICAgICAgICAgIDxTZXJ2ZXIgY2xhc3NOYW1lPXtgdy01IGgtNSAke3N0YXR1cy5pc1VwID8gXCJ0ZXh0LWVtZXJhbGQtNDAwXCIgOiBcInRleHQtcmVkLTQwMFwifWB9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkIHRleHQtd2hpdGUgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIHthcHAubmFtZX1cbiAgICAgICAgICAgICAgICAgIDxhIFxuICAgICAgICAgICAgICAgICAgICBocmVmPXthcHAudXJsfSBcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCIgXG4gICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTUwMCBob3Zlcjp0ZXh0LWVtZXJhbGQtNDAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEV4dGVybmFsTGluayBjbGFzc05hbWU9XCJ3LTMuNSBoLTMuNVwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtc2xhdGUtNTAwXCI+UG9ydCB7YXBwLnBvcnR9PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8QmFkZ2UgdmFyaWFudD17c3RhdHVzLmlzVXAgPyBcInN1Y2Nlc3NcIiA6IFwiZGVzdHJ1Y3RpdmVcIn0+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInJlbGF0aXZlIGZsZXggaC0xLjUgdy0xLjUgbXItMVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YGFuaW1hdGUtcGluZyBhYnNvbHV0ZSBpbmxpbmUtZmxleCBoLWZ1bGwgdy1mdWxsIHJvdW5kZWQtZnVsbCBvcGFjaXR5LTc1ICR7c3RhdHVzLmlzVXAgPyBcImJnLWVtZXJhbGQtNDAwXCIgOiBcImJnLXJlZC00MDBcIn1gfSAvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YHJlbGF0aXZlIGlubGluZS1mbGV4IHJvdW5kZWQtZnVsbCBoLTEuNSB3LTEuNSAke3N0YXR1cy5pc1VwID8gXCJiZy1lbWVyYWxkLTUwMFwiIDogXCJiZy1yZWQtNTAwXCJ9YH0gLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB7c3RhdHVzLmlzVXAgPyBcIk9wZXJhdGlvbmFsXCIgOiBcIkRvd25cIn1cbiAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogVXB0aW1lICovfVxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi0yXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1zbGF0ZS00MDBcIj5VcHRpbWU8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlXCI+e3N0YXR1cy51cHRpbWV9JTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPFByb2dyZXNzIHZhbHVlPXtzdGF0dXMudXB0aW1lfSAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIFJlc3BvbnNlIFRpbWUgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1zbGF0ZS00MDBcIj5SZXNwb25zZSBUaW1lPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtd2hpdGVcIj5cbiAgICAgICAgICAgICAge3N0YXR1cy5hdmdSZXNwb25zZVRpbWUgPiAwID8gYCR7c3RhdHVzLmF2Z1Jlc3BvbnNlVGltZX1tc2AgOiBcIuKAlFwifVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIFNwYXJrbGluZSAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtMTAgLW14LTJcIj5cbiAgICAgICAgICAgIDxSZXNwb25zaXZlQ29udGFpbmVyIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIj5cbiAgICAgICAgICAgICAgPExpbmVDaGFydCBkYXRhPXtzcGFya2xpbmVEYXRhfT5cbiAgICAgICAgICAgICAgICA8TGluZVxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm1vbm90b25lXCJcbiAgICAgICAgICAgICAgICAgIGRhdGFLZXk9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBzdHJva2U9e3N0YXR1cy5pc1VwID8gXCIjMTBiOTgxXCIgOiBcIiNlZjQ0NDRcIn1cbiAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXsxLjV9XG4gICAgICAgICAgICAgICAgICBkb3Q9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvTGluZUNoYXJ0PlxuICAgICAgICAgICAgPC9SZXNwb25zaXZlQ29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIEZvb3RlciAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwdC0yIGJvcmRlci10IGJvcmRlci1zbGF0ZS04MDAvNjBcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1zbGF0ZS01MDAgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgPENsb2NrIGNsYXNzTmFtZT1cInctMyBoLTNcIiAvPlxuICAgICAgICAgICAgICB7c3RhdHVzLmxhdGVzdCA/IG5ldyBEYXRlKHN0YXR1cy5sYXRlc3QudGltZXN0YW1wKS50b0xvY2FsZVRpbWVTdHJpbmcoKSA6IFwiTmV2ZXJcIn1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPEFuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgICAgICAge2lzSG92ZXJlZCAmJiAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgeDogMTAgfX1cbiAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeDogMCB9fVxuICAgICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB4OiAxMCB9fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cImljb25cIiBjbGFzc05hbWU9XCJoLTggdy04XCI+XG4gICAgICAgICAgICAgICAgICAgIDxSZWZyZXNoQ3cgY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cImljb25cIiBjbGFzc05hbWU9XCJoLTggdy04XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTZXR0aW5ncyBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImdob3N0XCIgXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJpY29uXCIgXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtOCB3LTggaG92ZXI6dGV4dC1yZWQtNDAwIGhvdmVyOmJnLXJlZC01MDAvMTBcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkRlbGV0ZX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFRyYXNoMiBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9DYXJkPlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhc2hib2FyZCgpIHtcbiAgY29uc3QgW2FwcHMsIHNldEFwcHNdID0gdXNlU3RhdGU8QXBwW10+KFtdKTtcbiAgY29uc3QgW3N0YXR1cywgc2V0U3RhdHVzXSA9IHVzZVN0YXRlPFN0YXR1c0VudHJ5W10+KFtdKTtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFthY3RpdmVOYXYsIHNldEFjdGl2ZU5hdl0gPSB1c2VTdGF0ZShcIm92ZXJ2aWV3XCIpO1xuICBjb25zdCBbc2hvd0FkZE1vZGFsLCBzZXRTaG93QWRkTW9kYWxdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbbmV3QXBwLCBzZXROZXdBcHBdID0gdXNlU3RhdGU8UGFydGlhbDxBcHA+Pih7XG4gICAgbmFtZTogXCJcIixcbiAgICB1cmw6IFwiaHR0cDovL2xvY2FsaG9zdDpcIixcbiAgICBwb3J0OiAzMDAwLFxuICAgIGVuYWJsZWQ6IHRydWUsXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hEYXRhKCk7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChmZXRjaERhdGEsIDMwMDAwKTtcbiAgICByZXR1cm4gKCkgPT4gY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gIH0sIFtdKTtcblxuICBhc3luYyBmdW5jdGlvbiBmZXRjaERhdGEoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKFwiL2FwaS9tb25pdG9yXCIpO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlcy5qc29uKCk7XG4gICAgICBzZXRBcHBzKGRhdGEuYXBwcyB8fCBbXSk7XG4gICAgICBzZXRTdGF0dXMoZGF0YS5zdGF0dXMgfHwgW10pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBmZXRjaCBkYXRhOlwiLCBlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBhZGRBcHAoZTogUmVhY3QuRm9ybUV2ZW50KSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICghbmV3QXBwLm5hbWUgfHwgIW5ld0FwcC51cmwpIHJldHVybjtcbiAgICBhd2FpdCBmZXRjaChcIi9hcGkvbW9uaXRvclwiLCB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBhY3Rpb246IFwiYWRkQXBwXCIsIGFwcDogbmV3QXBwIH0pLFxuICAgIH0pO1xuICAgIHNldFNob3dBZGRNb2RhbChmYWxzZSk7XG4gICAgc2V0TmV3QXBwKHsgbmFtZTogXCJcIiwgdXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6XCIsIHBvcnQ6IDMwMDAsIGVuYWJsZWQ6IHRydWUgfSk7XG4gICAgZmV0Y2hEYXRhKCk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBkZWxldGVBcHAoaWQ6IHN0cmluZykge1xuICAgIGlmICghY29uZmlybShcIkRlbGV0ZSB0aGlzIG1vbml0b3I/XCIpKSByZXR1cm47XG4gICAgYXdhaXQgZmV0Y2goXCIvYXBpL21vbml0b3JcIiwge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgYWN0aW9uOiBcImRlbGV0ZUFwcFwiLCBpZCB9KSxcbiAgICB9KTtcbiAgICBmZXRjaERhdGEoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEFwcFN0YXR1cyhhcHBJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgYXBwU3RhdHVzID0gc3RhdHVzLmZpbHRlcigocykgPT4gcy5hcHBJZCA9PT0gYXBwSWQpO1xuICAgIGNvbnN0IGxhdGVzdCA9IGFwcFN0YXR1c1thcHBTdGF0dXMubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgaXNVcCA9IGxhdGVzdD8uc3RhdHVzID09PSBcInVwXCI7XG4gICAgY29uc3QgdXB0aW1lID0gYXBwU3RhdHVzLmxlbmd0aCA+IDAgXG4gICAgICA/IE1hdGgucm91bmQoKGFwcFN0YXR1cy5maWx0ZXIocyA9PiBzLnN0YXR1cyA9PT0gXCJ1cFwiKS5sZW5ndGggLyBhcHBTdGF0dXMubGVuZ3RoKSAqIDEwMClcbiAgICAgIDogMTAwO1xuICAgIGNvbnN0IGF2Z1Jlc3BvbnNlVGltZSA9IGFwcFN0YXR1cy5sZW5ndGggPiAwXG4gICAgICA/IE1hdGgucm91bmQoYXBwU3RhdHVzLmZpbHRlcihzID0+IHMucmVzcG9uc2VUaW1lKS5yZWR1Y2UoKGFjYywgcykgPT4gYWNjICsgKHMucmVzcG9uc2VUaW1lIHx8IDApLCAwKSAvIGFwcFN0YXR1cy5maWx0ZXIocyA9PiBzLnJlc3BvbnNlVGltZSkubGVuZ3RoKSB8fCAwXG4gICAgICA6IDA7XG4gICAgcmV0dXJuIHsgbGF0ZXN0LCBpc1VwLCB1cHRpbWUsIGF2Z1Jlc3BvbnNlVGltZSB9O1xuICB9XG5cbiAgY29uc3Qgc3RhdHMgPSB7XG4gICAgdG90YWw6IGFwcHMubGVuZ3RoLFxuICAgIG9ubGluZTogYXBwcy5maWx0ZXIoKGFwcCkgPT4gZ2V0QXBwU3RhdHVzKGFwcC5pZCkuaXNVcCkubGVuZ3RoLFxuICAgIG9mZmxpbmU6IGFwcHMuZmlsdGVyKChhcHApID0+ICFnZXRBcHBTdGF0dXMoYXBwLmlkKS5pc1VwKS5sZW5ndGgsXG4gICAgYXZnVXB0aW1lOiBhcHBzLmxlbmd0aCA+IDAgXG4gICAgICA/IE1hdGgucm91bmQoYXBwcy5yZWR1Y2UoKGFjYywgYXBwKSA9PiBhY2MgKyBnZXRBcHBTdGF0dXMoYXBwLmlkKS51cHRpbWUsIDApIC8gYXBwcy5sZW5ndGgpXG4gICAgICA6IDAsXG4gICAgYXZnUmVzcG9uc2VUaW1lOiBhcHBzLmxlbmd0aCA+IDBcbiAgICAgID8gTWF0aC5yb3VuZChhcHBzLnJlZHVjZSgoYWNjLCBhcHApID0+IGFjYyArIGdldEFwcFN0YXR1cyhhcHAuaWQpLmF2Z1Jlc3BvbnNlVGltZSwgMCkgLyBhcHBzLmxlbmd0aClcbiAgICAgIDogMCxcbiAgICBpbmNpZGVudHM6IHN0YXR1cy5maWx0ZXIocyA9PiBzLnN0YXR1cyA9PT0gXCJkb3duXCIpLmxlbmd0aCxcbiAgfTtcblxuICBjb25zdCBhbGxVcCA9IHN0YXRzLm9ubGluZSA9PT0gc3RhdHMudG90YWwgJiYgc3RhdHMudG90YWwgPiAwO1xuXG4gIC8vIFNwYXJrbGluZSBkYXRhIGZvciBLUEkgY2FyZHNcbiAgY29uc3Qgc2VydmljZXNEYXRhID0gZ2VuZXJhdGVTcGFya2xpbmVEYXRhKDIwLCB0cnVlKTtcbiAgY29uc3QgdXB0aW1lRGF0YSA9IGdlbmVyYXRlU3BhcmtsaW5lRGF0YSgyMCwgdHJ1ZSk7XG4gIGNvbnN0IHJlc3BvbnNlRGF0YSA9IGdlbmVyYXRlU3BhcmtsaW5lRGF0YSgyMCwgdHJ1ZSkubWFwKGQgPT4gKHsgLi4uZCwgdmFsdWU6IGQudmFsdWUgKiAyIH0pKTtcbiAgY29uc3QgaW5jaWRlbnRzRGF0YSA9IGdlbmVyYXRlU3BhcmtsaW5lRGF0YSgyMCwgZmFsc2UpO1xuXG4gIGlmIChsb2FkaW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLXNsYXRlLTk1MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC00XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgIDxtb3Rpb24uZGl2IFxuICAgICAgICAgICAgICBhbmltYXRlPXt7IHJvdGF0ZTogMzYwIH19XG4gICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDIsIHJlcGVhdDogSW5maW5pdHksIGVhc2U6IFwibGluZWFyXCIgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0xMiBoLTEyIHJvdW5kZWQteGwgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1lbWVyYWxkLTUwMCB0by1jeWFuLTUwMFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIHctMTIgaC0xMiByb3VuZGVkLXhsIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tZW1lcmFsZC01MDAgdG8tY3lhbi01MDAgYmx1ci14bCBvcGFjaXR5LTUwXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTQwMFwiPkxvYWRpbmcgZGFzaGJvYXJkLi4uPC9wPlxuICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1zbGF0ZS05NTAgdGV4dC1zbGF0ZS0xMDAgZmxleFwiPlxuICAgICAgey8qIEZpeGVkIFNpZGViYXIgLSAyODBweCAqL31cbiAgICAgIDxhc2lkZSBjbGFzc05hbWU9XCJmaXhlZCBsZWZ0LTAgdG9wLTAgYm90dG9tLTAgdy1bMjgwcHhdIGJnLXNsYXRlLTkwMC84MCBiYWNrZHJvcC1ibHVyLXhsIGJvcmRlci1yIGJvcmRlci1zbGF0ZS04MDAvNjAgei01MCBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgIHsvKiBMb2dvICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtMTYgZmxleCBpdGVtcy1jZW50ZXIgcHgtNCBib3JkZXItYiBib3JkZXItc2xhdGUtODAwLzYwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTkgaC05IHJvdW5kZWQtbGcgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1lbWVyYWxkLTUwMCB0by1jeWFuLTUwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPEFjdGl2aXR5IGNsYXNzTmFtZT1cInctNSBoLTUgdGV4dC13aGl0ZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWwtMyBmb250LWJvbGQgdGV4dC1sZyB0ZXh0LXdoaXRlXCI+SGVhcnRiZWF0PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogTmF2aWdhdGlvbiAqL31cbiAgICAgICAgPG5hdiBjbGFzc05hbWU9XCJmbGV4LTEgcC0zIHNwYWNlLXktMVwiPlxuICAgICAgICAgIDxTaWRlYmFySXRlbVxuICAgICAgICAgICAgaWNvbj17TGF5b3V0RGFzaGJvYXJkfVxuICAgICAgICAgICAgbGFiZWw9XCJPdmVydmlld1wiXG4gICAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlTmF2ID09PSBcIm92ZXJ2aWV3XCJ9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVOYXYoXCJvdmVydmlld1wiKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxTaWRlYmFySXRlbVxuICAgICAgICAgICAgaWNvbj17TW9uaXRvcn1cbiAgICAgICAgICAgIGxhYmVsPVwiTW9uaXRvcmVkIFNlcnZpY2VzXCJcbiAgICAgICAgICAgIGlzQWN0aXZlPXthY3RpdmVOYXYgPT09IFwic2VydmljZXNcIn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZU5hdihcInNlcnZpY2VzXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPFNpZGViYXJJdGVtXG4gICAgICAgICAgICBpY29uPXtBbGVydFRyaWFuZ2xlfVxuICAgICAgICAgICAgbGFiZWw9XCJJbmNpZGVudHNcIlxuICAgICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZU5hdiA9PT0gXCJpbmNpZGVudHNcIn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZU5hdihcImluY2lkZW50c1wiKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxTaWRlYmFySXRlbVxuICAgICAgICAgICAgaWNvbj17SGlzdG9yeX1cbiAgICAgICAgICAgIGxhYmVsPVwiSGlzdG9yeSAvIExvZ3NcIlxuICAgICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZU5hdiA9PT0gXCJoaXN0b3J5XCJ9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVOYXYoXCJoaXN0b3J5XCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPFNpZGViYXJJdGVtXG4gICAgICAgICAgICBpY29uPXtTZXR0aW5nc31cbiAgICAgICAgICAgIGxhYmVsPVwiU2V0dGluZ3NcIlxuICAgICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZU5hdiA9PT0gXCJzZXR0aW5nc1wifVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlTmF2KFwic2V0dGluZ3NcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9uYXY+XG4gICAgICA8L2FzaWRlPlxuXG4gICAgICB7LyogTWFpbiBDb250ZW50ICovfVxuICAgICAgPG1haW4gY2xhc3NOYW1lPVwiZmxleC0xIG1sLVsyODBweF0gbWluLWgtc2NyZWVuIGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgey8qIFRvcCBOYXZiYXIgKi99XG4gICAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwiaC0xNiBiZy1zbGF0ZS05MDAvNTAgYmFja2Ryb3AtYmx1ci1zbSBib3JkZXItYiBib3JkZXItc2xhdGUtODAwLzYwIHN0aWNreSB0b3AtMCB6LTQwIHB4LTYgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgey8qIEdsb2JhbCBTdGF0dXMgQmFubmVyICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMyBweS0xLjUgcm91bmRlZC1mdWxsIGJvcmRlciAke1xuICAgICAgICAgICAgYWxsVXAgXG4gICAgICAgICAgICAgID8gXCJiZy1lbWVyYWxkLTUwMC8xMCBib3JkZXItZW1lcmFsZC01MDAvMjBcIiBcbiAgICAgICAgICAgICAgOiBcImJnLWFtYmVyLTUwMC8xMCBib3JkZXItYW1iZXItNTAwLzIwXCJcbiAgICAgICAgICB9YH0+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4IGgtMiB3LTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgYW5pbWF0ZS1waW5nIGFic29sdXRlIGlubGluZS1mbGV4IGgtZnVsbCB3LWZ1bGwgcm91bmRlZC1mdWxsIG9wYWNpdHktNzUgJHthbGxVcCA/IFwiYmctZW1lcmFsZC00MDBcIiA6IFwiYmctYW1iZXItNDAwXCJ9YH0gLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgcmVsYXRpdmUgaW5saW5lLWZsZXggcm91bmRlZC1mdWxsIGgtMiB3LTIgJHthbGxVcCA/IFwiYmctZW1lcmFsZC01MDBcIiA6IFwiYmctYW1iZXItNTAwXCJ9YH0gLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YHRleHQtc20gZm9udC1tZWRpdW0gJHthbGxVcCA/IFwidGV4dC1lbWVyYWxkLTQwMFwiIDogXCJ0ZXh0LWFtYmVyLTQwMFwifWB9PlxuICAgICAgICAgICAgICB7YWxsVXAgPyBcIkFsbCBTeXN0ZW1zIE9wZXJhdGlvbmFsXCIgOiBgJHtzdGF0cy5vZmZsaW5lfSBTZXJ2aWNlJHtzdGF0cy5vZmZsaW5lID4gMSA/ICdzJyA6ICcnfSBEb3duYH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNTAwIHRleHQteHNcIj7igKIgVXBkYXRlZCB7bmV3IERhdGUoKS50b0xvY2FsZVRpbWVTdHJpbmcoKX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogUmlnaHQgQWN0aW9ucyAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgIDxTZWFyY2ggY2xhc3NOYW1lPVwidy00IGgtNCBhYnNvbHV0ZSBsZWZ0LTMgdG9wLTEvMiAtdHJhbnNsYXRlLXktMS8yIHRleHQtc2xhdGUtNTAwXCIgLz5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTY0IGJnLXNsYXRlLTgwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCByb3VuZGVkLWxnIHBsLTEwIHByLTQgcHktMiB0ZXh0LXNtIHRleHQtd2hpdGUgcGxhY2Vob2xkZXItc2xhdGUtNTAwIGZvY3VzOmJvcmRlci1lbWVyYWxkLTUwMC81MCBmb2N1czpvdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxCdXR0b24gb25DbGljaz17KCkgPT4gc2V0U2hvd0FkZE1vZGFsKHRydWUpfT5cbiAgICAgICAgICAgICAgPFBsdXMgY2xhc3NOYW1lPVwidy00IGgtNCBtci0yXCIgLz5cbiAgICAgICAgICAgICAgQWRkIE1vbml0b3JcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJpY29uXCIgb25DbGljaz17ZmV0Y2hEYXRhfT5cbiAgICAgICAgICAgICAgPFJlZnJlc2hDdyBjbGFzc05hbWU9XCJ3LTUgaC01XCIgLz5cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJpY29uXCIgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPEJlbGwgY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+XG4gICAgICAgICAgICAgIHtzdGF0cy5pbmNpZGVudHMgPiAwICYmIChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMSByaWdodC0xIHctMiBoLTIgYmctcmVkLTUwMCByb3VuZGVkLWZ1bGxcIiAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy05IGgtOSByb3VuZGVkLWZ1bGwgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1lbWVyYWxkLTUwMCB0by1jeWFuLTUwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIGZvbnQtbWVkaXVtIHRleHQtc21cIj5cbiAgICAgICAgICAgICAgTUJcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICB7LyogRGFzaGJvYXJkIENvbnRlbnQgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHAtNiBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byBzcGFjZS15LTZcIj5cbiAgICAgICAgICAgIHsvKiBLUEkgUm93IC0gNCBjYXJkcyAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBtZDpncmlkLWNvbHMtNCBnYXAtNFwiPlxuICAgICAgICAgICAgICA8S1BJQ2FyZFxuICAgICAgICAgICAgICAgIHRpdGxlPVwiU2VydmljZXMgT25saW5lXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17YCR7c3RhdHMub25saW5lfS8ke3N0YXRzLnRvdGFsfWB9XG4gICAgICAgICAgICAgICAgc3VidGl0bGU9e2FsbFVwID8gXCJBbGwgaGVhbHRoeVwiIDogYCR7c3RhdHMub2ZmbGluZX0gZG93bmB9XG4gICAgICAgICAgICAgICAgaWNvbj17U2VydmVyfVxuICAgICAgICAgICAgICAgIGNvbG9yPVwiZW1lcmFsZFwiXG4gICAgICAgICAgICAgICAgZGF0YT17c2VydmljZXNEYXRhfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8S1BJQ2FyZFxuICAgICAgICAgICAgICAgIHRpdGxlPVwiQXZlcmFnZSBVcHRpbWVcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtgJHtzdGF0cy5hdmdVcHRpbWV9JWB9XG4gICAgICAgICAgICAgICAgc3VidGl0bGU9XCJMYXN0IDMwIGRheXNcIlxuICAgICAgICAgICAgICAgIGljb249e0NoZWNrQ2lyY2xlMn1cbiAgICAgICAgICAgICAgICBjb2xvcj1cImJsdWVcIlxuICAgICAgICAgICAgICAgIGRhdGE9e3VwdGltZURhdGF9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxLUElDYXJkXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJBdmcgUmVzcG9uc2UgVGltZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e2Ake3N0YXRzLmF2Z1Jlc3BvbnNlVGltZX1tc2B9XG4gICAgICAgICAgICAgICAgc3VidGl0bGU9XCJBY3Jvc3MgYWxsIHNlcnZpY2VzXCJcbiAgICAgICAgICAgICAgICBpY29uPXtaYXB9XG4gICAgICAgICAgICAgICAgY29sb3I9XCJwdXJwbGVcIlxuICAgICAgICAgICAgICAgIGRhdGE9e3Jlc3BvbnNlRGF0YX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEtQSUNhcmRcbiAgICAgICAgICAgICAgICB0aXRsZT1cIlRvdGFsIEluY2lkZW50c1wiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3N0YXRzLmluY2lkZW50c31cbiAgICAgICAgICAgICAgICBzdWJ0aXRsZT1cIkxhc3QgMjQgaG91cnNcIlxuICAgICAgICAgICAgICAgIGljb249e0FsZXJ0VHJpYW5nbGV9XG4gICAgICAgICAgICAgICAgY29sb3I9XCJhbWJlclwiXG4gICAgICAgICAgICAgICAgZGF0YT17aW5jaWRlbnRzRGF0YX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogTW9uaXRvcmVkIFNlcnZpY2VzIFNlY3Rpb24gKi99XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi00XCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlXCI+TW9uaXRvcmVkIFNlcnZpY2VzPC9oMj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtc2xhdGUtNTAwXCI+e3N0YXRzLnRvdGFsfSBzZXJ2aWNlczwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8bW90aW9uLmRpdiBcbiAgICAgICAgICAgICAgICBsYXlvdXRcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zIGdhcC02XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cInBvcExheW91dFwiPlxuICAgICAgICAgICAgICAgICAge2FwcHMubWFwKChhcHApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBwU3RhdHVzID0gZ2V0QXBwU3RhdHVzKGFwcC5pZCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPFNlcnZpY2VDYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2FwcC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcD17YXBwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPXthcHBTdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZT17KCkgPT4gZGVsZXRlQXBwKGFwcC5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG5cbiAgICAgICAgICAgICAge2FwcHMubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB5OiAyMCB9fVxuICAgICAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxLCB5OiAwIH19XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS0xNiBiZy1zbGF0ZS05MDAvMzAgcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLWRhc2hlZCBib3JkZXItc2xhdGUtODAwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMTYgaC0xNiBiZy1zbGF0ZS04MDAgcm91bmRlZC0yeGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgbXgtYXV0byBtYi00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxNb25pdG9yIGNsYXNzTmFtZT1cInctOCBoLTggdGV4dC1zbGF0ZS02MDBcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtd2hpdGUgbWItMlwiPk5vIG1vbml0b3JzIHlldDwvaDM+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTUwMCBtYi00XCI+U3RhcnQgbW9uaXRvcmluZyB5b3VyIHNlcnZpY2VzPC9wPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QWRkTW9kYWwodHJ1ZSl9PlxuICAgICAgICAgICAgICAgICAgICBBZGQgWW91ciBGaXJzdCBNb25pdG9yXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21haW4+XG5cbiAgICAgIHsvKiBBZGQgTW9uaXRvciBNb2RhbCAqL31cbiAgICAgIDxBbmltYXRlUHJlc2VuY2U+XG4gICAgICAgIHtzaG93QWRkTW9kYWwgJiYgKFxuICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIGJnLWJsYWNrLzYwIGJhY2tkcm9wLWJsdXItc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgei01MCBwLTRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgc2NhbGU6IDAuOTUsIHk6IDIwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgc2NhbGU6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCBzY2FsZTogMC45NSwgeTogMjAgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctc2xhdGUtOTAwIGJvcmRlciBib3JkZXItc2xhdGUtODAwIHJvdW5kZWQteGwgcC02IHctZnVsbCBtYXgtdy1tZCBzaGFkb3ctMnhsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMlwiPkFkZCBOZXcgTW9uaXRvcjwvaDI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNDAwIHRleHQtc20gbWItNlwiPkNvbmZpZ3VyZSBhIG5ldyBzZXJ2aWNlIHRvIG1vbml0b3I8L3A+XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8Zm9ybSBvblN1Ym1pdD17YWRkQXBwfSBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1zbGF0ZS0zMDAgbWItMlwiPlNlcnZpY2UgTmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmV3QXBwLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0TmV3QXBwKHsgLi4ubmV3QXBwLCBuYW1lOiBlLnRhcmdldC52YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLXNsYXRlLTgwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCByb3VuZGVkLWxnIHB4LTQgcHktMi41IHRleHQtd2hpdGUgcGxhY2Vob2xkZXItc2xhdGUtNTAwIGZvY3VzOmJvcmRlci1lbWVyYWxkLTUwMC81MCBmb2N1czpvdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk15IFNlcnZpY2VcIlxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtc2xhdGUtMzAwIG1iLTJcIj5VUkw8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmV3QXBwLnVybH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldE5ld0FwcCh7IC4uLm5ld0FwcCwgdXJsOiBlLnRhcmdldC52YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgYmctc2xhdGUtODAwLzUwIGJvcmRlciBib3JkZXItc2xhdGUtNzAwIHJvdW5kZWQtbGcgcHgtNCBweS0yLjUgdGV4dC13aGl0ZSBwbGFjZWhvbGRlci1zbGF0ZS01MDAgZm9jdXM6Ym9yZGVyLWVtZXJhbGQtNTAwLzUwIGZvY3VzOm91dGxpbmUtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtc2xhdGUtMzAwIG1iLTJcIj5Qb3J0PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e25ld0FwcC5wb3J0fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0TmV3QXBwKHsgLi4ubmV3QXBwLCBwb3J0OiBwYXJzZUludChlLnRhcmdldC52YWx1ZSkgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLXNsYXRlLTgwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCByb3VuZGVkLWxnIHB4LTQgcHktMi41IHRleHQtd2hpdGUgcGxhY2Vob2xkZXItc2xhdGUtNTAwIGZvY3VzOmJvcmRlci1lbWVyYWxkLTUwMC81MCBmb2N1czpvdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMyBwdC00XCI+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dBZGRNb2RhbChmYWxzZSl9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgQWRkIE1vbml0b3JcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICApfVxuICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIm1vdGlvbiIsIkFuaW1hdGVQcmVzZW5jZSIsIkFjdGl2aXR5IiwiUGx1cyIsIlJlZnJlc2hDdyIsIlRyYXNoMiIsIkV4dGVybmFsTGluayIsIlNlYXJjaCIsIkJlbGwiLCJTZXR0aW5ncyIsIkxheW91dERhc2hib2FyZCIsIk1vbml0b3IiLCJBbGVydFRyaWFuZ2xlIiwiSGlzdG9yeSIsIkNoZWNrQ2lyY2xlMiIsIkNsb2NrIiwiWmFwIiwiU2VydmVyIiwiTGluZUNoYXJ0IiwiTGluZSIsIlJlc3BvbnNpdmVDb250YWluZXIiLCJnZW5lcmF0ZVNwYXJrbGluZURhdGEiLCJwb2ludHMiLCJpc1VwIiwiQXJyYXkiLCJmcm9tIiwibGVuZ3RoIiwiXyIsImkiLCJ2YWx1ZSIsIk1hdGgiLCJyYW5kb20iLCJ0aW1lIiwiQ2FyZCIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiZGl2IiwiQ2FyZENvbnRlbnQiLCJCYWRnZSIsInZhcmlhbnQiLCJ2YXJpYW50cyIsImRlZmF1bHQiLCJzdWNjZXNzIiwiZGVzdHJ1Y3RpdmUiLCJ3YXJuaW5nIiwic3BhbiIsIlByb2dyZXNzIiwiZ2V0Q29sb3IiLCJpbml0aWFsIiwid2lkdGgiLCJhbmltYXRlIiwidHJhbnNpdGlvbiIsImR1cmF0aW9uIiwiZWFzZSIsIkJ1dHRvbiIsInNpemUiLCJwcm9wcyIsImdob3N0Iiwib3V0bGluZSIsInNpemVzIiwic20iLCJpY29uIiwiYnV0dG9uIiwiU2lkZWJhckl0ZW0iLCJJY29uIiwibGFiZWwiLCJpc0FjdGl2ZSIsIm9uQ2xpY2siLCJ3aGlsZUhvdmVyIiwieCIsIndoaWxlVGFwIiwic2NhbGUiLCJLUElDYXJkIiwidGl0bGUiLCJzdWJ0aXRsZSIsImNvbG9yIiwiZGF0YSIsImNvbG9yTWFwIiwiZW1lcmFsZCIsImJnIiwidGV4dCIsImJhciIsImJsdWUiLCJwdXJwbGUiLCJhbWJlciIsImNvbG9ycyIsInAiLCJoZWlnaHQiLCJ0eXBlIiwiZGF0YUtleSIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwiZG90IiwiU2VydmljZUNhcmQiLCJhcHAiLCJzdGF0dXMiLCJvbkRlbGV0ZSIsImlzSG92ZXJlZCIsInNldElzSG92ZXJlZCIsInNwYXJrbGluZURhdGEiLCJsYXlvdXQiLCJvcGFjaXR5IiwiZXhpdCIsIm9uSG92ZXJTdGFydCIsIm9uSG92ZXJFbmQiLCJoMyIsIm5hbWUiLCJhIiwiaHJlZiIsInVybCIsInRhcmdldCIsInJlbCIsInBvcnQiLCJ1cHRpbWUiLCJhdmdSZXNwb25zZVRpbWUiLCJsYXRlc3QiLCJEYXRlIiwidGltZXN0YW1wIiwidG9Mb2NhbGVUaW1lU3RyaW5nIiwiRGFzaGJvYXJkIiwiYXBwcyIsInNldEFwcHMiLCJzZXRTdGF0dXMiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsImFjdGl2ZU5hdiIsInNldEFjdGl2ZU5hdiIsInNob3dBZGRNb2RhbCIsInNldFNob3dBZGRNb2RhbCIsIm5ld0FwcCIsInNldE5ld0FwcCIsImVuYWJsZWQiLCJmZXRjaERhdGEiLCJpbnRlcnZhbCIsInNldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsInJlcyIsImZldGNoIiwianNvbiIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsImFkZEFwcCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsIm1ldGhvZCIsImhlYWRlcnMiLCJib2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsImFjdGlvbiIsImRlbGV0ZUFwcCIsImlkIiwiY29uZmlybSIsImdldEFwcFN0YXR1cyIsImFwcElkIiwiYXBwU3RhdHVzIiwiZmlsdGVyIiwicyIsInJvdW5kIiwicmVzcG9uc2VUaW1lIiwicmVkdWNlIiwiYWNjIiwic3RhdHMiLCJ0b3RhbCIsIm9ubGluZSIsIm9mZmxpbmUiLCJhdmdVcHRpbWUiLCJpbmNpZGVudHMiLCJhbGxVcCIsInNlcnZpY2VzRGF0YSIsInVwdGltZURhdGEiLCJyZXNwb25zZURhdGEiLCJtYXAiLCJkIiwiaW5jaWRlbnRzRGF0YSIsInJvdGF0ZSIsInJlcGVhdCIsIkluZmluaXR5IiwiYXNpZGUiLCJuYXYiLCJtYWluIiwiaGVhZGVyIiwiaW5wdXQiLCJwbGFjZWhvbGRlciIsImgyIiwibW9kZSIsInkiLCJmb3JtIiwib25TdWJtaXQiLCJvbkNoYW5nZSIsInJlcXVpcmVkIiwicGFyc2VJbnQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/app/page.tsx\n")); /***/ }), @@ -5438,28 +5438,6 @@ eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* har /***/ }), -/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-left.js": -/*!******************************************************************!*\ - !*** ./node_modules/lucide-react/dist/esm/icons/chevron-left.js ***! - \******************************************************************/ -/***/ ((__unused_webpack___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 */ __iconNode: () => (/* binding */ __iconNode),\n/* harmony export */ \"default\": () => (/* binding */ ChevronLeft)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.474.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m15 18-6-6 6-6\",\n key: \"1wnfg3\"\n }\n ]\n];\nconst ChevronLeft = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"ChevronLeft\", __iconNode);\n //# sourceMappingURL=chevron-left.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvY2hldnJvbi1sZWZ0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdhLGlCQUF1QjtJQUFDO1FBQUMsTUFBUTtRQUFBLENBQUU7WUFBQSxFQUFHLGlCQUFrQjtZQUFBLEtBQUssQ0FBUztRQUFBLENBQUM7S0FBQztDQUFBO0FBYS9FLGtCQUFjLGtFQUFpQixnQkFBZSxDQUFVIiwic291cmNlcyI6WyIvVXNlcnMvbWF0dGJydWNlL0RvY3VtZW50cy9Qcm9qZWN0cy9zcmMvaWNvbnMvY2hldnJvbi1sZWZ0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuaW1wb3J0IHsgSWNvbk5vZGUgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBfX2ljb25Ob2RlOiBJY29uTm9kZSA9IFtbJ3BhdGgnLCB7IGQ6ICdtMTUgMTgtNi02IDYtNicsIGtleTogJzF3bmZnMycgfV1dO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbkxlZnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1UVWdNVGd0TmkwMklEWXROaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi1sZWZ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbkxlZnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uTGVmdCcsIF9faWNvbk5vZGUpO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uTGVmdDtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-left.js\n")); - -/***/ }), - -/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-right.js": -/*!*******************************************************************!*\ - !*** ./node_modules/lucide-react/dist/esm/icons/chevron-right.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack___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 */ __iconNode: () => (/* binding */ __iconNode),\n/* harmony export */ \"default\": () => (/* binding */ ChevronRight)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.474.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m9 18 6-6-6-6\",\n key: \"mthhwq\"\n }\n ]\n];\nconst ChevronRight = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"ChevronRight\", __iconNode);\n //# sourceMappingURL=chevron-right.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvY2hldnJvbi1yaWdodC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFHYSxpQkFBdUI7SUFBQztRQUFDLE1BQVE7UUFBQSxDQUFFO1lBQUEsRUFBRyxnQkFBaUI7WUFBQSxLQUFLLENBQVM7UUFBQSxDQUFDO0tBQUM7Q0FBQTtBQWE5RSxtQkFBZSxrRUFBaUIsaUJBQWdCLENBQVUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXR0YnJ1Y2UvRG9jdW1lbnRzL1Byb2plY3RzL3NyYy9pY29ucy9jaGV2cm9uLXJpZ2h0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuaW1wb3J0IHsgSWNvbk5vZGUgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBfX2ljb25Ob2RlOiBJY29uTm9kZSA9IFtbJ3BhdGgnLCB7IGQ6ICdtOSAxOCA2LTYtNi02Jywga2V5OiAnbXRoaHdxJyB9XV07XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uUmlnaHRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE9TQXhPQ0EyTFRZdE5pMDJJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLXJpZ2h0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvblJpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvblJpZ2h0JywgX19pY29uTm9kZSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25SaWdodDtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-right.js\n")); - -/***/ }), - /***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/circle-check.js": /*!******************************************************************!*\ !*** ./node_modules/lucide-react/dist/esm/icons/circle-check.js ***! diff --git a/.next/static/chunks/webpack.js b/.next/static/chunks/webpack.js index 08fa209d..412517b8 100644 --- a/.next/static/chunks/webpack.js +++ b/.next/static/chunks/webpack.js @@ -190,7 +190,7 @@ /******/ /******/ /* webpack/runtime/getFullHash */ /******/ (() => { -/******/ __webpack_require__.h = () => ("2f7aec89503a6f6a") +/******/ __webpack_require__.h = () => ("96d76a5621faa661") /******/ })(); /******/ /******/ /* webpack/runtime/global */ diff --git a/.next/static/webpack/2f7aec89503a6f6a.webpack.hot-update.json b/.next/static/webpack/2f7aec89503a6f6a.webpack.hot-update.json new file mode 100644 index 00000000..3823c4ce --- /dev/null +++ b/.next/static/webpack/2f7aec89503a6f6a.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/3c9945e8dec13b19.webpack.hot-update.json b/.next/static/webpack/3c9945e8dec13b19.webpack.hot-update.json new file mode 100644 index 00000000..3823c4ce --- /dev/null +++ b/.next/static/webpack/3c9945e8dec13b19.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/40c8247711300955.webpack.hot-update.json b/.next/static/webpack/40c8247711300955.webpack.hot-update.json new file mode 100644 index 00000000..d22f2c43 --- /dev/null +++ b/.next/static/webpack/40c8247711300955.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/page","webpack"],"r":["app/_not-found/page"],"m":["(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-left.js","(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/chevron-right.js","(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!","(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-fallback.js","(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/app/page.40c8247711300955.hot-update.js b/.next/static/webpack/app/page.40c8247711300955.hot-update.js new file mode 100644 index 00000000..997068d3 --- /dev/null +++ b/.next/static/webpack/app/page.40c8247711300955.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/page",{ + +/***/ "(app-pages-browser)/./src/app/page.tsx": +/*!**************************!*\ + !*** ./src/app/page.tsx ***! + \**************************/ +/***/ ((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\": () => (/* binding */ Dashboard)\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 framer_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! framer-motion */ \"(app-pages-browser)/./node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs\");\n/* harmony import */ var framer_motion__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! framer-motion */ \"(app-pages-browser)/./node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/server.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/external-link.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/clock.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/refresh-cw.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/settings.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/trash-2.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/activity.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/layout-dashboard.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/monitor.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/triangle-alert.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/history.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/search.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/plus.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/bell.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/circle-check.js\");\n/* harmony import */ var _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! __barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/zap.js\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/component/ResponsiveContainer.js\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/chart/LineChart.js\");\n/* harmony import */ var _barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=Line,LineChart,ResponsiveContainer!=!recharts */ \"(app-pages-browser)/./node_modules/recharts/es6/cartesian/Line.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$(), _s1 = $RefreshSig$();\n\n\n\n\n// Generate sparkline data\nconst generateSparklineData = (points, isUp)=>{\n return Array.from({\n length: points\n }, (_, i)=>({\n value: isUp ? 80 + Math.random() * 20 : Math.random() * 30,\n time: i\n }));\n};\n// shadcn-style Card Component\nconst Card = (param)=>{\n let { children, className = \"\" } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-slate-900/60 backdrop-blur-xl border border-slate-800/60 rounded-xl overflow-hidden \".concat(className),\n children: children\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 66,\n columnNumber: 3\n }, undefined);\n};\n_c = Card;\nconst CardContent = (param)=>{\n let { children, className = \"\" } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6 \".concat(className),\n children: children\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 72,\n columnNumber: 3\n }, undefined);\n};\n_c1 = CardContent;\n// shadcn-style Badge\nconst Badge = (param)=>{\n let { children, variant = \"default\", className = \"\" } = param;\n const variants = {\n default: \"bg-slate-800 text-slate-200 border-slate-700\",\n success: \"bg-emerald-500/10 text-emerald-400 border-emerald-500/20\",\n destructive: \"bg-red-500/10 text-red-400 border-red-500/20\",\n warning: \"bg-amber-500/10 text-amber-400 border-amber-500/20\"\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium border \".concat(variants[variant], \" \").concat(className),\n children: children\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 92,\n columnNumber: 5\n }, undefined);\n};\n_c2 = Badge;\n// shadcn-style Progress\nconst Progress = (param)=>{\n let { value, className = \"\" } = param;\n const getColor = ()=>{\n if (value >= 95) return \"bg-emerald-500\";\n if (value >= 80) return \"bg-amber-500\";\n return \"bg-red-500\";\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full bg-slate-800 rounded-full h-2 overflow-hidden \".concat(className),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n width: 0\n },\n animate: {\n width: \"\".concat(value, \"%\")\n },\n transition: {\n duration: 1,\n ease: \"easeOut\"\n },\n className: \"h-full rounded-full \".concat(getColor())\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 107,\n columnNumber: 7\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 106,\n columnNumber: 5\n }, undefined);\n};\n_c3 = Progress;\n// shadcn-style Button\nconst Button = (param)=>{\n let { children, variant = \"default\", size = \"default\", className = \"\", ...props } = param;\n const variants = {\n default: \"bg-emerald-600 hover:bg-emerald-500 text-white\",\n ghost: \"hover:bg-slate-800 text-slate-400 hover:text-white\",\n outline: \"border border-slate-700 hover:bg-slate-800 text-slate-300\"\n };\n const sizes = {\n default: \"px-4 py-2\",\n sm: \"px-3 py-1.5 text-sm\",\n icon: \"p-2\"\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"inline-flex items-center justify-center rounded-lg font-medium transition-colors \".concat(variants[variant], \" \").concat(sizes[size], \" \").concat(className),\n ...props,\n children: children\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 141,\n columnNumber: 5\n }, undefined);\n};\n_c4 = Button;\n// Sidebar Item Component\nconst SidebarItem = (param)=>{\n let { icon: Icon, label, isActive, onClick } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.button, {\n onClick: onClick,\n whileHover: {\n x: 2\n },\n whileTap: {\n scale: 0.98\n },\n className: \"w-full flex items-center gap-3 px-3 py-2.5 rounded-lg transition-all duration-200 \".concat(isActive ? \"bg-emerald-500/10 text-emerald-400 border border-emerald-500/20\" : \"text-slate-400 hover:text-slate-100 hover:bg-slate-800/50\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Icon, {\n className: \"w-5 h-5 flex-shrink-0\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 172,\n columnNumber: 5\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium whitespace-nowrap\",\n children: label\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 173,\n columnNumber: 5\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 162,\n columnNumber: 3\n }, undefined);\n};\n_c5 = SidebarItem;\n// KPI Card Component\nconst KPICard = (param)=>{\n let { title, value, subtitle, icon: Icon, color, data } = param;\n const colorMap = {\n emerald: {\n bg: \"bg-emerald-500/10\",\n text: \"text-emerald-400\",\n bar: \"#10b981\"\n },\n blue: {\n bg: \"bg-blue-500/10\",\n text: \"text-blue-400\",\n bar: \"#3b82f6\"\n },\n purple: {\n bg: \"bg-purple-500/10\",\n text: \"text-purple-400\",\n bar: \"#a855f7\"\n },\n amber: {\n bg: \"bg-amber-500/10\",\n text: \"text-amber-400\",\n bar: \"#f59e0b\"\n }\n };\n const colors = colorMap[color] || colorMap.emerald;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Card, {\n className: \"hover:border-slate-700/60 transition-all duration-300 hover:shadow-xl hover:shadow-black/20 hover:scale-[1.02]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(CardContent, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start 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-slate-400 text-sm font-medium mb-1\",\n children: title\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 206,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-3xl font-bold text-white\",\n children: value\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 207,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-500 text-xs mt-1\",\n children: subtitle\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 208,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 205,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-2.5 rounded-lg \".concat(colors.bg),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Icon, {\n className: \"w-5 h-5 \".concat(colors.text)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 211,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 210,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 204,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-4 h-12\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_3__.ResponsiveContainer, {\n width: \"100%\",\n height: \"100%\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__.LineChart, {\n data: data,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__.Line, {\n type: \"monotone\",\n dataKey: \"value\",\n stroke: colors.bar,\n strokeWidth: 2,\n dot: false\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 217,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 216,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 215,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 214,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 203,\n columnNumber: 7\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 202,\n columnNumber: 5\n }, undefined);\n};\n_c6 = KPICard;\n// Service Card Component\nconst ServiceCard = (param)=>{\n let { app, status, onDelete } = param;\n _s();\n const [isHovered, setIsHovered] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const sparklineData = generateSparklineData(10, status.isUp);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n layout: true,\n initial: {\n opacity: 0,\n scale: 0.95\n },\n animate: {\n opacity: 1,\n scale: 1\n },\n exit: {\n opacity: 0,\n scale: 0.95\n },\n whileHover: {\n scale: 1.02,\n transition: {\n duration: 0.2\n }\n },\n onHoverStart: ()=>setIsHovered(true),\n onHoverEnd: ()=>setIsHovered(false),\n className: \"group\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Card, {\n className: \"h-full hover:border-slate-700/60 transition-all duration-300 hover:shadow-xl hover:shadow-black/20\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-1 w-full \".concat(status.isUp ? \"bg-emerald-500\" : \"bg-red-500\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 258,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(CardContent, {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between\",\n children: [\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: \"w-10 h-10 rounded-lg flex items-center justify-center \".concat(status.isUp ? \"bg-emerald-500/10\" : \"bg-red-500/10\"),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"w-5 h-5 \".concat(status.isUp ? \"text-emerald-400\" : \"text-red-400\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 265,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 264,\n columnNumber: 15\n }, undefined),\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)(\"h3\", {\n className: \"font-semibold text-white flex items-center gap-2\",\n children: [\n app.name,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: app.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"text-slate-500 hover:text-emerald-400 transition-colors\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"w-3.5 h-3.5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 276,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 270,\n columnNumber: 19\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 268,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-slate-500\",\n children: [\n \"Port \",\n app.port\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 279,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 267,\n columnNumber: 15\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 263,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Badge, {\n variant: status.isUp ? \"success\" : \"destructive\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative flex h-1.5 w-1.5 mr-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"animate-ping absolute inline-flex h-full w-full rounded-full opacity-75 \".concat(status.isUp ? \"bg-emerald-400\" : \"bg-red-400\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 285,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative inline-flex rounded-full h-1.5 w-1.5 \".concat(status.isUp ? \"bg-emerald-500\" : \"bg-red-500\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 286,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 284,\n columnNumber: 15\n }, undefined),\n status.isUp ? \"Operational\" : \"Down\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 283,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 262,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-slate-400\",\n children: \"Uptime\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 295,\n columnNumber: 15\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg font-semibold text-white\",\n children: [\n status.uptime,\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 296,\n columnNumber: 15\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 294,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Progress, {\n value: status.uptime\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 298,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 293,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-slate-400\",\n children: \"Response Time\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 303,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-2xl font-bold text-white\",\n children: status.avgResponseTime > 0 ? \"\".concat(status.avgResponseTime, \"ms\") : \"—\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 304,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 302,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-10 -mx-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_3__.ResponsiveContainer, {\n width: \"100%\",\n height: \"100%\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_4__.LineChart, {\n data: sparklineData,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Line_LineChart_ResponsiveContainer_recharts__WEBPACK_IMPORTED_MODULE_5__.Line, {\n type: \"monotone\",\n dataKey: \"value\",\n stroke: status.isUp ? \"#10b981\" : \"#ef4444\",\n strokeWidth: 1.5,\n dot: false\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 313,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 312,\n columnNumber: 15\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 311,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 310,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between pt-2 border-t border-slate-800/60\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-slate-500 flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: \"w-3 h-3\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 327,\n columnNumber: 15\n }, undefined),\n status.latest ? new Date(status.latest.timestamp).toLocaleTimeString() : \"Never\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 326,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_9__.AnimatePresence, {\n children: isHovered && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n x: 10\n },\n animate: {\n opacity: 1,\n x: 0\n },\n exit: {\n opacity: 0,\n x: 10\n },\n className: \"flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n variant: \"ghost\",\n size: \"icon\",\n className: \"h-8 w-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 340,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 339,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n variant: \"ghost\",\n size: \"icon\",\n className: \"h-8 w-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 343,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 342,\n columnNumber: 19\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n variant: \"ghost\",\n size: \"icon\",\n className: \"h-8 w-8 hover:text-red-400 hover:bg-red-500/10\",\n onClick: onDelete,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n className: \"w-4 h-4\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 351,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 345,\n columnNumber: 19\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 333,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 331,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 325,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 260,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 256,\n columnNumber: 7\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 246,\n columnNumber: 5\n }, undefined);\n};\n_s(ServiceCard, \"FPQn8a98tPjpohC7NUYORQR8GJE=\");\n_c7 = ServiceCard;\nfunction Dashboard() {\n _s1();\n const [apps, setApps] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [status, setStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [activeNav, setActiveNav] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"overview\");\n const [showAddModal, setShowAddModal] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [newApp, setNewApp] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n name: \"\",\n url: \"http://localhost:\",\n port: 3000,\n enabled: true\n });\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Dashboard.useEffect\": ()=>{\n fetchData();\n const interval = setInterval(fetchData, 30000);\n return ({\n \"Dashboard.useEffect\": ()=>clearInterval(interval)\n })[\"Dashboard.useEffect\"];\n }\n }[\"Dashboard.useEffect\"], []);\n async function fetchData() {\n try {\n const res = await fetch(\"/api/monitor\");\n const data = await res.json();\n setApps(data.apps || []);\n setStatus(data.status || []);\n } catch (err) {\n console.error(\"Failed to fetch data:\", err);\n } finally{\n setLoading(false);\n }\n }\n async function addApp(e) {\n e.preventDefault();\n if (!newApp.name || !newApp.url) return;\n await fetch(\"/api/monitor\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n action: \"addApp\",\n app: newApp\n })\n });\n setShowAddModal(false);\n setNewApp({\n name: \"\",\n url: \"http://localhost:\",\n port: 3000,\n enabled: true\n });\n fetchData();\n }\n async function deleteApp(id) {\n if (!confirm(\"Delete this monitor?\")) return;\n await fetch(\"/api/monitor\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n action: \"deleteApp\",\n id\n })\n });\n fetchData();\n }\n function getAppStatus(appId) {\n const appStatus = status.filter((s)=>s.appId === appId);\n const latest = appStatus[appStatus.length - 1];\n const isUp = (latest === null || latest === void 0 ? void 0 : latest.status) === \"up\";\n const uptime = appStatus.length > 0 ? Math.round(appStatus.filter((s)=>s.status === \"up\").length / appStatus.length * 100) : 100;\n const avgResponseTime = appStatus.length > 0 ? Math.round(appStatus.filter((s)=>s.responseTime).reduce((acc, s)=>acc + (s.responseTime || 0), 0) / appStatus.filter((s)=>s.responseTime).length) || 0 : 0;\n return {\n latest,\n isUp,\n uptime,\n avgResponseTime\n };\n }\n const stats = {\n total: apps.length,\n online: apps.filter((app)=>getAppStatus(app.id).isUp).length,\n offline: apps.filter((app)=>!getAppStatus(app.id).isUp).length,\n avgUptime: apps.length > 0 ? Math.round(apps.reduce((acc, app)=>acc + getAppStatus(app.id).uptime, 0) / apps.length) : 0,\n avgResponseTime: apps.length > 0 ? Math.round(apps.reduce((acc, app)=>acc + getAppStatus(app.id).avgResponseTime, 0) / apps.length) : 0,\n incidents: status.filter((s)=>s.status === \"down\").length\n };\n const allUp = stats.online === stats.total && stats.total > 0;\n // Sparkline data for KPI cards\n const servicesData = generateSparklineData(20, true);\n const uptimeData = generateSparklineData(20, true);\n const responseData = generateSparklineData(20, true).map((d)=>({\n ...d,\n value: d.value * 2\n }));\n const incidentsData = generateSparklineData(20, false);\n if (loading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-slate-950 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n className: \"flex flex-col items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n animate: {\n rotate: 360\n },\n transition: {\n duration: 2,\n repeat: Infinity,\n ease: \"linear\"\n },\n className: \"w-12 h-12 rounded-xl bg-gradient-to-br from-emerald-500 to-cyan-500\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 461,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 w-12 h-12 rounded-xl bg-gradient-to-br from-emerald-500 to-cyan-500 blur-xl opacity-50\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 466,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 460,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-400\",\n children: \"Loading dashboard...\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 468,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 455,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 454,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-slate-950 text-slate-100 flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"fixed left-0 top-0 bottom-0 w-[280px] bg-slate-900/80 backdrop-blur-xl border-r border-slate-800/60 z-50 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-16 flex items-center px-4 border-b border-slate-800/60\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-9 h-9 rounded-lg bg-gradient-to-br from-emerald-500 to-cyan-500 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"w-5 h-5 text-white\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 481,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 480,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"ml-3 font-bold text-lg text-white\",\n children: \"Heartbeat\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 483,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 479,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"flex-1 p-3 space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n label: \"Overview\",\n isActive: activeNav === \"overview\",\n onClick: ()=>setActiveNav(\"overview\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 488,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n label: \"Monitored Services\",\n isActive: activeNav === \"services\",\n onClick: ()=>setActiveNav(\"services\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 494,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n label: \"Incidents\",\n isActive: activeNav === \"incidents\",\n onClick: ()=>setActiveNav(\"incidents\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 500,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n label: \"History / Logs\",\n isActive: activeNav === \"history\",\n onClick: ()=>setActiveNav(\"history\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 506,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItem, {\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n label: \"Settings\",\n isActive: activeNav === \"settings\",\n onClick: ()=>setActiveNav(\"settings\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 512,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 487,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 477,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"flex-1 ml-[280px] min-h-screen flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"h-16 bg-slate-900/50 backdrop-blur-sm border-b border-slate-800/60 sticky top-0 z-40 px-6 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 px-3 py-1.5 rounded-full border \".concat(allUp ? \"bg-emerald-500/10 border-emerald-500/20\" : \"bg-amber-500/10 border-amber-500/20\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative flex h-2 w-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"animate-ping absolute inline-flex h-full w-full rounded-full opacity-75 \".concat(allUp ? \"bg-emerald-400\" : \"bg-amber-400\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 532,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative inline-flex rounded-full h-2 w-2 \".concat(allUp ? \"bg-emerald-500\" : \"bg-amber-500\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 533,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 531,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium \".concat(allUp ? \"text-emerald-400\" : \"text-amber-400\"),\n children: allUp ? \"All Systems Operational\" : \"\".concat(stats.offline, \" Service\").concat(stats.offline > 1 ? 's' : '', \" Down\")\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 535,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-slate-500 text-xs\",\n children: [\n \"• Updated \",\n new Date().toLocaleTimeString()\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 538,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 526,\n columnNumber: 11\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: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n className: \"w-4 h-4 absolute left-3 top-1/2 -translate-y-1/2 text-slate-500\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 544,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n placeholder: \"Search...\",\n className: \"w-64 bg-slate-800/50 border border-slate-700 rounded-lg pl-10 pr-4 py-2 text-sm text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 545,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 543,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n onClick: ()=>setShowAddModal(true),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n className: \"w-4 h-4 mr-2\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 553,\n columnNumber: 15\n }, this),\n \"Add Monitor\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 552,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n variant: \"ghost\",\n size: \"icon\",\n onClick: fetchData,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 558,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 557,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n variant: \"ghost\",\n size: \"icon\",\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n className: \"w-5 h-5\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 562,\n columnNumber: 15\n }, this),\n stats.incidents > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"absolute top-1 right-1 w-2 h-2 bg-red-500 rounded-full\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 564,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 561,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-9 h-9 rounded-full bg-gradient-to-br from-emerald-500 to-cyan-500 flex items-center justify-center text-white font-medium text-sm\",\n children: \"MB\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 568,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 542,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 524,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 p-6 overflow-auto\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 md:grid-cols-4 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(KPICard, {\n title: \"Services Online\",\n value: \"\".concat(stats.online, \"/\").concat(stats.total),\n subtitle: allUp ? \"All healthy\" : \"\".concat(stats.offline, \" down\"),\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n color: \"emerald\",\n data: servicesData\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 579,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(KPICard, {\n title: \"Average Uptime\",\n value: \"\".concat(stats.avgUptime, \"%\"),\n subtitle: \"Last 30 days\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_21__[\"default\"],\n color: \"blue\",\n data: uptimeData\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 587,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(KPICard, {\n title: \"Avg Response Time\",\n value: \"\".concat(stats.avgResponseTime, \"ms\"),\n subtitle: \"Across all services\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_22__[\"default\"],\n color: \"purple\",\n data: responseData\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 595,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(KPICard, {\n title: \"Total Incidents\",\n value: stats.incidents,\n subtitle: \"Last 24 hours\",\n icon: _barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n color: \"amber\",\n data: incidentsData\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 603,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 578,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold text-white\",\n children: \"Monitored Services\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 616,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm text-slate-500\",\n children: [\n stats.total,\n \" services\"\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 617,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 615,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n layout: true,\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_9__.AnimatePresence, {\n mode: \"popLayout\",\n children: apps.map((app)=>{\n const appStatus = getAppStatus(app.id);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ServiceCard, {\n app: app,\n status: appStatus,\n onDelete: ()=>deleteApp(app.id)\n }, app.id, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 628,\n columnNumber: 23\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 624,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 620,\n columnNumber: 15\n }, this),\n apps.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n y: 20\n },\n animate: {\n opacity: 1,\n y: 0\n },\n className: \"text-center py-16 bg-slate-900/30 rounded-xl border border-dashed border-slate-800\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-16 h-16 bg-slate-800 rounded-2xl flex items-center justify-center mx-auto mb-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Activity_AlertTriangle_Bell_CheckCircle2_Clock_ExternalLink_History_LayoutDashboard_Monitor_Plus_RefreshCw_Search_Server_Settings_Trash2_Zap_lucide_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n className: \"w-8 h-8 text-slate-600\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 646,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 645,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold text-white mb-2\",\n children: \"No monitors yet\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 648,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-500 mb-4\",\n children: \"Start monitoring your services\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 649,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n onClick: ()=>setShowAddModal(true),\n children: \"Add Your First Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 650,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 640,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 614,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 576,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 575,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 522,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_9__.AnimatePresence, {\n children: showAddModal && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0\n },\n animate: {\n opacity: 1\n },\n exit: {\n opacity: 0\n },\n className: \"fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-50 p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(framer_motion__WEBPACK_IMPORTED_MODULE_2__.motion.div, {\n initial: {\n opacity: 0,\n scale: 0.95,\n y: 20\n },\n animate: {\n opacity: 1,\n scale: 1,\n y: 0\n },\n exit: {\n opacity: 0,\n scale: 0.95,\n y: 20\n },\n className: \"bg-slate-900 border border-slate-800 rounded-xl p-6 w-full max-w-md shadow-2xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xl font-bold text-white mb-2\",\n children: \"Add New Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 675,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-slate-400 text-sm mb-6\",\n children: \"Configure a new service to monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 676,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: addApp,\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"block text-sm font-medium text-slate-300 mb-2\",\n children: \"Service Name\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 680,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n value: newApp.name,\n onChange: (e)=>setNewApp({\n ...newApp,\n name: e.target.value\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none\",\n placeholder: \"My Service\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 681,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 679,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 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)(\"label\", {\n className: \"block text-sm font-medium text-slate-300 mb-2\",\n children: \"URL\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 693,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"url\",\n value: newApp.url,\n onChange: (e)=>setNewApp({\n ...newApp,\n url: e.target.value\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none\",\n placeholder: \"http://localhost:3000\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 694,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 692,\n columnNumber: 19\n }, this),\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)(\"label\", {\n className: \"block text-sm font-medium text-slate-300 mb-2\",\n children: \"Port\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 704,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n value: newApp.port,\n onChange: (e)=>setNewApp({\n ...newApp,\n port: parseInt(e.target.value)\n }),\n className: \"w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none\",\n required: true\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 705,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 703,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 691,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-3 pt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n type: \"button\",\n variant: \"outline\",\n onClick: ()=>setShowAddModal(false),\n className: \"flex-1\",\n children: \"Cancel\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 716,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Button, {\n type: \"submit\",\n className: \"flex-1\",\n children: \"Add Monitor\"\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 724,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 715,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 678,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 669,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 663,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 661,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx\",\n lineNumber: 475,\n columnNumber: 5\n }, this);\n}\n_s1(Dashboard, \"oMishvHAmlkTZHuM0+UU7NPSeps=\");\n_c8 = Dashboard;\nvar _c, _c1, _c2, _c3, _c4, _c5, _c6, _c7, _c8;\n$RefreshReg$(_c, \"Card\");\n$RefreshReg$(_c1, \"CardContent\");\n$RefreshReg$(_c2, \"Badge\");\n$RefreshReg$(_c3, \"Progress\");\n$RefreshReg$(_c4, \"Button\");\n$RefreshReg$(_c5, \"SidebarItem\");\n$RefreshReg$(_c6, \"KPICard\");\n$RefreshReg$(_c7, \"ServiceCard\");\n$RefreshReg$(_c8, \"Dashboard\");\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,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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVczRDtJQXBYd0JvRjtNQUFBQSIsInNvdXJjZXMiOlsiL1VzZXJzL21hdHRicnVjZS9Eb2N1bWVudHMvUHJvamVjdHMvT3BlbkNsYXcvV2ViL2hlYXJ0YmVhdC1tb25pdG9yL3NyYy9hcHAvcGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBtb3Rpb24sIEFuaW1hdGVQcmVzZW5jZSB9IGZyb20gXCJmcmFtZXItbW90aW9uXCI7XG5pbXBvcnQge1xuICBBY3Rpdml0eSxcbiAgUGx1cyxcbiAgUmVmcmVzaEN3LFxuICBUcmFzaDIsXG4gIEV4dGVybmFsTGluayxcbiAgU2VhcmNoLFxuICBCZWxsLFxuICBTZXR0aW5ncyxcbiAgQ2hldnJvbkxlZnQsXG4gIENoZXZyb25SaWdodCxcbiAgTGF5b3V0RGFzaGJvYXJkLFxuICBNb25pdG9yLFxuICBBbGVydFRyaWFuZ2xlLFxuICBIaXN0b3J5LFxuICBDaGVja0NpcmNsZTIsXG4gIFhDaXJjbGUsXG4gIENsb2NrLFxuICBaYXAsXG4gIFRyZW5kaW5nVXAsXG4gIFNlcnZlcixcbiAgTW9yZVZlcnRpY2FsLFxuICBNZW51LFxufSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQge1xuICBMaW5lQ2hhcnQsXG4gIExpbmUsXG4gIFJlc3BvbnNpdmVDb250YWluZXIsXG59IGZyb20gXCJyZWNoYXJ0c1wiO1xuXG4vLyBUeXBlc1xuaW50ZXJmYWNlIEFwcCB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIHBvcnQ6IG51bWJlcjtcbiAgcGF0aDogc3RyaW5nO1xuICBjb21tYW5kOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBTdGF0dXNFbnRyeSB7XG4gIGFwcElkOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBzdGF0dXM6IFwidXBcIiB8IFwiZG93blwiO1xuICByZXNwb25zZVRpbWU/OiBudW1iZXI7XG59XG5cbi8vIEdlbmVyYXRlIHNwYXJrbGluZSBkYXRhXG5jb25zdCBnZW5lcmF0ZVNwYXJrbGluZURhdGEgPSAocG9pbnRzOiBudW1iZXIsIGlzVXA6IGJvb2xlYW4pID0+IHtcbiAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IHBvaW50cyB9LCAoXywgaSkgPT4gKHtcbiAgICB2YWx1ZTogaXNVcCA/IDgwICsgTWF0aC5yYW5kb20oKSAqIDIwIDogTWF0aC5yYW5kb20oKSAqIDMwLFxuICAgIHRpbWU6IGksXG4gIH0pKTtcbn07XG5cbi8vIHNoYWRjbi1zdHlsZSBDYXJkIENvbXBvbmVudFxuY29uc3QgQ2FyZCA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUgPSBcIlwiIH06IHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTsgY2xhc3NOYW1lPzogc3RyaW5nIH0pID0+IChcbiAgPGRpdiBjbGFzc05hbWU9e2BiZy1zbGF0ZS05MDAvNjAgYmFja2Ryb3AtYmx1ci14bCBib3JkZXIgYm9yZGVyLXNsYXRlLTgwMC82MCByb3VuZGVkLXhsIG92ZXJmbG93LWhpZGRlbiAke2NsYXNzTmFtZX1gfT5cbiAgICB7Y2hpbGRyZW59XG4gIDwvZGl2PlxuKTtcblxuY29uc3QgQ2FyZENvbnRlbnQgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lID0gXCJcIiB9OiB7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7IGNsYXNzTmFtZT86IHN0cmluZyB9KSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPXtgcC02ICR7Y2xhc3NOYW1lfWB9PntjaGlsZHJlbn08L2Rpdj5cbik7XG5cbi8vIHNoYWRjbi1zdHlsZSBCYWRnZVxuY29uc3QgQmFkZ2UgPSAoeyBcbiAgY2hpbGRyZW4sIFxuICB2YXJpYW50ID0gXCJkZWZhdWx0XCIsXG4gIGNsYXNzTmFtZSA9IFwiXCIgXG59OiB7IFxuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlOyBcbiAgdmFyaWFudD86IFwiZGVmYXVsdFwiIHwgXCJzdWNjZXNzXCIgfCBcImRlc3RydWN0aXZlXCIgfCBcIndhcm5pbmdcIjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkgPT4ge1xuICBjb25zdCB2YXJpYW50cyA9IHtcbiAgICBkZWZhdWx0OiBcImJnLXNsYXRlLTgwMCB0ZXh0LXNsYXRlLTIwMCBib3JkZXItc2xhdGUtNzAwXCIsXG4gICAgc3VjY2VzczogXCJiZy1lbWVyYWxkLTUwMC8xMCB0ZXh0LWVtZXJhbGQtNDAwIGJvcmRlci1lbWVyYWxkLTUwMC8yMFwiLFxuICAgIGRlc3RydWN0aXZlOiBcImJnLXJlZC01MDAvMTAgdGV4dC1yZWQtNDAwIGJvcmRlci1yZWQtNTAwLzIwXCIsXG4gICAgd2FybmluZzogXCJiZy1hbWJlci01MDAvMTAgdGV4dC1hbWJlci00MDAgYm9yZGVyLWFtYmVyLTUwMC8yMFwiLFxuICB9O1xuICByZXR1cm4gKFxuICAgIDxzcGFuIGNsYXNzTmFtZT17YGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHB4LTIuNSBweS0xIHJvdW5kZWQtZnVsbCB0ZXh0LXhzIGZvbnQtbWVkaXVtIGJvcmRlciAke3ZhcmlhbnRzW3ZhcmlhbnRdfSAke2NsYXNzTmFtZX1gfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L3NwYW4+XG4gICk7XG59O1xuXG4vLyBzaGFkY24tc3R5bGUgUHJvZ3Jlc3NcbmNvbnN0IFByb2dyZXNzID0gKHsgdmFsdWUsIGNsYXNzTmFtZSA9IFwiXCIgfTogeyB2YWx1ZTogbnVtYmVyOyBjbGFzc05hbWU/OiBzdHJpbmcgfSkgPT4ge1xuICBjb25zdCBnZXRDb2xvciA9ICgpID0+IHtcbiAgICBpZiAodmFsdWUgPj0gOTUpIHJldHVybiBcImJnLWVtZXJhbGQtNTAwXCI7XG4gICAgaWYgKHZhbHVlID49IDgwKSByZXR1cm4gXCJiZy1hbWJlci01MDBcIjtcbiAgICByZXR1cm4gXCJiZy1yZWQtNTAwXCI7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2B3LWZ1bGwgYmctc2xhdGUtODAwIHJvdW5kZWQtZnVsbCBoLTIgb3ZlcmZsb3ctaGlkZGVuICR7Y2xhc3NOYW1lfWB9PlxuICAgICAgPG1vdGlvbi5kaXYgXG4gICAgICAgIGluaXRpYWw9e3sgd2lkdGg6IDAgfX1cbiAgICAgICAgYW5pbWF0ZT17eyB3aWR0aDogYCR7dmFsdWV9JWAgfX1cbiAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMSwgZWFzZTogXCJlYXNlT3V0XCIgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgaC1mdWxsIHJvdW5kZWQtZnVsbCAke2dldENvbG9yKCl9YH1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG4vLyBzaGFkY24tc3R5bGUgQnV0dG9uXG5jb25zdCBCdXR0b24gPSAoeyBcbiAgY2hpbGRyZW4sIFxuICB2YXJpYW50ID0gXCJkZWZhdWx0XCIsIFxuICBzaXplID0gXCJkZWZhdWx0XCIsXG4gIGNsYXNzTmFtZSA9IFwiXCIsXG4gIC4uLnByb3BzIFxufTogeyBcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTsgXG4gIHZhcmlhbnQ/OiBcImRlZmF1bHRcIiB8IFwiZ2hvc3RcIiB8IFwib3V0bGluZVwiO1xuICBzaXplPzogXCJkZWZhdWx0XCIgfCBcInNtXCIgfCBcImljb25cIjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSAmIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICBjb25zdCB2YXJpYW50cyA9IHtcbiAgICBkZWZhdWx0OiBcImJnLWVtZXJhbGQtNjAwIGhvdmVyOmJnLWVtZXJhbGQtNTAwIHRleHQtd2hpdGVcIixcbiAgICBnaG9zdDogXCJob3ZlcjpiZy1zbGF0ZS04MDAgdGV4dC1zbGF0ZS00MDAgaG92ZXI6dGV4dC13aGl0ZVwiLFxuICAgIG91dGxpbmU6IFwiYm9yZGVyIGJvcmRlci1zbGF0ZS03MDAgaG92ZXI6Ymctc2xhdGUtODAwIHRleHQtc2xhdGUtMzAwXCIsXG4gIH07XG4gIGNvbnN0IHNpemVzID0ge1xuICAgIGRlZmF1bHQ6IFwicHgtNCBweS0yXCIsXG4gICAgc206IFwicHgtMyBweS0xLjUgdGV4dC1zbVwiLFxuICAgIGljb246IFwicC0yXCIsXG4gIH07XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvbiBcbiAgICAgIGNsYXNzTmFtZT17YGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzICR7dmFyaWFudHNbdmFyaWFudF19ICR7c2l6ZXNbc2l6ZV19ICR7Y2xhc3NOYW1lfWB9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvYnV0dG9uPlxuICApO1xufTtcblxuLy8gU2lkZWJhciBJdGVtIENvbXBvbmVudFxuY29uc3QgU2lkZWJhckl0ZW0gPSAoeyBcbiAgaWNvbjogSWNvbiwgXG4gIGxhYmVsLCBcbiAgaXNBY3RpdmUsIFxuICBvbkNsaWNrIFxufTogeyBcbiAgaWNvbjogYW55O1xuICBsYWJlbDogc3RyaW5nOyBcbiAgaXNBY3RpdmU6IGJvb2xlYW47IFxuICBvbkNsaWNrOiAoKSA9PiB2b2lkO1xufSkgPT4gKFxuICA8bW90aW9uLmJ1dHRvblxuICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgd2hpbGVIb3Zlcj17eyB4OiAyIH19XG4gICAgd2hpbGVUYXA9e3sgc2NhbGU6IDAuOTggfX1cbiAgICBjbGFzc05hbWU9e2B3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMgcHgtMyBweS0yLjUgcm91bmRlZC1sZyB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgJHtcbiAgICAgIGlzQWN0aXZlIFxuICAgICAgICA/IFwiYmctZW1lcmFsZC01MDAvMTAgdGV4dC1lbWVyYWxkLTQwMCBib3JkZXIgYm9yZGVyLWVtZXJhbGQtNTAwLzIwXCIgXG4gICAgICAgIDogXCJ0ZXh0LXNsYXRlLTQwMCBob3Zlcjp0ZXh0LXNsYXRlLTEwMCBob3ZlcjpiZy1zbGF0ZS04MDAvNTBcIlxuICAgIH1gfVxuICA+XG4gICAgPEljb24gY2xhc3NOYW1lPVwidy01IGgtNSBmbGV4LXNocmluay0wXCIgLz5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHdoaXRlc3BhY2Utbm93cmFwXCI+e2xhYmVsfTwvc3Bhbj5cbiAgPC9tb3Rpb24uYnV0dG9uPlxuKTtcblxuLy8gS1BJIENhcmQgQ29tcG9uZW50XG5jb25zdCBLUElDYXJkID0gKHsgXG4gIHRpdGxlLCBcbiAgdmFsdWUsIFxuICBzdWJ0aXRsZSwgXG4gIGljb246IEljb24sIFxuICBjb2xvcixcbiAgZGF0YSxcbn06IHsgXG4gIHRpdGxlOiBzdHJpbmc7IFxuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyOyBcbiAgc3VidGl0bGU6IHN0cmluZztcbiAgaWNvbjogYW55O1xuICBjb2xvcjogc3RyaW5nO1xuICBkYXRhOiBhbnlbXTtcbn0pID0+IHtcbiAgY29uc3QgY29sb3JNYXA6IFJlY29yZDxzdHJpbmcsIHsgYmc6IHN0cmluZzsgdGV4dDogc3RyaW5nOyBiYXI6IHN0cmluZyB9PiA9IHtcbiAgICBlbWVyYWxkOiB7IGJnOiBcImJnLWVtZXJhbGQtNTAwLzEwXCIsIHRleHQ6IFwidGV4dC1lbWVyYWxkLTQwMFwiLCBiYXI6IFwiIzEwYjk4MVwiIH0sXG4gICAgYmx1ZTogeyBiZzogXCJiZy1ibHVlLTUwMC8xMFwiLCB0ZXh0OiBcInRleHQtYmx1ZS00MDBcIiwgYmFyOiBcIiMzYjgyZjZcIiB9LFxuICAgIHB1cnBsZTogeyBiZzogXCJiZy1wdXJwbGUtNTAwLzEwXCIsIHRleHQ6IFwidGV4dC1wdXJwbGUtNDAwXCIsIGJhcjogXCIjYTg1NWY3XCIgfSxcbiAgICBhbWJlcjogeyBiZzogXCJiZy1hbWJlci01MDAvMTBcIiwgdGV4dDogXCJ0ZXh0LWFtYmVyLTQwMFwiLCBiYXI6IFwiI2Y1OWUwYlwiIH0sXG4gIH07XG4gIGNvbnN0IGNvbG9ycyA9IGNvbG9yTWFwW2NvbG9yXSB8fCBjb2xvck1hcC5lbWVyYWxkO1xuXG4gIHJldHVybiAoXG4gICAgPENhcmQgY2xhc3NOYW1lPVwiaG92ZXI6Ym9yZGVyLXNsYXRlLTcwMC82MCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgaG92ZXI6c2hhZG93LXhsIGhvdmVyOnNoYWRvdy1ibGFjay8yMCBob3ZlcjpzY2FsZS1bMS4wMl1cIj5cbiAgICAgIDxDYXJkQ29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTQwMCB0ZXh0LXNtIGZvbnQtbWVkaXVtIG1iLTFcIj57dGl0bGV9PC9wPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1ib2xkIHRleHQtd2hpdGVcIj57dmFsdWV9PC9wPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbGF0ZS01MDAgdGV4dC14cyBtdC0xXCI+e3N1YnRpdGxlfTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHAtMi41IHJvdW5kZWQtbGcgJHtjb2xvcnMuYmd9YH0+XG4gICAgICAgICAgICA8SWNvbiBjbGFzc05hbWU9e2B3LTUgaC01ICR7Y29sb3JzLnRleHR9YH0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBoLTEyXCI+XG4gICAgICAgICAgPFJlc3BvbnNpdmVDb250YWluZXIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiPlxuICAgICAgICAgICAgPExpbmVDaGFydCBkYXRhPXtkYXRhfT5cbiAgICAgICAgICAgICAgPExpbmVcbiAgICAgICAgICAgICAgICB0eXBlPVwibW9ub3RvbmVcIlxuICAgICAgICAgICAgICAgIGRhdGFLZXk9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlPXtjb2xvcnMuYmFyfVxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXsyfVxuICAgICAgICAgICAgICAgIGRvdD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0xpbmVDaGFydD5cbiAgICAgICAgICA8L1Jlc3BvbnNpdmVDb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkQ29udGVudD5cbiAgICA8L0NhcmQ+XG4gICk7XG59O1xuXG4vLyBTZXJ2aWNlIENhcmQgQ29tcG9uZW50XG5jb25zdCBTZXJ2aWNlQ2FyZCA9ICh7IFxuICBhcHAsIFxuICBzdGF0dXMsIFxuICBvbkRlbGV0ZSBcbn06IHsgXG4gIGFwcDogQXBwOyBcbiAgc3RhdHVzOiB7IGlzVXA6IGJvb2xlYW47IHVwdGltZTogbnVtYmVyOyBhdmdSZXNwb25zZVRpbWU6IG51bWJlcjsgbGF0ZXN0PzogU3RhdHVzRW50cnkgfTsgXG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xufSkgPT4ge1xuICBjb25zdCBbaXNIb3ZlcmVkLCBzZXRJc0hvdmVyZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzcGFya2xpbmVEYXRhID0gZ2VuZXJhdGVTcGFya2xpbmVEYXRhKDEwLCBzdGF0dXMuaXNVcCk7XG5cbiAgcmV0dXJuIChcbiAgICA8bW90aW9uLmRpdlxuICAgICAgbGF5b3V0XG4gICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHNjYWxlOiAwLjk1IH19XG4gICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHNjYWxlOiAxIH19XG4gICAgICBleGl0PXt7IG9wYWNpdHk6IDAsIHNjYWxlOiAwLjk1IH19XG4gICAgICB3aGlsZUhvdmVyPXt7IHNjYWxlOiAxLjAyLCB0cmFuc2l0aW9uOiB7IGR1cmF0aW9uOiAwLjIgfSB9fVxuICAgICAgb25Ib3ZlclN0YXJ0PXsoKSA9PiBzZXRJc0hvdmVyZWQodHJ1ZSl9XG4gICAgICBvbkhvdmVyRW5kPXsoKSA9PiBzZXRJc0hvdmVyZWQoZmFsc2UpfVxuICAgICAgY2xhc3NOYW1lPVwiZ3JvdXBcIlxuICAgID5cbiAgICAgIDxDYXJkIGNsYXNzTmFtZT1cImgtZnVsbCBob3Zlcjpib3JkZXItc2xhdGUtNzAwLzYwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBob3ZlcjpzaGFkb3cteGwgaG92ZXI6c2hhZG93LWJsYWNrLzIwXCI+XG4gICAgICAgIHsvKiBUb3AgY29sb3JlZCBsaW5lICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGgtMSB3LWZ1bGwgJHtzdGF0dXMuaXNVcCA/IFwiYmctZW1lcmFsZC01MDBcIiA6IFwiYmctcmVkLTUwMFwifWB9IC8+XG4gICAgICAgIFxuICAgICAgICA8Q2FyZENvbnRlbnQgY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy0xMCBoLTEwIHJvdW5kZWQtbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgJHtzdGF0dXMuaXNVcCA/IFwiYmctZW1lcmFsZC01MDAvMTBcIiA6IFwiYmctcmVkLTUwMC8xMFwifWB9PlxuICAgICAgICAgICAgICAgIDxTZXJ2ZXIgY2xhc3NOYW1lPXtgdy01IGgtNSAke3N0YXR1cy5pc1VwID8gXCJ0ZXh0LWVtZXJhbGQtNDAwXCIgOiBcInRleHQtcmVkLTQwMFwifWB9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkIHRleHQtd2hpdGUgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIHthcHAubmFtZX1cbiAgICAgICAgICAgICAgICAgIDxhIFxuICAgICAgICAgICAgICAgICAgICBocmVmPXthcHAudXJsfSBcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCIgXG4gICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTUwMCBob3Zlcjp0ZXh0LWVtZXJhbGQtNDAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEV4dGVybmFsTGluayBjbGFzc05hbWU9XCJ3LTMuNSBoLTMuNVwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtc2xhdGUtNTAwXCI+UG9ydCB7YXBwLnBvcnR9PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8QmFkZ2UgdmFyaWFudD17c3RhdHVzLmlzVXAgPyBcInN1Y2Nlc3NcIiA6IFwiZGVzdHJ1Y3RpdmVcIn0+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInJlbGF0aXZlIGZsZXggaC0xLjUgdy0xLjUgbXItMVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YGFuaW1hdGUtcGluZyBhYnNvbHV0ZSBpbmxpbmUtZmxleCBoLWZ1bGwgdy1mdWxsIHJvdW5kZWQtZnVsbCBvcGFjaXR5LTc1ICR7c3RhdHVzLmlzVXAgPyBcImJnLWVtZXJhbGQtNDAwXCIgOiBcImJnLXJlZC00MDBcIn1gfSAvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YHJlbGF0aXZlIGlubGluZS1mbGV4IHJvdW5kZWQtZnVsbCBoLTEuNSB3LTEuNSAke3N0YXR1cy5pc1VwID8gXCJiZy1lbWVyYWxkLTUwMFwiIDogXCJiZy1yZWQtNTAwXCJ9YH0gLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB7c3RhdHVzLmlzVXAgPyBcIk9wZXJhdGlvbmFsXCIgOiBcIkRvd25cIn1cbiAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogVXB0aW1lICovfVxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi0yXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1zbGF0ZS00MDBcIj5VcHRpbWU8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlXCI+e3N0YXR1cy51cHRpbWV9JTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPFByb2dyZXNzIHZhbHVlPXtzdGF0dXMudXB0aW1lfSAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIFJlc3BvbnNlIFRpbWUgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1zbGF0ZS00MDBcIj5SZXNwb25zZSBUaW1lPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtd2hpdGVcIj5cbiAgICAgICAgICAgICAge3N0YXR1cy5hdmdSZXNwb25zZVRpbWUgPiAwID8gYCR7c3RhdHVzLmF2Z1Jlc3BvbnNlVGltZX1tc2AgOiBcIuKAlFwifVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIFNwYXJrbGluZSAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtMTAgLW14LTJcIj5cbiAgICAgICAgICAgIDxSZXNwb25zaXZlQ29udGFpbmVyIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIj5cbiAgICAgICAgICAgICAgPExpbmVDaGFydCBkYXRhPXtzcGFya2xpbmVEYXRhfT5cbiAgICAgICAgICAgICAgICA8TGluZVxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm1vbm90b25lXCJcbiAgICAgICAgICAgICAgICAgIGRhdGFLZXk9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBzdHJva2U9e3N0YXR1cy5pc1VwID8gXCIjMTBiOTgxXCIgOiBcIiNlZjQ0NDRcIn1cbiAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXsxLjV9XG4gICAgICAgICAgICAgICAgICBkb3Q9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvTGluZUNoYXJ0PlxuICAgICAgICAgICAgPC9SZXNwb25zaXZlQ29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIEZvb3RlciAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwdC0yIGJvcmRlci10IGJvcmRlci1zbGF0ZS04MDAvNjBcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1zbGF0ZS01MDAgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgPENsb2NrIGNsYXNzTmFtZT1cInctMyBoLTNcIiAvPlxuICAgICAgICAgICAgICB7c3RhdHVzLmxhdGVzdCA/IG5ldyBEYXRlKHN0YXR1cy5sYXRlc3QudGltZXN0YW1wKS50b0xvY2FsZVRpbWVTdHJpbmcoKSA6IFwiTmV2ZXJcIn1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPEFuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgICAgICAge2lzSG92ZXJlZCAmJiAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgeDogMTAgfX1cbiAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeDogMCB9fVxuICAgICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB4OiAxMCB9fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cImljb25cIiBjbGFzc05hbWU9XCJoLTggdy04XCI+XG4gICAgICAgICAgICAgICAgICAgIDxSZWZyZXNoQ3cgY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cImljb25cIiBjbGFzc05hbWU9XCJoLTggdy04XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTZXR0aW5ncyBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImdob3N0XCIgXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJpY29uXCIgXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtOCB3LTggaG92ZXI6dGV4dC1yZWQtNDAwIGhvdmVyOmJnLXJlZC01MDAvMTBcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkRlbGV0ZX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFRyYXNoMiBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9DYXJkPlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhc2hib2FyZCgpIHtcbiAgY29uc3QgW2FwcHMsIHNldEFwcHNdID0gdXNlU3RhdGU8QXBwW10+KFtdKTtcbiAgY29uc3QgW3N0YXR1cywgc2V0U3RhdHVzXSA9IHVzZVN0YXRlPFN0YXR1c0VudHJ5W10+KFtdKTtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFthY3RpdmVOYXYsIHNldEFjdGl2ZU5hdl0gPSB1c2VTdGF0ZShcIm92ZXJ2aWV3XCIpO1xuICBjb25zdCBbc2hvd0FkZE1vZGFsLCBzZXRTaG93QWRkTW9kYWxdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbbmV3QXBwLCBzZXROZXdBcHBdID0gdXNlU3RhdGU8UGFydGlhbDxBcHA+Pih7XG4gICAgbmFtZTogXCJcIixcbiAgICB1cmw6IFwiaHR0cDovL2xvY2FsaG9zdDpcIixcbiAgICBwb3J0OiAzMDAwLFxuICAgIGVuYWJsZWQ6IHRydWUsXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hEYXRhKCk7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChmZXRjaERhdGEsIDMwMDAwKTtcbiAgICByZXR1cm4gKCkgPT4gY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gIH0sIFtdKTtcblxuICBhc3luYyBmdW5jdGlvbiBmZXRjaERhdGEoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKFwiL2FwaS9tb25pdG9yXCIpO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlcy5qc29uKCk7XG4gICAgICBzZXRBcHBzKGRhdGEuYXBwcyB8fCBbXSk7XG4gICAgICBzZXRTdGF0dXMoZGF0YS5zdGF0dXMgfHwgW10pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBmZXRjaCBkYXRhOlwiLCBlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBhZGRBcHAoZTogUmVhY3QuRm9ybUV2ZW50KSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICghbmV3QXBwLm5hbWUgfHwgIW5ld0FwcC51cmwpIHJldHVybjtcbiAgICBhd2FpdCBmZXRjaChcIi9hcGkvbW9uaXRvclwiLCB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBhY3Rpb246IFwiYWRkQXBwXCIsIGFwcDogbmV3QXBwIH0pLFxuICAgIH0pO1xuICAgIHNldFNob3dBZGRNb2RhbChmYWxzZSk7XG4gICAgc2V0TmV3QXBwKHsgbmFtZTogXCJcIiwgdXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6XCIsIHBvcnQ6IDMwMDAsIGVuYWJsZWQ6IHRydWUgfSk7XG4gICAgZmV0Y2hEYXRhKCk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBkZWxldGVBcHAoaWQ6IHN0cmluZykge1xuICAgIGlmICghY29uZmlybShcIkRlbGV0ZSB0aGlzIG1vbml0b3I/XCIpKSByZXR1cm47XG4gICAgYXdhaXQgZmV0Y2goXCIvYXBpL21vbml0b3JcIiwge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgYWN0aW9uOiBcImRlbGV0ZUFwcFwiLCBpZCB9KSxcbiAgICB9KTtcbiAgICBmZXRjaERhdGEoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEFwcFN0YXR1cyhhcHBJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgYXBwU3RhdHVzID0gc3RhdHVzLmZpbHRlcigocykgPT4gcy5hcHBJZCA9PT0gYXBwSWQpO1xuICAgIGNvbnN0IGxhdGVzdCA9IGFwcFN0YXR1c1thcHBTdGF0dXMubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgaXNVcCA9IGxhdGVzdD8uc3RhdHVzID09PSBcInVwXCI7XG4gICAgY29uc3QgdXB0aW1lID0gYXBwU3RhdHVzLmxlbmd0aCA+IDAgXG4gICAgICA/IE1hdGgucm91bmQoKGFwcFN0YXR1cy5maWx0ZXIocyA9PiBzLnN0YXR1cyA9PT0gXCJ1cFwiKS5sZW5ndGggLyBhcHBTdGF0dXMubGVuZ3RoKSAqIDEwMClcbiAgICAgIDogMTAwO1xuICAgIGNvbnN0IGF2Z1Jlc3BvbnNlVGltZSA9IGFwcFN0YXR1cy5sZW5ndGggPiAwXG4gICAgICA/IE1hdGgucm91bmQoYXBwU3RhdHVzLmZpbHRlcihzID0+IHMucmVzcG9uc2VUaW1lKS5yZWR1Y2UoKGFjYywgcykgPT4gYWNjICsgKHMucmVzcG9uc2VUaW1lIHx8IDApLCAwKSAvIGFwcFN0YXR1cy5maWx0ZXIocyA9PiBzLnJlc3BvbnNlVGltZSkubGVuZ3RoKSB8fCAwXG4gICAgICA6IDA7XG4gICAgcmV0dXJuIHsgbGF0ZXN0LCBpc1VwLCB1cHRpbWUsIGF2Z1Jlc3BvbnNlVGltZSB9O1xuICB9XG5cbiAgY29uc3Qgc3RhdHMgPSB7XG4gICAgdG90YWw6IGFwcHMubGVuZ3RoLFxuICAgIG9ubGluZTogYXBwcy5maWx0ZXIoKGFwcCkgPT4gZ2V0QXBwU3RhdHVzKGFwcC5pZCkuaXNVcCkubGVuZ3RoLFxuICAgIG9mZmxpbmU6IGFwcHMuZmlsdGVyKChhcHApID0+ICFnZXRBcHBTdGF0dXMoYXBwLmlkKS5pc1VwKS5sZW5ndGgsXG4gICAgYXZnVXB0aW1lOiBhcHBzLmxlbmd0aCA+IDAgXG4gICAgICA/IE1hdGgucm91bmQoYXBwcy5yZWR1Y2UoKGFjYywgYXBwKSA9PiBhY2MgKyBnZXRBcHBTdGF0dXMoYXBwLmlkKS51cHRpbWUsIDApIC8gYXBwcy5sZW5ndGgpXG4gICAgICA6IDAsXG4gICAgYXZnUmVzcG9uc2VUaW1lOiBhcHBzLmxlbmd0aCA+IDBcbiAgICAgID8gTWF0aC5yb3VuZChhcHBzLnJlZHVjZSgoYWNjLCBhcHApID0+IGFjYyArIGdldEFwcFN0YXR1cyhhcHAuaWQpLmF2Z1Jlc3BvbnNlVGltZSwgMCkgLyBhcHBzLmxlbmd0aClcbiAgICAgIDogMCxcbiAgICBpbmNpZGVudHM6IHN0YXR1cy5maWx0ZXIocyA9PiBzLnN0YXR1cyA9PT0gXCJkb3duXCIpLmxlbmd0aCxcbiAgfTtcblxuICBjb25zdCBhbGxVcCA9IHN0YXRzLm9ubGluZSA9PT0gc3RhdHMudG90YWwgJiYgc3RhdHMudG90YWwgPiAwO1xuXG4gIC8vIFNwYXJrbGluZSBkYXRhIGZvciBLUEkgY2FyZHNcbiAgY29uc3Qgc2VydmljZXNEYXRhID0gZ2VuZXJhdGVTcGFya2xpbmVEYXRhKDIwLCB0cnVlKTtcbiAgY29uc3QgdXB0aW1lRGF0YSA9IGdlbmVyYXRlU3BhcmtsaW5lRGF0YSgyMCwgdHJ1ZSk7XG4gIGNvbnN0IHJlc3BvbnNlRGF0YSA9IGdlbmVyYXRlU3BhcmtsaW5lRGF0YSgyMCwgdHJ1ZSkubWFwKGQgPT4gKHsgLi4uZCwgdmFsdWU6IGQudmFsdWUgKiAyIH0pKTtcbiAgY29uc3QgaW5jaWRlbnRzRGF0YSA9IGdlbmVyYXRlU3BhcmtsaW5lRGF0YSgyMCwgZmFsc2UpO1xuXG4gIGlmIChsb2FkaW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLXNsYXRlLTk1MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC00XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgIDxtb3Rpb24uZGl2IFxuICAgICAgICAgICAgICBhbmltYXRlPXt7IHJvdGF0ZTogMzYwIH19XG4gICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDIsIHJlcGVhdDogSW5maW5pdHksIGVhc2U6IFwibGluZWFyXCIgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0xMiBoLTEyIHJvdW5kZWQteGwgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1lbWVyYWxkLTUwMCB0by1jeWFuLTUwMFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIHctMTIgaC0xMiByb3VuZGVkLXhsIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tZW1lcmFsZC01MDAgdG8tY3lhbi01MDAgYmx1ci14bCBvcGFjaXR5LTUwXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTQwMFwiPkxvYWRpbmcgZGFzaGJvYXJkLi4uPC9wPlxuICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1zbGF0ZS05NTAgdGV4dC1zbGF0ZS0xMDAgZmxleFwiPlxuICAgICAgey8qIEZpeGVkIFNpZGViYXIgLSAyODBweCAqL31cbiAgICAgIDxhc2lkZSBjbGFzc05hbWU9XCJmaXhlZCBsZWZ0LTAgdG9wLTAgYm90dG9tLTAgdy1bMjgwcHhdIGJnLXNsYXRlLTkwMC84MCBiYWNrZHJvcC1ibHVyLXhsIGJvcmRlci1yIGJvcmRlci1zbGF0ZS04MDAvNjAgei01MCBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgIHsvKiBMb2dvICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtMTYgZmxleCBpdGVtcy1jZW50ZXIgcHgtNCBib3JkZXItYiBib3JkZXItc2xhdGUtODAwLzYwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTkgaC05IHJvdW5kZWQtbGcgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1lbWVyYWxkLTUwMCB0by1jeWFuLTUwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPEFjdGl2aXR5IGNsYXNzTmFtZT1cInctNSBoLTUgdGV4dC13aGl0ZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWwtMyBmb250LWJvbGQgdGV4dC1sZyB0ZXh0LXdoaXRlXCI+SGVhcnRiZWF0PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogTmF2aWdhdGlvbiAqL31cbiAgICAgICAgPG5hdiBjbGFzc05hbWU9XCJmbGV4LTEgcC0zIHNwYWNlLXktMVwiPlxuICAgICAgICAgIDxTaWRlYmFySXRlbVxuICAgICAgICAgICAgaWNvbj17TGF5b3V0RGFzaGJvYXJkfVxuICAgICAgICAgICAgbGFiZWw9XCJPdmVydmlld1wiXG4gICAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlTmF2ID09PSBcIm92ZXJ2aWV3XCJ9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVOYXYoXCJvdmVydmlld1wiKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxTaWRlYmFySXRlbVxuICAgICAgICAgICAgaWNvbj17TW9uaXRvcn1cbiAgICAgICAgICAgIGxhYmVsPVwiTW9uaXRvcmVkIFNlcnZpY2VzXCJcbiAgICAgICAgICAgIGlzQWN0aXZlPXthY3RpdmVOYXYgPT09IFwic2VydmljZXNcIn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZU5hdihcInNlcnZpY2VzXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPFNpZGViYXJJdGVtXG4gICAgICAgICAgICBpY29uPXtBbGVydFRyaWFuZ2xlfVxuICAgICAgICAgICAgbGFiZWw9XCJJbmNpZGVudHNcIlxuICAgICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZU5hdiA9PT0gXCJpbmNpZGVudHNcIn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZU5hdihcImluY2lkZW50c1wiKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxTaWRlYmFySXRlbVxuICAgICAgICAgICAgaWNvbj17SGlzdG9yeX1cbiAgICAgICAgICAgIGxhYmVsPVwiSGlzdG9yeSAvIExvZ3NcIlxuICAgICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZU5hdiA9PT0gXCJoaXN0b3J5XCJ9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVOYXYoXCJoaXN0b3J5XCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPFNpZGViYXJJdGVtXG4gICAgICAgICAgICBpY29uPXtTZXR0aW5nc31cbiAgICAgICAgICAgIGxhYmVsPVwiU2V0dGluZ3NcIlxuICAgICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZU5hdiA9PT0gXCJzZXR0aW5nc1wifVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlTmF2KFwic2V0dGluZ3NcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9uYXY+XG4gICAgICA8L2FzaWRlPlxuXG4gICAgICB7LyogTWFpbiBDb250ZW50ICovfVxuICAgICAgPG1haW4gY2xhc3NOYW1lPVwiZmxleC0xIG1sLVsyODBweF0gbWluLWgtc2NyZWVuIGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgey8qIFRvcCBOYXZiYXIgKi99XG4gICAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwiaC0xNiBiZy1zbGF0ZS05MDAvNTAgYmFja2Ryb3AtYmx1ci1zbSBib3JkZXItYiBib3JkZXItc2xhdGUtODAwLzYwIHN0aWNreSB0b3AtMCB6LTQwIHB4LTYgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgey8qIEdsb2JhbCBTdGF0dXMgQmFubmVyICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMyBweS0xLjUgcm91bmRlZC1mdWxsIGJvcmRlciAke1xuICAgICAgICAgICAgYWxsVXAgXG4gICAgICAgICAgICAgID8gXCJiZy1lbWVyYWxkLTUwMC8xMCBib3JkZXItZW1lcmFsZC01MDAvMjBcIiBcbiAgICAgICAgICAgICAgOiBcImJnLWFtYmVyLTUwMC8xMCBib3JkZXItYW1iZXItNTAwLzIwXCJcbiAgICAgICAgICB9YH0+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4IGgtMiB3LTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgYW5pbWF0ZS1waW5nIGFic29sdXRlIGlubGluZS1mbGV4IGgtZnVsbCB3LWZ1bGwgcm91bmRlZC1mdWxsIG9wYWNpdHktNzUgJHthbGxVcCA/IFwiYmctZW1lcmFsZC00MDBcIiA6IFwiYmctYW1iZXItNDAwXCJ9YH0gLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgcmVsYXRpdmUgaW5saW5lLWZsZXggcm91bmRlZC1mdWxsIGgtMiB3LTIgJHthbGxVcCA/IFwiYmctZW1lcmFsZC01MDBcIiA6IFwiYmctYW1iZXItNTAwXCJ9YH0gLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YHRleHQtc20gZm9udC1tZWRpdW0gJHthbGxVcCA/IFwidGV4dC1lbWVyYWxkLTQwMFwiIDogXCJ0ZXh0LWFtYmVyLTQwMFwifWB9PlxuICAgICAgICAgICAgICB7YWxsVXAgPyBcIkFsbCBTeXN0ZW1zIE9wZXJhdGlvbmFsXCIgOiBgJHtzdGF0cy5vZmZsaW5lfSBTZXJ2aWNlJHtzdGF0cy5vZmZsaW5lID4gMSA/ICdzJyA6ICcnfSBEb3duYH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNTAwIHRleHQteHNcIj7igKIgVXBkYXRlZCB7bmV3IERhdGUoKS50b0xvY2FsZVRpbWVTdHJpbmcoKX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogUmlnaHQgQWN0aW9ucyAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgIDxTZWFyY2ggY2xhc3NOYW1lPVwidy00IGgtNCBhYnNvbHV0ZSBsZWZ0LTMgdG9wLTEvMiAtdHJhbnNsYXRlLXktMS8yIHRleHQtc2xhdGUtNTAwXCIgLz5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTY0IGJnLXNsYXRlLTgwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCByb3VuZGVkLWxnIHBsLTEwIHByLTQgcHktMiB0ZXh0LXNtIHRleHQtd2hpdGUgcGxhY2Vob2xkZXItc2xhdGUtNTAwIGZvY3VzOmJvcmRlci1lbWVyYWxkLTUwMC81MCBmb2N1czpvdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxCdXR0b24gb25DbGljaz17KCkgPT4gc2V0U2hvd0FkZE1vZGFsKHRydWUpfT5cbiAgICAgICAgICAgICAgPFBsdXMgY2xhc3NOYW1lPVwidy00IGgtNCBtci0yXCIgLz5cbiAgICAgICAgICAgICAgQWRkIE1vbml0b3JcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJpY29uXCIgb25DbGljaz17ZmV0Y2hEYXRhfT5cbiAgICAgICAgICAgICAgPFJlZnJlc2hDdyBjbGFzc05hbWU9XCJ3LTUgaC01XCIgLz5cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJpY29uXCIgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPEJlbGwgY2xhc3NOYW1lPVwidy01IGgtNVwiIC8+XG4gICAgICAgICAgICAgIHtzdGF0cy5pbmNpZGVudHMgPiAwICYmIChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMSByaWdodC0xIHctMiBoLTIgYmctcmVkLTUwMCByb3VuZGVkLWZ1bGxcIiAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy05IGgtOSByb3VuZGVkLWZ1bGwgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1lbWVyYWxkLTUwMCB0by1jeWFuLTUwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIGZvbnQtbWVkaXVtIHRleHQtc21cIj5cbiAgICAgICAgICAgICAgTUJcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICB7LyogRGFzaGJvYXJkIENvbnRlbnQgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIHAtNiBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byBzcGFjZS15LTZcIj5cbiAgICAgICAgICAgIHsvKiBLUEkgUm93IC0gNCBjYXJkcyAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBtZDpncmlkLWNvbHMtNCBnYXAtNFwiPlxuICAgICAgICAgICAgICA8S1BJQ2FyZFxuICAgICAgICAgICAgICAgIHRpdGxlPVwiU2VydmljZXMgT25saW5lXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17YCR7c3RhdHMub25saW5lfS8ke3N0YXRzLnRvdGFsfWB9XG4gICAgICAgICAgICAgICAgc3VidGl0bGU9e2FsbFVwID8gXCJBbGwgaGVhbHRoeVwiIDogYCR7c3RhdHMub2ZmbGluZX0gZG93bmB9XG4gICAgICAgICAgICAgICAgaWNvbj17U2VydmVyfVxuICAgICAgICAgICAgICAgIGNvbG9yPVwiZW1lcmFsZFwiXG4gICAgICAgICAgICAgICAgZGF0YT17c2VydmljZXNEYXRhfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8S1BJQ2FyZFxuICAgICAgICAgICAgICAgIHRpdGxlPVwiQXZlcmFnZSBVcHRpbWVcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtgJHtzdGF0cy5hdmdVcHRpbWV9JWB9XG4gICAgICAgICAgICAgICAgc3VidGl0bGU9XCJMYXN0IDMwIGRheXNcIlxuICAgICAgICAgICAgICAgIGljb249e0NoZWNrQ2lyY2xlMn1cbiAgICAgICAgICAgICAgICBjb2xvcj1cImJsdWVcIlxuICAgICAgICAgICAgICAgIGRhdGE9e3VwdGltZURhdGF9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxLUElDYXJkXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJBdmcgUmVzcG9uc2UgVGltZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e2Ake3N0YXRzLmF2Z1Jlc3BvbnNlVGltZX1tc2B9XG4gICAgICAgICAgICAgICAgc3VidGl0bGU9XCJBY3Jvc3MgYWxsIHNlcnZpY2VzXCJcbiAgICAgICAgICAgICAgICBpY29uPXtaYXB9XG4gICAgICAgICAgICAgICAgY29sb3I9XCJwdXJwbGVcIlxuICAgICAgICAgICAgICAgIGRhdGE9e3Jlc3BvbnNlRGF0YX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEtQSUNhcmRcbiAgICAgICAgICAgICAgICB0aXRsZT1cIlRvdGFsIEluY2lkZW50c1wiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3N0YXRzLmluY2lkZW50c31cbiAgICAgICAgICAgICAgICBzdWJ0aXRsZT1cIkxhc3QgMjQgaG91cnNcIlxuICAgICAgICAgICAgICAgIGljb249e0FsZXJ0VHJpYW5nbGV9XG4gICAgICAgICAgICAgICAgY29sb3I9XCJhbWJlclwiXG4gICAgICAgICAgICAgICAgZGF0YT17aW5jaWRlbnRzRGF0YX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogTW9uaXRvcmVkIFNlcnZpY2VzIFNlY3Rpb24gKi99XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi00XCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlXCI+TW9uaXRvcmVkIFNlcnZpY2VzPC9oMj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtc2xhdGUtNTAwXCI+e3N0YXRzLnRvdGFsfSBzZXJ2aWNlczwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8bW90aW9uLmRpdiBcbiAgICAgICAgICAgICAgICBsYXlvdXRcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zIGdhcC02XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cInBvcExheW91dFwiPlxuICAgICAgICAgICAgICAgICAge2FwcHMubWFwKChhcHApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBwU3RhdHVzID0gZ2V0QXBwU3RhdHVzKGFwcC5pZCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPFNlcnZpY2VDYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2FwcC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcD17YXBwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPXthcHBTdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZT17KCkgPT4gZGVsZXRlQXBwKGFwcC5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG5cbiAgICAgICAgICAgICAge2FwcHMubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB5OiAyMCB9fVxuICAgICAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxLCB5OiAwIH19XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS0xNiBiZy1zbGF0ZS05MDAvMzAgcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLWRhc2hlZCBib3JkZXItc2xhdGUtODAwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMTYgaC0xNiBiZy1zbGF0ZS04MDAgcm91bmRlZC0yeGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgbXgtYXV0byBtYi00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxNb25pdG9yIGNsYXNzTmFtZT1cInctOCBoLTggdGV4dC1zbGF0ZS02MDBcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtd2hpdGUgbWItMlwiPk5vIG1vbml0b3JzIHlldDwvaDM+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTUwMCBtYi00XCI+U3RhcnQgbW9uaXRvcmluZyB5b3VyIHNlcnZpY2VzPC9wPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QWRkTW9kYWwodHJ1ZSl9PlxuICAgICAgICAgICAgICAgICAgICBBZGQgWW91ciBGaXJzdCBNb25pdG9yXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21haW4+XG5cbiAgICAgIHsvKiBBZGQgTW9uaXRvciBNb2RhbCAqL31cbiAgICAgIDxBbmltYXRlUHJlc2VuY2U+XG4gICAgICAgIHtzaG93QWRkTW9kYWwgJiYgKFxuICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIGJnLWJsYWNrLzYwIGJhY2tkcm9wLWJsdXItc20gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgei01MCBwLTRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCwgc2NhbGU6IDAuOTUsIHk6IDIwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgc2NhbGU6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCBzY2FsZTogMC45NSwgeTogMjAgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctc2xhdGUtOTAwIGJvcmRlciBib3JkZXItc2xhdGUtODAwIHJvdW5kZWQteGwgcC02IHctZnVsbCBtYXgtdy1tZCBzaGFkb3ctMnhsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMlwiPkFkZCBOZXcgTW9uaXRvcjwvaDI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtNDAwIHRleHQtc20gbWItNlwiPkNvbmZpZ3VyZSBhIG5ldyBzZXJ2aWNlIHRvIG1vbml0b3I8L3A+XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8Zm9ybSBvblN1Ym1pdD17YWRkQXBwfSBjbGFzc05hbWU9XCJzcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJsb2NrIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1zbGF0ZS0zMDAgbWItMlwiPlNlcnZpY2UgTmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmV3QXBwLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0TmV3QXBwKHsgLi4ubmV3QXBwLCBuYW1lOiBlLnRhcmdldC52YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLXNsYXRlLTgwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCByb3VuZGVkLWxnIHB4LTQgcHktMi41IHRleHQtd2hpdGUgcGxhY2Vob2xkZXItc2xhdGUtNTAwIGZvY3VzOmJvcmRlci1lbWVyYWxkLTUwMC81MCBmb2N1czpvdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk15IFNlcnZpY2VcIlxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtc2xhdGUtMzAwIG1iLTJcIj5VUkw8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmV3QXBwLnVybH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldE5ld0FwcCh7IC4uLm5ld0FwcCwgdXJsOiBlLnRhcmdldC52YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgYmctc2xhdGUtODAwLzUwIGJvcmRlciBib3JkZXItc2xhdGUtNzAwIHJvdW5kZWQtbGcgcHgtNCBweS0yLjUgdGV4dC13aGl0ZSBwbGFjZWhvbGRlci1zbGF0ZS01MDAgZm9jdXM6Ym9yZGVyLWVtZXJhbGQtNTAwLzUwIGZvY3VzOm91dGxpbmUtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtc2xhdGUtMzAwIG1iLTJcIj5Qb3J0PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e25ld0FwcC5wb3J0fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0TmV3QXBwKHsgLi4ubmV3QXBwLCBwb3J0OiBwYXJzZUludChlLnRhcmdldC52YWx1ZSkgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGJnLXNsYXRlLTgwMC81MCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCByb3VuZGVkLWxnIHB4LTQgcHktMi41IHRleHQtd2hpdGUgcGxhY2Vob2xkZXItc2xhdGUtNTAwIGZvY3VzOmJvcmRlci1lbWVyYWxkLTUwMC81MCBmb2N1czpvdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMyBwdC00XCI+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dBZGRNb2RhbChmYWxzZSl9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgQWRkIE1vbml0b3JcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICApfVxuICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIm1vdGlvbiIsIkFuaW1hdGVQcmVzZW5jZSIsIkFjdGl2aXR5IiwiUGx1cyIsIlJlZnJlc2hDdyIsIlRyYXNoMiIsIkV4dGVybmFsTGluayIsIlNlYXJjaCIsIkJlbGwiLCJTZXR0aW5ncyIsIkxheW91dERhc2hib2FyZCIsIk1vbml0b3IiLCJBbGVydFRyaWFuZ2xlIiwiSGlzdG9yeSIsIkNoZWNrQ2lyY2xlMiIsIkNsb2NrIiwiWmFwIiwiU2VydmVyIiwiTGluZUNoYXJ0IiwiTGluZSIsIlJlc3BvbnNpdmVDb250YWluZXIiLCJnZW5lcmF0ZVNwYXJrbGluZURhdGEiLCJwb2ludHMiLCJpc1VwIiwiQXJyYXkiLCJmcm9tIiwibGVuZ3RoIiwiXyIsImkiLCJ2YWx1ZSIsIk1hdGgiLCJyYW5kb20iLCJ0aW1lIiwiQ2FyZCIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiZGl2IiwiQ2FyZENvbnRlbnQiLCJCYWRnZSIsInZhcmlhbnQiLCJ2YXJpYW50cyIsImRlZmF1bHQiLCJzdWNjZXNzIiwiZGVzdHJ1Y3RpdmUiLCJ3YXJuaW5nIiwic3BhbiIsIlByb2dyZXNzIiwiZ2V0Q29sb3IiLCJpbml0aWFsIiwid2lkdGgiLCJhbmltYXRlIiwidHJhbnNpdGlvbiIsImR1cmF0aW9uIiwiZWFzZSIsIkJ1dHRvbiIsInNpemUiLCJwcm9wcyIsImdob3N0Iiwib3V0bGluZSIsInNpemVzIiwic20iLCJpY29uIiwiYnV0dG9uIiwiU2lkZWJhckl0ZW0iLCJJY29uIiwibGFiZWwiLCJpc0FjdGl2ZSIsIm9uQ2xpY2siLCJ3aGlsZUhvdmVyIiwieCIsIndoaWxlVGFwIiwic2NhbGUiLCJLUElDYXJkIiwidGl0bGUiLCJzdWJ0aXRsZSIsImNvbG9yIiwiZGF0YSIsImNvbG9yTWFwIiwiZW1lcmFsZCIsImJnIiwidGV4dCIsImJhciIsImJsdWUiLCJwdXJwbGUiLCJhbWJlciIsImNvbG9ycyIsInAiLCJoZWlnaHQiLCJ0eXBlIiwiZGF0YUtleSIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwiZG90IiwiU2VydmljZUNhcmQiLCJhcHAiLCJzdGF0dXMiLCJvbkRlbGV0ZSIsImlzSG92ZXJlZCIsInNldElzSG92ZXJlZCIsInNwYXJrbGluZURhdGEiLCJsYXlvdXQiLCJvcGFjaXR5IiwiZXhpdCIsIm9uSG92ZXJTdGFydCIsIm9uSG92ZXJFbmQiLCJoMyIsIm5hbWUiLCJhIiwiaHJlZiIsInVybCIsInRhcmdldCIsInJlbCIsInBvcnQiLCJ1cHRpbWUiLCJhdmdSZXNwb25zZVRpbWUiLCJsYXRlc3QiLCJEYXRlIiwidGltZXN0YW1wIiwidG9Mb2NhbGVUaW1lU3RyaW5nIiwiRGFzaGJvYXJkIiwiYXBwcyIsInNldEFwcHMiLCJzZXRTdGF0dXMiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsImFjdGl2ZU5hdiIsInNldEFjdGl2ZU5hdiIsInNob3dBZGRNb2RhbCIsInNldFNob3dBZGRNb2RhbCIsIm5ld0FwcCIsInNldE5ld0FwcCIsImVuYWJsZWQiLCJmZXRjaERhdGEiLCJpbnRlcnZhbCIsInNldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsInJlcyIsImZldGNoIiwianNvbiIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsImFkZEFwcCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsIm1ldGhvZCIsImhlYWRlcnMiLCJib2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsImFjdGlvbiIsImRlbGV0ZUFwcCIsImlkIiwiY29uZmlybSIsImdldEFwcFN0YXR1cyIsImFwcElkIiwiYXBwU3RhdHVzIiwiZmlsdGVyIiwicyIsInJvdW5kIiwicmVzcG9uc2VUaW1lIiwicmVkdWNlIiwiYWNjIiwic3RhdHMiLCJ0b3RhbCIsIm9ubGluZSIsIm9mZmxpbmUiLCJhdmdVcHRpbWUiLCJpbmNpZGVudHMiLCJhbGxVcCIsInNlcnZpY2VzRGF0YSIsInVwdGltZURhdGEiLCJyZXNwb25zZURhdGEiLCJtYXAiLCJkIiwiaW5jaWRlbnRzRGF0YSIsInJvdGF0ZSIsInJlcGVhdCIsIkluZmluaXR5IiwiYXNpZGUiLCJuYXYiLCJtYWluIiwiaGVhZGVyIiwiaW5wdXQiLCJwbGFjZWhvbGRlciIsImgyIiwibW9kZSIsInkiLCJmb3JtIiwib25TdWJtaXQiLCJvbkNoYW5nZSIsInJlcXVpcmVkIiwicGFyc2VJbnQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/app/page.tsx\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/webpack.2f7aec89503a6f6a.hot-update.js b/.next/static/webpack/webpack.2f7aec89503a6f6a.hot-update.js new file mode 100644 index 00000000..d226024f --- /dev/null +++ b/.next/static/webpack/webpack.2f7aec89503a6f6a.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 */ +/******/ (() => { +/******/ __webpack_require__.h = () => ("3c9945e8dec13b19") +/******/ })(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.3c9945e8dec13b19.hot-update.js b/.next/static/webpack/webpack.3c9945e8dec13b19.hot-update.js new file mode 100644 index 00000000..22e12229 --- /dev/null +++ b/.next/static/webpack/webpack.3c9945e8dec13b19.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 */ +/******/ (() => { +/******/ __webpack_require__.h = () => ("40c8247711300955") +/******/ })(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.40c8247711300955.hot-update.js b/.next/static/webpack/webpack.40c8247711300955.hot-update.js new file mode 100644 index 00000000..2b669179 --- /dev/null +++ b/.next/static/webpack/webpack.40c8247711300955.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 */ +/******/ (() => { +/******/ __webpack_require__.h = () => ("96d76a5621faa661") +/******/ })(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/trace b/.next/trace index e3216ba2..53466b27 100644 --- a/.next/trace +++ b/.next/trace @@ -4,3 +4,10 @@ [{"name":"ensure-page","duration":879372,"timestamp":73187625560,"id":116,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457355419,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":814,"timestamp":73188508112,"id":166,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457356301,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":1209962,"timestamp":73187623732,"id":115,"tags":{"url":"/"},"startTime":1771457355417,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73188833735,"id":167,"parentId":115,"tags":{"url":"/","memory.rss":"951435264","memory.heapUsed":"357352312","memory.heapTotal":"495075328"},"startTime":1771457356627,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":337,"timestamp":73188914243,"id":169,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457356707,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":245,"timestamp":73188914757,"id":170,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457356708,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":93737,"timestamp":73188913440,"id":168,"tags":{"url":"/"},"startTime":1771457356707,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":73189007222,"id":171,"parentId":168,"tags":{"url":"/","memory.rss":"967163904","memory.heapUsed":"407128984","memory.heapTotal":"510590976"},"startTime":1771457356800,"traceId":"f35859bf9c9e022e"},{"name":"build-module-tsx","duration":14507,"timestamp":73200122659,"id":177,"parentId":174,"tags":{"name":"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx","layer":"rsc"},"startTime":1771457367916,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":24954,"timestamp":73200114057,"id":176,"parentId":175,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1771457367907,"traceId":"f35859bf9c9e022e"},{"name":"build-module-tsx","duration":20304,"timestamp":73200145944,"id":184,"parentId":174,"tags":{"name":"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx","layer":"ssr"},"startTime":1771457367939,"traceId":"f35859bf9c9e022e"},{"name":"make","duration":67376,"timestamp":73200112376,"id":175,"parentId":174,"tags":{},"startTime":1771457367906,"traceId":"f35859bf9c9e022e"},{"name":"chunk-graph","duration":2411,"timestamp":73200190073,"id":186,"parentId":185,"tags":{},"startTime":1771457367983,"traceId":"f35859bf9c9e022e"},{"name":"optimize-modules","duration":4,"timestamp":73200192501,"id":188,"parentId":185,"tags":{},"startTime":1771457367986,"traceId":"f35859bf9c9e022e"},{"name":"optimize-chunks","duration":3240,"timestamp":73200192570,"id":189,"parentId":185,"tags":{},"startTime":1771457367986,"traceId":"f35859bf9c9e022e"},{"name":"optimize-tree","duration":7,"timestamp":73200195830,"id":190,"parentId":185,"tags":{},"startTime":1771457367989,"traceId":"f35859bf9c9e022e"},{"name":"optimize-chunk-modules","duration":3,"timestamp":73200195848,"id":191,"parentId":185,"tags":{},"startTime":1771457367989,"traceId":"f35859bf9c9e022e"},{"name":"optimize","duration":4146,"timestamp":73200192496,"id":187,"parentId":185,"tags":{},"startTime":1771457367986,"traceId":"f35859bf9c9e022e"},{"name":"module-hash","duration":1286,"timestamp":73200198299,"id":192,"parentId":185,"tags":{},"startTime":1771457367991,"traceId":"f35859bf9c9e022e"},{"name":"code-generation","duration":3446,"timestamp":73200199599,"id":193,"parentId":185,"tags":{},"startTime":1771457367993,"traceId":"f35859bf9c9e022e"},{"name":"hash","duration":2158,"timestamp":73200204088,"id":194,"parentId":185,"tags":{},"startTime":1771457367997,"traceId":"f35859bf9c9e022e"},{"name":"code-generation-jobs","duration":90,"timestamp":73200206245,"id":195,"parentId":185,"tags":{},"startTime":1771457367999,"traceId":"f35859bf9c9e022e"},{"name":"module-assets","duration":187,"timestamp":73200206321,"id":196,"parentId":185,"tags":{},"startTime":1771457368000,"traceId":"f35859bf9c9e022e"},{"name":"create-chunk-assets","duration":6374,"timestamp":73200206511,"id":197,"parentId":185,"tags":{},"startTime":1771457368000,"traceId":"f35859bf9c9e022e"},{"name":"seal","duration":28362,"timestamp":73200186331,"id":185,"parentId":174,"tags":{},"startTime":1771457367980,"traceId":"f35859bf9c9e022e"},{"name":"webpack-compilation","duration":106051,"timestamp":73200111548,"id":174,"parentId":172,"tags":{"name":"server"},"startTime":1771457367905,"traceId":"f35859bf9c9e022e"},{"name":"emit","duration":2195,"timestamp":73200217627,"id":198,"parentId":172,"tags":{},"startTime":1771457368011,"traceId":"f35859bf9c9e022e"},{"name":"webpack-invalidated-server","duration":123130,"timestamp":73200097288,"id":172,"parentId":3,"tags":{"trigger":"src/app/page.tsx"},"startTime":1771457367890,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":31496,"timestamp":73200225408,"id":201,"parentId":200,"tags":{"request":"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1771457368019,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":32100,"timestamp":73200225449,"id":203,"parentId":200,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1771457368019,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":33016,"timestamp":73200225461,"id":205,"parentId":200,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fmetadata-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1771457368019,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":33122,"timestamp":73200225439,"id":202,"parentId":200,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1771457368019,"traceId":"f35859bf9c9e022e"},{"name":"build-module-tsx","duration":15181,"timestamp":73200253844,"id":206,"parentId":199,"tags":{"name":"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx","layer":"app-pages-browser"},"startTime":1771457368047,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":52017,"timestamp":73200225456,"id":204,"parentId":200,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1771457368019,"traceId":"f35859bf9c9e022e"},{"name":"make","duration":54684,"timestamp":73200222819,"id":200,"parentId":199,"tags":{},"startTime":1771457368016,"traceId":"f35859bf9c9e022e"},{"name":"chunk-graph","duration":2134,"timestamp":73200287052,"id":208,"parentId":207,"tags":{},"startTime":1771457368080,"traceId":"f35859bf9c9e022e"},{"name":"optimize-modules","duration":4,"timestamp":73200289203,"id":210,"parentId":207,"tags":{},"startTime":1771457368082,"traceId":"f35859bf9c9e022e"},{"name":"optimize-chunks","duration":21,"timestamp":73200289216,"id":211,"parentId":207,"tags":{},"startTime":1771457368082,"traceId":"f35859bf9c9e022e"},{"name":"optimize-tree","duration":5,"timestamp":73200289250,"id":212,"parentId":207,"tags":{},"startTime":1771457368082,"traceId":"f35859bf9c9e022e"},{"name":"optimize-chunk-modules","duration":3,"timestamp":73200289263,"id":213,"parentId":207,"tags":{},"startTime":1771457368082,"traceId":"f35859bf9c9e022e"},{"name":"optimize","duration":908,"timestamp":73200289198,"id":209,"parentId":207,"tags":{},"startTime":1771457368082,"traceId":"f35859bf9c9e022e"},{"name":"module-hash","duration":470,"timestamp":73200291453,"id":214,"parentId":207,"tags":{},"startTime":1771457368085,"traceId":"f35859bf9c9e022e"},{"name":"code-generation","duration":3305,"timestamp":73200291929,"id":215,"parentId":207,"tags":{},"startTime":1771457368085,"traceId":"f35859bf9c9e022e"},{"name":"hash","duration":2470,"timestamp":73200296319,"id":216,"parentId":207,"tags":{},"startTime":1771457368090,"traceId":"f35859bf9c9e022e"},{"name":"code-generation-jobs","duration":66,"timestamp":73200298788,"id":217,"parentId":207,"tags":{},"startTime":1771457368092,"traceId":"f35859bf9c9e022e"},{"name":"module-assets","duration":100,"timestamp":73200298849,"id":218,"parentId":207,"tags":{},"startTime":1771457368092,"traceId":"f35859bf9c9e022e"},{"name":"create-chunk-assets","duration":25344,"timestamp":73200298957,"id":219,"parentId":207,"tags":{},"startTime":1771457368092,"traceId":"f35859bf9c9e022e"},{"name":"NextJsBuildManifest-generateClientManifest","duration":45,"timestamp":73200325406,"id":221,"parentId":199,"tags":{},"startTime":1771457368119,"traceId":"f35859bf9c9e022e"},{"name":"NextJsBuildManifest-createassets","duration":131,"timestamp":73200325323,"id":220,"parentId":199,"tags":{},"startTime":1771457368119,"traceId":"f35859bf9c9e022e"},{"name":"seal","duration":44743,"timestamp":73200282576,"id":207,"parentId":199,"tags":{},"startTime":1771457368076,"traceId":"f35859bf9c9e022e"},{"name":"webpack-compilation","duration":104759,"timestamp":73200222593,"id":199,"parentId":173,"tags":{"name":"client"},"startTime":1771457368016,"traceId":"f35859bf9c9e022e"},{"name":"emit","duration":11478,"timestamp":73200327366,"id":222,"parentId":173,"tags":{},"startTime":1771457368121,"traceId":"f35859bf9c9e022e"},{"name":"webpack-invalidated-client","duration":242118,"timestamp":73200097651,"id":173,"parentId":3,"tags":{"trigger":"src/app/page.tsx"},"startTime":1771457367891,"traceId":"f35859bf9c9e022e"}] [{"name":"next-dev","duration":213171,"timestamp":73206061394,"id":1,"tags":{},"startTime":1771457373855,"traceId":"76b32a20ee257420"}] [{"name":"next-dev","duration":198433,"timestamp":73680547770,"id":1,"tags":{},"startTime":1771457848341,"traceId":"1d54bfeba298e47c"}] +[{"name":"ensure-page","duration":602,"timestamp":73210975984,"id":224,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457378769,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":310,"timestamp":73210976861,"id":225,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457378770,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":134102,"timestamp":73210974942,"id":223,"tags":{"url":"/"},"startTime":1771457378768,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73211109084,"id":226,"parentId":223,"tags":{"url":"/","memory.rss":"846954496","memory.heapUsed":"298270032","memory.heapTotal":"309690368"},"startTime":1771457378902,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":382,"timestamp":73227045334,"id":228,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457394839,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":273,"timestamp":73227045912,"id":229,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457394839,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":5847,"timestamp":73227044849,"id":227,"tags":{"url":"/"},"startTime":1771457394838,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73227050716,"id":230,"parentId":227,"tags":{"url":"/","memory.rss":"850362368","memory.heapUsed":"296260416","memory.heapTotal":"300777472"},"startTime":1771457394844,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":1920,"timestamp":73287217234,"id":232,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457455010,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":278,"timestamp":73287219362,"id":233,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457455013,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":6539,"timestamp":73287216838,"id":231,"tags":{"url":"/"},"startTime":1771457455010,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73287223396,"id":234,"parentId":231,"tags":{"url":"/","memory.rss":"754171904","memory.heapUsed":"297055576","memory.heapTotal":"302612480"},"startTime":1771457455017,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":1782,"timestamp":73312259662,"id":236,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457480053,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":192,"timestamp":73312261630,"id":237,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457480055,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":6648,"timestamp":73312259226,"id":235,"tags":{"url":"/"},"startTime":1771457480052,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73312265896,"id":238,"parentId":235,"tags":{"url":"/","memory.rss":"673628160","memory.heapUsed":"297200680","memory.heapTotal":"300515328"},"startTime":1771457480059,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":1162,"timestamp":73368919817,"id":240,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457536713,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":240,"timestamp":73368921209,"id":241,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457536714,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":6226,"timestamp":73368919375,"id":239,"tags":{"url":"/"},"startTime":1771457536713,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73368925629,"id":242,"parentId":239,"tags":{"url":"/","memory.rss":"652083200","memory.heapUsed":"297484112","memory.heapTotal":"300515328"},"startTime":1771457536719,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":405,"timestamp":73368990096,"id":244,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457536783,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":245,"timestamp":73368990741,"id":245,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457536784,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4807,"timestamp":73368989615,"id":243,"tags":{"url":"/"},"startTime":1771457536783,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73368994446,"id":246,"parentId":243,"tags":{"url":"/","memory.rss":"652197888","memory.heapUsed":"297629160","memory.heapTotal":"301826048"},"startTime":1771457536788,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":362,"timestamp":73408255186,"id":248,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457576048,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":228,"timestamp":73408255745,"id":249,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457576049,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4383,"timestamp":73408254736,"id":247,"tags":{"url":"/"},"startTime":1771457576048,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73408259138,"id":250,"parentId":247,"tags":{"url":"/","memory.rss":"652230656","memory.heapUsed":"298405328","memory.heapTotal":"301039616"},"startTime":1771457576052,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":358,"timestamp":73466801769,"id":252,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457634595,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":211,"timestamp":73466802310,"id":253,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457634595,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4698,"timestamp":73466801378,"id":251,"tags":{"url":"/"},"startTime":1771457634595,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73466806101,"id":254,"parentId":251,"tags":{"url":"/","memory.rss":"652296192","memory.heapUsed":"298704656","memory.heapTotal":"302350336"},"startTime":1771457634599,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":351,"timestamp":73527780656,"id":256,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457695574,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":223,"timestamp":73527781238,"id":257,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457695574,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4785,"timestamp":73527780186,"id":255,"tags":{"url":"/"},"startTime":1771457695573,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":73527785006,"id":258,"parentId":255,"tags":{"url":"/","memory.rss":"652673024","memory.heapUsed":"299100392","memory.heapTotal":"302088192"},"startTime":1771457695578,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":553,"timestamp":73586994070,"id":260,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457754787,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":208,"timestamp":73586994808,"id":261,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457754788,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4495,"timestamp":73586993694,"id":259,"tags":{"url":"/"},"startTime":1771457754787,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73586998227,"id":262,"parentId":259,"tags":{"url":"/","memory.rss":"652754944","memory.heapUsed":"298790632","memory.heapTotal":"302874624"},"startTime":1771457754791,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":360,"timestamp":73609625747,"id":264,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457777419,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":429,"timestamp":73609626276,"id":265,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457777419,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4318,"timestamp":73609625386,"id":263,"tags":{"url":"/"},"startTime":1771457777418,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":18,"timestamp":73609629722,"id":266,"parentId":263,"tags":{"url":"/","memory.rss":"652820480","memory.heapUsed":"298918248","memory.heapTotal":"303136768"},"startTime":1771457777423,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":313,"timestamp":73620711291,"id":268,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457788504,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":465,"timestamp":73620711787,"id":269,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457788505,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4048,"timestamp":73620710992,"id":267,"tags":{"url":"/"},"startTime":1771457788504,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73620715055,"id":270,"parentId":267,"tags":{"url":"/","memory.rss":"652886016","memory.heapUsed":"299368480","memory.heapTotal":"303136768"},"startTime":1771457788508,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":326,"timestamp":73665094972,"id":272,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457832888,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":200,"timestamp":73665095487,"id":273,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457832889,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3745,"timestamp":73665094655,"id":271,"tags":{"url":"/"},"startTime":1771457832888,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73665098414,"id":274,"parentId":271,"tags":{"url":"/","memory.rss":"652918784","memory.heapUsed":"299228160","memory.heapTotal":"303136768"},"startTime":1771457832892,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":297,"timestamp":73665158452,"id":276,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457832952,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":442,"timestamp":73665158908,"id":277,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457832952,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3587,"timestamp":73665158182,"id":275,"tags":{"url":"/"},"startTime":1771457832951,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73665161785,"id":278,"parentId":275,"tags":{"url":"/","memory.rss":"652967936","memory.heapUsed":"299301440","memory.heapTotal":"304185344"},"startTime":1771457832955,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":358,"timestamp":73667290949,"id":280,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457835084,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":439,"timestamp":73667291513,"id":281,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457835085,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3893,"timestamp":73667290510,"id":279,"tags":{"url":"/"},"startTime":1771457835084,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":73667294431,"id":282,"parentId":279,"tags":{"url":"/","memory.rss":"653049856","memory.heapUsed":"299401872","memory.heapTotal":"303661056"},"startTime":1771457835088,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":287,"timestamp":73667351090,"id":284,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457835144,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":412,"timestamp":73667351535,"id":285,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457835145,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3701,"timestamp":73667350798,"id":283,"tags":{"url":"/"},"startTime":1771457835144,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73667354515,"id":286,"parentId":283,"tags":{"url":"/","memory.rss":"653099008","memory.heapUsed":"300415432","memory.heapTotal":"304447488"},"startTime":1771457835148,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":304,"timestamp":73688168037,"id":288,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457855961,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":189,"timestamp":73688168499,"id":289,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457855962,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3725,"timestamp":73688167726,"id":287,"tags":{"url":"/"},"startTime":1771457855961,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73688171469,"id":290,"parentId":287,"tags":{"url":"/","memory.rss":"653164544","memory.heapUsed":"299280384","memory.heapTotal":"304447488"},"startTime":1771457855965,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":282,"timestamp":73688238280,"id":292,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457856031,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":181,"timestamp":73688238715,"id":293,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457856032,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3293,"timestamp":73688238036,"id":291,"tags":{"url":"/"},"startTime":1771457856031,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":73688241356,"id":294,"parentId":291,"tags":{"url":"/","memory.rss":"653180928","memory.heapUsed":"300124072","memory.heapTotal":"304447488"},"startTime":1771457856034,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":773,"timestamp":73695412066,"id":296,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457863205,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":634,"timestamp":73695413334,"id":297,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457863206,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":10063,"timestamp":73695411361,"id":295,"tags":{"url":"/"},"startTime":1771457863204,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":3,"timestamp":73695421494,"id":298,"parentId":295,"tags":{"url":"/","memory.rss":"653197312","memory.heapUsed":"300211456","memory.heapTotal":"303398912"},"startTime":1771457863215,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":1003,"timestamp":73700144990,"id":300,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457867938,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":639,"timestamp":73700146638,"id":301,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457867940,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":8487,"timestamp":73700144212,"id":299,"tags":{"url":"/"},"startTime":1771457867937,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":73700152728,"id":302,"parentId":299,"tags":{"url":"/","memory.rss":"653246464","memory.heapUsed":"300118624","memory.heapTotal":"303661056"},"startTime":1771457867946,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":809,"timestamp":73707404445,"id":304,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457875198,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":243,"timestamp":73707405477,"id":305,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457875199,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4723,"timestamp":73707404097,"id":303,"tags":{"url":"/"},"startTime":1771457875197,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73707408839,"id":306,"parentId":303,"tags":{"url":"/","memory.rss":"653312000","memory.heapUsed":"300112872","memory.heapTotal":"304447488"},"startTime":1771457875202,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":429,"timestamp":73707491691,"id":308,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457875285,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":471,"timestamp":73707492396,"id":309,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457875285,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":5403,"timestamp":73707491356,"id":307,"tags":{"url":"/"},"startTime":1771457875284,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73707496784,"id":310,"parentId":307,"tags":{"url":"/","memory.rss":"653377536","memory.heapUsed":"300948520","memory.heapTotal":"305233920"},"startTime":1771457875290,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":538,"timestamp":73722750380,"id":312,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457890543,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":781,"timestamp":73722751214,"id":313,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457890544,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":7658,"timestamp":73722749645,"id":311,"tags":{"url":"/"},"startTime":1771457890543,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73722757327,"id":314,"parentId":311,"tags":{"url":"/","memory.rss":"653393920","memory.heapUsed":"300195104","memory.heapTotal":"304447488"},"startTime":1771457890550,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":822,"timestamp":73747313065,"id":316,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457915106,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":1563,"timestamp":73747314479,"id":317,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457915108,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":17022,"timestamp":73747311095,"id":315,"tags":{"url":"/"},"startTime":1771457915104,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":73747328161,"id":318,"parentId":315,"tags":{"url":"/","memory.rss":"653426688","memory.heapUsed":"300368488","memory.heapTotal":"304447488"},"startTime":1771457915121,"traceId":"f35859bf9c9e022e"},{"name":"client-success","duration":15,"timestamp":73747583023,"id":327,"parentId":3,"tags":{},"startTime":1771457915376,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":44556,"timestamp":73747560898,"id":326,"parentId":324,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1771457915354,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":62095,"timestamp":73747560868,"id":325,"parentId":324,"tags":{"request":"next-app-loader?name=app%2Fapi%2Fmonitor%2Froute&page=%2Fapi%2Fmonitor%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fmonitor%2Froute.ts&appDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1771457915354,"traceId":"f35859bf9c9e022e"},{"name":"make","duration":99742,"timestamp":73747560159,"id":324,"parentId":323,"tags":{},"startTime":1771457915353,"traceId":"f35859bf9c9e022e"},{"name":"chunk-graph","duration":2491,"timestamp":73747669408,"id":340,"parentId":339,"tags":{},"startTime":1771457915462,"traceId":"f35859bf9c9e022e"}] +[{"name":"optimize-modules","duration":7,"timestamp":73747672093,"id":342,"parentId":339,"tags":{},"startTime":1771457915465,"traceId":"f35859bf9c9e022e"},{"name":"optimize-chunks","duration":2433,"timestamp":73747672150,"id":343,"parentId":339,"tags":{},"startTime":1771457915465,"traceId":"f35859bf9c9e022e"},{"name":"optimize-tree","duration":7,"timestamp":73747674620,"id":344,"parentId":339,"tags":{},"startTime":1771457915468,"traceId":"f35859bf9c9e022e"},{"name":"optimize-chunk-modules","duration":3,"timestamp":73747674656,"id":345,"parentId":339,"tags":{},"startTime":1771457915468,"traceId":"f35859bf9c9e022e"},{"name":"optimize","duration":3899,"timestamp":73747672075,"id":341,"parentId":339,"tags":{},"startTime":1771457915465,"traceId":"f35859bf9c9e022e"},{"name":"module-hash","duration":556,"timestamp":73747677642,"id":346,"parentId":339,"tags":{},"startTime":1771457915471,"traceId":"f35859bf9c9e022e"},{"name":"code-generation","duration":1818,"timestamp":73747678212,"id":347,"parentId":339,"tags":{},"startTime":1771457915471,"traceId":"f35859bf9c9e022e"},{"name":"hash","duration":1519,"timestamp":73747681746,"id":348,"parentId":339,"tags":{},"startTime":1771457915475,"traceId":"f35859bf9c9e022e"},{"name":"code-generation-jobs","duration":88,"timestamp":73747683265,"id":349,"parentId":339,"tags":{},"startTime":1771457915476,"traceId":"f35859bf9c9e022e"},{"name":"module-assets","duration":101,"timestamp":73747683347,"id":350,"parentId":339,"tags":{},"startTime":1771457915476,"traceId":"f35859bf9c9e022e"},{"name":"create-chunk-assets","duration":11389,"timestamp":73747683450,"id":351,"parentId":339,"tags":{},"startTime":1771457915477,"traceId":"f35859bf9c9e022e"},{"name":"seal","duration":31538,"timestamp":73747665709,"id":339,"parentId":323,"tags":{},"startTime":1771457915459,"traceId":"f35859bf9c9e022e"},{"name":"webpack-compilation","duration":140229,"timestamp":73747559541,"id":323,"parentId":321,"tags":{"name":"server"},"startTime":1771457915353,"traceId":"f35859bf9c9e022e"},{"name":"emit","duration":6410,"timestamp":73747699918,"id":352,"parentId":321,"tags":{},"startTime":1771457915493,"traceId":"f35859bf9c9e022e"},{"name":"webpack-invalidated-server","duration":149356,"timestamp":73747557876,"id":321,"parentId":3,"tags":{"trigger":"manual"},"startTime":1771457915351,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":3673,"timestamp":73747712172,"id":355,"parentId":354,"tags":{"request":"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1771457915505,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":4668,"timestamp":73747712198,"id":357,"parentId":354,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1771457915505,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":10742,"timestamp":73747712201,"id":359,"parentId":354,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fmetadata-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1771457915505,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":24652,"timestamp":73747712195,"id":356,"parentId":354,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1771457915505,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":27171,"timestamp":73747712203,"id":360,"parentId":354,"tags":{"request":"next-flight-client-entry-loader?server=false!"},"startTime":1771457915505,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":27196,"timestamp":73747712200,"id":358,"parentId":354,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1771457915505,"traceId":"f35859bf9c9e022e"},{"name":"make","duration":29821,"timestamp":73747709611,"id":354,"parentId":353,"tags":{},"startTime":1771457915503,"traceId":"f35859bf9c9e022e"},{"name":"chunk-graph","duration":3395,"timestamp":73747751708,"id":362,"parentId":361,"tags":{},"startTime":1771457915545,"traceId":"f35859bf9c9e022e"},{"name":"optimize-modules","duration":2,"timestamp":73747755128,"id":364,"parentId":361,"tags":{},"startTime":1771457915548,"traceId":"f35859bf9c9e022e"},{"name":"optimize-chunks","duration":50,"timestamp":73747755172,"id":365,"parentId":361,"tags":{},"startTime":1771457915548,"traceId":"f35859bf9c9e022e"},{"name":"optimize-tree","duration":4,"timestamp":73747755236,"id":366,"parentId":361,"tags":{},"startTime":1771457915548,"traceId":"f35859bf9c9e022e"},{"name":"optimize-chunk-modules","duration":2,"timestamp":73747755249,"id":367,"parentId":361,"tags":{},"startTime":1771457915548,"traceId":"f35859bf9c9e022e"},{"name":"optimize","duration":1274,"timestamp":73747755119,"id":363,"parentId":361,"tags":{},"startTime":1771457915548,"traceId":"f35859bf9c9e022e"},{"name":"module-hash","duration":635,"timestamp":73747758310,"id":368,"parentId":361,"tags":{},"startTime":1771457915551,"traceId":"f35859bf9c9e022e"},{"name":"code-generation","duration":2297,"timestamp":73747758951,"id":369,"parentId":361,"tags":{},"startTime":1771457915552,"traceId":"f35859bf9c9e022e"},{"name":"hash","duration":3040,"timestamp":73747763117,"id":370,"parentId":361,"tags":{},"startTime":1771457915556,"traceId":"f35859bf9c9e022e"},{"name":"code-generation-jobs","duration":98,"timestamp":73747766156,"id":371,"parentId":361,"tags":{},"startTime":1771457915559,"traceId":"f35859bf9c9e022e"},{"name":"module-assets","duration":111,"timestamp":73747766248,"id":372,"parentId":361,"tags":{},"startTime":1771457915559,"traceId":"f35859bf9c9e022e"},{"name":"create-chunk-assets","duration":3500,"timestamp":73747766362,"id":373,"parentId":361,"tags":{},"startTime":1771457915559,"traceId":"f35859bf9c9e022e"},{"name":"NextJsBuildManifest-generateClientManifest","duration":279,"timestamp":73747771291,"id":375,"parentId":353,"tags":{},"startTime":1771457915564,"traceId":"f35859bf9c9e022e"},{"name":"NextJsBuildManifest-createassets","duration":444,"timestamp":73747771130,"id":374,"parentId":353,"tags":{},"startTime":1771457915564,"traceId":"f35859bf9c9e022e"},{"name":"seal","duration":27222,"timestamp":73747746878,"id":361,"parentId":353,"tags":{},"startTime":1771457915540,"traceId":"f35859bf9c9e022e"},{"name":"webpack-compilation","duration":65068,"timestamp":73747709065,"id":353,"parentId":338,"tags":{"name":"client"},"startTime":1771457915502,"traceId":"f35859bf9c9e022e"},{"name":"emit","duration":10861,"timestamp":73747774150,"id":376,"parentId":338,"tags":{},"startTime":1771457915567,"traceId":"f35859bf9c9e022e"},{"name":"compile-path","duration":228010,"timestamp":73747557907,"id":322,"tags":{"trigger":"/api/monitor"},"startTime":1771457915351,"traceId":"f35859bf9c9e022e"},{"name":"webpack-invalidated-client","duration":161785,"timestamp":73747624535,"id":338,"parentId":3,"tags":{"trigger":"manual"},"startTime":1771457915418,"traceId":"f35859bf9c9e022e"}] +[{"name":"ensure-page","duration":229222,"timestamp":73747557291,"id":320,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771457915350,"traceId":"f35859bf9c9e022e"},{"name":"client-success","duration":4,"timestamp":73747788478,"id":377,"parentId":3,"tags":{},"startTime":1771457915582,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":390,"timestamp":73747788981,"id":378,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771457915582,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":270410,"timestamp":73747556627,"id":319,"tags":{"url":"/api/monitor"},"startTime":1771457915350,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73747827056,"id":379,"parentId":319,"tags":{"url":"/api/monitor","memory.rss":"869810176","memory.heapUsed":"395843280","memory.heapTotal":"446955520"},"startTime":1771457915620,"traceId":"f35859bf9c9e022e"},{"name":"client-hmr-latency","duration":247000,"timestamp":73747624750,"id":380,"parentId":3,"tags":{"updatedModules":[],"page":"/","isPageHidden":false},"startTime":1771457915666,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":361,"timestamp":73767157159,"id":382,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457934950,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":237,"timestamp":73767158099,"id":383,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457934951,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":49426,"timestamp":73767156799,"id":381,"tags":{"url":"/"},"startTime":1771457934950,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73767206246,"id":384,"parentId":381,"tags":{"url":"/","memory.rss":"808108032","memory.heapUsed":"373712176","memory.heapTotal":"392347648"},"startTime":1771457934999,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":324,"timestamp":73767280156,"id":386,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457935073,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":231,"timestamp":73767280660,"id":387,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457935074,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4910,"timestamp":73767279830,"id":385,"tags":{"url":"/"},"startTime":1771457935073,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73767284761,"id":388,"parentId":385,"tags":{"url":"/","memory.rss":"809385984","memory.heapUsed":"370630336","memory.heapTotal":"393658368"},"startTime":1771457935078,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":512,"timestamp":73777563001,"id":390,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771457945356,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":342,"timestamp":73777565786,"id":391,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771457945359,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":12619,"timestamp":73777561677,"id":389,"tags":{"url":"/api/monitor"},"startTime":1771457945355,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":2,"timestamp":73777574375,"id":392,"parentId":389,"tags":{"url":"/api/monitor","memory.rss":"768950272","memory.heapUsed":"363605464","memory.heapTotal":"372080640"},"startTime":1771457945367,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":166,"timestamp":73808002735,"id":394,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771457975796,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":133,"timestamp":73808003119,"id":395,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771457975796,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":2262,"timestamp":73808002310,"id":393,"tags":{"url":"/api/monitor"},"startTime":1771457975795,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73808004590,"id":396,"parentId":393,"tags":{"url":"/api/monitor","memory.rss":"882671616","memory.heapUsed":"369416648","memory.heapTotal":"397574144"},"startTime":1771457975798,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":418,"timestamp":73826981540,"id":398,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457994775,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":170,"timestamp":73826982124,"id":399,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457994775,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":6183,"timestamp":73826981228,"id":397,"tags":{"url":"/"},"startTime":1771457994774,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73826987440,"id":400,"parentId":397,"tags":{"url":"/","memory.rss":"882032640","memory.heapUsed":"371555016","memory.heapTotal":"397574144"},"startTime":1771457994781,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":300,"timestamp":73827065712,"id":402,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457994859,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":176,"timestamp":73827066156,"id":403,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771457994859,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3377,"timestamp":73827065442,"id":401,"tags":{"url":"/"},"startTime":1771457994859,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73827068837,"id":404,"parentId":401,"tags":{"url":"/","memory.rss":"882114560","memory.heapUsed":"373172536","memory.heapTotal":"397574144"},"startTime":1771457994862,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":864,"timestamp":73838008282,"id":406,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458005801,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":631,"timestamp":73838010264,"id":407,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458005803,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":12459,"timestamp":73838006463,"id":405,"tags":{"url":"/api/monitor"},"startTime":1771458005800,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":2,"timestamp":73838019104,"id":408,"parentId":405,"tags":{"url":"/api/monitor","memory.rss":"860913664","memory.heapUsed":"373666184","memory.heapTotal":"397574144"},"startTime":1771458005812,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":389,"timestamp":73868006006,"id":410,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458035799,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":402,"timestamp":73868009036,"id":411,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458035802,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":7609,"timestamp":73868004909,"id":409,"tags":{"url":"/api/monitor"},"startTime":1771458035798,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":2,"timestamp":73868012596,"id":412,"parentId":409,"tags":{"url":"/api/monitor","memory.rss":"843808768","memory.heapUsed":"374157824","memory.heapTotal":"397574144"},"startTime":1771458035806,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":464,"timestamp":73887716711,"id":414,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458055510,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":275,"timestamp":73887717415,"id":415,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458055510,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4672,"timestamp":73887716159,"id":413,"tags":{"url":"/"},"startTime":1771458055509,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":4,"timestamp":73887720894,"id":416,"parentId":413,"tags":{"url":"/","memory.rss":"843988992","memory.heapUsed":"375775720","memory.heapTotal":"397574144"},"startTime":1771458055514,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":367,"timestamp":73887804248,"id":418,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458055597,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":263,"timestamp":73887804799,"id":419,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458055598,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4300,"timestamp":73887803916,"id":417,"tags":{"url":"/"},"startTime":1771458055597,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73887808234,"id":420,"parentId":417,"tags":{"url":"/","memory.rss":"844152832","memory.heapUsed":"377352600","memory.heapTotal":"398360576"},"startTime":1771458055601,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":321,"timestamp":73898003579,"id":422,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458065796,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":402,"timestamp":73898004709,"id":423,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458065797,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":6206,"timestamp":73898002970,"id":421,"tags":{"url":"/api/monitor"},"startTime":1771458065796,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":73898009231,"id":424,"parentId":421,"tags":{"url":"/api/monitor","memory.rss":"844185600","memory.heapUsed":"377797128","memory.heapTotal":"398622720"},"startTime":1771458065802,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":725,"timestamp":73913766475,"id":426,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458081557,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":702,"timestamp":73913767622,"id":427,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458081558,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":13369,"timestamp":73913765737,"id":425,"tags":{"url":"/"},"startTime":1771458081556,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":73913779157,"id":428,"parentId":425,"tags":{"url":"/","memory.rss":"845725696","memory.heapUsed":"379456640","memory.heapTotal":"400719872"},"startTime":1771458081569,"traceId":"f35859bf9c9e022e"},{"name":"client-success","duration":2,"timestamp":73914001471,"id":430,"parentId":3,"tags":{},"startTime":1771458081792,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":249,"timestamp":73914001772,"id":431,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458081792,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":179,"timestamp":73914002252,"id":432,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458081792,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":2439,"timestamp":73914001206,"id":429,"tags":{"url":"/api/monitor"},"startTime":1771458081791,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73914003664,"id":433,"parentId":429,"tags":{"url":"/api/monitor","memory.rss":"857178112","memory.heapUsed":"381955656","memory.heapTotal":"402817024"},"startTime":1771458081794,"traceId":"f35859bf9c9e022e"},{"name":"client-success","duration":3,"timestamp":73914017831,"id":434,"parentId":3,"tags":{},"startTime":1771458081808,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":323,"timestamp":73923159339,"id":436,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458090949,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":220,"timestamp":73923159825,"id":437,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458090949,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4114,"timestamp":73923159025,"id":435,"tags":{"url":"/"},"startTime":1771458090948,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73923163157,"id":438,"parentId":435,"tags":{"url":"/","memory.rss":"857178112","memory.heapUsed":"369936864","memory.heapTotal":"387874816"},"startTime":1771458090953,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":819,"timestamp":73928008247,"id":440,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458095797,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":596,"timestamp":73928010399,"id":441,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458095800,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":8583,"timestamp":73928006410,"id":439,"tags":{"url":"/api/monitor"},"startTime":1771458095796,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":73928015061,"id":442,"parentId":439,"tags":{"url":"/api/monitor","memory.rss":"857178112","memory.heapUsed":"370391752","memory.heapTotal":"388399104"},"startTime":1771458095804,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":324,"timestamp":73944005397,"id":444,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458111794,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":387,"timestamp":73944006329,"id":445,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458111795,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":5061,"timestamp":73944004621,"id":443,"tags":{"url":"/api/monitor"},"startTime":1771458111793,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":2,"timestamp":73944009737,"id":446,"parentId":443,"tags":{"url":"/api/monitor","memory.rss":"857227264","memory.heapUsed":"369905536","memory.heapTotal":"386301952"},"startTime":1771458111799,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":333,"timestamp":73952689370,"id":448,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458120478,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":184,"timestamp":73952690233,"id":449,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458120479,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4730,"timestamp":73952688993,"id":447,"tags":{"url":"/"},"startTime":1771458120478,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73952693742,"id":450,"parentId":447,"tags":{"url":"/","memory.rss":"857292800","memory.heapUsed":"369830936","memory.heapTotal":"386826240"},"startTime":1771458120482,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":517,"timestamp":73952779486,"id":452,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458120568,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":326,"timestamp":73952780313,"id":453,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458120569,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":5248,"timestamp":73952778808,"id":451,"tags":{"url":"/"},"startTime":1771458120567,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73952784123,"id":454,"parentId":451,"tags":{"url":"/","memory.rss":"857292800","memory.heapUsed":"370481040","memory.heapTotal":"387350528"},"startTime":1771458120573,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":655,"timestamp":73974003494,"id":456,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458141792,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":433,"timestamp":73974004976,"id":457,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458141794,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":7611,"timestamp":73974001970,"id":455,"tags":{"url":"/api/monitor"},"startTime":1771458141791,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":73974009630,"id":458,"parentId":455,"tags":{"url":"/api/monitor","memory.rss":"857292800","memory.heapUsed":"370063264","memory.heapTotal":"387350528"},"startTime":1771458141798,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":355,"timestamp":73976993250,"id":460,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458144782,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":363,"timestamp":73976994059,"id":461,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458144783,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4757,"timestamp":73976992950,"id":459,"tags":{"url":"/"},"startTime":1771458144782,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":73976997731,"id":462,"parentId":459,"tags":{"url":"/","memory.rss":"857407488","memory.heapUsed":"370184128","memory.heapTotal":"386826240"},"startTime":1771458144786,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":355,"timestamp":73980014729,"id":464,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458147803,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":467,"timestamp":73980015703,"id":465,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458147804,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":6091,"timestamp":73980013317,"id":463,"tags":{"url":"/api/monitor"},"startTime":1771458147802,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":73980019464,"id":466,"parentId":463,"tags":{"url":"/api/monitor","memory.rss":"857407488","memory.heapUsed":"370639664","memory.heapTotal":"387350528"},"startTime":1771458147808,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":1290,"timestamp":73991292461,"id":467,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1771458159081,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":223,"timestamp":73991293831,"id":468,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1771458159082,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":278,"timestamp":73991295532,"id":469,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1771458159084,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":178,"timestamp":73991295842,"id":470,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1771458159084,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":5564,"timestamp":73991323769,"id":483,"parentId":477,"tags":{"request":"next-flight-client-entry-loader?server=false!"},"startTime":1771458159112,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":20469,"timestamp":73991323680,"id":478,"parentId":477,"tags":{"request":"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1771458159112,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":40843,"timestamp":73991323756,"id":480,"parentId":477,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1771458159112,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":42562,"timestamp":73991323765,"id":482,"parentId":477,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fmetadata-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1771458159112,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":51467,"timestamp":73991323750,"id":479,"parentId":477,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1771458159112,"traceId":"f35859bf9c9e022e"}] +[{"name":"add-entry","duration":56966,"timestamp":73991323761,"id":481,"parentId":477,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1771458159112,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":111519,"timestamp":73991323773,"id":484,"parentId":477,"tags":{"request":"next-client-pages-loader?absolutePagePath=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!"},"startTime":1771458159112,"traceId":"f35859bf9c9e022e"},{"name":"make","duration":112842,"timestamp":73991322479,"id":477,"parentId":476,"tags":{},"startTime":1771458159111,"traceId":"f35859bf9c9e022e"},{"name":"chunk-graph","duration":2390,"timestamp":73991442905,"id":486,"parentId":485,"tags":{},"startTime":1771458159231,"traceId":"f35859bf9c9e022e"},{"name":"optimize-modules","duration":3,"timestamp":73991445319,"id":488,"parentId":485,"tags":{},"startTime":1771458159234,"traceId":"f35859bf9c9e022e"},{"name":"optimize-chunks","duration":26,"timestamp":73991445353,"id":489,"parentId":485,"tags":{},"startTime":1771458159234,"traceId":"f35859bf9c9e022e"},{"name":"optimize-tree","duration":5,"timestamp":73991445403,"id":490,"parentId":485,"tags":{},"startTime":1771458159234,"traceId":"f35859bf9c9e022e"},{"name":"optimize-chunk-modules","duration":3,"timestamp":73991445427,"id":491,"parentId":485,"tags":{},"startTime":1771458159234,"traceId":"f35859bf9c9e022e"},{"name":"optimize","duration":1689,"timestamp":73991445310,"id":487,"parentId":485,"tags":{},"startTime":1771458159234,"traceId":"f35859bf9c9e022e"},{"name":"module-hash","duration":367,"timestamp":73991448494,"id":492,"parentId":485,"tags":{},"startTime":1771458159237,"traceId":"f35859bf9c9e022e"},{"name":"code-generation","duration":1180,"timestamp":73991448872,"id":493,"parentId":485,"tags":{},"startTime":1771458159237,"traceId":"f35859bf9c9e022e"},{"name":"hash","duration":3666,"timestamp":73991451846,"id":494,"parentId":485,"tags":{},"startTime":1771458159240,"traceId":"f35859bf9c9e022e"},{"name":"code-generation-jobs","duration":87,"timestamp":73991455512,"id":495,"parentId":485,"tags":{},"startTime":1771458159244,"traceId":"f35859bf9c9e022e"},{"name":"module-assets","duration":96,"timestamp":73991455593,"id":496,"parentId":485,"tags":{},"startTime":1771458159244,"traceId":"f35859bf9c9e022e"},{"name":"create-chunk-assets","duration":3182,"timestamp":73991455692,"id":497,"parentId":485,"tags":{},"startTime":1771458159244,"traceId":"f35859bf9c9e022e"},{"name":"NextJsBuildManifest-generateClientManifest","duration":245,"timestamp":73991460090,"id":499,"parentId":476,"tags":{},"startTime":1771458159249,"traceId":"f35859bf9c9e022e"},{"name":"NextJsBuildManifest-createassets","duration":444,"timestamp":73991459894,"id":498,"parentId":476,"tags":{},"startTime":1771458159248,"traceId":"f35859bf9c9e022e"},{"name":"seal","duration":22391,"timestamp":73991440039,"id":485,"parentId":476,"tags":{},"startTime":1771458159229,"traceId":"f35859bf9c9e022e"},{"name":"webpack-compilation","duration":147277,"timestamp":73991315233,"id":476,"parentId":473,"tags":{"name":"client"},"startTime":1771458159104,"traceId":"f35859bf9c9e022e"},{"name":"emit","duration":2575,"timestamp":73991462638,"id":500,"parentId":473,"tags":{},"startTime":1771458159251,"traceId":"f35859bf9c9e022e"},{"name":"webpack-invalidated-client","duration":162424,"timestamp":73991303773,"id":473,"parentId":3,"tags":{"trigger":"manual"},"startTime":1771458159092,"traceId":"f35859bf9c9e022e"},{"name":"client-success","duration":5,"timestamp":73991469918,"id":503,"parentId":3,"tags":{},"startTime":1771458159258,"traceId":"f35859bf9c9e022e"},{"name":"client-hmr-latency","duration":169000,"timestamp":73991304661,"id":507,"parentId":3,"tags":{"updatedModules":[],"page":"/","isPageHidden":true},"startTime":1771458159264,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":18605,"timestamp":73991470980,"id":506,"parentId":502,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1771458159259,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":23538,"timestamp":73991470950,"id":504,"parentId":502,"tags":{"request":"next-app-loader?name=app%2Fapi%2Fmonitor%2Froute&page=%2Fapi%2Fmonitor%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fmonitor%2Froute.ts&appDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1771458159259,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":42041,"timestamp":73991470977,"id":505,"parentId":502,"tags":{"request":"next-app-loader?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=..%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1771458159259,"traceId":"f35859bf9c9e022e"},{"name":"make","duration":60958,"timestamp":73991468380,"id":502,"parentId":501,"tags":{},"startTime":1771458159257,"traceId":"f35859bf9c9e022e"},{"name":"chunk-graph","duration":2221,"timestamp":73991537458,"id":523,"parentId":522,"tags":{},"startTime":1771458159326,"traceId":"f35859bf9c9e022e"},{"name":"optimize-modules","duration":3,"timestamp":73991539700,"id":525,"parentId":522,"tags":{},"startTime":1771458159328,"traceId":"f35859bf9c9e022e"},{"name":"optimize-chunks","duration":2859,"timestamp":73991539754,"id":526,"parentId":522,"tags":{},"startTime":1771458159328,"traceId":"f35859bf9c9e022e"},{"name":"optimize-tree","duration":5,"timestamp":73991542627,"id":527,"parentId":522,"tags":{},"startTime":1771458159331,"traceId":"f35859bf9c9e022e"},{"name":"optimize-chunk-modules","duration":2,"timestamp":73991542646,"id":528,"parentId":522,"tags":{},"startTime":1771458159331,"traceId":"f35859bf9c9e022e"},{"name":"optimize","duration":3730,"timestamp":73991539694,"id":524,"parentId":522,"tags":{},"startTime":1771458159328,"traceId":"f35859bf9c9e022e"},{"name":"module-hash","duration":539,"timestamp":73991545166,"id":529,"parentId":522,"tags":{},"startTime":1771458159334,"traceId":"f35859bf9c9e022e"},{"name":"code-generation","duration":1471,"timestamp":73991545712,"id":530,"parentId":522,"tags":{},"startTime":1771458159334,"traceId":"f35859bf9c9e022e"},{"name":"hash","duration":1379,"timestamp":73991548164,"id":531,"parentId":522,"tags":{},"startTime":1771458159337,"traceId":"f35859bf9c9e022e"},{"name":"code-generation-jobs","duration":47,"timestamp":73991549544,"id":532,"parentId":522,"tags":{},"startTime":1771458159338,"traceId":"f35859bf9c9e022e"},{"name":"module-assets","duration":96,"timestamp":73991549584,"id":533,"parentId":522,"tags":{},"startTime":1771458159338,"traceId":"f35859bf9c9e022e"},{"name":"create-chunk-assets","duration":774,"timestamp":73991549683,"id":534,"parentId":522,"tags":{},"startTime":1771458159338,"traceId":"f35859bf9c9e022e"},{"name":"seal","duration":18247,"timestamp":73991534057,"id":522,"parentId":501,"tags":{},"startTime":1771458159323,"traceId":"f35859bf9c9e022e"},{"name":"webpack-compilation","duration":87190,"timestamp":73991468078,"id":501,"parentId":475,"tags":{"name":"server"},"startTime":1771458159257,"traceId":"f35859bf9c9e022e"},{"name":"emit","duration":3853,"timestamp":73991555293,"id":535,"parentId":475,"tags":{},"startTime":1771458159344,"traceId":"f35859bf9c9e022e"},{"name":"compile-path","duration":255885,"timestamp":73991303975,"id":474,"tags":{"trigger":"/_not-found"},"startTime":1771458159092,"traceId":"f35859bf9c9e022e"},{"name":"webpack-invalidated-server","duration":255828,"timestamp":73991304251,"id":475,"parentId":3,"tags":{"trigger":"manual"},"startTime":1771458159093,"traceId":"f35859bf9c9e022e"}] +[{"name":"ensure-page","duration":262505,"timestamp":73991297782,"id":472,"parentId":3,"tags":{"inputPage":"/_not-found/page"},"startTime":1771458159086,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":1942,"timestamp":73991560387,"id":536,"parentId":3,"tags":{"inputPage":"/_not-found/page"},"startTime":1771458159349,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":104,"timestamp":73991657926,"id":537,"parentId":3,"tags":{"inputPage":"/_next/static/chunks/app/LayoutGroupContext.mjs.map"},"startTime":1771458159446,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":30,"timestamp":73991658042,"id":538,"parentId":3,"tags":{"inputPage":"/_next/static/chunks/app/LayoutGroupContext.mjs.map"},"startTime":1771458159447,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":52,"timestamp":73991658194,"id":539,"parentId":3,"tags":{"inputPage":"/_next/static/chunks/app/LayoutGroupContext.mjs.map"},"startTime":1771458159447,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":29,"timestamp":73991658251,"id":540,"parentId":3,"tags":{"inputPage":"/_next/static/chunks/app/LayoutGroupContext.mjs.map"},"startTime":1771458159447,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":224,"timestamp":73991658548,"id":542,"parentId":3,"tags":{"inputPage":"/_not-found/page"},"startTime":1771458159447,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":199,"timestamp":73991658828,"id":543,"parentId":3,"tags":{"inputPage":"/_not-found/page"},"startTime":1771458159447,"traceId":"f35859bf9c9e022e"},{"name":"client-success","duration":2,"timestamp":73991665556,"id":544,"parentId":3,"tags":{},"startTime":1771458159454,"traceId":"f35859bf9c9e022e"},{"name":"client-hmr-latency","duration":25000,"timestamp":73991659021,"id":545,"parentId":3,"tags":{"updatedModules":[],"page":"/","isPageHidden":false},"startTime":1771458159474,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":472,"timestamp":74004005893,"id":547,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458171794,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":481,"timestamp":74004008424,"id":548,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458171797,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":20253,"timestamp":74004004726,"id":546,"tags":{"url":"/api/monitor"},"startTime":1771458171793,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74004025026,"id":549,"parentId":546,"tags":{"url":"/api/monitor","memory.rss":"976420864","memory.heapUsed":"404566120","memory.heapTotal":"462454784"},"startTime":1771458171814,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":504,"timestamp":74008129535,"id":551,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458175918,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":291,"timestamp":74008130320,"id":552,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458175919,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":146240,"timestamp":74008129182,"id":550,"tags":{"url":"/"},"startTime":1771458175918,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74008275444,"id":553,"parentId":550,"tags":{"url":"/","memory.rss":"981221376","memory.heapUsed":"402615152","memory.heapTotal":"465682432"},"startTime":1771458176064,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":384,"timestamp":74008366659,"id":555,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458176155,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":258,"timestamp":74008367226,"id":556,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458176156,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4246,"timestamp":74008366289,"id":554,"tags":{"url":"/"},"startTime":1771458176155,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74008370556,"id":557,"parentId":554,"tags":{"url":"/","memory.rss":"981254144","memory.heapUsed":"404225824","memory.heapTotal":"465682432"},"startTime":1771458176159,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":1022,"timestamp":74034008806,"id":559,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458201797,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":694,"timestamp":74034010988,"id":560,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458201799,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":11543,"timestamp":74034006686,"id":558,"tags":{"url":"/api/monitor"},"startTime":1771458201795,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":74034018320,"id":561,"parentId":558,"tags":{"url":"/api/monitor","memory.rss":"905461760","memory.heapUsed":"404762272","memory.heapTotal":"465682432"},"startTime":1771458201807,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":334,"timestamp":74038719705,"id":563,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458206508,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":197,"timestamp":74038720197,"id":564,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458206509,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4214,"timestamp":74038719357,"id":562,"tags":{"url":"/"},"startTime":1771458206508,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":4,"timestamp":74038723673,"id":565,"parentId":562,"tags":{"url":"/","memory.rss":"905510912","memory.heapUsed":"406375576","memory.heapTotal":"465682432"},"startTime":1771458206512,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":331,"timestamp":74040006891,"id":567,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458207795,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":205,"timestamp":74040007650,"id":568,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458207796,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3739,"timestamp":74040006046,"id":566,"tags":{"url":"/api/monitor"},"startTime":1771458207794,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":74040009836,"id":569,"parentId":566,"tags":{"url":"/api/monitor","memory.rss":"905510912","memory.heapUsed":"406827152","memory.heapTotal":"465682432"},"startTime":1771458207798,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":767,"timestamp":74064005036,"id":571,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458231793,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":440,"timestamp":74064006655,"id":572,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458231795,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":10947,"timestamp":74064003269,"id":570,"tags":{"url":"/api/monitor"},"startTime":1771458231792,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74064014289,"id":573,"parentId":570,"tags":{"url":"/api/monitor","memory.rss":"937607168","memory.heapUsed":"392407448","memory.heapTotal":"459227136"},"startTime":1771458231803,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":691,"timestamp":74067058962,"id":575,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458234847,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":290,"timestamp":74067059963,"id":576,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458234848,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4915,"timestamp":74067058660,"id":574,"tags":{"url":"/"},"startTime":1771458234847,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74067063595,"id":577,"parentId":574,"tags":{"url":"/","memory.rss":"937017344","memory.heapUsed":"394129304","memory.heapTotal":"459227136"},"startTime":1771458234852,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":312,"timestamp":74067139165,"id":579,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458234928,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":184,"timestamp":74067139656,"id":580,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458234928,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4299,"timestamp":74067138826,"id":578,"tags":{"url":"/"},"startTime":1771458234927,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74067143158,"id":581,"parentId":578,"tags":{"url":"/","memory.rss":"937017344","memory.heapUsed":"395815512","memory.heapTotal":"459227136"},"startTime":1771458234932,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":678,"timestamp":74094003367,"id":583,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458261792,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":376,"timestamp":74094004804,"id":584,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458261793,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":7472,"timestamp":74094002158,"id":582,"tags":{"url":"/api/monitor"},"startTime":1771458261791,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74094009705,"id":585,"parentId":582,"tags":{"url":"/api/monitor","memory.rss":"936443904","memory.heapUsed":"396338424","memory.heapTotal":"459227136"},"startTime":1771458261798,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":370,"timestamp":74099019149,"id":587,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458266807,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":191,"timestamp":74099019696,"id":588,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458266808,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4075,"timestamp":74099018807,"id":586,"tags":{"url":"/"},"startTime":1771458266807,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":5,"timestamp":74099022932,"id":589,"parentId":586,"tags":{"url":"/","memory.rss":"936493056","memory.heapUsed":"397962120","memory.heapTotal":"459227136"},"startTime":1771458266811,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":567,"timestamp":74100008201,"id":591,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458267797,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":426,"timestamp":74100009574,"id":592,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458267798,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":7028,"timestamp":74100007071,"id":590,"tags":{"url":"/api/monitor"},"startTime":1771458267795,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":74100014152,"id":593,"parentId":590,"tags":{"url":"/api/monitor","memory.rss":"936509440","memory.heapUsed":"398403136","memory.heapTotal":"459227136"},"startTime":1771458267803,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":567,"timestamp":74124003805,"id":595,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458291792,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":451,"timestamp":74124005088,"id":596,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458291793,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":5189,"timestamp":74124002478,"id":594,"tags":{"url":"/api/monitor"},"startTime":1771458291791,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":2,"timestamp":74124007738,"id":597,"parentId":594,"tags":{"url":"/api/monitor","memory.rss":"936509440","memory.heapUsed":"398906824","memory.heapTotal":"459227136"},"startTime":1771458291796,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":361,"timestamp":74127671938,"id":599,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458295460,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":265,"timestamp":74127672467,"id":600,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458295461,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4372,"timestamp":74127671637,"id":598,"tags":{"url":"/"},"startTime":1771458295460,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74127676028,"id":601,"parentId":598,"tags":{"url":"/","memory.rss":"936558592","memory.heapUsed":"400585848","memory.heapTotal":"459227136"},"startTime":1771458295464,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":399,"timestamp":74127756333,"id":603,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458295545,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":262,"timestamp":74127756939,"id":604,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458295545,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4367,"timestamp":74127755984,"id":602,"tags":{"url":"/"},"startTime":1771458295544,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74127760371,"id":605,"parentId":602,"tags":{"url":"/","memory.rss":"936591360","memory.heapUsed":"402171664","memory.heapTotal":"459227136"},"startTime":1771458295549,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":647,"timestamp":74154008555,"id":607,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458321797,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":348,"timestamp":74154010228,"id":608,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458321799,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":7209,"timestamp":74154007112,"id":606,"tags":{"url":"/api/monitor"},"startTime":1771458321795,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":2,"timestamp":74154014912,"id":609,"parentId":606,"tags":{"url":"/api/monitor","memory.rss":"936624128","memory.heapUsed":"402691720","memory.heapTotal":"459227136"},"startTime":1771458321803,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":385,"timestamp":74160006935,"id":611,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458327795,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":263,"timestamp":74160007900,"id":612,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458327796,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3731,"timestamp":74160006054,"id":610,"tags":{"url":"/api/monitor"},"startTime":1771458327794,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":74160009829,"id":613,"parentId":610,"tags":{"url":"/api/monitor","memory.rss":"936640512","memory.heapUsed":"403160368","memory.heapTotal":"459227136"},"startTime":1771458327798,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":328,"timestamp":74171993028,"id":615,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458339781,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":193,"timestamp":74171993552,"id":616,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458339782,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3437,"timestamp":74171992760,"id":614,"tags":{"url":"/"},"startTime":1771458339781,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74171996215,"id":617,"parentId":614,"tags":{"url":"/","memory.rss":"936837120","memory.heapUsed":"404785312","memory.heapTotal":"459227136"},"startTime":1771458339784,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":549,"timestamp":74184010799,"id":619,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458351799,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":476,"timestamp":74184012244,"id":620,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458351800,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":6517,"timestamp":74184009510,"id":618,"tags":{"url":"/api/monitor"},"startTime":1771458351798,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":74184016108,"id":621,"parentId":618,"tags":{"url":"/api/monitor","memory.rss":"936869888","memory.heapUsed":"405270408","memory.heapTotal":"459227136"},"startTime":1771458351804,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":426,"timestamp":74187612429,"id":623,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458355401,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":234,"timestamp":74187613126,"id":624,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458355401,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4359,"timestamp":74187612131,"id":622,"tags":{"url":"/"},"startTime":1771458355400,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74187616508,"id":625,"parentId":622,"tags":{"url":"/","memory.rss":"936984576","memory.heapUsed":"406851480","memory.heapTotal":"459227136"},"startTime":1771458355405,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":362,"timestamp":74187695521,"id":627,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458355484,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":239,"timestamp":74187696084,"id":628,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458355484,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4093,"timestamp":74187695215,"id":626,"tags":{"url":"/"},"startTime":1771458355483,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":74187699334,"id":629,"parentId":626,"tags":{"url":"/","memory.rss":"937197568","memory.heapUsed":"408444464","memory.heapTotal":"459489280"},"startTime":1771458355488,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":534,"timestamp":74208560477,"id":631,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458376349,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":323,"timestamp":74208561396,"id":632,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458376350,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":5169,"timestamp":74208559503,"id":630,"tags":{"url":"/"},"startTime":1771458376348,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":4,"timestamp":74208564748,"id":633,"parentId":630,"tags":{"url":"/","memory.rss":"937295872","memory.heapUsed":"410070760","memory.heapTotal":"459489280"},"startTime":1771458376353,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":424,"timestamp":74220005841,"id":635,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458387794,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":353,"timestamp":74220007160,"id":636,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458387795,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":5998,"timestamp":74220004623,"id":634,"tags":{"url":"/api/monitor"},"startTime":1771458387793,"traceId":"f35859bf9c9e022e"}] +[{"name":"memory-usage","duration":1,"timestamp":74220010911,"id":637,"parentId":634,"tags":{"url":"/api/monitor","memory.rss":"937345024","memory.heapUsed":"410577472","memory.heapTotal":"459489280"},"startTime":1771458387799,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":238,"timestamp":74220011995,"id":639,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458387800,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":178,"timestamp":74220012548,"id":640,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458387801,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4065,"timestamp":74220011458,"id":638,"tags":{"url":"/api/monitor"},"startTime":1771458387800,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74220015570,"id":641,"parentId":638,"tags":{"url":"/api/monitor","memory.rss":"937345024","memory.heapUsed":"411018088","memory.heapTotal":"459489280"},"startTime":1771458387804,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":565,"timestamp":74220237302,"id":643,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458388025,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":378,"timestamp":74220238286,"id":644,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458388026,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":5006,"timestamp":74220236925,"id":642,"tags":{"url":"/"},"startTime":1771458388025,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":74220241964,"id":645,"parentId":642,"tags":{"url":"/","memory.rss":"937607168","memory.heapUsed":"412637984","memory.heapTotal":"459489280"},"startTime":1771458388030,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":466,"timestamp":74239571578,"id":647,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458407360,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":297,"timestamp":74239572276,"id":648,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458407360,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4564,"timestamp":74239571041,"id":646,"tags":{"url":"/"},"startTime":1771458407359,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74239575628,"id":649,"parentId":646,"tags":{"url":"/","memory.rss":"937803776","memory.heapUsed":"414263048","memory.heapTotal":"459489280"},"startTime":1771458407364,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":337,"timestamp":74263817581,"id":651,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458431606,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":192,"timestamp":74263818104,"id":652,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458431606,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3420,"timestamp":74263817260,"id":650,"tags":{"url":"/"},"startTime":1771458431605,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74263820699,"id":653,"parentId":650,"tags":{"url":"/","memory.rss":"938049536","memory.heapUsed":"415848792","memory.heapTotal":"459489280"},"startTime":1771458431609,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":311,"timestamp":74263894860,"id":655,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458431683,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":186,"timestamp":74263895329,"id":656,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458431683,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3293,"timestamp":74263894535,"id":654,"tags":{"url":"/"},"startTime":1771458431683,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74263897846,"id":657,"parentId":654,"tags":{"url":"/","memory.rss":"938360832","memory.heapUsed":"417435480","memory.heapTotal":"461062144"},"startTime":1771458431686,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":638,"timestamp":74280006031,"id":659,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458447794,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":527,"timestamp":74280007683,"id":660,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458447796,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":7331,"timestamp":74280004455,"id":658,"tags":{"url":"/api/monitor"},"startTime":1771458447793,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74280011824,"id":661,"parentId":658,"tags":{"url":"/api/monitor","memory.rss":"938393600","memory.heapUsed":"417889344","memory.heapTotal":"461586432"},"startTime":1771458447800,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":284,"timestamp":74280013219,"id":663,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458447801,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":317,"timestamp":74280014440,"id":664,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458447803,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4067,"timestamp":74280012744,"id":662,"tags":{"url":"/api/monitor"},"startTime":1771458447801,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74280016841,"id":665,"parentId":662,"tags":{"url":"/api/monitor","memory.rss":"938426368","memory.heapUsed":"418323024","memory.heapTotal":"461848576"},"startTime":1771458447805,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":332,"timestamp":74282947272,"id":667,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458450735,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":211,"timestamp":74282947749,"id":668,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458450736,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4359,"timestamp":74282946975,"id":666,"tags":{"url":"/"},"startTime":1771458450735,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74282951352,"id":669,"parentId":666,"tags":{"url":"/","memory.rss":"938573824","memory.heapUsed":"393922088","memory.heapTotal":"406274048"},"startTime":1771458450739,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":303,"timestamp":74283024616,"id":671,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458450813,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":232,"timestamp":74283025111,"id":672,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458450813,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4203,"timestamp":74283023575,"id":670,"tags":{"url":"/"},"startTime":1771458450812,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74283027797,"id":673,"parentId":670,"tags":{"url":"/","memory.rss":"938622976","memory.heapUsed":"394583656","memory.heapTotal":"408109056"},"startTime":1771458450816,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":331,"timestamp":74307739750,"id":675,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458475528,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":173,"timestamp":74307740328,"id":676,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458475528,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3417,"timestamp":74307739417,"id":674,"tags":{"url":"/"},"startTime":1771458475527,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":3,"timestamp":74307742862,"id":677,"parentId":674,"tags":{"url":"/","memory.rss":"938655744","memory.heapUsed":"396160664","memory.heapTotal":"409419776"},"startTime":1771458475531,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":310,"timestamp":74307815184,"id":679,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458475603,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":185,"timestamp":74307815660,"id":680,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458475604,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3702,"timestamp":74307814899,"id":678,"tags":{"url":"/"},"startTime":1771458475603,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74307818621,"id":681,"parentId":678,"tags":{"url":"/","memory.rss":"938721280","memory.heapUsed":"393763216","memory.heapTotal":"404701184"},"startTime":1771458475607,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":695,"timestamp":74336953458,"id":683,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458504741,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":178,"timestamp":74336954344,"id":684,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458504742,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4264,"timestamp":74336953094,"id":682,"tags":{"url":"/"},"startTime":1771458504741,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":74336957384,"id":685,"parentId":682,"tags":{"url":"/","memory.rss":"938754048","memory.heapUsed":"393869672","memory.heapTotal":"405487616"},"startTime":1771458504745,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":311,"timestamp":74340007114,"id":687,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458507795,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":427,"timestamp":74340008020,"id":688,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458507796,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":5663,"timestamp":74340006180,"id":686,"tags":{"url":"/api/monitor"},"startTime":1771458507794,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":74340011892,"id":689,"parentId":686,"tags":{"url":"/api/monitor","memory.rss":"938770432","memory.heapUsed":"394337848","memory.heapTotal":"405749760"},"startTime":1771458507800,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":325,"timestamp":74340013945,"id":691,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458507802,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":295,"timestamp":74340014743,"id":692,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458507803,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4003,"timestamp":74340013124,"id":690,"tags":{"url":"/api/monitor"},"startTime":1771458507801,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":74340017188,"id":693,"parentId":690,"tags":{"url":"/api/monitor","memory.rss":"938770432","memory.heapUsed":"393851376","memory.heapTotal":"404701184"},"startTime":1771458507805,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":345,"timestamp":74367069730,"id":695,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458534858,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":513,"timestamp":74367070227,"id":696,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458534858,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4075,"timestamp":74367069416,"id":694,"tags":{"url":"/"},"startTime":1771458534857,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74367073525,"id":697,"parentId":694,"tags":{"url":"/","memory.rss":"938786816","memory.heapUsed":"393989800","memory.heapTotal":"405225472"},"startTime":1771458534861,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":410,"timestamp":74367152064,"id":699,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458534940,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":263,"timestamp":74367152716,"id":700,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458534941,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4276,"timestamp":74367151702,"id":698,"tags":{"url":"/"},"startTime":1771458534940,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74367156000,"id":701,"parentId":698,"tags":{"url":"/","memory.rss":"938786816","memory.heapUsed":"394099680","memory.heapTotal":"406536192"},"startTime":1771458534944,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":341,"timestamp":74397830349,"id":703,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458565618,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":222,"timestamp":74397830849,"id":704,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458565619,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4556,"timestamp":74397830023,"id":702,"tags":{"url":"/"},"startTime":1771458565618,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74397834602,"id":705,"parentId":702,"tags":{"url":"/","memory.rss":"938803200","memory.heapUsed":"394139144","memory.heapTotal":"404701184"},"startTime":1771458565623,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":324,"timestamp":74400006973,"id":707,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458567795,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":251,"timestamp":74400007697,"id":708,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458567796,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4579,"timestamp":74400006001,"id":706,"tags":{"url":"/api/monitor"},"startTime":1771458567794,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":3,"timestamp":74400010722,"id":709,"parentId":706,"tags":{"url":"/api/monitor","memory.rss":"938803200","memory.heapUsed":"394586320","memory.heapTotal":"404701184"},"startTime":1771458567799,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":410,"timestamp":74400013143,"id":711,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458567801,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":297,"timestamp":74400014078,"id":712,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458567802,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4300,"timestamp":74400012430,"id":710,"tags":{"url":"/api/monitor"},"startTime":1771458567800,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":74400016768,"id":713,"parentId":710,"tags":{"url":"/api/monitor","memory.rss":"938819584","memory.heapUsed":"394175832","memory.heapTotal":"404176896"},"startTime":1771458567805,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":342,"timestamp":74427447439,"id":715,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458595235,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":181,"timestamp":74427447940,"id":716,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458595236,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4849,"timestamp":74427447122,"id":714,"tags":{"url":"/"},"startTime":1771458595235,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":74427452018,"id":717,"parentId":714,"tags":{"url":"/","memory.rss":"938819584","memory.heapUsed":"393961136","memory.heapTotal":"404963328"},"startTime":1771458595240,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":317,"timestamp":74427537505,"id":719,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458595325,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":181,"timestamp":74427537978,"id":720,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458595326,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3810,"timestamp":74427537210,"id":718,"tags":{"url":"/"},"startTime":1771458595325,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74427541037,"id":721,"parentId":718,"tags":{"url":"/","memory.rss":"938852352","memory.heapUsed":"394793840","memory.heapTotal":"405749760"},"startTime":1771458595329,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":322,"timestamp":74456992980,"id":723,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458624781,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":163,"timestamp":74456993452,"id":724,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458624781,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3818,"timestamp":74456992652,"id":722,"tags":{"url":"/"},"startTime":1771458624780,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74456996488,"id":725,"parentId":722,"tags":{"url":"/","memory.rss":"938852352","memory.heapUsed":"394877736","memory.heapTotal":"405749760"},"startTime":1771458624784,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":433,"timestamp":74460004434,"id":727,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458627792,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":240,"timestamp":74460005330,"id":728,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458627793,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3209,"timestamp":74460003869,"id":726,"tags":{"url":"/api/monitor"},"startTime":1771458627792,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74460007102,"id":729,"parentId":726,"tags":{"url":"/api/monitor","memory.rss":"938885120","memory.heapUsed":"394560216","memory.heapTotal":"405749760"},"startTime":1771458627795,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":203,"timestamp":74460008264,"id":731,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458627796,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":180,"timestamp":74460008738,"id":732,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458627797,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":2214,"timestamp":74460007812,"id":730,"tags":{"url":"/api/monitor"},"startTime":1771458627796,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74460010039,"id":733,"parentId":730,"tags":{"url":"/api/monitor","memory.rss":"938901504","memory.heapUsed":"394998016","memory.heapTotal":"405749760"},"startTime":1771458627798,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":385,"timestamp":74487177104,"id":735,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458654965,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":238,"timestamp":74487177696,"id":736,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458654965,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4316,"timestamp":74487176730,"id":734,"tags":{"url":"/"},"startTime":1771458654965,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74487181065,"id":737,"parentId":734,"tags":{"url":"/","memory.rss":"938983424","memory.heapUsed":"394938672","memory.heapTotal":"404439040"},"startTime":1771458654969,"traceId":"f35859bf9c9e022e"}] +[{"name":"ensure-page","duration":340,"timestamp":74487262535,"id":739,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458655050,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":256,"timestamp":74487263071,"id":740,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458655051,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4070,"timestamp":74487261959,"id":738,"tags":{"url":"/"},"startTime":1771458655050,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74487266044,"id":741,"parentId":738,"tags":{"url":"/","memory.rss":"938999808","memory.heapUsed":"394935904","memory.heapTotal":"405749760"},"startTime":1771458655054,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":379,"timestamp":74508362918,"id":743,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458676151,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":285,"timestamp":74508363748,"id":744,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458676152,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":4226,"timestamp":74508362560,"id":742,"tags":{"url":"/"},"startTime":1771458676150,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74508366805,"id":745,"parentId":742,"tags":{"url":"/","memory.rss":"939048960","memory.heapUsed":"394929392","memory.heapTotal":"405225472"},"startTime":1771458676155,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":693,"timestamp":74520008662,"id":747,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458687796,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":590,"timestamp":74520010292,"id":748,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458687798,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":8387,"timestamp":74520007084,"id":746,"tags":{"url":"/api/monitor"},"startTime":1771458687795,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":1,"timestamp":74520015538,"id":749,"parentId":746,"tags":{"url":"/api/monitor","memory.rss":"939048960","memory.heapUsed":"395377664","memory.heapTotal":"405749760"},"startTime":1771458687803,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":541,"timestamp":74520019172,"id":751,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458687807,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":404,"timestamp":74520020421,"id":752,"parentId":3,"tags":{"inputPage":"/api/monitor/route"},"startTime":1771458687808,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":6022,"timestamp":74520018221,"id":750,"tags":{"url":"/api/monitor"},"startTime":1771458687806,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":2,"timestamp":74520024299,"id":753,"parentId":750,"tags":{"url":"/api/monitor","memory.rss":"939048960","memory.heapUsed":"394985240","memory.heapTotal":"404701184"},"startTime":1771458687812,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":360,"timestamp":74520969408,"id":755,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458688757,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":211,"timestamp":74520969924,"id":756,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458688758,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3766,"timestamp":74520969083,"id":754,"tags":{"url":"/"},"startTime":1771458688757,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74520972865,"id":757,"parentId":754,"tags":{"url":"/","memory.rss":"939065344","memory.heapUsed":"395626232","memory.heapTotal":"406011904"},"startTime":1771458688761,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":353,"timestamp":74539831514,"id":759,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458707619,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":202,"timestamp":74539832040,"id":760,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458707620,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3697,"timestamp":74539831193,"id":758,"tags":{"url":"/"},"startTime":1771458707619,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74539834935,"id":761,"parentId":758,"tags":{"url":"/","memory.rss":"939065344","memory.heapUsed":"395595768","memory.heapTotal":"404701184"},"startTime":1771458707623,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":383,"timestamp":74565572412,"id":763,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458733360,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":228,"timestamp":74565572967,"id":764,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458733361,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3820,"timestamp":74565572076,"id":762,"tags":{"url":"/"},"startTime":1771458733360,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74565575914,"id":765,"parentId":762,"tags":{"url":"/","memory.rss":"939081728","memory.heapUsed":"395455640","memory.heapTotal":"404701184"},"startTime":1771458733364,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":644,"timestamp":74565653632,"id":767,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458733441,"traceId":"f35859bf9c9e022e"},{"name":"ensure-page","duration":206,"timestamp":74565654440,"id":768,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1771458733442,"traceId":"f35859bf9c9e022e"},{"name":"handle-request","duration":3851,"timestamp":74565653331,"id":766,"tags":{"url":"/"},"startTime":1771458733441,"traceId":"f35859bf9c9e022e"},{"name":"memory-usage","duration":0,"timestamp":74565657200,"id":769,"parentId":766,"tags":{"url":"/","memory.rss":"939147264","memory.heapUsed":"395412872","memory.heapTotal":"405749760"},"startTime":1771458733445,"traceId":"f35859bf9c9e022e"},{"name":"build-module-tsx","duration":4420,"timestamp":74569129048,"id":776,"parentId":772,"tags":{"name":"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx","layer":"rsc"},"startTime":1771458736917,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":8606,"timestamp":74569125565,"id":774,"parentId":773,"tags":{"request":"next-app-loader?name=app%2Fapi%2Fmonitor%2Froute&page=%2Fapi%2Fmonitor%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fmonitor%2Froute.ts&appDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1771458736913,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":9750,"timestamp":74569125595,"id":775,"parentId":773,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1771458736913,"traceId":"f35859bf9c9e022e"},{"name":"build-module-tsx","duration":12803,"timestamp":74569139882,"id":787,"parentId":772,"tags":{"name":"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx","layer":"ssr"},"startTime":1771458736928,"traceId":"f35859bf9c9e022e"},{"name":"build-module-js","duration":16078,"timestamp":74569171570,"id":788,"parentId":787,"tags":{"name":"__barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/lucide-react/dist/esm/lucide-react.js","layer":"ssr"},"startTime":1771458736959,"traceId":"f35859bf9c9e022e"},{"name":"make","duration":66444,"timestamp":74569124677,"id":773,"parentId":772,"tags":{},"startTime":1771458736912,"traceId":"f35859bf9c9e022e"},{"name":"chunk-graph","duration":2841,"timestamp":74569200956,"id":790,"parentId":789,"tags":{},"startTime":1771458736989,"traceId":"f35859bf9c9e022e"},{"name":"optimize-modules","duration":5,"timestamp":74569203814,"id":792,"parentId":789,"tags":{},"startTime":1771458736991,"traceId":"f35859bf9c9e022e"},{"name":"optimize-chunks","duration":2901,"timestamp":74569203848,"id":793,"parentId":789,"tags":{},"startTime":1771458736992,"traceId":"f35859bf9c9e022e"},{"name":"optimize-tree","duration":6,"timestamp":74569206764,"id":794,"parentId":789,"tags":{},"startTime":1771458736994,"traceId":"f35859bf9c9e022e"},{"name":"optimize-chunk-modules","duration":3,"timestamp":74569206780,"id":795,"parentId":789,"tags":{},"startTime":1771458736994,"traceId":"f35859bf9c9e022e"},{"name":"optimize","duration":3768,"timestamp":74569203809,"id":791,"parentId":789,"tags":{},"startTime":1771458736991,"traceId":"f35859bf9c9e022e"},{"name":"module-hash","duration":843,"timestamp":74569209243,"id":796,"parentId":789,"tags":{},"startTime":1771458736997,"traceId":"f35859bf9c9e022e"},{"name":"code-generation","duration":3491,"timestamp":74569210091,"id":797,"parentId":789,"tags":{},"startTime":1771458736998,"traceId":"f35859bf9c9e022e"},{"name":"hash","duration":1201,"timestamp":74569214853,"id":798,"parentId":789,"tags":{},"startTime":1771458737003,"traceId":"f35859bf9c9e022e"},{"name":"code-generation-jobs","duration":78,"timestamp":74569216054,"id":799,"parentId":789,"tags":{},"startTime":1771458737004,"traceId":"f35859bf9c9e022e"},{"name":"module-assets","duration":131,"timestamp":74569216122,"id":800,"parentId":789,"tags":{},"startTime":1771458737004,"traceId":"f35859bf9c9e022e"},{"name":"create-chunk-assets","duration":4486,"timestamp":74569216256,"id":801,"parentId":789,"tags":{},"startTime":1771458737004,"traceId":"f35859bf9c9e022e"},{"name":"seal","duration":32347,"timestamp":74569197012,"id":789,"parentId":772,"tags":{},"startTime":1771458736985,"traceId":"f35859bf9c9e022e"},{"name":"webpack-compilation","duration":107191,"timestamp":74569124456,"id":772,"parentId":770,"tags":{"name":"server"},"startTime":1771458736912,"traceId":"f35859bf9c9e022e"},{"name":"emit","duration":2760,"timestamp":74569231691,"id":802,"parentId":770,"tags":{},"startTime":1771458737019,"traceId":"f35859bf9c9e022e"},{"name":"webpack-invalidated-server","duration":117373,"timestamp":74569117823,"id":770,"parentId":3,"tags":{"trigger":"src/app/page.tsx"},"startTime":1771458736905,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":1493,"timestamp":74569240642,"id":810,"parentId":804,"tags":{"request":"next-flight-client-entry-loader?server=false!"},"startTime":1771458737028,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":2515,"timestamp":74569240608,"id":805,"parentId":804,"tags":{"request":"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1771458737028,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":2994,"timestamp":74569240638,"id":807,"parentId":804,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1771458737028,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":3750,"timestamp":74569240641,"id":809,"parentId":804,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fmetadata-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1771458737028,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":3828,"timestamp":74569240635,"id":806,"parentId":804,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1771458737028,"traceId":"f35859bf9c9e022e"},{"name":"build-module-tsx","duration":11516,"timestamp":74569242169,"id":811,"parentId":803,"tags":{"name":"/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/page.tsx","layer":"app-pages-browser"},"startTime":1771458737030,"traceId":"f35859bf9c9e022e"},{"name":"build-module-js","duration":3497,"timestamp":74569270826,"id":812,"parentId":811,"tags":{"name":"__barrel_optimize__?names=Activity,AlertTriangle,Bell,CheckCircle2,Clock,ExternalLink,History,LayoutDashboard,Monitor,Plus,RefreshCw,Search,Server,Settings,Trash2,Zap!=!/Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/node_modules/lucide-react/dist/esm/lucide-react.js","layer":"app-pages-browser"},"startTime":1771458737058,"traceId":"f35859bf9c9e022e"},{"name":"add-entry","duration":35975,"timestamp":74569240639,"id":808,"parentId":804,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fmattbruce%2FDocuments%2FProjects%2FOpenClaw%2FWeb%2Fheartbeat-monitor%2Fsrc%2Fapp%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1771458737028,"traceId":"f35859bf9c9e022e"},{"name":"make","duration":38533,"timestamp":74569238099,"id":804,"parentId":803,"tags":{},"startTime":1771458737026,"traceId":"f35859bf9c9e022e"},{"name":"chunk-graph","duration":3358,"timestamp":74569289980,"id":814,"parentId":813,"tags":{},"startTime":1771458737078,"traceId":"f35859bf9c9e022e"},{"name":"optimize-modules","duration":3,"timestamp":74569293365,"id":816,"parentId":813,"tags":{},"startTime":1771458737081,"traceId":"f35859bf9c9e022e"},{"name":"optimize-chunks","duration":109,"timestamp":74569293378,"id":817,"parentId":813,"tags":{},"startTime":1771458737081,"traceId":"f35859bf9c9e022e"},{"name":"optimize-tree","duration":3,"timestamp":74569293499,"id":818,"parentId":813,"tags":{},"startTime":1771458737081,"traceId":"f35859bf9c9e022e"},{"name":"optimize-chunk-modules","duration":3,"timestamp":74569293512,"id":819,"parentId":813,"tags":{},"startTime":1771458737081,"traceId":"f35859bf9c9e022e"},{"name":"optimize","duration":1381,"timestamp":74569293357,"id":815,"parentId":813,"tags":{},"startTime":1771458737081,"traceId":"f35859bf9c9e022e"},{"name":"module-hash","duration":942,"timestamp":74569297269,"id":820,"parentId":813,"tags":{},"startTime":1771458737085,"traceId":"f35859bf9c9e022e"},{"name":"code-generation","duration":3362,"timestamp":74569298220,"id":821,"parentId":813,"tags":{},"startTime":1771458737086,"traceId":"f35859bf9c9e022e"},{"name":"hash","duration":2538,"timestamp":74569303076,"id":822,"parentId":813,"tags":{},"startTime":1771458737091,"traceId":"f35859bf9c9e022e"},{"name":"code-generation-jobs","duration":109,"timestamp":74569305614,"id":823,"parentId":813,"tags":{},"startTime":1771458737093,"traceId":"f35859bf9c9e022e"},{"name":"module-assets","duration":106,"timestamp":74569305717,"id":824,"parentId":813,"tags":{},"startTime":1771458737093,"traceId":"f35859bf9c9e022e"},{"name":"create-chunk-assets","duration":7490,"timestamp":74569305827,"id":825,"parentId":813,"tags":{},"startTime":1771458737093,"traceId":"f35859bf9c9e022e"},{"name":"NextJsBuildManifest-generateClientManifest","duration":67,"timestamp":74569314302,"id":827,"parentId":803,"tags":{},"startTime":1771458737102,"traceId":"f35859bf9c9e022e"},{"name":"NextJsBuildManifest-createassets","duration":125,"timestamp":74569314247,"id":826,"parentId":803,"tags":{},"startTime":1771458737102,"traceId":"f35859bf9c9e022e"},{"name":"seal","duration":31506,"timestamp":74569285024,"id":813,"parentId":803,"tags":{},"startTime":1771458737073,"traceId":"f35859bf9c9e022e"},{"name":"webpack-compilation","duration":79013,"timestamp":74569237539,"id":803,"parentId":771,"tags":{"name":"client"},"startTime":1771458737025,"traceId":"f35859bf9c9e022e"},{"name":"emit","duration":13968,"timestamp":74569316566,"id":828,"parentId":771,"tags":{},"startTime":1771458737104,"traceId":"f35859bf9c9e022e"},{"name":"webpack-invalidated-client","duration":213527,"timestamp":74569117944,"id":771,"parentId":3,"tags":{"trigger":"src/app/page.tsx"},"startTime":1771458736906,"traceId":"f35859bf9c9e022e"}] diff --git a/.next/types/app/api/monitor/route.ts b/.next/types/app/api/monitor/route.ts new file mode 100644 index 00000000..63d1545d --- /dev/null +++ b/.next/types/app/api/monitor/route.ts @@ -0,0 +1,347 @@ +// File: /Users/mattbruce/Documents/Projects/OpenClaw/Web/heartbeat-monitor/src/app/api/monitor/route.ts +import * as entry from '../../../../../src/app/api/monitor/route.js' +import type { NextRequest } from 'next/server.js' + +type TEntry = typeof import('../../../../../src/app/api/monitor/route.js') + +type SegmentParams = T extends Record + ? { [K in keyof T]: T[K] extends string ? string | string[] | undefined : never } + : T + +// 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 + +}, TEntry, ''>>() + +type RouteContext = { params: Promise } +// Check the prop type of the entry function +if ('GET' in entry) { + checkFields< + Diff< + ParamCheck, + { + __tag__: 'GET' + __param_position__: 'first' + __param_type__: FirstArg> + }, + 'GET' + > + >() + checkFields< + Diff< + ParamCheck, + { + __tag__: 'GET' + __param_position__: 'second' + __param_type__: SecondArg> + }, + 'GET' + > + >() + + checkFields< + Diff< + { + __tag__: 'GET', + __return_type__: Response | void | never | Promise + }, + { + __tag__: 'GET', + __return_type__: ReturnType> + }, + 'GET' + > + >() +} +// Check the prop type of the entry function +if ('HEAD' in entry) { + checkFields< + Diff< + ParamCheck, + { + __tag__: 'HEAD' + __param_position__: 'first' + __param_type__: FirstArg> + }, + 'HEAD' + > + >() + checkFields< + Diff< + ParamCheck, + { + __tag__: 'HEAD' + __param_position__: 'second' + __param_type__: SecondArg> + }, + 'HEAD' + > + >() + + checkFields< + Diff< + { + __tag__: 'HEAD', + __return_type__: Response | void | never | Promise + }, + { + __tag__: 'HEAD', + __return_type__: ReturnType> + }, + 'HEAD' + > + >() +} +// Check the prop type of the entry function +if ('OPTIONS' in entry) { + checkFields< + Diff< + ParamCheck, + { + __tag__: 'OPTIONS' + __param_position__: 'first' + __param_type__: FirstArg> + }, + 'OPTIONS' + > + >() + checkFields< + Diff< + ParamCheck, + { + __tag__: 'OPTIONS' + __param_position__: 'second' + __param_type__: SecondArg> + }, + 'OPTIONS' + > + >() + + checkFields< + Diff< + { + __tag__: 'OPTIONS', + __return_type__: Response | void | never | Promise + }, + { + __tag__: 'OPTIONS', + __return_type__: ReturnType> + }, + 'OPTIONS' + > + >() +} +// Check the prop type of the entry function +if ('POST' in entry) { + checkFields< + Diff< + ParamCheck, + { + __tag__: 'POST' + __param_position__: 'first' + __param_type__: FirstArg> + }, + 'POST' + > + >() + checkFields< + Diff< + ParamCheck, + { + __tag__: 'POST' + __param_position__: 'second' + __param_type__: SecondArg> + }, + 'POST' + > + >() + + checkFields< + Diff< + { + __tag__: 'POST', + __return_type__: Response | void | never | Promise + }, + { + __tag__: 'POST', + __return_type__: ReturnType> + }, + 'POST' + > + >() +} +// Check the prop type of the entry function +if ('PUT' in entry) { + checkFields< + Diff< + ParamCheck, + { + __tag__: 'PUT' + __param_position__: 'first' + __param_type__: FirstArg> + }, + 'PUT' + > + >() + checkFields< + Diff< + ParamCheck, + { + __tag__: 'PUT' + __param_position__: 'second' + __param_type__: SecondArg> + }, + 'PUT' + > + >() + + checkFields< + Diff< + { + __tag__: 'PUT', + __return_type__: Response | void | never | Promise + }, + { + __tag__: 'PUT', + __return_type__: ReturnType> + }, + 'PUT' + > + >() +} +// Check the prop type of the entry function +if ('DELETE' in entry) { + checkFields< + Diff< + ParamCheck, + { + __tag__: 'DELETE' + __param_position__: 'first' + __param_type__: FirstArg> + }, + 'DELETE' + > + >() + checkFields< + Diff< + ParamCheck, + { + __tag__: 'DELETE' + __param_position__: 'second' + __param_type__: SecondArg> + }, + 'DELETE' + > + >() + + checkFields< + Diff< + { + __tag__: 'DELETE', + __return_type__: Response | void | never | Promise + }, + { + __tag__: 'DELETE', + __return_type__: ReturnType> + }, + 'DELETE' + > + >() +} +// Check the prop type of the entry function +if ('PATCH' in entry) { + checkFields< + Diff< + ParamCheck, + { + __tag__: 'PATCH' + __param_position__: 'first' + __param_type__: FirstArg> + }, + 'PATCH' + > + >() + checkFields< + Diff< + ParamCheck, + { + __tag__: 'PATCH' + __param_position__: 'second' + __param_type__: SecondArg> + }, + 'PATCH' + > + >() + + checkFields< + Diff< + { + __tag__: 'PATCH', + __return_type__: Response | void | never | Promise + }, + { + __tag__: 'PATCH', + __return_type__: ReturnType> + }, + 'PATCH' + > + >() +} + +// Check the arguments and return type of the generateStaticParams function +if ('generateStaticParams' in entry) { + checkFields>, 'generateStaticParams'>>() + checkFields }, { __tag__: 'generateStaticParams', __return_type__: ReturnType> }>>() +} + +export interface PageProps { + params?: Promise + searchParams?: Promise +} +export interface LayoutProps { + children?: React.ReactNode + + params?: Promise +} + +// ============= +// 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 + +type ParamCheck = { + __tag__: string + __param_position__: string + __param_type__: T +} + +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/src/app/page.tsx b/src/app/page.tsx index 4e3657bb..fc13280e 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -2,12 +2,6 @@ import React, { useState, useEffect } from "react"; import { motion, AnimatePresence } from "framer-motion"; -import { - LineChart, - Line, - ResponsiveContainer, - YAxis, -} from "recharts"; import { Activity, Plus, @@ -23,16 +17,20 @@ import { Monitor, AlertTriangle, History, - MoreVertical, CheckCircle2, XCircle, - AlertCircle, Clock, Zap, TrendingUp, Server, + MoreVertical, Menu, } from "lucide-react"; +import { + LineChart, + Line, + ResponsiveContainer, +} from "recharts"; // Types interface App { @@ -55,32 +53,110 @@ interface StatusEntry { responseTime?: number; } -interface NavItem { - id: string; - label: string; - icon: React.ReactNode; -} - -// Mock data generator for sparklines +// Generate sparkline data const generateSparklineData = (points: number, isUp: boolean) => { return Array.from({ length: points }, (_, i) => ({ - value: isUp - ? 80 + Math.random() * 20 - : Math.random() * 30, + value: isUp ? 80 + Math.random() * 20 : Math.random() * 30, time: i, })); }; -// Components +// shadcn-style Card Component +const Card = ({ children, className = "" }: { children: React.ReactNode; className?: string }) => ( +
+ {children} +
+); + +const CardContent = ({ children, className = "" }: { children: React.ReactNode; className?: string }) => ( +
{children}
+); + +// shadcn-style Badge +const Badge = ({ + children, + variant = "default", + className = "" +}: { + children: React.ReactNode; + variant?: "default" | "success" | "destructive" | "warning"; + className?: string; +}) => { + const variants = { + default: "bg-slate-800 text-slate-200 border-slate-700", + success: "bg-emerald-500/10 text-emerald-400 border-emerald-500/20", + destructive: "bg-red-500/10 text-red-400 border-red-500/20", + warning: "bg-amber-500/10 text-amber-400 border-amber-500/20", + }; + return ( + + {children} + + ); +}; + +// shadcn-style Progress +const Progress = ({ value, className = "" }: { value: number; className?: string }) => { + const getColor = () => { + if (value >= 95) return "bg-emerald-500"; + if (value >= 80) return "bg-amber-500"; + return "bg-red-500"; + }; + return ( +
+ +
+ ); +}; + +// shadcn-style Button +const Button = ({ + children, + variant = "default", + size = "default", + className = "", + ...props +}: { + children: React.ReactNode; + variant?: "default" | "ghost" | "outline"; + size?: "default" | "sm" | "icon"; + className?: string; +} & React.ButtonHTMLAttributes) => { + const variants = { + default: "bg-emerald-600 hover:bg-emerald-500 text-white", + ghost: "hover:bg-slate-800 text-slate-400 hover:text-white", + outline: "border border-slate-700 hover:bg-slate-800 text-slate-300", + }; + const sizes = { + default: "px-4 py-2", + sm: "px-3 py-1.5 text-sm", + icon: "p-2", + }; + return ( + + ); +}; + +// Sidebar Item Component const SidebarItem = ({ - item, + icon: Icon, + label, isActive, - isCollapsed, onClick }: { - item: NavItem; + icon: any; + label: string; isActive: boolean; - isCollapsed: boolean; onClick: () => void; }) => ( - {item.icon} - - {!isCollapsed && ( - - {item.label} - - )} - + + {label} ); -const MetricCard = ({ +// KPI Card Component +const KPICard = ({ title, value, subtitle, icon: Icon, - color, + color, data, - trend }: { title: string; value: string | number; @@ -124,55 +189,47 @@ const MetricCard = ({ icon: any; color: string; data: any[]; - trend?: "up" | "down" | "neutral"; }) => { - const colorClasses: Record = { - emerald: "from-emerald-500/20 to-emerald-500/5 border-emerald-500/20", - blue: "from-blue-500/20 to-blue-500/5 border-blue-500/20", - purple: "from-purple-500/20 to-purple-500/5 border-purple-500/20", - amber: "from-amber-500/20 to-amber-500/5 border-amber-500/20", + const colorMap: Record = { + emerald: { bg: "bg-emerald-500/10", text: "text-emerald-400", bar: "#10b981" }, + blue: { bg: "bg-blue-500/10", text: "text-blue-400", bar: "#3b82f6" }, + purple: { bg: "bg-purple-500/10", text: "text-purple-400", bar: "#a855f7" }, + amber: { bg: "bg-amber-500/10", text: "text-amber-400", bar: "#f59e0b" }, }; + const colors = colorMap[color] || colorMap.emerald; return ( - -
-
-

{title}

-

{value}

-
- {trend && ( - - {trend === "up" ? "↑" : trend === "down" ? "↓" : "→"} - - )} - {subtitle} + + +
+
+

{title}

+

{value}

+

{subtitle}

+
+
+
-
- +
+ + + + +
-
- -
- - - - - -
- +
+
); }; +// Service Card Component const ServiceCard = ({ app, status, @@ -183,7 +240,7 @@ const ServiceCard = ({ onDelete: () => void; }) => { const [isHovered, setIsHovered] = useState(false); - const sparklineData = generateSparklineData(12, status.isUp); + const sparklineData = generateSparklineData(10, status.isUp); return ( setIsHovered(true)} onHoverEnd={() => setIsHovered(false)} - className="group relative bg-slate-900/50 border border-slate-800 rounded-xl p-5 hover:border-slate-700 transition-all duration-300" + className="group" > - {/* Status Indicator Line */} -
- -
-
-
- -
-
-

- {app.name} - - - -

-

Port {app.port}

-
-
+ + {/* Top colored line */} +
-
- - - - - {status.isUp ? "Operational" : "Down"} -
-
- - {/* Metrics */} -
- {/* Uptime */} -
-
- Uptime - {status.uptime}% + + {/* Header */} +
+
+
+ +
+
+

+ {app.name} + + + +

+

Port {app.port}

+
+
+ + + + + + + {status.isUp ? "Operational" : "Down"} +
-
- 95 ? "bg-emerald-500" : status.uptime > 80 ? "bg-amber-500" : "bg-red-500"}`} - /> + + {/* Uptime */} +
+
+ Uptime + {status.uptime}% +
+
-
- {/* Response Time */} -
- Response Time - - {status.avgResponseTime > 0 ? `${status.avgResponseTime}ms` : "—"} - -
+ {/* Response Time */} +
+ Response Time + + {status.avgResponseTime > 0 ? `${status.avgResponseTime}ms` : "—"} + +
- {/* Sparkline */} -
- - - - - -
+ {/* Sparkline */} +
+ + + + + +
- {/* Last Checked */} -
- - - {status.latest ? new Date(status.latest.timestamp).toLocaleTimeString() : "Never"} - - - {/* Hover Actions */} - - {isHovered && ( - - - - - - )} - -
-
+ + + + + )} + +
+ + ); }; @@ -310,7 +364,6 @@ export default function Dashboard() { const [apps, setApps] = useState([]); const [status, setStatus] = useState([]); const [loading, setLoading] = useState(true); - const [sidebarCollapsed, setSidebarCollapsed] = useState(false); const [activeNav, setActiveNav] = useState("overview"); const [showAddModal, setShowAddModal] = useState(false); const [newApp, setNewApp] = useState>({ @@ -320,14 +373,6 @@ export default function Dashboard() { enabled: true, }); - const navItems: NavItem[] = [ - { id: "overview", label: "Overview", icon: }, - { id: "services", label: "Monitored Services", icon: }, - { id: "incidents", label: "Incidents", icon: }, - { id: "history", label: "History / Logs", icon: }, - { id: "settings", label: "Settings", icon: }, - ]; - useEffect(() => { fetchData(); const interval = setInterval(fetchData, 30000); @@ -398,7 +443,7 @@ export default function Dashboard() { const allUp = stats.online === stats.total && stats.total > 0; - // Generate sparkline data for metrics + // Sparkline data for KPI cards const servicesData = generateSparklineData(20, true); const uptimeData = generateSparklineData(20, true); const responseData = generateSparklineData(20, true).map(d => ({ ...d, value: d.value * 2 })); @@ -428,118 +473,98 @@ export default function Dashboard() { return (
- {/* Collapsible Sidebar */} - - {/* Logo Area */} -
-
- + {/* Fixed Sidebar - 280px */} + {/* Main Content */} -
+
{/* Top Navbar */} -
+
{/* Global Status Banner */} -
-
- - - - - - {allUp ? "All Systems Operational" : `${stats.offline} Service${stats.offline > 1 ? 's' : ''} Down`} - - • Updated {new Date().toLocaleTimeString()} -
+
+ + + + + + {allUp ? "All Systems Operational" : `${stats.offline} Service${stats.offline > 1 ? 's' : ''} Down`} + + • Updated {new Date().toLocaleTimeString()}
- {/* Right Side Actions */} + {/* Right Actions */}
- {/* Search */}
- {/* Add Monitor */} - + - {/* Refresh */} - + - {/* Notifications */} - + - {/* Avatar */}
MB
@@ -547,92 +572,87 @@ export default function Dashboard() {
{/* Dashboard Content */} -
- {/* KPI Row */} -
- - - - -
- - {/* Services Grid */} -
-
-

Monitored Services

- {stats.total} services +
+
+ {/* KPI Row - 4 cards */} +
+ + + +
- - - - {apps.map((app) => { - const appStatus = getAppStatus(app.id); - return ( - deleteApp(app.id)} - /> - ); - })} - - - {apps.length === 0 && ( - +
+

Monitored Services

+ {stats.total} services +
+ + -
- -
-

No monitors yet

-

Start monitoring your services

- + + {apps.map((app) => { + const appStatus = getAppStatus(app.id); + return ( + deleteApp(app.id)} + /> + ); + })} +
- )} + + {apps.length === 0 && ( + +
+ +
+

No monitors yet

+

Start monitoring your services

+ +
+ )} +
@@ -662,7 +682,7 @@ export default function Dashboard() { type="text" value={newApp.name} onChange={(e) => setNewApp({ ...newApp, name: e.target.value })} - className="w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none transition-colors" + className="w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none" placeholder="My Service" required /> @@ -675,7 +695,7 @@ export default function Dashboard() { type="url" value={newApp.url} onChange={(e) => setNewApp({ ...newApp, url: e.target.value })} - className="w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none transition-colors" + className="w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none" placeholder="http://localhost:3000" required /> @@ -686,26 +706,24 @@ export default function Dashboard() { type="number" value={newApp.port} onChange={(e) => setNewApp({ ...newApp, port: parseInt(e.target.value) })} - className="w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none transition-colors" + className="w-full bg-slate-800/50 border border-slate-700 rounded-lg px-4 py-2.5 text-white placeholder-slate-500 focus:border-emerald-500/50 focus:outline-none" required />
- - + +
@@ -714,4 +732,4 @@ export default function Dashboard() {
); -} \ No newline at end of file +}