@framers/agentos-ext-web-search 1.1.0 → 1.1.1

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.
@@ -1,60 +1,86 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FactCheckTool = void 0;
4
1
  /**
5
- * Fact checking tool that verifies statements against web sources
2
+ * Fact Check Tool — verify statements against web sources.
6
3
  *
7
- * @class FactCheckTool
8
- * @implements {ITool}
4
+ * Updated to conform to AgentOS `ITool` (inputSchema + ToolExecutionContext).
9
5
  *
10
- * @example
11
- * ```typescript
12
- * const tool = new FactCheckTool(searchService);
13
- * const result = await tool.execute({
14
- * statement: 'The Earth orbits the Sun',
15
- * checkSources: true,
16
- * confidence: 'high'
17
- * });
18
- * ```
6
+ * @module @framers/agentos-ext-web-search
19
7
  */
20
- class FactCheckTool {
8
+ export class FactCheckTool {
21
9
  searchService;
22
- id = 'factCheck';
23
- name = 'Fact Check';
24
- description = 'Verify facts and statements against web sources';
25
- /**
26
- * Creates an instance of FactCheckTool
27
- * @param {SearchProviderService} searchService - The search provider service
28
- */
29
- constructor(searchService) {
10
+ defaultMultiSearch;
11
+ id = 'fact-check-v1';
12
+ /** Tool call name used by the LLM / ToolExecutor. */
13
+ name = 'fact_check';
14
+ displayName = 'Fact Check';
15
+ description = 'Verify a statement against web sources and return a verdict with confidence.';
16
+ category = 'research';
17
+ hasSideEffects = false;
18
+ inputSchema = {
19
+ type: 'object',
20
+ required: ['statement'],
21
+ properties: {
22
+ statement: {
23
+ type: 'string',
24
+ description: 'The statement to fact-check',
25
+ minLength: 5,
26
+ },
27
+ checkSources: {
28
+ type: 'boolean',
29
+ description: 'Whether to include source citations',
30
+ default: true,
31
+ },
32
+ confidence: {
33
+ type: 'string',
34
+ description: 'Required confidence level for the verdict',
35
+ enum: ['low', 'medium', 'high'],
36
+ default: 'medium',
37
+ },
38
+ multiSearch: {
39
+ type: 'boolean',
40
+ description: 'When true, each verification query fans out to ALL available providers in parallel for higher-confidence cross-provider consensus.',
41
+ default: false,
42
+ },
43
+ },
44
+ additionalProperties: false,
45
+ };
46
+ requiredCapabilities = ['capability:web_search'];
47
+ constructor(searchService, defaultMultiSearch = false) {
30
48
  this.searchService = searchService;
49
+ this.defaultMultiSearch = defaultMultiSearch;
31
50
  }
32
- /**
33
- * Executes fact checking on a statement
34
- *
35
- * @param {Object} input - The fact check parameters
36
- * @param {string} input.statement - The statement to fact-check
37
- * @param {boolean} [input.checkSources=true] - Whether to include source citations
38
- * @param {string} [input.confidence='medium'] - Required confidence level
39
- * @returns {Promise<{success: boolean, output?: any, error?: string}>} Fact check results
40
- */
41
- async execute(input) {
51
+ async execute(input, _context) {
42
52
  try {
43
53
  const checkSources = input.checkSources !== false;
44
54
  const requiredConfidence = input.confidence || 'medium';
45
- // Search for information about the statement
55
+ const useMultiSearch = input.multiSearch ?? this.defaultMultiSearch;
46
56
  const queries = this.generateFactCheckQueries(input.statement);
47
- // Perform searches in parallel
48
- const searchPromises = queries.map(query => this.searchService.search(query, { maxResults: 5 })
49
- .catch(err => ({
50
- provider: 'error',
51
- results: [],
52
- metadata: { query, error: err.message, timestamp: new Date().toISOString() }
53
- })));
54
- const searchResults = await Promise.all(searchPromises);
55
- // Analyze results for fact verification
57
+ let searchResults;
58
+ if (useMultiSearch) {
59
+ const multiPromises = queries.map((query) => this.searchService
60
+ .multiSearch(query, { maxResults: 5 })
61
+ .then((multi) => ({
62
+ provider: 'multi',
63
+ results: multi.results,
64
+ metadata: { query, timestamp: multi.metadata.timestamp },
65
+ }))
66
+ .catch((err) => ({
67
+ provider: 'error',
68
+ results: [],
69
+ metadata: { query, error: err?.message || String(err), timestamp: new Date().toISOString() },
70
+ })));
71
+ searchResults = (await Promise.all(multiPromises));
72
+ }
73
+ else {
74
+ const searchPromises = queries.map((query) => this.searchService
75
+ .search(query, { maxResults: 5 })
76
+ .catch((err) => ({
77
+ provider: 'error',
78
+ results: [],
79
+ metadata: { query, error: err?.message || String(err), timestamp: new Date().toISOString() },
80
+ })));
81
+ searchResults = (await Promise.all(searchPromises));
82
+ }
56
83
  const analysis = this.analyzeFactCheckResults(input.statement, searchResults, requiredConfidence);
57
- // Compile sources if requested
58
84
  const sources = checkSources ? this.compileSources(searchResults) : [];
59
85
  return {
60
86
  success: true,
@@ -62,46 +88,56 @@ class FactCheckTool {
62
88
  statement: input.statement,
63
89
  verdict: analysis.verdict,
64
90
  confidence: analysis.confidence,
91
+ confidenceLevel: analysis.confidenceLevel,
65
92
  explanation: analysis.explanation,
66
- sources: sources,
93
+ sources,
67
94
  contradictingSources: analysis.contradictingSources,
68
95
  supportingSources: analysis.supportingSources,
69
- timestamp: new Date().toISOString()
70
- }
96
+ meetsRequiredConfidence: analysis.meetsRequiredConfidence,
97
+ timestamp: new Date().toISOString(),
98
+ },
71
99
  };
72
100
  }
73
101
  catch (error) {
74
- return {
75
- success: false,
76
- error: error.message
77
- };
102
+ return { success: false, error: error?.message || String(error) };
103
+ }
104
+ }
105
+ validateArgs(input) {
106
+ const errors = [];
107
+ if (!input.statement) {
108
+ errors.push('Statement is required');
109
+ }
110
+ else if (typeof input.statement !== 'string') {
111
+ errors.push('Statement must be a string');
112
+ }
113
+ else if (input.statement.length < 5) {
114
+ errors.push('Statement must be at least 5 characters long');
115
+ }
116
+ if (input.confidence !== undefined) {
117
+ if (!['low', 'medium', 'high'].includes(input.confidence)) {
118
+ errors.push('Confidence must be low, medium, or high');
119
+ }
78
120
  }
121
+ if (input.checkSources !== undefined && typeof input.checkSources !== 'boolean') {
122
+ errors.push('checkSources must be a boolean');
123
+ }
124
+ if (input.multiSearch !== undefined && typeof input.multiSearch !== 'boolean') {
125
+ errors.push('multiSearch must be a boolean');
126
+ }
127
+ return errors.length === 0 ? { isValid: true } : { isValid: false, errors };
79
128
  }
80
- /**
81
- * Generates queries for fact-checking a statement
82
- *
83
- * @private
84
- * @param {string} statement - The statement to check
85
- * @returns {string[]} Array of search queries
86
- */
129
+ // ============================================================================
130
+ // Internals (ported from the previous implementation)
131
+ // ============================================================================
87
132
  generateFactCheckQueries(statement) {
88
133
  return [
89
- statement, // Original statement
90
- `"${statement}" fact check`, // Exact match with fact check
91
- `${statement} true or false`, // Truth verification
92
- `${statement} debunked myths`, // Check for debunking
93
- `is it true that ${statement}` // Question format
134
+ statement,
135
+ `"${statement}" fact check`,
136
+ `${statement} true or false`,
137
+ `${statement} debunked myths`,
138
+ `is it true that ${statement}`,
94
139
  ];
95
140
  }
96
- /**
97
- * Analyzes search results to determine fact validity
98
- *
99
- * @private
100
- * @param {string} statement - Original statement
101
- * @param {any[]} searchResults - Search results to analyze
102
- * @param {string} requiredConfidence - Required confidence level
103
- * @returns {Object} Analysis results with verdict and confidence
104
- */
105
141
  analyzeFactCheckResults(statement, searchResults, requiredConfidence) {
106
142
  let supportingCount = 0;
107
143
  let contradictingCount = 0;
@@ -109,35 +145,37 @@ class FactCheckTool {
109
145
  const supportingSources = [];
110
146
  const contradictingSources = [];
111
147
  const statementLower = statement.toLowerCase();
148
+ void statementLower; // retained for future use
112
149
  const negativeIndicators = ['false', 'myth', 'debunked', 'incorrect', 'wrong', 'not true', 'fake'];
113
150
  const positiveIndicators = ['true', 'correct', 'accurate', 'confirmed', 'verified', 'fact'];
114
151
  for (const searchResult of searchResults) {
115
152
  if (!searchResult.results)
116
153
  continue;
117
154
  for (const result of searchResult.results) {
118
- const contentLower = (result.title + ' ' + result.snippet).toLowerCase();
119
- // Check for fact-checking sites
120
- const isFactCheckSite = result.url.includes('snopes') ||
121
- result.url.includes('factcheck') ||
122
- result.url.includes('politifact');
123
- const weight = isFactCheckSite ? 2 : 1; // Give more weight to fact-checking sites
124
- // Analyze sentiment toward the statement
125
- let hasNegative = negativeIndicators.some(ind => contentLower.includes(ind));
126
- let hasPositive = positiveIndicators.some(ind => contentLower.includes(ind));
155
+ const contentLower = (String(result.title || '') + ' ' + String(result.snippet || '')).toLowerCase();
156
+ const isFactCheckSite = String(result.url || '').includes('snopes') ||
157
+ String(result.url || '').includes('factcheck') ||
158
+ String(result.url || '').includes('politifact');
159
+ // Multi-search results with cross-provider agreement get extra weight
160
+ const agreementBonus = typeof result.agreementCount === 'number' ? Math.max(0, result.agreementCount - 1) : 0;
161
+ const weight = (isFactCheckSite ? 2 : 1) + agreementBonus;
162
+ const hasNegative = negativeIndicators.some((ind) => contentLower.includes(ind));
163
+ const hasPositive = positiveIndicators.some((ind) => contentLower.includes(ind));
127
164
  if (hasNegative && !hasPositive) {
128
165
  contradictingCount += weight;
129
- contradictingSources.push(result.url);
166
+ if (result.url)
167
+ contradictingSources.push(String(result.url));
130
168
  }
131
169
  else if (hasPositive && !hasNegative) {
132
170
  supportingCount += weight;
133
- supportingSources.push(result.url);
171
+ if (result.url)
172
+ supportingSources.push(String(result.url));
134
173
  }
135
174
  else {
136
175
  neutralCount += 1;
137
176
  }
138
177
  }
139
178
  }
140
- // Calculate confidence and verdict
141
179
  const total = supportingCount + contradictingCount + neutralCount;
142
180
  let confidence;
143
181
  let verdict;
@@ -163,15 +201,14 @@ class FactCheckTool {
163
201
  else if (supportRatio > 0.4 && contradictRatio > 0.4) {
164
202
  verdict = 'PARTIALLY TRUE';
165
203
  confidence = 50;
166
- explanation = `Mixed evidence with both supporting and contradicting sources.`;
204
+ explanation = 'Mixed evidence with both supporting and contradicting sources.';
167
205
  }
168
206
  else {
169
207
  verdict = 'UNVERIFIED';
170
208
  confidence = Math.max(supportRatio, contradictRatio) * 100;
171
- explanation = `Insufficient clear evidence to verify this statement.`;
209
+ explanation = 'Insufficient clear evidence to verify this statement.';
172
210
  }
173
211
  }
174
- // Adjust confidence based on required level
175
212
  const confidenceLevel = confidence > 80 ? 'high' : confidence > 50 ? 'medium' : 'low';
176
213
  return {
177
214
  verdict,
@@ -180,28 +217,13 @@ class FactCheckTool {
180
217
  explanation,
181
218
  supportingSources: supportingSources.slice(0, 5),
182
219
  contradictingSources: contradictingSources.slice(0, 5),
183
- meetsRequiredConfidence: this.meetsConfidenceRequirement(confidenceLevel, requiredConfidence)
220
+ meetsRequiredConfidence: this.meetsConfidenceRequirement(confidenceLevel, requiredConfidence),
184
221
  };
185
222
  }
186
- /**
187
- * Checks if confidence level meets requirement
188
- *
189
- * @private
190
- * @param {string} actual - Actual confidence level
191
- * @param {string} required - Required confidence level
192
- * @returns {boolean} True if requirement is met
193
- */
194
223
  meetsConfidenceRequirement(actual, required) {
195
224
  const levels = { low: 1, medium: 2, high: 3 };
196
225
  return levels[actual] >= levels[required];
197
226
  }
198
- /**
199
- * Compiles relevant sources from search results
200
- *
201
- * @private
202
- * @param {any[]} searchResults - Search results to compile from
203
- * @returns {any[]} Compiled sources with metadata
204
- */
205
227
  compileSources(searchResults) {
206
228
  const sources = [];
207
229
  const seenUrls = new Set();
@@ -209,79 +231,21 @@ class FactCheckTool {
209
231
  if (!searchResult.results)
210
232
  continue;
211
233
  for (const result of searchResult.results) {
234
+ if (!result.url)
235
+ continue;
212
236
  if (seenUrls.has(result.url))
213
237
  continue;
214
238
  seenUrls.add(result.url);
215
239
  sources.push({
216
- title: result.title,
217
- url: result.url,
218
- snippet: result.snippet,
219
- provider: searchResult.provider,
220
- query: searchResult.metadata.query
240
+ title: String(result.title || ''),
241
+ url: String(result.url),
242
+ snippet: String(result.snippet || ''),
243
+ provider: String(searchResult.provider || 'unknown'),
244
+ query: String(searchResult.metadata?.query || ''),
221
245
  });
222
246
  }
223
247
  }
224
- return sources.slice(0, 10); // Limit to top 10 sources
225
- }
226
- /**
227
- * Validates input parameters
228
- *
229
- * @param {any} input - Input to validate
230
- * @returns {{valid: boolean, errors: string[]}} Validation result
231
- */
232
- validate(input) {
233
- const errors = [];
234
- if (!input.statement) {
235
- errors.push('Statement is required');
236
- }
237
- else if (typeof input.statement !== 'string') {
238
- errors.push('Statement must be a string');
239
- }
240
- else if (input.statement.length < 5) {
241
- errors.push('Statement must be at least 5 characters long');
242
- }
243
- if (input.confidence !== undefined) {
244
- if (!['low', 'medium', 'high'].includes(input.confidence)) {
245
- errors.push('Confidence must be low, medium, or high');
246
- }
247
- }
248
- if (input.checkSources !== undefined && typeof input.checkSources !== 'boolean') {
249
- errors.push('checkSources must be a boolean');
250
- }
251
- return {
252
- valid: errors.length === 0,
253
- errors
254
- };
255
- }
256
- /**
257
- * Returns the JSON schema for the tool's input
258
- *
259
- * @returns {Object} JSON Schema object
260
- */
261
- getSchema() {
262
- return {
263
- type: 'object',
264
- required: ['statement'],
265
- properties: {
266
- statement: {
267
- type: 'string',
268
- description: 'The statement to fact-check',
269
- minLength: 5
270
- },
271
- checkSources: {
272
- type: 'boolean',
273
- description: 'Whether to include source citations',
274
- default: true
275
- },
276
- confidence: {
277
- type: 'string',
278
- description: 'Required confidence level for the verdict',
279
- enum: ['low', 'medium', 'high'],
280
- default: 'medium'
281
- }
282
- }
283
- };
248
+ return sources.slice(0, 10);
284
249
  }
285
250
  }
286
- exports.FactCheckTool = FactCheckTool;
287
251
  //# sourceMappingURL=factCheck.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"factCheck.js","sourceRoot":"","sources":["../../src/tools/factCheck.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factCheck.js","sourceRoot":"","sources":["../../src/tools/factCheck.ts"],"names":[],"mappings":"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"}
@@ -1,101 +1,47 @@
1
- import { ITool } from '@framers/agentos';
2
- import { SearchProviderService } from '../services/searchProvider';
3
1
  /**
4
- * Research aggregator tool that performs multiple searches and synthesizes results
2
+ * Research Aggregator Tool — runs multiple searches on a topic and aggregates results.
5
3
  *
6
- * @class ResearchAggregatorTool
7
- * @implements {ITool}
4
+ * Updated to conform to AgentOS `ITool` (inputSchema + ToolExecutionContext).
8
5
  *
9
- * @example
10
- * ```typescript
11
- * const tool = new ResearchAggregatorTool(searchService);
12
- * const result = await tool.execute({
13
- * topic: 'AI safety research',
14
- * sources: 3,
15
- * depth: 'comprehensive'
16
- * });
17
- * ```
6
+ * @module @framers/agentos-ext-web-search
18
7
  */
19
- export declare class ResearchAggregatorTool implements ITool {
20
- private searchService;
21
- readonly id = "researchAggregator";
22
- readonly name = "Research Aggregator";
23
- readonly description = "Aggregate research from multiple searches on a topic";
24
- /**
25
- * Creates an instance of ResearchAggregatorTool
26
- * @param {SearchProviderService} searchService - The search provider service
27
- */
28
- constructor(searchService: SearchProviderService);
29
- /**
30
- * Executes research aggregation on a topic
31
- *
32
- * @param {Object} input - The research parameters
33
- * @param {string} input.topic - The research topic
34
- * @param {number} [input.sources=3] - Number of different search angles to explore
35
- * @param {string} [input.depth='moderate'] - Research depth (quick, moderate, comprehensive)
36
- * @returns {Promise<{success: boolean, output?: any, error?: string}>} Aggregated research results
37
- */
38
- execute(input: {
39
- topic: string;
40
- sources?: number;
41
- depth?: 'quick' | 'moderate' | 'comprehensive';
42
- }): Promise<{
43
- success: boolean;
44
- output?: any;
45
- error?: string;
46
- }>;
47
- /**
48
- * Generates diverse search queries for comprehensive research
49
- *
50
- * @private
51
- * @param {string} topic - The research topic
52
- * @param {number} count - Number of queries to generate
53
- * @param {string} depth - Research depth level
54
- * @returns {string[]} Array of search queries
55
- */
8
+ import type { ITool, JSONSchemaObject, ToolExecutionContext, ToolExecutionResult } from '@framers/agentos';
9
+ import { SearchProviderService } from '../services/searchProvider.js';
10
+ export interface ResearchAggregatorInput {
11
+ topic: string;
12
+ sources?: number;
13
+ depth?: 'quick' | 'moderate' | 'comprehensive';
14
+ multiSearch?: boolean;
15
+ }
16
+ export interface ResearchAggregatorOutput {
17
+ topic: string;
18
+ sources: number;
19
+ depth: 'quick' | 'moderate' | 'comprehensive';
20
+ queries: string[];
21
+ aggregatedResults: any;
22
+ timestamp: string;
23
+ }
24
+ export declare class ResearchAggregatorTool implements ITool<ResearchAggregatorInput, ResearchAggregatorOutput> {
25
+ private readonly searchService;
26
+ private readonly defaultMultiSearch;
27
+ readonly id = "research-aggregator-v1";
28
+ /** Tool call name used by the LLM / ToolExecutor. */
29
+ readonly name = "research_aggregate";
30
+ readonly displayName = "Research Aggregator";
31
+ readonly description = "Aggregate research from multiple web searches on a topic (deduplicated + categorized).";
32
+ readonly category = "research";
33
+ readonly hasSideEffects = false;
34
+ readonly inputSchema: JSONSchemaObject;
35
+ readonly requiredCapabilities: string[];
36
+ constructor(searchService: SearchProviderService, defaultMultiSearch?: boolean);
37
+ execute(input: ResearchAggregatorInput, _context: ToolExecutionContext): Promise<ToolExecutionResult<ResearchAggregatorOutput>>;
38
+ validateArgs(input: Record<string, any>): {
39
+ isValid: boolean;
40
+ errors?: any[];
41
+ };
56
42
  private generateSearchQueries;
57
- /**
58
- * Aggregates and deduplicates search results
59
- *
60
- * @private
61
- * @param {any[]} searchResults - Array of search results from different queries
62
- * @param {string} topic - The original research topic
63
- * @returns {Object} Aggregated and organized results
64
- */
65
43
  private aggregateResults;
66
- /**
67
- * Calculates relevance score for a search result
68
- *
69
- * @private
70
- * @param {any} result - Search result object
71
- * @param {string} topic - Original topic for comparison
72
- * @returns {number} Relevance score (0-100)
73
- */
74
44
  private calculateRelevance;
75
- /**
76
- * Gets top results across all categories
77
- *
78
- * @private
79
- * @param {any} categories - Categorized results
80
- * @param {number} count - Number of top results to return
81
- * @returns {any[]} Top results by relevance
82
- */
83
45
  private getTopResults;
84
- /**
85
- * Validates input parameters
86
- *
87
- * @param {any} input - Input to validate
88
- * @returns {{valid: boolean, errors: string[]}} Validation result
89
- */
90
- validate(input: any): {
91
- valid: boolean;
92
- errors: string[];
93
- };
94
- /**
95
- * Returns the JSON schema for the tool's input
96
- *
97
- * @returns {Object} JSON Schema object
98
- */
99
- getSchema(): any;
100
46
  }
101
47
  //# sourceMappingURL=researchAggregator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"researchAggregator.d.ts","sourceRoot":"","sources":["../../src/tools/researchAggregator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,sBAAuB,YAAW,KAAK;IAStC,OAAO,CAAC,aAAa;IARjC,SAAgB,EAAE,wBAAwB;IAC1C,SAAgB,IAAI,yBAAyB;IAC7C,SAAgB,WAAW,0DAA0D;IAErF;;;OAGG;gBACiB,aAAa,EAAE,qBAAqB;IAExD;;;;;;;;OAQG;IACG,OAAO,CAAC,KAAK,EAAE;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,eAAe,CAAC;KAChD,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA2C/D;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB;IA6B7B;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAoDxB;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAYrB;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IA2B1D;;;;OAIG;IACH,SAAS,IAAI,GAAG;CAyBjB"}
1
+ {"version":3,"file":"researchAggregator.d.ts","sourceRoot":"","sources":["../../src/tools/researchAggregator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE3G,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,eAAe,CAAC;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,eAAe,CAAC;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iBAAiB,EAAE,GAAG,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,sBAAuB,YAAW,KAAK,CAAC,uBAAuB,EAAE,wBAAwB,CAAC;IA2CnG,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IA3CrC,SAAgB,EAAE,4BAA4B;IAC9C,qDAAqD;IACrD,SAAgB,IAAI,wBAAwB;IAC5C,SAAgB,WAAW,yBAAyB;IACpD,SAAgB,WAAW,4FAA4F;IACvH,SAAgB,QAAQ,cAAc;IACtC,SAAgB,cAAc,SAAS;IAEvC,SAAgB,WAAW,EAAE,gBAAgB,CA6B3C;IAEF,SAAgB,oBAAoB,WAA6B;gBAG9C,aAAa,EAAE,qBAAqB,EACpC,kBAAkB,GAAE,OAAe;IAGhD,OAAO,CACX,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;IA4DzD,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE;IAgC9E,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,gBAAgB;IAwDxB,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,aAAa;CAStB"}