ftown-bridge 0.19.18 → 0.19.20
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/index.js +223 -3
- package/dist/index.js.map +1 -1
- package/dist/solo/contract.d.ts +104 -0
- package/dist/solo/contract.js +248 -0
- package/dist/solo/contract.js.map +1 -0
- package/dist/solo/hub-manager.d.ts +85 -0
- package/dist/solo/hub-manager.js +381 -0
- package/dist/solo/hub-manager.js.map +1 -0
- package/dist/solo/panel-manager.d.ts +121 -0
- package/dist/solo/panel-manager.js +704 -0
- package/dist/solo/panel-manager.js.map +1 -0
- package/dist/solo/solo-auth.d.ts +25 -0
- package/dist/solo/solo-auth.js +83 -0
- package/dist/solo/solo-auth.js.map +1 -0
- package/dist/solo/solo-server.d.ts +105 -0
- package/dist/solo/solo-server.js +399 -0
- package/dist/solo/solo-server.js.map +1 -0
- package/dist/solo/ws-proxy.d.ts +55 -0
- package/dist/solo/ws-proxy.js +228 -0
- package/dist/solo/ws-proxy.js.map +1 -0
- package/opencode-plugin/ftown.js +14 -7
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { Command as Commander } from 'commander';
|
|
3
3
|
import { v4 as uuidv4 } from 'uuid';
|
|
4
4
|
import { resolve, dirname, join } from 'node:path';
|
|
5
|
-
import { homedir, hostname as osHostname } from 'node:os';
|
|
5
|
+
import { homedir, hostname as osHostname, networkInterfaces } from 'node:os';
|
|
6
6
|
import { fileURLToPath } from 'node:url';
|
|
7
7
|
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync, unlinkSync } from 'node:fs';
|
|
8
8
|
import { randomBytes } from 'node:crypto';
|
|
@@ -46,6 +46,32 @@ import { LoopScheduler, LOOP_TICK_INTERVAL_MS } from './loop-scheduler.js';
|
|
|
46
46
|
import { LoopController } from './loop-controller.js';
|
|
47
47
|
import { SessionController } from './session-controller.js';
|
|
48
48
|
import { runPairing } from './pairing-client.js';
|
|
49
|
+
import { createServer } from 'node:http';
|
|
50
|
+
import { generateAccessKey, mintHubJwt, sha256Hex } from './solo/solo-auth.js';
|
|
51
|
+
import { DEFAULT_SOLO_PORT, SOLO_USER_ID } from './solo/contract.js';
|
|
52
|
+
import { ensureHubBinary, startHub, stopHub, writeHubConfig } from './solo/hub-manager.js';
|
|
53
|
+
import { ensurePanelBundle, findPanelServerDir, startPanel, stopPanel, } from './solo/panel-manager.js';
|
|
54
|
+
import { createSoloServer } from './solo/solo-server.js';
|
|
55
|
+
/** Bridge package version — doubles as the default panel bundle version. */
|
|
56
|
+
const BRIDGE_VERSION = JSON.parse(readFileSync(resolve(dirname(fileURLToPath(import.meta.url)), '..', 'package.json'), 'utf8')).version;
|
|
57
|
+
/** LAN IPv4 addresses for the solo banner (loopback excluded). */
|
|
58
|
+
function networkInterfacesForBanner() {
|
|
59
|
+
const out = [];
|
|
60
|
+
try {
|
|
61
|
+
const nets = networkInterfaces();
|
|
62
|
+
for (const list of Object.values(nets)) {
|
|
63
|
+
for (const net of list ?? []) {
|
|
64
|
+
if (net.family === 'IPv4' && !net.internal)
|
|
65
|
+
out.push(net.address);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch { /* best-effort banner */ }
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
72
|
+
function isLoopbackOnly(ips) {
|
|
73
|
+
return ips.length === 0;
|
|
74
|
+
}
|
|
49
75
|
const __filename = fileURLToPath(import.meta.url);
|
|
50
76
|
const __dirname = dirname(__filename);
|
|
51
77
|
const DEFAULT_API_URL = 'https://ftown.ia.br';
|
|
@@ -75,6 +101,9 @@ const program = new Commander();
|
|
|
75
101
|
program
|
|
76
102
|
.name('ftown-bridge')
|
|
77
103
|
.description('ftown orchestrator bridge for Centrifugo')
|
|
104
|
+
.option('--solo', 'Single-port LAN deployment: no account service, managed hub + panel children, key-based auth')
|
|
105
|
+
.option('--port <port>', 'Public port for --solo front (default: see DEFAULT_SOLO_PORT)')
|
|
106
|
+
.option('--rotate-key', 'With --solo: regenerate the access key, print the new banner, exit (offline)')
|
|
78
107
|
.option('--token <jwt>', 'Bridge bootstrap token from the ftown dashboard (short-lived; used once to onboard, then a rotating refresh token is stored). Optional: with no token and no stored refresh token, the bridge runs interactive device pairing instead.')
|
|
79
108
|
.option('--api-url <url>', 'ftown UI API URL', DEFAULT_API_URL)
|
|
80
109
|
.option('--data-dir <path>', 'Directory for session data (default: ~/.ftown/data)')
|
|
@@ -109,6 +138,24 @@ program
|
|
|
109
138
|
catch (err) {
|
|
110
139
|
console.error('[Bridge] Failed to persist bridge id:', err instanceof Error ? err.message : String(err));
|
|
111
140
|
}
|
|
141
|
+
// L4: --rotate-key short-circuits BEFORE any listener binds (exit 0,
|
|
142
|
+
// nothing started). Without --solo it is an argument error.
|
|
143
|
+
if (opts.rotateKey && !opts.solo) {
|
|
144
|
+
program.error('--rotate-key requires --solo');
|
|
145
|
+
}
|
|
146
|
+
if (opts.solo && opts.rotateKey) {
|
|
147
|
+
const raw = generateAccessKey().raw;
|
|
148
|
+
mkdirSync(join(dataDir, 'solo'), { recursive: true, mode: 0o700 });
|
|
149
|
+
writeFileSync(join(dataDir, 'solo', 'access-key-hash'), `${sha256Hex(raw)}\n`, { mode: 0o600 });
|
|
150
|
+
const port = opts.port ? Number(opts.port) : DEFAULT_SOLO_PORT;
|
|
151
|
+
console.log('========================================');
|
|
152
|
+
console.log(' ftown SOLO — access key rotated');
|
|
153
|
+
for (const ip of networkInterfacesForBanner()) {
|
|
154
|
+
console.log(` Open: http://${ip}:${port}/#k=${raw}`);
|
|
155
|
+
}
|
|
156
|
+
console.log('========================================');
|
|
157
|
+
process.exit(0);
|
|
158
|
+
}
|
|
112
159
|
// The local API server binds before the token fetch: its ephemeral port and
|
|
113
160
|
// the per-process loopback nonce ride the auth request so the UI can embed
|
|
114
161
|
// them in the Centrifugo connection JWT `info` claim (presence advert, L2).
|
|
@@ -119,6 +166,143 @@ program
|
|
|
119
166
|
const hookPort = await localApiServer.start();
|
|
120
167
|
console.log(`[Bridge] Local API server started on port ${hookPort}`);
|
|
121
168
|
const localNonce = randomBytes(16).toString('hex');
|
|
169
|
+
// ----- SOLO MODE (contract: bridge/src/solo/contract.ts, lifecycle L1-L4) -----
|
|
170
|
+
let solo;
|
|
171
|
+
if (opts.solo) {
|
|
172
|
+
const hubSecretPath = join(dataDir, 'solo', 'hub-secret');
|
|
173
|
+
let hubSecret;
|
|
174
|
+
try {
|
|
175
|
+
hubSecret = readFileSync(hubSecretPath, 'utf8').trim();
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
hubSecret = randomBytes(32).toString('hex');
|
|
179
|
+
mkdirSync(dirname(hubSecretPath), { recursive: true, mode: 0o700 });
|
|
180
|
+
writeFileSync(hubSecretPath, `${hubSecret}\n`, { mode: 0o600 });
|
|
181
|
+
}
|
|
182
|
+
// Key lifecycle (S1/S11): raw key exists only in memory at generation and
|
|
183
|
+
// in the one-time banner. Persisted state is the hash alone. Rotation is
|
|
184
|
+
// handled by the L4 short-circuit above; here a missing hash means FIRST
|
|
185
|
+
// boot — generate fresh so the banner can print the full link.
|
|
186
|
+
const keyHashPath = join(dataDir, 'solo', 'access-key-hash');
|
|
187
|
+
let accessKeyRaw;
|
|
188
|
+
let accessKeyHash;
|
|
189
|
+
try {
|
|
190
|
+
accessKeyHash = readFileSync(keyHashPath, 'utf8').trim();
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
accessKeyRaw = generateAccessKey().raw;
|
|
194
|
+
accessKeyHash = sha256Hex(accessKeyRaw);
|
|
195
|
+
}
|
|
196
|
+
mkdirSync(join(dataDir, 'solo'), { recursive: true, mode: 0o700 });
|
|
197
|
+
writeFileSync(keyHashPath, `${accessKeyHash}\n`, { mode: 0o600 });
|
|
198
|
+
// Ephemeral private ports for children: probe free ports on loopback so
|
|
199
|
+
// collisions are practically impossible (contract "Ports" block).
|
|
200
|
+
const probeFreePort = () => new Promise((resolveP, rejectP) => {
|
|
201
|
+
const srv = createServer();
|
|
202
|
+
srv.listen(0, '127.0.0.1', () => {
|
|
203
|
+
const addr = srv.address();
|
|
204
|
+
if (!addr || typeof addr === 'string') {
|
|
205
|
+
srv.close(() => rejectP(new Error('Failed to allocate child port')));
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
srv.close(() => resolveP(addr.port));
|
|
209
|
+
});
|
|
210
|
+
srv.on('error', rejectP);
|
|
211
|
+
});
|
|
212
|
+
const hubPort = await probeFreePort();
|
|
213
|
+
const panelPort = await probeFreePort();
|
|
214
|
+
const soloConfig = {
|
|
215
|
+
port: opts.port ? Number(opts.port) : DEFAULT_SOLO_PORT,
|
|
216
|
+
hubPort,
|
|
217
|
+
panelPort,
|
|
218
|
+
dataDir,
|
|
219
|
+
accessKeyHash,
|
|
220
|
+
hubSecret,
|
|
221
|
+
};
|
|
222
|
+
const hubHealthy = { up: false };
|
|
223
|
+
const panelHealthy = { up: false };
|
|
224
|
+
const front = await createSoloServer({
|
|
225
|
+
config: soloConfig,
|
|
226
|
+
localApiPort: hookPort,
|
|
227
|
+
hub: { isHealthy: () => hubHealthy.up },
|
|
228
|
+
panel: { isHealthy: () => panelHealthy.up },
|
|
229
|
+
});
|
|
230
|
+
// Children ensured asynchronously AFTER the front listens (L1). The hub
|
|
231
|
+
// must be healthy before the Centrifugo client connects — gated below.
|
|
232
|
+
const soloDir = join(dataDir, 'solo');
|
|
233
|
+
const hubReady = (async () => {
|
|
234
|
+
const binPath = await ensureHubBinary({ dataDir });
|
|
235
|
+
const configPath = join(soloDir, 'centrifugo.json');
|
|
236
|
+
await writeHubConfig(configPath, { port: hubPort, secret: hubSecret });
|
|
237
|
+
await startHub({ configPath, binPath, dataDir });
|
|
238
|
+
hubHealthy.up = true;
|
|
239
|
+
console.log('[Solo] Hub is up (private port)');
|
|
240
|
+
})();
|
|
241
|
+
hubReady.catch((err) => {
|
|
242
|
+
console.error('[Solo] Hub failed to start:', err instanceof Error ? err.message : String(err));
|
|
243
|
+
});
|
|
244
|
+
// Panel version defaults to the bridge version (release-tag parity);
|
|
245
|
+
// override with FTOWN_SOLO_PANEL_VERSION for development.
|
|
246
|
+
const panelVersion = process.env.FTOWN_SOLO_PANEL_VERSION ?? `v${BRIDGE_VERSION}`;
|
|
247
|
+
const panelReady = (async () => {
|
|
248
|
+
if (process.env.FTOWN_SOLO_PANEL_DIR) {
|
|
249
|
+
// Dev escape hatch: serve an already-built standalone directory.
|
|
250
|
+
console.log(`[Solo] Using local panel dir: ${process.env.FTOWN_SOLO_PANEL_DIR}`);
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
const bundleDir = await ensurePanelBundle({ dataDir, version: panelVersion });
|
|
254
|
+
const serverDir = await findPanelServerDir(bundleDir);
|
|
255
|
+
await startPanel({ bundleDir: serverDir, port: panelPort, dataDir });
|
|
256
|
+
}
|
|
257
|
+
panelHealthy.up = true;
|
|
258
|
+
console.log('[Solo] Panel is up (private port)');
|
|
259
|
+
})();
|
|
260
|
+
panelReady.catch((err) => {
|
|
261
|
+
console.error('[Solo] Panel failed to start:', err instanceof Error ? err.message : String(err));
|
|
262
|
+
});
|
|
263
|
+
// One-time banner (S1 exception): full link ONLY when a fresh key was
|
|
264
|
+
// generated; otherwise print keyless URL + rotation hint.
|
|
265
|
+
const bannerIps = networkInterfacesForBanner();
|
|
266
|
+
console.log('========================================');
|
|
267
|
+
console.log(' ftown SOLO mode');
|
|
268
|
+
console.log(` Bridge ID: ${bridgeId}`);
|
|
269
|
+
for (const ip of bannerIps) {
|
|
270
|
+
const base = `http://${ip}:${front.port}`;
|
|
271
|
+
if (accessKeyRaw) {
|
|
272
|
+
console.log(` Open: ${base}/#k=${accessKeyRaw}`);
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
console.log(` URL: ${base} (key already paired — --rotate-key reprints)`);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
if (!accessKeyRaw) {
|
|
279
|
+
console.log(' Key not shown: already issued once. --rotate-key regenerates it.');
|
|
280
|
+
}
|
|
281
|
+
if (bannerIps.length === 0) {
|
|
282
|
+
console.log(' WARNING: no LAN interface detected; loopback only.');
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
console.log(' WARNING: bound to a non-loopback interface over plain HTTP (S9).');
|
|
286
|
+
}
|
|
287
|
+
console.log('========================================');
|
|
288
|
+
solo = {
|
|
289
|
+
config: soloConfig,
|
|
290
|
+
front,
|
|
291
|
+
hub: {
|
|
292
|
+
stop: () => {
|
|
293
|
+
void stopHub(dataDir).catch(() => { });
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
panel: {
|
|
297
|
+
stop: () => {
|
|
298
|
+
void stopPanel(dataDir).catch(() => { });
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
hubReady,
|
|
302
|
+
panelReady,
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
// ----- END SOLO MODE -----
|
|
122
306
|
// The bootstrap token (--token) is single-use and short-lived (F1). Once a
|
|
123
307
|
// bridge has onboarded it persists its rotating refresh token (F3) and
|
|
124
308
|
// resumes from that on restart, so the bootstrap token is never reused.
|
|
@@ -160,7 +344,18 @@ program
|
|
|
160
344
|
});
|
|
161
345
|
};
|
|
162
346
|
let auth;
|
|
163
|
-
if (
|
|
347
|
+
if (solo) {
|
|
348
|
+
// Solo mode: identity is synthesized locally (contract S2/S10). No
|
|
349
|
+
// refresh token exists; getToken() mints a fresh hub JWT on demand.
|
|
350
|
+
const token = mintHubJwt({ secret: solo.config.hubSecret });
|
|
351
|
+
auth = {
|
|
352
|
+
userId: SOLO_USER_ID,
|
|
353
|
+
token,
|
|
354
|
+
refreshToken: '',
|
|
355
|
+
centrifugoUrl: `ws://127.0.0.1:${solo.config.hubPort}/connection/websocket`,
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
else if (persistedRefreshToken) {
|
|
164
359
|
console.log('[Bridge] Resuming from stored refresh token...');
|
|
165
360
|
try {
|
|
166
361
|
auth = await refreshBridgeToken(opts.apiUrl, persistedRefreshToken, bridgeId, local);
|
|
@@ -174,7 +369,8 @@ program
|
|
|
174
369
|
auth = await onboard();
|
|
175
370
|
}
|
|
176
371
|
let currentRefreshToken = auth.refreshToken;
|
|
177
|
-
|
|
372
|
+
if (!solo)
|
|
373
|
+
persistRefreshToken(currentRefreshToken);
|
|
178
374
|
const userId = auth.userId;
|
|
179
375
|
const centrifugoUrl = auth.centrifugoUrl;
|
|
180
376
|
console.log('========================================');
|
|
@@ -185,6 +381,10 @@ program
|
|
|
185
381
|
console.log(` Data dir: ${dataDir}`);
|
|
186
382
|
console.log('========================================');
|
|
187
383
|
async function getToken() {
|
|
384
|
+
if (solo) {
|
|
385
|
+
// Solo: mint locally — no remote refresh, no refresh-token rotation.
|
|
386
|
+
return mintHubJwt({ secret: solo.config.hubSecret });
|
|
387
|
+
}
|
|
188
388
|
console.log('[Bridge] Refreshing Centrifugo token...');
|
|
189
389
|
// Same process ⇒ same port/nonce; the refresh route re-embeds them.
|
|
190
390
|
const refreshed = await refreshBridgeToken(opts.apiUrl, currentRefreshToken, bridgeId, local);
|
|
@@ -508,6 +708,19 @@ program
|
|
|
508
708
|
loopController,
|
|
509
709
|
publishCommandResponse: (response) => centrifugo.publishCommandResponse(userId, response),
|
|
510
710
|
});
|
|
711
|
+
// Solo: the hub child must be healthy before connecting (L1 gates the
|
|
712
|
+
// transport, not the front). A failed hub is fatal for solo — exit cleanly
|
|
713
|
+
// instead of crashing on an unhandled rejection.
|
|
714
|
+
if (solo) {
|
|
715
|
+
try {
|
|
716
|
+
await solo.hubReady;
|
|
717
|
+
console.log('[Solo] Hub healthy — connecting Centrifugo client');
|
|
718
|
+
}
|
|
719
|
+
catch (err) {
|
|
720
|
+
console.error('[Solo] Cannot continue without the hub:', err instanceof Error ? err.message : String(err));
|
|
721
|
+
process.exit(1);
|
|
722
|
+
}
|
|
723
|
+
}
|
|
511
724
|
centrifugo.connect();
|
|
512
725
|
centrifugo.joinBridgesChannel(userId, bridgeId);
|
|
513
726
|
centrifugo.subscribeToSessions(userId);
|
|
@@ -551,6 +764,13 @@ program
|
|
|
551
764
|
}, 2000);
|
|
552
765
|
const shutdown = () => {
|
|
553
766
|
console.log('\n[Bridge] Shutting down...');
|
|
767
|
+
// Solo L2 ordering: stop accepting first, then children (panel before
|
|
768
|
+
// hub), then the rest of the bridge teardown.
|
|
769
|
+
if (solo) {
|
|
770
|
+
void solo.front.close().catch(() => { });
|
|
771
|
+
solo.panel.stop();
|
|
772
|
+
solo.hub.stop();
|
|
773
|
+
}
|
|
554
774
|
scheduler.stop();
|
|
555
775
|
localApiServer.stop();
|
|
556
776
|
runner.stopAll();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEzH,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAA+B,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAA2B,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAIjD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAE9C;;;;;GAKG;AACH,SAAS,qBAAqB;IAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;QACvE,IAAI,CAAC;YACH,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,qCAAqC,SAAS,OAAO,UAAU,EAAE,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,+CAA+C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,SAAS,EAAE,CACvH,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,SAAS,EAAE,CAAC;AAEhC,OAAO;KACJ,IAAI,CAAC,cAAc,CAAC;KACpB,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,eAAe,EAAE,wOAAwO,CAAC;KACjQ,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,CAAC;KAC9D,MAAM,CAAC,mBAAmB,EAAE,qDAAqD,CAAC;KAClF,MAAM,CAAC,kBAAkB,EAAE,sDAAsD,CAAC;KAClF,MAAM,CAAC,KAAK,EAAE,IAA6E,EAAE,EAAE;IAC9F,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,WAAW,GACf,MAAM,CAAC,QAAQ,KAAK,WAAW;QAC/B,MAAM,CAAC,QAAQ,KAAK,WAAW;QAC/B,MAAM,CAAC,QAAQ,KAAK,KAAK;QACzB,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG,EAAE,CAAC;QACjG,OAAO,CAAC,KAAK,CACX,oDAAoD,IAAI,CAAC,MAAM,KAAK;YAClE,+DAA+D;YAC/D,oEAAoE,CACvE,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC;IAC/E,0EAA0E;IAC1E,uEAAuE;IACvE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAChD,IAAI,iBAAqC,CAAC;IAC1C,IAAI,CAAC;QACH,iBAAiB,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB,GAAG,SAAS,CAAC;IAChC,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,iBAAiB,IAAI,MAAM,EAAE,CAAC;IAChE,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,aAAa,CAAC,YAAY,EAAE,GAAG,QAAQ,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3G,CAAC;IAED,4EAA4E;IAC5E,2EAA2E;IAC3E,4EAA4E;IAC5E,0EAA0E;IAC1E,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjD,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,6CAA6C,QAAQ,EAAE,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEnD,2EAA2E;IAC3E,uEAAuE;IACvE,wEAAwE;IACxE,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAClD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAExD,IAAI,qBAAyC,CAAC;IAC9C,IAAI,CAAC;QACH,qBAAqB,GAAG,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB,GAAG,SAAS,CAAC;IACpC,CAAC;IAED,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAQ,EAAE;QAClD,IAAI,CAAC;YACH,aAAa,CAAC,gBAAgB,EAAE,GAAG,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,2CAA2C,EAC3C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,6EAA6E;IAC7E,8EAA8E;IAC9E,+EAA+E;IAC/E,4CAA4C;IAC5C,MAAM,OAAO,GAAG,KAAK,IAAiC,EAAE;QACtD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;QAC1F,OAAO,UAAU,CAAC;YAChB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ;YACR,QAAQ,EAAE,UAAU,EAAE;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;SAC/B,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,IAAwB,CAAC;IAC7B,IAAI,qBAAqB,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC9D,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACvF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CACV,oFAAoF,EACpF,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;YACF,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC;IAC5C,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IAEzC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,qBAAqB,aAAa,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAExD,KAAK,UAAU,QAAQ;QACrB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,oEAAoE;QACpE,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC9F,uEAAuE;QACvE,uEAAuE;QACvE,mBAAmB,GAAG,SAAS,CAAC,YAAY,CAAC;QAC7C,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,SAAS,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IACxC,oEAAoE;IACpE,mEAAmE;IACnE,uCAAuC;IAEvC,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAExD,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;QAC3E,yEAAyE;QACzE,yEAAyE;QACzE,gEAAgE;QAChE,WAAW,EAAE,KAAK,IAAI,EAAE;YACtB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;YAC5C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,UAAU,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACzD,CAAC;YACD,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;YAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,UAAU,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,CAAC,GAAG,CACT,sBAAsB,QAAQ,CAAC,MAAM,mBAAmB,KAAK,CAAC,MAAM,qCAAqC,CAC1G,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IACH,8EAA8E;IAC9E,+EAA+E;IAC/E,wEAAwE;IACxE,qDAAqD;IACrD,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC;QACxC,QAAQ;QACR,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;YAClB,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClD,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACpD,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACvE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE;KAC/D,CAAC,CAAC;IACH,2EAA2E;IAC3E,6EAA6E;IAC7E,4EAA4E;IAC5E,gFAAgF;IAChF,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,CAAC;QAAC,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,kDAAkD,CAAC,CAAC;IAC7G,MAAM,cAAc,GAAG,IAAI,kBAAkB,CAAC;QAC5C,QAAQ;QACR,KAAK,EAAE,UAAU;QACjB,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;QAC5C,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACpD,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACvE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE;KAC/D,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;QACtC,QAAQ,EAAE,aAAa;QACvB,WAAW,EAAE,WAAW;QACxB,QAAQ,EAAE,cAAc;QACxB,UAAU;QACV,MAAM;QACN,wEAAwE;QACxE,uEAAuE;QACvE,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;KAC3E,CAAC,CAAC;IACH,yEAAyE;IACzE,0EAA0E;IAC1E,yEAAyE;IACzE,iEAAiE;IACjE,aAAa,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IAE5D,0EAA0E;IAC1E,MAAM,kBAAkB,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC;IAC1D,IAAI,kBAAkB,EAAE,CAAC;QACvB,cAAc,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,qDAAqD,QAAQ,KAAK,CAAC,CAAC;IAClF,CAAC;IACD,cAAc,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;IACnF,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5E,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAEvC,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACzE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IAChE,MAAM,sBAAsB,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;IACpF,MAAM,eAAe,GAAG,kBAAkB,CAAC,sBAAsB,CAAC,CAAC;IACnE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACrC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,0BAA0B,eAAe,EAAE,CAAC,CAAC;IACzD,wEAAwE;IACxE,6DAA6D;IAC7D,IAAI,MAAM,uBAAuB,EAAE,EAAE,CAAC;QACpC,MAAM,yBAAyB,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAC1F,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,6BAA6B,kBAAkB,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,iBAAiB,GAAG,CAAC,SAAiB,EAAQ,EAAE;QACpD,UAAU,CAAC,wBAAwB,CACjC,MAAM,EACN,SAAS,EACT,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAC3C,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAC7D,CAAC,GAAG,EAAE,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACrC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAA2B;QACjD,KAAK;QACL,MAAM;QACN,UAAU;QACV,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,SAAS,EAAE,QAAQ;QACnB,gBAAgB;QAChB,iBAAiB;KAClB,CAAC;IACF,cAAc,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IAErD,+EAA+E;IAC/E,gFAAgF;IAChF,yEAAyE;IACzE,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC;QAClC,KAAK;QACL,MAAM;QACN,UAAU;QACV,MAAM;QACN,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,KAAK,CAAC;QACtE,aAAa,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC;KACvG,CAAC,CAAC;IACH,cAAc,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IAEnD,sEAAsE;IACtE,yEAAyE;IACzE,8BAA8B;IAC9B,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC;QAC5B,KAAK;QACL,eAAe;QACf,mBAAmB,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC;QAChF,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC;QACnF,gBAAgB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;QACjF,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC;QAClD,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC;KACxD,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEpB,2EAA2E;IAC3E,MAAM,YAAY,GAAG,IAAI,mBAAmB,CAAC;QAC3C,KAAK;QACL,MAAM;QACN,QAAQ;QACR,kBAAkB;QAClB,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC;QACnF,iBAAiB;KAClB,CAAC,CAAC;IAEH,oEAAoE;IACpE,MAAM,gBAAgB,GAAG,IAAI,uBAAuB,CAAC;QACnD,KAAK;QACL,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC;KACpF,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC;QAChD,KAAK;QACL,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC;KACpF,CAAC,CAAC;IAEH,yEAAyE;IACzE,qEAAqE;IACrE,8DAA8D;IAC9D,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;QACxC,QAAQ;QACR,SAAS;QACT,gBAAgB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;QAChD,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;QACvE,kBAAkB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC;QAC7E,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC;QAC7E,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC;KACrD,CAAC,CAAC;IACH,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;QAC9C,KAAK;QACL,MAAM;QACN,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC;QACnF,aAAa,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC;QACtG,cAAc,EAAE,kBAAkB;QAClC,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC;QACvD,oBAAoB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC;QAC7E,gBAAgB,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC;QACjE,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC;QAClD,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7C,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC;KACvD,CAAC,CAAC;IAEH,wEAAwE;IACxE,wEAAwE;IACxE,mEAAmE;IACnE,gEAAgE;IAChE,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACrE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC;QACtC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACvD,IAAI,OAAyC,CAAC;IAC9C,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;QACzC,yEAAyE;QACzE,0DAA0D;QAC1D,IAAI,MAAM,oBAAoB,EAAE,EAAE,CAAC;YACjC,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAC1D,CAAC;QACD,sBAAsB,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,0BAA0B,cAAc,EAAE,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,IAAI,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;IAC9G,CAAC;IAED,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACxE,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAC5E,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAC5E,KAAK,MAAM,WAAW,IAAI,CAAC,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,EAAE,CAAC;QACrG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;QAC3E,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,uBAAuB,CAAC;QAC7C,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;IAEpD,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;QACrF,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,wBAAwB,CAAC;QAC9C,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAC/D,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,uCAAuC,gBAAgB,EAAE,CAAC,CAAC;IAEvE,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACzE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC;QACxC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC;IAE3D,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACvE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC;QACpC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IACrD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,uCAAuC,gBAAgB,EAAE,CAAC,CAAC;IAEvE,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,uCAAuC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,aAAa,CACX,iBAAiB,EACjB,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,QAAQ;YACf,QAAQ;YACR,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,OAAO,EAAE,WAAW;YAC7B,UAAU,EAAE,OAAO,EAAE,OAAO;SAC7B,EAAE,IAAI,EAAE,CAAC,CAAC,EACX,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,oCAAoC,iBAAiB,EAAE,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,cAAc,GAAG,GAAS,EAAE;QAChC,IAAI,CAAC;YAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACrE,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpE,SAAS,iBAAiB,CAAC,GAAW;QACpC,qEAAqE;QACrE,MAAM,WAAW,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtD,IAAI,WAAW,EAAE,CAAC;YAChB,aAAa,CAAC,qBAAqB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACxD,CAAC;QAED,2EAA2E;QAC3E,sEAAsE;QACtE,6DAA6D;QAC7D,uDAAuD;QACvD,MAAM,SAAS,GAAG,SAAS,CAAC;QAC5B,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,GAAG,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACrD,OAAO,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,SAAS,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;YAC7E,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YACxC,GAAG,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,IAAI,GAAG,KAAK,WAAW;YAAE,OAAO;QAChC,aAAa,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,SAAS,kBAAkB,CAAC,GAAW,EAAE,IAAY,EAAE,IAAY;QACjE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/B,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,SAAoB,EAAE,EAAE;QAClD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1D,MAAM,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,EAAE;gBAC7D,IAAI,EAAE,YAAY;gBAClB,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,4CAA4C,SAAS,CAAC,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,oBAAoB,CAAC;QACzC,QAAQ;QACR,iBAAiB;QACjB,cAAc;QACd,sBAAsB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC;KAC1F,CAAC,CAAC;IAEH,UAAU,CAAC,OAAO,EAAE,CAAC;IACrB,UAAU,CAAC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,UAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACvC,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEpC,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,UAAU,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;QACjD,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACnC,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE;QACnB,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IACH,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,KAAK,GAAG,IAAI,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACzD,IAAI,CAAC;gBACH,MAAM,YAAY,CAAC,iBAAiB,EAAE,CAAC;YACzC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAC;YAC9D,CAAC;YACD,2EAA2E;YAC3E,+CAA+C;YAC/C,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAC;gBACnC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,EAAE,CAAC;oBAC/B,MAAM,UAAU,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;wBAC7D,OAAO,CAAC,KAAK,CAAC,mCAAmC,IAAI,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;oBAC7E,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,SAAS,CAAC,KAAK,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,+CAA+C,qBAAqB,KAAK,CAAC,CAAC;YACzF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC;YACjE,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,SAAS,CAAC,IAAI,EAAE,CAAC;QACjB,cAAc,CAAC,IAAI,EAAE,CAAC;QACtB,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC1B,WAAW,CAAC,QAAQ,EAAE,CAAC;QACvB,aAAa,CAAC,OAAO,EAAE,CAAC;QACxB,gFAAgF;QAChF,IAAI,CAAC;YAAC,UAAU,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAClE,UAAU,CAAC,UAAU,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ftown Solo — frozen contract v2 for the single-port LAN deployment mode.
|
|
3
|
+
* REVISION 2 — gauntlet round 1 findings applied (see SOLO_CONTRACT_REVISION).
|
|
4
|
+
*
|
|
5
|
+
* PRODUCT DEFINITION (do not renegotiate in module code):
|
|
6
|
+
* `ftown-bridge --solo` binds ONE HTTP port on the LAN and serves:
|
|
7
|
+
* - /api/solo/* → solo bootstrap/token endpoints (bridge-owned)
|
|
8
|
+
* - /api/* → the existing local API (unchanged)
|
|
9
|
+
* - /healthz → liveness of front + hub + panel
|
|
10
|
+
* - /hub/* → managed Centrifugo child, proxied, WS UPGRADES ONLY
|
|
11
|
+
* - anything else → the panel: a managed Next.js STANDALONE child process
|
|
12
|
+
*
|
|
13
|
+
* The panel is NOT a static export: the ui app is output:'standalone' with an
|
|
14
|
+
* auth()-gated server page, so static export is impossible without re-
|
|
15
|
+
* architecting it. Solo instead fetches the published standalone bundle,
|
|
16
|
+
* spawns it on a private port like the hub, and the front reverse-proxies
|
|
17
|
+
* everything not bridge-owned to it. UI auth is dual-mode: hosted builds use
|
|
18
|
+
* NextAuth; solo builds authenticate with the access key against /api/solo/*.
|
|
19
|
+
*
|
|
20
|
+
* No external account service, no docker, no second public port. A tunnel
|
|
21
|
+
* provider may point at this SAME port; nothing may assume loopback-only
|
|
22
|
+
* access. This file is TYPES + CONSTANTS + TABLES ONLY — no logic. Every
|
|
23
|
+
* cross-module value must appear here; a name absent from this file does not
|
|
24
|
+
* exist.
|
|
25
|
+
*/
|
|
26
|
+
/** Contract revision — bump on any material change (re-gauntlet required). */
|
|
27
|
+
export declare const SOLO_CONTRACT_REVISION = 4;
|
|
28
|
+
/** Default public LAN port (--port overrides). Children NEVER use fixed
|
|
29
|
+
* ports: hub and panel bind 127.0.0.1:0 (OS-assigned ephemeral), eliminating
|
|
30
|
+
* child port collisions entirely. */
|
|
31
|
+
export declare const DEFAULT_SOLO_PORT = 8040;
|
|
32
|
+
/** Access key entropy: 32 random bytes, hex-encoded (64 chars). */
|
|
33
|
+
export declare const ACCESS_KEY_BYTES = 32;
|
|
34
|
+
/** Hub JWT time-to-live, seconds. Refresh via POST /api/solo/token. */
|
|
35
|
+
export declare const HUB_JWT_TTL_SECONDS: number;
|
|
36
|
+
/** Fixed solo subject. Solo mode is single-user by definition. */
|
|
37
|
+
export declare const SOLO_USER_ID = "solo";
|
|
38
|
+
/**
|
|
39
|
+
* Audience claim REQUIRED in every hub JWT and configured as token_audience
|
|
40
|
+
* in the hub config. Minting without aud, or configuring a different value,
|
|
41
|
+
* makes every WS handshake fail with an audience mismatch.
|
|
42
|
+
*/
|
|
43
|
+
export declare const HUB_JWT_AUDIENCE = "ftown:centrifugo";
|
|
44
|
+
/** Centrifugo release to download (pinned; checksums embedded below). */
|
|
45
|
+
export declare const CENTRIFUGO_VERSION = "v5.4.9";
|
|
46
|
+
/**
|
|
47
|
+
* Embedded sha256 digests for the pinned centrifugo release assets, sourced
|
|
48
|
+
* from the release's official checksums.txt at prep time (never fetched at
|
|
49
|
+
* install time). Keyed by platform triple derived from process.platform/arch:
|
|
50
|
+
* darwin-arm64, darwin-amd64, linux-amd64, linux-arm64.
|
|
51
|
+
*/
|
|
52
|
+
export declare const CENTRIFUGO_SHA256: Readonly<Record<string, string>>;
|
|
53
|
+
/**
|
|
54
|
+
* Panel (UI standalone) bundle source. Published as a GitHub release asset of
|
|
55
|
+
* THIS repository named `ftown-ui-standalone-<version>.tar.gz`, where version
|
|
56
|
+
* matches the ui package version. Integrity: the release workflow publishes a
|
|
57
|
+
* `<asset>.sha256` sidecar fetched over HTTPS from the same release — TLS to
|
|
58
|
+
* github.com is the trust root for first-party artifacts (third-party
|
|
59
|
+
* centrifugo gets EMBEDDED digests above instead).
|
|
60
|
+
*/
|
|
61
|
+
export declare const PANEL_BUNDLE_URL_TEMPLATE = "https://github.com/fmktech/ftown/releases/download/ui-v<version>/ftown-ui-standalone-<version>.tar.gz";
|
|
62
|
+
export interface SoloConfig {
|
|
63
|
+
/** Public LAN port for the solo front (the ONLY public port). */
|
|
64
|
+
port: number;
|
|
65
|
+
/** Private hub port — centrifugo binds 127.0.0.1 only. */
|
|
66
|
+
hubPort: number;
|
|
67
|
+
/** Private panel port — next standalone binds 127.0.0.1 only. */
|
|
68
|
+
panelPort: number;
|
|
69
|
+
/** Bridge data dir (~/.ftown/data). Secrets/bundles cached under here. */
|
|
70
|
+
dataDir: string;
|
|
71
|
+
/** sha256 hex of the raw access key. Raw key is never persisted. */
|
|
72
|
+
accessKeyHash: string;
|
|
73
|
+
/** HMAC-SHA256 secret signing Centrifugo connection JWTs. */
|
|
74
|
+
hubSecret: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* GET /api/solo/bootstrap — everything the panel needs to connect.
|
|
78
|
+
* Auth: Authorization: Bearer <access-key>.
|
|
79
|
+
*/
|
|
80
|
+
export interface SoloBootstrap {
|
|
81
|
+
userId: typeof SOLO_USER_ID;
|
|
82
|
+
/**
|
|
83
|
+
* Absolute websocket URL of the proxied hub, e.g.
|
|
84
|
+
* ws://192.168.1.10:53698/hub/connection/websocket
|
|
85
|
+
* Scheme derivation: wss:// ONLY when X-Forwarded-Proto is https AND the
|
|
86
|
+
* socket peer address is loopback (a locally-running tunnel sets both);
|
|
87
|
+
* otherwise ws://. Host comes from the request Host header verbatim.
|
|
88
|
+
*/
|
|
89
|
+
centrifugoUrl: string;
|
|
90
|
+
/** Fresh hub JWT (same as POST /api/solo/token returns). */
|
|
91
|
+
token: string;
|
|
92
|
+
}
|
|
93
|
+
/** POST /api/solo/token — mint a fresh hub JWT. Body: empty. */
|
|
94
|
+
export interface SoloTokenResponse {
|
|
95
|
+
token: string;
|
|
96
|
+
/** ISO timestamp — informational only; JWT exp remains source of truth. */
|
|
97
|
+
expiresAt: string;
|
|
98
|
+
}
|
|
99
|
+
/** GET /healthz — UNAUTHENTICATED, liveness only, no secrets, no versions. */
|
|
100
|
+
export interface SoloHealth {
|
|
101
|
+
ok: true;
|
|
102
|
+
hub: 'up' | 'down';
|
|
103
|
+
panel: 'up' | 'down';
|
|
104
|
+
}
|