@vybestack/llxprt-code-core 0.4.4 → 0.4.5-nightly.251027.c0567b33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/dist/prompt-config/defaults/default-prompts.json +42 -0
- package/dist/src/auth/precedence.d.ts +2 -0
- package/dist/src/auth/precedence.js +94 -62
- package/dist/src/auth/precedence.js.map +1 -1
- package/dist/src/config/config.d.ts +2 -6
- package/dist/src/config/config.js +60 -17
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/index.d.ts +1 -1
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/core/client.d.ts +10 -6
- package/dist/src/core/client.js +128 -68
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/coreToolScheduler.js +8 -3
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +6 -5
- package/dist/src/core/geminiChat.js +90 -56
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/prompts.js +8 -3
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/prompt-config/TemplateEngine.js +46 -9
- package/dist/src/prompt-config/TemplateEngine.js.map +1 -1
- package/dist/src/prompt-config/defaults/core-defaults.js +15 -1
- package/dist/src/prompt-config/defaults/core-defaults.js.map +1 -1
- package/dist/src/prompt-config/defaults/core.md +15 -1
- package/dist/src/prompt-config/defaults/manifest-loader.d.ts +9 -0
- package/dist/src/prompt-config/defaults/manifest-loader.js +98 -0
- package/dist/src/prompt-config/defaults/manifest-loader.js.map +1 -0
- package/dist/src/prompt-config/defaults/prompt-warnings.d.ts +8 -0
- package/dist/src/prompt-config/defaults/prompt-warnings.js +29 -0
- package/dist/src/prompt-config/defaults/prompt-warnings.js.map +1 -0
- package/dist/src/prompt-config/defaults/provider-defaults.js +15 -1
- package/dist/src/prompt-config/defaults/provider-defaults.js.map +1 -1
- package/dist/src/prompt-config/defaults/providers/anthropic/core.md +16 -0
- package/dist/src/prompt-config/defaults/providers/gemini/core.md +7 -2
- package/dist/src/prompt-config/defaults/providers/gemini/models/gemini-2.5-flash/core.md +6 -2
- package/dist/src/prompt-config/defaults/providers/gemini/models/gemini-2.5-flash/gemini-2-5-flash/core.md +6 -2
- package/dist/src/prompt-config/defaults/providers/openai/core.md +16 -0
- package/dist/src/prompt-config/defaults/providers/openai/tools/todo-pause.md +1 -1
- package/dist/src/prompt-config/defaults/tool-defaults.js +14 -1
- package/dist/src/prompt-config/defaults/tool-defaults.js.map +1 -1
- package/dist/src/prompt-config/defaults/tools/memory.md +1 -1
- package/dist/src/prompt-config/defaults/tools/save-memory.md +1 -0
- package/dist/src/prompt-config/defaults/tools/todo-pause.md +28 -0
- package/dist/src/prompt-config/types.d.ts +3 -0
- package/dist/src/providers/BaseProvider.d.ts +2 -2
- package/dist/src/providers/BaseProvider.js +1 -1
- package/dist/src/providers/BaseProvider.js.map +1 -1
- package/dist/src/providers/IProvider.d.ts +2 -2
- package/dist/src/providers/anthropic/AnthropicProvider.d.ts +3 -1
- package/dist/src/providers/anthropic/AnthropicProvider.js +34 -6
- package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
- package/dist/src/providers/gemini/GeminiProvider.d.ts +3 -1
- package/dist/src/providers/gemini/GeminiProvider.js +142 -66
- package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.d.ts +3 -6
- package/dist/src/providers/openai/OpenAIProvider.js +238 -63
- package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
- package/dist/src/providers/openai/parseResponsesStream.js +14 -3
- package/dist/src/providers/openai/parseResponsesStream.js.map +1 -1
- package/dist/src/providers/openai-responses/OpenAIResponsesProvider.d.ts +4 -2
- package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js +38 -11
- package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js.map +1 -1
- package/dist/src/services/complexity-analyzer.d.ts +10 -1
- package/dist/src/services/complexity-analyzer.js +57 -10
- package/dist/src/services/complexity-analyzer.js.map +1 -1
- package/dist/src/services/history/HistoryService.d.ts +8 -0
- package/dist/src/services/history/HistoryService.js +37 -4
- package/dist/src/services/history/HistoryService.js.map +1 -1
- package/dist/src/services/todo-reminder-service.d.ts +5 -0
- package/dist/src/services/todo-reminder-service.js +26 -3
- package/dist/src/services/todo-reminder-service.js.map +1 -1
- package/dist/src/telemetry/constants.d.ts +0 -1
- package/dist/src/telemetry/constants.js +0 -1
- package/dist/src/telemetry/constants.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +2 -2
- package/dist/src/telemetry/index.js +2 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +1 -2
- package/dist/src/telemetry/loggers.js +1 -17
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +1 -7
- package/dist/src/telemetry/types.js +0 -10
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/todo/todoFormatter.d.ts +24 -0
- package/dist/src/todo/todoFormatter.js +173 -0
- package/dist/src/todo/todoFormatter.js.map +1 -0
- package/dist/src/tools/mcp-tool.js +30 -2
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/todo-read.d.ts +0 -2
- package/dist/src/tools/todo-read.js +8 -91
- package/dist/src/tools/todo-read.js.map +1 -1
- package/dist/src/tools/todo-write.d.ts +0 -1
- package/dist/src/tools/todo-write.js +4 -30
- package/dist/src/tools/todo-write.js.map +1 -1
- package/dist/src/types/modelParams.d.ts +2 -0
- package/dist/src/utils/errorParsing.js +70 -5
- package/dist/src/utils/errorParsing.js.map +1 -1
- package/dist/src/utils/retry.d.ts +4 -2
- package/dist/src/utils/retry.js +129 -86
- package/dist/src/utils/retry.js.map +1 -1
- package/package.json +1 -1
package/dist/src/utils/retry.js
CHANGED
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
* @plan PLAN-20250909-TOKTRACK.P08
|
|
6
6
|
*/
|
|
7
|
-
import { AuthType } from '../core/contentGenerator.js';
|
|
8
|
-
import { isProQuotaExceededError, isGenericQuotaExceededError, } from './quotaErrorDetection.js';
|
|
9
7
|
import { DebugLogger } from '../debug/index.js';
|
|
10
8
|
const DEFAULT_RETRY_OPTIONS = {
|
|
11
9
|
maxAttempts: 5,
|
|
@@ -13,6 +11,131 @@ const DEFAULT_RETRY_OPTIONS = {
|
|
|
13
11
|
maxDelayMs: 30000, // 30 seconds
|
|
14
12
|
shouldRetry: defaultShouldRetry,
|
|
15
13
|
};
|
|
14
|
+
export const STREAM_INTERRUPTED_ERROR_CODE = 'LLXPRT_STREAM_INTERRUPTED';
|
|
15
|
+
const TRANSIENT_ERROR_PHRASES = [
|
|
16
|
+
'connection error',
|
|
17
|
+
'connection terminated',
|
|
18
|
+
'connection reset',
|
|
19
|
+
'socket hang up',
|
|
20
|
+
'socket hung up',
|
|
21
|
+
'socket closed',
|
|
22
|
+
'socket timeout',
|
|
23
|
+
'network timeout',
|
|
24
|
+
'network error',
|
|
25
|
+
'fetch failed',
|
|
26
|
+
'request aborted',
|
|
27
|
+
'request timeout',
|
|
28
|
+
'stream closed',
|
|
29
|
+
'stream prematurely closed',
|
|
30
|
+
'read econnreset',
|
|
31
|
+
'write econnreset',
|
|
32
|
+
];
|
|
33
|
+
const TRANSIENT_ERROR_REGEXES = [
|
|
34
|
+
/econn(reset|refused|aborted)/i,
|
|
35
|
+
/etimedout/i,
|
|
36
|
+
/und_err_(socket|connect|headers_timeout|body_timeout)/i,
|
|
37
|
+
/tcp connection.*(reset|closed)/i,
|
|
38
|
+
];
|
|
39
|
+
const TRANSIENT_ERROR_CODES = new Set([
|
|
40
|
+
'ECONNRESET',
|
|
41
|
+
'ECONNREFUSED',
|
|
42
|
+
'ECONNABORTED',
|
|
43
|
+
'ENETUNREACH',
|
|
44
|
+
'EHOSTUNREACH',
|
|
45
|
+
'ETIMEDOUT',
|
|
46
|
+
'EPIPE',
|
|
47
|
+
'EAI_AGAIN',
|
|
48
|
+
'UND_ERR_SOCKET',
|
|
49
|
+
'UND_ERR_CONNECT_TIMEOUT',
|
|
50
|
+
'UND_ERR_HEADERS_TIMEOUT',
|
|
51
|
+
'UND_ERR_BODY_TIMEOUT',
|
|
52
|
+
STREAM_INTERRUPTED_ERROR_CODE,
|
|
53
|
+
]);
|
|
54
|
+
function collectErrorDetails(error) {
|
|
55
|
+
const messages = [];
|
|
56
|
+
const codes = [];
|
|
57
|
+
const stack = [error];
|
|
58
|
+
const visited = new Set();
|
|
59
|
+
while (stack.length > 0) {
|
|
60
|
+
const current = stack.pop();
|
|
61
|
+
if (current === null || current === undefined) {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (typeof current === 'string') {
|
|
65
|
+
messages.push(current);
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (typeof current !== 'object') {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (visited.has(current)) {
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
visited.add(current);
|
|
75
|
+
const errorObject = current;
|
|
76
|
+
if ('message' in errorObject && typeof errorObject.message === 'string') {
|
|
77
|
+
messages.push(errorObject.message);
|
|
78
|
+
}
|
|
79
|
+
if ('code' in errorObject && typeof errorObject.code === 'string') {
|
|
80
|
+
codes.push(errorObject.code);
|
|
81
|
+
}
|
|
82
|
+
const possibleNestedErrors = [
|
|
83
|
+
errorObject.cause,
|
|
84
|
+
errorObject.originalError,
|
|
85
|
+
errorObject.error,
|
|
86
|
+
];
|
|
87
|
+
for (const nested of possibleNestedErrors) {
|
|
88
|
+
if (nested && nested !== current) {
|
|
89
|
+
stack.push(nested);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return { messages, codes };
|
|
94
|
+
}
|
|
95
|
+
export function createStreamInterruptionError(message, details, cause) {
|
|
96
|
+
const error = new Error(message);
|
|
97
|
+
error.name = 'StreamInterruptionError';
|
|
98
|
+
error.code = STREAM_INTERRUPTED_ERROR_CODE;
|
|
99
|
+
if (details) {
|
|
100
|
+
error.details = details;
|
|
101
|
+
}
|
|
102
|
+
if (cause && !error.cause) {
|
|
103
|
+
error.cause = cause;
|
|
104
|
+
}
|
|
105
|
+
return error;
|
|
106
|
+
}
|
|
107
|
+
export function getErrorCode(error) {
|
|
108
|
+
if (typeof error === 'object' && error !== null) {
|
|
109
|
+
if ('code' in error &&
|
|
110
|
+
typeof error.code === 'string') {
|
|
111
|
+
return error.code;
|
|
112
|
+
}
|
|
113
|
+
if ('error' in error &&
|
|
114
|
+
typeof error.error === 'object' &&
|
|
115
|
+
error.error !== null &&
|
|
116
|
+
'code' in error.error &&
|
|
117
|
+
typeof error.error.code === 'string') {
|
|
118
|
+
return error.error.code;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
export function isNetworkTransientError(error) {
|
|
124
|
+
const { messages, codes } = collectErrorDetails(error);
|
|
125
|
+
const lowerMessages = messages.map((msg) => msg.toLowerCase());
|
|
126
|
+
if (lowerMessages.some((msg) => TRANSIENT_ERROR_PHRASES.some((phrase) => msg.includes(phrase)))) {
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
if (messages.some((msg) => TRANSIENT_ERROR_REGEXES.some((regex) => regex.test(msg)))) {
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
if (codes
|
|
133
|
+
.map((code) => code.toUpperCase())
|
|
134
|
+
.some((code) => TRANSIENT_ERROR_CODES.has(code))) {
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
16
139
|
/**
|
|
17
140
|
* Default predicate function to determine if a retry should be attempted.
|
|
18
141
|
* Retries on 429 (Too Many Requests) and 5xx server errors.
|
|
@@ -33,6 +156,9 @@ function defaultShouldRetry(error) {
|
|
|
33
156
|
if (error.message.match(/5\d{2}/))
|
|
34
157
|
return true;
|
|
35
158
|
}
|
|
159
|
+
if (isNetworkTransientError(error)) {
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
36
162
|
return false;
|
|
37
163
|
}
|
|
38
164
|
/**
|
|
@@ -51,14 +177,13 @@ function delay(ms) {
|
|
|
51
177
|
* @throws The last error encountered if all attempts fail.
|
|
52
178
|
*/
|
|
53
179
|
export async function retryWithBackoff(fn, options) {
|
|
54
|
-
const { maxAttempts, initialDelayMs, maxDelayMs,
|
|
180
|
+
const { maxAttempts, initialDelayMs, maxDelayMs, shouldRetry } = {
|
|
55
181
|
...DEFAULT_RETRY_OPTIONS,
|
|
56
182
|
...options,
|
|
57
183
|
};
|
|
58
184
|
const logger = new DebugLogger('llxprt:retry');
|
|
59
185
|
let attempt = 0;
|
|
60
186
|
let currentDelay = initialDelayMs;
|
|
61
|
-
let consecutive429Count = 0;
|
|
62
187
|
while (attempt < maxAttempts) {
|
|
63
188
|
attempt++;
|
|
64
189
|
try {
|
|
@@ -66,88 +191,6 @@ export async function retryWithBackoff(fn, options) {
|
|
|
66
191
|
}
|
|
67
192
|
catch (error) {
|
|
68
193
|
const errorStatus = getErrorStatus(error);
|
|
69
|
-
// Check for Pro quota exceeded error first - immediate fallback for OAuth users
|
|
70
|
-
if (errorStatus === 429 &&
|
|
71
|
-
authType === AuthType.LOGIN_WITH_GOOGLE &&
|
|
72
|
-
isProQuotaExceededError(error) &&
|
|
73
|
-
onPersistent429) {
|
|
74
|
-
try {
|
|
75
|
-
const fallbackModel = await onPersistent429(authType, error);
|
|
76
|
-
if (fallbackModel !== false && fallbackModel !== null) {
|
|
77
|
-
// Reset attempt counter and try with new model
|
|
78
|
-
attempt = 0;
|
|
79
|
-
consecutive429Count = 0;
|
|
80
|
-
currentDelay = initialDelayMs;
|
|
81
|
-
// With the model updated, we continue to the next attempt
|
|
82
|
-
continue;
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
// Fallback handler returned null/false, meaning don't continue - stop retry process
|
|
86
|
-
throw error;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
catch (fallbackError) {
|
|
90
|
-
// If fallback fails, continue with original error
|
|
91
|
-
logger.debug(() => `Fallback to Flash model failed: ${fallbackError}`);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
// Check for generic quota exceeded error (but not Pro, which was handled above) - immediate fallback for OAuth users
|
|
95
|
-
if (errorStatus === 429 &&
|
|
96
|
-
authType === AuthType.LOGIN_WITH_GOOGLE &&
|
|
97
|
-
!isProQuotaExceededError(error) &&
|
|
98
|
-
isGenericQuotaExceededError(error) &&
|
|
99
|
-
onPersistent429) {
|
|
100
|
-
try {
|
|
101
|
-
const fallbackModel = await onPersistent429(authType, error);
|
|
102
|
-
if (fallbackModel !== false && fallbackModel !== null) {
|
|
103
|
-
// Reset attempt counter and try with new model
|
|
104
|
-
attempt = 0;
|
|
105
|
-
consecutive429Count = 0;
|
|
106
|
-
currentDelay = initialDelayMs;
|
|
107
|
-
// With the model updated, we continue to the next attempt
|
|
108
|
-
continue;
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
// Fallback handler returned null/false, meaning don't continue - stop retry process
|
|
112
|
-
throw error;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
catch (fallbackError) {
|
|
116
|
-
// If fallback fails, continue with original error
|
|
117
|
-
logger.debug(() => `Fallback to Flash model failed: ${fallbackError}`);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
// Track consecutive 429 errors
|
|
121
|
-
if (errorStatus === 429) {
|
|
122
|
-
consecutive429Count++;
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
consecutive429Count = 0;
|
|
126
|
-
}
|
|
127
|
-
// If we have persistent 429s and a fallback callback for OAuth
|
|
128
|
-
if (consecutive429Count >= 2 &&
|
|
129
|
-
onPersistent429 &&
|
|
130
|
-
authType === AuthType.LOGIN_WITH_GOOGLE) {
|
|
131
|
-
try {
|
|
132
|
-
const fallbackModel = await onPersistent429(authType, error);
|
|
133
|
-
if (fallbackModel !== false && fallbackModel !== null) {
|
|
134
|
-
// Reset attempt counter and try with new model
|
|
135
|
-
attempt = 0;
|
|
136
|
-
consecutive429Count = 0;
|
|
137
|
-
currentDelay = initialDelayMs;
|
|
138
|
-
// With the model updated, we continue to the next attempt
|
|
139
|
-
continue;
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
// Fallback handler returned null/false, meaning don't continue - stop retry process
|
|
143
|
-
throw error;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
catch (fallbackError) {
|
|
147
|
-
// If fallback fails, continue with original error
|
|
148
|
-
logger.debug(() => `Fallback to Flash model failed: ${fallbackError}`);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
194
|
// Check if we've exhausted retries or shouldn't retry
|
|
152
195
|
if (attempt >= maxAttempts || !shouldRetry(error)) {
|
|
153
196
|
throw error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/utils/retry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/utils/retry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAchD,MAAM,qBAAqB,GAAiB;IAC1C,WAAW,EAAE,CAAC;IACd,cAAc,EAAE,IAAI;IACpB,UAAU,EAAE,KAAK,EAAE,aAAa;IAChC,WAAW,EAAE,kBAAkB;CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,2BAA2B,CAAC;AAEzE,MAAM,uBAAuB,GAAG;IAC9B,kBAAkB;IAClB,uBAAuB;IACvB,kBAAkB;IAClB,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,2BAA2B;IAC3B,iBAAiB;IACjB,kBAAkB;CACnB,CAAC;AAEF,MAAM,uBAAuB,GAAG;IAC9B,+BAA+B;IAC/B,YAAY;IACZ,wDAAwD;IACxD,iCAAiC;CAClC,CAAC;AAEF,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,YAAY;IACZ,cAAc;IACd,cAAc;IACd,aAAa;IACb,cAAc;IACd,WAAW;IACX,OAAO;IACP,WAAW;IACX,gBAAgB;IAChB,yBAAyB;IACzB,yBAAyB;IACzB,sBAAsB;IACtB,6BAA6B;CAC9B,CAAC,CAAC;AAEH,SAAS,mBAAmB,CAAC,KAAc;IAIzC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAc,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAW,CAAC;IAEnC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9C,SAAS;QACX,CAAC;QAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAErB,MAAM,WAAW,GAAG,OAMnB,CAAC;QAEF,IAAI,SAAS,IAAI,WAAW,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACxE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,MAAM,IAAI,WAAW,IAAI,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,oBAAoB,GAAG;YAC3B,WAAW,CAAC,KAAK;YACjB,WAAW,CAAC,aAAa;YACzB,WAAW,CAAC,KAAK;SAClB,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,oBAAoB,EAAE,CAAC;YAC1C,IAAI,MAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,OAAe,EACf,OAAiC,EACjC,KAAe;IAEf,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACtC,KAA2B,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAClE,IAAI,OAAO,EAAE,CAAC;QACX,KAA+C,CAAC,OAAO,GAAG,OAAO,CAAC;IACrE,CAAC;IACD,IAAI,KAAK,IAAI,CAAE,KAA6B,CAAC,KAAK,EAAE,CAAC;QAClD,KAA6B,CAAC,KAAK,GAAG,KAAK,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,IACE,MAAM,IAAI,KAAK;YACf,OAAQ,KAA4B,CAAC,IAAI,KAAK,QAAQ,EACtD,CAAC;YACD,OAAQ,KAA0B,CAAC,IAAI,CAAC;QAC1C,CAAC;QAED,IACE,OAAO,IAAI,KAAK;YAChB,OAAQ,KAA6B,CAAC,KAAK,KAAK,QAAQ;YACvD,KAA6B,CAAC,KAAK,KAAK,IAAI;YAC7C,MAAM,IAAK,KAAwC,CAAC,KAAM;YAC1D,OACG,KAAwC,CAAC,KAG3C,CAAC,IAAI,KAAK,QAAQ,EACnB,CAAC;YACD,OACG,KAAwC,CAAC,KAG3C,CAAC,IAAI,CAAC;QACT,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAEvD,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/D,IACE,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACzB,uBAAuB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAC/D,EACD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACE,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACpB,uBAAuB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CACzD,EACD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACE,KAAK;SACF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SACjC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAClD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,KAAsB;IAChD,uFAAuF;IACvF,IAAI,KAAK,IAAI,OAAQ,KAA6B,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACvE,MAAM,MAAM,GAAI,KAA4B,CAAC,MAAM,CAAC;QACpD,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;IACjD,CAAC;IAED,IAAI,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAoB,EACpB,OAA+B;IAE/B,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG;QAC/D,GAAG,qBAAqB;QACxB,GAAG,OAAO;KACX,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,cAAc,CAAC,CAAC;IAC/C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,YAAY,GAAG,cAAc,CAAC;IAElC,OAAO,OAAO,GAAG,WAAW,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;QACV,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAE1C,sDAAsD;YACtD,IAAI,OAAO,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,KAAc,CAAC,EAAE,CAAC;gBAC3D,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,GACtD,yBAAyB,CAAC,KAAK,CAAC,CAAC;YAEnC,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;gBACxB,mDAAmD;gBACnD,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CACH,WAAW,OAAO,uBAAuB,gBAAgB,IAAI,SAAS,sCAAsC,eAAe,gBAAgB,KAAK,EAAE,CACrJ,CAAC;gBACF,MAAM,KAAK,CAAC,eAAe,CAAC,CAAC;gBAC7B,sDAAsD;gBACtD,IAAI,OAAO,EAAE,qBAAqB,EAAE,CAAC;oBACnC,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CACH,wDAAwD,eAAe,IAAI,CAC9E,CAAC;oBACF,OAAO,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;gBACjD,CAAC;gBACD,kGAAkG;gBAClG,YAAY,GAAG,cAAc,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,+CAA+C;gBAC/C,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;gBAC7C,sCAAsC;gBACtC,MAAM,MAAM,GAAG,YAAY,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC,CAAC;gBAC3D,MAAM,KAAK,CAAC,eAAe,CAAC,CAAC;gBAC7B,qDAAqD;gBACrD,IAAI,OAAO,EAAE,qBAAqB,EAAE,CAAC;oBACnC,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CACH,yDAAyD,eAAe,IAAI,CAC/E,CAAC;oBACF,OAAO,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;gBACjD,CAAC;gBACD,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;IACH,CAAC;IACD,qFAAqF;IACrF,uFAAuF;IACvF,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,IAAI,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,CAAC;QACD,2DAA2D;QAC3D,IACE,UAAU,IAAI,KAAK;YACnB,OAAQ,KAAgC,CAAC,QAAQ,KAAK,QAAQ;YAC7D,KAAgC,CAAC,QAAQ,KAAK,IAAI,EACnD,CAAC;YACD,MAAM,QAAQ,GACZ,KACD,CAAC,QAAQ,CAAC;YACX,IAAI,QAAQ,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAChE,OAAO,QAAQ,CAAC,MAAM,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,4DAA4D;QAC5D,IACE,UAAU,IAAI,KAAK;YACnB,OAAQ,KAAgC,CAAC,QAAQ,KAAK,QAAQ;YAC7D,KAAgC,CAAC,QAAQ,KAAK,IAAI,EACnD,CAAC;YACD,MAAM,QAAQ,GAAI,KAA6C,CAAC,QAAQ,CAAC;YACzE,IACE,SAAS,IAAI,QAAQ;gBACrB,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ;gBACpC,QAAQ,CAAC,OAAO,KAAK,IAAI,EACzB,CAAC;gBACD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAsC,CAAC;gBAChE,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;gBAChD,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;oBACzC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;oBACzD,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;wBAC9B,OAAO,iBAAiB,GAAG,IAAI,CAAC;oBAClC,CAAC;oBACD,2BAA2B;oBAC3B,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;oBAClD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;wBACrC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC5D,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,KAAc;IAI/C,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;QACxB,eAAe,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CACtB,OAAe,EACf,KAAc,EACd,WAAoB;IAEpB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,cAAc,CAAC,CAAC;IAC/C,IAAI,OAAO,GAAG,WAAW,OAAO,mCAAmC,CAAC;IACpE,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,GAAG,WAAW,OAAO,uBAAuB,WAAW,4BAA4B,CAAC;IAC7F,CAAC;IAED,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,WAAW,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;SAAM,IAAI,WAAW,IAAI,WAAW,IAAI,GAAG,IAAI,WAAW,GAAG,GAAG,EAAE,CAAC;QAClE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,WAAW,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;SAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAClC,sEAAsE;QACtE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CACH,WAAW,OAAO,mFAAmF,KAAK,EAAE,CAC/G,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CACH,WAAW,OAAO,2DAA2D,KAAK,EAAE,CACvF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,oCAAoC;QACxF,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,4CAA4C;IAChG,CAAC;AACH,CAAC;AAED,2CAA2C"}
|