| import { c as _c } from "react/compiler-runtime"; | |
| import React, { type ReactNode } from 'react'; | |
| import type { KeyboardEvent } from '../../../../ink/events/keyboard-event.js'; | |
| import { Box, Text } from '../../../../ink.js'; | |
| import { useKeybinding } from '../../../../keybindings/useKeybinding.js'; | |
| import { isAutoMemoryEnabled } from '../../../../memdir/paths.js'; | |
| import type { Tools } from '../../../../Tool.js'; | |
| import { getMemoryScopeDisplay } from '../../../../tools/AgentTool/agentMemory.js'; | |
| import type { AgentDefinition } from '../../../../tools/AgentTool/loadAgentsDir.js'; | |
| import { truncateToWidth } from '../../../../utils/format.js'; | |
| import { getAgentModelDisplay } from '../../../../utils/model/agent.js'; | |
| import { ConfigurableShortcutHint } from '../../../ConfigurableShortcutHint.js'; | |
| import { Byline } from '../../../design-system/Byline.js'; | |
| import { KeyboardShortcutHint } from '../../../design-system/KeyboardShortcutHint.js'; | |
| import { useWizard } from '../../../wizard/index.js'; | |
| import { WizardDialogLayout } from '../../../wizard/WizardDialogLayout.js'; | |
| import { getNewRelativeAgentFilePath } from '../../agentFileUtils.js'; | |
| import { validateAgent } from '../../validateAgent.js'; | |
| import type { AgentWizardData } from '../types.js'; | |
| type Props = { | |
| tools: Tools; | |
| existingAgents: AgentDefinition[]; | |
| onSave: () => void; | |
| onSaveAndEdit: () => void; | |
| error?: string | null; | |
| }; | |
| export function ConfirmStep(t0) { | |
| const $ = _c(88); | |
| const { | |
| tools, | |
| existingAgents, | |
| onSave, | |
| onSaveAndEdit, | |
| error | |
| } = t0; | |
| const { | |
| goBack, | |
| wizardData | |
| } = useWizard(); | |
| let t1; | |
| if ($[0] === Symbol.for("react.memo_cache_sentinel")) { | |
| t1 = { | |
| context: "Confirmation" | |
| }; | |
| $[0] = t1; | |
| } else { | |
| t1 = $[0]; | |
| } | |
| useKeybinding("confirm:no", goBack, t1); | |
| let t2; | |
| if ($[1] !== onSave || $[2] !== onSaveAndEdit) { | |
| t2 = e => { | |
| if (e.key === "s" || e.key === "return") { | |
| e.preventDefault(); | |
| onSave(); | |
| } else { | |
| if (e.key === "e") { | |
| e.preventDefault(); | |
| onSaveAndEdit(); | |
| } | |
| } | |
| }; | |
| $[1] = onSave; | |
| $[2] = onSaveAndEdit; | |
| $[3] = t2; | |
| } else { | |
| t2 = $[3]; | |
| } | |
| const handleKeyDown = t2; | |
| const agent = wizardData.finalAgent; | |
| let T0; | |
| let T1; | |
| let t10; | |
| let t11; | |
| let t12; | |
| let t13; | |
| let t14; | |
| let t15; | |
| let t16; | |
| let t17; | |
| let t18; | |
| let t19; | |
| let t3; | |
| let t4; | |
| let t5; | |
| let t6; | |
| let t7; | |
| let t8; | |
| let t9; | |
| if ($[4] !== agent || $[5] !== existingAgents || $[6] !== handleKeyDown || $[7] !== tools || $[8] !== wizardData.location) { | |
| const validation = validateAgent(agent, tools, existingAgents); | |
| let t20; | |
| if ($[28] !== agent) { | |
| t20 = truncateToWidth(agent.getSystemPrompt(), 240); | |
| $[28] = agent; | |
| $[29] = t20; | |
| } else { | |
| t20 = $[29]; | |
| } | |
| const systemPromptPreview = t20; | |
| let t21; | |
| if ($[30] !== agent.whenToUse) { | |
| t21 = truncateToWidth(agent.whenToUse, 240); | |
| $[30] = agent.whenToUse; | |
| $[31] = t21; | |
| } else { | |
| t21 = $[31]; | |
| } | |
| const whenToUsePreview = t21; | |
| const getToolsDisplay = _temp; | |
| let t22; | |
| if ($[32] !== agent.memory) { | |
| t22 = isAutoMemoryEnabled() ? <Text><Text bold={true}>Memory</Text>: {getMemoryScopeDisplay(agent.memory)}</Text> : null; | |
| $[32] = agent.memory; | |
| $[33] = t22; | |
| } else { | |
| t22 = $[33]; | |
| } | |
| const memoryDisplayElement = t22; | |
| T1 = WizardDialogLayout; | |
| t18 = "Confirm and save"; | |
| if ($[34] === Symbol.for("react.memo_cache_sentinel")) { | |
| t19 = <Byline><KeyboardShortcutHint shortcut="s/Enter" action="save" /><KeyboardShortcutHint shortcut="e" action="edit in your editor" /><ConfigurableShortcutHint action="confirm:no" context="Confirmation" fallback="Esc" description="cancel" /></Byline>; | |
| $[34] = t19; | |
| } else { | |
| t19 = $[34]; | |
| } | |
| T0 = Box; | |
| t3 = "column"; | |
| t4 = 0; | |
| t5 = true; | |
| t6 = handleKeyDown; | |
| let t23; | |
| if ($[35] === Symbol.for("react.memo_cache_sentinel")) { | |
| t23 = <Text bold={true}>Name</Text>; | |
| $[35] = t23; | |
| } else { | |
| t23 = $[35]; | |
| } | |
| if ($[36] !== agent.agentType) { | |
| t7 = <Text>{t23}: {agent.agentType}</Text>; | |
| $[36] = agent.agentType; | |
| $[37] = t7; | |
| } else { | |
| t7 = $[37]; | |
| } | |
| let t24; | |
| if ($[38] === Symbol.for("react.memo_cache_sentinel")) { | |
| t24 = <Text bold={true}>Location</Text>; | |
| $[38] = t24; | |
| } else { | |
| t24 = $[38]; | |
| } | |
| let t25; | |
| if ($[39] !== agent.agentType || $[40] !== wizardData.location) { | |
| t25 = getNewRelativeAgentFilePath({ | |
| source: wizardData.location, | |
| agentType: agent.agentType | |
| }); | |
| $[39] = agent.agentType; | |
| $[40] = wizardData.location; | |
| $[41] = t25; | |
| } else { | |
| t25 = $[41]; | |
| } | |
| if ($[42] !== t25) { | |
| t8 = <Text>{t24}:{" "}{t25}</Text>; | |
| $[42] = t25; | |
| $[43] = t8; | |
| } else { | |
| t8 = $[43]; | |
| } | |
| let t26; | |
| if ($[44] === Symbol.for("react.memo_cache_sentinel")) { | |
| t26 = <Text bold={true}>Tools</Text>; | |
| $[44] = t26; | |
| } else { | |
| t26 = $[44]; | |
| } | |
| let t27; | |
| if ($[45] !== agent.tools) { | |
| t27 = getToolsDisplay(agent.tools); | |
| $[45] = agent.tools; | |
| $[46] = t27; | |
| } else { | |
| t27 = $[46]; | |
| } | |
| if ($[47] !== t27) { | |
| t9 = <Text>{t26}: {t27}</Text>; | |
| $[47] = t27; | |
| $[48] = t9; | |
| } else { | |
| t9 = $[48]; | |
| } | |
| let t28; | |
| if ($[49] === Symbol.for("react.memo_cache_sentinel")) { | |
| t28 = <Text bold={true}>Model</Text>; | |
| $[49] = t28; | |
| } else { | |
| t28 = $[49]; | |
| } | |
| let t29; | |
| if ($[50] !== agent.model) { | |
| t29 = getAgentModelDisplay(agent.model); | |
| $[50] = agent.model; | |
| $[51] = t29; | |
| } else { | |
| t29 = $[51]; | |
| } | |
| if ($[52] !== t29) { | |
| t10 = <Text>{t28}: {t29}</Text>; | |
| $[52] = t29; | |
| $[53] = t10; | |
| } else { | |
| t10 = $[53]; | |
| } | |
| t11 = memoryDisplayElement; | |
| if ($[54] === Symbol.for("react.memo_cache_sentinel")) { | |
| t12 = <Box marginTop={1}><Text><Text bold={true}>Description</Text> (tells Claude when to use this agent):</Text></Box>; | |
| $[54] = t12; | |
| } else { | |
| t12 = $[54]; | |
| } | |
| if ($[55] !== whenToUsePreview) { | |
| t13 = <Box marginLeft={2} marginTop={1}><Text>{whenToUsePreview}</Text></Box>; | |
| $[55] = whenToUsePreview; | |
| $[56] = t13; | |
| } else { | |
| t13 = $[56]; | |
| } | |
| if ($[57] === Symbol.for("react.memo_cache_sentinel")) { | |
| t14 = <Box marginTop={1}><Text><Text bold={true}>System prompt</Text>:</Text></Box>; | |
| $[57] = t14; | |
| } else { | |
| t14 = $[57]; | |
| } | |
| if ($[58] !== systemPromptPreview) { | |
| t15 = <Box marginLeft={2} marginTop={1}><Text>{systemPromptPreview}</Text></Box>; | |
| $[58] = systemPromptPreview; | |
| $[59] = t15; | |
| } else { | |
| t15 = $[59]; | |
| } | |
| t16 = validation.warnings.length > 0 && <Box marginTop={1} flexDirection="column"><Text color="warning">Warnings:</Text>{validation.warnings.map(_temp2)}</Box>; | |
| t17 = validation.errors.length > 0 && <Box marginTop={1} flexDirection="column"><Text color="error">Errors:</Text>{validation.errors.map(_temp3)}</Box>; | |
| $[4] = agent; | |
| $[5] = existingAgents; | |
| $[6] = handleKeyDown; | |
| $[7] = tools; | |
| $[8] = wizardData.location; | |
| $[9] = T0; | |
| $[10] = T1; | |
| $[11] = t10; | |
| $[12] = t11; | |
| $[13] = t12; | |
| $[14] = t13; | |
| $[15] = t14; | |
| $[16] = t15; | |
| $[17] = t16; | |
| $[18] = t17; | |
| $[19] = t18; | |
| $[20] = t19; | |
| $[21] = t3; | |
| $[22] = t4; | |
| $[23] = t5; | |
| $[24] = t6; | |
| $[25] = t7; | |
| $[26] = t8; | |
| $[27] = t9; | |
| } else { | |
| T0 = $[9]; | |
| T1 = $[10]; | |
| t10 = $[11]; | |
| t11 = $[12]; | |
| t12 = $[13]; | |
| t13 = $[14]; | |
| t14 = $[15]; | |
| t15 = $[16]; | |
| t16 = $[17]; | |
| t17 = $[18]; | |
| t18 = $[19]; | |
| t19 = $[20]; | |
| t3 = $[21]; | |
| t4 = $[22]; | |
| t5 = $[23]; | |
| t6 = $[24]; | |
| t7 = $[25]; | |
| t8 = $[26]; | |
| t9 = $[27]; | |
| } | |
| let t20; | |
| if ($[60] !== error) { | |
| t20 = error && <Box marginTop={1}><Text color="error">{error}</Text></Box>; | |
| $[60] = error; | |
| $[61] = t20; | |
| } else { | |
| t20 = $[61]; | |
| } | |
| let t21; | |
| if ($[62] === Symbol.for("react.memo_cache_sentinel")) { | |
| t21 = <Text bold={true}>s</Text>; | |
| $[62] = t21; | |
| } else { | |
| t21 = $[62]; | |
| } | |
| let t22; | |
| if ($[63] === Symbol.for("react.memo_cache_sentinel")) { | |
| t22 = <Text bold={true}>Enter</Text>; | |
| $[63] = t22; | |
| } else { | |
| t22 = $[63]; | |
| } | |
| let t23; | |
| if ($[64] === Symbol.for("react.memo_cache_sentinel")) { | |
| t23 = <Box marginTop={2}><Text color="success">Press {t21} or {t22} to save,{" "}<Text bold={true}>e</Text> to save and edit</Text></Box>; | |
| $[64] = t23; | |
| } else { | |
| t23 = $[64]; | |
| } | |
| let t24; | |
| if ($[65] !== T0 || $[66] !== t10 || $[67] !== t11 || $[68] !== t12 || $[69] !== t13 || $[70] !== t14 || $[71] !== t15 || $[72] !== t16 || $[73] !== t17 || $[74] !== t20 || $[75] !== t3 || $[76] !== t4 || $[77] !== t5 || $[78] !== t6 || $[79] !== t7 || $[80] !== t8 || $[81] !== t9) { | |
| t24 = <T0 flexDirection={t3} tabIndex={t4} autoFocus={t5} onKeyDown={t6}>{t7}{t8}{t9}{t10}{t11}{t12}{t13}{t14}{t15}{t16}{t17}{t20}{t23}</T0>; | |
| $[65] = T0; | |
| $[66] = t10; | |
| $[67] = t11; | |
| $[68] = t12; | |
| $[69] = t13; | |
| $[70] = t14; | |
| $[71] = t15; | |
| $[72] = t16; | |
| $[73] = t17; | |
| $[74] = t20; | |
| $[75] = t3; | |
| $[76] = t4; | |
| $[77] = t5; | |
| $[78] = t6; | |
| $[79] = t7; | |
| $[80] = t8; | |
| $[81] = t9; | |
| $[82] = t24; | |
| } else { | |
| t24 = $[82]; | |
| } | |
| let t25; | |
| if ($[83] !== T1 || $[84] !== t18 || $[85] !== t19 || $[86] !== t24) { | |
| t25 = <T1 subtitle={t18} footerText={t19}>{t24}</T1>; | |
| $[83] = T1; | |
| $[84] = t18; | |
| $[85] = t19; | |
| $[86] = t24; | |
| $[87] = t25; | |
| } else { | |
| t25 = $[87]; | |
| } | |
| return t25; | |
| } | |
| function _temp3(err, i_0) { | |
| return <Text key={i_0} color="error">{" "}• {err}</Text>; | |
| } | |
| function _temp2(warning, i) { | |
| return <Text key={i} dimColor={true}>{" "}• {warning}</Text>; | |
| } | |
| function _temp(toolNames) { | |
| if (toolNames === undefined) { | |
| return "All tools"; | |
| } | |
| if (toolNames.length === 0) { | |
| return "None"; | |
| } | |
| if (toolNames.length === 1) { | |
| return toolNames[0] || "None"; | |
| } | |
| if (toolNames.length === 2) { | |
| return toolNames.join(" and "); | |
| } | |
| return `${toolNames.slice(0, -1).join(", ")}, and ${toolNames[toolNames.length - 1]}`; | |
| } | |
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlJlYWN0Tm9kZSIsIktleWJvYXJkRXZlbnQiLCJCb3giLCJUZXh0IiwidXNlS2V5YmluZGluZyIsImlzQXV0b01lbW9yeUVuYWJsZWQiLCJUb29scyIsImdldE1lbW9yeVNjb3BlRGlzcGxheSIsIkFnZW50RGVmaW5pdGlvbiIsInRydW5jYXRlVG9XaWR0aCIsImdldEFnZW50TW9kZWxEaXNwbGF5IiwiQ29uZmlndXJhYmxlU2hvcnRjdXRIaW50IiwiQnlsaW5lIiwiS2V5Ym9hcmRTaG9ydGN1dEhpbnQiLCJ1c2VXaXphcmQiLCJXaXphcmREaWFsb2dMYXlvdXQiLCJnZXROZXdSZWxhdGl2ZUFnZW50RmlsZVBhdGgiLCJ2YWxpZGF0ZUFnZW50IiwiQWdlbnRXaXphcmREYXRhIiwiUHJvcHMiLCJ0b29scyIsImV4aXN0aW5nQWdlbnRzIiwib25TYXZlIiwib25TYXZlQW5kRWRpdCIsImVycm9yIiwiQ29uZmlybVN0ZXAiLCJ0MCIsIiQiLCJfYyIsImdvQmFjayIsIndpemFyZERhdGEiLCJ0MSIsIlN5bWJvbCIsImZvciIsImNvbnRleHQiLCJ0MiIsImUiLCJrZXkiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZUtleURvd24iLCJhZ2VudCIsImZpbmFsQWdlbnQiLCJUMCIsIlQxIiwidDEwIiwidDExIiwidDEyIiwidDEzIiwidDE0IiwidDE1IiwidDE2IiwidDE3IiwidDE4IiwidDE5IiwidDMiLCJ0NCIsInQ1IiwidDYiLCJ0NyIsInQ4IiwidDkiLCJsb2NhdGlvbiIsInZhbGlkYXRpb24iLCJ0MjAiLCJnZXRTeXN0ZW1Qcm9tcHQiLCJzeXN0ZW1Qcm9tcHRQcmV2aWV3IiwidDIxIiwid2hlblRvVXNlIiwid2hlblRvVXNlUHJldmlldyIsImdldFRvb2xzRGlzcGxheSIsIl90ZW1wIiwidDIyIiwibWVtb3J5IiwibWVtb3J5RGlzcGxheUVsZW1lbnQiLCJ0MjMiLCJhZ2VudFR5cGUiLCJ0MjQiLCJ0MjUiLCJzb3VyY2UiLCJ0MjYiLCJ0MjciLCJ0MjgiLCJ0MjkiLCJtb2RlbCIsIndhcm5pbmdzIiwibGVuZ3RoIiwibWFwIiwiX3RlbXAyIiwiZXJyb3JzIiwiX3RlbXAzIiwiZXJyIiwiaV8wIiwiaSIsIndhcm5pbmciLCJ0b29sTmFtZXMiLCJ1bmRlZmluZWQiLCJqb2luIiwic2xpY2UiXSwic291cmNlcyI6WyJDb25maXJtU3RlcC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHR5cGUgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IEtleWJvYXJkRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9pbmsvZXZlbnRzL2tleWJvYXJkLWV2ZW50LmpzJ1xuaW1wb3J0IHsgQm94LCBUZXh0IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW5rLmpzJ1xuaW1wb3J0IHsgdXNlS2V5YmluZGluZyB9IGZyb20gJy4uLy4uLy4uLy4uL2tleWJpbmRpbmdzL3VzZUtleWJpbmRpbmcuanMnXG5pbXBvcnQgeyBpc0F1dG9NZW1vcnlFbmFibGVkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbWVtZGlyL3BhdGhzLmpzJ1xuaW1wb3J0IHR5cGUgeyBUb29scyB9IGZyb20gJy4uLy4uLy4uLy4uL1Rvb2wuanMnXG5pbXBvcnQgeyBnZXRNZW1vcnlTY29wZURpc3BsYXkgfSBmcm9tICcuLi8uLi8uLi8uLi90b29scy9BZ2VudFRvb2wvYWdlbnRNZW1vcnkuanMnXG5pbXBvcnQgdHlwZSB7IEFnZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3Rvb2xzL0FnZW50VG9vbC9sb2FkQWdlbnRzRGlyLmpzJ1xuaW1wb3J0IHsgdHJ1bmNhdGVUb1dpZHRoIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvZm9ybWF0LmpzJ1xuaW1wb3J0IHsgZ2V0QWdlbnRNb2RlbERpc3BsYXkgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9tb2RlbC9hZ2VudC5qcydcbmltcG9ydCB7IENvbmZpZ3VyYWJsZVNob3J0Y3V0SGludCB9IGZyb20gJy4uLy4uLy4uL0NvbmZpZ3VyYWJsZVNob3J0Y3V0SGludC5qcydcbmltcG9ydCB7IEJ5bGluZSB9IGZyb20gJy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vQnlsaW5lLmpzJ1xuaW1wb3J0IHsgS2V5Ym9hcmRTaG9ydGN1dEhpbnQgfSBmcm9tICcuLi8uLi8uLi9kZXNpZ24tc3lzdGVtL0tleWJvYXJkU2hvcnRjdXRIaW50LmpzJ1xuaW1wb3J0IHsgdXNlV2l6YXJkIH0gZnJvbSAnLi4vLi4vLi4vd2l6YXJkL2luZGV4LmpzJ1xuaW1wb3J0IHsgV2l6YXJkRGlhbG9nTGF5b3V0IH0gZnJvbSAnLi4vLi4vLi4vd2l6YXJkL1dpemFyZERpYWxvZ0xheW91dC5qcydcbmltcG9ydCB7IGdldE5ld1JlbGF0aXZlQWdlbnRGaWxlUGF0aCB9IGZyb20gJy4uLy4uL2FnZW50RmlsZVV0aWxzLmpzJ1xuaW1wb3J0IHsgdmFsaWRhdGVBZ2VudCB9IGZyb20gJy4uLy4uL3ZhbGlkYXRlQWdlbnQuanMnXG5pbXBvcnQgdHlwZSB7IEFnZW50V2l6YXJkRGF0YSB9IGZyb20gJy4uL3R5cGVzLmpzJ1xuXG50eXBlIFByb3BzID0ge1xuICB0b29sczogVG9vbHNcbiAgZXhpc3RpbmdBZ2VudHM6IEFnZW50RGVmaW5pdGlvbltdXG4gIG9uU2F2ZTogKCkgPT4gdm9pZFxuICBvblNhdmVBbmRFZGl0OiAoKSA9PiB2b2lkXG4gIGVycm9yPzogc3RyaW5nIHwgbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gQ29uZmlybVN0ZXAoe1xuICB0b29scyxcbiAgZXhpc3RpbmdBZ2VudHMsXG4gIG9uU2F2ZSxcbiAgb25TYXZlQW5kRWRpdCxcbiAgZXJyb3IsXG59OiBQcm9wcyk6IFJlYWN0Tm9kZSB7XG4gIGNvbnN0IHsgZ29CYWNrLCB3aXphcmREYXRhIH0gPSB1c2VXaXphcmQ8QWdlbnRXaXphcmREYXRhPigpXG5cbiAgdXNlS2V5YmluZGluZygnY29uZmlybTpubycsIGdvQmFjaywgeyBjb250ZXh0OiAnQ29uZmlybWF0aW9uJyB9KVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmIChlLmtleSA9PT0gJ3MnIHx8IGUua2V5ID09PSAncmV0dXJuJykge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBvblNhdmUoKVxuICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdlJykge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBvblNhdmVBbmRFZGl0KClcbiAgICB9XG4gIH1cblxuICBjb25zdCBhZ2VudCA9IHdpemFyZERhdGEuZmluYWxBZ2VudCFcbiAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlQWdlbnQoYWdlbnQsIHRvb2xzLCBleGlzdGluZ0FnZW50cylcblxuICBjb25zdCBzeXN0ZW1Qcm9tcHRQcmV2aWV3ID0gdHJ1bmNhdGVUb1dpZHRoKGFnZW50LmdldFN5c3RlbVByb21wdCgpLCAyNDApXG4gIGNvbnN0IHdoZW5Ub1VzZVByZXZpZXcgPSB0cnVuY2F0ZVRvV2lkdGgoYWdlbnQud2hlblRvVXNlLCAyNDApXG5cbiAgY29uc3QgZ2V0VG9vbHNEaXNwbGF5ID0gKHRvb2xOYW1lczogc3RyaW5nW10gfCB1bmRlZmluZWQpOiBzdHJpbmcgPT4ge1xuICAgIC8vIHVuZGVmaW5lZCBtZWFucyBcImFsbCB0b29sc1wiIHBlciBQUiBzZW1hbnRpY1xuICAgIGlmICh0b29sTmFtZXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuICdBbGwgdG9vbHMnXG4gICAgaWYgKHRvb2xOYW1lcy5sZW5ndGggPT09IDApIHJldHVybiAnTm9uZSdcbiAgICBpZiAodG9vbE5hbWVzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHRvb2xOYW1lc1swXSB8fCAnTm9uZSdcbiAgICBpZiAodG9vbE5hbWVzLmxlbmd0aCA9PT0gMikgcmV0dXJuIHRvb2xOYW1lcy5qb2luKCcgYW5kICcpXG4gICAgcmV0dXJuIGAke3Rvb2xOYW1lcy5zbGljZSgwLCAtMSkuam9pbignLCAnKX0sIGFuZCAke3Rvb2xOYW1lc1t0b29sTmFtZXMubGVuZ3RoIC0gMV19YFxuICB9XG5cbiAgLy8gQ29tcHV0ZSBtZW1vcnkgZGlzcGxheSBvdXRzaWRlIEpTWFxuICBjb25zdCBtZW1vcnlEaXNwbGF5RWxlbWVudCA9IGlzQXV0b01lbW9yeUVuYWJsZWQoKSA/IChcbiAgICA8VGV4dD5cbiAgICAgIDxUZXh0IGJvbGQ+TWVtb3J5PC9UZXh0Pjoge2dldE1lbW9yeVNjb3BlRGlzcGxheShhZ2VudC5tZW1vcnkpfVxuICAgIDwvVGV4dD5cbiAgKSA6IG51bGxcblxuICByZXR1cm4gKFxuICAgIDxXaXphcmREaWFsb2dMYXlvdXRcbiAgICAgIHN1YnRpdGxlPVwiQ29uZmlybSBhbmQgc2F2ZVwiXG4gICAgICBmb290ZXJUZXh0PXtcbiAgICAgICAgPEJ5bGluZT5cbiAgICAgICAgICA8S2V5Ym9hcmRTaG9ydGN1dEhpbnQgc2hvcnRjdXQ9XCJzL0VudGVyXCIgYWN0aW9uPVwic2F2ZVwiIC8+XG4gICAgICAgICAgPEtleWJvYXJkU2hvcnRjdXRIaW50IHNob3J0Y3V0PVwiZVwiIGFjdGlvbj1cImVkaXQgaW4geW91ciBlZGl0b3JcIiAvPlxuICAgICAgICAgIDxDb25maWd1cmFibGVTaG9ydGN1dEhpbnRcbiAgICAgICAgICAgIGFjdGlvbj1cImNvbmZpcm06bm9cIlxuICAgICAgICAgICAgY29udGV4dD1cIkNvbmZpcm1hdGlvblwiXG4gICAgICAgICAgICBmYWxsYmFjaz1cIkVzY1wiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cImNhbmNlbFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9CeWxpbmU+XG4gICAgICB9XG4gICAgPlxuICAgICAgPEJveFxuICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICA+XG4gICAgICAgIDxUZXh0PlxuICAgICAgICAgIDxUZXh0IGJvbGQ+TmFtZTwvVGV4dD46IHthZ2VudC5hZ2VudFR5cGV9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgICAgPFRleHQ+XG4gICAgICAgICAgPFRleHQgYm9sZD5Mb2NhdGlvbjwvVGV4dD46eycgJ31cbiAgICAgICAgICB7Z2V0TmV3UmVsYXRpdmVBZ2VudEZpbGVQYXRoKHtcbiAgICAgICAgICAgIHNvdXJjZTogd2l6YXJkRGF0YS5sb2NhdGlvbiEsXG4gICAgICAgICAgICBhZ2VudFR5cGU6IGFnZW50LmFnZW50VHlwZSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9UZXh0PlxuICAgICAgICA8VGV4dD5cbiAgICAgICAgICA8VGV4dCBib2xkPlRvb2xzPC9UZXh0Pjoge2dldFRvb2xzRGlzcGxheShhZ2VudC50b29scyl9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgICAgPFRleHQ+XG4gICAgICAgICAgPFRleHQgYm9sZD5Nb2RlbDwvVGV4dD46IHtnZXRBZ2VudE1vZGVsRGlzcGxheShhZ2VudC5tb2RlbCl9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgICAge21lbW9yeURpc3BsYXlFbGVtZW50fVxuXG4gICAgICAgIDxCb3ggbWFyZ2luVG9wPXsxfT5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIDxUZXh0IGJvbGQ+RGVzY3JpcHRpb248L1RleHQ+ICh0ZWxscyBDbGF1ZGUgd2hlbiB0byB1c2UgdGhpcyBhZ2VudCk6XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgICAgPEJveCBtYXJnaW5MZWZ0PXsyfSBtYXJnaW5Ub3A9ezF9PlxuICAgICAgICAgIDxUZXh0Pnt3aGVuVG9Vc2VQcmV2aWV3fTwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG5cbiAgICAgICAgPEJveCBtYXJnaW5Ub3A9ezF9PlxuICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgPFRleHQgYm9sZD5TeXN0ZW0gcHJvbXB0PC9UZXh0PjpcbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8Qm94IG1hcmdpbkxlZnQ9ezJ9IG1hcmdpblRvcD17MX0+XG4gICAgICAgICAgPFRleHQ+e3N5c3RlbVByb21wdFByZXZpZXd9PC9UZXh0PlxuICAgICAgICA8L0JveD5cblxuICAgICAgICB7dmFsaWRhdGlvbi53YXJuaW5ncy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICA8Qm94IG1hcmdpblRvcD17MX0gZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgPFRleHQgY29sb3I9XCJ3YXJuaW5nXCI+V2FybmluZ3M6PC9UZXh0PlxuICAgICAgICAgICAge3ZhbGlkYXRpb24ud2FybmluZ3MubWFwKCh3YXJuaW5nLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxUZXh0IGtleT17aX0gZGltQ29sb3I+XG4gICAgICAgICAgICAgICAgeycgJ31cbiAgICAgICAgICAgICAgICDigKIge3dhcm5pbmd9XG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvQm94PlxuICAgICAgICApfVxuXG4gICAgICAgIHt2YWxpZGF0aW9uLmVycm9ycy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICA8Qm94IG1hcmdpblRvcD17MX0gZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgPFRleHQgY29sb3I9XCJlcnJvclwiPkVycm9yczo8L1RleHQ+XG4gICAgICAgICAgICB7dmFsaWRhdGlvbi5lcnJvcnMubWFwKChlcnIsIGkpID0+IChcbiAgICAgICAgICAgICAgPFRleHQga2V5PXtpfSBjb2xvcj1cImVycm9yXCI+XG4gICAgICAgICAgICAgICAgeycgJ31cbiAgICAgICAgICAgICAgICDigKIge2Vycn1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG5cbiAgICAgICAge2Vycm9yICYmIChcbiAgICAgICAgICA8Qm94IG1hcmdpblRvcD17MX0+XG4gICAgICAgICAgICA8VGV4dCBjb2xvcj1cImVycm9yXCI+e2Vycm9yfTwvVGV4dD5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cblxuICAgICAgICA8Qm94IG1hcmdpblRvcD17Mn0+XG4gICAgICAgICAgPFRleHQgY29sb3I9XCJzdWNjZXNzXCI+XG4gICAgICAgICAgICBQcmVzcyA8VGV4dCBib2xkPnM8L1RleHQ+IG9yIDxUZXh0IGJvbGQ+RW50ZXI8L1RleHQ+IHRvIHNhdmUseycgJ31cbiAgICAgICAgICAgIDxUZXh0IGJvbGQ+ZTwvVGV4dD4gdG8gc2F2ZSBhbmQgZWRpdFxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0JveD5cbiAgICA8L1dpemFyZERpYWxvZ0xheW91dD5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsS0FBSyxJQUFJLEtBQUtDLFNBQVMsUUFBUSxPQUFPO0FBQzdDLGNBQWNDLGFBQWEsUUFBUSwwQ0FBMEM7QUFDN0UsU0FBU0MsR0FBRyxFQUFFQyxJQUFJLFFBQVEsb0JBQW9CO0FBQzlDLFNBQVNDLGFBQWEsUUFBUSwwQ0FBMEM7QUFDeEUsU0FBU0MsbUJBQW1CLFFBQVEsNkJBQTZCO0FBQ2pFLGNBQWNDLEtBQUssUUFBUSxxQkFBcUI7QUFDaEQsU0FBU0MscUJBQXFCLFFBQVEsNENBQTRDO0FBQ2xGLGNBQWNDLGVBQWUsUUFBUSw4Q0FBOEM7QUFDbkYsU0FBU0MsZUFBZSxRQUFRLDZCQUE2QjtBQUM3RCxTQUFTQyxvQkFBb0IsUUFBUSxrQ0FBa0M7QUFDdkUsU0FBU0Msd0JBQXdCLFFBQVEsc0NBQXNDO0FBQy9FLFNBQVNDLE1BQU0sUUFBUSxrQ0FBa0M7QUFDekQsU0FBU0Msb0JBQW9CLFFBQVEsZ0RBQWdEO0FBQ3JGLFNBQVNDLFNBQVMsUUFBUSwwQkFBMEI7QUFDcEQsU0FBU0Msa0JBQWtCLFFBQVEsdUNBQXVDO0FBQzFFLFNBQVNDLDJCQUEyQixRQUFRLHlCQUF5QjtB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 |