@linklabjs/core 0.1.0 → 0.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.
- package/dist/api/DomainNode.d.ts +154 -0
- package/dist/api/DomainNode.d.ts.map +1 -0
- package/dist/api/DomainNode.js +1157 -0
- package/dist/api/DomainNode.js.map +1 -0
- package/dist/api/Graph.d.ts +117 -0
- package/dist/api/Graph.d.ts.map +1 -0
- package/dist/api/Graph.js +212 -0
- package/dist/api/Graph.js.map +1 -0
- package/dist/api/PathBuilder.d.ts +76 -0
- package/dist/api/PathBuilder.d.ts.map +1 -0
- package/dist/api/PathBuilder.js +182 -0
- package/dist/api/PathBuilder.js.map +1 -0
- package/dist/api/index.d.ts +8 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +7 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/loadGraph.d.ts +57 -0
- package/dist/api/loadGraph.d.ts.map +1 -0
- package/dist/api/loadGraph.js +153 -0
- package/dist/api/loadGraph.js.map +1 -0
- package/dist/api/test-api.d.ts +9 -0
- package/dist/api/test-api.d.ts.map +1 -0
- package/dist/api/test-api.js +133 -0
- package/dist/api/test-api.js.map +1 -0
- package/dist/api/test-domain.d.ts +13 -0
- package/dist/api/test-domain.d.ts.map +1 -0
- package/dist/api/test-domain.js +105 -0
- package/dist/api/test-domain.js.map +1 -0
- package/dist/api/types.d.ts +69 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +22 -0
- package/dist/api/types.js.map +1 -0
- package/dist/config/synonyms.json +25 -0
- package/dist/core/EventBus.d.ts +56 -0
- package/dist/core/EventBus.d.ts.map +1 -0
- package/dist/core/EventBus.js +147 -0
- package/dist/core/EventBus.js.map +1 -0
- package/dist/core/GraphEvents.d.ts +118 -0
- package/dist/core/GraphEvents.d.ts.map +1 -0
- package/dist/core/GraphEvents.js +23 -0
- package/dist/core/GraphEvents.js.map +1 -0
- package/dist/core/PathFinder.d.ts +43 -0
- package/dist/core/PathFinder.d.ts.map +1 -0
- package/dist/core/PathFinder.js +264 -0
- package/dist/core/PathFinder.js.map +1 -0
- package/dist/formatters/BaseFormatter.d.ts +15 -0
- package/dist/formatters/BaseFormatter.d.ts.map +1 -0
- package/dist/formatters/BaseFormatter.js +9 -0
- package/dist/formatters/BaseFormatter.js.map +1 -0
- package/dist/graph/GraphAssembler.d.ts +14 -0
- package/dist/graph/GraphAssembler.d.ts.map +1 -0
- package/dist/graph/GraphAssembler.js +44 -0
- package/dist/graph/GraphAssembler.js.map +1 -0
- package/dist/graph/GraphCompiler.d.ts +37 -0
- package/dist/graph/GraphCompiler.d.ts.map +1 -0
- package/dist/graph/GraphCompiler.js +355 -0
- package/dist/graph/GraphCompiler.js.map +1 -0
- package/dist/graph/GraphExtractor.d.ts +21 -0
- package/dist/graph/GraphExtractor.d.ts.map +1 -0
- package/dist/graph/GraphExtractor.js +145 -0
- package/dist/graph/GraphExtractor.js.map +1 -0
- package/dist/graph/GraphOptimizer.d.ts +104 -0
- package/dist/graph/GraphOptimizer.d.ts.map +1 -0
- package/dist/graph/GraphOptimizer.js +306 -0
- package/dist/graph/GraphOptimizer.js.map +1 -0
- package/dist/graph/GraphTrainer.d.ts +52 -0
- package/dist/graph/GraphTrainer.d.ts.map +1 -0
- package/dist/graph/GraphTrainer.js +188 -0
- package/dist/graph/GraphTrainer.js.map +1 -0
- package/dist/http/LinkBuilder.d.ts +82 -0
- package/dist/http/LinkBuilder.d.ts.map +1 -0
- package/dist/http/LinkBuilder.js +190 -0
- package/dist/http/LinkBuilder.js.map +1 -0
- package/dist/http/TrailRequest.d.ts +39 -0
- package/dist/http/TrailRequest.d.ts.map +1 -0
- package/dist/http/TrailRequest.js +22 -0
- package/dist/http/TrailRequest.js.map +1 -0
- package/dist/http/example-netflix.d.ts +6 -0
- package/dist/http/example-netflix.d.ts.map +1 -0
- package/dist/http/example-netflix.js +52 -0
- package/dist/http/example-netflix.js.map +1 -0
- package/dist/http/index.d.ts +32 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +27 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/plugin.d.ts +110 -0
- package/dist/http/plugin.d.ts.map +1 -0
- package/dist/http/plugin.js +217 -0
- package/dist/http/plugin.js.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +71 -0
- package/dist/index.js.map +1 -0
- package/dist/instrumentation/TelemetryShim.d.ts +114 -0
- package/dist/instrumentation/TelemetryShim.d.ts.map +1 -0
- package/dist/instrumentation/TelemetryShim.js +107 -0
- package/dist/instrumentation/TelemetryShim.js.map +1 -0
- package/dist/navigation/NavigationEngine.d.ts +69 -0
- package/dist/navigation/NavigationEngine.d.ts.map +1 -0
- package/dist/navigation/NavigationEngine.js +361 -0
- package/dist/navigation/NavigationEngine.js.map +1 -0
- package/dist/navigation/Resolver.d.ts +35 -0
- package/dist/navigation/Resolver.d.ts.map +1 -0
- package/dist/navigation/Resolver.js +113 -0
- package/dist/navigation/Resolver.js.map +1 -0
- package/dist/navigation/Scheduler.d.ts +36 -0
- package/dist/navigation/Scheduler.d.ts.map +1 -0
- package/dist/navigation/Scheduler.js +107 -0
- package/dist/navigation/Scheduler.js.map +1 -0
- package/dist/navigation/Trail.d.ts +129 -0
- package/dist/navigation/Trail.d.ts.map +1 -0
- package/dist/navigation/Trail.js +202 -0
- package/dist/navigation/Trail.js.map +1 -0
- package/dist/navigation/TrailParser.d.ts +96 -0
- package/dist/navigation/TrailParser.d.ts.map +1 -0
- package/dist/navigation/TrailParser.js +180 -0
- package/dist/navigation/TrailParser.js.map +1 -0
- package/dist/navigation/index.d.ts +10 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/index.js +9 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/providers/MockProvider.d.ts +29 -0
- package/dist/providers/MockProvider.d.ts.map +1 -0
- package/dist/providers/MockProvider.js +55 -0
- package/dist/providers/MockProvider.js.map +1 -0
- package/dist/providers/PostgresProvider.d.ts +46 -0
- package/dist/providers/PostgresProvider.d.ts.map +1 -0
- package/dist/providers/PostgresProvider.js +152 -0
- package/dist/providers/PostgresProvider.js.map +1 -0
- package/dist/runtime/CompiledGraphEngine.d.ts +74 -0
- package/dist/runtime/CompiledGraphEngine.d.ts.map +1 -0
- package/dist/runtime/CompiledGraphEngine.js +211 -0
- package/dist/runtime/CompiledGraphEngine.js.map +1 -0
- package/dist/runtime/DataLoader.d.ts +90 -0
- package/dist/runtime/DataLoader.d.ts.map +1 -0
- package/dist/runtime/DataLoader.js +178 -0
- package/dist/runtime/DataLoader.js.map +1 -0
- package/dist/runtime/Engine.d.ts +36 -0
- package/dist/runtime/Engine.d.ts.map +1 -0
- package/dist/runtime/Engine.js +128 -0
- package/dist/runtime/Engine.js.map +1 -0
- package/dist/runtime/QueryEngine.d.ts +80 -0
- package/dist/runtime/QueryEngine.d.ts.map +1 -0
- package/dist/runtime/QueryEngine.js +188 -0
- package/dist/runtime/QueryEngine.js.map +1 -0
- package/dist/scenarios/test-metro-paris/config.json +6 -0
- package/dist/scenarios/test-metro-paris/graph.json +16325 -0
- package/dist/scenarios/test-metro-paris/queries.d.ts +22 -0
- package/dist/scenarios/test-metro-paris/queries.d.ts.map +1 -0
- package/dist/scenarios/test-metro-paris/queries.js +128 -0
- package/dist/scenarios/test-metro-paris/queries.js.map +1 -0
- package/dist/scenarios/test-metro-paris/stack.json +1 -0
- package/dist/scenarios/test-musicians/config.json +10 -0
- package/dist/scenarios/test-musicians/graph.json +20 -0
- package/dist/scenarios/test-musicians/stack.json +1 -0
- package/dist/scenarios/test-netflix/actions.d.ts +14 -0
- package/dist/scenarios/test-netflix/actions.d.ts.map +1 -0
- package/dist/scenarios/test-netflix/actions.js +86 -0
- package/dist/scenarios/test-netflix/actions.js.map +1 -0
- package/dist/scenarios/test-netflix/config.json +6 -0
- package/dist/scenarios/test-netflix/data/categories.json +1 -0
- package/dist/scenarios/test-netflix/data/companies.json +1 -0
- package/dist/scenarios/test-netflix/data/credits.json +19797 -0
- package/dist/scenarios/test-netflix/data/departments.json +18 -0
- package/dist/scenarios/test-netflix/data/jobs.json +142 -0
- package/dist/scenarios/test-netflix/data/movies.json +3497 -0
- package/dist/scenarios/test-netflix/data/people.json +1 -0
- package/dist/scenarios/test-netflix/data/synonyms.json +7 -0
- package/dist/scenarios/test-netflix/data/users.json +70 -0
- package/dist/scenarios/test-netflix/graph.json +1017 -0
- package/dist/scenarios/test-netflix/queries.d.ts +29 -0
- package/dist/scenarios/test-netflix/queries.d.ts.map +1 -0
- package/dist/scenarios/test-netflix/queries.js +134 -0
- package/dist/scenarios/test-netflix/queries.js.map +1 -0
- package/dist/scenarios/test-netflix/stack.json +14 -0
- package/dist/schema/GraphBuilder.d.ts +9 -0
- package/dist/schema/GraphBuilder.d.ts.map +1 -0
- package/dist/schema/GraphBuilder.js +90 -0
- package/dist/schema/GraphBuilder.js.map +1 -0
- package/dist/schema/JsonSchemaExtractor.d.ts +21 -0
- package/dist/schema/JsonSchemaExtractor.d.ts.map +1 -0
- package/dist/schema/JsonSchemaExtractor.js +88 -0
- package/dist/schema/JsonSchemaExtractor.js.map +1 -0
- package/dist/schema/SchemaAnalyzer.d.ts +41 -0
- package/dist/schema/SchemaAnalyzer.d.ts.map +1 -0
- package/dist/schema/SchemaAnalyzer.js +144 -0
- package/dist/schema/SchemaAnalyzer.js.map +1 -0
- package/dist/schema/SchemaExtractor.d.ts +10 -0
- package/dist/schema/SchemaExtractor.d.ts.map +1 -0
- package/dist/schema/SchemaExtractor.js +90 -0
- package/dist/schema/SchemaExtractor.js.map +1 -0
- package/dist/schema/SynonymResolver.d.ts +55 -0
- package/dist/schema/SynonymResolver.d.ts.map +1 -0
- package/dist/schema/SynonymResolver.js +121 -0
- package/dist/schema/SynonymResolver.js.map +1 -0
- package/dist/scripts/dictionary.json +796 -0
- package/dist/scripts/graph.json +664 -0
- package/dist/scripts/regenerate.d.ts +23 -0
- package/dist/scripts/regenerate.d.ts.map +1 -0
- package/dist/scripts/regenerate.js +206 -0
- package/dist/scripts/regenerate.js.map +1 -0
- package/dist/types/index.d.ts +394 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +21 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* api/DomainNode.ts — Niveau 1 : navigation sémantique
|
|
3
|
+
*
|
|
4
|
+
* Un DomainNode représente une frame dans le trail de navigation.
|
|
5
|
+
* Il est Proxy sur lui-même pour intercepter les accès de propriétés
|
|
6
|
+
* et les traduire en étapes de navigation.
|
|
7
|
+
*
|
|
8
|
+
* Usage :
|
|
9
|
+
* cinema.movies → DomainNode(entity='movies')
|
|
10
|
+
* cinema.people(278) → DomainNode(entity='people', filters={id:278})
|
|
11
|
+
* cinema.people(278).movies → DomainNode(entity='movies', parent=people(278))
|
|
12
|
+
* await cinema.people(278).movies → LinkLabResult (tableau enrichi)
|
|
13
|
+
*
|
|
14
|
+
* LinkLabResult = any[] + { path, timing, from, to }
|
|
15
|
+
* const films = await cinema.film()
|
|
16
|
+
* films.forEach(f => console.log(f.title)) // itération native
|
|
17
|
+
* films.length // nombre de résultats
|
|
18
|
+
* films.path // ['film']
|
|
19
|
+
* films.timing // 12ms
|
|
20
|
+
*
|
|
21
|
+
* cinema.directors('Nolan').movies → QueryResult (route sémantique director_in)
|
|
22
|
+
* cinema.movies(278).actors → QueryResult (route sémantique actor)
|
|
23
|
+
*
|
|
24
|
+
* Résolution des propriétés navigables :
|
|
25
|
+
* 1. node.id === prop → accès direct (netflix: 'movies', 'people')
|
|
26
|
+
* 2. node.type === prop → type singulier (musicians: 'artist')
|
|
27
|
+
* 3. singular(prop) est un type connu → collection (musicians: 'artists' → type 'artist')
|
|
28
|
+
* 4. label sémantique dans compiled.routes → vue filtrée (netflix: 'actor', 'director')
|
|
29
|
+
*
|
|
30
|
+
* Pattern thenable :
|
|
31
|
+
* Le DomainNode implémente .then() — JavaScript le traite comme une Promise.
|
|
32
|
+
* L'exécution réelle (fetch) n'est déclenchée qu'au `await`.
|
|
33
|
+
*/
|
|
34
|
+
import type { Graph as GraphData, CompiledGraph, Provider } from '../types/index.js';
|
|
35
|
+
export type LinkLabResult<T = any> = T[] & {
|
|
36
|
+
/** Chemin de traversée dans le graphe */
|
|
37
|
+
path: string[];
|
|
38
|
+
/** Durée d'exécution en ms */
|
|
39
|
+
timing: number;
|
|
40
|
+
/** Entité source */
|
|
41
|
+
from: string;
|
|
42
|
+
/** Entité cible */
|
|
43
|
+
to: string;
|
|
44
|
+
/** Label sémantique composé du Trail (ex: "director_in→actor") */
|
|
45
|
+
semanticLabel?: string;
|
|
46
|
+
/** SQL généré (disponible en mode CTE postgres) */
|
|
47
|
+
sql?: string;
|
|
48
|
+
};
|
|
49
|
+
interface DomainContext {
|
|
50
|
+
graphData: GraphData;
|
|
51
|
+
compiled: CompiledGraph | null;
|
|
52
|
+
dataset: Record<string, any[]> | null;
|
|
53
|
+
provider?: Provider | null;
|
|
54
|
+
navMode?: boolean;
|
|
55
|
+
dictionary?: Record<string, any> | null;
|
|
56
|
+
}
|
|
57
|
+
export declare class DomainNode {
|
|
58
|
+
readonly entity: string;
|
|
59
|
+
readonly filters: Record<string, any>;
|
|
60
|
+
readonly parent: DomainNode | null;
|
|
61
|
+
readonly semantic: string | null;
|
|
62
|
+
private readonly _ctx;
|
|
63
|
+
constructor(entity: string, filters: Record<string, any>, parent: DomainNode | null, ctx: DomainContext, semantic?: string | null);
|
|
64
|
+
/**
|
|
65
|
+
* _execute() — déclenché par `await domainNode`.
|
|
66
|
+
*
|
|
67
|
+
* Mode query (défaut) : cumulatif — chaque étape passe ses IDs à la suivante.
|
|
68
|
+
* Mode nav (préfixe) : stateless — comportement original, anchor→current direct.
|
|
69
|
+
*/
|
|
70
|
+
private _execute;
|
|
71
|
+
/**
|
|
72
|
+
* linksFrom() — routes disponibles depuis l'entité courante.
|
|
73
|
+
*
|
|
74
|
+
* Retourne les routes avec labels humains depuis le dictionnaire résolu.
|
|
75
|
+
* Si le dictionnaire n'est pas chargé, retourne les labels bruts du compilé.
|
|
76
|
+
*
|
|
77
|
+
* cinema.movies.linksFrom()
|
|
78
|
+
* → [
|
|
79
|
+
* { to: 'people', label: 'Acteurs de', semantic: 'actor', composed: false },
|
|
80
|
+
* { to: 'people', label: 'Réalisé par', semantic: 'director', composed: false },
|
|
81
|
+
* { to: 'movies', label: 'Films avec', semantic: 'actor_in→director', composed: true },
|
|
82
|
+
* ]
|
|
83
|
+
*/
|
|
84
|
+
linksFrom(options?: {
|
|
85
|
+
composed?: boolean;
|
|
86
|
+
semantic?: boolean;
|
|
87
|
+
}): Array<{
|
|
88
|
+
to: string;
|
|
89
|
+
label: string;
|
|
90
|
+
semantic: string | null;
|
|
91
|
+
composed: boolean;
|
|
92
|
+
weight?: number;
|
|
93
|
+
}>;
|
|
94
|
+
/**
|
|
95
|
+
* _executeQuery() — mode query cumulatif.
|
|
96
|
+
*
|
|
97
|
+
* Exécute chaque étape du Trail séquentiellement.
|
|
98
|
+
* Les IDs trouvés à l'étape N deviennent une contrainte IN à l'étape N+1.
|
|
99
|
+
* Le label sémantique est préservé d'une étape à l'autre.
|
|
100
|
+
*
|
|
101
|
+
* cinema.movies('Inception').director.movies :
|
|
102
|
+
* Étape 1 : movies WHERE title='Inception' → [{ id: 27205 }]
|
|
103
|
+
* Étape 2 : people WHERE movieId IN [27205] → [{ id: 525 }] (semantic: director_in, jobId=2)
|
|
104
|
+
* Étape 3 : movies WHERE personId IN [525] → 6 films (jobId=2 préservé)
|
|
105
|
+
*/
|
|
106
|
+
private _executeQuery;
|
|
107
|
+
/**
|
|
108
|
+
* _executeQueryCTE() — mode query SQL avec CTEs globales.
|
|
109
|
+
*
|
|
110
|
+
* Génère une seule requête SQL WITH ... AS (...) au lieu de N allers-retours.
|
|
111
|
+
* Évite les clauses IN géantes sur les tables volumineuses.
|
|
112
|
+
*
|
|
113
|
+
* dvdrental.customer('MARY').rental.film :
|
|
114
|
+
*
|
|
115
|
+
* WITH step0 AS (
|
|
116
|
+
* SELECT DISTINCT customer.* FROM customer WHERE customer.first_name ILIKE 'MARY'
|
|
117
|
+
* ),
|
|
118
|
+
* step1 AS (
|
|
119
|
+
* SELECT DISTINCT rental.*
|
|
120
|
+
* FROM rental
|
|
121
|
+
* INNER JOIN step0 ON rental.customer_id = step0.customer_id
|
|
122
|
+
* ),
|
|
123
|
+
* step2 AS (
|
|
124
|
+
* SELECT DISTINCT film.*
|
|
125
|
+
* FROM film
|
|
126
|
+
* INNER JOIN inventory ON film.film_id = inventory.film_id
|
|
127
|
+
* INNER JOIN step1 ON inventory.rental_id = step1.rental_id
|
|
128
|
+
* )
|
|
129
|
+
* SELECT * FROM step2
|
|
130
|
+
*/
|
|
131
|
+
private _executeQueryCTE;
|
|
132
|
+
/**
|
|
133
|
+
* _fetchStep() — une étape du mode query cumulatif.
|
|
134
|
+
*
|
|
135
|
+
* Exécute la traversée from→to en filtrant sur les IDs de l'étape précédente.
|
|
136
|
+
*/
|
|
137
|
+
private _fetchStep;
|
|
138
|
+
/** Retourne la clé primaire d'une entité */
|
|
139
|
+
private _getPK;
|
|
140
|
+
private _fetchDirect;
|
|
141
|
+
private _fetchViaRoute;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* createDomain — retourne le proxy sémantique (niveau 1).
|
|
145
|
+
*
|
|
146
|
+
* Le proxy expose :
|
|
147
|
+
* - Les entités du graphe comme propriétés navigables (cinema.movies, dvd.film...)
|
|
148
|
+
* - `.graph` — accès au Graph sous-jacent pour les niveaux 2/3/4
|
|
149
|
+
*
|
|
150
|
+
* C'est l'objet retourné par loadGraph() — point d'entrée principal de LinkLab.
|
|
151
|
+
*/
|
|
152
|
+
export declare function createDomain(ctx: DomainContext, graphInstance?: any): any;
|
|
153
|
+
export {};
|
|
154
|
+
//# sourceMappingURL=DomainNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DomainNode.d.ts","sourceRoot":"","sources":["../../src/api/DomainNode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAepF,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG;IACzC,yCAAyC;IACzC,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,mBAAmB;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAeD,UAAU,aAAa;IACrB,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAA;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAA;CACxC;AAwJD,qBAAa,UAAU;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAEhC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAe;gBAGlC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,MAAM,EAAE,UAAU,GAAG,IAAI,EACzB,GAAG,EAAE,aAAa,EAClB,QAAQ,GAAE,MAAM,GAAG,IAAW;IA0EhC;;;;;OAKG;YACW,QAAQ;IAiCtB;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,OAAO,GAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,KAAK,CAAC;QACzE,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;QACvB,QAAQ,EAAE,OAAO,CAAA;QACjB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAC;IA4BF;;;;;;;;;;;OAWG;YACW,aAAa;IA+J3B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;YACW,gBAAgB;IA6K9B;;;;OAIG;YACW,UAAU;IA8HxB,4CAA4C;IAC5C,OAAO,CAAC,MAAM;YAkBA,YAAY;YAkEZ,cAAc;CAkL7B;AAyOD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,GAAG,OAmBnE"}
|