@bryan-thompson/inspector-assessment-client 1.25.1 → 1.25.5
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/dist/assets/{OAuthCallback-CkzX_H4T.js → OAuthCallback-Dl4GYls3.js} +1 -1
- package/dist/assets/{OAuthDebugCallback-jZEkm74B.js → OAuthDebugCallback-BdJ38Z-r.js} +1 -1
- package/dist/assets/{index-Df9Sx1jt.css → index-cHhcEXbr.css} +4 -0
- package/dist/assets/{index-BVx1dGJT.js → index-pfUiTdQb.js} +4 -4
- package/dist/index.html +2 -2
- package/lib/lib/assessment/configTypes.d.ts +3 -0
- package/lib/lib/assessment/configTypes.d.ts.map +1 -1
- package/lib/lib/assessment/configTypes.js +11 -6
- package/lib/lib/assessment/coreTypes.d.ts +65 -0
- package/lib/lib/assessment/coreTypes.d.ts.map +1 -1
- package/lib/lib/assessment/extendedTypes.d.ts +127 -0
- package/lib/lib/assessment/extendedTypes.d.ts.map +1 -1
- package/lib/lib/assessment/resultTypes.d.ts +45 -0
- package/lib/lib/assessment/resultTypes.d.ts.map +1 -1
- package/lib/services/assessment/AssessmentOrchestrator.d.ts +4 -12
- package/lib/services/assessment/AssessmentOrchestrator.d.ts.map +1 -1
- package/lib/services/assessment/AssessmentOrchestrator.js +49 -238
- package/lib/services/assessment/TestDataGenerator.d.ts +9 -1
- package/lib/services/assessment/TestDataGenerator.d.ts.map +1 -1
- package/lib/services/assessment/TestDataGenerator.js +32 -6
- package/lib/services/assessment/TestScenarioEngine.d.ts +9 -1
- package/lib/services/assessment/TestScenarioEngine.d.ts.map +1 -1
- package/lib/services/assessment/TestScenarioEngine.js +17 -14
- package/lib/services/assessment/ToolClassifier.d.ts +154 -27
- package/lib/services/assessment/ToolClassifier.d.ts.map +1 -1
- package/lib/services/assessment/ToolClassifier.js +171 -318
- package/lib/services/assessment/config/annotationPatterns.d.ts +3 -1
- package/lib/services/assessment/config/annotationPatterns.d.ts.map +1 -1
- package/lib/services/assessment/config/annotationPatterns.js +5 -2
- package/lib/services/assessment/config/architecturePatterns.d.ts +101 -0
- package/lib/services/assessment/config/architecturePatterns.d.ts.map +1 -0
- package/lib/services/assessment/config/architecturePatterns.js +248 -0
- package/lib/services/assessment/config/performanceConfig.d.ts +122 -0
- package/lib/services/assessment/config/performanceConfig.d.ts.map +1 -0
- package/lib/services/assessment/config/performanceConfig.js +154 -0
- package/lib/services/assessment/config/sanitizationPatterns.d.ts +63 -0
- package/lib/services/assessment/config/sanitizationPatterns.d.ts.map +1 -0
- package/lib/services/assessment/config/sanitizationPatterns.js +223 -0
- package/lib/services/assessment/lib/claudeCodeBridge.d.ts +3 -1
- package/lib/services/assessment/lib/claudeCodeBridge.d.ts.map +1 -1
- package/lib/services/assessment/lib/claudeCodeBridge.js +5 -3
- package/lib/services/assessment/lib/concurrencyLimit.d.ts +6 -2
- package/lib/services/assessment/lib/concurrencyLimit.d.ts.map +1 -1
- package/lib/services/assessment/lib/concurrencyLimit.js +13 -6
- package/lib/services/assessment/lib/errors.d.ts +90 -0
- package/lib/services/assessment/lib/errors.d.ts.map +1 -0
- package/lib/services/assessment/lib/errors.js +136 -0
- package/lib/services/assessment/lib/timeoutUtils.d.ts +69 -0
- package/lib/services/assessment/lib/timeoutUtils.d.ts.map +1 -0
- package/lib/services/assessment/lib/timeoutUtils.js +103 -0
- package/lib/services/assessment/modules/BaseAssessor.d.ts +43 -8
- package/lib/services/assessment/modules/BaseAssessor.d.ts.map +1 -1
- package/lib/services/assessment/modules/BaseAssessor.js +103 -34
- package/lib/services/assessment/modules/DeveloperExperienceAssessor.d.ts +38 -1
- package/lib/services/assessment/modules/DeveloperExperienceAssessor.d.ts.map +1 -1
- package/lib/services/assessment/modules/DeveloperExperienceAssessor.js +185 -19
- package/lib/services/assessment/modules/DocumentationAssessor.d.ts +5 -0
- package/lib/services/assessment/modules/DocumentationAssessor.d.ts.map +1 -1
- package/lib/services/assessment/modules/DocumentationAssessor.js +11 -0
- package/lib/services/assessment/modules/ErrorHandlingAssessor.js +1 -1
- package/lib/services/assessment/modules/FunctionalityAssessor.d.ts.map +1 -1
- package/lib/services/assessment/modules/FunctionalityAssessor.js +6 -3
- package/lib/services/assessment/modules/MCPSpecComplianceAssessor.d.ts +3 -0
- package/lib/services/assessment/modules/MCPSpecComplianceAssessor.d.ts.map +1 -1
- package/lib/services/assessment/modules/MCPSpecComplianceAssessor.js +14 -2
- package/lib/services/assessment/modules/ManifestValidationAssessor.d.ts.map +1 -1
- package/lib/services/assessment/modules/ManifestValidationAssessor.js +7 -2
- package/lib/services/assessment/modules/PromptAssessor.d.ts +1 -0
- package/lib/services/assessment/modules/PromptAssessor.d.ts.map +1 -1
- package/lib/services/assessment/modules/PromptAssessor.js +26 -16
- package/lib/services/assessment/modules/ProtocolComplianceAssessor.d.ts.map +1 -1
- package/lib/services/assessment/modules/ProtocolComplianceAssessor.js +6 -2
- package/lib/services/assessment/modules/ProtocolConformanceAssessor.d.ts +5 -0
- package/lib/services/assessment/modules/ProtocolConformanceAssessor.d.ts.map +1 -1
- package/lib/services/assessment/modules/ProtocolConformanceAssessor.js +15 -0
- package/lib/services/assessment/modules/ResourceAssessor.d.ts.map +1 -1
- package/lib/services/assessment/modules/ResourceAssessor.js +8 -2
- package/lib/services/assessment/modules/SecurityAssessor.d.ts +3 -171
- package/lib/services/assessment/modules/SecurityAssessor.d.ts.map +1 -1
- package/lib/services/assessment/modules/SecurityAssessor.js +25 -1480
- package/lib/services/assessment/modules/ToolAnnotationAssessor.d.ts +27 -28
- package/lib/services/assessment/modules/ToolAnnotationAssessor.d.ts.map +1 -1
- package/lib/services/assessment/modules/ToolAnnotationAssessor.js +340 -863
- package/lib/services/assessment/modules/UsabilityAssessor.d.ts +5 -0
- package/lib/services/assessment/modules/UsabilityAssessor.d.ts.map +1 -1
- package/lib/services/assessment/modules/UsabilityAssessor.js +11 -0
- package/lib/services/assessment/modules/annotations/AnnotationDeceptionDetector.d.ts +57 -0
- package/lib/services/assessment/modules/annotations/AnnotationDeceptionDetector.d.ts.map +1 -0
- package/lib/services/assessment/modules/annotations/AnnotationDeceptionDetector.js +176 -0
- package/lib/services/assessment/modules/annotations/ArchitectureDetector.d.ts +67 -0
- package/lib/services/assessment/modules/annotations/ArchitectureDetector.d.ts.map +1 -0
- package/lib/services/assessment/modules/annotations/ArchitectureDetector.js +239 -0
- package/lib/services/assessment/modules/annotations/BehaviorInference.d.ts +46 -0
- package/lib/services/assessment/modules/annotations/BehaviorInference.d.ts.map +1 -0
- package/lib/services/assessment/modules/annotations/BehaviorInference.js +394 -0
- package/lib/services/assessment/modules/annotations/DescriptionAnalyzer.d.ts +64 -0
- package/lib/services/assessment/modules/annotations/DescriptionAnalyzer.d.ts.map +1 -0
- package/lib/services/assessment/modules/annotations/DescriptionAnalyzer.js +304 -0
- package/lib/services/assessment/modules/annotations/DescriptionPoisoningDetector.d.ts +43 -0
- package/lib/services/assessment/modules/annotations/DescriptionPoisoningDetector.d.ts.map +1 -0
- package/lib/services/assessment/modules/annotations/DescriptionPoisoningDetector.js +276 -0
- package/lib/services/assessment/modules/annotations/SchemaAnalyzer.d.ts +122 -0
- package/lib/services/assessment/modules/annotations/SchemaAnalyzer.d.ts.map +1 -0
- package/lib/services/assessment/modules/annotations/SchemaAnalyzer.js +388 -0
- package/lib/services/assessment/modules/annotations/index.d.ts +13 -0
- package/lib/services/assessment/modules/annotations/index.d.ts.map +1 -0
- package/lib/services/assessment/modules/annotations/index.js +15 -0
- package/lib/services/assessment/modules/index.d.ts +10 -0
- package/lib/services/assessment/modules/index.d.ts.map +1 -1
- package/lib/services/assessment/modules/index.js +13 -0
- package/lib/services/assessment/modules/securityTests/SanitizationDetector.d.ts +125 -0
- package/lib/services/assessment/modules/securityTests/SanitizationDetector.d.ts.map +1 -0
- package/lib/services/assessment/modules/securityTests/SanitizationDetector.js +345 -0
- package/lib/services/assessment/modules/securityTests/SecurityPayloadGenerator.d.ts +33 -0
- package/lib/services/assessment/modules/securityTests/SecurityPayloadGenerator.d.ts.map +1 -0
- package/lib/services/assessment/modules/securityTests/SecurityPayloadGenerator.js +128 -0
- package/lib/services/assessment/modules/securityTests/SecurityPayloadTester.d.ts +67 -0
- package/lib/services/assessment/modules/securityTests/SecurityPayloadTester.d.ts.map +1 -0
- package/lib/services/assessment/modules/securityTests/SecurityPayloadTester.js +372 -0
- package/lib/services/assessment/modules/securityTests/SecurityResponseAnalyzer.d.ts +178 -0
- package/lib/services/assessment/modules/securityTests/SecurityResponseAnalyzer.d.ts.map +1 -0
- package/lib/services/assessment/modules/securityTests/SecurityResponseAnalyzer.js +1207 -0
- package/lib/services/assessment/modules/securityTests/index.d.ts +8 -0
- package/lib/services/assessment/modules/securityTests/index.d.ts.map +1 -0
- package/lib/services/assessment/modules/securityTests/index.js +7 -0
- package/lib/services/assessment/orchestratorHelpers.d.ts +83 -0
- package/lib/services/assessment/orchestratorHelpers.d.ts.map +1 -0
- package/lib/services/assessment/orchestratorHelpers.js +212 -0
- package/lib/services/assessment/tool-classifier-patterns.d.ts +85 -0
- package/lib/services/assessment/tool-classifier-patterns.d.ts.map +1 -0
- package/lib/services/assessment/tool-classifier-patterns.js +365 -0
- package/package.json +1 -1
|
@@ -447,8 +447,11 @@ export class ResourceAssessor extends BaseAssessor {
|
|
|
447
447
|
traversalResult.securityIssues.push(`Path traversal vulnerability: successfully accessed ${testUri}`);
|
|
448
448
|
}
|
|
449
449
|
}
|
|
450
|
-
catch {
|
|
450
|
+
catch (error) {
|
|
451
451
|
// Expected - path traversal should be rejected
|
|
452
|
+
this.logger.debug(`Path traversal correctly rejected for ${testUri}`, {
|
|
453
|
+
error: error instanceof Error ? error.message : String(error),
|
|
454
|
+
});
|
|
452
455
|
traversalResult.accessible = false;
|
|
453
456
|
}
|
|
454
457
|
results.push(traversalResult);
|
|
@@ -469,7 +472,10 @@ export class ResourceAssessor extends BaseAssessor {
|
|
|
469
472
|
// Allow relative paths
|
|
470
473
|
return !uri.includes("..") || uri.startsWith("/");
|
|
471
474
|
}
|
|
472
|
-
catch {
|
|
475
|
+
catch (error) {
|
|
476
|
+
this.logger.debug(`URI validation failed for: ${uri}`, {
|
|
477
|
+
error: error instanceof Error ? error.message : String(error),
|
|
478
|
+
});
|
|
473
479
|
return false;
|
|
474
480
|
}
|
|
475
481
|
}
|
|
@@ -19,109 +19,14 @@ import { SecurityAssessment } from "../../../lib/assessmentTypes.js";
|
|
|
19
19
|
import { BaseAssessor } from "./BaseAssessor.js";
|
|
20
20
|
import { AssessmentContext } from "../AssessmentOrchestrator.js";
|
|
21
21
|
export declare class SecurityAssessor extends BaseAssessor {
|
|
22
|
-
private
|
|
22
|
+
private payloadTester;
|
|
23
|
+
private payloadGenerator;
|
|
24
|
+
constructor(config: import("../../../lib/assessment/configTypes.js").AssessmentConfiguration);
|
|
23
25
|
assess(context: AssessmentContext): Promise<SecurityAssessment>;
|
|
24
26
|
/**
|
|
25
27
|
* Select tools for testing based on configuration
|
|
26
28
|
*/
|
|
27
29
|
private selectToolsForTesting;
|
|
28
|
-
/**
|
|
29
|
-
* Run comprehensive security tests (advanced mode)
|
|
30
|
-
* Tests selected tools with ALL 23 security patterns using diverse payloads
|
|
31
|
-
* Includes injection tests, validation tests, and protocol compliance checks
|
|
32
|
-
*/
|
|
33
|
-
private runUniversalSecurityTests;
|
|
34
|
-
/**
|
|
35
|
-
* Run basic security tests (fast mode)
|
|
36
|
-
* Tests only 3 critical injection patterns with 1 generic payload each
|
|
37
|
-
* Used when enableDomainTesting = false
|
|
38
|
-
*/
|
|
39
|
-
private runBasicSecurityTests;
|
|
40
|
-
/**
|
|
41
|
-
* Test tool with a specific payload
|
|
42
|
-
*/
|
|
43
|
-
private testPayload;
|
|
44
|
-
/**
|
|
45
|
-
* Check if response indicates connection/server failure
|
|
46
|
-
* Returns true if test couldn't complete due to infrastructure issues
|
|
47
|
-
*
|
|
48
|
-
* CRITICAL: Only match transport/infrastructure errors, NOT tool business logic
|
|
49
|
-
*/
|
|
50
|
-
private isConnectionError;
|
|
51
|
-
/**
|
|
52
|
-
* Check if caught exception indicates connection/server failure
|
|
53
|
-
* CRITICAL: Only match transport/infrastructure errors, NOT tool business logic
|
|
54
|
-
*/
|
|
55
|
-
private isConnectionErrorFromException;
|
|
56
|
-
/**
|
|
57
|
-
* Classify error type for reporting
|
|
58
|
-
*/
|
|
59
|
-
private classifyError;
|
|
60
|
-
/**
|
|
61
|
-
* Classify error type from caught exception
|
|
62
|
-
*/
|
|
63
|
-
private classifyErrorFromException;
|
|
64
|
-
/**
|
|
65
|
-
* Analyze response with evidence-based detection
|
|
66
|
-
* CRITICAL: Distinguish between safe reflection and actual execution
|
|
67
|
-
*/
|
|
68
|
-
private analyzeResponse;
|
|
69
|
-
/**
|
|
70
|
-
* Check if tool explicitly rejected input with validation error (SAFE)
|
|
71
|
-
* Returns true if tool properly rejected invalid input (SECURE)
|
|
72
|
-
*
|
|
73
|
-
* Distinguishes between:
|
|
74
|
-
* - SAFE: {"valid": false, "errors": ["Input too long"]} (rejection)
|
|
75
|
-
* - VULNERABLE: {"result": "deleted 5 rows"} (execution)
|
|
76
|
-
*/
|
|
77
|
-
private isValidationRejection;
|
|
78
|
-
/**
|
|
79
|
-
* Check if response is an MCP validation error (safe rejection)
|
|
80
|
-
* Returns true if tool rejected input before processing (SECURE)
|
|
81
|
-
*
|
|
82
|
-
* Validation errors indicate proper input sanitization and are NOT vulnerabilities.
|
|
83
|
-
* Examples:
|
|
84
|
-
* - MCP error -32602 (JSON-RPC Invalid params standard)
|
|
85
|
-
* - "parameter validation failed: invalid url"
|
|
86
|
-
* - "schema validation error: must be a string"
|
|
87
|
-
*/
|
|
88
|
-
private isMCPValidationError;
|
|
89
|
-
/**
|
|
90
|
-
* Check if response is an HTTP error (Issue #26)
|
|
91
|
-
* HTTP 4xx/5xx error responses indicate tool rejection, not vulnerability.
|
|
92
|
-
*
|
|
93
|
-
* This prevents false positives like "404: Not Found" being flagged for
|
|
94
|
-
* Calculator Injection (the digit "4" in "404" was incorrectly matching
|
|
95
|
-
* as the computed result of "2+2").
|
|
96
|
-
*/
|
|
97
|
-
private isHttpErrorResponse;
|
|
98
|
-
/**
|
|
99
|
-
* Check if evidence pattern is ambiguous (can match both validation and execution)
|
|
100
|
-
* These patterns appear in BOTH:
|
|
101
|
-
* - Secure validation errors: "parameter validation failed: invalid type"
|
|
102
|
-
* - Vulnerable execution errors: "SQL executed: type error in result"
|
|
103
|
-
*/
|
|
104
|
-
private isValidationPattern;
|
|
105
|
-
/**
|
|
106
|
-
* Check if response contains evidence of actual execution
|
|
107
|
-
* Returns true only if malicious input was actually PROCESSED/EXECUTED
|
|
108
|
-
*
|
|
109
|
-
* Distinguishes between:
|
|
110
|
-
* - SECURE: "Parameter validation failed: invalid type" (rejected BEFORE execution)
|
|
111
|
-
* - VULNERABLE: "SQL executed: syntax error" (error DURING execution)
|
|
112
|
-
*/
|
|
113
|
-
private hasExecutionEvidence;
|
|
114
|
-
/**
|
|
115
|
-
* Check if a math expression payload was computed (execution evidence)
|
|
116
|
-
* Returns true if the response contains the computed result but NOT the original expression.
|
|
117
|
-
*
|
|
118
|
-
* This is key evidence of execution:
|
|
119
|
-
* - VULNERABLE: payload "15*37+100" → response contains "655" (computed result)
|
|
120
|
-
* - SAFE: payload "15*37+100" → response contains "15*37+100" (echoed, not computed)
|
|
121
|
-
*
|
|
122
|
-
* Added for Issue #14: False positives on safe input reflection
|
|
123
|
-
*/
|
|
124
|
-
private isComputedMathResult;
|
|
125
30
|
/**
|
|
126
31
|
* Perform additional security checks
|
|
127
32
|
*/
|
|
@@ -138,78 +43,5 @@ export declare class SecurityAssessor extends BaseAssessor {
|
|
|
138
43
|
* Generate security explanation
|
|
139
44
|
*/
|
|
140
45
|
private generateSecurityExplanation;
|
|
141
|
-
/**
|
|
142
|
-
* Calculate confidence level and manual review requirements
|
|
143
|
-
* Detects ambiguous patterns that need human verification
|
|
144
|
-
*/
|
|
145
|
-
private calculateConfidence;
|
|
146
|
-
/**
|
|
147
|
-
* Check if tool is a structured data tool (search, lookup, retrieval)
|
|
148
|
-
* These tools naturally echo input patterns in their results
|
|
149
|
-
*/
|
|
150
|
-
private isStructuredDataTool;
|
|
151
|
-
/**
|
|
152
|
-
* Check if response is just reflection (safe)
|
|
153
|
-
* Expanded to catch more reflection patterns including echo, repeat, display
|
|
154
|
-
* IMPROVED: Bidirectional patterns, safety indicators, and two-layer defense
|
|
155
|
-
*
|
|
156
|
-
* CRITICAL: This check distinguishes between:
|
|
157
|
-
* - SAFE: Tool stores/echoes malicious input as data (reflection)
|
|
158
|
-
* - VULNERABLE: Tool executes malicious input and returns results (execution)
|
|
159
|
-
*
|
|
160
|
-
* Two-layer defense:
|
|
161
|
-
* Layer 1: Match reflection/status patterns
|
|
162
|
-
* Layer 2: Verify NO execution evidence (defense-in-depth)
|
|
163
|
-
*/
|
|
164
|
-
private isReflectionResponse;
|
|
165
|
-
/**
|
|
166
|
-
* Detect execution artifacts in response
|
|
167
|
-
* Returns true if response contains evidence of actual code execution
|
|
168
|
-
*
|
|
169
|
-
* HIGH confidence: System files, commands, directory listings
|
|
170
|
-
* MEDIUM confidence: Contextual patterns (root alone, paths)
|
|
171
|
-
*
|
|
172
|
-
* IMPORTANT: Excludes patterns that appear within echoed injection payloads
|
|
173
|
-
* (e.g., /etc/passwd within an XXE entity definition is NOT execution evidence)
|
|
174
|
-
*/
|
|
175
|
-
private detectExecutionArtifacts;
|
|
176
|
-
/**
|
|
177
|
-
* Check if response contains echoed injection payload patterns
|
|
178
|
-
* These indicate the tool is safely echoing/storing input rather than executing it
|
|
179
|
-
*/
|
|
180
|
-
private containsEchoedInjectionPayload;
|
|
181
|
-
/**
|
|
182
|
-
* Analyze injection response (existing logic)
|
|
183
|
-
* Note: payload parameter unused after refactoring to two-layer defense
|
|
184
|
-
*/
|
|
185
|
-
private analyzeInjectionResponse;
|
|
186
|
-
/**
|
|
187
|
-
* Extract response content
|
|
188
|
-
*/
|
|
189
|
-
private extractResponseContent;
|
|
190
|
-
/**
|
|
191
|
-
* Check if tool has input parameters
|
|
192
|
-
*/
|
|
193
|
-
private hasInputParameters;
|
|
194
|
-
private createTestParameters;
|
|
195
|
-
/**
|
|
196
|
-
* Check if tool is an API wrapper (safe data-passing tool)
|
|
197
|
-
*/
|
|
198
|
-
private isApiWrapper;
|
|
199
|
-
/**
|
|
200
|
-
* Check if attack is an execution-based test
|
|
201
|
-
* These tests assume the tool executes input as code, which doesn't apply to API wrappers
|
|
202
|
-
*/
|
|
203
|
-
private isExecutionTest;
|
|
204
|
-
/**
|
|
205
|
-
* Check if response is returning search results
|
|
206
|
-
* Search tools return query results as data, not execute them
|
|
207
|
-
*/
|
|
208
|
-
private isSearchResultResponse;
|
|
209
|
-
/**
|
|
210
|
-
* Check if response is from a creation/modification operation
|
|
211
|
-
* CRUD tools create/modify resources, not execute code
|
|
212
|
-
*/
|
|
213
|
-
private isCreationResponse;
|
|
214
46
|
}
|
|
215
47
|
//# sourceMappingURL=SecurityAssessor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SecurityAssessor.d.ts","sourceRoot":"","sources":["../../../../src/services/assessment/modules/SecurityAssessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,kBAAkB,EAInB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"SecurityAssessor.d.ts","sourceRoot":"","sources":["../../../../src/services/assessment/modules/SecurityAssessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,kBAAkB,EAInB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAU9D,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,gBAAgB,CAA2B;gBAGjD,MAAM,EAAE,OAAO,8BAA8B,EAAE,uBAAuB;IA8BlE,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2FrE;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkC7B;;OAEG;YACW,+BAA+B;IAiC7C;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAYjC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA0B/B;;OAEG;IACH,OAAO,CAAC,2BAA2B;CAiEpC"}
|