@lofder/dsers-mcp-product 1.0.0
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/LICENSE +21 -0
- package/README.md +210 -0
- package/dist/dsers/account.d.ts +17 -0
- package/dist/dsers/account.d.ts.map +1 -0
- package/dist/dsers/account.js +37 -0
- package/dist/dsers/account.js.map +1 -0
- package/dist/dsers/auth.d.ts +14 -0
- package/dist/dsers/auth.d.ts.map +1 -0
- package/dist/dsers/auth.js +87 -0
- package/dist/dsers/auth.js.map +1 -0
- package/dist/dsers/client.d.ts +21 -0
- package/dist/dsers/client.d.ts.map +1 -0
- package/dist/dsers/client.js +78 -0
- package/dist/dsers/client.js.map +1 -0
- package/dist/dsers/config.d.ts +9 -0
- package/dist/dsers/config.d.ts.map +1 -0
- package/dist/dsers/config.js +28 -0
- package/dist/dsers/config.js.map +1 -0
- package/dist/dsers/product.d.ts +42 -0
- package/dist/dsers/product.d.ts.map +1 -0
- package/dist/dsers/product.js +289 -0
- package/dist/dsers/product.js.map +1 -0
- package/dist/dsers/settings.d.ts +30 -0
- package/dist/dsers/settings.d.ts.map +1 -0
- package/dist/dsers/settings.js +63 -0
- package/dist/dsers/settings.js.map +1 -0
- package/dist/error-map.d.ts +7 -0
- package/dist/error-map.d.ts.map +1 -0
- package/dist/error-map.js +231 -0
- package/dist/error-map.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/job-store-memory.d.ts +8 -0
- package/dist/job-store-memory.d.ts.map +1 -0
- package/dist/job-store-memory.js +60 -0
- package/dist/job-store-memory.js.map +1 -0
- package/dist/job-store.d.ts +14 -0
- package/dist/job-store.d.ts.map +1 -0
- package/dist/job-store.js +31 -0
- package/dist/job-store.js.map +1 -0
- package/dist/provider.d.ts +53 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +1298 -0
- package/dist/provider.js.map +1 -0
- package/dist/push-options.d.ts +7 -0
- package/dist/push-options.d.ts.map +1 -0
- package/dist/push-options.js +158 -0
- package/dist/push-options.js.map +1 -0
- package/dist/resolver.d.ts +8 -0
- package/dist/resolver.d.ts.map +1 -0
- package/dist/resolver.js +81 -0
- package/dist/resolver.js.map +1 -0
- package/dist/rules.d.ts +14 -0
- package/dist/rules.d.ts.map +1 -0
- package/dist/rules.js +332 -0
- package/dist/rules.js.map +1 -0
- package/dist/service.d.ts +22 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +461 -0
- package/dist/service.js.map +1 -0
- package/dist/tools.d.ts +4 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +402 -0
- package/dist/tools.js.map +1 -0
- package/package.json +54 -0
package/dist/rules.js
ADDED
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
const KNOWN_TOP_LEVEL_RULE_KEYS = new Set(["pricing", "content", "images", "instruction_text"]);
|
|
2
|
+
const KNOWN_PRICING_KEYS = new Set(["mode", "multiplier", "fixed_markup", "round_digits"]);
|
|
3
|
+
const KNOWN_CONTENT_KEYS = new Set([
|
|
4
|
+
"title_override",
|
|
5
|
+
"title_prefix",
|
|
6
|
+
"title_suffix",
|
|
7
|
+
"description_override_html",
|
|
8
|
+
"description_append_html",
|
|
9
|
+
"tags_add",
|
|
10
|
+
]);
|
|
11
|
+
const KNOWN_IMAGE_KEYS = new Set(["keep_first_n", "drop_indexes", "translate_image_text", "remove_logo"]);
|
|
12
|
+
const DEFAULT_PRICING_MODES = new Set(["provider_default", "multiplier", "fixed_markup"]);
|
|
13
|
+
function _allowedRuleKeys(capability, defaultKeys) {
|
|
14
|
+
const cap = capability ?? {};
|
|
15
|
+
const supported = cap.supported;
|
|
16
|
+
const unsupported = new Set((cap.unsupported ?? []).map((x) => String(x)));
|
|
17
|
+
let allowed;
|
|
18
|
+
if (Array.isArray(supported)) {
|
|
19
|
+
allowed = new Set(supported.map(String));
|
|
20
|
+
}
|
|
21
|
+
else if (supported === false) {
|
|
22
|
+
allowed = new Set();
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
allowed = new Set(defaultKeys);
|
|
26
|
+
}
|
|
27
|
+
for (const u of unsupported)
|
|
28
|
+
allowed.delete(String(u));
|
|
29
|
+
return allowed;
|
|
30
|
+
}
|
|
31
|
+
function _asFloat(value, def) {
|
|
32
|
+
if (value == null || value === "")
|
|
33
|
+
return def;
|
|
34
|
+
const n = Number(value);
|
|
35
|
+
return Number.isFinite(n) ? n : def;
|
|
36
|
+
}
|
|
37
|
+
function _normalizePricing(pricing, capability, warnings, errors) {
|
|
38
|
+
if (pricing == null || (typeof pricing === "object" && Object.keys(pricing).length === 0))
|
|
39
|
+
return {};
|
|
40
|
+
if (typeof pricing !== "object") {
|
|
41
|
+
errors.push("pricing must be an object when provided.");
|
|
42
|
+
return {};
|
|
43
|
+
}
|
|
44
|
+
const cap = capability ?? {};
|
|
45
|
+
if (cap.supported === false) {
|
|
46
|
+
warnings.push("Pricing rules were ignored because the current provider does not support pricing edits.");
|
|
47
|
+
return {};
|
|
48
|
+
}
|
|
49
|
+
const mode = String(pricing.mode ?? "provider_default");
|
|
50
|
+
if (!DEFAULT_PRICING_MODES.has(mode)) {
|
|
51
|
+
errors.push(`Unsupported pricing.mode '${mode}'. Valid modes: ${[...DEFAULT_PRICING_MODES].join(", ")}.`);
|
|
52
|
+
return {};
|
|
53
|
+
}
|
|
54
|
+
const allowedModes = new Set(cap.modes ?? DEFAULT_PRICING_MODES);
|
|
55
|
+
if (!allowedModes.has(mode)) {
|
|
56
|
+
warnings.push(`Pricing mode '${mode}' is not supported by the current provider and was ignored.`);
|
|
57
|
+
return {};
|
|
58
|
+
}
|
|
59
|
+
for (const k of Object.keys(pricing).sort()) {
|
|
60
|
+
if (!KNOWN_PRICING_KEYS.has(k))
|
|
61
|
+
warnings.push(`Unknown pricing rule key '${k}' was ignored.`);
|
|
62
|
+
}
|
|
63
|
+
const normalized = { mode };
|
|
64
|
+
if (mode === "multiplier") {
|
|
65
|
+
const multiplier = _asFloat(pricing.multiplier, null);
|
|
66
|
+
if (multiplier == null) {
|
|
67
|
+
errors.push("pricing.multiplier must be a number when pricing.mode='multiplier'.");
|
|
68
|
+
return {};
|
|
69
|
+
}
|
|
70
|
+
normalized.multiplier = multiplier;
|
|
71
|
+
}
|
|
72
|
+
else if (mode === "fixed_markup") {
|
|
73
|
+
const markup = _asFloat(pricing.fixed_markup, null);
|
|
74
|
+
if (markup == null) {
|
|
75
|
+
errors.push("pricing.fixed_markup must be a number when pricing.mode='fixed_markup'.");
|
|
76
|
+
return {};
|
|
77
|
+
}
|
|
78
|
+
normalized.fixed_markup = markup;
|
|
79
|
+
}
|
|
80
|
+
if (mode !== "provider_default") {
|
|
81
|
+
const rd = pricing.round_digits ?? 2;
|
|
82
|
+
const roundDigits = Number.isInteger(rd) ? rd : parseInt(String(rd), 10);
|
|
83
|
+
if (Number.isNaN(roundDigits)) {
|
|
84
|
+
errors.push("pricing.round_digits must be an integer when provided.");
|
|
85
|
+
return {};
|
|
86
|
+
}
|
|
87
|
+
normalized.round_digits = roundDigits;
|
|
88
|
+
}
|
|
89
|
+
return normalized;
|
|
90
|
+
}
|
|
91
|
+
function _normalizeContent(content, capability, warnings, errors) {
|
|
92
|
+
if (content == null || (typeof content === "object" && Object.keys(content).length === 0))
|
|
93
|
+
return {};
|
|
94
|
+
if (typeof content !== "object") {
|
|
95
|
+
errors.push("content must be an object when provided.");
|
|
96
|
+
return {};
|
|
97
|
+
}
|
|
98
|
+
const allowedKeys = _allowedRuleKeys(capability, KNOWN_CONTENT_KEYS);
|
|
99
|
+
const normalized = {};
|
|
100
|
+
for (const key of Object.keys(content).sort()) {
|
|
101
|
+
if (!KNOWN_CONTENT_KEYS.has(key)) {
|
|
102
|
+
warnings.push(`Unknown content rule key '${key}' was ignored.`);
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (!allowedKeys.has(key)) {
|
|
106
|
+
warnings.push(`Content rule '${key}' is not supported by the current provider and was ignored.`);
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const value = content[key];
|
|
110
|
+
if (key === "tags_add") {
|
|
111
|
+
if (value == null || (Array.isArray(value) && value.length === 0))
|
|
112
|
+
continue;
|
|
113
|
+
if (!Array.isArray(value)) {
|
|
114
|
+
errors.push("content.tags_add must be an array of strings when provided.");
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
const tags = [];
|
|
118
|
+
for (const raw of value) {
|
|
119
|
+
const tag = String(raw).trim();
|
|
120
|
+
if (tag && !tags.includes(tag))
|
|
121
|
+
tags.push(tag);
|
|
122
|
+
}
|
|
123
|
+
if (tags.length)
|
|
124
|
+
normalized[key] = tags;
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (value != null && value !== "")
|
|
128
|
+
normalized[key] = String(value);
|
|
129
|
+
}
|
|
130
|
+
return normalized;
|
|
131
|
+
}
|
|
132
|
+
function _normalizeImages(images, capability, warnings, errors) {
|
|
133
|
+
if (images == null || (typeof images === "object" && Object.keys(images).length === 0))
|
|
134
|
+
return {};
|
|
135
|
+
if (typeof images !== "object") {
|
|
136
|
+
errors.push("images must be an object when provided.");
|
|
137
|
+
return {};
|
|
138
|
+
}
|
|
139
|
+
const allowedKeys = _allowedRuleKeys(capability, KNOWN_IMAGE_KEYS);
|
|
140
|
+
const normalized = {};
|
|
141
|
+
for (const key of Object.keys(images).sort()) {
|
|
142
|
+
if (!KNOWN_IMAGE_KEYS.has(key)) {
|
|
143
|
+
warnings.push(`Unknown image rule key '${key}' was ignored.`);
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
if (!allowedKeys.has(key)) {
|
|
147
|
+
warnings.push(`Image rule '${key}' is not supported by the current provider and was ignored.`);
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
const value = images[key];
|
|
151
|
+
if (key === "keep_first_n") {
|
|
152
|
+
if (value == null)
|
|
153
|
+
continue;
|
|
154
|
+
const n = Number(value);
|
|
155
|
+
const keepFirstN = Number.isInteger(n) ? n : parseInt(String(value), 10);
|
|
156
|
+
if (Number.isNaN(keepFirstN)) {
|
|
157
|
+
errors.push("images.keep_first_n must be an integer when provided.");
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
if (keepFirstN < 0) {
|
|
161
|
+
errors.push("images.keep_first_n must be >= 0.");
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
normalized[key] = keepFirstN;
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
if (key === "drop_indexes") {
|
|
168
|
+
if (value == null || (Array.isArray(value) && value.length === 0))
|
|
169
|
+
continue;
|
|
170
|
+
if (!Array.isArray(value)) {
|
|
171
|
+
errors.push("images.drop_indexes must be an array of integers when provided.");
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
const indexes = [];
|
|
175
|
+
for (const raw of value) {
|
|
176
|
+
const idx = Number(raw);
|
|
177
|
+
const i = Number.isInteger(idx) ? idx : parseInt(String(raw), 10);
|
|
178
|
+
if (Number.isNaN(i)) {
|
|
179
|
+
errors.push("images.drop_indexes must contain only integers.");
|
|
180
|
+
indexes.length = 0;
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
if (i >= 0 && !indexes.includes(i))
|
|
184
|
+
indexes.push(i);
|
|
185
|
+
}
|
|
186
|
+
if (indexes.length)
|
|
187
|
+
normalized[key] = [...indexes].sort((a, b) => a - b);
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
normalized[key] = Boolean(value);
|
|
191
|
+
}
|
|
192
|
+
return normalized;
|
|
193
|
+
}
|
|
194
|
+
export function normalizeRules(rules, ruleCapabilities) {
|
|
195
|
+
const requested = structuredClone(rules ?? {});
|
|
196
|
+
const warnings = [];
|
|
197
|
+
const errors = [];
|
|
198
|
+
const effective = {};
|
|
199
|
+
if (requested != null && (typeof requested !== "object" || Array.isArray(requested))) {
|
|
200
|
+
return { requested_rules: requested, effective_rules: {}, warnings: [], errors: ["rules must be an object"] };
|
|
201
|
+
}
|
|
202
|
+
const req = typeof requested === "object" ? requested : {};
|
|
203
|
+
const caps = ruleCapabilities ?? {};
|
|
204
|
+
for (const key of Object.keys(req).sort()) {
|
|
205
|
+
if (!KNOWN_TOP_LEVEL_RULE_KEYS.has(key))
|
|
206
|
+
warnings.push(`Unknown top-level rule key '${key}' was ignored.`);
|
|
207
|
+
}
|
|
208
|
+
const pricing = _normalizePricing(req.pricing, caps.pricing, warnings, errors);
|
|
209
|
+
if (Object.keys(pricing).length)
|
|
210
|
+
effective.pricing = pricing;
|
|
211
|
+
const content = _normalizeContent(req.content, caps.content, warnings, errors);
|
|
212
|
+
if (Object.keys(content).length)
|
|
213
|
+
effective.content = content;
|
|
214
|
+
const images = _normalizeImages(req.images, caps.images, warnings, errors);
|
|
215
|
+
if (Object.keys(images).length)
|
|
216
|
+
effective.images = images;
|
|
217
|
+
const instructionText = req.instruction_text;
|
|
218
|
+
if (instructionText != null && instructionText !== "") {
|
|
219
|
+
if (typeof instructionText === "string") {
|
|
220
|
+
effective.instruction_text = instructionText;
|
|
221
|
+
warnings.push("instruction_text is stored in the rule snapshot for operator context, but only structured rules are applied automatically.");
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
errors.push("instruction_text must be a string when provided.");
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return { requested_rules: req, effective_rules: effective, warnings, errors };
|
|
228
|
+
}
|
|
229
|
+
function _firstPrice(variant) {
|
|
230
|
+
for (const k of ["offer_price", "supplier_price"]) {
|
|
231
|
+
const v = _asFloat(variant[k], null);
|
|
232
|
+
if (v != null)
|
|
233
|
+
return v;
|
|
234
|
+
}
|
|
235
|
+
return null;
|
|
236
|
+
}
|
|
237
|
+
function _applyPricing(draft, pricing, summary) {
|
|
238
|
+
const mode = pricing.mode ?? "provider_default";
|
|
239
|
+
if (mode === "provider_default")
|
|
240
|
+
return;
|
|
241
|
+
const multiplier = _asFloat(pricing.multiplier, 1) ?? 1;
|
|
242
|
+
const markup = _asFloat(pricing.fixed_markup, 0) ?? 0;
|
|
243
|
+
const roundDigits = pricing.round_digits ?? 2;
|
|
244
|
+
const roundTo = (v, d) => Math.round(v * 10 ** d) / 10 ** d;
|
|
245
|
+
const variants = draft.variants ?? [];
|
|
246
|
+
let changed = 0;
|
|
247
|
+
for (const v of variants) {
|
|
248
|
+
const base = _firstPrice(v);
|
|
249
|
+
if (base == null)
|
|
250
|
+
continue;
|
|
251
|
+
let newPrice;
|
|
252
|
+
if (mode === "multiplier")
|
|
253
|
+
newPrice = roundTo(base * multiplier, roundDigits);
|
|
254
|
+
else if (mode === "fixed_markup")
|
|
255
|
+
newPrice = roundTo(base + markup, roundDigits);
|
|
256
|
+
else {
|
|
257
|
+
summary.warnings.push(`Unsupported pricing mode '${mode}' was ignored.`);
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
v.offer_price = newPrice;
|
|
261
|
+
changed++;
|
|
262
|
+
}
|
|
263
|
+
summary.applied.push({ rule_family: "pricing", mode, variants_changed: changed });
|
|
264
|
+
}
|
|
265
|
+
function _applyContent(draft, content, summary) {
|
|
266
|
+
let title = draft.title ?? "";
|
|
267
|
+
if (content.title_override)
|
|
268
|
+
title = String(content.title_override).trim();
|
|
269
|
+
if (content.title_prefix) {
|
|
270
|
+
const prefix = String(content.title_prefix);
|
|
271
|
+
if (!title.startsWith(prefix))
|
|
272
|
+
title = prefix + title;
|
|
273
|
+
}
|
|
274
|
+
if (content.title_suffix) {
|
|
275
|
+
const suffix = String(content.title_suffix);
|
|
276
|
+
if (!title.endsWith(suffix))
|
|
277
|
+
title = title + suffix;
|
|
278
|
+
}
|
|
279
|
+
if (title)
|
|
280
|
+
draft.title = title;
|
|
281
|
+
if (content.description_override_html) {
|
|
282
|
+
draft.description_html = String(content.description_override_html);
|
|
283
|
+
}
|
|
284
|
+
else if (content.description_append_html) {
|
|
285
|
+
draft.description_html = (draft.description_html ?? "") + String(content.description_append_html);
|
|
286
|
+
}
|
|
287
|
+
if (content.tags_add) {
|
|
288
|
+
const existing = [...(draft.tags ?? [])];
|
|
289
|
+
for (const tag of content.tags_add ?? []) {
|
|
290
|
+
if (!existing.includes(tag))
|
|
291
|
+
existing.push(tag);
|
|
292
|
+
}
|
|
293
|
+
draft.tags = existing;
|
|
294
|
+
}
|
|
295
|
+
summary.applied.push({ rule_family: "content" });
|
|
296
|
+
}
|
|
297
|
+
function _applyImages(draft, images, summary) {
|
|
298
|
+
const imageList = [...(draft.images ?? [])];
|
|
299
|
+
const originalCount = imageList.length;
|
|
300
|
+
const dropIndexes = [...new Set(images.drop_indexes ?? [])].sort((a, b) => b - a);
|
|
301
|
+
for (const idx of dropIndexes) {
|
|
302
|
+
const i = Number(idx);
|
|
303
|
+
if (i >= 0 && i < imageList.length)
|
|
304
|
+
imageList.splice(i, 1);
|
|
305
|
+
}
|
|
306
|
+
const keepFirstN = images.keep_first_n;
|
|
307
|
+
const final = keepFirstN != null ? imageList.slice(0, keepFirstN) : imageList;
|
|
308
|
+
if (images.translate_image_text)
|
|
309
|
+
summary.warnings.push("translate_image_text is not auto-applied in this MVP.");
|
|
310
|
+
if (images.remove_logo)
|
|
311
|
+
summary.warnings.push("remove_logo is not auto-applied in this MVP.");
|
|
312
|
+
draft.images = final;
|
|
313
|
+
summary.applied.push({ rule_family: "images", image_count_before: originalCount, image_count_after: final.length });
|
|
314
|
+
}
|
|
315
|
+
export function applyRules(draft, rules) {
|
|
316
|
+
const d = structuredClone(draft);
|
|
317
|
+
const summary = { applied: [], warnings: [] };
|
|
318
|
+
const pricing = rules.pricing ?? {};
|
|
319
|
+
if (Object.keys(pricing).length)
|
|
320
|
+
_applyPricing(d, pricing, summary);
|
|
321
|
+
const content = rules.content ?? {};
|
|
322
|
+
if (Object.keys(content).length)
|
|
323
|
+
_applyContent(d, content, summary);
|
|
324
|
+
const images = rules.images ?? {};
|
|
325
|
+
if (Object.keys(images).length)
|
|
326
|
+
_applyImages(d, images, summary);
|
|
327
|
+
if (rules.instruction_text) {
|
|
328
|
+
summary.warnings.push("Freeform instruction_text is recorded for operator context, but only structured rules are applied automatically in this MVP.");
|
|
329
|
+
}
|
|
330
|
+
return { draft: d, summary };
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ImportProvider } from "./provider.js";
|
|
2
|
+
import type { JobStore } from "./job-store.js";
|
|
3
|
+
export declare class ImportFlowService {
|
|
4
|
+
private provider;
|
|
5
|
+
private store;
|
|
6
|
+
constructor(provider: ImportProvider, store: JobStore);
|
|
7
|
+
getRuleCapabilities(payload: Record<string, any>): Promise<Record<string, any>>;
|
|
8
|
+
validateRules(payload: Record<string, any>): Promise<Record<string, any>>;
|
|
9
|
+
prepareImportCandidate(payload: Record<string, any>): Promise<Record<string, any>>;
|
|
10
|
+
private prepareSingle;
|
|
11
|
+
private batchPrepare;
|
|
12
|
+
getImportPreview(payload: Record<string, any>): Promise<Record<string, any>>;
|
|
13
|
+
setProductVisibility(payload: Record<string, any>): Promise<Record<string, any>>;
|
|
14
|
+
confirmPushToStore(payload: Record<string, any>): Promise<Record<string, any>>;
|
|
15
|
+
private pushSingle;
|
|
16
|
+
private multiStorePushSingleJob;
|
|
17
|
+
private batchPush;
|
|
18
|
+
private recoverDraft;
|
|
19
|
+
getJobStatus(payload: Record<string, any>): Promise<Record<string, any>>;
|
|
20
|
+
private preview;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AA2I/C,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,KAAK,CAAW;gBAEZ,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ;IAK/C,mBAAmB,CACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAazB,aAAa,CACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAezB,sBAAsB,CAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAQjB,aAAa;YAkEb,YAAY;IA+CpB,gBAAgB,CACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAUzB,oBAAoB,CACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAgBzB,kBAAkB,CACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAajB,UAAU;YA4DV,uBAAuB;YAsCvB,SAAS;YA0CT,YAAY;IAiBpB,YAAY,CAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAsB/B,OAAO,CAAC,OAAO;CAyChB"}
|