@just-every/ensemble 0.2.226 → 0.2.228
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 +4 -1
- package/dist/cjs/data/model_data.cjs +9 -0
- package/dist/cjs/data/model_data.d.ts.map +1 -1
- package/dist/cjs/data/model_data.js.map +1 -1
- package/dist/cjs/model_providers/claude.cjs +4 -6
- package/dist/cjs/model_providers/claude.d.ts.map +1 -1
- package/dist/cjs/model_providers/claude.js.map +1 -1
- package/dist/cjs/model_providers/fal.cjs +75 -22
- package/dist/cjs/model_providers/fal.d.ts +3 -0
- package/dist/cjs/model_providers/fal.d.ts.map +1 -1
- package/dist/cjs/model_providers/fal.js.map +1 -1
- package/dist/cjs/model_providers/gemini.cjs +20 -21
- package/dist/cjs/model_providers/gemini.d.ts.map +1 -1
- package/dist/cjs/model_providers/gemini.js.map +1 -1
- package/dist/cjs/model_providers/openai.cjs +21 -53
- package/dist/cjs/model_providers/openai.d.ts.map +1 -1
- package/dist/cjs/model_providers/openai.js.map +1 -1
- package/dist/cjs/model_providers/openai_chat.cjs +21 -52
- package/dist/cjs/model_providers/openai_chat.d.ts.map +1 -1
- package/dist/cjs/model_providers/openai_chat.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/types/api_types.d.ts +1 -1
- package/dist/cjs/types/api_types.d.ts.map +1 -1
- package/dist/cjs/types/types.d.ts +4 -2
- package/dist/cjs/types/types.d.ts.map +1 -1
- package/dist/cjs/utils/image_detail.cjs +77 -0
- package/dist/cjs/utils/image_detail.d.ts +12 -0
- package/dist/cjs/utils/image_detail.d.ts.map +1 -0
- package/dist/cjs/utils/image_detail.js.map +1 -0
- package/dist/cjs/utils/image_utils.cjs +0 -219
- package/dist/cjs/utils/image_utils.d.ts +0 -16
- package/dist/cjs/utils/image_utils.d.ts.map +1 -1
- package/dist/cjs/utils/image_utils.js.map +1 -1
- package/dist/data/model_data.d.ts.map +1 -1
- package/dist/data/model_data.js +9 -0
- package/dist/data/model_data.js.map +1 -1
- package/dist/model_providers/claude.d.ts.map +1 -1
- package/dist/model_providers/claude.js +5 -7
- package/dist/model_providers/claude.js.map +1 -1
- package/dist/model_providers/fal.d.ts +3 -0
- package/dist/model_providers/fal.d.ts.map +1 -1
- package/dist/model_providers/fal.js +75 -22
- package/dist/model_providers/fal.js.map +1 -1
- package/dist/model_providers/gemini.d.ts.map +1 -1
- package/dist/model_providers/gemini.js +21 -22
- package/dist/model_providers/gemini.js.map +1 -1
- package/dist/model_providers/openai.d.ts.map +1 -1
- package/dist/model_providers/openai.js +22 -54
- package/dist/model_providers/openai.js.map +1 -1
- package/dist/model_providers/openai_chat.d.ts.map +1 -1
- package/dist/model_providers/openai_chat.js +22 -53
- package/dist/model_providers/openai_chat.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/api_types.d.ts +1 -1
- package/dist/types/api_types.d.ts.map +1 -1
- package/dist/types/types.d.ts +4 -2
- package/dist/types/types.d.ts.map +1 -1
- package/dist/utils/image_detail.d.ts +12 -0
- package/dist/utils/image_detail.d.ts.map +1 -0
- package/dist/utils/image_detail.js +69 -0
- package/dist/utils/image_detail.js.map +1 -0
- package/dist/utils/image_utils.d.ts +0 -16
- package/dist/utils/image_utils.d.ts.map +1 -1
- package/dist/utils/image_utils.js +0 -181
- package/dist/utils/image_utils.js.map +1 -1
- package/package.json +2 -3
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.falProvider = exports.FALProvider = void 0;
|
|
4
4
|
const base_provider_js_1 = require("./base_provider.cjs");
|
|
5
5
|
const cost_tracker_js_1 = require("../utils/cost_tracker.cjs");
|
|
6
|
+
const image_utils_js_1 = require("../utils/image_utils.cjs");
|
|
6
7
|
const llm_logger_js_1 = require("../utils/llm_logger.cjs");
|
|
7
8
|
function mapImageSize(size) {
|
|
8
9
|
if (!size)
|
|
@@ -27,6 +28,9 @@ class FALProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
27
28
|
}
|
|
28
29
|
endpointFor(model) {
|
|
29
30
|
const m = model.toLowerCase();
|
|
31
|
+
if (m === 'fal-ai/ideogram/remove-background' || m === 'ideogram-remove-background') {
|
|
32
|
+
return { path: 'fal-ai/ideogram/remove-background', bodyMode: 'remove-background' };
|
|
33
|
+
}
|
|
30
34
|
if (m.startsWith('recraft'))
|
|
31
35
|
return { path: 'fal-ai/recraft/v3/text-to-image', bodyMode: 'top' };
|
|
32
36
|
if (m.includes('runway') || m.includes('gen4'))
|
|
@@ -39,6 +43,69 @@ class FALProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
39
43
|
return { path: 'fal-ai/flux-pro/kontext', bodyMode: 'top' };
|
|
40
44
|
return { path: 'fal-ai/flux/schnell', bodyMode: 'top' };
|
|
41
45
|
}
|
|
46
|
+
imageUrlForRemoveBackground(opts) {
|
|
47
|
+
const sourceImages = opts.source_images;
|
|
48
|
+
if (!sourceImages) {
|
|
49
|
+
throw new Error('fal-ai/ideogram/remove-background requires exactly one source image.');
|
|
50
|
+
}
|
|
51
|
+
const rawImages = Array.isArray(sourceImages) ? sourceImages : [sourceImages];
|
|
52
|
+
if (rawImages.length !== 1) {
|
|
53
|
+
throw new Error('fal-ai/ideogram/remove-background supports exactly one source image per request.');
|
|
54
|
+
}
|
|
55
|
+
const rawImage = rawImages[0];
|
|
56
|
+
const normalized = typeof rawImage === 'string'
|
|
57
|
+
? (0, image_utils_js_1.normalizeImageDataUrl)({ data: rawImage })
|
|
58
|
+
: (0, image_utils_js_1.normalizeImageDataUrl)({ data: rawImage.data });
|
|
59
|
+
const imageUrl = normalized.url || normalized.dataUrl;
|
|
60
|
+
if (!imageUrl ||
|
|
61
|
+
(!imageUrl.startsWith('http://') && !imageUrl.startsWith('https://') && !imageUrl.startsWith('data:image/'))) {
|
|
62
|
+
throw new Error('fal-ai/ideogram/remove-background expects the source image to be a public URL or a data:image/... base64 URI.');
|
|
63
|
+
}
|
|
64
|
+
return imageUrl;
|
|
65
|
+
}
|
|
66
|
+
buildBody(prompt, bodyMode, opts) {
|
|
67
|
+
if (bodyMode === 'remove-background') {
|
|
68
|
+
const body = {
|
|
69
|
+
image_url: this.imageUrlForRemoveBackground(opts),
|
|
70
|
+
};
|
|
71
|
+
if (opts?.response_format === 'b64_json') {
|
|
72
|
+
body.sync_mode = true;
|
|
73
|
+
}
|
|
74
|
+
return body;
|
|
75
|
+
}
|
|
76
|
+
const size = mapImageSize(opts.size);
|
|
77
|
+
const bodyInput = bodyMode === 'top' ? { prompt } : { input: { prompt } };
|
|
78
|
+
if (size) {
|
|
79
|
+
if (bodyMode === 'top')
|
|
80
|
+
bodyInput.image_size = size;
|
|
81
|
+
else
|
|
82
|
+
bodyInput.input.image_size = size;
|
|
83
|
+
}
|
|
84
|
+
if (opts?.response_format === 'b64_json') {
|
|
85
|
+
if (bodyMode === 'top')
|
|
86
|
+
bodyInput.sync_mode = true;
|
|
87
|
+
else
|
|
88
|
+
bodyInput.input.sync_mode = true;
|
|
89
|
+
}
|
|
90
|
+
return bodyInput;
|
|
91
|
+
}
|
|
92
|
+
extractImages(data) {
|
|
93
|
+
const images = [];
|
|
94
|
+
const addImage = (candidate) => {
|
|
95
|
+
if (typeof candidate === 'string' && candidate.length > 0) {
|
|
96
|
+
images.push(candidate);
|
|
97
|
+
}
|
|
98
|
+
else if (candidate?.url) {
|
|
99
|
+
images.push(candidate.url);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
const arr = data?.images || data?.output?.images || [];
|
|
103
|
+
for (const im of arr)
|
|
104
|
+
addImage(im);
|
|
105
|
+
addImage(data?.image);
|
|
106
|
+
addImage(data?.url);
|
|
107
|
+
return images;
|
|
108
|
+
}
|
|
42
109
|
async createImage(prompt, model, agent, opts = {}) {
|
|
43
110
|
const falKey = process.env.FAL_KEY;
|
|
44
111
|
const requestId = (0, llm_logger_js_1.log_llm_request)(agent.agent_id || 'default', 'fal', model, { prompt, opts }, new Date());
|
|
@@ -46,20 +113,7 @@ class FALProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
46
113
|
if (!falKey)
|
|
47
114
|
throw new Error('FAL_KEY is not set');
|
|
48
115
|
const { path, bodyMode } = this.endpointFor(model);
|
|
49
|
-
const
|
|
50
|
-
const bodyInput = bodyMode === 'top' ? { prompt } : { input: { prompt } };
|
|
51
|
-
if (size) {
|
|
52
|
-
if (bodyMode === 'top')
|
|
53
|
-
bodyInput.image_size = size;
|
|
54
|
-
else
|
|
55
|
-
bodyInput.input.image_size = size;
|
|
56
|
-
}
|
|
57
|
-
if (opts?.response_format === 'b64_json') {
|
|
58
|
-
if (bodyMode === 'top')
|
|
59
|
-
bodyInput.sync_mode = true;
|
|
60
|
-
else
|
|
61
|
-
bodyInput.input.sync_mode = true;
|
|
62
|
-
}
|
|
116
|
+
const bodyInput = this.buildBody(prompt, bodyMode, opts);
|
|
63
117
|
const res = await fetch(`https://fal.run/${path}`, {
|
|
64
118
|
method: 'POST',
|
|
65
119
|
headers: {
|
|
@@ -71,16 +125,15 @@ class FALProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
71
125
|
if (!res.ok)
|
|
72
126
|
throw new Error(`FAL request failed: ${res.status} ${await res.text()}`);
|
|
73
127
|
const data = await res.json();
|
|
74
|
-
const images =
|
|
75
|
-
const arr = data?.images || data?.output?.images || [];
|
|
76
|
-
for (const im of arr)
|
|
77
|
-
if (im?.url)
|
|
78
|
-
images.push(im.url);
|
|
79
|
-
if (!images.length && data?.url)
|
|
80
|
-
images.push(data.url);
|
|
128
|
+
const images = this.extractImages(data);
|
|
81
129
|
if (!images.length)
|
|
82
130
|
throw new Error('FAL: no image url in response');
|
|
83
|
-
cost_tracker_js_1.costTracker.addUsage({
|
|
131
|
+
cost_tracker_js_1.costTracker.addUsage({
|
|
132
|
+
model,
|
|
133
|
+
image_count: images.length,
|
|
134
|
+
request_id: opts?.request_id,
|
|
135
|
+
metadata: { source: 'fal' },
|
|
136
|
+
});
|
|
84
137
|
return images;
|
|
85
138
|
}
|
|
86
139
|
catch (err) {
|
|
@@ -4,6 +4,9 @@ export declare class FALProvider extends BaseModelProvider {
|
|
|
4
4
|
constructor();
|
|
5
5
|
createResponseStream(): AsyncGenerator<ProviderStreamEvent>;
|
|
6
6
|
private endpointFor;
|
|
7
|
+
private imageUrlForRemoveBackground;
|
|
8
|
+
private buildBody;
|
|
9
|
+
private extractImages;
|
|
7
10
|
createImage(prompt: string, model: string, agent: AgentDefinition, opts?: ImageGenerationOpts): Promise<string[]>;
|
|
8
11
|
}
|
|
9
12
|
export declare const falProvider: FALProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fal.d.ts","sourceRoot":"","sources":["../../../model_providers/fal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"fal.d.ts","sourceRoot":"","sources":["../../../model_providers/fal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAmBnG,qBAAa,WAAY,SAAQ,iBAAiB;;IAMvC,oBAAoB,IAAI,cAAc,CAAC,mBAAmB,CAAC;IAIlE,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,2BAA2B;IA8BnC,OAAO,CAAC,SAAS;IA4BjB,OAAO,CAAC,aAAa;IAiBf,WAAW,CACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,GAAE,mBAAwB,GAC/B,OAAO,CAAC,MAAM,EAAE,CAAC;CAkCvB;AAED,eAAO,MAAM,WAAW,aAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fal.js","sourceRoot":"","sources":["../../../model_providers/fal.ts"],"names":[],"mappings":";;;AAAA,yDAAuD;AAEvD,8DAAuD;AACvD,0DAA0F;
|
|
1
|
+
{"version":3,"file":"fal.js","sourceRoot":"","sources":["../../../model_providers/fal.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,7 @@ const cost_tracker_js_1 = require("../utils/cost_tracker.cjs");
|
|
|
43
43
|
const llm_logger_js_1 = require("../utils/llm_logger.cjs");
|
|
44
44
|
const pause_controller_js_1 = require("../utils/pause_controller.cjs");
|
|
45
45
|
const image_utils_js_1 = require("../utils/image_utils.cjs");
|
|
46
|
+
const image_detail_js_1 = require("../utils/image_detail.cjs");
|
|
46
47
|
const event_controller_js_1 = require("../utils/event_controller.cjs");
|
|
47
48
|
const truncate_utils_js_1 = require("../utils/truncate_utils.cjs");
|
|
48
49
|
function convertParameterToGeminiFormat(param) {
|
|
@@ -315,9 +316,8 @@ function mergeImageMetadata(target, source) {
|
|
|
315
316
|
}
|
|
316
317
|
async function addImagesToInput(input, images, source) {
|
|
317
318
|
for (const [image_id, imageData] of Object.entries(images)) {
|
|
318
|
-
const
|
|
319
|
-
const
|
|
320
|
-
const cleanedImageData = cleanBase64Data(processedImageData);
|
|
319
|
+
const mimeType = getImageMimeType(imageData);
|
|
320
|
+
const cleanedImageData = cleanBase64Data(imageData);
|
|
321
321
|
input.push({
|
|
322
322
|
role: 'user',
|
|
323
323
|
parts: [
|
|
@@ -481,24 +481,12 @@ async function convertToGeminiContents(model, messages) {
|
|
|
481
481
|
if (match) {
|
|
482
482
|
const mimeType = match[1];
|
|
483
483
|
const base64Data = match[2];
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
data: processedMatch[2],
|
|
491
|
-
},
|
|
492
|
-
});
|
|
493
|
-
}
|
|
494
|
-
else {
|
|
495
|
-
parts.push({
|
|
496
|
-
inlineData: {
|
|
497
|
-
mimeType: mimeType,
|
|
498
|
-
data: base64Data,
|
|
499
|
-
},
|
|
500
|
-
});
|
|
501
|
-
}
|
|
484
|
+
parts.push({
|
|
485
|
+
inlineData: {
|
|
486
|
+
mimeType: mimeType,
|
|
487
|
+
data: base64Data,
|
|
488
|
+
},
|
|
489
|
+
});
|
|
502
490
|
}
|
|
503
491
|
}
|
|
504
492
|
else if (imageUrl.startsWith('http://') || imageUrl.startsWith('https://')) {
|
|
@@ -597,6 +585,10 @@ const GEMINI_3_PRO_IMAGE_DIMENSION_PRESETS = {
|
|
|
597
585
|
'5504x3072': { ar: '16:9', imageSize: '4K' },
|
|
598
586
|
'6336x2688': { ar: '21:9', imageSize: '4K' },
|
|
599
587
|
};
|
|
588
|
+
function toGeminiMediaResolution(detail) {
|
|
589
|
+
const mapped = (0, image_detail_js_1.mapGeminiMediaResolution)(detail);
|
|
590
|
+
return mapped ? genai_1.MediaResolution[mapped] : undefined;
|
|
591
|
+
}
|
|
600
592
|
class GeminiProvider extends base_provider_js_1.BaseModelProvider {
|
|
601
593
|
_client;
|
|
602
594
|
apiKey;
|
|
@@ -750,6 +742,7 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
750
742
|
};
|
|
751
743
|
const chunks = [];
|
|
752
744
|
try {
|
|
745
|
+
const requestedImageDetail = (0, image_detail_js_1.chooseImageDetailFromInput)(messages);
|
|
753
746
|
const contents = await convertToGeminiContents(model, messages);
|
|
754
747
|
if (contents.length === 0) {
|
|
755
748
|
console.warn('Gemini API Warning: No valid content found in messages after conversion. Adding default message.');
|
|
@@ -834,6 +827,10 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
834
827
|
if (agent.abortSignal) {
|
|
835
828
|
config.abortSignal = agent.abortSignal;
|
|
836
829
|
}
|
|
830
|
+
const mediaResolution = toGeminiMediaResolution(requestedImageDetail);
|
|
831
|
+
if (mediaResolution) {
|
|
832
|
+
config.mediaResolution = mediaResolution;
|
|
833
|
+
}
|
|
837
834
|
let hasGoogleWebSearch = false;
|
|
838
835
|
let hasCodeExecutionTool = false;
|
|
839
836
|
let functionDeclarations = [];
|
|
@@ -1258,6 +1255,7 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
1258
1255
|
}
|
|
1259
1256
|
: undefined;
|
|
1260
1257
|
const perImageCost = this.getImageCost(model, imageSize);
|
|
1258
|
+
const sourceImageMediaResolution = toGeminiMediaResolution(opts?.detail);
|
|
1261
1259
|
const makeOne = async () => {
|
|
1262
1260
|
const requestParams = {
|
|
1263
1261
|
model,
|
|
@@ -1317,6 +1315,7 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
1317
1315
|
config: {
|
|
1318
1316
|
responseModalities: [genai_1.Modality.IMAGE],
|
|
1319
1317
|
...(Object.keys(imageConfig).length ? { imageConfig } : {}),
|
|
1318
|
+
...(sourceImageMediaResolution ? { mediaResolution: sourceImageMediaResolution } : {}),
|
|
1320
1319
|
...(googleSearchTool ? { tools: [googleSearchTool] } : {}),
|
|
1321
1320
|
...(Object.keys(thinkingConfig).length ? { thinkingConfig: thinkingConfig } : {}),
|
|
1322
1321
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../model_providers/gemini.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAGH,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,mBAAmB,EAInB,mBAAmB,EAEnB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,WAAW,EAOd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA6NvD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAO1D;AAmCD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../model_providers/gemini.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAGH,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,mBAAmB,EAInB,mBAAmB,EAEnB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,WAAW,EAOd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA6NvD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAO1D;AAmCD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AAyZD,qBAAa,cAAe,SAAQ,iBAAiB;IACjD,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,CAAC,EAAE,MAAM;IAS3B,OAAO,KAAK,MAAM,GAejB;IASK,eAAe,CACjB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC;YAmKlB,2BAA2B;IA+BnC,oBAAoB,CACvB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,SAAS,CAAC,EAAE,MAAM,GACnB,cAAc,CAAC,mBAAmB,CAAC;IAsgBhC,WAAW,CACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC;IAohBpB,OAAO,CAAC,YAAY;IAmCd,WAAW,CACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;IAgMpD,OAAO,CAAC,gBAAgB;IA6DjB,mBAAmB,CACtB,KAAK,EAAE,wBAAwB,EAC/B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,iBAAiB,GACzB,cAAc,CAAC,kBAAkB,CAAC;IA6S/B,iBAAiB,CACnB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC;CAyB1B;AAyfD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|