@bedolla/enriweb 0.1.5 → 0.1.7

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.
Files changed (56) hide show
  1. package/README.md +48 -20
  2. package/dist/client/EnriProxyClient.d.ts +176 -5
  3. package/dist/client/EnriProxyClient.d.ts.map +1 -1
  4. package/dist/client/EnriProxyClient.js +255 -31
  5. package/dist/client/EnriProxyClient.js.map +1 -1
  6. package/dist/index.js +65 -25
  7. package/dist/index.js.map +1 -1
  8. package/dist/package-info.d.ts +26 -0
  9. package/dist/package-info.d.ts.map +1 -1
  10. package/dist/package-info.js +29 -2
  11. package/dist/package-info.js.map +1 -1
  12. package/dist/server/EnriWebServer.d.ts +33 -0
  13. package/dist/server/EnriWebServer.d.ts.map +1 -1
  14. package/dist/server/EnriWebServer.js +338 -28
  15. package/dist/server/EnriWebServer.js.map +1 -1
  16. package/dist/shared/Utf8SafeTextSlicer.d.ts +47 -0
  17. package/dist/shared/Utf8SafeTextSlicer.d.ts.map +1 -0
  18. package/dist/shared/Utf8SafeTextSlicer.js +97 -0
  19. package/dist/shared/Utf8SafeTextSlicer.js.map +1 -0
  20. package/dist/shared/validation.d.ts +13 -1
  21. package/dist/shared/validation.d.ts.map +1 -1
  22. package/dist/shared/validation.js +41 -17
  23. package/dist/shared/validation.js.map +1 -1
  24. package/dist/tools/WebFetchNpmProjection.d.ts +143 -0
  25. package/dist/tools/WebFetchNpmProjection.d.ts.map +1 -0
  26. package/dist/tools/WebFetchNpmProjection.js +480 -0
  27. package/dist/tools/WebFetchNpmProjection.js.map +1 -0
  28. package/dist/tools/WebFetchParamsParser.d.ts +26 -0
  29. package/dist/tools/WebFetchParamsParser.d.ts.map +1 -0
  30. package/dist/tools/WebFetchParamsParser.js +157 -0
  31. package/dist/tools/WebFetchParamsParser.js.map +1 -0
  32. package/dist/tools/WebFetchRangesExecutor.d.ts +86 -0
  33. package/dist/tools/WebFetchRangesExecutor.d.ts.map +1 -0
  34. package/dist/tools/WebFetchRangesExecutor.js +277 -0
  35. package/dist/tools/WebFetchRangesExecutor.js.map +1 -0
  36. package/dist/tools/WebFetchTool.d.ts +187 -71
  37. package/dist/tools/WebFetchTool.d.ts.map +1 -1
  38. package/dist/tools/WebFetchTool.js +145 -367
  39. package/dist/tools/WebFetchTool.js.map +1 -1
  40. package/dist/tools/WebFetchToolTextFormatter.d.ts +57 -0
  41. package/dist/tools/WebFetchToolTextFormatter.d.ts.map +1 -0
  42. package/dist/tools/WebFetchToolTextFormatter.js +135 -0
  43. package/dist/tools/WebFetchToolTextFormatter.js.map +1 -0
  44. package/dist/tools/WebSearchRegistryHttpReader.d.ts +116 -0
  45. package/dist/tools/WebSearchRegistryHttpReader.d.ts.map +1 -0
  46. package/dist/tools/WebSearchRegistryHttpReader.js +157 -0
  47. package/dist/tools/WebSearchRegistryHttpReader.js.map +1 -0
  48. package/dist/tools/WebSearchRegistryVerifier.d.ts +111 -6
  49. package/dist/tools/WebSearchRegistryVerifier.d.ts.map +1 -1
  50. package/dist/tools/WebSearchRegistryVerifier.js +406 -125
  51. package/dist/tools/WebSearchRegistryVerifier.js.map +1 -1
  52. package/dist/tools/WebSearchTool.d.ts +85 -2
  53. package/dist/tools/WebSearchTool.d.ts.map +1 -1
  54. package/dist/tools/WebSearchTool.js +197 -19
  55. package/dist/tools/WebSearchTool.js.map +1 -1
  56. package/package.json +3 -2
@@ -12,6 +12,17 @@
12
12
  * - GitHub releases (api.github.com)
13
13
  *
14
14
  * @module tools/WebSearchRegistryVerifier
15
+ *
16
+ * @remarks Size note (~1470 lines, documented exception to the <=700
17
+ * policy): the verifier intentionally keeps one module per concern-free
18
+ * boundary — URL candidate detection, the five ecosystem adapters (npm,
19
+ * PyPI, crates.io, NuGet, GitHub), semantic-version ranking, and the
20
+ * TTL/LRU caches — because the adapters share the failure-normalization
21
+ * and cache-key invariants that a split would otherwise duplicate. The
22
+ * bounded JSON transport (capped streaming, timeouts, Link pagination)
23
+ * was extracted to {@link WebSearchRegistryHttpReader} per the AR-9
24
+ * touch-extraction rule; a per-ecosystem file split remains the documented
25
+ * follow-up for the adapters themselves.
15
26
  */
16
27
  import type { WebSearchResultEntry } from "../client/EnriProxyClient.js";
17
28
  /**
@@ -97,14 +108,35 @@ export interface WebSearchRegistryVerifierDeps {
97
108
  * Enriches web search results with registry version verification.
98
109
  */
99
110
  export declare class WebSearchRegistryVerifier {
111
+ /**
112
+ * Capped JSON HTTP reader owning the registry transport concerns.
113
+ */
114
+ private readonly httpReader;
100
115
  /**
101
116
  * NuGet V3 service index endpoint.
102
117
  */
103
118
  private static readonly NUGET_SERVICE_INDEX_URL;
119
+ /**
120
+ * Maximum bytes read from one npm packument (full-version manifest).
121
+ *
122
+ * @remarks
123
+ * Popular packages legitimately exceed the shared 5 MB registry cap
124
+ * (thousands of versions with full metadata); parity with the EnriCode
125
+ * client plane's 16 MiB download budget for the same endpoint.
126
+ */
127
+ private static readonly NPM_PACKUMENT_MAX_BYTES;
104
128
  /**
105
129
  * Default concurrency for registry verification.
106
130
  */
107
131
  private static readonly DEFAULT_CONCURRENCY;
132
+ /**
133
+ * Time one cached error entity stays fresh before a retry.
134
+ */
135
+ private static readonly ERROR_CACHE_TTL_MS;
136
+ /**
137
+ * Maximum cached verification entries (LRU eviction beyond this count).
138
+ */
139
+ private static readonly MAX_CACHE_ENTRIES;
108
140
  /**
109
141
  * Dependencies.
110
142
  */
@@ -113,6 +145,16 @@ export declare class WebSearchRegistryVerifier {
113
145
  * In-memory TTL cache.
114
146
  */
115
147
  private readonly cache;
148
+ /**
149
+ * In-flight verification promises keyed by cache key.
150
+ *
151
+ * @remarks
152
+ * Single-flight coalescing: concurrent MCP requests verifying the same
153
+ * entity join one registry fetch instead of racing duplicates. Entries
154
+ * are removed when the verification settles (success, error or caller
155
+ * abort), so the map never outlives its requests.
156
+ */
157
+ private readonly inFlight;
116
158
  /**
117
159
  * Cached NuGet service index resolution.
118
160
  */
@@ -127,9 +169,10 @@ export declare class WebSearchRegistryVerifier {
127
169
  * Attempts to verify canonical versions for registry entities found in search results.
128
170
  *
129
171
  * @param results - Search results
172
+ * @param signal - Optional caller abort signal (stops queueing new verifications)
130
173
  * @returns Verified entities (best-effort)
131
174
  */
132
- verifyFromSearchResults(results: WebSearchResultEntry[]): Promise<VerifiedRegistryEntity[]>;
175
+ verifyFromSearchResults(results: WebSearchResultEntry[], signal?: AbortSignal): Promise<VerifiedRegistryEntity[]>;
133
176
  /**
134
177
  * Collects registry candidates from search result URLs.
135
178
  *
@@ -137,14 +180,40 @@ export declare class WebSearchRegistryVerifier {
137
180
  * @returns Candidate list
138
181
  */
139
182
  private collectCandidates;
183
+ /**
184
+ * Maximum `releases` pages followed per GitHub verification.
185
+ */
186
+ private static readonly GITHUB_RELEASES_MAX_PAGES;
140
187
  /**
141
188
  * Verifies a single candidate, using cache when available.
142
189
  *
143
190
  * @param kind - Registry kind
144
191
  * @param name - Candidate name
192
+ * @param signal - Optional caller abort signal forwarded to registry fetches
145
193
  * @returns Verification result
146
194
  */
147
195
  private verifyCandidate;
196
+ /**
197
+ * Reports whether one failure is a caller cancellation.
198
+ *
199
+ * @remarks
200
+ * Internal subfetch timeouts are reclassified as `TimeoutError` upstream
201
+ * and stay cacheable like any transient error; only genuine caller aborts
202
+ * (or errors shaped like one, e.g. a Spanish "cancelada" message) skip
203
+ * the error cache.
204
+ *
205
+ * @param error - Failure from a registry fetch.
206
+ * @param signal - Caller abort signal threaded into the verification.
207
+ * @returns True for caller cancellations.
208
+ */
209
+ private static isCallerCancellation;
210
+ /**
211
+ * Maps transport failures to stable Spanish text.
212
+ *
213
+ * @param error - Failure from a registry fetch.
214
+ * @returns Spanish description for the cached error entity.
215
+ */
216
+ private static describeFetchError;
148
217
  /**
149
218
  * Runs tasks with a fixed concurrency limit.
150
219
  *
@@ -157,6 +226,7 @@ export declare class WebSearchRegistryVerifier {
157
226
  * Verifies npm package versions via the npm registry.
158
227
  *
159
228
  * @param packageName - npm package name (may be scoped)
229
+ * @param signal - Optional caller abort signal
160
230
  * @returns Verified registry entity
161
231
  */
162
232
  private verifyNpm;
@@ -164,6 +234,7 @@ export declare class WebSearchRegistryVerifier {
164
234
  * Verifies PyPI project versions via the PyPI JSON API.
165
235
  *
166
236
  * @param projectName - PyPI project name
237
+ * @param signal - Optional caller abort signal
167
238
  * @returns Verified registry entity
168
239
  */
169
240
  private verifyPyPi;
@@ -171,6 +242,7 @@ export declare class WebSearchRegistryVerifier {
171
242
  * Verifies crates.io package versions via the crates.io API.
172
243
  *
173
244
  * @param crateName - Crate name
245
+ * @param signal - Optional caller abort signal
174
246
  * @returns Verified registry entity
175
247
  */
176
248
  private verifyCrates;
@@ -178,24 +250,32 @@ export declare class WebSearchRegistryVerifier {
178
250
  * Verifies NuGet package versions via NuGet V3 endpoints.
179
251
  *
180
252
  * @param packageId - NuGet package ID
253
+ * @param signal - Optional caller abort signal
181
254
  * @returns Verified registry entity
182
255
  */
183
256
  private verifyNuGet;
184
257
  /**
185
258
  * Verifies GitHub repository releases via GitHub REST API.
186
259
  *
260
+ * @remarks
261
+ * `latest_stable` comes from `/releases/latest` (GitHub's own newest
262
+ * non-prerelease, non-draft pick, immune to first-page truncation);
263
+ * prerelease candidates page through `/releases?per_page=100` following
264
+ * the `Link` header (up to {@link GITHUB_RELEASES_MAX_PAGES} pages, i.e.
265
+ * 300 newest releases — beyond that the first pages are what we keep).
266
+ *
187
267
  * @param repoSlug - Repository slug in the form "owner/repo"
268
+ * @param signal - Optional caller abort signal
188
269
  * @returns Verified registry entity
189
270
  */
190
271
  private verifyGitHub;
191
272
  /**
192
- * Performs an HTTP GET expecting a JSON response.
273
+ * Parses one GitHub release entry into a version candidate.
193
274
  *
194
- * @param url - Target URL
195
- * @param options - Request options
196
- * @returns Parsed JSON object/array
275
+ * @param raw - Release entry from the GitHub API
276
+ * @returns Candidate, or null for drafts/entries without a tag
197
277
  */
198
- private fetchJson;
278
+ private tryParseGitHubReleaseCandidate;
199
279
  /**
200
280
  * Attempts to parse the npm package name from an npmjs.com URL.
201
281
  *
@@ -255,6 +335,10 @@ export declare class WebSearchRegistryVerifier {
255
335
  /**
256
336
  * Best-effort prerelease detection for PyPI version strings.
257
337
  *
338
+ * @remarks
339
+ * Covers PEP 440 separators and attached suffixes (`1.0b1`, `2.0beta1`)
340
+ * where the marker follows digits without a delimiter.
341
+ *
258
342
  * @param version - Version string
259
343
  * @returns True when prerelease-like
260
344
  */
@@ -275,13 +359,32 @@ export declare class WebSearchRegistryVerifier {
275
359
  * @returns Best candidate or null
276
360
  */
277
361
  private pickBestVersionCandidate;
362
+ /**
363
+ * Parses one ISO timestamp to epoch milliseconds.
364
+ *
365
+ * @param value - Timestamp string, if present.
366
+ * @returns Epoch milliseconds, or null when missing or unparsable.
367
+ */
368
+ private tryParseTimeMs;
278
369
  /**
279
370
  * Parses SemVer strings (best-effort).
280
371
  *
372
+ * @remarks
373
+ * Accepts two to four numeric components (`1.2` → `1.2.0`, `1.2.3.4`
374
+ * keeps the fourth as a build tiebreak) so partial registry versions
375
+ * still rank instead of dropping out.
376
+ *
281
377
  * @param raw - Version string
282
378
  * @returns Parsed semver or null
283
379
  */
284
380
  private tryParseSemVer;
381
+ /**
382
+ * Parses versions with attached prerelease suffixes (`2024.1b1`, `2.0rc2`).
383
+ *
384
+ * @param normalized - Version string without a leading "v".
385
+ * @returns Parsed semver or null.
386
+ */
387
+ private tryParseAttachedPrerelease;
285
388
  /**
286
389
  * Compares two SemVer values.
287
390
  *
@@ -307,6 +410,7 @@ export declare class WebSearchRegistryVerifier {
307
410
  /**
308
411
  * Resolves NuGet V3 endpoints from the service index, with caching.
309
412
  *
413
+ * @param signal - Optional caller abort signal
310
414
  * @returns Service index cache
311
415
  */
312
416
  private getNuGetServiceIndex;
@@ -316,6 +420,7 @@ export declare class WebSearchRegistryVerifier {
316
420
  * @param registrationsBaseUrl - Registrations base URL
317
421
  * @param lowerId - Lowercase package ID
318
422
  * @param version - Version string
423
+ * @param signal - Optional caller abort signal
319
424
  * @returns Published ISO 8601 timestamp or null
320
425
  */
321
426
  private tryFetchNuGetLeafPublishedAt;
@@ -1 +1 @@
1
- {"version":3,"file":"WebSearchRegistryVerifier.d.ts","sourceRoot":"","sources":["../../src/tools/WebSearchRegistryVerifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B,KAAK,GACL,MAAM,GACN,QAAQ,GACR,OAAO,GACP,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,uBAAuB,CAAC;IAEjD;;OAEG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAErD;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,KAAK,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;;;;;OAMG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAmED;;GAEG;AACH,qBAAa,yBAAyB;IACpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CACP;IAExC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAa;IAExD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;IAErD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;IAEhD;;OAEG;IACH,OAAO,CAAC,sBAAsB,CAAgC;IAE9D;;;;OAIG;gBACgB,IAAI,EAAE,6BAA6B;IAMtD;;;;;OAKG;IACU,uBAAuB,CAClC,OAAO,EAAE,oBAAoB,EAAE,GAC9B,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAkBpC;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAwEzB;;;;;;OAMG;YACW,eAAe;IAiC7B;;;;;;OAMG;YACW,uBAAuB;IA4BrC;;;;;OAKG;YACW,SAAS;IAgDvB;;;;;OAKG;YACW,UAAU;IAsCxB;;;;;OAKG;YACW,YAAY;IA6D1B;;;;;OAKG;YACW,WAAW;IAiDzB;;;;;OAKG;YACW,YAAY;IAyD1B;;;;;;OAMG;YACW,SAAS;IA8BvB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAoB9B;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAOpB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAqBtB;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IA6ChC;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAwBtB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAsDrB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAQnB;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAsBjC;;;;OAIG;YACW,oBAAoB;IAwDlC;;;;;;;OAOG;YACW,4BAA4B;CAqB3C"}
1
+ {"version":3,"file":"WebSearchRegistryVerifier.d.ts","sourceRoot":"","sources":["../../src/tools/WebSearchRegistryVerifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAIzE;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B,KAAK,GACL,MAAM,GACN,QAAQ,GACR,OAAO,GACP,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,uBAAuB,CAAC;IAEjD;;OAEG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAErD;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,KAAK,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;;;;;OAMG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAwED;;GAEG;AACH,qBAAa,yBAAyB;IACpC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IAEzD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CACP;IAExC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAsB;IAErE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAa;IAExD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IAE/D;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAe;IAExD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;IAErD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;IAEhD;;;;;;;;OAQG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2D;IAEpF;;OAEG;IACH,OAAO,CAAC,sBAAsB,CAAgC;IAE9D;;;;OAIG;gBACgB,IAAI,EAAE,6BAA6B;IAUtD;;;;;;OAMG;IACU,uBAAuB,CAClC,OAAO,EAAE,oBAAoB,EAAE,EAC/B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAqCpC;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IA2EzB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAa;IAE9D;;;;;;;OAOG;YACW,eAAe;IA+E7B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAenC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAsBjC;;;;;;OAMG;YACW,uBAAuB;IA4BrC;;;;;;OAMG;YACW,SAAS;IAuDvB;;;;;;OAMG;YACW,UAAU;IAsCxB;;;;;;OAMG;YACW,YAAY;IA6D1B;;;;;;OAMG;YACW,WAAW;IAiDzB;;;;;;;;;;;;;OAaG;YACW,YAAY;IAkF1B;;;;;OAKG;IACH,OAAO,CAAC,8BAA8B;IAsBtC;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IA4C9B;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAqB9B;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAOpB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;;;;;;;OASG;IACH,OAAO,CAAC,sBAAsB;IAc9B;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAqBtB;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IA4ChC;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAQtB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,cAAc;IAyBtB;;;;;OAKG;IACH,OAAO,CAAC,0BAA0B;IA2BlC;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAyDrB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAQnB;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IA4BjC;;;;;OAKG;YACW,oBAAoB;IAyDlC;;;;;;;;OAQG;YACW,4BAA4B;CAsB3C"}