next-observer 0.3.26 → 0.3.29

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/README.md CHANGED
@@ -60,6 +60,12 @@ this call compares with the others of its kind.
60
60
 
61
61
  ![A trace with the critical path highlighted and a table of where the time went](https://raw.githubusercontent.com/ataztech910/nextjs-observe/master/docs/screenshots/trace.png)
62
62
 
63
+ A span can be fast, without an error, and still carry the wrong answer. When the app records its own verdict as a span
64
+ event — `integrity_check` with `ok`, `expected`, `actual` — the observer raises an anomaly on the first `ok: false` and the
65
+ trace says so:
66
+
67
+ ![A trace with a Wrong data banner: getProductById asked for 1 and got back 3](https://raw.githubusercontent.com/ataztech910/nextjs-observe/master/docs/screenshots/wrong-data.png)
68
+
63
69
  **One operation up close** — its latency distribution, and a note when the calls fall into two clearly separate speeds
64
70
  (a fast and a slow path, or the version before and after a deployment).
65
71
 
@@ -120,6 +126,14 @@ One investigation makes 7–12 model calls. A call that hangs is started again o
120
126
  few requests per minute, so an investigation may pause for that minute; a key without credits, a wrong key or a wrong
121
127
  model name is explained in the chat in plain words.
122
128
 
129
+ The chat keeps a list of investigations — your questions and the ones the observer started on its own — with their
130
+ state; pick one to read it again. Leaving the page does not lose them (a reload still loses your own questions).
131
+
132
+ An investigation can be stopped — the **Stop** button next to "working…" in the chat, for a question you asked and for
133
+ one the observer started on its own. What was found until then stays on the page. A model behind an API drops the call
134
+ in flight; a CLI model finishes the call it is on and then stops. A stopped (or timed-out) conversation is not continued —
135
+ the next question starts a new one.
136
+
123
137
  ## Your own AI agents
124
138
 
125
139
  The built-in AI agents are an orchestrator and three specialists (latency, errors, traffic). To change them, put `observe.agents.ts` (or `.mts`, `.js`, `.mjs`) in the app root. A specialist with a built-in name
@@ -5,6 +5,8 @@ import type { QueryOptions } from '../debug/queries.js';
5
5
  import type { SpecialistSpec } from './specialists.js';
6
6
  import { type Env } from './model.js';
7
7
  export interface ChatHandlerOptions {
8
+ /** How many cut-short conversations are remembered (and their history kept) before the oldest is dropped. Default 1000. */
9
+ maxCutSessions?: number;
8
10
  storage: StorageAdapter;
9
11
  env?: Env;
10
12
  queryOptions?: QueryOptions;
@@ -36,9 +36,17 @@ export async function createChatHandler(options) {
36
36
  const timeoutMs = options.timeoutMs ?? 240_000;
37
37
  // One question at a time per conversation: a second one would interleave with the first in the session history.
38
38
  const busy = new Set();
39
- const handle = async ({ question, sessionId: requested }, emit) => {
39
+ // Conversations whose last run was cut short (stopped, or timed out). Their history may end in the middle of a step —
40
+ // a tool call without its result — which a provider rejects on the next request; they are not continued.
41
+ const cut = new Set();
42
+ const MAX_CUT_SESSIONS = options.maxCutSessions ?? 1000;
43
+ const handle = async ({ question, sessionId: requested, signal }, emit) => {
40
44
  // Reserve synchronously, before any await: two requests for the same session must not both get through.
41
45
  if (requested) {
46
+ if (cut.has(requested)) {
47
+ emit({ type: 'error', message: 'this conversation was cut short — ask again in a new chat', closed: true });
48
+ return;
49
+ }
42
50
  if (busy.has(requested)) {
43
51
  emit({ type: 'error', message: 'this chat is still answering the previous question' });
44
52
  return;
@@ -46,8 +54,8 @@ export async function createChatHandler(options) {
46
54
  busy.add(requested);
47
55
  }
48
56
  let sessionId = requested;
49
- let investigation;
50
57
  let timedOut = false;
58
+ let stopped = false;
51
59
  let finished = false;
52
60
  const send = (event) => {
53
61
  if (!finished)
@@ -55,6 +63,20 @@ export async function createChatHandler(options) {
55
63
  };
56
64
  let timer;
57
65
  const timeout = new Promise((resolve) => (timer = setTimeout(() => resolve('timeout'), timeoutMs)));
66
+ // One way to cancel the run, for a stop and for the timeout alike.
67
+ const own = new AbortController();
68
+ const cancel = signal ? AbortSignal.any([signal, own.signal]) : own.signal;
69
+ // Resolves when somebody stops the investigation. The run itself is cancelled through the signal above, but a model
70
+ // that cannot be cancelled (a CLI) would keep us waiting — so the turn ends here, at once.
71
+ let onAbort;
72
+ const stop = new Promise((resolve) => {
73
+ if (!signal)
74
+ return;
75
+ if (signal.aborted)
76
+ return resolve('stopped');
77
+ onAbort = () => resolve('stopped');
78
+ signal.addEventListener('abort', onAbort, { once: true });
79
+ });
58
80
  const shown = new Set();
59
81
  const onResult = (step, result) => {
60
82
  for (const card of cardsFromResult(step.tool, step.args, result)) {
@@ -69,12 +91,18 @@ export async function createChatHandler(options) {
69
91
  sessionId = await investigator.startSession(requested);
70
92
  busy.add(sessionId);
71
93
  emit({ type: 'status', mode, sessionId, text: 'Investigating…' });
72
- const running = investigator.ask(question, { sessionId, onStep: (s) => send({ type: 'step', ...s }), onResult });
73
- investigation = running;
74
- const result = await Promise.race([running, timeout]);
75
- if (result === 'timeout') {
94
+ const running = investigator.ask(question, { sessionId, onStep: (s) => send({ type: 'step', ...s }), onResult, signal: cancel });
95
+ // A cancelled run rejects or resolves on its own time; nobody is waiting for it any more.
96
+ running.catch(() => { });
97
+ const result = await Promise.race([running, timeout, stop]);
98
+ if (result === 'stopped') {
99
+ stopped = true;
100
+ send({ type: 'stopped', closed: true });
101
+ }
102
+ else if (result === 'timeout') {
76
103
  timedOut = true;
77
- send({ type: 'error', message: `investigation took longer than ${Math.round(timeoutMs / 1000)}s — try a narrower question` });
104
+ own.abort();
105
+ send({ type: 'error', message: `investigation took longer than ${Math.round(timeoutMs / 1000)}s — try a narrower question`, closed: true });
78
106
  }
79
107
  else if (result.error && !result.text) {
80
108
  send({ type: 'error', message: result.error });
@@ -84,21 +112,34 @@ export async function createChatHandler(options) {
84
112
  }
85
113
  }
86
114
  catch (error) {
87
- send({ type: 'error', message: error instanceof Error ? error.message : String(error) });
115
+ // The run was cancelled under us: that is the stop, not a failure.
116
+ if (signal?.aborted) {
117
+ stopped = true;
118
+ send({ type: 'stopped', closed: true });
119
+ }
120
+ else
121
+ send({ type: 'error', message: error instanceof Error ? error.message : String(error) });
88
122
  }
89
123
  finally {
90
- // A timed-out investigation keeps running and writing to the session: its late steps must not leak into this
91
- // finished turn, and the session stays busy until it really ends.
124
+ // A cancelled run may still be winding down (a CLI model finishes the call it is on): its late steps must not
125
+ // leak into this finished turn — and its conversation is closed for good, so nothing has to wait for it.
92
126
  finished = true;
93
127
  clearTimeout(timer);
94
- const release = () => {
95
- if (sessionId)
96
- busy.delete(sessionId);
97
- };
98
- if (timedOut && investigation)
99
- investigation.then(release, release);
100
- else
101
- release();
128
+ if (onAbort)
129
+ signal?.removeEventListener('abort', onAbort);
130
+ if (sessionId) {
131
+ busy.delete(sessionId);
132
+ if (timedOut || stopped) {
133
+ cut.add(sessionId);
134
+ // The oldest are forgotten, together with their history: an observer that runs for weeks must not keep every
135
+ // stopped turn. Its id then simply starts a clean conversation — the run that used it ended long ago.
136
+ if (cut.size > MAX_CUT_SESSIONS) {
137
+ const oldest = cut.values().next().value;
138
+ cut.delete(oldest);
139
+ void investigator.endSession(oldest).catch(() => { });
140
+ }
141
+ }
142
+ }
102
143
  }
103
144
  };
104
145
  return { mode, handle };
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/agents/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/agents/chat.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,8 @@ export interface InvestigatorOptions {
25
25
  export declare function isLeakedToolCall(text: string): boolean;
26
26
  export declare function createInvestigator(options: InvestigatorOptions): {
27
27
  startSession: (sessionId?: string) => Promise<string>;
28
+ /** Forgets a conversation and its history. */
29
+ endSession(sessionId: string): Promise<void>;
28
30
  /**
29
31
  * Runs one investigation; resolves with the final report and every tool call made on the way.
30
32
  * Pass the sessionId from a previous answer to continue that conversation. Safe to call concurrently (per session: one at a time).
@@ -34,6 +36,8 @@ export declare function createInvestigator(options: InvestigatorOptions): {
34
36
  /** Called with each data tool's result — the chat builds evidence cards from these. */
35
37
  onResult?: (step: InvestigationStep, result: unknown) => void;
36
38
  sessionId?: string;
39
+ /** Stops the run: ADK cancels between steps, and a model that supports it drops the call in flight. */
40
+ signal?: AbortSignal;
37
41
  }): Promise<{
38
42
  text: string;
39
43
  sessionId: string;
@@ -89,6 +89,10 @@ export function createInvestigator(options) {
89
89
  }
90
90
  return {
91
91
  startSession,
92
+ /** Forgets a conversation and its history. */
93
+ async endSession(sessionId) {
94
+ await sessions.deleteSession({ appName: APP_NAME, userId: USER_ID, sessionId });
95
+ },
92
96
  /**
93
97
  * Runs one investigation; resolves with the final report and every tool call made on the way.
94
98
  * Pass the sessionId from a previous answer to continue that conversation. Safe to call concurrently (per session: one at a time).
@@ -105,7 +109,7 @@ export function createInvestigator(options) {
105
109
  const transcript = [];
106
110
  let text = '';
107
111
  let failure;
108
- for await (const event of runner.runAsync({ userId: USER_ID, sessionId, newMessage: { role: 'user', parts: [{ text: question }] } })) {
112
+ for await (const event of runner.runAsync({ userId: USER_ID, sessionId, newMessage: { role: 'user', parts: [{ text: question }] }, ...(call.signal ? { abortSignal: call.signal } : {}) })) {
109
113
  if (event.errorMessage)
110
114
  failure = event.errorMessage;
111
115
  if (event.author !== 'orchestrator')
@@ -1 +1 @@
1
- {"version":3,"file":"investigator.js","sourceRoot":"","sources":["../../src/agents/investigator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"investigator.js","sourceRoot":"","sources":["../../src/agents/investigator.ts"],"names":[],"mappings":"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"}
@@ -26,12 +26,16 @@ export class ResilientLlm extends BaseLlm {
26
26
  this.attempts = Math.max(1, options.attempts ?? 2);
27
27
  this.transientAttempts = Math.max(1, options.transientAttempts ?? 3);
28
28
  this.maxRetryDelayMs = options.maxRetryDelayMs ?? 60_000;
29
- this.sleep = options.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
29
+ // unref: a wait that a stop has already ended must not keep the process alive until its timer fires.
30
+ this.sleep = options.sleep ?? ((ms) => new Promise((resolve) => void setTimeout(resolve, ms).unref?.()));
30
31
  }
31
32
  async *generateContentAsync(request, stream = false, abortSignal) {
32
33
  // Hangs and provider errors are counted apart: a call may hang once and be rate-limited twice.
33
34
  let transientTries = 1;
34
35
  for (let attempt = 1;; attempt++) {
36
+ // Stopped while we were waiting out a rate limit (or before we began): no new call goes out — nobody reads it.
37
+ if (abortSignal?.aborted)
38
+ return;
35
39
  // Our own signal: a provider that supports cancelling (Gemini) stops the hung request; one that does not (a CLI
36
40
  // model) keeps running in the background and its late answer is dropped.
37
41
  const controller = new AbortController();
@@ -48,9 +52,12 @@ export class ResilientLlm extends BaseLlm {
48
52
  next = await Promise.race([responses.next(), deadline]).finally(() => clearTimeout(timer));
49
53
  }
50
54
  catch (error) {
55
+ // The caller stopped the investigation and the provider dropped the call: not a model failure to report.
56
+ if (abortSignal?.aborted)
57
+ throw error;
51
58
  const failure = parseModelError(error);
52
59
  const wait = failure.retryAfterMs ?? backoffMs(transientTries);
53
- const retry = isTransient(failure) && !answered && transientTries < this.transientAttempts && wait <= this.maxRetryDelayMs && !abortSignal?.aborted;
60
+ const retry = isTransient(failure) && !answered && transientTries < this.transientAttempts && wait <= this.maxRetryDelayMs;
54
61
  if (!retry) {
55
62
  // An error we know how to explain is rethrown in plain words; anything else exactly as it came.
56
63
  if (failure.status === undefined) {
@@ -64,7 +71,16 @@ export class ResilientLlm extends BaseLlm {
64
71
  transientTries++;
65
72
  const what = failure.status === 429 ? 'rate limit reached (429)' : `provider unavailable (${failure.status})`;
66
73
  this.options.onRetry?.({ attempt: transientTries, attempts: this.transientAttempts, reason: `${what}, waiting ${Math.ceil(wait / 1000)}s` });
67
- await this.sleep(wait);
74
+ // A stop does not wait out the provider's "retry in 50 s".
75
+ await new Promise((resolve) => {
76
+ // Whichever comes first ends the wait and takes the listener off — one is not left behind per retry.
77
+ const done = () => {
78
+ abortSignal?.removeEventListener('abort', done);
79
+ resolve();
80
+ };
81
+ abortSignal?.addEventListener('abort', done, { once: true });
82
+ void this.sleep(wait).then(done);
83
+ });
68
84
  // The same attempt again: this was not a hang.
69
85
  attempt--;
70
86
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"resilient-llm.js","sourceRoot":"","sources":["../../src/agents/resilient-llm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resilient-llm.js","sourceRoot":"","sources":["../../src/agents/resilient-llm.ts"],"names":[],"mappings":"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"}
@@ -73,14 +73,27 @@ export type ChatEvent = {
73
73
  } | {
74
74
  type: 'report';
75
75
  text: string;
76
- } | {
76
+ }
77
+ /** Somebody stopped the investigation; what was found until then stays on the page. */
78
+ | {
79
+ type: 'stopped';
80
+ closed?: true;
81
+ }
82
+ /**
83
+ * `closed`: this conversation cannot be continued (it was stopped or timed out, so its history ends in the middle of
84
+ * a step) — the next question has to start a new one. The observer says so; the client does not have to guess.
85
+ */
86
+ | {
77
87
  type: 'error';
78
88
  message: string;
89
+ closed?: true;
79
90
  };
80
91
  export interface ChatRequest {
81
92
  question: string;
82
93
  /** From a previous `status` event: continue that conversation. Omitted → a new conversation. */
83
94
  sessionId?: string;
95
+ /** Aborted when somebody stops the investigation (the Stop button, or the asker went away). */
96
+ signal?: AbortSignal;
84
97
  }
85
98
  /** Runs one chat turn, emitting events as it goes. Resolves when the turn is over. */
86
99
  export type ChatHandler = (request: ChatRequest, emit: (event: ChatEvent) => void) => Promise<void>;
@@ -11,7 +11,8 @@
11
11
  // GET /api/checks { checks, nowMs, rule, investigates }: scheduled checks from observe.checks.ts with their latest results
12
12
  // GET /api/regression?service&sinceMinutes { regression }: the latest version vs the previous one, or null
13
13
  // GET /api/chat { enabled, mode }
14
- // POST /api/chat { question, sessionId? } → NDJSON stream of ChatEvent (status, step…, card…, report | error)
14
+ // POST /api/chat { question, sessionId? } → NDJSON stream of ChatEvent (status, step…, card…, report | error | stopped); closing the request stops the investigation
15
+ // POST /api/chat/stop { turnId } → stops an investigation the observer started on its own
15
16
  // GET /api/chat/events SSE: proactive turns (detector anomaly → investigation), recent ones replayed on connect
16
17
  // GET /* the UI (dist/ui) with SPA fallback
17
18
  import { createHash, timingSafeEqual } from 'node:crypto';
@@ -160,6 +161,8 @@ export async function startCollector(options = {}) {
160
161
  res.write(line);
161
162
  };
162
163
  let investigations = Promise.resolve();
164
+ /** Investigations the observer started itself and that are queued or running — each can be stopped by its turn id. */
165
+ const proactive = new Map();
163
166
  const onAnomalies = () => {
164
167
  for (const anomaly of [...(options.detector?.check() ?? []), ...(options.checks?.anomalies?.() ?? [])]) {
165
168
  const turnId = anomaly.id;
@@ -167,10 +170,19 @@ export async function startCollector(options = {}) {
167
170
  if (!options.chat)
168
171
  continue;
169
172
  const chat = options.chat;
173
+ const controller = new AbortController();
174
+ proactive.set(turnId, controller);
170
175
  // Queued: two investigations at once would double the model load and interleave in the UI.
171
- investigations = investigations.then(() => chat.handle({ question: questionFor(anomaly) }, (event) => broadcast({ turnId, event })).catch((error) => {
172
- broadcast({ turnId, event: { type: 'error', message: error instanceof Error ? error.message : String(error) } });
173
- }));
176
+ investigations = investigations
177
+ .then(() => chat.handle({ question: questionFor(anomaly), signal: controller.signal }, (event) => {
178
+ // Already told to everyone by the stop request itself; and nothing of a stopped turn is news after that.
179
+ if (!controller.signal.aborted)
180
+ broadcast({ turnId, event });
181
+ }).catch((error) => {
182
+ if (!controller.signal.aborted)
183
+ broadcast({ turnId, event: { type: 'error', message: error instanceof Error ? error.message : String(error) } });
184
+ }))
185
+ .finally(() => proactive.delete(turnId));
174
186
  }
175
187
  };
176
188
  function events(req, res) {
@@ -208,14 +220,47 @@ export async function startCollector(options = {}) {
208
220
  if (!res.writableEnded)
209
221
  res.write(JSON.stringify(event) + '\n');
210
222
  };
223
+ // The asker closing the connection (the Stop button, a closed tab) stops the investigation: nobody reads the answer.
224
+ const controller = new AbortController();
225
+ const onClose = () => {
226
+ if (!res.writableEnded)
227
+ controller.abort();
228
+ };
229
+ res.on('close', onClose);
211
230
  try {
212
- await options.chat.handle({ question, ...(sessionId ? { sessionId } : {}) }, emit);
231
+ await options.chat.handle({ question, ...(sessionId ? { sessionId } : {}), signal: controller.signal }, emit);
213
232
  }
214
233
  catch (error) {
215
234
  emit({ type: 'error', message: error instanceof Error ? error.message : String(error) });
216
235
  }
236
+ finally {
237
+ res.off('close', onClose);
238
+ }
217
239
  res.end();
218
240
  }
241
+ /** Stops an investigation the observer started on its own; one that is still queued never starts. */
242
+ async function stopProactive(req, res) {
243
+ let body;
244
+ try {
245
+ body = JSON.parse((await readBody(req, 4096)).toString('utf8'));
246
+ }
247
+ catch (error) {
248
+ if (error instanceof HttpError)
249
+ throw error;
250
+ throw new HttpError(400, 'body is not valid JSON');
251
+ }
252
+ const turnId = typeof body?.turnId === 'string' ? body.turnId : '';
253
+ const controller = proactive.get(turnId);
254
+ if (!controller)
255
+ throw new HttpError(404, 'no such investigation is running');
256
+ const already = controller.signal.aborted;
257
+ controller.abort();
258
+ // Said at once: an investigation still waiting in the queue would otherwise look alive until its turn came.
259
+ // The handler's own `stopped`, when the queue gets to it, changes nothing for a turn that has already ended.
260
+ if (!already)
261
+ broadcast({ turnId, event: { type: 'stopped' } });
262
+ send(res, 200, { stopped: true });
263
+ }
219
264
  async function route(req, res) {
220
265
  const url = new URL(req.url ?? '/', 'http://collector');
221
266
  const q = url.searchParams;
@@ -231,6 +276,8 @@ export async function startCollector(options = {}) {
231
276
  }
232
277
  if (req.method === 'POST' && url.pathname === '/api/chat')
233
278
  return chat(req, res);
279
+ if (req.method === 'POST' && url.pathname === '/api/chat/stop')
280
+ return stopProactive(req, res);
234
281
  if (req.method !== 'GET')
235
282
  throw new HttpError(404, 'not found');
236
283
  if (url.pathname === '/api/chat/events')
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/collector/server.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,6GAA6G;AAC7G,iBAAiB;AACjB,uBAAuB;AACvB,+FAA+F;AAC/F,8BAA8B;AAC9B,uDAAuD;AACvD,gHAAgH;AAChH,2HAA2H;AAC3H,wGAAwG;AACxG,6IAA6I;AAC7I,gHAAgH;AAChH,sDAAsD;AACtD,iIAAiI;AACjI,6HAA6H;AAC7H,uEAAuE;AACvE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,YAAY,EAA0D,MAAM,WAAW,CAAA;AAEhG,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,WAAW,EAAsC,MAAM,sBAAsB,CAAA;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAqC,MAAM,oBAAoB,CAAA;AAClF,OAAO,EAAE,cAAc,EAAyB,MAAM,aAAa,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAGrC,MAAM,0BAA0B,GAAG,EAAE,GAAG,MAAM,CAAA;AAC9C,MAAM,gBAAgB,GAAG,EAAE,CAAA;AA4B3B,MAAM,aAAa,GAAG,GAAG,CAAA;AAEzB,MAAM,aAAa,GAAG,6DAA6D,CAAA;AACnF,MAAM,YAAY,GAAG,IAAI,CAAA;AAEzB,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AASxE,MAAM,SAAU,SAAQ,KAAK;IAEhB,MAAM;IADjB,YACW,MAAc,EACvB,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAA;sBAHL,MAAM;IAIjB,CAAC;CACF;AAED,kHAAkH;AAClH,SAAS,eAAe,CAAC,MAA0B,EAAE,QAAgB;IACnE,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAA;IACxB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAChE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IACrD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;IACrE,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,IAAI,GAAG;IACX,6BAA6B,EAAE,GAAG;IAClC,8BAA8B,EAAE,oBAAoB;IACpD,8BAA8B,EAAE,2CAA2C;CAC5E,CAAA;AAED,SAAS,IAAI,CAAC,GAAmB,EAAE,MAAc,EAAE,IAAa;IAC9D,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;AAClG,CAAC;AAED,SAAS,QAAQ,CAAC,GAAoB,EAAE,KAAa;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,iGAAiG;QACjG,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC/B,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;YACpB,IAAI,IAAI,GAAG,KAAK;gBAAE,QAAQ,GAAG,IAAI,CAAA;;gBAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;QACF,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,IAAI,QAAQ;gBAAE,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAA;;gBAClE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;QACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAAuB,EAAE,IAAY;IACxD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC5B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAA;IAChD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACrB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,mBAAmB,CAAC,CAAA;IACzE,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,YAAY,CAAC,MAAuB,EAAE,IAAY;IACzD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC5B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAA;IAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,wBAAwB,CAAC,CAAA;IAChG,OAAO,GAAG,KAAK,MAAM,CAAA;AACvB,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,MAAuB,EAAE,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAA;AAE5F,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAO,GAAqB,EAAE;IACjE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,aAAa,EAAE,CAAA;IACtD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;IAE7D,KAAK,UAAU,MAAM,CAAC,GAAoB,EAAE,GAAmB;QAC7D,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAA;QAChH,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QAC9C,MAAM,QAAQ,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxD,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,6BAA6B,IAAI,4DAA4D,CAAC,CAAA;QACzH,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,UAAU,CAAC,CAAC,WAAW,EAAE,CAAA;QAC9E,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,MAAM;YAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,iCAAiC,QAAQ,qBAAqB,CAAC,CAAA;QAC5I,IAAI,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;QAC5C,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,gGAAgG;gBAChG,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,CAAA;YAC5D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAI,KAA+B,CAAC,IAAI,KAAK,sBAAsB,CAAA;gBACjF,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,gBAAgB,YAAY,mBAAmB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAA;YAClI,CAAC;QACH,CAAC;QACD,IAAI,OAAyB,CAAA;QAC7B,IAAI,CAAC;YACH,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QACnF,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAA;QAC/H,CAAC;QACD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;QACrC,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAChC,kGAAkG;QAClG,2GAA2G;QAC3G,wDAAwD;QACxD,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACrH,uGAAuG;QACvG,IAAI,QAAQ;YAAE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,wBAAwB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;;YACxF,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;IACzB,CAAC;IAED,6EAA6E;IAC7E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC7C,MAAM,MAAM,GAAqB,EAAE,CAAA;IACnC,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,MAAM,SAAS,GAAG,CAAC,OAAoC,EAAE,EAAE;QACzD,MAAM,QAAQ,GAAmB,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA;QAC3D,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrB,IAAI,MAAM,CAAC,MAAM,GAAG,aAAa;YAAE,MAAM,CAAC,KAAK,EAAE,CAAA;QACjD,MAAM,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAA;QACpD,gFAAgF;QAChF,KAAK,MAAM,GAAG,IAAI,WAAW;YAAE,IAAI,CAAC,GAAG,CAAC,aAAa;gBAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACxE,CAAC,CAAA;IACD,IAAI,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;IACtC,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACvG,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAA;YACzB,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;YAC1D,IAAI,CAAC,OAAO,CAAC,IAAI;gBAAE,SAAQ;YAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;YACzB,2FAA2F;YAC3F,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CACxC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBAChH,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;YAClH,CAAC,CAAC,CACH,CAAA;QACH,CAAC;IACH,CAAC,CAAA;IAED,SAAS,MAAM,CAAC,GAAoB,EAAE,GAAmB;QACvD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,kCAAkC,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAA;QAC1I,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;QAC5B,KAAK,MAAM,QAAQ,IAAI,MAAM;YAAE,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACjF,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACpB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,UAAU,IAAI,CAAC,GAAoB,EAAE,GAAmB;QAC3D,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QAC1D,IAAI,IAAiD,CAAA;QACrD,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,SAAS;gBAAE,MAAM,KAAK,CAAA;YAC3C,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAA;QACpD,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,IAAI,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC/E,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAA;QAC/D,IAAI,QAAQ,CAAC,MAAM,GAAG,YAAY;YAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,2BAA2B,YAAY,aAAa,CAAC,CAAA;QAClH,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAChC,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACpG,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,+DAA+D,CAAC,CAAA;QAC3F,CAAC;QAED,qFAAqF;QACrF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,qCAAqC,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,CAAA;QACnH,MAAM,IAAI,GAAG,CAAC,KAAgB,EAAE,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,aAAa;gBAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;QACjE,CAAC,CAAA;QACD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACpF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC1F,CAAC;QACD,GAAG,CAAC,GAAG,EAAE,CAAA;IACX,CAAC;IAED,KAAK,UAAU,KAAK,CAAC,GAAoB,EAAE,GAAmB;QAC5D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAA;QACvD,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,CAAA;QAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAA;QACxE,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY;YAAE,OAAO,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACnF,IAAI,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACxH,qGAAqG;YACrG,OAAO,KAAK,GAAG;iBACZ,SAAS,CAAC,GAAG,EAAE,EAAE,kBAAkB,EAAE,8CAA8C,EAAE,cAAc,EAAE,2BAA2B,EAAE,CAAC;iBACnI,GAAG,CAAC,kCAAkC,CAAC,CAAA;QAC5C,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAChF,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK;YAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;QAE/D,IAAI,GAAG,CAAC,QAAQ,KAAK,kBAAkB;YAAE,OAAO,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAChE,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAA;QAC9H,CAAC;QAED,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACrG,IAAI,GAAG,CAAC,QAAQ,KAAK,eAAe;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;QACxF,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YACnC,OAAO,IAAI,CACT,GAAG,EACH,GAAG,EACH,MAAM,OAAO,CAAC,WAAW,CAAC;gBACxB,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC;gBAClC,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC;gBACtC,cAAc,EAAE,YAAY,CAAC,CAAC,EAAE,gBAAgB,CAAC;gBACjD,aAAa,EAAE,WAAW,CAAC,CAAC,EAAE,eAAe,CAAC;gBAC9C,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC;gBACrC,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC;gBAChC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC;gBAC5B,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC;aAC/B,CAAC,CACH,CAAA;QACH,CAAC;QACD,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACxE,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;YACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAA;YACnE,6FAA6F;YAC7F,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACtI,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,iBAAiB,EAAE,CAAC;YACvC,OAAO,IAAI,CACT,GAAG,EACH,GAAG,EACH,MAAM,OAAO,CAAC,iBAAiB,CAAC;gBAC9B,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC;gBAClC,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC;gBACtC,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC;gBAChC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC;aAC7B,CAAC,CACH,CAAA;QACH,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,eAAe,IAAI,GAAG,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YAC1E,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,0BAA0B,CAAA;YACzE,IAAI,QAAQ,GAAG,MAAM,IAAI,QAAQ,GAAG,UAAU;gBAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,4DAA4D,CAAC,CAAA;YACtI,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;YAClD,+EAA+E;YAC/E,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,GAAG,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAA;YACrH,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC,CAAiB,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;YAC9J,IAAI,GAAG,CAAC,QAAQ,KAAK,eAAe;gBAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;YAC5F,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;YAC7C,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAA;YACjE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,gBAAgB,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;QAC3E,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YACnC,MAAM,MAAM,GAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;YACpM,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;QAC/B,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,0BAA0B,CAAA;YACzE,IAAI,QAAQ,GAAG,MAAM,IAAI,QAAQ,GAAG,UAAU;gBAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,4DAA4D,CAAC,CAAA;YACtI,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;YAClD,gGAAgG;YAChG,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAA;YACzG,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;YAC3F,6GAA6G;YAC7G,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,OAAO,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;YAChK,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE;gBACrC,KAAK;gBACL,QAAQ;gBACR,OAAO,EAAE,gBAAgB;gBACzB,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC;gBAClC,WAAW;gBACX,eAAe,EAAE,OAAO,CAAC,iBAAiB,EAAE;gBAC5C,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,SAAS,SAAS,SAAS,OAAO,EAAE,CAAC;aAChG,CAAC,CAAA;YACF,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;QAChC,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,iBAAiB,EAAE,CAAC;YACvC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,CAAA;YAC3J,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAChE,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;QAC9G,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,cAAc,CAAA;QAC7C,IAAI,KAAK,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAAE,OAAM;QAC9D,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,MAAM,GAAW,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC/C,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACvC,IAAI,GAAG,CAAC,WAAW;gBAAE,OAAM;YAC3B,IAAI,KAAK,YAAY,SAAS;gBAAE,OAAO,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;YACxF,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAA;YACjD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,OAAO,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IACF,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,kBAAkB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9I,6EAA6E;IAC7E,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,KAAK,MAAM,GAAG,IAAI,WAAW;YAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACxD,CAAC,EAAE,MAAM,CAAC,CAAA;IACV,aAAa,EAAE,KAAK,EAAE,CAAA;IACtB,SAAS,CAAC,KAAK,EAAE,CAAA;IAEjB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,EAAiB,CAAA;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAA;IAExC,OAAO;QACL,GAAG,EAAE,UAAU,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE;QAChE,IAAI;QACJ,OAAO;QACP,KAAK,EAAE,GAAG,EAAE,CACV,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9B,aAAa,CAAC,aAAa,CAAC,CAAA;YAC5B,aAAa,CAAC,SAAS,CAAC,CAAA;YACxB,KAAK,MAAM,GAAG,IAAI,WAAW;gBAAE,GAAG,CAAC,GAAG,EAAE,CAAA;YACxC,WAAW,CAAC,KAAK,EAAE,CAAA;YACnB,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;YAC5D,uHAAuH;YACvH,MAAM,CAAC,mBAAmB,EAAE,CAAA;QAC9B,CAAC,CAAC;KACL,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/collector/server.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,6GAA6G;AAC7G,iBAAiB;AACjB,uBAAuB;AACvB,+FAA+F;AAC/F,8BAA8B;AAC9B,uDAAuD;AACvD,gHAAgH;AAChH,2HAA2H;AAC3H,wGAAwG;AACxG,6IAA6I;AAC7I,gHAAgH;AAChH,sDAAsD;AACtD,wLAAwL;AACxL,wGAAwG;AACxG,6HAA6H;AAC7H,uEAAuE;AACvE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,YAAY,EAA0D,MAAM,WAAW,CAAA;AAEhG,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,WAAW,EAAsC,MAAM,sBAAsB,CAAA;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAqC,MAAM,oBAAoB,CAAA;AAClF,OAAO,EAAE,cAAc,EAAyB,MAAM,aAAa,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAGrC,MAAM,0BAA0B,GAAG,EAAE,GAAG,MAAM,CAAA;AAC9C,MAAM,gBAAgB,GAAG,EAAE,CAAA;AA4B3B,MAAM,aAAa,GAAG,GAAG,CAAA;AAEzB,MAAM,aAAa,GAAG,6DAA6D,CAAA;AACnF,MAAM,YAAY,GAAG,IAAI,CAAA;AAEzB,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AASxE,MAAM,SAAU,SAAQ,KAAK;IAEhB,MAAM;IADjB,YACW,MAAc,EACvB,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAA;sBAHL,MAAM;IAIjB,CAAC;CACF;AAED,kHAAkH;AAClH,SAAS,eAAe,CAAC,MAA0B,EAAE,QAAgB;IACnE,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAA;IACxB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAChE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IACrD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;IACrE,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,IAAI,GAAG;IACX,6BAA6B,EAAE,GAAG;IAClC,8BAA8B,EAAE,oBAAoB;IACpD,8BAA8B,EAAE,2CAA2C;CAC5E,CAAA;AAED,SAAS,IAAI,CAAC,GAAmB,EAAE,MAAc,EAAE,IAAa;IAC9D,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;AAClG,CAAC;AAED,SAAS,QAAQ,CAAC,GAAoB,EAAE,KAAa;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,iGAAiG;QACjG,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC/B,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;YACpB,IAAI,IAAI,GAAG,KAAK;gBAAE,QAAQ,GAAG,IAAI,CAAA;;gBAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;QACF,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,IAAI,QAAQ;gBAAE,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAA;;gBAClE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;QACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAAuB,EAAE,IAAY;IACxD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC5B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAA;IAChD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACrB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,mBAAmB,CAAC,CAAA;IACzE,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,YAAY,CAAC,MAAuB,EAAE,IAAY;IACzD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC5B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAA;IAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,wBAAwB,CAAC,CAAA;IAChG,OAAO,GAAG,KAAK,MAAM,CAAA;AACvB,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,MAAuB,EAAE,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAA;AAE5F,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAO,GAAqB,EAAE;IACjE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,aAAa,EAAE,CAAA;IACtD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;IAE7D,KAAK,UAAU,MAAM,CAAC,GAAoB,EAAE,GAAmB;QAC7D,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAA;QAChH,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QAC9C,MAAM,QAAQ,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxD,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,6BAA6B,IAAI,4DAA4D,CAAC,CAAA;QACzH,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,UAAU,CAAC,CAAC,WAAW,EAAE,CAAA;QAC9E,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,MAAM;YAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,iCAAiC,QAAQ,qBAAqB,CAAC,CAAA;QAC5I,IAAI,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;QAC5C,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,gGAAgG;gBAChG,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,CAAA;YAC5D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAI,KAA+B,CAAC,IAAI,KAAK,sBAAsB,CAAA;gBACjF,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,gBAAgB,YAAY,mBAAmB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAA;YAClI,CAAC;QACH,CAAC;QACD,IAAI,OAAyB,CAAA;QAC7B,IAAI,CAAC;YACH,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QACnF,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAA;QAC/H,CAAC;QACD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;QACrC,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAChC,kGAAkG;QAClG,2GAA2G;QAC3G,wDAAwD;QACxD,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACrH,uGAAuG;QACvG,IAAI,QAAQ;YAAE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,wBAAwB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;;YACxF,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;IACzB,CAAC;IAED,6EAA6E;IAC7E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC7C,MAAM,MAAM,GAAqB,EAAE,CAAA;IACnC,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,MAAM,SAAS,GAAG,CAAC,OAAoC,EAAE,EAAE;QACzD,MAAM,QAAQ,GAAmB,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA;QAC3D,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrB,IAAI,MAAM,CAAC,MAAM,GAAG,aAAa;YAAE,MAAM,CAAC,KAAK,EAAE,CAAA;QACjD,MAAM,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAA;QACpD,gFAAgF;QAChF,KAAK,MAAM,GAAG,IAAI,WAAW;YAAE,IAAI,CAAC,GAAG,CAAC,aAAa;gBAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACxE,CAAC,CAAA;IACD,IAAI,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;IACtC,sHAAsH;IACtH,MAAM,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAA;IACpD,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACvG,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAA;YACzB,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;YAC1D,IAAI,CAAC,OAAO,CAAC,IAAI;gBAAE,SAAQ;YAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;YACzB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;YACxC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;YACjC,2FAA2F;YAC3F,cAAc,GAAG,cAAc;iBAC5B,IAAI,CAAC,GAAG,EAAE,CACT,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnF,yGAAyG;gBACzG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;YAC9D,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;YAClJ,CAAC,CAAC,CACH;iBACA,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC,CAAA;IAED,SAAS,MAAM,CAAC,GAAoB,EAAE,GAAmB;QACvD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,kCAAkC,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAA;QAC1I,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;QAC5B,KAAK,MAAM,QAAQ,IAAI,MAAM;YAAE,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACjF,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACpB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,UAAU,IAAI,CAAC,GAAoB,EAAE,GAAmB;QAC3D,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QAC1D,IAAI,IAAiD,CAAA;QACrD,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,SAAS;gBAAE,MAAM,KAAK,CAAA;YAC3C,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAA;QACpD,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,IAAI,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC/E,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAA;QAC/D,IAAI,QAAQ,CAAC,MAAM,GAAG,YAAY;YAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,2BAA2B,YAAY,aAAa,CAAC,CAAA;QAClH,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAChC,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACpG,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,+DAA+D,CAAC,CAAA;QAC3F,CAAC;QAED,qFAAqF;QACrF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,qCAAqC,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,CAAA;QACnH,MAAM,IAAI,GAAG,CAAC,KAAgB,EAAE,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,aAAa;gBAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;QACjE,CAAC,CAAA;QACD,qHAAqH;QACrH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,CAAC,GAAG,CAAC,aAAa;gBAAE,UAAU,CAAC,KAAK,EAAE,CAAA;QAC5C,CAAC,CAAA;QACD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACxB,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAA;QAC/G,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC1F,CAAC;gBAAS,CAAC;YACT,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC3B,CAAC;QACD,GAAG,CAAC,GAAG,EAAE,CAAA;IACX,CAAC;IAED,qGAAqG;IACrG,KAAK,UAAU,aAAa,CAAC,GAAoB,EAAE,GAAmB;QACpE,IAAI,IAA0B,CAAA;QAC9B,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,SAAS;gBAAE,MAAM,KAAK,CAAA;YAC3C,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAA;QACpD,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;QAClE,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACxC,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAA;QAC7E,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAA;QACzC,UAAU,CAAC,KAAK,EAAE,CAAA;QAClB,4GAA4G;QAC5G,6GAA6G;QAC7G,IAAI,CAAC,OAAO;YAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;QAC/D,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,UAAU,KAAK,CAAC,GAAoB,EAAE,GAAmB;QAC5D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAA;QACvD,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,CAAA;QAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAA;QACxE,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY;YAAE,OAAO,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACnF,IAAI,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACxH,qGAAqG;YACrG,OAAO,KAAK,GAAG;iBACZ,SAAS,CAAC,GAAG,EAAE,EAAE,kBAAkB,EAAE,8CAA8C,EAAE,cAAc,EAAE,2BAA2B,EAAE,CAAC;iBACnI,GAAG,CAAC,kCAAkC,CAAC,CAAA;QAC5C,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAChF,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,gBAAgB;YAAE,OAAO,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAC9F,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK;YAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;QAE/D,IAAI,GAAG,CAAC,QAAQ,KAAK,kBAAkB;YAAE,OAAO,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAChE,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAA;QAC9H,CAAC;QAED,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACrG,IAAI,GAAG,CAAC,QAAQ,KAAK,eAAe;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;QACxF,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YACnC,OAAO,IAAI,CACT,GAAG,EACH,GAAG,EACH,MAAM,OAAO,CAAC,WAAW,CAAC;gBACxB,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC;gBAClC,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC;gBACtC,cAAc,EAAE,YAAY,CAAC,CAAC,EAAE,gBAAgB,CAAC;gBACjD,aAAa,EAAE,WAAW,CAAC,CAAC,EAAE,eAAe,CAAC;gBAC9C,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC;gBACrC,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC;gBAChC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC;gBAC5B,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC;aAC/B,CAAC,CACH,CAAA;QACH,CAAC;QACD,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACxE,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;YACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAA;YACnE,6FAA6F;YAC7F,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACtI,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,iBAAiB,EAAE,CAAC;YACvC,OAAO,IAAI,CACT,GAAG,EACH,GAAG,EACH,MAAM,OAAO,CAAC,iBAAiB,CAAC;gBAC9B,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC;gBAClC,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC;gBACtC,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC;gBAChC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC;aAC7B,CAAC,CACH,CAAA;QACH,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,eAAe,IAAI,GAAG,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YAC1E,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,0BAA0B,CAAA;YACzE,IAAI,QAAQ,GAAG,MAAM,IAAI,QAAQ,GAAG,UAAU;gBAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,4DAA4D,CAAC,CAAA;YACtI,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;YAClD,+EAA+E;YAC/E,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,GAAG,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAA;YACrH,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC,CAAiB,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;YAC9J,IAAI,GAAG,CAAC,QAAQ,KAAK,eAAe;gBAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;YAC5F,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;YAC7C,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAA;YACjE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,gBAAgB,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;QAC3E,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YACnC,MAAM,MAAM,GAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;YACpM,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;QAC/B,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,0BAA0B,CAAA;YACzE,IAAI,QAAQ,GAAG,MAAM,IAAI,QAAQ,GAAG,UAAU;gBAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,4DAA4D,CAAC,CAAA;YACtI,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;YAClD,gGAAgG;YAChG,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAA;YACzG,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;YAC3F,6GAA6G;YAC7G,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,OAAO,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;YAChK,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE;gBACrC,KAAK;gBACL,QAAQ;gBACR,OAAO,EAAE,gBAAgB;gBACzB,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC;gBAClC,WAAW;gBACX,eAAe,EAAE,OAAO,CAAC,iBAAiB,EAAE;gBAC5C,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,SAAS,SAAS,SAAS,OAAO,EAAE,CAAC;aAChG,CAAC,CAAA;YACF,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;QAChC,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,iBAAiB,EAAE,CAAC;YACvC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,CAAA;YAC3J,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAChE,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;QAC9G,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,cAAc,CAAA;QAC7C,IAAI,KAAK,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAAE,OAAM;QAC9D,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,MAAM,GAAW,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC/C,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACvC,IAAI,GAAG,CAAC,WAAW;gBAAE,OAAM;YAC3B,IAAI,KAAK,YAAY,SAAS;gBAAE,OAAO,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;YACxF,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAA;YACjD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,OAAO,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IACF,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,kBAAkB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9I,6EAA6E;IAC7E,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,KAAK,MAAM,GAAG,IAAI,WAAW;YAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACxD,CAAC,EAAE,MAAM,CAAC,CAAA;IACV,aAAa,EAAE,KAAK,EAAE,CAAA;IACtB,SAAS,CAAC,KAAK,EAAE,CAAA;IAEjB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,EAAiB,CAAA;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAA;IAExC,OAAO;QACL,GAAG,EAAE,UAAU,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE;QAChE,IAAI;QACJ,OAAO;QACP,KAAK,EAAE,GAAG,EAAE,CACV,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9B,aAAa,CAAC,aAAa,CAAC,CAAA;YAC5B,aAAa,CAAC,SAAS,CAAC,CAAA;YACxB,KAAK,MAAM,GAAG,IAAI,WAAW;gBAAE,GAAG,CAAC,GAAG,EAAE,CAAA;YACxC,WAAW,CAAC,KAAK,EAAE,CAAA;YACnB,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;YAC5D,uHAAuH;YACvH,MAAM,CAAC,mBAAmB,EAAE,CAAA;QAC9B,CAAC,CAAC;KACL,CAAA;AACH,CAAC"}