@origintrail-official/dkg-query 10.0.13 → 10.0.15
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/caller-abort.d.ts +8 -0
- package/dist/caller-abort.d.ts.map +1 -0
- package/dist/caller-abort.js +21 -0
- package/dist/caller-abort.js.map +1 -0
- package/dist/caller-sparql-error.d.ts +46 -0
- package/dist/caller-sparql-error.d.ts.map +1 -0
- package/dist/caller-sparql-error.js +43 -0
- package/dist/caller-sparql-error.js.map +1 -0
- package/dist/dkg-query-engine.d.ts +15 -47
- package/dist/dkg-query-engine.d.ts.map +1 -1
- package/dist/dkg-query-engine.js +130 -1742
- package/dist/dkg-query-engine.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/query-handler.d.ts.map +1 -1
- package/dist/query-handler.js +68 -29
- package/dist/query-handler.js.map +1 -1
- package/dist/query-types.d.ts +27 -5
- package/dist/query-types.d.ts.map +1 -1
- package/dist/scoped-content-graph-discovery-memo.d.ts +25 -0
- package/dist/scoped-content-graph-discovery-memo.d.ts.map +1 -0
- package/dist/scoped-content-graph-discovery-memo.js +56 -0
- package/dist/scoped-content-graph-discovery-memo.js.map +1 -0
- package/dist/scoped-query-error.d.ts +4 -0
- package/dist/scoped-query-error.d.ts.map +1 -0
- package/dist/scoped-query-error.js +7 -0
- package/dist/scoped-query-error.js.map +1 -0
- package/dist/sparql-graph-scope.d.ts +36 -12
- package/dist/sparql-graph-scope.d.ts.map +1 -1
- package/dist/sparql-graph-scope.js +442 -141
- package/dist/sparql-graph-scope.js.map +1 -1
- package/dist/sparql-guard.d.ts +2 -1
- package/dist/sparql-guard.d.ts.map +1 -1
- package/dist/sparql-guard.js.map +1 -1
- package/dist/sparql-min-trust.d.ts +11 -0
- package/dist/sparql-min-trust.d.ts.map +1 -0
- package/dist/sparql-min-trust.js +181 -0
- package/dist/sparql-min-trust.js.map +1 -0
- package/dist/sparql-rewrite-result.d.ts +16 -0
- package/dist/sparql-rewrite-result.d.ts.map +1 -0
- package/dist/sparql-rewrite-result.js +7 -0
- package/dist/sparql-rewrite-result.js.map +1 -0
- package/package.json +4 -3
- package/dist/sparql-utils.d.ts +0 -18
- package/dist/sparql-utils.d.ts.map +0 -1
- package/dist/sparql-utils.js +0 -216
- package/dist/sparql-utils.js.map +0 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Normalize an AbortSignal reason without losing Error identity. */
|
|
2
|
+
export declare function callerAbortReason(signal: AbortSignal): Error;
|
|
3
|
+
/**
|
|
4
|
+
* Race shared work against one caller's cancellation without cancelling the
|
|
5
|
+
* shared operation. The listener is removed when either side settles.
|
|
6
|
+
*/
|
|
7
|
+
export declare function raceAgainstCallerAbort<T>(work: Promise<T>, signal: AbortSignal | undefined): Promise<T>;
|
|
8
|
+
//# sourceMappingURL=caller-abort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caller-abort.d.ts","sourceRoot":"","sources":["../src/caller-abort.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,CAG5D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,MAAM,EAAE,WAAW,GAAG,SAAS,GAC9B,OAAO,CAAC,CAAC,CAAC,CAQZ"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Normalize an AbortSignal reason without losing Error identity. */
|
|
2
|
+
export function callerAbortReason(signal) {
|
|
3
|
+
const reason = signal.reason;
|
|
4
|
+
return reason instanceof Error ? reason : new Error(String(reason ?? 'aborted'));
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Race shared work against one caller's cancellation without cancelling the
|
|
8
|
+
* shared operation. The listener is removed when either side settles.
|
|
9
|
+
*/
|
|
10
|
+
export function raceAgainstCallerAbort(work, signal) {
|
|
11
|
+
if (!signal)
|
|
12
|
+
return work;
|
|
13
|
+
if (signal.aborted)
|
|
14
|
+
return Promise.reject(callerAbortReason(signal));
|
|
15
|
+
return new Promise((resolve, reject) => {
|
|
16
|
+
const onAbort = () => reject(callerAbortReason(signal));
|
|
17
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
18
|
+
void work.then(resolve, reject).finally(() => signal.removeEventListener('abort', onAbort));
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=caller-abort.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caller-abort.js","sourceRoot":"","sources":["../src/caller-abort.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,OAAO,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC;AACnF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAgB,EAChB,MAA+B;IAE/B,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provenance for "the SPARQL the CALLER sent was rejected".
|
|
3
|
+
*
|
|
4
|
+
* GH#1758 / PR #2330 review — the daemon route used to classify any typed
|
|
5
|
+
* SPARQL HTTP 400/422 as a client error. That is unsound: a single
|
|
6
|
+
* `/api/query` request also runs engine-generated queries for access control,
|
|
7
|
+
* graph resolution and metadata scans, and a store that rejects one of THOSE
|
|
8
|
+
* (backend dialect incompatibility, say) produces the same typed 400. Reporting
|
|
9
|
+
* it as HTTP 400 blames the caller for an integration fault and suppresses the
|
|
10
|
+
* retry or operator remediation that would actually fix it.
|
|
11
|
+
*
|
|
12
|
+
* Only the query engine knows which store call carried caller-supplied SPARQL,
|
|
13
|
+
* so it marks that one. The route classifies on this marker, never on a bare
|
|
14
|
+
* upstream status.
|
|
15
|
+
*/
|
|
16
|
+
export declare const CALLER_SPARQL_REJECTED_CODE = "CALLER_SPARQL_REJECTED";
|
|
17
|
+
export declare class CallerSparqlRejectedError extends Error {
|
|
18
|
+
readonly code = "CALLER_SPARQL_REJECTED";
|
|
19
|
+
/** Upstream status that rejected it (400 / 422). */
|
|
20
|
+
readonly status: number;
|
|
21
|
+
constructor(message: string, status: number, options?: {
|
|
22
|
+
cause?: unknown;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The contract a cross-boundary consumer may rely on.
|
|
27
|
+
*
|
|
28
|
+
* PR #2330 review — the guard used to narrow to the concrete class while
|
|
29
|
+
* validating only `code`, `status` and `message`, so
|
|
30
|
+
* `{ code, status, message }` satisfied it and TypeScript then permitted
|
|
31
|
+
* `err.name.toUpperCase()` on a value with no `name`. Narrow to the shape
|
|
32
|
+
* actually validated instead. Mirrors `SparqlHttpResponseErrorLike` in the
|
|
33
|
+
* storage package.
|
|
34
|
+
*/
|
|
35
|
+
export interface CallerSparqlRejectedErrorLike {
|
|
36
|
+
readonly code: typeof CALLER_SPARQL_REJECTED_CODE;
|
|
37
|
+
readonly status: number;
|
|
38
|
+
readonly message: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* True when `err` carries the caller-SPARQL-rejected contract — either as the
|
|
42
|
+
* concrete class, or structurally when `instanceof` cannot survive the
|
|
43
|
+
* boundary. Every field the interface promises is validated.
|
|
44
|
+
*/
|
|
45
|
+
export declare function isCallerSparqlRejectedError(err: unknown): err is CallerSparqlRejectedErrorLike;
|
|
46
|
+
//# sourceMappingURL=caller-sparql-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caller-sparql-error.d.ts","sourceRoot":"","sources":["../src/caller-sparql-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,2BAA2B,2BAA2B,CAAC;AAEpE,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,QAAQ,CAAC,IAAI,4BAA+B;IAC5C,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAK3E;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,OAAO,2BAA2B,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,6BAA6B,CAU9F"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provenance for "the SPARQL the CALLER sent was rejected".
|
|
3
|
+
*
|
|
4
|
+
* GH#1758 / PR #2330 review — the daemon route used to classify any typed
|
|
5
|
+
* SPARQL HTTP 400/422 as a client error. That is unsound: a single
|
|
6
|
+
* `/api/query` request also runs engine-generated queries for access control,
|
|
7
|
+
* graph resolution and metadata scans, and a store that rejects one of THOSE
|
|
8
|
+
* (backend dialect incompatibility, say) produces the same typed 400. Reporting
|
|
9
|
+
* it as HTTP 400 blames the caller for an integration fault and suppresses the
|
|
10
|
+
* retry or operator remediation that would actually fix it.
|
|
11
|
+
*
|
|
12
|
+
* Only the query engine knows which store call carried caller-supplied SPARQL,
|
|
13
|
+
* so it marks that one. The route classifies on this marker, never on a bare
|
|
14
|
+
* upstream status.
|
|
15
|
+
*/
|
|
16
|
+
export const CALLER_SPARQL_REJECTED_CODE = 'CALLER_SPARQL_REJECTED';
|
|
17
|
+
export class CallerSparqlRejectedError extends Error {
|
|
18
|
+
code = CALLER_SPARQL_REJECTED_CODE;
|
|
19
|
+
/** Upstream status that rejected it (400 / 422). */
|
|
20
|
+
status;
|
|
21
|
+
constructor(message, status, options) {
|
|
22
|
+
super(message, options);
|
|
23
|
+
this.name = 'CallerSparqlRejectedError';
|
|
24
|
+
this.status = status;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* True when `err` carries the caller-SPARQL-rejected contract — either as the
|
|
29
|
+
* concrete class, or structurally when `instanceof` cannot survive the
|
|
30
|
+
* boundary. Every field the interface promises is validated.
|
|
31
|
+
*/
|
|
32
|
+
export function isCallerSparqlRejectedError(err) {
|
|
33
|
+
if (err instanceof CallerSparqlRejectedError)
|
|
34
|
+
return true;
|
|
35
|
+
if (typeof err !== 'object' || err === null)
|
|
36
|
+
return false;
|
|
37
|
+
const c = err;
|
|
38
|
+
return (c.code === CALLER_SPARQL_REJECTED_CODE &&
|
|
39
|
+
typeof c.status === 'number' &&
|
|
40
|
+
Number.isFinite(c.status) &&
|
|
41
|
+
typeof c.message === 'string');
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=caller-sparql-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caller-sparql-error.js","sourceRoot":"","sources":["../src/caller-sparql-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAwB,CAAC;AAEpE,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IACzC,IAAI,GAAG,2BAA2B,CAAC;IAC5C,oDAAoD;IAC3C,MAAM,CAAS;IAExB,YAAY,OAAe,EAAE,MAAc,EAAE,OAA6B;QACxE,KAAK,CAAC,OAAO,EAAE,OAAuB,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAkBD;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAY;IACtD,IAAI,GAAG,YAAY,yBAAyB;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,CAAC,GAAG,GAAoE,CAAC;IAC/E,OAAO,CACL,CAAC,CAAC,IAAI,KAAK,2BAA2B;QACtC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACzB,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAC9B,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { TripleStore } from '@origintrail-official/dkg-storage';
|
|
2
2
|
import type { QueryResult, QueryOptions, GraphAwareQueryEngine, ResolvedKnowledgeAsset, ResolvedLegacyKnowledgeAsset } from './query-engine.js';
|
|
3
3
|
import { type GetView, TrustLevel } from '@origintrail-official/dkg-core';
|
|
4
|
+
export { ScopedQueryViolationError } from './scoped-query-error.js';
|
|
4
5
|
/**
|
|
5
6
|
* Result of resolving a V10 GET view to concrete graph targets.
|
|
6
7
|
*/
|
|
@@ -14,9 +15,6 @@ export interface ViewResolution {
|
|
|
14
15
|
*/
|
|
15
16
|
graphPrefixes: string[];
|
|
16
17
|
}
|
|
17
|
-
export declare class ScopedQueryViolationError extends Error {
|
|
18
|
-
constructor(message: string);
|
|
19
|
-
}
|
|
20
18
|
/**
|
|
21
19
|
* Resolves a V10 GetView + context graph ID to the named-graph URIs (or
|
|
22
20
|
* prefixes) that the query engine should target.
|
|
@@ -53,7 +51,7 @@ export declare function resolveViewGraphs(view: GetView, contextGraphId: string,
|
|
|
53
51
|
export declare class DKGQueryEngine implements GraphAwareQueryEngine {
|
|
54
52
|
private readonly store;
|
|
55
53
|
private readonly graphManager;
|
|
56
|
-
private readonly
|
|
54
|
+
private readonly scopedContentGraphDiscoveryMemo;
|
|
57
55
|
constructor(store: TripleStore);
|
|
58
56
|
query(sparql: string, options?: QueryOptions): Promise<QueryResult>;
|
|
59
57
|
/**
|
|
@@ -65,8 +63,6 @@ export declare class DKGQueryEngine implements GraphAwareQueryEngine {
|
|
|
65
63
|
* Execute a SPARQL query scoped to a declared V10 state view.
|
|
66
64
|
*/
|
|
67
65
|
private queryWithView;
|
|
68
|
-
/** Canonical graph rewrite for root + per-KA/per-cgId verifiable-memory reads. */
|
|
69
|
-
private wrapVerifiableMemoryGraphSet;
|
|
70
66
|
private queryMultipleGraphs;
|
|
71
67
|
private discoverGraphsByPrefix;
|
|
72
68
|
/**
|
|
@@ -102,6 +98,19 @@ export declare class DKGQueryEngine implements GraphAwareQueryEngine {
|
|
|
102
98
|
private discoverRegisteredSubGraphNames;
|
|
103
99
|
private discoverRegisteredAssertionGraphs;
|
|
104
100
|
private discoverKnownChildContextGraphUris;
|
|
101
|
+
/**
|
|
102
|
+
* Execute CALLER-derived SPARQL and mark a store rejection with provenance.
|
|
103
|
+
*
|
|
104
|
+
* GH#1758 — every caller-derived store execution must go through here.
|
|
105
|
+
* Engine-generated queries (access checks, graph resolution, metadata scans)
|
|
106
|
+
* deliberately do NOT, so the HTTP boundary can answer 400 for a malformed
|
|
107
|
+
* caller query without blaming the caller when the configured backend
|
|
108
|
+
* rejects an internal one.
|
|
109
|
+
*
|
|
110
|
+
* Only 400/422 are translated: 401/403/404/429 and 5xx mean the store
|
|
111
|
+
* rejected US and stay server faults (PR #2330 review).
|
|
112
|
+
*/
|
|
113
|
+
private execCallerQuery;
|
|
105
114
|
private execAndNormalize;
|
|
106
115
|
resolveKA(ual: string): Promise<ResolvedLegacyKnowledgeAsset>;
|
|
107
116
|
resolveKnowledgeAsset(ual: string): Promise<ResolvedKnowledgeAsset>;
|
|
@@ -112,45 +121,4 @@ export declare class DKGQueryEngine implements GraphAwareQueryEngine {
|
|
|
112
121
|
*/
|
|
113
122
|
queryAllContextGraphs(sparql: string): Promise<QueryResult>;
|
|
114
123
|
}
|
|
115
|
-
/**
|
|
116
|
-
* Skip past a SPARQL string literal starting at `src[i]`, returning the
|
|
117
|
-
* index immediately AFTER the closing quote.
|
|
118
|
-
*
|
|
119
|
-
* Recognises **all four** SPARQL 1.1 literal forms:
|
|
120
|
-
*
|
|
121
|
-
* - `"…"` single-line, double-quoted (escape: `\\`, `\"`, `\n`, …)
|
|
122
|
-
* - `'…'` single-line, single-quoted (same escape grammar)
|
|
123
|
-
* - `"""…"""` long-form, double-quoted (may span newlines, contains
|
|
124
|
-
* raw `"`, `'`, `{`, `}`, `#`, `.` without escaping)
|
|
125
|
-
* - `'''…'''` long-form, single-quoted (same as above)
|
|
126
|
-
*
|
|
127
|
-
* **Caller contract:** `src[i]` MUST be `"` or `'`; otherwise the function
|
|
128
|
-
* returns `i` (no advance). The cursor returned points to the first byte
|
|
129
|
-
* AFTER the literal, ready for the caller to resume its own scan.
|
|
130
|
-
*
|
|
131
|
-
* If a literal is unterminated (truncated input) the function consumes
|
|
132
|
-
* the remainder of the string and returns `src.length`. Callers treat
|
|
133
|
-
* unterminated literals as "the rest of the input is opaque payload",
|
|
134
|
-
* which is the safe choice for structural scans (brace balancing,
|
|
135
|
-
* keyword detection): we do NOT want a stray `{` near the end of a
|
|
136
|
-
* truncated query body to confuse the surrounding scanner.
|
|
137
|
-
*
|
|
138
|
-
* dkg-query-engine.ts:848). The
|
|
139
|
-
* previous helpers (`stripSparqlLineComments`, `scrubStringsAndComments`,
|
|
140
|
-
* `findMatchingCloseBrace`, `findWhereBraceStart`, and
|
|
141
|
-
* `splitTopLevelTripleStatements`) all had their own copy of the
|
|
142
|
-
* single-line literal scanner and NONE recognised triple-quoted
|
|
143
|
-
* literals, so a long-form payload like
|
|
144
|
-
*
|
|
145
|
-
* SELECT ?t WHERE { ?s <p> """contains a {brace} and a #comment""" }
|
|
146
|
-
*
|
|
147
|
-
* leaked `{`, `}`, `#`, `.`, etc. through the structural scrubber and
|
|
148
|
-
* the `minTrust` rewriter (and the SPARQL form classifier, and the
|
|
149
|
-
* triple terminator splitter) misclassified payload as syntax. The
|
|
150
|
-
* downstream effect was the same fail-closed empty result the
|
|
151
|
-
* scrubbing was supposed to prevent. Centralising the lex here means
|
|
152
|
-
* every helper that walks SPARQL source learns triple-quoted handling
|
|
153
|
-
* in one place.
|
|
154
|
-
*/
|
|
155
|
-
export declare function skipSparqlStringLiteral(src: string, i: number): number;
|
|
156
124
|
//# sourceMappingURL=dkg-query-engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dkg-query-engine.d.ts","sourceRoot":"","sources":["../src/dkg-query-engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dkg-query-engine.d.ts","sourceRoot":"","sources":["../src/dkg-query-engine.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,WAAW,EAIZ,MAAM,mCAAmC,CAAC;AAW3C,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,qBAAqB,EAErB,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAQL,KAAK,OAAO,EAEZ,UAAU,EAMX,MAAM,gCAAgC,CAAC;AAuBxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAKpE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AA+DD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,cAAc,EAAE,MAAM,EACtB,IAAI,CAAC,EAAE;IACL,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,cAAc,CAgKhB;AAED;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,qBAAqB;IAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAkC;gBAEtE,KAAK,EAAE,WAAW;IAQxB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAyPzE;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;YACW,aAAa;YAsLb,mBAAmB;YAmGnB,sBAAsB;IAkBpC;;;;;;;;;OASG;YACW,qCAAqC;IAYnD;;;;;;;OAOG;YACW,gCAAgC;IAmE9C;;;;;OAKG;YACW,4BAA4B;YAuB5B,mCAAmC;YAuBnC,kCAAkC;YAoBlC,mCAAmC;YAuCnC,+BAA+B;YAyB/B,iCAAiC;YAwBjC,kCAAkC;IA8BhD;;;;;;;;;;;OAWG;YACW,eAAe;YAYf,gBAAgB;IAsBxB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAU7D,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;YAe3D,oBAAoB;YAsCpB,yBAAyB;IAkFvC;;OAEG;IACG,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAYlE"}
|