diff --git a/.gitignore b/.gitignore index 42c8d8f5..f5e1680e 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,8 @@ _site .jekyll-metadata vendor **/.DS_Store + +demo/node_modules/ +demo/.yarn/ +demo/.yarnrc.yml +demo/.pnp.cjs diff --git a/README.md b/README.md index ca308590..1b2033f7 100644 --- a/README.md +++ b/README.md @@ -30,3 +30,9 @@ to install project dependencies. - `bundle exec jekyll serve --watch --livereload --open-url --future --config _config.yml,_config-dev.yml` This will start a local development server, open your default browser pointing to the local build on that server, with the server watching for project filesystem changes and hot-reloading the browser when changes are detected and rebuilt. + +### Updating Demo + +```bash +$ bash build-demo.bash cryostat-v2.3 +``` diff --git a/_includes/header.html b/_includes/header.html index cee4dd22..501306d2 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -21,6 +21,7 @@
diff --git a/_layouts/demo.html b/_layouts/demo.html new file mode 100644 index 00000000..1a2f1ba0 --- /dev/null +++ b/_layouts/demo.html @@ -0,0 +1,20 @@ + + + + {%- include head.html -%} + + + + {%- include header.html -%} + +".concat(detail, "
"));\n });\n }\n else {\n _this.notifications.danger(err.name, err.message);\n }\n },\n }));\n };\n ReportService.prototype.reportJson = function (recording, connectUrl) {\n var _this = this;\n if (!recording.reportUrl) {\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_1__/* .throwError */ ._)(function () { return new Error(\'No recording report URL\'); });\n }\n return this.login.getHeaders().pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__/* .concatMap */ .b)(function (headers) {\n headers.append(\'Accept\', \'application/json\');\n return (0,rxjs_fetch__WEBPACK_IMPORTED_MODULE_4__/* .fromFetch */ .U)(recording.reportUrl, {\n method: \'GET\',\n mode: \'cors\',\n credentials: \'include\',\n headers: headers,\n });\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__/* .concatMap */ .b)(function (resp) {\n if (resp.ok) {\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_5__/* .from */ .D)(resp\n .text()\n .then(JSON.parse)\n .then(function (obj) { return Object.values(obj); }));\n }\n else {\n var ge = {\n name: "Report Failure (".concat(recording.name, ")"),\n message: resp.statusText,\n messageDetail: (0,rxjs__WEBPACK_IMPORTED_MODULE_5__/* .from */ .D)(resp.text()),\n status: resp.status,\n };\n throw ge;\n }\n }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_6__/* .tap */ .b)({\n next: function (report) {\n if ((0,_Api_service__WEBPACK_IMPORTED_MODULE_0__/* .isActiveRecording */ .EL)(recording)) {\n try {\n sessionStorage.setItem(_this.analysisKey(connectUrl), JSON.stringify(report));\n sessionStorage.setItem(_this.analysisKeyTimestamp(connectUrl), Date.now().toString());\n }\n catch (err) {\n if (isQuotaExceededError(err)) {\n _this.notifications.warning(\'Report Caching Failed\', err.message);\n _this.delete(recording);\n }\n else {\n // see https://mmazzarolo.com/blog/2022-06-25-local-storage-status/\n _this.notifications.warning(\'Report Caching Failed\', \'localStorage is not available\');\n _this.delete(recording);\n }\n }\n }\n },\n error: function (err) {\n if (isGenerationError(err) && err.status >= 500) {\n err.messageDetail.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_7__/* .first */ .P)()).subscribe(function (detail) {\n _this.notifications.warning("Report generation failure: ".concat(detail));\n _this.deleteCachedAnalysisReport(connectUrl);\n });\n }\n else {\n _this.notifications.danger(err.name, err.message);\n }\n },\n }));\n };\n ReportService.prototype.getCachedAnalysisReport = function (connectUrl) {\n var stored = sessionStorage.getItem(this.analysisKey(connectUrl));\n var storedTimestamp = Number(sessionStorage.getItem(this.analysisKeyTimestamp(connectUrl)));\n if (stored) {\n return {\n report: JSON.parse(stored),\n timestamp: storedTimestamp || 0,\n };\n }\n return {\n report: [],\n timestamp: 0,\n };\n };\n ReportService.prototype.delete = function (recording) {\n sessionStorage.removeItem(this.key(recording));\n };\n ReportService.prototype.deleteCachedAnalysisReport = function (connectUrl) {\n sessionStorage.removeItem(this.analysisKey(connectUrl));\n sessionStorage.removeItem(this.analysisKeyTimestamp(connectUrl));\n };\n ReportService.prototype.key = function (recording) {\n return js_base64__WEBPACK_IMPORTED_MODULE_8__/* .Base64.encode */ .DS.encode("report.".concat(recording.reportUrl));\n };\n ReportService.prototype.analysisKey = function (connectUrl) {\n return js_base64__WEBPACK_IMPORTED_MODULE_8__/* .Base64.encode */ .DS.encode("".concat(connectUrl, ".latestReport"));\n };\n ReportService.prototype.analysisKeyTimestamp = function (connectUrl) {\n return js_base64__WEBPACK_IMPORTED_MODULE_8__/* .Base64.encode */ .DS.encode("".concat(connectUrl, ".latestReportTimestamp"));\n };\n return ReportService;\n}());\n\nvar isGenerationError = function (err) {\n if (err.name === undefined) {\n return false;\n }\n if (err.message === undefined) {\n return false;\n }\n if (err.messageDetail === undefined) {\n return false;\n }\n if (err.status === undefined) {\n return false;\n }\n return true;\n};\nvar isQuotaExceededError = function (err) {\n return (err instanceof DOMException &&\n (err.name === \'QuotaExceededError\' ||\n // Firefox\n err.name === \'NS_ERROR_DOM_QUOTA_REACHED\'));\n};\nvar AutomatedAnalysisScore;\n(function (AutomatedAnalysisScore) {\n AutomatedAnalysisScore[AutomatedAnalysisScore["NA_SCORE"] = -1] = "NA_SCORE";\n AutomatedAnalysisScore[AutomatedAnalysisScore["ORANGE_SCORE_THRESHOLD"] = 25] = "ORANGE_SCORE_THRESHOLD";\n AutomatedAnalysisScore[AutomatedAnalysisScore["RED_SCORE_THRESHOLD"] = 75] = "RED_SCORE_THRESHOLD";\n})(AutomatedAnalysisScore || (AutomatedAnalysisScore = {}));\nvar FAILED_REPORT_MESSAGE = \'Failed to load the report from recording because the requested entity is too large.\';\nvar NO_RECORDINGS_MESSAGE = \'No active or archived recordings available. Create a new recording for analysis.\';\nvar RECORDING_FAILURE_MESSAGE = \'Failed to start recording for analysis.\';\nvar TEMPLATE_UNSUPPORTED_MESSAGE = \'The template type used in this recording is not supported on this JVM.\';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDc2MjcuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNDbUM7QUFDcUI7QUFDakI7QUFDZ0I7QUFDc0I7QUFHN0U7SUFDRSx1QkFBb0IsS0FBbUIsRUFBVSxhQUE0QjtRQUF6RCxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFBRyxDQUFDO0lBRWpGLDhCQUFNLEdBQU4sVUFBTyxTQUFvQjtRQUEzQixpQkE2REM7UUE1REMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7WUFDeEIsT0FBTyx5REFBVSxDQUFDLGNBQU0sV0FBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsRUFBcEMsQ0FBb0MsQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsSUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxNQUFNLEVBQUU7WUFDVixPQUFPLHdDQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbkI7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUNqQyxrRUFBUyxDQUFDLFVBQUMsT0FBTztZQUNoQixxRUFBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7Z0JBQzdCLE1BQU0sRUFBRSxLQUFLO2dCQUNiLElBQUksRUFBRSxNQUFNO2dCQUNaLFdBQVcsRUFBRSxTQUFTO2dCQUN0QixPQUFPO2FBQ1IsQ0FBQztRQUxGLENBS0UsQ0FDSCxFQUNELGtFQUFTLENBQUMsVUFBQyxJQUFJO1lBQ2IsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFO2dCQUNYLE9BQU8sbURBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUMxQjtpQkFBTTtnQkFDTCxJQUFNLEVBQUUsR0FBb0I7b0JBQzFCLElBQUksRUFBRSwwQkFBbUIsU0FBUyxDQUFDLElBQUksTUFBRztvQkFDMUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVO29CQUN4QixhQUFhLEVBQUUsbURBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ2hDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtpQkFDcEIsQ0FBQztnQkFDRixNQUFNLEVBQUUsQ0FBQzthQUNWO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsNERBQUcsQ0FBQztZQUNGLElBQUksRUFBRSxVQUFDLE1BQU07Z0JBQ1gsSUFBTSxVQUFVLEdBQUcsQ0FBQyx5RUFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDakQsSUFBTSxlQUFlLEdBQUcsQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDLEtBQUssS0FBSyxrRkFBc0IsQ0FBQztnQkFDbEYsSUFBSSxVQUFVLElBQUksZUFBZSxFQUFFO29CQUNqQyxJQUFJO3dCQUNGLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztxQkFDckQ7b0JBQUMsT0FBTyxHQUFHLEVBQUU7d0JBQ1osSUFBSSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsRUFBRTs0QkFDN0IsS0FBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDOzRCQUNqRSxLQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3lCQUN4Qjs2QkFBTTs0QkFDTCxtRUFBbUU7NEJBQ25FLEtBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLCtCQUErQixDQUFDLENBQUM7NEJBQ3JGLEtBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7eUJBQ3hCO3FCQUNGO2lCQUNGO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxVQUFDLEdBQUc7Z0JBQ1QsSUFBSSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBRTtvQkFDL0MsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsOERBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQUMsTUFBTTt3QkFDL0MsS0FBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMscUNBQThCLE1BQU0sQ0FBRSxDQUFDLENBQUM7d0JBQ25FLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxhQUFNLE1BQU0sU0FBTSxDQUFDLENBQUM7b0JBQ2xFLENBQUMsQ0FBQyxDQUFDO2lCQUNKO3FCQUFNO29CQUNMLEtBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNsRDtZQUNILENBQUM7U0FDRixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxrQ0FBVSxHQUFWLFVBQVcsU0FBb0IsRUFBRSxVQUFrQjtRQUFuRCxpQkE4REM7UUE3REMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7WUFDeEIsT0FBTyx5REFBVSxDQUFDLGNBQU0sV0FBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsRUFBcEMsQ0FBb0MsQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FDakMsa0VBQVMsQ0FBQyxVQUFDLE9BQU87WUFDaEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztZQUM3QyxPQUFPLDhEQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRTtnQkFDcEMsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsSUFBSSxFQUFFLE1BQU07Z0JBQ1osV0FBVyxFQUFFLFNBQVM7Z0JBQ3RCLE9BQU87YUFDUixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsRUFDRixrRUFBUyxDQUFDLFVBQUMsSUFBSTtZQUNiLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRTtnQkFDWCxPQUFPLG1EQUFJLENBQ1QsSUFBSTtxQkFDRCxJQUFJLEVBQUU7cUJBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7cUJBQ2hCLElBQUksQ0FBQyxVQUFDLEdBQUcsSUFBSyxhQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBcUIsRUFBdEMsQ0FBc0MsQ0FBQyxDQUN6RCxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBTSxFQUFFLEdBQW9CO29CQUMxQixJQUFJLEVBQUUsMEJBQW1CLFNBQVMsQ0FBQyxJQUFJLE1BQUc7b0JBQzFDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVTtvQkFDeEIsYUFBYSxFQUFFLG1EQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNoQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07aUJBQ3BCLENBQUM7Z0JBQ0YsTUFBTSxFQUFFLENBQUM7YUFDVjtRQUNILENBQUMsQ0FBQyxFQUNGLDREQUFHLENBQUM7WUFDRixJQUFJLEVBQUUsVUFBQyxNQUFNO2dCQUNYLElBQUkseUVBQWlCLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQ2hDLElBQUk7d0JBQ0YsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzt3QkFDN0UsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7cUJBQ3RGO29CQUFDLE9BQU8sR0FBRyxFQUFFO3dCQUNaLElBQUksb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUU7NEJBQzdCLEtBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFDakUsS0FBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQzt5QkFDeEI7NkJBQU07NEJBQ0wsbUVBQW1FOzRCQUNuRSxLQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDOzRCQUNyRixLQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3lCQUN4QjtxQkFDRjtpQkFDRjtZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsVUFBQyxHQUFHO2dCQUNULElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7b0JBQy9DLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLDhEQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFDLE1BQU07d0JBQy9DLEtBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLHFDQUE4QixNQUFNLENBQUUsQ0FBQyxDQUFDO3dCQUNuRSxLQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzlDLENBQUMsQ0FBQyxDQUFDO2lCQUNKO3FCQUFNO29CQUNMLEtBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNsRDtZQUNILENBQUM7U0FDRixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCwrQ0FBdUIsR0FBdkIsVUFBd0IsVUFBa0I7UUFDeEMsSUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsSUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RixJQUFJLE1BQU0sRUFBRTtZQUNWLE9BQU87Z0JBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUMxQixTQUFTLEVBQUUsZUFBZSxJQUFJLENBQUM7YUFDaEMsQ0FBQztTQUNIO1FBQ0QsT0FBTztZQUNMLE1BQU0sRUFBRSxFQUFFO1lBQ1YsU0FBUyxFQUFFLENBQUM7U0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELDhCQUFNLEdBQU4sVUFBTyxTQUFvQjtRQUN6QixjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsa0RBQTBCLEdBQTFCLFVBQTJCLFVBQWtCO1FBQzNDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3hELGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVPLDJCQUFHLEdBQVgsVUFBWSxTQUFvQjtRQUM5QixPQUFPLHFFQUFhLENBQUMsaUJBQVUsU0FBUyxDQUFDLFNBQVMsQ0FBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVPLG1DQUFXLEdBQW5CLFVBQW9CLFVBQWtCO1FBQ3BDLE9BQU8scUVBQWEsQ0FBQyxVQUFHLFVBQVUsa0JBQWUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTyw0Q0FBb0IsR0FBNUIsVUFBNkIsVUFBa0I7UUFDN0MsT0FBTyxxRUFBYSxDQUFDLFVBQUcsVUFBVSwyQkFBd0IsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDSCxvQkFBQztBQUFELENBQUM7O0FBZU0sSUFBTSxpQkFBaUIsR0FBRyxVQUFDLEdBQVk7SUFDNUMsSUFBSyxHQUF1QixDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7UUFDL0MsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUssR0FBdUIsQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO1FBQ2xELE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxJQUFLLEdBQXVCLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRTtRQUN4RCxPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsSUFBSyxHQUF1QixDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7UUFDakQsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBRUssSUFBTSxvQkFBb0IsR0FBRyxVQUFDLEdBQVk7SUFDL0MsT0FBTyxDQUNMLEdBQUcsWUFBWSxZQUFZO1FBQzNCLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxvQkFBb0I7WUFDaEMsVUFBVTtZQUNWLEdBQUcsQ0FBQyxJQUFJLEtBQUssNEJBQTRCLENBQUMsQ0FDN0MsQ0FBQztBQUNKLENBQUMsQ0FBQztBQVNGLElBQVksc0JBSVg7QUFKRCxXQUFZLHNCQUFzQjtJQUNoQyw0RUFBYTtJQUNiLHdHQUEyQjtJQUMzQixrR0FBd0I7QUFDMUIsQ0FBQyxFQUpXLHNCQUFzQixLQUF0QixzQkFBc0IsUUFJakM7QUFFTSxJQUFNLHFCQUFxQixHQUNoQyxxRkFBcUYsQ0FBQztBQUNqRixJQUFNLHFCQUFxQixHQUFHLGtGQUFrRixDQUFDO0FBQ2pILElBQU0seUJBQXlCLEdBQUcseUNBQXlDLENBQUM7QUFDNUUsSUFBTSw0QkFBNEIsR0FBRyx3RUFBd0UsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL2NyeW9zdGF0LXdlYi8uL3NyYy9hcHAvU2hhcmVkL1NlcnZpY2VzL1JlcG9ydC5zZXJ2aWNlLnRzeD82NGZmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgVGhlIENyeW9zdGF0IEF1dGhvcnNcbiAqXG4gKiBUaGUgVW5pdmVyc2FsIFBlcm1pc3NpdmUgTGljZW5zZSAoVVBMKSwgVmVyc2lvbiAxLjBcbiAqXG4gKiBTdWJqZWN0IHRvIHRoZSBjb25kaXRpb24gc2V0IGZvcnRoIGJlbG93LCBwZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkIHRvIGFueVxuICogcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSwgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGFuZC9vciBkYXRhXG4gKiAoY29sbGVjdGl2ZWx5IHRoZSBcIlNvZnR3YXJlXCIpLCBmcmVlIG9mIGNoYXJnZSBhbmQgdW5kZXIgYW55IGFuZCBhbGwgY29weXJpZ2h0XG4gKiByaWdodHMgaW4gdGhlIFNvZnR3YXJlLCBhbmQgYW55IGFuZCBhbGwgcGF0ZW50IHJpZ2h0cyBvd25lZCBvciBmcmVlbHlcbiAqIGxpY2Vuc2FibGUgYnkgZWFjaCBsaWNlbnNvciBoZXJldW5kZXIgY292ZXJpbmcgZWl0aGVyIChpKSB0aGUgdW5tb2RpZmllZFxuICogU29mdHdhcmUgYXMgY29udHJpYnV0ZWQgdG8gb3IgcHJvdmlkZWQgYnkgc3VjaCBsaWNlbnNvciwgb3IgKGlpKSB0aGUgTGFyZ2VyXG4gKiBXb3JrcyAoYXMgZGVmaW5lZCBiZWxvdyksIHRvIGRlYWwgaW4gYm90aFxuICpcbiAqIChhKSB0aGUgU29mdHdhcmUsIGFuZFxuICogKGIpIGFueSBwaWVjZSBvZiBzb2Z0d2FyZSBhbmQvb3IgaGFyZHdhcmUgbGlzdGVkIGluIHRoZSBscmdyd3Jrcy50eHQgZmlsZSBpZlxuICogb25lIGlzIGluY2x1ZGVkIHdpdGggdGhlIFNvZnR3YXJlIChlYWNoIGEgXCJMYXJnZXIgV29ya1wiIHRvIHdoaWNoIHRoZSBTb2Z0d2FyZVxuICogaXMgY29udHJpYnV0ZWQgYnkgc3VjaCBsaWNlbnNvcnMpLFxuICpcbiAqIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byBjb3B5LCBjcmVhdGVcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YsIGRpc3BsYXksIHBlcmZvcm0sIGFuZCBkaXN0cmlidXRlIHRoZSBTb2Z0d2FyZSBhbmQgbWFrZSxcbiAqIHVzZSwgc2VsbCwgb2ZmZXIgZm9yIHNhbGUsIGltcG9ydCwgZXhwb3J0LCBoYXZlIG1hZGUsIGFuZCBoYXZlIHNvbGQgdGhlXG4gKiBTb2Z0d2FyZSBhbmQgdGhlIExhcmdlciBXb3JrKHMpLCBhbmQgdG8gc3VibGljZW5zZSB0aGUgZm9yZWdvaW5nIHJpZ2h0cyBvblxuICogZWl0aGVyIHRoZXNlIG9yIG90aGVyIHRlcm1zLlxuICpcbiAqIFRoaXMgbGljZW5zZSBpcyBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uOlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIGVpdGhlciB0aGlzIGNvbXBsZXRlIHBlcm1pc3Npb24gbm90aWNlIG9yIGF0XG4gKiBhIG1pbmltdW0gYSByZWZlcmVuY2UgdG8gdGhlIFVQTCBtdXN0IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3JcbiAqIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuaW1wb3J0IHsgTm90aWZpY2F0aW9ucyB9IGZyb20gJ0BhcHAvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zJztcbmltcG9ydCB7IEJhc2U2NCB9IGZyb20gJ2pzLWJhc2U2NCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZnJvbUZldGNoIH0gZnJvbSAncnhqcy9mZXRjaCc7XG5pbXBvcnQgeyBjb25jYXRNYXAsIGZpcnN0LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0FjdGl2ZVJlY29yZGluZywgUmVjb3JkaW5nU3RhdGUsIFJlY29yZGluZyB9IGZyb20gJy4vQXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9Mb2dpbi5zZXJ2aWNlJztcblxuZXhwb3J0IGNsYXNzIFJlcG9ydFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvZ2luOiBMb2dpblNlcnZpY2UsIHByaXZhdGUgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9ucykge31cblxuICByZXBvcnQocmVjb3JkaW5nOiBSZWNvcmRpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICghcmVjb3JkaW5nLnJlcG9ydFVybCkge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdObyByZWNvcmRpbmcgcmVwb3J0IFVSTCcpKTtcbiAgICB9XG4gICAgY29uc3Qgc3RvcmVkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmtleShyZWNvcmRpbmcpKTtcbiAgICBpZiAoc3RvcmVkKSB7XG4gICAgICByZXR1cm4gb2Yoc3RvcmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubG9naW4uZ2V0SGVhZGVycygpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGhlYWRlcnMpID0+XG4gICAgICAgIGZyb21GZXRjaChyZWNvcmRpbmcucmVwb3J0VXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICBtb2RlOiAnY29ycycsXG4gICAgICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyxcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIGNvbmNhdE1hcCgocmVzcCkgPT4ge1xuICAgICAgICBpZiAocmVzcC5vaykge1xuICAgICAgICAgIHJldHVybiBmcm9tKHJlc3AudGV4dCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBnZTogR2VuZXJhdGlvbkVycm9yID0ge1xuICAgICAgICAgICAgbmFtZTogYFJlcG9ydCBGYWlsdXJlICgke3JlY29yZGluZy5uYW1lfSlgLFxuICAgICAgICAgICAgbWVzc2FnZTogcmVzcC5zdGF0dXNUZXh0LFxuICAgICAgICAgICAgbWVzc2FnZURldGFpbDogZnJvbShyZXNwLnRleHQoKSksXG4gICAgICAgICAgICBzdGF0dXM6IHJlc3Auc3RhdHVzLFxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhyb3cgZ2U7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFwKHtcbiAgICAgICAgbmV4dDogKHJlcG9ydCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzQXJjaGl2ZWQgPSAhaXNBY3RpdmVSZWNvcmRpbmcocmVjb3JkaW5nKTtcbiAgICAgICAgICBjb25zdCBpc0FjdGl2ZVN0b3BwZWQgPSAhaXNBcmNoaXZlZCAmJiByZWNvcmRpbmcuc3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLlNUT1BQRUQ7XG4gICAgICAgICAgaWYgKGlzQXJjaGl2ZWQgfHwgaXNBY3RpdmVTdG9wcGVkKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMua2V5KHJlY29yZGluZyksIHJlcG9ydCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgaWYgKGlzUXVvdGFFeGNlZWRlZEVycm9yKGVycikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMud2FybmluZygnUmVwb3J0IENhY2hpbmcgRmFpbGVkJywgZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlKHJlY29yZGluZyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gc2VlIGh0dHBzOi8vbW1henphcm9sby5jb20vYmxvZy8yMDIyLTA2LTI1LWxvY2FsLXN0b3JhZ2Utc3RhdHVzL1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy53YXJuaW5nKCdSZXBvcnQgQ2FjaGluZyBGYWlsZWQnLCAnbG9jYWxTdG9yYWdlIGlzIG5vdCBhdmFpbGFibGUnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZShyZWNvcmRpbmcpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIGlmIChpc0dlbmVyYXRpb25FcnJvcihlcnIpICYmIGVyci5zdGF0dXMgPj0gNTAwKSB7XG4gICAgICAgICAgICBlcnIubWVzc2FnZURldGFpbC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoZGV0YWlsKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy53YXJuaW5nKGBSZXBvcnQgZ2VuZXJhdGlvbiBmYWlsdXJlOiAke2RldGFpbH1gKTtcbiAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmtleShyZWNvcmRpbmcpLCBgPHA+JHtkZXRhaWx9PC9wPmApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5kYW5nZXIoZXJyLm5hbWUsIGVyci5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZXBvcnRKc29uKHJlY29yZGluZzogUmVjb3JkaW5nLCBjb25uZWN0VXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFJ1bGVFdmFsdWF0aW9uW10+IHtcbiAgICBpZiAoIXJlY29yZGluZy5yZXBvcnRVcmwpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignTm8gcmVjb3JkaW5nIHJlcG9ydCBVUkwnKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmxvZ2luLmdldEhlYWRlcnMoKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChoZWFkZXJzKSA9PiB7XG4gICAgICAgIGhlYWRlcnMuYXBwZW5kKCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgICAgICByZXR1cm4gZnJvbUZldGNoKHJlY29yZGluZy5yZXBvcnRVcmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgIG1vZGU6ICdjb3JzJyxcbiAgICAgICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgICBjb25jYXRNYXAoKHJlc3ApID0+IHtcbiAgICAgICAgaWYgKHJlc3Aub2spIHtcbiAgICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgIHJlc3BcbiAgICAgICAgICAgICAgLnRleHQoKVxuICAgICAgICAgICAgICAudGhlbihKU09OLnBhcnNlKVxuICAgICAgICAgICAgICAudGhlbigob2JqKSA9PiBPYmplY3QudmFsdWVzKG9iaikgYXMgUnVsZUV2YWx1YXRpb25bXSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGdlOiBHZW5lcmF0aW9uRXJyb3IgPSB7XG4gICAgICAgICAgICBuYW1lOiBgUmVwb3J0IEZhaWx1cmUgKCR7cmVjb3JkaW5nLm5hbWV9KWAsXG4gICAgICAgICAgICBtZXNzYWdlOiByZXNwLnN0YXR1c1RleHQsXG4gICAgICAgICAgICBtZXNzYWdlRGV0YWlsOiBmcm9tKHJlc3AudGV4dCgpKSxcbiAgICAgICAgICAgIHN0YXR1czogcmVzcC5zdGF0dXMsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aHJvdyBnZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YXAoe1xuICAgICAgICBuZXh0OiAocmVwb3J0KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQWN0aXZlUmVjb3JkaW5nKHJlY29yZGluZykpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5hbmFseXNpc0tleShjb25uZWN0VXJsKSwgSlNPTi5zdHJpbmdpZnkocmVwb3J0KSk7XG4gICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5hbmFseXNpc0tleVRpbWVzdGFtcChjb25uZWN0VXJsKSwgRGF0ZS5ub3coKS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICBpZiAoaXNRdW90YUV4Y2VlZGVkRXJyb3IoZXJyKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy53YXJuaW5nKCdSZXBvcnQgQ2FjaGluZyBGYWlsZWQnLCBlcnIubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWxldGUocmVjb3JkaW5nKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBzZWUgaHR0cHM6Ly9tbWF6emFyb2xvLmNvbS9ibG9nLzIwMjItMDYtMjUtbG9jYWwtc3RvcmFnZS1zdGF0dXMvXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLndhcm5pbmcoJ1JlcG9ydCBDYWNoaW5nIEZhaWxlZCcsICdsb2NhbFN0b3JhZ2UgaXMgbm90IGF2YWlsYWJsZScpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlKHJlY29yZGluZyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgaWYgKGlzR2VuZXJhdGlvbkVycm9yKGVycikgJiYgZXJyLnN0YXR1cyA+PSA1MDApIHtcbiAgICAgICAgICAgIGVyci5tZXNzYWdlRGV0YWlsLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChkZXRhaWwpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLndhcm5pbmcoYFJlcG9ydCBnZW5lcmF0aW9uIGZhaWx1cmU6ICR7ZGV0YWlsfWApO1xuICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUNhY2hlZEFuYWx5c2lzUmVwb3J0KGNvbm5lY3RVcmwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5kYW5nZXIoZXJyLm5hbWUsIGVyci5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXRDYWNoZWRBbmFseXNpc1JlcG9ydChjb25uZWN0VXJsOiBzdHJpbmcpOiBDYWNoZWRSZXBvcnRWYWx1ZSB7XG4gICAgY29uc3Qgc3RvcmVkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmFuYWx5c2lzS2V5KGNvbm5lY3RVcmwpKTtcbiAgICBjb25zdCBzdG9yZWRUaW1lc3RhbXAgPSBOdW1iZXIoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmFuYWx5c2lzS2V5VGltZXN0YW1wKGNvbm5lY3RVcmwpKSk7XG4gICAgaWYgKHN0b3JlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVwb3J0OiBKU09OLnBhcnNlKHN0b3JlZCksXG4gICAgICAgIHRpbWVzdGFtcDogc3RvcmVkVGltZXN0YW1wIHx8IDAsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcmVwb3J0OiBbXSxcbiAgICAgIHRpbWVzdGFtcDogMCxcbiAgICB9O1xuICB9XG5cbiAgZGVsZXRlKHJlY29yZGluZzogUmVjb3JkaW5nKTogdm9pZCB7XG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLmtleShyZWNvcmRpbmcpKTtcbiAgfVxuXG4gIGRlbGV0ZUNhY2hlZEFuYWx5c2lzUmVwb3J0KGNvbm5lY3RVcmw6IHN0cmluZyk6IHZvaWQge1xuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5hbmFseXNpc0tleShjb25uZWN0VXJsKSk7XG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLmFuYWx5c2lzS2V5VGltZXN0YW1wKGNvbm5lY3RVcmwpKTtcbiAgfVxuXG4gIHByaXZhdGUga2V5KHJlY29yZGluZzogUmVjb3JkaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQmFzZTY0LmVuY29kZShgcmVwb3J0LiR7cmVjb3JkaW5nLnJlcG9ydFVybH1gKTtcbiAgfVxuXG4gIHByaXZhdGUgYW5hbHlzaXNLZXkoY29ubmVjdFVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQmFzZTY0LmVuY29kZShgJHtjb25uZWN0VXJsfS5sYXRlc3RSZXBvcnRgKTtcbiAgfVxuXG4gIHByaXZhdGUgYW5hbHlzaXNLZXlUaW1lc3RhbXAoY29ubmVjdFVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQmFzZTY0LmVuY29kZShgJHtjb25uZWN0VXJsfS5sYXRlc3RSZXBvcnRUaW1lc3RhbXBgKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlZFJlcG9ydFZhbHVlIHtcbiAgcmVwb3J0OiBSdWxlRXZhbHVhdGlvbltdO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbn1cblxuLy8gW3RvcGljLCB7IHJ1bGVOYW1lLCBzY29yZSwgZGVzY3JpcHRpb24sIC4uLiB9fV1cbmV4cG9ydCB0eXBlIENhdGVnb3JpemVkUnVsZUV2YWx1YXRpb25zID0gW3N0cmluZywgUnVsZUV2YWx1YXRpb25bXV07XG5cbmV4cG9ydCB0eXBlIEdlbmVyYXRpb25FcnJvciA9IEVycm9yICYge1xuICBzdGF0dXM6IG51bWJlcjtcbiAgbWVzc2FnZURldGFpbDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzR2VuZXJhdGlvbkVycm9yID0gKGVycjogdW5rbm93bik6IGVyciBpcyBHZW5lcmF0aW9uRXJyb3IgPT4ge1xuICBpZiAoKGVyciBhcyBHZW5lcmF0aW9uRXJyb3IpLm5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoKGVyciBhcyBHZW5lcmF0aW9uRXJyb3IpLm1lc3NhZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoKGVyciBhcyBHZW5lcmF0aW9uRXJyb3IpLm1lc3NhZ2VEZXRhaWwgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoKGVyciBhcyBHZW5lcmF0aW9uRXJyb3IpLnN0YXR1cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUXVvdGFFeGNlZWRlZEVycm9yID0gKGVycjogdW5rbm93bik6IGVyciBpcyBET01FeGNlcHRpb24gPT4ge1xuICByZXR1cm4gKFxuICAgIGVyciBpbnN0YW5jZW9mIERPTUV4Y2VwdGlvbiAmJlxuICAgIChlcnIubmFtZSA9PT0gJ1F1b3RhRXhjZWVkZWRFcnJvcicgfHxcbiAgICAgIC8vIEZpcmVmb3hcbiAgICAgIGVyci5uYW1lID09PSAnTlNfRVJST1JfRE9NX1FVT1RBX1JFQUNIRUQnKVxuICApO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBSdWxlRXZhbHVhdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgc2NvcmU6IG51bWJlcjtcbiAgdG9waWM6IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gQXV0b21hdGVkQW5hbHlzaXNTY29yZSB7XG4gIE5BX1NDT1JFID0gLTEsXG4gIE9SQU5HRV9TQ09SRV9USFJFU0hPTEQgPSAyNSxcbiAgUkVEX1NDT1JFX1RIUkVTSE9MRCA9IDc1LFxufVxuXG5leHBvcnQgY29uc3QgRkFJTEVEX1JFUE9SVF9NRVNTQUdFID1cbiAgJ0ZhaWxlZCB0byBsb2FkIHRoZSByZXBvcnQgZnJvbSByZWNvcmRpbmcgYmVjYXVzZSB0aGUgcmVxdWVzdGVkIGVudGl0eSBpcyB0b28gbGFyZ2UuJztcbmV4cG9ydCBjb25zdCBOT19SRUNPUkRJTkdTX01FU1NBR0UgPSAnTm8gYWN0aXZlIG9yIGFyY2hpdmVkIHJlY29yZGluZ3MgYXZhaWxhYmxlLiBDcmVhdGUgYSBuZXcgcmVjb3JkaW5nIGZvciBhbmFseXNpcy4nO1xuZXhwb3J0IGNvbnN0IFJFQ09SRElOR19GQUlMVVJFX01FU1NBR0UgPSAnRmFpbGVkIHRvIHN0YXJ0IHJlY29yZGluZyBmb3IgYW5hbHlzaXMuJztcbmV4cG9ydCBjb25zdCBURU1QTEFURV9VTlNVUFBPUlRFRF9NRVNTQUdFID0gJ1RoZSB0ZW1wbGF0ZSB0eXBlIHVzZWQgaW4gdGhpcyByZWNvcmRpbmcgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIEpWTS4nO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///47627\n')},35881:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n "o": () => (/* binding */ ServiceContext),\n "J": () => (/* binding */ defaultServices)\n});\n\n// EXTERNAL MODULE: ./src/app/Notifications/Notifications.tsx\nvar Notifications = __webpack_require__(1570);\n// EXTERNAL MODULE: ./node_modules/react/index.js\nvar react = __webpack_require__(67294);\n// EXTERNAL MODULE: ./src/app/Shared/Services/Api.service.tsx\nvar Api_service = __webpack_require__(68038);\n// EXTERNAL MODULE: ./src/app/Settings/CredentialsStorage.tsx\nvar CredentialsStorage = __webpack_require__(74841);\n// EXTERNAL MODULE: ./src/app/utils/LocalStorage.ts\nvar LocalStorage = __webpack_require__(74687);\n// EXTERNAL MODULE: ./node_modules/rxjs/dist/esm5/internal/observable/of.js\nvar of = __webpack_require__(32817);\n;// CONCATENATED MODULE: ./src/app/Shared/Services/AuthCredentials.service.tsx\n/*\n * Copyright The Cryostat Authors\n *\n * The Universal Permissive License (UPL), Version 1.0\n *\n * Subject to the condition set forth below, permission is hereby granted to any\n * person obtaining a copy of this software, associated documentation and/or data\n * (collectively the "Software"), free of charge and under any and all copyright\n * rights in the Software, and any and all patent rights owned or freely\n * licensable by each licensor hereunder covering either (i) the unmodified\n * Software as contributed to or provided by such licensor, or (ii) the Larger\n * Works (as defined below), to deal in both\n *\n * (a) the Software, and\n * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if\n * one is included with the Software (each a "Larger Work" to which the Software\n * is contributed by such licensors),\n *\n * without restriction, including without limitation the rights to copy, create\n * derivative works of, display, perform, and distribute the Software and make,\n * use, sell, offer for sale, import, export, have made, and have sold the\n * Software and the Larger Work(s), and to sublicense the foregoing rights on\n * either these or other terms.\n *\n * This license is subject to the following condition:\n * The above copyright notice and either this complete permission notice or at\n * a minimum a reference to the UPL must be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n\n\nvar AuthCredentials = /** @class */ (function () {\n function AuthCredentials(api) {\n this.api = api;\n // TODO replace with Redux?\n this.store = new Map();\n }\n AuthCredentials.prototype.setCredential = function (targetId, username, password) {\n var location = (0,LocalStorage/* getFromLocalStorage */.fp)(\'CREDENTIAL_LOCATION\', CredentialsStorage/* Locations.BACKEND.key */.t.BACKEND.key);\n switch (location) {\n case CredentialsStorage/* Locations.BACKEND.key */.t.BACKEND.key:\n return this.api().postCredentials("target.connectUrl == \\"".concat(targetId, "\\""), username, password);\n case CredentialsStorage/* Locations.BROWSER_SESSION.key */.t.BROWSER_SESSION.key:\n this.store.set(targetId, { username: username, password: password });\n return (0,of.of)(true);\n default:\n console.warn(\'Unknown storage location\', location);\n return (0,of.of)(false);\n }\n };\n AuthCredentials.prototype.getCredential = function (targetId) {\n var location = (0,LocalStorage/* getFromLocalStorage */.fp)(\'CREDENTIAL_LOCATION\', CredentialsStorage/* Locations.BACKEND.key */.t.BACKEND.key);\n switch (location) {\n case CredentialsStorage/* Locations.BACKEND.key */.t.BACKEND.key:\n // if this is stored on the backend then Cryostat should be using those and not prompting us to request from the user\n return (0,of.of)(undefined);\n case CredentialsStorage/* Locations.BROWSER_SESSION.key */.t.BROWSER_SESSION.key:\n return (0,of.of)(this.store.get(targetId));\n default:\n console.warn(\'Unknown storage location\', location);\n return (0,of.of)(undefined);\n }\n };\n return AuthCredentials;\n}());\n\n\n// EXTERNAL MODULE: ./src/app/Shared/Services/Login.service.tsx\nvar Login_service = __webpack_require__(63470);\n// EXTERNAL MODULE: ./src/app/Shared/Services/NotificationChannel.service.tsx\nvar NotificationChannel_service = __webpack_require__(23384);\n// EXTERNAL MODULE: ./src/app/Shared/Services/Report.service.tsx\nvar Report_service = __webpack_require__(47627);\n// EXTERNAL MODULE: ./src/app/Shared/Services/Settings.service.tsx\nvar Settings_service = __webpack_require__(73721);\n// EXTERNAL MODULE: ./src/app/Shared/Services/Target.service.tsx\nvar Target_service = __webpack_require__(38386);\n// EXTERNAL MODULE: ./node_modules/lodash/lodash.js\nvar lodash = __webpack_require__(96486);\n// EXTERNAL MODULE: ./node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js\nvar BehaviorSubject = __webpack_require__(86515);\n// EXTERNAL MODULE: ./node_modules/rxjs/dist/esm5/internal/observable/empty.js\nvar empty = __webpack_require__(1545);\n// EXTERNAL MODULE: ./node_modules/rxjs/dist/esm5/internal/operators/concatMap.js\nvar concatMap = __webpack_require__(51313);\n// EXTERNAL MODULE: ./node_modules/rxjs/dist/esm5/internal/operators/first.js + 2 modules\nvar first = __webpack_require__(89475);\n// EXTERNAL MODULE: ./node_modules/rxjs/dist/esm5/internal/operators/tap.js\nvar tap = __webpack_require__(42006);\n// EXTERNAL MODULE: ./node_modules/rxjs/dist/esm5/internal/operators/map.js\nvar map = __webpack_require__(29127);\n// EXTERNAL MODULE: ./node_modules/rxjs/dist/esm5/internal/operators/catchError.js\nvar catchError = __webpack_require__(79878);\n;// CONCATENATED MODULE: ./src/app/Shared/Services/Targets.service.tsx\n/*\n * Copyright The Cryostat Authors\n *\n * The Universal Permissive License (UPL), Version 1.0\n *\n * Subject to the condition set forth below, permission is hereby granted to any\n * person obtaining a copy of this software, associated documentation and/or data\n * (collectively the "Software"), free of charge and under any and all copyright\n * rights in the Software, and any and all patent rights owned or freely\n * licensable by each licensor hereunder covering either (i) the unmodified\n * Software as contributed to or provided by such licensor, or (ii) the Larger\n * Works (as defined below), to deal in both\n *\n * (a) the Software, and\n * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if\n * one is included with the Software (each a "Larger Work" to which the Software\n * is contributed by such licensors),\n *\n * without restriction, including without limitation the rights to copy, create\n * derivative works of, display, perform, and distribute the Software and make,\n * use, sell, offer for sale, import, export, have made, and have sold the\n * Software and the Larger Work(s), and to sublicense the foregoing rights on\n * either these or other terms.\n *\n * This license is subject to the following condition:\n * The above copyright notice and either this complete permission notice or at\n * a minimum a reference to the UPL must be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n\n\n\nvar TargetsService = /** @class */ (function () {\n function TargetsService(api, notifications, login, notificationChannel) {\n var _this = this;\n this.api = api;\n this.notifications = notifications;\n this._targets$ = new BehaviorSubject/* BehaviorSubject */.X([]);\n login\n .getSessionState()\n .pipe((0,concatMap/* concatMap */.b)(function (sessionState) { return (sessionState === Login_service/* SessionState.USER_SESSION */.sM.USER_SESSION ? _this.queryForTargets() : empty/* EMPTY */.E); }))\n .subscribe(function () {\n // just trigger a startup query\n });\n notificationChannel.messages(NotificationChannel_service/* NotificationCategory.TargetJvmDiscovery */.mN.TargetJvmDiscovery).subscribe(function (v) {\n var evt = v.message.event;\n switch (evt.kind) {\n case \'FOUND\':\n _this._targets$.next(lodash.unionBy(_this._targets$.getValue(), [evt.serviceRef], function (t) { return t.connectUrl; }));\n break;\n case \'LOST\':\n _this._targets$.next(lodash.filter(_this._targets$.getValue(), function (t) { return t.connectUrl !== evt.serviceRef.connectUrl; }));\n break;\n case \'MODIFIED\':\n {\n var idx = lodash.findIndex(_this._targets$.getValue(), function (t) { return t.connectUrl === evt.serviceRef.connectUrl; });\n if (idx >= 0) {\n _this._targets$.getValue().splice(idx, 1, evt.serviceRef);\n _this._targets$.next(__spreadArray([], _this._targets$.getValue(), true));\n }\n }\n break;\n default:\n break;\n }\n });\n }\n TargetsService.prototype.queryForTargets = function () {\n var _this = this;\n return this.api.doGet("targets").pipe((0,first/* first */.P)(), (0,tap/* tap */.b)(function (targets) { return _this._targets$.next(targets); }), (0,map/* map */.U)(function () { return undefined; }), (0,catchError/* catchError */.K)(function (err) {\n _this.notifications.danger(\'Target List Update Failed\', JSON.stringify(err));\n return (0,of.of)(undefined);\n }));\n };\n TargetsService.prototype.targets = function () {\n return this._targets$.asObservable();\n };\n return TargetsService;\n}());\n\n\n;// CONCATENATED MODULE: ./src/app/Shared/Services/Services.tsx\n/*\n * Copyright The Cryostat Authors\n *\n * The Universal Permissive License (UPL), Version 1.0\n *\n * Subject to the condition set forth below, permission is hereby granted to any\n * person obtaining a copy of this software, associated documentation and/or data\n * (collectively the "Software"), free of charge and under any and all copyright\n * rights in the Software, and any and all patent rights owned or freely\n * licensable by each licensor hereunder covering either (i) the unmodified\n * Software as contributed to or provided by such licensor, or (ii) the Larger\n * Works (as defined below), to deal in both\n *\n * (a) the Software, and\n * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if\n * one is included with the Software (each a "Larger Work" to which the Software\n * is contributed by such licensors),\n *\n * without restriction, including without limitation the rights to copy, create\n * derivative works of, display, perform, and distribute the Software and make,\n * use, sell, offer for sale, import, export, have made, and have sold the\n * Software and the Larger Work(s), and to sublicense the foregoing rights on\n * either these or other terms.\n *\n * This license is subject to the following condition:\n * The above copyright notice and either this complete permission notice or at\n * a minimum a reference to the UPL must be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n\n\n\n\n\n\n\n\n\nvar settings = new Settings_service/* SettingsService */.gb();\nvar authCredentials = new AuthCredentials(function () { return api; });\nvar login = new Login_service/* LoginService */.r6(Target_service/* TargetInstance */.pw, authCredentials, settings);\nvar api = new Api_service/* ApiService */.sM(Target_service/* TargetInstance */.pw, Notifications/* NotificationsInstance */.Bn, login);\nvar notificationChannel = new NotificationChannel_service/* NotificationChannel */.dm(Notifications/* NotificationsInstance */.Bn, login);\nvar reports = new Report_service/* ReportService */.rM(login, Notifications/* NotificationsInstance */.Bn);\nvar targets = new TargetsService(api, Notifications/* NotificationsInstance */.Bn, login, notificationChannel);\nvar defaultServices = {\n target: Target_service/* TargetInstance */.pw,\n targets: targets,\n api: api,\n authCredentials: authCredentials,\n notificationChannel: notificationChannel,\n reports: reports,\n settings: settings,\n login: login,\n};\nvar ServiceContext = react.createContext(defaultServices);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0FBYSxDQUFDLEtBQUssRUFBRSwyQ0FBcUIsQ0FBQyxDQUFDO0FBQ2hFLElBQU0sT0FBTyxHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsRUFBRSwyQ0FBcUIsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQUUzRixJQUFNLGVBQWUsR0FBYTtJQUNoQyxNQUFNLEVBQUUscUNBQWM7SUFDdEIsT0FBTztJQUNQLEdBQUc7SUFDSCxlQUFlO0lBQ2YsbUJBQW1CO0lBQ25CLE9BQU87SUFDUCxRQUFRO0lBQ1IsS0FBSztDQUNOLENBQUM7QUFFRixJQUFNLGNBQWMsR0FBNEIsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFMUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jcnlvc3RhdC13ZWIvLi9zcmMvYXBwL1NoYXJlZC9TZXJ2aWNlcy9BdXRoQ3JlZGVudGlhbHMuc2VydmljZS50c3g/MzYyOCIsIndlYnBhY2s6Ly9jcnlvc3RhdC13ZWIvLi9zcmMvYXBwL1NoYXJlZC9TZXJ2aWNlcy9UYXJnZXRzLnNlcnZpY2UudHN4PzdmN2IiLCJ3ZWJwYWNrOi8vY3J5b3N0YXQtd2ViLy4vc3JjL2FwcC9TaGFyZWQvU2VydmljZXMvU2VydmljZXMudHN4PzAzYTQiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCBUaGUgQ3J5b3N0YXQgQXV0aG9yc1xuICpcbiAqIFRoZSBVbml2ZXJzYWwgUGVybWlzc2l2ZSBMaWNlbnNlIChVUEwpLCBWZXJzaW9uIDEuMFxuICpcbiAqIFN1YmplY3QgdG8gdGhlIGNvbmRpdGlvbiBzZXQgZm9ydGggYmVsb3csIHBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQgdG8gYW55XG4gKiBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlLCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gYW5kL29yIGRhdGFcbiAqIChjb2xsZWN0aXZlbHkgdGhlIFwiU29mdHdhcmVcIiksIGZyZWUgb2YgY2hhcmdlIGFuZCB1bmRlciBhbnkgYW5kIGFsbCBjb3B5cmlnaHRcbiAqIHJpZ2h0cyBpbiB0aGUgU29mdHdhcmUsIGFuZCBhbnkgYW5kIGFsbCBwYXRlbnQgcmlnaHRzIG93bmVkIG9yIGZyZWVseVxuICogbGljZW5zYWJsZSBieSBlYWNoIGxpY2Vuc29yIGhlcmV1bmRlciBjb3ZlcmluZyBlaXRoZXIgKGkpIHRoZSB1bm1vZGlmaWVkXG4gKiBTb2Z0d2FyZSBhcyBjb250cmlidXRlZCB0byBvciBwcm92aWRlZCBieSBzdWNoIGxpY2Vuc29yLCBvciAoaWkpIHRoZSBMYXJnZXJcbiAqIFdvcmtzIChhcyBkZWZpbmVkIGJlbG93KSwgdG8gZGVhbCBpbiBib3RoXG4gKlxuICogKGEpIHRoZSBTb2Z0d2FyZSwgYW5kXG4gKiAoYikgYW55IHBpZWNlIG9mIHNvZnR3YXJlIGFuZC9vciBoYXJkd2FyZSBsaXN0ZWQgaW4gdGhlIGxyZ3J3cmtzLnR4dCBmaWxlIGlmXG4gKiBvbmUgaXMgaW5jbHVkZWQgd2l0aCB0aGUgU29mdHdhcmUgKGVhY2ggYSBcIkxhcmdlciBXb3JrXCIgdG8gd2hpY2ggdGhlIFNvZnR3YXJlXG4gKiBpcyBjb250cmlidXRlZCBieSBzdWNoIGxpY2Vuc29ycyksXG4gKlxuICogd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIGNvcHksIGNyZWF0ZVxuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiwgZGlzcGxheSwgcGVyZm9ybSwgYW5kIGRpc3RyaWJ1dGUgdGhlIFNvZnR3YXJlIGFuZCBtYWtlLFxuICogdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0LCBleHBvcnQsIGhhdmUgbWFkZSwgYW5kIGhhdmUgc29sZCB0aGVcbiAqIFNvZnR3YXJlIGFuZCB0aGUgTGFyZ2VyIFdvcmsocyksIGFuZCB0byBzdWJsaWNlbnNlIHRoZSBmb3JlZ29pbmcgcmlnaHRzIG9uXG4gKiBlaXRoZXIgdGhlc2Ugb3Igb3RoZXIgdGVybXMuXG4gKlxuICogVGhpcyBsaWNlbnNlIGlzIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb246XG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgZWl0aGVyIHRoaXMgY29tcGxldGUgcGVybWlzc2lvbiBub3RpY2Ugb3IgYXRcbiAqIGEgbWluaW11bSBhIHJlZmVyZW5jZSB0byB0aGUgVVBMIG11c3QgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvclxuICogc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5pbXBvcnQgeyBMb2NhdGlvbnMgfSBmcm9tICdAYXBwL1NldHRpbmdzL0NyZWRlbnRpYWxzU3RvcmFnZSc7XG5pbXBvcnQgeyBnZXRGcm9tTG9jYWxTdG9yYWdlIH0gZnJvbSAnQGFwcC91dGlscy9Mb2NhbFN0b3JhZ2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuL0FwaS5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBDcmVkZW50aWFsIHtcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEF1dGhDcmVkZW50aWFscyB7XG4gIC8vIFRPRE8gcmVwbGFjZSB3aXRoIFJlZHV4P1xuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlID0gbmV3IE1hcDxzdHJpbmcsIENyZWRlbnRpYWw+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhcGk6ICgpID0+IEFwaVNlcnZpY2UpIHt9XG5cbiAgc2V0Q3JlZGVudGlhbCh0YXJnZXRJZDogc3RyaW5nLCB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgbG9jYXRpb24gPSBnZXRGcm9tTG9jYWxTdG9yYWdlKCdDUkVERU5USUFMX0xPQ0FUSU9OJywgTG9jYXRpb25zLkJBQ0tFTkQua2V5KTtcbiAgICBzd2l0Y2ggKGxvY2F0aW9uKSB7XG4gICAgICBjYXNlIExvY2F0aW9ucy5CQUNLRU5ELmtleTpcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpKCkucG9zdENyZWRlbnRpYWxzKGB0YXJnZXQuY29ubmVjdFVybCA9PSBcIiR7dGFyZ2V0SWR9XCJgLCB1c2VybmFtZSwgcGFzc3dvcmQpO1xuICAgICAgY2FzZSBMb2NhdGlvbnMuQlJPV1NFUl9TRVNTSU9OLmtleTpcbiAgICAgICAgdGhpcy5zdG9yZS5zZXQodGFyZ2V0SWQsIHsgdXNlcm5hbWUsIHBhc3N3b3JkIH0pO1xuICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gc3RvcmFnZSBsb2NhdGlvbicsIGxvY2F0aW9uKTtcbiAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBnZXRDcmVkZW50aWFsKHRhcmdldElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENyZWRlbnRpYWwgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBsb2NhdGlvbiA9IGdldEZyb21Mb2NhbFN0b3JhZ2UoJ0NSRURFTlRJQUxfTE9DQVRJT04nLCBMb2NhdGlvbnMuQkFDS0VORC5rZXkpO1xuICAgIHN3aXRjaCAobG9jYXRpb24pIHtcbiAgICAgIGNhc2UgTG9jYXRpb25zLkJBQ0tFTkQua2V5OlxuICAgICAgICAvLyBpZiB0aGlzIGlzIHN0b3JlZCBvbiB0aGUgYmFja2VuZCB0aGVuIENyeW9zdGF0IHNob3VsZCBiZSB1c2luZyB0aG9zZSBhbmQgbm90IHByb21wdGluZyB1cyB0byByZXF1ZXN0IGZyb20gdGhlIHVzZXJcbiAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgICBjYXNlIExvY2F0aW9ucy5CUk9XU0VSX1NFU1NJT04ua2V5OlxuICAgICAgICByZXR1cm4gb2YodGhpcy5zdG9yZS5nZXQodGFyZ2V0SWQpKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUud2FybignVW5rbm93biBzdG9yYWdlIGxvY2F0aW9uJywgbG9jYXRpb24pO1xuICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgVGhlIENyeW9zdGF0IEF1dGhvcnNcbiAqXG4gKiBUaGUgVW5pdmVyc2FsIFBlcm1pc3NpdmUgTGljZW5zZSAoVVBMKSwgVmVyc2lvbiAxLjBcbiAqXG4gKiBTdWJqZWN0IHRvIHRoZSBjb25kaXRpb24gc2V0IGZvcnRoIGJlbG93LCBwZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkIHRvIGFueVxuICogcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSwgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGFuZC9vciBkYXRhXG4gKiAoY29sbGVjdGl2ZWx5IHRoZSBcIlNvZnR3YXJlXCIpLCBmcmVlIG9mIGNoYXJnZSBhbmQgdW5kZXIgYW55IGFuZCBhbGwgY29weXJpZ2h0XG4gKiByaWdodHMgaW4gdGhlIFNvZnR3YXJlLCBhbmQgYW55IGFuZCBhbGwgcGF0ZW50IHJpZ2h0cyBvd25lZCBvciBmcmVlbHlcbiAqIGxpY2Vuc2FibGUgYnkgZWFjaCBsaWNlbnNvciBoZXJldW5kZXIgY292ZXJpbmcgZWl0aGVyIChpKSB0aGUgdW5tb2RpZmllZFxuICogU29mdHdhcmUgYXMgY29udHJpYnV0ZWQgdG8gb3IgcHJvdmlkZWQgYnkgc3VjaCBsaWNlbnNvciwgb3IgKGlpKSB0aGUgTGFyZ2VyXG4gKiBXb3JrcyAoYXMgZGVmaW5lZCBiZWxvdyksIHRvIGRlYWwgaW4gYm90aFxuICpcbiAqIChhKSB0aGUgU29mdHdhcmUsIGFuZFxuICogKGIpIGFueSBwaWVjZSBvZiBzb2Z0d2FyZSBhbmQvb3IgaGFyZHdhcmUgbGlzdGVkIGluIHRoZSBscmdyd3Jrcy50eHQgZmlsZSBpZlxuICogb25lIGlzIGluY2x1ZGVkIHdpdGggdGhlIFNvZnR3YXJlIChlYWNoIGEgXCJMYXJnZXIgV29ya1wiIHRvIHdoaWNoIHRoZSBTb2Z0d2FyZVxuICogaXMgY29udHJpYnV0ZWQgYnkgc3VjaCBsaWNlbnNvcnMpLFxuICpcbiAqIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byBjb3B5LCBjcmVhdGVcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YsIGRpc3BsYXksIHBlcmZvcm0sIGFuZCBkaXN0cmlidXRlIHRoZSBTb2Z0d2FyZSBhbmQgbWFrZSxcbiAqIHVzZSwgc2VsbCwgb2ZmZXIgZm9yIHNhbGUsIGltcG9ydCwgZXhwb3J0LCBoYXZlIG1hZGUsIGFuZCBoYXZlIHNvbGQgdGhlXG4gKiBTb2Z0d2FyZSBhbmQgdGhlIExhcmdlciBXb3JrKHMpLCBhbmQgdG8gc3VibGljZW5zZSB0aGUgZm9yZWdvaW5nIHJpZ2h0cyBvblxuICogZWl0aGVyIHRoZXNlIG9yIG90aGVyIHRlcm1zLlxuICpcbiAqIFRoaXMgbGljZW5zZSBpcyBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uOlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIGVpdGhlciB0aGlzIGNvbXBsZXRlIHBlcm1pc3Npb24gbm90aWNlIG9yIGF0XG4gKiBhIG1pbmltdW0gYSByZWZlcmVuY2UgdG8gdGhlIFVQTCBtdXN0IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3JcbiAqIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBOb3RpZmljYXRpb25zIH0gZnJvbSAnQGFwcC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbnMnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgQmVoYXZpb3JTdWJqZWN0LCBvZiwgRU1QVFkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGNvbmNhdE1hcCwgZmlyc3QsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4vQXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlLCBTZXNzaW9uU3RhdGUgfSBmcm9tICcuL0xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uQ2F0ZWdvcnksIE5vdGlmaWNhdGlvbkNoYW5uZWwgfSBmcm9tICcuL05vdGlmaWNhdGlvbkNoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBUYXJnZXQgfSBmcm9tICcuL1RhcmdldC5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBUYXJnZXREaXNjb3ZlcnlFdmVudCB7XG4gIGtpbmQ6ICdMT1NUJyB8ICdGT1VORCcgfCAnTU9ESUZJRUQnO1xuICBzZXJ2aWNlUmVmOiBUYXJnZXQ7XG59XG5cbmV4cG9ydCBjbGFzcyBUYXJnZXRzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhcmdldHMkOiBCZWhhdmlvclN1YmplY3Q8VGFyZ2V0W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYXJnZXRbXT4oW10gYXMgVGFyZ2V0W10pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBpOiBBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9ucyxcbiAgICBsb2dpbjogTG9naW5TZXJ2aWNlLFxuICAgIG5vdGlmaWNhdGlvbkNoYW5uZWw6IE5vdGlmaWNhdGlvbkNoYW5uZWxcbiAgKSB7XG4gICAgbG9naW5cbiAgICAgIC5nZXRTZXNzaW9uU3RhdGUoKVxuICAgICAgLnBpcGUoY29uY2F0TWFwKChzZXNzaW9uU3RhdGUpID0+IChzZXNzaW9uU3RhdGUgPT09IFNlc3Npb25TdGF0ZS5VU0VSX1NFU1NJT04gPyB0aGlzLnF1ZXJ5Rm9yVGFyZ2V0cygpIDogRU1QVFkpKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBqdXN0IHRyaWdnZXIgYSBzdGFydHVwIHF1ZXJ5XG4gICAgICB9KTtcbiAgICBub3RpZmljYXRpb25DaGFubmVsLm1lc3NhZ2VzKE5vdGlmaWNhdGlvbkNhdGVnb3J5LlRhcmdldEp2bURpc2NvdmVyeSkuc3Vic2NyaWJlKCh2KSA9PiB7XG4gICAgICBjb25zdCBldnQ6IFRhcmdldERpc2NvdmVyeUV2ZW50ID0gdi5tZXNzYWdlLmV2ZW50O1xuICAgICAgc3dpdGNoIChldnQua2luZCkge1xuICAgICAgICBjYXNlICdGT1VORCc6XG4gICAgICAgICAgdGhpcy5fdGFyZ2V0cyQubmV4dChfLnVuaW9uQnkodGhpcy5fdGFyZ2V0cyQuZ2V0VmFsdWUoKSwgW2V2dC5zZXJ2aWNlUmVmXSwgKHQpID0+IHQuY29ubmVjdFVybCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdMT1NUJzpcbiAgICAgICAgICB0aGlzLl90YXJnZXRzJC5uZXh0KF8uZmlsdGVyKHRoaXMuX3RhcmdldHMkLmdldFZhbHVlKCksICh0KSA9PiB0LmNvbm5lY3RVcmwgIT09IGV2dC5zZXJ2aWNlUmVmLmNvbm5lY3RVcmwpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnTU9ESUZJRUQnOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IF8uZmluZEluZGV4KHRoaXMuX3RhcmdldHMkLmdldFZhbHVlKCksICh0KSA9PiB0LmNvbm5lY3RVcmwgPT09IGV2dC5zZXJ2aWNlUmVmLmNvbm5lY3RVcmwpO1xuICAgICAgICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgICAgICAgIHRoaXMuX3RhcmdldHMkLmdldFZhbHVlKCkuc3BsaWNlKGlkeCwgMSwgZXZ0LnNlcnZpY2VSZWYpO1xuICAgICAgICAgICAgICB0aGlzLl90YXJnZXRzJC5uZXh0KFsuLi50aGlzLl90YXJnZXRzJC5nZXRWYWx1ZSgpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcXVlcnlGb3JUYXJnZXRzKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmFwaS5kb0dldDxUYXJnZXRbXT4oYHRhcmdldHNgKS5waXBlKFxuICAgICAgZmlyc3QoKSxcbiAgICAgIHRhcCgodGFyZ2V0cykgPT4gdGhpcy5fdGFyZ2V0cyQubmV4dCh0YXJnZXRzKSksXG4gICAgICBtYXAoKCkgPT4gdW5kZWZpbmVkKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuZGFuZ2VyKCdUYXJnZXQgTGlzdCBVcGRhdGUgRmFpbGVkJywgSlNPTi5zdHJpbmdpZnkoZXJyKSk7XG4gICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgdGFyZ2V0cygpOiBPYnNlcnZhYmxlPFRhcmdldFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RhcmdldHMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IFRoZSBDcnlvc3RhdCBBdXRob3JzXG4gKlxuICogVGhlIFVuaXZlcnNhbCBQZXJtaXNzaXZlIExpY2Vuc2UgKFVQTCksIFZlcnNpb24gMS4wXG4gKlxuICogU3ViamVjdCB0byB0aGUgY29uZGl0aW9uIHNldCBmb3J0aCBiZWxvdywgcGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCB0byBhbnlcbiAqIHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUsIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBhbmQvb3IgZGF0YVxuICogKGNvbGxlY3RpdmVseSB0aGUgXCJTb2Z0d2FyZVwiKSwgZnJlZSBvZiBjaGFyZ2UgYW5kIHVuZGVyIGFueSBhbmQgYWxsIGNvcHlyaWdodFxuICogcmlnaHRzIGluIHRoZSBTb2Z0d2FyZSwgYW5kIGFueSBhbmQgYWxsIHBhdGVudCByaWdodHMgb3duZWQgb3IgZnJlZWx5XG4gKiBsaWNlbnNhYmxlIGJ5IGVhY2ggbGljZW5zb3IgaGVyZXVuZGVyIGNvdmVyaW5nIGVpdGhlciAoaSkgdGhlIHVubW9kaWZpZWRcbiAqIFNvZnR3YXJlIGFzIGNvbnRyaWJ1dGVkIHRvIG9yIHByb3ZpZGVkIGJ5IHN1Y2ggbGljZW5zb3IsIG9yIChpaSkgdGhlIExhcmdlclxuICogV29ya3MgKGFzIGRlZmluZWQgYmVsb3cpLCB0byBkZWFsIGluIGJvdGhcbiAqXG4gKiAoYSkgdGhlIFNvZnR3YXJlLCBhbmRcbiAqIChiKSBhbnkgcGllY2Ugb2Ygc29mdHdhcmUgYW5kL29yIGhhcmR3YXJlIGxpc3RlZCBpbiB0aGUgbHJncndya3MudHh0IGZpbGUgaWZcbiAqIG9uZSBpcyBpbmNsdWRlZCB3aXRoIHRoZSBTb2Z0d2FyZSAoZWFjaCBhIFwiTGFyZ2VyIFdvcmtcIiB0byB3aGljaCB0aGUgU29mdHdhcmVcbiAqIGlzIGNvbnRyaWJ1dGVkIGJ5IHN1Y2ggbGljZW5zb3JzKSxcbiAqXG4gKiB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gY29weSwgY3JlYXRlXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mLCBkaXNwbGF5LCBwZXJmb3JtLCBhbmQgZGlzdHJpYnV0ZSB0aGUgU29mdHdhcmUgYW5kIG1ha2UsXG4gKiB1c2UsIHNlbGwsIG9mZmVyIGZvciBzYWxlLCBpbXBvcnQsIGV4cG9ydCwgaGF2ZSBtYWRlLCBhbmQgaGF2ZSBzb2xkIHRoZVxuICogU29mdHdhcmUgYW5kIHRoZSBMYXJnZXIgV29yayhzKSwgYW5kIHRvIHN1YmxpY2Vuc2UgdGhlIGZvcmVnb2luZyByaWdodHMgb25cbiAqIGVpdGhlciB0aGVzZSBvciBvdGhlciB0ZXJtcy5cbiAqXG4gKiBUaGlzIGxpY2Vuc2UgaXMgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbjpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBlaXRoZXIgdGhpcyBjb21wbGV0ZSBwZXJtaXNzaW9uIG5vdGljZSBvciBhdFxuICogYSBtaW5pbXVtIGEgcmVmZXJlbmNlIHRvIHRoZSBVUEwgbXVzdCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yXG4gKiBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNJbnN0YW5jZSB9IGZyb20gJ0BhcHAvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25zJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuL0FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhDcmVkZW50aWFscyB9IGZyb20gJy4vQXV0aENyZWRlbnRpYWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9Mb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkNoYW5uZWwgfSBmcm9tICcuL05vdGlmaWNhdGlvbkNoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi9SZXBvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuL1NldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFyZ2V0U2VydmljZSwgVGFyZ2V0SW5zdGFuY2UgfSBmcm9tICcuL1RhcmdldC5zZXJ2aWNlJztcbmltcG9ydCB7IFRhcmdldHNTZXJ2aWNlIH0gZnJvbSAnLi9UYXJnZXRzLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VzIHtcbiAgdGFyZ2V0OiBUYXJnZXRTZXJ2aWNlO1xuICB0YXJnZXRzOiBUYXJnZXRzU2VydmljZTtcbiAgYXBpOiBBcGlTZXJ2aWNlO1xuICBhdXRoQ3JlZGVudGlhbHM6IEF1dGhDcmVkZW50aWFscztcbiAgbm90aWZpY2F0aW9uQ2hhbm5lbDogTm90aWZpY2F0aW9uQ2hhbm5lbDtcbiAgcmVwb3J0czogUmVwb3J0U2VydmljZTtcbiAgc2V0dGluZ3M6IFNldHRpbmdzU2VydmljZTtcbiAgbG9naW46IExvZ2luU2VydmljZTtcbn1cblxuY29uc3Qgc2V0dGluZ3MgPSBuZXcgU2V0dGluZ3NTZXJ2aWNlKCk7XG5jb25zdCBhdXRoQ3JlZGVudGlhbHMgPSBuZXcgQXV0aENyZWRlbnRpYWxzKCgpID0+IGFwaSk7XG5jb25zdCBsb2dpbiA9IG5ldyBMb2dpblNlcnZpY2UoVGFyZ2V0SW5zdGFuY2UsIGF1dGhDcmVkZW50aWFscywgc2V0dGluZ3MpO1xuY29uc3QgYXBpID0gbmV3IEFwaVNlcnZpY2UoVGFyZ2V0SW5zdGFuY2UsIE5vdGlmaWNhdGlvbnNJbnN0YW5jZSwgbG9naW4pO1xuY29uc3Qgbm90aWZpY2F0aW9uQ2hhbm5lbCA9IG5ldyBOb3RpZmljYXRpb25DaGFubmVsKE5vdGlmaWNhdGlvbnNJbnN0YW5jZSwgbG9naW4pO1xuY29uc3QgcmVwb3J0cyA9IG5ldyBSZXBvcnRTZXJ2aWNlKGxvZ2luLCBOb3RpZmljYXRpb25zSW5zdGFuY2UpO1xuY29uc3QgdGFyZ2V0cyA9IG5ldyBUYXJnZXRzU2VydmljZShhcGksIE5vdGlmaWNhdGlvbnNJbnN0YW5jZSwgbG9naW4sIG5vdGlmaWNhdGlvbkNoYW5uZWwpO1xuXG5jb25zdCBkZWZhdWx0U2VydmljZXM6IFNlcnZpY2VzID0ge1xuICB0YXJnZXQ6IFRhcmdldEluc3RhbmNlLFxuICB0YXJnZXRzLFxuICBhcGksXG4gIGF1dGhDcmVkZW50aWFscyxcbiAgbm90aWZpY2F0aW9uQ2hhbm5lbCxcbiAgcmVwb3J0cyxcbiAgc2V0dGluZ3MsXG4gIGxvZ2luLFxufTtcblxuY29uc3QgU2VydmljZUNvbnRleHQ6IFJlYWN0LkNvbnRleHQ8U2VydmljZXM+ID0gUmVhY3QuY3JlYXRlQ29udGV4dChkZWZhdWx0U2VydmljZXMpO1xuXG5leHBvcnQgeyBTZXJ2aWNlQ29udGV4dCwgZGVmYXVsdFNlcnZpY2VzIH07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///35881\n')},73721:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Lu\": () => (/* binding */ FeatureLevel),\n/* harmony export */ \"eA\": () => (/* binding */ automatedAnalysisConfigToRecordingAttributes),\n/* harmony export */ \"gb\": () => (/* binding */ SettingsService)\n/* harmony export */ });\n/* harmony import */ var _app_Modal_DeleteWarningUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(28829);\n/* harmony import */ var _app_Settings_SettingsUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(74787);\n/* harmony import */ var _app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(74687);\n/* harmony import */ var _i18n_datetime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(83628);\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(86515);\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(22401);\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(80095);\n/* harmony import */ var _Api_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(68038);\n/* harmony import */ var _NotificationChannel_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(23384);\n/*\n * Copyright The Cryostat Authors\n *\n * The Universal Permissive License (UPL), Version 1.0\n *\n * Subject to the condition set forth below, permission is hereby granted to any\n * person obtaining a copy of this software, associated documentation and/or data\n * (collectively the \"Software\"), free of charge and under any and all copyright\n * rights in the Software, and any and all patent rights owned or freely\n * licensable by each licensor hereunder covering either (i) the unmodified\n * Software as contributed to or provided by such licensor, or (ii) the Larger\n * Works (as defined below), to deal in both\n *\n * (a) the Software, and\n * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if\n * one is included with the Software (each a \"Larger Work\" to which the Software\n * is contributed by such licensors),\n *\n * without restriction, including without limitation the rights to copy, create\n * derivative works of, display, perform, and distribute the Software and make,\n * use, sell, offer for sale, import, export, have made, and have sold the\n * Software and the Larger Work(s), and to sublicense the foregoing rights on\n * either these or other terms.\n *\n * This license is subject to the following condition:\n * The above copyright notice and either this complete permission notice or at\n * a minimum a reference to the UPL must be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n\n\n\n\n\n\nvar FeatureLevel;\n(function (FeatureLevel) {\n FeatureLevel[FeatureLevel[\"DEVELOPMENT\"] = 0] = \"DEVELOPMENT\";\n FeatureLevel[FeatureLevel[\"BETA\"] = 1] = \"BETA\";\n FeatureLevel[FeatureLevel[\"PRODUCTION\"] = 2] = \"PRODUCTION\";\n})(FeatureLevel || (FeatureLevel = {}));\nvar automatedAnalysisConfigToRecordingAttributes = function (config) {\n return {\n name: _Api_service__WEBPACK_IMPORTED_MODULE_4__/* .automatedAnalysisRecordingName */ .Ls,\n events: \"template=\".concat(config.template.name, \",type=\").concat(config.template.type),\n duration: undefined,\n archiveOnStop: false,\n options: {\n toDisk: true,\n maxAge: config.maxAge,\n maxSize: config.maxSize,\n },\n metadata: {\n labels: {\n origin: _Api_service__WEBPACK_IMPORTED_MODULE_4__/* .automatedAnalysisRecordingName */ .Ls,\n },\n },\n };\n};\nvar SettingsService = /** @class */ (function () {\n function SettingsService() {\n this._featureLevel$ = new rxjs__WEBPACK_IMPORTED_MODULE_6__/* .BehaviorSubject */ .X((0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .getFromLocalStorage */ .fp)('FEATURE_LEVEL', FeatureLevel.PRODUCTION));\n this._visibleNotificationsCount$ = new rxjs__WEBPACK_IMPORTED_MODULE_6__/* .BehaviorSubject */ .X((0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .getFromLocalStorage */ .fp)('VISIBLE_NOTIFICATIONS_COUNT', 5));\n this._datetimeFormat$ = new rxjs__WEBPACK_IMPORTED_MODULE_6__/* .BehaviorSubject */ .X((0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .getFromLocalStorage */ .fp)('DATETIME_FORMAT', _i18n_datetime__WEBPACK_IMPORTED_MODULE_3__/* .defaultDatetimeFormat */ .wO));\n this._theme$ = new rxjs__WEBPACK_IMPORTED_MODULE_6__/* .BehaviorSubject */ .X((0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .getFromLocalStorage */ .fp)('THEME', _app_Settings_SettingsUtils__WEBPACK_IMPORTED_MODULE_1__/* .ThemeSetting.AUTO */ .LZ.AUTO));\n this._featureLevel$.subscribe(function (featureLevel) { return (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .saveToLocalStorage */ .m8)('FEATURE_LEVEL', featureLevel); });\n this._visibleNotificationsCount$.subscribe(function (count) {\n return (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .saveToLocalStorage */ .m8)('VISIBLE_NOTIFICATIONS_COUNT', count);\n });\n this._datetimeFormat$.subscribe(function (format) { return (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .saveToLocalStorage */ .m8)('DATETIME_FORMAT', format); });\n this._theme$.subscribe(function (theme) { return (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .saveToLocalStorage */ .m8)('THEME', theme); });\n }\n SettingsService.prototype.media = function (query) {\n var mediaQuery = window.matchMedia(query);\n return (0,rxjs__WEBPACK_IMPORTED_MODULE_7__/* .fromEvent */ .R)(mediaQuery, 'change').pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_8__/* .startWith */ .O)(mediaQuery));\n };\n SettingsService.prototype.themeSetting = function () {\n return this._theme$.asObservable();\n };\n SettingsService.prototype.setThemeSetting = function (theme) {\n this._theme$.next(theme);\n };\n SettingsService.prototype.datetimeFormat = function () {\n return this._datetimeFormat$.asObservable();\n };\n SettingsService.prototype.setDatetimeFormat = function (format) {\n this._datetimeFormat$.next(format);\n };\n SettingsService.prototype.featureLevel = function () {\n return this._featureLevel$.asObservable();\n };\n SettingsService.prototype.setFeatureLevel = function (featureLevel) {\n this._featureLevel$.next(featureLevel);\n };\n SettingsService.prototype.autoRefreshEnabled = function () {\n return (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .getFromLocalStorage */ .fp)('AUTO_REFRESH_ENABLED', 'false') === 'true';\n };\n SettingsService.prototype.setAutoRefreshEnabled = function (enabled) {\n (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .saveToLocalStorage */ .m8)('AUTO_REFRESH_ENABLED', String(enabled));\n };\n SettingsService.prototype.autoRefreshPeriod = function (defaultPeriod) {\n if (defaultPeriod === void 0) { defaultPeriod = 30; }\n return Number((0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .getFromLocalStorage */ .fp)('AUTO_REFRESH_PERIOD', defaultPeriod));\n };\n SettingsService.prototype.setAutoRefreshPeriod = function (period) {\n (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .saveToLocalStorage */ .m8)('AUTO_REFRESH_PERIOD', String(period));\n };\n SettingsService.prototype.autoRefreshUnits = function (defaultUnits) {\n if (defaultUnits === void 0) { defaultUnits = 1000; }\n return Number((0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .getFromLocalStorage */ .fp)('AUTO_REFRESH_UNITS', defaultUnits));\n };\n SettingsService.prototype.setAutoRefreshUnits = function (units) {\n (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .saveToLocalStorage */ .m8)('AUTO_REFRESH_UNITS', String(units));\n };\n SettingsService.prototype.automatedAnalysisRecordingConfig = function (defaultConfig) {\n if (defaultConfig === void 0) { defaultConfig = _Api_service__WEBPACK_IMPORTED_MODULE_4__/* .defaultAutomatedAnalysisRecordingConfig */ .hh; }\n return (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .getFromLocalStorage */ .fp)('AUTOMATED_ANALYSIS_RECORDING_CONFIG', defaultConfig);\n };\n SettingsService.prototype.setAutomatedAnalysisRecordingConfig = function (config) {\n (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .saveToLocalStorage */ .m8)('AUTOMATED_ANALYSIS_RECORDING_CONFIG', config);\n };\n SettingsService.prototype.chartControllerConfig = function (defaultConfig) {\n if (defaultConfig === void 0) { defaultConfig = _Api_service__WEBPACK_IMPORTED_MODULE_4__/* .defaultChartControllerConfig */ .cE; }\n return (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .getFromLocalStorage */ .fp)('CHART_CONTROLLER_CONFIG', defaultConfig);\n };\n SettingsService.prototype.setChartControllerConfig = function (config) {\n (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .saveToLocalStorage */ .m8)('CHART_CONTROLLER_CONFIG', config);\n };\n SettingsService.prototype.deletionDialogsEnabled = function () {\n var value = (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .getFromLocalStorage */ .fp)('DELETION_DIALOGS_ENABLED', undefined);\n if (typeof value === 'object') {\n var obj = new Map(Array.from(Object.entries(value)));\n var res_1 = new Map();\n obj.forEach(function (v) {\n res_1.set(v[0], v[1]);\n });\n for (var t in _app_Modal_DeleteWarningUtils__WEBPACK_IMPORTED_MODULE_0__/* .DeleteOrDisableWarningType */ .gF) {\n if (!res_1.has(_app_Modal_DeleteWarningUtils__WEBPACK_IMPORTED_MODULE_0__/* .DeleteOrDisableWarningType */ .gF[t])) {\n res_1.set(_app_Modal_DeleteWarningUtils__WEBPACK_IMPORTED_MODULE_0__/* .DeleteOrDisableWarningType */ .gF[t], true);\n }\n }\n return res_1;\n }\n var map = new Map();\n for (var cat in _app_Modal_DeleteWarningUtils__WEBPACK_IMPORTED_MODULE_0__/* .DeleteOrDisableWarningType */ .gF) {\n map.set(_app_Modal_DeleteWarningUtils__WEBPACK_IMPORTED_MODULE_0__/* .DeleteOrDisableWarningType */ .gF[cat], true);\n }\n this.setDeletionDialogsEnabled(map);\n return map;\n };\n SettingsService.prototype.deletionDialogsEnabledFor = function (type) {\n var res = this.deletionDialogsEnabled().get(type);\n if (typeof res != 'boolean') {\n return true;\n }\n return res;\n };\n SettingsService.prototype.setDeletionDialogsEnabled = function (map) {\n var value = Array.from(map.entries());\n (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .saveToLocalStorage */ .m8)('DELETION_DIALOGS_ENABLED', value);\n };\n SettingsService.prototype.setDeletionDialogsEnabledFor = function (type, enabled) {\n var map = this.deletionDialogsEnabled();\n map.set(type, enabled);\n this.setDeletionDialogsEnabled(map);\n };\n SettingsService.prototype.visibleNotificationsCount = function () {\n return this._visibleNotificationsCount$.asObservable();\n };\n SettingsService.prototype.setVisibleNotificationCount = function (count) {\n this._visibleNotificationsCount$.next(count);\n };\n SettingsService.prototype.notificationsEnabled = function () {\n var value = (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .getFromLocalStorage */ .fp)('NOTIFICATIONS_ENABLED', undefined);\n if (typeof value === 'object') {\n var res_2 = new Map();\n value.forEach(function (v) {\n res_2.set(v[0], v[1]);\n });\n for (var t in _NotificationChannel_service__WEBPACK_IMPORTED_MODULE_5__/* .NotificationCategory */ .mN) {\n if (!res_2.has(_NotificationChannel_service__WEBPACK_IMPORTED_MODULE_5__/* .NotificationCategory */ .mN[t])) {\n res_2.set(_NotificationChannel_service__WEBPACK_IMPORTED_MODULE_5__/* .NotificationCategory */ .mN[t], true);\n }\n }\n return res_2;\n }\n var map = new Map();\n for (var cat in _NotificationChannel_service__WEBPACK_IMPORTED_MODULE_5__/* .NotificationCategory */ .mN) {\n map.set(_NotificationChannel_service__WEBPACK_IMPORTED_MODULE_5__/* .NotificationCategory */ .mN[cat], true);\n }\n this.setNotificationsEnabled(map);\n return map;\n };\n SettingsService.prototype.notificationsEnabledFor = function (category) {\n var res = this.notificationsEnabled().get(category);\n if (typeof res != 'boolean') {\n return true;\n }\n return res;\n };\n SettingsService.prototype.setNotificationsEnabled = function (map) {\n var value = Array.from(map.entries());\n (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .saveToLocalStorage */ .m8)('NOTIFICATIONS_ENABLED', value);\n };\n SettingsService.prototype.webSocketDebounceMs = function (defaultWebSocketDebounceMs) {\n if (defaultWebSocketDebounceMs === void 0) { defaultWebSocketDebounceMs = 100; }\n return Number((0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .getFromLocalStorage */ .fp)('WEBSOCKET_DEBOUNCE_MS', defaultWebSocketDebounceMs));\n };\n SettingsService.prototype.setWebSocketDebounceMs = function (debounce) {\n (0,_app_utils_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .saveToLocalStorage */ .m8)('WEBSOCKET_DEBOUNCE_MS', String(debounce));\n };\n return SettingsService;\n}());\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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VUFBd0IsUUFBOEI7UUFDcEQsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RELElBQUksT0FBTyxHQUFHLElBQUksU0FBUyxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxpREFBdUIsR0FBdkIsVUFBd0IsR0FBdUM7UUFDN0QsSUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN4QyxxRkFBa0IsQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsNkNBQW1CLEdBQW5CLFVBQW9CLDBCQUFnQztRQUFoQyw2RUFBZ0M7UUFDbEQsT0FBTyxNQUFNLENBQUMsc0ZBQW1CLENBQUMsdUJBQXVCLEVBQUUsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRCxnREFBc0IsR0FBdEIsVUFBdUIsUUFBZ0I7UUFDckMscUZBQWtCLENBQUMsdUJBQXVCLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNILHNCQUFDO0FBQUQsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL2NyeW9zdGF0LXdlYi8uL3NyYy9hcHAvU2hhcmVkL1NlcnZpY2VzL1NldHRpbmdzLnNlcnZpY2UudHN4P2IzZTQiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCBUaGUgQ3J5b3N0YXQgQXV0aG9yc1xuICpcbiAqIFRoZSBVbml2ZXJzYWwgUGVybWlzc2l2ZSBMaWNlbnNlIChVUEwpLCBWZXJzaW9uIDEuMFxuICpcbiAqIFN1YmplY3QgdG8gdGhlIGNvbmRpdGlvbiBzZXQgZm9ydGggYmVsb3csIHBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQgdG8gYW55XG4gKiBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlLCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gYW5kL29yIGRhdGFcbiAqIChjb2xsZWN0aXZlbHkgdGhlIFwiU29mdHdhcmVcIiksIGZyZWUgb2YgY2hhcmdlIGFuZCB1bmRlciBhbnkgYW5kIGFsbCBjb3B5cmlnaHRcbiAqIHJpZ2h0cyBpbiB0aGUgU29mdHdhcmUsIGFuZCBhbnkgYW5kIGFsbCBwYXRlbnQgcmlnaHRzIG93bmVkIG9yIGZyZWVseVxuICogbGljZW5zYWJsZSBieSBlYWNoIGxpY2Vuc29yIGhlcmV1bmRlciBjb3ZlcmluZyBlaXRoZXIgKGkpIHRoZSB1bm1vZGlmaWVkXG4gKiBTb2Z0d2FyZSBhcyBjb250cmlidXRlZCB0byBvciBwcm92aWRlZCBieSBzdWNoIGxpY2Vuc29yLCBvciAoaWkpIHRoZSBMYXJnZXJcbiAqIFdvcmtzIChhcyBkZWZpbmVkIGJlbG93KSwgdG8gZGVhbCBpbiBib3RoXG4gKlxuICogKGEpIHRoZSBTb2Z0d2FyZSwgYW5kXG4gKiAoYikgYW55IHBpZWNlIG9mIHNvZnR3YXJlIGFuZC9vciBoYXJkd2FyZSBsaXN0ZWQgaW4gdGhlIGxyZ3J3cmtzLnR4dCBmaWxlIGlmXG4gKiBvbmUgaXMgaW5jbHVkZWQgd2l0aCB0aGUgU29mdHdhcmUgKGVhY2ggYSBcIkxhcmdlciBXb3JrXCIgdG8gd2hpY2ggdGhlIFNvZnR3YXJlXG4gKiBpcyBjb250cmlidXRlZCBieSBzdWNoIGxpY2Vuc29ycyksXG4gKlxuICogd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIGNvcHksIGNyZWF0ZVxuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiwgZGlzcGxheSwgcGVyZm9ybSwgYW5kIGRpc3RyaWJ1dGUgdGhlIFNvZnR3YXJlIGFuZCBtYWtlLFxuICogdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0LCBleHBvcnQsIGhhdmUgbWFkZSwgYW5kIGhhdmUgc29sZCB0aGVcbiAqIFNvZnR3YXJlIGFuZCB0aGUgTGFyZ2VyIFdvcmsocyksIGFuZCB0byBzdWJsaWNlbnNlIHRoZSBmb3JlZ29pbmcgcmlnaHRzIG9uXG4gKiBlaXRoZXIgdGhlc2Ugb3Igb3RoZXIgdGVybXMuXG4gKlxuICogVGhpcyBsaWNlbnNlIGlzIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb246XG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgZWl0aGVyIHRoaXMgY29tcGxldGUgcGVybWlzc2lvbiBub3RpY2Ugb3IgYXRcbiAqIGEgbWluaW11bSBhIHJlZmVyZW5jZSB0byB0aGUgVVBMIG11c3QgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvclxuICogc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IERlbGV0ZU9yRGlzYWJsZVdhcm5pbmdUeXBlIH0gZnJvbSAnQGFwcC9Nb2RhbC9EZWxldGVXYXJuaW5nVXRpbHMnO1xuaW1wb3J0IHsgVGhlbWVTZXR0aW5nIH0gZnJvbSAnQGFwcC9TZXR0aW5ncy9TZXR0aW5nc1V0aWxzJztcbmltcG9ydCB7IGdldEZyb21Mb2NhbFN0b3JhZ2UsIHNhdmVUb0xvY2FsU3RvcmFnZSB9IGZyb20gJ0BhcHAvdXRpbHMvTG9jYWxTdG9yYWdlJztcbmltcG9ydCB7IERhdGV0aW1lRm9ybWF0LCBkZWZhdWx0RGF0ZXRpbWVGb3JtYXQgfSBmcm9tICdAaTE4bi9kYXRldGltZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBdXRvbWF0ZWRBbmFseXNpc1JlY29yZGluZ0NvbmZpZyxcbiAgYXV0b21hdGVkQW5hbHlzaXNSZWNvcmRpbmdOYW1lLFxuICBDaGFydENvbnRyb2xsZXJDb25maWcsXG4gIGRlZmF1bHRBdXRvbWF0ZWRBbmFseXNpc1JlY29yZGluZ0NvbmZpZyxcbiAgZGVmYXVsdENoYXJ0Q29udHJvbGxlckNvbmZpZyxcbiAgUmVjb3JkaW5nQXR0cmlidXRlcyxcbn0gZnJvbSAnLi9BcGkuc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25DYXRlZ29yeSB9IGZyb20gJy4vTm90aWZpY2F0aW9uQ2hhbm5lbC5zZXJ2aWNlJztcblxuZXhwb3J0IGVudW0gRmVhdHVyZUxldmVsIHtcbiAgREVWRUxPUE1FTlQgPSAwLFxuICBCRVRBID0gMSxcbiAgUFJPRFVDVElPTiA9IDIsXG59XG5cbmV4cG9ydCBjb25zdCBhdXRvbWF0ZWRBbmFseXNpc0NvbmZpZ1RvUmVjb3JkaW5nQXR0cmlidXRlcyA9IChcbiAgY29uZmlnOiBBdXRvbWF0ZWRBbmFseXNpc1JlY29yZGluZ0NvbmZpZ1xuKTogUmVjb3JkaW5nQXR0cmlidXRlcyA9PiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogYXV0b21hdGVkQW5hbHlzaXNSZWNvcmRpbmdOYW1lLFxuICAgIGV2ZW50czogYHRlbXBsYXRlPSR7Y29uZmlnLnRlbXBsYXRlLm5hbWV9LHR5cGU9JHtjb25maWcudGVtcGxhdGUudHlwZX1gLFxuICAgIGR1cmF0aW9uOiB1bmRlZmluZWQsXG4gICAgYXJjaGl2ZU9uU3RvcDogZmFsc2UsXG4gICAgb3B0aW9uczoge1xuICAgICAgdG9EaXNrOiB0cnVlLFxuICAgICAgbWF4QWdlOiBjb25maWcubWF4QWdlLFxuICAgICAgbWF4U2l6ZTogY29uZmlnLm1heFNpemUsXG4gICAgfSxcbiAgICBtZXRhZGF0YToge1xuICAgICAgbGFiZWxzOiB7XG4gICAgICAgIG9yaWdpbjogYXV0b21hdGVkQW5hbHlzaXNSZWNvcmRpbmdOYW1lLFxuICAgICAgfSxcbiAgICB9LFxuICB9IGFzIFJlY29yZGluZ0F0dHJpYnV0ZXM7XG59O1xuZXhwb3J0IGNsYXNzIFNldHRpbmdzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZlYXR1cmVMZXZlbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZlYXR1cmVMZXZlbD4oXG4gICAgZ2V0RnJvbUxvY2FsU3RvcmFnZSgnRkVBVFVSRV9MRVZFTCcsIEZlYXR1cmVMZXZlbC5QUk9EVUNUSU9OKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Zpc2libGVOb3RpZmljYXRpb25zQ291bnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KFxuICAgIGdldEZyb21Mb2NhbFN0b3JhZ2UoJ1ZJU0lCTEVfTk9USUZJQ0FUSU9OU19DT1VOVCcsIDUpXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGF0ZXRpbWVGb3JtYXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRldGltZUZvcm1hdD4oXG4gICAgZ2V0RnJvbUxvY2FsU3RvcmFnZSgnREFURVRJTUVfRk9STUFUJywgZGVmYXVsdERhdGV0aW1lRm9ybWF0KVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RoZW1lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGhlbWVTZXR0aW5nPihnZXRGcm9tTG9jYWxTdG9yYWdlKCdUSEVNRScsIFRoZW1lU2V0dGluZy5BVVRPKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fZmVhdHVyZUxldmVsJC5zdWJzY3JpYmUoKGZlYXR1cmVMZXZlbDogRmVhdHVyZUxldmVsKSA9PiBzYXZlVG9Mb2NhbFN0b3JhZ2UoJ0ZFQVRVUkVfTEVWRUwnLCBmZWF0dXJlTGV2ZWwpKTtcbiAgICB0aGlzLl92aXNpYmxlTm90aWZpY2F0aW9uc0NvdW50JC5zdWJzY3JpYmUoKGNvdW50OiBudW1iZXIpID0+XG4gICAgICBzYXZlVG9Mb2NhbFN0b3JhZ2UoJ1ZJU0lCTEVfTk9USUZJQ0FUSU9OU19DT1VOVCcsIGNvdW50KVxuICAgICk7XG4gICAgdGhpcy5fZGF0ZXRpbWVGb3JtYXQkLnN1YnNjcmliZSgoZm9ybWF0OiBEYXRldGltZUZvcm1hdCkgPT4gc2F2ZVRvTG9jYWxTdG9yYWdlKCdEQVRFVElNRV9GT1JNQVQnLCBmb3JtYXQpKTtcbiAgICB0aGlzLl90aGVtZSQuc3Vic2NyaWJlKCh0aGVtZTogVGhlbWVTZXR0aW5nKSA9PiBzYXZlVG9Mb2NhbFN0b3JhZ2UoJ1RIRU1FJywgdGhlbWUpKTtcbiAgfVxuXG4gIG1lZGlhKHF1ZXJ5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPE1lZGlhUXVlcnlMaXN0PiB7XG4gICAgY29uc3QgbWVkaWFRdWVyeSA9IHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KTtcbiAgICByZXR1cm4gZnJvbUV2ZW50PE1lZGlhUXVlcnlMaXN0PihtZWRpYVF1ZXJ5LCAnY2hhbmdlJykucGlwZShzdGFydFdpdGgobWVkaWFRdWVyeSkpO1xuICB9XG5cbiAgdGhlbWVTZXR0aW5nKCk6IE9ic2VydmFibGU8VGhlbWVTZXR0aW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RoZW1lJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHNldFRoZW1lU2V0dGluZyh0aGVtZTogVGhlbWVTZXR0aW5nKTogdm9pZCB7XG4gICAgdGhpcy5fdGhlbWUkLm5leHQodGhlbWUpO1xuICB9XG5cbiAgZGF0ZXRpbWVGb3JtYXQoKTogT2JzZXJ2YWJsZTxEYXRldGltZUZvcm1hdD4ge1xuICAgIHJldHVybiB0aGlzLl9kYXRldGltZUZvcm1hdCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBzZXREYXRldGltZUZvcm1hdChmb3JtYXQ6IERhdGV0aW1lRm9ybWF0KSB7XG4gICAgdGhpcy5fZGF0ZXRpbWVGb3JtYXQkLm5leHQoZm9ybWF0KTtcbiAgfVxuXG4gIGZlYXR1cmVMZXZlbCgpOiBPYnNlcnZhYmxlPEZlYXR1cmVMZXZlbD4ge1xuICAgIHJldHVybiB0aGlzLl9mZWF0dXJlTGV2ZWwkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgc2V0RmVhdHVyZUxldmVsKGZlYXR1cmVMZXZlbDogRmVhdHVyZUxldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fZmVhdHVyZUxldmVsJC5uZXh0KGZlYXR1cmVMZXZlbCk7XG4gIH1cblxuICBhdXRvUmVmcmVzaEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGdldEZyb21Mb2NhbFN0b3JhZ2UoJ0FVVE9fUkVGUkVTSF9FTkFCTEVEJywgJ2ZhbHNlJykgPT09ICd0cnVlJztcbiAgfVxuXG4gIHNldEF1dG9SZWZyZXNoRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgc2F2ZVRvTG9jYWxTdG9yYWdlKCdBVVRPX1JFRlJFU0hfRU5BQkxFRCcsIFN0cmluZyhlbmFibGVkKSk7XG4gIH1cblxuICBhdXRvUmVmcmVzaFBlcmlvZChkZWZhdWx0UGVyaW9kID0gMzApOiBudW1iZXIge1xuICAgIHJldHVybiBOdW1iZXIoZ2V0RnJvbUxvY2FsU3RvcmFnZSgnQVVUT19SRUZSRVNIX1BFUklPRCcsIGRlZmF1bHRQZXJpb2QpKTtcbiAgfVxuXG4gIHNldEF1dG9SZWZyZXNoUGVyaW9kKHBlcmlvZDogbnVtYmVyKTogdm9pZCB7XG4gICAgc2F2ZVRvTG9jYWxTdG9yYWdlKCdBVVRPX1JFRlJFU0hfUEVSSU9EJywgU3RyaW5nKHBlcmlvZCkpO1xuICB9XG5cbiAgYXV0b1JlZnJlc2hVbml0cyhkZWZhdWx0VW5pdHMgPSAxMDAwKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTnVtYmVyKGdldEZyb21Mb2NhbFN0b3JhZ2UoJ0FVVE9fUkVGUkVTSF9VTklUUycsIGRlZmF1bHRVbml0cykpO1xuICB9XG5cbiAgc2V0QXV0b1JlZnJlc2hVbml0cyh1bml0czogbnVtYmVyKTogdm9pZCB7XG4gICAgc2F2ZVRvTG9jYWxTdG9yYWdlKCdBVVRPX1JFRlJFU0hfVU5JVFMnLCBTdHJpbmcodW5pdHMpKTtcbiAgfVxuXG4gIGF1dG9tYXRlZEFuYWx5c2lzUmVjb3JkaW5nQ29uZmlnKFxuICAgIGRlZmF1bHRDb25maWcgPSBkZWZhdWx0QXV0b21hdGVkQW5hbHlzaXNSZWNvcmRpbmdDb25maWdcbiAgKTogQXV0b21hdGVkQW5hbHlzaXNSZWNvcmRpbmdDb25maWcge1xuICAgIHJldHVybiBnZXRGcm9tTG9jYWxTdG9yYWdlKCdBVVRPTUFURURfQU5BTFlTSVNfUkVDT1JESU5HX0NPTkZJRycsIGRlZmF1bHRDb25maWcpO1xuICB9XG5cbiAgc2V0QXV0b21hdGVkQW5hbHlzaXNSZWNvcmRpbmdDb25maWcoY29uZmlnOiBBdXRvbWF0ZWRBbmFseXNpc1JlY29yZGluZ0NvbmZpZyk6IHZvaWQge1xuICAgIHNhdmVUb0xvY2FsU3RvcmFnZSgnQVVUT01BVEVEX0FOQUxZU0lTX1JFQ09SRElOR19DT05GSUcnLCBjb25maWcpO1xuICB9XG5cbiAgY2hhcnRDb250cm9sbGVyQ29uZmlnKGRlZmF1bHRDb25maWcgPSBkZWZhdWx0Q2hhcnRDb250cm9sbGVyQ29uZmlnKTogQ2hhcnRDb250cm9sbGVyQ29uZmlnIHtcbiAgICByZXR1cm4gZ2V0RnJvbUxvY2FsU3RvcmFnZSgnQ0hBUlRfQ09OVFJPTExFUl9DT05GSUcnLCBkZWZhdWx0Q29uZmlnKTtcbiAgfVxuXG4gIHNldENoYXJ0Q29udHJvbGxlckNvbmZpZyhjb25maWc6IENoYXJ0Q29udHJvbGxlckNvbmZpZyk6IHZvaWQge1xuICAgIHNhdmVUb0xvY2FsU3RvcmFnZSgnQ0hBUlRfQ09OVFJPTExFUl9DT05GSUcnLCBjb25maWcpO1xuICB9XG5cbiAgZGVsZXRpb25EaWFsb2dzRW5hYmxlZCgpOiBNYXA8RGVsZXRlT3JEaXNhYmxlV2FybmluZ1R5cGUsIGJvb2xlYW4+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGdldEZyb21Mb2NhbFN0b3JhZ2UoJ0RFTEVUSU9OX0RJQUxPR1NfRU5BQkxFRCcsIHVuZGVmaW5lZCk7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IG9iaiA9IG5ldyBNYXA8c3RyaW5nLCBBdXRvbWF0ZWRBbmFseXNpc1JlY29yZGluZ0NvbmZpZz4oQXJyYXkuZnJvbShPYmplY3QuZW50cmllcyh2YWx1ZSkpKTtcbiAgICAgIGNvbnN0IHJlcyA9IG5ldyBNYXA8RGVsZXRlT3JEaXNhYmxlV2FybmluZ1R5cGUsIGJvb2xlYW4+KCk7XG4gICAgICBvYmouZm9yRWFjaCgodikgPT4ge1xuICAgICAgICByZXMuc2V0KHZbMF0gYXMgRGVsZXRlT3JEaXNhYmxlV2FybmluZ1R5cGUsIHZbMV0gYXMgYm9vbGVhbik7XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgdCBpbiBEZWxldGVPckRpc2FibGVXYXJuaW5nVHlwZSkge1xuICAgICAgICBpZiAoIXJlcy5oYXMoRGVsZXRlT3JEaXNhYmxlV2FybmluZ1R5cGVbdF0pKSB7XG4gICAgICAgICAgcmVzLnNldChEZWxldGVPckRpc2FibGVXYXJuaW5nVHlwZVt0XSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxEZWxldGVPckRpc2FibGVXYXJuaW5nVHlwZSwgYm9vbGVhbj4oKTtcbiAgICBmb3IgKGNvbnN0IGNhdCBpbiBEZWxldGVPckRpc2FibGVXYXJuaW5nVHlwZSkge1xuICAgICAgbWFwLnNldChEZWxldGVPckRpc2FibGVXYXJuaW5nVHlwZVtjYXRdLCB0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5zZXREZWxldGlvbkRpYWxvZ3NFbmFibGVkKG1hcCk7XG4gICAgcmV0dXJuIG1hcDtcbiAgfVxuXG4gIGRlbGV0aW9uRGlhbG9nc0VuYWJsZWRGb3IodHlwZTogRGVsZXRlT3JEaXNhYmxlV2FybmluZ1R5cGUpOiBib29sZWFuIHtcbiAgICBjb25zdCByZXMgPSB0aGlzLmRlbGV0aW9uRGlhbG9nc0VuYWJsZWQoKS5nZXQodHlwZSk7XG4gICAgaWYgKHR5cGVvZiByZXMgIT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHNldERlbGV0aW9uRGlhbG9nc0VuYWJsZWQobWFwOiBNYXA8RGVsZXRlT3JEaXNhYmxlV2FybmluZ1R5cGUsIGJvb2xlYW4+KTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSBBcnJheS5mcm9tKG1hcC5lbnRyaWVzKCkpO1xuICAgIHNhdmVUb0xvY2FsU3RvcmFnZSgnREVMRVRJT05fRElBTE9HU19FTkFCTEVEJywgdmFsdWUpO1xuICB9XG5cbiAgc2V0RGVsZXRpb25EaWFsb2dzRW5hYmxlZEZvcih0eXBlOiBEZWxldGVPckRpc2FibGVXYXJuaW5nVHlwZSwgZW5hYmxlZDogYm9vbGVhbikge1xuICAgIGNvbnN0IG1hcCA9IHRoaXMuZGVsZXRpb25EaWFsb2dzRW5hYmxlZCgpO1xuICAgIG1hcC5zZXQodHlwZSwgZW5hYmxlZCk7XG4gICAgdGhpcy5zZXREZWxldGlvbkRpYWxvZ3NFbmFibGVkKG1hcCk7XG4gIH1cblxuICB2aXNpYmxlTm90aWZpY2F0aW9uc0NvdW50KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGVOb3RpZmljYXRpb25zQ291bnQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgc2V0VmlzaWJsZU5vdGlmaWNhdGlvbkNvdW50KGNvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl92aXNpYmxlTm90aWZpY2F0aW9uc0NvdW50JC5uZXh0KGNvdW50KTtcbiAgfVxuXG4gIG5vdGlmaWNhdGlvbnNFbmFibGVkKCk6IE1hcDxOb3RpZmljYXRpb25DYXRlZ29yeSwgYm9vbGVhbj4ge1xuICAgIGNvbnN0IHZhbHVlID0gZ2V0RnJvbUxvY2FsU3RvcmFnZSgnTk9USUZJQ0FUSU9OU19FTkFCTEVEJywgdW5kZWZpbmVkKTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgcmVzID0gbmV3IE1hcDxOb3RpZmljYXRpb25DYXRlZ29yeSwgYm9vbGVhbj4oKTtcbiAgICAgIHZhbHVlLmZvckVhY2goKHY6IFtOb3RpZmljYXRpb25DYXRlZ29yeSwgYm9vbGVhbl0pID0+IHtcbiAgICAgICAgcmVzLnNldCh2WzBdLCB2WzFdKTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCB0IGluIE5vdGlmaWNhdGlvbkNhdGVnb3J5KSB7XG4gICAgICAgIGlmICghcmVzLmhhcyhOb3RpZmljYXRpb25DYXRlZ29yeVt0XSkpIHtcbiAgICAgICAgICByZXMuc2V0KE5vdGlmaWNhdGlvbkNhdGVnb3J5W3RdLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxOb3RpZmljYXRpb25DYXRlZ29yeSwgYm9vbGVhbj4oKTtcbiAgICBmb3IgKGNvbnN0IGNhdCBpbiBOb3RpZmljYXRpb25DYXRlZ29yeSkge1xuICAgICAgbWFwLnNldChOb3RpZmljYXRpb25DYXRlZ29yeVtjYXRdLCB0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5zZXROb3RpZmljYXRpb25zRW5hYmxlZChtYXApO1xuICAgIHJldHVybiBtYXA7XG4gIH1cblxuICBub3RpZmljYXRpb25zRW5hYmxlZEZvcihjYXRlZ29yeTogTm90aWZpY2F0aW9uQ2F0ZWdvcnkpOiBib29sZWFuIHtcbiAgICBjb25zdCByZXMgPSB0aGlzLm5vdGlmaWNhdGlvbnNFbmFibGVkKCkuZ2V0KGNhdGVnb3J5KTtcbiAgICBpZiAodHlwZW9mIHJlcyAhPSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQobWFwOiBNYXA8Tm90aWZpY2F0aW9uQ2F0ZWdvcnksIGJvb2xlYW4+KTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSBBcnJheS5mcm9tKG1hcC5lbnRyaWVzKCkpO1xuICAgIHNhdmVUb0xvY2FsU3RvcmFnZSgnTk9USUZJQ0FUSU9OU19FTkFCTEVEJywgdmFsdWUpO1xuICB9XG5cbiAgd2ViU29ja2V0RGVib3VuY2VNcyhkZWZhdWx0V2ViU29ja2V0RGVib3VuY2VNcyA9IDEwMCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE51bWJlcihnZXRGcm9tTG9jYWxTdG9yYWdlKCdXRUJTT0NLRVRfREVCT1VOQ0VfTVMnLCBkZWZhdWx0V2ViU29ja2V0RGVib3VuY2VNcykpO1xuICB9XG5cbiAgc2V0V2ViU29ja2V0RGVib3VuY2VNcyhkZWJvdW5jZTogbnVtYmVyKTogdm9pZCB7XG4gICAgc2F2ZVRvTG9jYWxTdG9yYWdlKCdXRUJTT0NLRVRfREVCT1VOQ0VfTVMnLCBTdHJpbmcoZGVib3VuY2UpKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///73721\n")},38386:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "E4": () => (/* binding */ indexOfTarget),\n/* harmony export */ "FW": () => (/* binding */ getTargetRepresentation),\n/* harmony export */ "JE": () => (/* binding */ NO_TARGET),\n/* harmony export */ "cH": () => (/* binding */ TargetService),\n/* harmony export */ "iJ": () => (/* binding */ isTargetAgentHttp),\n/* harmony export */ "pw": () => (/* binding */ TargetInstance),\n/* harmony export */ "v4": () => (/* binding */ isEqualTarget),\n/* harmony export */ "vR": () => (/* binding */ includesTarget)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86515);\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82649);\n/*\n * Copyright The Cryostat Authors\n *\n * The Universal Permissive License (UPL), Version 1.0\n *\n * Subject to the condition set forth below, permission is hereby granted to any\n * person obtaining a copy of this software, associated documentation and/or data\n * (collectively the "Software"), free of charge and under any and all copyright\n * rights in the Software, and any and all patent rights owned or freely\n * licensable by each licensor hereunder covering either (i) the unmodified\n * Software as contributed to or provided by such licensor, or (ii) the Larger\n * Works (as defined below), to deal in both\n *\n * (a) the Software, and\n * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if\n * one is included with the Software (each a "Larger Work" to which the Software\n * is contributed by such licensors),\n *\n * without restriction, including without limitation the rights to copy, create\n * derivative works of, display, perform, and distribute the Software and make,\n * use, sell, offer for sale, import, export, have made, and have sold the\n * Software and the Larger Work(s), and to sublicense the foregoing rights on\n * either these or other terms.\n *\n * This license is subject to the following condition:\n * The above copyright notice and either this complete permission notice or at\n * a minimum a reference to the UPL must be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nvar NO_TARGET = {};\nvar includesTarget = function (arr, target) {\n return arr.some(function (t) { return t.connectUrl === target.connectUrl; });\n};\nvar isEqualTarget = function (a, b) {\n return a.connectUrl === b.connectUrl;\n};\nvar indexOfTarget = function (arr, target) {\n var index = -1;\n arr.forEach(function (t, idx) {\n if (t.connectUrl === target.connectUrl) {\n index = idx;\n }\n });\n return index;\n};\nvar getTargetRepresentation = function (t) {\n return !t.alias || t.alias === t.connectUrl ? "".concat(t.connectUrl) : "".concat(t.alias, " (").concat(t.connectUrl, ")");\n};\nvar isTargetAgentHttp = function (t) { return t.connectUrl.startsWith(\'http\'); };\nvar TargetService = /** @class */ (function () {\n function TargetService() {\n this._target = new rxjs__WEBPACK_IMPORTED_MODULE_0__/* .BehaviorSubject */ .X(NO_TARGET);\n this._authFailure = new rxjs__WEBPACK_IMPORTED_MODULE_1__/* .Subject */ .x();\n this._authRetry = new rxjs__WEBPACK_IMPORTED_MODULE_1__/* .Subject */ .x();\n this._sslFailure = new rxjs__WEBPACK_IMPORTED_MODULE_1__/* .Subject */ .x();\n }\n TargetService.prototype.setTarget = function (target) {\n if (target === NO_TARGET || !!target.connectUrl) {\n this._target.next(target);\n }\n else {\n throw new Error(\'Malformed target\');\n }\n };\n TargetService.prototype.target = function () {\n return this._target.asObservable();\n };\n TargetService.prototype.authFailure = function () {\n return this._authFailure.asObservable();\n };\n TargetService.prototype.setAuthFailure = function () {\n this._authFailure.next();\n };\n TargetService.prototype.authRetry = function () {\n return this._authRetry.asObservable();\n };\n TargetService.prototype.setAuthRetry = function () {\n this._authRetry.next();\n };\n TargetService.prototype.sslFailure = function () {\n return this._sslFailure.asObservable();\n };\n TargetService.prototype.setSslFailure = function () {\n this._sslFailure.next();\n };\n return TargetService;\n}());\nvar TargetInstance = new TargetService();\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEdBQWI7UUFDRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFDSCxvQkFBQztBQUFELENBQUM7QUFFRCxJQUFNLGNBQWMsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO0FBRUYiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jcnlvc3RhdC13ZWIvLi9zcmMvYXBwL1NoYXJlZC9TZXJ2aWNlcy9UYXJnZXQuc2VydmljZS50c3g/ZDQ1OCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IFRoZSBDcnlvc3RhdCBBdXRob3JzXG4gKlxuICogVGhlIFVuaXZlcnNhbCBQZXJtaXNzaXZlIExpY2Vuc2UgKFVQTCksIFZlcnNpb24gMS4wXG4gKlxuICogU3ViamVjdCB0byB0aGUgY29uZGl0aW9uIHNldCBmb3J0aCBiZWxvdywgcGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCB0byBhbnlcbiAqIHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUsIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBhbmQvb3IgZGF0YVxuICogKGNvbGxlY3RpdmVseSB0aGUgXCJTb2Z0d2FyZVwiKSwgZnJlZSBvZiBjaGFyZ2UgYW5kIHVuZGVyIGFueSBhbmQgYWxsIGNvcHlyaWdodFxuICogcmlnaHRzIGluIHRoZSBTb2Z0d2FyZSwgYW5kIGFueSBhbmQgYWxsIHBhdGVudCByaWdodHMgb3duZWQgb3IgZnJlZWx5XG4gKiBsaWNlbnNhYmxlIGJ5IGVhY2ggbGljZW5zb3IgaGVyZXVuZGVyIGNvdmVyaW5nIGVpdGhlciAoaSkgdGhlIHVubW9kaWZpZWRcbiAqIFNvZnR3YXJlIGFzIGNvbnRyaWJ1dGVkIHRvIG9yIHByb3ZpZGVkIGJ5IHN1Y2ggbGljZW5zb3IsIG9yIChpaSkgdGhlIExhcmdlclxuICogV29ya3MgKGFzIGRlZmluZWQgYmVsb3cpLCB0byBkZWFsIGluIGJvdGhcbiAqXG4gKiAoYSkgdGhlIFNvZnR3YXJlLCBhbmRcbiAqIChiKSBhbnkgcGllY2Ugb2Ygc29mdHdhcmUgYW5kL29yIGhhcmR3YXJlIGxpc3RlZCBpbiB0aGUgbHJncndya3MudHh0IGZpbGUgaWZcbiAqIG9uZSBpcyBpbmNsdWRlZCB3aXRoIHRoZSBTb2Z0d2FyZSAoZWFjaCBhIFwiTGFyZ2VyIFdvcmtcIiB0byB3aGljaCB0aGUgU29mdHdhcmVcbiAqIGlzIGNvbnRyaWJ1dGVkIGJ5IHN1Y2ggbGljZW5zb3JzKSxcbiAqXG4gKiB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gY29weSwgY3JlYXRlXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mLCBkaXNwbGF5LCBwZXJmb3JtLCBhbmQgZGlzdHJpYnV0ZSB0aGUgU29mdHdhcmUgYW5kIG1ha2UsXG4gKiB1c2UsIHNlbGwsIG9mZmVyIGZvciBzYWxlLCBpbXBvcnQsIGV4cG9ydCwgaGF2ZSBtYWRlLCBhbmQgaGF2ZSBzb2xkIHRoZVxuICogU29mdHdhcmUgYW5kIHRoZSBMYXJnZXIgV29yayhzKSwgYW5kIHRvIHN1YmxpY2Vuc2UgdGhlIGZvcmVnb2luZyByaWdodHMgb25cbiAqIGVpdGhlciB0aGVzZSBvciBvdGhlciB0ZXJtcy5cbiAqXG4gKiBUaGlzIGxpY2Vuc2UgaXMgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbjpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBlaXRoZXIgdGhpcyBjb21wbGV0ZSBwZXJtaXNzaW9uIG5vdGljZSBvciBhdFxuICogYSBtaW5pbXVtIGEgcmVmZXJlbmNlIHRvIHRoZSBVUEwgbXVzdCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yXG4gKiBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgTk9fVEFSR0VUID0ge30gYXMgVGFyZ2V0O1xuXG5leHBvcnQgY29uc3QgaW5jbHVkZXNUYXJnZXQgPSAoYXJyOiBUYXJnZXRbXSwgdGFyZ2V0OiBUYXJnZXQpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIGFyci5zb21lKCh0KSA9PiB0LmNvbm5lY3RVcmwgPT09IHRhcmdldC5jb25uZWN0VXJsKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0VxdWFsVGFyZ2V0ID0gKGE6IFRhcmdldCwgYjogVGFyZ2V0KTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBhLmNvbm5lY3RVcmwgPT09IGIuY29ubmVjdFVybDtcbn07XG5cbmV4cG9ydCBjb25zdCBpbmRleE9mVGFyZ2V0ID0gKGFycjogVGFyZ2V0W10sIHRhcmdldDogVGFyZ2V0KTogbnVtYmVyID0+IHtcbiAgbGV0IGluZGV4ID0gLTE7XG4gIGFyci5mb3JFYWNoKCh0LCBpZHgpID0+IHtcbiAgICBpZiAodC5jb25uZWN0VXJsID09PSB0YXJnZXQuY29ubmVjdFVybCkge1xuICAgICAgaW5kZXggPSBpZHg7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGluZGV4O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRhcmdldFJlcHJlc2VudGF0aW9uID0gKHQ6IFRhcmdldCkgPT5cbiAgIXQuYWxpYXMgfHwgdC5hbGlhcyA9PT0gdC5jb25uZWN0VXJsID8gYCR7dC5jb25uZWN0VXJsfWAgOiBgJHt0LmFsaWFzfSAoJHt0LmNvbm5lY3RVcmx9KWA7XG5cbmV4cG9ydCBjb25zdCBpc1RhcmdldEFnZW50SHR0cCA9ICh0OiBUYXJnZXQpID0+IHQuY29ubmVjdFVybC5zdGFydHNXaXRoKCdodHRwJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0IHtcbiAganZtSWQ/OiBzdHJpbmc7IC8vIHByZXNlbnQgaW4gcmVzcG9uc2VzLCBidXQgd2UgZG8gbm90IG5lZWQgdG8gcHJvdmlkZSBpdCBpbiByZXF1ZXN0c1xuICBjb25uZWN0VXJsOiBzdHJpbmc7XG4gIGFsaWFzOiBzdHJpbmc7XG4gIGxhYmVscz86IG9iamVjdDtcbiAgYW5ub3RhdGlvbnM/OiB7XG4gICAgY3J5b3N0YXQ6IG9iamVjdDtcbiAgICBwbGF0Zm9ybTogb2JqZWN0O1xuICB9O1xufVxuXG5jbGFzcyBUYXJnZXRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGFyZ2V0OiBTdWJqZWN0PFRhcmdldD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KE5PX1RBUkdFVCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1dGhGYWlsdXJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0aFJldHJ5OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3NsRmFpbHVyZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgc2V0VGFyZ2V0KHRhcmdldDogVGFyZ2V0KTogdm9pZCB7XG4gICAgaWYgKHRhcmdldCA9PT0gTk9fVEFSR0VUIHx8ICEhdGFyZ2V0LmNvbm5lY3RVcmwpIHtcbiAgICAgIHRoaXMuX3RhcmdldC5uZXh0KHRhcmdldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWFsZm9ybWVkIHRhcmdldCcpO1xuICAgIH1cbiAgfVxuXG4gIHRhcmdldCgpOiBPYnNlcnZhYmxlPFRhcmdldD4ge1xuICAgIHJldHVybiB0aGlzLl90YXJnZXQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBhdXRoRmFpbHVyZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYXV0aEZhaWx1cmUuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBzZXRBdXRoRmFpbHVyZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRoRmFpbHVyZS5uZXh0KCk7XG4gIH1cblxuICBhdXRoUmV0cnkoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2F1dGhSZXRyeS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHNldEF1dGhSZXRyeSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRoUmV0cnkubmV4dCgpO1xuICB9XG5cbiAgc3NsRmFpbHVyZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fc3NsRmFpbHVyZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHNldFNzbEZhaWx1cmUoKTogdm9pZCB7XG4gICAgdGhpcy5fc3NsRmFpbHVyZS5uZXh0KCk7XG4gIH1cbn1cblxuY29uc3QgVGFyZ2V0SW5zdGFuY2UgPSBuZXcgVGFyZ2V0U2VydmljZSgpO1xuXG5leHBvcnQgeyBUYXJnZXRTZXJ2aWNlLCBUYXJnZXRJbnN0YW5jZSB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///38386\n')},74687:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "bZ": () => (/* binding */ removeFromLocalStorage),\n/* harmony export */ "fp": () => (/* binding */ getFromLocalStorage),\n/* harmony export */ "m8": () => (/* binding */ saveToLocalStorage)\n/* harmony export */ });\n/* unused harmony export LocalStorageKey */\n/*\n * Copyright The Cryostat Authors\n *\n * The Universal Permissive License (UPL), Version 1.0\n *\n * Subject to the condition set forth below, permission is hereby granted to any\n * person obtaining a copy of this software, associated documentation and/or data\n * (collectively the "Software"), free of charge and under any and all copyright\n * rights in the Software, and any and all patent rights owned or freely\n * licensable by each licensor hereunder covering either (i) the unmodified\n * Software as contributed to or provided by such licensor, or (ii) the Larger\n * Works (as defined below), to deal in both\n *\n * (a) the Software, and\n * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if\n * one is included with the Software (each a "Larger Work" to which the Software\n * is contributed by such licensors),\n *\n * without restriction, including without limitation the rights to copy, create\n * derivative works of, display, perform, and distribute the Software and make,\n * use, sell, offer for sale, import, export, have made, and have sold the\n * Software and the Larger Work(s), and to sublicense the foregoing rights on\n * either these or other terms.\n *\n * This license is subject to the following condition:\n * The above copyright notice and either this complete permission notice or at\n * a minimum a reference to the UPL must be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar LocalStorageKey;\n(function (LocalStorageKey) {\n LocalStorageKey[LocalStorageKey["ASSET_VERSION"] = 0] = "ASSET_VERSION";\n LocalStorageKey[LocalStorageKey["FEATURE_LEVEL"] = 1] = "FEATURE_LEVEL";\n LocalStorageKey[LocalStorageKey["DASHBOARD_CFG"] = 2] = "DASHBOARD_CFG";\n LocalStorageKey[LocalStorageKey["AUTOMATED_ANALYSIS_FILTERS"] = 3] = "AUTOMATED_ANALYSIS_FILTERS";\n LocalStorageKey[LocalStorageKey["TARGET_RECORDING_FILTERS"] = 4] = "TARGET_RECORDING_FILTERS";\n LocalStorageKey[LocalStorageKey["CREDENTIAL_LOCATION"] = 5] = "CREDENTIAL_LOCATION";\n LocalStorageKey[LocalStorageKey["TARGET"] = 6] = "TARGET";\n LocalStorageKey[LocalStorageKey["TARGET_FAVORITES"] = 7] = "TARGET_FAVORITES";\n LocalStorageKey[LocalStorageKey["TOPOLOGY_GRAPH_POSITONS"] = 8] = "TOPOLOGY_GRAPH_POSITONS";\n LocalStorageKey[LocalStorageKey["TOPOLOGY_NODE_POSITIONS"] = 9] = "TOPOLOGY_NODE_POSITIONS";\n LocalStorageKey[LocalStorageKey["TOPOLOGY_CONFIG"] = 10] = "TOPOLOGY_CONFIG";\n LocalStorageKey[LocalStorageKey["TOPOLOGY_FILTERS"] = 11] = "TOPOLOGY_FILTERS";\n LocalStorageKey[LocalStorageKey["AUTO_REFRESH_ENABLED"] = 12] = "AUTO_REFRESH_ENABLED";\n LocalStorageKey[LocalStorageKey["AUTO_REFRESH_PERIOD"] = 13] = "AUTO_REFRESH_PERIOD";\n LocalStorageKey[LocalStorageKey["AUTO_REFRESH_UNITS"] = 14] = "AUTO_REFRESH_UNITS";\n LocalStorageKey[LocalStorageKey["AUTOMATED_ANALYSIS_RECORDING_CONFIG"] = 15] = "AUTOMATED_ANALYSIS_RECORDING_CONFIG";\n LocalStorageKey[LocalStorageKey["CHART_CONTROLLER_CONFIG"] = 16] = "CHART_CONTROLLER_CONFIG";\n LocalStorageKey[LocalStorageKey["DELETION_DIALOGS_ENABLED"] = 17] = "DELETION_DIALOGS_ENABLED";\n LocalStorageKey[LocalStorageKey["VISIBLE_NOTIFICATIONS_COUNT"] = 18] = "VISIBLE_NOTIFICATIONS_COUNT";\n LocalStorageKey[LocalStorageKey["NOTIFICATIONS_ENABLED"] = 19] = "NOTIFICATIONS_ENABLED";\n LocalStorageKey[LocalStorageKey["WEBSOCKET_DEBOUNCE_MS"] = 20] = "WEBSOCKET_DEBOUNCE_MS";\n LocalStorageKey[LocalStorageKey["DATETIME_FORMAT"] = 21] = "DATETIME_FORMAT";\n LocalStorageKey[LocalStorageKey["MATCH_EXPRES_VIS_GRAPH_POSITIONS"] = 22] = "MATCH_EXPRES_VIS_GRAPH_POSITIONS";\n LocalStorageKey[LocalStorageKey["MATCH_EXPRES_VIS_NODE_POSITIONS"] = 23] = "MATCH_EXPRES_VIS_NODE_POSITIONS";\n LocalStorageKey[LocalStorageKey["THEME"] = 24] = "THEME";\n})(LocalStorageKey || (LocalStorageKey = {}));\nvar getFromLocalStorage = function (key, defaultValue) {\n if (typeof window === \'undefined\') {\n return defaultValue;\n }\n try {\n var item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : defaultValue;\n }\n catch (error) {\n return defaultValue;\n }\n};\nvar saveToLocalStorage = function (key, value, error) {\n try {\n if (typeof window !== \'undefined\') {\n window.localStorage.setItem(key, JSON.stringify(value));\n }\n }\n catch (err) {\n console.warn(err);\n error && error();\n }\n};\nvar removeFromLocalStorage = function (key, error) {\n try {\n if (typeof window !== \'undefined\') {\n window.localStorage.removeItem(key);\n }\n }\n catch (err) {\n console.warn(err);\n error && error();\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzQ2ODcuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9DRztBQUNILHVEQUF1RDtBQUN2RCxJQUFZLGVBMEJYO0FBMUJELFdBQVksZUFBZTtJQUN6Qix1RUFBYTtJQUNiLHVFQUFhO0lBQ2IsdUVBQWE7SUFDYixpR0FBMEI7SUFDMUIsNkZBQXdCO0lBQ3hCLG1GQUFtQjtJQUNuQix5REFBTTtJQUNOLDZFQUFnQjtJQUNoQiwyRkFBdUI7SUFDdkIsMkZBQXVCO0lBQ3ZCLDRFQUFlO0lBQ2YsOEVBQWdCO0lBQ2hCLHNGQUFvQjtJQUNwQixvRkFBbUI7SUFDbkIsa0ZBQWtCO0lBQ2xCLG9IQUFtQztJQUNuQyw0RkFBdUI7SUFDdkIsOEZBQXdCO0lBQ3hCLG9HQUEyQjtJQUMzQix3RkFBcUI7SUFDckIsd0ZBQXFCO0lBQ3JCLDRFQUFlO0lBQ2YsOEdBQWdDO0lBQ2hDLDRHQUErQjtJQUMvQix3REFBSztBQUNQLENBQUMsRUExQlcsZUFBZSxLQUFmLGVBQWUsUUEwQjFCO0FBSU0sSUFBTSxtQkFBbUIsR0FBRyxVQUFDLEdBQTJCLEVBQUUsWUFBaUI7SUFDaEYsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7UUFDakMsT0FBTyxZQUFZLENBQUM7S0FDckI7SUFDRCxJQUFJO1FBQ0YsSUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztLQUMvQztJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsT0FBTyxZQUFZLENBQUM7S0FDckI7QUFDSCxDQUFDLENBQUM7QUFFSyxJQUFNLGtCQUFrQixHQUFHLFVBQUMsR0FBMkIsRUFBRSxLQUFVLEVBQUUsS0FBa0I7SUFDNUYsSUFBSTtRQUNGLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFO1lBQ2pDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDekQ7S0FDRjtJQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQixLQUFLLElBQUksS0FBSyxFQUFFLENBQUM7S0FDbEI7QUFDSCxDQUFDLENBQUM7QUFFSyxJQUFNLHNCQUFzQixHQUFHLFVBQUMsR0FBMkIsRUFBRSxLQUFrQjtJQUNwRixJQUFJO1FBQ0YsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7WUFDakMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckM7S0FDRjtJQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQixLQUFLLElBQUksS0FBSyxFQUFFLENBQUM7S0FDbEI7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jcnlvc3RhdC13ZWIvLi9zcmMvYXBwL3V0aWxzL0xvY2FsU3RvcmFnZS50cz9jNDYzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgVGhlIENyeW9zdGF0IEF1dGhvcnNcbiAqXG4gKiBUaGUgVW5pdmVyc2FsIFBlcm1pc3NpdmUgTGljZW5zZSAoVVBMKSwgVmVyc2lvbiAxLjBcbiAqXG4gKiBTdWJqZWN0IHRvIHRoZSBjb25kaXRpb24gc2V0IGZvcnRoIGJlbG93LCBwZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkIHRvIGFueVxuICogcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSwgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGFuZC9vciBkYXRhXG4gKiAoY29sbGVjdGl2ZWx5IHRoZSBcIlNvZnR3YXJlXCIpLCBmcmVlIG9mIGNoYXJnZSBhbmQgdW5kZXIgYW55IGFuZCBhbGwgY29weXJpZ2h0XG4gKiByaWdodHMgaW4gdGhlIFNvZnR3YXJlLCBhbmQgYW55IGFuZCBhbGwgcGF0ZW50IHJpZ2h0cyBvd25lZCBvciBmcmVlbHlcbiAqIGxpY2Vuc2FibGUgYnkgZWFjaCBsaWNlbnNvciBoZXJldW5kZXIgY292ZXJpbmcgZWl0aGVyIChpKSB0aGUgdW5tb2RpZmllZFxuICogU29mdHdhcmUgYXMgY29udHJpYnV0ZWQgdG8gb3IgcHJvdmlkZWQgYnkgc3VjaCBsaWNlbnNvciwgb3IgKGlpKSB0aGUgTGFyZ2VyXG4gKiBXb3JrcyAoYXMgZGVmaW5lZCBiZWxvdyksIHRvIGRlYWwgaW4gYm90aFxuICpcbiAqIChhKSB0aGUgU29mdHdhcmUsIGFuZFxuICogKGIpIGFueSBwaWVjZSBvZiBzb2Z0d2FyZSBhbmQvb3IgaGFyZHdhcmUgbGlzdGVkIGluIHRoZSBscmdyd3Jrcy50eHQgZmlsZSBpZlxuICogb25lIGlzIGluY2x1ZGVkIHdpdGggdGhlIFNvZnR3YXJlIChlYWNoIGEgXCJMYXJnZXIgV29ya1wiIHRvIHdoaWNoIHRoZSBTb2Z0d2FyZVxuICogaXMgY29udHJpYnV0ZWQgYnkgc3VjaCBsaWNlbnNvcnMpLFxuICpcbiAqIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byBjb3B5LCBjcmVhdGVcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YsIGRpc3BsYXksIHBlcmZvcm0sIGFuZCBkaXN0cmlidXRlIHRoZSBTb2Z0d2FyZSBhbmQgbWFrZSxcbiAqIHVzZSwgc2VsbCwgb2ZmZXIgZm9yIHNhbGUsIGltcG9ydCwgZXhwb3J0LCBoYXZlIG1hZGUsIGFuZCBoYXZlIHNvbGQgdGhlXG4gKiBTb2Z0d2FyZSBhbmQgdGhlIExhcmdlciBXb3JrKHMpLCBhbmQgdG8gc3VibGljZW5zZSB0aGUgZm9yZWdvaW5nIHJpZ2h0cyBvblxuICogZWl0aGVyIHRoZXNlIG9yIG90aGVyIHRlcm1zLlxuICpcbiAqIFRoaXMgbGljZW5zZSBpcyBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uOlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIGVpdGhlciB0aGlzIGNvbXBsZXRlIHBlcm1pc3Npb24gbm90aWNlIG9yIGF0XG4gKiBhIG1pbmltdW0gYSByZWZlcmVuY2UgdG8gdGhlIFVQTCBtdXN0IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3JcbiAqIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuZXhwb3J0IGVudW0gTG9jYWxTdG9yYWdlS2V5IHtcbiAgQVNTRVRfVkVSU0lPTixcbiAgRkVBVFVSRV9MRVZFTCxcbiAgREFTSEJPQVJEX0NGRyxcbiAgQVVUT01BVEVEX0FOQUxZU0lTX0ZJTFRFUlMsXG4gIFRBUkdFVF9SRUNPUkRJTkdfRklMVEVSUyxcbiAgQ1JFREVOVElBTF9MT0NBVElPTixcbiAgVEFSR0VULFxuICBUQVJHRVRfRkFWT1JJVEVTLFxuICBUT1BPTE9HWV9HUkFQSF9QT1NJVE9OUyxcbiAgVE9QT0xPR1lfTk9ERV9QT1NJVElPTlMsXG4gIFRPUE9MT0dZX0NPTkZJRyxcbiAgVE9QT0xPR1lfRklMVEVSUyxcbiAgQVVUT19SRUZSRVNIX0VOQUJMRUQsXG4gIEFVVE9fUkVGUkVTSF9QRVJJT0QsXG4gIEFVVE9fUkVGUkVTSF9VTklUUyxcbiAgQVVUT01BVEVEX0FOQUxZU0lTX1JFQ09SRElOR19DT05GSUcsXG4gIENIQVJUX0NPTlRST0xMRVJfQ09ORklHLFxuICBERUxFVElPTl9ESUFMT0dTX0VOQUJMRUQsXG4gIFZJU0lCTEVfTk9USUZJQ0FUSU9OU19DT1VOVCxcbiAgTk9USUZJQ0FUSU9OU19FTkFCTEVELFxuICBXRUJTT0NLRVRfREVCT1VOQ0VfTVMsXG4gIERBVEVUSU1FX0ZPUk1BVCxcbiAgTUFUQ0hfRVhQUkVTX1ZJU19HUkFQSF9QT1NJVElPTlMsXG4gIE1BVENIX0VYUFJFU19WSVNfTk9ERV9QT1NJVElPTlMsXG4gIFRIRU1FLFxufVxuXG5leHBvcnQgdHlwZSBMb2NhbFN0b3JhZ2VLZXlTdHJpbmdzID0ga2V5b2YgdHlwZW9mIExvY2FsU3RvcmFnZUtleTtcblxuZXhwb3J0IGNvbnN0IGdldEZyb21Mb2NhbFN0b3JhZ2UgPSAoa2V5OiBMb2NhbFN0b3JhZ2VLZXlTdHJpbmdzLCBkZWZhdWx0VmFsdWU6IGFueSk6IGFueSA9PiB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cbiAgdHJ5IHtcbiAgICBjb25zdCBpdGVtID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgcmV0dXJuIGl0ZW0gPyBKU09OLnBhcnNlKGl0ZW0pIDogZGVmYXVsdFZhbHVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzYXZlVG9Mb2NhbFN0b3JhZ2UgPSAoa2V5OiBMb2NhbFN0b3JhZ2VLZXlTdHJpbmdzLCB2YWx1ZTogYW55LCBlcnJvcj86ICgpID0+IHZvaWQpID0+IHtcbiAgdHJ5IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLndhcm4oZXJyKTtcbiAgICBlcnJvciAmJiBlcnJvcigpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlRnJvbUxvY2FsU3RvcmFnZSA9IChrZXk6IExvY2FsU3RvcmFnZUtleVN0cmluZ3MsIGVycm9yPzogKCkgPT4gdm9pZCk6IGFueSA9PiB7XG4gIHRyeSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUud2FybihlcnIpO1xuICAgIGVycm9yICYmIGVycm9yKCk7XG4gIH1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///74687\n')},73484:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "Z": () => (/* binding */ useSort)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67294);\n\nvar useSort = function () {\n var _a = react__WEBPACK_IMPORTED_MODULE_0__.useState({}), sortBy = _a[0], setSortBy = _a[1];\n var getSortParams = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (columnIndex) { return ({\n sortBy: sortBy,\n onSort: function (_event, index, direction) {\n setSortBy({\n index: index,\n direction: direction,\n });\n },\n columnIndex: columnIndex,\n }); }, [sortBy, setSortBy]);\n return [sortBy, getSortParams];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzM0ODQuanMiLCJtYXBwaW5ncyI6Ijs7OztBQXNDK0I7QUFFeEIsSUFBTSxPQUFPLEdBQUc7SUFDZixTQUFzQiwyQ0FBYyxDQUFDLEVBQWEsQ0FBQyxFQUFsRCxNQUFNLFVBQUUsU0FBUyxRQUFpQyxDQUFDO0lBQzFELElBQU0sYUFBYSxHQUFHLDhDQUFpQixDQUNyQyxVQUFDLFdBQW1CLElBQXNCLFFBQUM7UUFDekMsTUFBTSxFQUFFLE1BQU07UUFDZCxNQUFNLEVBQUUsVUFBQyxNQUF3QixFQUFFLEtBQUssRUFBRSxTQUFTO1lBQ2pELFNBQVMsQ0FBQztnQkFDUixLQUFLLEVBQUUsS0FBSztnQkFDWixTQUFTLEVBQUUsU0FBUzthQUNyQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsV0FBVztLQUNaLENBQUMsRUFUd0MsQ0FTeEMsRUFDRixDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FDcEIsQ0FBQztJQUNGLE9BQU8sQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vY3J5b3N0YXQtd2ViLy4vc3JjL2FwcC91dGlscy91c2VTb3J0LnRzPzY3MDQiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCBUaGUgQ3J5b3N0YXQgQXV0aG9yc1xuICpcbiAqIFRoZSBVbml2ZXJzYWwgUGVybWlzc2l2ZSBMaWNlbnNlIChVUEwpLCBWZXJzaW9uIDEuMFxuICpcbiAqIFN1YmplY3QgdG8gdGhlIGNvbmRpdGlvbiBzZXQgZm9ydGggYmVsb3csIHBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQgdG8gYW55XG4gKiBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlLCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gYW5kL29yIGRhdGFcbiAqIChjb2xsZWN0aXZlbHkgdGhlIFwiU29mdHdhcmVcIiksIGZyZWUgb2YgY2hhcmdlIGFuZCB1bmRlciBhbnkgYW5kIGFsbCBjb3B5cmlnaHRcbiAqIHJpZ2h0cyBpbiB0aGUgU29mdHdhcmUsIGFuZCBhbnkgYW5kIGFsbCBwYXRlbnQgcmlnaHRzIG93bmVkIG9yIGZyZWVseVxuICogbGljZW5zYWJsZSBieSBlYWNoIGxpY2Vuc29yIGhlcmV1bmRlciBjb3ZlcmluZyBlaXRoZXIgKGkpIHRoZSB1bm1vZGlmaWVkXG4gKiBTb2Z0d2FyZSBhcyBjb250cmlidXRlZCB0byBvciBwcm92aWRlZCBieSBzdWNoIGxpY2Vuc29yLCBvciAoaWkpIHRoZSBMYXJnZXJcbiAqIFdvcmtzIChhcyBkZWZpbmVkIGJlbG93KSwgdG8gZGVhbCBpbiBib3RoXG4gKlxuICogKGEpIHRoZSBTb2Z0d2FyZSwgYW5kXG4gKiAoYikgYW55IHBpZWNlIG9mIHNvZnR3YXJlIGFuZC9vciBoYXJkd2FyZSBsaXN0ZWQgaW4gdGhlIGxyZ3J3cmtzLnR4dCBmaWxlIGlmXG4gKiBvbmUgaXMgaW5jbHVkZWQgd2l0aCB0aGUgU29mdHdhcmUgKGVhY2ggYSBcIkxhcmdlciBXb3JrXCIgdG8gd2hpY2ggdGhlIFNvZnR3YXJlXG4gKiBpcyBjb250cmlidXRlZCBieSBzdWNoIGxpY2Vuc29ycyksXG4gKlxuICogd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIGNvcHksIGNyZWF0ZVxuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiwgZGlzcGxheSwgcGVyZm9ybSwgYW5kIGRpc3RyaWJ1dGUgdGhlIFNvZnR3YXJlIGFuZCBtYWtlLFxuICogdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0LCBleHBvcnQsIGhhdmUgbWFkZSwgYW5kIGhhdmUgc29sZCB0aGVcbiAqIFNvZnR3YXJlIGFuZCB0aGUgTGFyZ2VyIFdvcmsocyksIGFuZCB0byBzdWJsaWNlbnNlIHRoZSBmb3JlZ29pbmcgcmlnaHRzIG9uXG4gKiBlaXRoZXIgdGhlc2Ugb3Igb3RoZXIgdGVybXMuXG4gKlxuICogVGhpcyBsaWNlbnNlIGlzIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb246XG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgZWl0aGVyIHRoaXMgY29tcGxldGUgcGVybWlzc2lvbiBub3RpY2Ugb3IgYXRcbiAqIGEgbWluaW11bSBhIHJlZmVyZW5jZSB0byB0aGUgVVBMIG11c3QgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvclxuICogc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5pbXBvcnQgeyBJU29ydEJ5LCBUaFByb3BzIH0gZnJvbSAnQHBhdHRlcm5mbHkvcmVhY3QtdGFibGUnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgY29uc3QgdXNlU29ydCA9ICgpOiBbSVNvcnRCeSwgKGNvbHVtbkluZGV4OiBudW1iZXIpID0+IFRoUHJvcHNbJ3NvcnQnXV0gPT4ge1xuICBjb25zdCBbc29ydEJ5LCBzZXRTb3J0QnldID0gUmVhY3QudXNlU3RhdGUoe30gYXMgSVNvcnRCeSk7XG4gIGNvbnN0IGdldFNvcnRQYXJhbXMgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAoY29sdW1uSW5kZXg6IG51bWJlcik6IFRoUHJvcHNbJ3NvcnQnXSA9PiAoe1xuICAgICAgc29ydEJ5OiBzb3J0QnksXG4gICAgICBvblNvcnQ6IChfZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQsIGluZGV4LCBkaXJlY3Rpb24pID0+IHtcbiAgICAgICAgc2V0U29ydEJ5KHtcbiAgICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgICAgZGlyZWN0aW9uOiBkaXJlY3Rpb24sXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGNvbHVtbkluZGV4LFxuICAgIH0pLFxuICAgIFtzb3J0QnksIHNldFNvcnRCeV1cbiAgKTtcbiAgcmV0dXJuIFtzb3J0QnksIGdldFNvcnRQYXJhbXNdO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///73484\n')},61139:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "P": () => (/* binding */ useSubscriptions)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67294);\n/*\n * Copyright The Cryostat Authors\n *\n * The Universal Permissive License (UPL), Version 1.0\n *\n * Subject to the condition set forth below, permission is hereby granted to any\n * person obtaining a copy of this software, associated documentation and/or data\n * (collectively the "Software"), free of charge and under any and all copyright\n * rights in the Software, and any and all patent rights owned or freely\n * licensable by each licensor hereunder covering either (i) the unmodified\n * Software as contributed to or provided by such licensor, or (ii) the Larger\n * Works (as defined below), to deal in both\n *\n * (a) the Software, and\n * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if\n * one is included with the Software (each a "Larger Work" to which the Software\n * is contributed by such licensors),\n *\n * without restriction, including without limitation the rights to copy, create\n * derivative works of, display, perform, and distribute the Software and make,\n * use, sell, offer for sale, import, export, have made, and have sold the\n * Software and the Larger Work(s), and to sublicense the foregoing rights on\n * either these or other terms.\n *\n * This license is subject to the following condition:\n * The above copyright notice and either this complete permission notice or at\n * a minimum a reference to the UPL must be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nfunction useSubscriptions() {\n var subsRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef([]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(function () { return function () { return subsRef.current.forEach(function (s) { return s.unsubscribe(); }); }; }, []);\n var addSubscription = function (sub) {\n subsRef.current = subsRef.current.concat([sub]);\n };\n return react__WEBPACK_IMPORTED_MODULE_0__.useCallback(addSubscription, [subsRef]);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjExMzkuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQ0c7QUFDNEI7QUFHeEIsU0FBUyxnQkFBZ0I7SUFDOUIsSUFBTSxPQUFPLEdBQUcseUNBQVksQ0FBQyxFQUFvQixDQUFDLENBQUM7SUFFbkQsNENBQWUsQ0FBQyxjQUFNLHFCQUFNLGNBQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQUMsQ0FBZSxJQUFXLFFBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBZixDQUFlLENBQUMsRUFBbkUsQ0FBbUUsRUFBekUsQ0FBeUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVyRyxJQUFNLGVBQWUsR0FBRyxVQUFDLEdBQWlCO1FBQ3hDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQztJQUVGLE9BQU8sOENBQWlCLENBQUMsZUFBZSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vY3J5b3N0YXQtd2ViLy4vc3JjL2FwcC91dGlscy91c2VTdWJzY3JpcHRpb25zLnRzPzMzYmQiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCBUaGUgQ3J5b3N0YXQgQXV0aG9yc1xuICpcbiAqIFRoZSBVbml2ZXJzYWwgUGVybWlzc2l2ZSBMaWNlbnNlIChVUEwpLCBWZXJzaW9uIDEuMFxuICpcbiAqIFN1YmplY3QgdG8gdGhlIGNvbmRpdGlvbiBzZXQgZm9ydGggYmVsb3csIHBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQgdG8gYW55XG4gKiBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlLCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gYW5kL29yIGRhdGFcbiAqIChjb2xsZWN0aXZlbHkgdGhlIFwiU29mdHdhcmVcIiksIGZyZWUgb2YgY2hhcmdlIGFuZCB1bmRlciBhbnkgYW5kIGFsbCBjb3B5cmlnaHRcbiAqIHJpZ2h0cyBpbiB0aGUgU29mdHdhcmUsIGFuZCBhbnkgYW5kIGFsbCBwYXRlbnQgcmlnaHRzIG93bmVkIG9yIGZyZWVseVxuICogbGljZW5zYWJsZSBieSBlYWNoIGxpY2Vuc29yIGhlcmV1bmRlciBjb3ZlcmluZyBlaXRoZXIgKGkpIHRoZSB1bm1vZGlmaWVkXG4gKiBTb2Z0d2FyZSBhcyBjb250cmlidXRlZCB0byBvciBwcm92aWRlZCBieSBzdWNoIGxpY2Vuc29yLCBvciAoaWkpIHRoZSBMYXJnZXJcbiAqIFdvcmtzIChhcyBkZWZpbmVkIGJlbG93KSwgdG8gZGVhbCBpbiBib3RoXG4gKlxuICogKGEpIHRoZSBTb2Z0d2FyZSwgYW5kXG4gKiAoYikgYW55IHBpZWNlIG9mIHNvZnR3YXJlIGFuZC9vciBoYXJkd2FyZSBsaXN0ZWQgaW4gdGhlIGxyZ3J3cmtzLnR4dCBmaWxlIGlmXG4gKiBvbmUgaXMgaW5jbHVkZWQgd2l0aCB0aGUgU29mdHdhcmUgKGVhY2ggYSBcIkxhcmdlciBXb3JrXCIgdG8gd2hpY2ggdGhlIFNvZnR3YXJlXG4gKiBpcyBjb250cmlidXRlZCBieSBzdWNoIGxpY2Vuc29ycyksXG4gKlxuICogd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIGNvcHksIGNyZWF0ZVxuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiwgZGlzcGxheSwgcGVyZm9ybSwgYW5kIGRpc3RyaWJ1dGUgdGhlIFNvZnR3YXJlIGFuZCBtYWtlLFxuICogdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0LCBleHBvcnQsIGhhdmUgbWFkZSwgYW5kIGhhdmUgc29sZCB0aGVcbiAqIFNvZnR3YXJlIGFuZCB0aGUgTGFyZ2VyIFdvcmsocyksIGFuZCB0byBzdWJsaWNlbnNlIHRoZSBmb3JlZ29pbmcgcmlnaHRzIG9uXG4gKiBlaXRoZXIgdGhlc2Ugb3Igb3RoZXIgdGVybXMuXG4gKlxuICogVGhpcyBsaWNlbnNlIGlzIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb246XG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgZWl0aGVyIHRoaXMgY29tcGxldGUgcGVybWlzc2lvbiBub3RpY2Ugb3IgYXRcbiAqIGEgbWluaW11bSBhIHJlZmVyZW5jZSB0byB0aGUgVVBMIG11c3QgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvclxuICogc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVN1YnNjcmlwdGlvbnMoKSB7XG4gIGNvbnN0IHN1YnNSZWYgPSBSZWFjdC51c2VSZWYoW10gYXMgU3Vic2NyaXB0aW9uW10pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiAoKSA9PiBzdWJzUmVmLmN1cnJlbnQuZm9yRWFjaCgoczogU3Vic2NyaXB0aW9uKTogdm9pZCA9PiBzLnVuc3Vic2NyaWJlKCkpLCBbXSk7XG5cbiAgY29uc3QgYWRkU3Vic2NyaXB0aW9uID0gKHN1YjogU3Vic2NyaXB0aW9uKTogdm9pZCA9PiB7XG4gICAgc3Vic1JlZi5jdXJyZW50ID0gc3Vic1JlZi5jdXJyZW50LmNvbmNhdChbc3ViXSk7XG4gIH07XG5cbiAgcmV0dXJuIFJlYWN0LnVzZUNhbGxiYWNrKGFkZFN1YnNjcmlwdGlvbiwgW3N1YnNSZWZdKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///61139\n')},52648:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"B5\": () => (/* binding */ calculateAnalysisTimer),\n/* harmony export */ \"BP\": () => (/* binding */ cleanDataId),\n/* harmony export */ \"FU\": () => (/* binding */ jvmIdToSubdirectoryName),\n/* harmony export */ \"IU\": () => (/* binding */ isAssetNew),\n/* harmony export */ \"LF\": () => (/* binding */ swap),\n/* harmony export */ \"MR\": () => (/* binding */ switchTab),\n/* harmony export */ \"NZ\": () => (/* binding */ StreamOf),\n/* harmony export */ \"O5\": () => (/* binding */ getDisplayFieldName),\n/* harmony export */ \"QX\": () => (/* binding */ openTabForUrl),\n/* harmony export */ \"T9\": () => (/* binding */ evaluateTargetWithExpr),\n/* harmony export */ \"ZR\": () => (/* binding */ createBlobURL),\n/* harmony export */ \"fr\": () => (/* binding */ getActiveTab),\n/* harmony export */ \"mh\": () => (/* binding */ accessibleRouteChangeHandler),\n/* harmony export */ \"o4\": () => (/* binding */ splitWordsOnUppercase),\n/* harmony export */ \"pB\": () => (/* binding */ move),\n/* harmony export */ \"rg\": () => (/* binding */ sortResources),\n/* harmony export */ \"tO\": () => (/* binding */ portalRoot),\n/* harmony export */ \"td\": () => (/* binding */ formatBytes),\n/* harmony export */ \"un\": () => (/* binding */ hashCode),\n/* harmony export */ \"xD\": () => (/* binding */ clickOutside)\n/* harmony export */ });\n/* unused harmony exports sizeUnits, getValue, semverRegex, getSemVer, compareSemVer, utf8ToBase32 */\n/* harmony import */ var _app_Shared_Services_Api_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(68038);\n/* harmony import */ var _patternfly_react_table__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(83360);\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(96486);\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(86515);\n/* harmony import */ var _LocalStorage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(74687);\n/*\n * Copyright The Cryostat Authors\n *\n * The Universal Permissive License (UPL), Version 1.0\n *\n * Subject to the condition set forth below, permission is hereby granted to any\n * person obtaining a copy of this software, associated documentation and/or data\n * (collectively the \"Software\"), free of charge and under any and all copyright\n * rights in the Software, and any and all patent rights owned or freely\n * licensable by each licensor hereunder covering either (i) the unmodified\n * Software as contributed to or provided by such licensor, or (ii) the Larger\n * Works (as defined below), to deal in both\n *\n * (a) the Software, and\n * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if\n * one is included with the Software (each a \"Larger Work\" to which the Software\n * is contributed by such licensors),\n *\n * without restriction, including without limitation the rights to copy, create\n * derivative works of, display, perform, and distribute the Software and make,\n * use, sell, offer for sale, import, export, have made, and have sold the\n * Software and the Larger Work(s), and to sublicense the foregoing rights on\n * either these or other terms.\n *\n * This license is subject to the following condition:\n * The above copyright notice and either this complete permission notice or at\n * a minimum a reference to the UPL must be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n\n\n\nvar SECOND_MILLIS = 1000;\nvar MINUTE_MILLIS = 60 * SECOND_MILLIS;\nvar HOUR_MILLIS = 60 * MINUTE_MILLIS;\nvar DAY_MILLIS = 24 * HOUR_MILLIS;\n// [ 0, 1, 2, 3 ] array\n// 0 1 2 3 indexes\n// { 0 | 1 | 2 | 3 | 4 } gap indices (drop zones)\n/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction move(arr, from, gapIndex) {\n if (gapIndex > from) {\n gapIndex--;\n }\n arr.splice(gapIndex, 0, arr.splice(from, 1)[0]);\n return arr;\n}\nfunction swap(arr, from, to) {\n arr[from] = arr.splice(to, 1, arr[from])[0];\n return arr;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\nvar openTabForUrl = function (url) {\n var anchor = document.createElement('a');\n anchor.setAttribute('href', url);\n anchor.setAttribute('target', '_blank');\n anchor.setAttribute('style', 'display: none; visibility: hidden;');\n anchor.click();\n anchor.remove();\n};\nvar createBlobURL = function (content, contentType, timeout) {\n if (timeout === void 0) { timeout = 1000; }\n var blob = new Blob([content], { type: contentType });\n var url = window.URL.createObjectURL(blob);\n setTimeout(function () { return window.URL.revokeObjectURL(url); }, timeout);\n return url;\n};\nfunction accessibleRouteChangeHandler() {\n return window.setTimeout(function () {\n var mainContainer = document.getElementById('primary-app-container');\n if (mainContainer) {\n mainContainer.focus();\n }\n }, 50);\n}\nvar hashCode = function (str) {\n var hash = 0;\n for (var i = 0; i < str.length; i++) {\n hash = (hash << 5) - hash + str.charCodeAt(i);\n hash |= 0; // Force 32-bit number\n }\n return hash;\n};\nvar sizeUnits = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\nvar formatBytes = function (bytes, decimals) {\n if (decimals === void 0) { decimals = 2; }\n if (bytes <= 0)\n return '0 B';\n var k = 1024; // 1 KB\n var dm = Math.max(decimals, 0); // Decimal places\n var i = Math.floor(Math.log(bytes) / Math.log(k));\n return \"\".concat(parseFloat((bytes / Math.pow(k, i)).toFixed(dm)), \" \").concat(sizeUnits[i]);\n};\nvar calculateAnalysisTimer = function (reportTime) {\n var interval, timerQuantity, timerUnits;\n var now = Date.now();\n var reportMillis = now - reportTime;\n if (reportMillis < MINUTE_MILLIS) {\n timerQuantity = Math.round(reportMillis / SECOND_MILLIS);\n interval = SECOND_MILLIS - (reportMillis % SECOND_MILLIS);\n timerUnits = 'second';\n }\n else if (reportMillis < HOUR_MILLIS) {\n timerQuantity = Math.round(reportMillis / MINUTE_MILLIS);\n interval = MINUTE_MILLIS - (reportMillis % MINUTE_MILLIS);\n timerUnits = 'minute';\n }\n else if (reportMillis < DAY_MILLIS) {\n timerQuantity = Math.round(reportMillis / HOUR_MILLIS);\n interval = HOUR_MILLIS - (reportMillis % HOUR_MILLIS);\n timerUnits = 'hour';\n }\n else {\n timerQuantity = Math.round(reportMillis / DAY_MILLIS);\n interval = DAY_MILLIS - reportMillis * DAY_MILLIS;\n timerUnits = 'day';\n }\n return {\n quantity: timerQuantity,\n unit: timerUnits,\n interval: interval,\n };\n};\nvar splitWordsOnUppercase = function (str, capitalizeFirst) {\n var words = str.split(/(?=[A-Z])/);\n if (capitalizeFirst && words.length) {\n var first = words[0];\n words[0] = first.substring(0, 1).toUpperCase() + first.slice(1);\n }\n return words;\n};\nvar needUppercase = /(url|id|jvm)/i;\nvar getDisplayFieldName = function (fieldName) {\n return splitWordsOnUppercase(fieldName)\n .map(function (word) {\n if (needUppercase.test(word)) {\n return lodash__WEBPACK_IMPORTED_MODULE_1___default().upperCase(word);\n }\n return lodash__WEBPACK_IMPORTED_MODULE_1___default().capitalize(word);\n })\n .join(' ');\n};\nvar evaluateTargetWithExpr = function (target, matchExpression) {\n var f = new Function('target', \"return \".concat(matchExpression));\n return f(lodash__WEBPACK_IMPORTED_MODULE_1___default().cloneDeep(target));\n};\nvar portalRoot = document.getElementById('portal-root') || document.body;\nvar cleanDataId = function (key) {\n return key.toLocaleLowerCase().replace(/\\s+/g, '');\n};\nvar StreamOf = /** @class */ (function () {\n function StreamOf(first) {\n this._stream$ = new rxjs__WEBPACK_IMPORTED_MODULE_3__/* .BehaviorSubject */ .X(first);\n }\n StreamOf.prototype.get = function () {\n return this._stream$.asObservable();\n };\n StreamOf.prototype.set = function (value) {\n this._stream$.next(value);\n };\n return StreamOf;\n}());\n\nvar mapper = function (tableColumns, index) {\n var _a;\n if (index === undefined) {\n return undefined;\n }\n return (_a = tableColumns[index]) === null || _a === void 0 ? void 0 : _a.keyPaths;\n};\nvar getTransform = function (tableColumns, index) {\n var _a;\n if (index === undefined) {\n return undefined;\n }\n return (_a = tableColumns[index]) === null || _a === void 0 ? void 0 : _a.transform;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar getValue = function (object, keyPath) {\n return keyPath.reduce(function (acc, key) { return acc[key]; }, object);\n};\n// Returned a newly sorted array)\nvar sortResources = function (_a, resources, tableColumns) {\n var index = _a.index, direction = _a.direction;\n var keyPaths = mapper(tableColumns, index);\n if (!keyPaths || !keyPaths.length) {\n return __spreadArray([], resources, true);\n }\n var transform = getTransform(tableColumns, index);\n var sorted = __spreadArray([], resources, true).sort(function (a, b) {\n var aVal = getValue(a, keyPaths);\n var bVal = getValue(b, keyPaths);\n if (transform) {\n aVal = transform(aVal, a);\n bVal = transform(bVal, b);\n }\n return aVal < bVal ? -1 : aVal > bVal ? 1 : 0;\n });\n return direction === _patternfly_react_table__WEBPACK_IMPORTED_MODULE_4__/* .SortByDirection.asc */ .B.asc ? sorted : sorted.reverse();\n};\nvar switchTab = function (history, pathname, search, _a) {\n var tabKey = _a.tabKey, tabValue = _a.tabValue;\n var query = new URLSearchParams(search);\n query.set(tabKey, tabValue);\n history.push(\"\".concat(pathname, \"?\").concat(query.toString()));\n};\nvar getActiveTab = function (search, key, supportedTabs, defaultTab) {\n var query = new URLSearchParams(search);\n var tab = query.get(key) || defaultTab;\n return supportedTabs.includes(tab) ? tab : defaultTab;\n};\nvar clickOutside = function () { return document.body.click(); };\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nvar semverRegex = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\nvar getSemVer = function (str) {\n var matched = str.match(semverRegex);\n if (matched) {\n var _1 = matched[0], major = matched[1], minor = matched[2], patch = matched[3];\n return {\n major: Number(major),\n minor: Number(minor),\n patch: Number(patch),\n };\n }\n return undefined;\n};\nvar convert = function (ver) { return ver.major * 100 + ver.minor * 10 + ver.patch; };\nvar compareSemVer = function (ver1, ver2) {\n var _ver1 = convert(ver1);\n var _ver2 = convert(ver2);\n return _ver1 > _ver2 ? 1 : _ver1 < _ver2 ? -1 : 0;\n};\nvar isAssetNew = function (currVerStr) {\n var oldVer = getSemVer((0,_LocalStorage__WEBPACK_IMPORTED_MODULE_2__/* .getFromLocalStorage */ .fp)('ASSET_VERSION', '0.0.0'));\n var currVer = getSemVer(currVerStr);\n if (!currVer) {\n throw new Error(\"Invalid asset version: \".concat(currVer));\n }\n // Invalid (old) version is ignored.\n return !oldVer || compareSemVer(currVer, oldVer) > 0;\n};\nvar utf8ToBase32 = function (str) {\n var encoder = new TextEncoder();\n var byteArray = encoder.encode(str);\n var BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';\n var bits = 0;\n var value = 0;\n var base32 = '';\n for (var i = 0; i < byteArray.length; i++) {\n value = (value << 8) | byteArray[i];\n bits += 8;\n while (bits >= 5) {\n bits -= 5;\n base32 += BASE32_ALPHABET[(value >>> bits) & 0x1f];\n }\n }\n if (bits > 0) {\n value <<= 5 - bits;\n base32 += BASE32_ALPHABET[value & 0x1f];\n }\n var paddingLength = base32.length % 8 !== 0 ? 8 - (base32.length % 8) : 0;\n for (var i = 0; i < paddingLength; i++) {\n base32 += '=';\n }\n return base32;\n};\nvar jvmIdToSubdirectoryName = function (jvmId) {\n if (jvmId === _app_Shared_Services_Api_service__WEBPACK_IMPORTED_MODULE_0__/* .UPLOADS_SUBDIRECTORY */ .ld || jvmId === 'lost') {\n return jvmId;\n }\n return utf8ToBase32(jvmId);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RCxJQUFJLEtBQUssS0FBSyw0RkFBb0IsSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO1FBQ3RELE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jcnlvc3RhdC13ZWIvLi9zcmMvYXBwL3V0aWxzL3V0aWxzLnRzPzUwNmEiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCBUaGUgQ3J5b3N0YXQgQXV0aG9yc1xuICpcbiAqIFRoZSBVbml2ZXJzYWwgUGVybWlzc2l2ZSBMaWNlbnNlIChVUEwpLCBWZXJzaW9uIDEuMFxuICpcbiAqIFN1YmplY3QgdG8gdGhlIGNvbmRpdGlvbiBzZXQgZm9ydGggYmVsb3csIHBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQgdG8gYW55XG4gKiBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlLCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gYW5kL29yIGRhdGFcbiAqIChjb2xsZWN0aXZlbHkgdGhlIFwiU29mdHdhcmVcIiksIGZyZWUgb2YgY2hhcmdlIGFuZCB1bmRlciBhbnkgYW5kIGFsbCBjb3B5cmlnaHRcbiAqIHJpZ2h0cyBpbiB0aGUgU29mdHdhcmUsIGFuZCBhbnkgYW5kIGFsbCBwYXRlbnQgcmlnaHRzIG93bmVkIG9yIGZyZWVseVxuICogbGljZW5zYWJsZSBieSBlYWNoIGxpY2Vuc29yIGhlcmV1bmRlciBjb3ZlcmluZyBlaXRoZXIgKGkpIHRoZSB1bm1vZGlmaWVkXG4gKiBTb2Z0d2FyZSBhcyBjb250cmlidXRlZCB0byBvciBwcm92aWRlZCBieSBzdWNoIGxpY2Vuc29yLCBvciAoaWkpIHRoZSBMYXJnZXJcbiAqIFdvcmtzIChhcyBkZWZpbmVkIGJlbG93KSwgdG8gZGVhbCBpbiBib3RoXG4gKlxuICogKGEpIHRoZSBTb2Z0d2FyZSwgYW5kXG4gKiAoYikgYW55IHBpZWNlIG9mIHNvZnR3YXJlIGFuZC9vciBoYXJkd2FyZSBsaXN0ZWQgaW4gdGhlIGxyZ3J3cmtzLnR4dCBmaWxlIGlmXG4gKiBvbmUgaXMgaW5jbHVkZWQgd2l0aCB0aGUgU29mdHdhcmUgKGVhY2ggYSBcIkxhcmdlciBXb3JrXCIgdG8gd2hpY2ggdGhlIFNvZnR3YXJlXG4gKiBpcyBjb250cmlidXRlZCBieSBzdWNoIGxpY2Vuc29ycyksXG4gKlxuICogd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIGNvcHksIGNyZWF0ZVxuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiwgZGlzcGxheSwgcGVyZm9ybSwgYW5kIGRpc3RyaWJ1dGUgdGhlIFNvZnR3YXJlIGFuZCBtYWtlLFxuICogdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0LCBleHBvcnQsIGhhdmUgbWFkZSwgYW5kIGhhdmUgc29sZCB0aGVcbiAqIFNvZnR3YXJlIGFuZCB0aGUgTGFyZ2VyIFdvcmsocyksIGFuZCB0byBzdWJsaWNlbnNlIHRoZSBmb3JlZ29pbmcgcmlnaHRzIG9uXG4gKiBlaXRoZXIgdGhlc2Ugb3Igb3RoZXIgdGVybXMuXG4gKlxuICogVGhpcyBsaWNlbnNlIGlzIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb246XG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgZWl0aGVyIHRoaXMgY29tcGxldGUgcGVybWlzc2lvbiBub3RpY2Ugb3IgYXRcbiAqIGEgbWluaW11bSBhIHJlZmVyZW5jZSB0byB0aGUgVVBMIG11c3QgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvclxuICogc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IFVQTE9BRFNfU1VCRElSRUNUT1JZIH0gZnJvbSAnQGFwcC9TaGFyZWQvU2VydmljZXMvQXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgSVNvcnRCeSwgU29ydEJ5RGlyZWN0aW9uIH0gZnJvbSAnQHBhdHRlcm5mbHkvcmVhY3QtdGFibGUnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHVzZUhpc3RvcnkgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZ2V0RnJvbUxvY2FsU3RvcmFnZSB9IGZyb20gJy4vTG9jYWxTdG9yYWdlJztcblxuY29uc3QgU0VDT05EX01JTExJUyA9IDEwMDA7XG5jb25zdCBNSU5VVEVfTUlMTElTID0gNjAgKiBTRUNPTkRfTUlMTElTO1xuY29uc3QgSE9VUl9NSUxMSVMgPSA2MCAqIE1JTlVURV9NSUxMSVM7XG5jb25zdCBEQVlfTUlMTElTID0gMjQgKiBIT1VSX01JTExJUztcblxuLy8gWyAgICAgMCwgICAgMSwgICAgMiwgICAgMyAgICAgXSBhcnJheVxuLy8gICAgICAgMCAgICAgMSAgICAgMiAgICAgMyAgICAgICBpbmRleGVzXG4vLyB7ICAwICB8ICAxICB8ICAyICB8ICAzICB8ICA0ICB9IGdhcCBpbmRpY2VzIChkcm9wIHpvbmVzKVxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vdmUoYXJyOiBhbnlbXSwgZnJvbTogbnVtYmVyLCBnYXBJbmRleDogbnVtYmVyKSB7XG4gIGlmIChnYXBJbmRleCA+IGZyb20pIHtcbiAgICBnYXBJbmRleC0tO1xuICB9XG4gIGFyci5zcGxpY2UoZ2FwSW5kZXgsIDAsIGFyci5zcGxpY2UoZnJvbSwgMSlbMF0pO1xuICByZXR1cm4gYXJyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3dhcChhcnI6IGFueVtdLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpIHtcbiAgYXJyW2Zyb21dID0gYXJyLnNwbGljZSh0bywgMSwgYXJyW2Zyb21dKVswXTtcbiAgcmV0dXJuIGFycjtcbn1cbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuXG5leHBvcnQgY29uc3Qgb3BlblRhYkZvclVybCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCBhbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJykgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG4gIGFuY2hvci5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB1cmwpO1xuICBhbmNob3Iuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7XG4gIGFuY2hvci5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6IG5vbmU7IHZpc2liaWxpdHk6IGhpZGRlbjsnKTtcblxuICBhbmNob3IuY2xpY2soKTtcbiAgYW5jaG9yLnJlbW92ZSgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUJsb2JVUkwgPSAoY29udGVudDogc3RyaW5nLCBjb250ZW50VHlwZTogc3RyaW5nLCB0aW1lb3V0ID0gMTAwMCkgPT4ge1xuICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2NvbnRlbnRdLCB7IHR5cGU6IGNvbnRlbnRUeXBlIH0pO1xuICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgc2V0VGltZW91dCgoKSA9PiB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpLCB0aW1lb3V0KTtcbiAgcmV0dXJuIHVybDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBhY2Nlc3NpYmxlUm91dGVDaGFuZ2VIYW5kbGVyKCkge1xuICByZXR1cm4gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGNvbnN0IG1haW5Db250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJpbWFyeS1hcHAtY29udGFpbmVyJyk7XG4gICAgaWYgKG1haW5Db250YWluZXIpIHtcbiAgICAgIG1haW5Db250YWluZXIuZm9jdXMoKTtcbiAgICB9XG4gIH0sIDUwKTtcbn1cblxuZXhwb3J0IGNvbnN0IGhhc2hDb2RlID0gKHN0cjogc3RyaW5nKTogbnVtYmVyID0+IHtcbiAgbGV0IGhhc2ggPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIGhhc2ggPSAoaGFzaCA8PCA1KSAtIGhhc2ggKyBzdHIuY2hhckNvZGVBdChpKTtcbiAgICBoYXNoIHw9IDA7IC8vIEZvcmNlIDMyLWJpdCBudW1iZXJcbiAgfVxuICByZXR1cm4gaGFzaDtcbn07XG5cbmV4cG9ydCBjb25zdCBzaXplVW5pdHMgPSBbJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInLCAnRUInLCAnWkInLCAnWUInXTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEJ5dGVzID0gKGJ5dGVzOiBudW1iZXIsIGRlY2ltYWxzID0gMik6IHN0cmluZyA9PiB7XG4gIGlmIChieXRlcyA8PSAwKSByZXR1cm4gJzAgQic7XG5cbiAgY29uc3QgayA9IDEwMjQ7IC8vIDEgS0JcbiAgY29uc3QgZG0gPSBNYXRoLm1heChkZWNpbWFscywgMCk7IC8vIERlY2ltYWwgcGxhY2VzXG5cbiAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xuXG4gIHJldHVybiBgJHtwYXJzZUZsb2F0KChieXRlcyAvIE1hdGgucG93KGssIGkpKS50b0ZpeGVkKGRtKSl9ICR7c2l6ZVVuaXRzW2ldfWA7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9tYXRlZEFuYWx5c2lzVGltZXJPYmplY3Qge1xuICBxdWFudGl0eTogbnVtYmVyO1xuICB1bml0OiBzdHJpbmc7XG4gIGludGVydmFsOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVBbmFseXNpc1RpbWVyID0gKHJlcG9ydFRpbWU6IG51bWJlcik6IEF1dG9tYXRlZEFuYWx5c2lzVGltZXJPYmplY3QgPT4ge1xuICBsZXQgaW50ZXJ2YWwsIHRpbWVyUXVhbnRpdHksIHRpbWVyVW5pdHM7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IHJlcG9ydE1pbGxpcyA9IG5vdyAtIHJlcG9ydFRpbWU7XG4gIGlmIChyZXBvcnRNaWxsaXMgPCBNSU5VVEVfTUlMTElTKSB7XG4gICAgdGltZXJRdWFudGl0eSA9IE1hdGgucm91bmQocmVwb3J0TWlsbGlzIC8gU0VDT05EX01JTExJUyk7XG4gICAgaW50ZXJ2YWwgPSBTRUNPTkRfTUlMTElTIC0gKHJlcG9ydE1pbGxpcyAlIFNFQ09ORF9NSUxMSVMpO1xuICAgIHRpbWVyVW5pdHMgPSAnc2Vjb25kJztcbiAgfSBlbHNlIGlmIChyZXBvcnRNaWxsaXMgPCBIT1VSX01JTExJUykge1xuICAgIHRpbWVyUXVhbnRpdHkgPSBNYXRoLnJvdW5kKHJlcG9ydE1pbGxpcyAvIE1JTlVURV9NSUxMSVMpO1xuICAgIGludGVydmFsID0gTUlOVVRFX01JTExJUyAtIChyZXBvcnRNaWxsaXMgJSBNSU5VVEVfTUlMTElTKTtcbiAgICB0aW1lclVuaXRzID0gJ21pbnV0ZSc7XG4gIH0gZWxzZSBpZiAocmVwb3J0TWlsbGlzIDwgREFZX01JTExJUykge1xuICAgIHRpbWVyUXVhbnRpdHkgPSBNYXRoLnJvdW5kKHJlcG9ydE1pbGxpcyAvIEhPVVJfTUlMTElTKTtcbiAgICBpbnRlcnZhbCA9IEhPVVJfTUlMTElTIC0gKHJlcG9ydE1pbGxpcyAlIEhPVVJfTUlMTElTKTtcbiAgICB0aW1lclVuaXRzID0gJ2hvdXInO1xuICB9IGVsc2Uge1xuICAgIHRpbWVyUXVhbnRpdHkgPSBNYXRoLnJvdW5kKHJlcG9ydE1pbGxpcyAvIERBWV9NSUxMSVMpO1xuICAgIGludGVydmFsID0gREFZX01JTExJUyAtIHJlcG9ydE1pbGxpcyAqIERBWV9NSUxMSVM7XG4gICAgdGltZXJVbml0cyA9ICdkYXknO1xuICB9XG4gIHJldHVybiB7XG4gICAgcXVhbnRpdHk6IHRpbWVyUXVhbnRpdHksXG4gICAgdW5pdDogdGltZXJVbml0cyxcbiAgICBpbnRlcnZhbDogaW50ZXJ2YWwsXG4gIH0gYXMgQXV0b21hdGVkQW5hbHlzaXNUaW1lck9iamVjdDtcbn07XG5cbmV4cG9ydCBjb25zdCBzcGxpdFdvcmRzT25VcHBlcmNhc2UgPSAoc3RyOiBzdHJpbmcsIGNhcGl0YWxpemVGaXJzdD86IGJvb2xlYW4pOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IHdvcmRzID0gc3RyLnNwbGl0KC8oPz1bQS1aXSkvKTtcbiAgaWYgKGNhcGl0YWxpemVGaXJzdCAmJiB3b3Jkcy5sZW5ndGgpIHtcbiAgICBjb25zdCBmaXJzdCA9IHdvcmRzWzBdO1xuICAgIHdvcmRzWzBdID0gZmlyc3Quc3Vic3RyaW5nKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBmaXJzdC5zbGljZSgxKTtcbiAgfVxuICByZXR1cm4gd29yZHM7XG59O1xuXG5jb25zdCBuZWVkVXBwZXJjYXNlID0gLyh1cmx8aWR8anZtKS9pO1xuXG5leHBvcnQgY29uc3QgZ2V0RGlzcGxheUZpZWxkTmFtZSA9IChmaWVsZE5hbWU6IHN0cmluZykgPT4ge1xuICByZXR1cm4gc3BsaXRXb3Jkc09uVXBwZXJjYXNlKGZpZWxkTmFtZSlcbiAgICAubWFwKCh3b3JkKSA9PiB7XG4gICAgICBpZiAobmVlZFVwcGVyY2FzZS50ZXN0KHdvcmQpKSB7XG4gICAgICAgIHJldHVybiBfLnVwcGVyQ2FzZSh3b3JkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBfLmNhcGl0YWxpemUod29yZCk7XG4gICAgfSlcbiAgICAuam9pbignICcpO1xufTtcblxuZXhwb3J0IGNvbnN0IGV2YWx1YXRlVGFyZ2V0V2l0aEV4cHIgPSAodGFyZ2V0OiB1bmtub3duLCBtYXRjaEV4cHJlc3Npb246IHN0cmluZykgPT4ge1xuICBjb25zdCBmID0gbmV3IEZ1bmN0aW9uKCd0YXJnZXQnLCBgcmV0dXJuICR7bWF0Y2hFeHByZXNzaW9ufWApO1xuICByZXR1cm4gZihfLmNsb25lRGVlcCh0YXJnZXQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBwb3J0YWxSb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcnRhbC1yb290JykgfHwgZG9jdW1lbnQuYm9keTtcblxuZXhwb3J0IGNvbnN0IGNsZWFuRGF0YUlkID0gKGtleTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGtleS50b0xvY2FsZUxvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJycpO1xufTtcblxuZXhwb3J0IGNsYXNzIFN0cmVhbU9mPFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtJDogQmVoYXZpb3JTdWJqZWN0PFQ+O1xuXG4gIGNvbnN0cnVjdG9yKGZpcnN0OiBUKSB7XG4gICAgdGhpcy5fc3RyZWFtJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VD4oZmlyc3QpO1xuICB9XG5cbiAgZ2V0KCk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLl9zdHJlYW0kLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgc2V0KHZhbHVlOiBUKTogdm9pZCB7XG4gICAgdGhpcy5fc3RyZWFtJC5uZXh0KHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29sdW1uIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgdG9vbHRpcD86IHN0cmluZztcbiAga2V5UGF0aHM/OiBzdHJpbmdbXTtcbiAgdHJhbnNmb3JtPzogKHZhbHVlOiB1bmtub3duLCBfcmVjOiB1bmtub3duKSA9PiB1bmtub3duO1xuICBzb3J0YWJsZT86IGJvb2xlYW47XG4gIHdpZHRoPzogbnVtYmVyO1xufVxuXG5jb25zdCBtYXBwZXIgPSAodGFibGVDb2x1bW5zOiBUYWJsZUNvbHVtbltdLCBpbmRleD86IG51bWJlcikgPT4ge1xuICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIHRhYmxlQ29sdW1uc1tpbmRleF0/LmtleVBhdGhzO1xufTtcblxuY29uc3QgZ2V0VHJhbnNmb3JtID0gKHRhYmxlQ29sdW1uczogVGFibGVDb2x1bW5bXSwgaW5kZXg/OiBudW1iZXIpID0+IHtcbiAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB0YWJsZUNvbHVtbnNbaW5kZXhdPy50cmFuc2Zvcm07XG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5leHBvcnQgY29uc3QgZ2V0VmFsdWUgPSAob2JqZWN0OiBhbnksIGtleVBhdGg6IHN0cmluZ1tdKSA9PiB7XG4gIHJldHVybiBrZXlQYXRoLnJlZHVjZSgoYWNjLCBrZXkpID0+IGFjY1trZXldLCBvYmplY3QpO1xufTtcblxuLy8gUmV0dXJuZWQgYSBuZXdseSBzb3J0ZWQgYXJyYXkpXG5leHBvcnQgY29uc3Qgc29ydFJlc291cmNlcyA9IDxSPih7IGluZGV4LCBkaXJlY3Rpb24gfTogSVNvcnRCeSwgcmVzb3VyY2VzOiBSW10sIHRhYmxlQ29sdW1uczogVGFibGVDb2x1bW5bXSk6IFJbXSA9PiB7XG4gIGNvbnN0IGtleVBhdGhzID0gbWFwcGVyKHRhYmxlQ29sdW1ucywgaW5kZXgpO1xuICBpZiAoIWtleVBhdGhzIHx8ICFrZXlQYXRocy5sZW5ndGgpIHtcbiAgICByZXR1cm4gWy4uLnJlc291cmNlc107XG4gIH1cbiAgY29uc3QgdHJhbnNmb3JtID0gZ2V0VHJhbnNmb3JtKHRhYmxlQ29sdW1ucywgaW5kZXgpO1xuICBjb25zdCBzb3J0ZWQgPSBbLi4ucmVzb3VyY2VzXS5zb3J0KChhLCBiKSA9PiB7XG4gICAgbGV0IGFWYWwgPSBnZXRWYWx1ZShhLCBrZXlQYXRocyk7XG4gICAgbGV0IGJWYWwgPSBnZXRWYWx1ZShiLCBrZXlQYXRocyk7XG4gICAgaWYgKHRyYW5zZm9ybSkge1xuICAgICAgYVZhbCA9IHRyYW5zZm9ybShhVmFsLCBhKTtcbiAgICAgIGJWYWwgPSB0cmFuc2Zvcm0oYlZhbCwgYik7XG4gICAgfVxuICAgIHJldHVybiBhVmFsIDwgYlZhbCA/IC0xIDogYVZhbCA+IGJWYWwgPyAxIDogMDtcbiAgfSk7XG4gIHJldHVybiBkaXJlY3Rpb24gPT09IFNvcnRCeURpcmVjdGlvbi5hc2MgPyBzb3J0ZWQgOiBzb3J0ZWQucmV2ZXJzZSgpO1xufTtcblxuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYkNvbmZpZyB7XG4gIHRhYktleTogc3RyaW5nO1xuICB0YWJWYWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3Qgc3dpdGNoVGFiID0gKFxuICBoaXN0b3J5OiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VIaXN0b3J5PixcbiAgcGF0aG5hbWU6IHN0cmluZyxcbiAgc2VhcmNoOiBzdHJpbmcsXG4gIHsgdGFiS2V5LCB0YWJWYWx1ZSB9OiBUYWJDb25maWdcbikgPT4ge1xuICBjb25zdCBxdWVyeSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoc2VhcmNoKTtcbiAgcXVlcnkuc2V0KHRhYktleSwgdGFiVmFsdWUpO1xuICBoaXN0b3J5LnB1c2goYCR7cGF0aG5hbWV9PyR7cXVlcnkudG9TdHJpbmcoKX1gKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBY3RpdmVUYWIgPSA8VD4oc2VhcmNoOiBzdHJpbmcsIGtleTogc3RyaW5nLCBzdXBwb3J0ZWRUYWJzOiBUW10sIGRlZmF1bHRUYWI6IFQpID0+IHtcbiAgY29uc3QgcXVlcnkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHNlYXJjaCk7XG4gIGNvbnN0IHRhYiA9IHF1ZXJ5LmdldChrZXkpIHx8IGRlZmF1bHRUYWI7XG4gIHJldHVybiBzdXBwb3J0ZWRUYWJzLmluY2x1ZGVzKHRhYiBhcyBUKSA/ICh0YWIgYXMgVCkgOiBkZWZhdWx0VGFiO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsaWNrT3V0c2lkZSA9ICgpID0+IGRvY3VtZW50LmJvZHkuY2xpY2soKTtcblxuZXhwb3J0IGludGVyZmFjZSBTZW1WZXIge1xuICBtYWpvcjogbnVtYmVyO1xuICBtaW5vcjogbnVtYmVyO1xuICBwYXRjaDogbnVtYmVyO1xufVxuXG4vLyBodHRwczovL3NlbXZlci5vcmcvI2lzLXRoZXJlLWEtc3VnZ2VzdGVkLXJlZ3VsYXItZXhwcmVzc2lvbi1yZWdleC10by1jaGVjay1hLXNlbXZlci1zdHJpbmdcbmV4cG9ydCBjb25zdCBzZW12ZXJSZWdleCA9XG4gIC9eKDB8WzEtOV1cXGQqKVxcLigwfFsxLTldXFxkKilcXC4oMHxbMS05XVxcZCopKD86LSgoPzowfFsxLTldXFxkKnxcXGQqW2EtekEtWi1dWzAtOWEtekEtWi1dKikoPzpcXC4oPzowfFsxLTldXFxkKnxcXGQqW2EtekEtWi1dWzAtOWEtekEtWi1dKikpKikpPyg/OlxcKyhbMC05YS16QS1aLV0rKD86XFwuWzAtOWEtekEtWi1dKykqKSk/JC87XG5cbmV4cG9ydCBjb25zdCBnZXRTZW1WZXIgPSAoc3RyOiBzdHJpbmcpOiBTZW1WZXIgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBtYXRjaGVkID0gc3RyLm1hdGNoKHNlbXZlclJlZ2V4KTtcbiAgaWYgKG1hdGNoZWQpIHtcbiAgICBjb25zdCBbXywgbWFqb3IsIG1pbm9yLCBwYXRjaF0gPSBtYXRjaGVkO1xuICAgIHJldHVybiB7XG4gICAgICBtYWpvcjogTnVtYmVyKG1ham9yKSxcbiAgICAgIG1pbm9yOiBOdW1iZXIobWlub3IpLFxuICAgICAgcGF0Y2g6IE51bWJlcihwYXRjaCksXG4gICAgfTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuY29uc3QgY29udmVydCA9ICh2ZXI6IFNlbVZlcikgPT4gdmVyLm1ham9yICogMTAwICsgdmVyLm1pbm9yICogMTAgKyB2ZXIucGF0Y2g7XG5cbmV4cG9ydCBjb25zdCBjb21wYXJlU2VtVmVyID0gKHZlcjE6IFNlbVZlciwgdmVyMjogU2VtVmVyKTogbnVtYmVyID0+IHtcbiAgY29uc3QgX3ZlcjEgPSBjb252ZXJ0KHZlcjEpO1xuICBjb25zdCBfdmVyMiA9IGNvbnZlcnQodmVyMik7XG4gIHJldHVybiBfdmVyMSA+IF92ZXIyID8gMSA6IF92ZXIxIDwgX3ZlcjIgPyAtMSA6IDA7XG59O1xuXG5leHBvcnQgY29uc3QgaXNBc3NldE5ldyA9IChjdXJyVmVyU3RyOiBzdHJpbmcpID0+IHtcbiAgY29uc3Qgb2xkVmVyID0gZ2V0U2VtVmVyKGdldEZyb21Mb2NhbFN0b3JhZ2UoJ0FTU0VUX1ZFUlNJT04nLCAnMC4wLjAnKSk7XG4gIGNvbnN0IGN1cnJWZXIgPSBnZXRTZW1WZXIoY3VyclZlclN0cik7XG5cbiAgaWYgKCFjdXJyVmVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFzc2V0IHZlcnNpb246ICR7Y3VyclZlcn1gKTtcbiAgfVxuICAvLyBJbnZhbGlkIChvbGQpIHZlcnNpb24gaXMgaWdub3JlZC5cbiAgcmV0dXJuICFvbGRWZXIgfHwgY29tcGFyZVNlbVZlcihjdXJyVmVyLCBvbGRWZXIpID4gMDtcbn07XG5cbmV4cG9ydCBjb25zdCB1dGY4VG9CYXNlMzIgPSAoc3RyOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gIGNvbnN0IGJ5dGVBcnJheSA9IGVuY29kZXIuZW5jb2RlKHN0cik7XG4gIGNvbnN0IEJBU0UzMl9BTFBIQUJFVCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjIzNDU2Nyc7XG4gIGxldCBiaXRzID0gMDtcbiAgbGV0IHZhbHVlID0gMDtcbiAgbGV0IGJhc2UzMiA9ICcnO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZUFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFsdWUgPSAodmFsdWUgPDwgOCkgfCBieXRlQXJyYXlbaV07XG4gICAgYml0cyArPSA4O1xuICAgIHdoaWxlIChiaXRzID49IDUpIHtcbiAgICAgIGJpdHMgLT0gNTtcbiAgICAgIGJhc2UzMiArPSBCQVNFMzJfQUxQSEFCRVRbKHZhbHVlID4+PiBiaXRzKSAmIDB4MWZdO1xuICAgIH1cbiAgfVxuXG4gIGlmIChiaXRzID4gMCkge1xuICAgIHZhbHVlIDw8PSA1IC0gYml0cztcbiAgICBiYXNlMzIgKz0gQkFTRTMyX0FMUEhBQkVUW3ZhbHVlICYgMHgxZl07XG4gIH1cblxuICBjb25zdCBwYWRkaW5nTGVuZ3RoID0gYmFzZTMyLmxlbmd0aCAlIDggIT09IDAgPyA4IC0gKGJhc2UzMi5sZW5ndGggJSA4KSA6IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGFkZGluZ0xlbmd0aDsgaSsrKSB7XG4gICAgYmFzZTMyICs9ICc9JztcbiAgfVxuXG4gIHJldHVybiBiYXNlMzI7XG59O1xuXG5leHBvcnQgY29uc3QganZtSWRUb1N1YmRpcmVjdG9yeU5hbWUgPSAoanZtSWQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGlmIChqdm1JZCA9PT0gVVBMT0FEU19TVUJESVJFQ1RPUlkgfHwganZtSWQgPT09ICdsb3N0Jykge1xuICAgIHJldHVybiBqdm1JZDtcbiAgfVxuICByZXR1cm4gdXRmOFRvQmFzZTMyKGp2bUlkKTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///52648\n")},83628:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "Kd": () => (/* binding */ getLocale),\n/* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ "a$": () => (/* binding */ supportedTimezones),\n/* harmony export */ "k1": () => (/* binding */ locales),\n/* harmony export */ "wO": () => (/* binding */ defaultDatetimeFormat)\n/* harmony export */ });\n/* unused harmony exports timezones, localTimezone, UTCTimezone, getTimezone */\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27484);\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var dayjs_locale_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(79790);\n/* harmony import */ var dayjs_plugin_advancedFormat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(28734);\n/* harmony import */ var dayjs_plugin_advancedFormat__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(dayjs_plugin_advancedFormat__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10285);\n/* harmony import */ var dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var dayjs_plugin_localeData__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(96036);\n/* harmony import */ var dayjs_plugin_localeData__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(dayjs_plugin_localeData__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var dayjs_plugin_localizedFormat__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(56176);\n/* harmony import */ var dayjs_plugin_localizedFormat__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(dayjs_plugin_localizedFormat__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var dayjs_plugin_timezone__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(29387);\n/* harmony import */ var dayjs_plugin_timezone__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(dayjs_plugin_timezone__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var dayjs_plugin_utc__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(70178);\n/* harmony import */ var dayjs_plugin_utc__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(dayjs_plugin_utc__WEBPACK_IMPORTED_MODULE_7__);\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/*\n * Copyright The Cryostat Authors\n *\n * The Universal Permissive License (UPL), Version 1.0\n *\n * Subject to the condition set forth below, permission is hereby granted to any\n * person obtaining a copy of this software, associated documentation and/or data\n * (collectively the "Software"), free of charge and under any and all copyright\n * rights in the Software, and any and all patent rights owned or freely\n * licensable by each licensor hereunder covering either (i) the unmodified\n * Software as contributed to or provided by such licensor, or (ii) the Larger\n * Works (as defined below), to deal in both\n *\n * (a) the Software, and\n * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if\n * one is included with the Software (each a "Larger Work" to which the Software\n * is contributed by such licensors),\n *\n * without restriction, including without limitation the rights to copy, create\n * derivative works of, display, perform, and distribute the Software and make,\n * use, sell, offer for sale, import, export, have made, and have sold the\n * Software and the Larger Work(s), and to sublicense the foregoing rights on\n * either these or other terms.\n *\n * This license is subject to the following condition:\n * The above copyright notice and either this complete permission notice or at\n * a minimum a reference to the UPL must be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n///You completed the ".concat(quickstartName, " quick start!
\\ncryostat
\\n".concat(closingMessage, "
")\n : "If you would like to learn more about the ".concat(feature, " feature, check out the [APP] documentation for detailed guides and information.
"), "\\n[Recordings nav item]{{highlight nav-recordings-tab}}\\n\\n will highlight an element with the `data-quickstart-id=\\"quickstarts\\"` attribute\\n \\n### Code snippets\\nThe syntax for an inline code snippet contains:\\n- Text between back quotes, followed by `{{copy}}`\\n#### Example 1\\nThe following text demonstates an inline-copy element `https://github.com/sclorg/ruby-ex.git`{{copy}}\\n#### Example 2\\nAnd another one `https://patternfly.org`{{copy}} here!\\nThe syntax for multi-line code snippets:\\n- Text between triple back quotes, followed by `{{copy}}`\\n#### Example 1\\n ```\\noc new-app ruby~https://github.com/sclorg/ruby-ex.git\\necho \\"Expose route using oc expose svc/ruby-ex\\"\\noc expose svc/ruby-ex\\n ```{{copy}}\\n#### Example 2\\n```\\nHello\\nworld\\n```{{copy}} \\n - Clicking the _Next_ button will display the **Check your work** module.\\n### Admonition blocks\\n The syntax for rendering \\"Admonition Blocks\\" to Patternfly React Alerts:\\n - Bracketed alert text contents\\n - The admonition keyword, followed by the alert variant you want\\n - Variants are: note, tip, important, caution, and warning\\n\\n**Examples**\\n [This is the note contents with **some bold** text]{{admonition note}}\\n [This is the tip contents]{{admonition tip}}\\n [This is the important contents]{{admonition important}}\\n [This is the caution contents]{{admonition caution}}\\n [This is the warning contents]{{admonition warning}}\\n "),\n // optional - the task\'s Check your work module\n review: {\n instructions: "Did you complete the task successfully?",\n failedTaskHelp: "This task isn\'t verified yet. Try the task again.",\n // optional - the task\'s success and failure messages\n },\n summary: {\n success: \'Shows a success message in the task header\',\n failed: \'Shows a failed message in the task header\',\n },\n },\n ],\n conclusion: conclusion(generic_quickstart_displayName, \'[APP]\', "To learn more about [APP]\'s extensive features and capabilities, please visit our website at ").concat(build_namespaceObject.R1, ".")),\n nextQuickStart: [\'start-a-recording-quickstart\'],\n },\n};\n/* harmony default export */ const generic_quickstart = (GenericQuickStart);\n\n;// CONCATENATED MODULE: ./src/app/QuickStarts/quickstarts/settings-quickstart.tsx\n/*\n * Copyright The Cryostat Authors\n *\n * The Universal Permissive License (UPL), Version 1.0\n *\n * Subject to the condition set forth below, permission is hereby granted to any\n * person obtaining a copy of this software, associated documentation and/or data\n * (collectively the "Software"), free of charge and under any and all copyright\n * rights in the Software, and any and all patent rights owned or freely\n * licensable by each licensor hereunder covering either (i) the unmodified\n * Software as contributed to or provided by such licensor, or (ii) the Larger\n * Works (as defined below), to deal in both\n *\n * (a) the Software, and\n * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if\n * one is included with the Software (each a "Larger Work" to which the Software\n * is contributed by such licensors),\n *\n * without restriction, including without limitation the rights to copy, create\n * derivative works of, display, perform, and distribute the Software and make,\n * use, sell, offer for sale, import, export, have made, and have sold the\n * Software and the Larger Work(s), and to sublicense the foregoing rights on\n * either these or other terms.\n *\n * This license is subject to the following condition:\n * The above copyright notice and either this complete permission notice or at\n * a minimum a reference to the UPL must be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n\n\n\nvar settings_quickstart_displayName = \'Using Settings\';\nvar SettingsQuickStart = {\n metadata: {\n name: \'settings-quickstart\',\n featureLevel: Settings_service/* FeatureLevel.PRODUCTION */.Lu.PRODUCTION,\n order: 100,\n },\n spec: {\n version: 2.3,\n displayName: settings_quickstart_displayName,\n durationMinutes: 5,\n icon: react.createElement(cog_icon/* CogIcon */.IE, null),\n description: "Learn about the settings page in **[APP]** and how to use it.",\n prerequisites: [\'\'],\n introduction: "\\n## Using Settings\\n \\n[APP] provides a settings page that lets you configure various aspects of the application. This quick start will show you how to use the settings page.\\n\\n### What you\'ll learn\\n - How to navigate to the settings page\\n - How to configure settings in [APP]\\n ",\n tasks: [\n {\n title: \'Navigate to the Settings page\',\n description: "\\n1. On the masthead, click the [Settings]{{highlight settings-link}} cog.",\n },\n {\n title: \'Go to the **General** tab\',\n description: "\\nThe **General** settings tab is where you can adjust various general settings to tailor your experience with the application. You can select a preferred theme, the date locale, and the current timezone.\\n\\n1. Click [General]{{highlight settings-general-tab}}.\\n2. Configure the theme.\\n3. Configure the date locale and current timezone.\\n[[APP] currently only supports English. We are planning on adding support for other languages in the future.]{{admonition note}}",\n },\n {\n title: \'Go to the **Connectivity** tab\',\n description: "\\nThe **Connectivity** tab enables you to configure the WebSocket connection between the browser and the [APP] backend.\\n\\n1. Click [Connectivity]{{highlight settings-connectivity-tab}}.\\n2. Configure the **WebSocket Connection Debounce** time.\\n3. Configure the **Auto-Refresh** period for content-views.\\n[To use the **Auto-Refresh** feature, make sure to enable the [Auto-Refresh]{{highlight settings-connectivity-tab-auto-refresh}} checkbox.]{{admonition tip}}\\n",\n },\n {\n title: \'Go to the **Notifications & Messages** tab\',\n description: "\\nThe **Notifications & Messages** tab allows you to configure the notifications and deletion warnings.\\n\\n1. Click [Notifications & Messages]{{highlight settings-notifications&messages-tab}}.\\n2. You can enable or disable notifications from various categories. Click `Show more` for the full list of notifications.\\n To control the maximum number of notifications, configure the input control.\\n3. You are also able to enable or disable deletion dialog warnings for various destructive actions. Click `Show more` for the full list of deletion warnings.\\n",\n },\n {\n title: \'Go to the **Dashboard** tab\',\n description: "\\nThe **Dashboard** tab allows you to configure settings for the various Dashboard Cards that you can add to the Dashboard.\\n\\nThe **Automated Analysis** dashboard card allows you to automatically start an analysis on the recording with a click of a button. You can configure the recording that is started by this card.\\n\\n1. From the list of settings tabs, click [Dashboard]{{highlight settings-dashboard-tab}}.\\n2. Configure the **Automated Analysis Recording Configuration** settings.\\n3. Configure the **Dashboard Metrics Configuration** settings.\\n\\n[When using the **Automated Analysis Card**, make sure the **Event Template** is compatible with the target JVM.]{{admonition warning}}\\n[Setting both an infinite maximum size and age may result in an **Out Of Memory** error during report generation.]{{admonition caution}}\\n",\n },\n {\n title: \'Go to the **Advanced** tab\',\n description: "\\n[APP] has a few advanced settings that can be configured.\\n\\n1. Click [Advanced]{{highlight settings-advanced-tab}}.\\n2. Configure the **Credentials Storage** settings.\\n \\n Credentials are necessary to authenticate with the target JVMs that [APP] communicates with, if JMX auth is enabled or if a [APP] agent authenticated connection is required. If you prefer not to store these credentials in the [APP] backend, you can opt to store them in local session storage instead.\\n3. Configure the **Feature Level** settings.\\n \\n The **Feature Level** setting enables you to enable or disable beta features.\\n\\n",\n },\n ],\n conclusion: conclusion(settings_quickstart_displayName, \'Settings\'),\n type: {\n text: \'Introduction\',\n color: \'blue\',\n },\n },\n};\n/* harmony default export */ const settings_quickstart = (SettingsQuickStart);\n\n;// CONCATENATED MODULE: ./src/app/QuickStarts/quickstarts/start-a-recording.tsx\n/*\n * Copyright The Cryostat Authors\n *\n * The Universal Permissive License (UPL), Version 1.0\n *\n * Subject to the condition set forth below, permission is hereby granted to any\n * person obtaining a copy of this software, associated documentation and/or data\n * (collectively the "Software"), free of charge and under any and all copyright\n * rights in the Software, and any and all patent rights owned or freely\n * licensable by each licensor hereunder covering either (i) the unmodified\n * Software as contributed to or provided by such licensor, or (ii) the Larger\n * Works (as defined below), to deal in both\n *\n * (a) the Software, and\n * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if\n * one is included with the Software (each a "Larger Work" to which the Software\n * is contributed by such licensors),\n *\n * without restriction, including without limitation the rights to copy, create\n * derivative works of, display, perform, and distribute the Software and make,\n * use, sell, offer for sale, import, export, have made, and have sold the\n * Software and the Larger Work(s), and to sublicense the foregoing rights on\n * either these or other terms.\n *\n * This license is subject to the following condition:\n * The above copyright notice and either this complete permission notice or at\n * a minimum a reference to the UPL must be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n\n\n\nvar start_a_recording_displayName = \'Start a Recording\';\nvar RecordingQuickStart = {\n metadata: {\n name: \'start-a-recording-quickstart\',\n featureLevel: Settings_service/* FeatureLevel.PRODUCTION */.Lu.PRODUCTION,\n order: 1,\n },\n spec: {\n version: 2.3,\n displayName: start_a_recording_displayName,\n durationMinutes: 10,\n icon: react.createElement(CryostatIcon, null),\n description: "Learn how to start a recording with Java Flight Recorder (JFR) with **[APP]**.",\n prerequisites: [\'\'],\n introduction: "\\n## Start a Recording\\n**Java Flight Recorder (JFR)** is a profiling tool that is built into the JVM. It allows you to record events that happen in the JVM and then analyze the recording to find performance issues. [APP] leverages JFR to provide a simple way to start, stop, and download recordings from a containerized target JVM.\\n\\n### What you\'ll learn\\n\\n- How to start/stop a JFR recording on a target JVM\\n- How to download a recording from [APP] to your local machine\\n- How to view an automated analysis report of a recording with [APP]\'s capabilities\\n\\n### What you\'ll need\\n\\n- A running instance of [APP] which has discovered at least one target JVM\\n- JMX auth credentials for the target JVM (if required)\\n\\n",\n tasks: [\n {\n title: \'Go to the Recordings page\',\n description: \'1. In the [APP] console navigation bar, click [Recordings]{{highlight nav-recordings-tab}}.\',\n review: {\n instructions: \'#### Verify that you see the Recordings page.\',\n failedTaskHelp: \'If you do not see the navigation bar, click the [menu button]{{highlight nav-toggle-btn}} on the masthead.\',\n },\n },\n {\n title: \'Select a target JVM\',\n description: " \\nSelect a target JVM from the list of available targets that [APP] has discovered.\\n\\n1. Click the [Target Select]{{highlight target-select}} dropdown menu.\\n2. Select a target from the list of available targets.\\n\\n\\n[If JMX Auth username and password is required, you will be prompted to enter them.]{{admonition note}}",\n review: {\n instructions: \'#### Verify that you can see the Recordings table.\',\n failedTaskHelp: \'If you do not see the table, try the above steps again.\',\n },\n },\n {\n title: \'Start a recording\',\n description: "\\nThere are two tabs within the Recordings page:\\n\\n[Active Recordings]{{highlight active-recordings-tab}} and [Archived Recordings]{{highlight archived-recordings-tab}}.\\n\\n**Active recordings** are recordings that only exist only within the target JVM. **Archived recordings** are recordings that have been saved from the target JVM and copied to [APP]\'s storage volume.\\n\\nTo start an active recording:\\n\\n1. Click [Create]{{highlight recordings-create-btn}} to open the **Custom Flight Recording Form**. \\n[If you have a smaller viewport, the `Create` button may not be immediately visible. In this case, you can click on the kebab button (three vertical dots) to reveal additional options, including `Create`.\\"]{{admonition note}}\\n2. Enter a name for the recording in the [Name]{{highlight crf-name}} field.\\n3. Select the [Duration]{{highlight crf-duration}} for the recording. You can select `CONTINUOUS` to record until the recording is stopped.\\n4. Select an [Event Template]{{highlight template-selector}} to use for the recording.\\n5. Click [Create]{{highlight crf-create-btn}}.\\n\\nAfter the creation of a recording, the recording will be displayed in the **Active Recordings** tab. You should be able to see the recording\'s name, start time, duration, state, and any attached labels.\\n\\n[You may also attach metadata labels to the recordings under the [Metadata]{{highlight crf-metadata-opt}} options or configure your custom recording further under the [Advanced]{{highlight crf-advanced-opt}} options.]{{admonition tip}}",\n review: {\n instructions: \'#### Verify that you see the recording within the table.\',\n failedTaskHelp: \'If you do not see the recording, try the above steps again.\',\n },\n },\n {\n title: \'Stop a recording\',\n description: "\\nStopping a recording will cut off the recording at the time that the recording is stopped.\\n\\n1. Select the [checkbox]{{highlight active-recordings-checkbox}} \\u2610 next to the recording.\\n2. Click [Stop]{{highlight recordings-stop-btn}} to stop the recording.",\n review: {\n instructions: \'#### Verify that the STATE field of the recording has changed to STOPPED.\',\n failedTaskHelp: \'If you do not see the recording, try the **Start a recording** task again.\',\n },\n },\n {\n title: \'Download a recording\',\n description: "\\nDownloading a recording will save the recording to your local machine as a JFR file. You can then use **JDK Mission Control (JMC)** to analyze the recording.\\n1. Open the [kebab menu]{{highlight recording-kebab}} next to the recording that you want to download.\\n2. Click `Download Recording` to prompt your browser to open a dialog to save the recording to your local machine.\\n3. Choose what to do with the file.\\n ",\n review: {\n instructions: \'#### Verify that you have downloaded the recording to your local machine.\',\n failedTaskHelp: \'If you do not see the recording, try the **Start a recording** task again.\',\n },\n },\n {\n title: \'View an analysis report\',\n description: "\\n[APP] is able to generate an **Automated Analysis Report** using a JFR recording. The **Java Mission Control** rules engine analyzes your recording, looks for common problems, and assigns a severity score from 0 (no problem) to 100 (potentially severe problem) to each problem.\\n1. Click the [kebab menu]{{highlight recording-kebab}} next to the recording that you want to view an analysis report for.\\n2. Click `View Report ...` to view an analysis report of the recording in a new tab.\\n3. *Optional:* Right click on the page and select `Save Page As...` to download the report HTML file to your local machine.\\n",\n review: {\n instructions: \'#### Verify that you can see an analysis report of the recording.\',\n failedTaskHelp: \'The kebab `⁝` should be next to the recording row in the active recordings table. Clicking the kebab icon should show a menu with the `View Report ...` option.\',\n },\n },\n {\n title: \'Archive a recording\',\n description: "\\nArchiving a recording will save the recording to [APP]\'s archival storage, and will persist even after either the target JVM, or [APP], has stopped. These recordings will appear in the target JVM\'s **Archived Recordings** tab, as well as in the [Archives]{{highlight nav-archives-tab}} view on the [APP] console navigation bar.\\n\\n1. Click [Archive]{{highlight recordings-archive-btn}} to archive the recording.\\n2. To view the archived recording in [APP]\'s storage, go to the [Archived Recordings]{{highlight archived-recordings-tab}} tab.\\n\\n[You can download archived recordings and view an analysis report of the archived recording from the [Archived Recordings]{{highlight archived-recordings-tab}} tab, similar to active recordings.]{{admonition tip}}",\n review: {\n instructions: \'#### Verify that the recording has been archived in the **Archived Recordings** tab.\',\n failedTaskHelp: \'The recording name should have been saved in the format `
9091
and port name is not jfr-jmx
), Cryostat might not see your applications. Fortunately, you can tell Cryostat about them by specifying **Custom Targets**.\\n\\n### What you\'ll learn\\n- How to test and create a Custom Target definition\\n\\n### What you\'ll need\\n\\n- A Java application that Cryostat cannot automatically discover\\n- The connection URL and JMX credentials, if required, for that application\\n",\n tasks: [\n {\n title: \'Go to the Topology page\',\n description: "1. In the [APP] console navigation bar, click [Topology]{{highlight nav-topology-tab}}.",\n review: {\n instructions: \'#### Verify that you see the Topology page.\',\n failedTaskHelp: \'If you do not see the navigation bar, click the [menu button]{{highlight nav-toggle-btn}} on the masthead.\',\n },\n },\n {\n title: \'Open Custom Target Creation Form\',\n description: "\\n\\n1. From the toolbar, click on the [catalog icon]{{highlight topology-catalog-btn}}.\\n\\n This will open a modal containing the **Topology Entity Catalog**.\\n\\n[Alternatively, press Ctrl + Space or right click the topology view. This will open a mini catalog for quick access.]{{admonition tip}}\\n\\n2. Find and select the **Custom Target** option. To aid your search, use the search bar.\\n3. Click on the **Create** button to open the **Custom Target Creation Form**.\\n",\n review: {\n instructions: \'#### Verify that you can open the catalog and select Custom Target.\',\n failedTaskHelp: \'If you do not see the Custom Target option, use the search bar to find it.\',\n },\n },\n {\n title: \'Fill out the Custom Target form\',\n description: "\\n1. Enter the JMX **Connection URL** for the target into the [Connection URL]{{highlight ct-connecturl-input}} field.\\n2. Optionally assign an **Alias** to the target by using the [Alias]{{highlight ct-alias-input}} field.\\n3. If the target has **JMX authentication** enabled, click the [JMX Credential Option]{{highlight ct-credential-expand}} to expand the form.\\n4. Use the [Username]{{highlight ct-username-input}} and [Password]{{highlight ct-password-input}} fields to enter the username and password.\\n",\n review: {\n instructions: \'#### Verify that you have filled out the form.\',\n failedTaskHelp: \'Click the [JMX Credential Option]{{highlight ct-credential-expand}} to expand the form to reveal the username and password fields.\',\n },\n },\n {\n title: \'Test the custom target definition.\',\n description: "\\nAfter form is filled, the [sample node]{{highlight ct-sample-testnode}} will be populated with those information.\\n\\nTo test the **Custom Target** definition:\\n\\n1. Click on the [sample node icon]{{highlight ct-sample-testnode-icon}} to test your custom target definition. **Cryostat** will attempt a connection to the target defined by the form data.\\n2. If the attempt succeeds, a **Checkmark** icon is shown. Otherwise, an **Exclaimation** icon along with an alert banner that describes the error.\\n3. Re-enter the form and repeat step 1-2 until you have a valid definition.\\n",\n review: {\n instructions: \'#### Verify that you can test the custom target definition.\',\n failedTaskHelp: \'You must provide a valid **Connection URL** to enable testing.\',\n },\n },\n {\n title: \'Create the Custom Target.\',\n description: "\\nTo create the **Custom Target** definition:\\n\\n1. Click [Create]{{highlight ct-create-btn}}.\\n2. If the submission is successful, the view will automatically be directed to the **Topology** page. Otherwise, revise your form inputs.\\n",\n review: {\n instructions: \'#### Verify that you can create the custom target and redirected to Topology View.\',\n failedTaskHelp: \'Revise your **Custom Target** definition to ensure it is valid.\',\n },\n },\n {\n title: \'View the Custom Target.\',\n description: "\\nThe **Custom Target** will appear under **Custom Targets Realm**.\\n[In Graph View, use the toolbar to filter out the **Custom Targets Realm** and the control bar to fit graph into screen, if needed.]{{admonition tip}}\\n",\n review: {\n instructions: \'#### Verify that you can can see the Custom Target.\',\n failedTaskHelp: \'In a clustered graph, use the filter and control bar to adjust the view.\',\n },\n },\n ],\n conclusion: conclusion(\'Create a Custom Target\', \'Custom Targets\'),\n type: {\n text: \'Featured\',\n color: \'blue\',\n },\n },\n};\n/* harmony default export */ const custom_target_quickstart = (CustomTargetQuickstart);\n\n;// CONCATENATED MODULE: ./src/app/QuickStarts/quickstarts/topology/group-start-recordings.tsx\n/*\n * Copyright The Cryostat Authors\n *\n * The Universal Permissive License (UPL), Version 1.0\n *\n * Subject to the condition set forth below, permission is hereby granted to any\n * person obtaining a copy of this software, associated documentation and/or data\n * (collectively the "Software"), free of charge and under any and all copyright\n * rights in the Software, and any and all patent rights owned or freely\n * licensable by each licensor hereunder covering either (i) the unmodified\n * Software as contributed to or provided by such licensor, or (ii) the Larger\n * Works (as defined below), to deal in both\n *\n * (a) the Software, and\n * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if\n * one is included with the Software (each a "Larger Work" to which the Software\n * is contributed by such licensors),\n *\n * without restriction, including without limitation the rights to copy, create\n * derivative works of, display, perform, and distribute the Software and make,\n * use, sell, offer for sale, import, export, have made, and have sold the\n * Software and the Larger Work(s), and to sublicense the foregoing rights on\n * either these or other terms.\n *\n * This license is subject to the following condition:\n * The above copyright notice and either this complete permission notice or at\n * a minimum a reference to the UPL must be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n\n\nvar GroupStartRecordingQuickStart = {\n apiVersion: \'v2.3.0\',\n metadata: {\n name: \'topology/start-group-recording\',\n featureLevel: Settings_service/* FeatureLevel.PRODUCTION */.Lu.PRODUCTION,\n },\n spec: {\n version: 2.3,\n displayName: \'Start recording on multiple target JVMs\',\n durationMinutes: 5,\n icon: react.createElement(CryostatIcon, null),\n description: \'Learn how to start recordings on multiple targets at once.\',\n introduction: "\\n## Topology View\\nThe **Cryostat Topology** provides a visual presentation of all targets discovered by **Cryostat**, using various mechanisms (e.g. **Kubernetes API**, **JDP**) that are represented by **Realms**.\\n\\nWith **Topology** view, you can perform actions (i.e. start recording) on an individual target or a group of targets, using either **Graph View** or **List View**.\\n\\n### What you\'ll learn\\n- How to start recording on a group of targets\\n\\n### What you\'ll need\\n\\n- A running instance of Cryostat which has discovered at least one target JVM\\n- JMX auth credentials for the target JVM (if required)\\n",\n tasks: [\n {\n title: \'Go to the Topology page\',\n description: "1. In the [APP] console navigation bar, click [Topology]{{highlight nav-topology-tab}}.",\n review: {\n instructions: \'#### Verify that you see the Topology page.\',\n failedTaskHelp: \'If you do not see the navigation bar, click the [menu button]{{highlight nav-toggle-btn}} on the masthead.\',\n },\n },\n {\n title: \'Open action menu for a group\',\n description: "\\nTo open the action menu for a target group:\\n\\n- *Graph View*: Right-click a target group to display the **Action** menu.\\n\\n- *List View*: Click the **Action** dropdown menu next to the group name.\\n",\n review: {\n instructions: \'#### Verify that you see action menu.\',\n failedTaskHelp: "\\nIn *Graph View*, the line surronding the targets represents the group.\\n\\nIn *List View*, to reveal nested groups, click on list rows.",\n },\n },\n {\n title: \'Start recording for a group of targets.\',\n description: "\\nTo start a recording for targets under the selected group, select the `Start recording` option.\\n\\nOn each descendant target, **Cryostat** will create an active recording named `cryostat_topology_action` with the label\\n`cryostat.io.topology-group=