@nubisco/openbridge 0.36.0 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=device-health.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-health.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/device-health.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,92 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { assessDeviceHealth, silenceThresholdSeconds, MIN_SILENCE_SECONDS, DEFAULT_INTERVAL_SECONDS, SILENT_INTERVALS, } from '../device-health.js';
3
+ const NOW = Date.parse('2026-09-23T12:00:00.000Z');
4
+ const agoSeconds = (s) => new Date(NOW - s * 1000).toISOString();
5
+ describe('silenceThresholdSeconds', () => {
6
+ it('never drops below the floor, however fast the device polls', () => {
7
+ // A gate polled every second must not be called stale four seconds later.
8
+ expect(silenceThresholdSeconds(1)).toBe(MIN_SILENCE_SECONDS);
9
+ expect(silenceThresholdSeconds(10)).toBe(MIN_SILENCE_SECONDS);
10
+ });
11
+ it('scales with a slow device so it is not permanently accused', () => {
12
+ // Five minutes between reports is healthy for some devices. A fixed
13
+ // two-minute threshold would mark it stale essentially always.
14
+ expect(silenceThresholdSeconds(300)).toBe(300 * SILENT_INTERVALS);
15
+ });
16
+ it('falls back to a default when the plugin declares nothing', () => {
17
+ expect(silenceThresholdSeconds()).toBe(Math.max(MIN_SILENCE_SECONDS, DEFAULT_INTERVAL_SECONDS * SILENT_INTERVALS));
18
+ });
19
+ });
20
+ describe('assessDeviceHealth', () => {
21
+ it('is ok while telemetry is arriving', () => {
22
+ const health = assessDeviceHealth({
23
+ telemetry: { _updatedAt: agoSeconds(5) },
24
+ pluginStatus: 'running',
25
+ now: NOW,
26
+ });
27
+ expect(health.status).toBe('ok');
28
+ expect(health.reason).toBeNull();
29
+ });
30
+ it('tolerates a missed poll rather than flickering', () => {
31
+ // One interval late, on a 10s device. Well inside the floor.
32
+ const health = assessDeviceHealth({
33
+ telemetry: { _updatedAt: agoSeconds(20) },
34
+ intervalSeconds: 10,
35
+ pluginStatus: 'running',
36
+ now: NOW,
37
+ });
38
+ expect(health.status).toBe('ok');
39
+ });
40
+ it('reports a device that has gone quiet, and says how long for', () => {
41
+ // The shape of the real outage: the plugin kept running, the device
42
+ // stopped answering, and nothing in the UI said so for 36 hours.
43
+ const health = assessDeviceHealth({
44
+ telemetry: { _updatedAt: agoSeconds(36 * 3600) },
45
+ intervalSeconds: 10,
46
+ pluginStatus: 'running',
47
+ now: NOW,
48
+ });
49
+ expect(health.status).toBe('stale');
50
+ expect(health.silentForSeconds).toBeCloseTo(36 * 3600, 0);
51
+ expect(health.reason).toMatch(/36 hours/);
52
+ // The two causes actually seen, named so the reader has somewhere to start.
53
+ expect(health.reason).toMatch(/address/i);
54
+ });
55
+ it('blames the plugin when the plugin is the reason, not the device', () => {
56
+ const health = assessDeviceHealth({
57
+ telemetry: { _updatedAt: agoSeconds(99999) },
58
+ pluginStatus: 'error',
59
+ now: NOW,
60
+ });
61
+ expect(health.status).toBe('stale');
62
+ expect(health.reason).toMatch(/plugin is error/);
63
+ // Saying "silent for a day" would be true and useless: nothing is polling.
64
+ expect(health.reason).not.toMatch(/No response/);
65
+ });
66
+ it('treats a device that has never reported as unknown, not as broken', () => {
67
+ // Covers both a device still starting up and a plugin that reports no
68
+ // telemetry at all. Neither is a fault, and neither should raise an alarm.
69
+ const health = assessDeviceHealth({ telemetry: {}, pluginStatus: 'running', now: NOW });
70
+ expect(health.status).toBe('unknown');
71
+ expect(health.reason).toBeNull();
72
+ expect(health.lastSeen).toBeNull();
73
+ });
74
+ it('ignores a stamp it cannot parse instead of inventing an age', () => {
75
+ const health = assessDeviceHealth({
76
+ telemetry: { _updatedAt: 'not a date' },
77
+ pluginStatus: 'running',
78
+ now: NOW,
79
+ });
80
+ expect(health.status).toBe('unknown');
81
+ });
82
+ it('never reports negative silence when a device clock runs ahead', () => {
83
+ const health = assessDeviceHealth({
84
+ telemetry: { _updatedAt: new Date(NOW + 60_000).toISOString() },
85
+ pluginStatus: 'running',
86
+ now: NOW,
87
+ });
88
+ expect(health.status).toBe('ok');
89
+ expect(health.silentForSeconds).toBe(0);
90
+ });
91
+ });
92
+ //# sourceMappingURL=device-health.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-health.test.js","sourceRoot":"","sources":["../../src/__tests__/device-health.test.ts"],"names":[],"mappings":"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"}
@@ -192,6 +192,44 @@ describe('OpenBridge Server API', () => {
192
192
  await server.close();
193
193
  }
194
194
  });
195
+ it('reports a device that has stopped answering, rather than showing it as fine', async () => {
196
+ // The outage this exists for: the plugin kept running while the devices
197
+ // it polls had moved and gone silent, so every indicator stayed green.
198
+ // Plugin status and device health are different questions.
199
+ writeConfig(baseConfig);
200
+ const { createServer } = await import('../server.js');
201
+ const { PluginRegistry } = await import('@nubisco/openbridge-core');
202
+ const registry = new PluginRegistry();
203
+ const instance = registry.register({ manifest: { name: 'health-plugin', version: '1.0.0' } });
204
+ registry.updateStatus('health-plugin', 'running');
205
+ instance.devices = {
206
+ fresh: { id: 'fresh', name: 'Gate', widgetType: 'gate', pluginId: 'health-plugin' },
207
+ silent: { id: 'silent', name: 'Pool Filter', widgetType: 'switch', pluginId: 'health-plugin' },
208
+ never: { id: 'never', name: 'New Thing', widgetType: 'switch', pluginId: 'health-plugin' },
209
+ };
210
+ instance.telemetry = {
211
+ fresh: { _updatedAt: new Date().toISOString() },
212
+ silent: { _updatedAt: new Date(Date.now() - 36 * 3600 * 1000).toISOString() },
213
+ never: {},
214
+ };
215
+ const server = await createServer(registry, null, null, [], new Set(), new Map());
216
+ await listen(server);
217
+ try {
218
+ const { devices } = await (await fetch(`${BASE}/api/devices`)).json();
219
+ const byId = Object.fromEntries(devices.map((d) => [d.id, d]));
220
+ expect(byId.fresh.health.status).toBe('ok');
221
+ expect(byId.fresh.health.reason).toBeNull();
222
+ expect(byId.silent.health.status).toBe('stale');
223
+ expect(byId.silent.health.reason).toMatch(/36 hours/);
224
+ // The plugin is healthy, so the device must be blamed, not the plugin.
225
+ expect(byId.silent.pluginStatus).toBe('running');
226
+ // Never reported is not the same as broken.
227
+ expect(byId.never.health.status).toBe('unknown');
228
+ }
229
+ finally {
230
+ await server.close();
231
+ }
232
+ });
195
233
  it('persists a Homebridge plugin by package name, not the platform name it registers under', async () => {
196
234
  // The loader looks plugins up by npm package name. A compat plugin is
197
235
  // registered under its *platform* name, so persisting the registry id
@@ -1 +1 @@
1
- {"version":3,"file":"server.test.js","sourceRoot":"","sources":["../../src/__tests__/server.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAClF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAE3B,mEAAmE;AACnE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;AAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;AACjD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;AAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;AACtD,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;AAEtD,4EAA4E;AAC5E,6CAA6C;AAC7C,MAAM,SAAS,GAAG,KAAK,CAAA;AAEvB,0EAA0E;AAC1E,IAAI,IAAI,GAAG,EAAE,CAAA;AAEb;;;;;;;;;GASG;AACH,KAAK,UAAU,MAAM,CAAC,MAA0F;IAC9G,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAsB,CAAA;IAC3D,IAAI,GAAG,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAA;AAC3C,CAAC;AAED,SAAS,WAAW,CAAC,MAA+B;IAClD,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC7D,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,GAAG;IACjB,MAAM,EAAE;QACN,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE,OAAO;KAClB;IACD,SAAS,EAAE,EAAE;IACb,OAAO,EAAE;QACP;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;SACvB;KACF;IACD,eAAe,EAAE,EAAE;CACpB,CAAA;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,SAAS,CAAC,GAAG,EAAE;QACb,0BAA0B;QAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACxC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9C,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAE9C,uCAAuC;QACvC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,SAAS,CAAA;QAC5B,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,YAAY,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,GAAG,EAAE;QACZ,IAAI,CAAC;YACH,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,UAAU,CAAC,GAAG,EAAE;YACd,WAAW,CAAC,UAAU,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,8CAA8C;YAC9C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,aAAa,CAAC,CAAA;gBAC7C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;gBAE7B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;gBACvC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAA;YACtC,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,CAAA;gBACzC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;gBAE7B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAA;gBAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAA;YACjC,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,CAAA;YAClE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACpF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,CAAA;gBACzC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;gBAE7B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACzC,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,WAAW,CAAC,UAAU,CAAC,CAAA;YACvB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,yBAAyB;YACzB,QAAQ,CAAC,QAAQ,CAAC;gBAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE;aAC3E,CAAC,CAAA;YACF,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;YAE/C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,cAAc,CAAC,CAAA;gBAC9C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;gBAE7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;gBACpC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBACzD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAChD,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,0EAA0E;YAC1E,wEAAwE;YACxE,yEAAyE;YACzE,8BAA8B;YAC9B,WAAW,CAAC,UAAU,CAAC,CAAA;YACvB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,QAAQ,GAAQ,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;YACnG,QAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;YAClD,QAAQ,CAAC,OAAO,GAAG;gBACjB,OAAO,EAAE;oBACP,EAAE,EAAE,OAAO;oBACX,IAAI,EAAE,aAAa;oBACnB,UAAU,EAAE,QAAQ;oBACpB,QAAQ,EAAE,gBAAgB;oBAC1B,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;iBACjF;aACF,CAAA;YAED,IAAI,GAAG,GAAG,CAAC,CAAA;YACX,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAmD,CAAC,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;YAEjH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;YAChF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;gBAChE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAA;gBAChE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAA;gBAEvG,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,4BAA4B,EAAE;oBAC3D,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;iBACzD,CAAC,CAAA;gBACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACrB,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wFAAwF,EAAE,KAAK,IAAI,EAAE;YACtG,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,WAAW,CAAC,UAAU,CAAC,CAAA;YACvB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,CAAC,CAAA;YACtG,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAA;YAC9B,QAAQ,CAAC,YAAY,GAAG,WAAW,CAAA;YACnC,QAAQ,CAAC,WAAW,GAAG,uBAAuB,CAAA;YAE9C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,GAAG,IAAI,iCAAiC,EAAE;oBACpD,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;iBACzC,CAAC,CAAA;gBAEF,MAAM,QAAQ,GAAI,UAAU,EAAU,CAAC,eAAe,CAAA;gBACtD,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAA;gBACnD,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;YAC7C,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;YAC7F,WAAW,CAAC,EAAE,GAAG,UAAU,EAAE,eAAe,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;YAC9D,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,CAAC,CAAA;YACtG,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAA;YAC9B,QAAQ,CAAC,YAAY,GAAG,WAAW,CAAA;YACnC,QAAQ,CAAC,WAAW,GAAG,uBAAuB,CAAA;YAE9C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,GAAG,IAAI,iCAAiC,EAAE;oBACpD,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;iBAC1C,CAAC,CAAA;gBAEF,oEAAoE;gBACpE,MAAM,CAAE,UAAU,EAAU,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAC3D,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,WAAW,CAAC,UAAU,CAAC,CAAA;YACvB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,QAAQ,CAAC,QAAQ,CAAC;gBAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE;aACpD,CAAC,CAAA;YACF,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;YAE/C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,UAAU;gBACV,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,mCAAmC,EAAE;oBACnE,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;iBACzC,CAAC,CAAA;gBACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;gBAC/B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAEjC,6BAA6B;gBAC7B,MAAM,GAAG,GAAG,UAAU,EAAE,CAAA;gBACxB,MAAM,CAAE,GAAW,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;gBAE7D,YAAY;gBACZ,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,mCAAmC,EAAE;oBACnE,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;iBAC1C,CAAC,CAAA;gBACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;gBAC/B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAElC,MAAM,IAAI,GAAG,UAAU,EAAE,CAAA;gBACzB,MAAM,CAAE,IAAY,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;YACpE,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,WAAW,CAAC,UAAU,CAAC,CAAA;YACvB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,aAAa,CAAC,CAAA;gBAC7C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;gBAE7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;gBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACvC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YAChD,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,WAAW,CAAC,UAAU,CAAC,CAAA;YACvB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,CAAA;gBAC7F,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,aAAa,EAAE;oBAC5C,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACtE,CAAC,CAAA;gBAEF,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAEzB,0BAA0B;gBAC1B,MAAM,KAAK,GAAG,UAAU,EAAE,CAAA;gBAC1B,MAAM,CAAE,KAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAC3D,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,WAAW,CAAC,UAAU,CAAC,CAAA;YACvB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,aAAa,EAAE;oBAC5C,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;iBACvD,CAAC,CAAA;gBAEF,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC5B,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,WAAW,CAAC,UAAU,CAAC,CAAA;YACvB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,aAAa,CAAC,CAAA;gBAC7C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;gBAE7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACjC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACzC,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,WAAW,CAAC,UAAU,CAAC,CAAA;YACvB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,aAAa,EAAE;oBAC5C,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;iBAClD,CAAC,CAAA;gBACF,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAEzB,MAAM,KAAK,GAAG,UAAU,EAAE,CAAA;gBAC1B,MAAM,CAAE,KAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YAC5D,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,WAAW,CAAC,UAAU,CAAC,CAAA;YACvB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,iCAAiC;YACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBACjC,QAAQ,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE;aACtD,CAAC,CAAA;YACF,QAAQ,CAAC,OAAO,GAAG;gBACjB,OAAO,EAAE;oBACP,EAAE,EAAE,OAAO;oBACX,IAAI,EAAE,aAAa;oBACnB,UAAU,EAAE,QAAQ;oBACpB,QAAQ,EAAE,eAAe;iBAC1B;aACF,CAAA;YACD,QAAQ,CAAC,SAAS,GAAG;gBACnB,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;aAChE,CAAA;YACD,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAE,SAAS,CAAC,CAAA;YAEjD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,cAAc,CAAC,CAAA;gBAC9C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;gBAE7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;gBACpC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACxC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBAChD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACnD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACtD,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,WAAW,CAAC,UAAU,CAAC,CAAA;YACvB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,IAAI,eAAe,GAAY,IAAI,CAAA;YACnC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoC,CAAA;YAC5D,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;gBACtC,eAAe,GAAG,KAAK,CAAA;YACzB,CAAC,CAAC,CAAA;YAEF,kBAAkB;YAClB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBACjC,QAAQ,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE;aACpD,CAAC,CAAA;YACF,QAAQ,CAAC,OAAO,GAAG;gBACjB,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE;aACxF,CAAA;YACD,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;YAE/C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;YAChF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,4BAA4B,EAAE;oBAC3D,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;iBAC1D,CAAC,CAAA;gBAEF,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACzB,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACrC,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,MAAM,GAAG;gBACb,GAAG,UAAU;gBACb,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;oBACjC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE;iBACpC;aACF,CAAA;YACD,WAAW,CAAC,MAAM,CAAC,CAAA;YAEnB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,oCAAoC;YACpC,QAAQ,CAAC,QAAQ,CAAC;gBAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE;aACpD,CAAC,CAAA;YAEF,+DAA+D;YAC/D,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;YACjH,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE,aAAa,CAAC,CAAA;YAClE,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACtC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,0CAA0C,CAAC,CAAA;YAEvF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,wCAAwC,EAAE;oBACvE,MAAM,EAAE,QAAQ;iBACjB,CAAC,CAAA;gBACF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;gBAE7B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBAE5C,oCAAoC;gBACpC,MAAM,KAAK,GAAG,UAAU,EAAE,CAAA;gBAC1B,MAAM,OAAO,GAAI,KAAa,CAAC,OAA6B,CAAA;gBAC5D,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;gBAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBAEzC,+BAA+B;gBAC/B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;YACrD,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,MAAM,GAAG;gBACb,GAAG,UAAU;gBACb,SAAS,EAAE;oBACT,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,cAAc,yCAAyC,EAAE;oBAChG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,cAAc,2CAA2C,EAAE;iBACrG;aACF,CAAA;YACD,WAAW,CAAC,MAAM,CAAC,CAAA;YAEnB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,sCAAsC;YACtC,aAAa,CACX,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,EACpC,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,CAAC,CAC/D,CAAA;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE,eAAe,CAAC,CAAA;YACpE,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACtC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,4CAA4C,CAAC,CAAA;YAEzF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,0CAA0C,EAAE;oBACzE,MAAM,EAAE,QAAQ;iBACjB,CAAC,CAAA;gBAEF,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAEzB,MAAM,KAAK,GAAG,UAAU,EAAE,CAAA;gBAC1B,MAAM,SAAS,GAAI,KAAa,CAAC,SAAmC,CAAA;gBACpE,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;gBACjC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YACpD,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAG,uBAAuB,CAAA;QACtC,MAAM,GAAG,GAAG,UAAU,CAAA;QACtB,IAAI,OAAsB,CAAA;QAC1B,IAAI,SAAiE,CAAA;QAErE,SAAS,CAAC,KAAK,IAAI,EAAE;YACnB,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CACxC,EAAE,IAAI,EAAE,mBAAmB,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAC9G,IAAI,EACJ,CAAC,MAAM,EAAE,QAAQ,CAAC,CACnB,CAAkB,CAAA;YACnB,SAAS,GAAG,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAA;QAClH,CAAC,CAAC,CAAA;QAEF,KAAK,UAAU,OAAO,CAAC,MAA+B;YACpD,MAAM,GAAG,GAAG,CAAC,GAAY,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;YACpF,MAAM,YAAY,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAA;YACxE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;YACxG,OAAO,GAAG,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAA;QACpE,CAAC;QAED,SAAS,UAAU;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;YACzC,OAAO;gBACL,GAAG,EAAE,QAAQ;gBACb,KAAK,EAAE,iBAAiB;gBACxB,IAAI,EAAE,OAAO;gBACb,GAAG,EAAE,YAAY;gBACjB,GAAG,EAAE,MAAM;gBACX,GAAG,EAAE,GAAG;gBACR,GAAG,EAAE,GAAG,GAAG,GAAG;aACf,CAAA;QACH,CAAC;QAED,KAAK,UAAU,cAAc,CAAC,EAAmC;YAC/D,WAAW,CAAC,UAAU,CAAC,CAAA;YACvB,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAA;YACrC,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,MAAM,CAAA;YACpC,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,YAAY,CAAA;YAE1C,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAA;YAClC,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAChF,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,wBAAwB,EAAE,CAAC;oBACxD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;gBAC9F,CAAC;gBACD,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;YAEF,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YAC7F,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;YAChB,CAAC;oBAAS,CAAC;gBACT,QAAQ,CAAC,WAAW,EAAE,CAAA;gBACtB,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAA;gBACnC,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;gBAClC,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;gBAClC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC;QAED,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,IAA6B;YACrE,OAAO,KAAK,CAAC,GAAG,IAAI,yBAAyB,EAAE;gBAC7C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAA;QACJ,CAAC;QAED,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAClC,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC5E,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAA;gBACtE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;gBAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAA;YACvE,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAClC,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAA;gBACrG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACpD,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAClC,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAA;gBACrG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;YAC3D,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAClC,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAA;gBACpG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC9B,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,UAAU,CAAC,GAAG,EAAE;YACd,WAAW,CAAC,UAAU,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;YACrF,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,yEAAyE;YACzE,oDAAoD;YACpD,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAA;YAClC,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAChF,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;gBACzB,IAAI,GAAG,CAAC,UAAU,CAAC,6BAA6B,CAAC,EAAE,CAAC;oBAClD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;gBAC9E,CAAC;gBACD,IAAI,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE,CAAC;oBAC9C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,uCAAuC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;gBAChG,CAAC;gBACD,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAA;gBACpD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;gBAE7B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;gBACvC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACjC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACvC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAA;gBACzF,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAA;YACtC,CAAC;oBAAS,CAAC;gBACT,QAAQ,CAAC,WAAW,EAAE,CAAA;gBACtB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;YAC3F,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAA;YAClC,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAChF,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;gBACzB,IAAI,GAAG,CAAC,UAAU,CAAC,6BAA6B,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;oBAChF,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA;gBACtD,CAAC;gBACD,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAA;gBACpD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;gBAE7B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;gBACvC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;gBAC9B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC1C,CAAC;oBAAS,CAAC;gBACT,QAAQ,CAAC,WAAW,EAAE,CAAA;gBACtB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,0EAA0E;QAC1E,yEAAyE;QACzE,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;YACxF,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAA;YAClC,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAChF,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;gBACzB,IAAI,GAAG,CAAC,UAAU,CAAC,6BAA6B,CAAC,EAAE,CAAC;oBAClD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;gBAC9E,CAAC;gBACD,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;oBAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA;gBACpF,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;gBAEpE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBACxC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBACzC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;gBAChD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAA;YAClC,CAAC;oBAAS,CAAC;gBACT,QAAQ,CAAC,WAAW,EAAE,CAAA;gBACtB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACtF,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,oBAAoB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;gBACxE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAA;YACtE,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,UAAU,CAAC,GAAG,EAAE;YACd,WAAW,CAAC,UAAU,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;QAEF,KAAK,UAAU,sBAAsB;YACnC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,QAAQ,CAAC,QAAQ,CAAC;gBAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE;aAC3C,CAAC,CAAA;YACX,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAE,CAAA;YAC1C,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG;gBACvB,eAAe,EAAE;oBACf,EAAE,EAAE,eAAe;oBACnB,IAAI,EAAE,gBAAgB;oBACtB,UAAU,EAAE,cAAc;oBAC1B,QAAQ,EAAE,aAAa;oBACvB,OAAO,EAAE;wBACP,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;wBAC5D,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;qBAChF;iBACF;gBACD,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE;aAC1F,CAAA;YAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YACpB,OAAO,MAAM,CAAA;QACf,CAAC;QAED,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAA;YAC7C,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,oCAAoC,CAAC,CAAA;gBACpE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;gBAE7B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAA;gBAChG,sEAAsE;gBACtE,mCAAmC;gBACnC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;YAChC,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAA;YAC7C,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,4BAA4B,CAAC,CAAA;gBAC5D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;gBAC7B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAClC,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAA;YAC7C,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,2BAA2B,CAAC,CAAA;gBAC3D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC9B,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAA;YAC7C,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,oDAAoD,CAAC,CAAA;gBACpF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC9B,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAA;YAC7C,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,mEAAmE,CAAC,CAAA;gBACnG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC9B,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;YAC7F,MAAM,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAA;YAC7C,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,mEAAmE,CAAC,CAAA;gBACnG,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;gBAE7B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACzC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;gBACtC,mEAAmE;gBACnE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;YACnD,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,UAAU,CAAC,GAAG,EAAE;YACd,WAAW,CAAC,UAAU,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;YAC5F,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,oEAAoE;YACpE,yEAAyE;YACzE,0BAA0B;YAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAA;YAClC,MAAM,OAAO,GAAa,EAAE,CAAA;YAC5B,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAChF,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;gBACzB,IAAI,GAAG,CAAC,UAAU,CAAC,wCAAwC,CAAC,EAAE,CAAC;oBAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAA;oBAClD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAA;oBAClE,MAAM,IAAI,GAAG,QAAQ;wBACnB,CAAC,CAAC;4BACE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,qCAAqC,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;4BACzF,KAAK,EAAE,CAAC;4BACR,IAAI,EAAE,KAAK;yBACZ;wBACH,CAAC,CAAC;4BACE,OAAO,EAAE;gCACP,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE;gCAChE,4DAA4D;gCAC5D,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,qCAAqC,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE;6BAC/E;4BACD,KAAK,EAAE,IAAI;4BACX,IAAI,EAAE,KAAK;yBACZ,CAAA;oBACL,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;gBAC7E,CAAC;gBACD,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAA;gBAClE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;gBAE7B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,CAAA;gBAE1E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAgC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACpF,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAA;gBAC9D,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAA;gBAEhD,qEAAqE;gBACrE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,qCAAqC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;gBAChG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAA;YAC9D,CAAC;oBAAS,CAAC;gBACT,QAAQ,CAAC,WAAW,EAAE,CAAA;gBACtB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;YAErC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;YAEpB,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAA;YAClC,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAChF,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;gBACzB,IAAI,GAAG,CAAC,UAAU,CAAC,wCAAwC,CAAC,EAAE,CAAC;oBAC7D,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;gBACxE,CAAC;gBACD,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAA;gBAClE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC9B,CAAC;oBAAS,CAAC;gBACT,QAAQ,CAAC,WAAW,EAAE,CAAA;gBACtB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"server.test.js","sourceRoot":"","sources":["../../src/__tests__/server.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Is a device still answering?
3
+ *
4
+ * This exists because of a real outage. Two Shellys and six bulbs lost their
5
+ * DHCP reservations, moved, and went unreachable for thirty-six hours. The
6
+ * daemon knew the whole time, in the sense that its log filled with timeouts
7
+ * and its poll loops stopped reporting, but the UI showed a tidy list of
8
+ * devices and said nothing at all. The failure was discovered from HomeKit.
9
+ *
10
+ * The signal was already being recorded and nobody was reading it.
11
+ * `reportTelemetry` stamps `_updatedAt` on every device of every plugin, so a
12
+ * device that has stopped answering is a device whose stamp has stopped
13
+ * moving. That is worth more than asking plugins to report health, because it
14
+ * needs no cooperation: a plugin that fails to poll cannot forget to say so,
15
+ * and a plugin written before this existed is covered anyway.
16
+ *
17
+ * Deliberately a pure function over a clock. Anything that decides whether to
18
+ * raise an alarm has to be testable without waiting for real time to pass.
19
+ */
20
+ import type { DeviceHealth } from '@nubisco/openbridge-core';
21
+ /**
22
+ * Silence below this is never interesting, whatever the device's interval.
23
+ *
24
+ * A poll can be late for reasons that are not a fault: a slow device, a
25
+ * retried request, a busy host. Flagging a device that is one cycle behind
26
+ * would make the indicator meaningless within a day, and an indicator people
27
+ * learn to ignore is worse than no indicator, because it also discredits the
28
+ * true ones next to it.
29
+ */
30
+ export declare const MIN_SILENCE_SECONDS = 120;
31
+ /**
32
+ * How many expected intervals of silence before saying so.
33
+ *
34
+ * Four rather than two: a device is allowed to miss a poll and still be
35
+ * healthy, and the cost of noticing an outage a minute later is far lower than
36
+ * the cost of an indicator that flickers.
37
+ */
38
+ export declare const SILENT_INTERVALS = 4;
39
+ /** Default assumed reporting interval when a plugin does not declare one. */
40
+ export declare const DEFAULT_INTERVAL_SECONDS = 30;
41
+ export interface HealthInput {
42
+ /** The device's telemetry, as reported. `_updatedAt` is the field read. */
43
+ telemetry?: Record<string, unknown>;
44
+ /** `telemetryIntervalSeconds` from the descriptor, when declared. */
45
+ intervalSeconds?: number;
46
+ /** The owning plugin's status, which overrides everything below it. */
47
+ pluginStatus?: string;
48
+ /** Now, injected so this is testable. */
49
+ now?: number;
50
+ }
51
+ /** Seconds of silence tolerated for a device before it is called stale. */
52
+ export declare function silenceThresholdSeconds(intervalSeconds?: number): number;
53
+ export declare function assessDeviceHealth(input: HealthInput): DeviceHealth;
54
+ //# sourceMappingURL=device-health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-health.d.ts","sourceRoot":"","sources":["../src/device-health.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,MAAM,CAAA;AAEtC;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAA;AAEjC,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAE1C,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,2EAA2E;AAC3E,wBAAgB,uBAAuB,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAGxE;AAWD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAqCnE"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Silence below this is never interesting, whatever the device's interval.
3
+ *
4
+ * A poll can be late for reasons that are not a fault: a slow device, a
5
+ * retried request, a busy host. Flagging a device that is one cycle behind
6
+ * would make the indicator meaningless within a day, and an indicator people
7
+ * learn to ignore is worse than no indicator, because it also discredits the
8
+ * true ones next to it.
9
+ */
10
+ export const MIN_SILENCE_SECONDS = 120;
11
+ /**
12
+ * How many expected intervals of silence before saying so.
13
+ *
14
+ * Four rather than two: a device is allowed to miss a poll and still be
15
+ * healthy, and the cost of noticing an outage a minute later is far lower than
16
+ * the cost of an indicator that flickers.
17
+ */
18
+ export const SILENT_INTERVALS = 4;
19
+ /** Default assumed reporting interval when a plugin does not declare one. */
20
+ export const DEFAULT_INTERVAL_SECONDS = 30;
21
+ /** Seconds of silence tolerated for a device before it is called stale. */
22
+ export function silenceThresholdSeconds(intervalSeconds) {
23
+ const interval = intervalSeconds && intervalSeconds > 0 ? intervalSeconds : DEFAULT_INTERVAL_SECONDS;
24
+ return Math.max(MIN_SILENCE_SECONDS, interval * SILENT_INTERVALS);
25
+ }
26
+ function humanDuration(seconds) {
27
+ if (seconds < 90)
28
+ return `${Math.round(seconds)} seconds`;
29
+ const minutes = seconds / 60;
30
+ if (minutes < 90)
31
+ return `${Math.round(minutes)} minutes`;
32
+ const hours = minutes / 60;
33
+ if (hours < 48)
34
+ return `${Math.round(hours)} hours`;
35
+ return `${Math.round(hours / 24)} days`;
36
+ }
37
+ export function assessDeviceHealth(input) {
38
+ const now = input.now ?? Date.now();
39
+ // A plugin that is not running explains every one of its devices at once,
40
+ // and says something more useful than "silent for 3 hours" would. Checked
41
+ // first for that reason: the device is not the problem.
42
+ if (input.pluginStatus && input.pluginStatus !== 'running') {
43
+ return {
44
+ status: 'stale',
45
+ lastSeen: readStamp(input.telemetry),
46
+ silentForSeconds: silentFor(input.telemetry, now),
47
+ reason: `Its plugin is ${input.pluginStatus}, so nothing is polling this device.`,
48
+ };
49
+ }
50
+ const lastSeen = readStamp(input.telemetry);
51
+ if (!lastSeen) {
52
+ return {
53
+ status: 'unknown',
54
+ lastSeen: null,
55
+ silentForSeconds: null,
56
+ reason: null,
57
+ };
58
+ }
59
+ const silent = silentFor(input.telemetry, now) ?? 0;
60
+ const threshold = silenceThresholdSeconds(input.intervalSeconds);
61
+ if (silent < threshold) {
62
+ return { status: 'ok', lastSeen, silentForSeconds: silent, reason: null };
63
+ }
64
+ return {
65
+ status: 'stale',
66
+ lastSeen,
67
+ silentForSeconds: silent,
68
+ reason: `No response for ${humanDuration(silent)}. It may be powered off, or its address may have changed.`,
69
+ };
70
+ }
71
+ function readStamp(telemetry) {
72
+ const raw = telemetry?._updatedAt;
73
+ if (typeof raw !== 'string')
74
+ return null;
75
+ return Number.isNaN(Date.parse(raw)) ? null : raw;
76
+ }
77
+ function silentFor(telemetry, now) {
78
+ const stamp = readStamp(telemetry);
79
+ if (!stamp)
80
+ return null;
81
+ // Clamped at zero: a device whose clock runs ahead of the host would
82
+ // otherwise report negative silence, which reads as nonsense in the UI.
83
+ return Math.max(0, (now - Date.parse(stamp)) / 1000);
84
+ }
85
+ //# sourceMappingURL=device-health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-health.js","sourceRoot":"","sources":["../src/device-health.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAa7B,OAAO,KAAK,EAAE,cAAc,EAA4B,MAAM,0BAA0B,CAAA;AAGxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAA;AASjF,OAAO,EAA4B,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAwC7B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,2BAA2B,CAAA;AAElC,MAAM,WAAW,OAAO;IACtB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAWD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,cAAc,EACxB,MAAM,GAAE,aAAa,GAAG,IAAW,EACnC,OAAO,GAAE,OAAO,GAAG,IAAW,EAC9B,kBAAkB,GAAE,MAAM,EAAO,EACjC,mBAAmB,GAAE,GAAG,CAAC,MAAM,CAAa,EAC5C,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAa,EAC3E,kBAAkB,GAAE,GAAG,CAAC,MAAM,CAAa,EAC3C,iBAAiB,GAAE,iBAAiB,GAAG,IAAW,EAClD,mBAAmB,GAAE,mBAAmB,GAAG,IAAW;AACtD;;;;GAIG;AACH,sBAAsB,GAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC,GAAG,IAAW;AAC5E,4EAA4E;AAC5E,mBAAmB,GAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAW;AACxE,6EAA6E;AAC7E,YAAY,GAAE,cAAc,GAAG,IAAW,sSA8uD3C"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAa7B,OAAO,KAAK,EAAE,cAAc,EAA0C,MAAM,0BAA0B,CAAA;AAItG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAA;AASjF,OAAO,EAA4B,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAwC7B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,2BAA2B,CAAA;AAElC,MAAM,WAAW,OAAO;IACtB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAWD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,cAAc,EACxB,MAAM,GAAE,aAAa,GAAG,IAAW,EACnC,OAAO,GAAE,OAAO,GAAG,IAAW,EAC9B,kBAAkB,GAAE,MAAM,EAAO,EACjC,mBAAmB,GAAE,GAAG,CAAC,MAAM,CAAa,EAC5C,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAa,EAC3E,kBAAkB,GAAE,GAAG,CAAC,MAAM,CAAa,EAC3C,iBAAiB,GAAE,iBAAiB,GAAG,IAAW,EAClD,mBAAmB,GAAE,mBAAmB,GAAG,IAAW;AACtD;;;;GAIG;AACH,sBAAsB,GAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC,GAAG,IAAW;AAC5E,4EAA4E;AAC5E,mBAAmB,GAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAW;AACxE,6EAA6E;AAC7E,YAAY,GAAE,cAAc,GAAG,IAAW,sSA2vD3C"}
package/dist/server.js CHANGED
@@ -9,6 +9,7 @@ import { spawn } from 'child_process';
9
9
  import { createRequire } from 'module';
10
10
  import os from 'os';
11
11
  const _req = createRequire(import.meta.url);
12
+ import { assessDeviceHealth } from './device-health.js';
12
13
  import { Logger } from '@nubisco/openbridge-logger';
13
14
  import { startMetrics, onMetrics, getHistory } from './metrics.js';
14
15
  import { loadAuthConfig, registerAuthRoutes } from './auth.js';
@@ -439,7 +440,14 @@ deviceEvents = null) {
439
440
  // lamp as a light rather than contradicting the inspector next to it.
440
441
  const accessoryUuid = nativeAccessoryUuid?.(device.id) ?? null;
441
442
  const homekitType = accessoryUuid ? (homekitServiceTypes?.typeForAccessory(accessoryUuid) ?? null) : null;
442
- devices.push({ ...device, name, telemetry, pluginStatus: instance.status, homekitType });
443
+ // Derived here rather than stored, so it is always current and there
444
+ // is no second copy of the truth to go stale on its own.
445
+ const health = assessDeviceHealth({
446
+ telemetry,
447
+ intervalSeconds: device.telemetryIntervalSeconds,
448
+ pluginStatus: instance.status,
449
+ });
450
+ devices.push({ ...device, name, telemetry, pluginStatus: instance.status, homekitType, health });
443
451
  }
444
452
  }
445
453
  return { devices };