@langchain/langgraph 0.2.66 → 0.2.67
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.
|
@@ -72,12 +72,23 @@ function _isBaseChatModel(model) {
|
|
|
72
72
|
typeof model.invoke === "function" &&
|
|
73
73
|
"_modelType" in model);
|
|
74
74
|
}
|
|
75
|
-
|
|
75
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
76
|
+
function _isConfigurableModel(model) {
|
|
77
|
+
return ("_queuedMethodOperations" in model &&
|
|
78
|
+
"_model" in model &&
|
|
79
|
+
typeof model._model === "function");
|
|
80
|
+
}
|
|
81
|
+
async function _shouldBindTools(llm, tools) {
|
|
76
82
|
// If model is a RunnableSequence, find a RunnableBinding or BaseChatModel in its steps
|
|
77
83
|
let model = llm;
|
|
78
84
|
if (runnables_1.RunnableSequence.isRunnableSequence(model)) {
|
|
79
85
|
model =
|
|
80
|
-
model.steps.find((step) => runnables_1.RunnableBinding.isRunnableBinding(step) ||
|
|
86
|
+
model.steps.find((step) => runnables_1.RunnableBinding.isRunnableBinding(step) ||
|
|
87
|
+
_isBaseChatModel(step) ||
|
|
88
|
+
_isConfigurableModel(step)) || model;
|
|
89
|
+
}
|
|
90
|
+
if (_isConfigurableModel(model)) {
|
|
91
|
+
model = await model._model();
|
|
81
92
|
}
|
|
82
93
|
// If not a RunnableBinding, we should bind tools
|
|
83
94
|
if (!runnables_1.RunnableBinding.isRunnableBinding(model)) {
|
|
@@ -130,12 +141,17 @@ function _shouldBindTools(llm, tools) {
|
|
|
130
141
|
return false;
|
|
131
142
|
}
|
|
132
143
|
exports._shouldBindTools = _shouldBindTools;
|
|
133
|
-
function _getModel(llm) {
|
|
144
|
+
async function _getModel(llm) {
|
|
134
145
|
// If model is a RunnableSequence, find a RunnableBinding or BaseChatModel in its steps
|
|
135
146
|
let model = llm;
|
|
136
147
|
if (runnables_1.RunnableSequence.isRunnableSequence(model)) {
|
|
137
148
|
model =
|
|
138
|
-
model.steps.find((step) => runnables_1.RunnableBinding.isRunnableBinding(step) ||
|
|
149
|
+
model.steps.find((step) => runnables_1.RunnableBinding.isRunnableBinding(step) ||
|
|
150
|
+
_isBaseChatModel(step) ||
|
|
151
|
+
_isConfigurableModel(step)) || model;
|
|
152
|
+
}
|
|
153
|
+
if (_isConfigurableModel(model)) {
|
|
154
|
+
model = await model._model();
|
|
139
155
|
}
|
|
140
156
|
// Get the underlying model from a RunnableBinding
|
|
141
157
|
if (runnables_1.RunnableBinding.isRunnableBinding(model)) {
|
|
@@ -209,17 +225,25 @@ function createReactAgent(params) {
|
|
|
209
225
|
toolClasses = tools;
|
|
210
226
|
toolNode = new tool_node_js_1.ToolNode(tools);
|
|
211
227
|
}
|
|
212
|
-
let
|
|
213
|
-
|
|
214
|
-
if (
|
|
215
|
-
|
|
228
|
+
let cachedModelRunnable = null;
|
|
229
|
+
const getModelRunnable = async (llm) => {
|
|
230
|
+
if (cachedModelRunnable) {
|
|
231
|
+
return cachedModelRunnable;
|
|
216
232
|
}
|
|
217
|
-
modelWithTools
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
233
|
+
let modelWithTools;
|
|
234
|
+
if (await _shouldBindTools(llm, toolClasses)) {
|
|
235
|
+
if (!("bindTools" in llm) || typeof llm.bindTools !== "function") {
|
|
236
|
+
throw new Error(`llm ${llm} must define bindTools method.`);
|
|
237
|
+
}
|
|
238
|
+
modelWithTools = llm.bindTools(toolClasses);
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
modelWithTools = llm;
|
|
242
|
+
}
|
|
243
|
+
const modelRunnable = _getPrompt(prompt, stateModifier, messageModifier).pipe(modelWithTools);
|
|
244
|
+
cachedModelRunnable = modelRunnable;
|
|
245
|
+
return modelRunnable;
|
|
246
|
+
};
|
|
223
247
|
// If any of the tools are configured to return_directly after running,
|
|
224
248
|
// our graph needs to check if these were called
|
|
225
249
|
const shouldReturnDirect = new Set(toolClasses
|
|
@@ -246,17 +270,19 @@ function createReactAgent(params) {
|
|
|
246
270
|
"prompt" in responseFormat &&
|
|
247
271
|
"schema" in responseFormat) {
|
|
248
272
|
const { prompt, schema } = responseFormat;
|
|
249
|
-
modelWithStructuredOutput = _getModel(llm).withStructuredOutput(schema);
|
|
273
|
+
modelWithStructuredOutput = (await _getModel(llm)).withStructuredOutput(schema);
|
|
250
274
|
messages.unshift(new messages_1.SystemMessage({ content: prompt }));
|
|
251
275
|
}
|
|
252
276
|
else {
|
|
253
|
-
modelWithStructuredOutput =
|
|
254
|
-
_getModel(llm).withStructuredOutput(responseFormat);
|
|
277
|
+
modelWithStructuredOutput = (await _getModel(llm)).withStructuredOutput(responseFormat);
|
|
255
278
|
}
|
|
256
279
|
const response = await modelWithStructuredOutput.invoke(messages, config);
|
|
257
280
|
return { structuredResponse: response };
|
|
258
281
|
};
|
|
259
282
|
const callModel = async (state, config) => {
|
|
283
|
+
// NOTE: we're dynamically creating the model runnable here
|
|
284
|
+
// to ensure that we can validate ConfigurableModel properly
|
|
285
|
+
const modelRunnable = await getModelRunnable(llm);
|
|
260
286
|
// TODO: Auto-promote streaming.
|
|
261
287
|
const response = (await modelRunnable.invoke(state, config));
|
|
262
288
|
// add agent name to the AIMessage
|
|
@@ -20,8 +20,12 @@ export type StructuredResponseSchemaAndPrompt<StructuredResponseType> = {
|
|
|
20
20
|
prompt: string;
|
|
21
21
|
schema: z.ZodType<StructuredResponseType> | Record<string, any>;
|
|
22
22
|
};
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
interface ConfigurableModelInterface {
|
|
24
|
+
_queuedMethodOperations: Record<string, any>;
|
|
25
|
+
_model: () => Promise<BaseChatModel>;
|
|
26
|
+
}
|
|
27
|
+
export declare function _shouldBindTools(llm: LanguageModelLike, tools: (StructuredToolInterface | DynamicTool | RunnableToolLike)[]): Promise<boolean>;
|
|
28
|
+
export declare function _getModel(llm: LanguageModelLike | ConfigurableModelInterface): Promise<BaseChatModel>;
|
|
25
29
|
export type Prompt = SystemMessage | string | ((state: typeof MessagesAnnotation.State, config: LangGraphRunnableConfig) => BaseMessageLike[]) | ((state: typeof MessagesAnnotation.State, config: LangGraphRunnableConfig) => Promise<BaseMessageLike[]>) | Runnable;
|
|
26
30
|
/** @deprecated Use Prompt instead. */
|
|
27
31
|
export type StateModifier = Prompt;
|
|
@@ -137,3 +141,4 @@ export type CreateReactAgentParams<A extends AnnotationRoot<any> = AnnotationRoo
|
|
|
137
141
|
* ```
|
|
138
142
|
*/
|
|
139
143
|
export declare function createReactAgent<A extends AnnotationRoot<any> = typeof MessagesAnnotation, StructuredResponseFormat extends Record<string, any> = Record<string, any>>(params: CreateReactAgentParams<A, StructuredResponseFormat>): CompiledStateGraph<A["State"], A["Update"], any, typeof MessagesAnnotation.spec & A["spec"], ReturnType<typeof createReactAgentAnnotation<StructuredResponseFormat>>["spec"] & A["spec"]>;
|
|
144
|
+
export {};
|
|
@@ -69,12 +69,23 @@ function _isBaseChatModel(model) {
|
|
|
69
69
|
typeof model.invoke === "function" &&
|
|
70
70
|
"_modelType" in model);
|
|
71
71
|
}
|
|
72
|
-
|
|
72
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
73
|
+
function _isConfigurableModel(model) {
|
|
74
|
+
return ("_queuedMethodOperations" in model &&
|
|
75
|
+
"_model" in model &&
|
|
76
|
+
typeof model._model === "function");
|
|
77
|
+
}
|
|
78
|
+
export async function _shouldBindTools(llm, tools) {
|
|
73
79
|
// If model is a RunnableSequence, find a RunnableBinding or BaseChatModel in its steps
|
|
74
80
|
let model = llm;
|
|
75
81
|
if (RunnableSequence.isRunnableSequence(model)) {
|
|
76
82
|
model =
|
|
77
|
-
model.steps.find((step) => RunnableBinding.isRunnableBinding(step) ||
|
|
83
|
+
model.steps.find((step) => RunnableBinding.isRunnableBinding(step) ||
|
|
84
|
+
_isBaseChatModel(step) ||
|
|
85
|
+
_isConfigurableModel(step)) || model;
|
|
86
|
+
}
|
|
87
|
+
if (_isConfigurableModel(model)) {
|
|
88
|
+
model = await model._model();
|
|
78
89
|
}
|
|
79
90
|
// If not a RunnableBinding, we should bind tools
|
|
80
91
|
if (!RunnableBinding.isRunnableBinding(model)) {
|
|
@@ -126,12 +137,17 @@ export function _shouldBindTools(llm, tools) {
|
|
|
126
137
|
}
|
|
127
138
|
return false;
|
|
128
139
|
}
|
|
129
|
-
export function _getModel(llm) {
|
|
140
|
+
export async function _getModel(llm) {
|
|
130
141
|
// If model is a RunnableSequence, find a RunnableBinding or BaseChatModel in its steps
|
|
131
142
|
let model = llm;
|
|
132
143
|
if (RunnableSequence.isRunnableSequence(model)) {
|
|
133
144
|
model =
|
|
134
|
-
model.steps.find((step) => RunnableBinding.isRunnableBinding(step) ||
|
|
145
|
+
model.steps.find((step) => RunnableBinding.isRunnableBinding(step) ||
|
|
146
|
+
_isBaseChatModel(step) ||
|
|
147
|
+
_isConfigurableModel(step)) || model;
|
|
148
|
+
}
|
|
149
|
+
if (_isConfigurableModel(model)) {
|
|
150
|
+
model = await model._model();
|
|
135
151
|
}
|
|
136
152
|
// Get the underlying model from a RunnableBinding
|
|
137
153
|
if (RunnableBinding.isRunnableBinding(model)) {
|
|
@@ -203,17 +219,25 @@ export function createReactAgent(params) {
|
|
|
203
219
|
toolClasses = tools;
|
|
204
220
|
toolNode = new ToolNode(tools);
|
|
205
221
|
}
|
|
206
|
-
let
|
|
207
|
-
|
|
208
|
-
if (
|
|
209
|
-
|
|
222
|
+
let cachedModelRunnable = null;
|
|
223
|
+
const getModelRunnable = async (llm) => {
|
|
224
|
+
if (cachedModelRunnable) {
|
|
225
|
+
return cachedModelRunnable;
|
|
210
226
|
}
|
|
211
|
-
modelWithTools
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
227
|
+
let modelWithTools;
|
|
228
|
+
if (await _shouldBindTools(llm, toolClasses)) {
|
|
229
|
+
if (!("bindTools" in llm) || typeof llm.bindTools !== "function") {
|
|
230
|
+
throw new Error(`llm ${llm} must define bindTools method.`);
|
|
231
|
+
}
|
|
232
|
+
modelWithTools = llm.bindTools(toolClasses);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
modelWithTools = llm;
|
|
236
|
+
}
|
|
237
|
+
const modelRunnable = _getPrompt(prompt, stateModifier, messageModifier).pipe(modelWithTools);
|
|
238
|
+
cachedModelRunnable = modelRunnable;
|
|
239
|
+
return modelRunnable;
|
|
240
|
+
};
|
|
217
241
|
// If any of the tools are configured to return_directly after running,
|
|
218
242
|
// our graph needs to check if these were called
|
|
219
243
|
const shouldReturnDirect = new Set(toolClasses
|
|
@@ -240,17 +264,19 @@ export function createReactAgent(params) {
|
|
|
240
264
|
"prompt" in responseFormat &&
|
|
241
265
|
"schema" in responseFormat) {
|
|
242
266
|
const { prompt, schema } = responseFormat;
|
|
243
|
-
modelWithStructuredOutput = _getModel(llm).withStructuredOutput(schema);
|
|
267
|
+
modelWithStructuredOutput = (await _getModel(llm)).withStructuredOutput(schema);
|
|
244
268
|
messages.unshift(new SystemMessage({ content: prompt }));
|
|
245
269
|
}
|
|
246
270
|
else {
|
|
247
|
-
modelWithStructuredOutput =
|
|
248
|
-
_getModel(llm).withStructuredOutput(responseFormat);
|
|
271
|
+
modelWithStructuredOutput = (await _getModel(llm)).withStructuredOutput(responseFormat);
|
|
249
272
|
}
|
|
250
273
|
const response = await modelWithStructuredOutput.invoke(messages, config);
|
|
251
274
|
return { structuredResponse: response };
|
|
252
275
|
};
|
|
253
276
|
const callModel = async (state, config) => {
|
|
277
|
+
// NOTE: we're dynamically creating the model runnable here
|
|
278
|
+
// to ensure that we can validate ConfigurableModel properly
|
|
279
|
+
const modelRunnable = await getModelRunnable(llm);
|
|
254
280
|
// TODO: Auto-promote streaming.
|
|
255
281
|
const response = (await modelRunnable.invoke(state, config));
|
|
256
282
|
// add agent name to the AIMessage
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react_agent_executor.js","sourceRoot":"","sources":["../../src/prebuilt/react_agent_executor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"react_agent_executor.js","sourceRoot":"","sources":["../../src/prebuilt/react_agent_executor.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,QAAQ,EAGR,cAAc,EAEd,gBAAgB,EAChB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AASnC,OAAO,EACL,UAAU,GAGX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAY,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAuB7C,SAAS,+BAA+B,CACtC,eAAgC;IAEhC,iCAAiC;IACjC,IACE,OAAO,eAAe,KAAK,QAAQ;QACnC,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,QAAQ,EAAE,KAAK,QAAQ,CAAC,EAC3E;QACA,OAAO,eAAe,CAAC;KACxB;IAED,2BAA2B;IAC3B,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;QACzC,OAAO,KAAK,EAAE,KAAsC,EAAE,EAAE,CACtD,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnC;IAED,kBAAkB;IAClB,IAAI,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;QACxC,OAAO,cAAc,CAAC,IAAI,CACxB,CAAC,KAAsC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAC3D,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KACzB;IAED,MAAM,IAAI,KAAK,CACb,wCAAwC,OAAO,eAAe,EAAE,CACjE,CAAC;AACJ,CAAC;AAED,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAEtC,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,cAAiC,CAAC;IAEtC,IAAI,MAAM,IAAI,IAAI,EAAE;QAClB,cAAc,GAAG,cAAc,CAAC,IAAI,CAClC,CAAC,KAAsC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAC3D,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;KACjD;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QACrC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QAChD,cAAc,GAAG,cAAc,CAAC,IAAI,CAClC,CAAC,KAAsC,EAAE,EAAE;YACzC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC,CACF,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;KACjD;SAAM,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;QAClE,cAAc,GAAG,cAAc,CAAC,IAAI,CAClC,CAAC,KAAsC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CACxE,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;KACjD;SAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;QACvC,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;YACtD,OAAO,EAAE,oBAAoB;SAC9B,CAAC,CAAC;KACJ;SAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QACtC,cAAc,GAAG,MAAM,CAAC;KACzB;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,MAAM,EAAE,CAAC,CAAC;KACvE;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,UAAU,CACjB,MAAe,EACf,aAAuD,EACvD,eAA2D;IAE3D,oCAAoC;IACpC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,MAAM,CAClE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CACjB,CAAC,MAAM,CAAC;IACT,IAAI,YAAY,GAAG,CAAC,EAAE;QACpB,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAC;KACH;IAED,IAAI,WAAW,GAAG,MAAM,CAAC;IACzB,IAAI,aAAa,IAAI,IAAI,EAAE;QACzB,WAAW,GAAG,aAAa,CAAC;KAC7B;SAAM,IAAI,eAAe,IAAI,IAAI,EAAE;QAClC,WAAW,GAAG,+BAA+B,CAAC,eAAe,CAAC,CAAC;KAChE;IAED,OAAO,kBAAkB,CAAC,WAAW,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAwB;IAChD,OAAO,CACL,QAAQ,IAAI,KAAK;QACjB,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU;QAClC,YAAY,IAAI,KAAK,CACtB,CAAC;AACJ,CAAC;AAQD,8DAA8D;AAC9D,SAAS,oBAAoB,CAAC,KAAU;IACtC,OAAO,CACL,yBAAyB,IAAI,KAAK;QAClC,QAAQ,IAAI,KAAK;QACjB,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU,CACnC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAsB,EACtB,KAAmE;IAEnE,uFAAuF;IACvF,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;QAC9C,KAAK;YACH,KAAK,CAAC,KAAK,CAAC,IAAI,CACd,CAAC,IAAI,EAAE,EAAE,CACP,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBACvC,gBAAgB,CAAC,IAAI,CAAC;gBACtB,oBAAoB,CAAC,IAAI,CAAC,CAC7B,IAAI,KAAK,CAAC;KACd;IAED,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE;QAC/B,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;KAC9B;IAED,iDAAiD;IACjD,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;QAC7C,OAAO,IAAI,CAAC;KACb;IAED,8CAA8C;IAC9C,IACE,CAAC,KAAK,CAAC,MAAM;QACb,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,EAC1B;QACA,OAAO,IAAI,CAAC;KACb;IAED,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAyB,CAAC;IACxD,eAAe;IACf,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,sBAAsB,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;QACtE,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;KACjD;IAED,+BAA+B;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;QACtC,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;KACH;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;QAClC,IAAI,aAAiC,CAAC;QAEtC,oBAAoB;QACpB,IAAI,MAAM,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE;YACxD,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;SACzC;QACD,kCAAkC;aAC7B,IAAI,MAAM,IAAI,SAAS,EAAE;YAC5B,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC;SAChC;QACD,qBAAqB;aAChB,IAAI,UAAU,IAAI,SAAS,IAAI,MAAM,IAAI,SAAS,CAAC,QAAQ,EAAE;YAChE,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;SACzC;QACD,uCAAuC;aAClC;YACH,SAAS;SACV;QAED,IAAI,aAAa,EAAE;YACjB,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;SACnC;KACF;IAED,MAAM,YAAY,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CACb,kBAAkB,YAAY,6BAA6B;YACzD,iFAAiF,CACpF,CAAC;KACH;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAmD;IAEnD,uFAAuF;IACvF,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;QAC9C,KAAK;YACH,KAAK,CAAC,KAAK,CAAC,IAAI,CACd,CAAC,IAAI,EAAE,EAAE,CACP,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBACvC,gBAAgB,CAAC,IAAI,CAAC;gBACtB,oBAAoB,CAAC,IAAI,CAAC,CAC7B,IAAI,KAAK,CAAC;KACd;IAED,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE;QAC/B,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;KAC9B;IAED,kDAAkD;IAClD,IAAI,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;QAC5C,KAAK,GAAG,KAAK,CAAC,KAAsB,CAAC;KACtC;IAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;QAC5B,MAAM,IAAI,KAAK,CACb,8HAA8H,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CACvJ,CAAC;KACH;IAED,OAAO,KAAsB,CAAC;AAChC,CAAC;AA0BD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAGtC,EAAE,CACJ,UAAU,CAAC,IAAI,CAAC;IACd,QAAQ,EAAE,UAAU,CAA0B;QAC5C,OAAO,EAAE,oBAAoB;QAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;KAClB,CAAC;IACF,kBAAkB,EAAE,CAAA,UAAa,CAAA;CAClC,CAAC,CAAC;AAyEL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,MAAM,UAAU,gBAAgB,CAM9B,MAA2D;IAY3D,MAAM,EACJ,GAAG,EACH,KAAK,EACL,eAAe,EACf,aAAa,EACb,MAAM,EACN,WAAW,EACX,eAAe,EACf,YAAY,EACZ,eAAe,EACf,cAAc,EACd,KAAK,EACL,cAAc,EACd,IAAI,GACL,GAAG,MAAM,CAAC;IAEX,IAAI,WAAyE,CAAC;IAC9E,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACzB,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,QAAQ,GAAG,KAAK,CAAC;KAClB;SAAM;QACL,WAAW,GAAG,KAAK,CAAC;QACpB,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;KAChC;IAED,IAAI,mBAAmB,GAAoB,IAAI,CAAC;IAEhD,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAsB,EAAE,EAAE;QACxD,IAAI,mBAAmB,EAAE;YACvB,OAAO,mBAAmB,CAAC;SAC5B;QAED,IAAI,cAAiC,CAAC;QACtC,IAAI,MAAM,gBAAgB,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE;YAC5C,IAAI,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,UAAU,EAAE;gBAChE,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,gCAAgC,CAAC,CAAC;aAC7D;YACD,cAAc,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;SAC7C;aAAM;YACL,cAAc,GAAG,GAAG,CAAC;SACtB;QAED,MAAM,aAAa,GACjB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,CAClD,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEvB,mBAAmB,GAAG,aAAa,CAAC;QACpC,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC;IAEF,uEAAuE;IACvE,gDAAgD;IAChD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAChC,WAAW;SACR,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC;SAC7D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAC5B,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,KAA2C,EAAE,EAAE;QACrE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QAC3B,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClD,IACE,WAAW,CAAC,WAAW,CAAC;YACxB,CAAC,CAAC,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,EAChE;YACA,OAAO,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,GAAG,CAAC;SACtE;aAAM;YACL,OAAO,UAAU,CAAC;SACnB;IACH,CAAC,CAAC;IAEF,MAAM,0BAA0B,GAAG,KAAK,EACtC,KAA2C,EAC3C,MAAuB,EACvB,EAAE;QACF,IAAI,cAAc,IAAI,IAAI,EAAE;YAC1B,MAAM,IAAI,KAAK,CACb,qGAAqG,CACtG,CAAC;SACH;QACD,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,yBAAyB,CAAC;QAE9B,IACE,OAAO,cAAc,KAAK,QAAQ;YAClC,QAAQ,IAAI,cAAc;YAC1B,QAAQ,IAAI,cAAc,EAC1B;YACA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;YAC1C,yBAAyB,GAAG,CAAC,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,CACrE,MAAM,CACP,CAAC;YACF,QAAQ,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;SAC1D;aAAM;YACL,yBAAyB,GAAG,CAAC,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,CACrE,cAAc,CACf,CAAC;SACH;QAED,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1E,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC;IAC1C,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,EACrB,KAA2C,EAC3C,MAAuB,EACvB,EAAE;QACF,2DAA2D;QAC3D,4DAA4D;QAC5D,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAClD,gCAAgC;QAChC,MAAM,QAAQ,GAAG,CAAC,MAAM,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAgB,CAAC;QAC5E,kCAAkC;QAClC,iEAAiE;QACjE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;QAC/B,OAAO,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,UAAU,CAC7B,WAAW,IAAI,0BAA0B,EAA4B,CACtE;SACE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC;SAC3B,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;SAC1B,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAE3B,IAAI,cAAc,KAAK,SAAS,EAAE;QAChC,QAAQ;aACL,OAAO,CAAC,8BAA8B,EAAE,0BAA0B,CAAC;aACnE,OAAO,CAAC,8BAA8B,EAAE,GAAG,CAAC;aAC5C,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE;YAC5C,QAAQ,EAAE,OAAO;YACjB,CAAC,GAAG,CAAC,EAAE,GAAG;YACV,4BAA4B,EAAE,8BAA8B;SAC7D,CAAC,CAAC;KACN;SAAM;QACL,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE;YACpD,QAAQ,EAAE,OAAO;YACjB,CAAC,GAAG,CAAC,EAAE,GAAG;SACX,CAAC,CAAC;KACJ;IAED,MAAM,kBAAkB,GAAG,CAAC,KAA2C,EAAE,EAAE;QACzE,wCAAwC;QACxC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YACtD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;gBAC3B,MAAM;aACP;YACD,sDAAsD;YACtD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACtE,OAAO,GAAG,CAAC;aACZ;SACF;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC,EAAE;QAC/B,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;KAC3E;SAAM;QACL,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KACpC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC;QACtB,YAAY,EAAE,YAAY,IAAI,eAAe;QAC7C,eAAe;QACf,cAAc;QACd,KAAK;QACL,IAAI;KACL,CAAC,CAAC;AACL,CAAC"}
|