@youdie006/prodex 0.6.0 → 0.6.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.
@@ -0,0 +1,185 @@
1
+ import { formatCliCommand, formatSourceCliOption, shellQuote } from "./cli-args.js";
2
+ export function formatInitCommand(sourceCli, options = {}) {
3
+ return [`${formatCliCommand(sourceCli)} init`, options.cwd ? `--cwd ${shellQuote(options.cwd)}` : undefined].filter(Boolean).join(" ");
4
+ }
5
+ export function formatSetupCommand(sourceCli, options = {}) {
6
+ return [`${formatCliCommand(sourceCli)} setup`, options.cwd ? `--cwd ${shellQuote(options.cwd)}` : undefined].filter(Boolean).join(" ");
7
+ }
8
+ export function formatBrowserLoginCommand(sourceCli, options = {}) {
9
+ return formatCommandInCwd(formatBrowserLoginCommandBody(sourceCli, options), options.cwd);
10
+ }
11
+ export function formatBrowserSmokeCommand(sourceCli, options = {}) {
12
+ return formatCommandInCwd(formatBrowserSmokeCommandBody(sourceCli, options), options.cwd);
13
+ }
14
+ export function formatBrowserCheckCommand(sourceCli, options = {}) {
15
+ const command = [`${formatCliCommand(sourceCli)} pro browser check${formatSourceCliOption(sourceCli)}`, options.port ? `--port ${options.port}` : undefined]
16
+ .filter(Boolean)
17
+ .join(" ");
18
+ return formatCommandInCwd(command, options.cwd);
19
+ }
20
+ export function formatBrowserTargetAskCommand(sourceCli, options = {}) {
21
+ const command = [
22
+ `${formatCliCommand(sourceCli)} pro browser ask${formatSourceCliOption(sourceCli)}`,
23
+ options.port ? `--port ${options.port}` : undefined,
24
+ `--target-url ${options.targetUrl ? shellQuote(options.targetUrl) : "<chatgpt-url>"} --confirm-target "prompt"`
25
+ ]
26
+ .filter(Boolean)
27
+ .join(" ");
28
+ return formatCommandInCwd(command, options.cwd);
29
+ }
30
+ export function formatProShowCommand(taskId, sourceCli, options = {}) {
31
+ return [`${formatCliCommand(sourceCli)} pro show ${shellQuote(taskId)}${formatSourceCliOption(sourceCli)}`, options.cwd ? `--cwd ${shellQuote(options.cwd)}` : undefined]
32
+ .filter(Boolean)
33
+ .join(" ");
34
+ }
35
+ export function formatProLatestCommand(sourceCli, options = {}) {
36
+ return [`${formatCliCommand(sourceCli)} pro latest${formatSourceCliOption(sourceCli)}`, options.cwd ? `--cwd ${shellQuote(options.cwd)}` : undefined]
37
+ .filter(Boolean)
38
+ .join(" ");
39
+ }
40
+ export function sourceAwareResultMessage(message, sourceCli, options = {}) {
41
+ if (!sourceCli && !options.cwd)
42
+ return message;
43
+ return message.replace(/`prodex results reseal ([^`\s]+) --confirm-current-result`/g, (_match, taskId) => `\`${formatResultResealCommand(taskId, sourceCli, options)}\``);
44
+ }
45
+ export function sourceAwareResultError(error, sourceCli, options = {}) {
46
+ if (!isUntrustedResultError(error))
47
+ return error;
48
+ return new Error(sourceAwareResultMessage(errorMessage(error), sourceCli, options), { cause: error });
49
+ }
50
+ export function formatBlockedConsultRecordedMessage(message, taskId, sourceCli, options = {}) {
51
+ return `${message}\nblocked consult recorded: ${taskId}; inspect with \`${formatProShowCommand(taskId, sourceCli, options)}\` or \`${formatProLatestCommand(sourceCli, options)}\`.`;
52
+ }
53
+ export function formatReleaseStatusCommand(sourceCli, options = {}) {
54
+ return [`${formatCliCommand(sourceCli)} release status${formatSourceCliOption(sourceCli)}`, options.cwd ? `--cwd ${shellQuote(options.cwd)}` : undefined]
55
+ .filter(Boolean)
56
+ .join(" ");
57
+ }
58
+ export function formatReleasePackCommand(sourceCli, options = {}) {
59
+ return [
60
+ `${formatCliCommand(sourceCli)} release pack${formatSourceCliOption(sourceCli)}`,
61
+ options.cwd ? `--cwd ${shellQuote(options.cwd)}` : undefined,
62
+ "--pack-destination <dir>"
63
+ ]
64
+ .filter(Boolean)
65
+ .join(" ");
66
+ }
67
+ export function sourceAwareBrowserNextStep(nextStep, sourceCli, options = {}) {
68
+ if (!nextStep)
69
+ return nextStep;
70
+ const targetRetry = nextStep.match(/^Open (https:\/\/chatgpt\.com\/\S+) in the (visible|dedicated) browser and retry(\. Current: .+|\.)$/);
71
+ if (targetRetry) {
72
+ const [, targetUrl, location, suffix] = targetRetry;
73
+ return `Open ${targetUrl} in the ${location} browser and run \`${formatBrowserTargetAskCommand(sourceCli, {
74
+ ...options,
75
+ targetUrl
76
+ })}\`${suffix}`;
77
+ }
78
+ if (!sourceCli && !options.port && !options.cwd)
79
+ return nextStep;
80
+ return nextStep
81
+ .replace(/`cd (.+?) && prodex pro browser login([^`]*)?`/g, (_match, cwdPrefix, storedArgs) => {
82
+ return `\`cd ${cwdPrefix} && ${formatBrowserLoginCommandBody(sourceCli, browserOptionsWithStoredPort(options, storedArgs))}\``;
83
+ })
84
+ .replace(/`cd (.+?) && prodex pro browser smoke([^`]*)?`/g, (_match, cwdPrefix, storedArgs) => {
85
+ return `\`cd ${cwdPrefix} && ${formatBrowserSmokeCommandBody(sourceCli, browserOptionsWithStoredPort(options, storedArgs))}\``;
86
+ })
87
+ .replace(/`cd (.+?) && prodex pro browser ask([^`]*)?`/g, (_match, cwdPrefix, storedArgs) => {
88
+ return `\`cd ${cwdPrefix} && ${formatBrowserAskCommandBody(sourceCli)}${storedArgs ?? ""}\``;
89
+ })
90
+ .replace(/`prodex pro browser login([^`]*)?`/g, (_match, storedArgs) => {
91
+ return `\`${formatBrowserLoginCommand(sourceCli, browserOptionsWithStoredPort(options, storedArgs))}\``;
92
+ })
93
+ .replace(/`prodex pro browser smoke([^`]*)?`/g, (_match, storedArgs) => {
94
+ return `\`${formatBrowserSmokeCommand(sourceCli, browserOptionsWithStoredPort(options, storedArgs))}\``;
95
+ })
96
+ .replace(/`prodex pro browser ask([^`]*)?`/g, (_match, storedArgs) => {
97
+ return `\`${formatBrowserAskCommandBody(sourceCli)}${storedArgs ?? ""}\``;
98
+ })
99
+ .replaceAll("pass --target-url with --confirm-target", `run \`${formatBrowserTargetAskCommand(sourceCli, options)}\``);
100
+ }
101
+ export function sourceAwareBrowserBlocker(blocker, sourceCli, options = {}) {
102
+ const nextStep = sourceAwareBrowserNextStep(blocker.next_step, sourceCli, options);
103
+ return nextStep === blocker.next_step ? blocker : { ...blocker, next_step: nextStep };
104
+ }
105
+ export function sourceAwareSetupMessage(message, sourceCli, options = {}) {
106
+ if (!sourceCli && !options.cwd)
107
+ return message;
108
+ const setupCommand = formatSetupCommand(sourceCli, options);
109
+ return message
110
+ .replaceAll("`prodex setup --token-ttl-hours <hours>`", `\`${setupCommand} --token-ttl-hours <hours>\``)
111
+ .replaceAll("`prodex setup`", `\`${setupCommand}\``);
112
+ }
113
+ export function sourceAwareReleaseMessage(message, sourceCli, options = {}) {
114
+ if (!sourceCli && !options.cwd)
115
+ return message;
116
+ return message
117
+ .replaceAll("`prodex release pack --pack-destination <dir>`", `\`${formatReleasePackCommand(sourceCli, options)}\``)
118
+ .replaceAll("`prodex release status`", `\`${formatReleaseStatusCommand(sourceCli, options)}\``);
119
+ }
120
+ export function errorMessage(error) {
121
+ return error instanceof Error ? error.message : String(error);
122
+ }
123
+ export function isUntrustedResultError(error) {
124
+ return (typeof error === "object" &&
125
+ error !== null &&
126
+ "code" in error &&
127
+ "taskId" in error &&
128
+ error.code === "EUNTRUSTED_RESULT" &&
129
+ typeof error.taskId === "string");
130
+ }
131
+ export function formatCommandInCwd(command, cwd) {
132
+ return cwd ? `cd ${shellQuote(cwd)} && ${command}` : command;
133
+ }
134
+ export function browserOptionsWithStoredPort(options, storedArgs) {
135
+ if (options.port || !storedArgs)
136
+ return options;
137
+ const match = storedArgs.match(/(?:^|\s)--port\s+(\d{1,5})(?:\s|$)/);
138
+ if (!match)
139
+ return options;
140
+ const port = Number(match[1]);
141
+ if (!Number.isInteger(port) || port < 1 || port > 65535)
142
+ return options;
143
+ return { ...options, port };
144
+ }
145
+ export function formatBrowserSmokeCommandBody(sourceCli, options = {}) {
146
+ const command = [`${formatCliCommand(sourceCli)} pro browser smoke${formatSourceCliOption(sourceCli)}`, options.port ? `--port ${options.port}` : undefined]
147
+ .filter(Boolean)
148
+ .join(" ");
149
+ return command;
150
+ }
151
+ export function formatBrowserLoginCommandBody(sourceCli, options = {}) {
152
+ const command = [
153
+ `${formatCliCommand(sourceCli)} pro browser login${formatSourceCliOption(sourceCli)}`,
154
+ options.profileDir ? `--profile-dir ${shellQuote(options.profileDir)}` : undefined,
155
+ options.port ? `--port ${options.port}` : undefined,
156
+ options.url ? `--url ${shellQuote(options.url)}` : undefined,
157
+ options.launchTimeoutMs ? `--launch-timeout-ms ${options.launchTimeoutMs}` : undefined
158
+ ]
159
+ .filter(Boolean)
160
+ .join(" ");
161
+ return command;
162
+ }
163
+ // ask retry commands carry their own --target-url/--confirm-target/"prompt" tail, so callers
164
+ // preserve the stored argument tail verbatim and only re-point this bare base at the source CLI.
165
+ export function formatBrowserAskCommandBody(sourceCli) {
166
+ return `${formatCliCommand(sourceCli)} pro browser ask${formatSourceCliOption(sourceCli)}`;
167
+ }
168
+ export function formatResultResealCommand(taskId, sourceCli, options = {}) {
169
+ return [
170
+ `${formatCliCommand(sourceCli)} results reseal ${shellQuote(taskId)} --confirm-current-result`,
171
+ options.cwd ? `--cwd ${shellQuote(options.cwd)}` : undefined
172
+ ]
173
+ .filter(Boolean)
174
+ .join(" ");
175
+ }
176
+ export function isMissingFileError(error) {
177
+ return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
178
+ }
179
+ export function isLoopbackHost(hostname) {
180
+ return hostname === "localhost" || hostname === "127.0.0.1" || hostname === "::1" || hostname === "[::1]";
181
+ }
182
+ export function firstLine(value) {
183
+ return value.split(/\r?\n/).find((line) => line.trim())?.trim() ?? "";
184
+ }
185
+ //# sourceMappingURL=cli-shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-shared.js","sourceRoot":"","sources":["../src/cli-shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAWpF,MAAM,UAAU,iBAAiB,CAAC,SAAkB,EAAE,UAA4B,EAAE;IAClF,OAAO,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzI,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAkB,EAAE,UAA4B,EAAE;IACnF,OAAO,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1I,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,SAAkB,EAAE,UAAiC,EAAE;IAC/F,OAAO,kBAAkB,CAAC,6BAA6B,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,SAAkB,EAAE,UAAiC,EAAE;IAC/F,OAAO,kBAAkB,CAAC,6BAA6B,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,SAAkB,EAAE,UAAiC,EAAE;IAC/F,MAAM,OAAO,GAAG,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,qBAAqB,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SACzJ,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,SAAkB,EAAE,UAAiC,EAAE;IACnG,MAAM,OAAO,GAAG;QACd,GAAG,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,qBAAqB,CAAC,SAAS,CAAC,EAAE;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;QACnD,gBAAgB,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,4BAA4B;KAChH;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,SAAkB,EAAE,UAA4B,EAAE;IACrG,OAAO,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,aAAa,UAAU,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SACtK,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,SAAkB,EAAE,UAA4B,EAAE;IACvF,OAAO,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,cAAc,qBAAqB,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SAClJ,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe,EAAE,SAAkB,EAAE,UAA4B,EAAE;IAC1G,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG;QAAE,OAAO,OAAO,CAAC;IAC/C,OAAO,OAAO,CAAC,OAAO,CACpB,6DAA6D,EAC7D,CAAC,MAAM,EAAE,MAAc,EAAE,EAAE,CAAC,KAAK,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,CAC3F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc,EAAE,SAAkB,EAAE,UAA4B,EAAE;IACvG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,OAAO,IAAI,KAAK,CAAC,wBAAwB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,OAAe,EAAE,MAAc,EAAE,SAAkB,EAAE,UAA4B,EAAE;IACrI,OAAO,GAAG,OAAO,+BAA+B,MAAM,oBAAoB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,WAAW,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC;AACvL,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,SAAkB,EAAE,UAA4B,EAAE;IAC3F,OAAO,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,kBAAkB,qBAAqB,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SACtJ,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAkB,EAAE,UAA4B,EAAE;IACzF,OAAO;QACL,GAAG,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,qBAAqB,CAAC,SAAS,CAAC,EAAE;QAChF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;QAC5D,0BAA0B;KAC3B;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAA4B,EAAE,SAAkB,EAAE,UAAiC,EAAE;IAC9H,IAAI,CAAC,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC/B,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,sGAAsG,CAAC,CAAC;IAC3I,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC;QACpD,OAAO,QAAQ,SAAS,WAAW,QAAQ,sBAAsB,6BAA6B,CAAC,SAAS,EAAE;YACxG,GAAG,OAAO;YACV,SAAS;SACV,CAAC,KAAK,MAAM,EAAE,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG;QAAE,OAAO,QAAQ,CAAC;IACjE,OAAO,QAAQ;SACZ,OAAO,CAAC,iDAAiD,EAAE,CAAC,MAAM,EAAE,SAAiB,EAAE,UAA8B,EAAE,EAAE;QACxH,OAAO,QAAQ,SAAS,OAAO,6BAA6B,CAAC,SAAS,EAAE,4BAA4B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC;IACjI,CAAC,CAAC;SACD,OAAO,CAAC,iDAAiD,EAAE,CAAC,MAAM,EAAE,SAAiB,EAAE,UAA8B,EAAE,EAAE;QACxH,OAAO,QAAQ,SAAS,OAAO,6BAA6B,CAAC,SAAS,EAAE,4BAA4B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC;IACjI,CAAC,CAAC;SACD,OAAO,CAAC,+CAA+C,EAAE,CAAC,MAAM,EAAE,SAAiB,EAAE,UAA8B,EAAE,EAAE;QACtH,OAAO,QAAQ,SAAS,OAAO,2BAA2B,CAAC,SAAS,CAAC,GAAG,UAAU,IAAI,EAAE,IAAI,CAAC;IAC/F,CAAC,CAAC;SACD,OAAO,CAAC,qCAAqC,EAAE,CAAC,MAAM,EAAE,UAA8B,EAAE,EAAE;QACzF,OAAO,KAAK,yBAAyB,CAAC,SAAS,EAAE,4BAA4B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC;IAC1G,CAAC,CAAC;SACD,OAAO,CAAC,qCAAqC,EAAE,CAAC,MAAM,EAAE,UAA8B,EAAE,EAAE;QACzF,OAAO,KAAK,yBAAyB,CAAC,SAAS,EAAE,4BAA4B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC;IAC1G,CAAC,CAAC;SACD,OAAO,CAAC,mCAAmC,EAAE,CAAC,MAAM,EAAE,UAA8B,EAAE,EAAE;QACvF,OAAO,KAAK,2BAA2B,CAAC,SAAS,CAAC,GAAG,UAAU,IAAI,EAAE,IAAI,CAAC;IAC5E,CAAC,CAAC;SACD,UAAU,CAAC,yCAAyC,EAAE,SAAS,6BAA6B,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAC3H,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAmC,OAAU,EAAE,SAAkB,EAAE,UAAiC,EAAE;IAC7I,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACnF,OAAO,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAe,EAAE,SAAkB,EAAE,UAA4B,EAAE;IACzG,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG;QAAE,OAAO,OAAO,CAAC;IAC/C,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5D,OAAO,OAAO;SACX,UAAU,CAAC,0CAA0C,EAAE,KAAK,YAAY,8BAA8B,CAAC;SACvG,UAAU,CAAC,gBAAgB,EAAE,KAAK,YAAY,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAe,EAAE,SAAkB,EAAE,UAA4B,EAAE;IAC3G,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG;QAAE,OAAO,OAAO,CAAC;IAC/C,OAAO,OAAO;SACX,UAAU,CAAC,gDAAgD,EAAE,KAAK,wBAAwB,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC;SACnH,UAAU,CAAC,yBAAyB,EAAE,KAAK,0BAA0B,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,QAAQ,IAAI,KAAK;QAChB,KAA4B,CAAC,IAAI,KAAK,mBAAmB;QAC1D,OAAQ,KAA8B,CAAC,MAAM,KAAK,QAAQ,CAC3D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,GAAY;IAC9D,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,OAA8B,EAAE,UAAmB;IAC9F,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC;IAChD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACrE,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK;QAAE,OAAO,OAAO,CAAC;IACxE,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,SAAkB,EAAE,UAAiC,EAAE;IACnG,MAAM,OAAO,GAAG,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,qBAAqB,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SACzJ,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,SAAkB,EAAE,UAAiC,EAAE;IACnG,MAAM,OAAO,GAAG;QACd,GAAG,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,qBAAqB,CAAC,SAAS,CAAC,EAAE;QACrF,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;QACnD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;QAC5D,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,uBAAuB,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS;KACvF;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6FAA6F;AAC7F,iGAAiG;AACjG,MAAM,UAAU,2BAA2B,CAAC,SAAkB;IAC5D,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAc,EAAE,SAAkB,EAAE,UAA4B,EAAE;IAC1G,OAAO;QACL,GAAG,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,UAAU,CAAC,MAAM,CAAC,2BAA2B;QAC9F,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;KAC7D;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAK,KAA4B,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC3H,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,OAAO,CAAC;AAC5G,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxE,CAAC"}