@rocicorp/zero 0.19.2025041602 → 0.19.2025042200
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/out/analyze-query/src/bin-cache-stats.js +75 -5
- package/out/analyze-query/src/bin-cache-stats.js.map +1 -1
- package/out/{chunk-2FSGOJV7.js → chunk-ZEL4YSUP.js} +256 -104
- package/out/chunk-ZEL4YSUP.js.map +7 -0
- package/out/react.js.map +1 -1
- package/out/shared/src/logging-test-utils.d.ts +1 -1
- package/out/shared/src/logging-test-utils.d.ts.map +1 -1
- package/out/solid.js +1 -1
- package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/server/syncer.js +1 -0
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js +2 -2
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.d.ts +2 -2
- package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.js +2 -2
- package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.js +1 -0
- package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/key-columns.js +1 -1
- package/out/zero-cache/src/services/view-syncer/key-columns.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +5 -2
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/schema-versions.js +1 -1
- package/out/zero-cache/src/types/schema-versions.js.map +1 -1
- package/out/zero-cache/src/workers/connection.d.ts +1 -1
- package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
- package/out/zero-cache/src/workers/connection.js +2 -2
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
- package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/workers/syncer.js +4 -1
- package/out/zero-cache/src/workers/syncer.js.map +1 -1
- package/out/zero-client/src/client/context.d.ts +2 -2
- package/out/zero-client/src/client/context.d.ts.map +1 -1
- package/out/zero-client/src/client/custom.d.ts +3 -3
- package/out/zero-client/src/client/custom.d.ts.map +1 -1
- package/out/zero-client/src/client/delete-clients-manager.d.ts +2 -2
- package/out/zero-client/src/client/delete-clients-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/metrics.d.ts +4 -5
- package/out/zero-client/src/client/metrics.d.ts.map +1 -1
- package/out/zero-client/src/client/mutation-tracker.d.ts +3 -3
- package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
- package/out/zero-client/src/client/on-error-kind-enum.d.ts +17 -0
- package/out/zero-client/src/client/on-error-kind-enum.d.ts.map +1 -0
- package/out/zero-client/src/client/on-error-kind.d.ts +5 -0
- package/out/zero-client/src/client/on-error-kind.d.ts.map +1 -0
- package/out/zero-client/src/client/on-error.d.ts +9 -0
- package/out/zero-client/src/client/on-error.d.ts.map +1 -0
- package/out/zero-client/src/client/options.d.ts +18 -4
- package/out/zero-client/src/client/options.d.ts.map +1 -1
- package/out/zero-client/src/client/reload-error-handler.d.ts +5 -3
- package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/server-error.d.ts +1 -3
- package/out/zero-client/src/client/server-error.d.ts.map +1 -1
- package/out/zero-client/src/client/update-needed-reason-type-enum.d.ts +20 -0
- package/out/zero-client/src/client/update-needed-reason-type-enum.d.ts.map +1 -0
- package/out/zero-client/src/client/update-needed-reason-type.d.ts +5 -0
- package/out/zero-client/src/client/update-needed-reason-type.d.ts.map +1 -0
- package/out/zero-client/src/client/zero-log-context.d.ts +7 -0
- package/out/zero-client/src/client/zero-log-context.d.ts.map +1 -0
- package/out/zero-client/src/client/zero-poke-handler.d.ts +2 -2
- package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.d.ts +2 -2
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/mod.d.ts +4 -0
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-protocol/src/error-kind.d.ts +5 -0
- package/out/zero-protocol/src/error-kind.d.ts.map +1 -0
- package/out/zero-protocol/src/error-kind.js +3 -0
- package/out/zero-protocol/src/error-kind.js.map +1 -0
- package/out/zero-protocol/src/error.d.ts +2 -0
- package/out/zero-protocol/src/error.d.ts.map +1 -1
- package/out/zero-protocol/src/error.js +2 -1
- package/out/zero-protocol/src/error.js.map +1 -1
- package/out/zero-react/src/use-query.d.ts +1 -1
- package/out/zero.js +8 -2
- package/package.json +2 -2
- package/out/chunk-2FSGOJV7.js.map +0 -7
|
@@ -4,11 +4,14 @@ import { astToZQL } from "../../ast-to-zql/src/ast-to-zql.js";
|
|
|
4
4
|
import { createSilentLogContext } from "../../shared/src/logging-test-utils.js";
|
|
5
5
|
import { parseOptions } from "../../shared/src/options.js";
|
|
6
6
|
import * as v from "../../shared/src/valita.js";
|
|
7
|
-
import { appOptions, shardOptions, ZERO_ENV_VAR_PREFIX, } from "../../zero-cache/src/config/zero-config.js";
|
|
7
|
+
import { appOptions, shardOptions, ZERO_ENV_VAR_PREFIX, zeroOptions, } from "../../zero-cache/src/config/zero-config.js";
|
|
8
8
|
import { pgClient } from "../../zero-cache/src/types/pg.js";
|
|
9
9
|
import { getShardID, upstreamSchema } from "../../zero-cache/src/types/shards.js";
|
|
10
10
|
import { BigIntJSON } from "../../zero-cache/src/types/bigint-json.js";
|
|
11
11
|
import chalk from 'chalk';
|
|
12
|
+
import { Database } from "../../zqlite/src/db.js";
|
|
13
|
+
import fs from 'fs';
|
|
14
|
+
import os from 'os';
|
|
12
15
|
const options = {
|
|
13
16
|
upstream: {
|
|
14
17
|
db: v.string(),
|
|
@@ -23,13 +26,14 @@ const options = {
|
|
|
23
26
|
shard: shardOptions,
|
|
24
27
|
dumpZql: v.boolean().optional(),
|
|
25
28
|
detailed: v.boolean().optional(),
|
|
29
|
+
replica: zeroOptions.replica,
|
|
26
30
|
};
|
|
27
31
|
const config = parseOptions(options, process.argv.slice(2), ZERO_ENV_VAR_PREFIX);
|
|
28
32
|
const lc = createSilentLogContext();
|
|
29
33
|
async function upstreamStats() {
|
|
30
34
|
const schema = upstreamSchema(getShardID(config));
|
|
31
35
|
const sql = pgClient(lc, config.upstream.db);
|
|
32
|
-
await
|
|
36
|
+
await printPgStats([
|
|
33
37
|
[
|
|
34
38
|
'num replicas',
|
|
35
39
|
sql `SELECT COUNT(*) as "c" FROM ${sql(schema)}."replicas"`,
|
|
@@ -79,7 +83,7 @@ async function cvrStats() {
|
|
|
79
83
|
JOIN client_per_group_counts cpg ON g."clientGroupID" = cpg."clientGroupID"
|
|
80
84
|
ORDER BY g.num_queries DESC;`;
|
|
81
85
|
}
|
|
82
|
-
await
|
|
86
|
+
await printPgStats([
|
|
83
87
|
[
|
|
84
88
|
'total num queries',
|
|
85
89
|
sql `SELECT COUNT(*) as "c" FROM ${sql(schema)}."desires"`,
|
|
@@ -146,6 +150,30 @@ async function cvrStats() {
|
|
|
146
150
|
MAX(row_count) AS "max",
|
|
147
151
|
AVG(row_count) AS "avg"
|
|
148
152
|
FROM client_group_counts;`,
|
|
153
|
+
],
|
|
154
|
+
[
|
|
155
|
+
// check for AST blowup due to DNF conversion.
|
|
156
|
+
'ast sizes',
|
|
157
|
+
sql `SELECT
|
|
158
|
+
percentile_cont(0.25) WITHIN GROUP (ORDER BY length("clientAST"::text)) AS "25th_percentile",
|
|
159
|
+
percentile_cont(0.5) WITHIN GROUP (ORDER BY length("clientAST"::text)) AS "50th_percentile",
|
|
160
|
+
percentile_cont(0.75) WITHIN GROUP (ORDER BY length("clientAST"::text)) AS "75th_percentile",
|
|
161
|
+
percentile_cont(0.9) WITHIN GROUP (ORDER BY length("clientAST"::text)) AS "90th_percentile",
|
|
162
|
+
percentile_cont(0.95) WITHIN GROUP (ORDER BY length("clientAST"::text)) AS "95th_percentile",
|
|
163
|
+
percentile_cont(0.99) WITHIN GROUP (ORDER BY length("clientAST"::text)) AS "99th_percentile",
|
|
164
|
+
MIN(length("clientAST"::text)) AS "minimum_length",
|
|
165
|
+
MAX(length("clientAST"::text)) AS "maximum_length",
|
|
166
|
+
AVG(length("clientAST"::text))::integer AS "average_length",
|
|
167
|
+
COUNT(*) AS "total_records"
|
|
168
|
+
FROM ${sql(schema)}."queries";`,
|
|
169
|
+
],
|
|
170
|
+
[
|
|
171
|
+
// output the hash of the largest AST
|
|
172
|
+
'biggest ast hash',
|
|
173
|
+
sql `SELECT "queryHash", length("clientAST"::text) AS "ast_length"
|
|
174
|
+
FROM ${sql(schema)}."queries"
|
|
175
|
+
ORDER BY length("clientAST"::text) DESC
|
|
176
|
+
LIMIT 1;`,
|
|
149
177
|
],
|
|
150
178
|
...(config.detailed
|
|
151
179
|
? [
|
|
@@ -204,7 +232,7 @@ async function cvrStats() {
|
|
|
204
232
|
async function changelogStats() {
|
|
205
233
|
const schema = upstreamSchema(getShardID(config)) + '/cdc';
|
|
206
234
|
const sql = pgClient(lc, config.change.db);
|
|
207
|
-
await
|
|
235
|
+
await printPgStats([
|
|
208
236
|
[
|
|
209
237
|
'change log size',
|
|
210
238
|
sql `SELECT COUNT(*) as "change_log_size" FROM ${sql(schema)}."changeLog"`,
|
|
@@ -212,14 +240,56 @@ async function changelogStats() {
|
|
|
212
240
|
]);
|
|
213
241
|
await sql.end();
|
|
214
242
|
}
|
|
215
|
-
|
|
243
|
+
function replicaStats() {
|
|
244
|
+
const db = new Database(lc, config.replica.file);
|
|
245
|
+
printStats('replica', [
|
|
246
|
+
['wal checkpoint', pick(first(db.pragma('WAL_CHECKPOINT')))],
|
|
247
|
+
['page count', pick(first(db.pragma('PAGE_COUNT')))],
|
|
248
|
+
['page size', pick(first(db.pragma('PAGE_SIZE')))],
|
|
249
|
+
['journal mode', pick(first(db.pragma('JOURNAL_MODE')))],
|
|
250
|
+
['synchronous', pick(first(db.pragma('SYNCHRONOUS')))],
|
|
251
|
+
['cache size', pick(first(db.pragma('CACHE_SIZE')))],
|
|
252
|
+
['auto vacuum', pick(first(db.pragma('AUTO_VACUUM')))],
|
|
253
|
+
['freelist count', pick(first(db.pragma('FREELIST_COUNT')))],
|
|
254
|
+
['wal autocheckpoint', pick(first(db.pragma('WAL_AUTOCHECKPOINT')))],
|
|
255
|
+
['db file stats', fs.statSync(config.replica.file)],
|
|
256
|
+
]);
|
|
257
|
+
}
|
|
258
|
+
function osStats() {
|
|
259
|
+
printStats('os', [
|
|
260
|
+
['load avg', os.loadavg()],
|
|
261
|
+
['uptime', os.uptime()],
|
|
262
|
+
['total mem', os.totalmem()],
|
|
263
|
+
['free mem', os.freemem()],
|
|
264
|
+
['cpus', os.cpus().length],
|
|
265
|
+
['platform', os.platform()],
|
|
266
|
+
['arch', os.arch()],
|
|
267
|
+
['release', os.release()],
|
|
268
|
+
['uptime', os.uptime()],
|
|
269
|
+
]);
|
|
270
|
+
}
|
|
271
|
+
async function printPgStats(pendingQueries) {
|
|
216
272
|
const results = await Promise.all(pendingQueries.map(async ([name, query]) => [name, await query]));
|
|
217
273
|
for (const result of results) {
|
|
218
274
|
console.log('\n', chalk.blue.bold(result[0]), '\n');
|
|
219
275
|
console.log(BigIntJSON.stringify(result[1], null, 2));
|
|
220
276
|
}
|
|
221
277
|
}
|
|
278
|
+
function printStats(group, queries) {
|
|
279
|
+
console.log(chalk.blue.bold(`\n=== ${group} Stats: ===`));
|
|
280
|
+
for (const [name, result] of queries) {
|
|
281
|
+
console.log('\n', chalk.blue.bold(name), BigIntJSON.stringify(result, null, 2));
|
|
282
|
+
}
|
|
283
|
+
}
|
|
222
284
|
await changelogStats();
|
|
223
285
|
await upstreamStats();
|
|
224
286
|
await cvrStats();
|
|
287
|
+
replicaStats();
|
|
288
|
+
osStats();
|
|
289
|
+
function first(x) {
|
|
290
|
+
return x[0];
|
|
291
|
+
}
|
|
292
|
+
function pick(x) {
|
|
293
|
+
return Object.values(x)[0];
|
|
294
|
+
}
|
|
225
295
|
//# sourceMappingURL=bin-cache-stats.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin-cache-stats.js","sourceRoot":"","sources":["../../../../analyze-query/src/bin-cache-stats.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAC,QAAQ,EAAC,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAC,sBAAsB,EAAC,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAChD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,mBAAmB,
|
|
1
|
+
{"version":3,"file":"bin-cache-stats.js","sourceRoot":"","sources":["../../../../analyze-query/src/bin-cache-stats.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAC,QAAQ,EAAC,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAC,sBAAsB,EAAC,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAChD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,WAAW,GACZ,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAC,QAAQ,EAAC,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAC,UAAU,EAAC,MAAM,2CAA2C,CAAC;AACrE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,OAAO,GAAG;IACd,QAAQ,EAAE;QACR,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;KACf;IACD,GAAG,EAAE;QACH,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;KACf;IACD,MAAM,EAAE;QACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;KACf;IACD,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,YAAY;IACnB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,WAAW,CAAC,OAAO;CAC7B,CAAC;AAEF,MAAM,MAAM,GAAG,YAAY,CACzB,OAAO,EACP,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EACrB,mBAAmB,CACpB,CAAC;AAEF,MAAM,EAAE,GAAG,sBAAsB,EAAE,CAAC;AAEpC,KAAK,UAAU,aAAa;IAC1B,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE7C,MAAM,YAAY,CAAC;QACjB;YACE,cAAc;YACd,GAAG,CAAA,+BAA+B,GAAG,CAAC,MAAM,CAAC,aAAa;SAC3D;QACD;YACE,4BAA4B;YAC5B,GAAG,CAAA,+BAA+B,GAAG,CAAC,MAAM,CAAC,YAAY;SAC1D;QACD;YACE,yBAAyB;YACzB,GAAG,CAAA,4CAA4C,GAAG,CAAC,MAAM,CAAC,YAAY;SACvE;KACF,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,QAAQ;IACrB,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;IAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAExC,SAAS,wBAAwB,CAC/B,MAAe;QAEf,MAAM,MAAM,GAAG,MAAM;YACnB,CAAC,CAAC,GAAG,CAAA,mDAAmD;YACxD,CAAC,CAAC,GAAG,CAAA,yEAAyE,CAAC;QACjF,OAAO,GAAG,CAAA;;;;;aAKD,GAAG,CAAC,MAAM,CAAC;QAChB,MAAM;;;;;;;;aAQD,GAAG,CAAC,MAAM,CAAC;QAChB,MAAM;;;;;;;;;;iCAUmB,CAAC;IAChC,CAAC;IAED,MAAM,YAAY,CAAC;QACjB;YACE,mBAAmB;YACnB,GAAG,CAAA,+BAA+B,GAAG,CAAC,MAAM,CAAC,YAAY;SAC1D;QACD;YACE,yBAAyB;YACzB,GAAG,CAAA,kDAAkD,GAAG,CACtD,MAAM,CACP,YAAY;SACd;QACD;YACE,oBAAoB;YACpB,GAAG,CAAA,+BAA+B,GAAG,CAAC,MAAM,CAAC,gEAAgE;SAC9G;QACD;YACE,sBAAsB;YACtB,GAAG,CAAA,+BAA+B,GAAG,CAAC,MAAM,CAAC,oFAAoF;SAClI;QACD;YACE,qBAAqB;YACrB,GAAG,CAAA,+BAA+B,GAAG,CAAC,MAAM,CAAC,mCAAmC;SACjF;QACD;YACE,2BAA2B;YAC3B,GAAG,CAAA;;;;;eAKM,GAAG,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;gCAiBM;SAC3B;QACD;YACE,mCAAmC;YACnC,GAAG,CAAA;;;;;eAKM,GAAG,CAAC,MAAM,CAAC;;;;;;;;;;;;gCAYM;SAC3B;QACD;YACE,8CAA8C;YAC9C,WAAW;YACX,GAAG,CAAA;;;;;;;;;;;aAWI,GAAG,CAAC,MAAM,CAAC,aAAa;SAChC;QACD;YACE,qCAAqC;YACrC,kBAAkB;YAClB,GAAG,CAAA;aACI,GAAG,CAAC,MAAM,CAAC;;eAET;SACV;QACD,GAAI,CAAC,MAAM,CAAC,QAAQ;YAClB,CAAC,CAAC;gBACE;oBACE,kDAAkD;oBAClD,wBAAwB,CAAC,IAAI,CAAC;iBAC/B;gBACD;oBACE,oDAAoD;oBACpD,wBAAwB,CAAC,KAAK,CAAC;iBAChC;gBACD;oBACE,6BAA6B;oBAC7B,GAAG,CAAA,gDAAgD,GAAG,CACpD,MAAM,CACP,oDAAoD;iBACtD;gBACD;oBACE,oBAAoB;oBACpB,GAAG,CAAA;;;aAGF,GAAG,CAAC,MAAM,CAAC;;;+BAGO;iBACpB;aACF;YACH,CAAC,CAAC,EAAE,CAGF;KACL,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;QAC1E,MAAM,SAAS,GACb,MAAM,GAAG,CAAA,wCAAwC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;QAE3E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,EAAC,SAAS,EAAE,SAAS,EAAC,GAAG,GAAG,CAAC;YACnC,IAAI,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/B,SAAS;YACX,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE3B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACf,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE,aAAa,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;IAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE3C,MAAM,YAAY,CAAC;QACjB;YACE,iBAAiB;YACjB,GAAG,CAAA,6CAA6C,GAAG,CAAC,MAAM,CAAC,cAAc;SAC1E;KACF,CAAC,CAAC;IACH,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,UAAU,CAAC,SAAS,EAAE;QACpB,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC,eAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC3C,CAAC,CAAC;AACd,CAAC;AAED,SAAS,OAAO;IACd,UAAU,CAAC,IAAI,EAAE;QACf,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC,WAAW,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;QAC1B,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QACnB,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;KACf,CAAC,CAAC;AACd,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,cAGG;IAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,CAAC,CACjE,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CACjB,KAAa,EACb,OAAmD;IAEnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,aAAa,CAAC,CAAC,CAAC;IAC1D,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CACT,IAAI,EACJ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EACrB,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CACtC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,cAAc,EAAE,CAAC;AACvB,MAAM,aAAa,EAAE,CAAC;AACtB,MAAM,QAAQ,EAAE,CAAC;AACjB,YAAY,EAAE,CAAC;AACf,OAAO,EAAE,CAAC;AAEV,SAAS,KAAK,CAAC,CAAW;IACxB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACd,CAAC;AAED,SAAS,IAAI,CAAC,CAAS;IACrB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC"}
|