@scoutello/i18n-magic 0.15.1 → 0.16.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/dist/commands/clean.d.ts +2 -0
- package/dist/i18n-magic.cjs.development.js +123 -4
- package/dist/i18n-magic.cjs.development.js.map +1 -1
- package/dist/i18n-magic.cjs.production.min.js +1 -1
- package/dist/i18n-magic.cjs.production.min.js.map +1 -1
- package/dist/i18n-magic.esm.js +123 -4
- package/dist/i18n-magic.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/clean.ts +105 -0
- package/src/index.ts +7 -0
- package/src/lib/utils.ts +11 -3
|
@@ -668,20 +668,25 @@ var loadLocalesFile = /*#__PURE__*/function () {
|
|
|
668
668
|
while (1) switch (_context2.prev = _context2.next) {
|
|
669
669
|
case 0:
|
|
670
670
|
if (!(typeof loadPath === "string")) {
|
|
671
|
-
_context2.next =
|
|
671
|
+
_context2.next = 11;
|
|
672
672
|
break;
|
|
673
673
|
}
|
|
674
674
|
resolvedPath = loadPath.replace("{{lng}}", locale).replace("{{ns}}", namespace);
|
|
675
675
|
content = fs.readFileSync(resolvedPath, "utf-8");
|
|
676
|
+
_context2.prev = 3;
|
|
676
677
|
json = JSON.parse(content);
|
|
677
678
|
return _context2.abrupt("return", json);
|
|
678
|
-
case
|
|
679
|
+
case 8:
|
|
680
|
+
_context2.prev = 8;
|
|
681
|
+
_context2.t0 = _context2["catch"](3);
|
|
682
|
+
throw new TranslationError("Invalid JSON in locale file for " + locale + ":" + namespace + ". Path: " + resolvedPath, locale, namespace, _context2.t0 instanceof Error ? _context2.t0 : undefined);
|
|
683
|
+
case 11:
|
|
679
684
|
return _context2.abrupt("return", loadPath(locale, namespace));
|
|
680
|
-
case
|
|
685
|
+
case 12:
|
|
681
686
|
case "end":
|
|
682
687
|
return _context2.stop();
|
|
683
688
|
}
|
|
684
|
-
}, _callee2);
|
|
689
|
+
}, _callee2, null, [[3, 8]]);
|
|
685
690
|
}));
|
|
686
691
|
return function loadLocalesFile(_x2, _x3, _x4) {
|
|
687
692
|
return _ref4.apply(this, arguments);
|
|
@@ -962,6 +967,116 @@ var checkMissing = /*#__PURE__*/function () {
|
|
|
962
967
|
};
|
|
963
968
|
}();
|
|
964
969
|
|
|
970
|
+
var removeUnusedKeys = /*#__PURE__*/function () {
|
|
971
|
+
var _ref = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(config) {
|
|
972
|
+
var globPatterns, namespaces, defaultNamespace, locales, loadPath, savePath, parser, files, extractedKeys, _iterator, _step, file, content, uniqueExtractedKeys, stats, _iterator2, _step2, namespace, usedKeysSet, _iterator3, _step3, key, pureKey, _iterator4, _step4, locale, existingKeys, existingKeysCount, cleanedKeys, removedCount, _i, _Object$entries, _Object$entries$_i, _key, value;
|
|
973
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
974
|
+
while (1) switch (_context.prev = _context.next) {
|
|
975
|
+
case 0:
|
|
976
|
+
globPatterns = config.globPatterns, namespaces = config.namespaces, defaultNamespace = config.defaultNamespace, locales = config.locales, loadPath = config.loadPath, savePath = config.savePath; // Set up the parser
|
|
977
|
+
parser = new i18nextScanner.Parser({
|
|
978
|
+
nsSeparator: false,
|
|
979
|
+
keySeparator: false
|
|
980
|
+
}); // Find all files to scan
|
|
981
|
+
_context.next = 4;
|
|
982
|
+
return glob([].concat(globPatterns, ["!**/node_modules/**"]));
|
|
983
|
+
case 4:
|
|
984
|
+
files = _context.sent;
|
|
985
|
+
// Extract all translation keys from the codebase
|
|
986
|
+
extractedKeys = [];
|
|
987
|
+
for (_iterator = _createForOfIteratorHelperLoose(files); !(_step = _iterator()).done;) {
|
|
988
|
+
file = _step.value;
|
|
989
|
+
content = fs.readFileSync(file, "utf-8");
|
|
990
|
+
parser.parseFuncFromString(content, {
|
|
991
|
+
list: ["t"]
|
|
992
|
+
}, function (key) {
|
|
993
|
+
extractedKeys.push(key);
|
|
994
|
+
});
|
|
995
|
+
}
|
|
996
|
+
// Remove duplicates
|
|
997
|
+
uniqueExtractedKeys = removeDuplicatesFromArray(extractedKeys); // Track stats for reporting
|
|
998
|
+
stats = {
|
|
999
|
+
total: 0,
|
|
1000
|
+
removed: 0
|
|
1001
|
+
}; // Process each namespace and locale
|
|
1002
|
+
_iterator2 = _createForOfIteratorHelperLoose(namespaces);
|
|
1003
|
+
case 10:
|
|
1004
|
+
if ((_step2 = _iterator2()).done) {
|
|
1005
|
+
_context.next = 37;
|
|
1006
|
+
break;
|
|
1007
|
+
}
|
|
1008
|
+
namespace = _step2.value;
|
|
1009
|
+
// Build a set of pure keys that are actually used in the codebase for this namespace
|
|
1010
|
+
usedKeysSet = new Set();
|
|
1011
|
+
for (_iterator3 = _createForOfIteratorHelperLoose(uniqueExtractedKeys); !(_step3 = _iterator3()).done;) {
|
|
1012
|
+
key = _step3.value;
|
|
1013
|
+
pureKey = getPureKey(key, namespace, namespace === defaultNamespace);
|
|
1014
|
+
if (pureKey) {
|
|
1015
|
+
usedKeysSet.add(pureKey);
|
|
1016
|
+
}
|
|
1017
|
+
}
|
|
1018
|
+
// Process each locale
|
|
1019
|
+
_iterator4 = _createForOfIteratorHelperLoose(locales);
|
|
1020
|
+
case 15:
|
|
1021
|
+
if ((_step4 = _iterator4()).done) {
|
|
1022
|
+
_context.next = 35;
|
|
1023
|
+
break;
|
|
1024
|
+
}
|
|
1025
|
+
locale = _step4.value;
|
|
1026
|
+
_context.next = 19;
|
|
1027
|
+
return loadLocalesFile(loadPath, locale, namespace);
|
|
1028
|
+
case 19:
|
|
1029
|
+
existingKeys = _context.sent;
|
|
1030
|
+
existingKeysCount = Object.keys(existingKeys).length;
|
|
1031
|
+
stats.total += existingKeysCount;
|
|
1032
|
+
// Create a new object with only the keys that are used
|
|
1033
|
+
cleanedKeys = {};
|
|
1034
|
+
removedCount = 0;
|
|
1035
|
+
for (_i = 0, _Object$entries = Object.entries(existingKeys); _i < _Object$entries.length; _i++) {
|
|
1036
|
+
_Object$entries$_i = _Object$entries[_i], _key = _Object$entries$_i[0], value = _Object$entries$_i[1];
|
|
1037
|
+
if (usedKeysSet.has(_key)) {
|
|
1038
|
+
cleanedKeys[_key] = value;
|
|
1039
|
+
} else {
|
|
1040
|
+
removedCount++;
|
|
1041
|
+
}
|
|
1042
|
+
}
|
|
1043
|
+
stats.removed += removedCount;
|
|
1044
|
+
// Only write the file if keys were removed
|
|
1045
|
+
if (!(removedCount > 0)) {
|
|
1046
|
+
_context.next = 32;
|
|
1047
|
+
break;
|
|
1048
|
+
}
|
|
1049
|
+
_context.next = 29;
|
|
1050
|
+
return writeLocalesFile(savePath, locale, namespace, cleanedKeys);
|
|
1051
|
+
case 29:
|
|
1052
|
+
console.log("\u2713 Removed " + removedCount + " unused keys from " + locale + ":" + namespace + " (" + Object.keys(cleanedKeys).length + " keys remaining)");
|
|
1053
|
+
_context.next = 33;
|
|
1054
|
+
break;
|
|
1055
|
+
case 32:
|
|
1056
|
+
console.log("No unused keys found in " + locale + ":" + namespace);
|
|
1057
|
+
case 33:
|
|
1058
|
+
_context.next = 15;
|
|
1059
|
+
break;
|
|
1060
|
+
case 35:
|
|
1061
|
+
_context.next = 10;
|
|
1062
|
+
break;
|
|
1063
|
+
case 37:
|
|
1064
|
+
if (stats.removed > 0) {
|
|
1065
|
+
console.log("\u2705 Removed " + stats.removed + " unused keys (out of " + stats.total + " total keys)");
|
|
1066
|
+
} else {
|
|
1067
|
+
console.log("\u2705 No unused keys found in the project (" + stats.total + " total keys)");
|
|
1068
|
+
}
|
|
1069
|
+
case 38:
|
|
1070
|
+
case "end":
|
|
1071
|
+
return _context.stop();
|
|
1072
|
+
}
|
|
1073
|
+
}, _callee);
|
|
1074
|
+
}));
|
|
1075
|
+
return function removeUnusedKeys(_x) {
|
|
1076
|
+
return _ref.apply(this, arguments);
|
|
1077
|
+
};
|
|
1078
|
+
}();
|
|
1079
|
+
|
|
965
1080
|
var getKeyToReplace = /*#__PURE__*/function () {
|
|
966
1081
|
var _ref = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(keys) {
|
|
967
1082
|
var keyToReplace;
|
|
@@ -1383,6 +1498,10 @@ var commands = [{
|
|
|
1383
1498
|
name: "sync",
|
|
1384
1499
|
description: "Sync the translations from the default locale to the other locales. Useful for a CI/CD pipeline or husky hook.",
|
|
1385
1500
|
action: syncLocales
|
|
1501
|
+
}, {
|
|
1502
|
+
name: "clean",
|
|
1503
|
+
description: "Remove unused translations from all locales. Useful for a CI/CD pipeline or husky hook.",
|
|
1504
|
+
action: removeUnusedKeys
|
|
1386
1505
|
}];
|
|
1387
1506
|
var _loop = function _loop() {
|
|
1388
1507
|
var command = _commands[_i];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n-magic.cjs.development.js","sources":["../src/lib/languges.ts","../src/lib/utils.ts","../src/commands/check-missing.ts","../src/commands/replace.ts","../src/commands/scan.ts","../src/commands/sync-locales.ts","../src/index.ts"],"sourcesContent":["export const languages = [\n {\n label: \"Deutsch\",\n name: \"German\",\n value: \"de\",\n },\n {\n label: \"English\",\n name: \"English\",\n value: \"en\",\n },\n {\n label: \"Español\",\n name: \"Spanish\",\n value: \"es\",\n },\n {\n label: \"Français\",\n name: \"French\",\n value: \"fr\",\n },\n {\n label: \"Dansk\",\n name: \"Danish\",\n value: \"dk\",\n },\n {\n label: \"中文\",\n name: \"Chinese\",\n value: \"cn\",\n },\n {\n label: \"Русский\",\n name: \"Russian\",\n value: \"ru\",\n },\n {\n label: \"Italiano\",\n name: \"Italian\",\n value: \"it\",\n },\n {\n label: \"Nederlands\",\n name: \"Dutch\",\n value: \"nl\",\n },\n {\n label: \"Português\",\n name: \"Portuguese\",\n value: \"pt\",\n },\n {\n label: \"Türkçe\",\n name: \"Turkish\",\n value: \"tr\",\n },\n {\n label: \"Polski\",\n name: \"Polish\",\n value: \"pl\",\n },\n {\n label: \"Українська\",\n name: \"Ukrainian\",\n value: \"ua\",\n },\n {\n label: \"Suomi\",\n name: \"Finnish\",\n value: \"fi\",\n },\n {\n label: \"Norsk\",\n name: \"Norwegian\",\n value: \"no\",\n },\n {\n label: \"Svenska\",\n name: \"Swedish\",\n value: \"sv\",\n },\n {\n label: \"Čeština\",\n name: \"Czech\",\n value: \"cz\",\n },\n {\n label: \"Ελληνικά\",\n name: \"Greek\",\n value: \"gr\",\n },\n {\n label: \"日本語\",\n name: \"Japanese\",\n value: \"jp\",\n },\n {\n label: \"한국어\",\n name: \"Korean\",\n value: \"kr\",\n },\n {\n label: \"Română\",\n name: \"Romanian\",\n value: \"ro\",\n },\n {\n label: \"Hrvatski\",\n name: \"Croatian\",\n value: \"hr\",\n },\n {\n label: \"Magyar\",\n name: \"Hungarian\",\n value: \"hu\",\n },\n {\n label: \"Slovensky\",\n name: \"Slovak\",\n value: \"sk\",\n },\n {\n label: \"हिन्दी\",\n name: \"Hindi\",\n value: \"hi\",\n },\n {\n label: \"தமிழ்\",\n name: \"Tamil\",\n value: \"ta\",\n },\n {\n label: \"Bahasa Indonesia\",\n name: \"Indonesian\",\n value: \"id\",\n },\n {\n label: \"Tiếng Việt\",\n name: \"Vietnamese\",\n value: \"vn\",\n },\n]\n","import glob from \"fast-glob\"\nimport { Parser } from \"i18next-scanner\"\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport type OpenAI from \"openai\"\nimport prompts from \"prompts\"\nimport { languages } from \"./languges\"\nimport type { Configuration } from \"./types\"\n\nexport const loadConfig = ({\n configPath = \"i18n-magic.js\",\n}: { configPath: string }) => {\n const filePath = path.join(process.cwd(), configPath)\n\n if (!fs.existsSync(filePath)) {\n console.error(\"Config file does not exist:\", filePath)\n process.exit(1)\n }\n\n try {\n const config = require(filePath)\n // Validate config if needed\n return config\n } catch (error) {\n console.error(\"Error while loading config:\", error)\n process.exit(1)\n }\n}\n\nexport function removeDuplicatesFromArray<T>(arr: T[]): T[] {\n return arr.filter((item, index) => arr.indexOf(item) === index)\n}\n\nexport const translateKey = async ({\n inputLanguage,\n context,\n object,\n openai,\n outputLanguage,\n model,\n}: {\n object: Record<string, string>\n context: string\n inputLanguage: string\n outputLanguage: string\n model: string\n openai: OpenAI\n}) => {\n // Split object into chunks of 100 keys\n const entries = Object.entries(object)\n const chunks: Array<[string, string][]> = []\n\n for (let i = 0; i < entries.length; i += 100) {\n chunks.push(entries.slice(i, i + 100))\n }\n\n let result: Record<string, string> = {}\n\n const existingInput = languages.find((l) => l.value === inputLanguage)\n const existingOutput = languages.find((l) => l.value === outputLanguage)\n\n const input = existingInput?.label || inputLanguage\n const output = existingOutput?.label || outputLanguage\n\n // Translate each chunk\n for (const chunk of chunks) {\n const chunkObject = Object.fromEntries(chunk)\n const completion = await openai.beta.chat.completions.parse({\n model,\n messages: [\n {\n content: `You are a bot that translates the values of a locales JSON. ${\n context\n ? `The user provided some additional context or guidelines about what to fill in the blanks: \\\"${context}\\\". `\n : \"\"\n }The user provides you a JSON with a field named \"inputLanguage\", which defines the language the values of the JSON are defined in. It also has a field named \"outputLanguage\", which defines the language you should translate the values to. The last field is named \"data\", which includes the object with the values to translate. The keys of the values should never be changed. You output only a JSON, which has the same keys as the input, but with translated values. I give you an example input: {\"inputLanguage\": \"English\", outputLanguage: \"German\", \"keys\": {\"hello\": \"Hello\", \"world\": \"World\"}}. The output should be {\"hello\": \"Hallo\", \"world\": \"Welt\"}.`,\n role: \"system\",\n },\n {\n content: JSON.stringify({\n inputLanguage: input,\n outputLanguage: output,\n data: chunkObject,\n }),\n role: \"user\",\n },\n ],\n response_format: {\n type: \"json_object\",\n },\n })\n\n const translatedChunk = JSON.parse(\n completion.choices[0].message.content,\n ) as Record<string, string>\n\n // Merge translated chunk with result\n result = { ...result, ...translatedChunk }\n\n // Optional: Add a small delay between chunks to avoid rate limiting\n await new Promise((resolve) => setTimeout(resolve, 100))\n }\n\n return result\n}\n\nexport const loadLocalesFile = async (\n loadPath:\n | string\n | ((locale: string, namespace: string) => Promise<Record<string, string>>),\n locale: string,\n namespace: string,\n) => {\n if (typeof loadPath === \"string\") {\n const resolvedPath = loadPath\n .replace(\"{{lng}}\", locale)\n .replace(\"{{ns}}\", namespace)\n\n const content = fs.readFileSync(resolvedPath, \"utf-8\")\n const json = JSON.parse(content)\n\n return json as Record<string, string>\n }\n\n return loadPath(locale, namespace)\n}\n\nexport const writeLocalesFile = async (\n savePath:\n | string\n | ((\n locale: string,\n namespace: string,\n data: Record<string, string>,\n ) => Promise<void>),\n locale: string,\n namespace: string,\n data: Record<string, string>,\n) => {\n if (typeof savePath === \"string\") {\n const resolvedSavePath = savePath\n .replace(\"{{lng}}\", locale)\n .replace(\"{{ns}}\", namespace)\n\n fs.writeFileSync(resolvedSavePath, JSON.stringify(data, null, 2))\n\n return\n }\n\n await savePath(locale, namespace, data)\n}\n\nexport const getPureKey = (\n key: string,\n namespace?: string,\n isDefault?: boolean,\n) => {\n const splitted = key.split(\":\")\n\n if (splitted.length === 1) {\n if (isDefault) {\n return key\n }\n\n return null\n }\n\n if (splitted[0] === namespace) {\n return splitted[1]\n }\n\n return null\n}\n\nexport const getMissingKeys = async ({\n globPatterns,\n namespaces,\n defaultNamespace,\n defaultLocale,\n loadPath,\n}: Configuration) => {\n const parser = new Parser({\n nsSeparator: false,\n keySeparator: false,\n })\n\n const files = await glob([...globPatterns, \"!**/node_modules/**\"])\n\n const keys = []\n\n for (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\")\n parser.parseFuncFromString(content, { list: [\"t\"] }, (key: string) => {\n keys.push(key)\n })\n }\n\n const uniqueKeys = removeDuplicatesFromArray(keys)\n\n const newKeys = []\n\n for (const namespace of namespaces) {\n const existingKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n\n console.log(Object.keys(existingKeys).length, \"existing keys\")\n\n for (const key of uniqueKeys) {\n const pureKey = getPureKey(key, namespace, namespace === defaultNamespace)\n\n if (!pureKey) {\n continue\n }\n\n if (!existingKeys[pureKey]) {\n newKeys.push({ key: pureKey, namespace })\n }\n }\n }\n\n return newKeys\n}\n\nexport const getTextInput = async (prompt: string) => {\n const input = await prompts({\n name: \"value\",\n type: \"text\",\n message: prompt,\n onState: (state) => {\n if (state.aborted) {\n process.nextTick(() => {\n process.exit(0)\n })\n }\n },\n })\n\n return input.value as string\n}\n\nexport const checkAllKeysExist = async ({\n namespaces,\n defaultLocale,\n loadPath,\n locales,\n context,\n openai,\n savePath,\n disableTranslation,\n model,\n}: Configuration) => {\n if (disableTranslation) {\n return\n }\n\n for (const namespace of namespaces) {\n const defaultLocaleKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n\n for (const locale of locales) {\n if (locale === defaultLocale) continue\n\n const localeKeys = await loadLocalesFile(loadPath, locale, namespace)\n const missingKeys: Record<string, string> = {}\n\n // Check which keys from default locale are missing in current locale\n for (const [key, value] of Object.entries(defaultLocaleKeys)) {\n if (!localeKeys[key]) {\n missingKeys[key] = value\n }\n }\n\n // If there are missing keys, translate them\n if (Object.keys(missingKeys).length > 0) {\n console.log(\n `Found ${Object.keys(missingKeys).length} missing keys in ${locale} (namespace: ${namespace})`,\n )\n\n const translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: missingKeys,\n openai,\n model,\n })\n\n // Merge translated values with existing ones\n const updatedLocaleKeys = {\n ...localeKeys,\n ...translatedValues,\n }\n\n // Save the updated translations\n writeLocalesFile(savePath, locale, namespace, updatedLocaleKeys)\n console.log(\n `✓ Translated and saved missing keys for ${locale} (namespace: ${namespace})`,\n )\n }\n }\n }\n}\n\nexport class TranslationError extends Error {\n constructor(\n message: string,\n public locale?: string,\n public namespace?: string,\n public cause?: Error,\n ) {\n super(message)\n this.name = \"TranslationError\"\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport { getMissingKeys } from \"../lib/utils\"\n\nexport const checkMissing = async (config: Configuration) => {\n const newKeys = await getMissingKeys(config)\n\n if (newKeys.length > 0) {\n console.error(\"Error: Missing translations found!\")\n process.exit(1)\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n getTextInput,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nconst getKeyToReplace = async (keys: Record<string, string>) => {\n const keyToReplace = await getTextInput(\n \"Enter the key to replace the translation for: \",\n )\n\n if (!keys[keyToReplace]) {\n console.log(`The key \"${keyToReplace}\" does not exist.`)\n return await getKeyToReplace(keys)\n }\n\n console.log(`The key \"${keyToReplace}\" exists.`)\n return keyToReplace\n}\n\nexport const replaceTranslation = async (\n config: Configuration,\n key?: string,\n) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n defaultNamespace,\n namespaces,\n locales,\n globPatterns,\n context,\n openai,\n } = config\n\n const keys = await loadLocalesFile(\n config.loadPath,\n config.defaultLocale,\n config.defaultNamespace,\n )\n\n let keyToReplace: string\n\n if (key) {\n if (keys[key]) {\n keyToReplace = key\n console.log(`The key \"${keyToReplace}\" exists.`)\n } else {\n console.log(`The key \"${key}\" does not exist.`)\n keyToReplace = await getKeyToReplace(keys)\n }\n } else {\n keyToReplace = await getKeyToReplace(keys)\n }\n\n console.log(\n `The current translation in ${defaultLocale} for \"${keyToReplace}\" is \"${keys[keyToReplace]}\".`,\n )\n\n const newTranslation = await getTextInput(\"Enter the new translation: \")\n\n for (const locale of locales) {\n let newValue = \"\"\n if (locale === defaultLocale) {\n newValue = newTranslation\n } else {\n const translation = await translateKey({\n context,\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n object: {\n [keyToReplace]: newTranslation,\n },\n openai,\n model: config.model,\n })\n\n newValue = translation[keyToReplace]\n }\n\n const existingKeys = await loadLocalesFile(\n loadPath,\n locale,\n defaultNamespace,\n )\n\n existingKeys[keyToReplace] = newValue\n\n writeLocalesFile(savePath, locale, defaultNamespace, existingKeys)\n\n console.log(\n `The new translation for \"${keyToReplace}\" in ${locale} is \"${newValue}\".`,\n )\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n checkAllKeysExist,\n getMissingKeys,\n getTextInput,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const translateMissing = async (config: Configuration) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n namespaces,\n locales,\n context,\n openai,\n disableTranslation,\n } = config\n\n const newKeys = await getMissingKeys(config)\n\n if (newKeys.length === 0) {\n console.log(\"No new keys found.\")\n\n await checkAllKeysExist(config)\n\n return\n }\n\n console.log(\n `${newKeys.length} keys are missing. Please provide the values for the following keys in ${defaultLocale}:`,\n )\n\n const newKeysWithDefaultLocale = []\n\n for (const newKey of newKeys) {\n const answer = await getTextInput(newKey.key)\n\n newKeysWithDefaultLocale.push({\n key: newKey.key,\n namespace: newKey.namespace,\n value: answer,\n })\n }\n\n const newKeysObject = newKeysWithDefaultLocale.reduce((prev, next) => {\n prev[next.key] = next.value\n\n return prev\n }, {})\n\n const allLocales = disableTranslation ? [defaultLocale] : locales\n\n for (const locale of allLocales) {\n let translatedValues = {}\n\n if (locale === defaultLocale) {\n translatedValues = newKeysObject\n } else {\n translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: newKeysObject,\n openai,\n model: config.model,\n })\n }\n\n for (const namespace of namespaces) {\n const existingKeys = await loadLocalesFile(loadPath, locale, namespace)\n\n const relevantKeys = newKeysWithDefaultLocale.filter(\n (key) => key.namespace === namespace,\n )\n\n if (relevantKeys.length === 0) {\n continue\n }\n\n for (const key of relevantKeys) {\n existingKeys[key.key] = translatedValues[key.key]\n }\n\n writeLocalesFile(savePath, locale, namespace, existingKeys)\n }\n }\n\n await checkAllKeysExist(config)\n\n console.log(`Successfully translated ${newKeys.length} keys.`)\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n TranslationError,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const syncLocales = async (config: Configuration) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n namespaces,\n locales,\n context,\n openai,\n } = config\n\n try {\n for (const namespace of namespaces) {\n let defaultLocaleKeys: Record<string, string>\n\n try {\n defaultLocaleKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n } catch (error) {\n throw new TranslationError(\n `Failed to load default locale file for namespace \"${namespace}\"`,\n defaultLocale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n for (const locale of locales) {\n if (locale === defaultLocale) continue\n\n let localeKeys: Record<string, string>\n try {\n localeKeys = await loadLocalesFile(loadPath, locale, namespace)\n } catch (error) {\n console.warn(\n `Warning: Could not load locale file for ${locale} (namespace: ${namespace}). Creating new file.`,\n )\n localeKeys = {}\n }\n\n const missingKeys: Record<string, string> = {}\n\n // Check which keys from default locale are missing in current locale\n for (const [key, value] of Object.entries(defaultLocaleKeys)) {\n if (!localeKeys[key]) {\n missingKeys[key] = value\n }\n }\n\n // If there are missing keys, translate them\n if (Object.keys(missingKeys).length > 0) {\n console.log(\n `Found ${Object.keys(missingKeys).length} missing keys in ${locale} (namespace: ${namespace})`,\n )\n\n let translatedValues: Record<string, string>\n try {\n translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: missingKeys,\n openai,\n model: config.model,\n })\n } catch (error) {\n throw new TranslationError(\n `Failed to translate keys for locale \"${locale}\" (namespace: ${namespace})`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n // Merge translated values with existing ones\n const updatedLocaleKeys = {\n ...localeKeys,\n ...translatedValues,\n }\n\n try {\n await writeLocalesFile(\n savePath,\n locale,\n namespace,\n updatedLocaleKeys,\n )\n } catch (error) {\n throw new TranslationError(\n `Failed to save translations for locale \"${locale}\" (namespace: ${namespace})`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n console.log(\n `Successfully translated and saved ${Object.keys(missingKeys).length} keys for ${locale} (namespace: ${namespace})`,\n )\n } else {\n console.log(\n `No missing keys found for ${locale} (namespace: ${namespace})`,\n )\n }\n }\n }\n } catch (error) {\n if (error instanceof TranslationError) {\n throw error\n }\n throw new TranslationError(\n \"An unexpected error occurred during translation\",\n undefined,\n undefined,\n error instanceof Error ? error : undefined,\n )\n }\n}\n","import { Command } from \"commander\"\nimport dotenv from \"dotenv\"\nimport OpenAI from \"openai\"\nimport { checkMissing } from \"./commands/check-missing\"\nimport { replaceTranslation } from \"./commands/replace\"\nimport { translateMissing } from \"./commands/scan\"\nimport { syncLocales } from \"./commands/sync-locales\"\nimport type { CommandType, Configuration } from \"./lib/types\"\nimport { loadConfig } from \"./lib/utils\"\n\n// Only run CLI initialization when this file is executed directly\n\nconst program = new Command()\n\nprogram\n .name(\"i18n-magic\")\n .description(\n \"CLI to help you manage your locales JSON with translations, replacements, etc. with OpenAI.\",\n )\n .version(\"0.2.0\")\n .option(\"-c, --config <path>\", \"path to config file\")\n .option(\"-e, --env <path>\", \"path to .env file\")\n\nconst commands: CommandType[] = [\n {\n name: \"scan\",\n description:\n \"Scan for missing translations, get prompted for each, translate it to the other locales and save it to the JSON file.\",\n action: translateMissing,\n },\n {\n name: \"replace\",\n description:\n \"Replace a translation based on the key, and translate it to the other locales and save it to the JSON file.\",\n action: replaceTranslation,\n },\n {\n name: \"check-missing\",\n description:\n \"Check if there are any missing translations. Useful for a CI/CD pipeline or husky hook.\",\n action: checkMissing,\n },\n {\n name: \"sync\",\n description:\n \"Sync the translations from the default locale to the other locales. Useful for a CI/CD pipeline or husky hook.\",\n action: syncLocales,\n },\n]\n\nfor (const command of commands) {\n const cmd = program.command(command.name).description(command.description)\n\n // Add key option to replace command\n if (command.name === \"replace\") {\n cmd\n .option(\"-k, --key <key>\", \"translation key to replace\")\n .allowExcessArguments(true)\n .argument(\"[key]\", \"translation key to replace\")\n }\n\n cmd.action(async (arg, options) => {\n const res = dotenv.config({\n path: program.opts().env || \".env\",\n })\n\n const config: Configuration = await loadConfig({\n configPath: program.opts().config,\n })\n\n const isGemini = (config.model as string)?.includes(\"gemini\")\n\n // Get API key from environment or config\n const openaiKey = res.parsed.OPENAI_API_KEY || config.OPENAI_API_KEY\n const geminiKey = res.parsed.GEMINI_API_KEY || config.GEMINI_API_KEY\n\n // Select appropriate key based on model type\n const key = isGemini ? geminiKey : openaiKey\n\n if (!key) {\n const keyType = isGemini ? \"GEMINI_API_KEY\" : \"OPENAI_API_KEY\"\n console.error(\n `Please provide a${isGemini ? \" Gemini\" : \"n OpenAI\"} API key in your .env file or config, called ${keyType}.`,\n )\n process.exit(1)\n }\n\n const openai = new OpenAI({\n apiKey: key,\n ...(isGemini && {\n baseURL: \"https://generativelanguage.googleapis.com/v1beta/openai/\",\n }),\n })\n\n // For replace command, check for key in argument or option\n if (command.name === \"replace\") {\n // If key is provided as positional argument, use that first\n const keyToUse = typeof arg === \"string\" ? arg : options.key\n command.action({ ...config, openai }, keyToUse)\n } else {\n command.action({ ...config, openai })\n }\n })\n}\n\nprogram.parse(process.argv)\n"],"names":["languages","label","name","value","loadConfig","_ref","_ref$configPath","configPath","filePath","path","join","process","cwd","fs","existsSync","console","error","exit","config","require","removeDuplicatesFromArray","arr","filter","item","index","indexOf","translateKey","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref2","inputLanguage","context","object","openai","outputLanguage","model","entries","chunks","i","result","existingInput","existingOutput","input","output","_i","_chunks","chunk","chunkObject","completion","translatedChunk","wrap","_callee$","_context","prev","next","Object","length","push","slice","find","l","fromEntries","beta","chat","completions","parse","messages","content","role","JSON","stringify","data","response_format","type","sent","choices","message","_extends","Promise","resolve","setTimeout","abrupt","stop","_x","apply","arguments","loadLocalesFile","_ref4","_callee2","loadPath","locale","namespace","resolvedPath","json","_callee2$","_context2","replace","readFileSync","_x2","_x3","_x4","writeLocalesFile","_ref5","_callee3","savePath","resolvedSavePath","_callee3$","_context3","writeFileSync","_x5","_x6","_x7","_x8","getPureKey","key","isDefault","splitted","split","getMissingKeys","_ref7","_callee4","_ref6","globPatterns","namespaces","defaultNamespace","defaultLocale","parser","files","keys","_iterator","_step","file","uniqueKeys","newKeys","_iterator2","_step2","existingKeys","_iterator3","_step3","pureKey","_callee4$","_context4","Parser","nsSeparator","keySeparator","glob","concat","_createForOfIteratorHelperLoose","done","parseFuncFromString","list","log","_x9","getTextInput","_ref8","_callee5","prompt","_callee5$","_context5","prompts","onState","state","aborted","nextTick","_x10","checkAllKeysExist","_ref10","_callee6","_ref9","locales","disableTranslation","_iterator4","_step4","defaultLocaleKeys","_iterator5","_step5","localeKeys","missingKeys","_i2","_Object$entries","_Object$entries$_i","translatedValues","updatedLocaleKeys","_callee6$","_context6","_x11","TranslationError","_Error","cause","_this","call","_inheritsLoose","_wrapNativeSuper","Error","checkMissing","getKeyToReplace","keyToReplace","replaceTranslation","newTranslation","newValue","_object","translation","translateMissing","newKeysWithDefaultLocale","newKey","answer","newKeysObject","allLocales","_loop","reduce","relevantKeys","_loop$","delegateYield","t0","syncLocales","undefined","t1","warn","t2","t3","t4","program","Command","description","version","option","commands","action","command","_commands","cmd","allowExcessArguments","argument","arg","options","_config$model","res","isGemini","openaiKey","geminiKey","keyType","keyToUse","dotenv","opts","env","includes","parsed","OPENAI_API_KEY","GEMINI_API_KEY","OpenAI","apiKey","baseURL","argv"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"i18n-magic.cjs.development.js","sources":["../src/lib/languges.ts","../src/lib/utils.ts","../src/commands/check-missing.ts","../src/commands/clean.ts","../src/commands/replace.ts","../src/commands/scan.ts","../src/commands/sync-locales.ts","../src/index.ts"],"sourcesContent":["export const languages = [\n {\n label: \"Deutsch\",\n name: \"German\",\n value: \"de\",\n },\n {\n label: \"English\",\n name: \"English\",\n value: \"en\",\n },\n {\n label: \"Español\",\n name: \"Spanish\",\n value: \"es\",\n },\n {\n label: \"Français\",\n name: \"French\",\n value: \"fr\",\n },\n {\n label: \"Dansk\",\n name: \"Danish\",\n value: \"dk\",\n },\n {\n label: \"中文\",\n name: \"Chinese\",\n value: \"cn\",\n },\n {\n label: \"Русский\",\n name: \"Russian\",\n value: \"ru\",\n },\n {\n label: \"Italiano\",\n name: \"Italian\",\n value: \"it\",\n },\n {\n label: \"Nederlands\",\n name: \"Dutch\",\n value: \"nl\",\n },\n {\n label: \"Português\",\n name: \"Portuguese\",\n value: \"pt\",\n },\n {\n label: \"Türkçe\",\n name: \"Turkish\",\n value: \"tr\",\n },\n {\n label: \"Polski\",\n name: \"Polish\",\n value: \"pl\",\n },\n {\n label: \"Українська\",\n name: \"Ukrainian\",\n value: \"ua\",\n },\n {\n label: \"Suomi\",\n name: \"Finnish\",\n value: \"fi\",\n },\n {\n label: \"Norsk\",\n name: \"Norwegian\",\n value: \"no\",\n },\n {\n label: \"Svenska\",\n name: \"Swedish\",\n value: \"sv\",\n },\n {\n label: \"Čeština\",\n name: \"Czech\",\n value: \"cz\",\n },\n {\n label: \"Ελληνικά\",\n name: \"Greek\",\n value: \"gr\",\n },\n {\n label: \"日本語\",\n name: \"Japanese\",\n value: \"jp\",\n },\n {\n label: \"한국어\",\n name: \"Korean\",\n value: \"kr\",\n },\n {\n label: \"Română\",\n name: \"Romanian\",\n value: \"ro\",\n },\n {\n label: \"Hrvatski\",\n name: \"Croatian\",\n value: \"hr\",\n },\n {\n label: \"Magyar\",\n name: \"Hungarian\",\n value: \"hu\",\n },\n {\n label: \"Slovensky\",\n name: \"Slovak\",\n value: \"sk\",\n },\n {\n label: \"हिन्दी\",\n name: \"Hindi\",\n value: \"hi\",\n },\n {\n label: \"தமிழ்\",\n name: \"Tamil\",\n value: \"ta\",\n },\n {\n label: \"Bahasa Indonesia\",\n name: \"Indonesian\",\n value: \"id\",\n },\n {\n label: \"Tiếng Việt\",\n name: \"Vietnamese\",\n value: \"vn\",\n },\n]\n","import glob from \"fast-glob\"\nimport { Parser } from \"i18next-scanner\"\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport type OpenAI from \"openai\"\nimport prompts from \"prompts\"\nimport { languages } from \"./languges\"\nimport type { Configuration } from \"./types\"\n\nexport const loadConfig = ({\n configPath = \"i18n-magic.js\",\n}: { configPath: string }) => {\n const filePath = path.join(process.cwd(), configPath)\n\n if (!fs.existsSync(filePath)) {\n console.error(\"Config file does not exist:\", filePath)\n process.exit(1)\n }\n\n try {\n const config = require(filePath)\n // Validate config if needed\n return config\n } catch (error) {\n console.error(\"Error while loading config:\", error)\n process.exit(1)\n }\n}\n\nexport function removeDuplicatesFromArray<T>(arr: T[]): T[] {\n return arr.filter((item, index) => arr.indexOf(item) === index)\n}\n\nexport const translateKey = async ({\n inputLanguage,\n context,\n object,\n openai,\n outputLanguage,\n model,\n}: {\n object: Record<string, string>\n context: string\n inputLanguage: string\n outputLanguage: string\n model: string\n openai: OpenAI\n}) => {\n // Split object into chunks of 100 keys\n const entries = Object.entries(object)\n const chunks: Array<[string, string][]> = []\n\n for (let i = 0; i < entries.length; i += 100) {\n chunks.push(entries.slice(i, i + 100))\n }\n\n let result: Record<string, string> = {}\n\n const existingInput = languages.find((l) => l.value === inputLanguage)\n const existingOutput = languages.find((l) => l.value === outputLanguage)\n\n const input = existingInput?.label || inputLanguage\n const output = existingOutput?.label || outputLanguage\n\n // Translate each chunk\n for (const chunk of chunks) {\n const chunkObject = Object.fromEntries(chunk)\n const completion = await openai.beta.chat.completions.parse({\n model,\n messages: [\n {\n content: `You are a bot that translates the values of a locales JSON. ${\n context\n ? `The user provided some additional context or guidelines about what to fill in the blanks: \\\"${context}\\\". `\n : \"\"\n }The user provides you a JSON with a field named \"inputLanguage\", which defines the language the values of the JSON are defined in. It also has a field named \"outputLanguage\", which defines the language you should translate the values to. The last field is named \"data\", which includes the object with the values to translate. The keys of the values should never be changed. You output only a JSON, which has the same keys as the input, but with translated values. I give you an example input: {\"inputLanguage\": \"English\", outputLanguage: \"German\", \"keys\": {\"hello\": \"Hello\", \"world\": \"World\"}}. The output should be {\"hello\": \"Hallo\", \"world\": \"Welt\"}.`,\n role: \"system\",\n },\n {\n content: JSON.stringify({\n inputLanguage: input,\n outputLanguage: output,\n data: chunkObject,\n }),\n role: \"user\",\n },\n ],\n response_format: {\n type: \"json_object\",\n },\n })\n\n const translatedChunk = JSON.parse(\n completion.choices[0].message.content,\n ) as Record<string, string>\n\n // Merge translated chunk with result\n result = { ...result, ...translatedChunk }\n\n // Optional: Add a small delay between chunks to avoid rate limiting\n await new Promise((resolve) => setTimeout(resolve, 100))\n }\n\n return result\n}\n\nexport const loadLocalesFile = async (\n loadPath:\n | string\n | ((locale: string, namespace: string) => Promise<Record<string, string>>),\n locale: string,\n namespace: string,\n) => {\n if (typeof loadPath === \"string\") {\n const resolvedPath = loadPath\n .replace(\"{{lng}}\", locale)\n .replace(\"{{ns}}\", namespace)\n\n const content = fs.readFileSync(resolvedPath, \"utf-8\")\n try {\n const json = JSON.parse(content)\n return json as Record<string, string>\n } catch (error) {\n throw new TranslationError(\n `Invalid JSON in locale file for ${locale}:${namespace}. Path: ${resolvedPath}`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n }\n\n return loadPath(locale, namespace)\n}\n\nexport const writeLocalesFile = async (\n savePath:\n | string\n | ((\n locale: string,\n namespace: string,\n data: Record<string, string>,\n ) => Promise<void>),\n locale: string,\n namespace: string,\n data: Record<string, string>,\n) => {\n if (typeof savePath === \"string\") {\n const resolvedSavePath = savePath\n .replace(\"{{lng}}\", locale)\n .replace(\"{{ns}}\", namespace)\n\n fs.writeFileSync(resolvedSavePath, JSON.stringify(data, null, 2))\n\n return\n }\n\n await savePath(locale, namespace, data)\n}\n\nexport const getPureKey = (\n key: string,\n namespace?: string,\n isDefault?: boolean,\n) => {\n const splitted = key.split(\":\")\n\n if (splitted.length === 1) {\n if (isDefault) {\n return key\n }\n\n return null\n }\n\n if (splitted[0] === namespace) {\n return splitted[1]\n }\n\n return null\n}\n\nexport const getMissingKeys = async ({\n globPatterns,\n namespaces,\n defaultNamespace,\n defaultLocale,\n loadPath,\n}: Configuration) => {\n const parser = new Parser({\n nsSeparator: false,\n keySeparator: false,\n })\n\n const files = await glob([...globPatterns, \"!**/node_modules/**\"])\n\n const keys = []\n\n for (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\")\n parser.parseFuncFromString(content, { list: [\"t\"] }, (key: string) => {\n keys.push(key)\n })\n }\n\n const uniqueKeys = removeDuplicatesFromArray(keys)\n\n const newKeys = []\n\n for (const namespace of namespaces) {\n const existingKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n\n console.log(Object.keys(existingKeys).length, \"existing keys\")\n\n for (const key of uniqueKeys) {\n const pureKey = getPureKey(key, namespace, namespace === defaultNamespace)\n\n if (!pureKey) {\n continue\n }\n\n if (!existingKeys[pureKey]) {\n newKeys.push({ key: pureKey, namespace })\n }\n }\n }\n\n return newKeys\n}\n\nexport const getTextInput = async (prompt: string) => {\n const input = await prompts({\n name: \"value\",\n type: \"text\",\n message: prompt,\n onState: (state) => {\n if (state.aborted) {\n process.nextTick(() => {\n process.exit(0)\n })\n }\n },\n })\n\n return input.value as string\n}\n\nexport const checkAllKeysExist = async ({\n namespaces,\n defaultLocale,\n loadPath,\n locales,\n context,\n openai,\n savePath,\n disableTranslation,\n model,\n}: Configuration) => {\n if (disableTranslation) {\n return\n }\n\n for (const namespace of namespaces) {\n const defaultLocaleKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n\n for (const locale of locales) {\n if (locale === defaultLocale) continue\n\n const localeKeys = await loadLocalesFile(loadPath, locale, namespace)\n const missingKeys: Record<string, string> = {}\n\n // Check which keys from default locale are missing in current locale\n for (const [key, value] of Object.entries(defaultLocaleKeys)) {\n if (!localeKeys[key]) {\n missingKeys[key] = value\n }\n }\n\n // If there are missing keys, translate them\n if (Object.keys(missingKeys).length > 0) {\n console.log(\n `Found ${Object.keys(missingKeys).length} missing keys in ${locale} (namespace: ${namespace})`,\n )\n\n const translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: missingKeys,\n openai,\n model,\n })\n\n // Merge translated values with existing ones\n const updatedLocaleKeys = {\n ...localeKeys,\n ...translatedValues,\n }\n\n // Save the updated translations\n writeLocalesFile(savePath, locale, namespace, updatedLocaleKeys)\n console.log(\n `✓ Translated and saved missing keys for ${locale} (namespace: ${namespace})`,\n )\n }\n }\n }\n}\n\nexport class TranslationError extends Error {\n constructor(\n message: string,\n public locale?: string,\n public namespace?: string,\n public cause?: Error,\n ) {\n super(message)\n this.name = \"TranslationError\"\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport { getMissingKeys } from \"../lib/utils\"\n\nexport const checkMissing = async (config: Configuration) => {\n const newKeys = await getMissingKeys(config)\n\n if (newKeys.length > 0) {\n console.error(\"Error: Missing translations found!\")\n process.exit(1)\n }\n}\n","import glob from \"fast-glob\"\nimport { Parser } from \"i18next-scanner\"\nimport fs from \"node:fs\"\nimport type { Configuration } from \"../lib/types\"\nimport {\n getPureKey,\n loadLocalesFile,\n removeDuplicatesFromArray,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const removeUnusedKeys = async (config: Configuration) => {\n const {\n globPatterns,\n namespaces,\n defaultNamespace,\n locales,\n loadPath,\n savePath,\n } = config\n\n // Set up the parser\n const parser = new Parser({\n nsSeparator: false,\n keySeparator: false,\n })\n\n // Find all files to scan\n const files = await glob([...globPatterns, \"!**/node_modules/**\"])\n\n // Extract all translation keys from the codebase\n const extractedKeys = []\n for (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\")\n parser.parseFuncFromString(content, { list: [\"t\"] }, (key: string) => {\n extractedKeys.push(key)\n })\n }\n\n // Remove duplicates\n const uniqueExtractedKeys = removeDuplicatesFromArray(extractedKeys)\n\n // Track stats for reporting\n const stats = {\n total: 0,\n removed: 0,\n }\n\n // Process each namespace and locale\n for (const namespace of namespaces) {\n // Build a set of pure keys that are actually used in the codebase for this namespace\n const usedKeysSet = new Set<string>()\n\n for (const key of uniqueExtractedKeys) {\n const pureKey = getPureKey(key, namespace, namespace === defaultNamespace)\n if (pureKey) {\n usedKeysSet.add(pureKey)\n }\n }\n\n // Process each locale\n for (const locale of locales) {\n // Load existing keys for this locale and namespace\n const existingKeys = await loadLocalesFile(loadPath, locale, namespace)\n const existingKeysCount = Object.keys(existingKeys).length\n stats.total += existingKeysCount\n\n // Create a new object with only the keys that are used\n const cleanedKeys: Record<string, string> = {}\n let removedCount = 0\n\n for (const [key, value] of Object.entries(existingKeys)) {\n if (usedKeysSet.has(key)) {\n cleanedKeys[key] = value\n } else {\n removedCount++\n }\n }\n\n stats.removed += removedCount\n\n // Only write the file if keys were removed\n if (removedCount > 0) {\n await writeLocalesFile(savePath, locale, namespace, cleanedKeys)\n console.log(\n `✓ Removed ${removedCount} unused keys from ${locale}:${namespace} (${\n Object.keys(cleanedKeys).length\n } keys remaining)`,\n )\n } else {\n console.log(`No unused keys found in ${locale}:${namespace}`)\n }\n }\n }\n\n if (stats.removed > 0) {\n console.log(\n `✅ Removed ${stats.removed} unused keys (out of ${stats.total} total keys)`,\n )\n } else {\n console.log(\n `✅ No unused keys found in the project (${stats.total} total keys)`,\n )\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n getTextInput,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nconst getKeyToReplace = async (keys: Record<string, string>) => {\n const keyToReplace = await getTextInput(\n \"Enter the key to replace the translation for: \",\n )\n\n if (!keys[keyToReplace]) {\n console.log(`The key \"${keyToReplace}\" does not exist.`)\n return await getKeyToReplace(keys)\n }\n\n console.log(`The key \"${keyToReplace}\" exists.`)\n return keyToReplace\n}\n\nexport const replaceTranslation = async (\n config: Configuration,\n key?: string,\n) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n defaultNamespace,\n namespaces,\n locales,\n globPatterns,\n context,\n openai,\n } = config\n\n const keys = await loadLocalesFile(\n config.loadPath,\n config.defaultLocale,\n config.defaultNamespace,\n )\n\n let keyToReplace: string\n\n if (key) {\n if (keys[key]) {\n keyToReplace = key\n console.log(`The key \"${keyToReplace}\" exists.`)\n } else {\n console.log(`The key \"${key}\" does not exist.`)\n keyToReplace = await getKeyToReplace(keys)\n }\n } else {\n keyToReplace = await getKeyToReplace(keys)\n }\n\n console.log(\n `The current translation in ${defaultLocale} for \"${keyToReplace}\" is \"${keys[keyToReplace]}\".`,\n )\n\n const newTranslation = await getTextInput(\"Enter the new translation: \")\n\n for (const locale of locales) {\n let newValue = \"\"\n if (locale === defaultLocale) {\n newValue = newTranslation\n } else {\n const translation = await translateKey({\n context,\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n object: {\n [keyToReplace]: newTranslation,\n },\n openai,\n model: config.model,\n })\n\n newValue = translation[keyToReplace]\n }\n\n const existingKeys = await loadLocalesFile(\n loadPath,\n locale,\n defaultNamespace,\n )\n\n existingKeys[keyToReplace] = newValue\n\n writeLocalesFile(savePath, locale, defaultNamespace, existingKeys)\n\n console.log(\n `The new translation for \"${keyToReplace}\" in ${locale} is \"${newValue}\".`,\n )\n }\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n checkAllKeysExist,\n getMissingKeys,\n getTextInput,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const translateMissing = async (config: Configuration) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n namespaces,\n locales,\n context,\n openai,\n disableTranslation,\n } = config\n\n const newKeys = await getMissingKeys(config)\n\n if (newKeys.length === 0) {\n console.log(\"No new keys found.\")\n\n await checkAllKeysExist(config)\n\n return\n }\n\n console.log(\n `${newKeys.length} keys are missing. Please provide the values for the following keys in ${defaultLocale}:`,\n )\n\n const newKeysWithDefaultLocale = []\n\n for (const newKey of newKeys) {\n const answer = await getTextInput(newKey.key)\n\n newKeysWithDefaultLocale.push({\n key: newKey.key,\n namespace: newKey.namespace,\n value: answer,\n })\n }\n\n const newKeysObject = newKeysWithDefaultLocale.reduce((prev, next) => {\n prev[next.key] = next.value\n\n return prev\n }, {})\n\n const allLocales = disableTranslation ? [defaultLocale] : locales\n\n for (const locale of allLocales) {\n let translatedValues = {}\n\n if (locale === defaultLocale) {\n translatedValues = newKeysObject\n } else {\n translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: newKeysObject,\n openai,\n model: config.model,\n })\n }\n\n for (const namespace of namespaces) {\n const existingKeys = await loadLocalesFile(loadPath, locale, namespace)\n\n const relevantKeys = newKeysWithDefaultLocale.filter(\n (key) => key.namespace === namespace,\n )\n\n if (relevantKeys.length === 0) {\n continue\n }\n\n for (const key of relevantKeys) {\n existingKeys[key.key] = translatedValues[key.key]\n }\n\n writeLocalesFile(savePath, locale, namespace, existingKeys)\n }\n }\n\n await checkAllKeysExist(config)\n\n console.log(`Successfully translated ${newKeys.length} keys.`)\n}\n","import type { Configuration } from \"../lib/types\"\nimport {\n TranslationError,\n loadLocalesFile,\n translateKey,\n writeLocalesFile,\n} from \"../lib/utils\"\n\nexport const syncLocales = async (config: Configuration) => {\n const {\n loadPath,\n savePath,\n defaultLocale,\n namespaces,\n locales,\n context,\n openai,\n } = config\n\n try {\n for (const namespace of namespaces) {\n let defaultLocaleKeys: Record<string, string>\n\n try {\n defaultLocaleKeys = await loadLocalesFile(\n loadPath,\n defaultLocale,\n namespace,\n )\n } catch (error) {\n throw new TranslationError(\n `Failed to load default locale file for namespace \"${namespace}\"`,\n defaultLocale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n for (const locale of locales) {\n if (locale === defaultLocale) continue\n\n let localeKeys: Record<string, string>\n try {\n localeKeys = await loadLocalesFile(loadPath, locale, namespace)\n } catch (error) {\n console.warn(\n `Warning: Could not load locale file for ${locale} (namespace: ${namespace}). Creating new file.`,\n )\n localeKeys = {}\n }\n\n const missingKeys: Record<string, string> = {}\n\n // Check which keys from default locale are missing in current locale\n for (const [key, value] of Object.entries(defaultLocaleKeys)) {\n if (!localeKeys[key]) {\n missingKeys[key] = value\n }\n }\n\n // If there are missing keys, translate them\n if (Object.keys(missingKeys).length > 0) {\n console.log(\n `Found ${Object.keys(missingKeys).length} missing keys in ${locale} (namespace: ${namespace})`,\n )\n\n let translatedValues: Record<string, string>\n try {\n translatedValues = await translateKey({\n inputLanguage: defaultLocale,\n outputLanguage: locale,\n context,\n object: missingKeys,\n openai,\n model: config.model,\n })\n } catch (error) {\n throw new TranslationError(\n `Failed to translate keys for locale \"${locale}\" (namespace: ${namespace})`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n // Merge translated values with existing ones\n const updatedLocaleKeys = {\n ...localeKeys,\n ...translatedValues,\n }\n\n try {\n await writeLocalesFile(\n savePath,\n locale,\n namespace,\n updatedLocaleKeys,\n )\n } catch (error) {\n throw new TranslationError(\n `Failed to save translations for locale \"${locale}\" (namespace: ${namespace})`,\n locale,\n namespace,\n error instanceof Error ? error : undefined,\n )\n }\n\n console.log(\n `Successfully translated and saved ${Object.keys(missingKeys).length} keys for ${locale} (namespace: ${namespace})`,\n )\n } else {\n console.log(\n `No missing keys found for ${locale} (namespace: ${namespace})`,\n )\n }\n }\n }\n } catch (error) {\n if (error instanceof TranslationError) {\n throw error\n }\n throw new TranslationError(\n \"An unexpected error occurred during translation\",\n undefined,\n undefined,\n error instanceof Error ? error : undefined,\n )\n }\n}\n","import { Command } from \"commander\"\nimport dotenv from \"dotenv\"\nimport OpenAI from \"openai\"\nimport { checkMissing } from \"./commands/check-missing\"\nimport { removeUnusedKeys } from \"./commands/clean\"\nimport { replaceTranslation } from \"./commands/replace\"\nimport { translateMissing } from \"./commands/scan\"\nimport { syncLocales } from \"./commands/sync-locales\"\nimport type { CommandType, Configuration } from \"./lib/types\"\nimport { loadConfig } from \"./lib/utils\"\n\n// Only run CLI initialization when this file is executed directly\n\nconst program = new Command()\n\nprogram\n .name(\"i18n-magic\")\n .description(\n \"CLI to help you manage your locales JSON with translations, replacements, etc. with OpenAI.\",\n )\n .version(\"0.2.0\")\n .option(\"-c, --config <path>\", \"path to config file\")\n .option(\"-e, --env <path>\", \"path to .env file\")\n\nconst commands: CommandType[] = [\n {\n name: \"scan\",\n description:\n \"Scan for missing translations, get prompted for each, translate it to the other locales and save it to the JSON file.\",\n action: translateMissing,\n },\n {\n name: \"replace\",\n description:\n \"Replace a translation based on the key, and translate it to the other locales and save it to the JSON file.\",\n action: replaceTranslation,\n },\n {\n name: \"check-missing\",\n description:\n \"Check if there are any missing translations. Useful for a CI/CD pipeline or husky hook.\",\n action: checkMissing,\n },\n {\n name: \"sync\",\n description:\n \"Sync the translations from the default locale to the other locales. Useful for a CI/CD pipeline or husky hook.\",\n action: syncLocales,\n },\n {\n name: \"clean\",\n description:\n \"Remove unused translations from all locales. Useful for a CI/CD pipeline or husky hook.\",\n action: removeUnusedKeys,\n },\n]\n\nfor (const command of commands) {\n const cmd = program.command(command.name).description(command.description)\n\n // Add key option to replace command\n if (command.name === \"replace\") {\n cmd\n .option(\"-k, --key <key>\", \"translation key to replace\")\n .allowExcessArguments(true)\n .argument(\"[key]\", \"translation key to replace\")\n }\n\n cmd.action(async (arg, options) => {\n const res = dotenv.config({\n path: program.opts().env || \".env\",\n })\n\n const config: Configuration = await loadConfig({\n configPath: program.opts().config,\n })\n\n const isGemini = (config.model as string)?.includes(\"gemini\")\n\n // Get API key from environment or config\n const openaiKey = res.parsed.OPENAI_API_KEY || config.OPENAI_API_KEY\n const geminiKey = res.parsed.GEMINI_API_KEY || config.GEMINI_API_KEY\n\n // Select appropriate key based on model type\n const key = isGemini ? geminiKey : openaiKey\n\n if (!key) {\n const keyType = isGemini ? \"GEMINI_API_KEY\" : \"OPENAI_API_KEY\"\n console.error(\n `Please provide a${isGemini ? \" Gemini\" : \"n OpenAI\"} API key in your .env file or config, called ${keyType}.`,\n )\n process.exit(1)\n }\n\n const openai = new OpenAI({\n apiKey: key,\n ...(isGemini && {\n baseURL: \"https://generativelanguage.googleapis.com/v1beta/openai/\",\n }),\n })\n\n // For replace command, check for key in argument or option\n if (command.name === \"replace\") {\n // If key is provided as positional argument, use that first\n const keyToUse = typeof arg === \"string\" ? arg : options.key\n command.action({ ...config, openai }, keyToUse)\n } else {\n command.action({ ...config, openai })\n }\n })\n}\n\nprogram.parse(process.argv)\n"],"names":["languages","label","name","value","loadConfig","_ref","_ref$configPath","configPath","filePath","path","join","process","cwd","fs","existsSync","console","error","exit","config","require","removeDuplicatesFromArray","arr","filter","item","index","indexOf","translateKey","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref2","inputLanguage","context","object","openai","outputLanguage","model","entries","chunks","i","result","existingInput","existingOutput","input","output","_i","_chunks","chunk","chunkObject","completion","translatedChunk","wrap","_callee$","_context","prev","next","Object","length","push","slice","find","l","fromEntries","beta","chat","completions","parse","messages","content","role","JSON","stringify","data","response_format","type","sent","choices","message","_extends","Promise","resolve","setTimeout","abrupt","stop","_x","apply","arguments","loadLocalesFile","_ref4","_callee2","loadPath","locale","namespace","resolvedPath","json","_callee2$","_context2","replace","readFileSync","t0","TranslationError","Error","undefined","_x2","_x3","_x4","writeLocalesFile","_ref5","_callee3","savePath","resolvedSavePath","_callee3$","_context3","writeFileSync","_x5","_x6","_x7","_x8","getPureKey","key","isDefault","splitted","split","getMissingKeys","_ref7","_callee4","_ref6","globPatterns","namespaces","defaultNamespace","defaultLocale","parser","files","keys","_iterator","_step","file","uniqueKeys","newKeys","_iterator2","_step2","existingKeys","_iterator3","_step3","pureKey","_callee4$","_context4","Parser","nsSeparator","keySeparator","glob","concat","_createForOfIteratorHelperLoose","done","parseFuncFromString","list","log","_x9","getTextInput","_ref8","_callee5","prompt","_callee5$","_context5","prompts","onState","state","aborted","nextTick","_x10","checkAllKeysExist","_ref10","_callee6","_ref9","locales","disableTranslation","_iterator4","_step4","defaultLocaleKeys","_iterator5","_step5","localeKeys","missingKeys","_i2","_Object$entries","_Object$entries$_i","translatedValues","updatedLocaleKeys","_callee6$","_context6","_x11","_Error","cause","_this","call","_inheritsLoose","_wrapNativeSuper","checkMissing","removeUnusedKeys","extractedKeys","uniqueExtractedKeys","stats","usedKeysSet","existingKeysCount","cleanedKeys","removedCount","_key","total","removed","Set","add","has","getKeyToReplace","keyToReplace","replaceTranslation","newTranslation","newValue","_object","translation","translateMissing","newKeysWithDefaultLocale","newKey","answer","newKeysObject","allLocales","_loop","reduce","relevantKeys","_loop$","delegateYield","syncLocales","t1","warn","t2","t3","t4","program","Command","description","version","option","commands","action","command","_commands","cmd","allowExcessArguments","argument","arg","options","_config$model","res","isGemini","openaiKey","geminiKey","keyType","keyToUse","dotenv","opts","env","includes","parsed","OPENAI_API_KEY","GEMINI_API_KEY","OpenAI","apiKey","baseURL","argv"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,IAAMA,SAAS,GAAG,CACvB;AACEC,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,UAAU;AACjBC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,IAAI;AACXC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,UAAU;AACjBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,YAAY;AACnBC,EAAAA,IAAI,EAAE,OAAO;AACbC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,WAAW;AAClBC,EAAAA,IAAI,EAAE,YAAY;AAClBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,YAAY;AACnBC,EAAAA,IAAI,EAAE,WAAW;AACjBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,IAAI,EAAE,WAAW;AACjBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,SAAS;AAChBC,EAAAA,IAAI,EAAE,OAAO;AACbC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,UAAU;AACjBC,EAAAA,IAAI,EAAE,OAAO;AACbC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,KAAK;AACZC,EAAAA,IAAI,EAAE,UAAU;AAChBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,KAAK;AACZC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,UAAU;AAChBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,UAAU;AACjBC,EAAAA,IAAI,EAAE,UAAU;AAChBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,WAAW;AACjBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,WAAW;AAClBC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,OAAO;AACbC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,IAAI,EAAE,OAAO;AACbC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,kBAAkB;AACzBC,EAAAA,IAAI,EAAE,YAAY;AAClBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,EACD;AACEF,EAAAA,KAAK,EAAE,YAAY;AACnBC,EAAAA,IAAI,EAAE,YAAY;AAClBC,EAAAA,KAAK,EAAE,IAAA;AACR,CAAA,CACF;;ACpIM,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAAC,IAAA,EAEM;AAAA,EAAA,IAAAC,eAAA,GAAAD,IAAA,CAD3BE,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAG,KAAA,CAAA,GAAA,eAAe,GAAAA,eAAA,CAAA;AAE5B,EAAA,IAAME,QAAQ,GAAGC,IAAI,CAACC,IAAI,CAACC,OAAO,CAACC,GAAG,EAAE,EAAEL,UAAU,CAAC,CAAA;AAErD,EAAA,IAAI,CAACM,EAAE,CAACC,UAAU,CAACN,QAAQ,CAAC,EAAE;AAC5BO,IAAAA,OAAO,CAACC,KAAK,CAAC,6BAA6B,EAAER,QAAQ,CAAC,CAAA;AACtDG,IAAAA,OAAO,CAACM,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,GAAA;EAEA,IAAI;AACF,IAAA,IAAMC,MAAM,GAAGC,OAAO,CAACX,QAAQ,CAAC,CAAA;AAChC;AACA,IAAA,OAAOU,MAAM,CAAA;GACd,CAAC,OAAOF,KAAK,EAAE;AACdD,IAAAA,OAAO,CAACC,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC,CAAA;AACnDL,IAAAA,OAAO,CAACM,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,GAAA;AACF,CAAC,CAAA;AAEK,SAAUG,yBAAyBA,CAAIC,GAAQ,EAAA;AACnD,EAAA,OAAOA,GAAG,CAACC,MAAM,CAAC,UAACC,IAAI,EAAEC,KAAK,EAAA;AAAA,IAAA,OAAKH,GAAG,CAACI,OAAO,CAACF,IAAI,CAAC,KAAKC,KAAK,CAAA;GAAC,CAAA,CAAA;AACjE,CAAA;AAEO,IAAME,YAAY,gBAAA,YAAA;EAAA,IAAAC,KAAA,gBAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAAC,KAAA,EAAA;AAAA,IAAA,IAAAC,aAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,MAAA,EAAAC,cAAA,EAAAC,KAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,CAAA,EAAAC,MAAA,EAAAC,aAAA,EAAAC,cAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,EAAA,EAAAC,OAAA,EAAAC,KAAA,EAAAC,WAAA,EAAAC,UAAA,EAAAC,eAAA,CAAA;AAAA,IAAA,OAAAvB,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;AAC1BxB,UAAAA,aAAa,GAAAD,KAAA,CAAbC,aAAa,EACbC,OAAO,GAAAF,KAAA,CAAPE,OAAO,EACPC,MAAM,GAAAH,KAAA,CAANG,MAAM,EACNC,MAAM,GAAAJ,KAAA,CAANI,MAAM,EACNC,cAAc,GAAAL,KAAA,CAAdK,cAAc,EACdC,KAAK,GAAAN,KAAA,CAALM,KAAK,CAAA;AASL;AACMC,UAAAA,OAAO,GAAGmB,MAAM,CAACnB,OAAO,CAACJ,MAAM,CAAC,CAAA;AAChCK,UAAAA,MAAM,GAA8B,EAAE,CAAA;AAE5C,UAAA,KAASC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,OAAO,CAACoB,MAAM,EAAElB,CAAC,IAAI,GAAG,EAAE;AAC5CD,YAAAA,MAAM,CAACoB,IAAI,CAACrB,OAAO,CAACsB,KAAK,CAACpB,CAAC,EAAEA,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;AACxC,WAAA;UAEIC,MAAM,GAA2B,EAAE,CAAA;AAEjCC,UAAAA,aAAa,GAAG3C,SAAS,CAAC8D,IAAI,CAAC,UAACC,CAAC,EAAA;AAAA,YAAA,OAAKA,CAAC,CAAC5D,KAAK,KAAK8B,aAAa,CAAA;WAAC,CAAA,CAAA;AAChEW,UAAAA,cAAc,GAAG5C,SAAS,CAAC8D,IAAI,CAAC,UAACC,CAAC,EAAA;AAAA,YAAA,OAAKA,CAAC,CAAC5D,KAAK,KAAKkC,cAAc,CAAA;WAAC,CAAA,CAAA;UAElEQ,KAAK,GAAG,CAAAF,aAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAbA,aAAa,CAAE1C,KAAK,KAAIgC,aAAa,CAAA;UAC7Ca,MAAM,GAAG,CAAAF,cAAc,IAAA,IAAA,GAAA,KAAA,CAAA,GAAdA,cAAc,CAAE3C,KAAK,KAAIoC,cAAc,CAEtD;UAAAU,EAAA,GAAA,CAAA,EAAAC,OAAA,GACoBR,MAAM,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,EAAAO,EAAA,GAAAC,OAAA,CAAAW,MAAA,CAAA,EAAA;AAAAJ,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAfR,KAAK,GAAAD,OAAA,CAAAD,EAAA,CAAA,CAAA;AACRG,UAAAA,WAAW,GAAGQ,MAAM,CAACM,WAAW,CAACf,KAAK,CAAC,CAAA;AAAAM,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;UAAA,OACpBrB,MAAM,CAAC6B,IAAI,CAACC,IAAI,CAACC,WAAW,CAACC,KAAK,CAAC;AAC1D9B,YAAAA,KAAK,EAALA,KAAK;AACL+B,YAAAA,QAAQ,EAAE,CACR;AACEC,cAAAA,OAAO,oEACLpC,OAAO,GAAA,8FAAA,GAC4FA,OAAO,GAAA,MAAA,GACtG,EACN,CAA8oB,GAAA,4qBAAA;AAC9oBqC,cAAAA,IAAI,EAAE,QAAA;AACP,aAAA,EACD;AACED,cAAAA,OAAO,EAAEE,IAAI,CAACC,SAAS,CAAC;AACtBxC,gBAAAA,aAAa,EAAEY,KAAK;AACpBR,gBAAAA,cAAc,EAAES,MAAM;AACtB4B,gBAAAA,IAAI,EAAExB,WAAAA;eACP,CAAC;AACFqB,cAAAA,IAAI,EAAE,MAAA;AACP,aAAA,CACF;AACDI,YAAAA,eAAe,EAAE;AACfC,cAAAA,IAAI,EAAE,aAAA;AACP,aAAA;AACF,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAvBIzB,UAAU,GAAAI,QAAA,CAAAsB,IAAA,CAAA;AAyBVzB,UAAAA,eAAe,GAAGoB,IAAI,CAACJ,KAAK,CAChCjB,UAAU,CAAC2B,OAAO,CAAC,CAAC,CAAC,CAACC,OAAO,CAACT,OAAO,CACZ,CAE3B;AACA5B,UAAAA,MAAM,GAAAsC,QAAA,CAAA,EAAA,EAAQtC,MAAM,EAAKU,eAAe,CAAE,CAAA;AAE1C;AAAAG,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OACM,IAAIwB,OAAO,CAAC,UAACC,OAAO,EAAA;AAAA,YAAA,OAAKC,UAAU,CAACD,OAAO,EAAE,GAAG,CAAC,CAAA;WAAC,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;UAAAnC,EAAA,EAAA,CAAA;AAAAQ,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,OAAAF,QAAA,CAAA6B,MAAA,CAAA,QAAA,EAGnD1C,MAAM,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAa,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAtD,OAAA,CAAA,CAAA;GACd,CAAA,CAAA,CAAA;EAAA,OAvEYL,SAAAA,YAAYA,CAAA4D,EAAA,EAAA;AAAA,IAAA,OAAA3D,KAAA,CAAA4D,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAuExB,EAAA,CAAA;AAEM,IAAMC,eAAe,gBAAA,YAAA;AAAA,EAAA,IAAAC,KAAA,gBAAA9D,iBAAA,eAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAG,SAAA6D,QAC7BC,CAAAA,QAE4E,EAC5EC,MAAc,EACdC,SAAiB,EAAA;AAAA,IAAA,IAAAC,YAAA,EAAAzB,OAAA,EAAA0B,IAAA,CAAA;AAAA,IAAA,OAAAnE,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAA4C,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA1C,IAAA,GAAA0C,SAAA,CAAAzC,IAAA;AAAA,QAAA,KAAA,CAAA;UAAA,IAEb,EAAA,OAAOmC,QAAQ,KAAK,QAAQ,CAAA,EAAA;AAAAM,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACxBsC,UAAAA,YAAY,GAAGH,QAAQ,CAC1BO,OAAO,CAAC,SAAS,EAAEN,MAAM,CAAC,CAC1BM,OAAO,CAAC,QAAQ,EAAEL,SAAS,CAAC,CAAA;UAEzBxB,OAAO,GAAGzD,EAAE,CAACuF,YAAY,CAACL,YAAY,EAAE,OAAO,CAAC,CAAA;AAAAG,UAAAA,SAAA,CAAA1C,IAAA,GAAA,CAAA,CAAA;AAE9CwC,UAAAA,IAAI,GAAGxB,IAAI,CAACJ,KAAK,CAACE,OAAO,CAAC,CAAA;AAAA,UAAA,OAAA4B,SAAA,CAAAd,MAAA,CAAA,QAAA,EACzBY,IAA8B,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;AAAAE,UAAAA,SAAA,CAAA1C,IAAA,GAAA,CAAA,CAAA;UAAA0C,SAAA,CAAAG,EAAA,GAAAH,SAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;UAAA,MAE/B,IAAII,gBAAgB,CAAA,kCAAA,GACWT,MAAM,GAAA,GAAA,GAAIC,SAAS,GAAWC,UAAAA,GAAAA,YAAY,EAC7EF,MAAM,EACNC,SAAS,EACTI,SAAA,CAAAG,EAAA,YAAiBE,KAAK,GAAAL,SAAA,CAAAG,EAAA,GAAWG,SAAS,CAC3C,CAAA;AAAA,QAAA,KAAA,EAAA;UAAA,OAAAN,SAAA,CAAAd,MAAA,CAAA,QAAA,EAIEQ,QAAQ,CAACC,MAAM,EAAEC,SAAS,CAAC,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAI,SAAA,CAAAb,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAM,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;GACnC,CAAA,CAAA,CAAA;AAAA,EAAA,OAAA,SA3BYF,eAAeA,CAAAgB,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,IAAA,OAAAjB,KAAA,CAAAH,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CA2B3B,EAAA,CAAA;AAEM,IAAMoB,gBAAgB,gBAAA,YAAA;AAAA,EAAA,IAAAC,KAAA,gBAAAjF,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAgF,QAAAA,CAC9BC,QAMuB,EACvBlB,MAAc,EACdC,SAAiB,EACjBpB,IAA4B,EAAA;AAAA,IAAA,IAAAsC,gBAAA,CAAA;AAAA,IAAA,OAAAnF,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAA4D,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA1D,IAAA,GAAA0D,SAAA,CAAAzD,IAAA;AAAA,QAAA,KAAA,CAAA;UAAA,IAExB,EAAA,OAAOsD,QAAQ,KAAK,QAAQ,CAAA,EAAA;AAAAG,YAAAA,SAAA,CAAAzD,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACxBuD,UAAAA,gBAAgB,GAAGD,QAAQ,CAC9BZ,OAAO,CAAC,SAAS,EAAEN,MAAM,CAAC,CAC1BM,OAAO,CAAC,QAAQ,EAAEL,SAAS,CAAC,CAAA;AAE/BjF,UAAAA,EAAE,CAACsG,aAAa,CAACH,gBAAgB,EAAExC,IAAI,CAACC,SAAS,CAACC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;UAAA,OAAAwC,SAAA,CAAA9B,MAAA,CAAA,QAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;AAAA8B,UAAAA,SAAA,CAAAzD,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,OAK7DsD,QAAQ,CAAClB,MAAM,EAAEC,SAAS,EAAEpB,IAAI,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAwC,SAAA,CAAA7B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAyB,QAAA,CAAA,CAAA;GACxC,CAAA,CAAA,CAAA;EAAA,OAvBYF,SAAAA,gBAAgBA,CAAAQ,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,IAAA,OAAAV,KAAA,CAAAtB,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAuB5B,EAAA,CAAA;AAEM,IAAMgC,UAAU,GAAG,SAAbA,UAAUA,CACrBC,GAAW,EACX3B,SAAkB,EAClB4B,SAAmB,EACjB;AACF,EAAA,IAAMC,QAAQ,GAAGF,GAAG,CAACG,KAAK,CAAC,GAAG,CAAC,CAAA;AAE/B,EAAA,IAAID,QAAQ,CAAChE,MAAM,KAAK,CAAC,EAAE;AACzB,IAAA,IAAI+D,SAAS,EAAE;AACb,MAAA,OAAOD,GAAG,CAAA;AACZ,KAAA;AAEA,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA,EAAA,IAAIE,QAAQ,CAAC,CAAC,CAAC,KAAK7B,SAAS,EAAE;IAC7B,OAAO6B,QAAQ,CAAC,CAAC,CAAC,CAAA;AACpB,GAAA;AAEA,EAAA,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAEM,IAAME,cAAc,gBAAA,YAAA;EAAA,IAAAC,KAAA,gBAAAlG,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAiG,QAAAA,CAAAC,KAAA,EAAA;AAAA,IAAA,IAAAC,YAAA,EAAAC,UAAA,EAAAC,gBAAA,EAAAC,aAAA,EAAAxC,QAAA,EAAAyC,MAAA,EAAAC,KAAA,EAAAC,IAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,IAAA,EAAApE,OAAA,EAAAqE,UAAA,EAAAC,OAAA,EAAAC,UAAA,EAAAC,MAAA,EAAAhD,SAAA,EAAAiD,YAAA,EAAAC,UAAA,EAAAC,MAAA,EAAAxB,GAAA,EAAAyB,OAAA,CAAA;AAAA,IAAA,OAAArH,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAA8F,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA5F,IAAA,GAAA4F,SAAA,CAAA3F,IAAA;AAAA,QAAA,KAAA,CAAA;UAC5BwE,YAAY,GAAAD,KAAA,CAAZC,YAAY,EACZC,UAAU,GAAAF,KAAA,CAAVE,UAAU,EACVC,gBAAgB,GAAAH,KAAA,CAAhBG,gBAAgB,EAChBC,aAAa,GAAAJ,KAAA,CAAbI,aAAa,EACbxC,QAAQ,GAAAoC,KAAA,CAARpC,QAAQ,CAAA;UAEFyC,MAAM,GAAG,IAAIgB,qBAAM,CAAC;AACxBC,YAAAA,WAAW,EAAE,KAAK;AAClBC,YAAAA,YAAY,EAAE,KAAA;AACf,WAAA,CAAC,CAAA;AAAAH,UAAAA,SAAA,CAAA3F,IAAA,GAAA,CAAA,CAAA;UAAA,OAEkB+F,IAAI,IAAAC,MAAA,CAAKxB,YAAY,EAAE,CAAA,qBAAqB,EAAC,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAA5DK,KAAK,GAAAc,SAAA,CAAAvE,IAAA,CAAA;AAEL0D,UAAAA,IAAI,GAAG,EAAE,CAAA;UAEf,KAAAC,SAAA,GAAAkB,+BAAA,CAAmBpB,KAAK,CAAAG,EAAAA,CAAAA,CAAAA,KAAA,GAAAD,SAAA,EAAAmB,EAAAA,IAAA,GAAE;YAAfjB,IAAI,GAAAD,KAAA,CAAAtI,KAAA,CAAA;YACPmE,OAAO,GAAGzD,EAAE,CAACuF,YAAY,CAACsC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC9CL,YAAAA,MAAM,CAACuB,mBAAmB,CAACtF,OAAO,EAAE;cAAEuF,IAAI,EAAE,CAAC,GAAG,CAAA;aAAG,EAAE,UAACpC,GAAW,EAAI;AACnEc,cAAAA,IAAI,CAAC3E,IAAI,CAAC6D,GAAG,CAAC,CAAA;AAChB,aAAC,CAAC,CAAA;AACJ,WAAA;AAEMkB,UAAAA,UAAU,GAAGvH,yBAAyB,CAACmH,IAAI,CAAC,CAAA;AAE5CK,UAAAA,OAAO,GAAG,EAAE,CAAA;UAAAC,UAAA,GAAAa,+BAAA,CAEMxB,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAY,MAAA,GAAAD,UAAA,EAAA,EAAAc,IAAA,EAAA;AAAAP,YAAAA,SAAA,CAAA3F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAvBqC,SAAS,GAAAgD,MAAA,CAAA3I,KAAA,CAAA;AAAAiJ,UAAAA,SAAA,CAAA3F,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OACSgC,eAAe,CACxCG,QAAQ,EACRwC,aAAa,EACbtC,SAAS,CACV,CAAA;AAAA,QAAA,KAAA,EAAA;UAJKiD,YAAY,GAAAK,SAAA,CAAAvE,IAAA,CAAA;AAMlB9D,UAAAA,OAAO,CAAC+I,GAAG,CAACpG,MAAM,CAAC6E,IAAI,CAACQ,YAAY,CAAC,CAACpF,MAAM,EAAE,eAAe,CAAC,CAAA;UAAAqF,UAAA,GAAAU,+BAAA,CAE5Cf,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAM,MAAA,GAAAD,UAAA,EAAA,EAAAW,IAAA,EAAA;AAAAP,YAAAA,SAAA,CAAA3F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAjBgE,GAAG,GAAAwB,MAAA,CAAA9I,KAAA,CAAA;UACN+I,OAAO,GAAG1B,UAAU,CAACC,GAAG,EAAE3B,SAAS,EAAEA,SAAS,KAAKqC,gBAAgB,CAAC,CAAA;AAAA,UAAA,IAErEe,OAAO,EAAA;AAAAE,YAAAA,SAAA,CAAA3F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,OAAA2F,SAAA,CAAAhE,MAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAIZ,UAAA,IAAI,CAAC2D,YAAY,CAACG,OAAO,CAAC,EAAE;YAC1BN,OAAO,CAAChF,IAAI,CAAC;AAAE6D,cAAAA,GAAG,EAAEyB,OAAO;AAAEpD,cAAAA,SAAS,EAATA,SAAAA;AAAW,aAAA,CAAC,CAAA;AAC3C,WAAA;AAAC,QAAA,KAAA,EAAA;AAAAsD,UAAAA,SAAA,CAAA3F,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAA2F,UAAAA,SAAA,CAAA3F,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,OAAA2F,SAAA,CAAAhE,MAAA,CAAA,QAAA,EAIEwD,OAAO,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAQ,SAAA,CAAA/D,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAA0C,QAAA,CAAA,CAAA;GACf,CAAA,CAAA,CAAA;EAAA,OAlDYF,SAAAA,cAAcA,CAAAkC,GAAA,EAAA;AAAA,IAAA,OAAAjC,KAAA,CAAAvC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAkD1B,EAAA,CAAA;AAEM,IAAMwE,YAAY,gBAAA,YAAA;EAAA,IAAAC,KAAA,gBAAArI,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAoI,QAAAA,CAAOC,MAAc,EAAA;AAAA,IAAA,IAAAtH,KAAA,CAAA;AAAA,IAAA,OAAAhB,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAA+G,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA7G,IAAA,GAAA6G,SAAA,CAAA5G,IAAA;AAAA,QAAA,KAAA,CAAA;AAAA4G,UAAAA,SAAA,CAAA5G,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,OAC3B6G,OAAO,CAAC;AAC1BpK,YAAAA,IAAI,EAAE,OAAO;AACb0E,YAAAA,IAAI,EAAE,MAAM;AACZG,YAAAA,OAAO,EAAEoF,MAAM;AACfI,YAAAA,OAAO,EAAE,SAAAA,OAACC,CAAAA,KAAK,EAAI;cACjB,IAAIA,KAAK,CAACC,OAAO,EAAE;gBACjB9J,OAAO,CAAC+J,QAAQ,CAAC,YAAK;AACpB/J,kBAAAA,OAAO,CAACM,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,iBAAC,CAAC,CAAA;AACJ,eAAA;AACF,aAAA;AACD,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAXI4B,KAAK,GAAAwH,SAAA,CAAAxF,IAAA,CAAA;AAAA,UAAA,OAAAwF,SAAA,CAAAjF,MAAA,CAaJvC,QAAAA,EAAAA,KAAK,CAAC1C,KAAe,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAkK,SAAA,CAAAhF,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAA6E,QAAA,CAAA,CAAA;GAC7B,CAAA,CAAA,CAAA;EAAA,OAfYF,SAAAA,YAAYA,CAAAW,IAAA,EAAA;AAAA,IAAA,OAAAV,KAAA,CAAA1E,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAexB,EAAA,CAAA;AAEM,IAAMoF,iBAAiB,gBAAA,YAAA;EAAA,IAAAC,MAAA,gBAAAjJ,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAgJ,QAAAA,CAAAC,KAAA,EAAA;IAAA,IAAA7C,UAAA,EAAAE,aAAA,EAAAxC,QAAA,EAAAoF,OAAA,EAAA9I,OAAA,EAAAE,MAAA,EAAA2E,QAAA,EAAAkE,kBAAA,EAAA3I,KAAA,EAAA4I,UAAA,EAAAC,MAAA,EAAArF,SAAA,EAAAsF,iBAAA,EAAAC,UAAA,EAAAC,MAAA,EAAAzF,MAAA,EAAA0F,UAAA,EAAAC,WAAA,EAAAC,GAAA,EAAAC,eAAA,EAAAC,kBAAA,EAAAlE,GAAA,EAAAtH,KAAA,EAAAyL,gBAAA,EAAAC,iBAAA,CAAA;AAAA,IAAA,OAAAhK,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAyI,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAvI,IAAA,GAAAuI,SAAA,CAAAtI,IAAA;AAAA,QAAA,KAAA,CAAA;UAC/ByE,UAAU,GAAA6C,KAAA,CAAV7C,UAAU,EACVE,aAAa,GAAA2C,KAAA,CAAb3C,aAAa,EACbxC,QAAQ,GAAAmF,KAAA,CAARnF,QAAQ,EACRoF,OAAO,GAAAD,KAAA,CAAPC,OAAO,EACP9I,OAAO,GAAA6I,KAAA,CAAP7I,OAAO,EACPE,MAAM,GAAA2I,KAAA,CAAN3I,MAAM,EACN2E,QAAQ,GAAAgE,KAAA,CAARhE,QAAQ,EACRkE,kBAAkB,GAAAF,KAAA,CAAlBE,kBAAkB,EAClB3I,KAAK,GAAAyI,KAAA,CAALzI,KAAK,CAAA;AAAA,UAAA,IAAA,CAED2I,kBAAkB,EAAA;AAAAc,YAAAA,SAAA,CAAAtI,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,OAAAsI,SAAA,CAAA3G,MAAA,CAAA,QAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;UAAA8F,UAAA,GAAAxB,+BAAA,CAIExB,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;AAAA,UAAA,IAAA,CAAAiD,MAAA,GAAAD,UAAA,EAAA,EAAAvB,IAAA,EAAA;AAAAoC,YAAAA,SAAA,CAAAtI,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAvBqC,SAAS,GAAAqF,MAAA,CAAAhL,KAAA,CAAA;AAAA4L,UAAAA,SAAA,CAAAtI,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,OACcgC,eAAe,CAC7CG,QAAQ,EACRwC,aAAa,EACbtC,SAAS,CACV,CAAA;AAAA,QAAA,KAAA,CAAA;UAJKsF,iBAAiB,GAAAW,SAAA,CAAAlH,IAAA,CAAA;UAAAwG,UAAA,GAAA3B,+BAAA,CAMFsB,OAAO,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAM,MAAA,GAAAD,UAAA,EAAA,EAAA1B,IAAA,EAAA;AAAAoC,YAAAA,SAAA,CAAAtI,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAjBoC,MAAM,GAAAyF,MAAA,CAAAnL,KAAA,CAAA;UAAA,IACX0F,EAAAA,MAAM,KAAKuC,aAAa,CAAA,EAAA;AAAA2D,YAAAA,SAAA,CAAAtI,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,OAAAsI,SAAA,CAAA3G,MAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA2G,UAAAA,SAAA,CAAAtI,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAEHgC,eAAe,CAACG,QAAQ,EAAEC,MAAM,EAAEC,SAAS,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAA/DyF,UAAU,GAAAQ,SAAA,CAAAlH,IAAA,CAAA;UACV2G,WAAW,GAA2B,EAAE,CAE9C;AACA,UAAA,KAAAC,GAAA,GAAAC,CAAAA,EAAAA,eAAA,GAA2BhI,MAAM,CAACnB,OAAO,CAAC6I,iBAAiB,CAAC,EAAAK,GAAA,GAAAC,eAAA,CAAA/H,MAAA,EAAA8H,GAAA,EAAE,EAAA;YAAAE,kBAAA,GAAAD,eAAA,CAAAD,GAAA,CAAA,EAAlDhE,GAAG,GAAAkE,kBAAA,CAAA,CAAA,CAAA,EAAExL,KAAK,GAAAwL,kBAAA,CAAA,CAAA,CAAA,CAAA;AACpB,YAAA,IAAI,CAACJ,UAAU,CAAC9D,GAAG,CAAC,EAAE;AACpB+D,cAAAA,WAAW,CAAC/D,GAAG,CAAC,GAAGtH,KAAK,CAAA;AAC1B,aAAA;AACF,WAAA;AAEA;UAAA,IACIuD,EAAAA,MAAM,CAAC6E,IAAI,CAACiD,WAAW,CAAC,CAAC7H,MAAM,GAAG,CAAC,CAAA,EAAA;AAAAoI,YAAAA,SAAA,CAAAtI,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACrC1C,UAAAA,OAAO,CAAC+I,GAAG,CAAA,QAAA,GACApG,MAAM,CAAC6E,IAAI,CAACiD,WAAW,CAAC,CAAC7H,MAAM,GAAoBkC,mBAAAA,GAAAA,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,MAAG,CAC/F,CAAA;AAAAiG,UAAAA,SAAA,CAAAtI,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAE8B/B,YAAY,CAAC;AAC1CO,YAAAA,aAAa,EAAEmG,aAAa;AAC5B/F,YAAAA,cAAc,EAAEwD,MAAM;AACtB3D,YAAAA,OAAO,EAAPA,OAAO;AACPC,YAAAA,MAAM,EAAEqJ,WAAW;AACnBpJ,YAAAA,MAAM,EAANA,MAAM;AACNE,YAAAA,KAAK,EAALA,KAAAA;AACD,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAPIsJ,gBAAgB,GAAAG,SAAA,CAAAlH,IAAA,CAAA;AAStB;AACMgH,UAAAA,iBAAiB,GAAA7G,QAAA,CAAA,EAAA,EAClBuG,UAAU,EACVK,gBAAgB,CAGrB,CAAA;UACAhF,gBAAgB,CAACG,QAAQ,EAAElB,MAAM,EAAEC,SAAS,EAAE+F,iBAAiB,CAAC,CAAA;AAChE9K,UAAAA,OAAO,CAAC+I,GAAG,CAAA,+CAAA,GACkCjE,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,MAAG,CAC9E,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAiG,UAAAA,SAAA,CAAAtI,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAsI,UAAAA,SAAA,CAAAtI,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAsI,SAAA,CAAA1G,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAyF,QAAA,CAAA,CAAA;GAIR,CAAA,CAAA,CAAA;EAAA,OAhEYF,SAAAA,iBAAiBA,CAAAoB,IAAA,EAAA;AAAA,IAAA,OAAAnB,MAAA,CAAAtF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAgE7B,EAAA,CAAA;AAEYc,IAAAA,gBAAiB,0BAAA2F,MAAA,EAAA;EAC5B,SAAA3F,gBAAAA,CACEvB,OAAe,EACRc,MAAe,EACfC,SAAkB,EAClBoG,KAAa,EAAA;AAAA,IAAA,IAAAC,KAAA,CAAA;AAEpBA,IAAAA,KAAA,GAAAF,MAAA,CAAAG,IAAA,CAAA,IAAA,EAAMrH,OAAO,CAAC,IAAA,IAAA,CAAA;AAAAoH,IAAAA,KAAA,CAJPtG,MAAA,GAAA,KAAA,CAAA,CAAA;AAAAsG,IAAAA,KAAA,CACArG,SAAA,GAAA,KAAA,CAAA,CAAA;AAAAqG,IAAAA,KAAA,CACAD,KAAA,GAAA,KAAA,CAAA,CAAA;IAFAC,KAAA,CAAMtG,MAAA,GAANA,MAAM,CAAA;IACNsG,KAAA,CAASrG,SAAA,GAATA,SAAS,CAAA;IACTqG,KAAA,CAAKD,KAAA,GAALA,KAAK,CAAA;IAGZC,KAAA,CAAKjM,IAAI,GAAG,kBAAkB,CAAA;AAAA,IAAA,OAAAiM,KAAA,CAAA;AAChC,GAAA;EAACE,cAAA,CAAA/F,gBAAA,EAAA2F,MAAA,CAAA,CAAA;AAAA,EAAA,OAAA3F,gBAAA,CAAA;AAAA,CAAAgG,eAAAA,gBAAA,CATmC/F,KAAK,CAAA,CAAA;;AC1TpC,IAAMgG,YAAY,gBAAA,YAAA;EAAA,IAAAlM,IAAA,gBAAAuB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAOb,MAAqB,EAAA;AAAA,IAAA,IAAA0H,OAAA,CAAA;AAAA,IAAA,OAAA/G,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;AAAAF,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;UAAA,OAChCoE,cAAc,CAAC3G,MAAM,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAAtC0H,OAAO,GAAArF,QAAA,CAAAsB,IAAA,CAAA;AAEb,UAAA,IAAI+D,OAAO,CAACjF,MAAM,GAAG,CAAC,EAAE;AACtB5C,YAAAA,OAAO,CAACC,KAAK,CAAC,oCAAoC,CAAC,CAAA;AACnDL,YAAAA,OAAO,CAACM,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,WAAA;AAAC,QAAA,KAAA,CAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAsC,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAtD,OAAA,CAAA,CAAA;GACF,CAAA,CAAA,CAAA;EAAA,OAPYwK,SAAAA,YAAYA,CAAAjH,EAAA,EAAA;AAAA,IAAA,OAAAjF,IAAA,CAAAkF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAOxB,EAAA;;ACCM,IAAMgH,gBAAgB,gBAAA,YAAA;EAAA,IAAAnM,IAAA,gBAAAuB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAOb,MAAqB,EAAA;AAAA,IAAA,IAAA+G,YAAA,EAAAC,UAAA,EAAAC,gBAAA,EAAA6C,OAAA,EAAApF,QAAA,EAAAmB,QAAA,EAAAsB,MAAA,EAAAC,KAAA,EAAAmE,aAAA,EAAAjE,SAAA,EAAAC,KAAA,EAAAC,IAAA,EAAApE,OAAA,EAAAoI,mBAAA,EAAAC,KAAA,EAAA9D,UAAA,EAAAC,MAAA,EAAAhD,SAAA,EAAA8G,WAAA,EAAA5D,UAAA,EAAAC,MAAA,EAAAxB,GAAA,EAAAyB,OAAA,EAAAgC,UAAA,EAAAC,MAAA,EAAAtF,MAAA,EAAAkD,YAAA,EAAA8D,iBAAA,EAAAC,WAAA,EAAAC,YAAA,EAAAhK,EAAA,EAAA2I,eAAA,EAAAC,kBAAA,EAAAqB,IAAA,EAAA7M,KAAA,CAAA;AAAA,IAAA,OAAA0B,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;AAExDwE,UAAAA,YAAY,GAMV/G,MAAM,CANR+G,YAAY,EACZC,UAAU,GAKRhH,MAAM,CALRgH,UAAU,EACVC,gBAAgB,GAIdjH,MAAM,CAJRiH,gBAAgB,EAChB6C,OAAO,GAGL9J,MAAM,CAHR8J,OAAO,EACPpF,QAAQ,GAEN1E,MAAM,CAFR0E,QAAQ,EACRmB,QAAQ,GACN7F,MAAM,CADR6F,QAAQ,CAGV;UACMsB,MAAM,GAAG,IAAIgB,qBAAM,CAAC;AACxBC,YAAAA,WAAW,EAAE,KAAK;AAClBC,YAAAA,YAAY,EAAE,KAAA;AACf,WAAA,CAAC,CAEF;AAAAhG,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;UAAA,OACoB+F,IAAI,IAAAC,MAAA,CAAKxB,YAAY,EAAE,CAAA,qBAAqB,EAAC,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAA5DK,KAAK,GAAA/E,QAAA,CAAAsB,IAAA,CAAA;AAEX;AACM4H,UAAAA,aAAa,GAAG,EAAE,CAAA;UACxB,KAAAjE,SAAA,GAAAkB,+BAAA,CAAmBpB,KAAK,CAAAG,EAAAA,CAAAA,CAAAA,KAAA,GAAAD,SAAA,EAAAmB,EAAAA,IAAA,GAAE;YAAfjB,IAAI,GAAAD,KAAA,CAAAtI,KAAA,CAAA;YACPmE,OAAO,GAAGzD,EAAE,CAACuF,YAAY,CAACsC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC9CL,YAAAA,MAAM,CAACuB,mBAAmB,CAACtF,OAAO,EAAE;cAAEuF,IAAI,EAAE,CAAC,GAAG,CAAA;aAAG,EAAE,UAACpC,GAAW,EAAI;AACnEgF,cAAAA,aAAa,CAAC7I,IAAI,CAAC6D,GAAG,CAAC,CAAA;AACzB,aAAC,CAAC,CAAA;AACJ,WAAA;AAEA;AACMiF,UAAAA,mBAAmB,GAAGtL,yBAAyB,CAACqL,aAAa,CAAC,CAEpE;AACME,UAAAA,KAAK,GAAG;AACZM,YAAAA,KAAK,EAAE,CAAC;AACRC,YAAAA,OAAO,EAAE,CAAA;WACV,CAED;UAAArE,UAAA,GAAAa,+BAAA,CACwBxB,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAY,MAAA,GAAAD,UAAA,EAAA,EAAAc,IAAA,EAAA;AAAApG,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAvBqC,SAAS,GAAAgD,MAAA,CAAA3I,KAAA,CAAA;AAClB;AACMyM,UAAAA,WAAW,GAAG,IAAIO,GAAG,EAAU,CAAA;UAErC,KAAAnE,UAAA,GAAAU,+BAAA,CAAkBgD,mBAAmB,CAAAzD,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,EAAAW,EAAAA,IAAA,GAAE;YAA5BlC,GAAG,GAAAwB,MAAA,CAAA9I,KAAA,CAAA;YACN+I,OAAO,GAAG1B,UAAU,CAACC,GAAG,EAAE3B,SAAS,EAAEA,SAAS,KAAKqC,gBAAgB,CAAC,CAAA;AAC1E,YAAA,IAAIe,OAAO,EAAE;AACX0D,cAAAA,WAAW,CAACQ,GAAG,CAAClE,OAAO,CAAC,CAAA;AAC1B,aAAA;AACF,WAAA;AAEA;UAAAgC,UAAA,GAAAxB,+BAAA,CACqBsB,OAAO,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAG,MAAA,GAAAD,UAAA,EAAA,EAAAvB,IAAA,EAAA;AAAApG,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAjBoC,MAAM,GAAAsF,MAAA,CAAAhL,KAAA,CAAA;AAAAoD,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAEYgC,eAAe,CAACG,QAAQ,EAAEC,MAAM,EAAEC,SAAS,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAAjEiD,YAAY,GAAAxF,QAAA,CAAAsB,IAAA,CAAA;UACZgI,iBAAiB,GAAGnJ,MAAM,CAAC6E,IAAI,CAACQ,YAAY,CAAC,CAACpF,MAAM,CAAA;UAC1DgJ,KAAK,CAACM,KAAK,IAAIJ,iBAAiB,CAAA;AAEhC;UACMC,WAAW,GAA2B,EAAE,CAAA;AAC1CC,UAAAA,YAAY,GAAG,CAAC,CAAA;AAEpB,UAAA,KAAAhK,EAAA,GAAA2I,CAAAA,EAAAA,eAAA,GAA2BhI,MAAM,CAACnB,OAAO,CAACwG,YAAY,CAAC,EAAAhG,EAAA,GAAA2I,eAAA,CAAA/H,MAAA,EAAAZ,EAAA,EAAE,EAAA;YAAA4I,kBAAA,GAAAD,eAAA,CAAA3I,EAAA,CAAA,EAA7C0E,IAAG,GAAAkE,kBAAA,CAAA,CAAA,CAAA,EAAExL,KAAK,GAAAwL,kBAAA,CAAA,CAAA,CAAA,CAAA;AACpB,YAAA,IAAIiB,WAAW,CAACS,GAAG,CAAC5F,IAAG,CAAC,EAAE;AACxBqF,cAAAA,WAAW,CAACrF,IAAG,CAAC,GAAGtH,KAAK,CAAA;AAC1B,aAAC,MAAM;AACL4M,cAAAA,YAAY,EAAE,CAAA;AAChB,aAAA;AACF,WAAA;UAEAJ,KAAK,CAACO,OAAO,IAAIH,YAAY,CAAA;AAE7B;UAAA,IACIA,EAAAA,YAAY,GAAG,CAAC,CAAA,EAAA;AAAAxJ,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AAAAF,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;UAAA,OACZmD,gBAAgB,CAACG,QAAQ,EAAElB,MAAM,EAAEC,SAAS,EAAEgH,WAAW,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;AAChE/L,UAAAA,OAAO,CAAC+I,GAAG,CAAA,iBAAA,GACIiD,YAAY,GAAqBlH,oBAAAA,GAAAA,MAAM,SAAIC,SAAS,GAAA,IAAA,GAC/DpC,MAAM,CAAC6E,IAAI,CAACuE,WAAW,CAAC,CAACnJ,MAC3B,qBAAkB,CACnB,CAAA;AAAAJ,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAED1C,UAAAA,OAAO,CAAC+I,GAAG,CAAA,0BAAA,GAA4BjE,MAAM,GAAA,GAAA,GAAIC,SAAW,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAvC,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAKnE,UAAA,IAAIkJ,KAAK,CAACO,OAAO,GAAG,CAAC,EAAE;YACrBnM,OAAO,CAAC+I,GAAG,CAAA,iBAAA,GACI6C,KAAK,CAACO,OAAO,GAAA,uBAAA,GAAwBP,KAAK,CAACM,KAAK,GAAA,cAAc,CAC5E,CAAA;AACH,WAAC,MAAM;AACLlM,YAAAA,OAAO,CAAC+I,GAAG,CAAA,8CAAA,GACiC6C,KAAK,CAACM,KAAK,iBAAc,CACpE,CAAA;AACH,WAAA;AAAC,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAA1J,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAtD,OAAA,CAAA,CAAA;GACF,CAAA,CAAA,CAAA;EAAA,OA7FYyK,SAAAA,gBAAgBA,CAAAlH,EAAA,EAAA;AAAA,IAAA,OAAAjF,IAAA,CAAAkF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CA6F5B,EAAA;;AChGD,IAAM8H,eAAe,gBAAA,YAAA;EAAA,IAAAjN,IAAA,gBAAAuB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAOwG,IAA4B,EAAA;AAAA,IAAA,IAAAgF,YAAA,CAAA;AAAA,IAAA,OAAA1L,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;AAAAF,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;UAAA,OAC9BuG,YAAY,CACrC,gDAAgD,CACjD,CAAA;AAAA,QAAA,KAAA,CAAA;UAFKuD,YAAY,GAAAhK,QAAA,CAAAsB,IAAA,CAAA;UAAA,IAIb0D,IAAI,CAACgF,YAAY,CAAC,EAAA;AAAAhK,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACrB1C,UAAAA,OAAO,CAAC+I,GAAG,CAAayD,YAAAA,GAAAA,YAAY,uBAAmB,CAAC,CAAA;AAAAhK,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;UAAA,OAC3C6J,eAAe,CAAC/E,IAAI,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;AAAA,UAAA,OAAAhF,QAAA,CAAA6B,MAAA,CAAA7B,QAAAA,EAAAA,QAAA,CAAAsB,IAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;AAGpC9D,UAAAA,OAAO,CAAC+I,GAAG,CAAayD,YAAAA,GAAAA,YAAY,eAAW,CAAC,CAAA;AAAA,UAAA,OAAAhK,QAAA,CAAA6B,MAAA,CAAA,QAAA,EACzCmI,YAAY,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAhK,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAtD,OAAA,CAAA,CAAA;GACpB,CAAA,CAAA,CAAA;EAAA,OAZKuL,SAAAA,eAAeA,CAAAhI,EAAA,EAAA;AAAA,IAAA,OAAAjF,IAAA,CAAAkF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAYpB,EAAA,CAAA;AAEM,IAAMgI,kBAAkB,gBAAA,YAAA;AAAA,EAAA,IAAAxL,KAAA,gBAAAJ,iBAAA,eAAAC,mBAAA,EAAA,CAAAC,IAAA,CAAG,SAAA6D,QAAAA,CAChCzE,MAAqB,EACrBuG,GAAY,EAAA;AAAA,IAAA,IAAA7B,QAAA,CAAAmB,CAAAA,QAAA,CAAAqB,CAAAA,aAAA,EAAAD,gBAAA,CAAA,CAAA6C,OAAA,CAAA/C,CAAA/F,OAAA,EAAAE,MAAA,CAAA,CAAAmG,IAAA,CAAA,CAAAgF,YAAA,CAAAE,CAAAA,cAAA,CAAAjF,CAAAA,SAAA,EAAAC,KAAA,CAAA,CAAA5C,MAAA,CAAA,CAAA6H,QAAA,CAAAC,CAAAA,OAAA,CAAAC,CAAAA,WAAA,EAAA7E,aAAA;AAAA,IAAA,OAAAlH,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAA4C,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA1C,IAAA,GAAA0C,SAAA,CAAAzC,IAAA;AAAA,QAAA,KAAA,CAAA;UAGVmC,QAAQ,GASN1E,MAAM,CATR0E,QAAQ,EACRmB,QAAQ,GAQN7F,MAAM,CARR6F,QAAQ,EACRqB,aAAa,GAOXlH,MAAM,CAPRkH,aAAa,EACbD,gBAAgB,GAMdjH,MAAM,CANRiH,gBAAgB,EAEhB6C,OAAO,GAIL9J,MAAM,CAJR8J,OAAO,EAEP9I,OAAO,GAELhB,MAAM,CAFRgB,OAAO,EACPE,MAAM,GACJlB,MAAM,CADRkB,MAAM,CAAA;AAAA8D,UAAAA,SAAA,CAAAzC,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,OAGWgC,eAAe,CAChCvE,MAAM,CAAC0E,QAAQ,EACf1E,MAAM,CAACkH,aAAa,EACpBlH,MAAM,CAACiH,gBAAgB,CACxB,CAAA;AAAA,QAAA,KAAA,CAAA;UAJKI,IAAI,GAAArC,SAAA,CAAArB,IAAA,CAAA;AAAA,UAAA,IAAA,CAQN4C,GAAG,EAAA;AAAAvB,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,IACD8E,CAAAA,IAAI,CAACd,GAAG,CAAC,EAAA;AAAAvB,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACX8J,UAAAA,YAAY,GAAG9F,GAAG,CAAA;AAClB1G,UAAAA,OAAO,CAAC+I,GAAG,CAAayD,YAAAA,GAAAA,YAAY,eAAW,CAAC,CAAA;AAAArH,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAEhD1C,UAAAA,OAAO,CAAC+I,GAAG,CAAarC,YAAAA,GAAAA,GAAG,uBAAmB,CAAC,CAAA;AAAAvB,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;UAAA,OAC1B6J,eAAe,CAAC/E,IAAI,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAA1CgF,YAAY,GAAArH,SAAA,CAAArB,IAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAqB,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAyC,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;UAAA,OAGO6J,eAAe,CAAC/E,IAAI,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAA1CgF,YAAY,GAAArH,SAAA,CAAArB,IAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAGd9D,UAAAA,OAAO,CAAC+I,GAAG,CACqB1B,6BAAAA,GAAAA,aAAa,GAASmF,SAAAA,GAAAA,YAAY,GAAShF,UAAAA,GAAAA,IAAI,CAACgF,YAAY,CAAC,GAAA,KAAI,CAChG,CAAA;AAAArH,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;UAAA,OAE4BuG,YAAY,CAAC,6BAA6B,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAAlEyD,cAAc,GAAAvH,SAAA,CAAArB,IAAA,CAAA;UAAA2D,SAAA,GAAAkB,+BAAA,CAECsB,OAAO,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAvC,KAAA,GAAAD,SAAA,EAAA,EAAAmB,IAAA,EAAA;AAAAzD,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAjBoC,MAAM,GAAA4C,KAAA,CAAAtI,KAAA,CAAA;AACXuN,UAAAA,QAAQ,GAAG,EAAE,CAAA;UAAA,IACb7H,EAAAA,MAAM,KAAKuC,aAAa,CAAA,EAAA;AAAAlC,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AAC1BiK,UAAAA,QAAQ,GAAGD,cAAc,CAAA;AAAAvH,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAyC,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAEC/B,YAAY,CAAC;AACrCQ,YAAAA,OAAO,EAAPA,OAAO;AACPD,YAAAA,aAAa,EAAEmG,aAAa;AAC5B/F,YAAAA,cAAc,EAAEwD,MAAM;YACtB1D,MAAM,GAAAwL,OAAA,GAAA,EAAA,EAAAA,OAAA,CACHJ,YAAY,CAAGE,GAAAA,cAAc,EAAAE,OAAA,CAC/B;AACDvL,YAAAA,MAAM,EAANA,MAAM;YACNE,KAAK,EAAEpB,MAAM,CAACoB,KAAAA;AACf,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UATIsL,WAAW,GAAA1H,SAAA,CAAArB,IAAA,CAAA;AAWjB6I,UAAAA,QAAQ,GAAGE,WAAW,CAACL,YAAY,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;AAAArH,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAGXgC,eAAe,CACxCG,QAAQ,EACRC,MAAM,EACNsC,gBAAgB,CACjB,CAAA;AAAA,QAAA,KAAA,EAAA;UAJKY,YAAY,GAAA7C,SAAA,CAAArB,IAAA,CAAA;AAMlBkE,UAAAA,YAAY,CAACwE,YAAY,CAAC,GAAGG,QAAQ,CAAA;UAErC9G,gBAAgB,CAACG,QAAQ,EAAElB,MAAM,EAAEsC,gBAAgB,EAAEY,YAAY,CAAC,CAAA;UAElEhI,OAAO,CAAC+I,GAAG,CACmByD,4BAAAA,GAAAA,YAAY,cAAQ1H,MAAM,GAAA,QAAA,GAAQ6H,QAAQ,GAAA,KAAI,CAC3E,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAxH,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAyC,SAAA,CAAAb,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAM,QAAA,CAAA,CAAA;GAEJ,CAAA,CAAA,CAAA;AAAA,EAAA,OAAA,SA3EY6H,kBAAkBA,CAAA/G,GAAA,EAAAC,GAAA,EAAA;AAAA,IAAA,OAAA1E,KAAA,CAAAuD,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CA2E9B,EAAA;;ACvFM,IAAMqI,gBAAgB,gBAAA,YAAA;EAAA,IAAAxN,IAAA,gBAAAuB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAOb,MAAqB,EAAA;IAAA,IAAA0E,QAAA,EAAAmB,QAAA,EAAAqB,aAAA,EAAAF,UAAA,EAAA8C,OAAA,EAAA9I,OAAA,EAAAE,MAAA,EAAA6I,kBAAA,EAAArC,OAAA,EAAAkF,wBAAA,EAAAtF,SAAA,EAAAC,KAAA,EAAAsF,MAAA,EAAAC,MAAA,EAAAC,aAAA,EAAAC,UAAA,EAAArF,UAAA,EAAAC,MAAA,EAAAjD,MAAA,EAAA+F,gBAAA,EAAAuC,KAAA,EAAAnF,UAAA,EAAAC,MAAA,CAAA;AAAA,IAAA,OAAApH,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAA4C,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA1C,IAAA,GAAA0C,SAAA,CAAAzC,IAAA;AAAA,QAAA,KAAA,CAAA;UAExDmC,QAAQ,GAQN1E,MAAM,CARR0E,QAAQ,EACRmB,QAAQ,GAON7F,MAAM,CAPR6F,QAAQ,EACRqB,aAAa,GAMXlH,MAAM,CANRkH,aAAa,EACbF,UAAU,GAKRhH,MAAM,CALRgH,UAAU,EACV8C,OAAO,GAIL9J,MAAM,CAJR8J,OAAO,EACP9I,OAAO,GAGLhB,MAAM,CAHRgB,OAAO,EACPE,MAAM,GAEJlB,MAAM,CAFRkB,MAAM,EACN6I,kBAAkB,GAChB/J,MAAM,CADR+J,kBAAkB,CAAA;AAAA/E,UAAAA,SAAA,CAAAzC,IAAA,GAAA,CAAA,CAAA;UAAA,OAGEoE,cAAc,CAAC3G,MAAM,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAAtC0H,OAAO,GAAA1C,SAAA,CAAArB,IAAA,CAAA;AAAA,UAAA,IAAA,EAET+D,OAAO,CAACjF,MAAM,KAAK,CAAC,CAAA,EAAA;AAAAuC,YAAAA,SAAA,CAAAzC,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACtB1C,UAAAA,OAAO,CAAC+I,GAAG,CAAC,oBAAoB,CAAC,CAAA;AAAA5D,UAAAA,SAAA,CAAAzC,IAAA,GAAA,CAAA,CAAA;UAAA,OAE3BmH,iBAAiB,CAAC1J,MAAM,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAAA,OAAAgF,SAAA,CAAAd,MAAA,CAAA,QAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;UAKjCrE,OAAO,CAAC+I,GAAG,CACNlB,OAAO,CAACjF,MAAM,GAAA,yEAAA,GAA0EyE,aAAa,GAAA,GAAG,CAC5G,CAAA;AAEK0F,UAAAA,wBAAwB,GAAG,EAAE,CAAA;UAAAtF,SAAA,GAAAkB,+BAAA,CAEdd,OAAO,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAH,KAAA,GAAAD,SAAA,EAAA,EAAAmB,IAAA,EAAA;AAAAzD,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAjBsK,MAAM,GAAAtF,KAAA,CAAAtI,KAAA,CAAA;AAAA+F,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OACMuG,YAAY,CAAC+D,MAAM,CAACtG,GAAG,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAAvCuG,MAAM,GAAA9H,SAAA,CAAArB,IAAA,CAAA;UAEZiJ,wBAAwB,CAAClK,IAAI,CAAC;YAC5B6D,GAAG,EAAEsG,MAAM,CAACtG,GAAG;YACf3B,SAAS,EAAEiI,MAAM,CAACjI,SAAS;AAC3B3F,YAAAA,KAAK,EAAE6N,MAAAA;AACR,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA9H,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;UAGEwK,aAAa,GAAGH,wBAAwB,CAACM,MAAM,CAAC,UAAC5K,IAAI,EAAEC,IAAI,EAAI;YACnED,IAAI,CAACC,IAAI,CAACgE,GAAG,CAAC,GAAGhE,IAAI,CAACtD,KAAK,CAAA;AAE3B,YAAA,OAAOqD,IAAI,CAAA;WACZ,EAAE,EAAE,CAAC,CAAA;AAEA0K,UAAAA,UAAU,GAAGjD,kBAAkB,GAAG,CAAC7C,aAAa,CAAC,GAAG4C,OAAO,CAAA;UAAAnC,UAAA,GAAAa,+BAAA,CAE5CwE,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAApF,MAAA,GAAAD,UAAA,EAAA,EAAAc,IAAA,EAAA;AAAAzD,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAApBoC,MAAM,GAAAiD,MAAA,CAAA3I,KAAA,CAAA;UACXyL,gBAAgB,GAAG,EAAE,CAAA;UAAA,IAErB/F,EAAAA,MAAM,KAAKuC,aAAa,CAAA,EAAA;AAAAlC,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AAC1BmI,UAAAA,gBAAgB,GAAGqC,aAAa,CAAA;AAAA/H,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAyC,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAEP/B,YAAY,CAAC;AACpCO,YAAAA,aAAa,EAAEmG,aAAa;AAC5B/F,YAAAA,cAAc,EAAEwD,MAAM;AACtB3D,YAAAA,OAAO,EAAPA,OAAO;AACPC,YAAAA,MAAM,EAAE8L,aAAa;AACrB7L,YAAAA,MAAM,EAANA,MAAM;YACNE,KAAK,EAAEpB,MAAM,CAACoB,KAAAA;AACf,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAPFsJ,gBAAgB,GAAA1F,SAAA,CAAArB,IAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAsJ,UAAAA,KAAA,gBAAAtM,mBAAA,EAAAC,CAAAA,IAAA,UAAAqM,KAAA,GAAA;YAAA,IAAArI,SAAA,EAAAiD,YAAA,EAAAsF,YAAA,EAAAnD,UAAA,EAAAC,MAAA,EAAA1D,GAAA,CAAA;AAAA,YAAA,OAAA5F,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAiL,OAAA/K,QAAA,EAAA;AAAA,cAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,gBAAA,KAAA,CAAA;kBAUPqC,SAAS,GAAAmD,MAAA,CAAA9I,KAAA,CAAA;AAAAoD,kBAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,kBAAA,OACSgC,eAAe,CAACG,QAAQ,EAAEC,MAAM,EAAEC,SAAS,CAAC,CAAA;AAAA,gBAAA,KAAA,CAAA;kBAAjEiD,YAAY,GAAAxF,QAAA,CAAAsB,IAAA,CAAA;AAEZwJ,kBAAAA,YAAY,GAAGP,wBAAwB,CAACxM,MAAM,CAClD,UAACmG,GAAG,EAAA;AAAA,oBAAA,OAAKA,GAAG,CAAC3B,SAAS,KAAKA,SAAS,CAAA;mBACrC,CAAA,CAAA;AAAA,kBAAA,IAAA,EAEGuI,YAAY,CAAC1K,MAAM,KAAK,CAAC,CAAA,EAAA;AAAAJ,oBAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,oBAAA,MAAA;AAAA,mBAAA;kBAAA,OAAAF,QAAA,CAAA6B,MAAA,CAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAAA,gBAAA,KAAA,CAAA;kBAI7B,KAAA8F,UAAA,GAAAxB,+BAAA,CAAkB2E,YAAY,CAAAlD,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,EAAAvB,EAAAA,IAAA,GAAE;oBAArBlC,GAAG,GAAA0D,MAAA,CAAAhL,KAAA,CAAA;oBACZ4I,YAAY,CAACtB,GAAG,CAACA,GAAG,CAAC,GAAGmE,gBAAgB,CAACnE,GAAG,CAACA,GAAG,CAAC,CAAA;AACnD,mBAAA;kBAEAb,gBAAgB,CAACG,QAAQ,EAAElB,MAAM,EAAEC,SAAS,EAAEiD,YAAY,CAAC,CAAA;AAAA,gBAAA,KAAA,CAAA,CAAA;AAAA,gBAAA,KAAA,KAAA;kBAAA,OAAAxF,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,eAAA;AAAA,aAAA,EAAA8I,KAAA,CAAA,CAAA;AAAA,WAAA,CAAA,CAAA;UAAAnF,UAAA,GAAAU,+BAAA,CAfrCxB,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAe,MAAA,GAAAD,UAAA,EAAA,EAAAW,IAAA,EAAA;AAAAzD,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AAAA,UAAA,OAAAyC,SAAA,CAAAqI,aAAA,CAAAJ,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;UAAA,IAAAjI,CAAAA,SAAA,CAAAG,EAAA,EAAA;AAAAH,YAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,OAAAyC,SAAA,CAAAd,MAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAc,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAyC,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAyC,UAAAA,SAAA,CAAAzC,IAAA,GAAA,EAAA,CAAA;UAAA,OAmB9BmH,iBAAiB,CAAC1J,MAAM,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;AAE/BH,UAAAA,OAAO,CAAC+I,GAAG,CAAA,0BAAA,GAA4BlB,OAAO,CAACjF,MAAM,WAAQ,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAuC,SAAA,CAAAb,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAtD,OAAA,CAAA,CAAA;GAC/D,CAAA,CAAA,CAAA;EAAA,OApFY8L,SAAAA,gBAAgBA,CAAAvI,EAAA,EAAA;AAAA,IAAA,OAAAjF,IAAA,CAAAkF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAoF5B,EAAA;;ACtFM,IAAMgJ,WAAW,gBAAA,YAAA;EAAA,IAAAnO,IAAA,gBAAAuB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAOb,MAAqB,EAAA;IAAA,IAAA0E,QAAA,EAAAmB,QAAA,EAAAqB,aAAA,EAAAF,UAAA,EAAA8C,OAAA,EAAA9I,OAAA,EAAAE,MAAA,EAAAoG,SAAA,EAAAC,KAAA,EAAA3C,SAAA,EAAAsF,iBAAA,EAAAvC,UAAA,EAAAC,MAAA,EAAAjD,MAAA,EAAA0F,UAAA,EAAAC,WAAA,EAAAzI,EAAA,EAAA2I,eAAA,EAAAC,kBAAA,EAAAlE,GAAA,EAAAtH,KAAA,EAAAyL,gBAAA,EAAAC,iBAAA,CAAA;AAAA,IAAA,OAAAhK,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;AAEnDmC,UAAAA,QAAQ,GAON1E,MAAM,CAPR0E,QAAQ,EACRmB,QAAQ,GAMN7F,MAAM,CANR6F,QAAQ,EACRqB,aAAa,GAKXlH,MAAM,CALRkH,aAAa,EACbF,UAAU,GAIRhH,MAAM,CAJRgH,UAAU,EACV8C,OAAO,GAGL9J,MAAM,CAHR8J,OAAO,EACP9I,OAAO,GAELhB,MAAM,CAFRgB,OAAO,EACPE,MAAM,GACJlB,MAAM,CADRkB,MAAM,CAAA;AAAAmB,UAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;UAAAgF,SAAA,GAAAkB,+BAAA,CAIkBxB,UAAU,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;AAAA,UAAA,IAAA,CAAAO,KAAA,GAAAD,SAAA,EAAA,EAAAmB,IAAA,EAAA;AAAApG,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAvBqC,SAAS,GAAA2C,KAAA,CAAAtI,KAAA,CAAA;UACdiL,iBAAyC,GAAA,KAAA,CAAA,CAAA;AAAA7H,UAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;AAAAD,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,OAGjBgC,eAAe,CACvCG,QAAQ,EACRwC,aAAa,EACbtC,SAAS,CACV,CAAA;AAAA,QAAA,KAAA,CAAA;UAJDsF,iBAAiB,GAAA7H,QAAA,CAAAsB,IAAA,CAAA;AAAAtB,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;UAAAD,QAAA,CAAA8C,EAAA,GAAA9C,QAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;UAAA,MAMX,IAAI+C,gBAAgB,CAC6BR,qDAAAA,GAAAA,SAAS,SAC9DsC,aAAa,EACbtC,SAAS,EACTvC,QAAA,CAAA8C,EAAA,YAAiBE,KAAK,GAAAhD,QAAA,CAAA8C,EAAA,GAAWG,SAAS,CAC3C,CAAA;AAAA,QAAA,KAAA,EAAA;UAAAqC,UAAA,GAAAa,+BAAA,CAGkBsB,OAAO,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAAAlC,MAAA,GAAAD,UAAA,EAAA,EAAAc,IAAA,EAAA;AAAApG,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAjBoC,MAAM,GAAAiD,MAAA,CAAA3I,KAAA,CAAA;UAAA,IACX0F,EAAAA,MAAM,KAAKuC,aAAa,CAAA,EAAA;AAAA7E,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,OAAAF,QAAA,CAAA6B,MAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;UAExBmG,UAAkC,GAAA,KAAA,CAAA,CAAA;AAAAhI,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;AAAAD,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAEjBgC,eAAe,CAACG,QAAQ,EAAEC,MAAM,EAAEC,SAAS,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAA/DyF,UAAU,GAAAhI,QAAA,CAAAsB,IAAA,CAAA;AAAAtB,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;UAAAD,QAAA,CAAAkL,EAAA,GAAAlL,QAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AAEVxC,UAAAA,OAAO,CAAC2N,IAAI,CAAA,0CAAA,GACiC7I,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,0BAAuB,CAClG,CAAA;UACDyF,UAAU,GAAG,EAAE,CAAA;AAAA,QAAA,KAAA,EAAA;UAGXC,WAAW,GAA2B,EAAE,CAE9C;AACA,UAAA,KAAAzI,EAAA,GAAA2I,CAAAA,EAAAA,eAAA,GAA2BhI,MAAM,CAACnB,OAAO,CAAC6I,iBAAiB,CAAC,EAAArI,EAAA,GAAA2I,eAAA,CAAA/H,MAAA,EAAAZ,EAAA,EAAE,EAAA;YAAA4I,kBAAA,GAAAD,eAAA,CAAA3I,EAAA,CAAA,EAAlD0E,GAAG,GAAAkE,kBAAA,CAAA,CAAA,CAAA,EAAExL,KAAK,GAAAwL,kBAAA,CAAA,CAAA,CAAA,CAAA;AACpB,YAAA,IAAI,CAACJ,UAAU,CAAC9D,GAAG,CAAC,EAAE;AACpB+D,cAAAA,WAAW,CAAC/D,GAAG,CAAC,GAAGtH,KAAK,CAAA;AAC1B,aAAA;AACF,WAAA;AAEA;UAAA,IACIuD,EAAAA,MAAM,CAAC6E,IAAI,CAACiD,WAAW,CAAC,CAAC7H,MAAM,GAAG,CAAC,CAAA,EAAA;AAAAJ,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AACrC1C,UAAAA,OAAO,CAAC+I,GAAG,CAAA,QAAA,GACApG,MAAM,CAAC6E,IAAI,CAACiD,WAAW,CAAC,CAAC7H,MAAM,GAAoBkC,mBAAAA,GAAAA,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,MAAG,CAC/F,CAAA;UAEG8F,gBAAwC,GAAA,KAAA,CAAA,CAAA;AAAArI,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;AAAAD,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAEjB/B,YAAY,CAAC;AACpCO,YAAAA,aAAa,EAAEmG,aAAa;AAC5B/F,YAAAA,cAAc,EAAEwD,MAAM;AACtB3D,YAAAA,OAAO,EAAPA,OAAO;AACPC,YAAAA,MAAM,EAAEqJ,WAAW;AACnBpJ,YAAAA,MAAM,EAANA,MAAM;YACNE,KAAK,EAAEpB,MAAM,CAACoB,KAAAA;AACf,WAAA,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAPFsJ,gBAAgB,GAAArI,QAAA,CAAAsB,IAAA,CAAA;AAAAtB,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;UAAAD,QAAA,CAAAoL,EAAA,GAAApL,QAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,CAAA;UAAA,MASV,IAAI+C,gBAAgB,CACgBT,wCAAAA,GAAAA,MAAM,uBAAiBC,SAAS,GAAA,GAAA,EACxED,MAAM,EACNC,SAAS,EACTvC,QAAA,CAAAoL,EAAA,YAAiBpI,KAAK,GAAAhD,QAAA,CAAAoL,EAAA,GAAWnI,SAAS,CAC3C,CAAA;AAAA,QAAA,KAAA,EAAA;AAGH;AACMqF,UAAAA,iBAAiB,GAAA7G,QAAA,CAClBuG,EAAAA,EAAAA,UAAU,EACVK,gBAAgB,CAAA,CAAA;AAAArI,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;AAAAD,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;UAAA,OAIbmD,gBAAgB,CACpBG,QAAQ,EACRlB,MAAM,EACNC,SAAS,EACT+F,iBAAiB,CAClB,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAtI,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;UAAAD,QAAA,CAAAqL,EAAA,GAAArL,QAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,CAAA;UAAA,MAEK,IAAI+C,gBAAgB,CACmBT,2CAAAA,GAAAA,MAAM,uBAAiBC,SAAS,GAAA,GAAA,EAC3ED,MAAM,EACNC,SAAS,EACTvC,QAAA,CAAAqL,EAAA,YAAiBrI,KAAK,GAAAhD,QAAA,CAAAqL,EAAA,GAAWpI,SAAS,CAC3C,CAAA;AAAA,QAAA,KAAA,EAAA;AAGHzF,UAAAA,OAAO,CAAC+I,GAAG,CAAA,oCAAA,GAC4BpG,MAAM,CAAC6E,IAAI,CAACiD,WAAW,CAAC,CAAC7H,MAAM,GAAakC,YAAAA,GAAAA,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,MAAG,CACpH,CAAA;AAAAvC,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAED1C,UAAAA,OAAO,CAAC+I,GAAG,CAAA,4BAAA,GACoBjE,MAAM,GAAgBC,eAAAA,GAAAA,SAAS,MAAG,CAChE,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAvC,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAF,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;UAAAD,QAAA,CAAAsL,EAAA,GAAAtL,QAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,UAAA,IAAA,EAKHA,QAAA,CAAAsL,EAAA,YAAiBvI,gBAAgB,CAAA,EAAA;AAAA/C,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,MAAAF,QAAA,CAAAsL,EAAA,CAAA;AAAA,QAAA,KAAA,EAAA;UAAA,MAG/B,IAAIvI,gBAAgB,CACxB,iDAAiD,EACjDE,SAAS,EACTA,SAAS,EACTjD,QAAA,CAAAsL,EAAA,YAAiBtI,KAAK,GAAAhD,QAAA,CAAAsL,EAAA,GAAWrI,SAAS,CAC3C,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAjD,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAtD,OAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;GAEJ,CAAA,CAAA,CAAA;EAAA,OAxHYyM,SAAAA,WAAWA,CAAAlJ,EAAA,EAAA;AAAA,IAAA,OAAAjF,IAAA,CAAAkF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAwHvB,EAAA;;ACrHD;AAEA,IAAMsJ,OAAO,gBAAG,IAAIC,iBAAO,EAAE,CAAA;AAE7BD,OAAO,CACJ5O,IAAI,CAAC,YAAY,CAAC,CAClB8O,WAAW,CACV,6FAA6F,CAC9F,CACAC,OAAO,CAAC,OAAO,CAAC,CAChBC,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CACpDA,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;AAElD,IAAMC,QAAQ,GAAkB,CAC9B;AACEjP,EAAAA,IAAI,EAAE,MAAM;AACZ8O,EAAAA,WAAW,EACT,uHAAuH;AACzHI,EAAAA,MAAM,EAAEvB,gBAAAA;AACT,CAAA,EACD;AACE3N,EAAAA,IAAI,EAAE,SAAS;AACf8O,EAAAA,WAAW,EACT,6GAA6G;AAC/GI,EAAAA,MAAM,EAAE5B,kBAAAA;AACT,CAAA,EACD;AACEtN,EAAAA,IAAI,EAAE,eAAe;AACrB8O,EAAAA,WAAW,EACT,yFAAyF;AAC3FI,EAAAA,MAAM,EAAE7C,YAAAA;AACT,CAAA,EACD;AACErM,EAAAA,IAAI,EAAE,MAAM;AACZ8O,EAAAA,WAAW,EACT,gHAAgH;AAClHI,EAAAA,MAAM,EAAEZ,WAAAA;AACT,CAAA,EACD;AACEtO,EAAAA,IAAI,EAAE,OAAO;AACb8O,EAAAA,WAAW,EACT,yFAAyF;AAC3FI,EAAAA,MAAM,EAAE5C,gBAAAA;AACT,CAAA,CACF,CAAA;AAAA,IAAA2B,KAAA,GAAAA,SAAAA,KAAAA,GAE+B;AAA3B,EAAA,IAAMkB,OAAO,GAAAC,SAAA,CAAAvM,EAAA,CAAA,CAAA;AAChB,EAAA,IAAMwM,GAAG,GAAGT,OAAO,CAACO,OAAO,CAACA,OAAO,CAACnP,IAAI,CAAC,CAAC8O,WAAW,CAACK,OAAO,CAACL,WAAW,CAAC,CAAA;AAE1E;AACA,EAAA,IAAIK,OAAO,CAACnP,IAAI,KAAK,SAAS,EAAE;AAC9BqP,IAAAA,GAAG,CACAL,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC,CACvDM,oBAAoB,CAAC,IAAI,CAAC,CAC1BC,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAA;AACpD,GAAA;AAEAF,EAAAA,GAAG,CAACH,MAAM,eAAA,YAAA;AAAA,IAAA,IAAA/O,IAAA,GAAAuB,iBAAA,eAAAC,mBAAA,EAAA,CAAAC,IAAA,CAAC,SAAAC,OAAAA,CAAO2N,GAAG,EAAEC,OAAO,EAAA;AAAA,MAAA,IAAAC,aAAA,CAAA;AAAA,MAAA,IAAAC,GAAA,EAAA3O,MAAA,EAAA4O,QAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAvI,GAAA,EAAAwI,OAAA,EAAA7N,MAAA,EAAA8N,QAAA,CAAA;AAAA,MAAA,OAAArO,mBAAA,EAAA,CAAAwB,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,UAAA,KAAA,CAAA;AACtBoM,YAAAA,GAAG,GAAGM,MAAM,CAACjP,MAAM,CAAC;cACxBT,IAAI,EAAEqO,OAAO,CAACsB,IAAI,EAAE,CAACC,GAAG,IAAI,MAAA;AAC7B,aAAA,CAAC,CAAA;AAAA9M,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OAEkCrD,UAAU,CAAC;AAC7CG,cAAAA,UAAU,EAAEuO,OAAO,CAACsB,IAAI,EAAE,CAAClP,MAAAA;AAC5B,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;YAFIA,MAAM,GAAAqC,QAAA,CAAAsB,IAAA,CAAA;AAINiL,YAAAA,QAAQ,GAAAF,CAAAA,aAAA,GAAI1O,MAAM,CAACoB,KAAgB,KAAvBsN,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAA,CAAyBU,QAAQ,CAAC,QAAQ,CAAC,CAE7D;YACMP,SAAS,GAAGF,GAAG,CAACU,MAAM,CAACC,cAAc,IAAItP,MAAM,CAACsP,cAAc,CAAA;YAC9DR,SAAS,GAAGH,GAAG,CAACU,MAAM,CAACE,cAAc,IAAIvP,MAAM,CAACuP,cAAc,CAEpE;AACMhJ,YAAAA,GAAG,GAAGqI,QAAQ,GAAGE,SAAS,GAAGD,SAAS,CAAA;YAE5C,IAAI,CAACtI,GAAG,EAAE;AACFwI,cAAAA,OAAO,GAAGH,QAAQ,GAAG,gBAAgB,GAAG,gBAAgB,CAAA;cAC9D/O,OAAO,CAACC,KAAK,CAAA,kBAAA,IACQ8O,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAA,GAAA,+CAAA,GAAgDG,OAAO,GAAA,GAAG,CAC/G,CAAA;AACDtP,cAAAA,OAAO,CAACM,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,aAAA;AAEMmB,YAAAA,MAAM,GAAG,IAAIsO,MAAM,CAAA1L,QAAA,CAAA;AACvB2L,cAAAA,MAAM,EAAElJ,GAAAA;AAAG,aAAA,EACPqI,QAAQ,IAAI;AACdc,cAAAA,OAAO,EAAE,0DAAA;aACV,CACF,CAAC,CAEF;AACA,YAAA,IAAIvB,OAAO,CAACnP,IAAI,KAAK,SAAS,EAAE;AAC9B;cACMgQ,QAAQ,GAAG,OAAOR,GAAG,KAAK,QAAQ,GAAGA,GAAG,GAAGC,OAAO,CAAClI,GAAG,CAAA;AAC5D4H,cAAAA,OAAO,CAACD,MAAM,CAAApK,QAAA,KAAM9D,MAAM,EAAA;AAAEkB,gBAAAA,MAAM,EAANA,MAAAA;AAAM,eAAA,CAAA,EAAI8N,QAAQ,CAAC,CAAA;AACjD,aAAC,MAAM;AACLb,cAAAA,OAAO,CAACD,MAAM,CAAApK,QAAA,KAAM9D,MAAM,EAAA;AAAEkB,gBAAAA,MAAM,EAANA,MAAAA;AAAM,eAAA,CAAE,CAAC,CAAA;AACvC,aAAA;AAAC,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAmB,QAAA,CAAA8B,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAtD,OAAA,CAAA,CAAA;KACF,CAAA,CAAA,CAAA;IAAA,OAAAuD,UAAAA,EAAA,EAAAmB,GAAA,EAAA;AAAA,MAAA,OAAApG,IAAA,CAAAkF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,KAAA,CAAA;GAAC,EAAA,CAAA,CAAA;AACJ,CAAC,CAAA;AArDD,KAAA,IAAAzC,EAAA,GAAA,CAAA,EAAAuM,SAAA,GAAsBH,QAAQ,EAAApM,EAAA,GAAAuM,SAAA,CAAA3L,MAAA,EAAAZ,EAAA,EAAA,EAAA;EAAAoL,KAAA,EAAA,CAAA;AAAA,CAAA;AAuD9BW,OAAO,CAAC1K,KAAK,CAACzD,OAAO,CAACkQ,IAAI,CAAC;;"}
|