@markus-global/cli 0.7.3-rc.0 → 0.7.3-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tray.d.ts +0 -2
- package/dist/tray.d.ts.map +1 -1
- package/dist/tray.js +132 -96
- package/dist/tray.js.map +1 -1
- package/dist/tray.mjs +131 -78
- package/dist/web-ui/assets/{browser-hW8kkJnA.js → browser-DT4cceR1.js} +1 -1
- package/dist/web-ui/assets/{index-BgSvPmbf.js → index-Mg5Mw82t.js} +2 -2
- package/dist/web-ui/index.html +1 -1
- package/package.json +1 -1
package/dist/tray.d.ts
CHANGED
package/dist/tray.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tray.d.ts","sourceRoot":"","sources":["../src/tray.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tray.d.ts","sourceRoot":"","sources":["../src/tray.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
package/dist/tray.js
CHANGED
|
@@ -1,42 +1,92 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Cross-platform system tray controller for Markus.
|
|
3
3
|
* Provides start/stop controls and quick access to the Web UI.
|
|
4
|
-
*
|
|
5
|
-
* Launched by the desktop shortcut / .app instead of `markus start` directly.
|
|
6
4
|
*/
|
|
7
5
|
import { spawn, exec, execSync } from 'node:child_process';
|
|
8
|
-
import { readFileSync, existsSync, mkdirSync } from 'node:fs';
|
|
6
|
+
import { readFileSync, existsSync, mkdirSync, appendFileSync } from 'node:fs';
|
|
9
7
|
import { get as httpGet } from 'node:http';
|
|
10
8
|
import { createConnection } from 'node:net';
|
|
11
|
-
import { resolve, dirname } from 'node:path';
|
|
9
|
+
import { resolve, dirname, join } from 'node:path';
|
|
12
10
|
import { fileURLToPath } from 'node:url';
|
|
13
11
|
import { platform, homedir } from 'node:os';
|
|
14
12
|
import SysTrayModule from 'systray2';
|
|
15
|
-
// systray2 is CJS; default export is the class
|
|
16
13
|
const SysTray = SysTrayModule.default || SysTrayModule;
|
|
17
14
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
18
15
|
const WEB_UI_PORT = 8056;
|
|
19
16
|
const WEB_UI_URL = `http://localhost:${WEB_UI_PORT}`;
|
|
20
|
-
// Resolve paths relative to the binary distribution layout:
|
|
21
|
-
// bin/tray.mjs (this file)
|
|
22
|
-
// bin/node (bundled node)
|
|
23
|
-
// bin/markus.mjs
|
|
24
17
|
const BIN_DIR = __dirname;
|
|
25
18
|
const APP_DIR = resolve(BIN_DIR, '..');
|
|
26
|
-
const NODE_BIN = resolve(BIN_DIR, platform() === 'win32' ? 'node.exe' : 'node');
|
|
27
|
-
const MARKUS_MJS = resolve(BIN_DIR, 'markus.mjs');
|
|
28
19
|
const LOG_DIR = resolve(homedir(), '.markus', 'logs');
|
|
20
|
+
const LOG_FILE = join(LOG_DIR, 'tray-stderr.log');
|
|
21
|
+
// Resolve the markus command: prefer the symlink in /usr/local/bin,
|
|
22
|
+
// then fall back to the bundled wrapper script, then to direct node invocation.
|
|
23
|
+
function resolveMarkusCommand() {
|
|
24
|
+
const symlink = '/usr/local/bin/markus';
|
|
25
|
+
if (existsSync(symlink)) {
|
|
26
|
+
return { cmd: symlink, args: ['start'] };
|
|
27
|
+
}
|
|
28
|
+
const wrapper = resolve(APP_DIR, 'markus');
|
|
29
|
+
if (existsSync(wrapper)) {
|
|
30
|
+
return { cmd: wrapper, args: ['start'] };
|
|
31
|
+
}
|
|
32
|
+
const nodeBin = resolve(BIN_DIR, platform() === 'win32' ? 'node.exe' : 'node');
|
|
33
|
+
const markusMjs = resolve(BIN_DIR, 'markus.mjs');
|
|
34
|
+
return { cmd: nodeBin, args: [markusMjs, 'start'] };
|
|
35
|
+
}
|
|
36
|
+
const STRINGS = {
|
|
37
|
+
en: {
|
|
38
|
+
openUI: 'Open Web UI',
|
|
39
|
+
startServer: 'Start Server',
|
|
40
|
+
stopServer: 'Stop Server',
|
|
41
|
+
quit: 'Quit Markus',
|
|
42
|
+
tooltipRunning: 'Markus (running)',
|
|
43
|
+
tooltipStopped: 'Markus (stopped)',
|
|
44
|
+
portConflictTitle: 'Markus',
|
|
45
|
+
portConflictMsg: (port, occupant) => `Port ${port} is already in use by "${occupant}".\\nMarkus cannot start.\\n\\nFree the port or change it in ~/.markus/markus.json`,
|
|
46
|
+
},
|
|
47
|
+
zh: {
|
|
48
|
+
openUI: '打开控制台',
|
|
49
|
+
startServer: '启动服务',
|
|
50
|
+
stopServer: '停止服务',
|
|
51
|
+
quit: '退出 Markus',
|
|
52
|
+
tooltipRunning: 'Markus (运行中)',
|
|
53
|
+
tooltipStopped: 'Markus (已停止)',
|
|
54
|
+
portConflictTitle: 'Markus',
|
|
55
|
+
portConflictMsg: (port, occupant) => `端口 ${port} 已被 "${occupant}" 占用。\\nMarkus 无法启动。\\n\\n请释放端口或在 ~/.markus/markus.json 中修改端口`,
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
function detectLocale() {
|
|
59
|
+
const lang = (process.env['LANG'] ?? process.env['LC_ALL'] ?? process.env['LANGUAGE'] ?? '').toLowerCase();
|
|
60
|
+
if (lang.startsWith('zh'))
|
|
61
|
+
return 'zh';
|
|
62
|
+
if (platform() === 'darwin') {
|
|
63
|
+
try {
|
|
64
|
+
const appleLang = execSync('defaults read -g AppleLanguages 2>/dev/null', { encoding: 'utf-8' });
|
|
65
|
+
if (/zh/.test(appleLang))
|
|
66
|
+
return 'zh';
|
|
67
|
+
}
|
|
68
|
+
catch { /* ignore */ }
|
|
69
|
+
}
|
|
70
|
+
return 'en';
|
|
71
|
+
}
|
|
72
|
+
const t = STRINGS[detectLocale()];
|
|
73
|
+
// ── Logging ───────────────────────────────────────────────────────────────────
|
|
74
|
+
function trayLog(msg) {
|
|
75
|
+
const ts = new Date().toISOString();
|
|
76
|
+
const line = `${ts} ${msg}\n`;
|
|
77
|
+
try {
|
|
78
|
+
mkdirSync(LOG_DIR, { recursive: true });
|
|
79
|
+
appendFileSync(LOG_FILE, line);
|
|
80
|
+
}
|
|
81
|
+
catch { /* ignore */ }
|
|
82
|
+
console.error(line.trimEnd());
|
|
83
|
+
}
|
|
84
|
+
// ── Helpers ───────────────────────────────────────────────────────────────────
|
|
29
85
|
function loadIconBase64() {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
resolve(APP_DIR, 'markus.ico'),
|
|
33
|
-
];
|
|
34
|
-
for (const p of candidates) {
|
|
35
|
-
if (existsSync(p)) {
|
|
86
|
+
for (const p of [resolve(APP_DIR, 'logo.png'), resolve(APP_DIR, 'markus.ico')]) {
|
|
87
|
+
if (existsSync(p))
|
|
36
88
|
return readFileSync(p).toString('base64');
|
|
37
|
-
}
|
|
38
89
|
}
|
|
39
|
-
// Fallback: empty icon (systray2 will show a default)
|
|
40
90
|
return '';
|
|
41
91
|
}
|
|
42
92
|
function openBrowser(url) {
|
|
@@ -46,23 +96,18 @@ function openBrowser(url) {
|
|
|
46
96
|
: `xdg-open "${url}"`;
|
|
47
97
|
exec(cmd, () => { });
|
|
48
98
|
}
|
|
49
|
-
// ── Server process management ────────────────────────────────────────────────
|
|
50
|
-
let serverProcess = null;
|
|
51
|
-
let serverRunning = false;
|
|
52
99
|
function isPortListening(port) {
|
|
53
|
-
return new Promise((
|
|
54
|
-
const socket = createConnection({ port, host: '127.0.0.1' }, () => {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
resolve(false);
|
|
65
|
-
});
|
|
100
|
+
return new Promise((res) => {
|
|
101
|
+
const socket = createConnection({ port, host: '127.0.0.1' }, () => { socket.destroy(); res(true); });
|
|
102
|
+
socket.on('error', () => { socket.destroy(); res(false); });
|
|
103
|
+
socket.setTimeout(2000, () => { socket.destroy(); res(false); });
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
function checkHealthOnce(url) {
|
|
107
|
+
return new Promise((res) => {
|
|
108
|
+
const req = httpGet(url, (r) => { r.resume(); res(r.statusCode !== undefined && r.statusCode >= 200 && r.statusCode < 400); });
|
|
109
|
+
req.on('error', () => res(false));
|
|
110
|
+
req.setTimeout(2000, () => { req.destroy(); res(false); });
|
|
66
111
|
});
|
|
67
112
|
}
|
|
68
113
|
function waitForHealth(url, intervalMs = 500, maxMs = 30000) {
|
|
@@ -73,69 +118,60 @@ function waitForHealth(url, intervalMs = 500, maxMs = 30000) {
|
|
|
73
118
|
res.resume();
|
|
74
119
|
if (res.statusCode && res.statusCode >= 200 && res.statusCode < 400) {
|
|
75
120
|
ok(true);
|
|
121
|
+
return;
|
|
76
122
|
}
|
|
77
|
-
else if (Date.now() >= deadline) {
|
|
78
|
-
ok(false);
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
setTimeout(check, intervalMs);
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
req.on('error', () => {
|
|
85
123
|
if (Date.now() >= deadline) {
|
|
86
124
|
ok(false);
|
|
125
|
+
return;
|
|
87
126
|
}
|
|
88
|
-
|
|
89
|
-
setTimeout(check, intervalMs);
|
|
90
|
-
}
|
|
127
|
+
setTimeout(check, intervalMs);
|
|
91
128
|
});
|
|
92
|
-
req.
|
|
129
|
+
req.on('error', () => { if (Date.now() >= deadline)
|
|
130
|
+
ok(false);
|
|
131
|
+
else
|
|
132
|
+
setTimeout(check, intervalMs); });
|
|
133
|
+
req.setTimeout(2000, () => req.destroy());
|
|
93
134
|
};
|
|
94
135
|
check();
|
|
95
136
|
});
|
|
96
137
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
res.resume();
|
|
101
|
-
resolve(res.statusCode !== undefined && res.statusCode >= 200 && res.statusCode < 400);
|
|
102
|
-
});
|
|
103
|
-
req.on('error', () => resolve(false));
|
|
104
|
-
req.setTimeout(2000, () => { req.destroy(); resolve(false); });
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
function showPortConflictDialog(port) {
|
|
108
|
-
if (platform() === 'darwin') {
|
|
109
|
-
let occupant = 'unknown';
|
|
110
|
-
try {
|
|
111
|
-
occupant = execSync(`lsof -i :${port} -sTCP:LISTEN -t 2>/dev/null | head -1 | xargs ps -p -o comm= 2>/dev/null`, { encoding: 'utf-8' }).trim() || 'unknown';
|
|
112
|
-
}
|
|
113
|
-
catch { /* ignore */ }
|
|
114
|
-
exec(`osascript -e 'display dialog "Port ${port} is already in use by \\"${occupant}\\".\nMarkus cannot start.\n\nFree the port or change it in ~/.markus/markus.json" with title "Markus" buttons {"OK"} default button "OK" with icon stop'`, () => { });
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
console.error(`Port ${port} is already in use by another process. Markus cannot start.`);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
138
|
+
// ── Server process management ────────────────────────────────────────────────
|
|
139
|
+
let serverProcess = null;
|
|
140
|
+
let serverRunning = false;
|
|
120
141
|
async function startServer() {
|
|
121
142
|
if (serverRunning)
|
|
122
143
|
return;
|
|
123
144
|
if (await isPortListening(WEB_UI_PORT)) {
|
|
124
|
-
// Port is occupied — verify it's actually Markus via health endpoint
|
|
125
145
|
const isMarkus = await checkHealthOnce(`${WEB_UI_URL}/api/health`);
|
|
126
146
|
if (isMarkus) {
|
|
147
|
+
trayLog(`Port ${WEB_UI_PORT} is Markus — opening browser`);
|
|
127
148
|
serverRunning = true;
|
|
128
149
|
updateTrayMenu();
|
|
129
150
|
openBrowser(WEB_UI_URL);
|
|
130
151
|
return;
|
|
131
152
|
}
|
|
132
|
-
// Port occupied by
|
|
133
|
-
|
|
153
|
+
// Port occupied by something else
|
|
154
|
+
let occupant = 'unknown';
|
|
155
|
+
try {
|
|
156
|
+
occupant = execSync(`lsof -i :${WEB_UI_PORT} -sTCP:LISTEN -t 2>/dev/null | head -1 | xargs ps -p -o comm= 2>/dev/null`, { encoding: 'utf-8' }).trim() || 'unknown';
|
|
157
|
+
}
|
|
158
|
+
catch { /* ignore */ }
|
|
159
|
+
trayLog(`Port ${WEB_UI_PORT} occupied by "${occupant}" — showing conflict dialog`);
|
|
160
|
+
if (platform() === 'darwin') {
|
|
161
|
+
exec(`osascript -e 'display dialog "${t.portConflictMsg(WEB_UI_PORT, occupant)}" with title "${t.portConflictTitle}" buttons {"OK"} default button "OK" with icon stop'`, () => { });
|
|
162
|
+
}
|
|
134
163
|
return;
|
|
135
164
|
}
|
|
136
165
|
mkdirSync(LOG_DIR, { recursive: true });
|
|
137
|
-
|
|
138
|
-
|
|
166
|
+
const { cmd, args } = resolveMarkusCommand();
|
|
167
|
+
trayLog(`Starting server: ${cmd} ${args.join(' ')}`);
|
|
168
|
+
const stdoutLog = join(LOG_DIR, 'stdout.log');
|
|
169
|
+
const stderrLog = join(LOG_DIR, 'stderr.log');
|
|
170
|
+
const { openSync } = await import('node:fs');
|
|
171
|
+
const outFd = openSync(stdoutLog, 'a');
|
|
172
|
+
const errFd = openSync(stderrLog, 'a');
|
|
173
|
+
serverProcess = spawn(cmd, args, {
|
|
174
|
+
stdio: ['ignore', outFd, errFd],
|
|
139
175
|
detached: false,
|
|
140
176
|
env: { ...process.env, NO_BROWSER: '1' },
|
|
141
177
|
});
|
|
@@ -146,25 +182,30 @@ async function startServer() {
|
|
|
146
182
|
serverProcess = null;
|
|
147
183
|
updateTrayMenu();
|
|
148
184
|
if (code && code !== 0) {
|
|
149
|
-
|
|
185
|
+
trayLog(`Server exited with code ${code} — check ${stderrLog}`);
|
|
150
186
|
}
|
|
151
187
|
});
|
|
152
188
|
serverProcess.on('error', (err) => {
|
|
153
189
|
serverRunning = false;
|
|
154
190
|
serverProcess = null;
|
|
155
191
|
updateTrayMenu();
|
|
156
|
-
|
|
192
|
+
trayLog(`Failed to spawn server: ${err.message}`);
|
|
157
193
|
});
|
|
158
194
|
waitForHealth(`${WEB_UI_URL}/api/health`).then((ok) => {
|
|
159
|
-
if (ok && serverRunning)
|
|
195
|
+
if (ok && serverRunning) {
|
|
196
|
+
trayLog('Server healthy — opening browser');
|
|
160
197
|
openBrowser(WEB_UI_URL);
|
|
198
|
+
}
|
|
199
|
+
else if (!ok) {
|
|
200
|
+
trayLog(`Server did not become healthy within 30s — check ${stderrLog}`);
|
|
201
|
+
}
|
|
161
202
|
});
|
|
162
203
|
}
|
|
163
204
|
function stopServer() {
|
|
164
205
|
if (!serverProcess)
|
|
165
206
|
return;
|
|
207
|
+
trayLog('Stopping server...');
|
|
166
208
|
serverProcess.kill('SIGTERM');
|
|
167
|
-
// Force kill after 5 seconds if still alive
|
|
168
209
|
const forceTimer = setTimeout(() => {
|
|
169
210
|
if (serverProcess && !serverProcess.killed) {
|
|
170
211
|
serverProcess.kill('SIGKILL');
|
|
@@ -174,23 +215,19 @@ function stopServer() {
|
|
|
174
215
|
}
|
|
175
216
|
// ── Tray setup ───────────────────────────────────────────────────────────────
|
|
176
217
|
const SEPARATOR = { title: '<SEPARATOR>', tooltip: '', enabled: true };
|
|
177
|
-
const ITEM_OPEN_UI = { title: 'Open Web UI', tooltip: 'Open Markus in browser', enabled: true };
|
|
178
|
-
const ITEM_START = { title: 'Start Server', tooltip: 'Start Markus server', enabled: true };
|
|
179
|
-
const ITEM_STOP = { title: 'Stop Server', tooltip: 'Stop Markus server', enabled: false };
|
|
180
|
-
const ITEM_QUIT = { title: 'Quit Markus', tooltip: 'Stop server and quit', enabled: true };
|
|
181
218
|
let tray = null;
|
|
182
219
|
function buildMenu() {
|
|
183
220
|
return {
|
|
184
221
|
icon: loadIconBase64(),
|
|
185
222
|
title: '',
|
|
186
|
-
tooltip: serverRunning ?
|
|
223
|
+
tooltip: serverRunning ? t.tooltipRunning : t.tooltipStopped,
|
|
187
224
|
items: [
|
|
188
|
-
{
|
|
225
|
+
{ title: t.openUI, tooltip: t.openUI, enabled: serverRunning },
|
|
189
226
|
SEPARATOR,
|
|
190
|
-
{
|
|
191
|
-
{
|
|
227
|
+
{ title: t.startServer, tooltip: t.startServer, enabled: !serverRunning },
|
|
228
|
+
{ title: t.stopServer, tooltip: t.stopServer, enabled: serverRunning },
|
|
192
229
|
SEPARATOR,
|
|
193
|
-
|
|
230
|
+
{ title: t.quit, tooltip: t.quit, enabled: true },
|
|
194
231
|
],
|
|
195
232
|
};
|
|
196
233
|
}
|
|
@@ -200,22 +237,22 @@ function updateTrayMenu() {
|
|
|
200
237
|
tray.sendAction({ type: 'update-menu', menu: buildMenu() });
|
|
201
238
|
}
|
|
202
239
|
async function main() {
|
|
240
|
+
trayLog(`Tray starting (locale=${detectLocale()}, pid=${process.pid})`);
|
|
203
241
|
tray = new SysTray({ menu: buildMenu(), copyDir: false });
|
|
204
242
|
await tray.ready();
|
|
205
243
|
tray.onClick(async (action) => {
|
|
206
244
|
const title = action.item.title;
|
|
207
|
-
if (title ===
|
|
245
|
+
if (title === t.openUI) {
|
|
208
246
|
openBrowser(WEB_UI_URL);
|
|
209
247
|
}
|
|
210
|
-
else if (title ===
|
|
248
|
+
else if (title === t.startServer) {
|
|
211
249
|
await startServer();
|
|
212
250
|
}
|
|
213
|
-
else if (title ===
|
|
251
|
+
else if (title === t.stopServer) {
|
|
214
252
|
stopServer();
|
|
215
253
|
}
|
|
216
|
-
else if (title ===
|
|
254
|
+
else if (title === t.quit) {
|
|
217
255
|
stopServer();
|
|
218
|
-
// Wait briefly for server to stop, then exit
|
|
219
256
|
setTimeout(async () => {
|
|
220
257
|
if (tray)
|
|
221
258
|
await tray.kill(false);
|
|
@@ -224,13 +261,12 @@ async function main() {
|
|
|
224
261
|
}
|
|
225
262
|
});
|
|
226
263
|
tray.onError((err) => {
|
|
227
|
-
|
|
264
|
+
trayLog(`Tray error: ${err.message}`);
|
|
228
265
|
});
|
|
229
|
-
// Auto-start the server on launch
|
|
230
266
|
await startServer();
|
|
231
267
|
}
|
|
232
268
|
main().catch((err) => {
|
|
233
|
-
|
|
269
|
+
trayLog(`Tray failed to start: ${err}`);
|
|
234
270
|
process.exit(1);
|
|
235
271
|
});
|
|
236
272
|
//# sourceMappingURL=tray.js.map
|
package/dist/tray.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tray.js","sourceRoot":"","sources":["../src/tray.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tray.js","sourceRoot":"","sources":["../src/tray.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAqB,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,aAAa,MAAM,UAAU,CAAC;AAErC,MAAM,OAAO,GAAI,aAAqB,CAAC,OAAO,IAAI,aAAa,CAAC;AAGhE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,UAAU,GAAG,oBAAoB,WAAW,EAAE,CAAC;AAErD,MAAM,OAAO,GAAG,SAAS,CAAC;AAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACvC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAElD,oEAAoE;AACpE,gFAAgF;AAChF,SAAS,oBAAoB;IAC3B,MAAM,OAAO,GAAG,uBAAuB,CAAC;IACxC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/E,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACjD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;AACtD,CAAC;AAMD,MAAM,OAAO,GAIR;IACH,EAAE,EAAE;QACF,MAAM,EAAE,aAAa;QACrB,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,aAAa;QACzB,IAAI,EAAE,aAAa;QACnB,cAAc,EAAE,kBAAkB;QAClC,cAAc,EAAE,kBAAkB;QAClC,iBAAiB,EAAE,QAAQ;QAC3B,eAAe,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAClC,QAAQ,IAAI,0BAA0B,QAAQ,oFAAoF;KACrI;IACD,EAAE,EAAE;QACF,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,MAAM;QAClB,IAAI,EAAE,WAAW;QACjB,cAAc,EAAE,cAAc;QAC9B,cAAc,EAAE,cAAc;QAC9B,iBAAiB,EAAE,QAAQ;QAC3B,eAAe,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAClC,MAAM,IAAI,QAAQ,QAAQ,+DAA+D;KAC5F;CACF,CAAC;AAEF,SAAS,YAAY;IACnB,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3G,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,QAAQ,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,QAAQ,CAAC,6CAA6C,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YACjG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAAE,OAAO,IAAI,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;AAElC,iFAAiF;AAEjF,SAAS,OAAO,CAAC,GAAW;IAC1B,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IACxB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,iFAAiF;AAEjF,SAAS,cAAc;IACrB,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;QAC/E,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG;QAC5C,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,GAAG,GAAG;YACvC,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrG,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,IAAI,GAAG,IAAI,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/H,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,UAAU,GAAG,GAAG,EAAE,KAAK,GAAG,KAAK;IACjE,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACpC,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC/B,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;oBAAC,EAAE,CAAC,IAAI,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAC1F,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;oBAAC,EAAE,CAAC,KAAK,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAClD,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;gBAAE,EAAE,CAAC,KAAK,CAAC,CAAC;;gBAAM,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtG,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC;QACF,KAAK,EAAE,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAEhF,IAAI,aAAa,GAAwB,IAAI,CAAC;AAC9C,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B,KAAK,UAAU,WAAW;IACxB,IAAI,aAAa;QAAE,OAAO;IAE1B,IAAI,MAAM,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,UAAU,aAAa,CAAC,CAAC;QACnE,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,QAAQ,WAAW,8BAA8B,CAAC,CAAC;YAC3D,aAAa,GAAG,IAAI,CAAC;YACrB,cAAc,EAAE,CAAC;YACjB,WAAW,CAAC,UAAU,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QACD,kCAAkC;QAClC,IAAI,QAAQ,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC;YACH,QAAQ,GAAG,QAAQ,CAAC,YAAY,WAAW,2EAA2E,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;QACrK,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACxB,OAAO,CAAC,QAAQ,WAAW,iBAAiB,QAAQ,6BAA6B,CAAC,CAAC;QACnF,IAAI,QAAQ,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,iCAAiC,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC,iBAAiB,sDAAsD,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtL,CAAC;QACD,OAAO;IACT,CAAC;IAED,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAC7C,OAAO,CAAC,oBAAoB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAEvC,aAAa,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;QAC/B,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC;QAC/B,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE;KACzC,CAAC,CAAC;IAEH,aAAa,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,CAAC;IAEjB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QAChC,aAAa,GAAG,KAAK,CAAC;QACtB,aAAa,GAAG,IAAI,CAAC;QACrB,cAAc,EAAE,CAAC;QACjB,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,2BAA2B,IAAI,YAAY,SAAS,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QAChC,aAAa,GAAG,KAAK,CAAC;QACtB,aAAa,GAAG,IAAI,CAAC;QACrB,cAAc,EAAE,CAAC;QACjB,OAAO,CAAC,2BAA2B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,GAAG,UAAU,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;QACpD,IAAI,EAAE,IAAI,aAAa,EAAE,CAAC;YACxB,OAAO,CAAC,kCAAkC,CAAC,CAAC;YAC5C,WAAW,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,CAAC,oDAAoD,SAAS,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,CAAC,aAAa;QAAE,OAAO;IAC3B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC9B,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;QACjC,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC3C,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,EAAE,IAAI,CAAC,CAAC;IACT,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,gFAAgF;AAEhF,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAEvE,IAAI,IAAI,GAA2B,IAAI,CAAC;AAExC,SAAS,SAAS;IAChB,OAAO;QACL,IAAI,EAAE,cAAc,EAAE;QACtB,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc;QAC5D,KAAK,EAAE;YACL,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE;YAC9D,SAAS;YACT,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE;YACzE,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE;YACtE,SAAS;YACT,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;SAClD;KACF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,yBAAyB,YAAY,EAAE,SAAS,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IAExE,IAAI,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IAEnB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAmD,EAAE,EAAE;QACzE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QAChC,IAAI,KAAK,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YACvB,WAAW,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,KAAK,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,WAAW,EAAE,CAAC;QACtB,CAAC;aAAM,IAAI,KAAK,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC;YAClC,UAAU,EAAE,CAAC;QACf,CAAC;aAAM,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5B,UAAU,EAAE,CAAC;YACb,UAAU,CAAC,KAAK,IAAI,EAAE;gBACpB,IAAI,IAAI;oBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,CAAC,CAAC,GAAU,EAAE,EAAE;QAC1B,OAAO,CAAC,eAAe,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,EAAE,CAAC;AACtB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|