@molecule/app-ide-react 1.0.0 → 1.0.1
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@molecule/app-ide-react",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "React IDE components for molecule.dev workspace",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
22
|
"files": [
|
|
23
|
-
"dist"
|
|
23
|
+
"dist",
|
|
24
|
+
"README.md"
|
|
24
25
|
],
|
|
25
26
|
"scripts": {
|
|
26
27
|
"build": "tsc",
|
|
@@ -34,20 +35,20 @@
|
|
|
34
35
|
"node": ">=20"
|
|
35
36
|
},
|
|
36
37
|
"peerDependencies": {
|
|
37
|
-
"@molecule/app-ai-chat": "^1.0.
|
|
38
|
-
"@molecule/app-ai-models": "^1.0.
|
|
39
|
-
"@molecule/app-ai-voice": "^1.0.
|
|
40
|
-
"@molecule/app-code-editor": "^1.0.
|
|
41
|
-
"@molecule/app-country-flags": "^1.0.
|
|
42
|
-
"@molecule/app-i18n": "^1.0.
|
|
43
|
-
"@molecule/app-icons": "^1.0.
|
|
44
|
-
"@molecule/app-ide": "^1.0.
|
|
45
|
-
"@molecule/app-live-preview": "^1.0.
|
|
46
|
-
"@molecule/app-logger": "^1.0.
|
|
47
|
-
"@molecule/app-react": "^1.0.
|
|
48
|
-
"@molecule/app-storage": "^1.0.
|
|
49
|
-
"@molecule/app-ui": "^1.0.
|
|
50
|
-
"@molecule/app-ui-react": "^1.0.
|
|
38
|
+
"@molecule/app-ai-chat": "^1.0.1",
|
|
39
|
+
"@molecule/app-ai-models": "^1.0.1",
|
|
40
|
+
"@molecule/app-ai-voice": "^1.0.1",
|
|
41
|
+
"@molecule/app-code-editor": "^1.0.1",
|
|
42
|
+
"@molecule/app-country-flags": "^1.0.1",
|
|
43
|
+
"@molecule/app-i18n": "^1.0.1",
|
|
44
|
+
"@molecule/app-icons": "^1.0.1",
|
|
45
|
+
"@molecule/app-ide": "^1.0.1",
|
|
46
|
+
"@molecule/app-live-preview": "^1.0.1",
|
|
47
|
+
"@molecule/app-logger": "^1.0.1",
|
|
48
|
+
"@molecule/app-react": "^1.0.1",
|
|
49
|
+
"@molecule/app-storage": "^1.0.1",
|
|
50
|
+
"@molecule/app-ui": "^1.0.1",
|
|
51
|
+
"@molecule/app-ui-react": "^1.0.1",
|
|
51
52
|
"react": "^18.0.0 || ^19.0.0",
|
|
52
53
|
"react-dom": "^18.0.0 || ^19.0.0"
|
|
53
54
|
},
|
|
@@ -55,19 +56,19 @@
|
|
|
55
56
|
"material-file-icons": "2.4.0"
|
|
56
57
|
},
|
|
57
58
|
"devDependencies": {
|
|
58
|
-
"@molecule/app-ai-models": "1.0.
|
|
59
|
-
"@molecule/app-ai-voice": "1.0.
|
|
60
|
-
"@molecule/app-country-flags": "1.0.
|
|
61
|
-
"@molecule/app-i18n": "1.0.
|
|
62
|
-
"@molecule/app-icons": "1.0.
|
|
63
|
-
"@molecule/app-live-preview": "1.0.
|
|
64
|
-
"@molecule/app-locales-ide": "1.0.
|
|
65
|
-
"@molecule/app-logger": "1.0.
|
|
66
|
-
"@molecule/app-react": "1.0.
|
|
67
|
-
"@molecule/app-storage": "1.0.
|
|
68
|
-
"@molecule/app-ui": "1.0.
|
|
69
|
-
"@molecule/app-ui-react": "1.0.
|
|
70
|
-
"@molecule/app-ui-tailwind": "1.0.
|
|
59
|
+
"@molecule/app-ai-models": "1.0.1",
|
|
60
|
+
"@molecule/app-ai-voice": "1.0.1",
|
|
61
|
+
"@molecule/app-country-flags": "1.0.1",
|
|
62
|
+
"@molecule/app-i18n": "1.0.1",
|
|
63
|
+
"@molecule/app-icons": "1.0.1",
|
|
64
|
+
"@molecule/app-live-preview": "1.0.1",
|
|
65
|
+
"@molecule/app-locales-ide": "1.0.1",
|
|
66
|
+
"@molecule/app-logger": "1.0.1",
|
|
67
|
+
"@molecule/app-react": "1.0.1",
|
|
68
|
+
"@molecule/app-storage": "1.0.1",
|
|
69
|
+
"@molecule/app-ui": "1.0.1",
|
|
70
|
+
"@molecule/app-ui-react": "1.0.1",
|
|
71
|
+
"@molecule/app-ui-tailwind": "1.0.1",
|
|
71
72
|
"@testing-library/react": "16.3.2",
|
|
72
73
|
"@types/node": "26.1.2",
|
|
73
74
|
"@types/react": "19.2.17",
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `/models` comparison table.
|
|
3
|
-
*
|
|
4
|
-
* Renders the available models in a sortable table: name, context window,
|
|
5
|
-
* combined cost per 1M tokens, knowledge cutoff, and free-tier availability.
|
|
6
|
-
* Clicking a column header sorts ascending, then toggles to descending; every
|
|
7
|
-
* header carries a neutral SVG sort glyph (`chevrons-up-down`) that resolves to
|
|
8
|
-
* an up/down chevron on the active column — never a unicode arrow or emoji.
|
|
9
|
-
* Free-tier-available models are visually highlighted.
|
|
10
|
-
*
|
|
11
|
-
* The "Cutoff" column replaced a former "Speed" column that was fabricated from
|
|
12
|
-
* input price (it duplicated Cost and could be factually wrong). Knowledge
|
|
13
|
-
* cutoff is a real, factual axis genuinely independent of the price/size axes.
|
|
14
|
-
*
|
|
15
|
-
* Styling uses `getClassMap()` (`cm.*`) for structure/typography/spacing and the
|
|
16
|
-
* `--color-primary` theme token for the active-header accent; the only inline
|
|
17
|
-
* styles are the free-tier highlight tint and the provider accent stripe —
|
|
18
|
-
* things the ClassMap can't express.
|
|
19
|
-
*
|
|
20
|
-
* @module
|
|
21
|
-
*/
|
|
22
|
-
import type { JSX } from 'react';
|
|
23
|
-
import type { AppModelDefinition } from '@molecule/app-ai-models';
|
|
24
|
-
/**
|
|
25
|
-
* Sortable comparison table of available AI models.
|
|
26
|
-
*
|
|
27
|
-
* @param root0 - Component props.
|
|
28
|
-
* @param root0.models - Models to display (already filtered to the current catalog).
|
|
29
|
-
* @param root0.currentModelId - The id of the project's active model, badged as "current".
|
|
30
|
-
* @param root0.isLight - Whether the current theme is light mode (drives highlight tints).
|
|
31
|
-
* @returns The rendered models table.
|
|
32
|
-
*/
|
|
33
|
-
export declare function ModelsTable({ models, currentModelId, isLight, }: {
|
|
34
|
-
models: readonly AppModelDefinition[];
|
|
35
|
-
currentModelId?: string;
|
|
36
|
-
isLight: boolean;
|
|
37
|
-
}): JSX.Element;
|
|
38
|
-
//# sourceMappingURL=ModelsTable.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModelsTable.d.ts","sourceRoot":"","sources":["../../src/components/ModelsTable.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAGhC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AA8BjE;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,cAAc,EACd,OAAO,GACR,EAAE;IACD,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACrC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;CACjB,GAAG,GAAG,CAAC,OAAO,CAqLd"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo, useState } from 'react';
|
|
3
|
-
import { formatTokenCount, PROVIDER_BRAND_COLORS } from '@molecule/app-ai-models';
|
|
4
|
-
import { t } from '@molecule/app-i18n';
|
|
5
|
-
import { getClassMap } from '@molecule/app-ui';
|
|
6
|
-
import { Tooltip } from '@molecule/app-ui-react/components/Tooltip.js';
|
|
7
|
-
import { modelTotalCost, sortModels } from './chat-models-utilities.js';
|
|
8
|
-
import { Icon } from './Icon.js';
|
|
9
|
-
/**
|
|
10
|
-
* Picks the SVG sort glyph for a header: the neutral `chevrons-up-down` when the
|
|
11
|
-
* column is not the active sort, or a single up/down chevron matching the active
|
|
12
|
-
* direction. Keeps one consistent icon family across every header.
|
|
13
|
-
*
|
|
14
|
-
* @param active - Whether this column is the current sort column.
|
|
15
|
-
* @param direction - The current sort direction (only meaningful when `active`).
|
|
16
|
-
* @returns The icon-set glyph name to render.
|
|
17
|
-
*/
|
|
18
|
-
function sortGlyph(active, direction) {
|
|
19
|
-
if (!active)
|
|
20
|
-
return 'chevrons-up-down';
|
|
21
|
-
return direction === 'asc' ? 'chevron-up' : 'chevron-down';
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Sortable comparison table of available AI models.
|
|
25
|
-
*
|
|
26
|
-
* @param root0 - Component props.
|
|
27
|
-
* @param root0.models - Models to display (already filtered to the current catalog).
|
|
28
|
-
* @param root0.currentModelId - The id of the project's active model, badged as "current".
|
|
29
|
-
* @param root0.isLight - Whether the current theme is light mode (drives highlight tints).
|
|
30
|
-
* @returns The rendered models table.
|
|
31
|
-
*/
|
|
32
|
-
export function ModelsTable({ models, currentModelId, isLight, }) {
|
|
33
|
-
const cm = getClassMap();
|
|
34
|
-
const [sort, setSort] = useState({
|
|
35
|
-
column: 'name',
|
|
36
|
-
direction: 'asc',
|
|
37
|
-
});
|
|
38
|
-
const sorted = useMemo(() => sortModels(models, sort.column, sort.direction), [models, sort.column, sort.direction]);
|
|
39
|
-
const columns = [
|
|
40
|
-
{ key: 'name', label: t('ide.chat.models.colName', undefined, { defaultValue: 'Model' }) },
|
|
41
|
-
{
|
|
42
|
-
key: 'context',
|
|
43
|
-
label: t('ide.chat.models.colContext', undefined, { defaultValue: 'Context' }),
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
key: 'cost',
|
|
47
|
-
label: t('ide.chat.models.colCost', undefined, { defaultValue: 'Cost / 1M' }),
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
key: 'cutoff',
|
|
51
|
-
label: t('ide.chat.models.colCutoff', undefined, { defaultValue: 'Cutoff' }),
|
|
52
|
-
},
|
|
53
|
-
{ key: 'free', label: t('ide.chat.models.colFree', undefined, { defaultValue: 'Free' }) },
|
|
54
|
-
];
|
|
55
|
-
const freeHighlightBg = isLight ? 'rgba(34,197,94,0.10)' : 'rgba(34,197,94,0.14)';
|
|
56
|
-
const freeBadgeFg = isLight ? 'rgb(21,128,61)' : 'rgb(74,222,128)';
|
|
57
|
-
const cellPad = cm.sp('px', 2);
|
|
58
|
-
const cellPadY = cm.sp('py', 1);
|
|
59
|
-
return (_jsx("div", { "data-mol-id": "models-table", className: cm.cn(cm.surfaceSecondary, cm.textSize('xs')), style: {
|
|
60
|
-
margin: '6px 0',
|
|
61
|
-
borderRadius: 6,
|
|
62
|
-
overflowX: 'auto',
|
|
63
|
-
}, children: _jsxs("table", { style: { width: '100%', borderCollapse: 'collapse', textAlign: 'left' }, children: [_jsx("thead", { children: _jsx("tr", { children: columns.map((col) => {
|
|
64
|
-
const active = sort.column === col.key;
|
|
65
|
-
return (_jsx("th", { className: cm.cn(cellPad, cellPadY, cm.fontWeight('medium')), style: { whiteSpace: 'nowrap' }, children: _jsxs("button", { type: "button", "data-mol-id": `models-sort-${col.key}`, "aria-label": t('ide.chat.models.sortBy', { column: col.label }, { defaultValue: 'Sort by {{column}}' }), onClick: () => setSort((prev) => prev.column === col.key
|
|
66
|
-
? {
|
|
67
|
-
column: col.key,
|
|
68
|
-
direction: prev.direction === 'asc' ? 'desc' : 'asc',
|
|
69
|
-
}
|
|
70
|
-
: { column: col.key, direction: 'asc' }), className: cm.cn(cm.fontWeight('medium'), active ? undefined : cm.textMuted), style: {
|
|
71
|
-
display: 'inline-flex',
|
|
72
|
-
alignItems: 'center',
|
|
73
|
-
gap: 3,
|
|
74
|
-
background: 'none',
|
|
75
|
-
border: 'none',
|
|
76
|
-
cursor: 'pointer',
|
|
77
|
-
color: active ? 'var(--color-primary)' : 'inherit',
|
|
78
|
-
font: 'inherit',
|
|
79
|
-
padding: 0,
|
|
80
|
-
}, children: [col.label, _jsx(Icon, { name: sortGlyph(active, sort.direction), size: 12, "aria-hidden": "true", "data-mol-id": `models-sort-glyph-${col.key}`, style: { flexShrink: 0, opacity: active ? 1 : 0.6 } })] }) }, col.key));
|
|
81
|
-
}) }) }), _jsx("tbody", { children: sorted.map((model) => {
|
|
82
|
-
const accent = PROVIDER_BRAND_COLORS[model.provider] ?? '#888';
|
|
83
|
-
const isCurrent = model.id === currentModelId;
|
|
84
|
-
return (_jsxs("tr", { className: cm.borderT, style: model.freeTier ? { background: freeHighlightBg } : undefined, children: [_jsxs("td", { className: cm.cn(cellPad, cellPadY), style: { borderLeft: `3px solid ${accent}` }, children: [_jsx("span", { className: cm.fontWeight('medium'), children: model.label }), ' ', _jsx("span", { className: cm.textMuted, style: { fontSize: 10 }, children: model.provider }), isCurrent && (_jsx("span", { className: cm.textMuted, style: {
|
|
85
|
-
marginLeft: 4,
|
|
86
|
-
fontSize: 10,
|
|
87
|
-
background: 'rgba(128,128,128,0.2)',
|
|
88
|
-
padding: '0 4px',
|
|
89
|
-
borderRadius: 3,
|
|
90
|
-
}, children: t('ide.chat.currentBadge', undefined, { defaultValue: 'current' }) }))] }), _jsx("td", { className: cm.cn(cellPad, cellPadY), style: { whiteSpace: 'nowrap' }, children: formatTokenCount(model.contextWindow) }), _jsx("td", { className: cm.cn(cellPad, cellPadY), style: { whiteSpace: 'nowrap' }, children: _jsx(Tooltip, { content: t('ide.chat.models.costBreakdown', {
|
|
91
|
-
input: model.inputPricePerMTok.toFixed(2),
|
|
92
|
-
output: model.outputPricePerMTok.toFixed(2),
|
|
93
|
-
}, { defaultValue: 'Input ${{input}} + output ${{output}} per 1M tokens' }), placement: "top", children: _jsxs("span", { "data-mol-id": `models-cost-${model.id}`, children: ["$", modelTotalCost(model).toFixed(2)] }) }) }), _jsx("td", { className: cm.cn(cellPad, cellPadY), style: { whiteSpace: 'nowrap' }, children: model.knowledgeCutoff }), _jsx("td", { className: cm.cn(cellPad, cellPadY), children: model.freeTier ? (_jsx("span", { style: { color: freeBadgeFg, fontWeight: 600 }, children: t('ide.chat.models.freeYes', undefined, { defaultValue: '✓ Free' }) })) : (_jsx("span", { className: cm.textMuted, children: t('ide.chat.models.freeNo', undefined, { defaultValue: '—' }) })) })] }, model.id));
|
|
94
|
-
}) })] }) }));
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=ModelsTable.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModelsTable.js","sourceRoot":"","sources":["../../src/components/ModelsTable.tsx"],"names":[],"mappings":";AAuBA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAGzC,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,8CAA8C,CAAA;AAGtE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAQhC;;;;;;;;GAQG;AACH,SAAS,SAAS,CAAC,MAAe,EAAE,SAAwB;IAC1D,IAAI,CAAC,MAAM;QAAE,OAAO,kBAAkB,CAAA;IACtC,OAAO,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAA;AAC5D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,MAAM,EACN,cAAc,EACd,OAAO,GAKR;IACC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;IACxB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAwD;QACtF,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,KAAK;KACjB,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EACrD,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CACtC,CAAA;IAED,MAAM,OAAO,GAAgB;QAC3B,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,yBAAyB,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE;QAC1F;YACE,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,CAAC,CAAC,4BAA4B,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;SAC/E;QACD;YACE,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,CAAC,CAAC,yBAAyB,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;SAC9E;QACD;YACE,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,CAAC,CAAC,2BAA2B,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;SAC7E;QACD,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,yBAAyB,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE;KAC1F,CAAA;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAA;IACjF,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAA;IAElE,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAC9B,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAE/B,OAAO,CACL,6BACc,cAAc,EAC1B,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EACxD,KAAK,EAAE;YACL,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,MAAM;SAClB,YAED,iBAAO,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,aAC5E,0BACE,uBACG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;4BACnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAA;4BACtC,OAAO,CACL,aAEE,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAC5D,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,YAE/B,kBACE,IAAI,EAAC,QAAQ,iBACA,eAAe,GAAG,CAAC,GAAG,EAAE,gBACzB,CAAC,CACX,wBAAwB,EACxB,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,EACrB,EAAE,YAAY,EAAE,oBAAoB,EAAE,CACvC,EACD,OAAO,EAAE,GAAG,EAAE,CACZ,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACf,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,GAAG;wCACrB,CAAC,CAAC;4CACE,MAAM,EAAE,GAAG,CAAC,GAAG;4CACf,SAAS,EAAE,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;yCACrD;wCACH,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAC1C,EAEH,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAC5E,KAAK,EAAE;wCACL,OAAO,EAAE,aAAa;wCACtB,UAAU,EAAE,QAAQ;wCACpB,GAAG,EAAE,CAAC;wCACN,UAAU,EAAE,MAAM;wCAClB,MAAM,EAAE,MAAM;wCACd,MAAM,EAAE,SAAS;wCACjB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS;wCAClD,IAAI,EAAE,SAAS;wCACf,OAAO,EAAE,CAAC;qCACX,aAEA,GAAG,CAAC,KAAK,EACV,KAAC,IAAI,IACH,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EACvC,IAAI,EAAE,EAAE,iBACI,MAAM,iBACL,qBAAqB,GAAG,CAAC,GAAG,EAAE,EAC3C,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GACnD,IACK,IA3CJ,GAAG,CAAC,GAAG,CA4CT,CACN,CAAA;wBACH,CAAC,CAAC,GACC,GACC,EACR,0BACG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;wBACpB,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAA;wBAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,KAAK,cAAc,CAAA;wBAC7C,OAAO,CACL,cAEE,SAAS,EAAE,EAAE,CAAC,OAAO,EACrB,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,aAEnE,cACE,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EACnC,KAAK,EAAE,EAAE,UAAU,EAAE,aAAa,MAAM,EAAE,EAAE,aAE5C,eAAM,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAG,KAAK,CAAC,KAAK,GAAQ,EAAC,GAAG,EAClE,eAAM,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YACnD,KAAK,CAAC,QAAQ,GACV,EACN,SAAS,IAAI,CACZ,eACE,SAAS,EAAE,EAAE,CAAC,SAAS,EACvB,KAAK,EAAE;gDACL,UAAU,EAAE,CAAC;gDACb,QAAQ,EAAE,EAAE;gDACZ,UAAU,EAAE,uBAAuB;gDACnC,OAAO,EAAE,OAAO;gDAChB,YAAY,EAAE,CAAC;6CAChB,YAEA,CAAC,CAAC,uBAAuB,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,GAC9D,CACR,IACE,EACL,aAAI,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,YACrE,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,GACnC,EACL,aAAI,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,YAOtE,KAAC,OAAO,IACN,OAAO,EAAE,CAAC,CACR,+BAA+B,EAC/B;4CACE,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;4CACzC,MAAM,EAAE,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;yCAC5C,EACD,EAAE,YAAY,EAAE,qDAAqD,EAAE,CACxE,EACD,SAAS,EAAC,KAAK,YAEf,+BAAmB,eAAe,KAAK,CAAC,EAAE,EAAE,kBACxC,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAC7B,GACC,GACP,EACL,aAAI,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,YACrE,KAAK,CAAC,eAAe,GACnB,EACL,aAAI,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,YACpC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAChB,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,YACjD,CAAC,CAAC,yBAAyB,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,GAC/D,CACR,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAE,EAAE,CAAC,SAAS,YAC1B,CAAC,CAAC,wBAAwB,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,GACzD,CACR,GACE,KAlEA,KAAK,CAAC,EAAE,CAmEV,CACN,CAAA;oBACH,CAAC,CAAC,GACI,IACF,GACJ,CACP,CAAA;AACH,CAAC"}
|