@just-every/ensemble 0.2.248 → 0.2.250

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 CHANGED
@@ -113,6 +113,38 @@ console.log('Validation Result:', {
113
113
  });
114
114
  ```
115
115
 
116
+ ### Custom OpenAI-Compatible Endpoints
117
+
118
+ Register local or self-hosted OpenAI-compatible chat-completions endpoints before making requests. For LM Studio, `http://127.0.0.1:1234` is normalized to `http://127.0.0.1:1234/v1`.
119
+
120
+ ```typescript
121
+ import { ensembleRequest, registerOpenAICompatibleModel } from '@just-every/ensemble';
122
+
123
+ registerOpenAICompatibleModel({
124
+ id: 'google/gemma-4-12b',
125
+ endpoint: 'http://127.0.0.1:1234',
126
+ cost: {
127
+ input_per_million: 0,
128
+ output_per_million: 0,
129
+ },
130
+ features: {
131
+ context_length: 32768,
132
+ max_output_tokens: 4096,
133
+ tool_use: false,
134
+ },
135
+ });
136
+
137
+ for await (const event of ensembleRequest([{ type: 'message', role: 'user', content: 'Hello from local Gemma.' }], {
138
+ model: 'google/gemma-4-12b',
139
+ })) {
140
+ if (event.type === 'message_complete') {
141
+ console.log(event.content);
142
+ }
143
+ }
144
+ ```
145
+
146
+ Local endpoints that do not require authentication use a placeholder API key internally because the OpenAI SDK requires a non-empty value. Pass `apiKey` when your endpoint enforces authentication. The optional `cost` field uses the same per-million token pricing shape as built-in models, and defaults to zero-cost tracking when omitted.
147
+
116
148
  ## Documentation
117
149
 
118
150
  - [Request Lifecycle & Failures](docs/retry-behavior.md) - Outer request status, retries, timeouts, verification, and failure handling
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.shouldSummarizeResult = exports.processToolResult = exports.createSummary = exports.prepareToolArguments = exports.agentHasStatusTracking = exports.timeoutPromise = exports.handleToolCall = exports.executeToolWithLifecycle = exports.runSequential = exports.SequentialQueue = exports.sequentialQueue = exports.RunningToolTracker = exports.runningToolTracker = exports.ConfigurationError = exports.ModelNotFoundError = exports.QuotaExceededError = exports.PauseAbortError = exports.AbortError = exports.ToolExecutionError = exports.ProviderError = exports.EnsembleError = exports.generateFootnotes = exports.formatCitation = exports.createCitationTracker = exports.detectImageType = exports.isValidBase64 = exports.hasEventHandler = exports.emitEvent = exports.setEventHandler = exports.getEventController = exports.waitWhilePaused = exports.resume = exports.pause = exports.isPaused = exports.getPauseController = exports.AudioStreamPlayer = exports.createToolFunction = exports.findModel = exports.MODEL_CLASSES = exports.MODEL_REGISTRY = exports.isExternalModel = exports.getExternalProvider = exports.getExternalModel = exports.registerExternalModel = exports.canRunAgent = exports.isProviderKeyValid = exports.getModelFromClass = exports.getModelFromAgent = exports.getProviderFromModel = exports.getModelProvider = void 0;
18
- exports.ensembleResult = exports.ensembleLiveText = exports.ensembleLiveAudio = exports.ensembleLive = exports.createAudioStreamFromMediaStream = exports.ensembleListen = exports.ensembleVoice = exports.ensembleImage = exports.ensembleEmbed = exports.ensembleRequest = exports.quotaTracker = exports.costTracker = exports.updateModelClasses = exports.getAllModelClasses = exports.resetModelClass = exports.setModelClassRandom = exports.removeModelFromClass = exports.addModelToClass = exports.setModelClassModels = exports.overrideModelClass = exports.getModelClassNames = exports.getModelClass = exports.exportAgent = exports.agentToolCache = exports.getAgentSpecificTools = exports.cloneAgent = exports.Agent = exports.mergeHistoryThread = exports.truncateLargeValues = exports.verifyOutput = exports.write_source = exports.read_source = exports.hasExpansionTools = exports.getSummaryTools = exports.getSummaryCacheStats = exports.clearSummaryCache = exports.getTruncationMessage = void 0;
17
+ exports.prepareToolArguments = exports.agentHasStatusTracking = exports.timeoutPromise = exports.handleToolCall = exports.executeToolWithLifecycle = exports.runSequential = exports.SequentialQueue = exports.sequentialQueue = exports.RunningToolTracker = exports.runningToolTracker = exports.ConfigurationError = exports.ModelNotFoundError = exports.QuotaExceededError = exports.PauseAbortError = exports.AbortError = exports.ToolExecutionError = exports.ProviderError = exports.EnsembleError = exports.generateFootnotes = exports.formatCitation = exports.createCitationTracker = exports.detectImageType = exports.isValidBase64 = exports.hasEventHandler = exports.emitEvent = exports.setEventHandler = exports.getEventController = exports.waitWhilePaused = exports.resume = exports.pause = exports.isPaused = exports.getPauseController = exports.AudioStreamPlayer = exports.createToolFunction = exports.findModel = exports.MODEL_CLASSES = exports.MODEL_REGISTRY = exports.normalizeOpenAICompatibleEndpoint = exports.registerOpenAICompatibleModel = exports.OpenAICompatibleProvider = exports.isExternalModel = exports.getExternalProvider = exports.getExternalModel = exports.registerExternalModel = exports.canRunAgent = exports.isProviderKeyValid = exports.getModelFromClass = exports.getModelFromAgent = exports.getProviderFromModel = exports.getModelProvider = void 0;
18
+ exports.ensembleResult = exports.ensembleLiveText = exports.ensembleLiveAudio = exports.ensembleLive = exports.createAudioStreamFromMediaStream = exports.ensembleListen = exports.ensembleVoice = exports.ensembleImage = exports.ensembleEmbed = exports.ensembleRequest = exports.quotaTracker = exports.costTracker = exports.updateModelClasses = exports.getAllModelClasses = exports.resetModelClass = exports.setModelClassRandom = exports.removeModelFromClass = exports.addModelToClass = exports.setModelClassModels = exports.overrideModelClass = exports.getModelClassNames = exports.getModelClass = exports.exportAgent = exports.agentToolCache = exports.getAgentSpecificTools = exports.cloneAgent = exports.Agent = exports.mergeHistoryThread = exports.truncateLargeValues = exports.verifyOutput = exports.write_source = exports.read_source = exports.hasExpansionTools = exports.getSummaryTools = exports.getSummaryCacheStats = exports.clearSummaryCache = exports.getTruncationMessage = exports.shouldSummarizeResult = exports.processToolResult = exports.createSummary = void 0;
19
19
  __exportStar(require("./types/types.cjs"), exports);
20
20
  var model_provider_js_1 = require("./model_providers/model_provider.cjs");
21
21
  Object.defineProperty(exports, "getModelProvider", { enumerable: true, get: function () { return model_provider_js_1.getModelProvider; } });
@@ -30,6 +30,10 @@ Object.defineProperty(exports, "registerExternalModel", { enumerable: true, get:
30
30
  Object.defineProperty(exports, "getExternalModel", { enumerable: true, get: function () { return external_models_js_1.getExternalModel; } });
31
31
  Object.defineProperty(exports, "getExternalProvider", { enumerable: true, get: function () { return external_models_js_1.getExternalProvider; } });
32
32
  Object.defineProperty(exports, "isExternalModel", { enumerable: true, get: function () { return external_models_js_1.isExternalModel; } });
33
+ var openai_compatible_js_1 = require("./model_providers/openai_compatible.cjs");
34
+ Object.defineProperty(exports, "OpenAICompatibleProvider", { enumerable: true, get: function () { return openai_compatible_js_1.OpenAICompatibleProvider; } });
35
+ Object.defineProperty(exports, "registerOpenAICompatibleModel", { enumerable: true, get: function () { return openai_compatible_js_1.registerOpenAICompatibleModel; } });
36
+ Object.defineProperty(exports, "normalizeOpenAICompatibleEndpoint", { enumerable: true, get: function () { return openai_compatible_js_1.normalizeOpenAICompatibleEndpoint; } });
33
37
  var model_data_js_1 = require("./data/model_data.cjs");
34
38
  Object.defineProperty(exports, "MODEL_REGISTRY", { enumerable: true, get: function () { return model_data_js_1.MODEL_REGISTRY; } });
35
39
  Object.defineProperty(exports, "MODEL_CLASSES", { enumerable: true, get: function () { return model_data_js_1.MODEL_CLASSES; } });
@@ -2,6 +2,7 @@ export * from "./types/types.cjs";
2
2
  export { getModelProvider, getProviderFromModel, getModelFromAgent, getModelFromClass, isProviderKeyValid, canRunAgent, ModelProvider, } from "./model_providers/model_provider.cjs";
3
3
  export * from "./utils/message_history.cjs";
4
4
  export { registerExternalModel, getExternalModel, getExternalProvider, isExternalModel, } from "./utils/external_models.cjs";
5
+ export { OpenAICompatibleProvider, registerOpenAICompatibleModel, normalizeOpenAICompatibleEndpoint, type OpenAICompatibleModelOptions, } from "./model_providers/openai_compatible.cjs";
5
6
  export { MODEL_REGISTRY, MODEL_CLASSES, findModel } from "./data/model_data.cjs";
6
7
  export type { ModelProviderID, ModelUsage, TieredPrice, TimeBasedPrice, ModelEntry } from "./data/model_data.cjs";
7
8
  export * from "./utils/delta_buffer.cjs";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACH,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,aAAa,GAChB,MAAM,qCAAqC,CAAC;AAG7C,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GAClB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACH,wBAAwB,EACxB,6BAA6B,EAC7B,iCAAiC,EACjC,KAAK,4BAA4B,GACpC,MAAM,wCAAwC,CAAC;AAGhD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGhF,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGjH,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,OAAO,EACH,kBAAkB,EAClB,QAAQ,EACR,KAAK,EACL,MAAM,EACN,eAAe,EACf,KAAK,eAAe,GACvB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACH,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,YAAY,GACpB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG7E,OAAO,EACH,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,QAAQ,GAChB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACH,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACH,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,mBAAmB,GACtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC9F,OAAO,EACH,wBAAwB,EACxB,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,oBAAoB,GACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACH,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,GACvB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACzG,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGzG,OAAO,EACH,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,+BAA+B,CAAC;AAKvC,eAAO,MAAM,WAAW,+CAAe,CAAC;AACxC,eAAO,MAAM,YAAY,iDAAgB,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG5F,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenAICompatibleProvider = void 0;
4
+ exports.normalizeOpenAICompatibleEndpoint = normalizeOpenAICompatibleEndpoint;
5
+ exports.registerOpenAICompatibleModel = registerOpenAICompatibleModel;
6
+ const external_models_js_1 = require("../utils/external_models.cjs");
7
+ const openai_chat_js_1 = require("./openai_chat.cjs");
8
+ const DEFAULT_LOCAL_API_KEY = 'not-needed';
9
+ const DEFAULT_OPENAI_COMPATIBLE_FEATURES = {
10
+ context_length: 128000,
11
+ input_modality: ['text'],
12
+ output_modality: ['text'],
13
+ tool_use: false,
14
+ streaming: true,
15
+ json_output: true,
16
+ max_output_tokens: 8192,
17
+ };
18
+ function normalizeOpenAICompatibleEndpoint(endpoint) {
19
+ if (!endpoint || endpoint.trim().length === 0) {
20
+ throw new Error('OpenAI-compatible endpoint is required.');
21
+ }
22
+ const url = new URL(endpoint);
23
+ if (url.pathname === '' || url.pathname === '/') {
24
+ url.pathname = '/v1';
25
+ }
26
+ url.pathname = url.pathname.replace(/\/+$/, '');
27
+ return url.toString().replace(/\/+$/, '');
28
+ }
29
+ class OpenAICompatibleProvider extends openai_chat_js_1.OpenAIChat {
30
+ endpoint;
31
+ constructor(options) {
32
+ const endpoint = normalizeOpenAICompatibleEndpoint(options.endpoint);
33
+ const providerId = (options.providerId || `openai-compatible:${options.id}`);
34
+ super(providerId, options.apiKey || DEFAULT_LOCAL_API_KEY, endpoint, options.defaultHeaders, options.commonParams);
35
+ this.endpoint = endpoint;
36
+ }
37
+ }
38
+ exports.OpenAICompatibleProvider = OpenAICompatibleProvider;
39
+ function registerOpenAICompatibleModel(options) {
40
+ const provider = new OpenAICompatibleProvider(options);
41
+ const providerId = (options.providerId || `openai-compatible:${options.id}`);
42
+ const model = {
43
+ id: options.id,
44
+ aliases: options.aliases,
45
+ provider: providerId,
46
+ cost: options.cost,
47
+ features: {
48
+ ...DEFAULT_OPENAI_COMPATIBLE_FEATURES,
49
+ ...options.features,
50
+ },
51
+ class: options.class,
52
+ description: options.description || `OpenAI-compatible model at ${provider.endpoint}`,
53
+ };
54
+ (0, external_models_js_1.registerExternalModel)(model, provider);
55
+ return provider;
56
+ }
57
+ //# sourceMappingURL=openai_compatible.js.map
@@ -0,0 +1,22 @@
1
+ import { ModelCost, ModelFeatures } from "../types/types.cjs";
2
+ import { OpenAIChat } from "./openai_chat.cjs";
3
+ export interface OpenAICompatibleModelOptions {
4
+ id: string;
5
+ endpoint: string;
6
+ apiKey?: string;
7
+ providerId?: string;
8
+ aliases?: string[];
9
+ cost?: ModelCost;
10
+ features?: ModelFeatures;
11
+ class?: string;
12
+ description?: string;
13
+ defaultHeaders?: Record<string, string | null | undefined>;
14
+ commonParams?: Record<string, unknown>;
15
+ }
16
+ export declare function normalizeOpenAICompatibleEndpoint(endpoint: string): string;
17
+ export declare class OpenAICompatibleProvider extends OpenAIChat {
18
+ readonly endpoint: string;
19
+ constructor(options: OpenAICompatibleModelOptions);
20
+ }
21
+ export declare function registerOpenAICompatibleModel(options: OpenAICompatibleModelOptions): OpenAICompatibleProvider;
22
+ //# sourceMappingURL=openai_compatible.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai_compatible.d.ts","sourceRoot":"","sources":["../../../model_providers/openai_compatible.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAc,aAAa,EAAmB,MAAM,mBAAmB,CAAC;AAE1F,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAc9C,MAAM,WAAW,4BAA4B;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAED,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW1E;AAED,qBAAa,wBAAyB,SAAQ,UAAU;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,OAAO,EAAE,4BAA4B;CAcpD;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,4BAA4B,GAAG,wBAAwB,CAkB7G"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai_compatible.js","sourceRoot":"","sources":["../../../model_providers/openai_compatible.ts"],"names":[],"mappings":";;;AAuCA,8EAWC;AAqBD,sEAkBC;AA/ED,oEAAoE;AACpE,qDAA8C;AAE9C,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAE3C,MAAM,kCAAkC,GAAkB;IACtD,cAAc,EAAE,MAAM;IACtB,cAAc,EAAE,CAAC,MAAM,CAAC;IACxB,eAAe,EAAE,CAAC,MAAM,CAAC;IACzB,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,iBAAiB,EAAE,IAAI;CAC1B,CAAC;AAgBF,SAAgB,iCAAiC,CAAC,QAAgB;IAC9D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;QAC9C,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAChD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,MAAa,wBAAyB,SAAQ,2BAAU;IAC3C,QAAQ,CAAS;IAE1B,YAAY,OAAqC;QAC7C,MAAM,QAAQ,GAAG,iCAAiC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,qBAAqB,OAAO,CAAC,EAAE,EAAE,CAAoB,CAAC;QAEhG,KAAK,CACD,UAAU,EACV,OAAO,CAAC,MAAM,IAAI,qBAAqB,EACvC,QAAQ,EACR,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,YAAY,CACvB,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CACJ;AAjBD,4DAiBC;AAED,SAAgB,6BAA6B,CAAC,OAAqC;IAC/E,MAAM,QAAQ,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,qBAAqB,OAAO,CAAC,EAAE,EAAE,CAAoB,CAAC;IAChG,MAAM,KAAK,GAAe;QACtB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE;YACN,GAAG,kCAAkC;YACrC,GAAG,OAAO,CAAC,QAAQ;SACtB;QACD,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,8BAA8B,QAAQ,CAAC,QAAQ,EAAE;KACxF,CAAC;IAEF,IAAA,0CAAqB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC;AACpB,CAAC"}