ftown 0.21.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attention-events.d.ts +1 -1
- package/dist/attention-store.d.ts +3 -0
- package/dist/attention-store.js +25 -1
- package/dist/attention-store.js.map +1 -1
- package/dist/centrifugo-client.d.ts +14 -1
- package/dist/centrifugo-client.js +38 -4
- package/dist/centrifugo-client.js.map +1 -1
- package/dist/command-rpc.d.ts +2 -0
- package/dist/command-rpc.js +55 -9
- package/dist/command-rpc.js.map +1 -1
- package/dist/direct-transport/loopback-server.d.ts +10 -3
- package/dist/direct-transport/loopback-server.js +20 -4
- package/dist/direct-transport/loopback-server.js.map +1 -1
- package/dist/direct-transport/peer-manager.d.ts +8 -3
- package/dist/direct-transport/peer-manager.js +20 -5
- package/dist/direct-transport/peer-manager.js.map +1 -1
- package/dist/file-stamp.d.ts +33 -0
- package/dist/file-stamp.js +35 -0
- package/dist/file-stamp.js.map +1 -0
- package/dist/identity-reset.d.ts +3 -1
- package/dist/identity-reset.js +27 -5
- package/dist/identity-reset.js.map +1 -1
- package/dist/index.js +31 -37
- package/dist/index.js.map +1 -1
- package/dist/ledger-pairing-client.d.ts +1 -1
- package/dist/ledger-pairing-client.js +5 -3
- package/dist/ledger-pairing-client.js.map +1 -1
- package/dist/ledger-relay.d.ts +42 -7
- package/dist/ledger-relay.js +175 -33
- package/dist/ledger-relay.js.map +1 -1
- package/dist/ledger-reoffer.d.ts +56 -0
- package/dist/ledger-reoffer.js +210 -0
- package/dist/ledger-reoffer.js.map +1 -0
- package/dist/ledger-startup.d.ts +30 -5
- package/dist/ledger-startup.js +40 -10
- package/dist/ledger-startup.js.map +1 -1
- package/dist/local-api-server.d.ts +3 -0
- package/dist/local-api-server.js +68 -6
- package/dist/local-api-server.js.map +1 -1
- package/dist/mail-delivery.d.ts +26 -3
- package/dist/mail-delivery.js +65 -7
- package/dist/mail-delivery.js.map +1 -1
- package/dist/mail-store.d.ts +15 -1
- package/dist/mail-store.js +78 -16
- package/dist/mail-store.js.map +1 -1
- package/dist/outbound-pipeline-types.d.ts +5 -2
- package/dist/outbound-pipeline-types.js.map +1 -1
- package/dist/preview-protocol.d.ts +19 -3
- package/dist/preview-protocol.js +14 -0
- package/dist/preview-protocol.js.map +1 -1
- package/dist/relay-token.d.ts +6 -0
- package/dist/relay-token.js +9 -1
- package/dist/relay-token.js.map +1 -1
- package/dist/security/bridge/ledger-rpc.d.ts +34 -0
- package/dist/security/bridge/ledger-rpc.js +58 -0
- package/dist/security/bridge/ledger-rpc.js.map +1 -0
- package/dist/security/bridge/ledger-store.d.ts +82 -13
- package/dist/security/bridge/ledger-store.js +394 -54
- package/dist/security/bridge/ledger-store.js.map +1 -1
- package/dist/security/bridge/permissions.js +2 -1
- package/dist/security/bridge/permissions.js.map +1 -1
- package/dist/security/bridge/policy.d.ts +5 -1
- package/dist/security/bridge/policy.js +17 -0
- package/dist/security/bridge/policy.js.map +1 -1
- package/dist/security/bridge/security.d.ts +148 -10
- package/dist/security/bridge/security.js +270 -65
- package/dist/security/bridge/security.js.map +1 -1
- package/dist/security/crypto.d.ts +2 -0
- package/dist/security/crypto.js +43 -4
- package/dist/security/crypto.js.map +1 -1
- package/dist/security/ledger/announce.d.ts +32 -0
- package/dist/security/ledger/announce.js +101 -0
- package/dist/security/ledger/announce.js.map +1 -0
- package/dist/security/ledger/ledger.d.ts +107 -14
- package/dist/security/ledger/ledger.js +364 -83
- package/dist/security/ledger/ledger.js.map +1 -1
- package/dist/security/ledger/proof.d.ts +12 -0
- package/dist/security/ledger/proof.js +40 -8
- package/dist/security/ledger/proof.js.map +1 -1
- package/dist/security/ledger/protocol.d.ts +14 -1
- package/dist/security/ledger/protocol.js.map +1 -1
- package/dist/session-controller.d.ts +9 -3
- package/dist/session-controller.js +120 -20
- package/dist/session-controller.js.map +1 -1
- package/dist/session-inbox-protocol.d.ts +2 -0
- package/dist/session-preview.d.ts +20 -5
- package/dist/session-preview.js +185 -37
- package/dist/session-preview.js.map +1 -1
- package/dist/session-store.d.ts +22 -0
- package/dist/session-store.js +180 -13
- package/dist/session-store.js.map +1 -1
- package/dist/sessions-commands.js +41 -7
- package/dist/sessions-commands.js.map +1 -1
- package/dist/terminal-manager.d.ts +8 -0
- package/dist/terminal-manager.js +23 -1
- package/dist/terminal-manager.js.map +1 -1
- package/dist/terminal-output.d.ts +34 -0
- package/dist/terminal-output.js +68 -0
- package/dist/terminal-output.js.map +1 -0
- package/dist/terminal-pump.d.ts +48 -5
- package/dist/terminal-pump.js +143 -20
- package/dist/terminal-pump.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/opencode-plugin/ftown.js +15 -2
- package/package.json +2 -2
- package/skills/ftown/SKILL.md +18 -7
- package/skills/ftown/references/sessions.md +35 -10
|
@@ -5,7 +5,9 @@ import { BridgePolicyStore } from './policy.js';
|
|
|
5
5
|
import { BridgeSecurityError } from './errors.js';
|
|
6
6
|
import { classifyCommand, classifyHttp, classifyTerminal } from './permissions.js';
|
|
7
7
|
import { endpointSchema } from './metadata.js';
|
|
8
|
-
import { accountIdOf, ledgerHead, parseLedger } from '../ledger/ledger.js';
|
|
8
|
+
import { accountIdOf, ledgerHead, ledgerHeads, parseLedger, relateHead } from '../ledger/ledger.js';
|
|
9
|
+
import { verifyHeadAnnouncement } from '../ledger/announce.js';
|
|
10
|
+
import { ledgerRemovesBridge, shortHead } from './ledger-store.js';
|
|
9
11
|
const token = z.string().regex(/^[A-Za-z0-9_-]{1,200}$/);
|
|
10
12
|
const routeSchema = z.discriminatedUnion('kind', [
|
|
11
13
|
z.object({ kind: z.literal('command'), requestId: token, command: z.string().min(1).max(100), sessionId: token.nullable() }).strict(),
|
|
@@ -19,17 +21,18 @@ const object = (value) => {
|
|
|
19
21
|
return value;
|
|
20
22
|
};
|
|
21
23
|
export const applicationJson = (value) => JSON.parse(JSON.stringify(value));
|
|
22
|
-
/** (length, head) of verified chains already evaluated: a chain's payloads are hash-linked, so an equal pair is an equal chain. */
|
|
23
|
-
const EVALUATED_LIMIT = 16;
|
|
24
24
|
/** onApprovalRequired: at most one emission per endpoint per spacing, and at most this many endpoints tracked at once. */
|
|
25
25
|
const APPROVAL_SPACING_MS = 2000;
|
|
26
26
|
const APPROVAL_TRACKED_LIMIT = 1024;
|
|
27
|
+
const REJECTED = { decision: 'reject', relation: null, head: null, revision: null };
|
|
27
28
|
const reason = (error) => error instanceof Error ? error.message : String(error);
|
|
28
|
-
|
|
29
|
+
const httpStatus = (error) => typeof error === 'object' && error !== null && 'status' in error && typeof error.status === 'number' ? error.status : null;
|
|
30
|
+
/** The candidate's last record ({revision, head}), or null when it is not a well-formed chain. One hash, no signature work. */
|
|
31
|
+
async function chainTip(candidate) {
|
|
29
32
|
try {
|
|
30
33
|
const ledger = parseLedger(candidate);
|
|
31
34
|
const last = ledger.transitions[ledger.transitions.length - 1];
|
|
32
|
-
return
|
|
35
|
+
return { revision: ledger.transitions.length, head: last === undefined ? await accountIdOf(ledger.genesis.payload) : await ledgerHead(last.payload) };
|
|
33
36
|
}
|
|
34
37
|
catch {
|
|
35
38
|
return null;
|
|
@@ -54,14 +57,23 @@ export class BridgeSecurityService {
|
|
|
54
57
|
ledgerNow;
|
|
55
58
|
/** Ledger offers and their projections run one at a time, so the policy never sees an older view after a newer one. */
|
|
56
59
|
ledgerTail = Promise.resolve();
|
|
57
|
-
status = {
|
|
60
|
+
status = {
|
|
61
|
+
accountId: null, revision: null, head: null, own: 'unpaired', divergence: null, serverBehind: false, removedOnOtherHistory: false,
|
|
62
|
+
};
|
|
63
|
+
announcements = { accepted: 0, dropped: 0 };
|
|
64
|
+
headListeners = new Set();
|
|
58
65
|
ledgerMonotonic;
|
|
59
66
|
/** The trusted view of the last projection (null: none yet, or another account's). */
|
|
60
67
|
trustedView = null;
|
|
68
|
+
/** The state of the last projection (null: none yet, or an empty store), and the record heads of its chain (null: not computed). */
|
|
69
|
+
held = null;
|
|
70
|
+
heads = null;
|
|
61
71
|
approvalListeners = new Set();
|
|
62
72
|
approvalEmitted = new Map();
|
|
63
73
|
pendingOffers = new Map();
|
|
64
|
-
|
|
74
|
+
serverBehind = false;
|
|
75
|
+
/** The server's revision when it was last seen behind us (null: unknown). */
|
|
76
|
+
serverRevision = null;
|
|
65
77
|
refreshing = null;
|
|
66
78
|
refreshQueued = null;
|
|
67
79
|
constructor(identity, bridgeId, dataDir, options) {
|
|
@@ -122,10 +134,14 @@ export class BridgeSecurityService {
|
|
|
122
134
|
}
|
|
123
135
|
}
|
|
124
136
|
async reply(recipient, purpose, data, route, messageId = randomUUID()) {
|
|
137
|
+
return this.replyBytes(recipient, purpose, new TextEncoder().encode(JSON.stringify(data)), route, messageId);
|
|
138
|
+
}
|
|
139
|
+
/** One fresh encapsulation of already serialized content. */
|
|
140
|
+
async replyBytes(recipient, purpose, plaintext, route, messageId) {
|
|
125
141
|
this.context(route);
|
|
126
142
|
return seal(this.identity, recipient, { type: 'ftown_encrypted', version: 1, senderId: this.endpoint.id, recipientId: recipient.id,
|
|
127
143
|
ownerId: this.endpoint.ownerId, bridgeId: this.bridgeId, channel: route.channel, purpose, messageId,
|
|
128
|
-
createdAt: this.now(), expiresAt: this.now() + 120000, receiverEpoch: null },
|
|
144
|
+
createdAt: this.now(), expiresAt: this.now() + 120000, receiverEpoch: null }, plaintext);
|
|
129
145
|
}
|
|
130
146
|
async handleHandshake(packet, route) {
|
|
131
147
|
this.context(route);
|
|
@@ -246,18 +262,21 @@ export class BridgeSecurityService {
|
|
|
246
262
|
await this.policy.revalidate(principal);
|
|
247
263
|
return envelope;
|
|
248
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* Relay publications only (the route is always 'cloud'). The local CLI never connects to the relay: it reads the same publications
|
|
267
|
+
* from the local events ring, sealed to it per poll by sealTo, so no relay envelope is made for it.
|
|
268
|
+
* The readers and their keys come from ONE policy snapshot read, taken when this is called; each reader still gets its own fresh
|
|
269
|
+
* encapsulation and message id. Nothing here re-reads the policy afterwards: the sender re-checks every packet's recipient with
|
|
270
|
+
* policy.principal() immediately before handing it to the relay (the packet's send() in centrifugo-client), and does not publish
|
|
271
|
+
* the packet of a recipient that stopped being one.
|
|
272
|
+
*/
|
|
249
273
|
async sealPublication(channel, application) {
|
|
250
|
-
const
|
|
274
|
+
const readers = (await this.policy.readers()).filter(reader => reader.endpoint.kind !== 'local-cli');
|
|
275
|
+
const route = { transport: 'cloud', channel, bridgeId: this.bridgeId, pairId: null };
|
|
276
|
+
const plaintext = new TextEncoder().encode(JSON.stringify(application));
|
|
251
277
|
const packets = [];
|
|
252
|
-
for (const
|
|
253
|
-
|
|
254
|
-
packets.push(await this.sealTo(recipient.endpoint.id, application, { transport: 'cloud', channel, bridgeId: this.bridgeId, pairId: null }));
|
|
255
|
-
}
|
|
256
|
-
catch (error) {
|
|
257
|
-
if (!(error instanceof BridgeSecurityError) || (!['endpoint_revoked', 'approval_required', 'expired'].includes(error.code)
|
|
258
|
-
&& !error.code.startsWith('account_')))
|
|
259
|
-
throw error;
|
|
260
|
-
}
|
|
278
|
+
for (const reader of readers) {
|
|
279
|
+
packets.push(await this.replyBytes(reader.endpoint, 'application', plaintext, route, application.route.kind === 'response' ? application.route.requestId : randomUUID()));
|
|
261
280
|
}
|
|
262
281
|
return packets;
|
|
263
282
|
}
|
|
@@ -290,9 +309,10 @@ export class BridgeSecurityService {
|
|
|
290
309
|
await this.refreshLedger();
|
|
291
310
|
}
|
|
292
311
|
/**
|
|
293
|
-
* Reads the server's ledger and offers it ('server'). A result that is not 'reject' counts as server contact;
|
|
294
|
-
* logged, never thrown. Single in flight: calls during a read share one trailing read, so a change announced
|
|
295
|
-
* The wiring calls it on every relay (re)subscribe and on a `ledger_head` that differs from ledgerStatus().head
|
|
312
|
+
* Reads the server's ledger and offers it ('server') through readServerLedger. A result that is not 'reject' counts as server contact;
|
|
313
|
+
* a fetch failure is logged, never thrown. Single in flight: calls during a read share one trailing read, so a change announced
|
|
314
|
+
* mid-read is not missed. The wiring calls it on every relay (re)subscribe and on a `ledger_head` that differs from ledgerStatus().head,
|
|
315
|
+
* and checks ledgerStatus().serverBehind afterwards.
|
|
296
316
|
*/
|
|
297
317
|
refreshLedger() {
|
|
298
318
|
if (!this.options.ledger || this.closed)
|
|
@@ -305,28 +325,46 @@ export class BridgeSecurityService {
|
|
|
305
325
|
return this.refreshing;
|
|
306
326
|
}
|
|
307
327
|
async refreshOnce() {
|
|
328
|
+
const read = await this.readServerLedger();
|
|
329
|
+
if (read.kind !== 'read')
|
|
330
|
+
console.warn('[Security] Account ledger read failed:', read.reason);
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* One read of the server's ledger (not coalesced), offered as 'server'; a result that is not 'reject' counts as server contact. Never
|
|
334
|
+
* throws: a 404 is 'unknown_account' (the server does not know this account), any other failure 'failed'. The re-offer runs it right
|
|
335
|
+
* before it posts; refreshLedger runs it for everything else.
|
|
336
|
+
*/
|
|
337
|
+
async readServerLedger() {
|
|
308
338
|
const ledger = this.options.ledger;
|
|
339
|
+
if (!ledger || this.closed)
|
|
340
|
+
return { kind: 'failed', reason: 'Account ledger unavailable' };
|
|
309
341
|
let fetched;
|
|
310
342
|
try {
|
|
311
343
|
fetched = await ledger.fetchLedger();
|
|
312
344
|
}
|
|
313
345
|
catch (error) {
|
|
314
|
-
|
|
315
|
-
return;
|
|
346
|
+
return httpStatus(error) === 404 ? { kind: 'unknown_account', reason: reason(error) } : { kind: 'failed', reason: reason(error) };
|
|
316
347
|
}
|
|
317
|
-
|
|
348
|
+
const outcome = await this.offerLedgerResult(fetched, 'server');
|
|
349
|
+
if (outcome.decision !== 'reject')
|
|
318
350
|
this.noteServerContact();
|
|
351
|
+
return { kind: 'read', outcome };
|
|
352
|
+
}
|
|
353
|
+
/** offerLedgerResult(candidate, source).decision. */
|
|
354
|
+
async offerLedger(candidate, source) {
|
|
355
|
+
return (await this.offerLedgerResult(candidate, source)).decision;
|
|
319
356
|
}
|
|
320
357
|
/**
|
|
321
|
-
* Offers an untrusted chain (the relay, a relay-token response, a server read) to the replica, then projects the result and
|
|
322
|
-
* this bridge's own status. Never throws: an invalid candidate, a closed service and a local storage failure all return 'reject'.
|
|
323
|
-
* Per source at most one offer waits behind the one in flight; a newer one replaces it, and the replaced caller gets the newer
|
|
324
|
-
*
|
|
325
|
-
*
|
|
358
|
+
* Offers an untrusted chain (the relay, a relay-token response, a server read or answer) to the replica, then projects the result and
|
|
359
|
+
* checks this bridge's own status. Never throws: an invalid candidate, a closed service and a local storage failure all return 'reject'.
|
|
360
|
+
* Per source at most one offer waits behind the one in flight; a newer one replaces it, and the replaced caller gets the newer outcome.
|
|
361
|
+
* A chain equal to the stored one or a prefix of it is answered keep/same or keep/behind from record heads alone (no signature check),
|
|
362
|
+
* unless a divergence is recorded for that source (the store clears it). The outcome of a 'server' chain sets serverBehind. Offers never
|
|
363
|
+
* count as server contact: readServerLedger and noteServerContact decide that.
|
|
326
364
|
*/
|
|
327
|
-
|
|
365
|
+
offerLedgerResult(candidate, source) {
|
|
328
366
|
if (!this.options.ledger || this.closed)
|
|
329
|
-
return Promise.resolve(
|
|
367
|
+
return Promise.resolve(REJECTED);
|
|
330
368
|
return new Promise(resolve => {
|
|
331
369
|
const waiting = this.pendingOffers.get(source);
|
|
332
370
|
if (waiting) {
|
|
@@ -340,18 +378,25 @@ export class BridgeSecurityService {
|
|
|
340
378
|
if (this.pendingOffers.get(source) === pending)
|
|
341
379
|
this.pendingOffers.delete(source);
|
|
342
380
|
return this.evaluate(pending.candidate, source);
|
|
343
|
-
}).catch(() =>
|
|
344
|
-
waiter(
|
|
381
|
+
}).catch(() => REJECTED).then(outcome => { for (const waiter of pending.waiters)
|
|
382
|
+
waiter({ ...outcome }); });
|
|
345
383
|
});
|
|
346
384
|
}
|
|
347
385
|
async evaluate(candidate, source) {
|
|
348
386
|
const ledger = this.options.ledger;
|
|
349
387
|
if (this.closed)
|
|
350
|
-
return
|
|
351
|
-
const
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
388
|
+
return REJECTED;
|
|
389
|
+
const tip = await chainTip(candidate);
|
|
390
|
+
const heads = this.heads;
|
|
391
|
+
if (tip !== null && heads !== null && this.held !== null && heads.of === this.held.checkpoint.head
|
|
392
|
+
&& !this.held.divergences.some(entry => entry.source === source)) {
|
|
393
|
+
let known = 'unknown';
|
|
394
|
+
try {
|
|
395
|
+
known = relateHead(heads.list, tip);
|
|
396
|
+
}
|
|
397
|
+
catch { /* not a head of ours */ }
|
|
398
|
+
if (known === 'same' || known === 'behind')
|
|
399
|
+
return this.observed(source, { decision: 'keep', relation: known, head: tip.head, revision: tip.revision });
|
|
355
400
|
}
|
|
356
401
|
let result;
|
|
357
402
|
try {
|
|
@@ -359,29 +404,105 @@ export class BridgeSecurityService {
|
|
|
359
404
|
}
|
|
360
405
|
catch (error) {
|
|
361
406
|
console.error('[Security] Account ledger offer failed:', reason(error));
|
|
362
|
-
return
|
|
407
|
+
return REJECTED;
|
|
363
408
|
}
|
|
409
|
+
const outcome = { decision: result.decision, relation: result.relation, head: result.candidate?.head ?? null, revision: result.candidate?.revision ?? null };
|
|
364
410
|
if (result.decision === 'reject' || result.state === null)
|
|
365
|
-
return 'reject';
|
|
411
|
+
return { ...outcome, decision: 'reject' };
|
|
366
412
|
try {
|
|
367
413
|
await this.projectState(result.state);
|
|
368
|
-
// Only a chain that verified and was fully applied is remembered; a rejected one never is (it may carry forged signatures).
|
|
369
|
-
if (key !== null)
|
|
370
|
-
this.remember(key);
|
|
371
414
|
}
|
|
372
415
|
catch (error) {
|
|
373
416
|
console.error('[Security] Account ledger projection failed:', reason(error));
|
|
374
417
|
}
|
|
375
|
-
return
|
|
418
|
+
return this.observed(source, outcome);
|
|
419
|
+
}
|
|
420
|
+
/** Records what a non-rejected 'server' chain says about the server: behind (a strict prefix of ours) or not. */
|
|
421
|
+
observed(source, outcome) {
|
|
422
|
+
if (source === 'server' && outcome.decision !== 'reject')
|
|
423
|
+
this.setServerBehind(outcome.relation === 'behind', outcome.revision);
|
|
424
|
+
return outcome;
|
|
425
|
+
}
|
|
426
|
+
setServerBehind(behind, revision) {
|
|
427
|
+
this.serverBehind = behind;
|
|
428
|
+
this.serverRevision = behind ? revision : null;
|
|
429
|
+
this.status = { ...this.status, serverBehind: behind };
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* A relay-token answer that carried no chain: the server's head is `head` (at `revision` when the answer named one, else the head the
|
|
433
|
+
* request sent). Classified against the stored chain from record heads alone: 'same', 'behind' (sets serverBehind), or 'unknown'
|
|
434
|
+
* (ahead, diverged, or not a head of ours: the caller reads the server). null without a ledger, a head, or a stored chain.
|
|
435
|
+
*/
|
|
436
|
+
noteServerHead(server) {
|
|
437
|
+
const heads = this.heads;
|
|
438
|
+
if (!this.options.ledger || this.closed || server.head === null || heads === null)
|
|
439
|
+
return null;
|
|
440
|
+
const revision = server.revision ?? heads.list.lastIndexOf(server.head);
|
|
441
|
+
let relation = 'unknown';
|
|
442
|
+
if (revision >= 0) {
|
|
443
|
+
try {
|
|
444
|
+
relation = relateHead(heads.list, { revision, head: server.head });
|
|
445
|
+
}
|
|
446
|
+
catch {
|
|
447
|
+
return null;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
if (relation !== 'unknown')
|
|
451
|
+
this.setServerBehind(relation === 'behind', revision);
|
|
452
|
+
return relation;
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* What this bridge holds that the server does not (for the startup message when the server refuses our key): our records after the
|
|
456
|
+
* fork point of a recorded server divergence, or after the server's revision when it was seen behind us; null when neither is known.
|
|
457
|
+
*/
|
|
458
|
+
uniqueHistory() {
|
|
459
|
+
const held = this.held;
|
|
460
|
+
if (held === null)
|
|
461
|
+
return null;
|
|
462
|
+
const fork = held.divergences.find(entry => entry.source === 'server')?.forkRevision ?? null;
|
|
463
|
+
const after = fork ?? (this.serverBehind ? this.serverRevision : null);
|
|
464
|
+
if (after === null || after < 0 || after > held.ledger.transitions.length)
|
|
465
|
+
return null;
|
|
466
|
+
const records = held.ledger.transitions.slice(after);
|
|
467
|
+
let removals = 0;
|
|
468
|
+
let passkeys = 0;
|
|
469
|
+
for (const record of records) {
|
|
470
|
+
const type = record.payload.operation.type;
|
|
471
|
+
if (type === 'revoke_device' || type === 'revoke_bridge')
|
|
472
|
+
removals++;
|
|
473
|
+
if (type === 'add_authority')
|
|
474
|
+
passkeys++;
|
|
475
|
+
}
|
|
476
|
+
return { afterRevision: after, records: records.length, removals, passkeys };
|
|
376
477
|
}
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
478
|
+
/**
|
|
479
|
+
* Account mode, read-only (ledger_head / ledger_chain): the stored chain, for a BROWSER that is a member of this bridge's trusted
|
|
480
|
+
* checkpoint (listed with exactly this endpoint key, not revoked; policy access, offline grace and own status included). Throws
|
|
481
|
+
* BridgeSecurityError('permission_denied') for anyone else, Solo, --local and the local CLI.
|
|
482
|
+
*/
|
|
483
|
+
async memberLedger(principal) {
|
|
484
|
+
const held = await this.memberState(principal);
|
|
485
|
+
// Read-only by contract (the ledger_chain pager copies only the records it returns): no copy of the whole chain per request.
|
|
486
|
+
return { ledger: held.ledger, accountId: held.checkpoint.accountId, head: held.checkpoint.head, revision: held.checkpoint.revision };
|
|
487
|
+
}
|
|
488
|
+
/** ledger_head: like memberLedger, but answers the tip only, without touching the chain. */
|
|
489
|
+
async memberHead(principal) {
|
|
490
|
+
const held = await this.memberState(principal);
|
|
491
|
+
return { accountId: held.checkpoint.accountId, head: held.checkpoint.head, revision: held.checkpoint.revision };
|
|
492
|
+
}
|
|
493
|
+
async memberState(principal) {
|
|
494
|
+
if (!this.options.ledger || this.closed)
|
|
495
|
+
throw new BridgeSecurityError('permission_denied');
|
|
496
|
+
await this.policy.revalidate(principal, 'read');
|
|
497
|
+
const held = this.held;
|
|
498
|
+
const endpoint = principal.endpoint;
|
|
499
|
+
// The trusted checkpoint (sticky applied): a browser removed on a refused history is refused here too.
|
|
500
|
+
if (held === null || endpoint.kind !== 'browser' || held.trusted.accountId !== this.endpoint.ownerId
|
|
501
|
+
|| held.trusted.revokedDeviceIds.includes(endpoint.id)
|
|
502
|
+
|| !held.trusted.devices.some(device => device.endpoint.id === endpoint.id && device.endpoint.publicKey === endpoint.publicKey)) {
|
|
503
|
+
throw new BridgeSecurityError('permission_denied');
|
|
384
504
|
}
|
|
505
|
+
return held;
|
|
385
506
|
}
|
|
386
507
|
/** A successful server contact (the token provider calls this after a relay-token response): re-anchors offline grace at now and
|
|
387
508
|
* persists it (the replica's lastServerReadAt and the clock high-water). An invalid time is ignored. */
|
|
@@ -396,45 +517,128 @@ export class BridgeSecurityService {
|
|
|
396
517
|
ledger.store.markServerRead(at).catch(failed);
|
|
397
518
|
this.policy.persistLedgerClock().catch(failed);
|
|
398
519
|
}
|
|
399
|
-
ledgerStatus() {
|
|
520
|
+
ledgerStatus() {
|
|
521
|
+
return { ...this.status, divergence: this.status.divergence === null ? null : { ...this.status.divergence }, announcements: { ...this.announcements } };
|
|
522
|
+
}
|
|
523
|
+
/**
|
|
524
|
+
* A head announcement from the ledger channel (parsed, from an owner publication), judged against this bridge's TRUSTED checkpoint (sticky
|
|
525
|
+
* revocations applied) and the record heads of its stored chain: its relation ('same', 'behind' or 'unknown': the caller runs a paced server
|
|
526
|
+
* read) when it verifies, else null. This bridge's own announcements (kind bridge, its bridgeId) return null before any work and are not
|
|
527
|
+
* counted; every other null is counted as dropped, every relation as accepted. At most one signature verification, then an O(1) compare.
|
|
528
|
+
* Never throws. An announcement is never proof: nothing here changes the replica.
|
|
529
|
+
*/
|
|
530
|
+
async judgeHeadAnnouncement(announcement) {
|
|
531
|
+
if (!this.options.ledger || this.closed)
|
|
532
|
+
return null;
|
|
533
|
+
let relation = null;
|
|
534
|
+
try {
|
|
535
|
+
if (announcement.kind === 'bridge' && announcement.keyId === this.bridgeId)
|
|
536
|
+
return null;
|
|
537
|
+
const trusted = this.trustedView;
|
|
538
|
+
if (trusted !== null && this.heads !== null && this.heads.of === trusted.head
|
|
539
|
+
&& await verifyHeadAnnouncement(trusted, announcement, this.ledgerNow())) {
|
|
540
|
+
// The chain may have moved during the verification: compare with the heads held now.
|
|
541
|
+
const heads = this.heads;
|
|
542
|
+
if (heads !== null)
|
|
543
|
+
relation = relateHead(heads.list, { revision: announcement.revision, head: announcement.head });
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
catch {
|
|
547
|
+
relation = null;
|
|
548
|
+
}
|
|
549
|
+
if (relation === null)
|
|
550
|
+
this.announcements.dropped++;
|
|
551
|
+
else
|
|
552
|
+
this.announcements.accepted++;
|
|
553
|
+
return relation;
|
|
554
|
+
}
|
|
555
|
+
/** Account mode: fires (synchronously, after the projection) whenever the stored head or this bridge's own status changes, e.g. after an
|
|
556
|
+
* adopt. Listener errors are logged. */
|
|
557
|
+
onLedgerHead(listener) {
|
|
558
|
+
this.headListeners.add(listener);
|
|
559
|
+
return () => { this.headListeners.delete(listener); };
|
|
560
|
+
}
|
|
400
561
|
ledgerTask(run) {
|
|
401
562
|
const next = this.ledgerTail.then(run);
|
|
402
563
|
this.ledgerTail = next.catch(() => undefined);
|
|
403
564
|
return next;
|
|
404
565
|
}
|
|
405
|
-
|
|
566
|
+
/** This bridge's keys, exactly as its add_bridge lists them. */
|
|
567
|
+
ownKeys() {
|
|
568
|
+
return { bridgeId: this.bridgeId, endpointId: this.endpoint.id, endpointPublicKey: this.endpoint.publicKey, authPublicKey: this.options.ledger?.authPublicKey ?? '' };
|
|
569
|
+
}
|
|
570
|
+
/**
|
|
571
|
+
* This bridge in `trusted` (applyRevocations of the projected RAW chain `ledger`). 'active' = listed with exactly its keys. 'revoked' =
|
|
572
|
+
* the RAW chain proves the removal of THIS bridge (ledgerRemovesBridge: it added these keys, then revoked the id), the only status that
|
|
573
|
+
* resets the identity, decided exactly like the startup check (store.ownBridgeStatus). A sticky-only id, a removal seen on a refused
|
|
574
|
+
* history (C1c `seen`, never merged for our own id anyway) or a tombstone of our id is 'absent': fail closed, never a reset.
|
|
575
|
+
*/
|
|
576
|
+
ownOf(trusted, ledger) {
|
|
406
577
|
if (trusted === null)
|
|
407
578
|
return 'unpaired';
|
|
408
579
|
if (trusted.accountId !== this.endpoint.ownerId)
|
|
409
580
|
return 'absent';
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
581
|
+
const own = this.ownKeys();
|
|
582
|
+
if (trusted.bridges.some(item => item.bridgeId === own.bridgeId && item.authPublicKey === own.authPublicKey && item.endpoint.id === own.endpointId
|
|
583
|
+
&& item.endpoint.publicKey === own.endpointPublicKey))
|
|
584
|
+
return 'active';
|
|
585
|
+
return ledger !== null && ledgerRemovesBridge(ledger, own) ? 'revoked' : 'absent';
|
|
415
586
|
}
|
|
416
587
|
/** `trusted` is always the store's applyRevocations output, never its raw checkpoint. Own status acts before the policy write, so
|
|
417
588
|
* neither the revocation nor its emission waits on (or is lost to) a policy storage failure. */
|
|
418
589
|
async projectState(state) {
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
590
|
+
// The stored chain's record heads let an echo of it (or of a prefix) be answered without verification.
|
|
591
|
+
if (this.heads === null || this.heads.of !== state.checkpoint.head) {
|
|
592
|
+
try {
|
|
593
|
+
this.heads = { of: state.checkpoint.head, list: await ledgerHeads(state.ledger) };
|
|
594
|
+
}
|
|
595
|
+
catch {
|
|
596
|
+
this.heads = null;
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
this.held = state;
|
|
600
|
+
return this.project(state.trusted, state.lastServerReadAt, state.divergences, state.ledger);
|
|
423
601
|
}
|
|
424
|
-
async project(trusted, lastServerReadAt) {
|
|
425
|
-
const own = this.ownOf(trusted);
|
|
602
|
+
async project(trusted, lastServerReadAt, divergences = [], ledger = null) {
|
|
603
|
+
const own = this.ownOf(trusted, ledger);
|
|
426
604
|
this.trustedView = trusted !== null && trusted.accountId === this.endpoint.ownerId ? trusted : null;
|
|
605
|
+
if (trusted === null) {
|
|
606
|
+
this.held = null;
|
|
607
|
+
this.heads = null;
|
|
608
|
+
}
|
|
427
609
|
const projection = this.policy.projectLedger({ trusted, own, lastServerReadAt });
|
|
428
610
|
const previous = this.status.own;
|
|
429
|
-
this.status
|
|
611
|
+
const previousHead = this.status.head;
|
|
612
|
+
// Server first: a server holding another history matters more than a relay publisher that does.
|
|
613
|
+
const shown = divergences.find(entry => entry.source === 'server') ?? divergences[0];
|
|
614
|
+
const divergence = shown === undefined || trusted === null ? null : {
|
|
615
|
+
source: shown.source, otherHead: shortHead(shown.otherHead), otherRevision: shown.otherRevision, ourRevision: trusted.revision, firstSeen: shown.firstSeen,
|
|
616
|
+
forkRevision: shown.forkRevision, removedOnOtherHistory: shown.removedOnOtherHistory,
|
|
617
|
+
};
|
|
618
|
+
this.status = {
|
|
619
|
+
accountId: trusted?.accountId ?? null, revision: trusted?.revision ?? null, head: trusted?.head ?? null, own, divergence, serverBehind: this.serverBehind,
|
|
620
|
+
removedOnOtherHistory: trusted !== null && divergences.some(entry => entry.removedOnOtherHistory),
|
|
621
|
+
};
|
|
430
622
|
if (own === 'revoked')
|
|
431
623
|
this.emitBridgeRevoked();
|
|
432
624
|
// Not listed is not a signed revocation: fail closed and say so, but never reset the identity on it.
|
|
433
625
|
else if (own === 'absent' && previous !== 'absent')
|
|
434
626
|
console.warn('[Security] This bridge is not in its account ledger; account devices are refused.');
|
|
627
|
+
if (own !== previous || this.status.head !== previousHead)
|
|
628
|
+
this.emitLedgerHead();
|
|
435
629
|
this.emitRevoked(await projection);
|
|
436
630
|
return own;
|
|
437
631
|
}
|
|
632
|
+
emitLedgerHead() {
|
|
633
|
+
for (const listener of Array.from(this.headListeners)) {
|
|
634
|
+
try {
|
|
635
|
+
listener();
|
|
636
|
+
}
|
|
637
|
+
catch (error) {
|
|
638
|
+
console.error('[Security] ledgerHead listener failed:', error);
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
}
|
|
438
642
|
emitRevoked(endpointIds) {
|
|
439
643
|
for (const id of endpointIds)
|
|
440
644
|
for (const listener of this.revoked)
|
|
@@ -525,6 +729,7 @@ export class BridgeSecurityService {
|
|
|
525
729
|
this.approvalListeners.clear();
|
|
526
730
|
this.approvalEmitted.clear();
|
|
527
731
|
this.replay.clear();
|
|
732
|
+
this.headListeners.clear();
|
|
528
733
|
await this.policy.close();
|
|
529
734
|
}
|
|
530
735
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../../src/security/bridge/security.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../../src/security/bridge/security.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAI/D,OAAO,EAAE,iBAAiB,EAA4C,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAA4B,MAAM,kBAAkB,CAAC;AAC7G,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGpG,OAAO,EAAE,sBAAsB,EAAyB,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnE,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;AACzD,MAAM,WAAW,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC/C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACrI,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;IACxJ,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3I,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;CAC5H,CAAC,CAAC;AACH,MAAM,MAAM,GAAG,CAAC,KAAsB,EAAmC,EAAE;IACzE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IACnH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAc,EAAmB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAoB,CAAC;AAyDzH,0HAA0H;AAC1H,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACjC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AACpC,MAAM,QAAQ,GAAuB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACxG,MAAM,MAAM,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClG,MAAM,UAAU,GAAG,CAAC,KAAc,EAAiB,EAAE,CACnD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7H,+HAA+H;AAC/H,KAAK,UAAU,QAAQ,CAAC,SAAkB;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACxJ,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAC1B,CAAC;AAED,mGAAmG;AACnG,MAAM,OAAO,qBAAqB;IAkCX;IAAqC;IAA4C;IAjC7F,QAAQ,CAAC;IACT,aAAa,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,CAAoB;IAClB,GAAG,CAAe;IAClB,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACnC,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAC;IAClD,sBAAsB,GAAG,IAAI,GAAG,EAAc,CAAC;IAC/C,qBAAqB,GAAG,IAAI,OAAO,EAAc,CAAC;IAC3D,oBAAoB,GAAG,KAAK,CAAC;IACpB,QAAQ,GAAG,IAAI,OAAO,EAAuB,CAAC;IACvD,MAAM,GAAG,KAAK,CAAC;IACN,SAAS,CAAe;IACzC,uHAAuH;IAC/G,UAAU,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;IACjD,MAAM,GAAwC;QACpD,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK;KAClI,CAAC;IACe,aAAa,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC5C,aAAa,GAAG,IAAI,GAAG,EAAc,CAAC;IACtC,eAAe,CAAe;IAC/C,sFAAsF;IAC9E,WAAW,GAA4B,IAAI,CAAC;IACpD,oIAAoI;IAC5H,IAAI,GAA6B,IAAI,CAAC;IACtC,KAAK,GAA0C,IAAI,CAAC;IAC3C,iBAAiB,GAAG,IAAI,GAAG,EAAgC,CAAC;IAC5D,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,aAAa,GAAG,IAAI,GAAG,EAA8B,CAAC;IAC/D,YAAY,GAAG,KAAK,CAAC;IAC7B,6EAA6E;IACrE,cAAc,GAAkB,IAAI,CAAC;IACrC,UAAU,GAAyB,IAAI,CAAC;IACxC,aAAa,GAAyB,IAAI,CAAC;IACnD,YAAqB,QAA0B,EAAW,QAAgB,EAAE,OAAe,EAAW,OAA8B;QAA/G,aAAQ,GAAR,QAAQ,CAAkB;QAAW,aAAQ,GAAR,QAAQ,CAAQ;QAA4B,YAAO,GAAP,OAAO,CAAuB;QAClI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QACtE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QACjD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/E,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ;gBAAE,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;YACzF,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACO,OAAO,CAAC,KAA8B;QAC5C,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;QACpG,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,QAAQ,EAAE;YAC/E,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,cAAc,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,QAAQ,EAAE;gBACtE,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;oBAC7C,CAAC,CAAC,UAAU,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjE,IAAI,QAAQ,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACzH,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACO,SAAS,CAAC,QAAwB,EAAE,UAAmB;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,QAAQ,CAAC,SAAS,GAAG,GAAG,GAAG,KAAK,IAAI,QAAQ,CAAC,SAAS,IAAI,GAAG,IAAI,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC;YACtH,MAAM,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,UAAU,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;IAClH,CAAC;IACO,KAAK,CAAC,QAAwB;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,OAAO,IAAI,GAAG;gBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpF,MAAM,EAAE,GAAG,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxD,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK;YAAE,MAAM,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;QAClF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IACO,KAAK,CAAC,MAAM,CAAC,MAAoC,EAAE,QAAwB,EAAE,KAA8B;QACjH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACjH,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC;YAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAAC,CAAC;QACnF,MAAM,CAAC;YAAC,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;QAAC,CAAC;IAC9D,CAAC;IACO,KAAK,CAAC,KAAK,CAAC,SAAuC,EAAE,OAAkC,EAAE,IAAa,EAC5G,KAA8B,EAAE,YAAoB,UAAU,EAAE;QAChE,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/G,CAAC;IACD,6DAA6D;IACrD,KAAK,CAAC,UAAU,CAAC,SAAuC,EAAE,OAAkC,EAAE,SAAqB,EACzH,KAA8B,EAAE,SAAiB;QACjD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE;YAChI,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS;YACnG,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IAC7F,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,MAAyC,EAAE,KAA8B;QAC7F,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7K,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACvD,IAAI,QAAQ,CAAC,OAAO,KAAK,QAAQ;gBAAE,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;YAClF,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;gBAC9G,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YACjK,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;gBAAE,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;YAC5H,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QACrL,CAAC;QACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO;YAAE,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;QACjF,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9I,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/K,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnE,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,QAAQ,CAAC,SAAS;YAAE,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;QAChH,OAAO,OAAO,CAAC;IACjB,CAAC;IACO,gBAAgB,CAAC,KAAc;QACrC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnJ,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3D,CAAC;IACO,WAAW,CAAC,WAA8B,EAAE,SAAkC;QACpF,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,SAAS,KAAK,aAAa,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7G,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC;uBAC9F,CAAC,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,SAAS;oBAAE,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;gBACtI,OAAO,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;mBACtG,CAAC,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,SAAS;gBAAE,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;YAC5I,OAAO,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,iBAAiB,CAAC;mBAChG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;gBAAE,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;YACpN,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,SAAS;mBACjE,CAAC,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS;gBAAE,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;YACpI,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBAAE,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;YACpH,OAAO,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,iBAAiB,CAAC,MAAsB,EAAE,KAA8B;QAC5E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,QAAQ,CAAC,OAAO,KAAK,aAAa;YAAE,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;QACvF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1F,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW;mBAC7E,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAAE,MAAM,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;QAC7J,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAAC,OAAO,OAAO,CAAC;IAC7C,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,SAA4B,IAAmB,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1G,uGAAuG;IACvG,KAAK,CAAC,qBAAqB,CAAC,OAA4B,EAAE,KAA8B;QACtF,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACxC,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,CAAC,OAAO,KAAK,iBAAiB;YAAE,OAAO,IAAI,CAAC;QACzG,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAAC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QACpF,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACtE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;eACzF,OAAO,CAAC,QAAQ,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;eAC1F,OAAO,CAAC,QAAQ,CAAC,SAAS,KAAK,WAAW,CAAC,KAAK,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtG,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,aAAa;YAC/F,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI;YAC9E,IAAI,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI;oBACjG,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAClH,oFAAoF;QACpF,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,WAA8B,EAAE,KAA8B;QAC9F,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,EACrF,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QACtF,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACxC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CAAC,OAAe,EAAE,WAA8B;QACnE,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACrG,MAAM,KAAK,GAA4B,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC9G,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;QACxE,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,EACjF,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,gBAAgB,CAAC,KAAiD,EAAE,OAA0B,IAA+B,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnL,WAAW,CAAC,KAAwB,IAAiC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtG,KAAK,CAAC,cAAc,CAAC,KAAwB,EAAE,UAAkB;QAC/D,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC5C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO;YAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC;IACD;;;;;;OAMG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;YAC3C,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YAC7B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACxC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QACH,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAC7D,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IACD;;;;;OAKG;IACH,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAClE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/G,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACO,KAAK,CAAC,WAAW;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAChG,CAAC;IACD;;;;OAIG;IACH,KAAK,CAAC,gBAAgB;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;QAC5F,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YAAC,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAAC,CAAC;QAC7C,OAAO,KAAK,EAAE,CAAC;YAAC,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAAC,CAAC;QACpJ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACnC,CAAC;IACD,qDAAqD;IACrD,KAAK,CAAC,WAAW,CAAC,SAAkB,EAAE,MAAoB;QACxD,OAAO,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IACpE,CAAC;IACD;;;;;;;OAOG;IACH,iBAAiB,CAAC,SAAkB,EAAE,MAAoB;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1E,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC9B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC9B,OAAO;YACT,CAAC;YACD,MAAM,OAAO,GAAiB,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACxC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;gBAC9B,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO;oBAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAClF,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC,KAAK,CAAC,GAAuB,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO;gBAAE,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClI,CAAC,CAAC,CAAC;IACL,CAAC;IACO,KAAK,CAAC,QAAQ,CAAC,SAAkB,EAAE,MAAoB;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAO,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,QAAQ,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI;eAC7F,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;YACnE,IAAI,KAAK,GAAuB,SAAS,CAAC;YAC1C,IAAI,CAAC;gBAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,wBAAwB,CAAC,CAAC;YAC/E,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1J,CAAC;QACD,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YAAC,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC;QAC7D,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACxE,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,OAAO,GAAuB,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC;QACjL,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACrG,IAAI,CAAC;YAAC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QAC9C,OAAO,KAAK,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAAC,CAAC;QAC/F,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,iHAAiH;IACzG,QAAQ,CAAC,MAAoB,EAAE,OAA2B;QAChE,IAAI,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChI,OAAO,OAAO,CAAC;IACjB,CAAC;IACO,eAAe,CAAC,MAAe,EAAE,QAAuB;QAC9D,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IACzD,CAAC;IACD;;;;OAIG;IACH,cAAc,CAAC,MAAwD;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/F,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxE,IAAI,QAAQ,GAAuB,SAAS,CAAC;QAC7C,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC;gBAAC,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,IAAI,CAAC;YAAC,CAAC;QACpG,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,KAAK,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAClF,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD;;;OAGG;IACH,aAAa;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,EAAE,YAAY,IAAI,IAAI,CAAC;QAC7F,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACvF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;YAC3C,IAAI,IAAI,KAAK,eAAe,IAAI,IAAI,KAAK,eAAe;gBAAE,QAAQ,EAAE,CAAC;YACrE,IAAI,IAAI,KAAK,eAAe;gBAAE,QAAQ,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC/E,CAAC;IACD;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,SAA4B;QAC7C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC/C,6HAA6H;QAC7H,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACvI,CAAC;IACD,4FAA4F;IAC5F,KAAK,CAAC,UAAU,CAAC,SAA4B;QAC3C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC/C,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IAClH,CAAC;IACO,KAAK,CAAC,WAAW,CAAC,SAA4B;QACpD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;QAC5F,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACpC,uGAAuG;QACvG,IAAI,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO;eAC/F,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;eACnD,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAClI,MAAM,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD;6GACyG;IACzG,iBAAiB,CAAC,GAAY;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC/D,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO;QACxB,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/G,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IACD,YAAY;QACV,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;IAC1J,CAAC;IACD;;;;;;OAMG;IACH,KAAK,CAAC,qBAAqB,CAAC,YAA8B;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACrD,IAAI,QAAQ,GAA8B,IAAI,CAAC;QAC/C,IAAI,CAAC;YACH,IAAI,YAAY,CAAC,IAAI,KAAK,QAAQ,IAAI,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC;YACxF,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;YACjC,IAAI,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI;mBACxE,MAAM,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;gBAC3E,qFAAqF;gBACrF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACzB,IAAI,KAAK,KAAK,IAAI;oBAAE,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;YACtH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YAAC,QAAQ,GAAG,IAAI,CAAC;QAAC,CAAC;QAC5B,IAAI,QAAQ,KAAK,IAAI;YAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;;YAC/C,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD;6CACyC;IACzC,YAAY,CAAC,QAAoB;QAC/B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IACO,UAAU,CAAI,GAAqB;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,gEAAgE;IACxD,OAAO;QACb,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,IAAI,EAAE,EAAE,CAAC;IACxK,CAAC;IACD;;;;;OAKG;IACK,KAAK,CAAC,OAAgC,EAAE,MAAqB;QACnE,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,UAAU,CAAC;QACxC,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAO,QAAQ,CAAC;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,KAAK,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC,UAAU;eAC7I,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,GAAG,CAAC,iBAAiB,CAAC;YAAE,OAAO,QAAQ,CAAC;QACzE,OAAO,MAAM,KAAK,IAAI,IAAI,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IACpF,CAAC;IACD;qGACiG;IACzF,KAAK,CAAC,YAAY,CAAC,KAAwB;QACjD,uGAAuG;QACvG,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACnE,IAAI,CAAC;gBAAC,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAAC,CAAC;QACzH,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9F,CAAC;IACO,KAAK,CAAC,OAAO,CAAC,OAAgC,EAAE,gBAA+B,EAAE,cAA2C,EAAE,EACpI,SAAwB,IAAI;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACpG,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACtC,gGAAgG;QAChG,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QACrF,MAAM,UAAU,GAAG,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAClE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1J,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;SACrF,CAAC;QACF,IAAI,CAAC,MAAM,GAAG;YACZ,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY;YACzJ,qBAAqB,EAAE,OAAO,KAAK,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC;SAClG,CAAC;QACF,IAAI,GAAG,KAAK,SAAS;YAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAChD,qGAAqG;aAChG,IAAI,GAAG,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ;YAAE,OAAO,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;QACtJ,IAAI,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;YAAE,IAAI,CAAC,cAAc,EAAE,CAAC;QACjF,IAAI,CAAC,WAAW,CAAC,MAAM,UAAU,CAAC,CAAC;QACnC,OAAO,GAAG,CAAC;IACb,CAAC;IACO,cAAc;QACpB,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC;gBAAC,QAAQ,EAAE,CAAC;YAAC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAAC,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YAAC,CAAC;QACvG,CAAC;IACH,CAAC;IACO,WAAW,CAAC,WAAqB;QACvC,KAAK,MAAM,EAAE,IAAI,WAAW;YAAE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO;gBAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IACO,iBAAiB;QACvB,IAAI,IAAI,CAAC,oBAAoB;YAAE,OAAO;QACtC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;YAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACrG,CAAC;IACO,mBAAmB,CAAC,QAAoB;QAC9C,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;QACrD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;QACrG,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,QAAQ,EAAE,CAAC;YACnC,IAAI,MAAM,YAAY,OAAO;gBAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;IACpC,CAAC;IACD,SAAS,CAAC,QAAsC,IAAgB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzI;;;;;OAKG;IACH,kBAAkB,CAAC,QAAsC;QACvD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IACO,KAAK,CAAC,eAAe,CAAC,UAAkB;QAC9C,IAAI,CAAC;YAAC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAAC,CAAC;QACvD,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,KAAK,YAAY,mBAAmB,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB;gBAAE,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YACtH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACO,oBAAoB,CAAC,UAAkB;QAC7C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QACrF,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;QACjC,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;YAAE,OAAO;QACjJ,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACnD,IAAI,CAAC,CAAC,EAAE,GAAG,SAAS,GAAG,mBAAmB,IAAI,EAAE,IAAI,SAAS,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,sBAAsB;YAAE,OAAO;QACxG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;QACxG,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAY,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC7C,IAAI,MAAM,YAAY,OAAO;oBAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,0FAA0F;IAC1F,eAAe,CAAC,QAAoB;QAClC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,iGAAiG;QACjG,IAAI,IAAI,CAAC,oBAAoB;YAAE,cAAc,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5I,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC7I,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { EndpointIdentity, EndpointKind, EndpointPublic, EnvelopeHeader, OpenContext, SecureEnvelope, SecurePublication, SecurityErrorCode, SecurityFailure } from './protocol.js';
|
|
2
2
|
/** Wire limits apply to serialized UTF-8, including headers and base64 expansion. */
|
|
3
3
|
export declare const MAX_ENVELOPE_BYTES = 450000;
|
|
4
|
+
/** Upper bound of validated public keys kept; the least recently used one is dropped first. */
|
|
5
|
+
export declare const PUBLIC_KEY_CACHE_LIMIT = 256;
|
|
4
6
|
/** A safe, stable error: underlying crypto/input details never cross this boundary. */
|
|
5
7
|
export declare class SecurityError extends Error implements SecurityFailure {
|
|
6
8
|
readonly code: SecurityErrorCode;
|