@aion0/bastion 0.1.12 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -3
- package/README.zh.md +26 -3
- package/dist/cli/commands/plugins.d.ts +3 -0
- package/dist/cli/commands/plugins.d.ts.map +1 -0
- package/dist/cli/commands/plugins.js +201 -0
- package/dist/cli/commands/plugins.js.map +1 -0
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +0 -18
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/index.js +2 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/config/paths.d.ts +0 -1
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +0 -1
- package/dist/config/paths.js.map +1 -1
- package/dist/config/schema.d.ts +28 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/core/bootstrap.d.ts.map +1 -1
- package/dist/core/bootstrap.js +5 -0
- package/dist/core/bootstrap.js.map +1 -1
- package/dist/dashboard/api-routes.d.ts.map +1 -1
- package/dist/dashboard/api-routes.js +91 -50
- package/dist/dashboard/api-routes.js.map +1 -1
- package/dist/dashboard/page.d.ts.map +1 -1
- package/dist/dashboard/page.js +122 -67
- package/dist/dashboard/page.js.map +1 -1
- package/dist/dlp/ai-validator.d.ts.map +1 -1
- package/dist/dlp/ai-validator.js +11 -13
- package/dist/dlp/ai-validator.js.map +1 -1
- package/dist/dlp/heuristic-validator.d.ts +24 -0
- package/dist/dlp/heuristic-validator.d.ts.map +1 -0
- package/dist/dlp/heuristic-validator.js +97 -0
- package/dist/dlp/heuristic-validator.js.map +1 -0
- package/dist/plugins/builtin/dlp-scanner.d.ts.map +1 -1
- package/dist/plugins/builtin/dlp-scanner.js +3 -0
- package/dist/plugins/builtin/dlp-scanner.js.map +1 -1
- package/dist/plugins/builtin/threat-scorer.d.ts +6 -0
- package/dist/plugins/builtin/threat-scorer.d.ts.map +1 -0
- package/dist/plugins/builtin/threat-scorer.js +266 -0
- package/dist/plugins/builtin/threat-scorer.js.map +1 -0
- package/dist/plugins/builtin/tool-guard.d.ts.map +1 -1
- package/dist/plugins/builtin/tool-guard.js +14 -43
- package/dist/plugins/builtin/tool-guard.js.map +1 -1
- package/dist/plugins/types.d.ts +3 -0
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/storage/migrations.d.ts.map +1 -1
- package/dist/storage/migrations.js +43 -0
- package/dist/storage/migrations.js.map +1 -1
- package/dist/storage/repositories/taint-marks.d.ts +26 -0
- package/dist/storage/repositories/taint-marks.d.ts.map +1 -0
- package/dist/storage/repositories/taint-marks.js +27 -0
- package/dist/storage/repositories/taint-marks.js.map +1 -0
- package/dist/storage/repositories/threat-score-events.d.ts +27 -0
- package/dist/storage/repositories/threat-score-events.d.ts.map +1 -0
- package/dist/storage/repositories/threat-score-events.js +24 -0
- package/dist/storage/repositories/threat-score-events.js.map +1 -0
- package/dist/storage/repositories/threat-scores.d.ts +26 -0
- package/dist/storage/repositories/threat-scores.d.ts.map +1 -0
- package/dist/storage/repositories/threat-scores.js +42 -0
- package/dist/storage/repositories/threat-scores.js.map +1 -0
- package/dist/storage/repositories/tool-chain-detections.d.ts +24 -0
- package/dist/storage/repositories/tool-chain-detections.d.ts.map +1 -0
- package/dist/storage/repositories/tool-chain-detections.js +27 -0
- package/dist/storage/repositories/tool-chain-detections.js.map +1 -0
- package/dist/tool-guard/chain-detector.d.ts +18 -0
- package/dist/tool-guard/chain-detector.d.ts.map +1 -0
- package/dist/tool-guard/chain-detector.js +55 -0
- package/dist/tool-guard/chain-detector.js.map +1 -0
- package/dist/tool-guard/chain-rules.d.ts +10 -0
- package/dist/tool-guard/chain-rules.d.ts.map +1 -0
- package/dist/tool-guard/chain-rules.js +30 -0
- package/dist/tool-guard/chain-rules.js.map +1 -0
- package/dist/tool-guard/taint-tracker.d.ts +24 -0
- package/dist/tool-guard/taint-tracker.d.ts.map +1 -0
- package/dist/tool-guard/taint-tracker.js +70 -0
- package/dist/tool-guard/taint-tracker.js.map +1 -0
- package/package.json +1 -1
- package/dist/cli/commands/pro.d.ts +0 -3
- package/dist/cli/commands/pro.d.ts.map +0 -1
- package/dist/cli/commands/pro.js +0 -261
- package/dist/cli/commands/pro.js.map +0 -1
- package/dist/license/pro-license.d.ts +0 -11
- package/dist/license/pro-license.d.ts.map +0 -1
- package/dist/license/pro-license.js +0 -88
- package/dist/license/pro-license.js.map +0 -1
- package/dist/license/verify.d.ts +0 -18
- package/dist/license/verify.d.ts.map +0 -1
- package/dist/license/verify.js +0 -71
- package/dist/license/verify.js.map +0 -1
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createApiRouter = createApiRouter;
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const paths_js_1 = require("../config/paths.js");
|
|
4
6
|
const requests_js_1 = require("../storage/repositories/requests.js");
|
|
5
7
|
const dlp_events_js_1 = require("../storage/repositories/dlp-events.js");
|
|
6
8
|
const optimizer_events_js_1 = require("../storage/repositories/optimizer-events.js");
|
|
@@ -13,11 +15,14 @@ const tool_calls_js_1 = require("../storage/repositories/tool-calls.js");
|
|
|
13
15
|
const tool_guard_rules_js_1 = require("../storage/repositories/tool-guard-rules.js");
|
|
14
16
|
const plugin_events_js_1 = require("../storage/repositories/plugin-events.js");
|
|
15
17
|
const alert_js_1 = require("../tool-guard/alert.js");
|
|
18
|
+
const threat_scores_js_1 = require("../storage/repositories/threat-scores.js");
|
|
19
|
+
const threat_score_events_js_1 = require("../storage/repositories/threat-score-events.js");
|
|
20
|
+
const tool_chain_detections_js_1 = require("../storage/repositories/tool-chain-detections.js");
|
|
21
|
+
const chain_rules_js_1 = require("../tool-guard/chain-rules.js");
|
|
16
22
|
const engine_js_1 = require("../dlp/engine.js");
|
|
17
23
|
const semantics_js_1 = require("../dlp/semantics.js");
|
|
18
24
|
const remote_sync_js_1 = require("../dlp/remote-sync.js");
|
|
19
25
|
const version_js_1 = require("../version.js");
|
|
20
|
-
const verify_js_1 = require("../license/verify.js");
|
|
21
26
|
const logger_js_1 = require("../utils/logger.js");
|
|
22
27
|
const log = (0, logger_js_1.createLogger)('api-routes');
|
|
23
28
|
function parseUrl(req) {
|
|
@@ -47,39 +52,12 @@ function createApiRouter(db, configManager, pluginManager, getPluginState) {
|
|
|
47
52
|
const toolCallsRepo = new tool_calls_js_1.ToolCallsRepository(db);
|
|
48
53
|
const toolGuardRulesRepo = new tool_guard_rules_js_1.ToolGuardRulesRepository(db);
|
|
49
54
|
const pluginEventsRepo = new plugin_events_js_1.PluginEventsRepository(db);
|
|
50
|
-
|
|
55
|
+
const threatScoresRepo = new threat_scores_js_1.ThreatScoresRepository(db);
|
|
56
|
+
const threatScoreEventsRepo = new threat_score_events_js_1.ThreatScoreEventsRepository(db);
|
|
57
|
+
const chainDetectionsRepo = new tool_chain_detections_js_1.ToolChainDetectionsRepository(db);
|
|
51
58
|
return (req, res) => {
|
|
52
59
|
const url = parseUrl(req);
|
|
53
60
|
const path = url.pathname;
|
|
54
|
-
// GET /api/dev — dev mode check (only true when started with --dev)
|
|
55
|
-
if (req.method === 'GET' && path === '/api/dev') {
|
|
56
|
-
sendJson(res, { dev: process.env.BASTION_DEV === '1' });
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
// POST /api/dev/activate — activate dev unlock with token
|
|
60
|
-
if (req.method === 'POST' && path === '/api/dev/activate') {
|
|
61
|
-
const expected = process.env.BASTION_DEV_TOKEN;
|
|
62
|
-
if (!expected) {
|
|
63
|
-
sendJson(res, { error: 'Dev mode not enabled' }, 403);
|
|
64
|
-
return true;
|
|
65
|
-
}
|
|
66
|
-
bufferBody(req).then((body) => {
|
|
67
|
-
try {
|
|
68
|
-
const data = JSON.parse(body);
|
|
69
|
-
if (data.token === expected) {
|
|
70
|
-
devUnlocked = true;
|
|
71
|
-
sendJson(res, { ok: true });
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
sendJson(res, { error: 'Invalid token' }, 403);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
catch {
|
|
78
|
-
sendJson(res, { error: 'Invalid request' }, 400);
|
|
79
|
-
}
|
|
80
|
-
}).catch(() => sendJson(res, { error: 'Internal error' }, 500));
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
61
|
// GET /api/stats — Enhanced with filters
|
|
84
62
|
if (req.method === 'GET' && path === '/api/stats') {
|
|
85
63
|
const sessionId = url.searchParams.get('session_id') ?? undefined;
|
|
@@ -663,29 +641,92 @@ function createApiRouter(db, configManager, pluginManager, getPluginState) {
|
|
|
663
641
|
sendJson(res, pluginEventsRepo.getStats());
|
|
664
642
|
return true;
|
|
665
643
|
}
|
|
666
|
-
//
|
|
667
|
-
if (req.method === '
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
644
|
+
// POST /api/plugins/uninstall — uninstall an external plugin
|
|
645
|
+
if (req.method === 'POST' && path === '/api/plugins/uninstall') {
|
|
646
|
+
bufferBody(req).then((body) => {
|
|
647
|
+
try {
|
|
648
|
+
const data = JSON.parse(body);
|
|
649
|
+
const name = data.name;
|
|
650
|
+
if (!name) {
|
|
651
|
+
sendJson(res, { error: 'name is required' }, 400);
|
|
652
|
+
return;
|
|
653
|
+
}
|
|
654
|
+
const config = configManager.get();
|
|
655
|
+
const external = config.plugins.external ?? [];
|
|
656
|
+
const match = external.find(e => e.package.includes(name));
|
|
657
|
+
if (!match) {
|
|
658
|
+
sendJson(res, { error: `No external plugin matching "${name}"` }, 404);
|
|
659
|
+
return;
|
|
660
|
+
}
|
|
661
|
+
// Remove plugin directory
|
|
662
|
+
if ((0, node_fs_1.existsSync)(match.package)) {
|
|
663
|
+
(0, node_fs_1.rmSync)(match.package, { recursive: true, force: true });
|
|
664
|
+
}
|
|
665
|
+
// Remove models if requested
|
|
666
|
+
const removeModels = data.removeModels === true;
|
|
667
|
+
const modelsDir = paths_js_1.paths.modelsDir;
|
|
668
|
+
let modelsRemoved = false;
|
|
669
|
+
if (removeModels && (0, node_fs_1.existsSync)(modelsDir)) {
|
|
670
|
+
(0, node_fs_1.rmSync)(modelsDir, { recursive: true, force: true });
|
|
671
|
+
modelsRemoved = true;
|
|
672
|
+
}
|
|
673
|
+
// Update config — remove the entry
|
|
674
|
+
const updated = external.filter(e => e !== match);
|
|
675
|
+
configManager.update({ plugins: { external: updated } });
|
|
676
|
+
// Disable the plugin in the running manager
|
|
677
|
+
for (const p of pluginManager.getPlugins()) {
|
|
678
|
+
if (p.source === 'external' && p.packageName?.includes(name)) {
|
|
679
|
+
pluginManager.disable(p.name);
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
log.info('Plugin uninstalled', { name, package: match.package, modelsRemoved });
|
|
683
|
+
sendJson(res, { ok: true, removed: match.package, modelsRemoved });
|
|
684
|
+
}
|
|
685
|
+
catch (err) {
|
|
686
|
+
sendJson(res, { error: err.message }, 400);
|
|
687
|
+
}
|
|
688
|
+
}).catch((err) => sendJson(res, { error: err.message }, 500));
|
|
689
|
+
return true;
|
|
690
|
+
}
|
|
691
|
+
// ── Threat Intelligence API ──
|
|
692
|
+
// GET /api/threat/sessions — all elevated+ sessions
|
|
693
|
+
if (req.method === 'GET' && path === '/api/threat/sessions') {
|
|
694
|
+
sendJson(res, threatScoresRepo.getElevated());
|
|
695
|
+
return true;
|
|
696
|
+
}
|
|
697
|
+
// GET /api/threat/sessions/:id — single session threat details + event history
|
|
698
|
+
if (req.method === 'GET' && path.startsWith('/api/threat/sessions/')) {
|
|
699
|
+
const sessionId = decodeURIComponent(path.slice('/api/threat/sessions/'.length));
|
|
700
|
+
if (!sessionId) {
|
|
701
|
+
sendJson(res, { error: 'Missing session ID' }, 400);
|
|
671
702
|
return true;
|
|
672
703
|
}
|
|
673
|
-
const
|
|
674
|
-
|
|
675
|
-
|
|
704
|
+
const score = threatScoresRepo.get(sessionId);
|
|
705
|
+
const events = threatScoreEventsRepo.getBySession(sessionId);
|
|
706
|
+
const chainDetections = chainDetectionsRepo.getBySession(sessionId);
|
|
707
|
+
sendJson(res, { score, events, chainDetections });
|
|
708
|
+
return true;
|
|
709
|
+
}
|
|
710
|
+
// POST /api/threat/sessions/:id/reset — manually reset threat score
|
|
711
|
+
if (req.method === 'POST' && path.match(/^\/api\/threat\/sessions\/[^/]+\/reset$/)) {
|
|
712
|
+
const sessionId = decodeURIComponent(path.slice('/api/threat/sessions/'.length, path.lastIndexOf('/reset')));
|
|
713
|
+
if (!sessionId) {
|
|
714
|
+
sendJson(res, { error: 'Missing session ID' }, 400);
|
|
676
715
|
return true;
|
|
677
716
|
}
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
717
|
+
threatScoresRepo.reset(sessionId);
|
|
718
|
+
sendJson(res, { ok: true });
|
|
719
|
+
return true;
|
|
720
|
+
}
|
|
721
|
+
// GET /api/threat/chain-detections — recent tool chain detections
|
|
722
|
+
if (req.method === 'GET' && path === '/api/threat/chain-detections') {
|
|
723
|
+
const limit = parseInt(url.searchParams.get('limit') ?? '50', 10);
|
|
724
|
+
sendJson(res, chainDetectionsRepo.getRecent(limit));
|
|
725
|
+
return true;
|
|
726
|
+
}
|
|
727
|
+
// GET /api/threat/chain-rules — tool chain rules list
|
|
728
|
+
if (req.method === 'GET' && path === '/api/threat/chain-rules') {
|
|
729
|
+
sendJson(res, chain_rules_js_1.BUILTIN_CHAIN_RULES);
|
|
689
730
|
return true;
|
|
690
731
|
}
|
|
691
732
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-routes.js","sourceRoot":"","sources":["../../src/dashboard/api-routes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api-routes.js","sourceRoot":"","sources":["../../src/dashboard/api-routes.ts"],"names":[],"mappings":";;AAiDA,0CA0sBC;AA3vBD,qCAA6C;AAE7C,iDAA2C;AAE3C,qEAAyE;AACzE,yEAA4E;AAC5E,qFAAwF;AACxF,uEAA0E;AAC1E,+DAAmE;AACnE,qEAAyE;AACzE,6EAAgF;AAChF,yFAA2F;AAC3F,yEAA4E;AAC5E,qFAAuF;AACvF,+EAAkF;AAClF,qDAAoG;AACpG,+EAAkF;AAClF,2FAA6F;AAC7F,+FAAiG;AACjG,iEAAmE;AACnE,gDAA2D;AAE3D,sDAA+F;AAC/F,0DAAmG;AAGnG,8CAA2C;AAC3C,kDAAkD;AAElD,MAAM,GAAG,GAAG,IAAA,wBAAY,EAAC,YAAY,CAAC,CAAC;AAEvC,SAAS,QAAQ,CAAC,GAAoB;IACpC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,QAAQ,CAAC,GAAmB,EAAE,IAAa,EAAE,SAAiB,GAAG;IACxE,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC9D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,UAAU,CAAC,GAAoB;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,eAAe,CAC7B,EAAqB,EACrB,aAA4B,EAC5B,aAA4B,EAC5B,cAAyE;IAEzE,MAAM,YAAY,GAAG,IAAI,gCAAkB,CAAC,EAAE,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,mCAAmB,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,IAAI,+CAAyB,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,iCAAkB,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,0BAAe,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,gCAAkB,CAAC,EAAE,CAAC,CAAC;IAChD,MAAM,eAAe,GAAG,IAAI,uCAAqB,CAAC,EAAE,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,IAAI,kDAA0B,CAAC,EAAE,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,IAAI,mCAAmB,CAAC,EAAE,CAAC,CAAC;IAClD,MAAM,kBAAkB,GAAG,IAAI,8CAAwB,CAAC,EAAE,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,IAAI,yCAAsB,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,gBAAgB,GAAG,IAAI,yCAAsB,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,qBAAqB,GAAG,IAAI,oDAA2B,CAAC,EAAE,CAAC,CAAC;IAClE,MAAM,mBAAmB,GAAG,IAAI,wDAA6B,CAAC,EAAE,CAAC,CAAC;IAElE,OAAO,CAAC,GAAoB,EAAE,GAAmB,EAAW,EAAE;QAC5D,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;QAE1B,yCAAyC;QACzC,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC;YAClE,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC;YACrE,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE3D,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;YAC3E,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;YACtD,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC;YAErD,QAAQ,CAAC,GAAG,EAAE;gBACZ,KAAK;gBACL,MAAM;gBACN,KAAK,EAAE,UAAU;gBACjB,GAAG,EAAE,QAAQ;gBACb,YAAY,EAAE,gBAAgB;gBAC9B,OAAO,EAAE,IAAA,uBAAU,GAAE;gBACrB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;gBACxB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG;aAClC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oBAAoB;QACpB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;YACrD,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sBAAsB;QACtB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;YAClE,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3D,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,gFAAgF;QAChF,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;YACtD,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC5B,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;oBACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAClD,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,GAAG,CAAC,CAAC;wBACxD,OAAO;oBACT,CAAC;oBACD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAc,CAAC;oBAC9F,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;oBAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACxC,MAAM,KAAK,GAAyB,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;oBAClG,MAAM,MAAM,GAAG,IAAA,oBAAQ,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;oBACvD,QAAQ,CAAC,GAAG,EAAE;wBACZ,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BACpC,WAAW,EAAE,CAAC,CAAC,WAAW;4BAC1B,eAAe,EAAE,CAAC,CAAC,eAAe;4BAClC,UAAU,EAAE,CAAC,CAAC,UAAU;4BACxB,OAAO,EAAE,CAAC,CAAC,OAAO;yBACnB,CAAC,CAAC;wBACH,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;wBACzC,KAAK,EAAE,KAAK,IAAI,IAAI;qBACrB,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACf,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,2BAA2B;QAC3B,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,sBAAsB,EAAE,CAAC;YAC5D,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,4BAA4B;QAC5B,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,uBAAuB,EAAE,CAAC;YAC7D,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;YAClE,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3D,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,wBAAwB;QACxB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;YAClE,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3D,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0DAA0D;QAC1D,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3D,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,gBAAgB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yEAAyE;QACzE,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;YACnE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC3D,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,GAAG,CAAC,CAAC;gBACpD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,QAAQ,GAAG,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,mCAAmC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACnE,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;YACpD,QAAQ,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oDAAoD;QACpD,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACzF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,GAAG,CAAC,CAAC;gBACpD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,MAAM,GAAG,SAAS,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YACzD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,sDAAsD;gBACtD,MAAM,IAAI,GAAG,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;gBACrD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,GAAG,CAAC,CAAC;oBACvD,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,QAAQ,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClE,OAAO,IAAI,CAAC;YACd,CAAC;YAED,mFAAmF;YACnF,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;gBAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBACtD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBACxE,MAAM,gBAAgB,GAAG,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oBAClE,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAChC,MAAM,UAAU,GAAa,EAAE,CAAC;wBAChC,IAAI,CAAC;4BACH,MAAM,SAAS,GAAG,IAAA,oBAAQ,EAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;4BACzE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;4BAC/D,MAAM,SAAS,GAAG,IAAA,oBAAQ,EAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;4BAC1E,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;wBACjE,CAAC;wBAAC,MAAM,CAAC,CAAC,wBAAwB,CAAC,CAAC;wBACnC,MAA6C,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;oBAC1F,CAAC;gBACH,CAAC;YACH,CAAC;YAED,iDAAiD;YACjD,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;gBAC1C,MAAM,SAAS,GAAG,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC1D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,MAA6C,CAAC,iBAAiB,GAAG,SAAS,CAAC;gBAC/E,CAAC;YACH,CAAC;YAED,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kBAAkB;QAClB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC;YACnC,MAAM,YAAY,GAA4B,EAAE,CAAC;YACjD,MAAM,UAAU,GAAwH,EAAE,CAAC;YAC3I,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC;gBAC3C,MAAM,OAAO,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAClD,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;gBAC/B,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClJ,CAAC;YACD,QAAQ,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kBAAkB;QAClB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YACnD,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC5B,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAEhC,+BAA+B;oBAC/B,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;wBACxB,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;4BAClE,IAAI,OAAO,EAAE,CAAC;gCACZ,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;4BAC7B,CAAC;iCAAM,CAAC;gCACN,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;4BAC9B,CAAC;wBACH,CAAC;wBACD,OAAO,MAAM,CAAC,YAAY,CAAC;oBAC7B,CAAC;oBAED,iCAAiC;oBACjC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACnC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC/B,CAAC;oBAED,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC;oBACnC,MAAM,YAAY,GAA4B,EAAE,CAAC;oBACjD,MAAM,UAAU,GAAwH,EAAE,CAAC;oBAC3I,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC;wBAC3C,MAAM,OAAO,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;wBAClD,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;wBAC/B,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAClJ,CAAC;oBACD,QAAQ,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;gBACtD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACf,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yEAAyE;QACzE,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,uBAAuB,EAAE,CAAC;YAC9D,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC5B,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAEnC,+BAA+B;oBAC/B,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;wBACpC,IAAI,SAAS,CAAC,OAAO;4BAAE,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;;4BACtD,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;wBAC1C,OAAO,SAAS,CAAC,OAAO,CAAC;oBAC3B,CAAC;oBAED,uBAAuB;oBACvB,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACtC,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;oBACxD,CAAC;oBAED,6BAA6B;oBAC7B,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;oBAC7C,MAAM,UAAU,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;oBAC5D,gBAAgB,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;oBAE1D,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;gBACjE,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uDAAuD;QACvD,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;YAC/D,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,+DAA+D;QAC/D,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,CAAC;YACzE,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACvE,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;gBACd,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,GAAG,CAAC,CAAC;gBACpD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,EAAE,GAAG,CAAC,CAAC;gBACzD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAE/C,+BAA+B;gBAC/B,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBACnC,IAAI,QAAQ,CAAC,OAAO;wBAAE,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;;wBACrD,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBAC5C,CAAC;gBAED,6CAA6C;gBAC7C,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,QAAQ,CAAC;gBAC/C,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvC,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;gBACzD,CAAC;gBAED,6CAA6C;gBAC7C,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;gBAC7C,MAAM,UAAU,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBAC5D,gBAAgB,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;gBAE1D,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;YACjE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,gEAAgE;QAChE,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,6BAA6B,EAAE,CAAC;YACnE,QAAQ,CAAC,GAAG,EAAE;gBACZ,iBAAiB,EAAE,IAAA,0CAA2B,GAAE;gBAChD,iBAAiB,EAAE,IAAA,0CAA2B,GAAE;aACjD,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,+DAA+D;QAC/D,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;YAC1D,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;YACpE,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC;YACvD,IAAI,KAAK,IAAI,YAAY,EAAE,GAAG,EAAE,CAAC;gBAC/B,QAAQ,CAAC,GAAG,EAAE,IAAA,gCAAe,EAAC,YAAY,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,IAAA,sCAAqB,GAAE,CAAC;gBACtC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,qDAAqD;QACrD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;YAChE,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;YACpE,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC;gBACvB,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,GAAG,CAAC,CAAC;gBAChE,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,iBAAiB,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YACnE,MAAM,KAAK,GAAG,IAAA,mCAAkB,EAAC,YAAY,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;YACnF,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC7C,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,KAAK,GAAG,IAAA,sCAAqB,GAAE,CAAC;YACtC,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sDAAsD;QACtD,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACzD,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,8CAA8C;QAC9C,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC1D,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC5B,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;wBACrC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,oCAAoC,EAAE,EAAE,GAAG,CAAC,CAAC;wBACpE,OAAO;oBACT,CAAC;oBACD,iBAAiB;oBACjB,IAAI,CAAC;wBACH,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;oBACzD,CAAC;oBAAC,MAAM,CAAC;wBACP,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,GAAG,CAAC,CAAC;wBAC/C,OAAO;oBACT,CAAC;oBACD,MAAM,EAAE,GAAG,UAAU,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;oBAC3C,eAAe,CAAC,MAAM,CAAC;wBACrB,EAAE;wBACF,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ;wBACnC,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG;wBACpC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;wBACrC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;wBACjC,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI;wBAC7C,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,KAAK;qBAChC,CAAC,CAAC;oBACH,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC7B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACf,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,2EAA2E;QAC3E,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAClE,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;YACvE,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,GAAG,CAAC,CAAC;gBACpD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC5B,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,2BAA2B;oBAC3B,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACjE,eAAe,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;wBAClD,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC5B,OAAO;oBACT,CAAC;oBACD,6BAA6B;oBAC7B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBACtB,IAAI,CAAC;4BACH,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;wBACzD,CAAC;wBAAC,MAAM,CAAC;4BACP,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,GAAG,CAAC,CAAC;4BAC/C,OAAO;wBACT,CAAC;oBACH,CAAC;oBACD,kCAAkC;oBAClC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBACnC,eAAe,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;oBAC1C,CAAC;yBAAM,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;wBACtC,eAAe,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;oBACpD,CAAC;oBACD,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACf,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,4DAA4D;QAC5D,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACrE,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;YACvE,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,GAAG,CAAC,CAAC;gBACpD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,CAAC;gBACH,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC3B,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,8DAA8D;QAC9D,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,wBAAwB,EAAE,CAAC;YAC9D,QAAQ,CAAC,GAAG,EAAE;gBACZ,MAAM,EAAE,IAAA,0BAAe,GAAE;gBACzB,cAAc,EAAE,IAAA,iCAAsB,GAAE;aACzC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,2DAA2D;QAC3D,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,4BAA4B,EAAE,CAAC;YACnE,IAAA,4BAAiB,GAAE,CAAC;YACpB,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,iDAAiD;QACjD,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,wBAAwB,EAAE,CAAC;YAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;YAClE,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3D,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,2EAA2E;QAC3E,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,uBAAuB,EAAE,CAAC;YAC7D,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sEAAsE;QACtE,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,CAAC;YACxE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;YAChE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,GAAG,CAAC,CAAC;gBACpD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,6CAA6C;QAC7C,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,uBAAuB,EAAE,CAAC;YAC7D,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,+CAA+C;QAC/C,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,uBAAuB,EAAE,CAAC;YAC9D,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACzB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;wBACtC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,qCAAqC,EAAE,EAAE,GAAG,CAAC,CAAC;wBACrE,OAAO;oBACT,CAAC;oBACD,iBAAiB;oBACjB,IAAI,CAAC;wBAAC,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC;wBACtE,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,EAAE,GAAG,CAAC,CAAC;wBAC7D,OAAO;oBACT,CAAC;oBACD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBAC3B,IAAI,CAAC;4BAAC,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;wBAAC,CAAC;wBAAC,MAAM,CAAC;4BAC7E,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,GAAG,CAAC,CAAC;4BACjE,OAAO;wBACT,CAAC;oBACH,CAAC;oBACD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;oBAC7C,kBAAkB,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC3C,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClC,CAAC;gBAAC,MAAM,CAAC;oBACP,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,GAAG,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,wDAAwD;QACxD,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE,CAAC;YACtE,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3E,IAAI,CAAC,EAAE,EAAE,CAAC;gBAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,CAAC;gBAAC,OAAO,IAAI,CAAC;YAAC,CAAC;YAC3E,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACzB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC7B,2CAA2C;oBAC3C,IAAI,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACxD,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC5C,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC5B,OAAO;oBACT,CAAC;oBACD,kCAAkC;oBAClC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;wBACvB,IAAI,CAAC;4BAAC,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;wBAAC,CAAC;wBAAC,MAAM,CAAC;4BACtE,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,EAAE,GAAG,CAAC,CAAC;4BAC7D,OAAO;wBACT,CAAC;oBACH,CAAC;oBACD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBAC3B,IAAI,CAAC;4BAAC,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;wBAAC,CAAC;wBAAC,MAAM,CAAC;4BAC7E,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,GAAG,CAAC,CAAC;4BACjE,OAAO;wBACT,CAAC;oBACH,CAAC;oBACD,kBAAkB,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC3C,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9B,CAAC;gBAAC,MAAM,CAAC;oBACP,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,GAAG,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,wDAAwD;QACxD,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE,CAAC;YACzE,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3E,IAAI,CAAC,EAAE,EAAE,CAAC;gBAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,CAAC;gBAAC,OAAO,IAAI,CAAC;YAAC,CAAC;YAC3E,IAAI,CAAC;gBACH,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC9B,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,6EAA6E;QAC7E,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,2BAA2B,EAAE,CAAC;YACjE,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;YAClE,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;YAC3D,IAAI,MAAM,EAAE,CAAC;gBACX,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oDAAoD;QACpD,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,0BAA0B,EAAE,CAAC;YAChE,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,6DAA6D;QAC7D,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,wBAAwB,EAAE,CAAC;YAC/D,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC5B,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAc,CAAC;oBACjC,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,GAAG,CAAC,CAAC;wBAClD,OAAO;oBACT,CAAC;oBACD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC;oBACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;oBAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC3D,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,gCAAgC,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;wBACvE,OAAO;oBACT,CAAC;oBACD,0BAA0B;oBAC1B,IAAI,IAAA,oBAAU,EAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC9B,IAAA,gBAAM,EAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC1D,CAAC;oBACD,6BAA6B;oBAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC;oBAChD,MAAM,SAAS,GAAG,gBAAK,CAAC,SAAS,CAAC;oBAClC,IAAI,aAAa,GAAG,KAAK,CAAC;oBAC1B,IAAI,YAAY,IAAI,IAAA,oBAAU,EAAC,SAAS,CAAC,EAAE,CAAC;wBAC1C,IAAA,gBAAM,EAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;wBACpD,aAAa,GAAG,IAAI,CAAC;oBACvB,CAAC;oBACD,mCAAmC;oBACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;oBAClD,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;oBACzD,4CAA4C;oBAC5C,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC;wBAC3C,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC7D,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;wBAChC,CAAC;oBACH,CAAC;oBACD,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;oBAChF,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;gBACrE,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,gCAAgC;QAEhC,oDAAoD;QACpD,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,sBAAsB,EAAE,CAAC;YAC5D,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,+EAA+E;QAC/E,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACrE,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;YACjF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,GAAG,CAAC,CAAC;gBACpD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC7D,MAAM,eAAe,GAAG,mBAAmB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACpE,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oEAAoE;QACpE,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,EAAE,CAAC;YACnF,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7G,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,GAAG,CAAC,CAAC;gBACpD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAClC,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kEAAkE;QAClE,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,8BAA8B,EAAE,CAAC;YACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;YAClE,QAAQ,CAAC,GAAG,EAAE,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sDAAsD;QACtD,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;YAC/D,QAAQ,CAAC,GAAG,EAAE,oCAAmB,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/dashboard/page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/dashboard/page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAqpDhD,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAOxD"}
|
package/dist/dashboard/page.js
CHANGED
|
@@ -97,11 +97,13 @@ tr:hover td{background:var(--border)}
|
|
|
97
97
|
.audit-kv .v{color:var(--bright)}
|
|
98
98
|
.timeline-card{margin-bottom:4px;cursor:pointer;transition:border-color .15s;padding:10px 12px}
|
|
99
99
|
.timeline-card:hover{border-color:var(--cyan)}
|
|
100
|
-
.pro-feature-row{cursor:pointer;transition:border-color .15s}
|
|
101
|
-
.pro-feature-row:hover{border-color:var(--cyan)}
|
|
102
|
-
.pro-feature-row.unlocked .toggle-label{color:var(--green)}
|
|
103
100
|
.filter-input{background:var(--bg);border:1px solid var(--border);color:var(--bright);padding:4px 10px;font-family:inherit;font-size:11px;width:280px}
|
|
104
101
|
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}
|
|
102
|
+
.row-tag.elevated{background:#1a1a00;color:var(--yellow)}
|
|
103
|
+
.row-tag.high-threat{background:#1a0a00;color:#ff6600}
|
|
104
|
+
.row-tag.critical-threat{background:#330000;color:var(--red)}
|
|
105
|
+
.ti-reset-btn{padding:2px 8px;font-size:10px;cursor:pointer;font-family:inherit;color:var(--red);background:none;border:1px solid #330000;border-radius:2px}
|
|
106
|
+
.ti-reset-btn:hover{background:#1a0000}
|
|
105
107
|
</style>
|
|
106
108
|
</head>`;
|
|
107
109
|
// ── TITLEBAR ──────────────────────────────────────────────────────
|
|
@@ -181,6 +183,20 @@ const PAGE_GUARD = `
|
|
|
181
183
|
<div class="section-body" id="gd-rules"><div class="empty">No rules</div></div>
|
|
182
184
|
</div>
|
|
183
185
|
</div>
|
|
186
|
+
<div class="section" style="margin-top:8px">
|
|
187
|
+
<div class="section-head"><span class="section-title">Threat Sessions</span><span style="color:var(--muted);font-size:10px;margin-left:4px">(elevated+)</span></div>
|
|
188
|
+
<div class="section-body">
|
|
189
|
+
<table><thead><tr><th>Session</th><th>Score</th><th>Level</th><th>Events</th><th>Last Event</th><th></th></tr></thead><tbody id="ti-sessions-list"></tbody></table>
|
|
190
|
+
<p class="empty" id="ti-no-sessions">No elevated sessions</p>
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
<div class="section" style="margin-top:2px">
|
|
194
|
+
<div class="section-head"><span class="section-title">Chain Detections</span></div>
|
|
195
|
+
<div class="section-body">
|
|
196
|
+
<table><thead><tr><th>Time</th><th>Session</th><th>Rule</th><th>Sequence</th><th>Action</th></tr></thead><tbody id="ti-chains-list"></tbody></table>
|
|
197
|
+
<p class="empty" id="ti-no-chains">No chain detections</p>
|
|
198
|
+
</div>
|
|
199
|
+
</div>
|
|
184
200
|
</div>`;
|
|
185
201
|
// ── PAGE: LOG ─────────────────────────────────────────────────────
|
|
186
202
|
const PAGE_LOG = `
|
|
@@ -254,25 +270,20 @@ const PAGE_SETTINGS = `
|
|
|
254
270
|
<div class="section"><div class="section-head setting-toggle" data-target="set-plugins"><span class="section-title"><span class="sect-arrow">▾</span> PLUGINS</span></div>
|
|
255
271
|
<div class="section-body" id="set-plugins" style="padding:12px"><div id="plugin-toggles"></div></div></div>
|
|
256
272
|
|
|
257
|
-
<!-- 2.
|
|
258
|
-
<div class="section"
|
|
259
|
-
<div class="section-body" id="set-
|
|
260
|
-
<div id="
|
|
261
|
-
<div class="toggle-row
|
|
262
|
-
<div class="toggle-row
|
|
263
|
-
<div class="toggle-row pro-feature-row" data-pro-feature="ratelimit"><div><div class="toggle-label">Rate Limiting</div><div class="toggle-desc">Configurable rate limiting by API key, session, or global</div></div><span class="row-tag" style="background:#1a1a1a;color:var(--dim)">PRO</span></div>
|
|
273
|
+
<!-- 2. Optional Features -->
|
|
274
|
+
<div class="section"><div class="section-head setting-toggle" data-target="set-optional"><span class="section-title"><span class="sect-arrow">▸</span> OPTIONAL FEATURES</span></div>
|
|
275
|
+
<div class="section-body" id="set-optional" style="display:none;padding:12px">
|
|
276
|
+
<div id="optional-features">
|
|
277
|
+
<div class="toggle-row" data-opt="pi-classifier"><div><div class="toggle-label">AI Injection Detection</div><div class="toggle-desc">ML-based prompt injection detection (ONNX Runtime)</div></div><span class="row-tag" id="opt-tag-pi-classifier" style="background:#1a1a1a;color:var(--dim)">NOT INSTALLED</span></div>
|
|
278
|
+
<div class="toggle-row" data-opt="content-extractor"><div><div class="toggle-label">Content Extractor</div><div class="toggle-desc">PDF text extraction and image OCR for DLP scanning</div></div><span class="row-tag" id="opt-tag-content-extractor" style="background:#1a1a1a;color:var(--dim)">NOT INSTALLED</span></div>
|
|
264
279
|
</div>
|
|
265
|
-
<div id="
|
|
266
|
-
<div
|
|
267
|
-
<
|
|
268
|
-
<div
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
<input type="text" class="cfg-input" style="width:240px;display:inline-block" placeholder="License key" id="pro-license-key">
|
|
273
|
-
<button class="cfg-btn primary" onclick="activateLicense('pro-license-key')">Activate</button>
|
|
274
|
-
</div>
|
|
275
|
-
</div>
|
|
280
|
+
<div id="opt-install-hint" style="margin-top:12px;padding:12px;background:var(--bg);border:1px solid var(--border);font-size:11px;color:var(--dim)">
|
|
281
|
+
<div style="margin-bottom:4px;color:var(--bright)">Install optional plugins:</div>
|
|
282
|
+
<code style="color:var(--green);font-size:12px">bastion plugins install</code> or <code style="color:var(--green);font-size:12px">./install.sh -local -plugins</code>
|
|
283
|
+
<div style="margin-top:4px">Adds ML-based detection, PDF/OCR content extraction, and more.</div>
|
|
284
|
+
</div>
|
|
285
|
+
<div id="opt-uninstall-row" style="display:none;margin-top:12px;text-align:right">
|
|
286
|
+
<button id="opt-uninstall-btn" class="cfg-btn secondary" style="color:var(--red);border-color:#330000">Uninstall Optional Plugins</button>
|
|
276
287
|
</div>
|
|
277
288
|
</div></div>
|
|
278
289
|
|
|
@@ -547,29 +558,39 @@ function actionTag(a){
|
|
|
547
558
|
if(a==='flag')return '<span class="row-tag warn">flag</span>';
|
|
548
559
|
return '<span class="row-tag">'+esc(a)+'</span>';
|
|
549
560
|
}
|
|
561
|
+
function threatLevelTag(level){
|
|
562
|
+
if(level==='critical')return '<span class="row-tag critical-threat">critical</span>';
|
|
563
|
+
if(level==='high')return '<span class="row-tag high-threat">high</span>';
|
|
564
|
+
if(level==='elevated')return '<span class="row-tag elevated">elevated</span>';
|
|
565
|
+
return '<span class="row-tag">'+esc(level||'normal')+'</span>';
|
|
566
|
+
}
|
|
550
567
|
|
|
551
568
|
// ══ 4. PAGE: OVERVIEW ═════════════════════════════════════════════
|
|
552
569
|
async function refreshOverview(){
|
|
553
570
|
try{
|
|
554
571
|
var sp=sinceParam();
|
|
555
572
|
var qp=sp?'?'+sp:'';
|
|
556
|
-
var [statsR,alertsR,dlpRecentR,piRecentR]=await Promise.all([
|
|
573
|
+
var [statsR,alertsR,dlpRecentR,piRecentR,threatOvR]=await Promise.all([
|
|
557
574
|
apiFetch('/api/stats'+qp),
|
|
558
575
|
apiFetch('/api/tool-guard/alerts'),
|
|
559
576
|
apiFetch('/api/dlp/recent?limit=5'+(sp?'&'+sp:'')),
|
|
560
|
-
apiFetch('/api/plugin-events/recent?limit=5&plugin=pi-classifier'+(sp?'&'+sp:''))
|
|
577
|
+
apiFetch('/api/plugin-events/recent?limit=5&plugin=pi-classifier'+(sp?'&'+sp:'')),
|
|
578
|
+
apiFetch('/api/threat/sessions').catch(function(){return{json:function(){return[]}}})
|
|
561
579
|
]);
|
|
562
580
|
var statsData=await statsR.json();
|
|
563
581
|
var alertsData=await alertsR.json();
|
|
564
582
|
var dlpRecent=await dlpRecentR.json();
|
|
565
583
|
var piRecent=await piRecentR.json();
|
|
584
|
+
var threatOvData=await threatOvR.json();
|
|
585
|
+
var threatSessions=Array.isArray(threatOvData)?threatOvData:threatOvData.sessions||[];
|
|
586
|
+
var threatCount=threatSessions.length;
|
|
566
587
|
var s=statsData.stats;
|
|
567
588
|
var dlp=statsData.dlp||{};
|
|
568
589
|
var ba=dlp.by_action||{};
|
|
569
590
|
var piStats=statsData.pluginEvents||{};
|
|
570
591
|
|
|
571
592
|
// Gauges
|
|
572
|
-
if(!skipIfSame('ov-gauges',{s:s,dlp:dlp,pi:piStats})){
|
|
593
|
+
if(!skipIfSame('ov-gauges',{s:s,dlp:dlp,pi:piStats,tc:threatCount})){
|
|
573
594
|
var dlpTotal=dlp.total_events||0;
|
|
574
595
|
var piTotal=piStats.total_events||0;
|
|
575
596
|
var latAvg=s.avg_latency_ms||0;
|
|
@@ -579,6 +600,7 @@ async function refreshOverview(){
|
|
|
579
600
|
gauge('Tokens',fmt(s.total_input_tokens+s.total_output_tokens),fmt(s.total_input_tokens)+' in / '+fmt(s.total_output_tokens)+' out','')+
|
|
580
601
|
gauge('DLP Hits',fmt(dlpTotal),(ba.redact||0)+' redact, '+(ba.block||0)+' block',dlpTotal>0?'red':'')+
|
|
581
602
|
gauge('PI Detections',fmt(piTotal),'ML injection','red')+
|
|
603
|
+
gauge('Threats',fmt(threatCount),'elevated+ sessions',threatCount>0?'red':'green')+
|
|
582
604
|
gauge('Avg Latency',Math.round(latAvg)+'ms','','cyan');
|
|
583
605
|
}
|
|
584
606
|
|
|
@@ -783,12 +805,58 @@ async function refreshGuard(){
|
|
|
783
805
|
'<span class="row-tag '+(r.enabled?'audit':'')+'">'+((r.enabled?'ON':'OFF'))+'</span></div>';
|
|
784
806
|
}).join(''):'<div class="empty">No rules</div>';
|
|
785
807
|
}
|
|
808
|
+
|
|
809
|
+
// Threat Intelligence sections
|
|
810
|
+
try{
|
|
811
|
+
var [threatR,chainR]=await Promise.all([
|
|
812
|
+
apiFetch('/api/threat/sessions'),
|
|
813
|
+
apiFetch('/api/threat/chain-detections?limit=20')
|
|
814
|
+
]);
|
|
815
|
+
var sessions=await threatR.json();
|
|
816
|
+
var chains=await chainR.json();
|
|
817
|
+
|
|
818
|
+
// Threat sessions table
|
|
819
|
+
if(!skipIfSame('ti-sessions',sessions)){
|
|
820
|
+
var tsList=Array.isArray(sessions)?sessions:sessions.sessions||[];
|
|
821
|
+
document.getElementById('ti-no-sessions').style.display=tsList.length?'none':'';
|
|
822
|
+
document.getElementById('ti-sessions-list').innerHTML=tsList.map(function(s){
|
|
823
|
+
return '<tr><td class="mono" style="font-size:11px;color:#555">'+esc((s.session_id||s.sessionId||'').slice(0,12))+'</td>'+
|
|
824
|
+
'<td style="font-weight:700;color:var(--bright)">'+Math.round(s.score||0)+'</td>'+
|
|
825
|
+
'<td>'+threatLevelTag(s.level||s.threatLevel)+'</td>'+
|
|
826
|
+
'<td>'+fmt(s.events||s.eventCount||0)+'</td>'+
|
|
827
|
+
'<td>'+ago(s.last_event||s.lastEvent||s.updated_at||'')+'</td>'+
|
|
828
|
+
'<td><button class="ti-reset-btn" data-sid="'+esc(s.session_id||s.sessionId||'')+'">Reset</button></td></tr>';
|
|
829
|
+
}).join('');
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
// Chain detections table
|
|
833
|
+
if(!skipIfSame('ti-chains',chains)){
|
|
834
|
+
var chList=Array.isArray(chains)?chains:chains.detections||[];
|
|
835
|
+
document.getElementById('ti-no-chains').style.display=chList.length?'none':'';
|
|
836
|
+
document.getElementById('ti-chains-list').innerHTML=chList.map(function(c){
|
|
837
|
+
var seq=(c.sequence||c.tools||[]).map(function(t){return esc(t)}).join(' \\u2192 ');
|
|
838
|
+
var actionCls=(c.action==='block')?'block':'warn';
|
|
839
|
+
return '<tr><td>'+ago(c.created_at||c.timestamp||'')+'</td>'+
|
|
840
|
+
'<td class="mono" style="font-size:11px;color:#555">'+esc((c.session_id||c.sessionId||'').slice(0,12))+'</td>'+
|
|
841
|
+
'<td class="mono">'+esc(c.rule||c.ruleName||'')+'</td>'+
|
|
842
|
+
'<td style="font-size:11px">'+seq+'</td>'+
|
|
843
|
+
'<td><span class="row-tag '+actionCls+'">'+esc((c.action||'warn').toUpperCase())+'</span></td></tr>';
|
|
844
|
+
}).join('');
|
|
845
|
+
}
|
|
846
|
+
}catch(te){/* threat API may not be available */}
|
|
786
847
|
}catch(e){console.error('Guard refresh error',e)}
|
|
787
848
|
}
|
|
788
849
|
document.getElementById('gd-ack-btn').addEventListener('click',async function(){
|
|
789
850
|
await apiFetch('/api/tool-guard/alerts/ack',{method:'POST'});
|
|
790
851
|
refreshGuard();pollAlerts();
|
|
791
852
|
});
|
|
853
|
+
document.getElementById('ti-sessions-list').addEventListener('click',async function(e){
|
|
854
|
+
var btn=e.target.closest('.ti-reset-btn');if(!btn)return;
|
|
855
|
+
var sid=btn.dataset.sid;if(!sid)return;
|
|
856
|
+
btn.textContent='...';btn.disabled=true;
|
|
857
|
+
try{await apiFetch('/api/threat/sessions/'+encodeURIComponent(sid)+'/reset',{method:'POST'});_lastJson={};refreshGuard()}
|
|
858
|
+
catch(ex){btn.textContent='Reset';btn.disabled=false}
|
|
859
|
+
});
|
|
792
860
|
// Click guard event → go to Log detail
|
|
793
861
|
document.getElementById('gd-events').addEventListener('click',function(e){
|
|
794
862
|
var row=e.target.closest('.row[data-rid]');
|
|
@@ -1146,19 +1214,10 @@ document.querySelectorAll('.setting-toggle[data-target]').forEach(function(h){
|
|
|
1146
1214
|
});
|
|
1147
1215
|
});
|
|
1148
1216
|
|
|
1149
|
-
var _devMode=false;var _proLicense={pro:false};
|
|
1150
|
-
var _proFeatures={
|
|
1151
|
-
'ai-injection':{title:'AI Injection Detection',desc:'Multi-layer AI-driven prompt injection detection with semantic analysis.'},
|
|
1152
|
-
'budget':{title:'Budget Control',desc:'Per-session/user/project cost budgets with auto-blocking.'},
|
|
1153
|
-
'ratelimit':{title:'Rate Limiting',desc:'Configurable rate limiting by API key, session, or global scope.'}
|
|
1154
|
-
};
|
|
1155
|
-
|
|
1156
1217
|
async function refreshSettings(){
|
|
1157
1218
|
try{
|
|
1158
|
-
var
|
|
1159
|
-
var cfgData=await cfgR.json();
|
|
1160
|
-
_devMode=!!devData.dev;
|
|
1161
|
-
document.getElementById('sec-pro').style.display=_devMode?'':'none';
|
|
1219
|
+
var cfgR=await apiFetch('/api/config');
|
|
1220
|
+
var cfgData=await cfgR.json();
|
|
1162
1221
|
|
|
1163
1222
|
// 1. Plugins
|
|
1164
1223
|
var info=cfgData.pluginInfo||[];
|
|
@@ -1184,8 +1243,25 @@ async function refreshSettings(){
|
|
|
1184
1243
|
});
|
|
1185
1244
|
});
|
|
1186
1245
|
|
|
1187
|
-
// 2.
|
|
1188
|
-
|
|
1246
|
+
// 2. Optional Features
|
|
1247
|
+
var extNames=external.map(function(p){return p.name});
|
|
1248
|
+
var optMap={'pi-classifier':'pi-classifier','content-extractor':'content-extractor'};
|
|
1249
|
+
var hasAnyOpt=false;
|
|
1250
|
+
Object.keys(optMap).forEach(function(key){
|
|
1251
|
+
var tag=document.getElementById('opt-tag-'+key);if(!tag)return;
|
|
1252
|
+
var installed=extNames.indexOf(optMap[key])>=0;
|
|
1253
|
+
if(installed){
|
|
1254
|
+
hasAnyOpt=true;
|
|
1255
|
+
var p=external.find(function(x){return x.name===optMap[key]});
|
|
1256
|
+
tag.style.background=p&&p.enabled?'#0a1a0a':'#1a1a00';
|
|
1257
|
+
tag.style.color=p&&p.enabled?'#00ff88':'var(--yellow)';
|
|
1258
|
+
tag.textContent=p&&p.enabled?'ACTIVE':'DISABLED';
|
|
1259
|
+
}else{
|
|
1260
|
+
tag.style.background='#1a1a1a';tag.style.color='var(--dim)';tag.textContent='NOT INSTALLED';
|
|
1261
|
+
}
|
|
1262
|
+
});
|
|
1263
|
+
document.getElementById('opt-install-hint').style.display=hasAnyOpt?'none':'';
|
|
1264
|
+
document.getElementById('opt-uninstall-row').style.display=hasAnyOpt?'':'none';
|
|
1189
1265
|
|
|
1190
1266
|
// 3. DLP Config
|
|
1191
1267
|
await loadDlpConfig(cfgData);
|
|
@@ -1216,37 +1292,16 @@ async function refreshSettings(){
|
|
|
1216
1292
|
}catch(e){console.error('Settings refresh error',e)}
|
|
1217
1293
|
}
|
|
1218
1294
|
|
|
1219
|
-
//
|
|
1220
|
-
function
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
}
|
|
1227
|
-
})
|
|
1228
|
-
}
|
|
1229
|
-
function showProDetail(feature){
|
|
1230
|
-
var info=_proFeatures[feature];if(!info)return;
|
|
1231
|
-
document.getElementById('pro-detail-title').textContent=info.title;
|
|
1232
|
-
document.getElementById('pro-detail-desc').textContent=info.desc;
|
|
1233
|
-
document.getElementById('pro-detail').style.display='block';
|
|
1234
|
-
if(_proLicense.pro){document.getElementById('pro-detail-unlocked').style.display='block';document.getElementById('pro-detail-locked').style.display='none'}
|
|
1235
|
-
else{document.getElementById('pro-detail-unlocked').style.display='none';document.getElementById('pro-detail-locked').style.display='block';
|
|
1236
|
-
document.getElementById('pro-detail-license').style.display=(_devMode||_proLicense.installed)?'block':'none'}
|
|
1237
|
-
}
|
|
1238
|
-
document.querySelectorAll('.pro-feature-row').forEach(function(row){
|
|
1239
|
-
row.addEventListener('click',function(){showProDetail(row.dataset.proFeature)});
|
|
1295
|
+
// Optional plugins uninstall
|
|
1296
|
+
document.getElementById('opt-uninstall-btn').addEventListener('click',async function(){
|
|
1297
|
+
if(!confirm('Uninstall optional plugins (bastion-pro)?'))return;
|
|
1298
|
+
var removeModels=confirm('Also remove downloaded models? This frees disk space but models will need to be re-downloaded on next install.');
|
|
1299
|
+
try{
|
|
1300
|
+
var r=await apiFetch('/api/plugins/uninstall',{method:'POST',headers:{'content-type':'application/json'},body:JSON.stringify({name:'bastion-pro',removeModels:removeModels})});
|
|
1301
|
+
var d=await r.json();
|
|
1302
|
+
if(d.ok){refreshSettings()}else{alert(d.error||'Uninstall failed')}
|
|
1303
|
+
}catch(e){alert('Uninstall failed: '+e.message)}
|
|
1240
1304
|
});
|
|
1241
|
-
async function activateLicense(inputId){
|
|
1242
|
-
var key=document.getElementById(inputId).value.trim();if(!key)return;
|
|
1243
|
-
if(_devMode){
|
|
1244
|
-
try{var r=await apiFetch('/api/dev/activate',{method:'POST',headers:{'content-type':'application/json'},body:JSON.stringify({token:key})});
|
|
1245
|
-
var d=await r.json();if(d.ok){refreshSettings();return}alert(d.error||'Invalid token');
|
|
1246
|
-
}catch(e){alert('Activation failed')}
|
|
1247
|
-
}else{alert('License activation requires the Bastion Pro plugin.')}
|
|
1248
|
-
}
|
|
1249
|
-
window.activateLicense=activateLicense;
|
|
1250
1305
|
|
|
1251
1306
|
// DLP Config
|
|
1252
1307
|
var dlpServerState=null;var dlpBuiltinsLoaded=false;var dlpCleanSnapshot='';
|