@loaders.gl/graphs 5.0.0-alpha.9 → 5.0.0-beta.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/LICENSE +24 -0
- package/README.md +121 -4
- package/THIRD-PARTY-NOTICES.md +17 -0
- package/dist/dot-loader-types.d.ts +25 -8
- package/dist/dot-loader-types.d.ts.map +1 -1
- package/dist/dot-loader-types.js +2 -2
- package/dist/dot-loader-types.js.map +1 -1
- package/dist/dot-loader.cjs +638 -47
- package/dist/dot-loader.cjs.map +3 -3
- package/dist/dot-loader.d.ts +10 -6
- package/dist/dot-loader.d.ts.map +1 -1
- package/dist/dot-loader.js +3 -3
- package/dist/dot-loader.js.map +1 -1
- package/dist/dot-types.d.ts +6 -1
- package/dist/dot-types.d.ts.map +1 -1
- package/dist/gexf-loader-types.d.ts +53 -0
- package/dist/gexf-loader-types.d.ts.map +1 -0
- package/dist/gexf-loader-types.js +26 -0
- package/dist/gexf-loader-types.js.map +1 -0
- package/dist/gexf-loader.cjs +1304 -0
- package/dist/gexf-loader.cjs.map +6 -0
- package/dist/gexf-loader.d.ts +24 -0
- package/dist/gexf-loader.d.ts.map +1 -0
- package/dist/gexf-loader.js +13 -0
- package/dist/gexf-loader.js.map +1 -0
- package/dist/gexf-types.d.ts +16 -0
- package/dist/gexf-types.d.ts.map +1 -0
- package/dist/gexf-types.js +5 -0
- package/dist/gexf-types.js.map +1 -0
- package/dist/graph-types.d.ts +28 -0
- package/dist/graph-types.d.ts.map +1 -1
- package/dist/graphml-loader-types.d.ts +24 -8
- package/dist/graphml-loader-types.d.ts.map +1 -1
- package/dist/graphml-loader-types.js +2 -2
- package/dist/graphml-loader-types.js.map +1 -1
- package/dist/graphml-loader.cjs +670 -60
- package/dist/graphml-loader.cjs.map +3 -3
- package/dist/graphml-loader.d.ts +10 -6
- package/dist/graphml-loader.d.ts.map +1 -1
- package/dist/graphml-loader.js +3 -3
- package/dist/graphml-loader.js.map +1 -1
- package/dist/index.cjs +927 -59
- package/dist/index.cjs.map +3 -3
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/build-graph-tables.d.ts +4 -0
- package/dist/lib/build-graph-tables.d.ts.map +1 -0
- package/dist/lib/build-graph-tables.js +143 -0
- package/dist/lib/build-graph-tables.js.map +1 -0
- package/dist/lib/parse-dot.d.ts +3 -1
- package/dist/lib/parse-dot.d.ts.map +1 -1
- package/dist/lib/parse-dot.js +38 -21
- package/dist/lib/parse-dot.js.map +1 -1
- package/dist/lib/parse-gexf.d.ts +5 -0
- package/dist/lib/parse-gexf.d.ts.map +1 -0
- package/dist/lib/parse-gexf.js +380 -0
- package/dist/lib/parse-gexf.js.map +1 -0
- package/dist/lib/parse-graphml.d.ts +2 -1
- package/dist/lib/parse-graphml.d.ts.map +1 -1
- package/dist/lib/parse-graphml.js +50 -27
- package/dist/lib/parse-graphml.js.map +1 -1
- package/package.json +13 -5
- package/src/dot-loader-types.ts +15 -5
- package/src/dot-loader.ts +7 -4
- package/src/dot-types.ts +7 -1
- package/src/gexf-loader-types.ts +41 -0
- package/src/gexf-loader.ts +17 -0
- package/src/gexf-types.ts +21 -0
- package/src/graph-types.ts +35 -0
- package/src/graphml-loader-types.ts +14 -5
- package/src/graphml-loader.ts +7 -4
- package/src/index.ts +9 -0
- package/src/lib/build-graph-tables.ts +208 -0
- package/src/lib/parse-dot.ts +44 -21
- package/src/lib/parse-gexf.ts +388 -0
- package/src/lib/parse-graphml.ts +86 -34
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { XMLParser, XMLValidator } from 'fast-xml-parser';
|
|
5
|
+
import { buildGraphTables } from "./build-graph-tables.js";
|
|
6
|
+
const parser = new XMLParser({
|
|
7
|
+
ignoreAttributes: false,
|
|
8
|
+
parseAttributeValue: false,
|
|
9
|
+
parseTagValue: false,
|
|
10
|
+
trimValues: false
|
|
11
|
+
});
|
|
12
|
+
const GEXF_NAMESPACE = /^https?:\/\/(?:www\.)?gexf.net\/1\.(?:2(?:draft)?|3)(\/viz)?$/;
|
|
13
|
+
const TEMPORAL_ATTRIBUTES = [
|
|
14
|
+
'start',
|
|
15
|
+
'end',
|
|
16
|
+
'startopen',
|
|
17
|
+
'endopen',
|
|
18
|
+
'timestamp',
|
|
19
|
+
'timestamps',
|
|
20
|
+
'intervals'
|
|
21
|
+
];
|
|
22
|
+
/** Parses a static GEXF document directly into the selected graph representation. */
|
|
23
|
+
export function parseGEXF(input, shape = 'arrow-table') {
|
|
24
|
+
const text = typeof input === 'string' ? input : new TextDecoder().decode(input);
|
|
25
|
+
const validation = XMLValidator.validate(text);
|
|
26
|
+
if (validation !== true)
|
|
27
|
+
throw new Error(`Invalid GEXF XML: ${validation.err.msg}`);
|
|
28
|
+
// External and custom entity declarations are outside the supported format subset.
|
|
29
|
+
if (/<!DOCTYPE\s/i.test(text))
|
|
30
|
+
throw new Error('GEXF document types are unsupported.');
|
|
31
|
+
const document = normalizeNamespaces(parser.parse(text), {});
|
|
32
|
+
const root = getElement(document.gexf, 'gexf');
|
|
33
|
+
const version = root['@_version'];
|
|
34
|
+
if (version && !['1.2', '1.2draft', '1.3'].includes(version)) {
|
|
35
|
+
throw new Error(`Unsupported GEXF version: ${version}`);
|
|
36
|
+
}
|
|
37
|
+
const graph = getElement(root.graph, 'graph');
|
|
38
|
+
const directed = parseDirection(graph['@_defaultedgetype'] ?? 'undirected');
|
|
39
|
+
const definitions = {
|
|
40
|
+
nodes: new Map(),
|
|
41
|
+
edges: new Map()
|
|
42
|
+
};
|
|
43
|
+
for (const attributes of getElements(graph.attributes)) {
|
|
44
|
+
const domain = attributes['@_class'];
|
|
45
|
+
if (domain !== 'node' && domain !== 'edge')
|
|
46
|
+
throw new Error('GEXF attributes require a node or edge class.');
|
|
47
|
+
const scoped = domain === 'node' ? definitions.nodes : definitions.edges;
|
|
48
|
+
const names = new Set(Array.from(scoped.values(), definition => definition.name));
|
|
49
|
+
for (const attribute of getElements(attributes.attribute)) {
|
|
50
|
+
const identifier = requireAttribute(attribute, 'id');
|
|
51
|
+
const name = requireAttribute(attribute, 'title');
|
|
52
|
+
if (name === 'gexf' || names.has(name) || scoped.has(identifier)) {
|
|
53
|
+
throw new Error(`Duplicate or reserved GEXF attribute: ${name}`);
|
|
54
|
+
}
|
|
55
|
+
names.add(name);
|
|
56
|
+
const type = parseAttributeType(requireAttribute(attribute, 'type'));
|
|
57
|
+
scoped.set(identifier, {
|
|
58
|
+
name,
|
|
59
|
+
type,
|
|
60
|
+
defaultValue: attribute.default === undefined
|
|
61
|
+
? undefined
|
|
62
|
+
: castValue(readTextContent(attribute.default), type)
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const nodeElements = getElements(getContainer(graph.nodes).node);
|
|
67
|
+
const edgeElements = getElements(getContainer(graph.edges).edge);
|
|
68
|
+
const nodeIdentifiers = new Set();
|
|
69
|
+
for (const node of nodeElements) {
|
|
70
|
+
const identifier = requireAttribute(node, 'id');
|
|
71
|
+
if (nodeIdentifiers.has(identifier))
|
|
72
|
+
throw new Error(`Duplicate GEXF node ID: ${identifier}`);
|
|
73
|
+
nodeIdentifiers.add(identifier);
|
|
74
|
+
}
|
|
75
|
+
const edgeIdentifiers = new Set(edgeElements
|
|
76
|
+
.map(edge => edge['@_id'])
|
|
77
|
+
.filter((identifier) => typeof identifier === 'string'));
|
|
78
|
+
const seenEdges = new Set();
|
|
79
|
+
/** Emits node records directly to the table builder. */
|
|
80
|
+
function* iterateNodes() {
|
|
81
|
+
for (const node of nodeElements)
|
|
82
|
+
yield parseRecord(node, definitions.nodes);
|
|
83
|
+
}
|
|
84
|
+
/** Emits edge records without materializing a plain graph. */
|
|
85
|
+
function* iterateEdges() {
|
|
86
|
+
for (const [index, edge] of edgeElements.entries()) {
|
|
87
|
+
const sourceId = requireAttribute(edge, 'source');
|
|
88
|
+
const targetId = requireAttribute(edge, 'target');
|
|
89
|
+
if (!nodeIdentifiers.has(sourceId) || !nodeIdentifiers.has(targetId)) {
|
|
90
|
+
throw new Error('GEXF edge references an undeclared node.');
|
|
91
|
+
}
|
|
92
|
+
let identifier = edge['@_id'] === undefined ? undefined : requireAttribute(edge, 'id');
|
|
93
|
+
if (identifier === undefined) {
|
|
94
|
+
identifier = `edge-${index}`;
|
|
95
|
+
while (edgeIdentifiers.has(identifier))
|
|
96
|
+
identifier = `_${identifier}`;
|
|
97
|
+
edgeIdentifiers.add(identifier);
|
|
98
|
+
}
|
|
99
|
+
if (seenEdges.has(identifier))
|
|
100
|
+
throw new Error(`Duplicate GEXF edge ID: ${identifier}`);
|
|
101
|
+
seenEdges.add(identifier);
|
|
102
|
+
yield {
|
|
103
|
+
...parseRecord(edge, definitions.edges, identifier),
|
|
104
|
+
sourceId,
|
|
105
|
+
targetId,
|
|
106
|
+
directed: edge['@_type'] === undefined ? directed : parseDirection(edge['@_type'])
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
const metadataAttributes = Object.create(null);
|
|
111
|
+
const meta = getContainer(root.meta);
|
|
112
|
+
for (const name of ['creator', 'description', 'keywords']) {
|
|
113
|
+
if (meta[name] !== undefined)
|
|
114
|
+
metadataAttributes[name] = readTextContent(meta[name]);
|
|
115
|
+
}
|
|
116
|
+
if (typeof meta['@_lastmodifieddate'] === 'string')
|
|
117
|
+
metadataAttributes.lastmodifieddate = meta['@_lastmodifieddate'];
|
|
118
|
+
const declarations = {
|
|
119
|
+
nodes: new Map(Array.from(definitions.nodes.values(), definition => [definition.name, definition.type])),
|
|
120
|
+
edges: new Map(Array.from(definitions.edges.values(), definition => [definition.name, definition.type]))
|
|
121
|
+
};
|
|
122
|
+
return {
|
|
123
|
+
...buildGraphTables(iterateNodes(), iterateEdges(), shape, declarations),
|
|
124
|
+
metadata: { version, directed, attributes: metadataAttributes }
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/** Resolves inherited namespace bindings without treating foreign elements as GEXF. */
|
|
128
|
+
function normalizeNamespaces(element, inherited) {
|
|
129
|
+
const namespaces = Object.assign(Object.create(null), inherited);
|
|
130
|
+
for (const [name, value] of Object.entries(element)) {
|
|
131
|
+
if (name === '@_xmlns')
|
|
132
|
+
namespaces[''] = String(value);
|
|
133
|
+
else if (name.startsWith('@_xmlns:'))
|
|
134
|
+
namespaces[name.slice(8)] = String(value);
|
|
135
|
+
}
|
|
136
|
+
const normalized = Object.create(null);
|
|
137
|
+
for (const [name, value] of Object.entries(element)) {
|
|
138
|
+
if (name.startsWith('@_') || name === '#text' || name.startsWith('?')) {
|
|
139
|
+
normalized[name] = value;
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
const separator = name.indexOf(':');
|
|
143
|
+
const prefix = separator < 0 ? '' : name.slice(0, separator);
|
|
144
|
+
const localName = name.slice(separator + 1);
|
|
145
|
+
// Namespace declarations on this child also scope the child's own name.
|
|
146
|
+
const children = Array.isArray(value) ? value : [value];
|
|
147
|
+
for (const child of children) {
|
|
148
|
+
const object = typeof child === 'object' && child !== null ? child : {};
|
|
149
|
+
const namespace = object[prefix ? `@_xmlns:${prefix}` : '@_xmlns'] ?? namespaces[prefix];
|
|
150
|
+
const match = typeof namespace === 'string' ? GEXF_NAMESPACE.exec(namespace) : null;
|
|
151
|
+
const key = match
|
|
152
|
+
? `${match[1] ? 'viz:' : ''}${localName}`
|
|
153
|
+
: namespace || prefix
|
|
154
|
+
? `foreign:${name}`
|
|
155
|
+
: localName;
|
|
156
|
+
const childValue = typeof child === 'object' && child !== null
|
|
157
|
+
? match || (!namespace && !prefix)
|
|
158
|
+
? normalizeNamespaces(object, namespaces)
|
|
159
|
+
: object
|
|
160
|
+
: child;
|
|
161
|
+
if (normalized[key] === undefined)
|
|
162
|
+
normalized[key] = childValue;
|
|
163
|
+
else
|
|
164
|
+
normalized[key] = [
|
|
165
|
+
...(Array.isArray(normalized[key]) ? normalized[key] : [normalized[key]]),
|
|
166
|
+
childValue
|
|
167
|
+
];
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
assertStaticElement(normalized);
|
|
171
|
+
return normalized;
|
|
172
|
+
}
|
|
173
|
+
/** Rejects temporal and hierarchical constructs that flat static tables cannot represent. */
|
|
174
|
+
function assertStaticElement(element) {
|
|
175
|
+
if ((element['@_mode'] !== undefined && element['@_mode'] !== 'static') ||
|
|
176
|
+
TEMPORAL_ATTRIBUTES.some(name => element[`@_${name}`] !== undefined) ||
|
|
177
|
+
element.spells !== undefined) {
|
|
178
|
+
throw new Error('Dynamic GEXF graphs and temporal values are unsupported.');
|
|
179
|
+
}
|
|
180
|
+
if (element['@_pid'] !== undefined ||
|
|
181
|
+
element.parents !== undefined ||
|
|
182
|
+
(element['@_id'] !== undefined && (element.nodes !== undefined || element.edges !== undefined))) {
|
|
183
|
+
throw new Error('Hierarchical GEXF graphs are unsupported.');
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/** Reads a singleton element, including an empty element. */
|
|
187
|
+
function getElement(value, name) {
|
|
188
|
+
if (value === '')
|
|
189
|
+
return {};
|
|
190
|
+
if (value && typeof value === 'object' && !Array.isArray(value))
|
|
191
|
+
return value;
|
|
192
|
+
throw new Error(`GEXF requires one <${name}> element.`);
|
|
193
|
+
}
|
|
194
|
+
/** Reads scalar text from elements that also declare local namespace bindings. */
|
|
195
|
+
function readTextContent(value) {
|
|
196
|
+
if (typeof value === 'string')
|
|
197
|
+
return value;
|
|
198
|
+
const text = getElement(value, 'text')['#text'];
|
|
199
|
+
return typeof text === 'string' ? text : '';
|
|
200
|
+
}
|
|
201
|
+
/** Reads an optional container while rejecting repeated containers. */
|
|
202
|
+
function getContainer(value) {
|
|
203
|
+
return value === undefined ? {} : getElement(value, 'container');
|
|
204
|
+
}
|
|
205
|
+
/** Reads repeated or singleton element records. */
|
|
206
|
+
function getElements(value) {
|
|
207
|
+
if (value === undefined)
|
|
208
|
+
return [];
|
|
209
|
+
return (Array.isArray(value) ? value : [value]).map(entry => getElement(entry, 'record'));
|
|
210
|
+
}
|
|
211
|
+
/** Reads a required XML attribute without changing identifier or label whitespace. */
|
|
212
|
+
function requireAttribute(element, name) {
|
|
213
|
+
const value = element[`@_${name}`];
|
|
214
|
+
if (typeof value !== 'string' || value === '')
|
|
215
|
+
throw new Error(`GEXF requires a ${name} attribute.`);
|
|
216
|
+
return value;
|
|
217
|
+
}
|
|
218
|
+
/** Reads a direction while rejecting bidirectional mutual edges. */
|
|
219
|
+
function parseDirection(value) {
|
|
220
|
+
if (value !== 'directed' && value !== 'undirected')
|
|
221
|
+
throw new Error(`Unsupported GEXF edge type: ${String(value)}`);
|
|
222
|
+
return value === 'directed';
|
|
223
|
+
}
|
|
224
|
+
/** Maps supported GEXF scalar and list types to graph column declarations. */
|
|
225
|
+
function parseAttributeType(value) {
|
|
226
|
+
if (value.startsWith('list') && !value.slice(4).startsWith('list')) {
|
|
227
|
+
return { list: parseAttributeType(value.slice(4)) };
|
|
228
|
+
}
|
|
229
|
+
if (value === 'integer' || value === 'byte' || value === 'short')
|
|
230
|
+
return 'int';
|
|
231
|
+
if (value === 'boolean' || value === 'long' || value === 'float' || value === 'double')
|
|
232
|
+
return value;
|
|
233
|
+
if (['string', 'anyURI', 'date', 'char', 'bigdecimal', 'biginteger'].includes(value))
|
|
234
|
+
return 'string';
|
|
235
|
+
throw new Error(`Unsupported GEXF attribute type: ${value}`);
|
|
236
|
+
}
|
|
237
|
+
/** Casts exact declared values; invalid scalar text survives Arrow promotion to Utf8. */
|
|
238
|
+
function castValue(text, type) {
|
|
239
|
+
if (typeof type === 'object') {
|
|
240
|
+
return parseListValues(text).map(value => castValue(value, type.list));
|
|
241
|
+
}
|
|
242
|
+
if (type === 'string')
|
|
243
|
+
return text;
|
|
244
|
+
const trimmed = text.trim();
|
|
245
|
+
if (type === 'boolean') {
|
|
246
|
+
if (trimmed === 'true' || trimmed === '1')
|
|
247
|
+
return true;
|
|
248
|
+
if (trimmed === 'false' || trimmed === '0')
|
|
249
|
+
return false;
|
|
250
|
+
return text;
|
|
251
|
+
}
|
|
252
|
+
if (type === 'int' || type === 'long') {
|
|
253
|
+
if (!/^[+-]?\d+$/.test(trimmed))
|
|
254
|
+
return text;
|
|
255
|
+
return type === 'long'
|
|
256
|
+
? BigInt(trimmed)
|
|
257
|
+
: Number.isSafeInteger(Number(trimmed))
|
|
258
|
+
? Number(trimmed)
|
|
259
|
+
: text;
|
|
260
|
+
}
|
|
261
|
+
if (trimmed === 'INF')
|
|
262
|
+
return Infinity;
|
|
263
|
+
if (trimmed === '-INF')
|
|
264
|
+
return -Infinity;
|
|
265
|
+
if (trimmed === 'NaN')
|
|
266
|
+
return NaN;
|
|
267
|
+
if (!/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/.test(trimmed))
|
|
268
|
+
return text;
|
|
269
|
+
const number = Number(trimmed);
|
|
270
|
+
const represented = type === 'float' ? Math.fround(number) : number;
|
|
271
|
+
const nonzero = /[1-9]/.test(trimmed.split(/[eE]/)[0]);
|
|
272
|
+
return Number.isFinite(represented) && (represented !== 0 || !nonzero) ? number : text;
|
|
273
|
+
}
|
|
274
|
+
/** Reads bracketed and legacy lists, preserving quoted delimiters and string whitespace. */
|
|
275
|
+
function parseListValues(text) {
|
|
276
|
+
const trimmed = text.trim();
|
|
277
|
+
const bracketed = trimmed.startsWith('[');
|
|
278
|
+
if (bracketed !== trimmed.endsWith(']'))
|
|
279
|
+
throw new Error('Invalid GEXF list brackets.');
|
|
280
|
+
const contents = bracketed ? trimmed.slice(1, -1) : trimmed;
|
|
281
|
+
if (!contents.trim())
|
|
282
|
+
return [];
|
|
283
|
+
const values = [];
|
|
284
|
+
let value = '';
|
|
285
|
+
let quote = '';
|
|
286
|
+
let quoted = false;
|
|
287
|
+
let closed = false;
|
|
288
|
+
for (let index = 0; index < contents.length; index++) {
|
|
289
|
+
const character = contents[index];
|
|
290
|
+
if (quote) {
|
|
291
|
+
if (character === '\\' && (contents[index + 1] === quote || contents[index + 1] === '\\')) {
|
|
292
|
+
value += contents[++index];
|
|
293
|
+
}
|
|
294
|
+
else if (character === quote) {
|
|
295
|
+
quote = '';
|
|
296
|
+
closed = true;
|
|
297
|
+
}
|
|
298
|
+
else
|
|
299
|
+
value += character;
|
|
300
|
+
}
|
|
301
|
+
else if (character === ',' || (!bracketed && (character === '|' || character === ';'))) {
|
|
302
|
+
values.push(quoted ? value : value.trim());
|
|
303
|
+
value = '';
|
|
304
|
+
quoted = false;
|
|
305
|
+
closed = false;
|
|
306
|
+
}
|
|
307
|
+
else if (closed) {
|
|
308
|
+
if (character.trim())
|
|
309
|
+
throw new Error('Invalid GEXF list text after a quote.');
|
|
310
|
+
}
|
|
311
|
+
else if ((character === "'" || character === '"') && !value.trim()) {
|
|
312
|
+
quote = character;
|
|
313
|
+
quoted = true;
|
|
314
|
+
value = '';
|
|
315
|
+
}
|
|
316
|
+
else
|
|
317
|
+
value += character;
|
|
318
|
+
}
|
|
319
|
+
if (quote)
|
|
320
|
+
throw new Error('Unterminated GEXF list quote.');
|
|
321
|
+
values.push(quoted ? value : value.trim());
|
|
322
|
+
return values;
|
|
323
|
+
}
|
|
324
|
+
/** Converts application attributes and native GEXF properties to a collision-free record. */
|
|
325
|
+
function parseRecord(element, definitions, identifier) {
|
|
326
|
+
const attributes = Object.create(null);
|
|
327
|
+
for (const definition of definitions.values()) {
|
|
328
|
+
if (definition.defaultValue !== undefined)
|
|
329
|
+
attributes[definition.name] = Array.isArray(definition.defaultValue)
|
|
330
|
+
? [...definition.defaultValue]
|
|
331
|
+
: definition.defaultValue;
|
|
332
|
+
}
|
|
333
|
+
for (const attvalue of getElements(getContainer(element.attvalues).attvalue)) {
|
|
334
|
+
const key = requireAttribute(attvalue, 'for');
|
|
335
|
+
const definition = definitions.get(key);
|
|
336
|
+
if (!definition)
|
|
337
|
+
throw new Error(`Undeclared GEXF attribute: ${key}`);
|
|
338
|
+
attributes[definition.name] = castValue(requireValue(attvalue), definition.type);
|
|
339
|
+
}
|
|
340
|
+
const native = Object.create(null);
|
|
341
|
+
if (element['@_weight'] !== undefined)
|
|
342
|
+
native.weight = castValue(String(element['@_weight']), 'double');
|
|
343
|
+
if (element['@_kind'] !== undefined)
|
|
344
|
+
native.kind = element['@_kind'];
|
|
345
|
+
const visualization = Object.create(null);
|
|
346
|
+
for (const name of ['color', 'position', 'size', 'shape', 'thickness']) {
|
|
347
|
+
const value = element[`viz:${name}`];
|
|
348
|
+
if (value === undefined)
|
|
349
|
+
continue;
|
|
350
|
+
const properties = Object.create(null);
|
|
351
|
+
for (const [key, property] of Object.entries(getElement(value, `viz:${name}`))) {
|
|
352
|
+
if (key.startsWith('@_') && !key.startsWith('@_xmlns')) {
|
|
353
|
+
const propertyName = key.slice(2);
|
|
354
|
+
properties[propertyName] =
|
|
355
|
+
['r', 'g', 'b', 'a', 'x', 'y', 'z'].includes(propertyName) ||
|
|
356
|
+
(propertyName === 'value' && (name === 'size' || name === 'thickness'))
|
|
357
|
+
? castValue(String(property), 'double')
|
|
358
|
+
: property;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
visualization[name] = properties;
|
|
362
|
+
}
|
|
363
|
+
if (Object.keys(visualization).length)
|
|
364
|
+
native.viz = visualization;
|
|
365
|
+
if (Object.keys(native).length)
|
|
366
|
+
attributes.gexf = native;
|
|
367
|
+
return {
|
|
368
|
+
id: identifier ?? requireAttribute(element, 'id'),
|
|
369
|
+
label: element['@_label'],
|
|
370
|
+
attributes
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
/** Reads an attribute value, allowing the empty string. */
|
|
374
|
+
function requireValue(element) {
|
|
375
|
+
const value = element['@_value'];
|
|
376
|
+
if (typeof value !== 'string')
|
|
377
|
+
throw new Error('GEXF attvalue requires a value attribute.');
|
|
378
|
+
return value;
|
|
379
|
+
}
|
|
380
|
+
//# sourceMappingURL=parse-gexf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-gexf.js","sourceRoot":"","sources":["../../src/lib/parse-gexf.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { GraphData } from "../graph-types.js";
|
|
1
|
+
import type { GraphData, GraphOutput, GraphShape } from "../graph-types.js";
|
|
2
2
|
/** Accepted GraphML document inputs. */
|
|
3
3
|
export type GraphMLInput = string | ArrayBuffer | Uint8Array;
|
|
4
4
|
/** Parses the first GraphML graph into framework-independent node and edge records. */
|
|
5
5
|
export declare function parseGraphML(graphml: GraphMLInput): GraphData;
|
|
6
|
+
export declare function parseGraphML(graphml: GraphMLInput, shape: GraphShape): GraphOutput;
|
|
6
7
|
//# sourceMappingURL=parse-graphml.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-graphml.d.ts","sourceRoot":"","sources":["../../src/lib/parse-graphml.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"parse-graphml.d.ts","sourceRoot":"","sources":["../../src/lib/parse-graphml.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,SAAS,EAGT,WAAW,EACX,UAAU,EAGX,0BAAuB;AAyCxB,wCAAwC;AACxC,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;AAE7D,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,CAAC;AAC/D,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,CAAC"}
|
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
import { XMLParser } from 'fast-xml-parser';
|
|
5
|
+
import { buildGraphTables } from "./build-graph-tables.js";
|
|
5
6
|
const XML_ATTRIBUTE_PREFIX = '@_';
|
|
6
7
|
const XML_TEXT_KEY = '#text';
|
|
7
8
|
const graphmlParser = new XMLParser({
|
|
8
9
|
ignoreAttributes: false,
|
|
9
10
|
attributeNamePrefix: XML_ATTRIBUTE_PREFIX,
|
|
10
11
|
textNodeName: XML_TEXT_KEY,
|
|
11
|
-
trimValues:
|
|
12
|
+
trimValues: false,
|
|
12
13
|
parseAttributeValue: false,
|
|
13
14
|
parseTagValue: false,
|
|
14
15
|
removeNSPrefix: true
|
|
15
16
|
});
|
|
16
|
-
|
|
17
|
-
export function parseGraphML(graphml) {
|
|
17
|
+
export function parseGraphML(graphml, shape = 'plain-graph-data') {
|
|
18
18
|
const xmlText = decodeGraphML(graphml);
|
|
19
19
|
const document = graphmlParser.parse(xmlText);
|
|
20
20
|
const graphmlRoot = getGraphMLRoot(document);
|
|
@@ -25,17 +25,33 @@ export function parseGraphML(graphml) {
|
|
|
25
25
|
if (!graphElement) {
|
|
26
26
|
throw new Error('GraphML document does not contain a <graph> element.');
|
|
27
27
|
}
|
|
28
|
-
const keyDefinitions = collectKeyDefinitions(graphmlRoot, graphElement);
|
|
28
|
+
const keyDefinitions = collectKeyDefinitions(graphmlRoot, graphElement, shape !== 'plain-graph-data');
|
|
29
29
|
const defaultDirected = parseEdgeDefault(graphElement[`${XML_ATTRIBUTE_PREFIX}edgedefault`]);
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
const declarations = { nodes: new Map(), edges: new Map() };
|
|
31
|
+
for (const definition of keyDefinitions.values()) {
|
|
32
|
+
if (definition.domain === 'all' || definition.domain === 'node')
|
|
33
|
+
declarations.nodes.set(definition.name, definition.type);
|
|
34
|
+
if (definition.domain === 'all' || definition.domain === 'edge')
|
|
35
|
+
declarations.edges.set(definition.name, definition.type);
|
|
36
|
+
}
|
|
37
|
+
return buildGraphTables(iterateNodes(graphElement.node, keyDefinitions), iterateEdges(graphElement.edge, keyDefinitions, defaultDirected), shape, declarations);
|
|
38
|
+
}
|
|
39
|
+
/** Emits valid nodes directly to the selected output builder. */
|
|
40
|
+
function* iterateNodes(nodes, definitions) {
|
|
41
|
+
for (const node of normalizeArray(nodes)) {
|
|
42
|
+
const record = parseNode(node, definitions);
|
|
43
|
+
if (record)
|
|
44
|
+
yield record;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** Emits valid edges while preserving generated IDs and document order. */
|
|
48
|
+
function* iterateEdges(edges, definitions, directed) {
|
|
49
|
+
let index = 0;
|
|
50
|
+
for (const edge of normalizeArray(edges)) {
|
|
51
|
+
const record = parseEdge(edge, index++, definitions, directed);
|
|
52
|
+
if (record)
|
|
53
|
+
yield record;
|
|
54
|
+
}
|
|
39
55
|
}
|
|
40
56
|
/** Decodes text or UTF-8 binary input. */
|
|
41
57
|
function decodeGraphML(graphml) {
|
|
@@ -61,17 +77,20 @@ function getGraphMLRoot(document) {
|
|
|
61
77
|
/** Selects the first graph element. */
|
|
62
78
|
function getGraphElement(graphmlRoot) {
|
|
63
79
|
const graph = graphmlRoot.graph;
|
|
80
|
+
if (typeof graph === 'string' && !graph.trim()) {
|
|
81
|
+
return {};
|
|
82
|
+
}
|
|
64
83
|
if (!graph) {
|
|
65
84
|
return null;
|
|
66
85
|
}
|
|
67
86
|
if (Array.isArray(graph)) {
|
|
68
|
-
const firstGraph = graph.find(entry => isObject(entry));
|
|
69
|
-
return isObject(firstGraph) ? firstGraph : null;
|
|
87
|
+
const firstGraph = graph.find(entry => isObject(entry) || (typeof entry === 'string' && !entry.trim()));
|
|
88
|
+
return isObject(firstGraph) ? firstGraph : typeof firstGraph === 'string' ? {} : null;
|
|
70
89
|
}
|
|
71
90
|
return isObject(graph) ? graph : null;
|
|
72
91
|
}
|
|
73
92
|
/** Collects scoped keys and typed defaults. */
|
|
74
|
-
function collectKeyDefinitions(graphmlRoot, graphElement) {
|
|
93
|
+
function collectKeyDefinitions(graphmlRoot, graphElement, lossless) {
|
|
75
94
|
const keys = new Map();
|
|
76
95
|
for (const candidate of [
|
|
77
96
|
...normalizeArray(graphmlRoot.key),
|
|
@@ -84,8 +103,8 @@ function collectKeyDefinitions(graphmlRoot, graphElement) {
|
|
|
84
103
|
const name = String(candidate[`${XML_ATTRIBUTE_PREFIX}attr.name`] ?? id).trim();
|
|
85
104
|
const type = normalizeType(candidate[`${XML_ATTRIBUTE_PREFIX}attr.type`]);
|
|
86
105
|
const defaultNode = candidate.default ?? null;
|
|
87
|
-
const defaultValue = defaultNode !== null ? castDataValue(defaultNode, type) : undefined;
|
|
88
|
-
keys.set(id, { id, domain, name, type, defaultValue });
|
|
106
|
+
const defaultValue = defaultNode !== null ? castDataValue(defaultNode, type, lossless) : undefined;
|
|
107
|
+
keys.set(id, { id, domain, name, type, defaultValue, lossless });
|
|
89
108
|
}
|
|
90
109
|
}
|
|
91
110
|
}
|
|
@@ -167,13 +186,15 @@ function assignAttributeFromDataEntry(entry, keyDefinitions, attributes) {
|
|
|
167
186
|
}
|
|
168
187
|
const definition = keyDefinitions.get(keyId);
|
|
169
188
|
const attributeName = definition?.name ?? keyId;
|
|
170
|
-
const value =
|
|
189
|
+
const value = definition?.type === 'boolean' && extractTextContent(entry) === undefined
|
|
190
|
+
? false
|
|
191
|
+
: castDataValue(entry, definition?.type ?? 'string', definition?.lossless);
|
|
171
192
|
if (value !== undefined) {
|
|
172
193
|
attributes[attributeName] = value;
|
|
173
194
|
}
|
|
174
195
|
}
|
|
175
196
|
/** Converts GraphML scalar types while preserving unparseable numeric text. */
|
|
176
|
-
function castDataValue(value, type) {
|
|
197
|
+
function castDataValue(value, type, lossless = false) {
|
|
177
198
|
if (value === null || typeof value === 'undefined') {
|
|
178
199
|
return undefined;
|
|
179
200
|
}
|
|
@@ -184,6 +205,9 @@ function castDataValue(value, type) {
|
|
|
184
205
|
if (type === 'boolean') {
|
|
185
206
|
return parseBoolean(text);
|
|
186
207
|
}
|
|
208
|
+
if (type === 'long' && lossless) {
|
|
209
|
+
return /^[+-]?\d+$/.test(text.trim()) ? BigInt(text.trim()) : text;
|
|
210
|
+
}
|
|
187
211
|
if (type === 'int' || type === 'long') {
|
|
188
212
|
const parsed = Number.parseInt(text, 10);
|
|
189
213
|
return Number.isNaN(parsed) ? text : parsed;
|
|
@@ -207,12 +231,12 @@ function extractTextContent(value) {
|
|
|
207
231
|
}
|
|
208
232
|
if (isObject(value)) {
|
|
209
233
|
const text = value[XML_TEXT_KEY];
|
|
210
|
-
|
|
211
|
-
return text;
|
|
212
|
-
}
|
|
213
|
-
const nonAttributeEntries = Object.entries(value).filter(([key]) => !key.startsWith(XML_ATTRIBUTE_PREFIX));
|
|
234
|
+
const nonAttributeEntries = Object.entries(value).filter(([key]) => !key.startsWith(XML_ATTRIBUTE_PREFIX) && key !== XML_TEXT_KEY);
|
|
214
235
|
if (nonAttributeEntries.length === 0) {
|
|
215
|
-
return undefined;
|
|
236
|
+
return typeof text === 'string' ? text : undefined;
|
|
237
|
+
}
|
|
238
|
+
if (typeof text === 'string' && text.trim()) {
|
|
239
|
+
nonAttributeEntries.push([XML_TEXT_KEY, text]);
|
|
216
240
|
}
|
|
217
241
|
return JSON.stringify(Object.fromEntries(nonAttributeEntries));
|
|
218
242
|
}
|
|
@@ -255,7 +279,6 @@ function normalizeType(value) {
|
|
|
255
279
|
}
|
|
256
280
|
return 'string';
|
|
257
281
|
}
|
|
258
|
-
/** Converts an edge element with its effective direction. */
|
|
259
282
|
/** Reads the graph-wide default edge direction. */
|
|
260
283
|
function parseEdgeDefault(value) {
|
|
261
284
|
if (typeof value !== 'string') {
|
|
@@ -291,6 +314,6 @@ function parseBoolean(value) {
|
|
|
291
314
|
if (normalized === 'false' || normalized === '0' || normalized === 'no' || normalized === 'n') {
|
|
292
315
|
return false;
|
|
293
316
|
}
|
|
294
|
-
return Boolean(
|
|
317
|
+
return Boolean(normalized);
|
|
295
318
|
}
|
|
296
319
|
//# sourceMappingURL=parse-graphml.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-graphml.js","sourceRoot":"","sources":["../../src/lib/parse-graphml.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse-graphml.js","sourceRoot":"","sources":["../../src/lib/parse-graphml.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAW1C,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAEtD,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,YAAY,GAAG,OAAO,CAAC;AA2B7B,MAAM,aAAa,GAAG,IAAI,SAAS,CAAC;IAClC,gBAAgB,EAAE,KAAK;IACvB,mBAAmB,EAAE,oBAAoB;IACzC,YAAY,EAAE,YAAY;IAC1B,UAAU,EAAE,KAAK;IACjB,mBAAmB,EAAE,KAAK;IAC1B,aAAa,EAAE,KAAK;IACpB,cAAc,EAAE,IAAI;CACrB,CAAC,CAAC;AAQH,MAAM,UAAU,YAAY,CAC1B,OAAqB,EACrB,QAAoB,kBAAkB;IAEtC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAkB,CAAC;IAC/D,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAClD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,cAAc,GAAG,qBAAqB,CAC1C,WAAW,EACX,YAAY,EACZ,KAAK,KAAK,kBAAkB,CAC7B,CAAC;IACF,MAAM,eAAe,GAAG,gBAAgB,CAAC,YAAY,CAAC,GAAG,oBAAoB,aAAa,CAAC,CAAC,CAAC;IAE7F,MAAM,YAAY,GAA0B,EAAC,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAC,CAAC;IACjF,KAAK,MAAM,UAAU,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;QACjD,IAAI,UAAU,CAAC,MAAM,KAAK,KAAK,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM;YAC7D,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,UAAU,CAAC,MAAM,KAAK,KAAK,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM;YAC7D,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,gBAAgB,CACrB,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,EAC/C,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,CAAC,EAChE,KAAK,EACL,YAAY,CACb,CAAC;AACJ,CAAC;AAED,iEAAiE;AACjE,QAAQ,CAAC,CAAC,YAAY,CACpB,KAAc,EACd,WAA8C;IAE9C,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC5C,IAAI,MAAM;YAAE,MAAM,MAAM,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,QAAQ,CAAC,CAAC,YAAY,CACpB,KAAc,EACd,WAA8C,EAC9C,QAAiB;IAEjB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC/D,IAAI,MAAM;YAAE,MAAM,MAAM,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,0CAA0C;AAC1C,SAAS,aAAa,CAAC,OAAqB;IAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,YAAY,UAAU,EAAE,CAAC;QAClC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,OAAO,YAAY,WAAW,EAAE,CAAC;QACnC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;AAC/F,CAAC;AAED,uCAAuC;AACvC,SAAS,cAAc,CAAC,QAAuB;IAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC9B,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uCAAuC;AACvC,SAAS,eAAe,CAAC,WAA0B;IACjD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAC3B,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CACzE,CAAC;QACF,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACxF,CAAC;IAED,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED,+CAA+C;AAC/C,SAAS,qBAAqB,CAC5B,WAA0B,EAC1B,YAA2B,EAC3B,QAAiB;IAEjB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAgC,CAAC;IAErD,KAAK,MAAM,SAAS,IAAI;QACtB,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC;QAClC,GAAG,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC;KACpC,EAAE,CAAC;QACF,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,oBAAoB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvE,IAAI,EAAE,EAAE,CAAC;gBACP,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,oBAAoB,KAAK,CAAC,CAAC,CAAC;gBACxE,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,oBAAoB,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChF,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,oBAAoB,WAAW,CAAC,CAAC,CAAC;gBAC1E,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC;gBAC9C,MAAM,YAAY,GAChB,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAEhF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAC,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mDAAmD;AACnD,SAAS,SAAS,CAChB,IAAa,EACb,cAAiD;IAEjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,oBAAoB,IAAI,CAAC,CAAC;IAC7C,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAExE,MAAM,SAAS,GAAc;QAC3B,EAAE;QACF,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;KACxE,CAAC;IAEF,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,6DAA6D;AAC7D,SAAS,SAAS,CAChB,IAAa,EACb,KAAa,EACb,cAAiD,EACjD,eAAwB;IAExB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,oBAAoB,QAAQ,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,oBAAoB,QAAQ,CAAC,CAAC;IACvD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,oBAAoB,IAAI,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC;IAC/D,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,oBAAoB,UAAU,CAAC,EAAE,eAAe,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAExE,MAAM,SAAS,GAAc;QAC3B,EAAE;QACF,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;KACxE,CAAC;IAEF,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,gEAAgE;AAChE,SAAS,iBAAiB,CACxB,MAAqB,EACrB,IAAa,EACb,cAAiD;IAEjD,MAAM,UAAU,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhE,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAClD,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACnC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,4BAA4B,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,sEAAsE;AACtE,SAAS,4BAA4B,CACnC,KAAc,EACd,cAAiD,EACjD,UAAmC;IAEnC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,oBAAoB,KAAK,CAAC,CAAC;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,UAAU,EAAE,IAAI,IAAI,KAAK,CAAC;IAChD,MAAM,KAAK,GACT,UAAU,EAAE,IAAI,KAAK,SAAS,IAAI,kBAAkB,CAAC,KAAK,CAAC,KAAK,SAAS;QACvE,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,IAAI,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC/E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,UAAU,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;IACpC,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,SAAS,aAAa,CAAC,KAAc,EAAE,IAAwB,EAAE,QAAQ,GAAG,KAAK;IAC/E,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,IAAI,QAAQ,EAAE,CAAC;QAChC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IACD,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9C,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iEAAiE;AACjE,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QACjC,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CACtD,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,GAAG,KAAK,YAAY,CACzE,CAAC;QACF,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACrD,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5C,mBAAmB,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,sDAAsD;AACtD,SAAS,cAAc,CAAI,KAAiC;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,sDAAsD;AACtD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,0DAA0D;AAC1D,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACjF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iDAAiD;AACjD,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,IACE,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,KAAK;QACf,KAAK,KAAK,MAAM;QAChB,KAAK,KAAK,OAAO;QACjB,KAAK,KAAK,QAAQ,EAClB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,mDAAmD;AACnD,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC;AAC9C,CAAC;AAED,wCAAwC;AACxC,SAAS,aAAa,CAAC,KAAc,EAAE,eAAwB;IAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,IACE,UAAU,KAAK,MAAM;YACrB,UAAU,KAAK,GAAG;YAClB,UAAU,KAAK,KAAK;YACpB,UAAU,KAAK,UAAU,EACzB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IACE,UAAU,KAAK,OAAO;YACtB,UAAU,KAAK,GAAG;YAClB,UAAU,KAAK,IAAI;YACnB,UAAU,KAAK,YAAY,EAC3B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,yCAAyC;AACzC,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAC9F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAC9F,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;AAC7B,CAAC"}
|