ProcFlow turns SQL into diagrams for control flow, query structure, object
-dependencies, column lineage, and report dependencies. It runs locally in the
-browser: no backend, database connection, sign-in, or installation is required.
+dependencies, column lineage, report dependencies, and entity relationship
+diagrams from schema DDL. It runs locally in the browser: no backend, database
+connection, sign-in, or installation is required.
> **Accuracy warning:** ProcFlow is a deterministic heuristic analyser, not a
> database compiler. Treat diagrams as investigation aids and verify important
@@ -33,6 +34,9 @@ browser: no backend, database connection, sign-in, or installation is required.
their queries, and trace report → dataset → object → column dependencies.
- **Application teams:** inspect multi-object scripts, temporary-table flow,
catalogue-backed object resolution, and conservative column lineage.
+- **Schema reviewers:** open `erd.html`, paste or import `CREATE TABLE` /
+ `ALTER TABLE` DDL, and see declared tables, views, keys, and foreign keys as
+ an entity relationship diagram.
- **Reviewers:** export deterministic Mermaid, SVG, or editable draw.io
diagrams with source provenance.
@@ -45,6 +49,12 @@ browser: no backend, database connection, sign-in, or installation is required.
4. Choose an object and scope, then inspect the source spans and diagnostics
before relying on a relationship.
+For schema DDL, open `erd.html`, paste or import `CREATE TABLE` / `ALTER TABLE`
+statements (T-SQL, PostgreSQL, DB2, or SQLite), and review the declared
+entities and foreign keys. The ERD page asserts declared constraints only; it
+never infers a relationship from query text, and unresolved references stay
+explicit.
+
For development, see [Development](docs/DEVELOPMENT.md). For a simple served
run, use `python -m http.server 8000` from the runtime directory and open
`http://127.0.0.1:8000/`.
@@ -66,6 +76,9 @@ in the browser.
- temporary-table producer → consumer data flow;
- conservative column lineage with explicit ambiguity;
- report and dataset dependency chains;
+- declared entity relationships from DDL: tables, views, columns, primary,
+ unique, and foreign keys (composite keys grouped), exported as Mermaid
+ `erDiagram`;
- dynamic SQL as an explicit opaque step rather than an invented dependency.
## Supported dialects
diff --git a/dist/src/erd.js b/dist/src/erd.js
new file mode 100644
index 0000000..37f6b72
--- /dev/null
+++ b/dist/src/erd.js
@@ -0,0 +1,282 @@
+"use strict";
+/* ===== v2.1.0 ERD export (declared constraints only) =====
+ Renders the schema IR as a Mermaid `erDiagram`. Relationships are derived
+ only from declared FOREIGN KEY constraints; the exporter never infers an
+ edge. Sanitized identifiers keep Mermaid syntax valid while `%%` provenance
+ comments preserve the original entity, column, and type names. */
+function erdToken(value) {
+ var s = String(value == null ? '' : value).replace(/[^A-Za-z0-9_]/g, '_')
+ .replace(/_+/g, '_').replace(/^_+|_+$/g, '');
+ return s || 'unknown';
+}
+function erdTypeToken(value) {
+ var s = erdToken(value);
+ return s === 'unknown' ? 'unknown' : s;
+}
+/* Deterministic, collision-free Mermaid entity identifiers. */
+function erdEntityIds(result) {
+ var used = {}, map = {};
+ result.entities.forEach(function (entity) {
+ var base = erdToken(entity.id).toUpperCase();
+ if (/^[0-9]/.test(base))
+ base = 'E_' + base;
+ var count = used[base] || 0;
+ var candidate = base;
+ if (count > 0) {
+ do {
+ count++;
+ candidate = base + '_' + count;
+ } while (used[candidate]);
+ used[base] = count;
+ }
+ used[candidate] = 1;
+ map[entity.id] = candidate;
+ });
+ return map;
+}
+function erdHasColumn(key, column) {
+ var norm = schemaNormColumn(column);
+ return key.columns.some(function (name) { return schemaNormColumn(name) === norm; });
+}
+function erdColumnKeys(entity, column) {
+ var keys = [];
+ var pk = column.primaryKey || entity.keys.some(function (k) {
+ return k.kind === 'pk' && erdHasColumn(k, column.name);
+ });
+ if (pk)
+ keys.push('PK');
+ var fk = entity.keys.some(function (k) {
+ return k.kind === 'fk' && erdHasColumn(k, column.name);
+ });
+ if (fk)
+ keys.push('FK');
+ var uk = column.unique || entity.keys.some(function (k) {
+ return k.kind === 'unique' && erdHasColumn(k, column.name);
+ });
+ if (uk)
+ keys.push('UK');
+ return keys;
+}
+/* Cardinality notation, read as "how many per " on the left
+ and "how many per " on the right:
+ mandatory one-to-many: PARENT ||--o{ CHILD
+ optional one-to-many: PARENT o|--o{
+ mandatory one-to-one: PARENT ||--||
+ optional one-to-one: PARENT o|--|| */
+function erdRelationshipCardinality(rel) {
+ return { left: rel.optional ? 'o|' : '||', right: rel.unique ? '||' : 'o{' };
+}
+function erdRelationshipLabel(rel, child) {
+ if (rel.name)
+ return erdToken(rel.name);
+ var columns = rel.toColumns.length ? rel.toColumns : ['fk'];
+ return erdToken('fk_' + child.name.replace(/\./g, '_') + '_' + columns.join('_'));
+}
+/* Mermaid `erDiagram` text. Entity blocks come first, then relationship lines,
+ then the provenance map as comments. Deterministic for a given schema. */
+function toMermaidER(result) {
+ var ids = erdEntityIds(result);
+ var lines = ['erDiagram'];
+ lines.push(' %% procflow:erd v1 — declared constraints only; no inferred relationships');
+ lines.push(' %% schema tables=' + result.stats.tables + ' views=' + result.stats.views +
+ ' columns=' + result.stats.columns + ' relationships=' + result.stats.relationships +
+ ' unresolved=' + result.stats.unresolved);
+ result.entities.forEach(function (entity) {
+ var id = ids[entity.id];
+ if (entity.columns.length) {
+ lines.push(' ' + id + ' {');
+ entity.columns.forEach(function (column) {
+ var keys = erdColumnKeys(entity, column);
+ var line = ' ' + erdTypeToken(column.type) + ' ' + erdToken(column.name) +
+ (keys.length ? ' ' + keys.join(', ') : '');
+ var rawType = (column.type || '').trim();
+ if (rawType && rawType !== erdTypeToken(rawType)) {
+ line += ' "' + rawType.replace(/"/g, "'") + '"';
+ }
+ lines.push(line);
+ });
+ lines.push(' }');
+ }
+ else {
+ lines.push(' %% ' + id + ' has no declared columns' + (entity.unresolved ? ' (unresolved reference)' : ''));
+ }
+ });
+ result.relationships.forEach(function (rel) {
+ var from = ids[rel.fromId], to = ids[rel.toId];
+ if (!from || !to)
+ return;
+ var child = result.entities.filter(function (entity) { return entity.id === rel.toId; })[0];
+ var card = erdRelationshipCardinality(rel);
+ lines.push(' ' + from + ' ' + card.left + '--' + card.right + ' ' + to + ' : ' +
+ erdRelationshipLabel(rel, child || { name: 'entity' }));
+ });
+ result.entities.forEach(function (entity) {
+ lines.push(' %% entity ' + ids[entity.id] + ' = "' + entity.name + '" (' + entity.kind +
+ (entity.unresolved ? ', unresolved' : '') + ')');
+ });
+ result.entities.forEach(function (entity) {
+ entity.columns.forEach(function (column) {
+ lines.push(' %% column ' + ids[entity.id] + '.' + column.name + ' : ' +
+ (column.type || '(no declared type)'));
+ });
+ });
+ result.relationships.forEach(function (rel) {
+ lines.push(' %% relationship ' + ids[rel.fromId] + ' -> ' + ids[rel.toId] + ' ' +
+ rel.cardinality + (rel.optional ? ' optional' : ' mandatory') +
+ ' [' + (rel.fromColumns.join(',') || '?') + ' -> ' + rel.toColumns.join(',') + ']' +
+ (rel.name ? ' constraint ' + rel.name : '') + ' resolution=' + rel.resolution);
+ });
+ return lines.join('\n');
+}
+/* Bundled ERD samples (local-only, deterministic, and also used by the
+ v2.1.0 fixtures so the demo path is covered by tests). */
+var PROCFLOW_ERD_SAMPLE_TSQL = [
+ '/* Sample retail schema — declared constraints only. */',
+ 'CREATE TABLE dbo.Customer (',
+ ' CustomerId INT IDENTITY(1,1) PRIMARY KEY,',
+ ' Email NVARCHAR(200) NOT NULL UNIQUE,',
+ ' DisplayName NVARCHAR(120) NOT NULL,',
+ ' ReferredBy INT NULL,',
+ ' CONSTRAINT FK_Customer_Referrer FOREIGN KEY (ReferredBy)',
+ ' REFERENCES dbo.Customer (CustomerId)',
+ ');',
+ 'GO',
+ 'CREATE TABLE dbo.Product (',
+ ' ProductId INT IDENTITY(1,1) PRIMARY KEY,',
+ ' Sku VARCHAR(40) NOT NULL,',
+ ' UnitPrice DECIMAL(12,2) NOT NULL,',
+ ' CONSTRAINT UQ_Product_Sku UNIQUE (Sku)',
+ ');',
+ 'GO',
+ 'CREATE TABLE dbo.OrderHeader (',
+ ' OrderId INT IDENTITY(1,1) PRIMARY KEY,',
+ ' CustomerId INT NOT NULL,',
+ ' PlacedAt DATETIME2 NOT NULL DEFAULT (SYSUTCDATETIME()),',
+ ' Status VARCHAR(20) NOT NULL,',
+ ' CONSTRAINT FK_Order_Customer FOREIGN KEY (CustomerId)',
+ ' REFERENCES dbo.Customer (CustomerId),',
+ ' CONSTRAINT UQ_Order_Customer UNIQUE (CustomerId)',
+ ');',
+ 'GO',
+ 'CREATE TABLE dbo.OrderLine (',
+ ' OrderId INT NOT NULL,',
+ ' LineNo INT NOT NULL,',
+ ' ProductId INT NOT NULL,',
+ ' Quantity INT NOT NULL,',
+ ' CONSTRAINT PK_OrderLine PRIMARY KEY (OrderId, LineNo),',
+ ' CONSTRAINT FK_OrderLine_Order FOREIGN KEY (OrderId)',
+ ' REFERENCES dbo.OrderHeader (OrderId),',
+ ' CONSTRAINT FK_OrderLine_Product FOREIGN KEY (ProductId)',
+ ' REFERENCES dbo.Product (ProductId) ON DELETE CASCADE',
+ ');',
+ 'GO',
+ 'CREATE VIEW dbo.vOrderValue (OrderId, LineCount, TotalValue) AS',
+ ' SELECT OrderId, COUNT(*), SUM(1) FROM dbo.OrderLine GROUP BY OrderId;'
+].join('\n');
+/* 8 tables, 4 views. EMPLOYEE (table 2) and ORDERS (table 4) are related
+ through the employee who took the order. AUDIT_LOG and APP_SETTINGS are
+ standalone: nothing references them and they reference nothing. */
+var PROCFLOW_ERD_SAMPLE_DB2 = [
+ '/* DB2 schema sample — declared constraints only. */',
+ 'CREATE SCHEMA sales;',
+ '',
+ 'CREATE TABLE sales.department (',
+ ' dept_id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 10 INCREMENT BY 10),',
+ ' dept_name VARCHAR(80) NOT NULL,',
+ ' location VARCHAR(80),',
+ ' CONSTRAINT pk_department PRIMARY KEY (dept_id),',
+ ' CONSTRAINT uq_department_name UNIQUE (dept_name)',
+ ');',
+ '',
+ 'CREATE TABLE sales.employee (',
+ ' emp_id INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,',
+ ' dept_id INTEGER NOT NULL,',
+ ' manager_id INTEGER,',
+ ' full_name CHARACTER VARYING(120) NOT NULL,',
+ ' hired_on DATE NOT NULL DEFAULT CURRENT DATE,',
+ ' salary DECIMAL(11,2) NOT NULL,',
+ ' CONSTRAINT pk_employee PRIMARY KEY (emp_id),',
+ ' CONSTRAINT fk_employee_dept FOREIGN KEY (dept_id)',
+ ' REFERENCES sales.department (dept_id) ON DELETE RESTRICT,',
+ ' CONSTRAINT fk_employee_manager FOREIGN KEY (manager_id)',
+ ' REFERENCES sales.employee (emp_id) ON DELETE SET NULL',
+ ');',
+ '',
+ 'CREATE TABLE sales.customer (',
+ ' customer_id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,',
+ ' customer_name VARCHAR(120) NOT NULL,',
+ ' email VARCHAR(200) NOT NULL,',
+ ' country CHAR(2),',
+ ' CONSTRAINT pk_customer PRIMARY KEY (customer_id)',
+ ');',
+ '',
+ 'CREATE TABLE sales.orders (',
+ ' order_id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,',
+ ' customer_id INTEGER NOT NULL,',
+ ' emp_id INTEGER NOT NULL,',
+ ' order_date TIMESTAMP NOT NULL DEFAULT CURRENT TIMESTAMP,',
+ ' status VARCHAR(20) NOT NULL,',
+ ' CONSTRAINT pk_orders PRIMARY KEY (order_id),',
+ ' CONSTRAINT fk_orders_customer FOREIGN KEY (customer_id)',
+ ' REFERENCES sales.customer (customer_id) ON DELETE CASCADE,',
+ ' CONSTRAINT fk_orders_employee FOREIGN KEY (emp_id)',
+ ' REFERENCES sales.employee (emp_id) ON DELETE RESTRICT,',
+ ' CONSTRAINT ck_orders_status CHECK (status IN (\'OPEN\',\'SHIPPED\',\'CANCELLED\'))',
+ ');',
+ '',
+ 'CREATE TABLE sales.product (',
+ ' product_id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,',
+ ' sku VARCHAR(40) NOT NULL,',
+ ' product_name VARCHAR(160) NOT NULL,',
+ ' unit_price DECIMAL(9,2) NOT NULL,',
+ ' CONSTRAINT pk_product PRIMARY KEY (product_id)',
+ ');',
+ 'CREATE UNIQUE INDEX sales.uq_product_sku ON sales.product (sku);',
+ '',
+ 'CREATE TABLE sales.order_line (',
+ ' order_id INTEGER NOT NULL,',
+ ' line_no SMALLINT NOT NULL,',
+ ' product_id INTEGER NOT NULL,',
+ ' quantity INTEGER NOT NULL,',
+ ' unit_price DECIMAL(9,2) NOT NULL,',
+ ' CONSTRAINT pk_order_line PRIMARY KEY (order_id, line_no),',
+ ' CONSTRAINT fk_order_line_order FOREIGN KEY (order_id)',
+ ' REFERENCES sales.orders (order_id) ON DELETE CASCADE,',
+ ' CONSTRAINT fk_order_line_product FOREIGN KEY (product_id)',
+ ' REFERENCES sales.product (product_id) ON DELETE RESTRICT',
+ ');',
+ '',
+ '/* Standalone table 7: audit trail, no foreign keys in or out. */',
+ 'CREATE TABLE sales.audit_log (',
+ ' log_id BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY,',
+ ' message VARCHAR(500) NOT NULL,',
+ ' created_at TIMESTAMP NOT NULL DEFAULT CURRENT TIMESTAMP,',
+ ' CONSTRAINT pk_audit_log PRIMARY KEY (log_id)',
+ ');',
+ '',
+ '/* Standalone table 8: application settings, no foreign keys in or out. */',
+ 'CREATE TABLE sales.app_settings (',
+ ' setting_key VARCHAR(100) NOT NULL,',
+ ' setting_value VARCHAR(500),',
+ ' CONSTRAINT pk_app_settings PRIMARY KEY (setting_key)',
+ ');',
+ '',
+ 'CREATE VIEW sales.v_order_summary (order_id, customer_name, total_value) AS',
+ ' SELECT o.order_id, c.customer_name, SUM(l.quantity * l.unit_price)',
+ ' FROM sales.orders o',
+ ' JOIN sales.customer c ON c.customer_id = o.customer_id',
+ ' JOIN sales.order_line l ON l.order_id = o.order_id',
+ ' GROUP BY o.order_id, c.customer_name;',
+ '',
+ 'CREATE VIEW sales.v_employee_directory (emp_id, full_name, dept_name) AS',
+ ' SELECT e.emp_id, e.full_name, d.dept_name',
+ ' FROM sales.employee e',
+ ' JOIN sales.department d ON d.dept_id = e.dept_id;',
+ '',
+ 'CREATE VIEW sales.v_product_catalog (product_id, sku, product_name, unit_price) AS',
+ ' SELECT product_id, sku, product_name, unit_price FROM sales.product;',
+ '',
+ 'CREATE VIEW sales.v_audit_recent (log_id, message, created_at) AS',
+ ' SELECT log_id, message, created_at FROM sales.audit_log;'
+].join('\n');
+//# sourceMappingURL=erd.js.map
\ No newline at end of file
diff --git a/dist/src/erd.js.map b/dist/src/erd.js.map
new file mode 100644
index 0000000..2ff44cc
--- /dev/null
+++ b/dist/src/erd.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"erd.js","sourceRoot":"","sources":["../../src/erd.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/src/schema.js b/dist/src/schema.js
new file mode 100644
index 0000000..ee705ce
--- /dev/null
+++ b/dist/src/schema.js
@@ -0,0 +1,922 @@
+"use strict";
+/* ===== v2.1.0 ERD / schema foundation (DDL → declared constraint model) =====
+ Parses CREATE TABLE / CREATE VIEW / CREATE [UNIQUE] INDEX / ALTER TABLE
+ across T-SQL, PostgreSQL, DB2, and SQLite into a conservative schema IR for
+ the ERD page.
+
+ Honesty rules (matches the v2 accuracy contract):
+ - Only declared constraints become relationship edges. Nothing is inferred
+ from query text.
+ - Raw column type text is preserved verbatim (dialect types are not
+ normalized); the ERD treats type as a display attribute.
+ - Composite keys are grouped and never exploded into per-column edges.
+ - Unresolved foreign-key targets become explicit external entities with a
+ region-scoped diagnostic, never a silent drop.
+ - Entity, column, and key spans point back into the source DDL.
+
+ Views and CTAS tables without a declared column list have unknown columns;
+ that is reported, not invented. */
+var SCHEMA_IGNORED_CREATE = S([
+ 'PROCEDURE', 'PROC', 'FUNCTION', 'TRIGGER', 'SEQUENCE', 'SCHEMA', 'DATABASE',
+ 'TYPE', 'DOMAIN', 'EXTENSION', 'ROLE', 'USER', 'LOGIN', 'SYNONYM', 'TABLESPACE',
+ 'SERVER', 'PUBLICATION', 'SUBSCRIPTION', 'POLICY', 'RULE', 'AGGREGATE',
+ 'OPERATOR', 'CAST', 'LANGUAGE', 'COLLATION', 'STATISTICS', 'ASSEMBLY', 'XML',
+ 'CREDENTIAL', 'ENDPOINT', 'EVENT', 'FULLTEXT', 'MASTER', 'MESSAGE', 'PARTITION',
+ 'QUEUE', 'REMOTE', 'RESOURCE', 'SECURITY', 'SERVICE', 'SYMMETRIC', 'CERTIFICATE',
+ 'BROKER', 'CONTRACT', 'DIALOG', 'APPLICATION'
+]);
+/* Clause keywords that terminate a column's raw type text. `WITH`/`WITHOUT`
+ stay out so multi-word types like `timestamp with time zone` and
+ `character varying` are preserved. */
+var SCHEMA_STOP = S([
+ 'NOT', 'NULL', 'DEFAULT', 'PRIMARY', 'UNIQUE', 'REFERENCES', 'CHECK', 'CONSTRAINT',
+ 'GENERATED', 'IDENTITY', 'AUTO_INCREMENT', 'AUTOINCREMENT', 'COLLATE', 'COMMENT',
+ 'AS', 'ENCODE', 'INLINE', 'PERIOD', 'ON', 'MASKED', 'ROWGUIDCOL', 'SPARSE',
+ 'FILESTREAM', 'PERSISTED', 'STORED', 'VIRTUAL'
+]);
+function schemaUnquote(part) {
+ var s = part || '';
+ if (s.length >= 2) {
+ var a = s.charAt(0), b = s.charAt(s.length - 1);
+ if (a === '[' && b === ']')
+ s = s.slice(1, -1).replace(/\]\]/g, ']');
+ else if (a === '"' && b === '"')
+ s = s.slice(1, -1).replace(/""/g, '"');
+ else if (a === '`' && b === '`')
+ s = s.slice(1, -1).replace(/``/g, '`');
+ }
+ return s;
+}
+function schemaNormName(parts) {
+ return parts.map(schemaUnquote).join('.').replace(/\s+/g, ' ').trim().toUpperCase();
+}
+function schemaNormColumn(name) {
+ return String(name || '').toUpperCase();
+}
+function schemaIssue(ctx, severity, code, message, span) {
+ ctx.diagnostics.push({ severity: severity, code: code, message: message,
+ span: span, scope: 'region' });
+}
+function schemaSpan(start, end) {
+ return { start: start, end: Math.max(start + 1, end) };
+}
+/* A dotted identifier written with any of the supported quoting styles.
+ Returns unquoted parts so `[dbo].[Order]` and "dbo"."Order" compare equal. */
+function schemaIdent(toks, i) {
+ if (i >= toks.length || toks[i].type !== 'word')
+ return null;
+ var parts = [schemaUnquote(toks[i].v)];
+ var start = toks[i].pos, end = toks[i].end, j = i + 1;
+ while (j + 1 < toks.length && toks[j].v === '.' && toks[j + 1].type === 'word') {
+ parts.push(schemaUnquote(toks[j + 1].v));
+ end = toks[j + 1].end;
+ j += 2;
+ }
+ return { parts: parts, start: start, end: end, next: j };
+}
+/* Index after the parenthesis matching the one at `open`. */
+function schemaSkipParens(toks, open) {
+ var depth = 0, i = open;
+ while (i < toks.length) {
+ if (toks[i].v === '(')
+ depth++;
+ else if (toks[i].v === ')') {
+ depth--;
+ if (depth <= 0)
+ return i + 1;
+ }
+ i++;
+ }
+ return i;
+}
+function schemaSkipDefault(toks, i) {
+ var depth = 0;
+ while (i < toks.length) {
+ var t = toks[i];
+ if (t.v === '(') {
+ depth++;
+ i++;
+ continue;
+ }
+ if (t.v === ')') {
+ if (depth === 0)
+ break;
+ depth--;
+ i++;
+ continue;
+ }
+ if (depth === 0) {
+ if (t.v === ',')
+ break;
+ if (t.type === 'word' && SCHEMA_STOP[t.u])
+ break;
+ }
+ i++;
+ }
+ return i;
+}
+function schemaParseAction(toks, i) {
+ var words = [];
+ while (i < toks.length && toks[i].type === 'word' && words.length < 2) {
+ var u = toks[i].u;
+ if (words.length === 1 && /^(CASCADE|NULL|DEFAULT|ACTION)$/.test(u))
+ words.push(u);
+ else if (words.length === 0 && /^(CASCADE|RESTRICT|SET|NO)$/.test(u))
+ words.push(u);
+ else
+ break;
+ i++;
+ }
+ return { text: words.join(' '), end: i };
+}
+/* FOREIGN KEY / inline REFERENCES target with optional columns and actions. */
+function schemaParseReference(toks, i) {
+ if (!toks[i] || toks[i].type !== 'word' || toks[i].u !== 'REFERENCES')
+ return null;
+ var id = schemaIdent(toks, i + 1);
+ if (!id)
+ return null;
+ var target = { name: id.parts.join('.'),
+ columns: [],
+ resolution: 'opaque',
+ norm: schemaNormName(id.parts) };
+ var j = id.next;
+ if (toks[j] && toks[j].v === '(') {
+ var parsed = schemaParseColumns(toks, j);
+ if (parsed) {
+ target.columns = parsed.names;
+ j = parsed.end;
+ }
+ }
+ var onDelete, onUpdate, deferrable;
+ while (j < toks.length) {
+ var t = toks[j];
+ if (t.type === 'word' && t.u === 'ON' && toks[j + 1] && toks[j + 1].type === 'word' &&
+ (toks[j + 1].u === 'DELETE' || toks[j + 1].u === 'UPDATE')) {
+ var action = schemaParseAction(toks, j + 2);
+ if (toks[j + 1].u === 'DELETE')
+ onDelete = action.text;
+ else
+ onUpdate = action.text;
+ j = action.end;
+ continue;
+ }
+ if (t.type === 'word' && t.u === 'MATCH') {
+ j += 2;
+ continue;
+ }
+ if (t.type === 'word' && t.u === 'DEFERRABLE') {
+ deferrable = true;
+ j++;
+ continue;
+ }
+ if (t.type === 'word' && t.u === 'NOT' && toks[j + 1] && toks[j + 1].u === 'DEFERRABLE') {
+ deferrable = false;
+ j += 2;
+ continue;
+ }
+ if (t.type === 'word' && t.u === 'INITIALLY') {
+ j += 2;
+ continue;
+ }
+ break;
+ }
+ return { target: target, onDelete: onDelete, onUpdate: onUpdate,
+ deferrable: deferrable, end: j };
+}
+/* Comma-separated column list inside parentheses; returns names and the index
+ after the closing parenthesis. */
+function schemaParseColumns(toks, i) {
+ if (!toks[i] || toks[i].v !== '(')
+ return null;
+ var names = [], j = i + 1;
+ while (j < toks.length) {
+ var t = toks[j];
+ if (t.v === ')')
+ return { names: names, end: j + 1 };
+ if (t.v === ',') {
+ j++;
+ continue;
+ }
+ if (t.type === 'word') {
+ var id = schemaIdent(toks, j);
+ if (!id)
+ return null;
+ names.push(id.parts[id.parts.length - 1]);
+ j = id.next;
+ while (j < toks.length && toks[j].type === 'word' && (toks[j].u === 'ASC' || toks[j].u === 'DESC'))
+ j++;
+ continue;
+ }
+ return null;
+ }
+ return null;
+}
+function schemaAddEntity(ctx, entity) {
+ if (ctx.byKey[entity.id]) {
+ schemaIssue(ctx, 'warning', 'schema_duplicate_entity', 'Table or view "' + entity.name + '" is defined more than once; the first definition is kept.', entity.span);
+ return false;
+ }
+ ctx.byKey[entity.id] = entity;
+ ctx.entities.push(entity);
+ return true;
+}
+function schemaAddColumn(ctx, entity, col) {
+ if (entity.columns.some(function (c) { return schemaNormColumn(c.name) === schemaNormColumn(col.name); })) {
+ schemaIssue(ctx, 'warning', 'schema_duplicate_column', 'Column "' + col.name + '" appears more than once in "' + entity.name + '"; the first definition is kept.', col.span);
+ return;
+ }
+ entity.columns.push(col);
+}
+function schemaAddKey(entity, key) {
+ var signature = key.kind + '|' + key.columns.map(schemaNormColumn).join('|') + '|' +
+ (key.referenced ? key.referenced.norm : '');
+ var duplicate = entity.keys.some(function (existing) {
+ return existing.kind + '|' + existing.columns.map(schemaNormColumn).join('|') + '|' +
+ (existing.referenced ? existing.referenced.norm : '') === signature;
+ });
+ if (!duplicate)
+ entity.keys.push(key);
+}
+/* Split a statement on commas at the top level of the parentheses opened at
+ `open`. The opening parenthesis is not part of any item. */
+function schemaSplitItems(toks, open) {
+ var items = [], cur = [], depth = 1, i = open + 1;
+ while (i < toks.length) {
+ var t = toks[i];
+ if (t.v === '(')
+ depth++;
+ else if (t.v === ')') {
+ depth--;
+ if (depth === 0) {
+ if (cur.length)
+ items.push(cur);
+ return { items: items, end: i + 1 };
+ }
+ }
+ if (depth === 1 && t.v === ',') {
+ if (cur.length)
+ items.push(cur);
+ cur = [];
+ i++;
+ continue;
+ }
+ cur.push(t);
+ i++;
+ }
+ if (cur.length)
+ items.push(cur);
+ return { items: items, end: i };
+}
+/* Split a whole DDL document into statements. Semicolons and T-SQL `GO`
+ batches are authoritative; a new top-level CREATE/ALTER recovers when
+ semicolons are omitted, matching the parser's newline-independent goal. */
+function schemaStatements(toks) {
+ var out = [], cur = [], depth = 0;
+ function flush() {
+ if (cur.length)
+ out.push(cur);
+ cur = [];
+ }
+ for (var i = 0; i < toks.length; i++) {
+ var t = toks[i];
+ if (t.v === '(')
+ depth++;
+ else if (t.v === ')')
+ depth = Math.max(0, depth - 1);
+ if (depth === 0) {
+ if (t.v === ';') {
+ flush();
+ continue;
+ }
+ if (t.type === 'word' && t.u === 'GO') {
+ flush();
+ continue;
+ }
+ /* Missing-semicolon recovery: a new top-level CREATE/ALTER starts a
+ statement. Semicolons and GO remain authoritative. */
+ if (cur.length && t.type === 'word' && (t.u === 'CREATE' || t.u === 'ALTER'))
+ flush();
+ }
+ cur.push(t);
+ }
+ flush();
+ return out;
+}
+function schemaMarkPrimaryKey(entity, columns) {
+ columns.forEach(function (name) {
+ entity.columns.forEach(function (col) {
+ if (schemaNormColumn(col.name) === schemaNormColumn(name)) {
+ col.primaryKey = true;
+ col.nullable = false;
+ }
+ });
+ });
+}
+function schemaMarkUnique(entity, columns) {
+ if (columns.length !== 1)
+ return;
+ entity.columns.forEach(function (col) {
+ if (schemaNormColumn(col.name) === schemaNormColumn(columns[0]))
+ col.unique = true;
+ });
+}
+/* Column definition: name, raw type, inline constraints, inline FK. */
+function schemaParseColumnItem(ctx, entity, item, constraintName) {
+ if (!item.length || item[0].type !== 'word')
+ return;
+ var nameTok = item[0];
+ var col = {
+ name: schemaUnquote(nameTok.v),
+ type: '',
+ nullable: true,
+ primaryKey: false,
+ unique: false,
+ identity: false,
+ generated: false,
+ computed: false,
+ ordinal: entity.columns.length + 1,
+ span: schemaSpan(nameTok.pos, nameTok.end)
+ };
+ var i = 1, typeStart = -1, typeEnd = -1;
+ while (i < item.length) {
+ var t = item[i];
+ if (t.type === 'word' && SCHEMA_STOP[t.u])
+ break;
+ if (t.v === '(') {
+ var afterParen = schemaSkipParens(item, i);
+ if (typeStart >= 0 && afterParen > i)
+ typeEnd = item[afterParen - 1].end;
+ i = afterParen;
+ continue;
+ }
+ if (t.v === ',')
+ break;
+ if (typeStart < 0)
+ typeStart = t.pos;
+ typeEnd = t.end;
+ i++;
+ }
+ if (typeStart >= 0 && typeEnd > typeStart) {
+ col.type = ctx.text.slice(typeStart, typeEnd).replace(/\s+/g, ' ').trim();
+ if (/^(BIGSERIAL|SERIAL|SMALLSERIAL)$/i.test(col.type))
+ col.identity = true;
+ }
+ while (i < item.length) {
+ var c = item[i];
+ if (c.type === 'word' && c.u === 'CONSTRAINT') {
+ i += 2;
+ continue;
+ }
+ if (c.type === 'word' && c.u === 'NOT' && item[i + 1] && item[i + 1].u === 'NULL') {
+ col.nullable = false;
+ i += 2;
+ continue;
+ }
+ if (c.type === 'word' && c.u === 'NULL') {
+ col.nullable = true;
+ i++;
+ continue;
+ }
+ if (c.type === 'word' && c.u === 'DEFAULT') {
+ i = schemaSkipDefault(item, i + 1);
+ continue;
+ }
+ if (c.type === 'word' && c.u === 'PRIMARY' && item[i + 1] && item[i + 1].u === 'KEY') {
+ col.primaryKey = true;
+ col.nullable = false;
+ schemaAddKey(entity, { kind: 'pk', columns: [col.name], name: constraintName,
+ span: schemaSpan(c.pos, item[i + 1].end) });
+ i += 2;
+ continue;
+ }
+ if (c.type === 'word' && c.u === 'UNIQUE') {
+ col.unique = true;
+ schemaAddKey(entity, { kind: 'unique', columns: [col.name], name: constraintName,
+ span: schemaSpan(c.pos, c.end) });
+ i++;
+ continue;
+ }
+ if (c.type === 'word' && c.u === 'REFERENCES') {
+ var refStart = c;
+ var ref = schemaParseReference(item, i);
+ if (ref) {
+ schemaAddKey(entity, { kind: 'fk', columns: [col.name], name: constraintName,
+ referenced: ref.target, onDelete: ref.onDelete,
+ onUpdate: ref.onUpdate, deferrable: ref.deferrable,
+ span: schemaSpan(refStart.pos, item[ref.end - 1].end) });
+ i = ref.end;
+ }
+ else
+ i++;
+ continue;
+ }
+ if (c.type === 'word' && c.u === 'CHECK') {
+ i = schemaSkipParens(item, i + 1);
+ continue;
+ }
+ if (c.type === 'word' && c.u === 'GENERATED') {
+ var g = i + 1;
+ if (item[g] && item[g].type === 'word' && (item[g].u === 'ALWAYS' || item[g].u === 'BY')) {
+ if (item[g].u === 'BY') {
+ g++;
+ if (item[g] && item[g].u === 'DEFAULT')
+ g++;
+ if (item[g] && item[g].u === 'ON' && item[g + 1] && item[g + 1].u === 'NULL')
+ g += 2;
+ }
+ else
+ g++;
+ }
+ if (item[g] && item[g].u === 'AS') {
+ g++;
+ if (item[g] && item[g].u === 'IDENTITY') {
+ col.identity = true;
+ g = (item[g + 1] && item[g + 1].v === '(') ? schemaSkipParens(item, g + 1) : g + 1;
+ }
+ else if (item[g] && item[g].v === '(') {
+ col.generated = true;
+ g = schemaSkipParens(item, g);
+ }
+ }
+ else if (item[g] && item[g].u === 'IDENTITY') {
+ col.identity = true;
+ g = (item[g + 1] && item[g + 1].v === '(') ? schemaSkipParens(item, g + 1) : g + 1;
+ }
+ i = g;
+ continue;
+ }
+ if (c.type === 'word' && c.u === 'IDENTITY') {
+ col.identity = true;
+ i = (item[i + 1] && item[i + 1].v === '(') ? schemaSkipParens(item, i + 1) : i + 1;
+ continue;
+ }
+ if (c.type === 'word' && c.u === 'AUTO_INCREMENT') {
+ col.identity = true;
+ i++;
+ continue;
+ }
+ if (c.type === 'word' && c.u === 'AUTOINCREMENT') {
+ col.identity = true;
+ i++;
+ continue;
+ }
+ if (c.type === 'word' && c.u === 'COLLATE') {
+ i += 2;
+ continue;
+ }
+ if (c.type === 'word' && c.u === 'COMMENT') {
+ i += 2;
+ continue;
+ }
+ if (c.type === 'word' && c.u === 'AS' && item[i + 1] && item[i + 1].v === '(') {
+ col.computed = true;
+ i = schemaSkipParens(item, i + 1);
+ continue;
+ }
+ if (c.v === '(') {
+ i = schemaSkipParens(item, i);
+ continue;
+ }
+ i++;
+ }
+ col.span = schemaSpan(nameTok.pos, item[item.length - 1].end);
+ schemaAddColumn(ctx, entity, col);
+}
+/* PRIMARY KEY / UNIQUE / FOREIGN KEY / CHECK item inside a table body. */
+function schemaParseTableItem(ctx, entity, item, constraintName) {
+ if (!item.length)
+ return;
+ var i = 0, spanStart = item[0].pos;
+ if (item[0].type === 'word' && item[0].u === 'CONSTRAINT') {
+ if (item[1])
+ constraintName = schemaUnquote(item[1].v);
+ i = 2;
+ }
+ var head = item[i];
+ if (!head || head.type !== 'word') {
+ schemaParseColumnItem(ctx, entity, item, constraintName);
+ return;
+ }
+ var u = head.u;
+ if (u === 'PRIMARY' || u === 'UNIQUE') {
+ var kind = u === 'UNIQUE' ? 'unique' : 'pk';
+ var j = i + 1;
+ if (item[j] && item[j].u === 'KEY')
+ j++;
+ if (u === 'UNIQUE' && item[j] && (item[j].u === 'INDEX'))
+ j++;
+ if (item[j] && (item[j].u === 'CLUSTERED' || item[j].u === 'NONCLUSTERED'))
+ j++;
+ var cols = schemaParseColumns(item, j);
+ if (!cols) {
+ schemaIssue(ctx, 'warning', 'schema_unparsed_statement', 'Could not read the column list of a ' + u + ' constraint on "' + entity.name + '".', schemaSpan(spanStart, item[item.length - 1].end));
+ return;
+ }
+ var key = { kind: kind, columns: cols.names, name: constraintName,
+ span: schemaSpan(spanStart, item[item.length - 1].end) };
+ schemaAddKey(entity, key);
+ if (kind === 'pk')
+ schemaMarkPrimaryKey(entity, cols.names);
+ else
+ schemaMarkUnique(entity, cols.names);
+ return;
+ }
+ if (u === 'FOREIGN') {
+ var k = i + 1;
+ if (item[k] && item[k].u === 'KEY')
+ k++;
+ var fkCols = schemaParseColumns(item, k);
+ if (!fkCols || !item[fkCols.end] || item[fkCols.end].u !== 'REFERENCES') {
+ schemaIssue(ctx, 'warning', 'schema_unparsed_statement', 'Could not read a FOREIGN KEY constraint on "' + entity.name + '".', schemaSpan(spanStart, item[item.length - 1].end));
+ return;
+ }
+ var ref = schemaParseReference(item, fkCols.end);
+ if (!ref) {
+ schemaIssue(ctx, 'warning', 'schema_unparsed_statement', 'Could not read the REFERENCES target of a FOREIGN KEY on "' + entity.name + '".', schemaSpan(spanStart, item[item.length - 1].end));
+ return;
+ }
+ schemaAddKey(entity, { kind: 'fk', columns: fkCols.names, name: constraintName,
+ referenced: ref.target, onDelete: ref.onDelete,
+ onUpdate: ref.onUpdate, deferrable: ref.deferrable,
+ span: schemaSpan(spanStart, item[item.length - 1].end) });
+ return;
+ }
+ if (u === 'CHECK' || u === 'PERIOD' || u === 'LIKE' || u === 'INHERITS' || u === 'PARTITION' ||
+ u === 'DISTRIBUTE' || u === 'ORGANIZE' || u === 'EXCLUDE' || u === 'INDEX' || u === 'KEY' ||
+ u === 'FULLTEXT' || u === 'SPATIAL') {
+ return;
+ }
+ schemaParseColumnItem(ctx, entity, item, constraintName);
+}
+function schemaParseCreateTable(ctx, toks) {
+ var i = 1;
+ while (i < toks.length && toks[i].type === 'word' &&
+ (toks[i].u === 'TEMP' || toks[i].u === 'TEMPORARY' || toks[i].u === 'GLOBAL' ||
+ toks[i].u === 'LOCAL' || toks[i].u === 'UNLOGGED' || toks[i].u === 'VIRTUAL'))
+ i++;
+ if (!toks[i] || toks[i].u !== 'TABLE')
+ return false;
+ i++;
+ if (toks[i] && toks[i].u === 'IF' && toks[i + 1] && toks[i + 1].u === 'NOT' && toks[i + 2] && toks[i + 2].u === 'EXISTS')
+ i += 3;
+ var id = schemaIdent(toks, i);
+ if (!id) {
+ schemaIssue(ctx, 'warning', 'schema_unparsed_statement', 'Could not read the table name in a CREATE TABLE statement.', schemaSpan(toks[0].pos, toks[toks.length - 1].end));
+ return true;
+ }
+ var entity = {
+ id: schemaNormName(id.parts),
+ name: id.parts.join('.'),
+ schema: id.parts.length > 1 ? id.parts.slice(0, -1).join('.') : null,
+ kind: 'table',
+ columns: [],
+ keys: [],
+ unresolved: false,
+ span: schemaSpan(toks[0].pos, id.end)
+ };
+ if (toks[id.next] && toks[id.next].v === '(') {
+ var split = schemaSplitItems(toks, id.next);
+ split.items.forEach(function (item) { schemaParseTableItem(ctx, entity, item); });
+ if (split.end > 0 && toks[split.end - 1])
+ entity.span = schemaSpan(toks[0].pos, toks[split.end - 1].end);
+ }
+ else {
+ schemaIssue(ctx, 'info', 'schema_columns_unknown', 'Columns of "' + entity.name + '" are not declared in this DDL (CTAS or LIKE); the entity is shown without attributes.', schemaSpan(id.start, id.end));
+ }
+ schemaAddEntity(ctx, entity);
+ return true;
+}
+function schemaParseCreateView(ctx, toks) {
+ var i = 1;
+ while (i < toks.length && toks[i].type === 'word' &&
+ (toks[i].u === 'OR' || toks[i].u === 'REPLACE' || toks[i].u === 'MATERIALIZED' ||
+ toks[i].u === 'TEMP' || toks[i].u === 'TEMPORARY'))
+ i++;
+ if (!toks[i] || toks[i].u !== 'VIEW')
+ return false;
+ i++;
+ if (toks[i] && toks[i].u === 'IF' && toks[i + 1] && toks[i + 1].u === 'NOT' && toks[i + 2] && toks[i + 2].u === 'EXISTS')
+ i += 3;
+ var id = schemaIdent(toks, i);
+ if (!id) {
+ schemaIssue(ctx, 'warning', 'schema_unparsed_statement', 'Could not read the view name in a CREATE VIEW statement.', schemaSpan(toks[0].pos, toks[toks.length - 1].end));
+ return true;
+ }
+ var entity = {
+ id: schemaNormName(id.parts),
+ name: id.parts.join('.'),
+ schema: id.parts.length > 1 ? id.parts.slice(0, -1).join('.') : null,
+ kind: 'view',
+ columns: [],
+ keys: [],
+ unresolved: false,
+ span: schemaSpan(toks[0].pos, id.end)
+ };
+ var j = id.next;
+ if (toks[j] && toks[j].v === '(') {
+ var cols = schemaParseColumns(toks, j);
+ if (cols) {
+ cols.names.forEach(function (name, ordinal) {
+ entity.columns.push({ name: name, type: '', nullable: true, primaryKey: false,
+ unique: false, identity: false, generated: false, computed: false,
+ ordinal: ordinal + 1, span: schemaSpan(toks[j].pos, toks[j].end) });
+ });
+ j = cols.end;
+ }
+ }
+ if (toks[j] && toks[j].u === 'AS') {
+ entity.span = schemaSpan(toks[0].pos, toks[j].end);
+ if (!entity.columns.length) {
+ schemaIssue(ctx, 'info', 'schema_columns_unknown', 'Columns of view "' + entity.name + '" are not declared in this DDL; the view is shown without attributes.', schemaSpan(id.start, id.end));
+ }
+ }
+ schemaAddEntity(ctx, entity);
+ return true;
+}
+function schemaParseCreateIndex(ctx, toks) {
+ var i = 1, unique = false;
+ while (i < toks.length && toks[i].type === 'word' &&
+ (toks[i].u === 'UNIQUE' || toks[i].u === 'CLUSTERED' || toks[i].u === 'NONCLUSTERED' ||
+ toks[i].u === 'COLUMNSTORE')) {
+ if (toks[i].u === 'UNIQUE')
+ unique = true;
+ i++;
+ }
+ if (!toks[i] || toks[i].u !== 'INDEX')
+ return false;
+ i++;
+ if (toks[i] && toks[i].u === 'IF' && toks[i + 1] && toks[i + 1].u === 'NOT' && toks[i + 2] && toks[i + 2].u === 'EXISTS')
+ i += 3;
+ var name = schemaIdent(toks, i);
+ if (name)
+ i = name.next;
+ if (!toks[i] || toks[i].u !== 'ON')
+ return false;
+ var table = schemaIdent(toks, i + 1);
+ if (!table)
+ return false;
+ var cols = [];
+ if (toks[table.next] && toks[table.next].v === '(') {
+ var parsed = schemaParseColumns(toks, table.next);
+ if (parsed)
+ cols = parsed.names;
+ }
+ if (unique && cols.length) {
+ ctx.pendingIndexes.push({
+ tableNorm: schemaNormName(table.parts),
+ tableName: table.parts.join('.'),
+ columns: cols,
+ name: name ? name.parts.join('.') : undefined,
+ span: schemaSpan(toks[0].pos, toks[toks.length - 1].end)
+ });
+ }
+ return true;
+}
+function schemaParseAlterTable(ctx, toks) {
+ if (!toks[1] || toks[1].u !== 'TABLE')
+ return false;
+ var id = schemaIdent(toks, 2);
+ if (!id)
+ return false;
+ var entity = ctx.byKey[schemaNormName(id.parts)];
+ var i = id.next;
+ while (i < toks.length) {
+ if (toks[i].u !== 'ADD') {
+ /* ALTER/DROP/etc. actions do not change the declared entity model. */
+ while (i < toks.length && !(toks[i].v === ',' && true))
+ i++;
+ if (toks[i] && toks[i].v === ',') {
+ i++;
+ continue;
+ }
+ break;
+ }
+ i++;
+ if (toks[i] && toks[i].u === 'COLUMN')
+ i++;
+ /* Collect one ADD item up to the next depth-0 comma. */
+ var item = [], depth = 0;
+ while (i < toks.length) {
+ var t = toks[i];
+ if (t.v === '(')
+ depth++;
+ else if (t.v === ')')
+ depth = Math.max(0, depth - 1);
+ if (depth === 0 && t.v === ',')
+ break;
+ item.push(t);
+ i++;
+ }
+ if (!item.length)
+ continue;
+ if (!entity) {
+ schemaIssue(ctx, 'warning', 'schema_alter_unknown_table', 'ALTER TABLE targets "' + id.parts.join('.') + '", which is not defined in this DDL; the change is not applied.', schemaSpan(item[0].pos, item[item.length - 1].end));
+ if (toks[i] && toks[i].v === ',')
+ i++;
+ continue;
+ }
+ var head = item[0];
+ if (head.type === 'word' && (head.u === 'CONSTRAINT' || head.u === 'PRIMARY' ||
+ head.u === 'UNIQUE' || head.u === 'FOREIGN' || head.u === 'CHECK')) {
+ schemaParseTableItem(ctx, entity, item);
+ }
+ else {
+ schemaParseColumnItem(ctx, entity, item);
+ }
+ if (toks[i] && toks[i].v === ',')
+ i++;
+ }
+ return true;
+}
+function schemaParseStatement(ctx, toks) {
+ var head = toks[0];
+ if (!head || head.type !== 'word') {
+ schemaIssue(ctx, 'info', 'schema_ignored_statement', 'Statement is not a schema definition and was ignored.', schemaSpan(head ? head.pos : 0, toks[toks.length - 1].end));
+ return;
+ }
+ if (head.u === 'CREATE') {
+ var i = 1;
+ if (toks[i] && toks[i].u === 'OR')
+ i++;
+ if (toks[i] && toks[i].u === 'REPLACE')
+ i++;
+ if (toks[i] && (toks[i].u === 'INDEX' || toks[i].u === 'UNIQUE')) {
+ if (schemaParseCreateIndex(ctx, toks))
+ return;
+ }
+ var kind = toks[i] ? toks[i].u : '';
+ if (kind === 'TABLE') {
+ schemaParseCreateTable(ctx, toks);
+ return;
+ }
+ if (kind === 'VIEW') {
+ schemaParseCreateView(ctx, toks);
+ return;
+ }
+ if (SCHEMA_IGNORED_CREATE[kind])
+ return;
+ if (kind)
+ schemaIssue(ctx, 'info', 'schema_ignored_statement', 'CREATE ' + kind + ' is not part of the ERD schema model and was ignored.', schemaSpan(head.pos, toks[toks.length - 1].end));
+ return;
+ }
+ if (head.u === 'ALTER') {
+ if (schemaParseAlterTable(ctx, toks))
+ return;
+ return;
+ }
+ /* SET / USE / GO / INSERT / … are outside the schema model. */
+}
+/* Apply pending UNIQUE INDEX declarations once every entity is known. */
+function schemaApplyIndexes(ctx) {
+ ctx.pendingIndexes.forEach(function (index) {
+ var entity = ctx.byKey[index.tableNorm];
+ if (!entity)
+ return; /* defined nowhere; not an ERD claim */
+ if (entity.unresolved)
+ return;
+ entity.keys.push({ kind: 'unique', columns: index.columns, name: index.name,
+ span: index.span });
+ schemaMarkUnique(entity, index.columns);
+ });
+}
+/* True when the referencing column set is covered by any declared primary or
+ unique key (a unique key whose columns are a subset makes the FK rows
+ unique, so the relationship is one-to-one). */
+function schemaForeignKeyIsUnique(entity, fkColumns) {
+ var fk = fkColumns.map(schemaNormColumn);
+ if (!fk.length)
+ return false;
+ return entity.keys.some(function (key) {
+ if (key.kind === 'fk' || !key.columns.length)
+ return false;
+ var keyCols = key.columns.map(schemaNormColumn);
+ return keyCols.every(function (c) { return fk.indexOf(c) >= 0; });
+ });
+}
+function schemaEnsureExternal(ctx, ref, span) {
+ var id = 'external:' + ref.norm;
+ if (ctx.byKey[id])
+ return ctx.byKey[id];
+ var entity = {
+ id: id,
+ name: ref.name,
+ schema: null,
+ kind: 'table',
+ columns: [],
+ keys: [],
+ unresolved: true,
+ span: span
+ };
+ ctx.byKey[id] = entity;
+ ctx.entities.push(entity);
+ return entity;
+}
+/* Resolve every FOREIGN KEY against the defined entities and derive
+ relationships. Exact full-name matches win; a unique last-part match is a
+ labelled heuristic; anything else stays an explicit external entity. */
+function schemaResolve(ctx) {
+ var relationships = [], relIndex = 0;
+ ctx.entities.slice().forEach(function (entity) {
+ if (entity.unresolved)
+ return;
+ entity.keys.forEach(function (key) {
+ if (key.kind !== 'fk' || !key.referenced)
+ return;
+ var ref = key.referenced;
+ var target = ctx.byKey[ref.norm];
+ var resolution = 'opaque';
+ if (target) {
+ resolution = 'exact';
+ }
+ else {
+ var last = schemaNormColumn(ref.norm.split('.').pop() || '');
+ var candidates = ctx.entities.filter(function (candidate) {
+ if (candidate.unresolved)
+ return false;
+ var parts = candidate.id.split('.');
+ return parts[parts.length - 1] === last;
+ });
+ if (candidates.length === 1) {
+ target = candidates[0];
+ resolution = 'heuristic';
+ schemaIssue(ctx, 'warning', 'schema_unresolved_reference', 'Foreign key on "' + entity.name + '" references "' + ref.name + '"; resolved by name only to "' +
+ target.name + '" — verify schema qualification.', key.span);
+ }
+ else if (candidates.length > 1) {
+ schemaIssue(ctx, 'warning', 'schema_ambiguous_reference', 'Foreign key on "' + entity.name + '" references "' + ref.name + '", which matches ' + candidates.length +
+ ' tables; the relationship is not drawn.', key.span);
+ return;
+ }
+ }
+ if (!target) {
+ target = schemaEnsureExternal(ctx, ref, key.span);
+ schemaIssue(ctx, 'warning', 'schema_unresolved_reference', 'Foreign key on "' + entity.name + '" references "' + ref.name + '", which is not defined in this DDL; shown as an unresolved entity.', key.span);
+ }
+ ref.entityId = target.id;
+ ref.resolution = resolution;
+ var unique = schemaForeignKeyIsUnique(entity, key.columns);
+ var optional = key.columns.some(function (name) {
+ var col = entity.columns.filter(function (c) { return schemaNormColumn(c.name) === schemaNormColumn(name); })[0];
+ return !col || col.nullable;
+ });
+ var fromColumns = ref.columns.length ? ref.columns : target.keys
+ .filter(function (k) { return k.kind === 'pk'; })
+ .map(function (k) { return k.columns; })[0] || [];
+ relationships.push({
+ id: 'rel:' + (relIndex++),
+ fromId: target.id,
+ toId: entity.id,
+ fromColumns: fromColumns,
+ toColumns: key.columns,
+ cardinality: unique ? 'one-to-one' : 'one-to-many',
+ optional: optional,
+ unique: unique,
+ name: key.name,
+ resolution: resolution,
+ span: key.span
+ });
+ });
+ });
+ return relationships;
+}
+function schemaStats(result) {
+ var tables = 0, views = 0, columns = 0, unresolved = 0;
+ result.entities.forEach(function (entity) {
+ if (entity.unresolved)
+ unresolved++;
+ else if (entity.kind === 'view')
+ views++;
+ else
+ tables++;
+ columns += entity.columns.length;
+ });
+ return { tables: tables, views: views, columns: columns,
+ relationships: result.relationships.length, unresolved: unresolved };
+}
+/* Parse DDL text into the schema model. Declared constraints only. */
+function parseSchema(text) {
+ var source = String(text == null ? '' : text);
+ var toks = tokenize(source);
+ var ctx = { text: source, entities: [], byKey: {},
+ diagnostics: (toks.diagnostics || []).slice(),
+ pendingIndexes: [] };
+ if (source.trim()) {
+ schemaStatements(toks).forEach(function (statement) {
+ schemaParseStatement(ctx, statement);
+ });
+ schemaApplyIndexes(ctx);
+ }
+ else {
+ ctx.diagnostics.push({ severity: 'info', code: 'schema_empty',
+ message: 'Paste or import DDL to draw an entity relationship diagram.',
+ span: null, scope: 'document' });
+ }
+ var relationships = schemaResolve(ctx);
+ var result = { text: source, entities: ctx.entities,
+ relationships: relationships,
+ diagnostics: ctx.diagnostics, stats: null };
+ result.stats = schemaStats(result);
+ return result;
+}
+//# sourceMappingURL=schema.js.map
\ No newline at end of file
diff --git a/dist/src/schema.js.map b/dist/src/schema.js.map
new file mode 100644
index 0000000..b4f2999
--- /dev/null
+++ b/dist/src/schema.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/src/ui/erd-page.js b/dist/src/ui/erd-page.js
new file mode 100644
index 0000000..6bc365a
--- /dev/null
+++ b/dist/src/ui/erd-page.js
@@ -0,0 +1,384 @@
+"use strict";
+/* proc>flow v2.1.0 — ERD page controller.
+ Parses schema DDL into the shared schema IR and draws an entity map of
+ declared tables, views, and foreign keys. Declared constraints only: this
+ page never infers a relationship from query text. */
+(function () {
+ if (typeof document === 'undefined')
+ return;
+ var $ = function (id) { return document.getElementById(id); };
+ var sql = $('erd-sql'), gutter = $('erd-gutter'), msg = $('erd-msg'), cardsHost = $('erd-cards'), overlay = $('erd-overlay'), canvas = $('erd-canvas'), empty = $('erd-empty'), mermaidOut = $('erd-mermaid-out');
+ var result = null;
+ var cardEls = {};
+ var selectedId = null;
+ var renderSeq = 0;
+ function drawGutter() {
+ if (!gutter || !sql)
+ return;
+ var lines = sql.value.split('\n').length, out = '';
+ for (var i = 1; i <= lines; i++)
+ out += (i > 1 ? '\n' : '') + i;
+ gutter.textContent = out;
+ gutter.scrollTop = sql.scrollTop;
+ }
+ function setStat(id, value) {
+ var el = $(id);
+ if (el)
+ el.textContent = String(value);
+ }
+ function showDiagnostics() {
+ if (!msg || !result)
+ return;
+ msg.textContent = '';
+ msg.classList.remove('show', 'warn');
+ var list = result.diagnostics || [];
+ if (!list.length)
+ return;
+ var errors = list.filter(function (d) { return d.severity === 'error'; }).length;
+ msg.classList.add('show');
+ if (!errors)
+ msg.classList.add('warn');
+ list.forEach(function (d) {
+ var line = document.createElement('span');
+ line.className = 'diag' + (d.severity === 'info' ? ' info' : '');
+ line.textContent = d.message + (d.span ? ' (' + d.span.start + '–' + d.span.end + ')' : '');
+ msg.appendChild(line);
+ });
+ }
+ function relationCount(entityId) {
+ if (!result)
+ return 0;
+ return result.relationships.filter(function (rel) {
+ return rel.fromId === entityId || rel.toId === entityId;
+ }).length;
+ }
+ function buildCard(entity) {
+ var card = document.createElement('article');
+ card.className = 'erd-card' + (entity.unresolved ? ' unresolved' : '') +
+ (entity.kind === 'view' ? ' view' : '');
+ card.setAttribute('data-entity-id', entity.id);
+ var head = document.createElement('header');
+ var kind = document.createElement('span');
+ kind.className = 'erd-kind';
+ kind.textContent = entity.unresolved ? 'external' : entity.kind;
+ var title = document.createElement('h3');
+ title.textContent = entity.name;
+ head.appendChild(kind);
+ head.appendChild(title);
+ var count = relationCount(entity.id);
+ if (count) {
+ var badge = document.createElement('span');
+ badge.className = 'erd-relcount';
+ badge.title = count + ' declared relationship' + (count === 1 ? '' : 's');
+ badge.textContent = String(count);
+ head.appendChild(badge);
+ }
+ card.appendChild(head);
+ var list = document.createElement('ul');
+ list.className = 'erd-cols';
+ if (entity.columns.length) {
+ entity.columns.forEach(function (column) {
+ var row = document.createElement('li');
+ var name = document.createElement('span');
+ name.className = 'erd-col-name';
+ name.textContent = column.name;
+ var type = document.createElement('span');
+ type.className = 'erd-col-type';
+ type.textContent = column.type || '—';
+ type.title = column.type || 'no declared type';
+ var flags = document.createElement('span');
+ flags.className = 'erd-badges';
+ erdColumnKeys(entity, column).forEach(function (key) {
+ var tag = document.createElement('b');
+ tag.className = 'erd-badge erd-badge-' + key.toLowerCase();
+ tag.textContent = key;
+ flags.appendChild(tag);
+ });
+ if (column.identity) {
+ var idTag = document.createElement('b');
+ idTag.className = 'erd-badge erd-badge-id';
+ idTag.textContent = 'ID';
+ idTag.title = 'identity / auto-increment';
+ flags.appendChild(idTag);
+ }
+ if (column.generated || column.computed) {
+ var genTag = document.createElement('b');
+ genTag.className = 'erd-badge erd-badge-gen';
+ genTag.textContent = column.computed ? 'COMP' : 'GEN';
+ genTag.title = column.computed ? 'computed column' : 'generated column';
+ flags.appendChild(genTag);
+ }
+ if (!column.nullable) {
+ var nnTag = document.createElement('b');
+ nnTag.className = 'erd-badge erd-badge-nn';
+ nnTag.textContent = 'NN';
+ nnTag.title = 'not null';
+ flags.appendChild(nnTag);
+ }
+ row.appendChild(name);
+ row.appendChild(type);
+ row.appendChild(flags);
+ list.appendChild(row);
+ });
+ }
+ else {
+ var none = document.createElement('li');
+ none.className = 'erd-no-cols';
+ none.textContent = entity.unresolved ? 'referenced but not declared' : 'no declared columns';
+ list.appendChild(none);
+ }
+ card.appendChild(list);
+ card.addEventListener('click', function () {
+ selectedId = selectedId === entity.id ? null : entity.id;
+ Object.keys(cardEls).forEach(function (id) {
+ cardEls[id].classList.toggle('focus', id === selectedId);
+ });
+ drawOverlay();
+ });
+ return card;
+ }
+ function renderCards() {
+ if (!cardsHost || !result)
+ return;
+ cardEls = {};
+ cardsHost.textContent = '';
+ result.entities.forEach(function (entity) {
+ var card = buildCard(entity);
+ cardEls[entity.id] = card;
+ cardsHost.appendChild(card);
+ });
+ if (empty)
+ empty.hidden = result.entities.length > 0;
+ }
+ function entityBox(entityId) {
+ var el = cardEls[entityId], c = canvas;
+ if (!el || !c)
+ return null;
+ var r = el.getBoundingClientRect(), cr = c.getBoundingClientRect();
+ var left = r.left - cr.left + c.scrollLeft, top = r.top - cr.top + c.scrollTop;
+ return { left: left, top: top, right: left + r.width, bottom: top + r.height,
+ cx: left + r.width / 2, cy: top + r.height / 2 };
+ }
+ /* Intersection of the line from a box centre toward (tx, ty) with the box
+ edge, so relationship lines stop at the entity border. */
+ function edgePoint(box, tx, ty) {
+ var dx = tx - box.cx, dy = ty - box.cy;
+ if (!dx && !dy)
+ return { x: box.cx, y: box.cy };
+ var sx = dx ? Math.abs((box.right - box.left) / 2 / dx) : Infinity;
+ var sy = dy ? Math.abs((box.bottom - box.top) / 2 / dy) : Infinity;
+ var s = Math.min(sx, sy);
+ return { x: box.cx + dx * s, y: box.cy + dy * s };
+ }
+ function svgEl(name, attrs) {
+ var el = document.createElementNS('http://www.w3.org/2000/svg', name);
+ if (attrs)
+ Object.keys(attrs).forEach(function (k) { el.setAttribute(k, String(attrs[k])); });
+ return el;
+ }
+ function drawOverlay() {
+ if (!overlay || !canvas || !result)
+ return;
+ while (overlay.firstChild)
+ overlay.removeChild(overlay.firstChild);
+ var width = Math.max(cardsHost.scrollWidth + 40, canvas.clientWidth);
+ var height = Math.max(cardsHost.scrollHeight + 40, canvas.clientHeight);
+ overlay.setAttribute('width', String(width));
+ overlay.setAttribute('height', String(height));
+ overlay.setAttribute('viewBox', '0 0 ' + width + ' ' + height);
+ result.relationships.forEach(function (rel) {
+ var from = entityBox(rel.fromId), to = entityBox(rel.toId);
+ if (!from || !to)
+ return;
+ var focused = !selectedId || rel.fromId === selectedId || rel.toId === selectedId;
+ var dash = rel.resolution === 'exact' ? '' : (rel.resolution === 'heuristic' ? '7 4' : '2 4');
+ var color = rel.resolution === 'opaque' ? '#e4645e' :
+ (rel.resolution === 'heuristic' ? '#e8a33d' : '#7ea6e0');
+ var d, labelAt;
+ if (rel.fromId === rel.toId) {
+ var loopX = from.right + 10, loopY = from.cy;
+ d = 'M ' + from.right + ' ' + (from.top + 14) + ' C ' + (loopX + 34) + ' ' + (from.top - 14) + ', ' +
+ (loopX + 34) + ' ' + (from.bottom + 14) + ', ' + from.right + ' ' + (from.bottom - 14);
+ labelAt = [{ x: loopX + 30, y: from.top + 6 }, { x: loopX + 30, y: from.bottom - 4 }];
+ }
+ else {
+ var p1 = edgePoint(from, to.cx, to.cy), p2 = edgePoint(to, from.cx, from.cy);
+ var midX = (p1.x + p2.x) / 2;
+ d = 'M ' + p1.x + ' ' + p1.y + ' C ' + midX + ' ' + p1.y + ', ' + midX + ' ' + p2.y + ', ' + p2.x + ' ' + p2.y;
+ labelAt = [{ x: p1.x + (p2.x - p1.x) * 0.16, y: p1.y + (p2.y - p1.y) * 0.16 },
+ { x: p1.x + (p2.x - p1.x) * 0.84, y: p1.y + (p2.y - p1.y) * 0.84 }];
+ }
+ var path = svgEl('path', { d: d, fill: 'none', stroke: color, 'stroke-width': focused ? 2 : 1.4,
+ 'stroke-dasharray': dash, opacity: focused ? 0.95 : 0.18, 'stroke-linecap': 'round' });
+ path.setAttribute('data-relationship', rel.id);
+ overlay.appendChild(path);
+ var leftLabel = rel.optional ? '0..1' : '1', rightLabel = rel.unique ? '1' : 'N';
+ [{ text: leftLabel, at: labelAt[0] }, { text: rightLabel, at: labelAt[1] }].forEach(function (item) {
+ var text = svgEl('text', { x: item.at.x, y: item.at.y, fill: color, 'font-size': 10,
+ 'font-family': 'ui-monospace,Consolas,monospace', opacity: focused ? 1 : 0.25,
+ 'text-anchor': 'middle', 'dominant-baseline': 'middle' });
+ text.textContent = item.text;
+ overlay.appendChild(text);
+ });
+ });
+ }
+ function render() {
+ if (!sql)
+ return;
+ var text = sql.value;
+ result = parseSchema(text);
+ setStat('erd-tables', result.stats.tables);
+ setStat('erd-views', result.stats.views);
+ setStat('erd-columns', result.stats.columns);
+ setStat('erd-relationships', result.stats.relationships);
+ setStat('erd-unresolved', result.stats.unresolved);
+ setStat('erd-diagnostics', result.diagnostics.length);
+ selectedId = null;
+ renderCards();
+ showDiagnostics();
+ if (mermaidOut)
+ mermaidOut.textContent = toMermaidER(result);
+ var seq = ++renderSeq;
+ requestAnimationFrame(function () {
+ if (seq !== renderSeq)
+ return;
+ drawOverlay();
+ });
+ }
+ function schedule() {
+ if (scheduleTimer !== null)
+ clearTimeout(scheduleTimer);
+ scheduleTimer = setTimeout(render, 220);
+ }
+ var scheduleTimer = null;
+ function tab(which) {
+ var diagram = $('view-erd-diagram'), mermaid = $('view-erd-mermaid');
+ var diagramTab = $('tab-erd-diagram'), mermaidTab = $('tab-erd-mermaid');
+ if (!diagram || !mermaid || !diagramTab || !mermaidTab)
+ return;
+ var showDiagram = which === 'diagram';
+ diagram.classList.toggle('active', showDiagram);
+ mermaid.classList.toggle('active', !showDiagram);
+ diagramTab.setAttribute('aria-selected', String(showDiagram));
+ mermaidTab.setAttribute('aria-selected', String(!showDiagram));
+ if (showDiagram)
+ requestAnimationFrame(drawOverlay);
+ }
+ function flash(btn, word) {
+ if (!btn)
+ return;
+ var old = btn.textContent;
+ btn.textContent = word;
+ setTimeout(function () { btn.textContent = old; }, 1400);
+ }
+ function copyMermaid() {
+ var text = mermaidOut ? mermaidOut.textContent : '';
+ var done = function () { flash($('btn-erd-copy'), 'Copied'); };
+ if (navigator.clipboard && navigator.clipboard.writeText) {
+ navigator.clipboard.writeText(text).then(done, function () { fallbackCopy(text, done); });
+ }
+ else
+ fallbackCopy(text, done);
+ }
+ function fallbackCopy(text, done) {
+ var area = document.createElement('textarea');
+ area.value = text;
+ area.setAttribute('readonly', '');
+ area.style.position = 'absolute';
+ area.style.left = '-9999px';
+ document.body.appendChild(area);
+ area.select();
+ try {
+ document.execCommand('copy');
+ done();
+ }
+ catch (err) { /* clipboard unavailable */ }
+ document.body.removeChild(area);
+ }
+ if (sql) {
+ sql.value = '';
+ sql.addEventListener('input', schedule);
+ sql.addEventListener('scroll', function () { if (gutter)
+ gutter.scrollTop = sql.scrollTop; });
+ sql.addEventListener('keydown', function (event) {
+ if ((event.ctrlKey || event.metaKey) && event.key === 'Enter') {
+ event.preventDefault();
+ render();
+ }
+ });
+ }
+ var sample = $('btn-erd-sample');
+ if (sample)
+ sample.addEventListener('click', function () {
+ if (!sql)
+ return;
+ sql.value = PROCFLOW_ERD_SAMPLE_TSQL;
+ drawGutter();
+ render();
+ sql.focus();
+ });
+ var sampleDb2 = $('btn-erd-sample-db2');
+ if (sampleDb2)
+ sampleDb2.addEventListener('click', function () {
+ if (!sql)
+ return;
+ sql.value = PROCFLOW_ERD_SAMPLE_DB2;
+ drawGutter();
+ render();
+ sql.focus();
+ });
+ var clear = $('btn-erd-clear');
+ if (clear)
+ clear.addEventListener('click', function () {
+ if (!sql)
+ return;
+ sql.value = '';
+ drawGutter();
+ render();
+ sql.focus();
+ });
+ var draw = $('btn-erd-draw');
+ if (draw)
+ draw.addEventListener('click', render);
+ var copy = $('btn-erd-copy');
+ if (copy)
+ copy.addEventListener('click', copyMermaid);
+ var tabDiagram = $('tab-erd-diagram');
+ if (tabDiagram)
+ tabDiagram.addEventListener('click', function () { tab('diagram'); });
+ var tabMermaid = $('tab-erd-mermaid');
+ if (tabMermaid)
+ tabMermaid.addEventListener('click', function () { tab('mermaid'); });
+ var fileInput = $('erd-file-input');
+ var importBtn = $('btn-erd-import');
+ if (importBtn && fileInput)
+ importBtn.addEventListener('click', function () { fileInput.click(); });
+ if (fileInput)
+ fileInput.addEventListener('change', function () {
+ var files = Array.prototype.slice.call(fileInput.files || []);
+ if (!files.length)
+ return;
+ Promise.all(files.map(function (file) {
+ return file.text();
+ })).then(function (texts) {
+ if (!sql)
+ return;
+ var joined = sql.value.trim();
+ texts.forEach(function (text) {
+ joined = (joined ? joined + '\nGO\n' : '') + text;
+ });
+ sql.value = joined;
+ drawGutter();
+ render();
+ fileInput.value = '';
+ });
+ });
+ window.addEventListener('resize', function () { requestAnimationFrame(drawOverlay); });
+ if (typeof ResizeObserver !== 'undefined' && cardsHost) {
+ new ResizeObserver(function () { drawOverlay(); }).observe(cardsHost);
+ }
+ drawGutter();
+ render();
+ document.documentElement.setAttribute('data-procflow-ready', String(typeof parseSchema === 'function' && typeof toMermaidER === 'function'));
+})();
+//# sourceMappingURL=erd-page.js.map
\ No newline at end of file
diff --git a/dist/src/ui/erd-page.js.map b/dist/src/ui/erd-page.js.map
new file mode 100644
index 0000000..e1cb2fc
--- /dev/null
+++ b/dist/src/ui/erd-page.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"erd-page.js","sourceRoot":"","sources":["../../../src/ui/erd-page.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/tests/schema.js b/dist/tests/schema.js
new file mode 100644
index 0000000..3cb3bb5
--- /dev/null
+++ b/dist/tests/schema.js
@@ -0,0 +1,319 @@
+"use strict";
+/* proc>flow v2.1.0 — ERD / schema foundation fixtures.
+ DDL parsing across T-SQL, PostgreSQL, DB2, and SQLite: declared keys and
+ foreign keys only, composite-key grouping, raw type preservation,
+ conservative unresolved references, source spans, deterministic output,
+ and the Mermaid erDiagram export.
+
+ After this suite runs, PROCFLOW_SCHEMA_PASS and PROCFLOW_SCHEMA_RESULT gate
+ the golden suite (tests/tests.ts). */
+(function () {
+ var results = [];
+ var mermaidPassed = 0, mermaidTotal = 0;
+ function record(name, pass, detail) {
+ results.push({ name: name, pass: pass, detail: pass ? '' : detail });
+ }
+ function recordMermaid(name, pass, detail) {
+ mermaidTotal++;
+ if (pass)
+ mermaidPassed++;
+ record(name, pass, detail);
+ }
+ function has(list, value) {
+ return (list || []).some(function (v) { return v.toUpperCase() === value.toUpperCase(); });
+ }
+ function entity(result, id) {
+ return result.entities.filter(function (e) { return e.id === id.toUpperCase(); })[0] || null;
+ }
+ function column(result, id, name) {
+ var e = entity(result, id);
+ return e && e.columns.filter(function (c) { return c.name.toUpperCase() === name.toUpperCase(); })[0] || null;
+ }
+ function key(result, id, kind, columns) {
+ var e = entity(result, id);
+ if (!e)
+ return null;
+ return e.keys.filter(function (k) {
+ return k.kind === kind &&
+ k.columns.join('|').toUpperCase() === columns.join('|').toUpperCase();
+ })[0] || null;
+ }
+ function relationship(result, fromId, toId) {
+ return result.relationships.filter(function (r) {
+ return r.fromId.toUpperCase() === fromId.toUpperCase() &&
+ r.toId.toUpperCase() === toId.toUpperCase();
+ })[0] || null;
+ }
+ function spansValid(result) {
+ function ok(span) {
+ return !!span && span.start >= 0 && span.end > span.start && span.end <= result.text.length;
+ }
+ return result.entities.every(function (e) {
+ return ok(e.span) && e.columns.every(function (c) { return ok(c.span); }) &&
+ e.keys.every(function (k) { return ok(k.span); });
+ }) && result.relationships.every(function (r) { return ok(r.span); });
+ }
+ var TSQL = [
+ 'CREATE TABLE dbo.Student (',
+ ' StudentId INT IDENTITY(1,1) PRIMARY KEY,',
+ ' Name NVARCHAR(100) NOT NULL,',
+ ' MentorId INT NULL,',
+ ' CONSTRAINT FK_Student_Mentor FOREIGN KEY (MentorId)',
+ ' REFERENCES dbo.Student (StudentId) ON DELETE SET NULL',
+ ');',
+ 'GO',
+ 'CREATE TABLE dbo.Course (',
+ ' CourseId INT PRIMARY KEY,',
+ ' Title NVARCHAR(200) NOT NULL',
+ ');',
+ 'CREATE TABLE dbo.Enrollment (',
+ ' StudentId INT NOT NULL,',
+ ' CourseId INT NOT NULL,',
+ ' PRIMARY KEY (StudentId, CourseId),',
+ ' FOREIGN KEY (StudentId) REFERENCES dbo.Student (StudentId),',
+ ' FOREIGN KEY (CourseId) REFERENCES dbo.Course (CourseId)',
+ ');',
+ 'ALTER TABLE dbo.Student ADD CONSTRAINT UQ_Student_Name UNIQUE (Name);'
+ ].join('\n');
+ var PGSQL = [
+ 'CREATE TABLE public.customer (',
+ ' customer_id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,',
+ ' email text NOT NULL,',
+ ' CONSTRAINT uq_customer_email UNIQUE (email)',
+ ');',
+ 'CREATE TABLE public."Order" (',
+ ' "Order Id" serial PRIMARY KEY,',
+ ' "Customer Id" integer NOT NULL REFERENCES public.customer(customer_id) ON DELETE CASCADE,',
+ ' placed_at timestamp with time zone NOT NULL DEFAULT now(),',
+ ' total numeric(12,2) GENERATED ALWAYS AS (1) STORED,',
+ ' note text',
+ ');',
+ 'CREATE UNIQUE INDEX uq_order_customer ON public."Order" ("Customer Id");'
+ ].join('\n');
+ var SQLITE = [
+ 'CREATE TABLE IF NOT EXISTS gadget (',
+ ' id INTEGER PRIMARY KEY AUTOINCREMENT,',
+ ' label VARCHAR(50) NOT NULL UNIQUE,',
+ ' owner_id INTEGER REFERENCES owner(id),',
+ ' oddity TYPO_TYPE',
+ ');',
+ 'CREATE TABLE owner (id INTEGER PRIMARY KEY);'
+ ].join('\n');
+ var DB2 = [
+ 'CREATE TABLE sales (',
+ ' sale_id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,',
+ ' amount DECIMAL(31,0) NOT NULL,',
+ ' region VARCHAR(10),',
+ ' PRIMARY KEY (sale_id),',
+ ' FOREIGN KEY (region) REFERENCES region(code) ON DELETE SET NULL',
+ ');'
+ ].join('\n');
+ /* ---- T-SQL: declared keys, composite grouping, actions, ALTER ---- */
+ try {
+ var t = parseSchema(TSQL);
+ var enrollment = key(t, 'DBO.ENROLLMENT', 'pk', ['StudentId', 'CourseId']);
+ var mentorFk = key(t, 'DBO.STUDENT', 'fk', ['MentorId']);
+ var studentPk = key(t, 'DBO.STUDENT', 'pk', ['StudentId']);
+ var studentName = key(t, 'DBO.STUDENT', 'unique', ['Name']);
+ var selfRel = relationship(t, 'DBO.STUDENT', 'DBO.STUDENT');
+ var studentToEnrollment = relationship(t, 'DBO.STUDENT', 'DBO.ENROLLMENT');
+ var courseToEnrollment = relationship(t, 'DBO.COURSE', 'DBO.ENROLLMENT');
+ record('v2.1.0 T-SQL tables, composite PK, and declared FK relationships', t.stats.tables === 3 && t.stats.views === 0 && t.stats.columns === 7 &&
+ t.stats.relationships === 3 && t.stats.unresolved === 0 &&
+ !!enrollment && !!studentPk && !!studentName && !!mentorFk &&
+ !!selfRel && selfRel.optional === true && selfRel.cardinality === 'one-to-many' &&
+ !!studentToEnrollment && studentToEnrollment.optional === false &&
+ studentToEnrollment.toColumns.join(',') === 'StudentId' &&
+ !!courseToEnrollment && courseToEnrollment.resolution === 'exact' &&
+ mentorFk.onDelete === 'SET NULL' &&
+ !t.diagnostics.some(function (d) { return d.severity === 'error'; }), { stats: t.stats, diagnostics: t.diagnostics, keys: entity(t, 'DBO.ENROLLMENT') });
+ record('v2.1.0 T-SQL identity, NOT NULL, and composite column flags', !!column(t, 'DBO.STUDENT', 'StudentId') && column(t, 'DBO.STUDENT', 'StudentId').identity === true &&
+ column(t, 'DBO.STUDENT', 'StudentId').primaryKey === true &&
+ column(t, 'DBO.STUDENT', 'StudentId').nullable === false &&
+ column(t, 'DBO.STUDENT', 'MentorId').nullable === true &&
+ column(t, 'DBO.ENROLLMENT', 'StudentId').primaryKey === true &&
+ column(t, 'DBO.ENROLLMENT', 'CourseId').primaryKey === true &&
+ column(t, 'DBO.STUDENT', 'Name').type === 'NVARCHAR(100)', entity(t, 'DBO.STUDENT'));
+ record('v2.1.0 schema spans stay inside the source DDL', spansValid(t), t);
+ record('v2.1.0 DDL parsing is deterministic', JSON.stringify(t) === JSON.stringify(parseSchema(TSQL)), t);
+ }
+ catch (err) {
+ record('v2.1.0 T-SQL tables, composite PK, and declared FK relationships', false, String(err && err.stack || err));
+ record('v2.1.0 T-SQL identity, NOT NULL, and composite column flags', false, String(err && err.stack || err));
+ record('v2.1.0 schema spans stay inside the source DDL', false, String(err && err.stack || err));
+ record('v2.1.0 DDL parsing is deterministic', false, String(err && err.stack || err));
+ }
+ /* ---- PostgreSQL: quoting, serial/identity, generated, unique index ---- */
+ try {
+ var p = parseSchema(PGSQL);
+ var orderRel = relationship(p, 'PUBLIC.CUSTOMER', 'PUBLIC.ORDER');
+ record('v2.1.0 PostgreSQL quoted identifiers, serial, and unique-index one-to-one', p.stats.tables === 2 && p.stats.relationships === 1 &&
+ !!column(p, 'PUBLIC.ORDER', 'Order Id') &&
+ column(p, 'PUBLIC.ORDER', 'Order Id').identity === true &&
+ column(p, 'PUBLIC.ORDER', 'Order Id').primaryKey === true &&
+ column(p, 'PUBLIC.ORDER', 'Customer Id').type === 'integer' &&
+ !!orderRel && orderRel.cardinality === 'one-to-one' && orderRel.optional === false &&
+ orderRel.unique === true &&
+ orderRel.fromColumns.join(',') === 'customer_id' &&
+ orderRel.toColumns.join(',') === 'Customer Id' &&
+ !!key(p, 'PUBLIC.ORDER', 'unique', ['Customer Id']), { stats: p.stats, rel: orderRel, entity: entity(p, 'PUBLIC.ORDER') });
+ record('v2.1.0 PostgreSQL raw type fidelity and generated columns', column(p, 'PUBLIC.ORDER', 'placed_at').type === 'timestamp with time zone' &&
+ column(p, 'PUBLIC.ORDER', 'total').type === 'numeric(12,2)' &&
+ column(p, 'PUBLIC.ORDER', 'total').generated === true &&
+ column(p, 'PUBLIC.ORDER', 'total').computed === false, entity(p, 'PUBLIC.ORDER'));
+ }
+ catch (err) {
+ record('v2.1.0 PostgreSQL quoted identifiers, serial, and unique-index one-to-one', false, String(err && err.stack || err));
+ record('v2.1.0 PostgreSQL raw type fidelity and generated columns', false, String(err && err.stack || err));
+ }
+ /* ---- SQLite: affinities preserved, inline REFERENCES, AUTOINCREMENT ---- */
+ try {
+ var s = parseSchema(SQLITE);
+ var ownerRel = relationship(s, 'OWNER', 'GADGET');
+ record('v2.1.0 SQLite AUTOINCREMENT, inline REFERENCES, and raw affinity text', s.stats.tables === 2 && s.stats.relationships === 1 &&
+ column(s, 'GADGET', 'id').identity === true &&
+ column(s, 'GADGET', 'label').unique === true &&
+ column(s, 'GADGET', 'label').nullable === false &&
+ column(s, 'GADGET', 'oddity').type === 'TYPO_TYPE' &&
+ !!ownerRel && ownerRel.optional === true &&
+ ownerRel.fromColumns.join(',') === 'id' && ownerRel.toColumns.join(',') === 'owner_id', { stats: s.stats, rel: ownerRel, entity: entity(s, 'GADGET') });
+ }
+ catch (err) {
+ record('v2.1.0 SQLite AUTOINCREMENT, inline REFERENCES, and raw affinity text', false, String(err && err.stack || err));
+ }
+ /* ---- DB2: generated identity, precise types, unresolved target ---- */
+ try {
+ var d = parseSchema(DB2);
+ var sales = entity(d, 'SALES');
+ var regionRel = relationship(d, 'EXTERNAL:REGION', 'SALES');
+ record('v2.1.0 DB2 identity, DECIMAL precision, and explicit unresolved target', d.stats.tables === 1 && d.stats.unresolved === 1 && d.stats.relationships === 1 &&
+ column(d, 'SALES', 'sale_id').identity === true &&
+ column(d, 'SALES', 'sale_id').primaryKey === true &&
+ column(d, 'SALES', 'amount').type === 'DECIMAL(31,0)' &&
+ !!regionRel && regionRel.resolution === 'opaque' &&
+ d.diagnostics.some(function (x) { return x.code === 'schema_unresolved_reference'; }) &&
+ entity(d, 'SALES').unresolved === false, { stats: d.stats, rel: regionRel, diagnostics: d.diagnostics });
+ }
+ catch (err) {
+ record('v2.1.0 DB2 identity, DECIMAL precision, and explicit unresolved target', false, String(err && err.stack || err));
+ }
+ /* ---- Views and unknown-column honesty ---- */
+ try {
+ var v = parseSchema([
+ 'CREATE VIEW dbo.vActive (Id, Name) AS SELECT Id, Name FROM dbo.Student;',
+ 'CREATE VIEW dbo.vUnknown AS SELECT 1;'
+ ].join('\n'));
+ var known = entity(v, 'DBO.VACTIVE'), unknown = entity(v, 'DBO.VUNKNOWN');
+ record('v2.1.0 views keep declared columns and report unknown ones', v.stats.tables === 0 && v.stats.views === 2 &&
+ !!known && known.kind === 'view' && known.columns.length === 2 && known.keys.length === 0 &&
+ !!unknown && unknown.columns.length === 0 &&
+ v.diagnostics.some(function (x) { return x.code === 'schema_columns_unknown'; }), { stats: v.stats, diagnostics: v.diagnostics });
+ }
+ catch (err) {
+ record('v2.1.0 views keep declared columns and report unknown ones', false, String(err && err.stack || err));
+ }
+ /* ---- Conservative resolution: duplicate, anonymous ALTER, ambiguity ---- */
+ try {
+ var dup = parseSchema([
+ 'CREATE TABLE a (id INT PRIMARY KEY);',
+ 'CREATE TABLE a (id INT PRIMARY KEY);',
+ 'ALTER TABLE ghost ADD COLUMN x INT;'
+ ].join('\n'));
+ record('v2.1.0 duplicate entities and unknown ALTER targets are reported, not merged', dup.entities.length === 1 &&
+ dup.diagnostics.some(function (x) { return x.code === 'schema_duplicate_entity'; }) &&
+ dup.diagnostics.some(function (x) { return x.code === 'schema_alter_unknown_table'; }), { entities: dup.entities, diagnostics: dup.diagnostics });
+ var ambiguous = parseSchema([
+ 'CREATE TABLE s1.users (id INT PRIMARY KEY);',
+ 'CREATE TABLE s2.users (id INT PRIMARY KEY);',
+ 'CREATE TABLE t (id INT PRIMARY KEY, user_id INT REFERENCES users (id));'
+ ].join('\n'));
+ record('v2.1.0 ambiguous FK targets are never guessed into an edge', ambiguous.relationships.length === 0 &&
+ ambiguous.diagnostics.some(function (x) { return x.code === 'schema_ambiguous_reference'; }), { relationships: ambiguous.relationships, diagnostics: ambiguous.diagnostics });
+ var heuristic = parseSchema([
+ 'CREATE TABLE s1.users (id INT PRIMARY KEY);',
+ 'CREATE TABLE t (id INT PRIMARY KEY, user_id INT REFERENCES users (id));'
+ ].join('\n'));
+ var heuristicRel = heuristic.relationships[0];
+ record('v2.1.0 unqualified FK targets resolve by name with a labelled warning', !!heuristicRel && heuristicRel.resolution === 'heuristic' &&
+ heuristic.diagnostics.some(function (x) { return x.code === 'schema_unresolved_reference'; }), { relationships: heuristic.relationships, diagnostics: heuristic.diagnostics });
+ var empty = parseSchema('');
+ record('v2.1.0 empty DDL is reported, not treated as a schema', empty.entities.length === 0 && empty.stats.relationships === 0 &&
+ empty.diagnostics.some(function (x) { return x.code === 'schema_empty'; }), empty);
+ }
+ catch (err) {
+ record('v2.1.0 duplicate entities and unknown ALTER targets are reported, not merged', false, String(err && err.stack || err));
+ record('v2.1.0 ambiguous FK targets are never guessed into an edge', false, String(err && err.stack || err));
+ record('v2.1.0 unqualified FK targets resolve by name with a labelled warning', false, String(err && err.stack || err));
+ record('v2.1.0 empty DDL is reported, not treated as a schema', false, String(err && err.stack || err));
+ }
+ /* ---- Bundled DB2 ERD sample: 8 tables, 4 views, 6 relationships ---- */
+ try {
+ var db2Sample = parseSchema(PROCFLOW_ERD_SAMPLE_DB2);
+ function hasNoRelationships(id) {
+ return !db2Sample.relationships.some(function (rel) {
+ return rel.fromId === id || rel.toId === id;
+ });
+ }
+ record('v2.1.0 DB2 ERD sample parses 8 tables, 4 views, and 6 relationships', db2Sample.stats.tables === 8 && db2Sample.stats.views === 4 &&
+ db2Sample.stats.relationships === 6 && db2Sample.stats.unresolved === 0 &&
+ !!entity(db2Sample, 'SALES.AUDIT_LOG') && !!entity(db2Sample, 'SALES.APP_SETTINGS') &&
+ hasNoRelationships('SALES.AUDIT_LOG') && hasNoRelationships('SALES.APP_SETTINGS') &&
+ !!relationship(db2Sample, 'SALES.EMPLOYEE', 'SALES.ORDERS') &&
+ !!key(db2Sample, 'SALES.PRODUCT', 'unique', ['sku']) &&
+ !db2Sample.diagnostics.some(function (x) { return x.severity === 'error'; }), { stats: db2Sample.stats, diagnostics: db2Sample.diagnostics });
+ }
+ catch (err) {
+ record('v2.1.0 DB2 ERD sample parses 8 tables, 4 views, and 6 relationships', false, String(err && err.stack || err));
+ }
+ /* ---- Mermaid erDiagram export ---- */
+ try {
+ var tm = toMermaidER(parseSchema(TSQL));
+ recordMermaid('mermaid erDiagram declares entities with PK/FK/UK attributes', tm.indexOf('erDiagram') === 0 &&
+ tm.indexOf('DBO_STUDENT {') >= 0 &&
+ tm.indexOf('INT StudentId PK') >= 0 &&
+ tm.indexOf('INT MentorId FK') >= 0 &&
+ /DBO_ENROLLMENT \{\n(\s+.*\n)*?\s+\}/.test(tm) &&
+ tm.indexOf('StudentId PK, FK') >= 0 &&
+ tm.indexOf('Name UK') >= 0, tm);
+ recordMermaid('mermaid relationships encode declared cardinality and optionality', tm.indexOf('DBO_STUDENT o|--o{ DBO_STUDENT : FK_Student_Mentor') >= 0 &&
+ tm.indexOf('DBO_STUDENT ||--o{ DBO_ENROLLMENT') >= 0 &&
+ tm.indexOf('DBO_COURSE ||--o{ DBO_ENROLLMENT') >= 0, tm);
+ recordMermaid('mermaid provenance comments preserve original names and raw types', tm.indexOf('%% entity DBO_STUDENT = "dbo.Student" (table)') >= 0 &&
+ tm.indexOf('%% column DBO_STUDENT.Name : NVARCHAR(100)') >= 0 &&
+ tm.indexOf('%% relationship DBO_STUDENT -> DBO_ENROLLMENT') >= 0, tm);
+ var pg = toMermaidER(parseSchema(PGSQL));
+ recordMermaid('mermaid sanitizes identifiers and types, keeping raw text in a comment', pg.indexOf('timestamp_with_time_zone placed_at "timestamp with time zone"') >= 0 &&
+ pg.indexOf('Order_Id') >= 0 &&
+ pg.indexOf('PUBLIC_CUSTOMER ||--|| PUBLIC_ORDER') >= 0 &&
+ pg.indexOf('PUBLIC_ORDER {') >= 0, pg);
+ var db2 = toMermaidER(parseSchema(DB2));
+ recordMermaid('mermaid exports unresolved targets as explicit external entities', db2.indexOf('EXTERNAL_REGION') >= 0 &&
+ /EXTERNAL_REGION o\|--o\{ SALES/.test(db2) &&
+ db2.indexOf('%% entity EXTERNAL_REGION = "region"') >= 0, db2);
+ var collisions = toMermaidER(parseSchema([
+ 'CREATE TABLE a.b (id INT PRIMARY KEY);',
+ 'CREATE TABLE a_b (id INT PRIMARY KEY);'
+ ].join('\n')));
+ var idLines = collisions.split('\n').filter(function (line) {
+ return /\{/.test(line);
+ });
+ recordMermaid('mermaid entity identifiers are deterministic and collision-free', idLines.length === 2 && idLines[0].trim() !== idLines[1].trim() &&
+ idLines[0].trim() === 'A_B {' && idLines[1].trim() === 'A_B_2 {', collisions);
+ recordMermaid('mermaid export is deterministic', tm === toMermaidER(parseSchema(TSQL)), tm);
+ }
+ catch (err) {
+ recordMermaid('mermaid erDiagram declares entities with PK/FK/UK attributes', false, String(err && err.stack || err));
+ recordMermaid('mermaid relationships encode declared cardinality and optionality', false, String(err && err.stack || err));
+ recordMermaid('mermaid provenance comments preserve original names and raw types', false, String(err && err.stack || err));
+ recordMermaid('mermaid sanitizes identifiers and types, keeping raw text in a comment', false, String(err && err.stack || err));
+ recordMermaid('mermaid exports unresolved targets as explicit external entities', false, String(err && err.stack || err));
+ recordMermaid('mermaid entity identifiers are deterministic and collision-free', false, String(err && err.stack || err));
+ recordMermaid('mermaid export is deterministic', false, String(err && err.stack || err));
+ }
+ var passed = results.filter(function (r) { return r.pass; }).length;
+ window.PROCFLOW_SCHEMA_DETAIL = results;
+ window.PROCFLOW_SCHEMA_RESULT = { passed: passed, total: results.length,
+ mermaidPassed: mermaidPassed, mermaidTotal: mermaidTotal };
+ window.PROCFLOW_SCHEMA_PASS = passed === results.length;
+})();
+//# sourceMappingURL=schema.js.map
\ No newline at end of file
diff --git a/dist/tests/schema.js.map b/dist/tests/schema.js.map
new file mode 100644
index 0000000..d0927ec
--- /dev/null
+++ b/dist/tests/schema.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../tests/schema.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/tests/tests.js b/dist/tests/tests.js
index c41c77c..f42b314 100644
--- a/dist/tests/tests.js
+++ b/dist/tests/tests.js
@@ -894,6 +894,19 @@
catch (err) {
record('v2 adversarial semantic qualification matrix', false, String(err && err.stack || err));
}
+ /* v2.1.0: ERD / schema foundation — DDL parsing across the four dialects,
+ declared keys and foreign keys only, composite-key grouping, conservative
+ unresolved references, source spans, and the Mermaid erDiagram export run
+ ahead in tests/schema.ts; gate the whole golden page on them. */
+ try {
+ record('v2.1.0 ERD schema parse and Mermaid erDiagram fixtures', window.PROCFLOW_SCHEMA_PASS === true &&
+ !!window.PROCFLOW_SCHEMA_RESULT &&
+ window.PROCFLOW_SCHEMA_RESULT.passed === window.PROCFLOW_SCHEMA_RESULT.total &&
+ window.PROCFLOW_SCHEMA_RESULT.mermaidPassed === window.PROCFLOW_SCHEMA_RESULT.mermaidTotal, window.PROCFLOW_SCHEMA_DETAIL || window.PROCFLOW_SCHEMA_RESULT);
+ }
+ catch (err) {
+ record('v2.1.0 ERD schema parse and Mermaid erDiagram fixtures', false, String(err && err.stack || err));
+ }
var passed = results.filter(function (r) { return r.pass; }).length;
document.body.className = passed === results.length ? 'pass' : 'fail';
document.getElementById('summary').textContent = passed + '/' + results.length + ' tests passed';
diff --git a/dist/tests/tests.js.map b/dist/tests/tests.js.map
index a19cd9d..4271d07 100644
--- a/dist/tests/tests.js.map
+++ b/dist/tests/tests.js.map
@@ -1 +1 @@
-{"version":3,"file":"tests.js","sourceRoot":"","sources":["../../tests/tests.ts"],"names":[],"mappings":";AAAA,CAAC;IACC,IAAI,OAAO,GAAwD,EAAE,CAAC;IACtE,SAAS,MAAM,CAAC,IAAY,EAAE,IAAa,EAAE,MAAgB;QAC3D,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,MAAM,EAAC,IAAI,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,MAAM,EAAC,CAAC,CAAC;IAC9D,CAAC;IACD,SAAS,GAAG,CAAC,IAAc,EAAE,KAAa;QACxC,OAAO,CAAC,IAAI,IAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAS,CAAC,IAAG,OAAO,CAAC,CAAC,WAAW,EAAE,KAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,iBAAiB,CAAC,OAAO,CAAC,UAAS,CAAC;QAClC,IAAG,CAAC;YACF,IAAI,CAAC,GAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAC,EAAC,OAAO,EAAC,CAAC,CAAC,OAAO,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;YAC9E,IAAI,EAAE,GAAC,aAAa,CAAC,CAAC,EAAC,EAAC,EAAE,EAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,IAAI,EAAC,CAAC,CAAC,MAAM,CAAC,IAAI;gBAC3C,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,GAAG,EAAC,CAAC,CAAC,GAAG,EAAC,CAAC,CAAC;YAChD,IAAI,CAAC,GAAC,CAAC,CAAC,MAAM,EAAE,EAAE,GAAC,CAAC,CAAC,IAAI,KAAG,SAAS,IAAE,CAAC,CAAC,IAAI,KAAG,CAAC,CAAC,IAAI,CAAC;YACvD,IAAG,CAAC,CAAC,MAAM,KAAG,SAAS;gBAAE,EAAE,GAAC,EAAE,IAAE,CAAC,CAAC,KAAK,CAAC,MAAM,KAAG,CAAC,CAAC,MAAM,CAAC;YAC1D,IAAG,CAAC,CAAC,IAAI,KAAG,SAAS;gBAAE,EAAE,GAAC,EAAE,IAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAG,CAAC,CAAC,IAAI,CAAC;YACpD,IAAG,CAAC,CAAC,GAAG,KAAG,SAAS;gBAAE,EAAE,GAAC,EAAE,IAAE,CAAC,CAAC,KAAK,CAAC,GAAG,KAAG,CAAC,CAAC,GAAG,CAAC;YACjD,IAAG,CAAC,CAAC,IAAI,KAAG,SAAS;gBAAE,EAAE,GAAC,EAAE,IAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAG,CAAC,CAAC,IAAI,CAAC;YACpD,IAAG,CAAC,CAAC,MAAM,KAAG,SAAS;gBAAE,EAAE,GAAC,EAAE,IAAE,CAAC,CAAC,KAAK,CAAC,MAAM,KAAG,CAAC,CAAC,MAAM,CAAC;YAC1D,IAAG,CAAC,CAAC,IAAI,KAAG,SAAS;gBAAE,EAAE,GAAC,EAAE,IAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAG,CAAC,CAAC,IAAI,CAAC;YACpD,IAAG,CAAC,CAAC,MAAM,KAAG,SAAS;gBAAE,EAAE,GAAC,EAAE,IAAE,CAAC,CAAC,KAAK,CAAC,MAAM,KAAG,CAAC,CAAC,MAAM,CAAC;YAC1D,IAAG,CAAC,CAAC,IAAI;gBAAE,EAAE,GAAC,EAAE,IAAE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvC,IAAG,CAAC,CAAC,KAAK;gBAAE,EAAE,GAAC,EAAE,IAAE,GAAG,CAAC,EAAE,CAAC,MAAM,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAG,CAAC,CAAC,MAAM;gBAAE,EAAE,GAAC,EAAE,IAAE,GAAG,CAAC,EAAE,CAAC,MAAM,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAG,CAAC,CAAC,IAAI;gBAAE,EAAE,GAAC,EAAE,IAAE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvC,IAAG,CAAC,CAAC,KAAK;gBAAE,EAAE,GAAC,EAAE,IAAE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACzC,IAAG,CAAC,CAAC,MAAM;gBAAE,EAAE,GAAC,EAAE,IAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAG,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACnE,IAAG,CAAC,CAAC,UAAU,KAAG,SAAS;gBAAE,EAAE,GAAC,EAAE,IAAE,EAAE,CAAC,UAAU,CAAC,MAAM,KAAG,CAAC,CAAC,UAAU,CAAC;YACxE,IAAG,CAAC,CAAC,UAAU;gBAAE,EAAE,GAAC,EAAE,IAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,KAAG,CAAC,CAAC,UAAU,CAAC,CAAA,CAAC,CAAC,CAAC;YACvF,IAAG,CAAC,CAAC,QAAQ;gBAAE,EAAE,GAAC,EAAE,IAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,QAAQ,KAAG,OAAO,CAAC,CAAA,CAAC,CAAC,CAAC;YACrF,IAAG,CAAC,CAAC,WAAW,KAAG,SAAS;gBAAE,EAAE,GAAC,EAAE,IAAE,CAAC,CAAC,QAAQ,IAAE,CAAC,CAAC,WAAW,CAAC;YAC/D,IAAI,OAAO,GAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA,CAAC,CAAC,CAAC;YAChE,EAAE,GAAC,EAAE,IAAE,OAAO,CAAC,KAAK,CAAC,UAAS,CAAC;gBAC7B,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,IAAE,CAAC,IAAE,CAAC,CAAC,MAAM,CAAC,GAAG,GAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAE,CAAC,CAAC,MAAM,CAAC,GAAG,IAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YACpF,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,CAAC,CAAC,IAAI,EAAC,EAAE,EAAC,IAAI,CAAC,SAAS,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,KAAK,EAAC,WAAW,EAAC,CAAC,CAAC,WAAW,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,CAAC,CAAC;QACpF,CAAC;QAAA,OAAM,GAAG,EAAC,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAC,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;QAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,SAAS,YAAY,CAAC,KAAY,EAAE,IAAY,EAAE,UAAmB;QACnE,IAAI,OAAO,GAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAS,IAAI,IAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAE,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC;QACnF,IAAG,UAAU,KAAG,SAAS;YAAE,OAAO,OAAO,CAAC,UAAU,GAAC,CAAC,CAAC,IAAE,IAAI,CAAC;QAC9D,OAAO,OAAO,CAAC,MAAM,KAAG,CAAC,CAAA,CAAC,CAAA,OAAO,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC;IAC5C,CAAC;IACD,SAAS,YAAY,CAAC,KAAY,EAAE,QAA2B;QAC7D,IAAI,IAAI,GAAC,YAAY,CAAC,KAAK,EAAC,QAAQ,CAAC,QAAQ,EAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACvE,IAAI,EAAE,GAAC,YAAY,CAAC,KAAK,EAAC,QAAQ,CAAC,MAAM,EAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACjE,IAAG,CAAC,IAAI,IAAE,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAC5B,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAS,IAAI;YACnC,OAAO,IAAI,CAAC,IAAI,KAAG,IAAI,CAAC,EAAE,IAAE,IAAI,CAAC,EAAE,KAAG,EAAE,CAAC,EAAE;gBACzC,CAAC,QAAQ,CAAC,KAAK,KAAG,SAAS,IAAE,IAAI,CAAC,KAAK,KAAG,QAAQ,CAAC,KAAK,CAAC;gBACzD,CAAC,QAAQ,CAAC,KAAK,KAAG,SAAS,IAAE,IAAI,CAAC,KAAK,KAAG,QAAQ,CAAC,KAAK,CAAC;gBACzD,CAAC,QAAQ,CAAC,IAAI,KAAG,SAAS,IAAE,IAAI,CAAC,IAAI,KAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB,CAAC,OAAO,CAAC,UAAS,OAAO;QAC9C,IAAG,CAAC;YACF,IAAI,MAAM,GAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAC5B,EAAC,OAAO,EAAC,OAAO,CAAC,OAAO,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,CAAC,CAAC;YAC7E,IAAI,OAAO,GAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAS,IAAI;gBAC3D,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAC,IAAI,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,IAAI,UAAU,GAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,UAAS,IAAI;gBAC/D,OAAO,YAAY,CAAC,MAAM,CAAC,KAAK,EAAC,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YACH,IAAI,SAAS,GAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,IAAE,EAAE,CAAC,CAAC,MAAM,CAAC,UAAS,QAAQ;gBACtE,IAAI,IAAI,GAAC,OAAO,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,QAAQ,CAAA,CAAC,CAAA,QAAQ,CAAC,IAAI,CAAC;gBAC3D,IAAI,UAAU,GAAC,OAAO,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,SAAS,CAAA,CAAC,CAAA,QAAQ,CAAC,UAAU,CAAC;gBACxE,IAAI,IAAI,GAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAC,IAAI,EAAC,UAAU,CAAC,CAAC;gBACpD,OAAO,CAAC,IAAI,IAAE,CAAC,IAAI,CAAC,MAAM,IAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAC,CAAC;oBAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,IAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAE,IAAI,CAAC,MAAM,CAAC,GAAG,GAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YAC3E,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,CAAC,IAAI,GAAC,gBAAgB,EAClC,OAAO,CAAC,MAAM,KAAG,CAAC,IAAE,UAAU,CAAC,MAAM,KAAG,CAAC,IAAE,SAAS,CAAC,MAAM,KAAG,CAAC,EAC/D,IAAI,CAAC,SAAS,CAAC,EAAC,OAAO,EAAC,OAAO,EAAC,UAAU,EAAC,UAAU;gBACrC,SAAS,EAAC,SAAS,EAAC,KAAK,EAAC,MAAM,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;QAAA,OAAM,GAAG,EAAC,CAAC;YACV,MAAM,CAAC,OAAO,CAAC,IAAI,GAAC,gBAAgB,EAAC,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,uBAAuB,CAAC,OAAO,CAAC,UAAS,YAAY;QACnD,IAAG,CAAC;YACF,IAAI,WAAW,GAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EACtC,EAAC,OAAO,EAAC,YAAY,CAAC,OAAO,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;YACvE,IAAI,UAAU,GAAkD,EAAE,EAC9D,cAAc,GAAC,CAAC,CAAC;YACrB,SAAS,SAAS,CAAC,IAAS;gBAC1B,CAAC,IAAI,IAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAS,EAAE;oBAC5B,IAAG,EAAE,CAAC,IAAI,KAAG,MAAM,IAAE,EAAE,CAAC,IAAI,IAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAC,CAAC;wBAC5C,IAAI,EAAE,GAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,GAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;wBAChD,UAAU,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,EAAE,CAAC,GAAG,EAAC,GAAG,EAAC,EAAE,CAAC,GAAG;4BACvB,IAAI,EAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAC,EAAE,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC;oBAChE,CAAC;yBAAM,IAAG,EAAE,CAAC,IAAI,KAAG,OAAO;wBAAE,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;yBAC3C,IAAG,EAAE,CAAC,IAAI,KAAG,IAAI,EAAC,CAAC;wBACtB,IAAG,EAAE,CAAC,IAAI;4BAAE,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;wBAAC,IAAG,EAAE,CAAC,IAAI;4BAAE,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;oBACrE,CAAC;yBAAM,IAAG,EAAE,CAAC,IAAI,KAAG,MAAM,EAAC,CAAC;wBAC1B,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAS,CAAC,IAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACvD,IAAG,EAAE,CAAC,IAAI;4BAAE,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;oBACjC,CAAC;yBAAM,IAAG,CAAC,OAAO,EAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAE,CAAC,IAAE,EAAE,CAAC,IAAI;wBACpE,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;yBAClB,IAAG,EAAE,CAAC,IAAI,KAAG,KAAK,EAAC,CAAC;wBACvB,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;wBACnB,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAS,CAAC,IAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzD,CAAC;yBAAM,IAAG,EAAE,CAAC,IAAI,KAAG,SAAS,IAAE,EAAE,CAAC,IAAI;wBAAE,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/D,CAAC,CAAC,CAAC;YACL,CAAC;YACD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,UAAU,GAAC,UAAU,CAAC,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC;YAC3D,IAAI,UAAU,GAAC,UAAU,CAAC,MAAM,KAAG,YAAY,CAAC,UAAU,CAAC,MAAM;gBAC/D,UAAU,CAAC,KAAK,CAAC,UAAS,CAAC,EAAC,CAAC,IAAE,OAAO,CAAC,KAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC;YAC1E,IAAI,cAAc,GAAC,UAAU,CAAC,KAAK,CAAC,UAAS,CAAC;gBAC5C,OAAO,CAAC,CAAC,KAAK,IAAE,CAAC,IAAE,CAAC,CAAC,GAAG,GAAC,CAAC,CAAC,KAAK,IAAE,CAAC,CAAC,GAAG,IAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;YACnE,CAAC,CAAC,CAAC;YACH,IAAI,SAAS,GAAC,CAAC,YAAY,CAAC,UAAU;gBACpC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,KAAG,YAAY,CAAC,UAAU,CAAC,CAAA,CAAC,CAAC,CAAC;YACtF,MAAM,CAAC,YAAY,CAAC,IAAI,GAAC,qBAAqB,EAC5C,UAAU,IAAE,cAAc,IAAE,SAAS,EACrC,IAAI,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAC,YAAY,CAAC,UAAU,EAAC,MAAM,EAAC,UAAU;gBAClD,KAAK,EAAC,WAAW,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAA,OAAM,GAAG,EAAC,CAAC;YACV,MAAM,CAAC,YAAY,CAAC,IAAI,GAAC,qBAAqB,EAAC,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;QACpF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,4CAA4C,EACjD,CAAC,MAAM,CAAC,2BAA2B,IAAE,CAAC,CAAC,IAAE,EAAE,EAC3C,QAAQ,GAAC,CAAC,MAAM,CAAC,2BAA2B,IAAE,CAAC,CAAC,GAAC,kBAAkB,CAAC,CAAC;IAEvE,IAAG,CAAC;QACF,IAAI,UAAU,GAAC;YACb,qCAAqC;YACrC,OAAO;YACP,yCAAyC;YACzC,yCAAyC;YACzC,0CAA0C;YAC1C,QAAQ;YACR,gDAAgD;YAChD,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,IAAI,QAAQ,GAAC,OAAO,CAAC,UAAU,EAC7B,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,SAAS,GAAC,OAAO,CAAC,UAAU,EAC9B,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QAC1D,IAAI,OAAO,GAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,GAAG,KAAG,KAAK,CAAC,CAAA,CAAC,CAAC;aACzE,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC;QACpC,IAAI,WAAW,GAAC,QAAQ,CAAC,IAAI,KAAG,MAAM,IAAE,SAAS,CAAC,IAAI,KAAG,OAAO;YAC9D,QAAQ,CAAC,OAAO,KAAG,SAAS,CAAC,OAAO;YACpC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,GAAG,KAAG,MAAM,CAAC,CAAA,CAAC,CAAC;YAC9D,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,GAAG,KAAG,MAAM,CAAC,CAAA,CAAC,CAAC;YAChE,GAAG,CAAC,OAAO,EAAC,aAAa,CAAC,IAAE,GAAG,CAAC,OAAO,EAAC,qBAAqB,CAAC,CAAC;QACjE,MAAM,CAAC,8DAA8D,EACnE,WAAW,EAAC,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAC,QAAQ,CAAC,KAAK,EAAC,KAAK,EAAC,SAAS,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,8DAA8D,EACnE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,OAAO,GAAC,OAAO,CAAC,+DAA+D,EACjF,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,iEAAiE,EACtE,OAAO,CAAC,IAAI,KAAG,OAAO,IAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAG,CAAC;YACpD,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EACtD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,iEAAiE,EACtE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,kBAAkB,GAAC;YACrB,sDAAsD;YACtD,OAAO;YACP,4EAA4E;YAC5E,kDAAkD;YAClD,MAAM;SACP,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,IAAI,UAAU,GAAC,OAAO,CAAC,kBAAkB,EACvC,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,CAAC,CAAC;QACpE,IAAI,SAAS,GAAC,YAAY,CAAC,UAAU,CAAC,KAAK,EAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,UAAU,GAAC,YAAY,CAAC,UAAU,CAAC,KAAK,EAAC,aAAa,CAAC,CAAC;QAC5D,IAAI,aAAa,GAAC,YAAY,CAAC,UAAU,CAAC,KAAK,EAAC,kBAAkB,CAAC,CAAC;QACpE,IAAI,gBAAgB,GAAC,CAAC,CAAC,SAAS,IAAE,CAAC,CAAC,UAAU,IAAE,CAAC,CAAC,aAAa;YAC7D,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAS,IAAI;gBACvC,OAAO,IAAI,CAAC,IAAI,KAAG,aAAa,CAAC,EAAE,IAAE,IAAI,CAAC,EAAE,KAAG,SAAS,CAAC,EAAE,IAAE,IAAI,CAAC,KAAK,KAAG,KAAK,CAAC;YAClF,CAAC,CAAC,IAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAS,IAAI;YAC3C,OAAO,IAAI,CAAC,IAAI,KAAG,aAAa,CAAC,EAAE,IAAE,IAAI,CAAC,EAAE,KAAG,UAAU,CAAC,EAAE,IAAE,IAAI,CAAC,KAAK,KAAG,IAAI,CAAC;QAClF,CAAC,CAAC,IAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAS,IAAI;YAC5C,OAAO,IAAI,CAAC,IAAI,KAAG,SAAS,CAAC,EAAE,IAAE,IAAI,CAAC,EAAE,KAAG,UAAU,CAAC,EAAE,CAAC;QAC3D,CAAC,CAAC,CAAC;QACL,MAAM,CAAC,6DAA6D,EAClE,UAAU,CAAC,OAAO,KAAG,QAAQ,IAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,IAAE,gBAAgB,EAC9E,IAAI,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAC,UAAU,CAAC,QAAQ,EAAC,KAAK,EAAC,UAAU,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,6DAA6D,EAClE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;QACE,EAAC,IAAI,EAAC,iCAAiC,EAAC,GAAG,EAAC,YAAY,EAAC,IAAI,EAAC,sBAAsB,EAAC;QACrF,EAAC,IAAI,EAAC,gCAAgC,EAAC,GAAG,EAAC,gBAAgB,EAAC,IAAI,EAAC,qBAAqB,EAAC;QACvF,EAAC,IAAI,EAAC,iCAAiC,EAAC,GAAG,EAAC,mBAAmB,EAAC,IAAI,EAAC,sBAAsB,EAAC;QAC5F,EAAC,IAAI,EAAC,wBAAwB,EAAC,GAAG,EAAC,wCAAwC,EAAC,IAAI,EAAC,aAAa,EAAC;QAC/F,EAAC,IAAI,EAAC,6BAA6B,EAAC,GAAG,EAAC,eAAe,EAAC,IAAI,EAAC,kBAAkB;YAC9E,aAAa,EAAC,CAAC,EAAC,WAAW,EAAC,IAAI,EAAC;KACnC,CAAC,OAAO,CAAC,UAAS,CAAC;QAClB,IAAG,CAAC;YACF,IAAI,CAAC,GAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAC,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;YAC3E,IAAI,EAAE,GAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,KAAG,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC;YAChE,IAAG,CAAC,CAAC,aAAa,KAAG,SAAS;gBAAE,EAAE,GAAC,EAAE,IAAE,CAAC,CAAC,QAAQ,GAAC,CAAC,CAAC,aAAa,CAAC;YAClE,IAAG,CAAC,CAAC,WAAW;gBAAE,EAAE,GAAC,EAAE,IAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAS,IAAI;oBACvD,OAAO,IAAI,CAAC,GAAG,KAAG,QAAQ,IAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChE,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,CAAC,CAAC,IAAI,EAAC,EAAE,EAAC,IAAI,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,QAAQ,EAAC,WAAW,EAAC,CAAC,CAAC,WAAW,EAAC,CAAC,CAAC,CAAC;QACpF,CAAC;QAAA,OAAM,GAAG,EAAC,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAC,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;QAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,IAAG,CAAC;QACF,IAAI,MAAM,GAAC,aAAa,CAAC,CAAC,uBAAuB,CAAC,EAChD,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,IAAI,GAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,IAAI,EAAE,GAAC,MAAM,CAAC,OAAO,CAAC,MAAM,KAAG,CAAC,IAAE,IAAI;YACpC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAC,mBAAmB,CAAC,IAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAC,aAAa,CAAC;YACnE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAC,oBAAoB,CAAC,IAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAE,CAAC,CAAC;QACrE,MAAM,CAAC,sCAAsC,EAAC,EAAE,EAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACjF,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QAAC,MAAM,CAAC,sCAAsC,EAAC,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IAAC,CAAC;IAEhG,IAAG,CAAC;QACF,IAAI,WAAW,GAAC,qDAAqD;YACnE,qDAAqD,CAAC;QACxD,IAAI,cAAc,GAAC,OAAO,CAAC,WAAW,EACpC,EAAC,OAAO,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACxD,IAAI,cAAc,GAAC,aAAa,CAAC,CAAC,EAAC,IAAI,EAAC,cAAc,EAAC,IAAI,EAAC,WAAW,EAAC,CAAC,EACvE,EAAC,OAAO,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACxD,IAAI,cAAc,GAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,qEAAqE,EAC1E,CAAC,CAAC,cAAc,IAAE,cAAc,CAAC,KAAK,CAAC,MAAM,KAAG,CAAC,IAAE,cAAc,CAAC,KAAK,CAAC,MAAM,KAAG,CAAC;YAChF,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,KAAG,aAAa,CAAC,CAAA,CAAC,CAAC;YAC5E,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAS,CAAC;gBAAE,OAAO,CAAC,CAAC,GAAG,KAAG,QAAQ;oBACjE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAE,CAAC,CAAC;YAAA,CAAC,CAAC,EACxC,IAAI,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAC,cAAc,EAAC,MAAM,EAAC,cAAc,EAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,qEAAqE,EAC1E,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,WAAW,GAAC,kEAAkE,CAAC;QACnF,IAAI,aAAa,GAAC,kEAAkE;YAClF,iDAAiD,CAAC;QACpD,IAAI,WAAW,GAAC,aAAa,CAAC,CAAC,EAAC,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,WAAW,EAAC,CAAC,EAClE,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,aAAa,GAAC,aAAa,CAAC,CAAC,EAAC,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,aAAa,EAAC,CAAC,EACtE,EAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,yDAAyD,EAC9D,WAAW,CAAC,OAAO,CAAC,MAAM,KAAG,CAAC,IAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,KAAG,WAAW;YAC3E,aAAa,CAAC,OAAO,CAAC,MAAM,KAAG,CAAC,IAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,KAAG,aAAa,EACjF,IAAI,CAAC,SAAS,CAAC,EAAC,KAAK,EAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA,CAAC,CAAC;YAC5D,OAAO,EAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,yDAAyD,EAC9D,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,OAAO,GAAC,OAAO,CAAC,2CAA2C,EAC7D,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,GAAG,GAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAC,EAAC,KAAK,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,CAAC;QACvD,IAAI,GAAG,GAAC,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,GAAG,EAAC,iBAAiB,CAAC,CAAC;QAC/D,MAAM,CAAC,iCAAiC,EAAC,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,EACnE,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,IAAE,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,CAAC;IACzF,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QAAC,MAAM,CAAC,iCAAiC,EAAC,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IAAC,CAAC;IAE3F;;;;6EAIyE;IACzE,IAAG,CAAC;QACF,IAAI,QAAQ,GAAC,OAAO,CAAC,qCAAqC;YACxD,0CAA0C;YAC1C,eAAe;YACf,oCAAoC;YACpC,+BAA+B;YAC/B,aAAa;YACb,iBAAiB;YACjB,sEAAsE;YACtE,gBAAgB;YAChB,KAAK,EACL,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,CAAC,CAAC;QACpE,IAAI,gBAAgB,GAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC;QAC/E,IAAI,sBAAsB,GAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA,CAAC,CAAC,CAAC;QAC3F,IAAI,gBAAgB,GAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,KAAG,WAAW,CAAC,CAAA,CAAC,CAAC,CAAC;QAC1F,IAAI,cAAc,GAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,KAAG,SAAS,CAAC,CAAA,CAAC,CAAC,CAAC;QACtF,IAAI,WAAW,GAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,KAAG,MAAM,CAAC,CAAA,CAAC,CAAC,CAAC;QAChF,IAAI,cAAc,GAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,GAAC,CAAC,CAAC;QACxE,IAAI,oBAAoB,GAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,IAAE,QAAQ,CAAC,iBAAiB,CAAC,UAAU,GAAC,CAAC,CAAC;QAC/F,MAAM,CAAC,gDAAgD,EACrD,gBAAgB,IAAE,sBAAsB,IAAE,gBAAgB,IAAE,cAAc,IAAE,WAAW,EACvF,IAAI,CAAC,SAAS,CAAC,EAAC,KAAK,EAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC;YAC3D,KAAK,EAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,UAAU,CAAC,CAAA,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QACvF,MAAM,CAAC,iDAAiD,EACtD,cAAc,IAAE,oBAAoB,EACpC,IAAI,CAAC,SAAS,CAAC,EAAC,WAAW,EAAC,QAAQ,CAAC,WAAW,EAAC,iBAAiB,EAAC,QAAQ,CAAC,iBAAiB,EAAC,CAAC,CAAC,CAAC;IACrG,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,gDAAgD,EAAC,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;QAC3F,MAAM,CAAC,iDAAiD,EAAC,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,IAAG,CAAC;QACF,IAAI,UAAU,GAAC,OAAO,CAAC,uEAAuE,EAC5F,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QAC1D,IAAI,IAAI,GAAC,MAAM,CAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAmB,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,iBAAiB,GAAC,CAAC,CAAC,IAAI,CAAC,cAAc,IAAE,IAAI,CAAC,cAAc,CAAC,MAAM,IAAE,CAAC,CAAC;QAC3E,IAAI,aAAa,GAAC,iBAAiB,IAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAS,CAAC;YACvE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAE,CAAC,IAAE,CAAC,CAAC,IAAI,CAAC,GAAG,GAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5D,CAAC,CAAC,CAAC;QACH,IAAI,aAAa,GAAC,iBAAiB,IAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAS,CAAC;YACvE,OAAO,CAAC,CAAC,IAAI,KAAG,MAAM,IAAE,CAAC,CAAC,CAAC,UAAU,KAAG,OAAO,IAAE,CAAC,CAAC,UAAU,KAAG,WAAW,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,yDAAyD,EAC9D,iBAAiB,IAAE,aAAa,IAAE,aAAa,EAC/C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IACzC,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,yDAAyD,EAC9D,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,UAAU,GAAC,OAAO,CAAC,uCAAuC;YAC5D,eAAe;YACf,qBAAqB;YACrB,KAAK,EACL,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,OAAO,GAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,oBAAoB,GAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,MAAM,GAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAC,EAAC,KAAK,EAAC,YAAY,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,CAAC;QACpE,IAAI,aAAa,GAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,aAAa,GAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,CAAC,uDAAuD,EAC5D,oBAAoB,IAAE,aAAa,IAAE,aAAa,EAClD,IAAI,CAAC,SAAS,CAAC,EAAC,iBAAiB,EAAC,oBAAoB;YACtC,aAAa,EAAC,aAAa,EAAC,aAAa,EAAC,aAAa,EAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,uDAAuD,EAC5D,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,MAAM,GAAC,OAAO,CAAC,mBAAmB,EAAC,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QAC9F,IAAI,YAAY,GAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,KAAK,KAAG,QAAQ,CAAC,CAAA,CAAC,CAAC,CAAC;QACpF,IAAI,cAAc,GAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,KAAK,KAAG,UAAU,CAAC,CAAA,CAAC,CAAC,CAAC;QACxF,IAAI,SAAS,GAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,KAAK,KAAG,QAAQ,IAAE,CAAC,CAAC,KAAK,KAAG,UAAU,CAAC,CAAA,CAAC,CAAC,CAAC;QACtG,MAAM,CAAC,gDAAgD,EACrD,SAAS,IAAE,YAAY,CAAC,MAAM,GAAC,CAAC,EAChC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,KAAK,EAAC,CAAC,CAAC,KAAK,EAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,gDAAgD,EACrD,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,gFAAgF;IAChF,IAAG,CAAC;QACF,IAAI,EAAE,GAAC,QAAQ,CAAC,kDAAkD,CAAC,CAAC;QACpE,IAAI,QAAQ,GAAC,CAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,KAAK,EAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,KAAK,EAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,KAAK,EAAC;YACxE,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,KAAK,EAAC,EAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,KAAK,EAAC,EAAC,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC;QACvD,IAAI,YAAY,GAAC,QAAQ,CAAC,KAAK,CAAC,UAAS,GAAG;YAC1C,OAAO,EAAE,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,CAAC,KAAG,GAAG,CAAC,CAAC,IAAE,CAAC,CAAC,IAAI,KAAG,GAAG,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QACH,IAAI,UAAU,GAAC,EAAE,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,CAAC,KAAG,KAAK,IAAE,CAAC,CAAC,IAAI,KAAG,MAAM,CAAC,CAAA,CAAC,CAAC;YACvE,EAAE,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,CAAC,KAAG,GAAG,IAAE,CAAC,CAAC,IAAI,KAAG,MAAM,CAAC,CAAA,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,+CAA+C,EACpD,YAAY,IAAE,UAAU,EACxB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,CAAC,GAAC,GAAG,GAAC,CAAC,CAAC,IAAI,GAAC,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,+CAA+C,EACpD,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,GAAG,GAAC,OAAO,CAAC,WAAW,EAAC,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACnF,IAAI,SAAS,GAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAG,IAAI;YACpC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,UAAS,CAAC;gBAC7B,OAAO,CAAC,CAAC,IAAI,KAAG,mBAAmB,IAAE,CAAC,CAAC,KAAK,KAAG,UAAU,CAAC;YAC5D,CAAC,CAAC,IAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,KAAG,wBAAwB,CAAC,CAAA,CAAC,CAAC,CAAC;QACnF,MAAM,CAAC,0DAA0D,EAC/D,SAAS,EACT,IAAI,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAC,GAAG,CAAC,QAAQ,EAAC,WAAW,EAAC,GAAG,CAAC,WAAW,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,0DAA0D,EAC/D,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,SAAS,SAAS,CAAC,IAAuB;YACxC,OAAO,CAAC,CAAC,IAAI,IAAE,IAAI,CAAC,KAAK,IAAE,CAAC,IAAE,IAAI,CAAC,GAAG,GAAC,IAAI,CAAC,KAAK,CAAC;QACpD,CAAC;QACD,IAAI,UAAU,GAAC,OAAO,CAAC,YAAY,EAAC,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QAC3F,IAAI,QAAQ,GAAC,OAAO,CAAC,eAAe,EAAC,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QAC5F,IAAI,UAAU,GAAC,OAAO,CAAC,wCAAwC,EAC7D,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,YAAY,GAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAS,CAAC;YACrD,OAAO,CAAC,CAAC,IAAI,KAAG,sBAAsB,IAAE,CAAC,CAAC,KAAK,KAAG,QAAQ,IAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;QACH,IAAI,YAAY,GAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAS,CAAC;YACnD,OAAO,CAAC,CAAC,IAAI,KAAG,gBAAgB,IAAE,CAAC,CAAC,KAAK,KAAG,QAAQ,IAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QACH,IAAI,cAAc,GAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAS,CAAC;YACvD,OAAO,CAAC,CAAC,IAAI,KAAG,aAAa,IAAE,CAAC,CAAC,KAAK,KAAG,QAAQ,CAAC;QACpD,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,kDAAkD,EACvD,YAAY,IAAE,YAAY,IAAE,cAAc,EAC1C,IAAI,CAAC,SAAS,CAAC,EAAC,UAAU,EAAC,UAAU,CAAC,WAAW;YACjC,QAAQ,EAAC,QAAQ,CAAC,WAAW;YAC7B,UAAU,EAAC,UAAU,CAAC,WAAW,EAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,kDAAkD,EACvD,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,SAAS,GAAC,wFAAwF,CAAC;QACvG,IAAI,UAAU,GAAC,OAAO,CAAC,SAAS,EAC9B,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,MAAM,GAAC,aAAa,CAAC,UAAU,EACjC,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAC,IAAI,EAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,GAAG,EAAC,SAAS,EAAC,CAAC,CAAC;QAC3F,IAAI,YAAY,GAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAG,iBAAiB;YACzD,UAAU,CAAC,MAAM,CAAC,IAAI,KAAG,MAAM,IAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,QAAQ,GAAC;YACX,+CAA+C;YAC/C,4CAA4C;YAC5C,4DAA4D;SAC7D,CAAC,GAAG,CAAC,UAAS,GAAG;YAChB,OAAO,OAAO,CAAC,GAAG,EAAC,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC,MAAM,CAAC;QACnF,CAAC,CAAC,CAAC;QACH,IAAI,WAAW,GAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAG,WAAW,IAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAG,QAAQ;YACzE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAG,MAAM,IAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAG,QAAQ;YACtD,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAG,UAAU,IAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAG,QAAQ,CAAC;QAC7D,IAAI,UAAU,GACZ,oDAAoD;YACpD,mDAAmD,CAAC;QACtD,IAAI,UAAU,GAAC,aAAa,CAAC,CAAC,EAAC,IAAI,EAAC,WAAW,EAAC,IAAI,EAAC,UAAU,EAAC,CAAC,EAC/D,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,MAAM,GAAC,UAAU,CAAC,OAAO,CAAC,MAAM,KAAG,CAAC;YACtC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7C,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,4CAA4C,EACjD,YAAY,EAAC,IAAI,CAAC,SAAS,CAAC,EAAC,MAAM,EAAC,UAAU,CAAC,MAAM,EAAC,EAAE,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC;QACrE,MAAM,CAAC,uCAAuC,EAC5C,WAAW,EAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,iDAAiD,EACtD,MAAM,EAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,4CAA4C,EACjD,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,uCAAuC,EAC5C,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,iDAAiD,EACtD,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;mFAC+E;IAC/E,SAAS,QAAQ,CAAC,IAAuB;QACvC,OAAO,CAAC,CAAC,IAAI,IAAE,IAAI,CAAC,KAAK,IAAE,CAAC,IAAE,IAAI,CAAC,GAAG,GAAC,IAAI,CAAC,KAAK,CAAC;IACpD,CAAC;IACD,IAAG,CAAC;QACF,IAAI,SAAS,GAAC,OAAO,CAAC,6CAA6C,EACjE,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,WAAW,GAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,UAAS,CAAC;YACnD,OAAO,CAAC,CAAC,IAAI,KAAG,iBAAiB,IAAE,CAAC,CAAC,KAAK,KAAG,QAAQ,IAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QACH,IAAI,YAAY,GAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAS,CAAC;YACpD,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,oEAAoE,EACzE,WAAW,IAAE,YAAY,EACzB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,oEAAoE,EACzE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,OAAO,GAAC,4DAA4D,CAAC;QACzE,IAAI,QAAQ,GAAC,OAAO,CAAC,OAAO,EAC1B,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,SAAS,GAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,CAAC,CAAC;aACtF,KAAK,CAAC,UAAS,CAAC,IAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC;QAClD,IAAI,UAAU,GAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,CAAC,CAAC;aACnF,KAAK,CAAC,UAAS,CAAC,IAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,0DAA0D,EAC/D,SAAS,IAAE,UAAU,EACrB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,GAAG,EAAC,CAAC,CAAC,MAAM,EAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,0DAA0D,EAC/D,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,YAAY,GAAC,wCAAwC;YACvD,sDAAsD;YACtD,aAAa;YACb,KAAK,CAAC;QACR,IAAI,OAAO,GAAC,OAAO,CAAC,YAAY,EAC9B,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QAC1D,IAAI,UAAU,GAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,GAAG,KAAG,KAAK,CAAC,CAAA,CAAC,CAAC;aAC1E,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC;QACpC,IAAI,SAAS,GAAC,qDAAqD;YACjE,2DAA2D;YAC3D,gCAAgC;YAChC,cAAc;YACd,KAAK,CAAC;QACR,IAAI,MAAM,GAAC,OAAO,CAAC,SAAS,EAC1B,EAAC,OAAO,EAAC,KAAK,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,OAAO,GAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,GAAG,KAAG,KAAK,CAAC,CAAA,CAAC,CAAC;aACtE,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,iEAAiE,EACtE,GAAG,CAAC,UAAU,EAAC,aAAa,CAAC,IAAE,GAAG,CAAC,OAAO,EAAC,aAAa,CAAC;YACvD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAE,CAAC,IAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAE,CAAC,EAC7D,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAC,UAAU,EAAC,GAAG,EAAC,OAAO,EAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,iEAAiE,EACtE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,MAAM,GAAC,2CAA2C;YACpD,iDAAiD;YACjD,+BAA+B;YAC/B,cAAc;YACd,qDAAqD;YACrD,aAAa;YACb,iCAAiC;YACjC,mBAAmB;YACnB,KAAK,CAAC;QACR,IAAI,IAAI,GAAC,OAAO,CAAC,MAAM,EACrB,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,SAAS,GAAC,CAAC,uBAAuB,EAAC,SAAS,EAAC,SAAS,EAAC,QAAQ;YACjE,cAAc,EAAC,cAAc,CAAC,CAAC;QACjC,IAAI,KAAK,GAAC,SAAS,CAAC,KAAK,CAAC,UAAS,KAAK;YACtC,OAAO,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,oEAAoE,EACzE,KAAK,EACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,oEAAoE,EACzE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,EAAE,GAAC,OAAO,CAAC,4CAA4C,EACzD,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,SAAS,GAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAC,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,GAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,CAAC;QACnD,IAAI,KAAK,GAAC,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,KAAK,EAAC,iBAAiB,CAAC,CAAC;QACnE,IAAI,SAAS,GAAC,gDAAgD;YAC5D,kBAAkB;YAClB,6CAA6C;YAC7C,wBAAwB;YACxB,+BAA+B;YAC/B,UAAU;YACV,KAAK,CAAC;QACR,IAAI,EAAE,GAAC,OAAO,CAAC,SAAS,EACtB,EAAC,OAAO,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACxD,IAAI,SAAS,GAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAC,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,GAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,CAAC;QACnD,IAAI,KAAK,GAAC,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,KAAK,EAAC,iBAAiB,CAAC,CAAC;QACnE,MAAM,CAAC,8DAA8D,EACnE,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,IAAE,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC;YACtE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;YACxD,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAC5D,IAAI,CAAC,SAAS,CAAC,EAAC,EAAE,EAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC;gBACnD,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,WAAW;YAC9C,EAAE,EAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC;gBACnC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,WAAW,EAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,8DAA8D,EACnE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;kFAC8E;IAC9E,SAAS,QAAQ,CAAC,IAAuB;QACvC,OAAO,CAAC,CAAC,IAAI,IAAE,IAAI,CAAC,KAAK,IAAE,CAAC,IAAE,IAAI,CAAC,GAAG,GAAC,IAAI,CAAC,KAAK,CAAC;IACpD,CAAC;IACD,SAAS,QAAQ,CAAC,IAAgC,EAAE,IAAY;QAC9D,OAAO,CAAC,IAAI,IAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA,CAAC,CAAC,CAAC;IACzF,CAAC;IACD,SAAS,QAAQ,CAAC,GAAW,EAAE,OAAgB;QAC7C,IAAI,CAAC,GAAC,OAAO,CAAC,GAAG,EAAC,EAAC,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,OAAO,EAAE,KAAK,EAAC,KAAK,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QAC9E,IAAI,IAAI,GAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,KAAG,MAAM,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAkB,CAAC;QAChF,OAAO,MAAM,CAAC,IAAI,CAAA,CAAC,CAAA,IAAI,CAAC,IAAI,CAAA,CAAC,CAAA,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,OAAO,GAAC,QAAQ,CAAC,2DAA2D,EAAC,MAAM,CAAC,CAAC;QACzF,IAAI,YAAY,GAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC;QACzE,IAAI,SAAS,GAAC,YAAY,CAAC,MAAM,IAAE,CAAC;YAClC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAC,YAAY,CAAC;YAC7C,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAC,eAAe,CAAC;YAChD,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAC,WAAW,CAAC;YAC5C,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,UAAS,CAAC;gBACrC,OAAO,CAAC,CAAC,IAAI,KAAG,MAAM,IAAE,CAAC,CAAC,UAAU,KAAG,OAAO,IAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACL,MAAM,CAAC,0CAA0C,EAC/C,SAAS,EAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IACtD,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,0CAA0C,EAAC,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,IAAG,CAAC;QACF,IAAI,OAAO,GAAC,QAAQ,CAAC,sDAAsD,EAAC,MAAM,CAAC,CAAC;QACpF,IAAI,KAAK,GAAC,QAAQ,CAAC,kDAAkD,EAAC,SAAS,CAAC,CAAC;QACjF,IAAI,OAAO,GAAC,CAAC,OAAO,CAAC,cAAc,IAAE,EAAE,CAAC,CAAC,MAAM,CAAC,UAAS,CAAC;YACxD,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAG,QAAQ,CAAC;QAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,WAAW,GAAC,CAAC,KAAK,CAAC,cAAc,IAAE,EAAE,CAAC,CAAC,MAAM,CAAC,UAAS,CAAC;YAC1D,OAAO,CAAC,CAAC,UAAU,KAAG,QAAQ,CAAC;QAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,SAAS,GAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAC,OAAO,CAAC;YACpD,CAAC,CAAC,OAAO,IAAE,OAAO,CAAC,UAAU,KAAG,WAAW,IAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,OAAO,GAAC,CAAC,CAAC,WAAW,IAAE,WAAW,CAAC,IAAI,KAAG,MAAM,IAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACjF,MAAM,CAAC,6DAA6D,EAClE,SAAS,IAAE,OAAO,EAClB,IAAI,CAAC,SAAS,CAAC,EAAC,KAAK,EAAC,OAAO,CAAC,cAAc,EAAC,GAAG,EAAC,KAAK,CAAC,cAAc,EAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,6DAA6D,EAClE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,WAAW,GAAC,UAAS,GAAW,EAAE,OAAgB;YACpD,IAAI,CAAC,GAAC,OAAO,CAAC,GAAG,EAAC,EAAC,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,OAAO,EAAE,KAAK,EAAC,KAAK,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC;QACF,IAAI,OAAO,GAAC,WAAW,CAAC,+FAA+F,EAAC,MAAM,CAAC,CAAC;QAChI,IAAI,KAAK,GAAC,WAAW,CAAC,2EAA2E,EAAC,SAAS,CAAC,CAAC;QAC7G,IAAI,KAAK,GAAC,WAAW,CAAC,oEAAoE,EAAC,MAAM,CAAC,CAAC;QACnG,IAAI,QAAQ,GAAC,OAAO,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,KAAG,YAAY,CAAC,CAAA,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,KAAG,eAAe,CAAC,CAAA,CAAC,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,KAAG,OAAO,CAAC,CAAA,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,iEAAiE,EACtE,QAAQ,EAAC,IAAI,CAAC,SAAS,CAAC,EAAC,KAAK,EAAC,OAAO,EAAC,GAAG,EAAC,KAAK,EAAC,GAAG,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,iEAAiE,EACtE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,KAAK,GAAC,OAAO,CAAC,2FAA2F,EAC3G,EAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QAC7D,IAAI,SAAS,GAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,KAAG,eAAe,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,IAAI,YAAY,GAAC,CAAC,CAAC,SAAS,IAAE,SAAS,CAAC,QAAQ,KAAG,MAAM;YACvD,SAAS,CAAC,KAAK,KAAG,QAAQ,IAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,WAAW,GAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,UAAS,CAAC;YAChD,OAAO,CAAC,CAAC,IAAI,KAAG,sBAAsB,CAAC;QAAA,CAAC,CAAC,CAAC;QAC5C,IAAI,WAAW,GAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAS,CAAC;YAC/C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAAA,CAAC,CAAC,IAAE,KAAK,CAAC,KAAK,CAAC,SAAS,KAAG,CAAC,CAAC;QACpE,IAAI,QAAQ,GAAC,OAAO,CAAC,+GAA+G,EAClI,EAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QAC7D,IAAI,YAAY,GAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAS,CAAC;YACnD,OAAO,CAAC,CAAC,IAAI,KAAG,sBAAsB,IAAE,CAAC,CAAC,QAAQ,KAAG,SAAS,IAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,4DAA4D,EACjE,YAAY,IAAE,WAAW,IAAE,WAAW,EACtC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,8CAA8C,EAAE,YAAY,EACjE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1C,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,4DAA4D,EACjE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,8CAA8C,EACnD,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,SAAS,GAAC,OAAO,CAAC,gDAAgD,EACpE,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QAC1D,IAAI,QAAQ,GAAC,OAAO,CAAC,6BAA6B,EAChD,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QAC1D,IAAI,WAAW,GAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,KAAG,WAAW,CAAC,CAAA,CAAC,CAAC,CAAC;QACtF,IAAI,UAAU,GAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,KAAG,OAAO,CAAC,CAAA,CAAC,CAAC;YAC7E,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAG,CAAC,CAAC;QAClC,MAAM,CAAC,mEAAmE,EACxE,WAAW,IAAE,UAAU,EACvB,IAAI,CAAC,SAAS,CAAC,EAAC,OAAO,EAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC;YAC9D,KAAK,EAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACnF,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,mEAAmE,EACxE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,OAAO,GAAC;YACV,0EAA0E;YAC1E,qEAAqE;YACrE,+FAA+F;YAC/F,6CAA6C;SAC9C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,IAAI,IAAI,GAAC,OAAO,CAAC,OAAO,EACtB,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QAC1D,IAAI,GAAG,GAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAC,IAAI,CAAC,CAAC;QACnC,IAAI,GAAG,GAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAC,EAAC,KAAK,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,CAAC;QACrD,IAAI,KAAK,GAAC,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,GAAG,EAAC,iBAAiB,CAAC,CAAC;QACjE,IAAI,iBAAiB,GAAC,CAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAC,YAAY,EAAC,WAAW,CAAC,CAAC,KAAK,CAC7E,UAAS,IAAI,IAAE,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAE,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAC,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,IAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YACrE,iBAAiB,IAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzE,MAAM,CAAC,mDAAmD,EACxD,QAAQ,EAAC,IAAI,CAAC,SAAS,CAAC,EAAC,WAAW,EAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC;gBACrE,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,WAAW,EAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,mDAAmD,EACxD,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;iDAE6C;IAC7C,IAAI,cAAc,GAAC;QACjB,oCAAoC;QACpC,OAAO;QACP,0CAA0C;QAC1C,kCAAkC;QAClC,0BAA0B;QAC1B,KAAK;KACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,IAAG,CAAC;QACF,IAAI,YAAY,GAAC,aAAa,CAAC,CAAC,EAAC,IAAI,EAAC,SAAS,EAAC,IAAI,EAAC;oBACnD,sCAAsC;oBACtC,OAAO;oBACP,2CAA2C;oBAC3C,6DAA6D;oBAC7D,KAAK;iBACN,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC,EAAC,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACtE,IAAI,WAAW,GAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC;QAC1E,IAAI,WAAW,GAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAS,CAAC;YACxD,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAG,CAAC,CAAC;QAAA,CAAC,CAAC,CAAC;QAC7C,IAAI,QAAQ,GAAC,GAAG,CAAC,WAAW,EAAC,6CAA6C,CAAC;YACzE,GAAG,CAAC,WAAW,EAAC,wCAAwC,CAAC;YACzD,WAAW,CAAC,MAAM,IAAE,CAAC;YACrB,WAAW,CAAC,KAAK,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,UAAU,KAAG,UAAU,CAAC,CAAA,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,4DAA4D,EACjE,QAAQ,EAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAS,CAAC;YAC7D,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,UAAU,EAAC,CAAC,CAAC,UAAU,EAAC,CAAC;QAAA,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,4DAA4D,EACjE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,KAAK,GAAC,OAAO,CAAC,cAAc,EAC9B,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,cAAc,GAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,KAAG,MAAM,CAAC,CAAA,CAAC,CAAC,CAAC;QAClF,IAAI,YAAY,GAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,QAAQ,GAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAC,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,QAAQ,GAAC,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAC,iBAAiB,CAAC,CAAC;QACzE,MAAM,CAAC,qDAAqD,EAC1D,cAAc,CAAC,MAAM,IAAE,CAAC;YACtB,kCAAkC,CAAC,IAAI,CAAC,YAAY,CAAC;YACrD,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC;YACtC,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC5E,IAAI,CAAC,SAAS,CAAC,EAAC,SAAS,EAAC,cAAc,CAAC,MAAM;YAC7C,WAAW,EAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC;gBAC/C,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,WAAW,EAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,qDAAqD,EAC1D,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,KAAK,GAAC,OAAO,CAAC,cAAc,EAC9B,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,MAAM,GAAC,KAAK,CAAC,iBAAiB,CAAC;QACnC,IAAI,OAAO,GAAC,CAAC,CAAC,MAAM,IAAE,MAAM,CAAC,UAAU,GAAC,CAAC,IAAE,MAAM,CAAC,QAAQ,GAAC,CAAC;YAC1D,MAAM,CAAC,MAAM,KAAG,CAAC;YACjB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,IAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,IAAE,CAAC;YAChE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,IAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,KAAG,CAAC;YAC/D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,KAAG,CAAC,CAAC;QACvC,MAAM,CAAC,2DAA2D,EAChE,OAAO,EAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,2DAA2D,EAChE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;4DAGwD;IACxD,SAAS,WAAW,CAAC,KAAmB;QACtC,OAAO,KAAK,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,QAAQ,KAAG,SAAS,IAAE,CAAC,CAAC,QAAQ,KAAG,OAAO,CAAC,CAAA,CAAC,CAAC,CAAC,MAAM,CAAC;IAChG,CAAC;IACD,SAAS,SAAS,CAAC,IAAuB;QACxC,OAAO,CAAC,CAAC,IAAI,IAAE,IAAI,CAAC,KAAK,IAAE,CAAC,IAAE,IAAI,CAAC,GAAG,GAAC,IAAI,CAAC,KAAK,CAAC;IACpD,CAAC;IAED,IAAG,CAAC;QACF,IAAI,QAAQ,GAAC,OAAO,CAAC,2DAA2D,EAC9E,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,SAAS,GAAC,OAAO,CAAC,4DAA4D,EAChF,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,SAAS,GAAC,OAAO,CAAC,gBAAgB,EACpC,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,WAAW,GAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC3C,IAAI,UAAU,GAAC,QAAQ,CAAC,wBAAwB,KAAG,OAAO;YACxD,QAAQ,CAAC,UAAU,KAAG,CAAC,IAAE,WAAW,CAAC,aAAa,KAAG,CAAC;YACtD,WAAW,CAAC,eAAe,CAAC,QAAQ,KAAG,WAAW,CAAC,eAAe,CAAC,KAAK;YACxE,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAG,MAAM,CAAC;QAC/C,IAAI,WAAW,GAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB;YAC3C,SAAS,CAAC,iBAAiB,CAAC,eAAe,CAAC,MAAM,IAAE,CAAC;YACrD,SAAS,CAAC,UAAU,GAAC,QAAQ,CAAC,UAAU;YACxC,SAAS,CAAC,QAAQ,KAAG,CAAC,IAAE,SAAS,CAAC,UAAU,IAAE,GAAG,CAAC;QACpD,IAAI,WAAW,GAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB;YAC3C,SAAS,CAAC,iBAAiB,CAAC,eAAe,CAAC,KAAK,IAAE,CAAC;YACpD,SAAS,CAAC,UAAU,GAAC,SAAS,CAAC,UAAU;YACzC,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,KAAG,KAAK,CAAC;QAC/C,MAAM,CAAC,6DAA6D,EAClE,UAAU,IAAE,WAAW,IAAE,WAAW,EACpC,IAAI,CAAC,SAAS,CAAC,EAAC,KAAK,EAAC,WAAW,EAAC,MAAM,EAAC,SAAS,CAAC,iBAAiB;YAClE,MAAM,EAAC,SAAS,CAAC,iBAAiB;YAClC,WAAW,EAAC,CAAC,QAAQ,CAAC,UAAU,EAAC,SAAS,CAAC,UAAU,EAAC,SAAS,CAAC,UAAU,CAAC,EAAC,CAAC,CAAC,CAAC;IACrF,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,6DAA6D,EAClE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,MAAM,GAAC,OAAO,CAAC,WAAW,EAAC,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACtF,IAAI,YAAY,GAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,KAAK,KAAG,UAAU,CAAC,CAAA,CAAC,CAAC,CAAC;QACtF,IAAI,mBAAmB,GAAC,YAAY,CAAC,MAAM,GAAC,CAAC;YAC3C,YAAY,CAAC,KAAK,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,KAAG,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC;QACzD,IAAI,WAAW,GAAC,CAAC,YAAY,CAAC,MAAM,CAAC,UAAS,CAAC;YAC7C,OAAO,CAAC,CAAC,IAAI,KAAG,wBAAwB,IAAE,CAAC,CAAC,IAAI,KAAG,mBAAmB,CAAC;QACzE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAG,YAAY,CAAC,MAAM,CAAC;QACjC,MAAM,CAAC,0DAA0D,EAC/D,mBAAmB,IAAE,WAAW,EAChC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,UAAS,CAAC,IAAE,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,KAAK,EAAC,CAAC,CAAC,KAAK,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;IACpG,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,0DAA0D,EAC/D,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,UAAU,GAAC,OAAO,CAAC,kDAAkD,EACvE,EAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QAC7D,IAAI,QAAQ,GAAC,OAAO,CAAC,sDAAsD,EACzE,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QAC1D,IAAI,SAAS,GAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,KAAG,eAAe,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,IAAI,SAAS,GAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,KAAG,iBAAiB,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,MAAM,CAAC,kDAAkD,EACvD,CAAC,CAAC,SAAS,IAAE,SAAS,CAAC,QAAQ,KAAG,SAAS,IAAE,SAAS,CAAC,KAAK,KAAG,QAAQ;YACrE,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAE,UAAU,CAAC,UAAU,GAAC,CAAC,EACpD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,mDAAmD,EACxD,CAAC,CAAC,SAAS,IAAE,SAAS,CAAC,QAAQ,KAAG,SAAS,IAAE,SAAS,CAAC,KAAK,KAAG,QAAQ;YACrE,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAE,QAAQ,CAAC,UAAU,GAAC,CAAC,EAClD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1C,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,kDAAkD,EACvD,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,mDAAmD,EACxD,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAG,CAAC;QACF,IAAI,MAAM,GAAC,OAAO,CAAC,mCAAmC;YACpD,oEAAoE;YACpE,sBAAsB;YACtB,KAAK,EACL,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC;QACzD,IAAI,UAAU,GAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAS,CAAC;YAC/C,OAAO,CAAC,CAAC,IAAI,KAAG,eAAe,IAAE,CAAC,CAAC,QAAQ,KAAG,MAAM,IAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,oEAAoE,EACzE,UAAU,IAAE,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,KAAG,CAAC,EAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IACxC,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,oEAAoE,EACzE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;uBAEmB;IACnB,IAAG,CAAC;QACF,MAAM,CAAC,8DAA8D,EACnE,MAAM,CAAC,oBAAoB,KAAG,IAAI;YAChC,CAAC,CAAC,MAAM,CAAC,sBAAsB;YAC/B,MAAM,CAAC,sBAAsB,CAAC,MAAM,KAAG,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAC5E,MAAM,CAAC,sBAAsB,IAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC;QAClE,MAAM,CAAC,oEAAoE,EACzE,MAAM,CAAC,oBAAoB,KAAG,IAAI;YAChC,CAAC,CAAC,MAAM,CAAC,sBAAsB;YAC/B,MAAM,CAAC,sBAAsB,CAAC,MAAM,KAAG,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAC5E,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACnC,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,8DAA8D,EACnE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,oEAAoE,EACzE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;eAGW;IACX,IAAG,CAAC;QACF,MAAM,CAAC,qEAAqE,EAC1E,MAAM,CAAC,uBAAuB,KAAG,IAAI;YACnC,CAAC,CAAC,MAAM,CAAC,yBAAyB;YAClC,MAAM,CAAC,yBAAyB,CAAC,MAAM,KAAG,MAAM,CAAC,yBAAyB,CAAC,KAAK,EAClF,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACtC,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,qEAAqE,EAC1E,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;oEAGgE;IAChE,IAAG,CAAC;QACF,MAAM,CAAC,uEAAuE,EAC5E,MAAM,CAAC,uBAAuB,KAAG,IAAI;YACnC,CAAC,CAAC,MAAM,CAAC,yBAAyB;YAClC,MAAM,CAAC,yBAAyB,CAAC,MAAM,KAAG,MAAM,CAAC,yBAAyB,CAAC,KAAK,EAClF,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACtC,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,uEAAuE,EAC5E,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;;+DAI2D;IAC3D,IAAG,CAAC;QACF,MAAM,CAAC,sEAAsE,EAC3E,MAAM,CAAC,oBAAoB,KAAG,IAAI;YAChC,CAAC,CAAC,MAAM,CAAC,sBAAsB;YAC/B,MAAM,CAAC,sBAAsB,CAAC,MAAM,KAAG,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAC5E,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACnC,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,sEAAsE,EAC3E,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;;;uBAKmB;IACnB,IAAG,CAAC;QACF,MAAM,CAAC,oEAAoE,EACzE,MAAM,CAAC,wBAAwB,KAAG,IAAI;YACpC,CAAC,CAAC,MAAM,CAAC,0BAA0B;YACnC,MAAM,CAAC,0BAA0B,CAAC,MAAM,KAAG,MAAM,CAAC,0BAA0B,CAAC,KAAK;YAClF,MAAM,CAAC,0BAA0B,CAAC,YAAY,KAAG,MAAM,CAAC,0BAA0B,CAAC,WAAW,EAChG,MAAM,CAAC,0BAA0B,CAAC,CAAC;IACvC,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,oEAAoE,EACzE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;;4EAIwE;IACxE,IAAG,CAAC;QACF,MAAM,CAAC,kEAAkE,EACvE,MAAM,CAAC,oBAAoB,KAAG,IAAI;YAChC,CAAC,CAAC,MAAM,CAAC,sBAAsB;YAC/B,MAAM,CAAC,sBAAsB,CAAC,MAAM,KAAG,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAC5E,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACnC,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,kEAAkE,EACvE,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;oEAGgE;IAChE,IAAG,CAAC;QACF,MAAM,CAAC,qEAAqE,EAC1E,MAAM,CAAC,yBAAyB,KAAG,IAAI;YACrC,CAAC,CAAC,MAAM,CAAC,2BAA2B;YACpC,MAAM,CAAC,2BAA2B,CAAC,MAAM,KAAG,MAAM,CAAC,2BAA2B,CAAC,KAAK;YACpF,MAAM,CAAC,2BAA2B,CAAC,YAAY,KAAG,MAAM,CAAC,2BAA2B,CAAC,WAAW,EAClG,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACxC,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,qEAAqE,EAC1E,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;mFAC+E;IAC/E,IAAG,CAAC;QACF,MAAM,CAAC,+CAA+C,EACpD,MAAM,CAAC,yBAAyB,KAAG,IAAI;YACrC,CAAC,CAAC,MAAM,CAAC,2BAA2B;YACpC,MAAM,CAAC,2BAA2B,CAAC,MAAM,KAAG,MAAM,CAAC,2BAA2B,CAAC,KAAK,EACtF,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACxC,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,+CAA+C,EAAC,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,IAAG,CAAC;QACF,MAAM,CAAC,8CAA8C,EACnD,MAAM,CAAC,yBAAyB,KAAG,IAAI;YACrC,CAAC,CAAC,MAAM,CAAC,2BAA2B;YACpC,MAAM,CAAC,2BAA2B,CAAC,MAAM,KAAG,MAAM,CAAC,2BAA2B,CAAC,KAAK;YACpF,MAAM,CAAC,2BAA2B,CAAC,IAAI,KAAG,CAAC,EAC7C,MAAM,CAAC,6BAA6B,IAAE,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAC9E,CAAC;IAAA,OAAM,GAAG,EAAC,CAAC;QACV,MAAM,CAAC,8CAA8C,EAAC,KAAK,EAAC,MAAM,CAAC,GAAG,IAAE,GAAG,CAAC,KAAK,IAAE,GAAG,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,MAAM,GAAC,OAAO,CAAC,MAAM,CAAC,UAAS,CAAC,IAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAC,MAAM,KAAG,OAAO,CAAC,MAAM,CAAA,CAAC,CAAA,MAAM,CAAA,CAAC,CAAA,MAAM,CAAC;IAC9D,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,WAAW,GAAC,MAAM,GAAC,GAAG,GAAC,OAAO,CAAC,MAAM,GAAC,eAAe,CAAC;IACzF,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,WAAW,GAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC;AAChF,CAAC,CAAC,EAAE,CAAC"}
\ No newline at end of file
+{"version":3,"file":"tests.js","sourceRoot":"","sources":["../../tests/tests.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md
index cc2569c..4a239c0 100644
--- a/docs/DEVELOPMENT.md
+++ b/docs/DEVELOPMENT.md
@@ -22,6 +22,7 @@ and open these pages:
- `tests/index.html` — golden, parity, layout, workspace, catalogue, report,
scale, and realistic-corpus checks.
+- `erd.html` — the schema DDL / entity relationship diagram page.
- `tests/fuzz.html` — 400 deterministic mutation cases.
- `tests/ui.html` — browser interaction and large-input responsiveness.
- `tests/security.html` — hostile-input and strict-rendering checks.
diff --git a/erd.html b/erd.html
new file mode 100644
index 0000000..6478ef1
--- /dev/null
+++ b/erd.html
@@ -0,0 +1,100 @@
+
+
+
+
+
+proc>flow — ERD
+
+
+
+
+
+
+
proc>flow
+
Entity relationship diagram
+
+
+
+ 🔒
+ Local only
+
+
+ Your DDL stays in this browser.
+ Procflow does not connect to a database, upload schema definitions, or
+ send anything to an API. Imported files remain in this tab and are
+ discarded when it closes.
+