opencode-plugin-flow 3.3.16 → 3.3.18
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/CHANGELOG.md +8 -0
- package/README.md +2 -2
- package/dist/cli.js +14 -14
- package/dist/index.js +153 -192
- package/dist/index.js.map +22 -6
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../node_modules/ignore/index.js", "../src/distribution/skill-sync.ts", "../src/config-shared.ts", "../src/distribution/skill-markers.ts", "../src/distribution/update-notice.ts", "../src/adapters/opencode/config.ts", "../src/adapters/opencode/logging.ts", "../src/runtime/workspace-root.ts", "../src/runtime/errors.ts", "../src/runtime/session-history.ts", "../src/runtime/paths.ts", "../src/runtime/session-completed-storage.ts", "../src/runtime/util.ts", "../src/runtime/domain/workflow-policy.ts", "../src/runtime/domain/completion.ts", "../src/runtime/domain/plan-graph-validation.ts", "../src/runtime/domain/plan-projection.ts", "../src/runtime/domain/planning-context.ts", "../src/runtime/constants.ts", "../src/runtime/domain/review-decision.ts", "../src/runtime/
|
|
3
|
+
"sources": ["../node_modules/ignore/index.js", "../src/distribution/sync-types.ts", "../src/distribution/flow-skill-definitions.ts", "../src/distribution/managed-markdown-sync.ts", "../src/config-shared.ts", "../src/distribution/skill-markers.ts", "../src/distribution/sync-paths.ts", "../src/distribution/sync-utils.ts", "../src/distribution/skill-folder-sync.ts", "../src/distribution/startup-sync.ts", "../src/distribution/update-notice.ts", "../src/adapters/opencode/config.ts", "../src/adapters/opencode/logging.ts", "../src/runtime/workspace-root.ts", "../src/runtime/errors.ts", "../src/runtime/session-history.ts", "../src/runtime/paths.ts", "../src/runtime/session-completed-storage.ts", "../src/runtime/util.ts", "../src/runtime/domain/workflow-policy.ts", "../src/runtime/domain/completion.ts", "../src/runtime/domain/plan-graph-validation.ts", "../src/runtime/domain/plan-projection.ts", "../src/runtime/domain/planning-context.ts", "../src/runtime/constants.ts", "../src/runtime/domain/review-decision.ts", "../src/runtime/context-paths.ts", "../src/runtime/context-pack/facts.ts", "../src/runtime/context-pack/diagnostics.ts", "../src/runtime/context-pack/quality.ts", "../src/runtime/context-pack/readiness.ts", "../src/runtime/context-pack/traceability.ts", "../src/runtime/context-pack/projection.ts", "../src/runtime/render/markdown.ts", "../src/runtime/render/context-pack-doc.ts", "../src/runtime/render/evidence.ts", "../src/runtime/render/feature-doc.ts", "../src/runtime/session-operator-state.ts", "../src/runtime/render/index-doc.ts", "../src/runtime/render/session-doc-io.ts", "../src/runtime/schema-evidence-packets.ts", "../src/runtime/schema-plan.ts", "../src/runtime/schema-planning-profiles.ts", "../src/runtime/schema-review-shared.ts", "../src/runtime/schema-review-decisions.ts", "../src/runtime/schema-session.ts", "../src/runtime/schema-worker-result.ts", "../src/runtime/schema-worker-result-refinements.ts", "../src/runtime/schema-worker-result-shared.ts", "../src/runtime/session-live-storage.ts", "../src/runtime/session-workspace-io.ts", "../src/runtime/json/strict-object.ts", "../src/runtime/recovery/session-recovery-service.ts", "../src/runtime/session-workspace.ts", "../src/runtime/session-workspace-gitignore.ts", "../src/runtime/session-workspace-locks.ts", "../src/runtime/session-lifecycle.ts", "../src/runtime/session-persistence.ts", "../src/runtime/application/action-engine.ts", "../src/runtime/summary-task-progress.ts", "../src/runtime/summary-projections.ts", "../src/runtime/summary.ts", "../src/runtime/transitions/execution-completion-normalization.ts", "../src/runtime/transitions/recovery.ts", "../src/runtime/transitions/shared.ts", "../src/runtime/transitions/execution-completion-validation.ts", "../src/runtime/transitions/execution-completion-finalization.ts", "../src/runtime/transitions/execution-selection.ts", "../src/runtime/transitions/execution.ts", "../src/runtime/transitions/plan.ts", "../src/runtime/transitions/review.ts", "../src/runtime/application/session-review-decision-normalization.ts", "../src/runtime/application/session-mutation-actions.ts", "../src/runtime/application/session-read-actions.ts", "../src/runtime/application/package-manager.ts", "../src/runtime/application/workspace-boundaries.ts", "../src/runtime/application/session-workspace-actions.ts", "../src/runtime/application/workspace-runtime.ts", "../src/runtime/application/action-dispatch.ts", "../src/runtime/application/doctor-checks.ts", "../src/runtime/application/doctor-report.ts", "../src/runtime/application/operator-presenters.ts", "../src/runtime/feature-doc-drilldown.ts", "../src/runtime/application/session-presenters.ts", "../src/adapters/opencode/system-context.ts", "../src/runtime/project-structure-map.ts", "../src/adapters/opencode/sdk.ts", "../src/adapters/opencode/tool-surface/parsed-tool.ts", "../src/adapters/opencode/tool-surface/schemas.ts", "../src/adapters/opencode/tool-surface/mutable-workspace-permission.ts", "../src/adapters/opencode/tool-surface/shared.ts", "../src/adapters/opencode/tool-surface/tool-registry.ts", "../src/adapters/opencode/tool-surface/context-tool.ts", "../src/adapters/opencode/tool-surface/next-command-policy.ts", "../src/adapters/opencode/tool-surface/plan-tools.ts", "../src/adapters/opencode/tool-surface/review-tool.ts", "../src/adapters/opencode/tool-surface/run-tools.ts", "../src/adapters/opencode/tool-surface/session-tool.ts", "../src/adapters/opencode/tool-surface/status-tool.ts", "../src/adapters/opencode/tools.ts", "../src/adapters/opencode/plugin.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"// A simple implementation of make-array\nfunction makeArray (subject) {\n return Array.isArray(subject)\n ? subject\n : [subject]\n}\n\nconst UNDEFINED = undefined\nconst EMPTY = ''\nconst SPACE = ' '\nconst ESCAPE = '\\\\'\nconst REGEX_TEST_BLANK_LINE = /^\\s+$/\nconst REGEX_INVALID_TRAILING_BACKSLASH = /(?:[^\\\\]|^)\\\\$/\nconst REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\\\!/\nconst REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\\\#/\nconst REGEX_SPLITALL_CRLF = /\\r?\\n/g\n\n// Invalid:\n// - /foo,\n// - ./foo,\n// - ../foo,\n// - .\n// - ..\n// Valid:\n// - .foo\nconst REGEX_TEST_INVALID_PATH = /^\\.{0,2}\\/|^\\.{1,2}$/\n\nconst REGEX_TEST_TRAILING_SLASH = /\\/$/\n\nconst SLASH = '/'\n\n// Do not use ternary expression here, since \"istanbul ignore next\" is buggy\nlet TMP_KEY_IGNORE = 'node-ignore'\n/* istanbul ignore else */\nif (typeof Symbol !== 'undefined') {\n TMP_KEY_IGNORE = Symbol.for('node-ignore')\n}\nconst KEY_IGNORE = TMP_KEY_IGNORE\n\nconst define = (object, key, value) => {\n Object.defineProperty(object, key, {value})\n return value\n}\n\nconst REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g\n\nconst RETURN_FALSE = () => false\n\n// Sanitize the range of a regular expression\n// The cases are complicated, see test cases for details\nconst sanitizeRange = range => range.replace(\n REGEX_REGEXP_RANGE,\n (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0)\n ? match\n // Invalid range (out of order) which is ok for gitignore rules but\n // fatal for JavaScript regular expression, so eliminate it.\n : EMPTY\n)\n\n// See fixtures #59\nconst cleanRangeBackSlash = slashes => {\n const {length} = slashes\n return slashes.slice(0, length - length % 2)\n}\n\n// > If the pattern ends with a slash,\n// > it is removed for the purpose of the following description,\n// > but it would only find a match with a directory.\n// > In other words, foo/ will match a directory foo and paths underneath it,\n// > but will not match a regular file or a symbolic link foo\n// > (this is consistent with the way how pathspec works in general in Git).\n// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'\n// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call\n// you could use option `mark: true` with `glob`\n\n// '`foo/`' should not continue with the '`..`'\nconst REPLACERS = [\n\n [\n // Remove BOM\n // TODO:\n // Other similar zero-width characters?\n /^\\uFEFF/,\n () => EMPTY\n ],\n\n // > Trailing spaces are ignored unless they are quoted with backslash (\"\\\")\n [\n // (a\\ ) -> (a )\n // (a ) -> (a)\n // (a ) -> (a)\n // (a \\ ) -> (a )\n /((?:\\\\\\\\)*?)(\\\\?\\s+)$/,\n (_, m1, m2) => m1 + (\n m2.indexOf('\\\\') === 0\n ? SPACE\n : EMPTY\n )\n ],\n\n // Replace (\\ ) with ' '\n // (\\ ) -> ' '\n // (\\\\ ) -> '\\\\ '\n // (\\\\\\ ) -> '\\\\ '\n [\n /(\\\\+?)\\s/g,\n (_, m1) => {\n const {length} = m1\n return m1.slice(0, length - length % 2) + SPACE\n }\n ],\n\n // Escape metacharacters\n // which is written down by users but means special for regular expressions.\n\n // > There are 12 characters with special meanings:\n // > - the backslash \\,\n // > - the caret ^,\n // > - the dollar sign $,\n // > - the period or dot .,\n // > - the vertical bar or pipe symbol |,\n // > - the question mark ?,\n // > - the asterisk or star *,\n // > - the plus sign +,\n // > - the opening parenthesis (,\n // > - the closing parenthesis ),\n // > - and the opening square bracket [,\n // > - the opening curly brace {,\n // > These special characters are often called \"metacharacters\".\n [\n /[\\\\$.|*+(){^]/g,\n match => `\\\\${match}`\n ],\n\n [\n // > a question mark (?) matches a single character\n /(?!\\\\)\\?/g,\n () => '[^/]'\n ],\n\n // leading slash\n [\n\n // > A leading slash matches the beginning of the pathname.\n // > For example, \"/*.c\" matches \"cat-file.c\" but not \"mozilla-sha1/sha1.c\".\n // A leading slash matches the beginning of the pathname\n /^\\//,\n () => '^'\n ],\n\n // replace special metacharacter slash after the leading slash\n [\n /\\//g,\n () => '\\\\/'\n ],\n\n [\n // > A leading \"**\" followed by a slash means match in all directories.\n // > For example, \"**/foo\" matches file or directory \"foo\" anywhere,\n // > the same as pattern \"foo\".\n // > \"**/foo/bar\" matches file or directory \"bar\" anywhere that is directly\n // > under directory \"foo\".\n // Notice that the '*'s have been replaced as '\\\\*'\n /^\\^*\\\\\\*\\\\\\*\\\\\\//,\n\n // '**/foo' <-> 'foo'\n () => '^(?:.*\\\\/)?'\n ],\n\n // starting\n [\n // there will be no leading '/'\n // (which has been replaced by section \"leading slash\")\n // If starts with '**', adding a '^' to the regular expression also works\n /^(?=[^^])/,\n function startingReplacer () {\n // If has a slash `/` at the beginning or middle\n return !/\\/(?!$)/.test(this)\n // > Prior to 2.22.1\n // > If the pattern does not contain a slash /,\n // > Git treats it as a shell glob pattern\n // Actually, if there is only a trailing slash,\n // git also treats it as a shell glob pattern\n\n // After 2.22.1 (compatible but clearer)\n // > If there is a separator at the beginning or middle (or both)\n // > of the pattern, then the pattern is relative to the directory\n // > level of the particular .gitignore file itself.\n // > Otherwise the pattern may also match at any level below\n // > the .gitignore level.\n ? '(?:^|\\\\/)'\n\n // > Otherwise, Git treats the pattern as a shell glob suitable for\n // > consumption by fnmatch(3)\n : '^'\n }\n ],\n\n // two globstars\n [\n // Use lookahead assertions so that we could match more than one `'/**'`\n /\\\\\\/\\\\\\*\\\\\\*(?=\\\\\\/|$)/g,\n\n // Zero, one or several directories\n // should not use '*', or it will be replaced by the next replacer\n\n // Check if it is not the last `'/**'`\n (_, index, str) => index + 6 < str.length\n\n // case: /**/\n // > A slash followed by two consecutive asterisks then a slash matches\n // > zero or more directories.\n // > For example, \"a/**/b\" matches \"a/b\", \"a/x/b\", \"a/x/y/b\" and so on.\n // '/**/'\n ? '(?:\\\\/[^\\\\/]+)*'\n\n // case: /**\n // > A trailing `\"/**\"` matches everything inside.\n\n // #21: everything inside but it should not include the current folder\n : '\\\\/.+'\n ],\n\n // normal intermediate wildcards\n [\n // Never replace escaped '*'\n // ignore rule '\\*' will match the path '*'\n\n // 'abc.*/' -> go\n // 'abc.*' -> skip this rule,\n // coz trailing single wildcard will be handed by [trailing wildcard]\n /(^|[^\\\\]+)(\\\\\\*)+(?=.+)/g,\n\n // '*.js' matches '.js'\n // '*.js' doesn't match 'abc'\n (_, p1, p2) => {\n // 1.\n // > An asterisk \"*\" matches anything except a slash.\n // 2.\n // > Other consecutive asterisks are considered regular asterisks\n // > and will match according to the previous rules.\n const unescaped = p2.replace(/\\\\\\*/g, '[^\\\\/]*')\n return p1 + unescaped\n }\n ],\n\n [\n // unescape, revert step 3 except for back slash\n // For example, if a user escape a '\\\\*',\n // after step 3, the result will be '\\\\\\\\\\\\*'\n /\\\\\\\\\\\\(?=[$.|*+(){^])/g,\n () => ESCAPE\n ],\n\n [\n // '\\\\\\\\' -> '\\\\'\n /\\\\\\\\/g,\n () => ESCAPE\n ],\n\n [\n // > The range notation, e.g. [a-zA-Z],\n // > can be used to match one of the characters in a range.\n\n // `\\` is escaped by step 3\n /(\\\\)?\\[([^\\]/]*?)(\\\\*)($|\\])/g,\n (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE\n // '\\\\[bar]' -> '\\\\\\\\[bar\\\\]'\n ? `\\\\[${range}${cleanRangeBackSlash(endEscape)}${close}`\n : close === ']'\n ? endEscape.length % 2 === 0\n // A normal case, and it is a range notation\n // '[bar]'\n // '[bar\\\\\\\\]'\n ? `[${sanitizeRange(range)}${endEscape}]`\n // Invalid range notaton\n // '[bar\\\\]' -> '[bar\\\\\\\\]'\n : '[]'\n : '[]'\n ],\n\n // ending\n [\n // 'js' will not match 'js.'\n // 'ab' will not match 'abc'\n /(?:[^*])$/,\n\n // WTF!\n // https://git-scm.com/docs/gitignore\n // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1)\n // which re-fixes #24, #38\n\n // > If there is a separator at the end of the pattern then the pattern\n // > will only match directories, otherwise the pattern can match both\n // > files and directories.\n\n // 'js*' will not match 'a.js'\n // 'js/' will not match 'a.js'\n // 'js' will match 'a.js' and 'a.js/'\n match => /\\/$/.test(match)\n // foo/ will not match 'foo'\n ? `${match}$`\n // foo matches 'foo' and 'foo/'\n : `${match}(?=$|\\\\/$)`\n ]\n]\n\nconst REGEX_REPLACE_TRAILING_WILDCARD = /(^|\\\\\\/)?\\\\\\*$/\nconst MODE_IGNORE = 'regex'\nconst MODE_CHECK_IGNORE = 'checkRegex'\nconst UNDERSCORE = '_'\n\nconst TRAILING_WILD_CARD_REPLACERS = {\n [MODE_IGNORE] (_, p1) {\n const prefix = p1\n // '\\^':\n // '/*' does not match EMPTY\n // '/*' does not match everything\n\n // '\\\\\\/':\n // 'abc/*' does not match 'abc/'\n ? `${p1}[^/]+`\n\n // 'a*' matches 'a'\n // 'a*' matches 'aa'\n : '[^/]*'\n\n return `${prefix}(?=$|\\\\/$)`\n },\n\n [MODE_CHECK_IGNORE] (_, p1) {\n // When doing `git check-ignore`\n const prefix = p1\n // '\\\\\\/':\n // 'abc/*' DOES match 'abc/' !\n ? `${p1}[^/]*`\n\n // 'a*' matches 'a'\n // 'a*' matches 'aa'\n : '[^/]*'\n\n return `${prefix}(?=$|\\\\/$)`\n }\n}\n\n// @param {pattern}\nconst makeRegexPrefix = pattern => REPLACERS.reduce(\n (prev, [matcher, replacer]) =>\n prev.replace(matcher, replacer.bind(pattern)),\n pattern\n)\n\nconst isString = subject => typeof subject === 'string'\n\n// > A blank line matches no files, so it can serve as a separator for readability.\nconst checkPattern = pattern => pattern\n && isString(pattern)\n && !REGEX_TEST_BLANK_LINE.test(pattern)\n && !REGEX_INVALID_TRAILING_BACKSLASH.test(pattern)\n\n // > A line starting with # serves as a comment.\n && pattern.indexOf('#') !== 0\n\nconst splitPattern = pattern => pattern\n.split(REGEX_SPLITALL_CRLF)\n.filter(Boolean)\n\nclass IgnoreRule {\n constructor (\n pattern,\n mark,\n body,\n ignoreCase,\n negative,\n prefix\n ) {\n this.pattern = pattern\n this.mark = mark\n this.negative = negative\n\n define(this, 'body', body)\n define(this, 'ignoreCase', ignoreCase)\n define(this, 'regexPrefix', prefix)\n }\n\n get regex () {\n const key = UNDERSCORE + MODE_IGNORE\n\n if (this[key]) {\n return this[key]\n }\n\n return this._make(MODE_IGNORE, key)\n }\n\n get checkRegex () {\n const key = UNDERSCORE + MODE_CHECK_IGNORE\n\n if (this[key]) {\n return this[key]\n }\n\n return this._make(MODE_CHECK_IGNORE, key)\n }\n\n _make (mode, key) {\n const str = this.regexPrefix.replace(\n REGEX_REPLACE_TRAILING_WILDCARD,\n\n // It does not need to bind pattern\n TRAILING_WILD_CARD_REPLACERS[mode]\n )\n\n const regex = this.ignoreCase\n ? new RegExp(str, 'i')\n : new RegExp(str)\n\n return define(this, key, regex)\n }\n}\n\nconst createRule = ({\n pattern,\n mark\n}, ignoreCase) => {\n let negative = false\n let body = pattern\n\n // > An optional prefix \"!\" which negates the pattern;\n if (body.indexOf('!') === 0) {\n negative = true\n body = body.substr(1)\n }\n\n body = body\n // > Put a backslash (\"\\\") in front of the first \"!\" for patterns that\n // > begin with a literal \"!\", for example, `\"\\!important!.txt\"`.\n .replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!')\n // > Put a backslash (\"\\\") in front of the first hash for patterns that\n // > begin with a hash.\n .replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#')\n\n const regexPrefix = makeRegexPrefix(body)\n\n return new IgnoreRule(\n pattern,\n mark,\n body,\n ignoreCase,\n negative,\n regexPrefix\n )\n}\n\nclass RuleManager {\n constructor (ignoreCase) {\n this._ignoreCase = ignoreCase\n this._rules = []\n }\n\n _add (pattern) {\n // #32\n if (pattern && pattern[KEY_IGNORE]) {\n this._rules = this._rules.concat(pattern._rules._rules)\n this._added = true\n return\n }\n\n if (isString(pattern)) {\n pattern = {\n pattern\n }\n }\n\n if (checkPattern(pattern.pattern)) {\n const rule = createRule(pattern, this._ignoreCase)\n this._added = true\n this._rules.push(rule)\n }\n }\n\n // @param {Array<string> | string | Ignore} pattern\n add (pattern) {\n this._added = false\n\n makeArray(\n isString(pattern)\n ? splitPattern(pattern)\n : pattern\n ).forEach(this._add, this)\n\n return this._added\n }\n\n // Test one single path without recursively checking parent directories\n //\n // - checkUnignored `boolean` whether should check if the path is unignored,\n // setting `checkUnignored` to `false` could reduce additional\n // path matching.\n // - check `string` either `MODE_IGNORE` or `MODE_CHECK_IGNORE`\n\n // @returns {TestResult} true if a file is ignored\n test (path, checkUnignored, mode) {\n let ignored = false\n let unignored = false\n let matchedRule\n\n this._rules.forEach(rule => {\n const {negative} = rule\n\n // | ignored : unignored\n // -------- | ---------------------------------------\n // negative | 0:0 | 0:1 | 1:0 | 1:1\n // -------- | ------- | ------- | ------- | --------\n // 0 | TEST | TEST | SKIP | X\n // 1 | TESTIF | SKIP | TEST | X\n\n // - SKIP: always skip\n // - TEST: always test\n // - TESTIF: only test if checkUnignored\n // - X: that never happen\n if (\n unignored === negative && ignored !== unignored\n || negative && !ignored && !unignored && !checkUnignored\n ) {\n return\n }\n\n const matched = rule[mode].test(path)\n\n if (!matched) {\n return\n }\n\n ignored = !negative\n unignored = negative\n\n matchedRule = negative\n ? UNDEFINED\n : rule\n })\n\n const ret = {\n ignored,\n unignored\n }\n\n if (matchedRule) {\n ret.rule = matchedRule\n }\n\n return ret\n }\n}\n\nconst throwError = (message, Ctor) => {\n throw new Ctor(message)\n}\n\nconst checkPath = (path, originalPath, doThrow) => {\n if (!isString(path)) {\n return doThrow(\n `path must be a string, but got \\`${originalPath}\\``,\n TypeError\n )\n }\n\n // We don't know if we should ignore EMPTY, so throw\n if (!path) {\n return doThrow(`path must not be empty`, TypeError)\n }\n\n // Check if it is a relative path\n if (checkPath.isNotRelative(path)) {\n const r = '`path.relative()`d'\n return doThrow(\n `path should be a ${r} string, but got \"${originalPath}\"`,\n RangeError\n )\n }\n\n return true\n}\n\nconst isNotRelative = path => REGEX_TEST_INVALID_PATH.test(path)\n\ncheckPath.isNotRelative = isNotRelative\n\n// On windows, the following function will be replaced\n/* istanbul ignore next */\ncheckPath.convert = p => p\n\n\nclass Ignore {\n constructor ({\n ignorecase = true,\n ignoreCase = ignorecase,\n allowRelativePaths = false\n } = {}) {\n define(this, KEY_IGNORE, true)\n\n this._rules = new RuleManager(ignoreCase)\n this._strictPathCheck = !allowRelativePaths\n this._initCache()\n }\n\n _initCache () {\n // A cache for the result of `.ignores()`\n this._ignoreCache = Object.create(null)\n\n // A cache for the result of `.test()`\n this._testCache = Object.create(null)\n }\n\n add (pattern) {\n if (this._rules.add(pattern)) {\n // Some rules have just added to the ignore,\n // making the behavior changed,\n // so we need to re-initialize the result cache\n this._initCache()\n }\n\n return this\n }\n\n // legacy\n addPattern (pattern) {\n return this.add(pattern)\n }\n\n // @returns {TestResult}\n _test (originalPath, cache, checkUnignored, slices) {\n const path = originalPath\n // Supports nullable path\n && checkPath.convert(originalPath)\n\n checkPath(\n path,\n originalPath,\n this._strictPathCheck\n ? throwError\n : RETURN_FALSE\n )\n\n return this._t(path, cache, checkUnignored, slices)\n }\n\n checkIgnore (path) {\n // If the path doest not end with a slash, `.ignores()` is much equivalent\n // to `git check-ignore`\n if (!REGEX_TEST_TRAILING_SLASH.test(path)) {\n return this.test(path)\n }\n\n const slices = path.split(SLASH).filter(Boolean)\n slices.pop()\n\n if (slices.length) {\n const parent = this._t(\n slices.join(SLASH) + SLASH,\n this._testCache,\n true,\n slices\n )\n\n if (parent.ignored) {\n return parent\n }\n }\n\n return this._rules.test(path, false, MODE_CHECK_IGNORE)\n }\n\n _t (\n // The path to be tested\n path,\n\n // The cache for the result of a certain checking\n cache,\n\n // Whether should check if the path is unignored\n checkUnignored,\n\n // The path slices\n slices\n ) {\n if (path in cache) {\n return cache[path]\n }\n\n if (!slices) {\n // path/to/a.js\n // ['path', 'to', 'a.js']\n slices = path.split(SLASH).filter(Boolean)\n }\n\n slices.pop()\n\n // If the path has no parent directory, just test it\n if (!slices.length) {\n return cache[path] = this._rules.test(path, checkUnignored, MODE_IGNORE)\n }\n\n const parent = this._t(\n slices.join(SLASH) + SLASH,\n cache,\n checkUnignored,\n slices\n )\n\n // If the path contains a parent directory, check the parent first\n return cache[path] = parent.ignored\n // > It is not possible to re-include a file if a parent directory of\n // > that file is excluded.\n ? parent\n : this._rules.test(path, checkUnignored, MODE_IGNORE)\n }\n\n ignores (path) {\n return this._test(path, this._ignoreCache, false).ignored\n }\n\n createFilter () {\n return path => !this.ignores(path)\n }\n\n filter (paths) {\n return makeArray(paths).filter(this.createFilter())\n }\n\n // @returns {TestResult}\n test (path) {\n return this._test(path, this._testCache, true)\n }\n}\n\nconst factory = options => new Ignore(options)\n\nconst isPathValid = path =>\n checkPath(path && checkPath.convert(path), path, RETURN_FALSE)\n\n/* istanbul ignore next */\nconst setupWindows = () => {\n /* eslint no-control-regex: \"off\" */\n const makePosix = str => /^\\\\\\\\\\?\\\\/.test(str)\n || /[\"<>|\\u0000-\\u001F]+/u.test(str)\n ? str\n : str.replace(/\\\\/g, '/')\n\n checkPath.convert = makePosix\n\n // 'C:\\\\foo' <- 'C:\\\\foo' has been converted to 'C:/'\n // 'd:\\\\foo'\n const REGEX_TEST_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\\//i\n checkPath.isNotRelative = path =>\n REGEX_TEST_WINDOWS_PATH_ABSOLUTE.test(path)\n || isNotRelative(path)\n}\n\n\n// Windows\n// --------------------------------------------------------------\n/* istanbul ignore next */\nif (\n // Detect `process` so that it can run in browsers.\n typeof process !== 'undefined'\n && process.platform === 'win32'\n) {\n setupWindows()\n}\n\n// COMMONJS_EXPORTS ////////////////////////////////////////////////////////////\n\nmodule.exports = factory\n\n// Although it is an anti-pattern,\n// it is still widely misused by a lot of libraries in github\n// Ref: https://github.com/search?q=ignore.default%28%29&type=code\nfactory.default = factory\n\nmodule.exports.isPathValid = isPathValid\n\n// For testing purposes\ndefine(module.exports, Symbol.for('setupWindows'), setupWindows)\n",
|
|
6
|
-
"import { mkdir, readFile, rm, writeFile } from \"node:fs/promises\";\nimport { createRequire } from \"node:module\";\nimport { homedir } from \"node:os\";\nimport { dirname, join, sep } from \"node:path\";\nimport flowSkillDoc from \"../../skills/flow/SKILL.md\" with { type: \"text\" };\nimport flowPlanParallelDiscoveryDoc from \"../../skills/flow-plan/references/parallel-discovery.md\" with {\n\ttype: \"text\",\n};\nimport flowPlanPlanningExamplesDoc from \"../../skills/flow-plan/references/planning-examples.md\" with {\n\ttype: \"text\",\n};\nimport flowPlanSkillDoc from \"../../skills/flow-plan/SKILL.md\" with {\n\ttype: \"text\",\n};\nimport flowReviewReviewRubricDoc from \"../../skills/flow-review/references/review-rubric.md\" with {\n\ttype: \"text\",\n};\nimport flowReviewSkillDoc from \"../../skills/flow-review/SKILL.md\" with {\n\ttype: \"text\",\n};\nimport flowRunAuditRubricDoc from \"../../skills/flow-run/references/audit-rubric.md\" with {\n\ttype: \"text\",\n};\nimport flowRunValidationRubricDoc from \"../../skills/flow-run/references/validation-rubric.md\" with {\n\ttype: \"text\",\n};\nimport flowRunSkillDoc from \"../../skills/flow-run/SKILL.md\" with {\n\ttype: \"text\",\n};\nimport {\n\tFLOW_CORE_AGENTS,\n\tFLOW_CORE_COMMANDS,\n\ttype FlowAgentConfig,\n\ttype FlowCommandConfig,\n\tRETIRED_FLOW_COMMANDS,\n} from \"../config-shared\";\nimport {\n\tFLOW_AGENTS_DIRECTORY,\n\tFLOW_COMMANDS_DIRECTORY,\n\tFLOW_PRE_NPM_PLUGIN_OWNERSHIP_HEADER,\n\tFLOW_PRE_NPM_PLUGIN_RELATIVE_PATH,\n\tFLOW_SKILL_MARKER_FILENAME,\n\tFLOW_SKILLS_DIRECTORY,\n\ttype FlowManagedMarkdownKind,\n\ttype FlowManagedMarkdownMarker,\n\tinspectFlowSkillDocument,\n\tparseFlowManagedMarkdownMarker,\n\tparseFlowSkillFileHashes,\n\tparseFlowSkillFolderMarker,\n\trenderFlowManagedMarkdownMarker,\n\trenderFlowSkillFolderMarker,\n\tsha256,\n} from \"./skill-markers\";\n\nconst SKILL_DOCUMENT_FILENAME = \"SKILL.md\";\n\ntype FlowSkillFile = {\n\t/** Path inside the installed skill folder, `/`-separated. */\n\trelativePath: string;\n\tcontent: string;\n};\n\nexport type FlowSkillDefinition = {\n\tname: string;\n\tfiles: readonly FlowSkillFile[];\n};\n\n/**\n * The hand-authored skills shipped with the plugin. The markdown is embedded\n * at build time via Bun text imports so the bundled dist/index.js remains\n * self-contained. Source of truth: the `skills/` directory in the repo.\n */\nexport const FLOW_SKILL_DEFINITIONS: readonly FlowSkillDefinition[] = [\n\t{\n\t\tname: \"flow\",\n\t\tfiles: [{ relativePath: SKILL_DOCUMENT_FILENAME, content: flowSkillDoc }],\n\t},\n\t{\n\t\tname: \"flow-plan\",\n\t\tfiles: [\n\t\t\t{ relativePath: SKILL_DOCUMENT_FILENAME, content: flowPlanSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/planning-examples.md\",\n\t\t\t\tcontent: flowPlanPlanningExamplesDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/parallel-discovery.md\",\n\t\t\t\tcontent: flowPlanParallelDiscoveryDoc,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tname: \"flow-run\",\n\t\tfiles: [\n\t\t\t{ relativePath: SKILL_DOCUMENT_FILENAME, content: flowRunSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/audit-rubric.md\",\n\t\t\t\tcontent: flowRunAuditRubricDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/validation-rubric.md\",\n\t\t\t\tcontent: flowRunValidationRubricDoc,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tname: \"flow-review\",\n\t\tfiles: [\n\t\t\t{ relativePath: SKILL_DOCUMENT_FILENAME, content: flowReviewSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/review-rubric.md\",\n\t\t\t\tcontent: flowReviewReviewRubricDoc,\n\t\t\t},\n\t\t],\n\t},\n];\n\ntype FlowSkillSyncAction =\n\t| \"installed\"\n\t| \"updated\"\n\t| \"updated_with_backup\"\n\t| \"unchanged\"\n\t| \"skipped_foreign\";\n\ntype FlowSkillSyncResult = {\n\tname: string;\n\taction: FlowSkillSyncAction;\n\tskillPath: string;\n};\n\ntype FlowManagedMarkdownSyncResult = {\n\tname: string;\n\tkind: FlowManagedMarkdownKind;\n\taction: FlowSkillSyncAction | \"removed_retired\";\n\tpath: string;\n};\n\ntype FlowSkillSyncOptions = {\n\thomeDir?: string;\n\tversion: string;\n};\n\ntype FlowSkillSyncStateEntry = {\n\tname: string;\n\tstate: \"synced\" | \"stale\" | \"missing\" | \"foreign\";\n\tskillPath: string;\n};\n\ntype FlowManagedMarkdownSyncStateEntry = {\n\tname: string;\n\tkind: FlowManagedMarkdownKind;\n\tstate: \"synced\" | \"stale\" | \"missing\" | \"foreign\";\n\tpath: string;\n};\n\ntype PreNpmFlowPluginCopy = {\n\tpath: string;\n\tflowOwned: boolean;\n};\n\nexport function resolveFlowHomeDir(): string {\n\treturn process.env.HOME ?? homedir();\n}\n\n/**\n * In the published npm layout, package.json sits one directory above the\n * bundled dist/index.js. Reading it at runtime keeps the version out of the\n * bundle and immune to release-time drift; sandboxes without a version field\n * fall back to a sentinel.\n */\nexport function resolveFlowPluginVersion(): string {\n\ttry {\n\t\tconst require = createRequire(import.meta.url);\n\t\tconst manifest = require(\"../package.json\") as { version?: string };\n\t\treturn manifest.version ?? \"0.0.0\";\n\t} catch {\n\t\treturn \"0.0.0\";\n\t}\n}\n\nfunction resolveFlowSkillsRoot(homeDir: string): string {\n\treturn join(homeDir, FLOW_SKILLS_DIRECTORY);\n}\n\nfunction resolveFlowCommandsRoot(homeDir: string): string {\n\treturn join(homeDir, FLOW_COMMANDS_DIRECTORY);\n}\n\nfunction resolveFlowAgentsRoot(homeDir: string): string {\n\treturn join(homeDir, FLOW_AGENTS_DIRECTORY);\n}\n\nfunction resolveSkillFilePath(folder: string, relativePath: string): string {\n\treturn join(folder, ...relativePath.split(\"/\"));\n}\n\nfunction skillDocument(definition: FlowSkillDefinition): FlowSkillFile {\n\tconst document = definition.files.find(\n\t\t(file) => file.relativePath === SKILL_DOCUMENT_FILENAME,\n\t);\n\tif (!document) {\n\t\tthrow new Error(`Flow skill ${definition.name} is missing SKILL.md`);\n\t}\n\treturn document;\n}\n\nfunction renderDesiredMarker(\n\tdefinition: FlowSkillDefinition,\n\tversion: string,\n): string {\n\treturn renderFlowSkillFolderMarker({\n\t\tversion,\n\t\thash: sha256(skillDocument(definition).content),\n\t\tfiles: definition.files.map((file) => ({\n\t\t\trelativePath: file.relativePath,\n\t\t\thash: sha256(file.content),\n\t\t})),\n\t});\n}\n\n/**\n * Idempotent startup sync of the embedded hand-authored Flow skills into the\n * global OpenCode skill directory. Folder ownership is tracked with a\n * plugin-owned marker file (`.flow-skill-version`); pre-npm hash-locked\n * installs are recognized through their in-document marker and adopted.\n * Folders without either marker belong to the user (or another plugin) and\n * are never touched. A user-edited file in a Flow-owned folder is backed up\n * next to itself (`SKILL.md.backup`, `references/<name>.backup`) before being\n * replaced, never refused or silently lost. Reference files sync alongside\n * SKILL.md.\n */\nexport async function syncFlowSkills({\n\thomeDir = resolveFlowHomeDir(),\n\tversion,\n}: FlowSkillSyncOptions): Promise<FlowSkillSyncResult[]> {\n\tconst results: FlowSkillSyncResult[] = [];\n\tfor (const definition of FLOW_SKILL_DEFINITIONS) {\n\t\tconst folder = join(resolveFlowSkillsRoot(homeDir), definition.name);\n\t\tconst skillPath = join(folder, SKILL_DOCUMENT_FILENAME);\n\t\tconst markerPath = join(folder, FLOW_SKILL_MARKER_FILENAME);\n\t\tconst desiredMarker = renderDesiredMarker(definition, version);\n\n\t\tconst existingSkill = await readOptionalFile(skillPath);\n\t\tconst markerContent = await readOptionalFile(markerPath);\n\t\tconst marker =\n\t\t\tmarkerContent === null ? null : parseFlowSkillFolderMarker(markerContent);\n\t\tconst recordedFileHashes =\n\t\t\tmarkerContent === null\n\t\t\t\t? new Map<string, string>()\n\t\t\t\t: parseFlowSkillFileHashes(markerContent);\n\n\t\tif (existingSkill === null && marker === null) {\n\t\t\tawait writeSkillFiles(folder, definition);\n\t\t\tawait writeFile(markerPath, desiredMarker, \"utf8\");\n\t\t\tresults.push({ name: definition.name, action: \"installed\", skillPath });\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst owned =\n\t\t\tmarker !== null ||\n\t\t\t(existingSkill !== null &&\n\t\t\t\tinspectFlowSkillDocument(existingSkill).kind !== \"not_generated\");\n\t\tif (!owned) {\n\t\t\tresults.push({\n\t\t\t\tname: definition.name,\n\t\t\t\taction: \"skipped_foreign\",\n\t\t\t\tskillPath,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet changed = false;\n\t\tlet backedUp = false;\n\t\tfor (const file of definition.files) {\n\t\t\tconst filePath = resolveSkillFilePath(folder, file.relativePath);\n\t\t\tconst existing =\n\t\t\t\tfile.relativePath === SKILL_DOCUMENT_FILENAME\n\t\t\t\t\t? existingSkill\n\t\t\t\t\t: await readOptionalFile(filePath);\n\t\t\tif (existing === file.content) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tchanged = true;\n\t\t\tif (\n\t\t\t\texisting !== null &&\n\t\t\t\tisUserEdited({\n\t\t\t\t\trelativePath: file.relativePath,\n\t\t\t\t\texisting,\n\t\t\t\t\trecordedFileHashes,\n\t\t\t\t\tmarkerHash: marker?.hash ?? null,\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\tawait writeFile(`${filePath}.backup`, existing, \"utf8\");\n\t\t\t\tbackedUp = true;\n\t\t\t}\n\t\t}\n\n\t\tif (!changed) {\n\t\t\tif (markerContent !== desiredMarker) {\n\t\t\t\tawait writeFile(markerPath, desiredMarker, \"utf8\");\n\t\t\t}\n\t\t\tresults.push({ name: definition.name, action: \"unchanged\", skillPath });\n\t\t\tcontinue;\n\t\t}\n\n\t\tawait writeSkillFiles(folder, definition);\n\t\tawait writeFile(markerPath, desiredMarker, \"utf8\");\n\t\tresults.push({\n\t\t\tname: definition.name,\n\t\t\taction: backedUp ? \"updated_with_backup\" : \"updated\",\n\t\t\tskillPath,\n\t\t});\n\t}\n\treturn results;\n}\n\nexport function renderFlowCommandMarkdown(command: FlowCommandConfig): string {\n\tconst frontmatter = [\n\t\t\"---\",\n\t\t`description: ${JSON.stringify(command.description)}`,\n\t\t...(command.agent ? [`agent: ${JSON.stringify(command.agent)}`] : []),\n\t\t...(command.subtask === undefined ? [] : [`subtask: ${command.subtask}`]),\n\t\t\"---\",\n\t];\n\treturn `${frontmatter.join(\"\\n\")}\\n\\n${command.template}\\n`;\n}\n\nexport function renderFlowAgentMarkdown(agent: FlowAgentConfig): string {\n\tconst frontmatter = [\n\t\t\"---\",\n\t\t`description: ${JSON.stringify(agent.description)}`,\n\t\t`mode: ${agent.mode}`,\n\t\t...(agent.reasoningEffort\n\t\t\t? [`reasoningEffort: ${agent.reasoningEffort}`]\n\t\t\t: []),\n\t\t...(agent.permission ? renderPermissionFrontmatter(agent.permission) : []),\n\t\t\"---\",\n\t];\n\treturn `${frontmatter.join(\"\\n\")}\\n\\n${agent.prompt}\\n`;\n}\n\nexport function flowCommandDefinitions(): Map<string, string> {\n\treturn new Map(\n\t\tObject.entries(FLOW_CORE_COMMANDS).map(([name, command]) => [\n\t\t\tname,\n\t\t\trenderFlowCommandMarkdown(command),\n\t\t]),\n\t);\n}\n\nexport function flowAgentDefinitions(): Map<string, string> {\n\treturn new Map(\n\t\tObject.entries(FLOW_CORE_AGENTS).map(([name, agent]) => [\n\t\t\tname,\n\t\t\trenderFlowAgentMarkdown(agent),\n\t\t]),\n\t);\n}\n\nexport async function syncFlowCommandsAndAgents({\n\thomeDir = resolveFlowHomeDir(),\n\tversion,\n}: FlowSkillSyncOptions): Promise<FlowManagedMarkdownSyncResult[]> {\n\tconst retired = await cleanupRetiredManagedMarkdownFiles({\n\t\tkind: \"command\",\n\t\troot: resolveFlowCommandsRoot(homeDir),\n\t\tnames: RETIRED_FLOW_COMMANDS,\n\t});\n\treturn [\n\t\t...retired.removed.map((path) => ({\n\t\t\tname: retiredNameFromPath(path),\n\t\t\tkind: \"command\" as const,\n\t\t\taction: \"removed_retired\" as const,\n\t\t\tpath,\n\t\t})),\n\t\t...(await syncManagedMarkdownFiles({\n\t\t\thomeDir,\n\t\t\tversion,\n\t\t\tkind: \"command\",\n\t\t\troot: resolveFlowCommandsRoot(homeDir),\n\t\t\tfiles: flowCommandDefinitions(),\n\t\t})),\n\t\t...(await syncManagedMarkdownFiles({\n\t\t\thomeDir,\n\t\t\tversion,\n\t\t\tkind: \"agent\",\n\t\t\troot: resolveFlowAgentsRoot(homeDir),\n\t\t\tfiles: flowAgentDefinitions(),\n\t\t})),\n\t];\n}\n\nfunction retiredNameFromPath(path: string): string {\n\tconst file = path.split(sep).at(-1) ?? path;\n\treturn file.endsWith(\".md\") ? file.slice(0, -\".md\".length) : file;\n}\n\n/**\n * Removes files a previous release synced for since-retired names. Only\n * marker-owned files whose content still matches the recorded hash are\n * deleted; user-edited or foreign files stay untouched.\n */\nexport async function cleanupRetiredManagedMarkdownFiles(input: {\n\tkind: FlowManagedMarkdownKind;\n\troot: string;\n\tnames: readonly string[];\n\tdryRun?: boolean;\n}): Promise<{ removed: string[]; keptUserEdited: string[] }> {\n\tconst removed: string[] = [];\n\tconst keptUserEdited: string[] = [];\n\tfor (const name of input.names) {\n\t\tconst path = join(input.root, `${name}.md`);\n\t\tconst markerPath = join(input.root, `.${name}.flow-version`);\n\t\tconst markerContent = await readOptionalFile(markerPath);\n\t\tconst marker =\n\t\t\tmarkerContent === null\n\t\t\t\t? null\n\t\t\t\t: parseFlowManagedMarkdownMarker(markerContent, input.kind, name);\n\t\tif (marker === null) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst content = await readOptionalFile(path);\n\t\tif (content !== null && sha256(content) !== marker.hash) {\n\t\t\tkeptUserEdited.push(path);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!input.dryRun) {\n\t\t\tawait rm(path, { force: true });\n\t\t\tawait rm(markerPath, { force: true });\n\t\t\tawait rm(`${path}.backup`, { force: true });\n\t\t}\n\t\tremoved.push(path);\n\t}\n\treturn { removed, keptUserEdited };\n}\n\n/**\n * A file is user-edited when its on-disk content matches neither the hash the\n * marker recorded at install time nor (for SKILL.md) a pristine pre-npm\n * generated document. Markers without per-file hashes (pre per-file tracking)\n * fall back to the top-level SKILL.md hash; anything unprovable is treated as\n * user-edited, which costs at most a redundant backup.\n */\nfunction isUserEdited(input: {\n\trelativePath: string;\n\texisting: string;\n\trecordedFileHashes: ReadonlyMap<string, string>;\n\tmarkerHash: string | null;\n}): boolean {\n\tconst existingHash = sha256(input.existing);\n\tconst recorded = input.recordedFileHashes.get(input.relativePath);\n\tif (recorded !== undefined) {\n\t\treturn existingHash !== recorded;\n\t}\n\tif (input.relativePath === SKILL_DOCUMENT_FILENAME) {\n\t\tif (input.markerHash !== null && existingHash === input.markerHash) {\n\t\t\treturn false;\n\t\t}\n\t\treturn inspectFlowSkillDocument(input.existing).kind !== \"valid_generated\";\n\t}\n\treturn true;\n}\n\nasync function writeSkillFiles(\n\tfolder: string,\n\tdefinition: FlowSkillDefinition,\n): Promise<void> {\n\tfor (const file of definition.files) {\n\t\tconst filePath = resolveSkillFilePath(folder, file.relativePath);\n\t\tawait mkdir(dirname(filePath), { recursive: true });\n\t\tawait writeFile(filePath, file.content, \"utf8\");\n\t}\n}\n\nexport async function inspectFlowSkillSyncState(\n\thomeDir = resolveFlowHomeDir(),\n): Promise<FlowSkillSyncStateEntry[]> {\n\tconst entries: FlowSkillSyncStateEntry[] = [];\n\tfor (const definition of FLOW_SKILL_DEFINITIONS) {\n\t\tconst folder = join(resolveFlowSkillsRoot(homeDir), definition.name);\n\t\tconst skillPath = join(folder, SKILL_DOCUMENT_FILENAME);\n\t\tconst existingSkill = await readOptionalFile(skillPath);\n\t\tif (existingSkill === null) {\n\t\t\tentries.push({ name: definition.name, state: \"missing\", skillPath });\n\t\t\tcontinue;\n\t\t}\n\t\tconst markerContent = await readOptionalFile(\n\t\t\tjoin(folder, FLOW_SKILL_MARKER_FILENAME),\n\t\t);\n\t\tconst owned =\n\t\t\t(markerContent !== null &&\n\t\t\t\tparseFlowSkillFolderMarker(markerContent) !== null) ||\n\t\t\tinspectFlowSkillDocument(existingSkill).kind !== \"not_generated\";\n\t\tif (!owned) {\n\t\t\tentries.push({ name: definition.name, state: \"foreign\", skillPath });\n\t\t\tcontinue;\n\t\t}\n\t\tlet synced = true;\n\t\tfor (const file of definition.files) {\n\t\t\tconst existing =\n\t\t\t\tfile.relativePath === SKILL_DOCUMENT_FILENAME\n\t\t\t\t\t? existingSkill\n\t\t\t\t\t: await readOptionalFile(\n\t\t\t\t\t\t\tresolveSkillFilePath(folder, file.relativePath),\n\t\t\t\t\t\t);\n\t\t\tif (existing !== file.content) {\n\t\t\t\tsynced = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tentries.push({\n\t\t\tname: definition.name,\n\t\t\tstate: synced ? \"synced\" : \"stale\",\n\t\t\tskillPath,\n\t\t});\n\t}\n\treturn entries;\n}\n\nexport async function inspectFlowCommandAgentSyncState(\n\thomeDir = resolveFlowHomeDir(),\n): Promise<FlowManagedMarkdownSyncStateEntry[]> {\n\treturn [\n\t\t...(await inspectManagedMarkdownSyncState({\n\t\t\tkind: \"command\",\n\t\t\troot: resolveFlowCommandsRoot(homeDir),\n\t\t\tfiles: flowCommandDefinitions(),\n\t\t})),\n\t\t...(await inspectManagedMarkdownSyncState({\n\t\t\tkind: \"agent\",\n\t\t\troot: resolveFlowAgentsRoot(homeDir),\n\t\t\tfiles: flowAgentDefinitions(),\n\t\t})),\n\t];\n}\n\nexport async function detectPreNpmFlowPlugin(\n\thomeDir = resolveFlowHomeDir(),\n): Promise<PreNpmFlowPluginCopy | null> {\n\tconst path = join(homeDir, FLOW_PRE_NPM_PLUGIN_RELATIVE_PATH);\n\tconst content = await readOptionalFile(path);\n\tif (content === null) {\n\t\treturn null;\n\t}\n\treturn {\n\t\tpath,\n\t\tflowOwned: content.startsWith(FLOW_PRE_NPM_PLUGIN_OWNERSHIP_HEADER),\n\t};\n}\n\ntype FlowStartupLogger = (level: \"info\" | \"warn\", message: string) => void;\n\n/**\n * Best-effort startup hook: sync skills and surface the pre-npm-copy warning\n * without ever failing plugin initialization.\n */\nexport async function runFlowStartupSync(\n\tversion: string,\n\tlog: FlowStartupLogger,\n): Promise<void> {\n\ttry {\n\t\tconst results = await syncFlowSkills({ version });\n\t\tconst changed = results.filter(\n\t\t\t(result) =>\n\t\t\t\tresult.action !== \"unchanged\" && result.action !== \"skipped_foreign\",\n\t\t);\n\t\tif (changed.length > 0) {\n\t\t\tlog(\n\t\t\t\t\"info\",\n\t\t\t\t`Flow synced global skills (${changed\n\t\t\t\t\t.map((result) => `${result.name}: ${result.action}`)\n\t\t\t\t\t.join(\", \")}). Restart OpenCode once if skills were just installed.`,\n\t\t\t);\n\t\t}\n\t} catch (error) {\n\t\tlog(\"warn\", `Flow skill sync failed: ${describeError(error)}`);\n\t}\n\n\ttry {\n\t\tconst results = await syncFlowCommandsAndAgents({ version });\n\t\tconst changed = results.filter(\n\t\t\t(result) =>\n\t\t\t\tresult.action !== \"unchanged\" && result.action !== \"skipped_foreign\",\n\t\t);\n\t\tif (changed.length > 0) {\n\t\t\tlog(\n\t\t\t\t\"info\",\n\t\t\t\t`Flow synced global commands/agents (${changed\n\t\t\t\t\t.map((result) => `${result.name}: ${result.action}`)\n\t\t\t\t\t.join(\n\t\t\t\t\t\t\", \",\n\t\t\t\t\t)}). Restart OpenCode once if commands were just installed.`,\n\t\t\t);\n\t\t}\n\t} catch (error) {\n\t\tlog(\"warn\", `Flow command/agent sync failed: ${describeError(error)}`);\n\t}\n\n\ttry {\n\t\tconst preNpmCopy = await detectPreNpmFlowPlugin();\n\t\tif (preNpmCopy) {\n\t\t\tlog(\n\t\t\t\t\"warn\",\n\t\t\t\t`Stale pre-npm Flow plugin copy detected at ${preNpmCopy.path}. Flow now loads from npm via the opencode.json plugin array; remove the stale copy to avoid loading Flow twice (run \\`bunx opencode-plugin-flow uninstall\\`${preNpmCopy.flowOwned ? \"\" : \" or delete the file manually\"}).`,\n\t\t\t);\n\t\t}\n\t} catch (error) {\n\t\tlog(\"warn\", `Flow pre-npm install check failed: ${describeError(error)}`);\n\t}\n}\n\nasync function readOptionalFile(path: string): Promise<string | null> {\n\ttry {\n\t\treturn await readFile(path, \"utf8\");\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n\t\t\treturn null;\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nfunction describeError(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n\nfunction renderPermissionFrontmatter(\n\tpermission: FlowAgentConfig[\"permission\"],\n) {\n\tif (!permission) {\n\t\treturn [];\n\t}\n\tconst lines = [\"permission:\"];\n\tfor (const [key, value] of Object.entries(permission)) {\n\t\tif (typeof value === \"string\") {\n\t\t\tlines.push(` ${JSON.stringify(key)}: ${JSON.stringify(value)}`);\n\t\t\tcontinue;\n\t\t}\n\t\tif (value && typeof value === \"object\") {\n\t\t\tlines.push(` ${JSON.stringify(key)}:`);\n\t\t\tfor (const [nestedKey, nestedValue] of Object.entries(value)) {\n\t\t\t\tlines.push(\n\t\t\t\t\t` ${JSON.stringify(nestedKey)}: ${JSON.stringify(nestedValue)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\treturn lines;\n}\n\ntype SyncManagedMarkdownFilesInput = {\n\thomeDir: string;\n\tversion: string;\n\tkind: FlowManagedMarkdownKind;\n\troot: string;\n\tfiles: ReadonlyMap<string, string>;\n};\n\nasync function syncManagedMarkdownFiles({\n\tversion,\n\tkind,\n\troot,\n\tfiles,\n}: SyncManagedMarkdownFilesInput): Promise<FlowManagedMarkdownSyncResult[]> {\n\tconst results: FlowManagedMarkdownSyncResult[] = [];\n\tfor (const [name, content] of files) {\n\t\tconst path = join(root, `${name}.md`);\n\t\tconst markerPath = join(root, `.${name}.flow-version`);\n\t\tconst marker = await readManagedMarkdownMarker(markerPath, kind, name);\n\t\tconst existing = await readOptionalFile(path);\n\t\tconst desiredMarker = renderFlowManagedMarkdownMarker({\n\t\t\tkind,\n\t\t\tname,\n\t\t\tversion,\n\t\t\thash: sha256(content),\n\t\t});\n\n\t\tif (existing === null && marker === null) {\n\t\t\tawait mkdir(root, { recursive: true });\n\t\t\tawait writeFile(path, content, \"utf8\");\n\t\t\tawait writeFile(markerPath, desiredMarker, \"utf8\");\n\t\t\tresults.push({ name, kind, action: \"installed\", path });\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst owned = marker !== null || existing === content;\n\t\tif (!owned) {\n\t\t\tresults.push({ name, kind, action: \"skipped_foreign\", path });\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (existing === content) {\n\t\t\tif ((await readOptionalFile(markerPath)) !== desiredMarker) {\n\t\t\t\tawait mkdir(root, { recursive: true });\n\t\t\t\tawait writeFile(markerPath, desiredMarker, \"utf8\");\n\t\t\t}\n\t\t\tresults.push({ name, kind, action: \"unchanged\", path });\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet backedUp = false;\n\t\tif (\n\t\t\texisting !== null &&\n\t\t\tmarker !== null &&\n\t\t\tsha256(existing) !== marker.hash\n\t\t) {\n\t\t\tawait writeFile(`${path}.backup`, existing, \"utf8\");\n\t\t\tbackedUp = true;\n\t\t}\n\t\tawait mkdir(root, { recursive: true });\n\t\tawait writeFile(path, content, \"utf8\");\n\t\tawait writeFile(markerPath, desiredMarker, \"utf8\");\n\t\tresults.push({\n\t\t\tname,\n\t\t\tkind,\n\t\t\taction: backedUp ? \"updated_with_backup\" : \"updated\",\n\t\t\tpath,\n\t\t});\n\t}\n\treturn results;\n}\n\nasync function inspectManagedMarkdownSyncState(input: {\n\tkind: FlowManagedMarkdownKind;\n\troot: string;\n\tfiles: ReadonlyMap<string, string>;\n}): Promise<FlowManagedMarkdownSyncStateEntry[]> {\n\tconst entries: FlowManagedMarkdownSyncStateEntry[] = [];\n\tfor (const [name, content] of input.files) {\n\t\tconst path = join(input.root, `${name}.md`);\n\t\tconst markerPath = join(input.root, `.${name}.flow-version`);\n\t\tconst existing = await readOptionalFile(path);\n\t\tconst marker = await readManagedMarkdownMarker(\n\t\t\tmarkerPath,\n\t\t\tinput.kind,\n\t\t\tname,\n\t\t);\n\t\tif (existing === null) {\n\t\t\tentries.push({ name, kind: input.kind, state: \"missing\", path });\n\t\t\tcontinue;\n\t\t}\n\t\tif (marker === null && existing !== content) {\n\t\t\tentries.push({ name, kind: input.kind, state: \"foreign\", path });\n\t\t\tcontinue;\n\t\t}\n\t\tentries.push({\n\t\t\tname,\n\t\t\tkind: input.kind,\n\t\t\tstate: existing === content ? \"synced\" : \"stale\",\n\t\t\tpath,\n\t\t});\n\t}\n\treturn entries;\n}\n\nasync function readManagedMarkdownMarker(\n\tpath: string,\n\tkind: FlowManagedMarkdownKind,\n\tname: string,\n): Promise<FlowManagedMarkdownMarker | null> {\n\tconst content = await readOptionalFile(path);\n\treturn content === null\n\t\t? null\n\t\t: parseFlowManagedMarkdownMarker(content, kind, name);\n}\n",
|
|
6
|
+
"import type { FlowManagedMarkdownKind } from \"./skill-markers\";\n\nexport const SKILL_DOCUMENT_FILENAME = \"SKILL.md\";\n\nexport type FlowSkillFile = {\n\t/** Path inside the installed skill folder, `/`-separated. */\n\trelativePath: string;\n\tcontent: string;\n};\n\nexport type FlowSkillDefinition = {\n\tname: string;\n\tfiles: readonly FlowSkillFile[];\n};\n\nexport type FlowSkillSyncAction =\n\t| \"installed\"\n\t| \"updated\"\n\t| \"updated_with_backup\"\n\t| \"unchanged\"\n\t| \"skipped_foreign\";\n\nexport type FlowSkillSyncResult = {\n\tname: string;\n\taction: FlowSkillSyncAction;\n\tskillPath: string;\n};\n\nexport type FlowManagedMarkdownSyncResult = {\n\tname: string;\n\tkind: FlowManagedMarkdownKind;\n\taction: FlowSkillSyncAction | \"removed_retired\";\n\tpath: string;\n};\n\nexport type FlowSkillSyncOptions = {\n\thomeDir?: string;\n\tversion: string;\n};\n\nexport type FlowSkillSyncStateEntry = {\n\tname: string;\n\tstate: \"synced\" | \"stale\" | \"missing\" | \"foreign\";\n\tskillPath: string;\n};\n\nexport type FlowManagedMarkdownSyncStateEntry = {\n\tname: string;\n\tkind: FlowManagedMarkdownKind;\n\tstate: \"synced\" | \"stale\" | \"missing\" | \"foreign\";\n\tpath: string;\n};\n\nexport type PreNpmFlowPluginCopy = {\n\tpath: string;\n\tflowOwned: boolean;\n};\n",
|
|
7
|
+
"import flowParallelOrchestrationDoc from \"../../skills/flow/references/parallel-orchestration.md\" with {\n\ttype: \"text\",\n};\nimport flowRecoveryPlaybookDoc from \"../../skills/flow/references/recovery-playbook.md\" with {\n\ttype: \"text\",\n};\nimport flowSkillDoc from \"../../skills/flow/SKILL.md\" with { type: \"text\" };\nimport flowPlanParallelDiscoveryDoc from \"../../skills/flow-plan/references/parallel-discovery.md\" with {\n\ttype: \"text\",\n};\nimport flowPlanPlanningExamplesDoc from \"../../skills/flow-plan/references/planning-examples.md\" with {\n\ttype: \"text\",\n};\nimport flowPlanSkillDoc from \"../../skills/flow-plan/SKILL.md\" with {\n\ttype: \"text\",\n};\nimport flowReviewReviewRubricDoc from \"../../skills/flow-review/references/review-rubric.md\" with {\n\ttype: \"text\",\n};\nimport flowReviewSkillDoc from \"../../skills/flow-review/SKILL.md\" with {\n\ttype: \"text\",\n};\nimport flowRunAuditRubricDoc from \"../../skills/flow-run/references/audit-rubric.md\" with {\n\ttype: \"text\",\n};\nimport flowRunValidationRubricDoc from \"../../skills/flow-run/references/validation-rubric.md\" with {\n\ttype: \"text\",\n};\nimport flowRunSkillDoc from \"../../skills/flow-run/SKILL.md\" with {\n\ttype: \"text\",\n};\nimport {\n\ttype FlowSkillDefinition,\n\ttype FlowSkillFile,\n\tSKILL_DOCUMENT_FILENAME,\n} from \"./sync-types\";\n\nexport type { FlowSkillDefinition, FlowSkillFile };\n\n/**\n * The hand-authored skills shipped with the plugin. The markdown is embedded\n * at build time via Bun text imports so the bundled dist/index.js remains\n * self-contained. Source of truth: the `skills/` directory in the repo.\n */\nexport const FLOW_SKILL_DEFINITIONS: readonly FlowSkillDefinition[] = [\n\t{\n\t\tname: \"flow\",\n\t\tfiles: [\n\t\t\t{ relativePath: SKILL_DOCUMENT_FILENAME, content: flowSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/recovery-playbook.md\",\n\t\t\t\tcontent: flowRecoveryPlaybookDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/parallel-orchestration.md\",\n\t\t\t\tcontent: flowParallelOrchestrationDoc,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tname: \"flow-plan\",\n\t\tfiles: [\n\t\t\t{ relativePath: SKILL_DOCUMENT_FILENAME, content: flowPlanSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/planning-examples.md\",\n\t\t\t\tcontent: flowPlanPlanningExamplesDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/parallel-discovery.md\",\n\t\t\t\tcontent: flowPlanParallelDiscoveryDoc,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tname: \"flow-run\",\n\t\tfiles: [\n\t\t\t{ relativePath: SKILL_DOCUMENT_FILENAME, content: flowRunSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/audit-rubric.md\",\n\t\t\t\tcontent: flowRunAuditRubricDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/validation-rubric.md\",\n\t\t\t\tcontent: flowRunValidationRubricDoc,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tname: \"flow-review\",\n\t\tfiles: [\n\t\t\t{ relativePath: SKILL_DOCUMENT_FILENAME, content: flowReviewSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/review-rubric.md\",\n\t\t\t\tcontent: flowReviewReviewRubricDoc,\n\t\t\t},\n\t\t],\n\t},\n];\n",
|
|
8
|
+
"import { mkdir, rm, writeFile } from \"node:fs/promises\";\nimport { join, sep } from \"node:path\";\nimport {\n\tFLOW_CORE_AGENTS,\n\tFLOW_CORE_COMMANDS,\n\ttype FlowAgentConfig,\n\ttype FlowCommandConfig,\n\tRETIRED_FLOW_COMMANDS,\n} from \"../config-shared\";\nimport {\n\ttype FlowManagedMarkdownKind,\n\ttype FlowManagedMarkdownMarker,\n\tparseFlowManagedMarkdownMarker,\n\trenderFlowManagedMarkdownMarker,\n\tsha256,\n} from \"./skill-markers\";\nimport {\n\tresolveFlowAgentsRoot,\n\tresolveFlowCommandsRoot,\n\tresolveFlowHomeDir,\n} from \"./sync-paths\";\nimport type {\n\tFlowManagedMarkdownSyncResult,\n\tFlowManagedMarkdownSyncStateEntry,\n\tFlowSkillSyncOptions,\n} from \"./sync-types\";\nimport { readOptionalFile } from \"./sync-utils\";\n\nexport function renderFlowCommandMarkdown(command: FlowCommandConfig): string {\n\tconst frontmatter = [\n\t\t\"---\",\n\t\t`description: ${JSON.stringify(command.description)}`,\n\t\t...(command.agent ? [`agent: ${JSON.stringify(command.agent)}`] : []),\n\t\t...(command.subtask === undefined ? [] : [`subtask: ${command.subtask}`]),\n\t\t\"---\",\n\t];\n\treturn `${frontmatter.join(\"\\n\")}\\n\\n${command.template}\\n`;\n}\n\nexport function renderFlowAgentMarkdown(agent: FlowAgentConfig): string {\n\tconst frontmatter = [\n\t\t\"---\",\n\t\t`description: ${JSON.stringify(agent.description)}`,\n\t\t`mode: ${agent.mode}`,\n\t\t...(agent.reasoningEffort\n\t\t\t? [`reasoningEffort: ${agent.reasoningEffort}`]\n\t\t\t: []),\n\t\t...(agent.permission ? renderPermissionFrontmatter(agent.permission) : []),\n\t\t\"---\",\n\t];\n\treturn `${frontmatter.join(\"\\n\")}\\n\\n${agent.prompt}\\n`;\n}\n\nexport function flowCommandDefinitions(): Map<string, string> {\n\treturn new Map(\n\t\tObject.entries(FLOW_CORE_COMMANDS).map(([name, command]) => [\n\t\t\tname,\n\t\t\trenderFlowCommandMarkdown(command),\n\t\t]),\n\t);\n}\n\nexport function flowAgentDefinitions(): Map<string, string> {\n\treturn new Map(\n\t\tObject.entries(FLOW_CORE_AGENTS).map(([name, agent]) => [\n\t\t\tname,\n\t\t\trenderFlowAgentMarkdown(agent),\n\t\t]),\n\t);\n}\n\nexport async function syncFlowCommandsAndAgents({\n\thomeDir = resolveFlowHomeDir(),\n\tversion,\n}: FlowSkillSyncOptions): Promise<FlowManagedMarkdownSyncResult[]> {\n\tconst retired = await cleanupRetiredManagedMarkdownFiles({\n\t\tkind: \"command\",\n\t\troot: resolveFlowCommandsRoot(homeDir),\n\t\tnames: RETIRED_FLOW_COMMANDS,\n\t});\n\treturn [\n\t\t...retired.removed.map((path) => ({\n\t\t\tname: retiredNameFromPath(path),\n\t\t\tkind: \"command\" as const,\n\t\t\taction: \"removed_retired\" as const,\n\t\t\tpath,\n\t\t})),\n\t\t...(await syncManagedMarkdownFiles({\n\t\t\tversion,\n\t\t\tkind: \"command\",\n\t\t\troot: resolveFlowCommandsRoot(homeDir),\n\t\t\tfiles: flowCommandDefinitions(),\n\t\t})),\n\t\t...(await syncManagedMarkdownFiles({\n\t\t\tversion,\n\t\t\tkind: \"agent\",\n\t\t\troot: resolveFlowAgentsRoot(homeDir),\n\t\t\tfiles: flowAgentDefinitions(),\n\t\t})),\n\t];\n}\n\nfunction retiredNameFromPath(path: string): string {\n\tconst file = path.split(sep).at(-1) ?? path;\n\treturn file.endsWith(\".md\") ? file.slice(0, -\".md\".length) : file;\n}\n\n/**\n * Removes files a previous release synced for since-retired names. Only\n * marker-owned files whose content still matches the recorded hash are\n * deleted; user-edited or foreign files stay untouched.\n */\nexport async function cleanupRetiredManagedMarkdownFiles(input: {\n\tkind: FlowManagedMarkdownKind;\n\troot: string;\n\tnames: readonly string[];\n\tdryRun?: boolean;\n}): Promise<{ removed: string[]; keptUserEdited: string[] }> {\n\tconst removed: string[] = [];\n\tconst keptUserEdited: string[] = [];\n\tfor (const name of input.names) {\n\t\tconst path = join(input.root, `${name}.md`);\n\t\tconst markerPath = join(input.root, `.${name}.flow-version`);\n\t\tconst markerContent = await readOptionalFile(markerPath);\n\t\tconst marker =\n\t\t\tmarkerContent === null\n\t\t\t\t? null\n\t\t\t\t: parseFlowManagedMarkdownMarker(markerContent, input.kind, name);\n\t\tif (marker === null) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst content = await readOptionalFile(path);\n\t\tif (content !== null && sha256(content) !== marker.hash) {\n\t\t\tkeptUserEdited.push(path);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!input.dryRun) {\n\t\t\tawait rm(path, { force: true });\n\t\t\tawait rm(markerPath, { force: true });\n\t\t\tawait rm(`${path}.backup`, { force: true });\n\t\t}\n\t\tremoved.push(path);\n\t}\n\treturn { removed, keptUserEdited };\n}\n\nexport async function inspectFlowCommandAgentSyncState(\n\thomeDir = resolveFlowHomeDir(),\n): Promise<FlowManagedMarkdownSyncStateEntry[]> {\n\treturn [\n\t\t...(await inspectManagedMarkdownSyncState({\n\t\t\tkind: \"command\",\n\t\t\troot: resolveFlowCommandsRoot(homeDir),\n\t\t\tfiles: flowCommandDefinitions(),\n\t\t})),\n\t\t...(await inspectManagedMarkdownSyncState({\n\t\t\tkind: \"agent\",\n\t\t\troot: resolveFlowAgentsRoot(homeDir),\n\t\t\tfiles: flowAgentDefinitions(),\n\t\t})),\n\t];\n}\n\nfunction renderPermissionFrontmatter(\n\tpermission: FlowAgentConfig[\"permission\"],\n) {\n\tif (!permission) {\n\t\treturn [];\n\t}\n\tconst lines = [\"permission:\"];\n\tfor (const [key, value] of Object.entries(permission)) {\n\t\tif (typeof value === \"string\") {\n\t\t\tlines.push(` ${JSON.stringify(key)}: ${JSON.stringify(value)}`);\n\t\t\tcontinue;\n\t\t}\n\t\tif (value && typeof value === \"object\") {\n\t\t\tlines.push(` ${JSON.stringify(key)}:`);\n\t\t\tfor (const [nestedKey, nestedValue] of Object.entries(value)) {\n\t\t\t\tlines.push(\n\t\t\t\t\t` ${JSON.stringify(nestedKey)}: ${JSON.stringify(nestedValue)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\treturn lines;\n}\n\ntype SyncManagedMarkdownFilesInput = {\n\tversion: string;\n\tkind: FlowManagedMarkdownKind;\n\troot: string;\n\tfiles: ReadonlyMap<string, string>;\n};\n\nasync function syncManagedMarkdownFiles({\n\tversion,\n\tkind,\n\troot,\n\tfiles,\n}: SyncManagedMarkdownFilesInput): Promise<FlowManagedMarkdownSyncResult[]> {\n\tconst results: FlowManagedMarkdownSyncResult[] = [];\n\tfor (const [name, content] of files) {\n\t\tconst path = join(root, `${name}.md`);\n\t\tconst markerPath = join(root, `.${name}.flow-version`);\n\t\tconst marker = await readManagedMarkdownMarker(markerPath, kind, name);\n\t\tconst existing = await readOptionalFile(path);\n\t\tconst desiredMarker = renderFlowManagedMarkdownMarker({\n\t\t\tkind,\n\t\t\tname,\n\t\t\tversion,\n\t\t\thash: sha256(content),\n\t\t});\n\n\t\tif (existing === null && marker === null) {\n\t\t\tawait mkdir(root, { recursive: true });\n\t\t\tawait writeFile(path, content, \"utf8\");\n\t\t\tawait writeFile(markerPath, desiredMarker, \"utf8\");\n\t\t\tresults.push({ name, kind, action: \"installed\", path });\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst owned = marker !== null || existing === content;\n\t\tif (!owned) {\n\t\t\tresults.push({ name, kind, action: \"skipped_foreign\", path });\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (existing === content) {\n\t\t\tif ((await readOptionalFile(markerPath)) !== desiredMarker) {\n\t\t\t\tawait mkdir(root, { recursive: true });\n\t\t\t\tawait writeFile(markerPath, desiredMarker, \"utf8\");\n\t\t\t}\n\t\t\tresults.push({ name, kind, action: \"unchanged\", path });\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet backedUp = false;\n\t\tif (\n\t\t\texisting !== null &&\n\t\t\tmarker !== null &&\n\t\t\tsha256(existing) !== marker.hash\n\t\t) {\n\t\t\tawait writeFile(`${path}.backup`, existing, \"utf8\");\n\t\t\tbackedUp = true;\n\t\t}\n\t\tawait mkdir(root, { recursive: true });\n\t\tawait writeFile(path, content, \"utf8\");\n\t\tawait writeFile(markerPath, desiredMarker, \"utf8\");\n\t\tresults.push({\n\t\t\tname,\n\t\t\tkind,\n\t\t\taction: backedUp ? \"updated_with_backup\" : \"updated\",\n\t\t\tpath,\n\t\t});\n\t}\n\treturn results;\n}\n\nasync function inspectManagedMarkdownSyncState(input: {\n\tkind: FlowManagedMarkdownKind;\n\troot: string;\n\tfiles: ReadonlyMap<string, string>;\n}): Promise<FlowManagedMarkdownSyncStateEntry[]> {\n\tconst entries: FlowManagedMarkdownSyncStateEntry[] = [];\n\tfor (const [name, content] of input.files) {\n\t\tconst path = join(input.root, `${name}.md`);\n\t\tconst markerPath = join(input.root, `.${name}.flow-version`);\n\t\tconst existing = await readOptionalFile(path);\n\t\tconst marker = await readManagedMarkdownMarker(\n\t\t\tmarkerPath,\n\t\t\tinput.kind,\n\t\t\tname,\n\t\t);\n\t\tif (existing === null) {\n\t\t\tentries.push({ name, kind: input.kind, state: \"missing\", path });\n\t\t\tcontinue;\n\t\t}\n\t\tif (marker === null && existing !== content) {\n\t\t\tentries.push({ name, kind: input.kind, state: \"foreign\", path });\n\t\t\tcontinue;\n\t\t}\n\t\tentries.push({\n\t\t\tname,\n\t\t\tkind: input.kind,\n\t\t\tstate: existing === content ? \"synced\" : \"stale\",\n\t\t\tpath,\n\t\t});\n\t}\n\treturn entries;\n}\n\nasync function readManagedMarkdownMarker(\n\tpath: string,\n\tkind: FlowManagedMarkdownKind,\n\tname: string,\n): Promise<FlowManagedMarkdownMarker | null> {\n\tconst content = await readOptionalFile(path);\n\treturn content === null\n\t\t? null\n\t\t: parseFlowManagedMarkdownMarker(content, kind, name);\n}\n",
|
|
7
9
|
"export type FlowReasoningEffort = \"low\" | \"medium\" | \"high\";\n\nexport type FlowPermissionConfig = {\n\tedit?: string;\n\tbash?: string;\n\texternal_directory?: string;\n\ttask?: Record<string, string>;\n} & {\n\t// OpenCode per-agent permissions accept glob patterns against tool names\n\t// (e.g. \"flow_*\": \"deny\"), which platform-enforces read-only subagents.\n\t[toolPattern: string]: string | Record<string, string> | undefined;\n};\n\nexport type FlowAgentConfig = {\n\tmode: \"primary\" | \"all\";\n\tdescription: string;\n\tprompt: string;\n\tpermission?: FlowPermissionConfig;\n\treasoningEffort?: FlowReasoningEffort;\n};\n\nexport type FlowCommandConfig = {\n\tdescription: string;\n\ttemplate: string;\n\tagent?: string;\n\tsubtask?: boolean;\n};\n\nexport type MutableFlowConfig = {\n\tagent?: Record<string, unknown>;\n\tcommand?: Record<string, unknown>;\n};\n\nexport const FLOW_REASONING = {\n\tfast: \"low\",\n\tbalanced: \"medium\",\n\tdeep: \"high\",\n} as const satisfies Record<string, FlowReasoningEffort>;\n\nexport const FLOW_CORE_AGENTS = {\n\t\"flow-reviewer\": {\n\t\tmode: \"all\",\n\t\tdescription: \"Review Flow work read-only and record a reviewer decision.\",\n\t\tprompt:\n\t\t\t\"You are the Flow reviewer. Load the `flow-review` skill, review the requested work read-only, then record your decision with flow_review_record.\",\n\t\treasoningEffort: FLOW_REASONING.deep,\n\t\t// Read-only is platform-enforced: no edits, no shell, no subagents, and\n\t\t// no Flow tools except status reads and recording the review decision.\n\t\tpermission: {\n\t\t\tedit: \"deny\",\n\t\t\tbash: \"deny\",\n\t\t\ttask: { \"*\": \"deny\" },\n\t\t\t\"flow_*\": \"deny\",\n\t\t\tflow_status: \"allow\",\n\t\t\tflow_review_record: \"allow\",\n\t\t},\n\t},\n} satisfies Record<string, FlowAgentConfig>;\n\nexport const FLOW_CORE_COMMANDS = {\n\t\"flow-plan\": {\n\t\tdescription: \"Create, update, or approve a Flow plan\",\n\t\ttemplate: \"Load the `flow-plan` skill and plan: $ARGUMENTS\",\n\t},\n\t\"flow-run\": {\n\t\tdescription: \"Run one approved Flow feature\",\n\t\ttemplate:\n\t\t\t\"Load the `flow-run` skill and execute the next approved Flow feature. $ARGUMENTS\",\n\t},\n\t\"flow-auto\": {\n\t\tdescription:\n\t\t\t\"Drive the Flow loop autonomously until completion or a real blocker\",\n\t\ttemplate:\n\t\t\t\"Load the `flow` skill and drive the Flow loop (status, plan, run, review) until completion or a real blocker: $ARGUMENTS\",\n\t},\n\t\"flow-status\": {\n\t\tdescription: \"Inspect the active Flow session and workspace readiness\",\n\t\ttemplate:\n\t\t\t\"Call flow_status (detailed) and report session state, readiness checks, and the suggested next step.\",\n\t},\n\t\"flow-review\": {\n\t\tdescription: \"Run a read-only Flow review with a fresh context\",\n\t\tagent: \"flow-reviewer\",\n\t\tsubtask: true,\n\t\ttemplate: \"Load the `flow-review` skill and review: $ARGUMENTS\",\n\t},\n} satisfies Record<string, FlowCommandConfig>;\n\n// Commands retired in v3.1: each was either a duplicate of /flow-status or a\n// thin wrapper over a single tool call the skills already teach (flow_session\n// history/activate/close/show, flow_feature_complete reset). Startup sync and\n// uninstall remove the Flow-owned files earlier releases synced for them.\nexport const RETIRED_FLOW_COMMANDS = [\n\t\"flow-doctor\",\n\t\"flow-history\",\n\t\"flow-reset\",\n\t\"flow-session\",\n] as const;\n\nfunction cloneAgentConfig(agent: FlowAgentConfig) {\n\treturn {\n\t\t...agent,\n\t\t...(agent.permission\n\t\t\t? {\n\t\t\t\t\tpermission: {\n\t\t\t\t\t\t...agent.permission,\n\t\t\t\t\t\t...(agent.permission.task\n\t\t\t\t\t\t\t? { task: { ...agent.permission.task } }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t};\n}\n\nexport function createFlowCoreConfigEntries() {\n\tconst agent = Object.fromEntries(\n\t\tObject.entries(FLOW_CORE_AGENTS).map(([name, item]) => [\n\t\t\tname,\n\t\t\tcloneAgentConfig(item),\n\t\t]),\n\t);\n\tconst command = Object.fromEntries(\n\t\tObject.entries(FLOW_CORE_COMMANDS).map(([name, item]) => [\n\t\t\tname,\n\t\t\t{ ...item },\n\t\t]),\n\t);\n\treturn { agent, command };\n}\n\nexport function applyFlowConfig(config: MutableFlowConfig): void {\n\tconst entries = createFlowCoreConfigEntries();\n\tconfig.agent = {\n\t\t...(config.agent ?? {}),\n\t\t...entries.agent,\n\t};\n\tconfig.command = {\n\t\t...(config.command ?? {}),\n\t\t...entries.command,\n\t};\n}\n",
|
|
8
10
|
"import { createHash } from \"node:crypto\";\nimport { join } from \"node:path\";\n\nexport const FLOW_SKILLS_DIRECTORY = join(\".config\", \"opencode\", \"skills\");\n\nexport const FLOW_COMMANDS_DIRECTORY = join(\".config\", \"opencode\", \"commands\");\n\nexport const FLOW_AGENTS_DIRECTORY = join(\".config\", \"opencode\", \"agents\");\n\nexport const FLOW_SKILL_MARKER_FILENAME = \".flow-skill-version\";\n\nexport const FLOW_SKILL_BACKUP_FILENAME = \"SKILL.md.backup\";\n\nexport const FLOW_PRE_NPM_PLUGIN_RELATIVE_PATH = join(\n\t\".config\",\n\t\"opencode\",\n\t\"plugins\",\n\t\"flow.js\",\n);\n\nexport const FLOW_PRE_NPM_PLUGIN_OWNERSHIP_HEADER =\n\t\"// Managed by flow-opencode install/uninstall\\n\";\n\nconst FLOW_SKILL_GENERATED_MARKER = \"flow-opencode-generated-skill\";\n\ntype FlowSkillGeneratedMarker = {\n\tname: string;\n\tversion: string;\n\thash: string;\n};\n\ntype FlowSkillDocumentInspection =\n\t| { kind: \"not_generated\" }\n\t| { kind: \"valid_generated\"; marker: FlowSkillGeneratedMarker }\n\t| { kind: \"invalid_generated\"; reason: string };\n\nconst FLOW_SKILL_GENERATED_MARKER_PREFIX = `<!-- ${FLOW_SKILL_GENERATED_MARKER} `;\nconst FLOW_SKILL_GENERATED_MARKER_PATTERN = new RegExp(\n\t`^<!-- ${FLOW_SKILL_GENERATED_MARKER} name=([a-z0-9]+(?:-[a-z0-9]+)*) version=([0-9]+) hash=sha256:([a-f0-9]{64}) -->$`,\n\t\"u\",\n);\n\nexport function sha256(text: string): string {\n\treturn createHash(\"sha256\").update(text, \"utf8\").digest(\"hex\");\n}\n\nexport function inspectFlowSkillDocument(\n\tdocument: string,\n): FlowSkillDocumentInspection {\n\tconst lines = document.split(\"\\n\");\n\tconst markerIndexes = lines.flatMap((line, index) =>\n\t\tline.startsWith(FLOW_SKILL_GENERATED_MARKER_PREFIX) ? [index] : [],\n\t);\n\tif (markerIndexes.length === 0) {\n\t\treturn { kind: \"not_generated\" };\n\t}\n\tif (markerIndexes.length > 1) {\n\t\treturn { kind: \"invalid_generated\", reason: \"duplicate_marker\" };\n\t}\n\n\tconst markerIndex = markerIndexes[0];\n\tif (markerIndex === undefined) {\n\t\treturn { kind: \"not_generated\" };\n\t}\n\tconst markerLine = lines[markerIndex];\n\tif (markerLine === undefined) {\n\t\treturn { kind: \"invalid_generated\", reason: \"malformed_marker\" };\n\t}\n\tconst match = markerLine.match(FLOW_SKILL_GENERATED_MARKER_PATTERN);\n\tif (!match) {\n\t\treturn { kind: \"invalid_generated\", reason: \"malformed_marker\" };\n\t}\n\n\tconst [, name, version, hash] = match;\n\tif (name === undefined || version === undefined || hash === undefined) {\n\t\treturn { kind: \"invalid_generated\", reason: \"malformed_marker\" };\n\t}\n\tconst managedPayload = [\n\t\t...lines.slice(0, markerIndex),\n\t\t...lines.slice(markerIndex + 1),\n\t].join(\"\\n\");\n\tif (sha256(managedPayload) !== hash) {\n\t\treturn { kind: \"invalid_generated\", reason: \"hash_mismatch\" };\n\t}\n\n\treturn {\n\t\tkind: \"valid_generated\",\n\t\tmarker: { name, version, hash },\n\t};\n}\n\ntype FlowSkillFolderMarker = {\n\tplugin: string;\n\tversion: string;\n\thash: string | null;\n};\n\nconst FLOW_SKILL_MARKER_PLUGIN = \"opencode-plugin-flow\";\nconst FLOW_SKILL_MARKER_FILE_PREFIX = \"file=\";\nconst FLOW_SKILL_MARKER_FILE_HASH_SEPARATOR = \"=sha256:\";\n\n/**\n * Renders the plugin-owned `.flow-skill-version` marker. The top-level `hash`\n * stays the SKILL.md content hash (compatible with pre-existing markers and\n * `parseFlowSkillFolderMarker`); each shipped file additionally gets a\n * `file=<relative-path>=sha256:<hash>` line so sync and uninstall can detect\n * user edits per file and know exactly which files the plugin owns.\n */\nexport function renderFlowSkillFolderMarker(marker: {\n\tversion: string;\n\thash: string;\n\tfiles?: ReadonlyArray<{ relativePath: string; hash: string }>;\n}): string {\n\treturn [\n\t\t`plugin=${FLOW_SKILL_MARKER_PLUGIN}`,\n\t\t`version=${marker.version}`,\n\t\t`hash=sha256:${marker.hash}`,\n\t\t...(marker.files ?? []).map(\n\t\t\t(file) =>\n\t\t\t\t`${FLOW_SKILL_MARKER_FILE_PREFIX}${file.relativePath}${FLOW_SKILL_MARKER_FILE_HASH_SEPARATOR}${file.hash}`,\n\t\t),\n\t\t\"\",\n\t].join(\"\\n\");\n}\n\n/**\n * Extracts the per-file hash entries from a folder marker. Markers written\n * before per-file tracking simply yield an empty map.\n */\nexport function parseFlowSkillFileHashes(content: string): Map<string, string> {\n\tconst hashes = new Map<string, string>();\n\tfor (const line of content.split(\"\\n\")) {\n\t\tif (!line.startsWith(FLOW_SKILL_MARKER_FILE_PREFIX)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst entry = line.slice(FLOW_SKILL_MARKER_FILE_PREFIX.length);\n\t\tconst separator = entry.lastIndexOf(FLOW_SKILL_MARKER_FILE_HASH_SEPARATOR);\n\t\tif (separator === -1) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst relativePath = entry.slice(0, separator);\n\t\tconst hash = entry.slice(\n\t\t\tseparator + FLOW_SKILL_MARKER_FILE_HASH_SEPARATOR.length,\n\t\t);\n\t\tif (relativePath.length > 0 && /^[a-f0-9]{64}$/.test(hash)) {\n\t\t\thashes.set(relativePath, hash);\n\t\t}\n\t}\n\treturn hashes;\n}\n\nexport type FlowManagedMarkdownKind = \"command\" | \"agent\";\n\nexport type FlowManagedMarkdownMarker = {\n\tkind: FlowManagedMarkdownKind;\n\tname: string;\n\tversion: string;\n\thash: string;\n};\n\n/**\n * Renders the sidecar `.{name}.flow-version` marker that records ownership of\n * a synced command or agent markdown file.\n */\nexport function renderFlowManagedMarkdownMarker(\n\tmarker: FlowManagedMarkdownMarker,\n): string {\n\treturn [\n\t\t`plugin=${FLOW_SKILL_MARKER_PLUGIN}`,\n\t\t`kind=${marker.kind}`,\n\t\t`name=${marker.name}`,\n\t\t`version=${marker.version}`,\n\t\t`hash=sha256:${marker.hash}`,\n\t\t\"\",\n\t].join(\"\\n\");\n}\n\nexport function parseFlowManagedMarkdownMarker(\n\tcontent: string,\n\tkind: FlowManagedMarkdownKind,\n\tname: string,\n): FlowManagedMarkdownMarker | null {\n\tconst entries = new Map<string, string>();\n\tfor (const line of content.split(\"\\n\")) {\n\t\tconst separator = line.indexOf(\"=\");\n\t\tif (separator === -1) {\n\t\t\tcontinue;\n\t\t}\n\t\tentries.set(line.slice(0, separator), line.slice(separator + 1));\n\t}\n\tconst version = entries.get(\"version\");\n\tconst hash = entries.get(\"hash\");\n\tif (\n\t\tentries.get(\"plugin\") !== FLOW_SKILL_MARKER_PLUGIN ||\n\t\tentries.get(\"kind\") !== kind ||\n\t\tentries.get(\"name\") !== name ||\n\t\t!version ||\n\t\t!hash?.startsWith(\"sha256:\")\n\t) {\n\t\treturn null;\n\t}\n\treturn {\n\t\tkind,\n\t\tname,\n\t\tversion,\n\t\thash: hash.slice(\"sha256:\".length),\n\t};\n}\n\nexport function parseFlowSkillFolderMarker(\n\tcontent: string,\n): FlowSkillFolderMarker | null {\n\tconst entries = new Map<string, string>();\n\tfor (const line of content.split(\"\\n\")) {\n\t\tconst separator = line.indexOf(\"=\");\n\t\tif (separator === -1) {\n\t\t\tcontinue;\n\t\t}\n\t\tentries.set(line.slice(0, separator), line.slice(separator + 1));\n\t}\n\tconst plugin = entries.get(\"plugin\");\n\tconst version = entries.get(\"version\");\n\tif (plugin !== FLOW_SKILL_MARKER_PLUGIN || !version) {\n\t\treturn null;\n\t}\n\tconst hash = entries.get(\"hash\");\n\treturn {\n\t\tplugin,\n\t\tversion,\n\t\thash: hash?.startsWith(\"sha256:\") ? hash.slice(\"sha256:\".length) : null,\n\t};\n}\n",
|
|
11
|
+
"import { createRequire } from \"node:module\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport {\n\tFLOW_AGENTS_DIRECTORY,\n\tFLOW_COMMANDS_DIRECTORY,\n\tFLOW_PRE_NPM_PLUGIN_OWNERSHIP_HEADER,\n\tFLOW_PRE_NPM_PLUGIN_RELATIVE_PATH,\n\tFLOW_SKILLS_DIRECTORY,\n} from \"./skill-markers\";\nimport type { PreNpmFlowPluginCopy } from \"./sync-types\";\nimport { readOptionalFile } from \"./sync-utils\";\n\nexport function resolveFlowHomeDir(): string {\n\treturn process.env.HOME ?? homedir();\n}\n\n/**\n * In the published npm layout, package.json sits one directory above the\n * bundled dist/index.js. Reading it at runtime keeps the version out of the\n * bundle and immune to release-time drift; sandboxes without a version field\n * fall back to a sentinel.\n */\nexport function resolveFlowPluginVersion(): string {\n\ttry {\n\t\tconst require = createRequire(import.meta.url);\n\t\tconst manifest = require(\"../package.json\") as { version?: string };\n\t\treturn manifest.version ?? \"0.0.0\";\n\t} catch {\n\t\treturn \"0.0.0\";\n\t}\n}\n\nexport function resolveFlowSkillsRoot(homeDir: string): string {\n\treturn join(homeDir, FLOW_SKILLS_DIRECTORY);\n}\n\nexport function resolveFlowCommandsRoot(homeDir: string): string {\n\treturn join(homeDir, FLOW_COMMANDS_DIRECTORY);\n}\n\nexport function resolveFlowAgentsRoot(homeDir: string): string {\n\treturn join(homeDir, FLOW_AGENTS_DIRECTORY);\n}\n\nexport function resolveSkillFilePath(\n\tfolder: string,\n\trelativePath: string,\n): string {\n\treturn join(folder, ...relativePath.split(\"/\"));\n}\n\nexport async function detectPreNpmFlowPlugin(\n\thomeDir = resolveFlowHomeDir(),\n): Promise<PreNpmFlowPluginCopy | null> {\n\tconst path = join(homeDir, FLOW_PRE_NPM_PLUGIN_RELATIVE_PATH);\n\tconst content = await readOptionalFile(path);\n\tif (content === null) {\n\t\treturn null;\n\t}\n\treturn {\n\t\tpath,\n\t\tflowOwned: content.startsWith(FLOW_PRE_NPM_PLUGIN_OWNERSHIP_HEADER),\n\t};\n}\n",
|
|
12
|
+
"import { readFile } from \"node:fs/promises\";\n\nexport async function readOptionalFile(path: string): Promise<string | null> {\n\ttry {\n\t\treturn await readFile(path, \"utf8\");\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n\t\t\treturn null;\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nexport function describeError(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n",
|
|
13
|
+
"import { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport { FLOW_SKILL_DEFINITIONS } from \"./flow-skill-definitions\";\nimport {\n\tFLOW_SKILL_MARKER_FILENAME,\n\tinspectFlowSkillDocument,\n\tparseFlowSkillFileHashes,\n\tparseFlowSkillFolderMarker,\n\trenderFlowSkillFolderMarker,\n\tsha256,\n} from \"./skill-markers\";\nimport {\n\tresolveFlowHomeDir,\n\tresolveFlowSkillsRoot,\n\tresolveSkillFilePath,\n} from \"./sync-paths\";\nimport {\n\ttype FlowSkillDefinition,\n\ttype FlowSkillFile,\n\ttype FlowSkillSyncOptions,\n\ttype FlowSkillSyncResult,\n\ttype FlowSkillSyncStateEntry,\n\tSKILL_DOCUMENT_FILENAME,\n} from \"./sync-types\";\nimport { readOptionalFile } from \"./sync-utils\";\n\nfunction skillDocument(definition: FlowSkillDefinition): FlowSkillFile {\n\tconst document = definition.files.find(\n\t\t(file) => file.relativePath === SKILL_DOCUMENT_FILENAME,\n\t);\n\tif (!document) {\n\t\tthrow new Error(`Flow skill ${definition.name} is missing SKILL.md`);\n\t}\n\treturn document;\n}\n\nfunction renderDesiredMarker(\n\tdefinition: FlowSkillDefinition,\n\tversion: string,\n): string {\n\treturn renderFlowSkillFolderMarker({\n\t\tversion,\n\t\thash: sha256(skillDocument(definition).content),\n\t\tfiles: definition.files.map((file) => ({\n\t\t\trelativePath: file.relativePath,\n\t\t\thash: sha256(file.content),\n\t\t})),\n\t});\n}\n\n/**\n * Idempotent startup sync of the embedded hand-authored Flow skills into the\n * global OpenCode skill directory. Folder ownership is tracked with a\n * plugin-owned marker file (`.flow-skill-version`); pre-npm hash-locked\n * installs are recognized through their in-document marker and adopted.\n * Folders without either marker belong to the user (or another plugin) and\n * are never touched. A user-edited file in a Flow-owned folder is backed up\n * next to itself (`SKILL.md.backup`, `references/<name>.backup`) before being\n * replaced, never refused or silently lost. Reference files sync alongside\n * SKILL.md.\n */\nexport async function syncFlowSkills({\n\thomeDir = resolveFlowHomeDir(),\n\tversion,\n}: FlowSkillSyncOptions): Promise<FlowSkillSyncResult[]> {\n\tconst results: FlowSkillSyncResult[] = [];\n\tfor (const definition of FLOW_SKILL_DEFINITIONS) {\n\t\tconst folder = join(resolveFlowSkillsRoot(homeDir), definition.name);\n\t\tconst skillPath = join(folder, SKILL_DOCUMENT_FILENAME);\n\t\tconst markerPath = join(folder, FLOW_SKILL_MARKER_FILENAME);\n\t\tconst desiredMarker = renderDesiredMarker(definition, version);\n\n\t\tconst existingSkill = await readOptionalFile(skillPath);\n\t\tconst markerContent = await readOptionalFile(markerPath);\n\t\tconst marker =\n\t\t\tmarkerContent === null ? null : parseFlowSkillFolderMarker(markerContent);\n\t\tconst recordedFileHashes =\n\t\t\tmarkerContent === null\n\t\t\t\t? new Map<string, string>()\n\t\t\t\t: parseFlowSkillFileHashes(markerContent);\n\n\t\tif (existingSkill === null && marker === null) {\n\t\t\tawait writeSkillFiles(folder, definition);\n\t\t\tawait writeFile(markerPath, desiredMarker, \"utf8\");\n\t\t\tresults.push({ name: definition.name, action: \"installed\", skillPath });\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst owned =\n\t\t\tmarker !== null ||\n\t\t\t(existingSkill !== null &&\n\t\t\t\tinspectFlowSkillDocument(existingSkill).kind !== \"not_generated\");\n\t\tif (!owned) {\n\t\t\tresults.push({\n\t\t\t\tname: definition.name,\n\t\t\t\taction: \"skipped_foreign\",\n\t\t\t\tskillPath,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet changed = false;\n\t\tlet backedUp = false;\n\t\tfor (const file of definition.files) {\n\t\t\tconst filePath = resolveSkillFilePath(folder, file.relativePath);\n\t\t\tconst existing =\n\t\t\t\tfile.relativePath === SKILL_DOCUMENT_FILENAME\n\t\t\t\t\t? existingSkill\n\t\t\t\t\t: await readOptionalFile(filePath);\n\t\t\tif (existing === file.content) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tchanged = true;\n\t\t\tif (\n\t\t\t\texisting !== null &&\n\t\t\t\tisUserEdited({\n\t\t\t\t\trelativePath: file.relativePath,\n\t\t\t\t\texisting,\n\t\t\t\t\trecordedFileHashes,\n\t\t\t\t\tmarkerHash: marker?.hash ?? null,\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\tawait writeFile(`${filePath}.backup`, existing, \"utf8\");\n\t\t\t\tbackedUp = true;\n\t\t\t}\n\t\t}\n\n\t\tif (!changed) {\n\t\t\tif (markerContent !== desiredMarker) {\n\t\t\t\tawait writeFile(markerPath, desiredMarker, \"utf8\");\n\t\t\t}\n\t\t\tresults.push({ name: definition.name, action: \"unchanged\", skillPath });\n\t\t\tcontinue;\n\t\t}\n\n\t\tawait writeSkillFiles(folder, definition);\n\t\tawait writeFile(markerPath, desiredMarker, \"utf8\");\n\t\tresults.push({\n\t\t\tname: definition.name,\n\t\t\taction: backedUp ? \"updated_with_backup\" : \"updated\",\n\t\t\tskillPath,\n\t\t});\n\t}\n\treturn results;\n}\n\n/**\n * A file is user-edited when its on-disk content matches neither the hash the\n * marker recorded at install time nor (for SKILL.md) a pristine pre-npm\n * generated document. Markers without per-file hashes (pre per-file tracking)\n * fall back to the top-level SKILL.md hash; anything unprovable is treated as\n * user-edited, which costs at most a redundant backup.\n */\nfunction isUserEdited(input: {\n\trelativePath: string;\n\texisting: string;\n\trecordedFileHashes: ReadonlyMap<string, string>;\n\tmarkerHash: string | null;\n}): boolean {\n\tconst existingHash = sha256(input.existing);\n\tconst recorded = input.recordedFileHashes.get(input.relativePath);\n\tif (recorded !== undefined) {\n\t\treturn existingHash !== recorded;\n\t}\n\tif (input.relativePath === SKILL_DOCUMENT_FILENAME) {\n\t\tif (input.markerHash !== null && existingHash === input.markerHash) {\n\t\t\treturn false;\n\t\t}\n\t\treturn inspectFlowSkillDocument(input.existing).kind !== \"valid_generated\";\n\t}\n\treturn true;\n}\n\nasync function writeSkillFiles(\n\tfolder: string,\n\tdefinition: FlowSkillDefinition,\n): Promise<void> {\n\tfor (const file of definition.files) {\n\t\tconst filePath = resolveSkillFilePath(folder, file.relativePath);\n\t\tawait mkdir(dirname(filePath), { recursive: true });\n\t\tawait writeFile(filePath, file.content, \"utf8\");\n\t}\n}\n\nexport async function inspectFlowSkillSyncState(\n\thomeDir = resolveFlowHomeDir(),\n): Promise<FlowSkillSyncStateEntry[]> {\n\tconst entries: FlowSkillSyncStateEntry[] = [];\n\tfor (const definition of FLOW_SKILL_DEFINITIONS) {\n\t\tconst folder = join(resolveFlowSkillsRoot(homeDir), definition.name);\n\t\tconst skillPath = join(folder, SKILL_DOCUMENT_FILENAME);\n\t\tconst existingSkill = await readOptionalFile(skillPath);\n\t\tif (existingSkill === null) {\n\t\t\tentries.push({ name: definition.name, state: \"missing\", skillPath });\n\t\t\tcontinue;\n\t\t}\n\t\tconst markerContent = await readOptionalFile(\n\t\t\tjoin(folder, FLOW_SKILL_MARKER_FILENAME),\n\t\t);\n\t\tconst owned =\n\t\t\t(markerContent !== null &&\n\t\t\t\tparseFlowSkillFolderMarker(markerContent) !== null) ||\n\t\t\tinspectFlowSkillDocument(existingSkill).kind !== \"not_generated\";\n\t\tif (!owned) {\n\t\t\tentries.push({ name: definition.name, state: \"foreign\", skillPath });\n\t\t\tcontinue;\n\t\t}\n\t\tlet synced = true;\n\t\tfor (const file of definition.files) {\n\t\t\tconst existing =\n\t\t\t\tfile.relativePath === SKILL_DOCUMENT_FILENAME\n\t\t\t\t\t? existingSkill\n\t\t\t\t\t: await readOptionalFile(\n\t\t\t\t\t\t\tresolveSkillFilePath(folder, file.relativePath),\n\t\t\t\t\t\t);\n\t\t\tif (existing !== file.content) {\n\t\t\t\tsynced = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tentries.push({\n\t\t\tname: definition.name,\n\t\t\tstate: synced ? \"synced\" : \"stale\",\n\t\t\tskillPath,\n\t\t});\n\t}\n\treturn entries;\n}\n",
|
|
14
|
+
"import {\n\tflowAgentDefinitions,\n\tflowCommandDefinitions,\n\tsyncFlowCommandsAndAgents,\n} from \"./managed-markdown-sync\";\nimport { syncFlowSkills } from \"./skill-folder-sync\";\nimport { detectPreNpmFlowPlugin } from \"./sync-paths\";\nimport { describeError } from \"./sync-utils\";\n\nexport { flowAgentDefinitions, flowCommandDefinitions };\n\ntype FlowStartupLogger = (level: \"info\" | \"warn\", message: string) => void;\n\n/**\n * Best-effort startup hook: sync skills and surface the pre-npm-copy warning\n * without ever failing plugin initialization.\n */\nexport async function runFlowStartupSync(\n\tversion: string,\n\tlog: FlowStartupLogger,\n): Promise<void> {\n\ttry {\n\t\tconst results = await syncFlowSkills({ version });\n\t\tconst changed = results.filter(\n\t\t\t(result) =>\n\t\t\t\tresult.action !== \"unchanged\" && result.action !== \"skipped_foreign\",\n\t\t);\n\t\tif (changed.length > 0) {\n\t\t\tlog(\n\t\t\t\t\"info\",\n\t\t\t\t`Flow synced global skills (${changed\n\t\t\t\t\t.map((result) => `${result.name}: ${result.action}`)\n\t\t\t\t\t.join(\", \")}). Restart OpenCode once if skills were just installed.`,\n\t\t\t);\n\t\t}\n\t} catch (error) {\n\t\tlog(\"warn\", `Flow skill sync failed: ${describeError(error)}`);\n\t}\n\n\ttry {\n\t\tconst results = await syncFlowCommandsAndAgents({ version });\n\t\tconst changed = results.filter(\n\t\t\t(result) =>\n\t\t\t\tresult.action !== \"unchanged\" && result.action !== \"skipped_foreign\",\n\t\t);\n\t\tif (changed.length > 0) {\n\t\t\tlog(\n\t\t\t\t\"info\",\n\t\t\t\t`Flow synced global commands/agents (${changed\n\t\t\t\t\t.map((result) => `${result.name}: ${result.action}`)\n\t\t\t\t\t.join(\n\t\t\t\t\t\t\", \",\n\t\t\t\t\t)}). Restart OpenCode once if commands were just installed.`,\n\t\t\t);\n\t\t}\n\t} catch (error) {\n\t\tlog(\"warn\", `Flow command/agent sync failed: ${describeError(error)}`);\n\t}\n\n\ttry {\n\t\tconst preNpmCopy = await detectPreNpmFlowPlugin();\n\t\tif (preNpmCopy) {\n\t\t\tlog(\n\t\t\t\t\"warn\",\n\t\t\t\t`Stale pre-npm Flow plugin copy detected at ${preNpmCopy.path}. Flow now loads from npm via the opencode.json plugin array; remove the stale copy to avoid loading Flow twice (run \\`bunx opencode-plugin-flow uninstall\\`${preNpmCopy.flowOwned ? \"\" : \" or delete the file manually\"}).`,\n\t\t\t);\n\t\t}\n\t} catch (error) {\n\t\tlog(\"warn\", `Flow pre-npm install check failed: ${describeError(error)}`);\n\t}\n}\n",
|
|
9
15
|
"// Passive update notice: OpenCode caches plugin installs per spec string and\n// never re-resolves them, so a user can keep running a stale version with no\n// signal anywhere. After startup we compare the running version against the\n// npm `latest` dist-tag and log a notice when a newer release exists. We only\n// ever notify — the user's opencode.json pin is their intent and is never\n// rewritten (see oh-my-opencode#1745 for how auto-rewriting goes wrong).\n\nconst NPM_LATEST_URL = \"https://registry.npmjs.org/opencode-plugin-flow/latest\";\nconst FETCH_TIMEOUT_MS = 3000;\n\nexport const FLOW_UPDATE_CHECK_OPT_OUT_ENV = \"FLOW_DISABLE_UPDATE_CHECK\";\n\ntype FlowUpdateLog = (level: \"info\" | \"warn\", message: string) => void;\n\ntype FlowUpdateCheckDeps = {\n\tfetchJson?: (url: string, timeoutMs: number) => Promise<unknown>;\n\tenv?: Record<string, string | undefined>;\n};\n\ntype FlowUpdateCheckResult = {\n\tlatestVersion: string;\n\tupdateAvailable: boolean;\n};\n\nasync function defaultFetchJson(\n\turl: string,\n\ttimeoutMs: number,\n): Promise<unknown> {\n\tconst response = await fetch(url, {\n\t\tsignal: AbortSignal.timeout(timeoutMs),\n\t});\n\tif (!response.ok) {\n\t\tthrow new Error(`Unexpected status ${response.status}`);\n\t}\n\treturn response.json();\n}\n\nfunction parseSemverParts(version: string): [number, number, number] | null {\n\tconst match = version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)/);\n\tif (!match) {\n\t\treturn null;\n\t}\n\treturn [Number(match[1]), Number(match[2]), Number(match[3])];\n}\n\nexport function isNewerVersion(candidate: string, current: string): boolean {\n\tconst candidateParts = parseSemverParts(candidate);\n\tconst currentParts = parseSemverParts(current);\n\tif (!candidateParts || !currentParts) {\n\t\treturn false;\n\t}\n\tfor (let index = 0; index < 3; index += 1) {\n\t\tconst a = candidateParts[index] ?? 0;\n\t\tconst b = currentParts[index] ?? 0;\n\t\tif (a !== b) {\n\t\t\treturn a > b;\n\t\t}\n\t}\n\treturn false;\n}\n\nexport async function checkForFlowUpdate(\n\tcurrentVersion: string,\n\tdeps: FlowUpdateCheckDeps = {},\n): Promise<FlowUpdateCheckResult | null> {\n\tconst fetchJson = deps.fetchJson ?? defaultFetchJson;\n\ttry {\n\t\tconst payload = await fetchJson(NPM_LATEST_URL, FETCH_TIMEOUT_MS);\n\t\tconst latestVersion =\n\t\t\tpayload && typeof payload === \"object\" && \"version\" in payload\n\t\t\t\t? (payload as { version?: unknown }).version\n\t\t\t\t: undefined;\n\t\tif (typeof latestVersion !== \"string\" || !parseSemverParts(latestVersion)) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\tlatestVersion,\n\t\t\tupdateAvailable: isNewerVersion(latestVersion, currentVersion),\n\t\t};\n\t} catch {\n\t\t// Offline, registry down, or blocked network: the notice is best-effort\n\t\t// and must never surface an error or delay startup.\n\t\treturn null;\n\t}\n}\n\n/**\n * Fire-and-forget: never blocks plugin init, never throws, logs only when a\n * newer version exists. Skipped for the 0.0.0 sandbox sentinel and when the\n * opt-out env var is set (CI smokes set it to stay network-free).\n */\nexport function scheduleFlowUpdateNotice(\n\tcurrentVersion: string,\n\tlog: FlowUpdateLog,\n\tdeps: FlowUpdateCheckDeps = {},\n): void {\n\tconst env = deps.env ?? process.env;\n\tif (currentVersion === \"0.0.0\" || env[FLOW_UPDATE_CHECK_OPT_OUT_ENV]) {\n\t\treturn;\n\t}\n\tvoid checkForFlowUpdate(currentVersion, deps)\n\t\t.then((result) => {\n\t\t\tif (result?.updateAvailable) {\n\t\t\t\tlog(\n\t\t\t\t\t\"info\",\n\t\t\t\t\t`Flow ${result.latestVersion} is available (running ${currentVersion}). OpenCode does not auto-update plugins: change the pin in opencode.json to \"opencode-plugin-flow@${result.latestVersion}\" and restart OpenCode twice.`,\n\t\t\t\t);\n\t\t\t}\n\t\t})\n\t\t.catch(() => {});\n}\n",
|
|
10
16
|
"import { applyFlowConfig, type MutableFlowConfig } from \"../../config-shared\";\n\nexport {\n\tapplyFlowConfig,\n\tcreateFlowCoreConfigEntries,\n} from \"../../config-shared\";\n\nexport function createConfigHook(_ctx: unknown) {\n\treturn async (config: MutableFlowConfig) => {\n\t\tapplyFlowConfig(config);\n\t};\n}\n",
|
|
11
17
|
"export type FlowLogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\n\ntype PluginLogContext = {\n\tclient?: {\n\t\tapp?: {\n\t\t\tlog(options: {\n\t\t\t\tbody: { service: string; level: FlowLogLevel; message: string };\n\t\t\t}): unknown;\n\t\t};\n\t};\n};\n\n// The SDK's app.log is a class method that reads this._client, so it must be\n// called through the app object. The entry also travels as options.body.\n// Logging stays best-effort: it must never break plugin initialization.\nexport function createFlowLog(\n\tctx: unknown,\n): (level: FlowLogLevel, message: string) => void {\n\tconst app = (ctx as PluginLogContext).client?.app;\n\tif (!app) {\n\t\treturn () => {};\n\t}\n\treturn (level, message) => {\n\t\ttry {\n\t\t\tvoid Promise.resolve(\n\t\t\t\tapp.log({\n\t\t\t\t\tbody: { service: \"opencode-plugin-flow\", level, message },\n\t\t\t\t}),\n\t\t\t).catch(() => {});\n\t\t} catch {\n\t\t\t// Host log transport failures must not break Flow.\n\t\t}\n\t};\n}\n",
|
|
@@ -22,10 +28,20 @@
|
|
|
22
28
|
"import type {\n\tPlanningContext,\n\tReviewFindingPlanningContext,\n\tSession,\n} from \"../schema\";\nimport type { EvidencePacket } from \"../schema-evidence-packets\";\n\nfunction mergeUniqueStrings(\n\tcurrent: readonly string[] = [],\n\tnext?: readonly string[],\n): string[] {\n\treturn [...new Set([...current, ...(next ?? [])])];\n}\n\nfunction mergeUniqueBySerialized<T>(\n\tcurrent: readonly T[] = [],\n\tnext?: readonly T[],\n): T[] {\n\tconst seen = new Set<string>();\n\tconst merged: T[] = [];\n\tfor (const item of [...current, ...(next ?? [])]) {\n\t\tconst key = JSON.stringify(item);\n\t\tif (seen.has(key)) {\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(key);\n\t\tmerged.push(item);\n\t}\n\treturn merged;\n}\n\nfunction mergeEvidencePackets(\n\tcurrent?: readonly EvidencePacket[],\n\tnext?: readonly EvidencePacket[],\n): EvidencePacket[] | undefined {\n\tif (!current && !next) {\n\t\treturn undefined;\n\t}\n\n\tconst byId = new Map<string, EvidencePacket>();\n\tfor (const packet of current ?? []) {\n\t\tbyId.set(packet.id, packet);\n\t}\n\tfor (const packet of next ?? []) {\n\t\t// Same-id packets are refreshed wholesale so obsolete source refs,\n\t\t// selected/excluded context, and validation evidence can be retracted.\n\t\tbyId.set(packet.id, packet);\n\t}\n\treturn [...byId.values()];\n}\n\nfunction mergeReviewFindings(\n\tcurrent: readonly ReviewFindingPlanningContext[] = [],\n\tnext?: readonly ReviewFindingPlanningContext[],\n): ReviewFindingPlanningContext[] {\n\tif (next && next.length === 0) {\n\t\treturn [];\n\t}\n\tconst byRef = new Map<string, ReviewFindingPlanningContext>();\n\tfor (const finding of current) {\n\t\tbyRef.set(finding.findingRef, finding);\n\t}\n\tfor (const finding of next ?? []) {\n\t\tbyRef.set(finding.findingRef, finding);\n\t}\n\treturn [...byRef.values()];\n}\n\nfunction normalizeFindingRefs(\n\tfindings: readonly ReviewFindingPlanningContext[],\n): string[] {\n\treturn findings.map((finding) => finding.findingRef.trim()).filter(Boolean);\n}\n\nexport function describeReviewFindingsMutationFailure(\n\tsession: Pick<Session, \"plan\" | \"planning\">,\n\tnextPlanning: Partial<PlanningContext>,\n): string | null {\n\tif (session.plan?.goalMode !== \"review_and_fix\") {\n\t\treturn null;\n\t}\n\tif (!nextPlanning.reviewFindings) {\n\t\treturn null;\n\t}\n\n\tconst existingFindingRefs = normalizeFindingRefs(\n\t\tsession.planning.reviewFindings,\n\t);\n\tif (existingFindingRefs.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst nextFindingRefs = new Set(\n\t\tnormalizeFindingRefs(nextPlanning.reviewFindings),\n\t);\n\tconst missingFindingRefs = existingFindingRefs.filter(\n\t\t(findingRef) => !nextFindingRefs.has(findingRef),\n\t);\n\tif (missingFindingRefs.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn `Planning context update cannot remove review_and_fix findings while the active plan depends on them. Missing retained findingRefs: ${missingFindingRefs.join(\", \")}.`;\n}\n\nexport function mergePlanningContext(\n\tcurrent: Partial<PlanningContext>,\n\tnext: Partial<PlanningContext> = {},\n): PlanningContext {\n\treturn {\n\t\tworkflowProfile:\n\t\t\tnext.workflowProfile ?? current.workflowProfile ?? \"default\",\n\t\trepoProfile: mergeUniqueStrings(\n\t\t\tcurrent.repoProfile ?? [],\n\t\t\tnext.repoProfile,\n\t\t),\n\t\tpackageManager: next.packageManager ?? current.packageManager,\n\t\tpackageManagerAmbiguous:\n\t\t\tnext.packageManagerAmbiguous ?? current.packageManagerAmbiguous ?? false,\n\t\tstackProfile: next.stackProfile ?? current.stackProfile,\n\t\tstandardsProfile: next.standardsProfile ?? current.standardsProfile,\n\t\tresearch: mergeUniqueStrings(current.research ?? [], next.research),\n\t\timplementationApproach:\n\t\t\tnext.implementationApproach ?? current.implementationApproach,\n\t\tdecisionLog: next.decisionLog ?? current.decisionLog ?? [],\n\t\treplanLog: mergeUniqueBySerialized(current.replanLog ?? [], next.replanLog),\n\t\treviewFindings: mergeReviewFindings(\n\t\t\tcurrent.reviewFindings ?? [],\n\t\t\tnext.reviewFindings,\n\t\t),\n\t\tevidencePackets: mergeEvidencePackets(\n\t\t\tcurrent.evidencePackets,\n\t\t\tnext.evidencePackets,\n\t\t),\n\t};\n}\n",
|
|
23
29
|
"// Next-step hints surfaced in tool responses: a slash command where one\n// exists (the five v3 commands), otherwise the tool call the skills teach.\nexport const FLOW_PLAN_COMMAND = \"/flow-plan\";\nexport const FLOW_PLAN_WITH_GOAL_COMMAND = \"/flow-plan <goal>\";\nexport const FLOW_RUN_COMMAND = \"/flow-run\";\nexport const FLOW_STATUS_COMMAND = \"/flow-status\";\nexport const FLOW_HISTORY_COMMAND = \"flow_session history\";\nconst FLOW_RESET_FEATURE_COMMAND = \"flow_feature_complete reset\";\nconst FLOW_SESSION_ACTIVATE_COMMAND = \"flow_session activate\";\n\nexport const CANONICAL_RUNTIME_TOOL_NAMES = [\n\t\"flow_status\",\n\t\"flow_context\",\n\t\"flow_plan_save\",\n\t\"flow_plan_approve\",\n\t\"flow_run_start\",\n\t\"flow_feature_complete\",\n\t\"flow_review_record\",\n\t\"flow_session\",\n] as const;\n\nexport type CanonicalRuntimeToolName =\n\t(typeof CANONICAL_RUNTIME_TOOL_NAMES)[number];\n\nexport const VALIDATION_STATUSES = [\n\t\"passed\",\n\t\"failed\",\n\t\"failed_existing\",\n\t\"partial\",\n] as const;\nexport const REVIEW_STATUSES = [\"passed\", \"failed\", \"needs_followup\"] as const;\nexport const VERIFICATION_STATUSES = [\n\t\"passed\",\n\t\"partial\",\n\t\"failed\",\n\t\"not_recorded\",\n] as const;\nexport const GOAL_MODES = [\n\t\"implementation\",\n\t\"review\",\n\t\"review_and_fix\",\n] as const;\nexport const DECOMPOSITION_POLICIES = [\n\t\"atomic_feature\",\n\t\"iterative_refinement\",\n\t\"open_ended\",\n] as const;\nexport const DECISION_MODES = [\n\t\"autonomous_choice\",\n\t\"recommend_confirm\",\n\t\"human_required\",\n] as const;\nexport const DECISION_DOMAINS = [\n\t\"architecture\",\n\t\"product\",\n\t\"quality\",\n\t\"scope\",\n\t\"delivery\",\n] as const;\nexport const WORKFLOW_PROFILES = [\n\t\"default\",\n\t\"bugfix\",\n\t\"refactor\",\n\t\"release\",\n\t\"review\",\n\t\"migration\",\n] as const;\nexport const FEATURE_PRIORITIES = [\n\t\"critical\",\n\t\"important\",\n\t\"nice_to_have\",\n] as const;\nexport const PRIORITY_MODES = [\n\t\"strict_scope\",\n\t\"balanced\",\n\t\"quality_first\",\n] as const;\nexport const STOP_RULES = [\n\t\"ship_when_clean\",\n\t\"ship_when_core_done\",\n\t\"ship_when_threshold_met\",\n] as const;\nexport const FINAL_REVIEW_POLICIES = [\"broad\", \"detailed\"] as const;\nexport const FINAL_REVIEW_SURFACES = [\n\t\"changed_files\",\n\t\"integration_points\",\n\t\"shared_surfaces\",\n\t\"validation_evidence\",\n\t\"tests\",\n\t\"operator_surfaces\",\n\t\"docs_and_prompts\",\n\t\"tooling_and_config\",\n\t\"release_surface\",\n] as const;\nexport const REVIEW_PURPOSES = [\"execution_gate\", \"completion_gate\"] as const;\nexport const REVIEWER_DECISION_STATUSES = [\n\t\"approved\",\n\t\"needs_fix\",\n\t\"blocked\",\n] as const;\nexport const REVIEW_SCOPE_TARGET_KINDS = [\n\t\"file\",\n\t\"glob\",\n\t\"domain\",\n\t\"surface\",\n\t\"workflow\",\n\t\"custom\",\n] as const;\nexport const REPLAN_REASONS = [\n\t\"plan_too_broad\",\n\t\"hidden_dependency\",\n\t\"product_ambiguity\",\n\t\"validation_mismatch\",\n\t\"implementation_complexity\",\n\t\"review_disagreement\",\n] as const;\nexport const CLOSURE_KINDS = [\"completed\", \"deferred\", \"abandoned\"] as const;\nexport const OUTCOME_KINDS = [\n\t\"completed\",\n\t\"replan_required\",\n\t\"blocked_external\",\n\t\"needs_operator_input\",\n\t\"contract_error\",\n] as const;\nexport const NEEDS_INPUT_OUTCOME_KINDS = [\n\t\"replan_required\",\n\t\"blocked_external\",\n\t\"needs_operator_input\",\n\t\"contract_error\",\n] as const;\n\nexport const FEATURE_ID_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\nexport const FEATURE_ID_MESSAGE = \"Feature ids must be lowercase kebab-case\";\nexport const VALIDATION_SCOPES = [\"targeted\", \"broad\"] as const;\nexport function flowResetFeatureCommand(featureId: string): string {\n\treturn `${FLOW_RESET_FEATURE_COMMAND} ${featureId}`;\n}\n\nexport function flowSessionActivateCommand(sessionId: string): string {\n\treturn `${FLOW_SESSION_ACTIVATE_COMMAND} ${sessionId}`;\n}\n",
|
|
24
30
|
"// Reviewer decision domain: structural shape validation and normalization\n// only. Review depth, coverage, and evidence-quality judgment moved to the\n// flow-review skill rubric in v3.\n\nimport { FINAL_REVIEW_POLICIES } from \"../constants\";\nimport type { ReviewerDecision, Session } from \"../schema\";\nimport { reviewerPurposeForScope } from \"./workflow-policy\";\n\ntype FinalScopeReviewerDecision = Extract<ReviewerDecision, { scope: \"final\" }>;\ntype FinalReviewDepth = FinalScopeReviewerDecision[\"reviewDepth\"];\n\nexport type RecordReviewerDecisionInput = {\n\tscope: string;\n\treviewPurpose?: string | undefined;\n\tstatus: string;\n\tsummary: string;\n\tfeatureId?: string | undefined;\n\treviewDepth?: string | undefined;\n\treviewedSurfaces?: string[] | undefined;\n\tevidenceSummary?: string | undefined;\n\tvalidationAssessment?: string | undefined;\n\tremainingGaps?: string[] | undefined;\n\tevidenceRefs?:\n\t\t| {\n\t\t\t\tchangedArtifacts?: string[] | undefined;\n\t\t\t\tvalidationCommands?: string[] | undefined;\n\t\t }\n\t\t| undefined;\n\tblockingFindings?: ReviewerDecision[\"blockingFindings\"];\n\tfollowUps?: ReviewerDecision[\"followUps\"];\n\tsuggestedValidation?: ReviewerDecision[\"suggestedValidation\"];\n};\n\nfunction isFinalReviewDepth(value: string): value is FinalReviewDepth {\n\treturn (FINAL_REVIEW_POLICIES as readonly string[]).includes(value);\n}\n\nfunction describeReviewerDecisionShapeFailure(\n\tsession: Session,\n\tinput: RecordReviewerDecisionInput,\n): string | null {\n\tif (input.scope !== \"feature\" && input.scope !== \"final\") {\n\t\treturn `Reviewer decision validation failed: scope: expected \"feature\" or \"final\", received \"${input.scope}\".`;\n\t}\n\tif (input.scope === \"feature\" && !input.featureId) {\n\t\treturn \"Reviewer decision validation failed: featureId: feature-scope decisions must name the reviewed feature.\";\n\t}\n\tif (input.scope === \"final\" && input.featureId) {\n\t\treturn \"Reviewer decision validation failed: featureId: final-scope decisions must not name a single feature.\";\n\t}\n\tif (\n\t\tinput.scope === \"final\" &&\n\t\t(!input.reviewDepth || !isFinalReviewDepth(input.reviewDepth))\n\t) {\n\t\treturn 'Reviewer decision validation failed: reviewDepth: final-scope decisions must declare \"broad\" or \"detailed\".';\n\t}\n\tvoid session;\n\treturn null;\n}\n\nexport function buildReviewerDecision(\n\tinput: RecordReviewerDecisionInput,\n): ReviewerDecision {\n\tconst status = input.status as ReviewerDecision[\"status\"];\n\tif (input.scope === \"final\") {\n\t\tconst reviewDepth =\n\t\t\tinput.reviewDepth && isFinalReviewDepth(input.reviewDepth)\n\t\t\t\t? input.reviewDepth\n\t\t\t\t: \"broad\";\n\t\treturn {\n\t\t\tscope: \"final\",\n\t\t\treviewPurpose: reviewerPurposeForScope(\"final\"),\n\t\t\tstatus,\n\t\t\tsummary: input.summary,\n\t\t\tblockingFindings: input.blockingFindings ?? [],\n\t\t\tfollowUps: input.followUps ?? [],\n\t\t\tsuggestedValidation: input.suggestedValidation ?? [],\n\t\t\treviewDepth,\n\t\t\treviewedSurfaces: (input.reviewedSurfaces ??\n\t\t\t\t[]) as FinalScopeReviewerDecision[\"reviewedSurfaces\"],\n\t\t\t...(input.evidenceSummary\n\t\t\t\t? { evidenceSummary: input.evidenceSummary }\n\t\t\t\t: {}),\n\t\t\t...(input.validationAssessment\n\t\t\t\t? { validationAssessment: input.validationAssessment }\n\t\t\t\t: {}),\n\t\t\tremainingGaps: input.remainingGaps ?? [],\n\t\t\tevidenceRefs: {\n\t\t\t\tchangedArtifacts: input.evidenceRefs?.changedArtifacts ?? [],\n\t\t\t\tvalidationCommands: input.evidenceRefs?.validationCommands ?? [],\n\t\t\t},\n\t\t};\n\t}\n\treturn {\n\t\tscope: \"feature\",\n\t\tfeatureId: input.featureId ?? \"\",\n\t\treviewPurpose: reviewerPurposeForScope(\"feature\"),\n\t\tstatus,\n\t\tsummary: input.summary,\n\t\tblockingFindings: input.blockingFindings ?? [],\n\t\tfollowUps: input.followUps ?? [],\n\t\tsuggestedValidation: input.suggestedValidation ?? [],\n\t};\n}\n\nexport function validateReviewerDecisionInput(\n\tsession: Session,\n\tinput: RecordReviewerDecisionInput,\n): string | null {\n\treturn describeReviewerDecisionShapeFailure(session, input);\n}\n",
|
|
25
|
-
"/**\n * Session doc rendering: the markdown views Flow derives from a session\n * snapshot (`docs/index.md` plus one doc per feature) and the change-aware\n * IO that writes them. These docs back the feature drilldown paths surfaced\n * in flow_status output; the structured data itself lives in the session\n * JSON, so sections here stay deliberately compact.\n */\nimport {\n\tmkdir,\n\treaddir,\n\treadFile,\n\trm,\n\tstat,\n\twriteFile,\n} from \"node:fs/promises\";\nimport { buildContextPackProjection } from \"./context-pack\";\nimport {\n\tactiveDecisionGate,\n\tdecisionRequiresPause,\n\tsummarizeCompletion,\n} from \"./domain\";\nimport {\n\tgetContextDocPathFromSessionDir,\n\tgetFeatureDocPathFromSessionDir,\n\tgetFeaturesDocsDirFromSessionDir,\n\tgetIndexDocPathFromSessionDir,\n\tgetSessionDir,\n\ttype LiveSessionLocation,\n} from \"./paths\";\nimport type { ProjectStructureMapProjection } from \"./project-structure-map\";\nimport type { Feature, Session } from \"./schema\";\nimport { deriveNextCommand } from \"./session-operator-state\";\nimport { assertMutableWorkspaceRoot } from \"./workspace-root\";\n\n// ---------------------------------------------------------------------------\n// Text helpers\n// ---------------------------------------------------------------------------\n\nfunction toInlineText(value: string): string {\n\treturn value.replace(/\\r?\\n+/g, \" / \").trim();\n}\n\nfunction bulletList(items: string[]): string {\n\tif (items.length === 0) {\n\t\treturn \"- none\";\n\t}\n\n\treturn items.map((item) => `- ${toInlineText(item)}`).join(\"\\n\");\n}\n\nfunction joinSections(sections: string[]): string {\n\treturn `${sections.filter(Boolean).join(\"\\n\\n\")}\\n`;\n}\n\nfunction maybeSection(title: string, items: string[]): string {\n\tif (items.length === 0) {\n\t\treturn \"\";\n\t}\n\n\treturn `## ${title}\\n\\n${bulletList(items)}`;\n}\n\nfunction maybeTitledList(title: string, items: string[], level = \"##\"): string {\n\tif (items.length === 0) {\n\t\treturn \"\";\n\t}\n\n\treturn `${level} ${title}\\n\\n${bulletList(items)}`;\n}\n\nfunction toQuotedBlock(value: string): string {\n\tconst normalized = value.trim();\n\tif (!normalized) {\n\t\treturn \"> none\";\n\t}\n\n\treturn normalized\n\t\t.split(/\\r?\\n/)\n\t\t.map((line) => `> ${line}`)\n\t\t.join(\"\\n\");\n}\n\nfunction maybeQuotedSection(\n\ttitle: string,\n\tvalue: string | null | undefined,\n): string {\n\tif (!value) {\n\t\treturn \"\";\n\t}\n\n\treturn `## ${title}\\n\\n${toQuotedBlock(value)}`;\n}\n\nfunction formatFollowUpLines(\n\titems: Array<{ summary: string; severity?: string | undefined }>,\n): string[] {\n\treturn items.map((item) =>\n\t\titem.severity ? `${item.summary} (${item.severity})` : item.summary,\n\t);\n}\n\nfunction maybeListLine(label: string, items: string[] | undefined): string[] {\n\treturn items && items.length > 0\n\t\t? [`${label}: ${items.map(toInlineText).join(\", \")}`]\n\t\t: [];\n}\n\n// ---------------------------------------------------------------------------\n// Record line formatters\n// ---------------------------------------------------------------------------\n\ntype ArtifactRecord = Session[\"artifacts\"][number];\ntype ValidationRecord = Session[\"execution\"][\"lastValidationRun\"][number];\ntype ExecutionHistoryEntry = Session[\"execution\"][\"history\"][number];\ntype ReviewerDecision = NonNullable<ExecutionHistoryEntry[\"reviewerDecision\"]>;\n\nfunction renderArtifactLine(artifact: ArtifactRecord): string {\n\treturn artifact.kind ? `${artifact.path} (${artifact.kind})` : artifact.path;\n}\n\nfunction renderValidationLine(item: ValidationRecord): string {\n\treturn `${item.status} | ${item.command} | ${item.summary}`;\n}\n\nfunction renderExecutionHistoryLine(item: ExecutionHistoryEntry): string {\n\treturn `${item.recordedAt} | ${item.featureId} | ${item.status} | ${item.summary}`;\n}\n\nfunction renderOutcomeLines(\n\toutcome:\n\t\t| {\n\t\t\t\tkind: string;\n\t\t\t\tcategory?: string | undefined;\n\t\t\t\tsummary?: string | undefined;\n\t\t\t\tresolutionHint?: string | undefined;\n\t\t\t\tretryable?: boolean | undefined;\n\t\t\t\tautoResolvable?: boolean | undefined;\n\t\t\t\tneedsHuman?: boolean | undefined;\n\t\t }\n\t\t| null\n\t\t| undefined,\n): string[] {\n\tif (!outcome) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\t`kind: ${outcome.kind}`,\n\t\t...(outcome.category\n\t\t\t? [`category: ${toInlineText(outcome.category)}`]\n\t\t\t: []),\n\t\t...(outcome.summary ? [`summary: ${toInlineText(outcome.summary)}`] : []),\n\t\t...(outcome.resolutionHint\n\t\t\t? [`resolution hint: ${toInlineText(outcome.resolutionHint)}`]\n\t\t\t: []),\n\t\t...(outcome.retryable !== undefined\n\t\t\t? [`retryable: ${outcome.retryable ? \"yes\" : \"no\"}`]\n\t\t\t: []),\n\t\t...(outcome.autoResolvable !== undefined\n\t\t\t? [`auto resolvable: ${outcome.autoResolvable ? \"yes\" : \"no\"}`]\n\t\t\t: []),\n\t\t...(outcome.needsHuman !== undefined\n\t\t\t? [`needs human: ${outcome.needsHuman ? \"yes\" : \"no\"}`]\n\t\t\t: []),\n\t];\n}\n\n// ---------------------------------------------------------------------------\n// Review rendering (shared between reviewer decisions and review payloads)\n// ---------------------------------------------------------------------------\n\ntype ReviewDetails = {\n\treviewDepth?: string | undefined;\n\treviewedSurfaces?: string[] | undefined;\n\tevidenceSummary?: string | undefined;\n\tvalidationAssessment?: string | undefined;\n\tevidenceRefs?:\n\t\t| {\n\t\t\t\tchangedArtifacts: string[];\n\t\t\t\tvalidationCommands: string[];\n\t\t }\n\t\t| undefined;\n\tintegrationChecks?: string[] | undefined;\n\tregressionChecks?: string[] | undefined;\n\tremainingGaps?: string[] | undefined;\n};\n\nfunction reviewDetailLines(review: ReviewDetails): string[] {\n\treturn [\n\t\t...(review.reviewDepth ? [`review depth: ${review.reviewDepth}`] : []),\n\t\t...maybeListLine(\"reviewed surfaces\", review.reviewedSurfaces),\n\t\t...(review.evidenceSummary\n\t\t\t? [`evidence: ${toInlineText(review.evidenceSummary)}`]\n\t\t\t: []),\n\t\t...(review.validationAssessment\n\t\t\t? [`validation assessment: ${toInlineText(review.validationAssessment)}`]\n\t\t\t: []),\n\t\t...maybeListLine(\n\t\t\t\"evidence changed artifacts\",\n\t\t\treview.evidenceRefs?.changedArtifacts,\n\t\t),\n\t\t...maybeListLine(\n\t\t\t\"evidence validation commands\",\n\t\t\treview.evidenceRefs?.validationCommands,\n\t\t),\n\t\t...maybeListLine(\"integration checks\", review.integrationChecks),\n\t\t...maybeListLine(\"regression checks\", review.regressionChecks),\n\t\t...maybeListLine(\"remaining gaps\", review.remainingGaps),\n\t];\n}\n\nfunction renderReviewerDecisionLines(decision: ReviewerDecision): string[] {\n\treturn [\n\t\t`scope: ${decision.scope}`,\n\t\t...(decision.scope === \"feature\"\n\t\t\t? [`feature id: ${decision.featureId}`]\n\t\t\t: reviewDetailLines(decision)),\n\t\t`status: ${decision.status}`,\n\t\t`summary: ${decision.summary}`,\n\t];\n}\n\nfunction renderReviewBlock(\n\ttitle: string,\n\treview:\n\t\t| (ReviewDetails & {\n\t\t\t\tstatus: string;\n\t\t\t\tsummary: string;\n\t\t\t\tblockingFindings: Array<{ summary: string }>;\n\t\t })\n\t\t| undefined,\n): string {\n\tif (!review) {\n\t\treturn \"\";\n\t}\n\n\tconst lines = [\n\t\t`- status: ${review.status}`,\n\t\t...reviewDetailLines(review).map((line) => `- ${line}`),\n\t\t`- summary: ${toInlineText(review.summary)}`,\n\t\t...(review.blockingFindings.length > 0\n\t\t\t? [bulletList(review.blockingFindings.map((item) => item.summary))]\n\t\t\t: []),\n\t];\n\n\treturn `#### ${title}\\n\\n${lines.join(\"\\n\")}`;\n}\n\n// ---------------------------------------------------------------------------\n// Feature doc\n// ---------------------------------------------------------------------------\n\nfunction renderFeatureHistoryEntrySections(\n\tentry: ExecutionHistoryEntry,\n): string[] {\n\treturn [\n\t\tmaybeTitledList(\n\t\t\t\"Changed Artifacts\",\n\t\t\tentry.artifactsChanged.map(renderArtifactLine),\n\t\t\t\"####\",\n\t\t),\n\t\tmaybeTitledList(\n\t\t\t\"Validation\",\n\t\t\tentry.validationRun.map(renderValidationLine),\n\t\t\t\"####\",\n\t\t),\n\t\tmaybeTitledList(\n\t\t\t\"Decisions\",\n\t\t\tentry.decisions.map((item) => item.summary),\n\t\t\t\"####\",\n\t\t),\n\t\tentry.reviewerDecision\n\t\t\t? maybeTitledList(\n\t\t\t\t\t\"Reviewer Decision\",\n\t\t\t\t\trenderReviewerDecisionLines(entry.reviewerDecision),\n\t\t\t\t\t\"####\",\n\t\t\t\t)\n\t\t\t: \"\",\n\t\tentry.outcome\n\t\t\t? maybeTitledList(\"Outcome\", renderOutcomeLines(entry.outcome), \"####\")\n\t\t\t: \"\",\n\t\tmaybeTitledList(\n\t\t\t\"Notes\",\n\t\t\tentry.featureResult?.notes?.map((item) => item.note) ?? [],\n\t\t\t\"####\",\n\t\t),\n\t\tmaybeTitledList(\n\t\t\t\"Follow Ups\",\n\t\t\tformatFollowUpLines(entry.featureResult?.followUps ?? []),\n\t\t\t\"####\",\n\t\t),\n\t\trenderReviewBlock(\"Feature Review\", entry.featureReview),\n\t\trenderReviewBlock(\"Final Review\", entry.finalReview),\n\t].filter(Boolean);\n}\n\nfunction renderFeatureHistory(session: Session, feature: Feature): string {\n\tconst entries = session.execution.history.filter(\n\t\t(entry) => entry.featureId === feature.id,\n\t);\n\tif (entries.length === 0) {\n\t\treturn \"## Execution History\\n\\n- none\";\n\t}\n\n\tconst renderedEntries = entries.map((entry) =>\n\t\tjoinSections([\n\t\t\t`### ${entry.recordedAt}\\n\\n- status: ${entry.status}\\n- outcome: ${entry.outcomeKind ?? \"none\"}\\n- summary: ${toInlineText(entry.summary)}\\n- next step: ${entry.nextStep ? toInlineText(entry.nextStep) : \"none\"}`,\n\t\t\t...renderFeatureHistoryEntrySections(entry),\n\t\t]).trimEnd(),\n\t);\n\n\treturn `## Execution History\\n\\n${renderedEntries.join(\"\\n\\n\")}`;\n}\n\nexport function renderFeatureDoc(session: Session, feature: Feature): string {\n\tconst isActive = session.execution.activeFeatureId === feature.id;\n\n\treturn joinSections([\n\t\t`# Feature ${feature.id}`,\n\t\t`## Summary\n\n- title: ${toInlineText(feature.title)}\n- status: ${feature.status}\n- active: ${isActive ? \"yes\" : \"no\"}\n- goal: ${toInlineText(session.goal)}`,\n\t\t`## Description\\n\\n${toQuotedBlock(feature.summary)}`,\n\t\tmaybeQuotedSection(\n\t\t\t\"Latest Runtime Summary\",\n\t\t\tsession.execution.lastFeatureId === feature.id\n\t\t\t\t? session.execution.lastSummary\n\t\t\t\t: null,\n\t\t),\n\t\t`## File Targets\\n\\n${bulletList(feature.fileTargets)}`,\n\t\t`## Verification\\n\\n${bulletList(feature.verification)}`,\n\t\tmaybeSection(\"Depends On\", feature.dependsOn ?? []),\n\t\tmaybeSection(\"Blocked By\", feature.blockedBy ?? []),\n\t\trenderFeatureHistory(session, feature),\n\t]);\n}\n\n// ---------------------------------------------------------------------------\n// Index doc\n// ---------------------------------------------------------------------------\n\nfunction renderIndexSummarySection(session: Session): string {\n\tconst reviewerDecision = session.execution.lastReviewerDecision;\n\tconst decisionGate = activeDecisionGate(session);\n\tconst summaryLines = [\n\t\t`- session id: ${session.id}`,\n\t\t`- goal: ${toInlineText(session.goal)}`,\n\t\t`- status: ${session.status}`,\n\t\t`- closure: ${session.closure ? `${session.closure.kind} | ${toInlineText(session.closure.summary)}` : \"open\"}`,\n\t\t`- approval: ${session.approval}`,\n\t\t`- next command: ${deriveNextCommand(session)}`,\n\t\t`- next step: ${session.execution.lastNextStep ? toInlineText(session.execution.lastNextStep) : \"none\"}`,\n\t\t...(decisionGate\n\t\t\t? [\n\t\t\t\t\t`- decision gate: ${decisionGate.status} | ${decisionGate.domain} | ${toInlineText(decisionGate.question)}`,\n\t\t\t\t]\n\t\t\t: []),\n\t\t`- reviewer decision: ${reviewerDecision ? `${reviewerDecision.scope} | ${reviewerDecision.reviewPurpose ?? \"inferred\"} | ${reviewerDecision.status} | ${toInlineText(reviewerDecision.summary)}` : \"none\"}`,\n\t\t`- created: ${session.timestamps.createdAt}`,\n\t];\n\n\treturn `## Summary\n\n${summaryLines.join(\"\\n\")}`;\n}\n\nfunction renderPlanOverviewLines(\n\tsession: Session,\n\tfeatures: Feature[],\n): string[] {\n\tconst plan = session.plan;\n\tconst activeFeature =\n\t\tfeatures.find(\n\t\t\t(feature) => feature.id === session.execution.activeFeatureId,\n\t\t) ?? null;\n\tconst completion = summarizeCompletion(session);\n\tconst completedCount =\n\t\tcompletion?.completedFeatures ??\n\t\tfeatures.filter((feature) => feature.status === \"completed\").length;\n\n\tconst planLines = [\n\t\t`- summary: ${toInlineText(plan?.summary ?? \"No plan yet.\")}`,\n\t\t`- overview: ${toInlineText(plan?.overview ?? \"No plan yet.\")}`,\n\t\t...(session.planning.packageManager\n\t\t\t? [`- package manager: ${session.planning.packageManager}`]\n\t\t\t: []),\n\t\t...(session.planning.packageManagerAmbiguous\n\t\t\t? [\n\t\t\t\t\t\"- package manager evidence: ambiguous (multiple lockfile families detected in the same directory)\",\n\t\t\t\t]\n\t\t\t: []),\n\t\t`- progress: ${completedCount}/${features.length} completed`,\n\t\t`- active feature: ${activeFeature ? activeFeature.id : \"none\"}`,\n\t];\n\n\tif (!completion) {\n\t\treturn planLines;\n\t}\n\n\treturn [\n\t\t...planLines,\n\t\t`- completion target: ${completion.targetCompletedFeatures}/${completion.totalFeatures} features`,\n\t\t`- stop rule: ${plan?.deliveryPolicy?.stopRule ?? \"ship_when_clean\"}`,\n\t\t`- priority mode: ${plan?.deliveryPolicy?.priorityMode ?? \"balanced\"}`,\n\t\t`- final review policy: ${plan?.deliveryPolicy?.finalReviewPolicy ?? \"detailed\"}`,\n\t\t`- defer allowed: ${plan?.deliveryPolicy?.deferAllowed ? \"yes\" : \"no\"}`,\n\t\t`- pending allowed at completion: ${completion.canCompleteWithPendingFeatures ? \"yes\" : \"no\"}`,\n\t\t`- active feature triggers session completion: ${completion.activeFeatureTriggersSessionCompletion ? \"yes\" : \"no\"}`,\n\t];\n}\n\nfunction maybeApproachSection(session: Session): string {\n\tconst approach = session.planning.implementationApproach;\n\tif (!approach) {\n\t\treturn \"\";\n\t}\n\n\treturn joinSections([\n\t\t\"## Implementation Approach\\n\\n\" +\n\t\t\t`- chosen direction: ${toInlineText(approach.chosenDirection)}`,\n\t\tmaybeTitledList(\"Key Constraints\", approach.keyConstraints, \"###\"),\n\t\tmaybeTitledList(\"Validation Signals\", approach.validationSignals, \"###\"),\n\t\tmaybeTitledList(\"Sources\", approach.sources, \"###\"),\n\t]).trimEnd();\n}\n\nfunction maybeDecisionLogSection(session: Session): string {\n\tconst decisions = session.planning.decisionLog;\n\tif (decisions.length === 0) {\n\t\treturn \"\";\n\t}\n\n\treturn `## Decision Log\\n\\n${bulletList(\n\t\tdecisions.map(\n\t\t\t(decision) =>\n\t\t\t\t`${decision.decisionDomain} | ${decision.decisionMode} | pause: ${decisionRequiresPause(decision.decisionMode) ? \"yes\" : \"no\"} | ${toInlineText(decision.question)} | recommended: ${toInlineText(decision.recommendation)} | options: ${decision.options.map((option) => toInlineText(option.label)).join(\", \")}`,\n\t\t),\n\t)}`;\n}\n\nfunction maybeReplanLogSection(session: Session): string {\n\tconst replans = session.planning.replanLog;\n\tif (replans.length === 0) {\n\t\treturn \"\";\n\t}\n\n\treturn `## Replan Log\\n\\n${bulletList(\n\t\treplans.map(\n\t\t\t(replan) =>\n\t\t\t\t`${replan.recordedAt} | ${replan.reason} | ${toInlineText(replan.summary)} | failed assumption: ${toInlineText(replan.failedAssumption)} | adjust: ${toInlineText(replan.recommendedAdjustment)}`,\n\t\t),\n\t)}`;\n}\n\nfunction maybeStackProfileSection(session: Session): string {\n\tconst profile = session.planning.stackProfile;\n\tif (!profile) {\n\t\treturn \"\";\n\t}\n\n\tconst sections: Array<{ label: string; entries: Array<{ name: string }> }> = [\n\t\t{ label: \"languages\", entries: profile.languages },\n\t\t{ label: \"frameworks\", entries: profile.frameworks },\n\t\t{ label: \"runtimes\", entries: profile.runtimes },\n\t\t{ label: \"package managers\", entries: profile.packageManagers },\n\t\t{ label: \"tools\", entries: profile.tools },\n\t];\n\n\tconst lines = sections\n\t\t.map(({ label, entries }) => {\n\t\t\tconst names = entries.map((entry) => entry.name);\n\t\t\treturn names.length > 0 ? `- ${label}: ${names.join(\", \")}` : \"\";\n\t\t})\n\t\t.filter(Boolean);\n\n\treturn lines.length === 0 ? \"\" : `## Stack Profile\\n\\n${lines.join(\"\\n\")}`;\n}\n\nfunction maybeStandardsProfileSection(session: Session): string {\n\tconst profile = session.planning.standardsProfile;\n\tif (!profile) {\n\t\treturn \"\";\n\t}\n\n\tconst lines = [\n\t\t...profile.precedence.map((item) => `- precedence: ${toInlineText(item)}`),\n\t\t...profile.localGuidelines.map(\n\t\t\t(item) => `- local: ${toInlineText(item.title)} | ${item.reference}`,\n\t\t),\n\t\t...profile.externalGuidance.map(\n\t\t\t(item) => `- external: ${toInlineText(item.title)} | ${item.reference}`,\n\t\t),\n\t\t...profile.rules.map((item) => `- rule: ${toInlineText(item.summary)}`),\n\t\t...profile.gaps.map(\n\t\t\t(item) =>\n\t\t\t\t`- gap: ${toInlineText(item.stackItem)} | ${toInlineText(item.reason)} | research: ${item.suggestedResearch.map(toInlineText).join(\", \")}`,\n\t\t),\n\t];\n\n\treturn lines.length === 0\n\t\t? \"\"\n\t\t: `## Standards Profile\\n\\n${lines.join(\"\\n\")}`;\n}\n\nfunction renderPlanSection(session: Session, features: Feature[]): string {\n\tconst plan = session.plan;\n\n\treturn joinSections([\n\t\t`## Plan\n\n${renderPlanOverviewLines(session, features).join(\"\\n\")}`,\n\t\tmaybeSection(\"Requirements\", plan?.requirements ?? []),\n\t\tmaybeSection(\"Architecture Decisions\", plan?.architectureDecisions ?? []),\n\t\tmaybeSection(\"Repo Profile\", session.planning.repoProfile),\n\t\tmaybeStackProfileSection(session),\n\t\tmaybeStandardsProfileSection(session),\n\t\tmaybeSection(\"Research\", session.planning.research),\n\t\tmaybeApproachSection(session),\n\t\tmaybeDecisionLogSection(session),\n\t\tmaybeReplanLogSection(session),\n\t]).trimEnd();\n}\n\nfunction renderFeatureResultDetails(\n\tfeatureResult: Session[\"execution\"][\"lastFeatureResult\"],\n): string {\n\tif (!featureResult) {\n\t\treturn \"\";\n\t}\n\n\tconst sections = [\n\t\tmaybeTitledList(\n\t\t\t\"Notes\",\n\t\t\tfeatureResult.notes?.map((item) => item.note) ?? [],\n\t\t\t\"###\",\n\t\t),\n\t\tmaybeTitledList(\n\t\t\t\"Follow Ups\",\n\t\t\tformatFollowUpLines(featureResult.followUps ?? []),\n\t\t\t\"###\",\n\t\t),\n\t].filter(Boolean);\n\n\treturn joinSections([\n\t\t`## Feature Result\\n\\n- feature id: ${featureResult.featureId}\\n- verification: ${featureResult.verificationStatus ?? \"not_recorded\"}`,\n\t\t...sections,\n\t]).trimEnd();\n}\n\nexport function renderIndexDoc(session: Session): string {\n\tconst features = session.plan?.features ?? [];\n\n\treturn joinSections([\n\t\t\"# Flow Session\",\n\t\trenderIndexSummarySection(session),\n\t\trenderPlanSection(session, features),\n\t\t`## Features\\n\\n${\n\t\t\tfeatures.length === 0\n\t\t\t\t? \"- none\"\n\t\t\t\t: features\n\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t(feature) =>\n\t\t\t\t\t\t\t\t`- ${feature.id} | ${feature.status} | ${toInlineText(feature.title)}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join(\"\\n\")\n\t\t}`,\n\t\tsession.execution.lastOutcome\n\t\t\t? `## Outcome\\n\\n${bulletList(renderOutcomeLines(session.execution.lastOutcome))}`\n\t\t\t: \"\",\n\t\trenderFeatureResultDetails(session.execution.lastFeatureResult),\n\t\tmaybeSection(\"Notes\", session.notes),\n\t\tsession.artifacts.length > 0\n\t\t\t? `## Changed Artifacts\\n\\n${bulletList(session.artifacts.map(renderArtifactLine))}`\n\t\t\t: \"\",\n\t\tsession.execution.lastValidationRun.length > 0\n\t\t\t? `## Last Validation Run\\n\\n${bulletList(session.execution.lastValidationRun.map(renderValidationLine))}`\n\t\t\t: \"\",\n\t\tsession.execution.history.length > 0\n\t\t\t? `## Execution History\\n\\n${bulletList(session.execution.history.map(renderExecutionHistoryLine))}`\n\t\t\t: \"\",\n\t]);\n}\n\n// ---------------------------------------------------------------------------\n// Context pack doc\n// ---------------------------------------------------------------------------\n\nfunction renderProjectStructureMap(\n\tprojectStructure: ProjectStructureMapProjection | undefined,\n): string {\n\tif (!projectStructure || projectStructure.entries.length === 0) {\n\t\treturn \"\";\n\t}\n\treturn `## Project Structure Map\n\n- root: ${toInlineText(projectStructure.rootName)}\n- entries: ${projectStructure.entryCount}\n- truncated: ${projectStructure.truncated ? \"yes\" : \"no\"}\n- ignore sources: ${projectStructure.ignoreSources.join(\", \")}\n- planned targets: ${projectStructure.focus.plannedTargets.length > 0 ? projectStructure.focus.plannedTargets.map(toInlineText).join(\", \") : \"none\"}\n- planned targets redacted: ${projectStructure.focus.plannedTargetsRedacted}\n- changed artifacts: ${projectStructure.focus.changedArtifacts.length > 0 ? projectStructure.focus.changedArtifacts.map(toInlineText).join(\", \") : \"none\"}\n- changed artifacts redacted: ${projectStructure.focus.changedArtifactsRedacted}\n\n${\n\tprojectStructure.entries.length === 0\n\t\t? \"- none\"\n\t\t: bulletList(\n\t\t\t\tprojectStructure.entries.map((entry) =>\n\t\t\t\t\t[\n\t\t\t\t\t\t`${\" \".repeat(Math.max(0, entry.depth - 1))}${entry.kind === \"directory\" ? `${entry.path}/` : entry.path}`,\n\t\t\t\t\t\tentry.role !== \"other\" ? `role: ${entry.role}` : \"\",\n\t\t\t\t\t]\n\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t.join(\" | \"),\n\t\t\t\t),\n\t\t\t)\n}`;\n}\n\nexport function renderContextPackDoc(\n\tsession: Session,\n\tprojectStructure?: ProjectStructureMapProjection,\n): string {\n\tconst contextPack = buildContextPackProjection(session, { projectStructure });\n\n\treturn joinSections([\n\t\t\"# Flow Context Pack\",\n\t\t`## Summary\n\n- session id: ${contextPack.sessionId}\n- goal: ${toInlineText(contextPack.goal)}\n- workflow profile: ${contextPack.workflowProfile}\n- features: ${contextPack.features.length}\n- diagnostics: ${contextPack.diagnostics.length}\n- context quality: ${contextPack.quality.score}/100 (${contextPack.quality.rating})\n- readiness: ${contextPack.workflowReadiness.state}\n- readiness blocking: ${contextPack.workflowReadiness.blocking.length}\n- readiness warnings: ${contextPack.workflowReadiness.warnings.length}\n- next action: ${toInlineText(contextPack.workflowReadiness.nextAction)}`,\n\t\t`## Signal Authority\n\n- hard gate: runtime refuses the action\n- workflow blocker: \\`workflowReadiness.state\\` values starting with \\`blocked_by_\\` require resolution or explicit justification before proceeding\n- advisory diagnostic: \\`contextQuality\\` and weak-context diagnostics inform review judgment but do not block by themselves\n- factual projection: \\`contextTraceability\\` records persisted plan targets, changed artifacts, validation commands, and review records`,\n\t\t`## Context Quality\n\n${bulletList(\n\tcontextPack.quality.checks.map(\n\t\t(check) =>\n\t\t\t`${check.status} | ${check.id} | weight: ${check.weight} | ${toInlineText(check.summary)}`,\n\t),\n)}`,\n\t\tcontextPack.workflowReadiness.blocking.length > 0\n\t\t\t? `## Workflow Readiness\n\n${bulletList(\n\tcontextPack.workflowReadiness.blocking.map((item) =>\n\t\t[\n\t\t\titem.id,\n\t\t\titem.featureId ? `feature: ${item.featureId}` : \"\",\n\t\t\ttoInlineText(item.summary),\n\t\t\t`remediation: ${toInlineText(item.remediation)}`,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(\" | \"),\n\t),\n)}`\n\t\t\t: \"\",\n\t\tmaybeSection(\"Repo Profile\", contextPack.repoProfile),\n\t\tmaybeSection(\"Research\", contextPack.research),\n\t\tmaybeSection(\"Requirements\", contextPack.requirements),\n\t\tmaybeSection(\"Architecture Decisions\", contextPack.architectureDecisions),\n\t\tmaybeSection(\"Notes\", contextPack.notes),\n\t\trenderProjectStructureMap(contextPack.projectStructure),\n\t\t`## Traceability Summary\n\n- planned targets: ${contextPack.traceability.plannedTargetCount}\n- changed artifacts: ${contextPack.traceability.changedArtifactCount}\n- validation commands: ${contextPack.traceability.validationCommandCount}\n- reviewed features: ${contextPack.traceability.reviewedFeatureCount}\n- unplanned changed artifacts: ${contextPack.traceability.unplannedChangedArtifacts.length > 0 ? contextPack.traceability.unplannedChangedArtifacts.map(toInlineText).join(\", \") : \"none\"}`,\n\t\t`## Feature Context\n\n${\n\tcontextPack.traceability.features.length === 0\n\t\t? \"- none\"\n\t\t: contextPack.traceability.features\n\t\t\t\t.map((feature) =>\n\t\t\t\t\t[\n\t\t\t\t\t\t`### ${feature.id}`,\n\t\t\t\t\t\t`- title: ${toInlineText(feature.title)}`,\n\t\t\t\t\t\t`- status: ${feature.status}`,\n\t\t\t\t\t\t`- file targets: ${feature.fileTargets.length > 0 ? feature.fileTargets.map(toInlineText).join(\", \") : \"none\"}`,\n\t\t\t\t\t\t`- review scope: ${feature.reviewScope.length > 0 ? feature.reviewScope.map(toInlineText).join(\", \") : \"none\"}`,\n\t\t\t\t\t\t`- verification: ${feature.verification.length > 0 ? feature.verification.map(toInlineText).join(\", \") : \"none\"}`,\n\t\t\t\t\t\t`- changed artifacts: ${feature.changedArtifacts.length > 0 ? feature.changedArtifacts.map(toInlineText).join(\", \") : \"none\"}`,\n\t\t\t\t\t\t`- validation commands: ${feature.validationCommands.length > 0 ? feature.validationCommands.map(toInlineText).join(\", \") : \"none\"}`,\n\t\t\t\t\t\t`- reviewer decision: ${feature.reviewerDecisionStatus ?? \"none\"}`,\n\t\t\t\t\t\t`- feature review: ${feature.featureReviewStatus ?? \"none\"}`,\n\t\t\t\t\t\t`- final review: ${feature.finalReviewStatus ?? \"none\"}`,\n\t\t\t\t\t\t`- gaps: ${feature.gaps.length > 0 ? feature.gaps.map((gap) => `${gap.id}: ${toInlineText(gap.summary)}`).join(\"; \") : \"none\"}`,\n\t\t\t\t\t].join(\"\\n\"),\n\t\t\t\t)\n\t\t\t\t.join(\"\\n\\n\")\n}`,\n\t\tmaybeSection(\"Changed Artifacts\", contextPack.changedArtifacts),\n\t\tmaybeSection(\"Validation Commands\", contextPack.validationCommands),\n\t\tcontextPack.diagnostics.length > 0\n\t\t\t? `## Context Diagnostics\n\n${bulletList(\n\tcontextPack.diagnostics.map((diagnostic) =>\n\t\t[\n\t\t\tdiagnostic.severity,\n\t\t\tdiagnostic.id,\n\t\t\tdiagnostic.featureId ? `feature: ${diagnostic.featureId}` : \"\",\n\t\t\ttoInlineText(diagnostic.summary),\n\t\t\t`remediation: ${toInlineText(diagnostic.remediation)}`,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(\" | \"),\n\t),\n)}`\n\t\t\t: \"\",\n\t]);\n}\n\n// ---------------------------------------------------------------------------\n// Doc IO\n// ---------------------------------------------------------------------------\n\ntype RenderedDoc = {\n\tpath: string;\n\tcontent: string;\n};\nconst preparedFeaturesDocsDirs = new Set<string>();\n\nfunction createContentHash(input: string): string {\n\tlet hash = 2166136261;\n\n\tfor (let index = 0; index < input.length; index += 1) {\n\t\thash ^= input.charCodeAt(index);\n\t\thash = Math.imul(hash, 16777619);\n\t}\n\n\treturn (hash >>> 0).toString(16).padStart(8, \"0\");\n}\n\nasync function writeDocIfChanged(doc: RenderedDoc): Promise<boolean> {\n\tconst nextHash = createContentHash(doc.content);\n\n\ttry {\n\t\tconst previousContent = await readFile(doc.path, \"utf8\");\n\t\tif (createContentHash(previousContent) === nextHash) {\n\t\t\treturn false;\n\t\t}\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code !== \"ENOENT\") {\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tawait writeFile(doc.path, doc.content, \"utf8\");\n\treturn true;\n}\n\nasync function ensureSessionDocDirs(sessionDir: string): Promise<void> {\n\tconst featuresDir = getFeaturesDocsDirFromSessionDir(sessionDir);\n\tif (preparedFeaturesDocsDirs.has(featuresDir)) {\n\t\ttry {\n\t\t\tawait stat(featuresDir);\n\t\t\treturn;\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n\t\t\t\tpreparedFeaturesDocsDirs.delete(featuresDir);\n\t\t\t} else {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\n\tawait mkdir(featuresDir, { recursive: true });\n\tpreparedFeaturesDocsDirs.add(featuresDir);\n}\n\nasync function pruneFeatureDocs(\n\tsessionDir: string,\n\tactiveFeatureIds: Set<string>,\n): Promise<void> {\n\tconst featuresDir = getFeaturesDocsDirFromSessionDir(sessionDir);\n\n\ttry {\n\t\tconst entries = await readdir(featuresDir, { withFileTypes: true });\n\t\tawait Promise.all(\n\t\t\tentries\n\t\t\t\t.filter((entry) => entry.isFile() && entry.name.endsWith(\".md\"))\n\t\t\t\t.filter((entry) => !activeFeatureIds.has(entry.name.slice(0, -3)))\n\t\t\t\t.map((entry) =>\n\t\t\t\t\trm(\n\t\t\t\t\t\tgetFeatureDocPathFromSessionDir(\n\t\t\t\t\t\t\tsessionDir,\n\t\t\t\t\t\t\tentry.name.slice(0, -3),\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tforce: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t);\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code !== \"ENOENT\") {\n\t\t\tthrow error;\n\t\t}\n\t}\n}\n\nexport async function renderSessionDocsAtDir(\n\tsessionDir: string,\n\tsession: Session,\n\toptions: {\n\t\tprojectStructure?: ProjectStructureMapProjection | undefined;\n\t} = {},\n): Promise<void> {\n\tconst features = session.plan?.features ?? [];\n\n\tawait ensureSessionDocDirs(sessionDir);\n\tawait writeDocIfChanged({\n\t\tpath: getIndexDocPathFromSessionDir(sessionDir),\n\t\tcontent: renderIndexDoc(session),\n\t});\n\tawait writeDocIfChanged({\n\t\tpath: getContextDocPathFromSessionDir(sessionDir),\n\t\tcontent: renderContextPackDoc(session, options.projectStructure),\n\t});\n\n\tawait Promise.all(\n\t\tfeatures.map((feature) =>\n\t\t\twriteDocIfChanged({\n\t\t\t\tpath: getFeatureDocPathFromSessionDir(sessionDir, feature.id),\n\t\t\t\tcontent: renderFeatureDoc(session, feature),\n\t\t\t}),\n\t\t),\n\t);\n\tawait pruneFeatureDocs(\n\t\tsessionDir,\n\t\tnew Set(features.map((feature) => feature.id)),\n\t);\n}\n\nexport async function renderSessionDocs(\n\tworktree: string,\n\tsession: Session,\n\tlocation: LiveSessionLocation = \"active\",\n): Promise<void> {\n\tconst mutableWorktree = assertMutableWorkspaceRoot(worktree);\n\tawait renderSessionDocsAtDir(\n\t\tgetSessionDir(mutableWorktree, session.id, location),\n\t\tsession,\n\t);\n}\n",
|
|
26
31
|
"export function normalizeContextPath(value: string): string {\n\tconst normalized = value.trim().replaceAll(\"\\\\\", \"/\");\n\tif (normalized === \"./\") {\n\t\treturn \".\";\n\t}\n\treturn normalized.replace(/^\\.\\//, \"\");\n}\n\nexport function isCatchAllContextTarget(target: string): boolean {\n\tconst normalizedTarget = normalizeContextPath(target);\n\treturn (\n\t\tnormalizedTarget === \".\" ||\n\t\tnormalizedTarget === \"*\" ||\n\t\tnormalizedTarget === \"**/*\"\n\t);\n}\n\nexport function artifactMatchesTarget(path: string, target: string): boolean {\n\tconst normalizedPath = normalizeContextPath(path);\n\tconst normalizedTarget = normalizeContextPath(target);\n\tif (!normalizedPath || !normalizedTarget) {\n\t\treturn false;\n\t}\n\tif (isCatchAllContextTarget(normalizedTarget)) {\n\t\treturn true;\n\t}\n\tif (normalizedPath === normalizedTarget) {\n\t\treturn true;\n\t}\n\tif (normalizedPath.startsWith(`${normalizedTarget}/`)) {\n\t\treturn true;\n\t}\n\tif (\n\t\tnormalizedTarget.endsWith(\"/\") &&\n\t\tnormalizedPath.startsWith(normalizedTarget)\n\t) {\n\t\treturn true;\n\t}\n\tif (normalizedTarget.includes(\"*\")) {\n\t\tconst escaped = normalizedTarget\n\t\t\t.split(\"*\")\n\t\t\t.map((part) => part.replace(/[.+?^${}()|[\\]\\\\]/g, \"\\\\$&\"))\n\t\t\t.join(\".*\");\n\t\treturn new RegExp(`^${escaped}$`).test(normalizedPath);\n\t}\n\treturn false;\n}\n\nexport function artifactMatchesAnyTarget(\n\tpath: string,\n\ttargets: Iterable<string>,\n): boolean {\n\tfor (const target of targets) {\n\t\tif (artifactMatchesTarget(path, target)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n",
|
|
27
|
-
"import {\n\tartifactMatchesAnyTarget,\n\tisCatchAllContextTarget,\n\tnormalizeContextPath,\n} from \"./context-paths\";\nimport type { ProjectStructureMapProjection } from \"./project-structure-map\";\nimport type { Feature, Session } from \"./schema\";\n\nexport type ContextDiagnosticSeverity = \"info\" | \"warn\";\nexport type WorkflowReadinessState =\n\t| \"planning_ready\"\n\t| \"execution_ready\"\n\t| \"feature_review_ready\"\n\t| \"final_review_ready\"\n\t| \"release_ready\"\n\t| \"blocked_by_context\"\n\t| \"blocked_by_validation\"\n\t| \"blocked_by_review\";\n\nexport type ContextDiagnostic = {\n\tid: string;\n\tseverity: ContextDiagnosticSeverity;\n\tsummary: string;\n\tfeatureId?: string;\n\tremediation: string;\n};\n\nexport type FeatureContextProjection = {\n\tid: string;\n\ttitle: string;\n\tstatus: Feature[\"status\"];\n\tfileTargets: string[];\n\treviewScope: string[];\n\tverification: string[];\n};\n\nexport type TraceabilityGap = {\n\tid: string;\n\tseverity: ContextDiagnosticSeverity;\n\tsummary: string;\n\tremediation: string;\n};\n\nexport type FeatureTraceabilityProjection = FeatureContextProjection & {\n\tchangedArtifacts: string[];\n\tvalidationCommands: string[];\n\treviewerDecisionStatus: string | null;\n\tfeatureReviewStatus: string | null;\n\tfinalReviewStatus: string | null;\n\tgaps: TraceabilityGap[];\n};\n\nexport type ContextTraceabilityProjection = {\n\tplannedTargetCount: number;\n\tchangedArtifactCount: number;\n\tvalidationCommandCount: number;\n\tunplannedChangedArtifacts: string[];\n\treviewedFeatureCount: number;\n\tfeatures: FeatureTraceabilityProjection[];\n};\n\nexport type ContextQualityCheckStatus = \"pass\" | \"warn\" | \"fail\";\nexport type ContextQualityCheck = {\n\tid: string;\n\tstatus: ContextQualityCheckStatus;\n\tweight: number;\n\tsummary: string;\n};\n\nexport type ContextQualityProjection = {\n\tscore: number;\n\trating: \"strong\" | \"adequate\" | \"weak\";\n\tchecks: ContextQualityCheck[];\n};\n\nexport type WorkflowReadinessProjection = {\n\tstate: WorkflowReadinessState;\n\tblocking: Array<{\n\t\tid: string;\n\t\tfeatureId?: string;\n\t\tsummary: string;\n\t\tremediation: string;\n\t}>;\n\twarnings: Array<{\n\t\tid: string;\n\t\tfeatureId?: string;\n\t\tsummary: string;\n\t}>;\n\tnextAction: string;\n};\n\nexport type ContextPackProjection = {\n\tsessionId: string;\n\tgoal: string;\n\tworkflowProfile: string;\n\trepoProfile: string[];\n\tresearch: string[];\n\trequirements: string[];\n\tarchitectureDecisions: string[];\n\tnotes: string[];\n\tfeatures: FeatureContextProjection[];\n\tchangedArtifacts: string[];\n\tvalidationCommands: string[];\n\tdiagnostics: ContextDiagnostic[];\n\tquality: ContextQualityProjection;\n\ttraceability: ContextTraceabilityProjection;\n\tworkflowReadiness: WorkflowReadinessProjection;\n\tprojectStructure?: ProjectStructureMapProjection;\n};\n\nfunction uniqueStrings(values: string[]): string[] {\n\treturn Array.from(\n\t\tnew Set(values.map((value) => value.trim()).filter(Boolean)),\n\t);\n}\n\nfunction featureReviewScope(feature: Feature): string[] {\n\treturn uniqueStrings([\n\t\t...feature.fileTargets,\n\t\t...(feature.reviewScope ?? []).map((target) =>\n\t\t\ttarget.description\n\t\t\t\t? `${target.kind}:${target.target} (${target.description})`\n\t\t\t\t: `${target.kind}:${target.target}`,\n\t\t),\n\t]);\n}\n\nfunction featureReviewScopeTargets(feature: Feature): string[] {\n\treturn uniqueStrings(\n\t\t(feature.reviewScope ?? []).map((target) => target.target),\n\t);\n}\n\nfunction featureContextTargets(feature: Feature): string[] {\n\treturn uniqueStrings([\n\t\t...feature.fileTargets,\n\t\t...featureReviewScopeTargets(feature),\n\t]);\n}\n\nfunction changedArtifactPaths(session: Session): string[] {\n\treturn uniqueStrings([\n\t\t...session.artifacts.map((artifact) => artifact.path),\n\t\t...session.execution.history.flatMap((entry) =>\n\t\t\tentry.artifactsChanged.map((artifact) => artifact.path),\n\t\t),\n\t]);\n}\n\nfunction validationCommands(session: Session): string[] {\n\treturn uniqueStrings([\n\t\t...session.execution.lastValidationRun.map((entry) => entry.command),\n\t\t...session.execution.history.flatMap((entry) =>\n\t\t\tentry.validationRun.map((validation) => validation.command),\n\t\t),\n\t]);\n}\n\nfunction plannedContextTargets(features: Feature[]): Set<string> {\n\treturn new Set(features.flatMap((feature) => featureContextTargets(feature)));\n}\n\nfunction isBroadContextTarget(target: string): boolean {\n\tconst normalizedTarget = normalizeContextPath(target);\n\treturn (\n\t\tisCatchAllContextTarget(normalizedTarget) ||\n\t\tnormalizedTarget.endsWith(\"/**\")\n\t);\n}\n\nfunction featureHistoryEntries(session: Session, featureId: string) {\n\treturn session.execution.history.filter(\n\t\t(entry) => entry.featureId === featureId,\n\t);\n}\n\nfunction lastValue<T>(values: Array<T | null | undefined>): T | null {\n\tfor (let index = values.length - 1; index >= 0; index -= 1) {\n\t\tconst value = values[index];\n\t\tif (value !== null && value !== undefined) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction featureTraceability(\n\tsession: Session,\n\tfeature: Feature,\n): FeatureTraceabilityProjection {\n\tconst history = featureHistoryEntries(session, feature.id);\n\tconst targets = featureContextTargets(feature);\n\tconst changedArtifacts = uniqueStrings(\n\t\thistory.flatMap((entry) =>\n\t\t\tentry.artifactsChanged.map((artifact) => artifact.path),\n\t\t),\n\t);\n\tconst validationCommandsForFeature = uniqueStrings(\n\t\thistory.flatMap((entry) =>\n\t\t\tentry.validationRun.map((validation) => validation.command),\n\t\t),\n\t);\n\tconst reviewerDecision = lastValue(\n\t\thistory.map((entry) => entry.reviewerDecision ?? null),\n\t);\n\tconst featureReview = lastValue(history.map((entry) => entry.featureReview));\n\tconst finalReview = lastValue(history.map((entry) => entry.finalReview));\n\tconst unplannedChangedArtifacts = changedArtifacts.filter(\n\t\t(path) => !artifactMatchesAnyTarget(path, targets),\n\t);\n\tconst gaps: TraceabilityGap[] = [];\n\n\tif (\n\t\tchangedArtifacts.length > 0 &&\n\t\tvalidationCommandsForFeature.length === 0\n\t) {\n\t\tgaps.push({\n\t\t\tid: \"feature_changed_without_validation\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: `Feature '${feature.id}' changed artifacts but has no recorded validation commands.`,\n\t\t\tremediation:\n\t\t\t\t\"Run and record targeted validation that covers the changed artifacts before review or completion claims.\",\n\t\t});\n\t}\n\n\tif (unplannedChangedArtifacts.length > 0) {\n\t\tgaps.push({\n\t\t\tid: \"feature_changed_artifacts_outside_scope\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: `Feature '${feature.id}' changed artifacts outside its planned targets or review scope: ${unplannedChangedArtifacts.join(\", \")}.`,\n\t\t\tremediation:\n\t\t\t\t\"Review whether the artifacts are legitimate scope expansion; reset/replan when they change the approved plan.\",\n\t\t});\n\t}\n\n\tif (feature.status === \"completed\" && !featureReview) {\n\t\tgaps.push({\n\t\t\tid: \"completed_feature_missing_feature_review\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: `Feature '${feature.id}' is completed but no feature review payload is visible in history.`,\n\t\t\tremediation:\n\t\t\t\t\"Inspect persisted completion evidence and rerun the feature completion path if review evidence is missing.\",\n\t\t});\n\t}\n\n\tif (\n\t\tsession.plan?.deliveryPolicy?.strictReview &&\n\t\tfeature.status === \"completed\" &&\n\t\treviewerDecision?.status !== \"approved\"\n\t) {\n\t\tgaps.push({\n\t\t\tid: \"strict_review_feature_missing_approval\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: `Feature '${feature.id}' is completed without an approved recorded reviewer decision under strict review.`,\n\t\t\tremediation:\n\t\t\t\t\"Run the read-only review lane and record an approved feature decision before claiming the session is review-complete.\",\n\t\t});\n\t}\n\n\treturn {\n\t\tid: feature.id,\n\t\ttitle: feature.title,\n\t\tstatus: feature.status,\n\t\tfileTargets: feature.fileTargets,\n\t\treviewScope: featureReviewScope(feature),\n\t\tverification: feature.verification,\n\t\tchangedArtifacts,\n\t\tvalidationCommands: validationCommandsForFeature,\n\t\treviewerDecisionStatus: reviewerDecision?.status ?? null,\n\t\tfeatureReviewStatus: featureReview?.status ?? null,\n\t\tfinalReviewStatus: finalReview?.status ?? null,\n\t\tgaps,\n\t};\n}\n\nfunction buildTraceabilityProjection(\n\tsession: Session,\n\tfeatures: Feature[],\n\tchangedArtifacts: string[],\n\tcommands: string[],\n): ContextTraceabilityProjection {\n\tconst plannedTargets = plannedContextTargets(features);\n\tconst featureTraceabilityRows = features.map((feature) =>\n\t\tfeatureTraceability(session, feature),\n\t);\n\n\treturn {\n\t\tplannedTargetCount: plannedTargets.size,\n\t\tchangedArtifactCount: changedArtifacts.length,\n\t\tvalidationCommandCount: commands.length,\n\t\tunplannedChangedArtifacts: changedArtifacts.filter(\n\t\t\t(path) => !artifactMatchesAnyTarget(path, plannedTargets),\n\t\t),\n\t\treviewedFeatureCount: featureTraceabilityRows.filter(\n\t\t\t(feature) =>\n\t\t\t\tfeature.reviewerDecisionStatus === \"approved\" ||\n\t\t\t\tfeature.featureReviewStatus === \"passed\",\n\t\t).length,\n\t\tfeatures: featureTraceabilityRows,\n\t};\n}\n\nfunction contextDiagnostics(\n\tsession: Session,\n\tfeatures: Feature[],\n\tchangedArtifacts: string[],\n\tcommands: string[],\n): ContextDiagnostic[] {\n\tconst diagnostics: ContextDiagnostic[] = [];\n\tconst workflowProfile = session.planning.workflowProfile;\n\n\tif (session.planning.repoProfile.length === 0) {\n\t\tdiagnostics.push({\n\t\t\tid: \"missing_repo_profile\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: \"Planning context has no repo profile entries.\",\n\t\t\tremediation:\n\t\t\t\t\"Record package manager, build/test commands, framework conventions, and local house rules before relying on the plan.\",\n\t\t});\n\t}\n\n\tif (session.planning.research.length === 0) {\n\t\tdiagnostics.push({\n\t\t\tid: \"missing_research\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: \"Planning context has no inspected references.\",\n\t\t\tremediation:\n\t\t\t\t\"Record the source files, tests, docs, configs, or prior decisions inspected during planning.\",\n\t\t});\n\t}\n\n\tfor (const feature of features) {\n\t\tconst targets = featureContextTargets(feature);\n\t\tif (feature.fileTargets.length === 0) {\n\t\t\tdiagnostics.push({\n\t\t\t\tid: \"feature_missing_file_targets\",\n\t\t\t\tseverity: \"warn\",\n\t\t\t\tfeatureId: feature.id,\n\t\t\t\tsummary: `Feature '${feature.id}' has no planned file targets.`,\n\t\t\t\tremediation:\n\t\t\t\t\t\"Add the expected source, test, documentation, or configuration surfaces to feature fileTargets before execution.\",\n\t\t\t});\n\t\t}\n\n\t\tif (featureReviewScope(feature).length === 0) {\n\t\t\tdiagnostics.push({\n\t\t\t\tid: \"feature_missing_review_scope\",\n\t\t\t\tseverity: \"warn\",\n\t\t\t\tfeatureId: feature.id,\n\t\t\t\tsummary: `Feature '${feature.id}' has no reviewable context scope.`,\n\t\t\t\tremediation:\n\t\t\t\t\t\"Record fileTargets or reviewScope entries so review can compare implementation against the planned context.\",\n\t\t\t});\n\t\t}\n\n\t\tif (feature.verification.length === 0) {\n\t\t\tdiagnostics.push({\n\t\t\t\tid: \"feature_missing_verification\",\n\t\t\t\tseverity: \"warn\",\n\t\t\t\tfeatureId: feature.id,\n\t\t\t\tsummary: `Feature '${feature.id}' has no planned verification commands or checks.`,\n\t\t\t\tremediation:\n\t\t\t\t\t\"Record targeted validation checks on the feature before approving or running it.\",\n\t\t\t});\n\t\t}\n\n\t\tif (\n\t\t\tsession.planning.research.length > 0 &&\n\t\t\ttargets.length > 0 &&\n\t\t\ttargets.every(\n\t\t\t\t(target) =>\n\t\t\t\t\t!session.planning.research.some((entry) =>\n\t\t\t\t\t\tentry.toLowerCase().includes(target.toLowerCase()),\n\t\t\t\t\t),\n\t\t\t)\n\t\t) {\n\t\t\tdiagnostics.push({\n\t\t\t\tid: \"feature_targets_not_inspected\",\n\t\t\t\tseverity: \"info\",\n\t\t\t\tfeatureId: feature.id,\n\t\t\t\tsummary: `Feature '${feature.id}' names planned targets that are not visible in planning research notes.`,\n\t\t\t\tremediation:\n\t\t\t\t\t\"Record the files, tests, docs, or contracts inspected for this feature target, or explain why direct inspection was unnecessary.\",\n\t\t\t});\n\t\t}\n\t}\n\n\tconst plannedTargets = plannedContextTargets(features);\n\tconst unplannedArtifacts = changedArtifacts.filter(\n\t\t(path) => !artifactMatchesAnyTarget(path, plannedTargets),\n\t);\n\tif (unplannedArtifacts.length > 0 && plannedTargets.size > 0) {\n\t\tdiagnostics.push({\n\t\t\tid: \"changed_artifacts_outside_planned_context\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: `Changed artifacts were not named in planned file targets or review scope: ${unplannedArtifacts.join(\", \")}.`,\n\t\t\tremediation:\n\t\t\t\t\"Compare these artifacts against the approved scope and reset/replan if they represent implementation drift.\",\n\t\t});\n\t}\n\n\tif (\n\t\tchangedArtifacts.length > 0 &&\n\t\tfeatures.length > 0 &&\n\t\tfeatures.every((feature) => feature.fileTargets.length === 0)\n\t) {\n\t\tdiagnostics.push({\n\t\t\tid: \"changed_artifacts_without_planned_targets\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary:\n\t\t\t\t\"The session has changed artifacts, but no feature named planned file targets.\",\n\t\t\tremediation:\n\t\t\t\t\"Compare changed artifacts against the approved scope and update the plan via reset/replan if the implementation drifted.\",\n\t\t});\n\t}\n\n\tif (\n\t\tcommands.length === 0 &&\n\t\tfeatures.some((feature) => feature.status === \"completed\")\n\t) {\n\t\tdiagnostics.push({\n\t\t\tid: \"completed_without_recorded_validation_commands\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary:\n\t\t\t\t\"At least one feature is completed, but the context pack has no recorded validation commands.\",\n\t\t\tremediation:\n\t\t\t\t\"Inspect completion evidence and rerun/record targeted or broad validation before approving review claims.\",\n\t\t});\n\t}\n\n\tfor (const feature of features) {\n\t\tconst history = featureHistoryEntries(session, feature.id);\n\t\tconst featureChangedArtifacts = history.flatMap((entry) =>\n\t\t\tentry.artifactsChanged.map((artifact) => artifact.path),\n\t\t);\n\t\tconst featureValidationCommands = uniqueStrings(\n\t\t\thistory.flatMap((entry) =>\n\t\t\t\tentry.validationRun.map((validation) => validation.command),\n\t\t\t),\n\t\t);\n\t\tconst hasChangedArtifacts = featureChangedArtifacts.length > 0;\n\t\tconst matchingValidation = feature.verification.some((plannedCheck) =>\n\t\t\tfeatureValidationCommands.some((command) => {\n\t\t\t\tconst normalizedCommand = command.toLowerCase();\n\t\t\t\tconst normalizedPlannedCheck = plannedCheck.toLowerCase();\n\t\t\t\treturn (\n\t\t\t\t\tnormalizedCommand.includes(normalizedPlannedCheck) ||\n\t\t\t\t\tnormalizedPlannedCheck.includes(normalizedCommand)\n\t\t\t\t);\n\t\t\t}),\n\t\t);\n\t\tif (\n\t\t\thasChangedArtifacts &&\n\t\t\tfeature.verification.length > 0 &&\n\t\t\tfeatureValidationCommands.length > 0 &&\n\t\t\t!matchingValidation\n\t\t) {\n\t\t\tdiagnostics.push({\n\t\t\t\tid: \"feature_validation_not_matched_to_plan\",\n\t\t\t\tseverity: \"warn\",\n\t\t\t\tfeatureId: feature.id,\n\t\t\t\tsummary: `Feature '${feature.id}' has changed artifacts, but recorded validation does not match the planned verification commands.`,\n\t\t\t\tremediation:\n\t\t\t\t\t\"Run the planned targeted check, update the plan through reset/replan, or explain why a different command covers the same behavior.\",\n\t\t\t});\n\t\t}\n\t}\n\n\tif (\n\t\tfeatures.some((feature) => {\n\t\t\tconst targets = featureContextTargets(feature);\n\t\t\treturn (\n\t\t\t\ttargets.some(isBroadContextTarget) &&\n\t\t\t\t!targets.some((target) => !isBroadContextTarget(target))\n\t\t\t);\n\t\t})\n\t) {\n\t\tdiagnostics.push({\n\t\t\tid: \"broad_target_without_narrowed_scope\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary:\n\t\t\t\t\"At least one feature uses a broad planned target without an obviously narrowed review scope.\",\n\t\t\tremediation:\n\t\t\t\t\"Name the expected files, directories, or reviewScope surfaces so changed artifacts can be compared to intent.\",\n\t\t});\n\t}\n\n\tif (\n\t\tworkflowProfile === \"bugfix\" &&\n\t\tfeatures.some(\n\t\t\t(feature) =>\n\t\t\t\t!feature.verification.some((check) =>\n\t\t\t\t\t/(test|spec|repro|regression)/i.test(check),\n\t\t\t\t),\n\t\t)\n\t) {\n\t\tdiagnostics.push({\n\t\t\tid: \"bugfix_profile_missing_regression_validation\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary:\n\t\t\t\t\"Bugfix workflow profile expects regression-oriented validation in the feature plan.\",\n\t\t\tremediation:\n\t\t\t\t\"Record the failing/regression test, reproduction command, or targeted check that proves the bug is fixed.\",\n\t\t});\n\t}\n\n\tif (\n\t\tworkflowProfile === \"release\" &&\n\t\tfeatures.some(\n\t\t\t(feature) =>\n\t\t\t\t!feature.verification.some((check) =>\n\t\t\t\t\t/check|smoke|pack|release/i.test(check),\n\t\t\t\t),\n\t\t)\n\t) {\n\t\tdiagnostics.push({\n\t\t\tid: \"release_profile_missing_release_validation\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary:\n\t\t\t\t\"Release workflow profile expects release, smoke, pack, or full-check validation in the plan.\",\n\t\t\tremediation:\n\t\t\t\t\"Record the release hygiene, smoke, packaging, or broad validation command before treating the session as release-ready.\",\n\t\t});\n\t}\n\n\tif (\n\t\tworkflowProfile === \"review\" &&\n\t\tfeatures.some((feature) => (feature.reviewScope ?? []).length === 0)\n\t) {\n\t\tdiagnostics.push({\n\t\t\tid: \"review_profile_missing_review_scope\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary:\n\t\t\t\t\"Review workflow profile expects explicit reviewScope entries for the surfaces under review.\",\n\t\t\tremediation:\n\t\t\t\t\"Record the files, domains, workflows, or contracts the review is expected to inspect.\",\n\t\t});\n\t}\n\n\tif (\n\t\t(workflowProfile === \"migration\" || workflowProfile === \"refactor\") &&\n\t\tsession.plan &&\n\t\tsession.plan.architectureDecisions.length === 0\n\t) {\n\t\tdiagnostics.push({\n\t\t\tid:\n\t\t\t\tworkflowProfile === \"migration\"\n\t\t\t\t\t? \"migration_profile_missing_migration_decisions\"\n\t\t\t\t\t: \"refactor_profile_missing_invariant_context\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: `${workflowProfile} workflow profile expects architecture decisions or invariants to be recorded.`,\n\t\t\tremediation:\n\t\t\t\t\"Record the compatibility, migration, or behavior-preservation constraints that review should protect.\",\n\t\t});\n\t}\n\n\treturn diagnostics;\n}\n\nfunction buildContextQualityProjection(\n\tsession: Session,\n\tfeatures: Feature[],\n\tdiagnostics: ContextDiagnostic[],\n\ttraceability: ContextTraceabilityProjection,\n): ContextQualityProjection {\n\tconst hasFeatures = features.length > 0;\n\tconst check = (\n\t\tid: string,\n\t\tstatus: ContextQualityCheckStatus,\n\t\tweight: number,\n\t\tsummary: string,\n\t): ContextQualityCheck => ({ id, status, weight, summary });\n\tconst diagnosticsById = new Set(\n\t\tdiagnostics.map((diagnostic) => diagnostic.id),\n\t);\n\tconst checks: ContextQualityCheck[] = [\n\t\tcheck(\n\t\t\t\"repo_profile\",\n\t\t\tsession.planning.repoProfile.length > 0 ? \"pass\" : \"fail\",\n\t\t\t2,\n\t\t\t\"Repo profile records package, command, framework, or convention context.\",\n\t\t),\n\t\tcheck(\n\t\t\t\"research\",\n\t\t\tsession.planning.research.length > 0 ? \"pass\" : \"fail\",\n\t\t\t2,\n\t\t\t\"Planning research names inspected files, docs, tests, configs, or contracts.\",\n\t\t),\n\t\tcheck(\n\t\t\t\"feature_targets\",\n\t\t\thasFeatures &&\n\t\t\t\tfeatures.every((feature) => featureContextTargets(feature).length > 0)\n\t\t\t\t? \"pass\"\n\t\t\t\t: \"fail\",\n\t\t\t2,\n\t\t\t\"Every feature has planned file targets or review scope.\",\n\t\t),\n\t\tcheck(\n\t\t\t\"planned_verification\",\n\t\t\thasFeatures &&\n\t\t\t\tfeatures.every((feature) => feature.verification.length > 0)\n\t\t\t\t? \"pass\"\n\t\t\t\t: \"fail\",\n\t\t\t2,\n\t\t\t\"Every feature has planned verification.\",\n\t\t),\n\t\tcheck(\n\t\t\t\"scope_traceability\",\n\t\t\ttraceability.unplannedChangedArtifacts.length === 0 ? \"pass\" : \"fail\",\n\t\t\t3,\n\t\t\t\"Changed artifacts stay within planned file targets or review scope.\",\n\t\t),\n\t\tcheck(\n\t\t\t\"validation_traceability\",\n\t\t\ttraceability.features.some((feature) =>\n\t\t\t\tfeature.gaps.some(\n\t\t\t\t\t(gap) => gap.id === \"feature_changed_without_validation\",\n\t\t\t\t),\n\t\t\t)\n\t\t\t\t? \"fail\"\n\t\t\t\t: diagnosticsById.has(\"feature_validation_not_matched_to_plan\")\n\t\t\t\t\t? \"warn\"\n\t\t\t\t\t: \"pass\",\n\t\t\t3,\n\t\t\t\"Changed artifacts have recorded validation evidence aligned to the plan.\",\n\t\t),\n\t\tcheck(\n\t\t\t\"context_specificity\",\n\t\t\tdiagnosticsById.has(\"broad_target_without_narrowed_scope\")\n\t\t\t\t? \"warn\"\n\t\t\t\t: \"pass\",\n\t\t\t1,\n\t\t\t\"Planned targets are specific enough for reviewable handoff.\",\n\t\t),\n\t];\n\tconst totalWeight = checks.reduce((total, item) => total + item.weight, 0);\n\tconst earnedWeight = checks.reduce((total, item) => {\n\t\tif (item.status === \"pass\") return total + item.weight;\n\t\tif (item.status === \"warn\") return total + item.weight / 2;\n\t\treturn total;\n\t}, 0);\n\tconst score =\n\t\ttotalWeight === 0 ? 100 : Math.round((earnedWeight / totalWeight) * 100);\n\treturn {\n\t\tscore,\n\t\trating: score >= 85 ? \"strong\" : score >= 65 ? \"adequate\" : \"weak\",\n\t\tchecks,\n\t};\n}\n\nfunction diagnosticSummary(\n\tdiagnostic: ContextDiagnostic,\n): WorkflowReadinessProjection[\"blocking\"][number] {\n\treturn {\n\t\tid: diagnostic.id,\n\t\t...(diagnostic.featureId ? { featureId: diagnostic.featureId } : {}),\n\t\tsummary: diagnostic.summary,\n\t\tremediation: diagnostic.remediation,\n\t};\n}\n\nfunction warningSummary(\n\tdiagnostic: ContextDiagnostic,\n): WorkflowReadinessProjection[\"warnings\"][number] {\n\treturn {\n\t\tid: diagnostic.id,\n\t\t...(diagnostic.featureId ? { featureId: diagnostic.featureId } : {}),\n\t\tsummary: diagnostic.summary,\n\t};\n}\n\nfunction buildWorkflowReadinessProjection(\n\tsession: Session,\n\tfeatures: Feature[],\n\tdiagnostics: ContextDiagnostic[],\n\ttraceability: ContextTraceabilityProjection,\n): WorkflowReadinessProjection {\n\tconst warnings = diagnostics.map(warningSummary);\n\tconst contextBlockingDiagnostics = diagnostics.filter((diagnostic) => {\n\t\tif (diagnostic.id === \"changed_artifacts_outside_planned_context\") {\n\t\t\treturn true;\n\t\t}\n\t\tif (!session.plan || session.approval === \"pending\") {\n\t\t\treturn diagnostic.severity === \"warn\";\n\t\t}\n\t\tconst activeFeatureId = session.execution.activeFeatureId;\n\t\treturn (\n\t\t\tdiagnostic.severity === \"warn\" &&\n\t\t\tBoolean(activeFeatureId) &&\n\t\t\tdiagnostic.featureId === activeFeatureId\n\t\t);\n\t});\n\tconst scopeDriftGaps = traceability.features.flatMap((feature) =>\n\t\tfeature.gaps\n\t\t\t.filter((gap) => gap.id === \"feature_changed_artifacts_outside_scope\")\n\t\t\t.map((gap) => ({\n\t\t\t\tid: gap.id,\n\t\t\t\tfeatureId: feature.id,\n\t\t\t\tsummary: gap.summary,\n\t\t\t\tremediation: gap.remediation,\n\t\t\t})),\n\t);\n\tconst validationBlockingGaps = traceability.features.flatMap((feature) =>\n\t\tfeature.gaps\n\t\t\t.filter((gap) => gap.id === \"feature_changed_without_validation\")\n\t\t\t.map((gap) => ({\n\t\t\t\tid: gap.id,\n\t\t\t\tfeatureId: feature.id,\n\t\t\t\tsummary: gap.summary,\n\t\t\t\tremediation: gap.remediation,\n\t\t\t})),\n\t);\n\tconst reviewBlockingGaps = traceability.features.flatMap((feature) =>\n\t\tfeature.gaps\n\t\t\t.filter(\n\t\t\t\t(gap) =>\n\t\t\t\t\tgap.id === \"completed_feature_missing_feature_review\" ||\n\t\t\t\t\tgap.id === \"strict_review_feature_missing_approval\",\n\t\t\t)\n\t\t\t.map((gap) => ({\n\t\t\t\tid: gap.id,\n\t\t\t\tfeatureId: feature.id,\n\t\t\t\tsummary: gap.summary,\n\t\t\t\tremediation: gap.remediation,\n\t\t\t})),\n\t);\n\tif (contextBlockingDiagnostics.length > 0) {\n\t\treturn {\n\t\t\tstate: \"blocked_by_context\",\n\t\t\tblocking: [\n\t\t\t\t...contextBlockingDiagnostics.map(diagnosticSummary),\n\t\t\t\t...scopeDriftGaps,\n\t\t\t],\n\t\t\twarnings,\n\t\t\tnextAction:\n\t\t\t\t\"Resolve or explicitly account for the context diagnostics before relying on the next workflow phase.\",\n\t\t};\n\t}\n\n\tif (scopeDriftGaps.length > 0) {\n\t\treturn {\n\t\t\tstate: \"blocked_by_context\",\n\t\t\tblocking: scopeDriftGaps,\n\t\t\twarnings,\n\t\t\tnextAction:\n\t\t\t\t\"Resolve changed artifacts outside planned targets or review scope before relying on the next workflow phase.\",\n\t\t};\n\t}\n\n\tif (validationBlockingGaps.length > 0) {\n\t\treturn {\n\t\t\tstate: \"blocked_by_validation\",\n\t\t\tblocking: validationBlockingGaps,\n\t\t\twarnings,\n\t\t\tnextAction:\n\t\t\t\t\"Run and record validation that covers the changed artifacts before review or completion claims.\",\n\t\t};\n\t}\n\n\tif (reviewBlockingGaps.length > 0) {\n\t\treturn {\n\t\t\tstate: \"blocked_by_review\",\n\t\t\tblocking: reviewBlockingGaps,\n\t\t\twarnings,\n\t\t\tnextAction:\n\t\t\t\t\"Run the read-only review lane and record the missing reviewer evidence.\",\n\t\t};\n\t}\n\n\tif (session.status === \"completed\") {\n\t\treturn {\n\t\t\tstate: \"release_ready\",\n\t\t\tblocking: [],\n\t\t\twarnings,\n\t\t\tnextAction:\n\t\t\t\t\"Use final review, validation evidence, and release hygiene checks to decide whether to cut a release.\",\n\t\t};\n\t}\n\n\tif (!session.plan || session.approval === \"pending\") {\n\t\treturn {\n\t\t\tstate: \"planning_ready\",\n\t\t\tblocking: [],\n\t\t\twarnings,\n\t\t\tnextAction:\n\t\t\t\t\"Finish the plan, including repo profile, inspected references, feature targets, review scope, and verification.\",\n\t\t};\n\t}\n\n\tconst allFeaturesComplete =\n\t\tfeatures.length > 0 &&\n\t\tfeatures.every((feature) => feature.status === \"completed\");\n\tif (allFeaturesComplete) {\n\t\treturn {\n\t\t\tstate: \"final_review_ready\",\n\t\t\tblocking: [],\n\t\t\twarnings,\n\t\t\tnextAction:\n\t\t\t\t\"Run final review against planned scope, changed artifacts, validation evidence, and remaining gaps.\",\n\t\t};\n\t}\n\n\tconst activeTraceability = traceability.features.find(\n\t\t(feature) => feature.id === session.execution.activeFeatureId,\n\t);\n\tif (\n\t\tactiveTraceability &&\n\t\tactiveTraceability.validationCommands.length > 0 &&\n\t\tactiveTraceability.featureReviewStatus !== \"passed\"\n\t) {\n\t\treturn {\n\t\t\tstate: \"feature_review_ready\",\n\t\t\tblocking: [],\n\t\t\twarnings,\n\t\t\tnextAction:\n\t\t\t\t\"Review the active feature against planned targets, changed artifacts, and validation evidence.\",\n\t\t};\n\t}\n\n\treturn {\n\t\tstate: \"execution_ready\",\n\t\tblocking: [],\n\t\twarnings,\n\t\tnextAction:\n\t\t\t\"Continue the approved plan one feature at a time and keep validation and review evidence aligned with scope.\",\n\t};\n}\n\nexport function buildContextPackProjection(\n\tsession: Session,\n\toptions: {\n\t\tprojectStructure?: ProjectStructureMapProjection | undefined;\n\t} = {},\n): ContextPackProjection {\n\tconst features = session.plan?.features ?? [];\n\tconst changedArtifacts = changedArtifactPaths(session);\n\tconst commands = validationCommands(session);\n\tconst diagnostics = contextDiagnostics(\n\t\tsession,\n\t\tfeatures,\n\t\tchangedArtifacts,\n\t\tcommands,\n\t);\n\tconst traceability = buildTraceabilityProjection(\n\t\tsession,\n\t\tfeatures,\n\t\tchangedArtifacts,\n\t\tcommands,\n\t);\n\tconst quality = buildContextQualityProjection(\n\t\tsession,\n\t\tfeatures,\n\t\tdiagnostics,\n\t\ttraceability,\n\t);\n\tconst workflowReadiness = buildWorkflowReadinessProjection(\n\t\tsession,\n\t\tfeatures,\n\t\tdiagnostics,\n\t\ttraceability,\n\t);\n\n\treturn {\n\t\tsessionId: session.id,\n\t\tgoal: session.goal,\n\t\tworkflowProfile: session.planning.workflowProfile,\n\t\trepoProfile: session.planning.repoProfile,\n\t\tresearch: session.planning.research,\n\t\trequirements: session.plan?.requirements ?? [],\n\t\tarchitectureDecisions: session.plan?.architectureDecisions ?? [],\n\t\tnotes: [...(session.plan?.notes ?? []), ...session.notes],\n\t\tfeatures: features.map((feature) => ({\n\t\t\tid: feature.id,\n\t\t\ttitle: feature.title,\n\t\t\tstatus: feature.status,\n\t\t\tfileTargets: feature.fileTargets,\n\t\t\treviewScope: featureReviewScope(feature),\n\t\t\tverification: feature.verification,\n\t\t})),\n\t\tchangedArtifacts,\n\t\tvalidationCommands: commands,\n\t\tdiagnostics,\n\t\tquality,\n\t\ttraceability,\n\t\tworkflowReadiness,\n\t\t...(options.projectStructure\n\t\t\t? { projectStructure: options.projectStructure }\n\t\t\t: {}),\n\t};\n}\n",
|
|
32
|
+
"import {\n\tisCatchAllContextTarget,\n\tnormalizeContextPath,\n} from \"../context-paths\";\nimport type { Feature, Session } from \"../schema\";\n\nexport function uniqueStrings(values: string[]): string[] {\n\treturn Array.from(\n\t\tnew Set(values.map((value) => value.trim()).filter(Boolean)),\n\t);\n}\n\nexport function featureReviewScope(feature: Feature): string[] {\n\treturn uniqueStrings([\n\t\t...feature.fileTargets,\n\t\t...(feature.reviewScope ?? []).map((target) =>\n\t\t\ttarget.description\n\t\t\t\t? `${target.kind}:${target.target} (${target.description})`\n\t\t\t\t: `${target.kind}:${target.target}`,\n\t\t),\n\t]);\n}\n\nfunction featureReviewScopeTargets(feature: Feature): string[] {\n\treturn uniqueStrings(\n\t\t(feature.reviewScope ?? []).map((target) => target.target),\n\t);\n}\n\nexport function featureContextTargets(feature: Feature): string[] {\n\treturn uniqueStrings([\n\t\t...feature.fileTargets,\n\t\t...featureReviewScopeTargets(feature),\n\t]);\n}\n\nexport function changedArtifactPaths(session: Session): string[] {\n\treturn uniqueStrings([\n\t\t...session.artifacts.map((artifact) => artifact.path),\n\t\t...session.execution.history.flatMap((entry) =>\n\t\t\tentry.artifactsChanged.map((artifact) => artifact.path),\n\t\t),\n\t]);\n}\n\nexport function validationCommands(session: Session): string[] {\n\treturn uniqueStrings([\n\t\t...session.execution.lastValidationRun.map((entry) => entry.command),\n\t\t...session.execution.history.flatMap((entry) =>\n\t\t\tentry.validationRun.map((validation) => validation.command),\n\t\t),\n\t]);\n}\n\nexport function plannedContextTargets(features: Feature[]): Set<string> {\n\treturn new Set(features.flatMap((feature) => featureContextTargets(feature)));\n}\n\nexport function isBroadContextTarget(target: string): boolean {\n\tconst normalizedTarget = normalizeContextPath(target);\n\treturn (\n\t\tisCatchAllContextTarget(normalizedTarget) ||\n\t\tnormalizedTarget.endsWith(\"/**\")\n\t);\n}\n\nexport function featureHistoryEntries(session: Session, featureId: string) {\n\treturn session.execution.history.filter(\n\t\t(entry) => entry.featureId === featureId,\n\t);\n}\n\nexport function lastValue<T>(values: Array<T | null | undefined>): T | null {\n\tfor (let index = values.length - 1; index >= 0; index -= 1) {\n\t\tconst value = values[index];\n\t\tif (value !== null && value !== undefined) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn null;\n}\n",
|
|
33
|
+
"import { artifactMatchesAnyTarget } from \"../context-paths\";\nimport type { Feature, Session } from \"../schema\";\nimport {\n\tfeatureContextTargets,\n\tfeatureHistoryEntries,\n\tfeatureReviewScope,\n\tisBroadContextTarget,\n\tplannedContextTargets,\n\tuniqueStrings,\n} from \"./facts\";\nimport type { ContextDiagnostic } from \"./types\";\n\nexport function contextDiagnostics(\n\tsession: Session,\n\tfeatures: Feature[],\n\tchangedArtifacts: string[],\n\tcommands: string[],\n): ContextDiagnostic[] {\n\tconst diagnostics: ContextDiagnostic[] = [];\n\tconst workflowProfile = session.planning.workflowProfile;\n\n\tif (session.planning.repoProfile.length === 0) {\n\t\tdiagnostics.push({\n\t\t\tid: \"missing_repo_profile\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: \"Planning context has no repo profile entries.\",\n\t\t\tremediation:\n\t\t\t\t\"Record package manager, build/test commands, framework conventions, and local house rules before relying on the plan.\",\n\t\t});\n\t}\n\n\tif (session.planning.research.length === 0) {\n\t\tdiagnostics.push({\n\t\t\tid: \"missing_research\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: \"Planning context has no inspected references.\",\n\t\t\tremediation:\n\t\t\t\t\"Record the source files, tests, docs, configs, or prior decisions inspected during planning.\",\n\t\t});\n\t}\n\n\tfor (const feature of features) {\n\t\tconst targets = featureContextTargets(feature);\n\t\tif (feature.fileTargets.length === 0) {\n\t\t\tdiagnostics.push({\n\t\t\t\tid: \"feature_missing_file_targets\",\n\t\t\t\tseverity: \"warn\",\n\t\t\t\tfeatureId: feature.id,\n\t\t\t\tsummary: `Feature '${feature.id}' has no planned file targets.`,\n\t\t\t\tremediation:\n\t\t\t\t\t\"Add the expected source, test, documentation, or configuration surfaces to feature fileTargets before execution.\",\n\t\t\t});\n\t\t}\n\n\t\tif (featureReviewScope(feature).length === 0) {\n\t\t\tdiagnostics.push({\n\t\t\t\tid: \"feature_missing_review_scope\",\n\t\t\t\tseverity: \"warn\",\n\t\t\t\tfeatureId: feature.id,\n\t\t\t\tsummary: `Feature '${feature.id}' has no reviewable context scope.`,\n\t\t\t\tremediation:\n\t\t\t\t\t\"Record fileTargets or reviewScope entries so review can compare implementation against the planned context.\",\n\t\t\t});\n\t\t}\n\n\t\tif (feature.verification.length === 0) {\n\t\t\tdiagnostics.push({\n\t\t\t\tid: \"feature_missing_verification\",\n\t\t\t\tseverity: \"warn\",\n\t\t\t\tfeatureId: feature.id,\n\t\t\t\tsummary: `Feature '${feature.id}' has no planned verification commands or checks.`,\n\t\t\t\tremediation:\n\t\t\t\t\t\"Record targeted validation checks on the feature before approving or running it.\",\n\t\t\t});\n\t\t}\n\n\t\tif (\n\t\t\tsession.planning.research.length > 0 &&\n\t\t\ttargets.length > 0 &&\n\t\t\ttargets.every(\n\t\t\t\t(target) =>\n\t\t\t\t\t!session.planning.research.some((entry) =>\n\t\t\t\t\t\tentry.toLowerCase().includes(target.toLowerCase()),\n\t\t\t\t\t),\n\t\t\t)\n\t\t) {\n\t\t\tdiagnostics.push({\n\t\t\t\tid: \"feature_targets_not_inspected\",\n\t\t\t\tseverity: \"info\",\n\t\t\t\tfeatureId: feature.id,\n\t\t\t\tsummary: `Feature '${feature.id}' names planned targets that are not visible in planning research notes.`,\n\t\t\t\tremediation:\n\t\t\t\t\t\"Record the files, tests, docs, or contracts inspected for this feature target, or explain why direct inspection was unnecessary.\",\n\t\t\t});\n\t\t}\n\t}\n\n\tconst plannedTargets = plannedContextTargets(features);\n\tconst unplannedArtifacts = changedArtifacts.filter(\n\t\t(path) => !artifactMatchesAnyTarget(path, plannedTargets),\n\t);\n\tif (unplannedArtifacts.length > 0 && plannedTargets.size > 0) {\n\t\tdiagnostics.push({\n\t\t\tid: \"changed_artifacts_outside_planned_context\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: `Changed artifacts were not named in planned file targets or review scope: ${unplannedArtifacts.join(\", \")}.`,\n\t\t\tremediation:\n\t\t\t\t\"Compare these artifacts against the approved scope and reset/replan if they represent implementation drift.\",\n\t\t});\n\t}\n\n\tif (\n\t\tchangedArtifacts.length > 0 &&\n\t\tfeatures.length > 0 &&\n\t\tfeatures.every((feature) => feature.fileTargets.length === 0)\n\t) {\n\t\tdiagnostics.push({\n\t\t\tid: \"changed_artifacts_without_planned_targets\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary:\n\t\t\t\t\"The session has changed artifacts, but no feature named planned file targets.\",\n\t\t\tremediation:\n\t\t\t\t\"Compare changed artifacts against the approved scope and update the plan via reset/replan if the implementation drifted.\",\n\t\t});\n\t}\n\n\tif (\n\t\tcommands.length === 0 &&\n\t\tfeatures.some((feature) => feature.status === \"completed\")\n\t) {\n\t\tdiagnostics.push({\n\t\t\tid: \"completed_without_recorded_validation_commands\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary:\n\t\t\t\t\"At least one feature is completed, but the context pack has no recorded validation commands.\",\n\t\t\tremediation:\n\t\t\t\t\"Inspect completion evidence and rerun/record targeted or broad validation before approving review claims.\",\n\t\t});\n\t}\n\n\tfor (const feature of features) {\n\t\tconst history = featureHistoryEntries(session, feature.id);\n\t\tconst featureChangedArtifacts = history.flatMap((entry) =>\n\t\t\tentry.artifactsChanged.map((artifact) => artifact.path),\n\t\t);\n\t\tconst featureValidationCommands = uniqueStrings(\n\t\t\thistory.flatMap((entry) =>\n\t\t\t\tentry.validationRun.map((validation) => validation.command),\n\t\t\t),\n\t\t);\n\t\tconst hasChangedArtifacts = featureChangedArtifacts.length > 0;\n\t\tconst matchingValidation = feature.verification.some((plannedCheck) =>\n\t\t\tfeatureValidationCommands.some((command) => {\n\t\t\t\tconst normalizedCommand = command.toLowerCase();\n\t\t\t\tconst normalizedPlannedCheck = plannedCheck.toLowerCase();\n\t\t\t\treturn (\n\t\t\t\t\tnormalizedCommand.includes(normalizedPlannedCheck) ||\n\t\t\t\t\tnormalizedPlannedCheck.includes(normalizedCommand)\n\t\t\t\t);\n\t\t\t}),\n\t\t);\n\t\tif (\n\t\t\thasChangedArtifacts &&\n\t\t\tfeature.verification.length > 0 &&\n\t\t\tfeatureValidationCommands.length > 0 &&\n\t\t\t!matchingValidation\n\t\t) {\n\t\t\tdiagnostics.push({\n\t\t\t\tid: \"feature_validation_not_matched_to_plan\",\n\t\t\t\tseverity: \"warn\",\n\t\t\t\tfeatureId: feature.id,\n\t\t\t\tsummary: `Feature '${feature.id}' has changed artifacts, but recorded validation does not match the planned verification commands.`,\n\t\t\t\tremediation:\n\t\t\t\t\t\"Run the planned targeted check, update the plan through reset/replan, or explain why a different command covers the same behavior.\",\n\t\t\t});\n\t\t}\n\t}\n\n\tif (\n\t\tfeatures.some((feature) => {\n\t\t\tconst targets = featureContextTargets(feature);\n\t\t\treturn (\n\t\t\t\ttargets.some(isBroadContextTarget) &&\n\t\t\t\t!targets.some((target) => !isBroadContextTarget(target))\n\t\t\t);\n\t\t})\n\t) {\n\t\tdiagnostics.push({\n\t\t\tid: \"broad_target_without_narrowed_scope\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary:\n\t\t\t\t\"At least one feature uses a broad planned target without an obviously narrowed review scope.\",\n\t\t\tremediation:\n\t\t\t\t\"Name the expected files, directories, or reviewScope surfaces so changed artifacts can be compared to intent.\",\n\t\t});\n\t}\n\n\tif (\n\t\tworkflowProfile === \"bugfix\" &&\n\t\tfeatures.some(\n\t\t\t(feature) =>\n\t\t\t\t!feature.verification.some((check) =>\n\t\t\t\t\t/(test|spec|repro|regression)/i.test(check),\n\t\t\t\t),\n\t\t)\n\t) {\n\t\tdiagnostics.push({\n\t\t\tid: \"bugfix_profile_missing_regression_validation\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary:\n\t\t\t\t\"Bugfix workflow profile expects regression-oriented validation in the feature plan.\",\n\t\t\tremediation:\n\t\t\t\t\"Record the failing/regression test, reproduction command, or targeted check that proves the bug is fixed.\",\n\t\t});\n\t}\n\n\tif (\n\t\tworkflowProfile === \"release\" &&\n\t\tfeatures.some(\n\t\t\t(feature) =>\n\t\t\t\t!feature.verification.some((check) =>\n\t\t\t\t\t/check|smoke|pack|release/i.test(check),\n\t\t\t\t),\n\t\t)\n\t) {\n\t\tdiagnostics.push({\n\t\t\tid: \"release_profile_missing_release_validation\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary:\n\t\t\t\t\"Release workflow profile expects release, smoke, pack, or full-check validation in the plan.\",\n\t\t\tremediation:\n\t\t\t\t\"Record the release hygiene, smoke, packaging, or broad validation command before treating the session as release-ready.\",\n\t\t});\n\t}\n\n\tif (\n\t\tworkflowProfile === \"review\" &&\n\t\tfeatures.some((feature) => (feature.reviewScope ?? []).length === 0)\n\t) {\n\t\tdiagnostics.push({\n\t\t\tid: \"review_profile_missing_review_scope\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary:\n\t\t\t\t\"Review workflow profile expects explicit reviewScope entries for the surfaces under review.\",\n\t\t\tremediation:\n\t\t\t\t\"Record the files, domains, workflows, or contracts the review is expected to inspect.\",\n\t\t});\n\t}\n\n\tif (\n\t\t(workflowProfile === \"migration\" || workflowProfile === \"refactor\") &&\n\t\tsession.plan &&\n\t\tsession.plan.architectureDecisions.length === 0\n\t) {\n\t\tdiagnostics.push({\n\t\t\tid:\n\t\t\t\tworkflowProfile === \"migration\"\n\t\t\t\t\t? \"migration_profile_missing_migration_decisions\"\n\t\t\t\t\t: \"refactor_profile_missing_invariant_context\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: `${workflowProfile} workflow profile expects architecture decisions or invariants to be recorded.`,\n\t\t\tremediation:\n\t\t\t\t\"Record the compatibility, migration, or behavior-preservation constraints that review should protect.\",\n\t\t});\n\t}\n\n\treturn diagnostics;\n}\n",
|
|
34
|
+
"import type { Feature, Session } from \"../schema\";\nimport { featureContextTargets } from \"./facts\";\nimport type {\n\tContextDiagnostic,\n\tContextQualityCheck,\n\tContextQualityCheckStatus,\n\tContextQualityProjection,\n\tContextTraceabilityProjection,\n} from \"./types\";\n\nexport function buildContextQualityProjection(\n\tsession: Session,\n\tfeatures: Feature[],\n\tdiagnostics: ContextDiagnostic[],\n\ttraceability: ContextTraceabilityProjection,\n): ContextQualityProjection {\n\tconst hasFeatures = features.length > 0;\n\tconst check = (\n\t\tid: string,\n\t\tstatus: ContextQualityCheckStatus,\n\t\tweight: number,\n\t\tsummary: string,\n\t): ContextQualityCheck => ({ id, status, weight, summary });\n\tconst diagnosticsById = new Set(\n\t\tdiagnostics.map((diagnostic) => diagnostic.id),\n\t);\n\tconst checks: ContextQualityCheck[] = [\n\t\tcheck(\n\t\t\t\"repo_profile\",\n\t\t\tsession.planning.repoProfile.length > 0 ? \"pass\" : \"fail\",\n\t\t\t2,\n\t\t\t\"Repo profile records package, command, framework, or convention context.\",\n\t\t),\n\t\tcheck(\n\t\t\t\"research\",\n\t\t\tsession.planning.research.length > 0 ? \"pass\" : \"fail\",\n\t\t\t2,\n\t\t\t\"Planning research names inspected files, docs, tests, configs, or contracts.\",\n\t\t),\n\t\tcheck(\n\t\t\t\"feature_targets\",\n\t\t\thasFeatures &&\n\t\t\t\tfeatures.every((feature) => featureContextTargets(feature).length > 0)\n\t\t\t\t? \"pass\"\n\t\t\t\t: \"fail\",\n\t\t\t2,\n\t\t\t\"Every feature has planned file targets or review scope.\",\n\t\t),\n\t\tcheck(\n\t\t\t\"planned_verification\",\n\t\t\thasFeatures &&\n\t\t\t\tfeatures.every((feature) => feature.verification.length > 0)\n\t\t\t\t? \"pass\"\n\t\t\t\t: \"fail\",\n\t\t\t2,\n\t\t\t\"Every feature has planned verification.\",\n\t\t),\n\t\tcheck(\n\t\t\t\"scope_traceability\",\n\t\t\ttraceability.unplannedChangedArtifacts.length === 0 ? \"pass\" : \"fail\",\n\t\t\t3,\n\t\t\t\"Changed artifacts stay within planned file targets or review scope.\",\n\t\t),\n\t\tcheck(\n\t\t\t\"validation_traceability\",\n\t\t\ttraceability.features.some((feature) =>\n\t\t\t\tfeature.gaps.some(\n\t\t\t\t\t(gap) => gap.id === \"feature_changed_without_validation\",\n\t\t\t\t),\n\t\t\t)\n\t\t\t\t? \"fail\"\n\t\t\t\t: diagnosticsById.has(\"feature_validation_not_matched_to_plan\")\n\t\t\t\t\t? \"warn\"\n\t\t\t\t\t: \"pass\",\n\t\t\t3,\n\t\t\t\"Changed artifacts have recorded validation evidence aligned to the plan.\",\n\t\t),\n\t\tcheck(\n\t\t\t\"context_specificity\",\n\t\t\tdiagnosticsById.has(\"broad_target_without_narrowed_scope\")\n\t\t\t\t? \"warn\"\n\t\t\t\t: \"pass\",\n\t\t\t1,\n\t\t\t\"Planned targets are specific enough for reviewable handoff.\",\n\t\t),\n\t];\n\tconst totalWeight = checks.reduce((total, item) => total + item.weight, 0);\n\tconst earnedWeight = checks.reduce((total, item) => {\n\t\tif (item.status === \"pass\") return total + item.weight;\n\t\tif (item.status === \"warn\") return total + item.weight / 2;\n\t\treturn total;\n\t}, 0);\n\tconst score =\n\t\ttotalWeight === 0 ? 100 : Math.round((earnedWeight / totalWeight) * 100);\n\treturn {\n\t\tscore,\n\t\trating: score >= 85 ? \"strong\" : score >= 65 ? \"adequate\" : \"weak\",\n\t\tchecks,\n\t};\n}\n",
|
|
35
|
+
"import type { Feature, Session } from \"../schema\";\nimport type {\n\tContextDiagnostic,\n\tContextTraceabilityProjection,\n\tWorkflowReadinessProjection,\n} from \"./types\";\n\nfunction diagnosticSummary(\n\tdiagnostic: ContextDiagnostic,\n): WorkflowReadinessProjection[\"blocking\"][number] {\n\treturn {\n\t\tid: diagnostic.id,\n\t\t...(diagnostic.featureId ? { featureId: diagnostic.featureId } : {}),\n\t\tsummary: diagnostic.summary,\n\t\tremediation: diagnostic.remediation,\n\t};\n}\n\nfunction warningSummary(\n\tdiagnostic: ContextDiagnostic,\n): WorkflowReadinessProjection[\"warnings\"][number] {\n\treturn {\n\t\tid: diagnostic.id,\n\t\t...(diagnostic.featureId ? { featureId: diagnostic.featureId } : {}),\n\t\tsummary: diagnostic.summary,\n\t};\n}\n\nexport function buildWorkflowReadinessProjection(\n\tsession: Session,\n\tfeatures: Feature[],\n\tdiagnostics: ContextDiagnostic[],\n\ttraceability: ContextTraceabilityProjection,\n): WorkflowReadinessProjection {\n\tconst warnings = diagnostics.map(warningSummary);\n\tconst contextBlockingDiagnostics = diagnostics.filter((diagnostic) => {\n\t\tif (diagnostic.id === \"changed_artifacts_outside_planned_context\") {\n\t\t\treturn true;\n\t\t}\n\t\tif (!session.plan || session.approval === \"pending\") {\n\t\t\treturn diagnostic.severity === \"warn\";\n\t\t}\n\t\tconst activeFeatureId = session.execution.activeFeatureId;\n\t\treturn (\n\t\t\tdiagnostic.severity === \"warn\" &&\n\t\t\tBoolean(activeFeatureId) &&\n\t\t\tdiagnostic.featureId === activeFeatureId\n\t\t);\n\t});\n\tconst scopeDriftGaps = traceability.features.flatMap((feature) =>\n\t\tfeature.gaps\n\t\t\t.filter((gap) => gap.id === \"feature_changed_artifacts_outside_scope\")\n\t\t\t.map((gap) => ({\n\t\t\t\tid: gap.id,\n\t\t\t\tfeatureId: feature.id,\n\t\t\t\tsummary: gap.summary,\n\t\t\t\tremediation: gap.remediation,\n\t\t\t})),\n\t);\n\tconst validationBlockingGaps = traceability.features.flatMap((feature) =>\n\t\tfeature.gaps\n\t\t\t.filter((gap) => gap.id === \"feature_changed_without_validation\")\n\t\t\t.map((gap) => ({\n\t\t\t\tid: gap.id,\n\t\t\t\tfeatureId: feature.id,\n\t\t\t\tsummary: gap.summary,\n\t\t\t\tremediation: gap.remediation,\n\t\t\t})),\n\t);\n\tconst reviewBlockingGaps = traceability.features.flatMap((feature) =>\n\t\tfeature.gaps\n\t\t\t.filter(\n\t\t\t\t(gap) =>\n\t\t\t\t\tgap.id === \"completed_feature_missing_feature_review\" ||\n\t\t\t\t\tgap.id === \"strict_review_feature_missing_approval\",\n\t\t\t)\n\t\t\t.map((gap) => ({\n\t\t\t\tid: gap.id,\n\t\t\t\tfeatureId: feature.id,\n\t\t\t\tsummary: gap.summary,\n\t\t\t\tremediation: gap.remediation,\n\t\t\t})),\n\t);\n\tif (contextBlockingDiagnostics.length > 0) {\n\t\treturn {\n\t\t\tstate: \"blocked_by_context\",\n\t\t\tblocking: [\n\t\t\t\t...contextBlockingDiagnostics.map(diagnosticSummary),\n\t\t\t\t...scopeDriftGaps,\n\t\t\t],\n\t\t\twarnings,\n\t\t\tnextAction:\n\t\t\t\t\"Resolve or explicitly account for the context diagnostics before relying on the next workflow phase.\",\n\t\t};\n\t}\n\n\tif (scopeDriftGaps.length > 0) {\n\t\treturn {\n\t\t\tstate: \"blocked_by_context\",\n\t\t\tblocking: scopeDriftGaps,\n\t\t\twarnings,\n\t\t\tnextAction:\n\t\t\t\t\"Resolve changed artifacts outside planned targets or review scope before relying on the next workflow phase.\",\n\t\t};\n\t}\n\n\tif (validationBlockingGaps.length > 0) {\n\t\treturn {\n\t\t\tstate: \"blocked_by_validation\",\n\t\t\tblocking: validationBlockingGaps,\n\t\t\twarnings,\n\t\t\tnextAction:\n\t\t\t\t\"Run and record validation that covers the changed artifacts before review or completion claims.\",\n\t\t};\n\t}\n\n\tif (reviewBlockingGaps.length > 0) {\n\t\treturn {\n\t\t\tstate: \"blocked_by_review\",\n\t\t\tblocking: reviewBlockingGaps,\n\t\t\twarnings,\n\t\t\tnextAction:\n\t\t\t\t\"Run the read-only review lane and record the missing reviewer evidence.\",\n\t\t};\n\t}\n\n\tif (session.status === \"completed\") {\n\t\treturn {\n\t\t\tstate: \"release_ready\",\n\t\t\tblocking: [],\n\t\t\twarnings,\n\t\t\tnextAction:\n\t\t\t\t\"Use final review, validation evidence, and release hygiene checks to decide whether to cut a release.\",\n\t\t};\n\t}\n\n\tif (!session.plan || session.approval === \"pending\") {\n\t\treturn {\n\t\t\tstate: \"planning_ready\",\n\t\t\tblocking: [],\n\t\t\twarnings,\n\t\t\tnextAction:\n\t\t\t\t\"Finish the plan, including repo profile, inspected references, feature targets, review scope, and verification.\",\n\t\t};\n\t}\n\n\tconst allFeaturesComplete =\n\t\tfeatures.length > 0 &&\n\t\tfeatures.every((feature) => feature.status === \"completed\");\n\tif (allFeaturesComplete) {\n\t\treturn {\n\t\t\tstate: \"final_review_ready\",\n\t\t\tblocking: [],\n\t\t\twarnings,\n\t\t\tnextAction:\n\t\t\t\t\"Run final review against planned scope, changed artifacts, validation evidence, and remaining gaps.\",\n\t\t};\n\t}\n\n\tconst activeTraceability = traceability.features.find(\n\t\t(feature) => feature.id === session.execution.activeFeatureId,\n\t);\n\tif (\n\t\tactiveTraceability &&\n\t\tactiveTraceability.validationCommands.length > 0 &&\n\t\tactiveTraceability.featureReviewStatus !== \"passed\"\n\t) {\n\t\treturn {\n\t\t\tstate: \"feature_review_ready\",\n\t\t\tblocking: [],\n\t\t\twarnings,\n\t\t\tnextAction:\n\t\t\t\t\"Review the active feature against planned targets, changed artifacts, and validation evidence.\",\n\t\t};\n\t}\n\n\treturn {\n\t\tstate: \"execution_ready\",\n\t\tblocking: [],\n\t\twarnings,\n\t\tnextAction:\n\t\t\t\"Continue the approved plan one feature at a time and keep validation and review evidence aligned with scope.\",\n\t};\n}\n",
|
|
36
|
+
"import { artifactMatchesAnyTarget } from \"../context-paths\";\nimport type { Feature, Session } from \"../schema\";\nimport {\n\tfeatureContextTargets,\n\tfeatureHistoryEntries,\n\tfeatureReviewScope,\n\tlastValue,\n\tplannedContextTargets,\n\tuniqueStrings,\n} from \"./facts\";\nimport type {\n\tContextTraceabilityProjection,\n\tFeatureTraceabilityProjection,\n\tTraceabilityGap,\n} from \"./types\";\n\nfunction featureTraceability(\n\tsession: Session,\n\tfeature: Feature,\n): FeatureTraceabilityProjection {\n\tconst history = featureHistoryEntries(session, feature.id);\n\tconst targets = featureContextTargets(feature);\n\tconst changedArtifacts = uniqueStrings(\n\t\thistory.flatMap((entry) =>\n\t\t\tentry.artifactsChanged.map((artifact) => artifact.path),\n\t\t),\n\t);\n\tconst validationCommandsForFeature = uniqueStrings(\n\t\thistory.flatMap((entry) =>\n\t\t\tentry.validationRun.map((validation) => validation.command),\n\t\t),\n\t);\n\tconst reviewerDecision = lastValue(\n\t\thistory.map((entry) => entry.reviewerDecision ?? null),\n\t);\n\tconst featureReview = lastValue(history.map((entry) => entry.featureReview));\n\tconst finalReview = lastValue(history.map((entry) => entry.finalReview));\n\tconst unplannedChangedArtifacts = changedArtifacts.filter(\n\t\t(path) => !artifactMatchesAnyTarget(path, targets),\n\t);\n\tconst gaps: TraceabilityGap[] = [];\n\n\tif (\n\t\tchangedArtifacts.length > 0 &&\n\t\tvalidationCommandsForFeature.length === 0\n\t) {\n\t\tgaps.push({\n\t\t\tid: \"feature_changed_without_validation\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: `Feature '${feature.id}' changed artifacts but has no recorded validation commands.`,\n\t\t\tremediation:\n\t\t\t\t\"Run and record targeted validation that covers the changed artifacts before review or completion claims.\",\n\t\t});\n\t}\n\n\tif (unplannedChangedArtifacts.length > 0) {\n\t\tgaps.push({\n\t\t\tid: \"feature_changed_artifacts_outside_scope\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: `Feature '${feature.id}' changed artifacts outside its planned targets or review scope: ${unplannedChangedArtifacts.join(\", \")}.`,\n\t\t\tremediation:\n\t\t\t\t\"Review whether the artifacts are legitimate scope expansion; reset/replan when they change the approved plan.\",\n\t\t});\n\t}\n\n\tif (feature.status === \"completed\" && !featureReview) {\n\t\tgaps.push({\n\t\t\tid: \"completed_feature_missing_feature_review\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: `Feature '${feature.id}' is completed but no feature review payload is visible in history.`,\n\t\t\tremediation:\n\t\t\t\t\"Inspect persisted completion evidence and rerun the feature completion path if review evidence is missing.\",\n\t\t});\n\t}\n\n\tif (\n\t\tsession.plan?.deliveryPolicy?.strictReview &&\n\t\tfeature.status === \"completed\" &&\n\t\treviewerDecision?.status !== \"approved\"\n\t) {\n\t\tgaps.push({\n\t\t\tid: \"strict_review_feature_missing_approval\",\n\t\t\tseverity: \"warn\",\n\t\t\tsummary: `Feature '${feature.id}' is completed without an approved recorded reviewer decision under strict review.`,\n\t\t\tremediation:\n\t\t\t\t\"Run the read-only review lane and record an approved feature decision before claiming the session is review-complete.\",\n\t\t});\n\t}\n\n\treturn {\n\t\tid: feature.id,\n\t\ttitle: feature.title,\n\t\tstatus: feature.status,\n\t\tfileTargets: feature.fileTargets,\n\t\treviewScope: featureReviewScope(feature),\n\t\tverification: feature.verification,\n\t\tchangedArtifacts,\n\t\tvalidationCommands: validationCommandsForFeature,\n\t\treviewerDecisionStatus: reviewerDecision?.status ?? null,\n\t\tfeatureReviewStatus: featureReview?.status ?? null,\n\t\tfinalReviewStatus: finalReview?.status ?? null,\n\t\tgaps,\n\t};\n}\n\nexport function buildTraceabilityProjection(\n\tsession: Session,\n\tfeatures: Feature[],\n\tchangedArtifacts: string[],\n\tcommands: string[],\n): ContextTraceabilityProjection {\n\tconst plannedTargets = plannedContextTargets(features);\n\tconst featureTraceabilityRows = features.map((feature) =>\n\t\tfeatureTraceability(session, feature),\n\t);\n\n\treturn {\n\t\tplannedTargetCount: plannedTargets.size,\n\t\tchangedArtifactCount: changedArtifacts.length,\n\t\tvalidationCommandCount: commands.length,\n\t\tunplannedChangedArtifacts: changedArtifacts.filter(\n\t\t\t(path) => !artifactMatchesAnyTarget(path, plannedTargets),\n\t\t),\n\t\treviewedFeatureCount: featureTraceabilityRows.filter(\n\t\t\t(feature) =>\n\t\t\t\tfeature.reviewerDecisionStatus === \"approved\" ||\n\t\t\t\tfeature.featureReviewStatus === \"passed\",\n\t\t).length,\n\t\tfeatures: featureTraceabilityRows,\n\t};\n}\n",
|
|
37
|
+
"import type { ProjectStructureMapProjection } from \"../project-structure-map\";\nimport type { Session } from \"../schema\";\nimport { contextDiagnostics } from \"./diagnostics\";\nimport {\n\tchangedArtifactPaths,\n\tfeatureReviewScope,\n\tvalidationCommands,\n} from \"./facts\";\nimport { buildContextQualityProjection } from \"./quality\";\nimport { buildWorkflowReadinessProjection } from \"./readiness\";\nimport { buildTraceabilityProjection } from \"./traceability\";\nimport type { ContextPackProjection } from \"./types\";\n\nexport function buildContextPackProjection(\n\tsession: Session,\n\toptions: {\n\t\tprojectStructure?: ProjectStructureMapProjection | undefined;\n\t} = {},\n): ContextPackProjection {\n\tconst features = session.plan?.features ?? [];\n\tconst changedArtifacts = changedArtifactPaths(session);\n\tconst commands = validationCommands(session);\n\tconst diagnostics = contextDiagnostics(\n\t\tsession,\n\t\tfeatures,\n\t\tchangedArtifacts,\n\t\tcommands,\n\t);\n\tconst traceability = buildTraceabilityProjection(\n\t\tsession,\n\t\tfeatures,\n\t\tchangedArtifacts,\n\t\tcommands,\n\t);\n\tconst quality = buildContextQualityProjection(\n\t\tsession,\n\t\tfeatures,\n\t\tdiagnostics,\n\t\ttraceability,\n\t);\n\tconst workflowReadiness = buildWorkflowReadinessProjection(\n\t\tsession,\n\t\tfeatures,\n\t\tdiagnostics,\n\t\ttraceability,\n\t);\n\n\treturn {\n\t\tsessionId: session.id,\n\t\tgoal: session.goal,\n\t\tworkflowProfile: session.planning.workflowProfile,\n\t\trepoProfile: session.planning.repoProfile,\n\t\tresearch: session.planning.research,\n\t\trequirements: session.plan?.requirements ?? [],\n\t\tarchitectureDecisions: session.plan?.architectureDecisions ?? [],\n\t\tnotes: [...(session.plan?.notes ?? []), ...session.notes],\n\t\tfeatures: features.map((feature) => ({\n\t\t\tid: feature.id,\n\t\t\ttitle: feature.title,\n\t\t\tstatus: feature.status,\n\t\t\tfileTargets: feature.fileTargets,\n\t\t\treviewScope: featureReviewScope(feature),\n\t\t\tverification: feature.verification,\n\t\t})),\n\t\tchangedArtifacts,\n\t\tvalidationCommands: commands,\n\t\tdiagnostics,\n\t\tquality,\n\t\ttraceability,\n\t\tworkflowReadiness,\n\t\t...(options.projectStructure\n\t\t\t? { projectStructure: options.projectStructure }\n\t\t\t: {}),\n\t};\n}\n",
|
|
38
|
+
"export function toInlineText(value: string): string {\n\treturn value.replace(/\\r?\\n+/g, \" / \").trim();\n}\n\nexport function bulletList(items: string[]): string {\n\tif (items.length === 0) {\n\t\treturn \"- none\";\n\t}\n\n\treturn items.map((item) => `- ${toInlineText(item)}`).join(\"\\n\");\n}\n\nexport function joinSections(sections: string[]): string {\n\treturn `${sections.filter(Boolean).join(\"\\n\\n\")}\\n`;\n}\n\nexport function maybeSection(title: string, items: string[]): string {\n\tif (items.length === 0) {\n\t\treturn \"\";\n\t}\n\n\treturn `## ${title}\\n\\n${bulletList(items)}`;\n}\n\nexport function maybeTitledList(\n\ttitle: string,\n\titems: string[],\n\tlevel = \"##\",\n): string {\n\tif (items.length === 0) {\n\t\treturn \"\";\n\t}\n\n\treturn `${level} ${title}\\n\\n${bulletList(items)}`;\n}\n\nexport function toQuotedBlock(value: string): string {\n\tconst normalized = value.trim();\n\tif (!normalized) {\n\t\treturn \"> none\";\n\t}\n\n\treturn normalized\n\t\t.split(/\\r?\\n/)\n\t\t.map((line) => `> ${line}`)\n\t\t.join(\"\\n\");\n}\n\nexport function maybeQuotedSection(\n\ttitle: string,\n\tvalue: string | null | undefined,\n): string {\n\tif (!value) {\n\t\treturn \"\";\n\t}\n\n\treturn `## ${title}\\n\\n${toQuotedBlock(value)}`;\n}\n\nexport function formatFollowUpLines(\n\titems: Array<{ summary: string; severity?: string | undefined }>,\n): string[] {\n\treturn items.map((item) =>\n\t\titem.severity ? `${item.summary} (${item.severity})` : item.summary,\n\t);\n}\n\nexport function maybeListLine(\n\tlabel: string,\n\titems: string[] | undefined,\n): string[] {\n\treturn items && items.length > 0\n\t\t? [`${label}: ${items.map(toInlineText).join(\", \")}`]\n\t\t: [];\n}\n",
|
|
39
|
+
"import type { ContextPackProjection } from \"../context-pack\";\nimport { buildContextPackProjection } from \"../context-pack\";\nimport type { ProjectStructureMapProjection } from \"../project-structure-map\";\nimport type { Session } from \"../schema\";\nimport {\n\tbulletList,\n\tjoinSections,\n\tmaybeSection,\n\ttoInlineText,\n} from \"./markdown\";\n\nfunction renderProjectStructureMap(\n\tprojectStructure: ProjectStructureMapProjection | undefined,\n): string {\n\tif (!projectStructure || projectStructure.entries.length === 0) {\n\t\treturn \"\";\n\t}\n\treturn `## Project Structure Map\n\n- root: ${toInlineText(projectStructure.rootName)}\n- entries: ${projectStructure.entryCount}\n- truncated: ${projectStructure.truncated ? \"yes\" : \"no\"}\n- ignore sources: ${projectStructure.ignoreSources.join(\", \")}\n- planned targets: ${projectStructure.focus.plannedTargets.length > 0 ? projectStructure.focus.plannedTargets.map(toInlineText).join(\", \") : \"none\"}\n- planned targets redacted: ${projectStructure.focus.plannedTargetsRedacted}\n- changed artifacts: ${projectStructure.focus.changedArtifacts.length > 0 ? projectStructure.focus.changedArtifacts.map(toInlineText).join(\", \") : \"none\"}\n- changed artifacts redacted: ${projectStructure.focus.changedArtifactsRedacted}\n\n${\n\tprojectStructure.entries.length === 0\n\t\t? \"- none\"\n\t\t: bulletList(\n\t\t\t\tprojectStructure.entries.map((entry) =>\n\t\t\t\t\t[\n\t\t\t\t\t\t`${\" \".repeat(Math.max(0, entry.depth - 1))}${entry.kind === \"directory\" ? `${entry.path}/` : entry.path}`,\n\t\t\t\t\t\tentry.role !== \"other\" ? `role: ${entry.role}` : \"\",\n\t\t\t\t\t]\n\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t.join(\" | \"),\n\t\t\t\t),\n\t\t\t)\n}`;\n}\n\nexport function renderContextPackProjectionDoc(\n\tcontextPack: ContextPackProjection,\n): string {\n\treturn joinSections([\n\t\t\"# Flow Context Pack\",\n\t\t`## Summary\n\n- session id: ${contextPack.sessionId}\n- goal: ${toInlineText(contextPack.goal)}\n- workflow profile: ${contextPack.workflowProfile}\n- features: ${contextPack.features.length}\n- diagnostics: ${contextPack.diagnostics.length}\n- context quality: ${contextPack.quality.score}/100 (${contextPack.quality.rating})\n- readiness: ${contextPack.workflowReadiness.state}\n- readiness blocking: ${contextPack.workflowReadiness.blocking.length}\n- readiness warnings: ${contextPack.workflowReadiness.warnings.length}\n- next action: ${toInlineText(contextPack.workflowReadiness.nextAction)}`,\n\t\t`## Signal Authority\n\n- hard gate: runtime refuses the action\n- workflow blocker: \\`workflowReadiness.state\\` values starting with \\`blocked_by_\\` require resolution or explicit justification before proceeding\n- advisory diagnostic: \\`contextQuality\\` and weak-context diagnostics inform review judgment but do not block by themselves\n- factual projection: \\`contextTraceability\\` records persisted plan targets, changed artifacts, validation commands, and review records`,\n\t\t`## Context Quality\n\n${bulletList(\n\tcontextPack.quality.checks.map(\n\t\t(check) =>\n\t\t\t`${check.status} | ${check.id} | weight: ${check.weight} | ${toInlineText(check.summary)}`,\n\t),\n)}`,\n\t\tcontextPack.workflowReadiness.blocking.length > 0\n\t\t\t? `## Workflow Readiness\n\n${bulletList(\n\tcontextPack.workflowReadiness.blocking.map((item) =>\n\t\t[\n\t\t\titem.id,\n\t\t\titem.featureId ? `feature: ${item.featureId}` : \"\",\n\t\t\ttoInlineText(item.summary),\n\t\t\t`remediation: ${toInlineText(item.remediation)}`,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(\" | \"),\n\t),\n)}`\n\t\t\t: \"\",\n\t\tmaybeSection(\"Repo Profile\", contextPack.repoProfile),\n\t\tmaybeSection(\"Research\", contextPack.research),\n\t\tmaybeSection(\"Requirements\", contextPack.requirements),\n\t\tmaybeSection(\"Architecture Decisions\", contextPack.architectureDecisions),\n\t\tmaybeSection(\"Notes\", contextPack.notes),\n\t\trenderProjectStructureMap(contextPack.projectStructure),\n\t\t`## Traceability Summary\n\n- planned targets: ${contextPack.traceability.plannedTargetCount}\n- changed artifacts: ${contextPack.traceability.changedArtifactCount}\n- validation commands: ${contextPack.traceability.validationCommandCount}\n- reviewed features: ${contextPack.traceability.reviewedFeatureCount}\n- unplanned changed artifacts: ${contextPack.traceability.unplannedChangedArtifacts.length > 0 ? contextPack.traceability.unplannedChangedArtifacts.map(toInlineText).join(\", \") : \"none\"}`,\n\t\t`## Feature Context\n\n${\n\tcontextPack.traceability.features.length === 0\n\t\t? \"- none\"\n\t\t: contextPack.traceability.features\n\t\t\t\t.map((feature) =>\n\t\t\t\t\t[\n\t\t\t\t\t\t`### ${feature.id}`,\n\t\t\t\t\t\t`- title: ${toInlineText(feature.title)}`,\n\t\t\t\t\t\t`- status: ${feature.status}`,\n\t\t\t\t\t\t`- file targets: ${feature.fileTargets.length > 0 ? feature.fileTargets.map(toInlineText).join(\", \") : \"none\"}`,\n\t\t\t\t\t\t`- review scope: ${feature.reviewScope.length > 0 ? feature.reviewScope.map(toInlineText).join(\", \") : \"none\"}`,\n\t\t\t\t\t\t`- verification: ${feature.verification.length > 0 ? feature.verification.map(toInlineText).join(\", \") : \"none\"}`,\n\t\t\t\t\t\t`- changed artifacts: ${feature.changedArtifacts.length > 0 ? feature.changedArtifacts.map(toInlineText).join(\", \") : \"none\"}`,\n\t\t\t\t\t\t`- validation commands: ${feature.validationCommands.length > 0 ? feature.validationCommands.map(toInlineText).join(\", \") : \"none\"}`,\n\t\t\t\t\t\t`- reviewer decision: ${feature.reviewerDecisionStatus ?? \"none\"}`,\n\t\t\t\t\t\t`- feature review: ${feature.featureReviewStatus ?? \"none\"}`,\n\t\t\t\t\t\t`- final review: ${feature.finalReviewStatus ?? \"none\"}`,\n\t\t\t\t\t\t`- gaps: ${feature.gaps.length > 0 ? feature.gaps.map((gap) => `${gap.id}: ${toInlineText(gap.summary)}`).join(\"; \") : \"none\"}`,\n\t\t\t\t\t].join(\"\\n\"),\n\t\t\t\t)\n\t\t\t\t.join(\"\\n\\n\")\n}`,\n\t\tmaybeSection(\"Changed Artifacts\", contextPack.changedArtifacts),\n\t\tmaybeSection(\"Validation Commands\", contextPack.validationCommands),\n\t\tcontextPack.diagnostics.length > 0\n\t\t\t? `## Context Diagnostics\n\n${bulletList(\n\tcontextPack.diagnostics.map((diagnostic) =>\n\t\t[\n\t\t\tdiagnostic.severity,\n\t\t\tdiagnostic.id,\n\t\t\tdiagnostic.featureId ? `feature: ${diagnostic.featureId}` : \"\",\n\t\t\ttoInlineText(diagnostic.summary),\n\t\t\t`remediation: ${toInlineText(diagnostic.remediation)}`,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(\" | \"),\n\t),\n)}`\n\t\t\t: \"\",\n\t]);\n}\n\nexport function renderContextPackDoc(\n\tsession: Session,\n\tprojectStructure?: ProjectStructureMapProjection,\n): string {\n\treturn renderContextPackProjectionDoc(\n\t\tbuildContextPackProjection(session, { projectStructure }),\n\t);\n}\n",
|
|
40
|
+
"import type { Session } from \"../schema\";\nimport {\n\tbulletList,\n\tmaybeListLine,\n\tmaybeTitledList,\n\ttoInlineText,\n} from \"./markdown\";\n\nexport type ArtifactRecord = Session[\"artifacts\"][number];\nexport type ValidationRecord =\n\tSession[\"execution\"][\"lastValidationRun\"][number];\nexport type ExecutionHistoryEntry = Session[\"execution\"][\"history\"][number];\nexport type ReviewerDecision = NonNullable<\n\tExecutionHistoryEntry[\"reviewerDecision\"]\n>;\n\nexport type ReviewDetails = {\n\treviewDepth?: string | undefined;\n\treviewedSurfaces?: string[] | undefined;\n\tevidenceSummary?: string | undefined;\n\tvalidationAssessment?: string | undefined;\n\tevidenceRefs?:\n\t\t| {\n\t\t\t\tchangedArtifacts: string[];\n\t\t\t\tvalidationCommands: string[];\n\t\t }\n\t\t| undefined;\n\tintegrationChecks?: string[] | undefined;\n\tregressionChecks?: string[] | undefined;\n\tremainingGaps?: string[] | undefined;\n};\n\nexport function renderArtifactLine(artifact: ArtifactRecord): string {\n\treturn artifact.kind ? `${artifact.path} (${artifact.kind})` : artifact.path;\n}\n\nexport function renderValidationLine(item: ValidationRecord): string {\n\treturn `${item.status} | ${item.command} | ${item.summary}`;\n}\n\nexport function renderExecutionHistoryLine(\n\titem: ExecutionHistoryEntry,\n): string {\n\treturn `${item.recordedAt} | ${item.featureId} | ${item.status} | ${item.summary}`;\n}\n\nexport function renderOutcomeLines(\n\toutcome:\n\t\t| {\n\t\t\t\tkind: string;\n\t\t\t\tcategory?: string | undefined;\n\t\t\t\tsummary?: string | undefined;\n\t\t\t\tresolutionHint?: string | undefined;\n\t\t\t\tretryable?: boolean | undefined;\n\t\t\t\tautoResolvable?: boolean | undefined;\n\t\t\t\tneedsHuman?: boolean | undefined;\n\t\t }\n\t\t| null\n\t\t| undefined,\n): string[] {\n\tif (!outcome) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\t`kind: ${outcome.kind}`,\n\t\t...(outcome.category\n\t\t\t? [`category: ${toInlineText(outcome.category)}`]\n\t\t\t: []),\n\t\t...(outcome.summary ? [`summary: ${toInlineText(outcome.summary)}`] : []),\n\t\t...(outcome.resolutionHint\n\t\t\t? [`resolution hint: ${toInlineText(outcome.resolutionHint)}`]\n\t\t\t: []),\n\t\t...(outcome.retryable !== undefined\n\t\t\t? [`retryable: ${outcome.retryable ? \"yes\" : \"no\"}`]\n\t\t\t: []),\n\t\t...(outcome.autoResolvable !== undefined\n\t\t\t? [`auto resolvable: ${outcome.autoResolvable ? \"yes\" : \"no\"}`]\n\t\t\t: []),\n\t\t...(outcome.needsHuman !== undefined\n\t\t\t? [`needs human: ${outcome.needsHuman ? \"yes\" : \"no\"}`]\n\t\t\t: []),\n\t];\n}\n\nexport function reviewDetailLines(review: ReviewDetails): string[] {\n\treturn [\n\t\t...(review.reviewDepth ? [`review depth: ${review.reviewDepth}`] : []),\n\t\t...maybeListLine(\"reviewed surfaces\", review.reviewedSurfaces),\n\t\t...(review.evidenceSummary\n\t\t\t? [`evidence: ${toInlineText(review.evidenceSummary)}`]\n\t\t\t: []),\n\t\t...(review.validationAssessment\n\t\t\t? [`validation assessment: ${toInlineText(review.validationAssessment)}`]\n\t\t\t: []),\n\t\t...maybeListLine(\n\t\t\t\"evidence changed artifacts\",\n\t\t\treview.evidenceRefs?.changedArtifacts,\n\t\t),\n\t\t...maybeListLine(\n\t\t\t\"evidence validation commands\",\n\t\t\treview.evidenceRefs?.validationCommands,\n\t\t),\n\t\t...maybeListLine(\"integration checks\", review.integrationChecks),\n\t\t...maybeListLine(\"regression checks\", review.regressionChecks),\n\t\t...maybeListLine(\"remaining gaps\", review.remainingGaps),\n\t];\n}\n\nexport function renderReviewerDecisionLines(\n\tdecision: ReviewerDecision,\n): string[] {\n\treturn [\n\t\t`scope: ${decision.scope}`,\n\t\t...(decision.scope === \"feature\"\n\t\t\t? [`feature id: ${decision.featureId}`]\n\t\t\t: reviewDetailLines(decision)),\n\t\t`status: ${decision.status}`,\n\t\t`summary: ${decision.summary}`,\n\t];\n}\n\nexport function renderReviewBlock(\n\ttitle: string,\n\treview:\n\t\t| (ReviewDetails & {\n\t\t\t\tstatus: string;\n\t\t\t\tsummary: string;\n\t\t\t\tblockingFindings: Array<{ summary: string }>;\n\t\t })\n\t\t| undefined,\n): string {\n\tif (!review) {\n\t\treturn \"\";\n\t}\n\n\tconst lines = [\n\t\t`- status: ${review.status}`,\n\t\t...reviewDetailLines(review).map((line) => `- ${line}`),\n\t\t`- summary: ${toInlineText(review.summary)}`,\n\t\t...(review.blockingFindings.length > 0\n\t\t\t? [bulletList(review.blockingFindings.map((item) => item.summary))]\n\t\t\t: []),\n\t];\n\n\treturn `#### ${title}\\n\\n${lines.join(\"\\n\")}`;\n}\n\nexport function renderTitledOutcome(\n\ttitle: string,\n\toutcome: Parameters<typeof renderOutcomeLines>[0],\n\tlevel = \"####\",\n): string {\n\treturn outcome\n\t\t? maybeTitledList(title, renderOutcomeLines(outcome), level)\n\t\t: \"\";\n}\n",
|
|
41
|
+
"import type { Feature, Session } from \"../schema\";\nimport {\n\ttype ExecutionHistoryEntry,\n\trenderArtifactLine,\n\trenderOutcomeLines,\n\trenderReviewBlock,\n\trenderReviewerDecisionLines,\n\trenderValidationLine,\n} from \"./evidence\";\nimport {\n\tbulletList,\n\tformatFollowUpLines,\n\tjoinSections,\n\tmaybeQuotedSection,\n\tmaybeSection,\n\tmaybeTitledList,\n\ttoInlineText,\n\ttoQuotedBlock,\n} from \"./markdown\";\n\nfunction renderFeatureHistoryEntrySections(\n\tentry: ExecutionHistoryEntry,\n): string[] {\n\treturn [\n\t\tmaybeTitledList(\n\t\t\t\"Changed Artifacts\",\n\t\t\tentry.artifactsChanged.map(renderArtifactLine),\n\t\t\t\"####\",\n\t\t),\n\t\tmaybeTitledList(\n\t\t\t\"Validation\",\n\t\t\tentry.validationRun.map(renderValidationLine),\n\t\t\t\"####\",\n\t\t),\n\t\tmaybeTitledList(\n\t\t\t\"Decisions\",\n\t\t\tentry.decisions.map((item) => item.summary),\n\t\t\t\"####\",\n\t\t),\n\t\tentry.reviewerDecision\n\t\t\t? maybeTitledList(\n\t\t\t\t\t\"Reviewer Decision\",\n\t\t\t\t\trenderReviewerDecisionLines(entry.reviewerDecision),\n\t\t\t\t\t\"####\",\n\t\t\t\t)\n\t\t\t: \"\",\n\t\tentry.outcome\n\t\t\t? maybeTitledList(\"Outcome\", renderOutcomeLines(entry.outcome), \"####\")\n\t\t\t: \"\",\n\t\tmaybeTitledList(\n\t\t\t\"Notes\",\n\t\t\tentry.featureResult?.notes?.map((item) => item.note) ?? [],\n\t\t\t\"####\",\n\t\t),\n\t\tmaybeTitledList(\n\t\t\t\"Follow Ups\",\n\t\t\tformatFollowUpLines(entry.featureResult?.followUps ?? []),\n\t\t\t\"####\",\n\t\t),\n\t\trenderReviewBlock(\"Feature Review\", entry.featureReview),\n\t\trenderReviewBlock(\"Final Review\", entry.finalReview),\n\t].filter(Boolean);\n}\n\nfunction renderFeatureHistory(session: Session, feature: Feature): string {\n\tconst entries = session.execution.history.filter(\n\t\t(entry) => entry.featureId === feature.id,\n\t);\n\tif (entries.length === 0) {\n\t\treturn \"## Execution History\\n\\n- none\";\n\t}\n\n\tconst renderedEntries = entries.map((entry) =>\n\t\tjoinSections([\n\t\t\t`### ${entry.recordedAt}\\n\\n- status: ${entry.status}\\n- outcome: ${entry.outcomeKind ?? \"none\"}\\n- summary: ${toInlineText(entry.summary)}\\n- next step: ${entry.nextStep ? toInlineText(entry.nextStep) : \"none\"}`,\n\t\t\t...renderFeatureHistoryEntrySections(entry),\n\t\t]).trimEnd(),\n\t);\n\n\treturn `## Execution History\\n\\n${renderedEntries.join(\"\\n\\n\")}`;\n}\n\nexport function renderFeatureDoc(session: Session, feature: Feature): string {\n\tconst isActive = session.execution.activeFeatureId === feature.id;\n\n\treturn joinSections([\n\t\t`# Feature ${feature.id}`,\n\t\t`## Summary\n\n- title: ${toInlineText(feature.title)}\n- status: ${feature.status}\n- active: ${isActive ? \"yes\" : \"no\"}\n- goal: ${toInlineText(session.goal)}`,\n\t\t`## Description\\n\\n${toQuotedBlock(feature.summary)}`,\n\t\tmaybeQuotedSection(\n\t\t\t\"Latest Runtime Summary\",\n\t\t\tsession.execution.lastFeatureId === feature.id\n\t\t\t\t? session.execution.lastSummary\n\t\t\t\t: null,\n\t\t),\n\t\t`## File Targets\\n\\n${bulletList(feature.fileTargets)}`,\n\t\t`## Verification\\n\\n${bulletList(feature.verification)}`,\n\t\tmaybeSection(\"Depends On\", feature.dependsOn ?? []),\n\t\tmaybeSection(\"Blocked By\", feature.blockedBy ?? []),\n\t\trenderFeatureHistory(session, feature),\n\t]);\n}\n",
|
|
28
42
|
"import {\n\tFLOW_PLAN_COMMAND,\n\tFLOW_PLAN_WITH_GOAL_COMMAND,\n\tFLOW_RUN_COMMAND,\n\tFLOW_STATUS_COMMAND,\n\tflowResetFeatureCommand,\n} from \"./constants\";\nimport {\n\tactiveDecisionGate,\n\tfeatureWouldReachCompletion,\n\tfinalReviewPolicyForPlan,\n} from \"./domain\";\nimport type { Session } from \"./schema\";\n\nexport type SessionOperatorState = {\n\tphase:\n\t\t| \"idle\"\n\t\t| \"planning\"\n\t\t| \"decision\"\n\t\t| \"ready\"\n\t\t| \"executing\"\n\t\t| \"blocked\"\n\t\t| \"completed\";\n\tlane: \"lite\" | \"standard\" | \"strict\";\n\tlaneReason: string;\n\tblocker: string | null;\n\treason: string;\n\tnextStep: string;\n\tnextCommand: string;\n};\n\nexport function deriveExecutionLane(session: Session | null): {\n\tlane: SessionOperatorState[\"lane\"];\n\tlaneReason: string;\n} {\n\tif (!session?.plan) {\n\t\treturn {\n\t\t\tlane: \"lite\",\n\t\t\tlaneReason:\n\t\t\t\t\"Flow can stay in the lite lane until a non-trivial plan or risk signal appears.\",\n\t\t};\n\t}\n\n\tconst decisionGate = activeDecisionGate(session);\n\tconst hasStrictPolicy =\n\t\tBoolean(session.plan.completionPolicy?.minCompletedFeatures) ||\n\t\tsession.plan.deliveryPolicy?.stopRule !== undefined ||\n\t\tsession.plan.deliveryPolicy?.deferAllowed === true ||\n\t\tsession.plan.goalMode !== \"implementation\" ||\n\t\tsession.plan.decompositionPolicy !== \"atomic_feature\";\n\tconst blockedNeedsHuman = Boolean(\n\t\tsession.status === \"blocked\" &&\n\t\t\t(session.execution.lastOutcome?.needsHuman ||\n\t\t\t\tsession.execution.lastOutcome?.kind === \"replan_required\"),\n\t);\n\tif (\n\t\tdecisionGate ||\n\t\tsession.planning.replanLog.length > 0 ||\n\t\thasStrictPolicy ||\n\t\tblockedNeedsHuman\n\t) {\n\t\treturn {\n\t\t\tlane: \"strict\",\n\t\t\tlaneReason:\n\t\t\t\t\"Flow detected elevated coordination or recovery risk, so the strict lane is the safest fit.\",\n\t\t};\n\t}\n\n\tif (\n\t\tsession.plan.features.length <= 1 &&\n\t\tsession.planning.research.length === 0 &&\n\t\tsession.planning.decisionLog.length === 0 &&\n\t\tsession.planning.implementationApproach === undefined\n\t) {\n\t\treturn {\n\t\t\tlane: \"lite\",\n\t\t\tlaneReason:\n\t\t\t\t\"This looks like a small single-feature task, so Flow can stay in the lite lane.\",\n\t\t};\n\t}\n\n\treturn {\n\t\tlane: \"standard\",\n\t\tlaneReason:\n\t\t\t\"This session has multi-step work but no elevated risk signals, so the standard lane fits best.\",\n\t};\n}\n\nexport function deriveSessionOperatorState(\n\tsession: Session | null,\n): SessionOperatorState {\n\tconst lane = deriveExecutionLane(session);\n\tif (!session) {\n\t\treturn {\n\t\t\tphase: \"idle\",\n\t\t\tlane: lane.lane,\n\t\t\tlaneReason: lane.laneReason,\n\t\t\tblocker: \"No active Flow session exists for this workspace.\",\n\t\t\treason: \"Flow has not started a tracked session for this workspace yet.\",\n\t\t\tnextStep: \"Start a new Flow session with /flow-plan <goal>.\",\n\t\t\tnextCommand: FLOW_PLAN_WITH_GOAL_COMMAND,\n\t\t};\n\t}\n\n\tconst nextCommand = deriveNextCommand(session);\n\tconst decisionGate = activeDecisionGate(session);\n\tif (decisionGate) {\n\t\treturn {\n\t\t\tphase: \"decision\",\n\t\t\tlane: lane.lane,\n\t\t\tlaneReason: lane.laneReason,\n\t\t\tblocker: decisionGate.question,\n\t\t\treason:\n\t\t\t\t\"A meaningful planning decision is still open, so Flow should pause before continuing execution.\",\n\t\t\tnextStep: decisionGate.recommendation,\n\t\t\tnextCommand,\n\t\t};\n\t}\n\n\tif (session.status === \"planning\") {\n\t\tconst hasPlan = Boolean(session.plan);\n\t\treturn {\n\t\t\tphase: \"planning\",\n\t\t\tlane: lane.lane,\n\t\t\tlaneReason: lane.laneReason,\n\t\t\tblocker: hasPlan\n\t\t\t\t? \"The draft plan is not approved yet.\"\n\t\t\t\t: \"No draft plan exists yet.\",\n\t\t\treason: hasPlan\n\t\t\t\t? \"Planning is still active because execution is gated on reviewing or approving the draft plan.\"\n\t\t\t\t: \"Planning is still active because Flow does not have an execution-ready draft plan yet.\",\n\t\t\tnextStep: hasPlan\n\t\t\t\t? \"Review or refine the draft plan, then approve it when ready.\"\n\t\t\t\t: \"Create or refresh the draft plan for the current goal.\",\n\t\t\tnextCommand,\n\t\t};\n\t}\n\n\tif (session.status === \"blocked\") {\n\t\tconst outcome = session.execution.lastOutcome;\n\t\tconst reviewerDecision = session.execution.lastReviewerDecision;\n\t\treturn {\n\t\t\tphase: \"blocked\",\n\t\t\tlane: lane.lane,\n\t\t\tlaneReason: lane.laneReason,\n\t\t\tblocker:\n\t\t\t\toutcome?.summary ??\n\t\t\t\treviewerDecision?.summary ??\n\t\t\t\tsession.execution.lastSummary ??\n\t\t\t\t\"Flow is blocked and needs recovery before it can continue.\",\n\t\t\treason:\n\t\t\t\t\"The last execution result or review outcome requires recovery before Flow can continue.\",\n\t\t\tnextStep:\n\t\t\t\tsession.execution.lastNextStep ??\n\t\t\t\toutcome?.resolutionHint ??\n\t\t\t\t(outcome?.retryable || outcome?.autoResolvable\n\t\t\t\t\t? \"Address the blocking prerequisite, then retry the feature.\"\n\t\t\t\t\t: \"Inspect the blocker and decide whether to reset, replan, or stop.\"),\n\t\t\tnextCommand,\n\t\t};\n\t}\n\n\tif (session.status === \"ready\" || session.status === \"running\") {\n\t\tconst activeFeature = session.plan?.features.find(\n\t\t\t(feature) => feature.id === session.execution.activeFeatureId,\n\t\t);\n\t\tconst activeFeatureIsFinalPath = Boolean(\n\t\t\tsession.plan &&\n\t\t\t\tactiveFeature &&\n\t\t\t\tfeatureWouldReachCompletion(session.plan, activeFeature.id),\n\t\t);\n\t\tconst finalReviewPolicy = finalReviewPolicyForPlan(session.plan);\n\t\tconst defaultExecutionNextStep = activeFeature\n\t\t\t? activeFeatureIsFinalPath\n\t\t\t\t? `Continue the active feature through broad validation and the ${finalReviewPolicy === \"detailed\" ? \"detailed final cross-feature review\" : \"broad final review\"}.`\n\t\t\t\t: \"Continue the active feature through validation and review.\"\n\t\t\t: \"Run the next approved feature.\";\n\t\treturn {\n\t\t\tphase: session.status === \"running\" ? \"executing\" : \"ready\",\n\t\t\tlane: lane.lane,\n\t\t\tlaneReason: lane.laneReason,\n\t\t\tblocker: null,\n\t\t\treason: activeFeature\n\t\t\t\t? \"An approved feature is active, so Flow should stay in execution.\"\n\t\t\t\t: \"Planning is approved and Flow can run the next feature.\",\n\t\t\tnextStep: session.execution.lastNextStep ?? defaultExecutionNextStep,\n\t\t\tnextCommand,\n\t\t};\n\t}\n\n\treturn {\n\t\tphase: \"completed\",\n\t\tlane: lane.lane,\n\t\tlaneReason: lane.laneReason,\n\t\tblocker: null,\n\t\treason:\n\t\t\t\"The active session is complete, so Flow is no longer holding execution state for it.\",\n\t\tnextStep: \"Start a new goal when you are ready for more work.\",\n\t\tnextCommand,\n\t};\n}\n\nexport function deriveNextCommand(session: Session): string {\n\tif (!session.plan) {\n\t\treturn FLOW_PLAN_WITH_GOAL_COMMAND;\n\t}\n\tif (session.status === \"planning\") {\n\t\treturn FLOW_PLAN_COMMAND;\n\t}\n\tif (session.status === \"ready\" || session.status === \"running\") {\n\t\treturn FLOW_RUN_COMMAND;\n\t}\n\tif (session.status === \"blocked\") {\n\t\tconst lastFeatureId = session.execution.lastFeatureId;\n\t\tconst outcome = session.execution.lastOutcome;\n\n\t\tif (\n\t\t\tlastFeatureId &&\n\t\t\t!outcome?.needsHuman &&\n\t\t\t(outcome?.retryable ||\n\t\t\t\toutcome?.autoResolvable ||\n\t\t\t\toutcome?.kind === \"contract_error\")\n\t\t) {\n\t\t\treturn flowResetFeatureCommand(lastFeatureId);\n\t\t}\n\t}\n\tif (session.status === \"completed\") {\n\t\treturn FLOW_PLAN_WITH_GOAL_COMMAND;\n\t}\n\n\treturn FLOW_STATUS_COMMAND;\n}\n",
|
|
43
|
+
"import {\n\tactiveDecisionGate,\n\tdecisionRequiresPause,\n\tsummarizeCompletion,\n} from \"../domain\";\nimport type { Feature, Session } from \"../schema\";\nimport { deriveNextCommand } from \"../session-operator-state\";\nimport {\n\trenderArtifactLine,\n\trenderExecutionHistoryLine,\n\trenderOutcomeLines,\n\trenderValidationLine,\n} from \"./evidence\";\nimport {\n\tbulletList,\n\tformatFollowUpLines,\n\tjoinSections,\n\tmaybeSection,\n\tmaybeTitledList,\n\ttoInlineText,\n} from \"./markdown\";\n\nfunction renderIndexSummarySection(session: Session): string {\n\tconst reviewerDecision = session.execution.lastReviewerDecision;\n\tconst decisionGate = activeDecisionGate(session);\n\tconst summaryLines = [\n\t\t`- session id: ${session.id}`,\n\t\t`- goal: ${toInlineText(session.goal)}`,\n\t\t`- status: ${session.status}`,\n\t\t`- closure: ${session.closure ? `${session.closure.kind} | ${toInlineText(session.closure.summary)}` : \"open\"}`,\n\t\t`- approval: ${session.approval}`,\n\t\t`- next command: ${deriveNextCommand(session)}`,\n\t\t`- next step: ${session.execution.lastNextStep ? toInlineText(session.execution.lastNextStep) : \"none\"}`,\n\t\t...(decisionGate\n\t\t\t? [\n\t\t\t\t\t`- decision gate: ${decisionGate.status} | ${decisionGate.domain} | ${toInlineText(decisionGate.question)}`,\n\t\t\t\t]\n\t\t\t: []),\n\t\t`- reviewer decision: ${reviewerDecision ? `${reviewerDecision.scope} | ${reviewerDecision.reviewPurpose ?? \"inferred\"} | ${reviewerDecision.status} | ${toInlineText(reviewerDecision.summary)}` : \"none\"}`,\n\t\t`- created: ${session.timestamps.createdAt}`,\n\t];\n\n\treturn `## Summary\n\n${summaryLines.join(\"\\n\")}`;\n}\n\nfunction renderPlanOverviewLines(\n\tsession: Session,\n\tfeatures: Feature[],\n): string[] {\n\tconst plan = session.plan;\n\tconst activeFeature =\n\t\tfeatures.find(\n\t\t\t(feature) => feature.id === session.execution.activeFeatureId,\n\t\t) ?? null;\n\tconst completion = summarizeCompletion(session);\n\tconst completedCount =\n\t\tcompletion?.completedFeatures ??\n\t\tfeatures.filter((feature) => feature.status === \"completed\").length;\n\n\tconst planLines = [\n\t\t`- summary: ${toInlineText(plan?.summary ?? \"No plan yet.\")}`,\n\t\t`- overview: ${toInlineText(plan?.overview ?? \"No plan yet.\")}`,\n\t\t...(session.planning.packageManager\n\t\t\t? [`- package manager: ${session.planning.packageManager}`]\n\t\t\t: []),\n\t\t...(session.planning.packageManagerAmbiguous\n\t\t\t? [\n\t\t\t\t\t\"- package manager evidence: ambiguous (multiple lockfile families detected in the same directory)\",\n\t\t\t\t]\n\t\t\t: []),\n\t\t`- progress: ${completedCount}/${features.length} completed`,\n\t\t`- active feature: ${activeFeature ? activeFeature.id : \"none\"}`,\n\t];\n\n\tif (!completion) {\n\t\treturn planLines;\n\t}\n\n\treturn [\n\t\t...planLines,\n\t\t`- completion target: ${completion.targetCompletedFeatures}/${completion.totalFeatures} features`,\n\t\t`- stop rule: ${plan?.deliveryPolicy?.stopRule ?? \"ship_when_clean\"}`,\n\t\t`- priority mode: ${plan?.deliveryPolicy?.priorityMode ?? \"balanced\"}`,\n\t\t`- final review policy: ${plan?.deliveryPolicy?.finalReviewPolicy ?? \"detailed\"}`,\n\t\t`- defer allowed: ${plan?.deliveryPolicy?.deferAllowed ? \"yes\" : \"no\"}`,\n\t\t`- pending allowed at completion: ${completion.canCompleteWithPendingFeatures ? \"yes\" : \"no\"}`,\n\t\t`- active feature triggers session completion: ${completion.activeFeatureTriggersSessionCompletion ? \"yes\" : \"no\"}`,\n\t];\n}\n\nfunction maybeApproachSection(session: Session): string {\n\tconst approach = session.planning.implementationApproach;\n\tif (!approach) {\n\t\treturn \"\";\n\t}\n\n\treturn joinSections([\n\t\t\"## Implementation Approach\\n\\n\" +\n\t\t\t`- chosen direction: ${toInlineText(approach.chosenDirection)}`,\n\t\tmaybeTitledList(\"Key Constraints\", approach.keyConstraints, \"###\"),\n\t\tmaybeTitledList(\"Validation Signals\", approach.validationSignals, \"###\"),\n\t\tmaybeTitledList(\"Sources\", approach.sources, \"###\"),\n\t]).trimEnd();\n}\n\nfunction maybeDecisionLogSection(session: Session): string {\n\tconst decisions = session.planning.decisionLog;\n\tif (decisions.length === 0) {\n\t\treturn \"\";\n\t}\n\n\treturn `## Decision Log\\n\\n${bulletList(\n\t\tdecisions.map(\n\t\t\t(decision) =>\n\t\t\t\t`${decision.decisionDomain} | ${decision.decisionMode} | pause: ${decisionRequiresPause(decision.decisionMode) ? \"yes\" : \"no\"} | ${toInlineText(decision.question)} | recommended: ${toInlineText(decision.recommendation)} | options: ${decision.options.map((option) => toInlineText(option.label)).join(\", \")}`,\n\t\t),\n\t)}`;\n}\n\nfunction maybeReplanLogSection(session: Session): string {\n\tconst replans = session.planning.replanLog;\n\tif (replans.length === 0) {\n\t\treturn \"\";\n\t}\n\n\treturn `## Replan Log\\n\\n${bulletList(\n\t\treplans.map(\n\t\t\t(replan) =>\n\t\t\t\t`${replan.recordedAt} | ${replan.reason} | ${toInlineText(replan.summary)} | failed assumption: ${toInlineText(replan.failedAssumption)} | adjust: ${toInlineText(replan.recommendedAdjustment)}`,\n\t\t),\n\t)}`;\n}\n\nfunction maybeStackProfileSection(session: Session): string {\n\tconst profile = session.planning.stackProfile;\n\tif (!profile) {\n\t\treturn \"\";\n\t}\n\n\tconst sections: Array<{ label: string; entries: Array<{ name: string }> }> = [\n\t\t{ label: \"languages\", entries: profile.languages },\n\t\t{ label: \"frameworks\", entries: profile.frameworks },\n\t\t{ label: \"runtimes\", entries: profile.runtimes },\n\t\t{ label: \"package managers\", entries: profile.packageManagers },\n\t\t{ label: \"tools\", entries: profile.tools },\n\t];\n\n\tconst lines = sections\n\t\t.map(({ label, entries }) => {\n\t\t\tconst names = entries.map((entry) => entry.name);\n\t\t\treturn names.length > 0 ? `- ${label}: ${names.join(\", \")}` : \"\";\n\t\t})\n\t\t.filter(Boolean);\n\n\treturn lines.length === 0 ? \"\" : `## Stack Profile\\n\\n${lines.join(\"\\n\")}`;\n}\n\nfunction maybeStandardsProfileSection(session: Session): string {\n\tconst profile = session.planning.standardsProfile;\n\tif (!profile) {\n\t\treturn \"\";\n\t}\n\n\tconst lines = [\n\t\t...profile.precedence.map((item) => `- precedence: ${toInlineText(item)}`),\n\t\t...profile.localGuidelines.map(\n\t\t\t(item) => `- local: ${toInlineText(item.title)} | ${item.reference}`,\n\t\t),\n\t\t...profile.externalGuidance.map(\n\t\t\t(item) => `- external: ${toInlineText(item.title)} | ${item.reference}`,\n\t\t),\n\t\t...profile.rules.map((item) => `- rule: ${toInlineText(item.summary)}`),\n\t\t...profile.gaps.map(\n\t\t\t(item) =>\n\t\t\t\t`- gap: ${toInlineText(item.stackItem)} | ${toInlineText(item.reason)} | research: ${item.suggestedResearch.map(toInlineText).join(\", \")}`,\n\t\t),\n\t];\n\n\treturn lines.length === 0\n\t\t? \"\"\n\t\t: `## Standards Profile\\n\\n${lines.join(\"\\n\")}`;\n}\n\nfunction renderPlanSection(session: Session, features: Feature[]): string {\n\tconst plan = session.plan;\n\n\treturn joinSections([\n\t\t`## Plan\n\n${renderPlanOverviewLines(session, features).join(\"\\n\")}`,\n\t\tmaybeSection(\"Requirements\", plan?.requirements ?? []),\n\t\tmaybeSection(\"Architecture Decisions\", plan?.architectureDecisions ?? []),\n\t\tmaybeSection(\"Repo Profile\", session.planning.repoProfile),\n\t\tmaybeStackProfileSection(session),\n\t\tmaybeStandardsProfileSection(session),\n\t\tmaybeSection(\"Research\", session.planning.research),\n\t\tmaybeApproachSection(session),\n\t\tmaybeDecisionLogSection(session),\n\t\tmaybeReplanLogSection(session),\n\t]).trimEnd();\n}\n\nfunction renderFeatureResultDetails(\n\tfeatureResult: Session[\"execution\"][\"lastFeatureResult\"],\n): string {\n\tif (!featureResult) {\n\t\treturn \"\";\n\t}\n\n\tconst sections = [\n\t\tmaybeTitledList(\n\t\t\t\"Notes\",\n\t\t\tfeatureResult.notes?.map((item) => item.note) ?? [],\n\t\t\t\"###\",\n\t\t),\n\t\tmaybeTitledList(\n\t\t\t\"Follow Ups\",\n\t\t\tformatFollowUpLines(featureResult.followUps ?? []),\n\t\t\t\"###\",\n\t\t),\n\t].filter(Boolean);\n\n\treturn joinSections([\n\t\t`## Feature Result\\n\\n- feature id: ${featureResult.featureId}\\n- verification: ${featureResult.verificationStatus ?? \"not_recorded\"}`,\n\t\t...sections,\n\t]).trimEnd();\n}\n\nexport function renderIndexDoc(session: Session): string {\n\tconst features = session.plan?.features ?? [];\n\n\treturn joinSections([\n\t\t\"# Flow Session\",\n\t\trenderIndexSummarySection(session),\n\t\trenderPlanSection(session, features),\n\t\t`## Features\\n\\n${\n\t\t\tfeatures.length === 0\n\t\t\t\t? \"- none\"\n\t\t\t\t: features\n\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t(feature) =>\n\t\t\t\t\t\t\t\t`- ${feature.id} | ${feature.status} | ${toInlineText(feature.title)}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join(\"\\n\")\n\t\t}`,\n\t\tsession.execution.lastOutcome\n\t\t\t? `## Outcome\\n\\n${bulletList(renderOutcomeLines(session.execution.lastOutcome))}`\n\t\t\t: \"\",\n\t\trenderFeatureResultDetails(session.execution.lastFeatureResult),\n\t\tmaybeSection(\"Notes\", session.notes),\n\t\tsession.artifacts.length > 0\n\t\t\t? `## Changed Artifacts\\n\\n${bulletList(session.artifacts.map(renderArtifactLine))}`\n\t\t\t: \"\",\n\t\tsession.execution.lastValidationRun.length > 0\n\t\t\t? `## Last Validation Run\\n\\n${bulletList(session.execution.lastValidationRun.map(renderValidationLine))}`\n\t\t\t: \"\",\n\t\tsession.execution.history.length > 0\n\t\t\t? `## Execution History\\n\\n${bulletList(session.execution.history.map(renderExecutionHistoryLine))}`\n\t\t\t: \"\",\n\t]);\n}\n",
|
|
44
|
+
"import {\n\tmkdir,\n\treaddir,\n\treadFile,\n\trm,\n\tstat,\n\twriteFile,\n} from \"node:fs/promises\";\nimport {\n\tgetContextDocPathFromSessionDir,\n\tgetFeatureDocPathFromSessionDir,\n\tgetFeaturesDocsDirFromSessionDir,\n\tgetIndexDocPathFromSessionDir,\n\tgetSessionDir,\n\ttype LiveSessionLocation,\n} from \"../paths\";\nimport type { ProjectStructureMapProjection } from \"../project-structure-map\";\nimport type { Session } from \"../schema\";\nimport { assertMutableWorkspaceRoot } from \"../workspace-root\";\nimport { renderContextPackDoc } from \"./context-pack-doc\";\nimport { renderFeatureDoc } from \"./feature-doc\";\nimport { renderIndexDoc } from \"./index-doc\";\n\ntype RenderedDoc = {\n\tpath: string;\n\tcontent: string;\n};\nconst preparedFeaturesDocsDirs = new Set<string>();\n\nfunction createContentHash(input: string): string {\n\tlet hash = 2166136261;\n\n\tfor (let index = 0; index < input.length; index += 1) {\n\t\thash ^= input.charCodeAt(index);\n\t\thash = Math.imul(hash, 16777619);\n\t}\n\n\treturn (hash >>> 0).toString(16).padStart(8, \"0\");\n}\n\nasync function writeDocIfChanged(doc: RenderedDoc): Promise<boolean> {\n\tconst nextHash = createContentHash(doc.content);\n\n\ttry {\n\t\tconst previousContent = await readFile(doc.path, \"utf8\");\n\t\tif (createContentHash(previousContent) === nextHash) {\n\t\t\treturn false;\n\t\t}\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code !== \"ENOENT\") {\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tawait writeFile(doc.path, doc.content, \"utf8\");\n\treturn true;\n}\n\nasync function ensureSessionDocDirs(sessionDir: string): Promise<void> {\n\tconst featuresDir = getFeaturesDocsDirFromSessionDir(sessionDir);\n\tif (preparedFeaturesDocsDirs.has(featuresDir)) {\n\t\ttry {\n\t\t\tawait stat(featuresDir);\n\t\t\treturn;\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n\t\t\t\tpreparedFeaturesDocsDirs.delete(featuresDir);\n\t\t\t} else {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\n\tawait mkdir(featuresDir, { recursive: true });\n\tpreparedFeaturesDocsDirs.add(featuresDir);\n}\n\nasync function pruneFeatureDocs(\n\tsessionDir: string,\n\tactiveFeatureIds: Set<string>,\n): Promise<void> {\n\tconst featuresDir = getFeaturesDocsDirFromSessionDir(sessionDir);\n\n\ttry {\n\t\tconst entries = await readdir(featuresDir, { withFileTypes: true });\n\t\tawait Promise.all(\n\t\t\tentries\n\t\t\t\t.filter((entry) => entry.isFile() && entry.name.endsWith(\".md\"))\n\t\t\t\t.filter((entry) => !activeFeatureIds.has(entry.name.slice(0, -3)))\n\t\t\t\t.map((entry) =>\n\t\t\t\t\trm(\n\t\t\t\t\t\tgetFeatureDocPathFromSessionDir(\n\t\t\t\t\t\t\tsessionDir,\n\t\t\t\t\t\t\tentry.name.slice(0, -3),\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tforce: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t);\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code !== \"ENOENT\") {\n\t\t\tthrow error;\n\t\t}\n\t}\n}\n\nexport async function renderSessionDocsAtDir(\n\tsessionDir: string,\n\tsession: Session,\n\toptions: {\n\t\tprojectStructure?: ProjectStructureMapProjection | undefined;\n\t} = {},\n): Promise<void> {\n\tconst features = session.plan?.features ?? [];\n\n\tawait ensureSessionDocDirs(sessionDir);\n\tawait writeDocIfChanged({\n\t\tpath: getIndexDocPathFromSessionDir(sessionDir),\n\t\tcontent: renderIndexDoc(session),\n\t});\n\tawait writeDocIfChanged({\n\t\tpath: getContextDocPathFromSessionDir(sessionDir),\n\t\tcontent: renderContextPackDoc(session, options.projectStructure),\n\t});\n\n\tawait Promise.all(\n\t\tfeatures.map((feature) =>\n\t\t\twriteDocIfChanged({\n\t\t\t\tpath: getFeatureDocPathFromSessionDir(sessionDir, feature.id),\n\t\t\t\tcontent: renderFeatureDoc(session, feature),\n\t\t\t}),\n\t\t),\n\t);\n\tawait pruneFeatureDocs(\n\t\tsessionDir,\n\t\tnew Set(features.map((feature) => feature.id)),\n\t);\n}\n\nexport async function renderSessionDocs(\n\tworktree: string,\n\tsession: Session,\n\tlocation: LiveSessionLocation = \"active\",\n): Promise<void> {\n\tconst mutableWorktree = assertMutableWorkspaceRoot(worktree);\n\tawait renderSessionDocsAtDir(\n\t\tgetSessionDir(mutableWorktree, session.id, location),\n\t\tsession,\n\t);\n}\n",
|
|
29
45
|
"import { z } from \"zod\";\nimport { VALIDATION_STATUSES } from \"./constants\";\n\nconst EvidencePacketValidationStatusSchema = z.enum([\n\t...VALIDATION_STATUSES,\n\t\"not_run\",\n] as const);\n\nconst EvidencePacketValidationRunSchema = z.object({\n\tcommand: z.string().min(1),\n\tstatus: EvidencePacketValidationStatusSchema,\n\tsummary: z.string().min(1),\n});\n\nconst EvidencePacketPurposeSchema = z.enum([\n\t\"planning\",\n\t\"review\",\n\t\"audit\",\n\t\"validation\",\n\t\"general\",\n]);\n\nconst FLOW_CONTEXT_PRODUCER_LANES = [\n\t\"planning\",\n\t\"auto_planning\",\n\t\"execution\",\n\t\"review\",\n] as const;\n\nconst FLOW_CONTEXT_CONSUMER_LANES = [\n\t\"status\",\n\t\"history\",\n\t\"session\",\n\t\"reset\",\n\t\"doctor\",\n\t\"control\",\n] as const;\n\nconst FLOW_CONTEXT_LANES = [\n\t...FLOW_CONTEXT_PRODUCER_LANES,\n\t...FLOW_CONTEXT_CONSUMER_LANES,\n] as const;\n\nconst FlowContextLaneSchema = z.enum(FLOW_CONTEXT_LANES);\n\nexport const EvidencePacketSchema = z\n\t.object({\n\t\tid: z.string().min(1),\n\t\tpurpose: EvidencePacketPurposeSchema.optional(),\n\t\tcontextLane: FlowContextLaneSchema.optional(),\n\t\tsummary: z.string().min(1),\n\t\tsourceRefs: z.array(z.string().min(1)).optional(),\n\t\thighlights: z.array(z.string().min(1)).optional(),\n\t\tselectedContext: z.array(z.string().min(1)).optional(),\n\t\texcludedContext: z.array(z.string().min(1)).optional(),\n\t\tcodemapSummaries: z.array(z.string().min(1)).optional(),\n\t\tsliceSummaries: z.array(z.string().min(1)).optional(),\n\t\trelationshipHypotheses: z.array(z.string().min(1)).optional(),\n\t\tambiguities: z.array(z.string().min(1)).optional(),\n\t\tknownExclusions: z.array(z.string().min(1)).optional(),\n\t\talreadyCoveredFindings: z.array(z.string().min(1)).optional(),\n\t\tvalidationEvidence: z.array(EvidencePacketValidationRunSchema).optional(),\n\t})\n\t.strict()\n\t.readonly();\n\nexport const EvidencePacketArraySchema = z.array(EvidencePacketSchema);\n\nexport type EvidencePacket = z.infer<typeof EvidencePacketSchema>;\n",
|
|
30
46
|
"import { z } from \"zod\";\nimport {\n\tCLOSURE_KINDS,\n\tDECOMPOSITION_POLICIES,\n\tFEATURE_ID_MESSAGE,\n\tFEATURE_ID_PATTERN,\n\tFEATURE_PRIORITIES,\n\tFINAL_REVIEW_POLICIES,\n\tGOAL_MODES,\n\tPRIORITY_MODES,\n\tREPLAN_REASONS,\n\tSTOP_RULES,\n} from \"./constants\";\nimport { EvidencePacketArraySchema } from \"./schema-evidence-packets\";\nimport {\n\tImplementationApproachSchema,\n\tPlanningDecisionSchema,\n\tStackProfileSchema,\n\tStandardsProfileSchema,\n\tWorkflowProfileSchema,\n} from \"./schema-planning-profiles\";\nimport { ReviewScopeTargetSchema } from \"./schema-review-shared\";\n\nconst FeatureStatusSchema = z.enum([\n\t\"pending\",\n\t\"in_progress\",\n\t\"completed\",\n\t\"blocked\",\n]);\nexport const SessionStatusSchema = z.enum([\n\t\"planning\",\n\t\"ready\",\n\t\"running\",\n\t\"blocked\",\n\t\"completed\",\n]);\nexport const ApprovalStatusSchema = z.enum([\"pending\", \"approved\"]);\nconst GoalModeSchema = z.enum(GOAL_MODES);\nconst DecompositionPolicySchema = z.enum(DECOMPOSITION_POLICIES);\nexport const PackageManagerSchema = z.enum([\"npm\", \"pnpm\", \"yarn\", \"bun\"]);\n\nconst FeatureIdSchema = z\n\t.string()\n\t.regex(FEATURE_ID_PATTERN, FEATURE_ID_MESSAGE);\n\nexport const FeatureSchema = z.object({\n\tid: FeatureIdSchema,\n\ttitle: z.string().min(1),\n\tsummary: z.string().min(1),\n\tstatus: FeatureStatusSchema.default(\"pending\"),\n\tpriority: z.enum(FEATURE_PRIORITIES).optional(),\n\tdeferCandidate: z.boolean().optional(),\n\tfileTargets: z.array(z.string().min(1)).default([]),\n\treviewScope: z.array(ReviewScopeTargetSchema).optional(),\n\tverification: z.array(z.string().min(1)).default([]),\n\tdependsOn: z.array(z.string().min(1)).optional(),\n\tblockedBy: z.array(z.string().min(1)).optional(),\n});\n\nconst CompletionPolicySchema = z.object({\n\tminCompletedFeatures: z.number().int().positive().optional(),\n});\n\nconst DeliveryPolicySchema = z.object({\n\tpriorityMode: z.enum(PRIORITY_MODES).default(\"balanced\"),\n\tstopRule: z.enum(STOP_RULES).default(\"ship_when_clean\"),\n\tdeferAllowed: z.boolean().default(false),\n\tfinalReviewPolicy: z.enum(FINAL_REVIEW_POLICIES).default(\"detailed\"),\n\tstrictReview: z.boolean().optional(),\n});\n\nexport const ReplanRecordSchema = z.object({\n\tfeatureId: FeatureIdSchema.nullable().optional(),\n\treason: z.enum(REPLAN_REASONS),\n\tsummary: z.string().min(1),\n\tfailedAssumption: z.string().min(1),\n\trecommendedAdjustment: z.string().min(1),\n\trecordedAt: z.string().min(1),\n});\n\nexport const ReviewFindingPlanningContextSchema = z.object({\n\tfindingRef: z.string().min(1),\n\tsummary: z.string().min(1),\n\tsourceRefs: z.array(z.string().min(1)).min(1),\n});\n\nexport const ClosureSchema = z.object({\n\tkind: z.enum(CLOSURE_KINDS),\n\tsummary: z.string().min(1),\n\trecordedAt: z.string().min(1),\n});\n\nexport const PlanSchema = z.object({\n\tsummary: z.string().min(1),\n\toverview: z.string().min(1),\n\trequirements: z.array(z.string().min(1)).default([]),\n\tarchitectureDecisions: z.array(z.string().min(1)).default([]),\n\tfeatures: z.array(FeatureSchema).min(1),\n\tgoalMode: GoalModeSchema.default(\"implementation\"),\n\tdecompositionPolicy: DecompositionPolicySchema.default(\"atomic_feature\"),\n\tcompletionPolicy: CompletionPolicySchema.optional(),\n\tdeliveryPolicy: DeliveryPolicySchema.optional(),\n\tnotes: z.array(z.string().min(1)).optional(),\n});\n\nexport const PlanningContextSchema = z.object({\n\tworkflowProfile: WorkflowProfileSchema.default(\"default\"),\n\trepoProfile: z.array(z.string().min(1)).default([]),\n\tpackageManager: PackageManagerSchema.optional(),\n\tpackageManagerAmbiguous: z.boolean().default(false),\n\tstackProfile: StackProfileSchema.optional(),\n\tstandardsProfile: StandardsProfileSchema.optional(),\n\tresearch: z.array(z.string().min(1)).default([]),\n\timplementationApproach: ImplementationApproachSchema.optional(),\n\tdecisionLog: z.array(PlanningDecisionSchema).default([]),\n\treplanLog: z.array(ReplanRecordSchema).default([]),\n\treviewFindings: z.array(ReviewFindingPlanningContextSchema).default([]),\n\tevidencePackets: EvidencePacketArraySchema.optional(),\n});\n\nexport const PlanArgsSchema = PlanSchema.omit({\n\tgoalMode: true,\n\tdecompositionPolicy: true,\n})\n\t.extend({\n\t\tgoalMode: GoalModeSchema.optional(),\n\t\tdecompositionPolicy: DecompositionPolicySchema.optional(),\n\t})\n\t.strict();\n\nexport const PlanningContextArgsSchema =\n\tPlanningContextSchema.partial().strict();\n",
|
|
31
47
|
"import { z } from \"zod\";\nimport {\n\tDECISION_DOMAINS,\n\tDECISION_MODES,\n\tWORKFLOW_PROFILES,\n} from \"./constants\";\n\nconst EvidenceConfidenceSchema = z.enum([\"low\", \"medium\", \"high\"]);\n\nexport const WorkflowProfileSchema = z.enum(WORKFLOW_PROFILES);\n\nconst StackProfileEntrySchema = z\n\t.object({\n\t\tname: z.string().min(1),\n\t\tevidenceRefs: z.array(z.string().min(1)).default([]),\n\t\tconfidence: EvidenceConfidenceSchema.default(\"medium\"),\n\t})\n\t.strict();\n\nexport const StackProfileSchema = z\n\t.object({\n\t\tlanguages: z.array(StackProfileEntrySchema).default([]),\n\t\tframeworks: z.array(StackProfileEntrySchema).default([]),\n\t\truntimes: z.array(StackProfileEntrySchema).default([]),\n\t\tpackageManagers: z.array(StackProfileEntrySchema).default([]),\n\t\ttools: z.array(StackProfileEntrySchema).default([]),\n\t})\n\t.strict();\n\nconst StandardsSourceSchema = z\n\t.object({\n\t\ttitle: z.string().min(1),\n\t\tsourceType: z.enum([\"local\", \"official\", \"external\"]),\n\t\treference: z.string().min(1),\n\t\tconfidence: EvidenceConfidenceSchema.default(\"medium\"),\n\t})\n\t.strict();\n\nconst StandardsRuleSchema = z\n\t.object({\n\t\tsummary: z.string().min(1),\n\t\tsourceRefs: z.array(z.string().min(1)).default([]),\n\t\tpriority: z.enum([\"user\", \"local\", \"official\", \"external\"]),\n\t})\n\t.strict();\n\nconst StandardsGapSchema = z\n\t.object({\n\t\tstackItem: z.string().min(1),\n\t\treason: z.string().min(1),\n\t\tsuggestedResearch: z.array(z.string().min(1)).default([]),\n\t})\n\t.strict();\n\nexport const StandardsProfileSchema = z\n\t.object({\n\t\tlocalGuidelines: z.array(StandardsSourceSchema).default([]),\n\t\texternalGuidance: z.array(StandardsSourceSchema).default([]),\n\t\trules: z.array(StandardsRuleSchema).default([]),\n\t\tgaps: z.array(StandardsGapSchema).default([]),\n\t\tprecedence: z.array(z.string().min(1)).default([]),\n\t})\n\t.strict();\n\nexport const ImplementationApproachSchema = z.object({\n\tchosenDirection: z.string().min(1),\n\tkeyConstraints: z.array(z.string().min(1)).default([]),\n\tvalidationSignals: z.array(z.string().min(1)).default([]),\n\tsources: z.array(z.string().min(1)).default([]),\n});\n\nconst PlanningDecisionOptionSchema = z.object({\n\tlabel: z.string().min(1),\n\ttradeoffs: z.array(z.string().min(1)).default([]),\n});\n\nexport const PlanningDecisionSchema = z.object({\n\tquestion: z.string().min(1),\n\tdecisionMode: z.enum(DECISION_MODES).default(\"recommend_confirm\"),\n\tdecisionDomain: z.enum(DECISION_DOMAINS).default(\"architecture\"),\n\toptions: z.array(PlanningDecisionOptionSchema).min(1),\n\trecommendation: z.string().min(1),\n\trationale: z.array(z.string().min(1)).default([]),\n});\n",
|
|
@@ -88,7 +104,7 @@
|
|
|
88
104
|
"import { createFlowLog } from \"./logging\";\nimport { createContextTool } from \"./tool-surface/context-tool\";\nimport { createPlanTools } from \"./tool-surface/plan-tools\";\nimport { createReviewTool } from \"./tool-surface/review-tool\";\nimport { createRunTools } from \"./tool-surface/run-tools\";\nimport { createSessionTool } from \"./tool-surface/session-tool\";\nimport { createStatusTool } from \"./tool-surface/status-tool\";\nimport { OPENCODE_TOOL_NAMES_FROM_REGISTRY } from \"./tool-surface/tool-registry\";\n\nfunction orderProjectedTools<T extends Record<string, unknown>>(tools: T): T {\n\tconst toolNames = new Set(Object.keys(tools));\n\tconst projectedNames = new Set<string>(OPENCODE_TOOL_NAMES_FROM_REGISTRY);\n\tconst missing = OPENCODE_TOOL_NAMES_FROM_REGISTRY.filter(\n\t\t(name) => !toolNames.has(name),\n\t);\n\tconst extra = [...toolNames].filter((name) => !projectedNames.has(name));\n\n\tif (missing.length > 0 || extra.length > 0) {\n\t\tthrow new Error(\n\t\t\t[\n\t\t\t\tmissing.length > 0\n\t\t\t\t\t? `Missing OpenCode registry tool(s): ${missing.join(\", \")}`\n\t\t\t\t\t: null,\n\t\t\t\textra.length > 0\n\t\t\t\t\t? `Unregistered OpenCode tool(s): ${extra.join(\", \")}`\n\t\t\t\t\t: null,\n\t\t\t]\n\t\t\t\t.filter((message): message is string => message !== null)\n\t\t\t\t.join(\"; \"),\n\t\t);\n\t}\n\n\treturn Object.fromEntries(\n\t\tOPENCODE_TOOL_NAMES_FROM_REGISTRY.map((name) => [name, tools[name]]),\n\t) as T;\n}\n\nfunction createCoreTools() {\n\treturn orderProjectedTools({\n\t\t...createStatusTool(),\n\t\t...createContextTool(),\n\t\t...createPlanTools(),\n\t\t...createRunTools(),\n\t\t...createReviewTool(),\n\t\t...createSessionTool(),\n\t});\n}\n\nexport function createTools(ctx: unknown) {\n\tcreateFlowLog(ctx)(\"info\", \"Creating Flow tool surface.\");\n\treturn createCoreTools();\n}\n",
|
|
89
105
|
"import {\n\tresolveFlowPluginVersion,\n\trunFlowStartupSync,\n} from \"../../distribution/skill-sync\";\nimport { scheduleFlowUpdateNotice } from \"../../distribution/update-notice\";\nimport { createConfigHook } from \"./config\";\nimport { createFlowLog } from \"./logging\";\nimport type { Hooks, Plugin } from \"./sdk\";\nimport {\n\tappendOpenCodeCompactCompactingContext,\n\tappendOpenCodeCompactSystemContext,\n} from \"./system-context\";\nimport type { ToolContext } from \"./tool-surface/schemas\";\nimport { createTools } from \"./tools\";\n\nfunction createFlowSystemTransformHook(\n\tctx: Pick<Parameters<Plugin>[0], \"worktree\" | \"directory\">,\n): NonNullable<Hooks[\"experimental.chat.system.transform\"]> {\n\treturn async (_input, output) => {\n\t\tawait appendOpenCodeCompactSystemContext(ctx, output);\n\t};\n}\n\nconst FlowPlugin: Plugin = async (ctx) => {\n\tconst log = createFlowLog(ctx);\n\tlog(\"info\", \"Flow plugin initialized.\");\n\n\tconst pluginVersion = resolveFlowPluginVersion();\n\tawait runFlowStartupSync(pluginVersion, log);\n\t// Best-effort, non-blocking: OpenCode never re-resolves cached plugin\n\t// installs, so tell the user when a newer release exists.\n\tscheduleFlowUpdateNotice(pluginVersion, log);\n\n\treturn {\n\t\tconfig: createConfigHook(ctx),\n\t\ttool: createTools(ctx),\n\t\thooks: {\n\t\t\t\"experimental.chat.system.transform\": createFlowSystemTransformHook(ctx),\n\t\t\t\"experimental.session.compacting\": async (\n\t\t\t\t_input: unknown,\n\t\t\t\tcontext: ToolContext,\n\t\t\t\toutput: { context?: string[]; prompt?: string },\n\t\t\t) => {\n\t\t\t\tawait appendOpenCodeCompactCompactingContext(context, output);\n\t\t\t},\n\t\t},\n\t};\n};\n\nexport default FlowPlugin;\n"
|
|
90
106
|
],
|
|
91
|
-
"mappings": "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Q,aAC3C,iBAAkB,EAAK,kBAAoB,EAAQ,iBACnD,SAAU,GAAmB,EAAQ,UAAY,CAAC,EAAG,EAAK,QAAQ,EAClE,uBACC,EAAK,wBAA0B,EAAQ,uBACxC,YAAa,EAAK,aAAe,EAAQ,aAAe,CAAC,EACzD,UAAW,GAAwB,EAAQ,WAAa,CAAC,EAAG,EAAK,SAAS,EAC1E,eAAgB,GACf,EAAQ,gBAAkB,CAAC,EAC3B,EAAK,cACN,EACA,gBAAiB,GAChB,EAAQ,gBACR,EAAK,eACN,CACD,ECpIM,IAAM,GAAoB,aACpB,EAA8B,oBAC9B,GAAmB,YACnB,EAAsB,eACtB,GAAuB,uBAI7B,IAAM,GAA+B,CAC3C,cACA,eACA,iBACA,oBACA,iBACA,wBACA,qBACA,cACD,EAKa,GAAsB,CAClC,SACA,SACA,kBACA,SACD,EACa,GAAkB,CAAC,SAAU,SAAU,gBAAgB,EACvD,GAAwB,CACpC,SACA,UACA,SACA,cACD,EACa,GAAa,CACzB,iBACA,SACA,gBACD,EACa,GAAyB,CACrC,iBACA,uBACA,YACD,EACa,GAAiB,CAC7B,oBACA,oBACA,gBACD,EACa,GAAmB,CAC/B,eACA,UACA,UACA,QACA,UACD,EACa,GAAoB,CAChC,UACA,SACA,WACA,UACA,SACA,WACD,EACa,GAAqB,CACjC,WACA,YACA,cACD,EACa,GAAiB,CAC7B,eACA,WACA,eACD,EACa,GAAa,CACzB,kBACA,sBACA,yBACD,EACa,GAAwB,CAAC,QAAS,UAAU,EAC5C,GAAwB,CACpC,gBACA,qBACA,kBACA,sBACA,QACA,oBACA,mBACA,qBACA,iBACD,EACa,GAAkB,CAAC,iBAAkB,iBAAiB,EACtD,GAA6B,CACzC,WACA,YACA,SACD,EACa,GAA4B,CACxC,OACA,OACA,SACA,UACA,WACA,QACD,EACa,GAAiB,CAC7B,iBACA,oBACA,oBACA,sBACA,4BACA,qBACD,EACa,GAAgB,CAAC,YAAa,WAAY,WAAW,EACrD,GAAgB,CAC5B,YACA,kBACA,mBACA,uBACA,gBACD,EACa,GAA4B,CACxC,kBACA,mBACA,uBACA,gBACD,E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,UAAW,kCACX,eACC,kNACD,cAAe,gBACf,aAAc,2BACd,iBAAkB,0BAClB,YAAa,EACb,UAAW,GACX,eAAgB,EACjB,CACD,EACA,QAAS,CACR,KAAM,SACN,SAAU,CACT,UAAW,oCACX,eACC,iGACD,cAAe,gBACf,aAAc,2BACd,iBAAkB,4BAClB,YAAa,EACb,UAAW,GACX,eAAgB,EACjB,CACD,CACD,EACA,yBAA0B,CACzB,MAAO,CACN,KAAM,SACN,SAAU,CACT,UAAW,2BACX,eACC,yIACD,cAAe,mBACf,aAAc,4BACd,iBAAkB,0BAClB,YAAa,EACb,UAAW,GACX,eAAgB,EACjB,CACD,EACA,QAAS,CACR,KAAM,SACN,SAAU,CACT,UAAW,8BACX,eACC,mGACD,cAAe,mBACf,aAAc,4BACd,iBAAkB,6BAClB,YAAa,EACb,UAAW,GACX,eAAgB,EACjB,CACD,CACD,EACA,uBAAwB,CACvB,KAAM,QACN,SAAU,CACT,UAAW,yBACX,eACC,kGACD,cAAe,gBACf,aAAc,yBACd,UAAW,GACX,eAAgB,EACjB,CACD,EACA,qBAAsB,CACrB,KAAM,SACN,SAAU,CACT,UAAW,+BACX,eACC,2NACD,cAAe,mBACf,aAAc,sCACd,iBAAkB,uBAClB,YAAa,EACb,UAAW,GACX,eAAgB,EACjB,CACD,EACA,qBAAsB,CACrB,KAAM,QACN,SAAU,CACT,UAAW,uBACX,eACC,sKACD,cAAe,gBACf,aAAc,yBACd,UAAW,GACX,eAAgB,EACjB,CACD,CACD,EAEO,SAAS,EAAuB,CACtC,EACA,EACA,EACA,EACqB,CACrB,IAAM,EAAa,GAAgC,GAC7C,EACL,SAAU,EACP,EACA,EACC,EAAW,MACX,EAAW,QACV,EAAW,EACd,IAAK,EAAS,SAAU,SAAQ,EAChC,EAAS,SACZ,OAAO,EAAS,OAAS,QACtB,GAA0B,EAAW,CAAQ,EAC7C,GAAoB,CAAQ,EC1LzB,SAAS,CAAO,CACtB,EACA,EACA,EACsB,CACtB,MAAO,CACN,GAAI,GACJ,aACI,EAAW,CAAE,UAAS,EAAI,CAAC,KAC3B,EAAU,CAAE,SAAQ,EAAI,CAAC,CAC9B,EAGM,SAAS,CAAU,CAAC,EAA+B,CACzD,MAAO,CAAE,GAAI,GAAM,OAAM,EAGnB,SAAS,EAAc,CAAC,EAA2B,CACzD,MAAO,IACH,EACH,UAAW,IACP,EAAQ,UACX,gBAAiB,KACjB,cAAe,KACf,YAAa,KACb,gBAAiB,KACjB,YAAa,KACb,aAAc,KACd,kBAAmB,KACnB,qBAAsB,KACtB,kBAAmB,CAAC,CACrB,CACD,EC1CD,SAAS,EAAe,CACvB,EAIU,CACV,OAAO,QACN,GACC,EAAO,SAAW,UAClB,EAAO,iBAAiB,SAAW,CACrC,EAGD,SAAS,EAA8B,CACtC,EACA,EACA,EACgB,CAChB,GAAI,CAAC,GAAsC,EAAQ,IAAI,EACtD,OAAO,KAGR,IAAM,EAAW,EAAQ,UAAU,qBACnC,GAAI,CAAC,GAAY,EAAS,SAAW,WACpC,MAAO,+EAER,GAAI,CAAC,EACJ,OAAO,EAAS,QAAU,WAAa,EAAS,YAAc,EAC3D,KACA,+EAEJ,GAAI,EAAS,QAAU,QACtB,MAAO,8FAER,GAAI,EAAS,cAAgB,GAAyB,EAAQ,IAAI,EACjE,MAAO,0IAER,OAAO,KAGR,SAAS,EAAyB,CACjC,EACA,EACgB,CAChB,GAAI,CAAC,EAAO,YACX,OAAO,KAER,GAAI,CAAC,GAAgB,EAAO,WAAW,EACtC,MAAO,gFAER,GACC,EAAO,YAAY,cAAgB,GAAyB,EAAQ,IAAI,EAExE,MAAO,iHAER,OAAO,KAGR,SAAS,EAAmB,CAC3B,EACU,CACV,OACC,EAAc,OAAS,GACvB,EAAc,MAAM,CAAC,IAAS,EAAK,SAAW,QAAQ,EAIxD,SAAS,EAAc,CACtB,EACA,EACA,EACA,EACyB,CACzB,OAAO,EACN,EACA,GAAwB,EAAW,EAAiB,CAAI,CACzD,EAiBM,SAAS,EAAsC,CACrD,EACA,EACA,EACA,EACyB,CACzB,GACC,EAAiB,SAAS,MAC1B,EAAiB,QAAQ,OAAS,YAElC,OAAO,EACN,kFAAkF,EAAiB,QAAQ,OAC5G,EAGD,GAAI,EAAiB,cAAc,SAAW,EAC7C,OAAO,GACN,EACA,EACA,kFACA,oBACD,EAED,GAAI,CAAC,GAAoB,EAAiB,aAAa,EACtD,OAAO,GACN,EACA,EACA,mFACA,oBACD,EAGD,IAAM,EAA0B,GAC/B,EACA,EACA,CACD,EACA,GAAI,EACH,OAAO,GACN,EACA,EACA,EACA,2BACD,EAGD,GAAI,CAAC,GAAmB,EAAiB,kBAAoB,WAC5D,OAAO,GACN,EACA,GACA,yEACA,0BACD,EAED,GAAI,GAAmB,EAAiB,kBAAoB,QAC3D,OAAO,GACN,EACA,GACA,4EACA,0BACD,EAGD,GAAI,CAAC,GAAgB,EAAiB,aAAa,EAClD,OAAO,GACN,EACA,EACA,kFACA,wBACD,EAGD,IAAM,EAAqB,GAC1B,EACA,CACD,EACA,GAAI,EACH,OAAO,GACN,EACA,EACA,EACA,sBACD,EAED,GAAI,GAAmB,CAAC,EAAiB,YACxC,OAAO,GACN,EACA,GACA,mEACA,sBACD,EAGD,OAAO,EAAQ,MAAS,ECrMlB,SAAS,EAAoB,CACnC,EACA,EACU,CACV,IAAM,EAAa,EAAO,EAC1B,MAAO,IACH,EACH,OAAQ,YACR,QAAS,CACR,KAAM,YACN,UACA,YACD,EACA,UAAW,IACP,EAAQ,UACX,gBAAiB,KACjB,YAAa,EACb,gBAAiB,WAClB,EACA,WAAY,IACR,EAAQ,WACX,YAAa,CACd,CACD,EAGD,SAAS,EAAwB,CAChC,EACA,EACY,CACZ,OAAO,EAAS,IAAI,CAAC,IACpB,EAAQ,KAAO,EAAY,IAAK,EAAS,OAAQ,WAAY,EAAI,CAClE,EAGD,SAAS,EAAoB,CAC5B,EACA,EACA,EACY,CACZ,OAAO,EAAS,IAAI,CAAC,IACpB,EAAQ,KAAO,EAAY,IAAK,EAAS,QAAO,EAAI,CACrD,EAGD,SAAS,EAA4B,CACpC,EACA,EACA,EAC4B,CAC5B,IAAM,EAAO,EAAK,KAClB,GAAI,CAAC,EACJ,OAAO,EAAK,sCAAsC,EAEnD,IAAM,EAAwB,GAA4B,CAAI,EAC9D,GAAI,EACH,OAAO,EAAK,CAAqB,EAGlC,IAAM,EAAW,IACb,EACH,SAAU,GAAyB,EAAK,SAAU,CAAS,CAC5D,EACM,EAAc,IAChB,EACH,KAAM,EACN,UAAW,IACP,EAAK,UACR,gBAAiB,IAClB,CACD,EAEA,OAAO,EACN,GAAyB,EAAU,EAAS,QAAQ,EACjD,GAAqB,EAAa,CAAO,EACzC,IAAK,EAAa,OAAQ,OAAQ,CACtC,EAGD,SAAS,EAAmB,CAAC,EAAkB,EAAgC,CAC9E,MAAO,IACH,EACH,OACA,UAAW,IACP,EAAQ,UACX,gBAAiB,IAClB,CACD,EAGD,SAAS,EAA+B,CACvC,EACA,EACA,EACA,EACA,EACU,CACV,MAAO,IACH,GAAoB,EAAM,IACzB,EACH,SAAU,GAAqB,EAAK,SAAU,EAAW,CAAa,CACvE,CAAC,EACD,OAAQ,CACT,EAGD,SAAS,EAA4B,CACpC,EACA,EACA,EACA,EACA,EACU,CACV,IAAM,EAAO,EAAK,KAClB,GAAI,CAAC,EACJ,OAAO,EAGR,GAAI,IAAgB,kBACnB,MAAO,IACH,EACH,KAAM,KACN,OAAQ,WACR,SAAU,UACV,SAAU,IACN,EAAK,SACR,UAAW,EACR,CAAC,GAAG,EAAK,SAAS,UAAW,CAAY,EACzC,EAAK,SAAS,SAClB,EACA,UAAW,IACP,EAAK,UACR,gBAAiB,IAClB,EACA,WAAY,IACR,EAAK,WACR,WAAY,IACb,CACD,EAOD,GAHC,GAAoB,CAAI,EAAE,OAAS,QACnC,CAAC,EAAO,SAAS,aAChB,EAAO,SAAS,WAAa,EAAO,SAAS,gBAE9C,OAAO,GACN,EACA,EACA,EACA,QACA,SACD,EAGD,OAAO,GACN,EACA,EACA,EACA,UACA,SACD,EAGM,SAAS,EAAoB,CACnC,EACA,EACA,EAC4B,CAC5B,GAAI,CAAC,EAAQ,KACZ,OAAO,EAAK,wDAAwD,EAGrE,IAAM,EAAa,EAAO,EACpB,EAAmB,GAAsB,CAAM,EACrD,GAAI,EAAiB,SAAW,KAAM,CACrC,IAAM,EAAkB,GACvB,EAAQ,KACR,CACD,EACM,EAAa,GAClB,EACA,EACA,EACA,CACD,EACA,GAAI,CAAC,EAAW,GACf,OAAO,EAAK,EAAW,QAAS,EAAW,QAAQ,EAGpD,IAAM,EAAO,GACZ,EACA,EACA,EACA,CACD,EACA,OAAO,GAA6B,EAAM,EAAW,EAAO,OAAO,EAGpE,IAAM,EAAe,GACpB,EACA,EACA,CACD,EACA,OAAO,EACN,GACC,GAAmB,EAAS,EAAW,EAAkB,CAAU,EACnE,EACA,EACA,EAAiB,QAAQ,KACzB,CACD,CACD,EClOD,SAAS,EAAiB,CAAC,EAAkB,EAAiC,CAC7E,IAAM,EAAY,EAAQ,WAAa,CAAC,EAClC,EAAY,EAAQ,WAAa,CAAC,EACxC,OACC,EAAU,MAAM,CAAC,IAAO,EAAU,IAAI,CAAE,CAAC,GACzC,EAAU,MAAM,CAAC,IAAO,EAAU,IAAI,CAAE,CAAC,EAQ3C,SAAS,EAAoB,CAC5B,EACA,EACwB,CACxB,IAAM,EAAO,IAAI,IAAI,EAAS,IAAI,CAAC,IAAY,CAAC,EAAQ,GAAI,CAAO,CAAC,CAAC,EAC/D,EAAY,IAAI,IACrB,EACE,OAAO,CAAC,IAAY,EAAQ,SAAW,WAAW,EAClD,IAAI,CAAC,IAAY,EAAQ,EAAE,CAC9B,EAEA,GAAI,EAAa,CAChB,IAAM,EAAU,EAAK,IAAI,CAAW,EACpC,GAAI,CAAC,EACJ,MAAO,CACN,GAAI,GACJ,QAAS,YAAY,yCACrB,OAAQ,iBACT,EAED,GAAI,EAAQ,SAAW,YACtB,MAAO,CACN,GAAI,GACJ,QAAS,YAAY,2BACrB,OAAQ,iBACT,EAED,GAAI,CAAC,GAAkB,EAAS,CAAS,EACxC,MAAO,CACN,GAAI,GACJ,QAAS,YAAY,iEACrB,OAAQ,iBACT,EAGD,MAAO,CAAE,GAAI,GAAM,MAAO,CAAQ,EAGnC,IAAM,EAAW,EAAS,KACzB,CAAC,IACA,EAAQ,SAAW,aAAe,GAAkB,EAAS,CAAS,CACxE,EACA,GAAI,CAAC,EACJ,MAAO,CACN,GAAI,GACJ,QAAS,yDACT,OAAQ,SACT,EAGD,MAAO,CAAE,GAAI,GAAM,MAAO,CAAS,EAGpC,SAAS,EAAqB,CAC7B,EACA,EACY,CACZ,OAAO,EAAS,IAAI,CAAC,IAAY,CAChC,GAAI,EAAQ,KAAO,EAClB,OAAO,EAAQ,SAAW,cACvB,IAAK,EAAS,OAAQ,SAAU,EAChC,EAGJ,MAAO,IAAK,EAAS,OAAQ,aAAc,EAC3C,EAGF,SAAS,EAAQ,CAChB,EACA,EACsD,CACtD,MAAO,CACN,QAAS,IACL,EACH,OAAQ,UACR,UAAW,IACP,EAAQ,UACX,gBAAiB,KACjB,YAAa,EACb,gBAAiB,SAClB,CACD,EACA,QAAS,KACT,OAAQ,CACT,EAGM,SAAS,EAAuB,CACtC,EACA,EACU,CACV,IAAM,EAAkB,EAAQ,UAAU,gBAC1C,GACC,EAAQ,SAAW,WACnB,CAAC,GACA,IAAgB,QAAa,IAAgB,EAE9C,MAAO,GAKR,OAHgB,EAAQ,MAAM,SAAS,KACtC,CAAC,IAAY,EAAQ,KAAO,CAC7B,GACgB,SAAW,cAG5B,SAAS,EAAe,CACvB,EACA,EAKE,CACF,IAAM,EAAO,EAAQ,KACrB,GAAI,CAAC,EACJ,OAAO,EAAK,mCAAmC,EAGhD,IAAM,EAAW,IACb,EACH,SAAU,GAAsB,EAAK,SAAU,CAAS,CACzD,EACM,EAAuB,IACzB,EACH,KAAM,EACN,OAAQ,UACR,UAAW,IACP,EAAQ,UACX,gBAAiB,EACjB,cAAe,EACf,YAAa,oBAAoB,MACjC,gBAAiB,KACjB,qBAAsB,IACvB,CACD,EAEA,OAAO,EAAQ,CACd,QAAS,EACT,QACC,EAAS,SAAS,KAAK,CAAC,IAAY,EAAQ,KAAO,CAAS,GAAK,IACnE,CAAC,EAGK,SAAS,EAAQ,CACvB,EACA,EACA,EAKE,CACF,GAAI,EAAQ,SAAW,YACtB,OAAO,EACN,uEACD,EAED,GAAI,CAAC,EAAQ,MAAQ,EAAQ,WAAa,WACzC,OAAO,EAAK,mCAAmC,EAEhD,IAAM,EAAwB,GAA4B,EAAQ,IAAI,EACtE,GAAI,EACH,OAAO,EAAK,CAAqB,EAElC,GAAI,GAAwB,EAAS,CAAW,EAAG,CAClD,IAAM,EAAkB,EAAQ,UAAU,gBAC1C,OAAO,EAAQ,CACd,UACA,QACC,EAAQ,KAAK,SAAS,KACrB,CAAC,IAAY,EAAQ,KAAO,CAC7B,GAAK,KACN,OAAQ,gBACT,CAAC,EAEF,GAAI,EAAQ,UAAU,gBACrB,OAAO,EACN,YAAY,EAAQ,UAAU,0CAC/B,EAGD,GACC,EAAQ,KAAK,SAAS,MAAM,CAAC,IAAY,EAAQ,SAAW,WAAW,EAEvE,OAAO,EAAQ,CACd,QAAS,EAAc,EAAS,oCAAoC,EACpE,QAAS,KACT,OAAQ,UACT,CAAC,EAGF,IAAM,EAAe,GAAqB,EAAQ,KAAK,SAAU,CAAW,EAC5E,GAAI,CAAC,EAAa,GACjB,OAAO,EAAa,SAAW,kBAC5B,EAAK,EAAa,OAAO,EACzB,EAAQ,GAAS,EAAS,EAAa,OAAO,CAAC,EAGnD,OAAO,GAAgB,EAAS,EAAa,MAAM,EAAE,EC9M/C,SAAS,EAAQ,CACvB,EACA,EAKE,CACF,OAAO,GAAkB,EAAS,EAAa,EAAoB,EAG7D,SAAS,EAAW,CAC1B,EACA,EAC4B,CAC5B,GAAI,CAAC,EAAQ,KACZ,OAAO,EAAK,wDAAwD,EAErE,GAAI,CAAC,EAAQ,UAAU,gBACtB,OAAO,EAAK,yCAAyC,EAEtD,GAAI,EAAO,cAAc,YAAc,EAAQ,UAAU,gBACxD,OAAO,EACN,0BAA0B,EAAO,cAAc,6CAA6C,EAAQ,UAAU,mBAC/G,EAGD,OAAO,GACN,EACA,EAAQ,UAAU,gBAClB,CACD,ECLD,SAAS,EAAa,CAAC,EAAiC,CACvD,IAAM,EAAW,CAAC,GAAG,EAAU,QAAQ,EAAE,OACxC,CAAC,IAAoD,IAAY,MAClE,EAEA,MAAO,CACN,QAAS,EAAU,QACnB,SAAU,EAAU,SACpB,aAAc,CAAC,GAAI,EAAU,cAAgB,CAAC,CAAE,EAChD,sBAAuB,CAAC,GAAI,EAAU,uBAAyB,CAAC,CAAE,EAClE,SAAU,EAAU,UAAY,iBAChC,oBAAqB,EAAU,qBAAuB,iBACtD,iBAAkB,EAAU,iBAC5B,eAAgB,EAAU,eACvB,CACA,aAAc,EAAU,eAAe,cAAgB,WACvD,SAAU,EAAU,eAAe,UAAY,kBAC/C,aAAc,EAAU,eAAe,cAAgB,GACvD,kBACC,EAAU,eAAe,mBAAqB,cAC3C,EAAU,eAAe,eAAiB,GAC3C,CAAE,aAAc,EAAK,EACrB,CAAC,CACL,EACC,OACH,MAAO,EAAU,MAAQ,CAAC,GAAG,EAAU,KAAK,EAAI,OAChD,SAAU,EAAS,IAAI,CAAC,KAAa,CACpC,GAAI,EAAQ,IAAM,GAClB,MAAO,EAAQ,OAAS,GACxB,QAAS,EAAQ,SAAW,GAC5B,YAAa,CAAC,GAAI,EAAQ,aAAe,CAAC,CAAE,KACxC,EAAQ,YAAc,CAAE,YAAa,CAAC,GAAG,EAAQ,WAAW,CAAE,EAAI,CAAC,EACvE,aAAc,CAAC,GAAI,EAAQ,cAAgB,CAAC,CAAE,KAC1C,EAAQ,UAAY,CAAE,UAAW,CAAC,GAAG,EAAQ,SAAS,CAAE,EAAI,CAAC,KAC7D,EAAQ,UAAY,CAAE,UAAW,CAAC,GAAG,EAAQ,SAAS,CAAE,EAAI,CAAC,EACjE,OAAQ,UACR,SAAU,EAAQ,UAAY,YAC9B,eAAgB,EAAQ,gBAAkB,EAC3C,EAAE,CACH,EAGD,SAAS,EAAoB,CAC5B,EACA,EACqC,CACrC,IAAQ,QAAS,EACjB,GAAI,CAAC,EACJ,OAAO,EAAK,EAAS,WAAW,EAEjC,GAAI,EAAQ,SAAW,YAAc,EAAQ,UAAU,gBACtD,OAAO,EAAK,EAAS,aAAa,EAGnC,OAAO,EAAQ,IACX,EACH,KAAM,IACF,EACH,SAAU,CAAC,GAAG,EAAK,QAAQ,CAC5B,CACD,CAAC,EAGK,SAAS,EAAS,CACxB,EACA,EACA,EAC4B,CAC5B,IAAM,EAAO,GAAc,CAAS,EAC9B,EAAe,GAAqB,EAAQ,SAAU,GAAY,CAAC,CAAC,EACpE,EAAiB,GAAkB,CAAI,EAC7C,GAAI,EACH,OAAO,EAAK,CAAc,EAE3B,IAAM,EAA2B,GAChC,EACA,CACD,EACA,GAAI,EACH,OAAO,EAAK,CAAwB,EAErC,IAAM,EAAwB,GAA4B,CAAI,EAC9D,GAAI,EACH,OAAO,EAAK,CAAqB,EAGlC,IAAM,EAAgB,IAClB,EACH,OACA,OAAQ,WACR,SAAU,UACV,QAAS,KACT,WAAY,IACR,EAAQ,WACX,WAAY,KACZ,YAAa,IACd,EACA,MAAO,CAAC,EACR,SAAU,EACV,UAAW,IACP,EAAQ,SACZ,CACD,EACA,OAAO,EAAQ,GAAe,CAAI,CAAC,EAG7B,SAAS,EAA4B,CAC3C,EACA,EACU,CACV,IAAQ,QAAS,EACjB,GACC,CAAC,GACD,EAAQ,WAAa,YACrB,EAAQ,SAAW,SACnB,EAAQ,UAAU,kBAAoB,KAEtC,MAAO,GAER,GAAI,CAAC,GAAc,EAAW,SAAW,EACxC,MAAO,GAER,GAAI,EAAW,SAAW,EAAK,SAAS,OACvC,MAAO,GAGR,IAAM,EAAsB,IAAI,IAAI,CAAU,EAC9C,GAAI,EAAoB,OAAS,EAAW,OAC3C,MAAO,GAGR,IAAM,EAAqB,IAAI,IAC9B,EAAK,SAAS,IAAI,CAAC,IAAY,EAAQ,EAAE,CAC1C,EACA,OACC,EAAoB,OAAS,EAAmB,MAChD,CAAC,GAAG,CAAmB,EAAE,MAAM,CAAC,IAC/B,EAAmB,IAAI,CAAS,CACjC,EAIK,SAAS,EAAW,CAC1B,EACA,EAC4B,CAC5B,GAAI,GAA6B,EAAS,CAAU,EACnD,OAAO,EAAQ,CAAO,EAEvB,GACC,EAAQ,MACR,EAAQ,WAAa,YACrB,EAAQ,SAAW,SACnB,EAAQ,UAAU,kBAAoB,MACtC,GACA,EAAW,OAAS,EAEpB,OAAO,EACN,oFACD,EAGD,IAAM,EAAW,GAAqB,EAAS,CAC9C,YAAa,qCACb,cACC,oHACF,CAAC,EACD,GAAI,CAAC,EAAS,GACb,OAAO,EAGR,IAAM,EAAO,EAAS,MAEtB,GAAI,GAAc,EAAW,OAAS,EAAG,CACxC,IAAM,EAAS,GACd,EAAK,KAAK,SACV,EACA,CAAC,IACA,YAAY,sFACb,EACD,EACA,GAAI,CAAC,EAAO,GACX,OAAO,EAAK,EAAO,KAAK,EAGzB,EAAK,KAAK,SAAW,EAAO,MAC5B,IAAM,EAAwB,GAA4B,EAAK,IAAI,EACnE,GAAI,EACH,OAAO,EAAK,CAAqB,EAInC,OAAO,EAAQ,IACX,EACH,SAAU,WACV,OAAQ,QACR,WAAY,IACR,EAAK,WACR,WAAY,EAAO,CACpB,CACD,CAAC,EAGK,SAAS,EAAkB,CACjC,EACA,EAC4B,CAC5B,IAAM,EAAW,GAAqB,EAAS,CAC9C,YAAa,oCACb,cACC,+FACF,CAAC,EACD,GAAI,CAAC,EAAS,GACb,OAAO,EAER,GAAI,EAAW,SAAW,EACzB,OAAO,EAAK,4DAA4D,EAGzE,IAAM,EAAO,EAAS,MAChB,EAAS,GACd,EAAK,KAAK,SACV,EACA,CAAC,IACA,YAAY,oEACb,EACD,EACA,GAAI,CAAC,EAAO,GACX,OAAO,EAAK,EAAO,KAAK,EAGzB,EAAK,KAAK,SAAW,EAAO,MAC5B,IAAM,EAAwB,GAA4B,EAAK,IAAI,EACnE,GAAI,EACH,OAAO,EAAK,CAAqB,EAElC,OAAO,EAAQ,IACX,GAAe,CAAI,EACtB,SAAU,UACV,OAAQ,UACT,CAAC,ECvQF,SAAS,EAAiB,CACzB,EACA,EACc,CACd,IAAM,EAAa,IAAI,IACnB,EAAU,GAEd,MAAO,EAAS,CACf,EAAU,GACV,QAAW,KAAW,EAAU,CAC/B,GAAI,EAAQ,KAAO,GAAa,EAAW,IAAI,EAAQ,EAAE,EACxD,SAGD,IAAM,EAAe,IAAI,IAAI,CAC5B,GAAI,EAAQ,WAAa,CAAC,EAC1B,GAAI,EAAQ,WAAa,CAAC,CAC3B,CAAC,EACD,GACC,EAAa,IAAI,CAAS,GAC1B,CAAC,GAAG,CAAU,EAAE,KAAK,CAAC,IAAO,EAAa,IAAI,CAAE,CAAC,EAEjD,EAAW,IAAI,EAAQ,EAAE,EACzB,EAAU,IAKb,OAAO,EAGR,SAAS,EAAqB,CAC7B,EACA,EACY,CACZ,OAAO,EAAS,IAAI,CAAC,IACpB,EAAS,IAAI,EAAK,EAAE,EAAI,IAAK,EAAM,OAAQ,SAAU,EAAI,CAC1D,EAGD,SAAS,EAAsB,CAC9B,EACA,EACC,CACD,EAAU,cAAgB,KAC1B,EAAU,kBAAoB,CAAC,EAC/B,EAAU,YAAc,KACxB,EAAU,aAAe,KACzB,EAAU,kBAAoB,KAC9B,EAAU,qBAAuB,KACjC,EAAQ,UAAY,CAAC,EACrB,EAAQ,MAAQ,CAAC,EAGlB,SAAS,EAAiB,CAAC,EAAmB,EAA+B,CAC5E,OAAO,EAAgB,EACpB,kBAAkB,4CAClB,kBAAkB,iBAGtB,SAAS,EAAoC,CAC5C,EACA,EACyB,CACzB,GAAI,CAAC,EAAQ,UAAU,gBACtB,OAAO,EAAK,uCAAuC,EAEpD,GAAI,EAAS,YAAc,EAAQ,UAAU,gBAC5C,OAAO,EACN,8BAA8B,EAAS,6CAA6C,EAAQ,UAAU,mBACvG,EAGD,OAAO,EAAQ,MAAS,EAGzB,SAAS,EAA8B,CACtC,EAC2C,CAC3C,OAAO,EAAS,QAAU,UAG3B,SAAS,EAAyB,CAAC,EAAyB,CAC3D,GAAI,MAAM,QAAQ,CAAK,EACtB,OAAO,EAAM,IAAI,EAAyB,EAE3C,GAAI,GAAS,OAAO,IAAU,SAC7B,OAAO,OAAO,YACb,OAAO,QAAQ,CAAK,EAClB,OAAO,GAAI,KAAgB,IAAe,MAAS,EACnD,KAAK,EAAE,IAAQ,KAAW,EAAK,cAAc,CAAK,CAAC,EACnD,IAAI,EAAE,EAAK,KAAgB,CAC3B,EACA,GAA0B,CAAU,CACrC,CAAC,CACH,EAED,OAAO,EAGR,SAAS,EAA2B,CAAC,EAAoC,CACxE,OAAO,KAAK,UAAU,GAA0B,CAAQ,CAAC,EAG1D,SAAS,EAAsB,CAC9B,EACA,EACU,CACV,OAAO,EACJ,GAA4B,CAAO,IAAM,GAA4B,CAAI,EACzE,GAGG,SAAS,EAAiC,CAChD,EACA,EACU,CACV,OAAO,GACN,EAAQ,UAAU,qBAClB,GAAsB,CAAK,CAC5B,EAGM,SAAS,EAAY,CAC3B,EACA,EAC4B,CAC5B,IAAM,EAAO,EAAQ,KACrB,GAAI,CAAC,EACJ,OAAO,EAAK,mCAAmC,EAIhD,GAAI,CADY,EAAK,SAAS,KAAK,CAAC,IAAS,EAAK,KAAO,CAAS,EAEjE,OAAO,EAAK,YAAY,sCAA8C,EAGvE,IAAM,EAAW,GAAkB,EAAK,SAAU,CAAS,EAC3D,EAAS,IAAI,CAAS,EAEtB,IAAM,EAAW,IACb,EACH,SAAU,GAAsB,EAAK,SAAU,CAAQ,CACxD,EACM,EAAgB,IAClB,EAAQ,UACX,gBACC,EAAQ,UAAU,iBAClB,EAAS,IAAI,EAAQ,UAAU,eAAe,EAC3C,KACA,EAAQ,UAAU,gBACtB,YAAa,GAAkB,EAAW,EAAS,IAAI,EACvD,gBAAiB,IAClB,EACM,EAAgB,IAClB,EACH,KAAM,EACN,OAAQ,EAAQ,WAAa,WAAa,QAAU,WACpD,QAAS,KACT,UAAW,EACX,WAAY,IACR,EAAQ,WACX,YAAa,IACd,CACD,EAEA,GACC,EAAQ,UAAU,eAClB,EAAS,IAAI,EAAQ,UAAU,aAAa,EAE5C,GAAuB,EAAK,UAAW,CAAI,EAG5C,OAAO,EAAQ,CAAI,EAGb,SAAS,EAAsB,CACrC,EACA,EAC4B,CAC5B,IAAM,EAAe,GAA8B,EAAS,CAAK,EACjE,GAAI,EACH,OAAO,EAAK,CAAY,EAGzB,IAAM,EAAW,GAAsB,CAAK,EAE5C,GAAI,GAA+B,CAAQ,EAAG,CAC7C,IAAM,EAAa,GAAqC,EAAS,CAAQ,EACzE,GAAI,CAAC,EAAW,GACf,OAAO,EAIT,GAAI,GAAkC,EAAS,CAAK,EACnD,OAAO,EAAQ,CAAO,EAGvB,OAAO,EAAQ,IACX,EACH,UAAW,IACP,EAAQ,UACX,qBAAsB,EACtB,YAAa,EAAS,OACvB,CACD,CAAC,ECpNK,SAAS,EAA8B,CAC7C,EAC8B,CAC9B,MAAO,CACN,MAAO,UACP,UAAW,EAAS,UACpB,OAAQ,EAAS,OACjB,QAAS,EAAS,QAClB,iBAAkB,EAAS,kBAAoB,CAAC,EAChD,UAAW,EAAS,WAAa,CAAC,EAClC,oBAAqB,EAAS,qBAAuB,CAAC,KAClD,EAAS,cACV,CAAE,cAAe,EAAS,aAAc,EACxC,CAAC,CACL,EAGM,SAAS,EAA4B,CAC3C,EAC8B,CAC9B,MAAO,CACN,MAAO,QACP,OAAQ,EAAS,OACjB,QAAS,EAAS,QAClB,YAAa,EAAS,YACtB,iBAAkB,EAAS,kBAAoB,CAAC,KAC5C,EAAS,gBACV,CAAE,gBAAiB,EAAS,eAAgB,EAC5C,CAAC,KACA,EAAS,qBACV,CAAE,qBAAsB,EAAS,oBAAqB,EACtD,CAAC,EACJ,aAAc,CACb,iBAAkB,EAAS,cAAc,kBAAoB,CAAC,EAC9D,mBAAoB,EAAS,cAAc,oBAAsB,CAAC,CACnE,EACA,cAAe,EAAS,eAAiB,CAAC,EAC1C,iBAAkB,EAAS,kBAAoB,CAAC,EAChD,UAAW,EAAS,WAAa,CAAC,EAClC,oBAAqB,EAAS,qBAAuB,CAAC,KAClD,EAAS,cACV,CAAE,cAAe,EAAS,aAAc,EACxC,CAAC,CACL,ECfD,IAAM,GAAoC,CACzC,OAAQ,kBACR,QAAS,0CACT,YAAa,CACd,EAEM,GAA2B,CAChC,OAAQ,kBACR,QAAS,iCACT,YAAa,CACd,EAOM,GAGF,CACH,aAAc,CAAE,KAAM,wBAAyB,MAAO,WAAY,EAClE,sBAAuB,CAAE,KAAM,qBAAsB,MAAO,QAAS,EACrE,oBAAqB,CAAE,KAAM,qBAAsB,MAAO,cAAe,CAC1E,EAOA,SAAS,EAAwB,CAChC,EACA,EACA,EACU,CACV,IAAM,EAAa,GAA4B,GACzC,EACL,EAAQ,UAAU,WAAa,+BAC1B,EAAW,EAAQ,UAAU,mBAC7B,EACL,GAAU,OAAS,EAAW,MAC9B,EAAS,kBAAoB,GACzB,EAAS,0BAA4B,GAAK,EAC3C,EACJ,MAAO,IACH,EACH,UAAW,IACP,EAAQ,UACX,mBAAoB,IAChB,EACH,OAAQ,QACR,kBACA,QAAS,EAAQ,WACb,EAAQ,UAAU,eACnB,CAAE,aAAc,EAAQ,SAAS,cAAe,EAChD,CAAC,EACJ,WAAY,EAAO,KACf,EAA2B,EAAI,CAAE,0BAAyB,EAAI,CAAC,CACpE,CACD,EACA,WAAY,IACR,EAAQ,WACX,UAAW,EAAO,CACnB,CACD,EAGD,SAAS,EAAiB,CAAC,EAAgB,CAC1C,OAAO,GAAiB,CAAK,EAAE,QAGhC,SAAS,EAAa,CAAC,EAAgB,EAAiB,CACvD,MAAO,CACN,OAAQ,KACR,UACA,QAAS,GAAkB,CAAK,CACjC,EAGM,IAAM,GAAgC,CAC5C,0BACA,aACA,eACA,yBACA,uBACA,YACA,eACA,gBACA,wBACA,qBACD,EA6DA,SAAS,EAA2B,CAAC,EAIlC,CACF,OAAO,EAAc,EAAQ,QAAS,IACjC,EAAQ,SAAW,CAAE,SAAU,EAAQ,QAAS,EAAI,CAAC,KACrD,EAAQ,SAAS,UAAU,mBAC5B,CAAE,oBAAqB,EAAQ,QAAQ,UAAU,kBAAmB,EACpE,CAAC,CACL,CAAC,EAGF,SAAS,EAAsB,CAC9B,EACA,EACiC,CACjC,MAAO,CACN,OACA,IAAK,CAAC,IAAY,GAAuB,EAAS,CAAkB,EACpE,WAAY,CAAC,IAAU,EACvB,UAAW,CAAC,IAAU,GAAc,EAAO,6BAA6B,EACxE,cAAe,CAAC,EAAO,IACtB,IAAU,GACV,GAAkC,EAAiB,CAAkB,EACtE,cAAe,CAAC,IACf,GACC,EACA,sDACD,EACD,QAAS,GACT,cAAe,CAAC,EAAS,IACxB,GAAyB,EAAM,EAAS,CAAO,EAChD,4BAA6B,CAC5B,KAAM,oBACP,CACD,EAGD,IAAM,GAA4D,CACjE,uBAAuB,CAAC,EAAc,CACrC,MAAO,CACN,KAAM,0BACN,IAAK,CAAC,IAAY,CACjB,IAAM,EAAU,GACf,EACA,CACD,EACA,GAAI,EACH,OAAO,EAAK,CAAO,EAEpB,IAAM,EAAmB,IACrB,EACH,SAAU,GAAqB,EAAQ,SAAU,CAAY,CAC9D,EACA,OAAO,EAAQ,CAAO,GAEvB,WAAY,CAAC,IAAU,EACvB,UAAW,CAAC,IAAU,GAAc,EAAO,4BAA4B,CACxE,GAGD,UAAU,EAAG,OAAM,YAAY,CAC9B,MAAO,CACN,KAAM,aACN,IAAK,CAAC,IAAY,CACjB,IAAM,EAAU,GAAU,EAAS,IAAK,CAAK,EAAG,CAAQ,EACxD,GAAI,CAAC,EAAQ,GAAI,OAAO,EAExB,GADa,GAAiB,EAAQ,KAAK,EAAE,SAAS,SAAS,OAClD,OAAQ,CACpB,IAAM,EAAW,GAAY,EAAQ,KAAK,EAC1C,GAAI,CAAC,EAAS,GAAI,OAAO,EACzB,OAAO,EAAQ,CAAE,QAAS,EAAS,MAAO,aAAc,EAAK,CAAC,EAE/D,OAAO,EAAQ,CAAE,QAAS,EAAQ,MAAO,aAAc,EAAM,CAAC,GAE/D,WAAY,CAAC,IAAU,EAAM,QAC7B,UAAW,CAAC,EAAO,KAAW,CAC7B,OAAQ,KACR,QAAS,EAAM,aACZ,8EACA,oBACH,aAAc,EAAM,aACpB,QAAS,GAAkB,CAAK,CACjC,GACA,gBAAiB,EAClB,GAGD,sBAAsB,CAAC,EAAU,CAChC,MAAO,CACN,KAAM,yBACN,IAAK,CAAC,IAAY,GAAY,CAAO,EACrC,WAAY,CAAC,IAAU,EACvB,UAAW,CAAC,KAAW,CACtB,OAAQ,KACR,QACC,8EACD,aAAc,GACd,QAAS,GAAkB,CAAK,CACjC,GACA,gBAAiB,EAClB,GAGD,YAAY,EAAG,cAAc,CAC5B,MAAO,CACN,KAAM,eACN,IAAK,CAAC,IAAY,GAAY,EAAS,CAAU,EACjD,WAAY,CAAC,IAAU,EACvB,UAAW,CAAC,IAAU,GAAc,EAAO,gBAAgB,EAC3D,cAAe,CAAC,EAAO,IACtB,IAAU,GACV,GAA6B,EAAiB,CAAU,EACzD,cAAe,CAAC,IACf,GACC,EACA,kDACD,CACF,GAGD,oBAAoB,EAAG,cAAc,CACpC,MAAO,CACN,KAAM,uBACN,IAAK,CAAC,IAAY,GAAmB,EAAS,CAAU,EACxD,WAAY,CAAC,IAAU,EACvB,UAAW,CAAC,IAAU,GAAc,EAAO,sBAAsB,CAClE,GAGD,SAAS,EAAG,aAAa,CACxB,MAAO,CACN,KAAM,YACN,IAAK,CAAC,IAAY,GAAS,EAAS,CAAS,EAC7C,WAAY,CAAC,IAAU,EAAM,QAC7B,UAAW,CAAC,EAAO,IAAU,CAC5B,IAAM,EAAU,GAAiB,CAAK,EACtC,MAAO,CACN,OACC,EAAM,SAAW,WACd,WACA,EAAM,QACL,KACA,UACL,QAAS,EAAQ,QACjB,QAAS,EAAQ,QACjB,QAAS,EAAM,QACf,OAAQ,EAAM,MACf,GAED,cAAe,CAAC,EAAO,IACtB,EAAM,UAAY,GAClB,GAAwB,EAAiB,CAAS,EACnD,cAAe,CAAC,EAAO,IACtB,GACC,EACA,YAAY,EAAM,SAAS,IAAM,yCAClC,EACD,gBAAiB,EAClB,GAGD,YAAY,EAAG,UAAU,CACxB,MAAO,CACN,KAAM,eACN,IAAK,CAAC,IAAY,GAAY,EAAS,CAAM,EAC7C,WAAY,CAAC,IAAU,EACvB,UAAW,CAAC,IAAU,CACrB,IAAM,EAAU,GAAiB,CAAK,EACtC,MAAO,CACN,OAAQ,KACR,QAAS,EAAQ,QACjB,QAAS,EAAQ,OAClB,GAED,QAAS,CAAC,KAAa,CACtB,OAAQ,QACR,QAAS,EAAQ,QACjB,SAAU,EAAQ,YACd,EAAQ,SAAS,UAAU,mBAC5B,CACA,oBAAqB,EAAQ,QAAQ,UAAU,kBAChD,EACC,CAAC,CACL,GACA,cAAe,CAAC,EAAS,IACxB,GAAyB,eAAgB,EAAS,CAAO,EAC1D,4BAA6B,CAC5B,KAAM,uBACP,CACD,GAGD,aAAa,EAAG,aAAa,CAC5B,MAAO,CACN,KAAM,gBACN,IAAK,CAAC,IAAY,GAAa,EAAS,CAAS,EACjD,WAAY,CAAC,IAAU,EACvB,UAAW,CAAC,IACX,GAAc,EAAO,kBAAkB,KAAa,EACrD,4BAA6B,EAC9B,GAGD,qBAAqB,EAAG,YAAY,CACnC,OAAO,GACN,wBACA,GAA+B,CAAQ,CACxC,GAGD,mBAAmB,EAAG,YAAY,CACjC,OAAO,GACN,sBACA,GAA6B,CAAQ,CACtC,EAEF,EAEO,SAAS,EAA2D,CAC1E,EACA,EACuD,CACvD,OAAO,GAAyB,GAAM,CAAO,EC5X9C,IAAM,GAAoD,CACzD,mBAAmB,EAAG,CACrB,MAAO,CACN,KAAM,sBACN,IAAK,CAAC,EAAU,IAAY,EAAQ,YAAY,CAAQ,EACxD,UAAW,CAAC,KAAa,CACxB,OAAQ,EAAU,KAAO,kBACzB,SACD,EACD,GAED,oBAAoB,EAAG,CACtB,MAAO,CACN,KAAM,uBACN,IAAK,CAAC,EAAU,IAAY,EAAQ,mBAAmB,CAAQ,EAC/D,UAAW,CAAC,KAAa,CAAE,OAAQ,KAAM,SAAQ,EAClD,GAED,oBAAoB,EAAG,aAAa,CACnC,MAAO,CACN,KAAM,uBACN,IAAK,CAAC,EAAU,IACf,EAAQ,kBAAkB,EAAU,CAAS,EAC9C,UAAW,CAAC,KAAa,CACxB,OAAQ,EAAU,KAAO,kBACzB,SACD,EACD,EAEF,EAEO,SAAS,EAAmD,CAClE,EACA,EACqD,CACrD,OAAO,GAAqB,GAAM,CAAO,ECjE1C,iBAAS,eAAQ,0BACjB,eAAS,mBCDT,kBAAS,iBAAS,eAAY,cAAU,UAAS,mBAE1C,SAAS,EAA6B,CAC5C,EACA,EACW,CACX,IAAM,EAAe,GAAQ,CAAa,EACtC,EAAU,GAA+B,EAAc,CAAc,EACnE,EAAwB,CAAC,EAE/B,MAAO,GAAM,CAEZ,GADA,EAAY,KAAK,CAAO,EACpB,IAAY,EACf,OAAO,EAGR,IAAM,EAAS,GAAQ,CAAO,EAC9B,GAAI,IAAW,EACd,OAAO,EAER,EAAU,GAIZ,SAAS,EAA8B,CACtC,EACA,EACS,CACT,GAAI,CAAC,EACJ,OAAO,EAGR,IAAM,EAAgB,GAAW,CAAc,EAC5C,GAAQ,CAAc,EACtB,GAAQ,EAAc,CAAc,EACvC,OAAO,GAAsB,EAAc,CAAa,EACrD,EACA,EAGJ,SAAS,EAAqB,CAAC,EAAc,EAA4B,CACxE,IAAM,EAAe,GAAS,EAAM,CAAS,EAC7C,OACC,IAAiB,IAChB,IAAiB,MACjB,CAAC,EAAa,WAAW,KAAK,IAAK,GACnC,CAAC,GAAW,CAAY,EDzC3B,IAAM,GAGD,CACJ,CAAE,QAAS,OAAQ,UAAW,CAAC,gBAAgB,CAAE,EACjD,CAAE,QAAS,MAAO,UAAW,CAAC,oBAAqB,qBAAqB,CAAE,EAC1E,CAAE,QAAS,OAAQ,UAAW,CAAC,WAAW,CAAE,EAC5C,CAAE,QAAS,MAAO,UAAW,CAAC,WAAY,WAAW,CAAE,CACxD,EAOA,eAAsB,EAAoB,CACzC,EACA,EACmC,CACnC,QAAW,KAAa,GACvB,EACA,CACD,EAAG,CACF,IAAM,EACL,MAAM,GAAiC,CAAS,EACjD,GAAI,EACH,MAAO,CACN,eAAgB,EAChB,UAAW,EACZ,EAGD,IAAM,EAAoB,MAAM,GAAiC,CAAS,EAC1E,GAAI,EAAkB,WAAa,EAAkB,eACpD,OAAO,EAIT,MAAO,CAAE,UAAW,EAAM,EAG3B,eAAe,EAAgC,CAC9C,EACsC,CACtC,IAAM,EAAe,GAAK,EAAW,cAAc,EACnD,GAAI,CAAE,MAAM,GAAW,CAAY,EAClC,OAGD,GAAI,CACH,IAAM,EAAc,KAAK,MAAM,MAAM,GAAS,EAAc,MAAM,CAAC,EAGnE,OAAO,GAAoB,EAAY,cAAc,EACpD,KAAM,CACP,QAIF,eAAe,EAAgC,CAC9C,EACmC,CACnC,IAAM,EAAmB,IAAI,IAE7B,QAAW,KAAa,GACvB,QAAW,KAAY,EAAU,UAChC,GAAI,MAAM,GAAW,GAAK,EAAW,CAAQ,CAAC,EAAG,CAChD,EAAiB,IAAI,EAAU,OAAO,EACtC,MAKH,GAAI,EAAiB,KAAO,EAC3B,MAAO,CAAE,UAAW,EAAK,EAG1B,IAAM,EAAiB,EAAiB,OAAO,EAAE,KAAK,EAAE,MAGxD,OAAO,IAAmB,OACvB,CAAE,UAAW,EAAM,EACnB,CAAE,iBAAgB,UAAW,EAAM,EAGvC,SAAS,EAAmB,CAAC,EAA4C,CACxE,GAAI,OAAO,IAAU,SACpB,OAGD,IAAM,EAAa,EAAM,KAAK,EAAE,MAAM,GAAG,EAAE,GAC3C,GACC,IAAe,OACf,IAAe,QACf,IAAe,QACf,IAAe,MAEf,OAAO,EAGR,OAGD,eAAe,EAAU,CAAC,EAAkC,CAC3D,GAAI,CAEH,OADA,MAAM,GAAO,CAAM,EACZ,GACN,KAAM,CACP,MAAO,IEtFT,SAAS,EAAmB,CAC3B,EACA,EACA,EACC,CACD,IAAM,EAAY,QAAQ,GAAY,IAAS,EAAS,IAAI,EAE5D,GAAI,CAAC,GAAY,EAAS,SAAW,aAAe,EACnD,OAAO,GAAc,EAAM,CAAQ,EAGpC,MAAO,IACH,EACH,SAAU,GAAqB,EAAS,SAAU,GAAY,CAAC,CAAC,CACjE,EAGM,IAAM,GAAiC,CAC7C,YACA,mBACA,eACD,EAoCM,GAA8D,CACnE,SAAS,EAAG,OAAM,WAAU,YAAW,0BAA0B,CAChE,MAAO,CACN,KAAM,YACN,IAAK,MAAO,EAAU,IAAY,CACjC,OAAO,GACN,EACA,EACA,MAAO,EAAU,IAAgB,CAChC,IAAM,EAAe,GAAQ,GAAU,KACvC,GAAI,CAAC,EACJ,MAAO,CACN,OAAQ,eACR,YACC,GAA0B,CAC5B,EAGD,IAAM,EAA0B,MAAM,GACrC,EACA,CACD,EAEM,EAAU,MAAM,EAAY,iBACjC,GAAoB,EAAU,EAAc,IACvC,GAAY,CAAC,KACb,EAAwB,eACzB,CACA,eAAgB,EAAwB,cACzC,EACC,CAAC,EACJ,wBAAyB,EAAwB,SAClD,CAAC,CACF,EACA,GAAI,CAEH,OADA,MAAM,EAAY,qBAAqB,CAAO,EACvC,CAAE,OAAQ,KAAM,SAAQ,EAC9B,MAAO,EAAO,CACf,MAAO,CACN,OAAQ,KACR,UACA,aAAc,CACb,OAAQ,SACR,MACC,aAAiB,OAAS,EAAM,QAC7B,EAAM,QACN,OAAO,CAAK,CACjB,CACD,GAGH,GAED,UAAW,CAAC,IACX,EAAM,SAAW,eACd,CACA,OAAQ,eACR,QAAS,4CACT,YAAa,EAAM,WACpB,EACC,CACA,OAAQ,EAAM,aAAe,kBAAoB,KACjD,QAAS,oCAAoC,EAAM,QAAQ,UACvD,EAAM,aACP,CACA,kBAAmB,GACnB,aAAc,EAAM,YACrB,EACC,CAAC,EACJ,QAAS,GAAiB,EAAM,OAAO,EAAE,OAC1C,CACJ,GAGD,gBAAgB,EAAG,YAAW,cAAa,sBAAsB,CAChE,MAAO,CACN,KAAM,mBACN,IAAK,CAAC,EAAU,IAAY,EAAQ,gBAAgB,EAAU,CAAS,EACvE,UAAW,CAAC,IAAY,CACvB,GAAI,CAAC,EAAS,CACb,IAAM,EAAW,GAA2B,IAAI,EAChD,MAAO,CACN,OAAQ,kBACR,QAAS,yCAAyC,MAClD,WACA,MAAO,EAAS,MAChB,KAAM,EAAS,KACf,QAAS,EAAS,QAClB,OAAQ,EAAS,OACjB,YAAa,GAAsB,CACpC,EAGD,MAAO,CACN,OAAQ,KACR,QAAS,2BAA2B,EAAQ,OAC5C,MAAO,OACP,KAAM,OACN,QAAS,KACT,OACC,6FACD,QAAS,GAAiB,CAAO,EAAE,QACnC,YAAa,GAAe,CAC7B,EAEF,GAGD,aAAa,EAAG,OAAM,UAAS,eAAe,CAC7C,MAAO,CACN,KAAM,gBACN,IAAK,CAAC,EAAU,IAAY,EAAQ,aAAa,EAAU,EAAM,CAAO,EACxE,UAAW,CAAC,IAAc,CACzB,GAAI,GAAa,YAAa,EAC7B,OAAO,EAAc,EAAU,QAAS,CACvC,QAAS,sBACT,qBAAsB,EAAU,qBAChC,UAAW,EAAU,UACrB,YAAa,CACd,CAAC,EAEF,IAAM,EAAW,GAA2B,IAAI,EAChD,MAAO,CACN,OAAQ,KACR,QAAS,EACN,qCAAqC,EAAU,eAC/C,kCACH,WACA,MAAO,EAAS,MAChB,KAAM,EAAS,KACf,QAAS,EAAS,QAClB,OAAQ,EAAS,OACjB,mBAAoB,GAAW,WAAa,KAC5C,YAAa,GAAW,aAAe,KACvC,YAAa,GAAW,aAAe,KACvC,YAAa,GAAe,CAC7B,EAEF,EAEF,EAEO,SAAS,EAA6D,CAC5E,EACA,EAC+D,CAC/D,OAAO,GAA0B,GAAM,CAAO,ECtO/C,kBAAS,iBACT,kBAAS,mBAwCT,IAAM,GACL,qFAEM,SAAS,CAAM,CAAC,EAAwB,CAC9C,OAAO,KAAK,UAAU,EAAO,KAAM,CAAC,EAG9B,SAAS,EAAa,CAAC,EAAwB,CACrD,OAAO,KAAK,UAAU,CAAK,EAG5B,SAAS,EAAsB,CAC9B,EACA,EAC8B,CAC9B,IAAM,EAAO,GAAuB,CAAO,EAC3C,GAAI,CAAC,EAAM,OAAO,KAClB,MAAO,CAAE,OAAM,QAAO,EAGvB,SAAS,EAAiB,CACzB,EACA,EACyB,CAQzB,MAPmB,CAClB,GAAuB,EAAQ,SAAU,UAAU,EACnD,GAAuB,EAAQ,UAAW,WAAW,EACrD,GAAI,EACD,CAAC,GAAuB,QAAQ,IAAI,EAAG,KAAK,CAAC,EAC7C,CAAC,CACL,EACkB,OACjB,CAAC,IAAiD,IAAc,IACjE,EAGD,SAAS,EAAoB,CAC5B,EACA,EAC8B,CAC9B,OAAO,GAAkB,EAAS,IAAS,MAAM,EAAE,GAAG,CAAC,GAAK,KAG7D,SAAS,EAAuB,EAAkC,CACjE,OAAO,IAAI,EAA8B,CACxC,QACC,+GACD,YACC,yFACD,QAAS,CACR,KAAM,KACN,OAAQ,KACR,QAAS,GACT,gBAAiB,GACjB,aAAc,GACd,gBACC,yEACF,CACD,CAAC,EAGF,SAAS,EAAwB,EAAU,CAC1C,OAAW,MAAM,EAA4B,EAG9C,SAAS,EAAwB,CAChC,EACA,EACA,EAC0B,CAC1B,MAAO,CACN,OACA,SACA,QAAS,GACT,gBAAiB,GACjB,aAAc,GACd,gBAAiB,QACd,CACJ,EAGD,SAAS,EAAgB,CACxB,EACA,EACsB,CACtB,IAAM,EAAY,GAAqB,EAAS,CAAI,EACpD,GAAI,CAAC,EACJ,MAAM,IAAS,SACZ,GAAwB,EACxB,GAAyB,EAE7B,GAAI,IAAS,OACZ,MAAO,CACN,KAAM,EAAU,KAChB,OAAQ,EAAU,OAClB,OACA,QAAS,GACT,aAAc,EAAU,SAAW,KACpC,EAED,IAAM,EAAY,GAA4B,EAAU,IAAI,EAC5D,GAAI,EAAU,gBACb,MAAM,IAAI,EAA8B,CACvC,QAAS,wCAAwC,EAAU,cAAc,EAAU,WAAW,EAAU,kBACxG,YACC,EAAU,OAAS,GAAQ,QAAQ,IAAI,MAAQ,GAAQ,CAAC,EACrD,+GACA,+EAA+E,EAAU,4BAC7F,QAAS,CACR,KAAM,EAAU,KAChB,OAAQ,EAAU,OAClB,QAAS,EAAU,QACnB,gBAAiB,GACjB,aAAc,GACd,gBAAiB,EAAU,eAC5B,CACD,CAAC,EAEF,MAAO,CACN,KAAM,EAAU,KAChB,OAAQ,EAAU,OAClB,OACA,QAAS,EAAU,QACnB,aAAc,EACf,EAGM,SAAS,EAA0B,CACzC,EACsB,CACtB,OAAO,GAAiB,EAAS,MAAM,EAGjC,SAAS,EAAyB,CACxC,EACsB,CACtB,OAAO,GAAiB,EAAS,QAAQ,EAGnC,SAAS,EAAuB,CACtC,EAC0B,CAC1B,IAAI,EAAuC,KAC3C,GAAI,CACH,EAAW,GAA2B,CAAO,EAC5C,KAAM,CACP,OAAO,GAAyB,KAAM,KAAM,CAC3C,gBAAiB,EAClB,CAAC,EAEF,GAAI,CACH,IAAM,EAAU,GAA0B,CAAO,EACjD,OAAO,GAAyB,EAAQ,KAAM,EAAQ,OAAQ,CAC7D,QAAS,EAAQ,QACjB,gBAAiB,GACjB,aAAc,EAAS,YACxB,CAAC,EACA,MAAO,EAAO,CACf,GAAI,aAAiB,EAA+B,CACnD,IAAM,EACL,EAAM,QAAQ,SAAW,YACzB,EAAM,QAAQ,SAAW,aACzB,EAAM,QAAQ,SAAW,MACtB,EAAM,QAAQ,OACd,EAAS,OACb,OAAO,GACN,EAAM,QAAQ,MAAQ,EAAS,KAC/B,EACA,CACC,QAAS,EAAM,QAAQ,QACvB,aAAc,EAAS,aACvB,gBAAiB,EAAM,QAAQ,eAChC,CACD,EAED,MAAM,GAID,SAAS,EAAkB,CAAC,EAAmC,CACrE,OAAO,GAA2B,CAAO,EAAE,KAGrC,SAAS,EAAgB,CAC/B,EACA,EACA,EAAgB,kCAC2C,CAC3D,IAAM,EAAiB,GAAQ,CAAC,EAChC,GAAI,CACH,MAAO,CAAE,GAAI,GAAM,MAAO,EAAO,MAAM,CAAc,CAAE,EACtD,MAAO,EAAO,CACf,IAAM,EACL,GACE,OACG,EAAQ,MAAM,QAAQ,CAAM,GAAK,EAAO,OAAS,EAAI,EAAO,GAAK,KACjE,EACL,GAAO,MAAQ,EAAM,KAAK,OAAS,EAChC,EAAM,KAAK,IAAI,MAAM,EAAE,KAAK,GAAG,EAC/B,OACE,EAAS,GAAO,QAAU,GAAG,MAAS,EAAM,UAAY,KACxD,EAAU,EACb,GAAG,MAAkB,IACrB,GAAG,KACN,MAAO,CAAE,GAAI,GAAO,SAAU,EAAO,EAAc,CAAO,CAAC,CAAE,GCvM/D,IAAM,GAA6B,IAAI,IACtC,EACD,EACM,GAA4B,IAAI,IACrC,EACD,EAEA,SAAS,EAAsB,CAC9B,EACqC,CACrC,OAAO,GAA2B,IAAI,CAAI,EAG3C,SAAS,EAAqB,CAC7B,EACoC,CACpC,OAAO,GAA0B,IAAI,CAAI,EAG1C,eAAe,EAAU,CACxB,EACA,EACA,EACA,EAUC,CACD,IAAM,EAAO,GAA0B,CAAO,EAAE,KAChD,GAAI,GAAuB,CAAI,EAC9B,OAAO,GACN,EACA,GACC,EACA,CACD,EACC,GACA,EACF,EAED,GAAI,CAAC,GAAsB,CAAI,EAC9B,MAAU,MAAM,8BAA8B,KAAQ,EAEvD,OAAO,GACN,EACA,GACC,EACA,CACD,EACC,GAA8C,EAChD,EAoBD,eAAsB,EAAkB,CACvC,EACA,EACA,EACA,EACmB,CACnB,OAAO,GAAW,EAAS,EAAM,EAAS,CAAO,EAelD,eAAsB,EAAsB,CAC3C,EACA,EACA,EACA,EACkB,CAClB,IAAM,EAAS,MAAM,GAAW,EAAS,EAAM,EAAS,CAAO,EAC/D,OAAO,KAAK,UAAU,EAAO,SAAU,KAAM,CAAC,EAG/C,eAAsB,EAAoD,CACzE,EACA,EACA,EACA,EAAkC,GAC4B,CAC9D,OAAO,GACN,GAA2B,CAAO,EAAE,KACpC,GAAgB,EAAM,CAAO,EAC7B,CACD,ECnKD,oBAAS,iBACT,iBAAS,0BA0DT,IAAM,GAAgC,CACrC,gBAAiB,GAAe,IACjC,EAEA,eAAe,EAAU,CAAC,EAAgB,EAAO,GAAU,KAAM,CAChE,GAAI,CAEH,OADA,MAAM,GAAO,EAAQ,CAAI,EAClB,GACN,KAAM,CACP,MAAO,IAIT,eAAsB,EAAiB,CACtC,EACuB,CACvB,IAAM,EAAU,EAAW,mBAAmB,EACxC,EAAa,MAAM,EAAW,uBAAuB,CAAO,EAC5D,EAAa,MAAM,EAAW,0BAA0B,CAAO,EAC/D,EACL,MAAM,EAAW,iCAAiC,CAAO,EACpD,EAAiB,EAAW,OACjC,CAAC,IAAU,EAAM,QAAU,WAAa,EAAM,QAAU,OACzD,EACM,EAA4B,EAAkB,OACnD,CAAC,IAAU,EAAM,QAAU,WAAa,EAAM,QAAU,OACzD,EACM,EAAU,CACf,aAAc,MAGd,cAAe,EAAW,yBAAyB,EACnD,iBAAkB,GAAY,MAAQ,KACtC,OAAQ,OAAO,YACd,EAAW,IAAI,CAAC,IAAU,CAAC,EAAM,KAAM,EAAM,KAAK,CAAC,CACpD,EACA,kBAAmB,OAAO,YACzB,EAAkB,IAAI,CAAC,IAAU,CAChC,GAAG,EAAM,QAAQ,EAAM,OACvB,EAAM,KACP,CAAC,CACF,CACD,EAEA,GAAI,EACH,MAAO,CACN,GAAI,UACJ,MAAO,sBACP,OAAQ,OACR,QAAS,wCAAwC,EAAW,gHAC5D,YACC,4IACD,SACD,EAGD,GAAI,EAAe,OAAS,EAC3B,MAAO,CACN,GAAI,UACJ,MAAO,sBACP,OAAQ,OACR,QAAS,uCAAuC,EAC9C,IAAI,CAAC,IAAU,GAAG,EAAM,SAAS,EAAM,OAAO,EAC9C,KAAK,IAAI,MACX,YACC,wHACD,SACD,EAGD,GAAI,EAA0B,OAAS,EACtC,MAAO,CACN,GAAI,UACJ,MAAO,sBACP,OAAQ,OACR,QAAS,mDAAmD,EAC1D,IAAI,CAAC,IAAU,GAAG,EAAM,QAAQ,EAAM,SAAS,EAAM,OAAO,EAC5D,KAAK,IAAI,MACX,YACC,sKACD,SACD,EAGD,MAAO,CACN,GAAI,UACJ,MAAO,sBACP,OAAQ,OACR,QAAS,QAAQ,EAAQ,gIACzB,YAAa,KACb,SACD,EAGM,SAAS,EAAgB,EAAgB,CAC/C,IAAM,EAAwB,CAAC,EAE/B,OADA,GAAgB,CAAM,EACf,GAAoB,CAAM,EAG3B,SAAS,EAAmB,CAAC,EAAoC,CACvE,IAAM,EAAiB,OAAO,KAAK,EAA6B,EAC1D,EAAmB,OAAO,KAAK,EAAkB,EACjD,EAAgB,EAAe,OAAO,CAAC,IAAS,CAAC,EAAO,QAAQ,EAAK,EACrE,EAAkB,EAAiB,OACxC,CAAC,IAAS,CAAC,EAAO,UAAU,EAC7B,EACM,EAAc,EAAO,UAAU,gBAAgB,MAC/C,EAAuB,OAAO,YACnC,EAAe,IAAI,CAAC,IAAS,CAC5B,EACA,EAAO,QAAQ,IAAO,iBAAmB,IAC1C,CAAC,CACF,EACM,EAAsB,OAAO,QAAQ,EAA6B,EACtE,OACA,EAAE,EAAM,KAAc,EAAO,QAAQ,IAAO,kBAAoB,CACjE,EACC,IAAI,EAAE,EAAM,MAAe,CAC3B,MAAO,EACP,WACA,OAAQ,EAAO,QAAQ,IAAO,iBAAmB,IAClD,EAAE,EAEH,GACC,EAAc,SAAW,GACzB,EAAgB,SAAW,GAC3B,IAAgB,iBAChB,EAAoB,SAAW,EAE/B,MAAO,CACN,GAAI,SACJ,MAAO,8BACP,OAAQ,OACR,QACC,yFACD,YAAa,KACb,QAAS,CACR,WAAY,OAAO,KAAK,EAAO,OAAS,CAAC,CAAC,EAAE,OAC5C,aAAc,OAAO,KAAK,EAAO,SAAW,CAAC,CAAC,EAAE,OAChD,eAAgB,CACf,cAAe,CAChB,EACA,sBACD,CACD,EAGD,MAAO,CACN,GAAI,SACJ,MAAO,8BACP,OAAQ,OACR,QACC,oGACD,YACC,iKACD,QAAS,CACR,gBACA,kBACA,eAAgB,CACf,cAAe,GAAe,IAC/B,EACA,uBACA,qBACD,CACD,EAGD,eAAsB,EAAmB,CACxC,EACuB,CAEvB,OADA,MAAM,GAAO,EAAU,KAAM,GAAU,IAAI,EACpC,CACN,GAAI,YACJ,MAAO,0BACP,OAAQ,OACR,QAAS,EAAU,QAChB,6DAA6D,EAAU,QACvE,6DAA6D,EAAU,QAC1E,YAAa,KACb,QAAS,CACR,cAAe,EAAU,KACzB,gBAAiB,EAAU,OAC3B,QAAS,EAAU,OACpB,CACD,EAGD,eAAsB,EAA0B,CAC/C,EACA,EACuB,CACvB,GAAI,CAAC,EACJ,MAAO,CACN,GAAI,oBACJ,MAAO,2BACP,OAAQ,OACR,QACC,qFACD,YAAa,IACd,EAGD,GAAI,CAAC,EACJ,MAAO,CACN,GAAI,oBACJ,MAAO,2BACP,OAAQ,OACR,QACC,+EACD,YAAa,IACd,EAGD,IAAI,EACA,EACJ,GAAI,CACH,EAAc,GAAqB,EAAe,EAAQ,EAAE,EAC5D,EAAe,GAAgB,EAAe,EAAQ,EAAE,EACvD,MAAO,EAAO,CAGf,GAAI,aAAiB,GACpB,MAAO,CACN,GAAI,oBACJ,MAAO,2BACP,OAAQ,OACR,QAAS,2CAA2C,EAAQ,wDAC5D,YACC,8GACD,QAAS,CAAE,UAAW,EAAQ,EAAG,CAClC,EAED,MAAM,EAEP,IAAM,EAAiB,MAAM,GAAW,EAAa,GAAU,IAAI,EAC7D,EAAkB,MAAM,GAAW,EAAc,GAAU,IAAI,EAErE,OAAO,GAAkB,EACtB,CACA,GAAI,oBACJ,MAAO,2BACP,OAAQ,OACR,QACC,wEACD,YAAa,KACb,QAAS,CAAE,cAAa,eAAc,UAAW,EAAQ,EAAG,CAC7D,EACC,CACA,GAAI,oBACJ,MAAO,2BACP,OAAQ,OACR,QACC,yFACD,YACC,+HACD,QAAS,CACR,UAAW,EAAQ,GACnB,cACA,oBAAqB,EACrB,eACA,iBAAkB,CACnB,CACD,EAGI,SAAS,EAAqB,CAAC,EAAuB,CAC5D,IAAM,EAAS,CACd,KAAM,EAAO,OAAO,CAAC,IAAU,EAAM,SAAW,MAAM,EAAE,OACxD,KAAM,EAAO,OAAO,CAAC,IAAU,EAAM,SAAW,MAAM,EAAE,OACxD,KAAM,EAAO,OAAO,CAAC,IAAU,EAAM,SAAW,MAAM,EAAE,OACxD,KAAM,EAAO,OAAO,CAAC,IAAU,EAAM,SAAW,MAAM,EAAE,MACzD,EAEM,EAAS,EAAO,KAAO,EAAI,OAAS,EAAO,KAAO,EAAI,OAAS,KAC/D,EAAQ,CACb,GAAG,EAAO,eACV,GAAG,EAAO,eAAe,EAAO,OAAS,EAAI,GAAK,MAClD,GAAG,EAAO,eAAe,EAAO,OAAS,EAAI,GAAK,KACnD,EACA,GAAI,EAAO,KAAO,EACjB,EAAM,KAAK,GAAG,EAAO,cAAc,EAGpC,MAAO,CACN,OAAQ,EACR,QAAS,wCAAwC,EAAM,KAAK,IAAI,IACjE,EC5TD,eAAsB,EAAuB,CAC5C,EACA,EACA,EAC8B,CAC9B,IAAM,EAAe,MAAM,EAAM,kBAAkB,EAC7C,EAAc,GAAiB,EAC/B,EAAY,GAAwB,CAAO,EAE7C,EAA+B,KAC/B,EAEJ,GAAI,CACH,IAAM,EAAmB,GAA0B,CAAO,EAC1D,EAAgB,EAAiB,KACjC,EAAiB,MAAM,GAAoB,CAAgB,EAC1D,MAAO,EAAgB,CACxB,IAAM,EACL,aAAiB,EACd,CACA,cAAe,EAAM,QAAQ,KAC7B,gBAAiB,EAAM,QAAQ,OAC/B,QAAS,EAAM,QAAQ,QACvB,gBAAiB,EAAM,QAAQ,eAChC,EACC,EAAU,KACT,CACA,cAAe,EAAU,KACzB,gBAAiB,EAAU,OAC3B,QAAS,EAAU,QACnB,gBAAiB,EAAU,eAC5B,EACC,KACL,EAAiB,CAChB,GAAI,YACJ,MAAO,0BACP,OAAQ,OACR,QACC,aAAiB,EACd,EAAM,QACN,aAAiB,MAChB,EAAM,QACN,oDACL,YACC,aAAiB,EACd,EAAM,YACN,0FACA,EAAmB,CAAE,QAAS,CAAiB,EAAI,CAAC,CACzD,EAGD,IAAM,EAAwB,MAAM,GACnC,EACA,CACD,EAEM,EAAS,CACd,EACA,EACA,EACA,CACD,EACM,EAAU,GAAsB,CAAM,EAC5C,MAAO,CAAE,OAAQ,EAAQ,OAAQ,QAAS,EAAQ,QAAS,QAAO,EAG5D,SAAS,EAAyB,CAAC,EAA+B,CACxE,MAAO,CACN,OAAQ,EAAU,OAClB,QAAS,EAAU,QACnB,OAAQ,EAAU,OAChB,OAAO,CAAC,IAAU,EAAM,SAAW,QAAU,EAAM,SAAW,MAAM,EACpE,IAAI,CAAC,KAAW,CAChB,GAAI,EAAM,GACV,MAAO,EAAM,MACb,OAAQ,EAAM,OACd,QAAS,EAAM,QACf,YAAa,EAAM,WACpB,EAAE,CACJ,ECtGD,SAAS,EAAmB,CAAC,EAAe,EAA2B,CACtE,IAAM,EAAS,EACb,QAAQ,UAAW,KAAK,EACxB,QAAQ,OAAQ,GAAG,EACnB,KAAK,EACP,GAAI,EAAO,QAAU,EACpB,OAAO,EAER,MAAO,GAAG,EAAO,MAAM,EAAG,KAAK,IAAI,EAAG,EAAY,CAAC,CAAC,EAAE,QAAQ,KAG/D,SAAS,EAA8B,CACtC,EACW,CACX,GAAI,CAAC,EACJ,MAAO,CAAC,EAET,IAAM,EAAW,EAAQ,yBACtB,KAAK,EAAQ,mDACb,GACH,MAAO,CACN,0BAA0B,EAAQ,UAAS,EAAQ,kBAAkB,KACrE,GAAI,EAAQ,aACT,CAAC,QAAQ,GAAoB,EAAQ,aAAc,GAAG,GAAG,EACzD,CAAC,CACL,EAGD,SAAS,EAAyB,CAAC,EAAmC,CACrE,IAAM,EAAW,GAA+B,CAAI,EACpD,GAAI,EAAS,SAAW,EACvB,MAAO,CAAC,EAGT,MAAO,CACN,iBACA,GAAG,EAAS,IAAI,CAAC,IAAQ,CACxB,IAAM,EAAU,GAAoB,EAAI,QAAS,EAAE,EAC7C,EAAO,GAAoB,EAAI,KAAM,EAAE,EAC7C,MAAO,KAAK,EAAI,eAAe,EAAI,WAAW,EAAI,YAAY,aAAmB,IACjF,CACF,EAGM,SAAS,EAA0B,CACzC,EACA,EAKS,CACT,IAAM,EAAY,GAAuB,CAAO,EAC1C,EAAQ,CACb,SAAS,EAAU,SAAS,UAC5B,SAAS,GAAS,UAAY,EAAU,SAAS,WACjD,YAAY,GAAS,aAAe,EAAU,SAAS,aACxD,EAEA,GAAI,EAAU,SAAS,QACtB,EAAM,OAAO,EAAG,EAAG,YAAY,EAAU,SAAS,SAAS,EAO5D,GAJA,EAAM,KACL,GAAG,GAA+B,EAAU,SAAS,mBAAmB,CACzE,EAEI,EAAU,SAAS,cAAe,CACrC,IAAM,EAAgB,EAAU,QAAQ,cACxC,EAAM,KACL,eAAe,EAAc,QAAO,EAAc,UAAU,EAAc,SAC3E,EAGD,GAAI,EAAU,SAAS,gBACtB,EAAM,KACL,aAAa,EAAU,QAAQ,gBAAgB,aAAa,EAAU,QAAQ,gBAAgB,iBAC/F,EAGD,IAAM,EACL,GAAS,sBAAwB,EAAU,SAAS,aACrD,GAAI,EACH,EAAM,KAAK,GAAG,GAA0B,CAAY,CAAC,EAGtD,GAAI,EAAU,SAAS,kBACtB,EAAM,KAAK,wBAAwB,EAAU,QAAQ,mBAAmB,EAGzE,GAAI,EAAU,SAAS,KACtB,EAAM,KAAK,SAAS,EAAU,QAAQ,MAAM,EAG7C,OAAO,EAAM,KAAK;AAAA,CAAI,ECrGvB,eAAS,0BACT,kBAAS,iBAAS,cAAY,mBAmE9B,SAAS,EAAkB,CAAC,EAAyB,CACpD,IAAM,EAAQ,EAAgC,KAC9C,OAAO,IAAS,UAAY,IAAS,UAGtC,eAAe,EAAe,CAAC,EAAgC,CAC9D,GAAI,CACH,OAAQ,MAAM,GAAK,CAAI,GAAG,YAAY,EACrC,MAAO,EAAO,CACf,GAAI,GAAmB,CAAK,EAC3B,MAAO,GAER,MAAM,GAIR,eAAe,EAAU,CAAC,EAAgC,CACzD,GAAI,CACH,OAAQ,MAAM,GAAK,CAAI,GAAG,OAAO,EAChC,MAAO,EAAO,CACf,GAAI,GAAmB,CAAK,EAC3B,MAAO,GAER,MAAM,GAIR,SAAS,EAAwB,CAAC,EAAc,EAA2B,CAC1E,OAAO,GAAY,CAAC,GAAW,CAAI,EAAI,GAAQ,EAAU,CAAI,EAAI,EAGlE,SAAS,EAAmB,CAC3B,EACA,EACS,CACT,OAAQ,OACF,SACJ,OAAO,GAAqB,CAAQ,MAChC,SACJ,OAAO,GAAqB,CAAQ,MAChC,YACJ,OAAO,GAAwB,CAAQ,GAI1C,SAAS,EAAqB,CAC7B,EAES,CACT,GAAI,CAAC,EAAO,SACX,MAAM,IAAI,GACT,UACA,+CACD,EAED,OAAO,EAAO,SAGf,SAAS,EAA4B,CACpC,EACA,EAC8C,CAC9C,GAAI,GAAE,eAAgB,KAAU,gBAAiB,IAChD,OAAO,EAGR,IAAM,EAAW,GAAsB,CAAM,EACvC,EAAO,GAAoB,EAAO,SAAU,CAAQ,EAG1D,GAFA,GAAiB,EAAM,EAAO,UAAU,EAEpC,EAAO,WAAa,aAAe,EAAO,iBAAkB,CAC/D,IAAM,EAAc,GACnB,EACA,EAAO,gBACR,EACA,GAAI,EAAO,aAAe,EACzB,MAAM,IAAI,GAA0B,UAAW,EAAO,UAAU,EAIlE,GAAI,EAAO,WAAa,aAAe,EAAO,UAAW,CACxD,IAAM,EAAc,EACnB,EACA,EAAO,UACP,EAAO,QACR,EACA,GAAI,EAAO,aAAe,EACzB,MAAM,IAAI,GAA0B,UAAW,EAAO,UAAU,EAIlE,GAAI,gBAAiB,EAAQ,CAC5B,IAAM,EAAsB,GAAsB,EAAO,UAAU,EACnE,GAAI,EAAO,cAAgB,EAC1B,MAAM,IAAI,GAA0B,UAAW,EAAO,WAAW,EAInE,OAAO,EAGR,SAAS,EAAmB,CAAC,EAG3B,CACD,GAAI,eAAgB,EAAQ,CAC3B,IAAM,EAAa,GAClB,EAAO,WACP,EAAO,QACR,EACA,OAAO,GAA6B,EAAQ,CAC3C,aACA,YAAa,GAAsB,CAAU,CAC9C,CAAC,EAGF,GAAI,gBAAiB,EAAQ,CAC5B,IAAM,EAAc,GACnB,EAAO,YACP,EAAO,QACR,EACA,OAAO,GAA6B,EAAQ,CAC3C,WAAY,GAAQ,CAAW,EAC/B,aACD,CAAC,EAGF,GAAI,EAAO,WAAa,YAAa,CACpC,IAAM,EAAa,GAClB,EAAO,SACP,EAAO,gBACR,EACA,MAAO,CACN,aACA,YAAa,GAAsB,CAAU,CAC9C,EAQD,MAAO,CACN,WANkB,EAClB,EAAO,SACP,EAAO,UACP,EAAO,QACR,EAGC,YAAa,EACZ,EAAO,SACP,EAAO,UACP,EAAO,QACR,CACD,EAGD,SAAS,EAA+B,CACvC,EACgE,CAChE,IAAM,EAAS,EAAM,OACf,EAAS,GAAoB,CAAM,EACnC,EAAO,GACZ,EAAO,WACP,EAAM,SACP,EAEA,MAAO,CACN,KAAM,cACN,MAAO,uBACP,UAAW,EAAM,UACjB,OACA,gBAAiB,EAAO,SACxB,WAAY,EAAO,WACnB,YAAa,EAAO,eAChB,EAAO,UAAY,CAAE,UAAW,EAAO,SAAU,EAAI,CAAC,KACtD,qBAAsB,GAAU,EAAO,iBACxC,CAAE,iBAAkB,EAAO,gBAAiB,EAC5C,CAAC,CACL,EAGD,eAAsB,EAAgC,CACrD,EACqC,CACrC,IAAM,EAAS,GAAgC,CAAK,EAEpD,GAAI,CAAE,MAAM,GAAgB,EAAO,UAAU,EAC5C,MAAO,IACH,EACH,UAAW,GACX,aAAc,sBACf,EAGD,GAAI,CAAE,MAAM,GAAW,EAAO,IAAI,EACjC,MAAO,IACH,EACH,UAAW,GACX,aAAc,qBACf,EAGD,MAAO,IACH,EACH,UAAW,GACX,aAAc,WACf,EC9OD,SAAS,EAAc,CAAC,EAMrB,CACF,MAAO,CACN,MAAO,EAAS,MAChB,KAAM,EAAS,KACf,WAAY,EAAS,WACrB,QAAS,EAAS,QAClB,OAAQ,EAAS,MAClB,EASD,SAAS,EAA4B,CACpC,EACA,EACgC,CAChC,GAAI,CAAC,GAAW,CAAC,GAAW,KAC3B,OAAO,KAER,MAAO,CACN,SAAU,SACV,SAAU,EAAU,KACpB,UAAW,EAAQ,EACpB,EAGD,SAAS,EAA4B,CACpC,EACA,EACgC,CAChC,GAAI,CAAC,GAAW,KACf,OAAO,KAER,MAAO,CACN,SAAU,EAAM,OAChB,SAAU,EAAU,KACpB,WAAY,EAAM,eAAiB,EAAM,KACzC,UAAW,EAAM,QAAQ,EAC1B,EAGD,SAAS,EAA0B,CAClC,EACW,CACX,OAAO,MAAM,KACZ,IAAI,IACH,CACC,EAAQ,eAAe,GACvB,GAAG,EAAQ,aAAa,IAAI,CAAC,IAAQ,EAAI,SAAS,CACnD,EAAE,OAAO,CAAC,IAAqB,QAAQ,CAAE,CAAC,CAC3C,CACD,EAGD,eAAe,EAA0B,CACxC,EACA,EACkD,CAClD,GAAI,CAAC,EACJ,OAAO,IAAI,IAEZ,IAAM,EAAU,MAAM,QAAQ,IAC7B,GAA2B,CAAO,EAAE,IAAI,MAAO,IAAc,CAC5D,GAAI,CACH,MAAO,CACN,EACA,MAAM,GAAiC,CAAE,YAAW,QAAO,CAAC,CAC7D,EACC,KAAM,CAIP,OAAO,MAER,CACF,EACA,OAAO,IAAI,IACV,EAAQ,OACP,CAAC,IACA,IAAU,IACZ,CACD,EAGD,SAAS,EAAqB,CAC7B,EACA,EAC0E,CAC1E,GAAI,CAAC,EACJ,MAAO,CAAC,EAET,IAAM,EAAmB,EAAW,IAAI,CAAS,EACjD,OAAO,EAAmB,CAAE,kBAAiB,EAAI,CAAC,EAGnD,eAAe,EAAqB,CACnC,EACA,EACoC,CACpC,IAAM,EAAa,MAAM,GAA2B,EAAS,CAAM,EACnE,GAAI,EAAW,OAAS,EACvB,OAAO,EAER,MAAO,IACH,EACH,cAAe,EAAQ,cACpB,IACG,EAAQ,iBACR,GAAsB,EAAY,EAAQ,cAAc,EAAE,CAC9D,EACC,KACH,aAAc,EAAQ,aAAa,IAAI,CAAC,KAAS,IAC7C,KACA,GAAsB,EAAY,EAAI,SAAS,CACnD,EAAE,CACH,EAOD,SAAS,EAAqB,CAC7B,EACA,EACC,CACD,IAAM,EAAW,GAAoB,EAAM,OAAO,EAClD,GAAI,EAAM,QAAU,EAAM,QAAQ,SAAW,YAC5C,MAAO,IAAK,EAAU,aAAY,EAEnC,MAAO,IACH,EACH,SAAU,gEACV,aACD,EAGD,SAAS,EAA4B,CACpC,EACgB,CAChB,OAAO,EAAM,SAAW,UAAY,EAAM,QAAQ,SAAW,YAC1D,0MACA,KAGJ,SAAS,EAA4B,CACpC,EACA,EAGA,EACC,CACD,GACC,EAAM,SAAW,UACjB,EAAM,QACN,EAAM,QAAQ,SAAW,YAEzB,OAAO,EAER,OAAO,EAAK,IAAI,CAAC,IAChB,EAAI,SAAW,YAAc,EAAM,IAAK,EAAK,KAAM,CAAS,CAC7D,EAGD,SAAS,EAAuB,CAC/B,EACA,EAAmB,WAClB,CACD,GAAI,CAAC,EACJ,MAAO,CAAC,EAET,IAAM,EAAc,GAA2B,CAAO,EAAE,YACxD,GAAI,EAAY,SAAW,EAC1B,MAAO,CAAC,EAET,GAAI,IAAS,UACZ,MAAO,CACN,mBAAoB,CACnB,MAAO,EAAY,OACnB,SAAU,EAAY,OACrB,CAAC,IAAe,EAAW,WAAa,MACzC,EAAE,OACF,OAAQ,EAAY,MAAM,EAAG,CAAC,EAAE,IAAI,CAAC,KAAgB,CACpD,GAAI,EAAW,GACf,SAAU,EAAW,SACrB,UAAW,EAAW,WAAa,KACnC,QAAS,EAAW,OACrB,EAAE,CACH,CACD,EAED,MAAO,CAAE,mBAAoB,CAAY,EAG1C,SAAS,EAAuB,CAC/B,EACA,EAAmB,WAClB,CACD,GAAI,CAAC,EACJ,MAAO,CAAC,EAET,IAAM,EAAc,GAA2B,CAAO,EACtD,GAAI,IAAS,UACZ,MAAO,CACN,kBAAmB,CAClB,MAAO,EAAY,kBAAkB,MACrC,cAAe,EAAY,kBAAkB,SAAS,OACtD,aAAc,EAAY,kBAAkB,SAAS,OACrD,SAAU,EAAY,kBAAkB,SACtC,MAAM,EAAG,CAAC,EACV,IAAI,CAAC,KAAU,CACf,GAAI,EAAK,GACT,UAAW,EAAK,WAAa,KAC7B,QAAS,EAAK,OACf,EAAE,EACH,WAAY,EAAY,kBAAkB,UAC3C,EACA,eAAgB,CACf,MAAO,EAAY,QAAQ,MAC3B,OAAQ,EAAY,QAAQ,OAC5B,kBAAmB,EAAY,QAAQ,OAAO,OAC7C,CAAC,IAAU,EAAM,SAAW,MAC7B,EAAE,OACF,kBAAmB,EAAY,QAAQ,OAAO,OAC7C,CAAC,IAAU,EAAM,SAAW,MAC7B,EAAE,MACH,EACA,oBAAqB,CACpB,mBAAoB,EAAY,aAAa,mBAC7C,qBAAsB,EAAY,aAAa,qBAC/C,uBAAwB,EAAY,aAAa,uBACjD,8BACC,EAAY,aAAa,0BAA0B,OACpD,qBAAsB,EAAY,aAAa,oBAChD,CACD,EAED,MAAO,CACN,kBAAmB,EAAY,kBAC/B,eAAgB,EAAY,QAC5B,oBAAqB,EAAY,YAClC,EAGM,SAAS,EAA4B,CAC3C,EACA,EACC,CACD,IAAM,EAAW,GAA2B,IAAI,EAChD,OAAO,EAAO,CACb,OAAQ,kBACR,QAAS,yCAAyC,MAClD,cACG,GAAe,CAAQ,EAC1B,aACD,CAAC,EAGF,eAAsB,EAAqB,CAC1C,EACA,EACA,EACA,EACkB,CAClB,IAAM,EAAY,GAAuB,EAAM,OAAO,EAChD,EAAoB,EAAU,QACjC,MAAM,GACN,EAAU,QACV,GAA6B,EAAO,CAAS,CAC9C,EACC,KACH,GAAI,CAAC,EACJ,MAAU,MAAM,mDAAmD,EAEpE,IAAM,EAAW,GAAsB,EAAO,CAAW,EACnD,EAAW,GAA2B,EAAM,OAAO,EACnD,EAAiB,EAAM,OAC1B,EACA,IAAK,EAAmB,aAAY,EACjC,EAAkB,GAA6B,CAAK,EACpD,EAAqB,IACvB,EACH,aAAc,GACb,EACA,EAAe,aACf,EAAS,QACV,CACD,EACA,OAAO,EAAO,CACb,OAAQ,KACR,QAAS,EACN,gCAAgC,MAChC,WAAW,EAAM,wBAAwB,MAC5C,OAAQ,EAAM,OACd,OAAQ,EAAM,OACd,OACC,EAAM,SAAW,UACjB,CAAC,EAAM,QACP,EAAM,QAAQ,SAAW,YAC1B,KAAM,EAAM,KACZ,cAAe,EAAM,eAAiB,KACtC,YAAa,EAAM,aAAe,KAClC,QAAS,EAAM,QAAQ,SAAW,QAC/B,GAAwB,EAAM,OAAO,KACrC,GAAwB,EAAM,OAAO,EACxC,cACG,GAAe,CAAQ,EAC1B,QAAS,EACT,cACI,EAAkB,CAAE,QAAS,CAAgB,EAAI,CAAC,EACtD,gBAAiB,GAA2B,EAAM,QAAS,CAC1D,YAAa,EAAS,YACtB,SAAU,EAAS,SACnB,qBAAsB,EAAmB,YAC1C,CAAC,EACD,aACD,CAAC,EAGF,eAAsB,EAAc,CACnC,EACA,EAAmB,WACnB,EACA,EACkB,CAClB,IAAM,EAAY,GAAuB,GAAW,IAAI,EAClD,EAAoB,GAAW,KAC/B,EAAW,EAAU,SACrB,EAAmB,EAAU,QAChC,MAAM,GACN,EAAU,QACV,GAA6B,EAAmB,CAAS,CAC1D,EACC,KACG,EAAkB,GACvB,EACA,EACG,CAAE,qBAAsB,EAAiB,YAAa,EACtD,MACJ,EACM,EAAgB,GAAW,MAAQ,KACnC,EACL,GAAkB,eAAe,kBAAoB,KACtD,GAAI,IAAS,UACZ,OAAO,GAAc,CACpB,OAAQ,EAAU,OAClB,QAAS,EAAU,WACf,EAAY,CAAE,UAAW,GAA0B,CAAS,CAAE,EAAI,CAAC,KACpE,GAAwB,EAAmB,SAAS,KACpD,GAAwB,EAAmB,SAAS,EACvD,kBAAmB,GAAkB,mBAAqB,QACtD,GAAkB,oBACnB,CAAE,oBAAqB,EAAiB,mBAAoB,EAC5D,CAAC,KACA,EAAyB,CAAE,wBAAuB,EAAI,CAAC,KACxD,GAAe,CAAQ,EAC1B,WACA,kBACA,YAAa,EAAS,YACtB,gBACA,UAAW,GAAa,IACzB,CAAC,EAEF,OAAO,EAAO,CACb,OAAQ,EAAU,OAClB,QAAS,EAAU,WACf,EAAY,CAAE,WAAU,EAAI,CAAC,KAC9B,GAAwB,CAAiB,KACzC,GAAwB,CAAiB,EAC5C,kBAAmB,GAAkB,mBAAqB,QACtD,GAAkB,oBACnB,CAAE,oBAAqB,EAAiB,mBAAoB,EAC5D,CAAC,KACA,EAAyB,CAAE,wBAAuB,EAAI,CAAC,KACvD,EAAmB,CAAE,QAAS,CAAiB,EAAI,CAAC,KACrD,GAAe,CAAQ,EAC1B,WACA,kBACA,gBACA,UAAW,GAAa,IACzB,CAAC,EAWF,SAAS,EAAqB,CAAC,EAAgD,CAC9E,MAAO,CACN,GAAI,EAAQ,OAAS,CAAC,EAAQ,MAAM,EAAI,CAAC,EACzC,GAAG,EAAQ,OACX,GAAG,EAAQ,SACZ,EAGD,SAAS,EAA0B,CAClC,EACsB,CACtB,OACC,GAAsB,CAAO,EAC3B,OAAO,CAAC,IAAU,EAAM,mBAAmB,EAC3C,KAAK,CAAC,EAAM,KACX,EAAM,qBAAqB,YAAc,IAAI,cAC7C,EAAK,qBAAqB,YAAc,EACzC,CACD,EAAE,IAAI,qBAAuB,KAIhC,SAAS,EAA0B,CAAC,EAAyB,CAC5D,IAAM,EAAS,IAAI,IAWnB,QAAW,KAAS,GAAsB,CAAO,EAAG,CACnD,IAAM,EAAU,EAAM,oBACtB,GAAI,CAAC,EAAS,SACd,IAAM,EAAM,GAAG,EAAQ,QAAQ,EAAQ,kBACjC,EAAW,EAAO,IAAI,CAAG,EACzB,EAAe,EAAQ,0BAA4B,EACzD,GAAI,EAAU,CAGb,GAFA,EAAS,OAAS,EAClB,EAAS,WAAW,KAAK,EAAM,EAAE,GAC5B,EAAQ,YAAc,KAAO,EAAS,kBAAoB,KAE9D,GADA,EAAS,iBAAmB,EAAQ,YAAc,KAC9C,EAAQ,aACX,EAAS,aAAe,EAAQ,aAGlC,SAED,EAAO,IAAI,EAAK,CACf,KAAM,EAAQ,KACd,gBAAiB,EAAQ,gBACzB,MAAO,EACP,WAAY,CAAC,EAAM,EAAE,EACrB,iBAAkB,EAAQ,YAAc,QACpC,EAAQ,aAAe,CAAE,aAAc,EAAQ,YAAa,EAAI,CAAC,CACtE,CAAC,EAEF,MAAO,CAAC,GAAG,EAAO,OAAO,CAAC,EAAE,KAAK,CAAC,EAAM,KACtC,EAAM,kBAAoB,IAAI,cAAc,EAAK,kBAAoB,EAAE,CACzE,EAGM,SAAS,EAAe,CAAC,EAAyB,EAAqB,CAC7E,IAAM,EAAc,EAAQ,OAAS,EAAI,EACnC,EACL,EAAc,EAAQ,OAAO,OAAS,EAAQ,UAAU,OACnD,EAAc,EAAQ,OAAO,OAClC,CAAC,IAAY,EAAQ,SAAW,WACjC,EAAE,OACI,EAAsB,GAA2B,CAAO,EACxD,EAAsB,GAA2B,CAAO,EACxD,EAAW,CAChB,aACA,cACA,YAAa,EAAQ,OAAO,OAC5B,cACA,eAAgB,EAAQ,UAAU,OAClC,wBAAyB,EAAoB,MAC9C,EACA,GAAI,IAAe,EAAG,CACrB,IAAM,EAAW,GAAoB,IAAI,EACnC,EAAW,GAA2B,IAAI,EAChD,MAAO,CACN,QAAS,EAAO,CACf,OAAQ,UACR,QAAS,iCACT,cACG,GAAe,CAAQ,EAC1B,UACA,sBACA,sBACA,aACD,CAAC,EACD,UACD,EAED,MAAO,CACN,QAAS,EAAO,CACf,OAAQ,KACR,QAAS,SAAS,kBAA2B,IAAe,EAAI,QAAU,cAAc,aAAuB,EAAQ,OAAO,iBAAiB,aAAuB,EAAQ,UAAU,qBACxL,UACA,sBACA,yBACI,EAAc,EACf,CACA,QACC,4KACF,EACC,CAAC,EACJ,aACD,CAAC,EACD,UACD,EClhBD,IAAM,GACL,yGAEK,GAA6B,mCAEnC,SAAS,EAAM,CAAC,EAAuB,CACtC,OAAO,KAAK,UAAU,CAAK,EAG5B,SAAS,EAAO,CAAC,EAAe,EAAM,IAAa,CAClD,OAAO,EAAM,QAAU,EAAM,EAAQ,GAAG,EAAM,MAAM,EAAG,EAAM,CAAC,KAG/D,SAAS,EAAgB,CAAC,EAAmC,CAC5D,OAAO,QAAQ,EAAI,UAAY,EAAI,SAAS,EAG7C,IAAM,GAAmC,CACxC,GACA,GACA,gCACA,wBACA,wBACD,EAEM,GAAuC,CAC5C,2DACA,UACA,WACA,oBACA,aACA,cACA,iBAEA,aACA,eACA,kBACA,uBACA,sBACD,EAEA,SAAS,EAAwB,CAAC,EAAwB,CACzD,OAAO,GAAiC,KAAK,CAAC,IAC7C,EAAM,WAAW,CAAM,CACxB,EAGD,SAAS,EAA0B,CAAC,EAAwB,CAC3D,OAAO,GAAqC,KAAK,CAAC,IACjD,EAAM,WAAW,CAAM,CACxB,EAGD,SAAS,EAAwB,CAAC,EAGhC,CACD,GAAI,CAAC,EACJ,MAAO,CAAE,MAAO,CAAC,EAAG,QAAS,EAAM,EAGpC,IAAM,EAAqB,CAAC,EACxB,EAAU,GACV,EAAwB,GAC5B,QAAW,KAAS,EAAO,CAC1B,GAAI,GAAyB,CAAK,EAAG,CACpC,EAAU,GACV,EAAwB,EAAM,WAAW,EAA2B,EACpE,SAED,GAAI,GAAyB,GAA2B,CAAK,EAAG,CAC/D,EAAU,GACV,SAED,EAAwB,GACxB,EAAS,KAAK,CAAK,EAGpB,MAAO,CAAE,MAAO,EAAU,SAAQ,EAGnC,eAAe,EAAmB,CACjC,EAC0B,CAC1B,GAAI,CAAC,GAAiB,CAAG,EACxB,OAAO,KAGR,GAAI,CACH,IAAM,EAAc,IACf,EAAI,SAAW,CAAE,SAAU,EAAI,QAAS,EAAI,CAAC,KAC7C,EAAI,UAAY,CAAE,UAAW,EAAI,SAAU,EAAI,CAAC,CACrD,EACA,OAAO,MAAM,GAAY,GAAmB,CAAW,CAAC,EACvD,KAAM,CACP,OAAO,MAIF,SAAS,EAAkC,CACjD,EACW,CACX,IAAM,EAAY,GAAuB,CAAO,EAChD,GAAI,CAAC,EAAU,QACd,MAAO,CAAC,EAGT,IAAM,EAAQ,CACb,GACA,+HACA,WAAW,GAAO,GAAQ,EAAU,QAAQ,IAAI,CAAC,IACjD,YAAY,EAAU,SAAS,OAChC,EAEA,GAAI,EAAU,QAAQ,cACrB,EAAM,KACL,qBAAqB,GAAO,EAAU,QAAQ,cAAc,EAAE,MAAM,EAAU,QAAQ,cAAc,aAAY,GAAO,GAAQ,EAAU,QAAQ,cAAc,KAAK,CAAC,GACtK,EAGD,GAAI,EAAU,SAAS,QACtB,EAAM,KAAK,cAAc,GAAO,GAAQ,EAAU,SAAS,OAAO,CAAC,GAAG,EAGvE,GAAI,EAAU,QAAQ,oBAAqB,CAC1C,IAAM,EAAW,CAChB,EAAU,QAAQ,oBAAoB,QACtC,EAAU,QAAQ,oBAAoB,YACvC,EACE,OAAO,CAAC,IAAyB,QAAQ,CAAI,CAAC,EAC9C,KAAK,IAAI,EACX,EAAM,KAAK,eAAe,GAAO,GAAQ,CAAQ,CAAC,GAAG,EAOtD,OAJA,EAAM,KACL,kBAAkB,GAAO,GAAQ,EAAU,SAAS,QAAQ,CAAC,gBAAgB,GAAO,EAAU,SAAS,WAAW,GACnH,EAEO,EAGR,eAAe,EAAiC,CAC/C,EACoB,CACpB,OAAO,GAAmC,MAAM,GAAoB,CAAG,CAAC,EAOzE,SAAS,EAA0B,CAAC,EAAmC,CACtE,GAAI,CAAC,EACJ,MAAO,CAAC,EAET,MAAO,CACN,GAAG,aAAqC,GAAO,GAAQ,EAAQ,IAAI,CAAC,+HACrE,EAGD,eAAsB,EAAkC,CACvD,EACA,EACgB,CAChB,IAAM,EAAW,GAAyB,EAAO,MAAM,EACvD,GAAI,CAAC,GAAiB,CAAG,EAAG,CAC3B,GAAI,EAAS,QACZ,EAAO,OAAS,EAAS,MAE1B,OAGD,IAAM,EAAU,GAA2B,MAAM,GAAoB,CAAG,CAAC,EACzE,GAAI,EAAQ,SAAW,EAAG,CACzB,GAAI,EAAS,QACZ,EAAO,OAAS,EAAS,MAE1B,OAGD,EAAO,OAAS,CAAC,GAAG,EAAS,MAAO,GAAG,CAAO,EAG/C,eAAsB,EAAsC,CAC3D,EACA,EACgB,CAChB,IAAM,EAAW,GAAyB,EAAO,OAAO,EACxD,GAAI,CAAC,GAAiB,CAAO,EAAG,CAC/B,GAAI,EAAS,QACZ,EAAO,QAAU,EAAS,MAE3B,OAGD,IAAM,EAAiB,MAAM,GAAkC,CAAO,EACtE,GAAI,EAAe,SAAW,EAAG,CAChC,GAAI,EAAS,QACZ,EAAO,QAAU,EAAS,MAE3B,OAGD,EAAO,QAAU,CAAC,GAAG,EAAS,MAAO,EAAe,KAAK;AAAA,CAAI,CAAC,EC3N/D,kBAFA,kBAAS,eAAS,0BAClB,mBAAS,WAAU,eAAM,UAAU,mBAgDnC,IAAM,GAAoB,EACpB,GAAsB,IACtB,GAA0B,IAAI,IAAI,CACvC,SACA,QACA,OACA,QACA,SACA,QACA,WACA,OACA,eACA,MACA,SACA,QACD,CAAC,EAEK,GAA4B,IAAI,IAAI,CACzC,OACA,SACA,UACA,WACA,SACD,CAAC,EACK,GAAuB,IAAI,IAAI,CAAC,OAAQ,SAAU,SAAU,SAAS,CAAC,EACtE,GAA4B,CAAC,OAAQ,OAAQ,OAAQ,MAAM,EAC3D,GAAsB,uCAEtB,GAAoB,IAAI,IAAI,CACjC,YACA,gBACA,eACA,iBACA,aACA,YACA,YACA,WACA,YACA,aACA,WACA,YACA,YACA,oBACA,eACA,iBACA,gBACA,WACD,CAAC,EAED,SAAS,EAAa,CAAC,EAA4B,CAClD,OAAO,MAAM,KACZ,IAAI,IAAI,EAAO,IAAI,CAAC,IAAU,EAAqB,CAAK,CAAC,EAAE,OAAO,OAAO,CAAC,CAC3E,EAGD,SAAS,EAAc,CAAC,EAA+C,CACtE,OAAO,IACL,GAAS,MAAM,UAAY,CAAC,GAAG,QAAQ,CAAC,IAAY,CACpD,GAAG,EAAQ,YACX,IAAI,EAAQ,aAAe,CAAC,GAAG,IAAI,CAAC,IAAW,EAAO,MAAM,CAC7D,CAAC,CACF,EAGD,SAAS,EAAgB,CAAC,EAA+C,CACxE,OAAO,GAAc,CACpB,IAAI,GAAS,WAAa,CAAC,GAAG,IAAI,CAAC,IAAa,EAAS,IAAI,EAC7D,IAAI,GAAS,UAAU,SAAW,CAAC,GAAG,QAAQ,CAAC,IAC9C,EAAM,iBAAiB,IAAI,CAAC,IAAa,EAAS,IAAI,CACvD,CACD,CAAC,EAGF,SAAS,EAAY,CACpB,EACA,EACA,EACA,EAC4B,CAC5B,GAAI,GAAyB,EAAM,CAAO,EACzC,MAAO,UAER,GAAI,GAAyB,EAAM,CAAO,EACzC,MAAO,UAER,IAAM,EAAO,GAAS,CAAI,EAC1B,GAAI,GAAkB,IAAI,CAAI,EAC7B,MAAO,SAER,GACC,IAAS,QACT,EAAK,WAAW,OAAO,GACvB,EAAK,YAAY,EAAE,SAAS,KAAK,EAEjC,MAAO,OAER,GACC,IAAS,SACT,EAAK,WAAW,QAAQ,GACxB,+BAA+B,KAAK,CAAI,EAExC,MAAO,OAER,GAAI,IAAS,cAAgB,IAAS,OAAS,EAAK,WAAW,MAAM,GACpE,MAAO,SAER,GAAI,IAAS,QAAU,EAAK,WAAW,MAAM,EAC5C,MAAO,SAER,MAAO,QAGR,SAAS,EAAc,CAAC,EAA2C,CAClE,OAAO,IAAS,QAAU,CAAC,EAAI,CAAC,CAAI,EAGrC,SAAS,EAAqB,CAAC,EAAuB,CACrD,OAAO,GAAwB,IAAI,CAAI,EAGxC,SAAS,EAAe,CACvB,EACA,EACU,CACV,IAAM,EAAO,GAAS,CAAI,EAAE,YAAY,EACxC,GAAI,IAAS,YACZ,OAAO,GAA0B,IAAI,CAAI,EAE1C,GAAI,GAAqB,IAAI,CAAI,GAAK,EAAK,WAAW,OAAO,EAC5D,MAAO,GAER,OAAO,GAA0B,KAAK,CAAC,IACtC,EAAK,SAAS,CAAS,CACxB,EAGD,SAAS,EAAoB,CAAC,EAAuB,CAEpD,IAAM,EADiB,EAAqB,CAAI,EAE9C,MAAM,GAAG,EACT,IAAI,CAAC,IAAY,EAAQ,YAAY,CAAC,EACtC,OAAO,OAAO,EACV,EAAO,EAAS,GAAG,EAAE,GAAK,GAChC,OACC,EAAS,KAAK,CAAC,IAAY,GAA0B,IAAI,CAAO,CAAC,GACjE,GAAqB,IAAI,CAAI,GAC7B,EAAK,WAAW,OAAO,GACvB,GAA0B,KAAK,CAAC,IAAc,EAAK,SAAS,CAAS,CAAC,EAIxE,SAAS,EAAwB,CAAC,EAAuB,CACxD,IAAM,EAAiB,EAAqB,CAAI,EAChD,OACC,EAAe,OAAS,GACxB,CAAC,EAAe,WAAW,GAAG,GAC9B,IAAmB,MACnB,CAAC,EAAe,WAAW,KAAK,GAChC,CAAC,EAAe,SAAS,MAAM,EAIjC,eAAe,EAAsB,CAAC,EAAc,CACnD,GAAI,CACH,IAAM,EAAW,MAAM,GAAS,GAAK,EAAM,YAAY,EAAG,MAAM,EAChE,OAAO,WAAO,EAAE,IAAI,CAAQ,EAC3B,MAAO,EAAO,CACf,GAAK,EAAgC,OAAS,SAC7C,OAAO,KAER,OAAO,MAIT,SAAS,EAAoB,CAC5B,EACA,EACA,EACU,CACV,GAAI,CAAC,GAAoB,CAAC,GAAyB,CAAI,EACtD,MAAO,GAER,GAAI,EAAiB,QAAQ,CAAI,EAChC,MAAO,GAER,OAAO,IAAS,aAAe,EAAiB,QAAQ,GAAG,IAAO,EAGnE,SAAS,EAAkB,CAC1B,EACA,EACU,CACV,IAAM,EAAiB,EAAqB,CAAI,EAChD,GAAI,CAAC,GAAyB,CAAc,EAC3C,MAAO,GAER,GAAI,CAAC,EACJ,MAAO,GAER,OACC,EAAiB,QAAQ,CAAc,GACvC,EAAiB,QAAQ,GAAG,IAAiB,EAI/C,SAAS,EAAmB,CAC3B,EACA,EACyC,CACzC,IAAI,EAAW,EACf,MAAO,CACN,OAAQ,EAAO,IAAI,CAAC,IAAU,CAC7B,GACC,GAAqB,CAAK,GAC1B,GAAmB,EAAO,CAAgB,EAG1C,OADA,GAAY,EACL,GAER,OAAO,EAAqB,CAAK,EACjC,EACD,UACD,EAGD,eAAsB,EAAwB,CAC7C,EACA,EACA,EAAsC,CAAC,EACE,CACzC,IAAM,EAAW,EAAQ,UAAY,GAC/B,EAAa,EAAQ,YAAc,GACnC,EAAU,GAAe,CAAO,EAChC,EAAU,GAAiB,CAAO,EAClC,EAAmC,CAAC,EACpC,EAAmB,MAAM,GAAuB,CAAI,EACpD,EAAmB,GAAoB,EAAS,CAAgB,EAChE,EAAmB,GAAoB,EAAS,CAAgB,EAClE,EAAY,GAEhB,eAAe,CAAK,CAAC,EAAmB,EAA8B,CACrE,GAAI,EAAQ,QAAU,EAAY,CACjC,EAAY,GACZ,OAED,GAAI,EAAQ,EAAU,CACrB,EAAY,GACZ,OAGD,IAAI,EACJ,GAAI,CACH,EAAU,MAAM,GAAQ,EAAW,CAAE,cAAe,EAAK,CAAC,EACzD,KAAM,CACP,OAGD,IAAM,GAAS,EAAQ,KAAK,CAAC,EAAM,KAAU,CAC5C,GAAI,EAAK,YAAY,IAAM,GAAM,YAAY,EAC5C,OAAO,EAAK,YAAY,EAAI,GAAK,EAElC,OAAO,EAAK,KAAK,cAAc,GAAM,IAAI,EACzC,EAED,QAAW,KAAS,GAAQ,CAC3B,GAAI,EAAQ,QAAU,EAAY,CACjC,EAAY,GACZ,OAED,GAAI,CAAC,EAAM,YAAY,GAAK,CAAC,EAAM,OAAO,EACzC,SAED,IAAM,GAAe,GAAK,EAAW,EAAM,IAAI,EACzC,GAAO,EACZ,GAAS,EAAM,EAAY,EAAE,MAAM,EAAG,EAAE,KAAK,GAAG,CACjD,EACA,GAAI,CAAC,GACJ,SAED,IAAM,GAAO,EAAM,YAAY,EAAI,YAAc,OACjD,GAAI,KAAS,aAAe,GAAsB,EAAM,IAAI,EAC3D,SAED,GAAI,GAAgB,GAAM,EAAI,EAC7B,SAED,GAAI,GAAqB,GAAM,GAAM,CAAgB,EACpD,SAED,IAAM,GAAO,GAAa,GAAM,GAAM,EAAS,CAAO,EAQtD,GAPA,EAAQ,KAAK,CACZ,QACA,QACA,QACA,QACA,QAAS,GAAe,EAAI,CAC7B,CAAC,EACG,EAAM,YAAY,EACrB,MAAM,EAAM,GAAc,EAAQ,CAAC,GAOtC,OAFA,MAAM,EAAM,EAAM,CAAC,EAEZ,CACN,SAAU,GAAS,CAAI,GAAK,EAC5B,WAAY,EAAQ,OACpB,YACA,WACA,aACA,mBAAoB,CAAC,GAAG,EAAuB,EAAE,KAAK,EACtD,cAAe,CACd,uBACA,kBACA,GAAI,EAAmB,CAAC,YAAY,EAAI,CAAC,CAC1C,EACA,MAAO,CACN,eAAgB,EAAiB,OACjC,uBAAwB,EAAiB,SACzC,iBAAkB,EAAiB,OACnC,yBAA0B,EAAiB,QAC5C,EACA,SACD,ECrXD,eAAS,4BCWT,SAAS,EAAsB,CAAC,EAAsC,CACrE,OAAO,EACN,EAAc,EAAM,QAAS,CAC5B,cAAe,EAAM,QAAQ,KAC7B,UAAW,EAAM,QACjB,YAAa,EAAM,WACpB,CAAC,CACF,EAGM,SAAS,CAAiB,CAChC,EACA,EAC2D,CAC3D,MAAO,OAAO,EAAM,IAAY,CAC/B,IAAM,EAAS,GAAc,EAAQ,CAAI,EACzC,GAAI,CAAC,EAAO,GACX,OAAO,EAAO,SAGf,GAAI,CACH,OAAO,MAAM,EAAI,EAAO,MAAO,CAAO,EACrC,MAAO,EAAO,CACf,GAAI,aAAiB,EACpB,OAAO,GAAuB,CAAK,EAGpC,MAAM,ICnBT,IAAM,EAAI,EAAK,OAYT,GAAuB,EAAE,KAAK,CAAC,UAAW,UAAU,CAAC,EACrD,GAAwB,EAAE,KAAK,CAAC,UAAW,WAAY,MAAM,CAAC,EAC9D,GAAkB,EACtB,OAAO,EACP,MAAM,GAAoB,EAAkB,EACxC,GAAkB,EACtB,OAAO,EACP,IAAI,CAAC,EACL,MAAM,GAAoB,0CAA0C,EAGzD,GAAsB,CAClC,KAAM,GAAqB,SAAS,CACrC,EACa,GAAuB,EAAE,OAAO,EAAmB,EAGnD,GAAuB,CACnC,KAAM,GAAsB,SAAS,EACrC,wBAAyB,EAAE,QAAQ,EAAE,SAAS,CAC/C,EACa,GAAwB,EAAE,OAAO,EAAoB,EAGrD,GAAwB,CACpC,KAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,EACxC,SAAU,GAAiC,SAAS,EACpD,KAAM,GAAsB,SAAS,CACtC,EACa,GAAyB,EAAE,OAAO,EAAqB,EAGvD,GAA2B,CACvC,WAAY,EAAE,MAAM,EAAe,EAAE,SAAS,CAC/C,EACa,GAA4B,EAAE,OAAO,EAAwB,EAG7D,GAAwB,CACpC,UAAW,GAAgB,SAAS,CACrC,EACa,GAAyB,EAAE,OAAO,EAAqB,EAGvD,GAA+B,IACxC,GAA8B,QAAQ,EAAE,MAC3C,OAAQ,EAAE,KAAK,CAAC,KAAM,aAAa,CAAC,EAAE,SAAS,EAC/C,QAAS,GAAqB,SAAS,EACvC,MAAO,EAAE,QAAQ,EAAE,SAAS,EAC5B,UAAW,GAAgB,SAAS,CACrC,EAEM,GAAqC,EACzC,OAAO,CACP,MAAO,EAAE,QAAQ,EAAI,EACrB,UAAW,EACZ,CAAC,EACA,OAAO,EAST,SAAS,EAA4B,CACpC,EACA,EACO,CACP,EAAE,OAAO,CAAE,UAAW,GAAgB,SAAS,CAAE,CAAC,EAChD,YAAY,CAAC,EAAO,IAAQ,CAC5B,GACC,EAAM,YAAc,QACpB,EAAM,YAAc,EAEpB,EAAI,SAAS,CACZ,KAAM,SACN,KAAM,CAAC,WAAW,EAClB,QACC,gFACF,CAAC,EAEF,EACA,MAAM,CAAE,UAAW,CAAkB,CAAC,EAGlC,IAAM,GAAgC,CAC5C,KAAK,CAAC,EAAyC,CAC9C,GACC,IAAU,MACV,OAAO,IAAU,UAChB,EAA8B,QAAU,GAGzC,MAAO,CAAE,MAAO,GAAM,UADP,GAAmC,MAAM,CAAK,EACrB,SAAU,EAEnD,IACC,MAAO,EACP,UAAW,KACR,GACC,GAAS,CAAC,EACT,EAAS,GAA8B,MAAM,CAAW,EAK9D,OAJA,GACC,EACA,EAAO,cAAc,SACtB,EACO,CAAE,MAAO,GAAO,QAAO,EAEhC,EAKa,GAA4B,CACxC,MAAO,EAAE,KAAK,CAAC,UAAW,OAAO,CAAC,EAClC,UAAW,GAAgB,SAAS,KACjC,GAAmC,KAAK,CAAE,MAAO,EAAK,CAAC,EAAE,QAAQ,EAAE,MACtE,OAAQ,EAAE,KAAK,EAA0B,EACzC,QAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAC1B,EACa,GAA6B,GAGpC,GAAuB,CAAC,WAAY,QAAS,UAAW,MAAM,EACvD,GAAuB,CACnC,OAAQ,EAAE,KAAK,EAAoB,EACnC,UAAW,GAAgB,SAAS,EACpC,KAAM,EAAE,KAAK,EAAa,EAAE,SAAS,EACrC,QAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,CAC5C,EACa,GAAwB,EACnC,OAAO,EAAoB,EAC3B,YAAY,CAAC,EAAO,IAAQ,CAC5B,IACE,EAAM,SAAW,YAAc,EAAM,SAAW,SACjD,CAAC,EAAM,UAEP,EAAI,SAAS,CACZ,KAAM,SACN,KAAM,CAAC,WAAW,EAClB,QAAS,yCAAyC,EAAM,UACzD,CAAC,EAEF,GAAI,EAAM,SAAW,SAAW,CAAC,EAAM,KACtC,EAAI,SAAS,CACZ,KAAM,SACN,KAAM,CAAC,MAAM,EACb,QACC,oFACF,CAAC,EAEF,ECxLF,mBAAS,WAAU,mBAUZ,MAAM,WAAwC,KAAM,CACjD,KAAO,wCACP,KACA,OAET,WAAW,CAAC,EAAwC,CACnD,MACC,4CAA4C,EAAS,8EACtD,EACA,KAAK,KAAO,kCACZ,KAAK,KAAO,EAAS,KACrB,KAAK,OAAS,EAAS,OAEzB,CAEA,SAAS,EAAU,CAAC,EAA+C,CAClE,OACC,OAAO,IAAU,UACjB,IAAU,MACV,OAAQ,EAA+B,OAAS,WAIlD,SAAS,EAA0B,CAAC,EAAuB,CAC1D,IAAM,EAAO,GAAS,CAAI,EAC1B,OAAO,EAAK,WAAW,GAAG,GAAK,IAAS,QAGzC,SAAS,EAA2B,CACnC,EAC+B,CAC/B,IAAM,EAAW,GAA0B,CAAO,EAClD,MAAO,CACN,KAAM,EAAS,KACf,OAAQ,EAAS,OACjB,2BAA4B,GAA2B,EAAS,IAAI,CACrE,EAGD,eAAsB,EAAgC,CACrD,EACA,EAAW,GAA4B,CAAO,EAC5B,CAClB,GAAI,CAAC,EAAS,2BACb,OAAO,EAAS,KAGjB,GAAI,CAAC,EAAQ,IACZ,MAAM,IAAI,GAAgC,CAAQ,EAGnD,IAAM,EAAY,EAAQ,IAAI,CAC7B,WAAY,OACZ,SAAU,CAAC,GAAK,EAAS,KAAM,QAAS,IAAI,CAAC,EAC7C,OAAQ,CAAC,GAAK,EAAS,KAAM,QAAS,IAAI,CAAC,EAC3C,SAAU,CACT,cAAe,EAAS,KACxB,gBAAiB,EAAS,OAC1B,OACC,gGACF,CACD,CAAC,EACD,GAAI,CAAC,GAAW,CAAS,EAIxB,MAAM,IAAI,GAAgC,CAAQ,EAGnD,OADA,MAAM,EACC,EAAS,KClDV,SAAS,EAAoB,CAAC,EAAsB,CAC1D,OAAO,GAAwB,CAAO,EAGhC,SAAS,CAAkB,CACjC,EACA,EACA,EACC,CACD,EAAQ,WAAW,CAAE,QAAO,UAAS,CAAC,EAGhC,SAAS,EAAe,CAAC,EAA0B,CACzD,OAAQ,GAAO,CAAC,GAAG,IAAI,CAAC,IAAU,EAAM,KAAK,CAAC,EAAE,OAAO,OAAO,EAG/D,eAAsB,EAAwD,CAC7E,EACA,EACA,EACqC,CAErC,OADe,MAAM,GAAiB,EAAS,EAAM,CAAO,GAC9C,MAGf,eAAsB,EAErB,CACA,EACA,EACA,EACkB,CAElB,OADA,MAAM,GAAiC,CAAO,EACvC,GAAuB,EAAS,EAAM,CAAO,EAGrD,eAAsB,EAErB,CACA,EACA,EACA,EACwE,CAExE,OADA,MAAM,GAAiC,CAAO,EACvC,GAAmB,EAAS,EAAM,CAAO,EAGjD,eAAsB,EAErB,CACA,EACA,EACA,EACkB,CAElB,OADA,MAAM,GAAiC,CAAO,EACvC,GAAuB,EAAS,EAAM,CAAO,EAGrD,eAAsB,EAA4C,CACjE,EACA,EAC4C,CAC5C,GAAI,CAAC,EACJ,OAAO,KAGR,GAAI,CACH,IAAM,EAAW,GAAmB,CAAO,EACrC,EAAY,MAAM,GAAoB,CAAQ,EACpD,GAAI,CAAC,EACJ,OAAO,KAER,OAAO,GAAiC,CACvC,YACA,OAAQ,CAAE,SAAU,SAAU,WAAU,WAAU,CACnD,CAAC,EACA,KAAM,CACP,OAAO,MC9FT,IAAM,GAA+D,CACpE,YACC,8FACD,aACC,8HACD,eACC,0HACD,kBACC,wGACD,eAAgB,uCAChB,sBACC,4GACD,mBACC,8FACD,aACC,iGACF,EAEa,GACZ,GAA6B,IAAI,CAAC,KAAc,CAC/C,WACA,gBAAiB,GAA2B,EAC7C,EAAE,EAEU,GACZ,GAAuB,IAAI,CAAC,IAAU,EAAM,QAAQ,EAErD,SAAS,EAA4B,CACpC,EACmC,CACnC,OACC,GAAuB,KAAK,CAAC,IAAU,EAAM,WAAa,CAAQ,GAAK,KAIlE,SAAS,CAAuB,CAAC,EAAoC,CAC3E,IAAM,EAAQ,GAA6B,CAAQ,EACnD,GAAI,CAAC,EACJ,MAAU,MAAM,6CAA6C,KAAY,EAE1E,OAAO,EAAM,gBC5Bd,SAAS,EAAoB,CAC5B,EACC,CACD,MAAO,CACN,UAAW,EAAY,UACvB,KAAM,EAAY,KAClB,gBAAiB,EAAY,gBAC7B,eAAgB,EAAY,QAC5B,kBAAmB,EAAY,kBAC/B,oBAAqB,CACpB,mBAAoB,EAAY,aAAa,mBAC7C,qBAAsB,EAAY,aAAa,qBAC/C,uBAAwB,EAAY,aAAa,uBACjD,8BACC,EAAY,aAAa,0BAA0B,OACpD,qBAAsB,EAAY,aAAa,oBAChD,EACA,mBAAoB,EAAY,YAChC,iBAAkB,EAAY,iBAC3B,CACA,SAAU,EAAY,iBAAiB,SACvC,WAAY,EAAY,iBAAiB,WACzC,UAAW,EAAY,iBAAiB,UACxC,cAAe,EAAY,iBAAiB,cAC5C,MAAO,EAAY,iBAAiB,MACpC,QAAS,EAAY,iBAAiB,QAAQ,MAAM,EAAG,EAAE,CAC1D,EACC,IACJ,EAGD,SAAS,EAAc,CACtB,EACA,EACC,CACD,GAAI,IAAS,OACZ,OAAO,EAER,GAAI,IAAS,WACZ,MAAO,IACH,GAAqB,CAAW,EACnC,SAAU,EAAY,aAAa,QACpC,EAED,OAAO,GAAqB,CAAW,EAGjC,SAAS,EAAiB,EAAG,CACnC,MAAO,CACN,aAAc,EAAK,CAClB,YAAa,EAAwB,cAAc,EACnD,KAAM,GACN,QAAS,EACR,GACA,MAAO,EAAO,IAAyB,CACtC,IAAM,EAAU,MAAM,GACrB,EACA,sBACA,MACD,EACM,EAAO,EAAM,MAAQ,UACrB,EAAY,GAAqB,CAAO,EAC9C,GAAI,CAAC,EAMJ,OALA,EAAmB,EAAS,eAAgB,CAC3C,OAAQ,kBACR,OACA,cAAe,EAAU,IAC1B,CAAC,EACM,GAAe,EAAS,UAAW,CAAS,EAKpD,IAAM,GADL,EAAM,yBAA2B,IAAS,aAEf,EAAU,KAClC,MAAM,GAAyB,EAAU,KAAM,CAAO,EACtD,OACE,EAAc,GAA2B,EAAS,CACvD,kBACD,CAAC,EAWD,OAVA,EAAmB,EAAS,eAAgB,CAC3C,UAAW,EAAQ,GACnB,OAAQ,EAAQ,OAChB,OACA,oBAAqB,EAAY,QAAQ,MACzC,uBAAwB,EAAY,kBAAkB,MACtD,2BACC,EAAY,kBAAkB,YAAc,EAC7C,cAAe,EAAU,IAC1B,CAAC,EACM,EAAO,CACb,OAAQ,KACR,QAAS,gBAAgB,uBAA0B,EAAQ,OAC3D,OACA,QAAS,GAAe,EAAa,CAAI,EACzC,cAAe,EAAU,KACzB,WACD,CAAC,EAEH,CACD,CAAC,CACF,ECzGM,SAAS,EAAyB,EAAG,CAC3C,OAAO,EAGD,SAAS,EAAkC,EAAG,CACpD,OAAO,GAGD,SAAS,EAAqB,CAAC,EAAyB,CAC9D,IAAM,EAAyB,EAAQ,OAAO,KAC7C,CAAC,IAAY,EAAQ,SAAW,WACjC,EAEA,GAAI,EAAQ,gBACX,OAAO,EAGR,OAAO,EACJ,GAA2B,EAAuB,EAAE,EACpD,EAGG,SAAS,EAA2B,CAC1C,EACA,EACC,CACD,GAAI,EAAM,SAAW,SACpB,OAAO,EAER,GAAI,EAAM,SAAW,UAAY,EAAM,QAAQ,SAAW,YACzD,OAAO,GAA2B,CAAS,EAE5C,OAAO,EAAM,QAAQ,SAAW,YAC7B,EACA,GAGG,SAAS,EAA0B,EAAG,CAC5C,OAAO,EChCR,SAAS,EAAsB,CAC9B,EAC2C,CAC3C,GAAI,IAAa,OAChB,OAED,OAAO,OAAO,YACb,OAAO,QAAQ,CAAQ,EAAE,OAAO,GAAI,KAAW,IAAU,MAAS,CACnE,EAGM,SAAS,EAAe,EAAG,CACjC,MAAO,CACN,eAAgB,EAAK,CACpB,YAAa,EAAwB,gBAAgB,EACrD,KAAM,GACN,QAAS,EACR,GACA,MAAO,EAAO,IAAyB,CACtC,IAAM,EAAW,GAAuB,EAAM,QAAQ,EACtD,EAAmB,EAAS,sBAAuB,CAClD,UAAW,KACX,UAAW,YACX,UAAW,WACX,YAAa,YACb,WAAY,SACZ,KAAM,EAAM,MAAQ,KACpB,mBAAoB,IAAa,OACjC,aAAc,EAAM,MAAM,SAAS,QAAU,IAC9C,CAAC,EAED,IAAM,EAAQ,MAAM,GAAuB,EAAS,YAAa,IAC5D,EAAM,KAAO,CAAE,KAAM,EAAM,IAAK,EAAI,CAAC,KACrC,IAAa,OAAY,CAAE,UAAS,EAAI,CAAC,KACzC,EAAQ,UAAY,CAAE,UAAW,EAAQ,SAAU,EAAI,CAAC,EAC5D,uBAAwB,GAA0B,CACnD,CAAC,EAED,GAAI,CAAC,EAAM,MAAQ,EAAM,MAAM,SAAW,eACzC,OAAO,EAAO,EAAM,QAAQ,EAG7B,OAAO,GAA8B,EAAS,aAAc,CAC3D,KAAM,EAAM,IACb,CAAC,EAEH,CACD,CAAC,EAED,kBAAmB,EAAK,CACvB,YAAa,EAAwB,mBAAmB,EACxD,KAAM,GACN,QAAS,EACR,GACA,MAAO,EAAO,IAAyB,CACtC,IAAM,EAAa,GAAgB,EAAM,UAAU,EAUnD,OATA,EAAmB,EAAS,0BAA2B,CACtD,UAAW,KACX,UAAW,YACX,UAAW,WACX,YAAa,gBACb,WAAY,SACZ,wBAAyB,WACzB,cAAe,EAAW,QAAU,IACrC,CAAC,EACM,GAA8B,EAAS,eAAgB,CAC7D,YACD,CAAC,EAEH,CACD,CAAC,CACF,EC5EM,SAAS,EAAgB,EAAG,CAClC,MAAO,CACN,mBAAoB,EAAK,CACxB,YAAa,EAAwB,oBAAoB,EACzD,KAAM,GACN,QAAS,EACR,GACA,MAAO,EAAO,IAAyB,CACtC,GAAI,EAAM,QAAU,UAAW,CAC9B,IAAM,EACL,MAAM,GACL,EACA,EAAM,SACP,EAmBD,OAlBA,EACC,EACA,4BAA4B,EAAM,sCAAqC,EAAM,YAC7E,CACC,UAAW,KACX,kBAAmB,iBACnB,0BAA2B,mBAC3B,cAAe,2BACf,UAAW,gBACX,UAAW,SACX,YAAa,mBAAmB,EAAM,YACtC,WAAY,SACZ,sBAAuB,EAAM,OAC7B,sBAAuB,KACvB,UAAW,EAAM,aACb,EAAsB,CAAE,qBAAoB,EAAI,CAAC,CACtD,CACD,EACO,GACN,EACA,wBACA,CAAE,SAAU,CAAM,CACnB,EAwBD,OArBA,EACC,EACA,4BAA4B,EAAM,oCAClC,CACC,UAAW,KACX,kBAAmB,iBACnB,0BAA2B,mBAC3B,cAAe,2BACf,UAAW,gBACX,UAAW,eACX,YAAa,uBACb,WAAY,SACZ,sBAAuB,EAAM,OAC7B,sBAAuB,KACvB,YAAa,EAAM,YACnB,iBAAkB,EAAM,oBACpB,EAAM,gBACP,CAAE,gBAAiB,EAAM,eAAgB,EACzC,CAAC,CACL,CACD,EACO,GAA8B,EAAS,sBAAuB,CACpE,SAAU,CACX,CAAC,EAEH,CACD,CAAC,CACF,ECjEM,SAAS,EAAc,EAAG,CAChC,MAAO,CACN,eAAgB,EAAK,CACpB,YAAa,EAAwB,gBAAgB,EACrD,KAAM,GACN,QAAS,EACR,GACA,MAAO,EAAO,IAAyB,CACtC,IAAM,EACL,MAAM,GACL,EACA,EAAM,SACP,EAgBD,OAfA,EACC,EACA,EAAM,UACH,wBAAwB,EAAM,YAC9B,6CACH,CACC,UAAW,KACX,UAAW,WACX,UAAW,YACX,YAAa,EAAM,WAAa,wBAChC,WAAY,SACZ,UAAW,EAAM,WAAa,QAC1B,EAAsB,CAAE,qBAAoB,EAAI,CAAC,CACtD,CACD,EACO,GAA8B,EAAS,YAAa,IACtD,EAAM,UAAY,CAAE,UAAW,EAAM,SAAU,EAAI,CAAC,CACzD,CAAC,EAEH,CACD,CAAC,EAED,sBAAuB,EAAK,CAC3B,YAAa,EAAwB,uBAAuB,EAC5D,KAAM,GACN,QAAS,EACR,GACA,MAAO,EAAO,IAAyB,CACtC,GAAI,EAAM,MAAO,CAChB,IAAM,EACL,MAAM,GACL,EACA,EAAM,SACP,EAcD,OAbA,EACC,EACA,4BAA4B,EAAM,YAClC,CACC,UAAW,KACX,UAAW,eACX,UAAW,WACX,YAAa,EAAM,UACnB,WAAY,SACZ,UAAW,EAAM,aACb,EAAsB,CAAE,qBAAoB,EAAI,CAAC,CACtD,CACD,EACO,GAA8B,EAAS,gBAAiB,CAC9D,UAAW,EAAM,SAClB,CAAC,EAGF,IAAM,EAAS,EAAM,OACf,EACL,MAAM,GACL,EACA,EAAO,eAAe,SACvB,EA0BD,OAzBA,EACC,EACA,2DAA0D,EAAO,eAAe,WAAa,YAC7F,CACC,UAAW,KACX,kBAAmB,iBACnB,0BAA2B,mBAC3B,cAAe,2BACf,UAAW,WACX,UAAW,YACX,YACC,EAAO,eAAe,WAAa,qBACpC,WAAY,SACZ,oBACC,EAAO,SAAW,KAAO,YAAc,cACxC,sBAAuB,EAAO,OAC9B,oBAAqB,KACrB,sBAAuB,KACvB,UAAW,EAAO,eAAe,WAAa,KAC9C,gBAAiB,EAAO,cAAc,OACtC,iBAAkB,EAAO,kBAAoB,KAC7C,eAAgB,EAAO,cAAgB,UACnC,EAAsB,CAAE,qBAAoB,EAAI,CAAC,CACtD,CACD,EACO,GAA8B,EAAS,eAAgB,CAC7D,QACD,CAAC,EAEH,CACD,CAAC,CACF,EC5FD,eAAe,EAAe,CAAC,EAAsB,EAAmB,CAEvE,OADA,EAAmB,EAAS,YAAY,IAAa,CAAE,WAAU,CAAC,EAC3D,GAA2B,EAAS,mBAAoB,CAC9D,YACA,YAAa,EACb,mBAAoB,GAAmC,CACxD,CAAC,EAGF,eAAe,EAAY,CAC1B,EACA,EACA,EACC,CAID,OAHA,EAAmB,EAAS,uBAAuB,KAAS,CAC3D,YAAa,CACd,CAAC,EACM,GAA2B,EAAS,gBAAiB,CAC3D,UACI,EAAU,CAAE,SAAQ,EAAI,CAAC,EAC7B,YAAa,GAA2B,CACzC,CAAC,EAGF,eAAe,EAAkB,CAAC,EAAsB,CACvD,IAAM,EAAU,MAAM,GACrB,EACA,uBACA,MACD,EACM,EAAW,GAAgB,EAAS,GAAsB,CAAO,CAAC,EAExE,OADA,EAAmB,EAAS,eAAgB,EAAS,QAAQ,EACtD,EAAS,QAGjB,eAAe,EAAiB,CAAC,EAAsB,EAAmB,CACzE,IAAM,EAAQ,MAAM,GAAqB,EAAS,uBAAwB,CACzE,WACD,CAAC,EAOD,GANA,EAAmB,EAAS,gBAAgB,IAAa,CACxD,YACA,OAAQ,GAAO,QAAU,KACzB,OAAQ,GAAO,QAAU,EAC1B,CAAC,EAEG,CAAC,EACJ,OAAO,GACN,EACA,GAAmC,CACpC,EAGD,IAAM,EAAY,GAAqB,CAAO,EAC9C,OAAO,MAAM,GACZ,EACA,EACA,GAA4B,EAAW,CAAK,EAC5C,CACD,EAGM,SAAS,EAAiB,EAAG,CACnC,MAAO,CACN,aAAc,EAAK,CAClB,YAAa,EAAwB,cAAc,EACnD,KAAM,GACN,QAAS,EACR,GACA,MAAO,EAAO,IAAyB,CACtC,OAAQ,EAAM,YACR,WAAY,CAChB,GAAI,CAAC,EAAM,UACV,MAAU,MACT,kDACD,EAED,OAAO,GAAgB,EAAS,EAAM,SAAS,CAChD,KACK,QAAS,CACb,GAAI,CAAC,EAAM,KACV,MAAU,MAAM,0CAA0C,EAE3D,OAAO,GAAa,EAAS,EAAM,KAAM,EAAM,OAAO,CACvD,KACK,UACJ,OAAO,GAAmB,CAAO,MAC7B,OAAQ,CACZ,GAAI,CAAC,EAAM,UACV,MAAU,MAAM,8CAA8C,EAE/D,OAAO,GAAkB,EAAS,EAAM,SAAS,CAClD,GAGH,CACD,CAAC,CACF,EC/FD,SAAS,EAAyB,EAAG,CACpC,OAAO,GAAkB,CACxB,0BACA,oCACA,6BACA,sBACA,2BACD,CAAC,EAGK,SAAS,EAAgB,EAAG,CAClC,MAAO,CACN,YAAa,EAAK,CACjB,YAAa,EAAwB,aAAa,EAClD,KAAM,GACN,QAAS,EACR,GACA,MAAO,EAAO,IAAyB,CACtC,IAAM,EAAU,MAAM,GACrB,EACA,sBACA,MACD,EACM,EAAY,GAAqB,CAAO,EACxC,EAAY,MAAM,GAAwB,EAAS,EAAS,CACjE,kBAAmB,EACpB,CAAC,EACK,EAAe,EAAU,GAAoB,CAAO,EAAI,CAAC,EAqB/D,OApBA,EAAmB,EAAS,cAAe,CAC1C,UAAW,GAAS,IAAM,KAC1B,OAAQ,GAAS,QAAU,UAC3B,SAAU,GAAS,UAAY,KAC/B,gBAAiB,GAAS,UAAU,iBAAmB,KACvD,KAAM,EAAM,MAAQ,WACpB,UAAW,EAAU,OACrB,kBAAmB,EAAa,OAChC,gBAAiB,EAAa,OAC7B,CAAC,IAAQ,EAAI,SAAW,QACzB,EAAE,OACF,iBAAkB,EAAa,OAC9B,CAAC,IACA,EAAI,SAAW,WACf,EAAI,SAAW,aACf,EAAI,SAAW,aACjB,EAAE,OACF,cAAe,EAAU,KACzB,yBAA0B,EAAU,eACrC,CAAC,EACM,MAAM,GACZ,EACA,EAAM,MAAQ,WACd,EACA,CACD,EAEF,CACD,CAAC,CACF,ECjFD,SAAS,EAAsD,CAAC,EAAa,CAC5E,IAAM,EAAY,IAAI,IAAI,OAAO,KAAK,CAAK,CAAC,EACtC,EAAiB,IAAI,IAAY,EAAiC,EAClE,EAAU,GAAkC,OACjD,CAAC,IAAS,CAAC,EAAU,IAAI,CAAI,CAC9B,EACM,EAAQ,CAAC,GAAG,CAAS,EAAE,OAAO,CAAC,IAAS,CAAC,EAAe,IAAI,CAAI,CAAC,EAEvE,GAAI,EAAQ,OAAS,GAAK,EAAM,OAAS,EACxC,MAAU,MACT,CACC,EAAQ,OAAS,EACd,sCAAsC,EAAQ,KAAK,IAAI,IACvD,KACH,EAAM,OAAS,EACZ,kCAAkC,EAAM,KAAK,IAAI,IACjD,IACJ,EACE,OAAO,CAAC,IAA+B,IAAY,IAAI,EACvD,KAAK,IAAI,CACZ,EAGD,OAAO,OAAO,YACb,GAAkC,IAAI,CAAC,IAAS,CAAC,EAAM,EAAM,EAAK,CAAC,CACpE,EAGD,SAAS,EAAe,EAAG,CAC1B,OAAO,GAAoB,IACvB,GAAiB,KACjB,GAAkB,KAClB,GAAgB,KAChB,GAAe,KACf,GAAiB,KACjB,GAAkB,CACtB,CAAC,EAGK,SAAS,EAAW,CAAC,EAAc,CAEzC,OADA,GAAc,CAAG,EAAE,OAAQ,6BAA6B,EACjD,GAAgB,ECnCxB,SAAS,EAA6B,CACrC,EAC2D,CAC3D,MAAO,OAAO,EAAQ,IAAW,CAChC,MAAM,GAAmC,EAAK,CAAM,GAItD,IAAM,GAAqB,MAAO,IAAQ,CACzC,IAAM,EAAM,GAAc,CAAG,EAC7B,EAAI,OAAQ,0BAA0B,EAEtC,IAAM,EAAgB,GAAyB,EAM/C,OALA,MAAM,GAAmB,EAAe,CAAG,EAG3C,GAAyB,EAAe,CAAG,EAEpC,CACN,OAAQ,GAAiB,CAAG,EAC5B,KAAM,GAAY,CAAG,EACrB,MAAO,CACN,qCAAsC,GAA8B,CAAG,EACvE,kCAAmC,MAClC,EACA,EACA,IACI,CACJ,MAAM,GAAuC,EAAS,CAAM,EAE9D,CACD,GAGc",
|
|
92
|
-
"debugId": "
|
|
107
|
+
"mappings": "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CC,6FACD,cAAe,gBACf,aAAc,yBACd,UAAW,GACX,eAAgB,EACjB,CACD,EACA,0BAA2B,CAC1B,MAAO,CACN,KAAM,SACN,SAAU,CACT,UAAW,kCACX,eACC,kNACD,cAAe,gBACf,aAAc,2BACd,iBAAkB,0BAClB,YAAa,EACb,UAAW,GACX,eAAgB,EACjB,CACD,EACA,QAAS,CACR,KAAM,SACN,SAAU,CACT,UAAW,oCACX,eACC,iGACD,cAAe,gBACf,aAAc,2BACd,iBAAkB,4BAClB,YAAa,EACb,UAAW,GACX,eAAgB,EACjB,CACD,CACD,EACA,yBAA0B,CACzB,MAAO,CACN,KAAM,SACN,SAAU,CACT,UAAW,2BACX,eACC,yIACD,cAAe,mBACf,aAAc,4BACd,iBAAkB,0BAClB,YAAa,EACb,UAAW,GACX,eAAgB,EACjB,CACD,EACA,QAAS,CACR,KAAM,SACN,SAAU,CACT,UAAW,8BACX,eACC,mGACD,cAAe,mBACf,aAAc,4BACd,iBAAkB,6BAClB,YAAa,EACb,UAAW,GACX,eAAgB,EACjB,CACD,CACD,EACA,uBAAwB,CACvB,KAAM,QACN,SAAU,CACT,UAAW,yBACX,eACC,kGACD,cAAe,gBACf,aAAc,yBACd,UAAW,GACX,eAAgB,EACjB,CACD,EACA,qBAAsB,CACrB,KAAM,SACN,SAAU,CACT,UAAW,+BACX,eACC,2NACD,cAAe,mBACf,aAAc,sCACd,iBAAkB,uBAClB,YAAa,EACb,UAAW,GACX,eAAgB,EACjB,CACD,EACA,qBAAsB,CACrB,KAAM,QACN,SAAU,CACT,UAAW,uBACX,eACC,sKACD,cAAe,gBACf,aAAc,yBACd,UAAW,GACX,eAAgB,EACjB,CACD,CACD,EAEO,SAAS,EAAuB,CACtC,EACA,EACA,EACA,EACqB,CACrB,IAAM,EAAa,GAAgC,GAC7C,EACL,SAAU,EACP,EACA,EACC,EAAW,MACX,EAAW,QACV,EAAW,EACd,IAAK,EAAS,SAAU,SAAQ,EAChC,EAAS,SACZ,OAAO,EAAS,OAAS,QACtB,GAA0B,EAAW,CAAQ,EAC7C,GAAoB,CAAQ,EC1LzB,SAAS,CAAO,CACtB,EACA,EACA,EACsB,CACtB,MAAO,CACN,GAAI,GACJ,aACI,EAAW,CAAE,UAAS,EAAI,CAAC,KAC3B,EAAU,CAAE,SAAQ,EAAI,CAAC,CAC9B,EAGM,SAAS,CAAU,CAAC,EAA+B,CACzD,MAAO,CAAE,GAAI,GAAM,OAAM,EAGnB,SAAS,EAAc,CAAC,EAA2B,CACzD,MAAO,IACH,EACH,UAAW,IACP,EAAQ,UACX,gBAAiB,KACjB,cAAe,KACf,YAAa,KACb,gBAAiB,KACjB,YAAa,KACb,aAAc,KACd,kBAAmB,KACnB,qBAAsB,KACtB,kBAAmB,CAAC,CACrB,CACD,EC1CD,SAAS,EAAe,CACvB,EAIU,CACV,OAAO,QACN,GACC,EAAO,SAAW,UAClB,EAAO,iBAAiB,SAAW,CACrC,EAGD,SAAS,EAA8B,CACtC,EACA,EACA,EACgB,CAChB,GAAI,CAAC,GAAsC,EAAQ,IAAI,EACtD,OAAO,KAGR,IAAM,EAAW,EAAQ,UAAU,qBACnC,GAAI,CAAC,GAAY,EAAS,SAAW,WACpC,MAAO,+EAER,GAAI,CAAC,EACJ,OAAO,EAAS,QAAU,WAAa,EAAS,YAAc,EAC3D,KACA,+EAEJ,GAAI,EAAS,QAAU,QACtB,MAAO,8FAER,GAAI,EAAS,cAAgB,GAAyB,EAAQ,IAAI,EACjE,MAAO,0IAER,OAAO,KAGR,SAAS,EAAyB,CACjC,EACA,EACgB,CAChB,GAAI,CAAC,EAAO,YACX,OAAO,KAER,GAAI,CAAC,GAAgB,EAAO,WAAW,EACtC,MAAO,gFAER,GACC,EAAO,YAAY,cAAgB,GAAyB,EAAQ,IAAI,EAExE,MAAO,iHAER,OAAO,KAGR,SAAS,EAAmB,CAC3B,EACU,CACV,OACC,EAAc,OAAS,GACvB,EAAc,MAAM,CAAC,IAAS,EAAK,SAAW,QAAQ,EAIxD,SAAS,EAAc,CACtB,EACA,EACA,EACA,EACyB,CACzB,OAAO,EACN,EACA,GAAwB,EAAW,EAAiB,CAAI,CACzD,EAiBM,SAAS,EAAsC,CACrD,EACA,EACA,EACA,EACyB,CACzB,GACC,EAAiB,SAAS,MAC1B,EAAiB,QAAQ,OAAS,YAElC,OAAO,EACN,kFAAkF,EAAiB,QAAQ,OAC5G,EAGD,GAAI,EAAiB,cAAc,SAAW,EAC7C,OAAO,GACN,EACA,EACA,kFACA,oBACD,EAED,GAAI,CAAC,GAAoB,EAAiB,aAAa,EACtD,OAAO,GACN,EACA,EACA,mFACA,oBACD,EAGD,IAAM,EAA0B,GAC/B,EACA,EACA,CACD,EACA,GAAI,EACH,OAAO,GACN,EACA,EACA,EACA,2BACD,EAGD,GAAI,CAAC,GAAmB,EAAiB,kBAAoB,WAC5D,OAAO,GACN,EACA,GACA,yEACA,0BACD,EAED,GAAI,GAAmB,EAAiB,kBAAoB,QAC3D,OAAO,GACN,EACA,GACA,4EACA,0BACD,EAGD,GAAI,CAAC,GAAgB,EAAiB,aAAa,EAClD,OAAO,GACN,EACA,EACA,kFACA,wBACD,EAGD,IAAM,EAAqB,GAC1B,EACA,CACD,EACA,GAAI,EACH,OAAO,GACN,EACA,EACA,EACA,sBACD,EAED,GAAI,GAAmB,CAAC,EAAiB,YACxC,OAAO,GACN,EACA,GACA,mEACA,sBACD,EAGD,OAAO,EAAQ,MAAS,ECrMlB,SAAS,EAAoB,CACnC,EACA,EACU,CACV,IAAM,EAAa,EAAO,EAC1B,MAAO,IACH,EACH,OAAQ,YACR,QAAS,CACR,KAAM,YACN,UACA,YACD,EACA,UAAW,IACP,EAAQ,UACX,gBAAiB,KACjB,YAAa,EACb,gBAAiB,WAClB,EACA,WAAY,IACR,EAAQ,WACX,YAAa,CACd,CACD,EAGD,SAAS,EAAwB,CAChC,EACA,EACY,CACZ,OAAO,EAAS,IAAI,CAAC,IACpB,EAAQ,KAAO,EAAY,IAAK,EAAS,OAAQ,WAAY,EAAI,CAClE,EAGD,SAAS,EAAoB,CAC5B,EACA,EACA,EACY,CACZ,OAAO,EAAS,IAAI,CAAC,IACpB,EAAQ,KAAO,EAAY,IAAK,EAAS,QAAO,EAAI,CACrD,EAGD,SAAS,EAA4B,CACpC,EACA,EACA,EAC4B,CAC5B,IAAM,EAAO,EAAK,KAClB,GAAI,CAAC,EACJ,OAAO,EAAK,sCAAsC,EAEnD,IAAM,EAAwB,GAA4B,CAAI,EAC9D,GAAI,EACH,OAAO,EAAK,CAAqB,EAGlC,IAAM,EAAW,IACb,EACH,SAAU,GAAyB,EAAK,SAAU,CAAS,CAC5D,EACM,EAAc,IAChB,EACH,KAAM,EACN,UAAW,IACP,EAAK,UACR,gBAAiB,IAClB,CACD,EAEA,OAAO,EACN,GAAyB,EAAU,EAAS,QAAQ,EACjD,GAAqB,EAAa,CAAO,EACzC,IAAK,EAAa,OAAQ,OAAQ,CACtC,EAGD,SAAS,EAAmB,CAAC,EAAkB,EAAgC,CAC9E,MAAO,IACH,EACH,OACA,UAAW,IACP,EAAQ,UACX,gBAAiB,IAClB,CACD,EAGD,SAAS,EAA+B,CACvC,EACA,EACA,EACA,EACA,EACU,CACV,MAAO,IACH,GAAoB,EAAM,IACzB,EACH,SAAU,GAAqB,EAAK,SAAU,EAAW,CAAa,CACvE,CAAC,EACD,OAAQ,CACT,EAGD,SAAS,EAA4B,CACpC,EACA,EACA,EACA,EACA,EACU,CACV,IAAM,EAAO,EAAK,KAClB,GAAI,CAAC,EACJ,OAAO,EAGR,GAAI,IAAgB,kBACnB,MAAO,IACH,EACH,KAAM,KACN,OAAQ,WACR,SAAU,UACV,SAAU,IACN,EAAK,SACR,UAAW,EACR,CAAC,GAAG,EAAK,SAAS,UAAW,CAAY,EACzC,EAAK,SAAS,SAClB,EACA,UAAW,IACP,EAAK,UACR,gBAAiB,IAClB,EACA,WAAY,IACR,EAAK,WACR,WAAY,IACb,CACD,EAOD,GAHC,GAAoB,CAAI,EAAE,OAAS,QACnC,CAAC,EAAO,SAAS,aAChB,EAAO,SAAS,WAAa,EAAO,SAAS,gBAE9C,OAAO,GACN,EACA,EACA,EACA,QACA,SACD,EAGD,OAAO,GACN,EACA,EACA,EACA,UACA,SACD,EAGM,SAAS,EAAoB,CACnC,EACA,EACA,EAC4B,CAC5B,GAAI,CAAC,EAAQ,KACZ,OAAO,EAAK,wDAAwD,EAGrE,IAAM,EAAa,EAAO,EACpB,EAAmB,GAAsB,CAAM,EACrD,GAAI,EAAiB,SAAW,KAAM,CACrC,IAAM,EAAkB,GACvB,EAAQ,KACR,CACD,EACM,EAAa,GAClB,EACA,EACA,EACA,CACD,EACA,GAAI,CAAC,EAAW,GACf,OAAO,EAAK,EAAW,QAAS,EAAW,QAAQ,EAGpD,IAAM,EAAO,GACZ,EACA,EACA,EACA,CACD,EACA,OAAO,GAA6B,EAAM,EAAW,EAAO,OAAO,EAGpE,IAAM,EAAe,GACpB,EACA,EACA,CACD,EACA,OAAO,EACN,GACC,GAAmB,EAAS,EAAW,EAAkB,CAAU,EACnE,EACA,EACA,EAAiB,QAAQ,KACzB,CACD,CACD,EClOD,SAAS,EAAiB,CAAC,EAAkB,EAAiC,CAC7E,IAAM,EAAY,EAAQ,WAAa,CAAC,EAClC,EAAY,EAAQ,WAAa,CAAC,EACxC,OACC,EAAU,MAAM,CAAC,IAAO,EAAU,IAAI,CAAE,CAAC,GACzC,EAAU,MAAM,CAAC,IAAO,EAAU,IAAI,CAAE,CAAC,EAQ3C,SAAS,EAAoB,CAC5B,EACA,EACwB,CACxB,IAAM,EAAO,IAAI,IAAI,EAAS,IAAI,CAAC,IAAY,CAAC,EAAQ,GAAI,CAAO,CAAC,CAAC,EAC/D,EAAY,IAAI,IACrB,EACE,OAAO,CAAC,IAAY,EAAQ,SAAW,WAAW,EAClD,IAAI,CAAC,IAAY,EAAQ,EAAE,CAC9B,EAEA,GAAI,EAAa,CAChB,IAAM,EAAU,EAAK,IAAI,CAAW,EACpC,GAAI,CAAC,EACJ,MAAO,CACN,GAAI,GACJ,QAAS,YAAY,yCACrB,OAAQ,iBACT,EAED,GAAI,EAAQ,SAAW,YACtB,MAAO,CACN,GAAI,GACJ,QAAS,YAAY,2BACrB,OAAQ,iBACT,EAED,GAAI,CAAC,GAAkB,EAAS,CAAS,EACxC,MAAO,CACN,GAAI,GACJ,QAAS,YAAY,iEACrB,OAAQ,iBACT,EAGD,MAAO,CAAE,GAAI,GAAM,MAAO,CAAQ,EAGnC,IAAM,EAAW,EAAS,KACzB,CAAC,IACA,EAAQ,SAAW,aAAe,GAAkB,EAAS,CAAS,CACxE,EACA,GAAI,CAAC,EACJ,MAAO,CACN,GAAI,GACJ,QAAS,yDACT,OAAQ,SACT,EAGD,MAAO,CAAE,GAAI,GAAM,MAAO,CAAS,EAGpC,SAAS,EAAqB,CAC7B,EACA,EACY,CACZ,OAAO,EAAS,IAAI,CAAC,IAAY,CAChC,GAAI,EAAQ,KAAO,EAClB,OAAO,EAAQ,SAAW,cACvB,IAAK,EAAS,OAAQ,SAAU,EAChC,EAGJ,MAAO,IAAK,EAAS,OAAQ,aAAc,EAC3C,EAGF,SAAS,EAAQ,CAChB,EACA,EACsD,CACtD,MAAO,CACN,QAAS,IACL,EACH,OAAQ,UACR,UAAW,IACP,EAAQ,UACX,gBAAiB,KACjB,YAAa,EACb,gBAAiB,SAClB,CACD,EACA,QAAS,KACT,OAAQ,CACT,EAGM,SAAS,EAAuB,CACtC,EACA,EACU,CACV,IAAM,EAAkB,EAAQ,UAAU,gBAC1C,GACC,EAAQ,SAAW,WACnB,CAAC,GACA,IAAgB,QAAa,IAAgB,EAE9C,MAAO,GAKR,OAHgB,EAAQ,MAAM,SAAS,KACtC,CAAC,IAAY,EAAQ,KAAO,CAC7B,GACgB,SAAW,cAG5B,SAAS,EAAe,CACvB,EACA,EAKE,CACF,IAAM,EAAO,EAAQ,KACrB,GAAI,CAAC,EACJ,OAAO,EAAK,mCAAmC,EAGhD,IAAM,EAAW,IACb,EACH,SAAU,GAAsB,EAAK,SAAU,CAAS,CACzD,EACM,EAAuB,IACzB,EACH,KAAM,EACN,OAAQ,UACR,UAAW,IACP,EAAQ,UACX,gBAAiB,EACjB,cAAe,EACf,YAAa,oBAAoB,MACjC,gBAAiB,KACjB,qBAAsB,IACvB,CACD,EAEA,OAAO,EAAQ,CACd,QAAS,EACT,QACC,EAAS,SAAS,KAAK,CAAC,IAAY,EAAQ,KAAO,CAAS,GAAK,IACnE,CAAC,EAGK,SAAS,EAAQ,CACvB,EACA,EACA,EAKE,CACF,GAAI,EAAQ,SAAW,YACtB,OAAO,EACN,uEACD,EAED,GAAI,CAAC,EAAQ,MAAQ,EAAQ,WAAa,WACzC,OAAO,EAAK,mCAAmC,EAEhD,IAAM,EAAwB,GAA4B,EAAQ,IAAI,EACtE,GAAI,EACH,OAAO,EAAK,CAAqB,EAElC,GAAI,GAAwB,EAAS,CAAW,EAAG,CAClD,IAAM,EAAkB,EAAQ,UAAU,gBAC1C,OAAO,EAAQ,CACd,UACA,QACC,EAAQ,KAAK,SAAS,KACrB,CAAC,IAAY,EAAQ,KAAO,CAC7B,GAAK,KACN,OAAQ,gBACT,CAAC,EAEF,GAAI,EAAQ,UAAU,gBACrB,OAAO,EACN,YAAY,EAAQ,UAAU,0CAC/B,EAGD,GACC,EAAQ,KAAK,SAAS,MAAM,CAAC,IAAY,EAAQ,SAAW,WAAW,EAEvE,OAAO,EAAQ,CACd,QAAS,EAAc,EAAS,oCAAoC,EACpE,QAAS,KACT,OAAQ,UACT,CAAC,EAGF,IAAM,EAAe,GAAqB,EAAQ,KAAK,SAAU,CAAW,EAC5E,GAAI,CAAC,EAAa,GACjB,OAAO,EAAa,SAAW,kBAC5B,EAAK,EAAa,OAAO,EACzB,EAAQ,GAAS,EAAS,EAAa,OAAO,CAAC,EAGnD,OAAO,GAAgB,EAAS,EAAa,MAAM,EAAE,EC9M/C,SAAS,EAAQ,CACvB,EACA,EAKE,CACF,OAAO,GAAkB,EAAS,EAAa,EAAoB,EAG7D,SAAS,EAAW,CAC1B,EACA,EAC4B,CAC5B,GAAI,CAAC,EAAQ,KACZ,OAAO,EAAK,wDAAwD,EAErE,GAAI,CAAC,EAAQ,UAAU,gBACtB,OAAO,EAAK,yCAAyC,EAEtD,GAAI,EAAO,cAAc,YAAc,EAAQ,UAAU,gBACxD,OAAO,EACN,0BAA0B,EAAO,cAAc,6CAA6C,EAAQ,UAAU,mBAC/G,EAGD,OAAO,GACN,EACA,EAAQ,UAAU,gBAClB,CACD,ECLD,SAAS,EAAa,CAAC,EAAiC,CACvD,IAAM,EAAW,CAAC,GAAG,EAAU,QAAQ,EAAE,OACxC,CAAC,IAAoD,IAAY,MAClE,EAEA,MAAO,CACN,QAAS,EAAU,QACnB,SAAU,EAAU,SACpB,aAAc,CAAC,GAAI,EAAU,cAAgB,CAAC,CAAE,EAChD,sBAAuB,CAAC,GAAI,EAAU,uBAAyB,CAAC,CAAE,EAClE,SAAU,EAAU,UAAY,iBAChC,oBAAqB,EAAU,qBAAuB,iBACtD,iBAAkB,EAAU,iBAC5B,eAAgB,EAAU,eACvB,CACA,aAAc,EAAU,eAAe,cAAgB,WACvD,SAAU,EAAU,eAAe,UAAY,kBAC/C,aAAc,EAAU,eAAe,cAAgB,GACvD,kBACC,EAAU,eAAe,mBAAqB,cAC3C,EAAU,eAAe,eAAiB,GAC3C,CAAE,aAAc,EAAK,EACrB,CAAC,CACL,EACC,OACH,MAAO,EAAU,MAAQ,CAAC,GAAG,EAAU,KAAK,EAAI,OAChD,SAAU,EAAS,IAAI,CAAC,KAAa,CACpC,GAAI,EAAQ,IAAM,GAClB,MAAO,EAAQ,OAAS,GACxB,QAAS,EAAQ,SAAW,GAC5B,YAAa,CAAC,GAAI,EAAQ,aAAe,CAAC,CAAE,KACxC,EAAQ,YAAc,CAAE,YAAa,CAAC,GAAG,EAAQ,WAAW,CAAE,EAAI,CAAC,EACvE,aAAc,CAAC,GAAI,EAAQ,cAAgB,CAAC,CAAE,KAC1C,EAAQ,UAAY,CAAE,UAAW,CAAC,GAAG,EAAQ,SAAS,CAAE,EAAI,CAAC,KAC7D,EAAQ,UAAY,CAAE,UAAW,CAAC,GAAG,EAAQ,SAAS,CAAE,EAAI,CAAC,EACjE,OAAQ,UACR,SAAU,EAAQ,UAAY,YAC9B,eAAgB,EAAQ,gBAAkB,EAC3C,EAAE,CACH,EAGD,SAAS,EAAoB,CAC5B,EACA,EACqC,CACrC,IAAQ,QAAS,EACjB,GAAI,CAAC,EACJ,OAAO,EAAK,EAAS,WAAW,EAEjC,GAAI,EAAQ,SAAW,YAAc,EAAQ,UAAU,gBACtD,OAAO,EAAK,EAAS,aAAa,EAGnC,OAAO,EAAQ,IACX,EACH,KAAM,IACF,EACH,SAAU,CAAC,GAAG,EAAK,QAAQ,CAC5B,CACD,CAAC,EAGK,SAAS,EAAS,CACxB,EACA,EACA,EAC4B,CAC5B,IAAM,EAAO,GAAc,CAAS,EAC9B,EAAe,GAAqB,EAAQ,SAAU,GAAY,CAAC,CAAC,EACpE,EAAiB,GAAkB,CAAI,EAC7C,GAAI,EACH,OAAO,EAAK,CAAc,EAE3B,IAAM,EAA2B,GAChC,EACA,CACD,EACA,GAAI,EACH,OAAO,EAAK,CAAwB,EAErC,IAAM,EAAwB,GAA4B,CAAI,EAC9D,GAAI,EACH,OAAO,EAAK,CAAqB,EAGlC,IAAM,EAAgB,IAClB,EACH,OACA,OAAQ,WACR,SAAU,UACV,QAAS,KACT,WAAY,IACR,EAAQ,WACX,WAAY,KACZ,YAAa,IACd,EACA,MAAO,CAAC,EACR,SAAU,EACV,UAAW,IACP,EAAQ,SACZ,CACD,EACA,OAAO,EAAQ,GAAe,CAAI,CAAC,EAG7B,SAAS,EAA4B,CAC3C,EACA,EACU,CACV,IAAQ,QAAS,EACjB,GACC,CAAC,GACD,EAAQ,WAAa,YACrB,EAAQ,SAAW,SACnB,EAAQ,UAAU,kBAAoB,KAEtC,MAAO,GAER,GAAI,CAAC,GAAc,EAAW,SAAW,EACxC,MAAO,GAER,GAAI,EAAW,SAAW,EAAK,SAAS,OACvC,MAAO,GAGR,IAAM,EAAsB,IAAI,IAAI,CAAU,EAC9C,GAAI,EAAoB,OAAS,EAAW,OAC3C,MAAO,GAGR,IAAM,EAAqB,IAAI,IAC9B,EAAK,SAAS,IAAI,CAAC,IAAY,EAAQ,EAAE,CAC1C,EACA,OACC,EAAoB,OAAS,EAAmB,MAChD,CAAC,GAAG,CAAmB,EAAE,MAAM,CAAC,IAC/B,EAAmB,IAAI,CAAS,CACjC,EAIK,SAAS,EAAW,CAC1B,EACA,EAC4B,CAC5B,GAAI,GAA6B,EAAS,CAAU,EACnD,OAAO,EAAQ,CAAO,EAEvB,GACC,EAAQ,MACR,EAAQ,WAAa,YACrB,EAAQ,SAAW,SACnB,EAAQ,UAAU,kBAAoB,MACtC,GACA,EAAW,OAAS,EAEpB,OAAO,EACN,oFACD,EAGD,IAAM,EAAW,GAAqB,EAAS,CAC9C,YAAa,qCACb,cACC,oHACF,CAAC,EACD,GAAI,CAAC,EAAS,GACb,OAAO,EAGR,IAAM,EAAO,EAAS,MAEtB,GAAI,GAAc,EAAW,OAAS,EAAG,CACxC,IAAM,EAAS,GACd,EAAK,KAAK,SACV,EACA,CAAC,IACA,YAAY,sFACb,EACD,EACA,GAAI,CAAC,EAAO,GACX,OAAO,EAAK,EAAO,KAAK,EAGzB,EAAK,KAAK,SAAW,EAAO,MAC5B,IAAM,EAAwB,GAA4B,EAAK,IAAI,EACnE,GAAI,EACH,OAAO,EAAK,CAAqB,EAInC,OAAO,EAAQ,IACX,EACH,SAAU,WACV,OAAQ,QACR,WAAY,IACR,EAAK,WACR,WAAY,EAAO,CACpB,CACD,CAAC,EAGK,SAAS,EAAkB,CACjC,EACA,EAC4B,CAC5B,IAAM,EAAW,GAAqB,EAAS,CAC9C,YAAa,oCACb,cACC,+FACF,CAAC,EACD,GAAI,CAAC,EAAS,GACb,OAAO,EAER,GAAI,EAAW,SAAW,EACzB,OAAO,EAAK,4DAA4D,EAGzE,IAAM,EAAO,EAAS,MAChB,EAAS,GACd,EAAK,KAAK,SACV,EACA,CAAC,IACA,YAAY,oEACb,EACD,EACA,GAAI,CAAC,EAAO,GACX,OAAO,EAAK,EAAO,KAAK,EAGzB,EAAK,KAAK,SAAW,EAAO,MAC5B,IAAM,EAAwB,GAA4B,EAAK,IAAI,EACnE,GAAI,EACH,OAAO,EAAK,CAAqB,EAElC,OAAO,EAAQ,IACX,GAAe,CAAI,EACtB,SAAU,UACV,OAAQ,UACT,CAAC,ECvQF,SAAS,EAAiB,CACzB,EACA,EACc,CACd,IAAM,EAAa,IAAI,IACnB,EAAU,GAEd,MAAO,EAAS,CACf,EAAU,GACV,QAAW,KAAW,EAAU,CAC/B,GAAI,EAAQ,KAAO,GAAa,EAAW,IAAI,EAAQ,EAAE,EACxD,SAGD,IAAM,EAAe,IAAI,IAAI,CAC5B,GAAI,EAAQ,WAAa,CAAC,EAC1B,GAAI,EAAQ,WAAa,CAAC,CAC3B,CAAC,EACD,GACC,EAAa,IAAI,CAAS,GAC1B,CAAC,GAAG,CAAU,EAAE,KAAK,CAAC,IAAO,EAAa,IAAI,CAAE,CAAC,EAEjD,EAAW,IAAI,EAAQ,EAAE,EACzB,EAAU,IAKb,OAAO,EAGR,SAAS,EAAqB,CAC7B,EACA,EACY,CACZ,OAAO,EAAS,IAAI,CAAC,IACpB,EAAS,IAAI,EAAK,EAAE,EAAI,IAAK,EAAM,OAAQ,SAAU,EAAI,CAC1D,EAGD,SAAS,EAAsB,CAC9B,EACA,EACC,CACD,EAAU,cAAgB,KAC1B,EAAU,kBAAoB,CAAC,EAC/B,EAAU,YAAc,KACxB,EAAU,aAAe,KACzB,EAAU,kBAAoB,KAC9B,EAAU,qBAAuB,KACjC,EAAQ,UAAY,CAAC,EACrB,EAAQ,MAAQ,CAAC,EAGlB,SAAS,EAAiB,CAAC,EAAmB,EAA+B,CAC5E,OAAO,EAAgB,EACpB,kBAAkB,4CAClB,kBAAkB,iBAGtB,SAAS,EAAoC,CAC5C,EACA,EACyB,CACzB,GAAI,CAAC,EAAQ,UAAU,gBACtB,OAAO,EAAK,uCAAuC,EAEpD,GAAI,EAAS,YAAc,EAAQ,UAAU,gBAC5C,OAAO,EACN,8BAA8B,EAAS,6CAA6C,EAAQ,UAAU,mBACvG,EAGD,OAAO,EAAQ,MAAS,EAGzB,SAAS,EAA8B,CACtC,EAC2C,CAC3C,OAAO,EAAS,QAAU,UAG3B,SAAS,EAAyB,CAAC,EAAyB,CAC3D,GAAI,MAAM,QAAQ,CAAK,EACtB,OAAO,EAAM,IAAI,EAAyB,EAE3C,GAAI,GAAS,OAAO,IAAU,SAC7B,OAAO,OAAO,YACb,OAAO,QAAQ,CAAK,EAClB,OAAO,GAAI,KAAgB,IAAe,MAAS,EACnD,KAAK,EAAE,IAAQ,KAAW,EAAK,cAAc,CAAK,CAAC,EACnD,IAAI,EAAE,EAAK,KAAgB,CAC3B,EACA,GAA0B,CAAU,CACrC,CAAC,CACH,EAED,OAAO,EAGR,SAAS,EAA2B,CAAC,EAAoC,CACxE,OAAO,KAAK,UAAU,GAA0B,CAAQ,CAAC,EAG1D,SAAS,EAAsB,CAC9B,EACA,EACU,CACV,OAAO,EACJ,GAA4B,CAAO,IAAM,GAA4B,CAAI,EACzE,GAGG,SAAS,EAAiC,CAChD,EACA,EACU,CACV,OAAO,GACN,EAAQ,UAAU,qBAClB,GAAsB,CAAK,CAC5B,EAGM,SAAS,EAAY,CAC3B,EACA,EAC4B,CAC5B,IAAM,EAAO,EAAQ,KACrB,GAAI,CAAC,EACJ,OAAO,EAAK,mCAAmC,EAIhD,GAAI,CADY,EAAK,SAAS,KAAK,CAAC,IAAS,EAAK,KAAO,CAAS,EAEjE,OAAO,EAAK,YAAY,sCAA8C,EAGvE,IAAM,EAAW,GAAkB,EAAK,SAAU,CAAS,EAC3D,EAAS,IAAI,CAAS,EAEtB,IAAM,EAAW,IACb,EACH,SAAU,GAAsB,EAAK,SAAU,CAAQ,CACxD,EACM,EAAgB,IAClB,EAAQ,UACX,gBACC,EAAQ,UAAU,iBAClB,EAAS,IAAI,EAAQ,UAAU,eAAe,EAC3C,KACA,EAAQ,UAAU,gBACtB,YAAa,GAAkB,EAAW,EAAS,IAAI,EACvD,gBAAiB,IAClB,EACM,EAAgB,IAClB,EACH,KAAM,EACN,OAAQ,EAAQ,WAAa,WAAa,QAAU,WACpD,QAAS,KACT,UAAW,EACX,WAAY,IACR,EAAQ,WACX,YAAa,IACd,CACD,EAEA,GACC,EAAQ,UAAU,eAClB,EAAS,IAAI,EAAQ,UAAU,aAAa,EAE5C,GAAuB,EAAK,UAAW,CAAI,EAG5C,OAAO,EAAQ,CAAI,EAGb,SAAS,EAAsB,CACrC,EACA,EAC4B,CAC5B,IAAM,EAAe,GAA8B,EAAS,CAAK,EACjE,GAAI,EACH,OAAO,EAAK,CAAY,EAGzB,IAAM,EAAW,GAAsB,CAAK,EAE5C,GAAI,GAA+B,CAAQ,EAAG,CAC7C,IAAM,EAAa,GAAqC,EAAS,CAAQ,EACzE,GAAI,CAAC,EAAW,GACf,OAAO,EAIT,GAAI,GAAkC,EAAS,CAAK,EACnD,OAAO,EAAQ,CAAO,EAGvB,OAAO,EAAQ,IACX,EACH,UAAW,IACP,EAAQ,UACX,qBAAsB,EACtB,YAAa,EAAS,OACvB,CACD,CAAC,ECpNK,SAAS,EAA8B,CAC7C,EAC8B,CAC9B,MAAO,CACN,MAAO,UACP,UAAW,EAAS,UACpB,OAAQ,EAAS,OACjB,QAAS,EAAS,QAClB,iBAAkB,EAAS,kBAAoB,CAAC,EAChD,UAAW,EAAS,WAAa,CAAC,EAClC,oBAAqB,EAAS,qBAAuB,CAAC,KAClD,EAAS,cACV,CAAE,cAAe,EAAS,aAAc,EACxC,CAAC,CACL,EAGM,SAAS,EAA4B,CAC3C,EAC8B,CAC9B,MAAO,CACN,MAAO,QACP,OAAQ,EAAS,OACjB,QAAS,EAAS,QAClB,YAAa,EAAS,YACtB,iBAAkB,EAAS,kBAAoB,CAAC,KAC5C,EAAS,gBACV,CAAE,gBAAiB,EAAS,eAAgB,EAC5C,CAAC,KACA,EAAS,qBACV,CAAE,qBAAsB,EAAS,oBAAqB,EACtD,CAAC,EACJ,aAAc,CACb,iBAAkB,EAAS,cAAc,kBAAoB,CAAC,EAC9D,mBAAoB,EAAS,cAAc,oBAAsB,CAAC,CACnE,EACA,cAAe,EAAS,eAAiB,CAAC,EAC1C,iBAAkB,EAAS,kBAAoB,CAAC,EAChD,UAAW,EAAS,WAAa,CAAC,EAClC,oBAAqB,EAAS,qBAAuB,CAAC,KAClD,EAAS,cACV,CAAE,cAAe,EAAS,aAAc,EACxC,CAAC,CACL,ECfD,IAAM,GAAoC,CACzC,OAAQ,kBACR,QAAS,0CACT,YAAa,CACd,EAEM,GAA2B,CAChC,OAAQ,kBACR,QAAS,iCACT,YAAa,CACd,EAOM,GAGF,CACH,aAAc,CAAE,KAAM,wBAAyB,MAAO,WAAY,EAClE,sBAAuB,CAAE,KAAM,qBAAsB,MAAO,QAAS,EACrE,oBAAqB,CAAE,KAAM,qBAAsB,MAAO,cAAe,CAC1E,EAOA,SAAS,EAAwB,CAChC,EACA,EACA,EACU,CACV,IAAM,EAAa,GAA4B,GACzC,EACL,EAAQ,UAAU,WAAa,+BAC1B,EAAW,EAAQ,UAAU,mBAC7B,EACL,GAAU,OAAS,EAAW,MAC9B,EAAS,kBAAoB,GACzB,EAAS,0BAA4B,GAAK,EAC3C,EACJ,MAAO,IACH,EACH,UAAW,IACP,EAAQ,UACX,mBAAoB,IAChB,EACH,OAAQ,QACR,kBACA,QAAS,EAAQ,WACb,EAAQ,UAAU,eACnB,CAAE,aAAc,EAAQ,SAAS,cAAe,EAChD,CAAC,EACJ,WAAY,EAAO,KACf,EAA2B,EAAI,CAAE,0BAAyB,EAAI,CAAC,CACpE,CACD,EACA,WAAY,IACR,EAAQ,WACX,UAAW,EAAO,CACnB,CACD,EAGD,SAAS,EAAiB,CAAC,EAAgB,CAC1C,OAAO,GAAiB,CAAK,EAAE,QAGhC,SAAS,EAAa,CAAC,EAAgB,EAAiB,CACvD,MAAO,CACN,OAAQ,KACR,UACA,QAAS,GAAkB,CAAK,CACjC,EAGM,IAAM,GAAgC,CAC5C,0BACA,aACA,eACA,yBACA,uBACA,YACA,eACA,gBACA,wBACA,qBACD,EA6DA,SAAS,EAA2B,CAAC,EAIlC,CACF,OAAO,EAAc,EAAQ,QAAS,IACjC,EAAQ,SAAW,CAAE,SAAU,EAAQ,QAAS,EAAI,CAAC,KACrD,EAAQ,SAAS,UAAU,mBAC5B,CAAE,oBAAqB,EAAQ,QAAQ,UAAU,kBAAmB,EACpE,CAAC,CACL,CAAC,EAGF,SAAS,EAAsB,CAC9B,EACA,EACiC,CACjC,MAAO,CACN,OACA,IAAK,CAAC,IAAY,GAAuB,EAAS,CAAkB,EACpE,WAAY,CAAC,IAAU,EACvB,UAAW,CAAC,IAAU,GAAc,EAAO,6BAA6B,EACxE,cAAe,CAAC,EAAO,IACtB,IAAU,GACV,GAAkC,EAAiB,CAAkB,EACtE,cAAe,CAAC,IACf,GACC,EACA,sDACD,EACD,QAAS,GACT,cAAe,CAAC,EAAS,IACxB,GAAyB,EAAM,EAAS,CAAO,EAChD,4BAA6B,CAC5B,KAAM,oBACP,CACD,EAGD,IAAM,GAA4D,CACjE,uBAAuB,CAAC,EAAc,CACrC,MAAO,CACN,KAAM,0BACN,IAAK,CAAC,IAAY,CACjB,IAAM,EAAU,GACf,EACA,CACD,EACA,GAAI,EACH,OAAO,EAAK,CAAO,EAEpB,IAAM,EAAmB,IACrB,EACH,SAAU,GAAqB,EAAQ,SAAU,CAAY,CAC9D,EACA,OAAO,EAAQ,CAAO,GAEvB,WAAY,CAAC,IAAU,EACvB,UAAW,CAAC,IAAU,GAAc,EAAO,4BAA4B,CACxE,GAGD,UAAU,EAAG,OAAM,YAAY,CAC9B,MAAO,CACN,KAAM,aACN,IAAK,CAAC,IAAY,CACjB,IAAM,EAAU,GAAU,EAAS,IAAK,CAAK,EAAG,CAAQ,EACxD,GAAI,CAAC,EAAQ,GAAI,OAAO,EAExB,GADa,GAAiB,EAAQ,KAAK,EAAE,SAAS,SAAS,OAClD,OAAQ,CACpB,IAAM,EAAW,GAAY,EAAQ,KAAK,EAC1C,GAAI,CAAC,EAAS,GAAI,OAAO,EACzB,OAAO,EAAQ,CAAE,QAAS,EAAS,MAAO,aAAc,EAAK,CAAC,EAE/D,OAAO,EAAQ,CAAE,QAAS,EAAQ,MAAO,aAAc,EAAM,CAAC,GAE/D,WAAY,CAAC,IAAU,EAAM,QAC7B,UAAW,CAAC,EAAO,KAAW,CAC7B,OAAQ,KACR,QAAS,EAAM,aACZ,8EACA,oBACH,aAAc,EAAM,aACpB,QAAS,GAAkB,CAAK,CACjC,GACA,gBAAiB,EAClB,GAGD,sBAAsB,CAAC,EAAU,CAChC,MAAO,CACN,KAAM,yBACN,IAAK,CAAC,IAAY,GAAY,CAAO,EACrC,WAAY,CAAC,IAAU,EACvB,UAAW,CAAC,KAAW,CACtB,OAAQ,KACR,QACC,8EACD,aAAc,GACd,QAAS,GAAkB,CAAK,CACjC,GACA,gBAAiB,EAClB,GAGD,YAAY,EAAG,cAAc,CAC5B,MAAO,CACN,KAAM,eACN,IAAK,CAAC,IAAY,GAAY,EAAS,CAAU,EACjD,WAAY,CAAC,IAAU,EACvB,UAAW,CAAC,IAAU,GAAc,EAAO,gBAAgB,EAC3D,cAAe,CAAC,EAAO,IACtB,IAAU,GACV,GAA6B,EAAiB,CAAU,EACzD,cAAe,CAAC,IACf,GACC,EACA,kDACD,CACF,GAGD,oBAAoB,EAAG,cAAc,CACpC,MAAO,CACN,KAAM,uBACN,IAAK,CAAC,IAAY,GAAmB,EAAS,CAAU,EACxD,WAAY,CAAC,IAAU,EACvB,UAAW,CAAC,IAAU,GAAc,EAAO,sBAAsB,CAClE,GAGD,SAAS,EAAG,aAAa,CACxB,MAAO,CACN,KAAM,YACN,IAAK,CAAC,IAAY,GAAS,EAAS,CAAS,EAC7C,WAAY,CAAC,IAAU,EAAM,QAC7B,UAAW,CAAC,EAAO,IAAU,CAC5B,IAAM,EAAU,GAAiB,CAAK,EACtC,MAAO,CACN,OACC,EAAM,SAAW,WACd,WACA,EAAM,QACL,KACA,UACL,QAAS,EAAQ,QACjB,QAAS,EAAQ,QACjB,QAAS,EAAM,QACf,OAAQ,EAAM,MACf,GAED,cAAe,CAAC,EAAO,IACtB,EAAM,UAAY,GAClB,GAAwB,EAAiB,CAAS,EACnD,cAAe,CAAC,EAAO,IACtB,GACC,EACA,YAAY,EAAM,SAAS,IAAM,yCAClC,EACD,gBAAiB,EAClB,GAGD,YAAY,EAAG,UAAU,CACxB,MAAO,CACN,KAAM,eACN,IAAK,CAAC,IAAY,GAAY,EAAS,CAAM,EAC7C,WAAY,CAAC,IAAU,EACvB,UAAW,CAAC,IAAU,CACrB,IAAM,EAAU,GAAiB,CAAK,EACtC,MAAO,CACN,OAAQ,KACR,QAAS,EAAQ,QACjB,QAAS,EAAQ,OAClB,GAED,QAAS,CAAC,KAAa,CACtB,OAAQ,QACR,QAAS,EAAQ,QACjB,SAAU,EAAQ,YACd,EAAQ,SAAS,UAAU,mBAC5B,CACA,oBAAqB,EAAQ,QAAQ,UAAU,kBAChD,EACC,CAAC,CACL,GACA,cAAe,CAAC,EAAS,IACxB,GAAyB,eAAgB,EAAS,CAAO,EAC1D,4BAA6B,CAC5B,KAAM,uBACP,CACD,GAGD,aAAa,EAAG,aAAa,CAC5B,MAAO,CACN,KAAM,gBACN,IAAK,CAAC,IAAY,GAAa,EAAS,CAAS,EACjD,WAAY,CAAC,IAAU,EACvB,UAAW,CAAC,IACX,GAAc,EAAO,kBAAkB,KAAa,EACrD,4BAA6B,EAC9B,GAGD,qBAAqB,EAAG,YAAY,CACnC,OAAO,GACN,wBACA,GAA+B,CAAQ,CACxC,GAGD,mBAAmB,EAAG,YAAY,CACjC,OAAO,GACN,sBACA,GAA6B,CAAQ,CACtC,EAEF,EAEO,SAAS,EAA2D,CAC1E,EACA,EACuD,CACvD,OAAO,GAAyB,GAAM,CAAO,EC5X9C,IAAM,GAAoD,CACzD,mBAAmB,EAAG,CACrB,MAAO,CACN,KAAM,sBACN,IAAK,CAAC,EAAU,IAAY,EAAQ,YAAY,CAAQ,EACxD,UAAW,CAAC,KAAa,CACxB,OAAQ,EAAU,KAAO,kBACzB,SACD,EACD,GAED,oBAAoB,EAAG,CACtB,MAAO,CACN,KAAM,uBACN,IAAK,CAAC,EAAU,IAAY,EAAQ,mBAAmB,CAAQ,EAC/D,UAAW,CAAC,KAAa,CAAE,OAAQ,KAAM,SAAQ,EAClD,GAED,oBAAoB,EAAG,aAAa,CACnC,MAAO,CACN,KAAM,uBACN,IAAK,CAAC,EAAU,IACf,EAAQ,kBAAkB,EAAU,CAAS,EAC9C,UAAW,CAAC,KAAa,CACxB,OAAQ,EAAU,KAAO,kBACzB,SACD,EACD,EAEF,EAEO,SAAS,EAAmD,CAClE,EACA,EACqD,CACrD,OAAO,GAAqB,GAAM,CAAO,ECjE1C,iBAAS,eAAQ,0BACjB,eAAS,mBCDT,kBAAS,iBAAS,eAAY,cAAU,UAAS,mBAE1C,SAAS,EAA6B,CAC5C,EACA,EACW,CACX,IAAM,EAAe,GAAQ,CAAa,EACtC,EAAU,GAA+B,EAAc,CAAc,EACnE,EAAwB,CAAC,EAE/B,MAAO,GAAM,CAEZ,GADA,EAAY,KAAK,CAAO,EACpB,IAAY,EACf,OAAO,EAGR,IAAM,EAAS,GAAQ,CAAO,EAC9B,GAAI,IAAW,EACd,OAAO,EAER,EAAU,GAIZ,SAAS,EAA8B,CACtC,EACA,EACS,CACT,GAAI,CAAC,EACJ,OAAO,EAGR,IAAM,EAAgB,GAAW,CAAc,EAC5C,GAAQ,CAAc,EACtB,GAAQ,EAAc,CAAc,EACvC,OAAO,GAAsB,EAAc,CAAa,EACrD,EACA,EAGJ,SAAS,EAAqB,CAAC,EAAc,EAA4B,CACxE,IAAM,EAAe,GAAS,EAAM,CAAS,EAC7C,OACC,IAAiB,IAChB,IAAiB,MACjB,CAAC,EAAa,WAAW,KAAK,IAAK,GACnC,CAAC,GAAW,CAAY,EDzC3B,IAAM,GAGD,CACJ,CAAE,QAAS,OAAQ,UAAW,CAAC,gBAAgB,CAAE,EACjD,CAAE,QAAS,MAAO,UAAW,CAAC,oBAAqB,qBAAqB,CAAE,EAC1E,CAAE,QAAS,OAAQ,UAAW,CAAC,WAAW,CAAE,EAC5C,CAAE,QAAS,MAAO,UAAW,CAAC,WAAY,WAAW,CAAE,CACxD,EAOA,eAAsB,EAAoB,CACzC,EACA,EACmC,CACnC,QAAW,KAAa,GACvB,EACA,CACD,EAAG,CACF,IAAM,EACL,MAAM,GAAiC,CAAS,EACjD,GAAI,EACH,MAAO,CACN,eAAgB,EAChB,UAAW,EACZ,EAGD,IAAM,EAAoB,MAAM,GAAiC,CAAS,EAC1E,GAAI,EAAkB,WAAa,EAAkB,eACpD,OAAO,EAIT,MAAO,CAAE,UAAW,EAAM,EAG3B,eAAe,EAAgC,CAC9C,EACsC,CACtC,IAAM,EAAe,GAAK,EAAW,cAAc,EACnD,GAAI,CAAE,MAAM,GAAW,CAAY,EAClC,OAGD,GAAI,CACH,IAAM,EAAc,KAAK,MAAM,MAAM,GAAS,EAAc,MAAM,CAAC,EAGnE,OAAO,GAAoB,EAAY,cAAc,EACpD,KAAM,CACP,QAIF,eAAe,EAAgC,CAC9C,EACmC,CACnC,IAAM,EAAmB,IAAI,IAE7B,QAAW,KAAa,GACvB,QAAW,KAAY,EAAU,UAChC,GAAI,MAAM,GAAW,GAAK,EAAW,CAAQ,CAAC,EAAG,CAChD,EAAiB,IAAI,EAAU,OAAO,EACtC,MAKH,GAAI,EAAiB,KAAO,EAC3B,MAAO,CAAE,UAAW,EAAK,EAG1B,IAAM,EAAiB,EAAiB,OAAO,EAAE,KAAK,EAAE,MAGxD,OAAO,IAAmB,OACvB,CAAE,UAAW,EAAM,EACnB,CAAE,iBAAgB,UAAW,EAAM,EAGvC,SAAS,EAAmB,CAAC,EAA4C,CACxE,GAAI,OAAO,IAAU,SACpB,OAGD,IAAM,EAAa,EAAM,KAAK,EAAE,MAAM,GAAG,EAAE,GAC3C,GACC,IAAe,OACf,IAAe,QACf,IAAe,QACf,IAAe,MAEf,OAAO,EAGR,OAGD,eAAe,EAAU,CAAC,EAAkC,CAC3D,GAAI,CAEH,OADA,MAAM,GAAO,CAAM,EACZ,GACN,KAAM,CACP,MAAO,IEtFT,SAAS,EAAmB,CAC3B,EACA,EACA,EACC,CACD,IAAM,EAAY,QAAQ,GAAY,IAAS,EAAS,IAAI,EAE5D,GAAI,CAAC,GAAY,EAAS,SAAW,aAAe,EACnD,OAAO,GAAc,EAAM,CAAQ,EAGpC,MAAO,IACH,EACH,SAAU,GAAqB,EAAS,SAAU,GAAY,CAAC,CAAC,CACjE,EAGM,IAAM,GAAiC,CAC7C,YACA,mBACA,eACD,EAoCM,GAA8D,CACnE,SAAS,EAAG,OAAM,WAAU,YAAW,0BAA0B,CAChE,MAAO,CACN,KAAM,YACN,IAAK,MAAO,EAAU,IAAY,CACjC,OAAO,GACN,EACA,EACA,MAAO,EAAU,IAAgB,CAChC,IAAM,EAAe,GAAQ,GAAU,KACvC,GAAI,CAAC,EACJ,MAAO,CACN,OAAQ,eACR,YACC,GAA0B,CAC5B,EAGD,IAAM,EAA0B,MAAM,GACrC,EACA,CACD,EAEM,EAAU,MAAM,EAAY,iBACjC,GAAoB,EAAU,EAAc,IACvC,GAAY,CAAC,KACb,EAAwB,eACzB,CACA,eAAgB,EAAwB,cACzC,EACC,CAAC,EACJ,wBAAyB,EAAwB,SAClD,CAAC,CACF,EACA,GAAI,CAEH,OADA,MAAM,EAAY,qBAAqB,CAAO,EACvC,CAAE,OAAQ,KAAM,SAAQ,EAC9B,MAAO,EAAO,CACf,MAAO,CACN,OAAQ,KACR,UACA,aAAc,CACb,OAAQ,SACR,MACC,aAAiB,OAAS,EAAM,QAC7B,EAAM,QACN,OAAO,CAAK,CACjB,CACD,GAGH,GAED,UAAW,CAAC,IACX,EAAM,SAAW,eACd,CACA,OAAQ,eACR,QAAS,4CACT,YAAa,EAAM,WACpB,EACC,CACA,OAAQ,EAAM,aAAe,kBAAoB,KACjD,QAAS,oCAAoC,EAAM,QAAQ,UACvD,EAAM,aACP,CACA,kBAAmB,GACnB,aAAc,EAAM,YACrB,EACC,CAAC,EACJ,QAAS,GAAiB,EAAM,OAAO,EAAE,OAC1C,CACJ,GAGD,gBAAgB,EAAG,YAAW,cAAa,sBAAsB,CAChE,MAAO,CACN,KAAM,mBACN,IAAK,CAAC,EAAU,IAAY,EAAQ,gBAAgB,EAAU,CAAS,EACvE,UAAW,CAAC,IAAY,CACvB,GAAI,CAAC,EAAS,CACb,IAAM,EAAW,GAA2B,IAAI,EAChD,MAAO,CACN,OAAQ,kBACR,QAAS,yCAAyC,MAClD,WACA,MAAO,EAAS,MAChB,KAAM,EAAS,KACf,QAAS,EAAS,QAClB,OAAQ,EAAS,OACjB,YAAa,GAAsB,CACpC,EAGD,MAAO,CACN,OAAQ,KACR,QAAS,2BAA2B,EAAQ,OAC5C,MAAO,OACP,KAAM,OACN,QAAS,KACT,OACC,6FACD,QAAS,GAAiB,CAAO,EAAE,QACnC,YAAa,GAAe,CAC7B,EAEF,GAGD,aAAa,EAAG,OAAM,UAAS,eAAe,CAC7C,MAAO,CACN,KAAM,gBACN,IAAK,CAAC,EAAU,IAAY,EAAQ,aAAa,EAAU,EAAM,CAAO,EACxE,UAAW,CAAC,IAAc,CACzB,GAAI,GAAa,YAAa,EAC7B,OAAO,EAAc,EAAU,QAAS,CACvC,QAAS,sBACT,qBAAsB,EAAU,qBAChC,UAAW,EAAU,UACrB,YAAa,CACd,CAAC,EAEF,IAAM,EAAW,GAA2B,IAAI,EAChD,MAAO,CACN,OAAQ,KACR,QAAS,EACN,qCAAqC,EAAU,eAC/C,kCACH,WACA,MAAO,EAAS,MAChB,KAAM,EAAS,KACf,QAAS,EAAS,QAClB,OAAQ,EAAS,OACjB,mBAAoB,GAAW,WAAa,KAC5C,YAAa,GAAW,aAAe,KACvC,YAAa,GAAW,aAAe,KACvC,YAAa,GAAe,CAC7B,EAEF,EAEF,EAEO,SAAS,EAA6D,CAC5E,EACA,EAC+D,CAC/D,OAAO,GAA0B,GAAM,CAAO,ECtO/C,kBAAS,iBACT,kBAAS,mBAwCT,IAAM,GACL,qFAEM,SAAS,CAAM,CAAC,EAAwB,CAC9C,OAAO,KAAK,UAAU,EAAO,KAAM,CAAC,EAG9B,SAAS,EAAa,CAAC,EAAwB,CACrD,OAAO,KAAK,UAAU,CAAK,EAG5B,SAAS,EAAsB,CAC9B,EACA,EAC8B,CAC9B,IAAM,EAAO,GAAuB,CAAO,EAC3C,GAAI,CAAC,EAAM,OAAO,KAClB,MAAO,CAAE,OAAM,QAAO,EAGvB,SAAS,EAAiB,CACzB,EACA,EACyB,CAQzB,MAPmB,CAClB,GAAuB,EAAQ,SAAU,UAAU,EACnD,GAAuB,EAAQ,UAAW,WAAW,EACrD,GAAI,EACD,CAAC,GAAuB,QAAQ,IAAI,EAAG,KAAK,CAAC,EAC7C,CAAC,CACL,EACkB,OACjB,CAAC,IAAiD,IAAc,IACjE,EAGD,SAAS,EAAoB,CAC5B,EACA,EAC8B,CAC9B,OAAO,GAAkB,EAAS,IAAS,MAAM,EAAE,GAAG,CAAC,GAAK,KAG7D,SAAS,EAAuB,EAAkC,CACjE,OAAO,IAAI,EAA8B,CACxC,QACC,+GACD,YACC,yFACD,QAAS,CACR,KAAM,KACN,OAAQ,KACR,QAAS,GACT,gBAAiB,GACjB,aAAc,GACd,gBACC,yEACF,CACD,CAAC,EAGF,SAAS,EAAwB,EAAU,CAC1C,OAAW,MAAM,EAA4B,EAG9C,SAAS,EAAwB,CAChC,EACA,EACA,EAC0B,CAC1B,MAAO,CACN,OACA,SACA,QAAS,GACT,gBAAiB,GACjB,aAAc,GACd,gBAAiB,QACd,CACJ,EAGD,SAAS,EAAgB,CACxB,EACA,EACsB,CACtB,IAAM,EAAY,GAAqB,EAAS,CAAI,EACpD,GAAI,CAAC,EACJ,MAAM,IAAS,SACZ,GAAwB,EACxB,GAAyB,EAE7B,GAAI,IAAS,OACZ,MAAO,CACN,KAAM,EAAU,KAChB,OAAQ,EAAU,OAClB,OACA,QAAS,GACT,aAAc,EAAU,SAAW,KACpC,EAED,IAAM,EAAY,GAA4B,EAAU,IAAI,EAC5D,GAAI,EAAU,gBACb,MAAM,IAAI,EAA8B,CACvC,QAAS,wCAAwC,EAAU,cAAc,EAAU,WAAW,EAAU,kBACxG,YACC,EAAU,OAAS,GAAQ,QAAQ,IAAI,MAAQ,GAAQ,CAAC,EACrD,+GACA,+EAA+E,EAAU,4BAC7F,QAAS,CACR,KAAM,EAAU,KAChB,OAAQ,EAAU,OAClB,QAAS,EAAU,QACnB,gBAAiB,GACjB,aAAc,GACd,gBAAiB,EAAU,eAC5B,CACD,CAAC,EAEF,MAAO,CACN,KAAM,EAAU,KAChB,OAAQ,EAAU,OAClB,OACA,QAAS,EAAU,QACnB,aAAc,EACf,EAGM,SAAS,EAA0B,CACzC,EACsB,CACtB,OAAO,GAAiB,EAAS,MAAM,EAGjC,SAAS,EAAyB,CACxC,EACsB,CACtB,OAAO,GAAiB,EAAS,QAAQ,EAGnC,SAAS,EAAuB,CACtC,EAC0B,CAC1B,IAAI,EAAuC,KAC3C,GAAI,CACH,EAAW,GAA2B,CAAO,EAC5C,KAAM,CACP,OAAO,GAAyB,KAAM,KAAM,CAC3C,gBAAiB,EAClB,CAAC,EAEF,GAAI,CACH,IAAM,EAAU,GAA0B,CAAO,EACjD,OAAO,GAAyB,EAAQ,KAAM,EAAQ,OAAQ,CAC7D,QAAS,EAAQ,QACjB,gBAAiB,GACjB,aAAc,EAAS,YACxB,CAAC,EACA,MAAO,EAAO,CACf,GAAI,aAAiB,EAA+B,CACnD,IAAM,EACL,EAAM,QAAQ,SAAW,YACzB,EAAM,QAAQ,SAAW,aACzB,EAAM,QAAQ,SAAW,MACtB,EAAM,QAAQ,OACd,EAAS,OACb,OAAO,GACN,EAAM,QAAQ,MAAQ,EAAS,KAC/B,EACA,CACC,QAAS,EAAM,QAAQ,QACvB,aAAc,EAAS,aACvB,gBAAiB,EAAM,QAAQ,eAChC,CACD,EAED,MAAM,GAID,SAAS,EAAkB,CAAC,EAAmC,CACrE,OAAO,GAA2B,CAAO,EAAE,KAGrC,SAAS,EAAgB,CAC/B,EACA,EACA,EAAgB,kCAC2C,CAC3D,IAAM,EAAiB,GAAQ,CAAC,EAChC,GAAI,CACH,MAAO,CAAE,GAAI,GAAM,MAAO,EAAO,MAAM,CAAc,CAAE,EACtD,MAAO,EAAO,CACf,IAAM,EACL,GACE,OACG,EAAQ,MAAM,QAAQ,CAAM,GAAK,EAAO,OAAS,EAAI,EAAO,GAAK,KACjE,EACL,GAAO,MAAQ,EAAM,KAAK,OAAS,EAChC,EAAM,KAAK,IAAI,MAAM,EAAE,KAAK,GAAG,EAC/B,OACE,EAAS,GAAO,QAAU,GAAG,MAAS,EAAM,UAAY,KACxD,EAAU,EACb,GAAG,MAAkB,IACrB,GAAG,KACN,MAAO,CAAE,GAAI,GAAO,SAAU,EAAO,EAAc,CAAO,CAAC,CAAE,GCvM/D,IAAM,GAA6B,IAAI,IACtC,EACD,EACM,GAA4B,IAAI,IACrC,EACD,EAEA,SAAS,EAAsB,CAC9B,EACqC,CACrC,OAAO,GAA2B,IAAI,CAAI,EAG3C,SAAS,EAAqB,CAC7B,EACoC,CACpC,OAAO,GAA0B,IAAI,CAAI,EAG1C,eAAe,EAAU,CACxB,EACA,EACA,EACA,EAUC,CACD,IAAM,EAAO,GAA0B,CAAO,EAAE,KAChD,GAAI,GAAuB,CAAI,EAC9B,OAAO,GACN,EACA,GACC,EACA,CACD,EACC,GACA,EACF,EAED,GAAI,CAAC,GAAsB,CAAI,EAC9B,MAAU,MAAM,8BAA8B,KAAQ,EAEvD,OAAO,GACN,EACA,GACC,EACA,CACD,EACC,GAA8C,EAChD,EAoBD,eAAsB,EAAkB,CACvC,EACA,EACA,EACA,EACmB,CACnB,OAAO,GAAW,EAAS,EAAM,EAAS,CAAO,EAelD,eAAsB,EAAsB,CAC3C,EACA,EACA,EACA,EACkB,CAClB,IAAM,EAAS,MAAM,GAAW,EAAS,EAAM,EAAS,CAAO,EAC/D,OAAO,KAAK,UAAU,EAAO,SAAU,KAAM,CAAC,EAG/C,eAAsB,EAAoD,CACzE,EACA,EACA,EACA,EAAkC,GAC4B,CAC9D,OAAO,GACN,GAA2B,CAAO,EAAE,KACpC,GAAgB,EAAM,CAAO,EAC7B,CACD,ECnKD,oBAAS,iBACT,iBAAS,0BA0DT,IAAM,GAAgC,CACrC,gBAAiB,GAAe,IACjC,EAEA,eAAe,EAAU,CAAC,EAAgB,EAAO,GAAU,KAAM,CAChE,GAAI,CAEH,OADA,MAAM,GAAO,EAAQ,CAAI,EAClB,GACN,KAAM,CACP,MAAO,IAIT,eAAsB,EAAiB,CACtC,EACuB,CACvB,IAAM,EAAU,EAAW,mBAAmB,EACxC,EAAa,MAAM,EAAW,uBAAuB,CAAO,EAC5D,EAAa,MAAM,EAAW,0BAA0B,CAAO,EAC/D,EACL,MAAM,EAAW,iCAAiC,CAAO,EACpD,EAAiB,EAAW,OACjC,CAAC,IAAU,EAAM,QAAU,WAAa,EAAM,QAAU,OACzD,EACM,EAA4B,EAAkB,OACnD,CAAC,IAAU,EAAM,QAAU,WAAa,EAAM,QAAU,OACzD,EACM,EAAU,CACf,aAAc,MAGd,cAAe,EAAW,yBAAyB,EACnD,iBAAkB,GAAY,MAAQ,KACtC,OAAQ,OAAO,YACd,EAAW,IAAI,CAAC,IAAU,CAAC,EAAM,KAAM,EAAM,KAAK,CAAC,CACpD,EACA,kBAAmB,OAAO,YACzB,EAAkB,IAAI,CAAC,IAAU,CAChC,GAAG,EAAM,QAAQ,EAAM,OACvB,EAAM,KACP,CAAC,CACF,CACD,EAEA,GAAI,EACH,MAAO,CACN,GAAI,UACJ,MAAO,sBACP,OAAQ,OACR,QAAS,wCAAwC,EAAW,gHAC5D,YACC,4IACD,SACD,EAGD,GAAI,EAAe,OAAS,EAC3B,MAAO,CACN,GAAI,UACJ,MAAO,sBACP,OAAQ,OACR,QAAS,uCAAuC,EAC9C,IAAI,CAAC,IAAU,GAAG,EAAM,SAAS,EAAM,OAAO,EAC9C,KAAK,IAAI,MACX,YACC,wHACD,SACD,EAGD,GAAI,EAA0B,OAAS,EACtC,MAAO,CACN,GAAI,UACJ,MAAO,sBACP,OAAQ,OACR,QAAS,mDAAmD,EAC1D,IAAI,CAAC,IAAU,GAAG,EAAM,QAAQ,EAAM,SAAS,EAAM,OAAO,EAC5D,KAAK,IAAI,MACX,YACC,sKACD,SACD,EAGD,MAAO,CACN,GAAI,UACJ,MAAO,sBACP,OAAQ,OACR,QAAS,QAAQ,EAAQ,gIACzB,YAAa,KACb,SACD,EAGM,SAAS,EAAgB,EAAgB,CAC/C,IAAM,EAAwB,CAAC,EAE/B,OADA,GAAgB,CAAM,EACf,GAAoB,CAAM,EAG3B,SAAS,EAAmB,CAAC,EAAoC,CACvE,IAAM,EAAiB,OAAO,KAAK,EAA6B,EAC1D,EAAmB,OAAO,KAAK,EAAkB,EACjD,EAAgB,EAAe,OAAO,CAAC,IAAS,CAAC,EAAO,QAAQ,EAAK,EACrE,EAAkB,EAAiB,OACxC,CAAC,IAAS,CAAC,EAAO,UAAU,EAC7B,EACM,EAAc,EAAO,UAAU,gBAAgB,MAC/C,EAAuB,OAAO,YACnC,EAAe,IAAI,CAAC,IAAS,CAC5B,EACA,EAAO,QAAQ,IAAO,iBAAmB,IAC1C,CAAC,CACF,EACM,EAAsB,OAAO,QAAQ,EAA6B,EACtE,OACA,EAAE,EAAM,KAAc,EAAO,QAAQ,IAAO,kBAAoB,CACjE,EACC,IAAI,EAAE,EAAM,MAAe,CAC3B,MAAO,EACP,WACA,OAAQ,EAAO,QAAQ,IAAO,iBAAmB,IAClD,EAAE,EAEH,GACC,EAAc,SAAW,GACzB,EAAgB,SAAW,GAC3B,IAAgB,iBAChB,EAAoB,SAAW,EAE/B,MAAO,CACN,GAAI,SACJ,MAAO,8BACP,OAAQ,OACR,QACC,yFACD,YAAa,KACb,QAAS,CACR,WAAY,OAAO,KAAK,EAAO,OAAS,CAAC,CAAC,EAAE,OAC5C,aAAc,OAAO,KAAK,EAAO,SAAW,CAAC,CAAC,EAAE,OAChD,eAAgB,CACf,cAAe,CAChB,EACA,sBACD,CACD,EAGD,MAAO,CACN,GAAI,SACJ,MAAO,8BACP,OAAQ,OACR,QACC,oGACD,YACC,iKACD,QAAS,CACR,gBACA,kBACA,eAAgB,CACf,cAAe,GAAe,IAC/B,EACA,uBACA,qBACD,CACD,EAGD,eAAsB,EAAmB,CACxC,EACuB,CAEvB,OADA,MAAM,GAAO,EAAU,KAAM,GAAU,IAAI,EACpC,CACN,GAAI,YACJ,MAAO,0BACP,OAAQ,OACR,QAAS,EAAU,QAChB,6DAA6D,EAAU,QACvE,6DAA6D,EAAU,QAC1E,YAAa,KACb,QAAS,CACR,cAAe,EAAU,KACzB,gBAAiB,EAAU,OAC3B,QAAS,EAAU,OACpB,CACD,EAGD,eAAsB,EAA0B,CAC/C,EACA,EACuB,CACvB,GAAI,CAAC,EACJ,MAAO,CACN,GAAI,oBACJ,MAAO,2BACP,OAAQ,OACR,QACC,qFACD,YAAa,IACd,EAGD,GAAI,CAAC,EACJ,MAAO,CACN,GAAI,oBACJ,MAAO,2BACP,OAAQ,OACR,QACC,+EACD,YAAa,IACd,EAGD,IAAI,EACA,EACJ,GAAI,CACH,EAAc,GAAqB,EAAe,EAAQ,EAAE,EAC5D,EAAe,GAAgB,EAAe,EAAQ,EAAE,EACvD,MAAO,EAAO,CAGf,GAAI,aAAiB,EACpB,MAAO,CACN,GAAI,oBACJ,MAAO,2BACP,OAAQ,OACR,QAAS,2CAA2C,EAAQ,wDAC5D,YACC,8GACD,QAAS,CAAE,UAAW,EAAQ,EAAG,CAClC,EAED,MAAM,EAEP,IAAM,EAAiB,MAAM,GAAW,EAAa,GAAU,IAAI,EAC7D,EAAkB,MAAM,GAAW,EAAc,GAAU,IAAI,EAErE,OAAO,GAAkB,EACtB,CACA,GAAI,oBACJ,MAAO,2BACP,OAAQ,OACR,QACC,wEACD,YAAa,KACb,QAAS,CAAE,cAAa,eAAc,UAAW,EAAQ,EAAG,CAC7D,EACC,CACA,GAAI,oBACJ,MAAO,2BACP,OAAQ,OACR,QACC,yFACD,YACC,+HACD,QAAS,CACR,UAAW,EAAQ,GACnB,cACA,oBAAqB,EACrB,eACA,iBAAkB,CACnB,CACD,EAGI,SAAS,EAAqB,CAAC,EAAuB,CAC5D,IAAM,EAAS,CACd,KAAM,EAAO,OAAO,CAAC,IAAU,EAAM,SAAW,MAAM,EAAE,OACxD,KAAM,EAAO,OAAO,CAAC,IAAU,EAAM,SAAW,MAAM,EAAE,OACxD,KAAM,EAAO,OAAO,CAAC,IAAU,EAAM,SAAW,MAAM,EAAE,OACxD,KAAM,EAAO,OAAO,CAAC,IAAU,EAAM,SAAW,MAAM,EAAE,MACzD,EAEM,EAAS,EAAO,KAAO,EAAI,OAAS,EAAO,KAAO,EAAI,OAAS,KAC/D,EAAQ,CACb,GAAG,EAAO,eACV,GAAG,EAAO,eAAe,EAAO,OAAS,EAAI,GAAK,MAClD,GAAG,EAAO,eAAe,EAAO,OAAS,EAAI,GAAK,KACnD,EACA,GAAI,EAAO,KAAO,EACjB,EAAM,KAAK,GAAG,EAAO,cAAc,EAGpC,MAAO,CACN,OAAQ,EACR,QAAS,wCAAwC,EAAM,KAAK,IAAI,IACjE,EC5TD,eAAsB,EAAuB,CAC5C,EACA,EACA,EAC8B,CAC9B,IAAM,EAAe,MAAM,EAAM,kBAAkB,EAC7C,EAAc,GAAiB,EAC/B,EAAY,GAAwB,CAAO,EAE7C,EAA+B,KAC/B,EAEJ,GAAI,CACH,IAAM,EAAmB,GAA0B,CAAO,EAC1D,EAAgB,EAAiB,KACjC,EAAiB,MAAM,GAAoB,CAAgB,EAC1D,MAAO,EAAgB,CACxB,IAAM,EACL,aAAiB,EACd,CACA,cAAe,EAAM,QAAQ,KAC7B,gBAAiB,EAAM,QAAQ,OAC/B,QAAS,EAAM,QAAQ,QACvB,gBAAiB,EAAM,QAAQ,eAChC,EACC,EAAU,KACT,CACA,cAAe,EAAU,KACzB,gBAAiB,EAAU,OAC3B,QAAS,EAAU,QACnB,gBAAiB,EAAU,eAC5B,EACC,KACL,EAAiB,CAChB,GAAI,YACJ,MAAO,0BACP,OAAQ,OACR,QACC,aAAiB,EACd,EAAM,QACN,aAAiB,MAChB,EAAM,QACN,oDACL,YACC,aAAiB,EACd,EAAM,YACN,0FACA,EAAmB,CAAE,QAAS,CAAiB,EAAI,CAAC,CACzD,EAGD,IAAM,EAAwB,MAAM,GACnC,EACA,CACD,EAEM,EAAS,CACd,EACA,EACA,EACA,CACD,EACM,EAAU,GAAsB,CAAM,EAC5C,MAAO,CAAE,OAAQ,EAAQ,OAAQ,QAAS,EAAQ,QAAS,QAAO,EAG5D,SAAS,EAAyB,CAAC,EAA+B,CACxE,MAAO,CACN,OAAQ,EAAU,OAClB,QAAS,EAAU,QACnB,OAAQ,EAAU,OAChB,OAAO,CAAC,IAAU,EAAM,SAAW,QAAU,EAAM,SAAW,MAAM,EACpE,IAAI,CAAC,KAAW,CAChB,GAAI,EAAM,GACV,MAAO,EAAM,MACb,OAAQ,EAAM,OACd,QAAS,EAAM,QACf,YAAa,EAAM,WACpB,EAAE,CACJ,ECtGD,SAAS,EAAmB,CAAC,EAAe,EAA2B,CACtE,IAAM,EAAS,EACb,QAAQ,UAAW,KAAK,EACxB,QAAQ,OAAQ,GAAG,EACnB,KAAK,EACP,GAAI,EAAO,QAAU,EACpB,OAAO,EAER,MAAO,GAAG,EAAO,MAAM,EAAG,KAAK,IAAI,EAAG,EAAY,CAAC,CAAC,EAAE,QAAQ,KAG/D,SAAS,EAA8B,CACtC,EACW,CACX,GAAI,CAAC,EACJ,MAAO,CAAC,EAET,IAAM,EAAW,EAAQ,yBACtB,KAAK,EAAQ,mDACb,GACH,MAAO,CACN,0BAA0B,EAAQ,UAAS,EAAQ,kBAAkB,KACrE,GAAI,EAAQ,aACT,CAAC,QAAQ,GAAoB,EAAQ,aAAc,GAAG,GAAG,EACzD,CAAC,CACL,EAGD,SAAS,EAAyB,CAAC,EAAmC,CACrE,IAAM,EAAW,GAA+B,CAAI,EACpD,GAAI,EAAS,SAAW,EACvB,MAAO,CAAC,EAGT,MAAO,CACN,iBACA,GAAG,EAAS,IAAI,CAAC,IAAQ,CACxB,IAAM,EAAU,GAAoB,EAAI,QAAS,EAAE,EAC7C,EAAO,GAAoB,EAAI,KAAM,EAAE,EAC7C,MAAO,KAAK,EAAI,eAAe,EAAI,WAAW,EAAI,YAAY,aAAmB,IACjF,CACF,EAGM,SAAS,EAA0B,CACzC,EACA,EAKS,CACT,IAAM,EAAY,GAAuB,CAAO,EAC1C,EAAQ,CACb,SAAS,EAAU,SAAS,UAC5B,SAAS,GAAS,UAAY,EAAU,SAAS,WACjD,YAAY,GAAS,aAAe,EAAU,SAAS,aACxD,EAEA,GAAI,EAAU,SAAS,QACtB,EAAM,OAAO,EAAG,EAAG,YAAY,EAAU,SAAS,SAAS,EAO5D,GAJA,EAAM,KACL,GAAG,GAA+B,EAAU,SAAS,mBAAmB,CACzE,EAEI,EAAU,SAAS,cAAe,CACrC,IAAM,EAAgB,EAAU,QAAQ,cACxC,EAAM,KACL,eAAe,EAAc,QAAO,EAAc,UAAU,EAAc,SAC3E,EAGD,GAAI,EAAU,SAAS,gBACtB,EAAM,KACL,aAAa,EAAU,QAAQ,gBAAgB,aAAa,EAAU,QAAQ,gBAAgB,iBAC/F,EAGD,IAAM,EACL,GAAS,sBAAwB,EAAU,SAAS,aACrD,GAAI,EACH,EAAM,KAAK,GAAG,GAA0B,CAAY,CAAC,EAGtD,GAAI,EAAU,SAAS,kBACtB,EAAM,KAAK,wBAAwB,EAAU,QAAQ,mBAAmB,EAGzE,GAAI,EAAU,SAAS,KACtB,EAAM,KAAK,SAAS,EAAU,QAAQ,MAAM,EAG7C,OAAO,EAAM,KAAK;AAAA,CAAI,ECrGvB,eAAS,0BACT,kBAAS,iBAAS,cAAY,mBAmE9B,SAAS,EAAkB,CAAC,EAAyB,CACpD,IAAM,EAAQ,EAAgC,KAC9C,OAAO,IAAS,UAAY,IAAS,UAGtC,eAAe,EAAe,CAAC,EAAgC,CAC9D,GAAI,CACH,OAAQ,MAAM,GAAK,CAAI,GAAG,YAAY,EACrC,MAAO,EAAO,CACf,GAAI,GAAmB,CAAK,EAC3B,MAAO,GAER,MAAM,GAIR,eAAe,EAAU,CAAC,EAAgC,CACzD,GAAI,CACH,OAAQ,MAAM,GAAK,CAAI,GAAG,OAAO,EAChC,MAAO,EAAO,CACf,GAAI,GAAmB,CAAK,EAC3B,MAAO,GAER,MAAM,GAIR,SAAS,EAAwB,CAAC,EAAc,EAA2B,CAC1E,OAAO,GAAY,CAAC,GAAW,CAAI,EAAI,GAAQ,EAAU,CAAI,EAAI,EAGlE,SAAS,EAAmB,CAC3B,EACA,EACS,CACT,OAAQ,OACF,SACJ,OAAO,GAAqB,CAAQ,MAChC,SACJ,OAAO,GAAqB,CAAQ,MAChC,YACJ,OAAO,GAAwB,CAAQ,GAI1C,SAAS,EAAqB,CAC7B,EAES,CACT,GAAI,CAAC,EAAO,SACX,MAAM,IAAI,EACT,UACA,+CACD,EAED,OAAO,EAAO,SAGf,SAAS,EAA4B,CACpC,EACA,EAC8C,CAC9C,GAAI,GAAE,eAAgB,KAAU,gBAAiB,IAChD,OAAO,EAGR,IAAM,EAAW,GAAsB,CAAM,EACvC,EAAO,GAAoB,EAAO,SAAU,CAAQ,EAG1D,GAFA,GAAiB,EAAM,EAAO,UAAU,EAEpC,EAAO,WAAa,aAAe,EAAO,iBAAkB,CAC/D,IAAM,EAAc,GACnB,EACA,EAAO,gBACR,EACA,GAAI,EAAO,aAAe,EACzB,MAAM,IAAI,EAA0B,UAAW,EAAO,UAAU,EAIlE,GAAI,EAAO,WAAa,aAAe,EAAO,UAAW,CACxD,IAAM,EAAc,EACnB,EACA,EAAO,UACP,EAAO,QACR,EACA,GAAI,EAAO,aAAe,EACzB,MAAM,IAAI,EAA0B,UAAW,EAAO,UAAU,EAIlE,GAAI,gBAAiB,EAAQ,CAC5B,IAAM,EAAsB,GAAsB,EAAO,UAAU,EACnE,GAAI,EAAO,cAAgB,EAC1B,MAAM,IAAI,EAA0B,UAAW,EAAO,WAAW,EAInE,OAAO,EAGR,SAAS,EAAmB,CAAC,EAG3B,CACD,GAAI,eAAgB,EAAQ,CAC3B,IAAM,EAAa,GAClB,EAAO,WACP,EAAO,QACR,EACA,OAAO,GAA6B,EAAQ,CAC3C,aACA,YAAa,GAAsB,CAAU,CAC9C,CAAC,EAGF,GAAI,gBAAiB,EAAQ,CAC5B,IAAM,EAAc,GACnB,EAAO,YACP,EAAO,QACR,EACA,OAAO,GAA6B,EAAQ,CAC3C,WAAY,GAAQ,CAAW,EAC/B,aACD,CAAC,EAGF,GAAI,EAAO,WAAa,YAAa,CACpC,IAAM,EAAa,GAClB,EAAO,SACP,EAAO,gBACR,EACA,MAAO,CACN,aACA,YAAa,GAAsB,CAAU,CAC9C,EAQD,MAAO,CACN,WANkB,EAClB,EAAO,SACP,EAAO,UACP,EAAO,QACR,EAGC,YAAa,EACZ,EAAO,SACP,EAAO,UACP,EAAO,QACR,CACD,EAGD,SAAS,EAA+B,CACvC,EACgE,CAChE,IAAM,EAAS,EAAM,OACf,EAAS,GAAoB,CAAM,EACnC,EAAO,GACZ,EAAO,WACP,EAAM,SACP,EAEA,MAAO,CACN,KAAM,cACN,MAAO,uBACP,UAAW,EAAM,UACjB,OACA,gBAAiB,EAAO,SACxB,WAAY,EAAO,WACnB,YAAa,EAAO,eAChB,EAAO,UAAY,CAAE,UAAW,EAAO,SAAU,EAAI,CAAC,KACtD,qBAAsB,GAAU,EAAO,iBACxC,CAAE,iBAAkB,EAAO,gBAAiB,EAC5C,CAAC,CACL,EAGD,eAAsB,EAAgC,CACrD,EACqC,CACrC,IAAM,EAAS,GAAgC,CAAK,EAEpD,GAAI,CAAE,MAAM,GAAgB,EAAO,UAAU,EAC5C,MAAO,IACH,EACH,UAAW,GACX,aAAc,sBACf,EAGD,GAAI,CAAE,MAAM,GAAW,EAAO,IAAI,EACjC,MAAO,IACH,EACH,UAAW,GACX,aAAc,qBACf,EAGD,MAAO,IACH,EACH,UAAW,GACX,aAAc,WACf,EC9OD,SAAS,EAAc,CAAC,EAMrB,CACF,MAAO,CACN,MAAO,EAAS,MAChB,KAAM,EAAS,KACf,WAAY,EAAS,WACrB,QAAS,EAAS,QAClB,OAAQ,EAAS,MAClB,EASD,SAAS,EAA4B,CACpC,EACA,EACgC,CAChC,GAAI,CAAC,GAAW,CAAC,GAAW,KAC3B,OAAO,KAER,MAAO,CACN,SAAU,SACV,SAAU,EAAU,KACpB,UAAW,EAAQ,EACpB,EAGD,SAAS,EAA4B,CACpC,EACA,EACgC,CAChC,GAAI,CAAC,GAAW,KACf,OAAO,KAER,MAAO,CACN,SAAU,EAAM,OAChB,SAAU,EAAU,KACpB,WAAY,EAAM,eAAiB,EAAM,KACzC,UAAW,EAAM,QAAQ,EAC1B,EAGD,SAAS,EAA0B,CAClC,EACW,CACX,OAAO,MAAM,KACZ,IAAI,IACH,CACC,EAAQ,eAAe,GACvB,GAAG,EAAQ,aAAa,IAAI,CAAC,IAAQ,EAAI,SAAS,CACnD,EAAE,OAAO,CAAC,IAAqB,QAAQ,CAAE,CAAC,CAC3C,CACD,EAGD,eAAe,EAA0B,CACxC,EACA,EACkD,CAClD,GAAI,CAAC,EACJ,OAAO,IAAI,IAEZ,IAAM,EAAU,MAAM,QAAQ,IAC7B,GAA2B,CAAO,EAAE,IAAI,MAAO,IAAc,CAC5D,GAAI,CACH,MAAO,CACN,EACA,MAAM,GAAiC,CAAE,YAAW,QAAO,CAAC,CAC7D,EACC,KAAM,CAIP,OAAO,MAER,CACF,EACA,OAAO,IAAI,IACV,EAAQ,OACP,CAAC,IACA,IAAU,IACZ,CACD,EAGD,SAAS,EAAqB,CAC7B,EACA,EAC0E,CAC1E,GAAI,CAAC,EACJ,MAAO,CAAC,EAET,IAAM,EAAmB,EAAW,IAAI,CAAS,EACjD,OAAO,EAAmB,CAAE,kBAAiB,EAAI,CAAC,EAGnD,eAAe,EAAqB,CACnC,EACA,EACoC,CACpC,IAAM,EAAa,MAAM,GAA2B,EAAS,CAAM,EACnE,GAAI,EAAW,OAAS,EACvB,OAAO,EAER,MAAO,IACH,EACH,cAAe,EAAQ,cACpB,IACG,EAAQ,iBACR,GAAsB,EAAY,EAAQ,cAAc,EAAE,CAC9D,EACC,KACH,aAAc,EAAQ,aAAa,IAAI,CAAC,KAAS,IAC7C,KACA,GAAsB,EAAY,EAAI,SAAS,CACnD,EAAE,CACH,EAOD,SAAS,EAAqB,CAC7B,EACA,EACC,CACD,IAAM,EAAW,GAAoB,EAAM,OAAO,EAClD,GAAI,EAAM,QAAU,EAAM,QAAQ,SAAW,YAC5C,MAAO,IAAK,EAAU,aAAY,EAEnC,MAAO,IACH,EACH,SAAU,gEACV,aACD,EAGD,SAAS,EAA4B,CACpC,EACgB,CAChB,OAAO,EAAM,SAAW,UAAY,EAAM,QAAQ,SAAW,YAC1D,0MACA,KAGJ,SAAS,EAA4B,CACpC,EACA,EAGA,EACC,CACD,GACC,EAAM,SAAW,UACjB,EAAM,QACN,EAAM,QAAQ,SAAW,YAEzB,OAAO,EAER,OAAO,EAAK,IAAI,CAAC,IAChB,EAAI,SAAW,YAAc,EAAM,IAAK,EAAK,KAAM,CAAS,CAC7D,EAGD,SAAS,EAAuB,CAC/B,EACA,EAAmB,WAClB,CACD,GAAI,CAAC,EACJ,MAAO,CAAC,EAET,IAAM,EAAc,GAA2B,CAAO,EAAE,YACxD,GAAI,EAAY,SAAW,EAC1B,MAAO,CAAC,EAET,GAAI,IAAS,UACZ,MAAO,CACN,mBAAoB,CACnB,MAAO,EAAY,OACnB,SAAU,EAAY,OACrB,CAAC,IAAe,EAAW,WAAa,MACzC,EAAE,OACF,OAAQ,EAAY,MAAM,EAAG,CAAC,EAAE,IAAI,CAAC,KAAgB,CACpD,GAAI,EAAW,GACf,SAAU,EAAW,SACrB,UAAW,EAAW,WAAa,KACnC,QAAS,EAAW,OACrB,EAAE,CACH,CACD,EAED,MAAO,CAAE,mBAAoB,CAAY,EAG1C,SAAS,EAAuB,CAC/B,EACA,EAAmB,WAClB,CACD,GAAI,CAAC,EACJ,MAAO,CAAC,EAET,IAAM,EAAc,GAA2B,CAAO,EACtD,GAAI,IAAS,UACZ,MAAO,CACN,kBAAmB,CAClB,MAAO,EAAY,kBAAkB,MACrC,cAAe,EAAY,kBAAkB,SAAS,OACtD,aAAc,EAAY,kBAAkB,SAAS,OACrD,SAAU,EAAY,kBAAkB,SACtC,MAAM,EAAG,CAAC,EACV,IAAI,CAAC,KAAU,CACf,GAAI,EAAK,GACT,UAAW,EAAK,WAAa,KAC7B,QAAS,EAAK,OACf,EAAE,EACH,WAAY,EAAY,kBAAkB,UAC3C,EACA,eAAgB,CACf,MAAO,EAAY,QAAQ,MAC3B,OAAQ,EAAY,QAAQ,OAC5B,kBAAmB,EAAY,QAAQ,OAAO,OAC7C,CAAC,IAAU,EAAM,SAAW,MAC7B,EAAE,OACF,kBAAmB,EAAY,QAAQ,OAAO,OAC7C,CAAC,IAAU,EAAM,SAAW,MAC7B,EAAE,MACH,EACA,oBAAqB,CACpB,mBAAoB,EAAY,aAAa,mBAC7C,qBAAsB,EAAY,aAAa,qBAC/C,uBAAwB,EAAY,aAAa,uBACjD,8BACC,EAAY,aAAa,0BAA0B,OACpD,qBAAsB,EAAY,aAAa,oBAChD,CACD,EAED,MAAO,CACN,kBAAmB,EAAY,kBAC/B,eAAgB,EAAY,QAC5B,oBAAqB,EAAY,YAClC,EAGM,SAAS,EAA4B,CAC3C,EACA,EACC,CACD,IAAM,EAAW,GAA2B,IAAI,EAChD,OAAO,EAAO,CACb,OAAQ,kBACR,QAAS,yCAAyC,MAClD,cACG,GAAe,CAAQ,EAC1B,aACD,CAAC,EAGF,eAAsB,EAAqB,CAC1C,EACA,EACA,EACA,EACkB,CAClB,IAAM,EAAY,GAAuB,EAAM,OAAO,EAChD,EAAoB,EAAU,QACjC,MAAM,GACN,EAAU,QACV,GAA6B,EAAO,CAAS,CAC9C,EACC,KACH,GAAI,CAAC,EACJ,MAAU,MAAM,mDAAmD,EAEpE,IAAM,EAAW,GAAsB,EAAO,CAAW,EACnD,EAAW,GAA2B,EAAM,OAAO,EACnD,EAAiB,EAAM,OAC1B,EACA,IAAK,EAAmB,aAAY,EACjC,EAAkB,GAA6B,CAAK,EACpD,EAAqB,IACvB,EACH,aAAc,GACb,EACA,EAAe,aACf,EAAS,QACV,CACD,EACA,OAAO,EAAO,CACb,OAAQ,KACR,QAAS,EACN,gCAAgC,MAChC,WAAW,EAAM,wBAAwB,MAC5C,OAAQ,EAAM,OACd,OAAQ,EAAM,OACd,OACC,EAAM,SAAW,UACjB,CAAC,EAAM,QACP,EAAM,QAAQ,SAAW,YAC1B,KAAM,EAAM,KACZ,cAAe,EAAM,eAAiB,KACtC,YAAa,EAAM,aAAe,KAClC,QAAS,EAAM,QAAQ,SAAW,QAC/B,GAAwB,EAAM,OAAO,KACrC,GAAwB,EAAM,OAAO,EACxC,cACG,GAAe,CAAQ,EAC1B,QAAS,EACT,cACI,EAAkB,CAAE,QAAS,CAAgB,EAAI,CAAC,EACtD,gBAAiB,GAA2B,EAAM,QAAS,CAC1D,YAAa,EAAS,YACtB,SAAU,EAAS,SACnB,qBAAsB,EAAmB,YAC1C,CAAC,EACD,aACD,CAAC,EAGF,eAAsB,EAAc,CACnC,EACA,EAAmB,WACnB,EACA,EACkB,CAClB,IAAM,EAAY,GAAuB,GAAW,IAAI,EAClD,EAAoB,GAAW,KAC/B,EAAW,EAAU,SACrB,EAAmB,EAAU,QAChC,MAAM,GACN,EAAU,QACV,GAA6B,EAAmB,CAAS,CAC1D,EACC,KACG,EAAkB,GACvB,EACA,EACG,CAAE,qBAAsB,EAAiB,YAAa,EACtD,MACJ,EACM,EAAgB,GAAW,MAAQ,KACnC,EACL,GAAkB,eAAe,kBAAoB,KACtD,GAAI,IAAS,UACZ,OAAO,GAAc,CACpB,OAAQ,EAAU,OAClB,QAAS,EAAU,WACf,EAAY,CAAE,UAAW,GAA0B,CAAS,CAAE,EAAI,CAAC,KACpE,GAAwB,EAAmB,SAAS,KACpD,GAAwB,EAAmB,SAAS,EACvD,kBAAmB,GAAkB,mBAAqB,QACtD,GAAkB,oBACnB,CAAE,oBAAqB,EAAiB,mBAAoB,EAC5D,CAAC,KACA,EAAyB,CAAE,wBAAuB,EAAI,CAAC,KACxD,GAAe,CAAQ,EAC1B,WACA,kBACA,YAAa,EAAS,YACtB,gBACA,UAAW,GAAa,IACzB,CAAC,EAEF,OAAO,EAAO,CACb,OAAQ,EAAU,OAClB,QAAS,EAAU,WACf,EAAY,CAAE,WAAU,EAAI,CAAC,KAC9B,GAAwB,CAAiB,KACzC,GAAwB,CAAiB,EAC5C,kBAAmB,GAAkB,mBAAqB,QACtD,GAAkB,oBACnB,CAAE,oBAAqB,EAAiB,mBAAoB,EAC5D,CAAC,KACA,EAAyB,CAAE,wBAAuB,EAAI,CAAC,KACvD,EAAmB,CAAE,QAAS,CAAiB,EAAI,CAAC,KACrD,GAAe,CAAQ,EAC1B,WACA,kBACA,gBACA,UAAW,GAAa,IACzB,CAAC,EAWF,SAAS,EAAqB,CAAC,EAAgD,CAC9E,MAAO,CACN,GAAI,EAAQ,OAAS,CAAC,EAAQ,MAAM,EAAI,CAAC,EACzC,GAAG,EAAQ,OACX,GAAG,EAAQ,SACZ,EAGD,SAAS,EAA0B,CAClC,EACsB,CACtB,OACC,GAAsB,CAAO,EAC3B,OAAO,CAAC,IAAU,EAAM,mBAAmB,EAC3C,KAAK,CAAC,EAAM,KACX,EAAM,qBAAqB,YAAc,IAAI,cAC7C,EAAK,qBAAqB,YAAc,EACzC,CACD,EAAE,IAAI,qBAAuB,KAIhC,SAAS,EAA0B,CAAC,EAAyB,CAC5D,IAAM,EAAS,IAAI,IAWnB,QAAW,KAAS,GAAsB,CAAO,EAAG,CACnD,IAAM,EAAU,EAAM,oBACtB,GAAI,CAAC,EAAS,SACd,IAAM,EAAM,GAAG,EAAQ,QAAQ,EAAQ,kBACjC,EAAW,EAAO,IAAI,CAAG,EACzB,EAAe,EAAQ,0BAA4B,EACzD,GAAI,EAAU,CAGb,GAFA,EAAS,OAAS,EAClB,EAAS,WAAW,KAAK,EAAM,EAAE,GAC5B,EAAQ,YAAc,KAAO,EAAS,kBAAoB,KAE9D,GADA,EAAS,iBAAmB,EAAQ,YAAc,KAC9C,EAAQ,aACX,EAAS,aAAe,EAAQ,aAGlC,SAED,EAAO,IAAI,EAAK,CACf,KAAM,EAAQ,KACd,gBAAiB,EAAQ,gBACzB,MAAO,EACP,WAAY,CAAC,EAAM,EAAE,EACrB,iBAAkB,EAAQ,YAAc,QACpC,EAAQ,aAAe,CAAE,aAAc,EAAQ,YAAa,EAAI,CAAC,CACtE,CAAC,EAEF,MAAO,CAAC,GAAG,EAAO,OAAO,CAAC,EAAE,KAAK,CAAC,EAAM,KACtC,EAAM,kBAAoB,IAAI,cAAc,EAAK,kBAAoB,EAAE,CACzE,EAGM,SAAS,EAAe,CAAC,EAAyB,EAAqB,CAC7E,IAAM,EAAc,EAAQ,OAAS,EAAI,EACnC,EACL,EAAc,EAAQ,OAAO,OAAS,EAAQ,UAAU,OACnD,EAAc,EAAQ,OAAO,OAClC,CAAC,IAAY,EAAQ,SAAW,WACjC,EAAE,OACI,EAAsB,GAA2B,CAAO,EACxD,EAAsB,GAA2B,CAAO,EACxD,EAAW,CAChB,aACA,cACA,YAAa,EAAQ,OAAO,OAC5B,cACA,eAAgB,EAAQ,UAAU,OAClC,wBAAyB,EAAoB,MAC9C,EACA,GAAI,IAAe,EAAG,CACrB,IAAM,EAAW,GAAoB,IAAI,EACnC,EAAW,GAA2B,IAAI,EAChD,MAAO,CACN,QAAS,EAAO,CACf,OAAQ,UACR,QAAS,iCACT,cACG,GAAe,CAAQ,EAC1B,UACA,sBACA,sBACA,aACD,CAAC,EACD,UACD,EAED,MAAO,CACN,QAAS,EAAO,CACf,OAAQ,KACR,QAAS,SAAS,kBAA2B,IAAe,EAAI,QAAU,cAAc,aAAuB,EAAQ,OAAO,iBAAiB,aAAuB,EAAQ,UAAU,qBACxL,UACA,sBACA,yBACI,EAAc,EACf,CACA,QACC,4KACF,EACC,CAAC,EACJ,aACD,CAAC,EACD,UACD,EClhBD,IAAM,GACL,yGAEK,GAA6B,mCAEnC,SAAS,EAAM,CAAC,EAAuB,CACtC,OAAO,KAAK,UAAU,CAAK,EAG5B,SAAS,EAAO,CAAC,EAAe,EAAM,IAAa,CAClD,OAAO,EAAM,QAAU,EAAM,EAAQ,GAAG,EAAM,MAAM,EAAG,EAAM,CAAC,KAG/D,SAAS,EAAgB,CAAC,EAAmC,CAC5D,OAAO,QAAQ,EAAI,UAAY,EAAI,SAAS,EAG7C,IAAM,GAAmC,CACxC,GACA,GACA,gCACA,wBACA,wBACD,EAEM,GAAuC,CAC5C,2DACA,UACA,WACA,oBACA,aACA,cACA,iBAEA,aACA,eACA,kBACA,uBACA,sBACD,EAEA,SAAS,EAAwB,CAAC,EAAwB,CACzD,OAAO,GAAiC,KAAK,CAAC,IAC7C,EAAM,WAAW,CAAM,CACxB,EAGD,SAAS,EAA0B,CAAC,EAAwB,CAC3D,OAAO,GAAqC,KAAK,CAAC,IACjD,EAAM,WAAW,CAAM,CACxB,EAGD,SAAS,EAAwB,CAAC,EAGhC,CACD,GAAI,CAAC,EACJ,MAAO,CAAE,MAAO,CAAC,EAAG,QAAS,EAAM,EAGpC,IAAM,EAAqB,CAAC,EACxB,EAAU,GACV,EAAwB,GAC5B,QAAW,KAAS,EAAO,CAC1B,GAAI,GAAyB,CAAK,EAAG,CACpC,EAAU,GACV,EAAwB,EAAM,WAAW,EAA2B,EACpE,SAED,GAAI,GAAyB,GAA2B,CAAK,EAAG,CAC/D,EAAU,GACV,SAED,EAAwB,GACxB,EAAS,KAAK,CAAK,EAGpB,MAAO,CAAE,MAAO,EAAU,SAAQ,EAGnC,eAAe,EAAmB,CACjC,EAC0B,CAC1B,GAAI,CAAC,GAAiB,CAAG,EACxB,OAAO,KAGR,GAAI,CACH,IAAM,EAAc,IACf,EAAI,SAAW,CAAE,SAAU,EAAI,QAAS,EAAI,CAAC,KAC7C,EAAI,UAAY,CAAE,UAAW,EAAI,SAAU,EAAI,CAAC,CACrD,EACA,OAAO,MAAM,GAAY,GAAmB,CAAW,CAAC,EACvD,KAAM,CACP,OAAO,MAIF,SAAS,EAAkC,CACjD,EACW,CACX,IAAM,EAAY,GAAuB,CAAO,EAChD,GAAI,CAAC,EAAU,QACd,MAAO,CAAC,EAGT,IAAM,EAAQ,CACb,GACA,+HACA,WAAW,GAAO,GAAQ,EAAU,QAAQ,IAAI,CAAC,IACjD,YAAY,EAAU,SAAS,OAChC,EAEA,GAAI,EAAU,QAAQ,cACrB,EAAM,KACL,qBAAqB,GAAO,EAAU,QAAQ,cAAc,EAAE,MAAM,EAAU,QAAQ,cAAc,aAAY,GAAO,GAAQ,EAAU,QAAQ,cAAc,KAAK,CAAC,GACtK,EAGD,GAAI,EAAU,SAAS,QACtB,EAAM,KAAK,cAAc,GAAO,GAAQ,EAAU,SAAS,OAAO,CAAC,GAAG,EAGvE,GAAI,EAAU,QAAQ,oBAAqB,CAC1C,IAAM,EAAW,CAChB,EAAU,QAAQ,oBAAoB,QACtC,EAAU,QAAQ,oBAAoB,YACvC,EACE,OAAO,CAAC,IAAyB,QAAQ,CAAI,CAAC,EAC9C,KAAK,IAAI,EACX,EAAM,KAAK,eAAe,GAAO,GAAQ,CAAQ,CAAC,GAAG,EAOtD,OAJA,EAAM,KACL,kBAAkB,GAAO,GAAQ,EAAU,SAAS,QAAQ,CAAC,gBAAgB,GAAO,EAAU,SAAS,WAAW,GACnH,EAEO,EAGR,eAAe,EAAiC,CAC/C,EACoB,CACpB,OAAO,GAAmC,MAAM,GAAoB,CAAG,CAAC,EAOzE,SAAS,EAA0B,CAAC,EAAmC,CACtE,GAAI,CAAC,EACJ,MAAO,CAAC,EAET,MAAO,CACN,GAAG,aAAqC,GAAO,GAAQ,EAAQ,IAAI,CAAC,+HACrE,EAGD,eAAsB,EAAkC,CACvD,EACA,EACgB,CAChB,IAAM,EAAW,GAAyB,EAAO,MAAM,EACvD,GAAI,CAAC,GAAiB,CAAG,EAAG,CAC3B,GAAI,EAAS,QACZ,EAAO,OAAS,EAAS,MAE1B,OAGD,IAAM,EAAU,GAA2B,MAAM,GAAoB,CAAG,CAAC,EACzE,GAAI,EAAQ,SAAW,EAAG,CACzB,GAAI,EAAS,QACZ,EAAO,OAAS,EAAS,MAE1B,OAGD,EAAO,OAAS,CAAC,GAAG,EAAS,MAAO,GAAG,CAAO,EAG/C,eAAsB,EAAsC,CAC3D,EACA,EACgB,CAChB,IAAM,EAAW,GAAyB,EAAO,OAAO,EACxD,GAAI,CAAC,GAAiB,CAAO,EAAG,CAC/B,GAAI,EAAS,QACZ,EAAO,QAAU,EAAS,MAE3B,OAGD,IAAM,EAAiB,MAAM,GAAkC,CAAO,EACtE,GAAI,EAAe,SAAW,EAAG,CAChC,GAAI,EAAS,QACZ,EAAO,QAAU,EAAS,MAE3B,OAGD,EAAO,QAAU,CAAC,GAAG,EAAS,MAAO,EAAe,KAAK;AAAA,CAAI,CAAC,EC3N/D,kBAFA,kBAAS,eAAS,0BAClB,mBAAS,WAAU,eAAM,UAAU,mBAgDnC,IAAM,GAAoB,EACpB,GAAsB,IACtB,GAA0B,IAAI,IAAI,CACvC,SACA,QACA,OACA,QACA,SACA,QACA,WACA,OACA,eACA,MACA,SACA,QACD,CAAC,EAEK,GAA4B,IAAI,IAAI,CACzC,OACA,SACA,UACA,WACA,SACD,CAAC,EACK,GAAuB,IAAI,IAAI,CAAC,OAAQ,SAAU,SAAU,SAAS,CAAC,EACtE,GAA4B,CAAC,OAAQ,OAAQ,OAAQ,MAAM,EAC3D,GAAsB,uCAEtB,GAAoB,IAAI,IAAI,CACjC,YACA,gBACA,eACA,iBACA,aACA,YACA,YACA,WACA,YACA,aACA,WACA,YACA,YACA,oBACA,eACA,iBACA,gBACA,WACD,CAAC,EAED,SAAS,EAAa,CAAC,EAA4B,CAClD,OAAO,MAAM,KACZ,IAAI,IAAI,EAAO,IAAI,CAAC,IAAU,EAAqB,CAAK,CAAC,EAAE,OAAO,OAAO,CAAC,CAC3E,EAGD,SAAS,EAAc,CAAC,EAA+C,CACtE,OAAO,IACL,GAAS,MAAM,UAAY,CAAC,GAAG,QAAQ,CAAC,IAAY,CACpD,GAAG,EAAQ,YACX,IAAI,EAAQ,aAAe,CAAC,GAAG,IAAI,CAAC,IAAW,EAAO,MAAM,CAC7D,CAAC,CACF,EAGD,SAAS,EAAgB,CAAC,EAA+C,CACxE,OAAO,GAAc,CACpB,IAAI,GAAS,WAAa,CAAC,GAAG,IAAI,CAAC,IAAa,EAAS,IAAI,EAC7D,IAAI,GAAS,UAAU,SAAW,CAAC,GAAG,QAAQ,CAAC,IAC9C,EAAM,iBAAiB,IAAI,CAAC,IAAa,EAAS,IAAI,CACvD,CACD,CAAC,EAGF,SAAS,EAAY,CACpB,EACA,EACA,EACA,EAC4B,CAC5B,GAAI,GAAyB,EAAM,CAAO,EACzC,MAAO,UAER,GAAI,GAAyB,EAAM,CAAO,EACzC,MAAO,UAER,IAAM,EAAO,GAAS,CAAI,EAC1B,GAAI,GAAkB,IAAI,CAAI,EAC7B,MAAO,SAER,GACC,IAAS,QACT,EAAK,WAAW,OAAO,GACvB,EAAK,YAAY,EAAE,SAAS,KAAK,EAEjC,MAAO,OAER,GACC,IAAS,SACT,EAAK,WAAW,QAAQ,GACxB,+BAA+B,KAAK,CAAI,EAExC,MAAO,OAER,GAAI,IAAS,cAAgB,IAAS,OAAS,EAAK,WAAW,MAAM,GACpE,MAAO,SAER,GAAI,IAAS,QAAU,EAAK,WAAW,MAAM,EAC5C,MAAO,SAER,MAAO,QAGR,SAAS,EAAc,CAAC,EAA2C,CAClE,OAAO,IAAS,QAAU,CAAC,EAAI,CAAC,CAAI,EAGrC,SAAS,EAAqB,CAAC,EAAuB,CACrD,OAAO,GAAwB,IAAI,CAAI,EAGxC,SAAS,EAAe,CACvB,EACA,EACU,CACV,IAAM,EAAO,GAAS,CAAI,EAAE,YAAY,EACxC,GAAI,IAAS,YACZ,OAAO,GAA0B,IAAI,CAAI,EAE1C,GAAI,GAAqB,IAAI,CAAI,GAAK,EAAK,WAAW,OAAO,EAC5D,MAAO,GAER,OAAO,GAA0B,KAAK,CAAC,IACtC,EAAK,SAAS,CAAS,CACxB,EAGD,SAAS,EAAoB,CAAC,EAAuB,CAEpD,IAAM,EADiB,EAAqB,CAAI,EAE9C,MAAM,GAAG,EACT,IAAI,CAAC,IAAY,EAAQ,YAAY,CAAC,EACtC,OAAO,OAAO,EACV,EAAO,EAAS,GAAG,EAAE,GAAK,GAChC,OACC,EAAS,KAAK,CAAC,IAAY,GAA0B,IAAI,CAAO,CAAC,GACjE,GAAqB,IAAI,CAAI,GAC7B,EAAK,WAAW,OAAO,GACvB,GAA0B,KAAK,CAAC,IAAc,EAAK,SAAS,CAAS,CAAC,EAIxE,SAAS,EAAwB,CAAC,EAAuB,CACxD,IAAM,EAAiB,EAAqB,CAAI,EAChD,OACC,EAAe,OAAS,GACxB,CAAC,EAAe,WAAW,GAAG,GAC9B,IAAmB,MACnB,CAAC,EAAe,WAAW,KAAK,GAChC,CAAC,EAAe,SAAS,MAAM,EAIjC,eAAe,EAAsB,CAAC,EAAc,CACnD,GAAI,CACH,IAAM,EAAW,MAAM,GAAS,GAAK,EAAM,YAAY,EAAG,MAAM,EAChE,OAAO,WAAO,EAAE,IAAI,CAAQ,EAC3B,MAAO,EAAO,CACf,GAAK,EAAgC,OAAS,SAC7C,OAAO,KAER,OAAO,MAIT,SAAS,EAAoB,CAC5B,EACA,EACA,EACU,CACV,GAAI,CAAC,GAAoB,CAAC,GAAyB,CAAI,EACtD,MAAO,GAER,GAAI,EAAiB,QAAQ,CAAI,EAChC,MAAO,GAER,OAAO,IAAS,aAAe,EAAiB,QAAQ,GAAG,IAAO,EAGnE,SAAS,EAAkB,CAC1B,EACA,EACU,CACV,IAAM,EAAiB,EAAqB,CAAI,EAChD,GAAI,CAAC,GAAyB,CAAc,EAC3C,MAAO,GAER,GAAI,CAAC,EACJ,MAAO,GAER,OACC,EAAiB,QAAQ,CAAc,GACvC,EAAiB,QAAQ,GAAG,IAAiB,EAI/C,SAAS,EAAmB,CAC3B,EACA,EACyC,CACzC,IAAI,EAAW,EACf,MAAO,CACN,OAAQ,EAAO,IAAI,CAAC,IAAU,CAC7B,GACC,GAAqB,CAAK,GAC1B,GAAmB,EAAO,CAAgB,EAG1C,OADA,GAAY,EACL,GAER,OAAO,EAAqB,CAAK,EACjC,EACD,UACD,EAGD,eAAsB,EAAwB,CAC7C,EACA,EACA,EAAsC,CAAC,EACE,CACzC,IAAM,EAAW,EAAQ,UAAY,GAC/B,EAAa,EAAQ,YAAc,GACnC,EAAU,GAAe,CAAO,EAChC,EAAU,GAAiB,CAAO,EAClC,EAAmC,CAAC,EACpC,EAAmB,MAAM,GAAuB,CAAI,EACpD,EAAmB,GAAoB,EAAS,CAAgB,EAChE,EAAmB,GAAoB,EAAS,CAAgB,EAClE,EAAY,GAEhB,eAAe,CAAK,CAAC,EAAmB,EAA8B,CACrE,GAAI,EAAQ,QAAU,EAAY,CACjC,EAAY,GACZ,OAED,GAAI,EAAQ,EAAU,CACrB,EAAY,GACZ,OAGD,IAAI,EACJ,GAAI,CACH,EAAU,MAAM,GAAQ,EAAW,CAAE,cAAe,EAAK,CAAC,EACzD,KAAM,CACP,OAGD,IAAM,GAAS,EAAQ,KAAK,CAAC,EAAM,KAAU,CAC5C,GAAI,EAAK,YAAY,IAAM,GAAM,YAAY,EAC5C,OAAO,EAAK,YAAY,EAAI,GAAK,EAElC,OAAO,EAAK,KAAK,cAAc,GAAM,IAAI,EACzC,EAED,QAAW,KAAS,GAAQ,CAC3B,GAAI,EAAQ,QAAU,EAAY,CACjC,EAAY,GACZ,OAED,GAAI,CAAC,EAAM,YAAY,GAAK,CAAC,EAAM,OAAO,EACzC,SAED,IAAM,GAAe,GAAK,EAAW,EAAM,IAAI,EACzC,GAAO,EACZ,GAAS,EAAM,EAAY,EAAE,MAAM,EAAG,EAAE,KAAK,GAAG,CACjD,EACA,GAAI,CAAC,GACJ,SAED,IAAM,GAAO,EAAM,YAAY,EAAI,YAAc,OACjD,GAAI,KAAS,aAAe,GAAsB,EAAM,IAAI,EAC3D,SAED,GAAI,GAAgB,GAAM,EAAI,EAC7B,SAED,GAAI,GAAqB,GAAM,GAAM,CAAgB,EACpD,SAED,IAAM,GAAO,GAAa,GAAM,GAAM,EAAS,CAAO,EAQtD,GAPA,EAAQ,KAAK,CACZ,QACA,QACA,QACA,QACA,QAAS,GAAe,EAAI,CAC7B,CAAC,EACG,EAAM,YAAY,EACrB,MAAM,EAAM,GAAc,EAAQ,CAAC,GAOtC,OAFA,MAAM,EAAM,EAAM,CAAC,EAEZ,CACN,SAAU,GAAS,CAAI,GAAK,EAC5B,WAAY,EAAQ,OACpB,YACA,WACA,aACA,mBAAoB,CAAC,GAAG,EAAuB,EAAE,KAAK,EACtD,cAAe,CACd,uBACA,kBACA,GAAI,EAAmB,CAAC,YAAY,EAAI,CAAC,CAC1C,EACA,MAAO,CACN,eAAgB,EAAiB,OACjC,uBAAwB,EAAiB,SACzC,iBAAkB,EAAiB,OACnC,yBAA0B,EAAiB,QAC5C,EACA,SACD,ECrXD,eAAS,4BCWT,SAAS,EAAsB,CAAC,EAAsC,CACrE,OAAO,EACN,EAAc,EAAM,QAAS,CAC5B,cAAe,EAAM,QAAQ,KAC7B,UAAW,EAAM,QACjB,YAAa,EAAM,WACpB,CAAC,CACF,EAGM,SAAS,CAAiB,CAChC,EACA,EAC2D,CAC3D,MAAO,OAAO,EAAM,IAAY,CAC/B,IAAM,EAAS,GAAc,EAAQ,CAAI,EACzC,GAAI,CAAC,EAAO,GACX,OAAO,EAAO,SAGf,GAAI,CACH,OAAO,MAAM,EAAI,EAAO,MAAO,CAAO,EACrC,MAAO,EAAO,CACf,GAAI,aAAiB,EACpB,OAAO,GAAuB,CAAK,EAGpC,MAAM,ICnBT,IAAM,EAAI,EAAK,OAYT,GAAuB,EAAE,KAAK,CAAC,UAAW,UAAU,CAAC,EACrD,GAAwB,EAAE,KAAK,CAAC,UAAW,WAAY,MAAM,CAAC,EAC9D,GAAkB,EACtB,OAAO,EACP,MAAM,GAAoB,EAAkB,EACxC,GAAkB,EACtB,OAAO,EACP,IAAI,CAAC,EACL,MAAM,GAAoB,0CAA0C,EAGzD,GAAsB,CAClC,KAAM,GAAqB,SAAS,CACrC,EACa,GAAuB,EAAE,OAAO,EAAmB,EAGnD,GAAuB,CACnC,KAAM,GAAsB,SAAS,EACrC,wBAAyB,EAAE,QAAQ,EAAE,SAAS,CAC/C,EACa,GAAwB,EAAE,OAAO,EAAoB,EAGrD,GAAwB,CACpC,KAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,EACxC,SAAU,GAAiC,SAAS,EACpD,KAAM,GAAsB,SAAS,CACtC,EACa,GAAyB,EAAE,OAAO,EAAqB,EAGvD,GAA2B,CACvC,WAAY,EAAE,MAAM,EAAe,EAAE,SAAS,CAC/C,EACa,GAA4B,EAAE,OAAO,EAAwB,EAG7D,GAAwB,CACpC,UAAW,GAAgB,SAAS,CACrC,EACa,GAAyB,EAAE,OAAO,EAAqB,EAGvD,GAA+B,IACxC,GAA8B,QAAQ,EAAE,MAC3C,OAAQ,EAAE,KAAK,CAAC,KAAM,aAAa,CAAC,EAAE,SAAS,EAC/C,QAAS,GAAqB,SAAS,EACvC,MAAO,EAAE,QAAQ,EAAE,SAAS,EAC5B,UAAW,GAAgB,SAAS,CACrC,EAEM,GAAqC,EACzC,OAAO,CACP,MAAO,EAAE,QAAQ,EAAI,EACrB,UAAW,EACZ,CAAC,EACA,OAAO,EAST,SAAS,EAA4B,CACpC,EACA,EACO,CACP,EAAE,OAAO,CAAE,UAAW,GAAgB,SAAS,CAAE,CAAC,EAChD,YAAY,CAAC,EAAO,IAAQ,CAC5B,GACC,EAAM,YAAc,QACpB,EAAM,YAAc,EAEpB,EAAI,SAAS,CACZ,KAAM,SACN,KAAM,CAAC,WAAW,EAClB,QACC,gFACF,CAAC,EAEF,EACA,MAAM,CAAE,UAAW,CAAkB,CAAC,EAGlC,IAAM,GAAgC,CAC5C,KAAK,CAAC,EAAyC,CAC9C,GACC,IAAU,MACV,OAAO,IAAU,UAChB,EAA8B,QAAU,GAGzC,MAAO,CAAE,MAAO,GAAM,UADP,GAAmC,MAAM,CAAK,EACrB,SAAU,EAEnD,IACC,MAAO,EACP,UAAW,KACR,GACC,GAAS,CAAC,EACT,EAAS,GAA8B,MAAM,CAAW,EAK9D,OAJA,GACC,EACA,EAAO,cAAc,SACtB,EACO,CAAE,MAAO,GAAO,QAAO,EAEhC,EAKa,GAA4B,CACxC,MAAO,EAAE,KAAK,CAAC,UAAW,OAAO,CAAC,EAClC,UAAW,GAAgB,SAAS,KACjC,GAAmC,KAAK,CAAE,MAAO,EAAK,CAAC,EAAE,QAAQ,EAAE,MACtE,OAAQ,EAAE,KAAK,EAA0B,EACzC,QAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAC1B,EACa,GAA6B,GAGpC,GAAuB,CAAC,WAAY,QAAS,UAAW,MAAM,EACvD,GAAuB,CACnC,OAAQ,EAAE,KAAK,EAAoB,EACnC,UAAW,GAAgB,SAAS,EACpC,KAAM,EAAE,KAAK,EAAa,EAAE,SAAS,EACrC,QAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,CAC5C,EACa,GAAwB,EACnC,OAAO,EAAoB,EAC3B,YAAY,CAAC,EAAO,IAAQ,CAC5B,IACE,EAAM,SAAW,YAAc,EAAM,SAAW,SACjD,CAAC,EAAM,UAEP,EAAI,SAAS,CACZ,KAAM,SACN,KAAM,CAAC,WAAW,EAClB,QAAS,yCAAyC,EAAM,UACzD,CAAC,EAEF,GAAI,EAAM,SAAW,SAAW,CAAC,EAAM,KACtC,EAAI,SAAS,CACZ,KAAM,SACN,KAAM,CAAC,MAAM,EACb,QACC,oFACF,CAAC,EAEF,ECxLF,mBAAS,WAAU,mBAUZ,MAAM,WAAwC,KAAM,CACjD,KAAO,wCACP,KACA,OAET,WAAW,CAAC,EAAwC,CACnD,MACC,4CAA4C,EAAS,8EACtD,EACA,KAAK,KAAO,kCACZ,KAAK,KAAO,EAAS,KACrB,KAAK,OAAS,EAAS,OAEzB,CAEA,SAAS,EAAU,CAAC,EAA+C,CAClE,OACC,OAAO,IAAU,UACjB,IAAU,MACV,OAAQ,EAA+B,OAAS,WAIlD,SAAS,EAA0B,CAAC,EAAuB,CAC1D,IAAM,EAAO,GAAS,CAAI,EAC1B,OAAO,EAAK,WAAW,GAAG,GAAK,IAAS,QAGzC,SAAS,EAA2B,CACnC,EAC+B,CAC/B,IAAM,EAAW,GAA0B,CAAO,EAClD,MAAO,CACN,KAAM,EAAS,KACf,OAAQ,EAAS,OACjB,2BAA4B,GAA2B,EAAS,IAAI,CACrE,EAGD,eAAsB,EAAgC,CACrD,EACA,EAAW,GAA4B,CAAO,EAC5B,CAClB,GAAI,CAAC,EAAS,2BACb,OAAO,EAAS,KAGjB,GAAI,CAAC,EAAQ,IACZ,MAAM,IAAI,GAAgC,CAAQ,EAGnD,IAAM,EAAY,EAAQ,IAAI,CAC7B,WAAY,OACZ,SAAU,CAAC,GAAK,EAAS,KAAM,QAAS,IAAI,CAAC,EAC7C,OAAQ,CAAC,GAAK,EAAS,KAAM,QAAS,IAAI,CAAC,EAC3C,SAAU,CACT,cAAe,EAAS,KACxB,gBAAiB,EAAS,OAC1B,OACC,gGACF,CACD,CAAC,EACD,GAAI,CAAC,GAAW,CAAS,EAIxB,MAAM,IAAI,GAAgC,CAAQ,EAGnD,OADA,MAAM,EACC,EAAS,KClDV,SAAS,EAAoB,CAAC,EAAsB,CAC1D,OAAO,GAAwB,CAAO,EAGhC,SAAS,CAAkB,CACjC,EACA,EACA,EACC,CACD,EAAQ,WAAW,CAAE,QAAO,UAAS,CAAC,EAGhC,SAAS,EAAe,CAAC,EAA0B,CACzD,OAAQ,GAAO,CAAC,GAAG,IAAI,CAAC,IAAU,EAAM,KAAK,CAAC,EAAE,OAAO,OAAO,EAG/D,eAAsB,EAAwD,CAC7E,EACA,EACA,EACqC,CAErC,OADe,MAAM,GAAiB,EAAS,EAAM,CAAO,GAC9C,MAGf,eAAsB,EAErB,CACA,EACA,EACA,EACkB,CAElB,OADA,MAAM,GAAiC,CAAO,EACvC,GAAuB,EAAS,EAAM,CAAO,EAGrD,eAAsB,EAErB,CACA,EACA,EACA,EACwE,CAExE,OADA,MAAM,GAAiC,CAAO,EACvC,GAAmB,EAAS,EAAM,CAAO,EAGjD,eAAsB,EAErB,CACA,EACA,EACA,EACkB,CAElB,OADA,MAAM,GAAiC,CAAO,EACvC,GAAuB,EAAS,EAAM,CAAO,EAGrD,eAAsB,EAA4C,CACjE,EACA,EAC4C,CAC5C,GAAI,CAAC,EACJ,OAAO,KAGR,GAAI,CACH,IAAM,EAAW,GAAmB,CAAO,EACrC,EAAY,MAAM,GAAoB,CAAQ,EACpD,GAAI,CAAC,EACJ,OAAO,KAER,OAAO,GAAiC,CACvC,YACA,OAAQ,CAAE,SAAU,SAAU,WAAU,WAAU,CACnD,CAAC,EACA,KAAM,CACP,OAAO,MC9FT,IAAM,GAA+D,CACpE,YACC,8FACD,aACC,8HACD,eACC,0HACD,kBACC,wGACD,eAAgB,uCAChB,sBACC,4GACD,mBACC,8FACD,aACC,iGACF,EAEa,GACZ,GAA6B,IAAI,CAAC,KAAc,CAC/C,WACA,gBAAiB,GAA2B,EAC7C,EAAE,EAEU,GACZ,GAAuB,IAAI,CAAC,IAAU,EAAM,QAAQ,EAErD,SAAS,EAA4B,CACpC,EACmC,CACnC,OACC,GAAuB,KAAK,CAAC,IAAU,EAAM,WAAa,CAAQ,GAAK,KAIlE,SAAS,CAAuB,CAAC,EAAoC,CAC3E,IAAM,EAAQ,GAA6B,CAAQ,EACnD,GAAI,CAAC,EACJ,MAAU,MAAM,6CAA6C,KAAY,EAE1E,OAAO,EAAM,gBC5Bd,SAAS,EAAoB,CAC5B,EACC,CACD,MAAO,CACN,UAAW,EAAY,UACvB,KAAM,EAAY,KAClB,gBAAiB,EAAY,gBAC7B,eAAgB,EAAY,QAC5B,kBAAmB,EAAY,kBAC/B,oBAAqB,CACpB,mBAAoB,EAAY,aAAa,mBAC7C,qBAAsB,EAAY,aAAa,qBAC/C,uBAAwB,EAAY,aAAa,uBACjD,8BACC,EAAY,aAAa,0BAA0B,OACpD,qBAAsB,EAAY,aAAa,oBAChD,EACA,mBAAoB,EAAY,YAChC,iBAAkB,EAAY,iBAC3B,CACA,SAAU,EAAY,iBAAiB,SACvC,WAAY,EAAY,iBAAiB,WACzC,UAAW,EAAY,iBAAiB,UACxC,cAAe,EAAY,iBAAiB,cAC5C,MAAO,EAAY,iBAAiB,MACpC,QAAS,EAAY,iBAAiB,QAAQ,MAAM,EAAG,EAAE,CAC1D,EACC,IACJ,EAGD,SAAS,EAAc,CACtB,EACA,EACC,CACD,GAAI,IAAS,OACZ,OAAO,EAER,GAAI,IAAS,WACZ,MAAO,IACH,GAAqB,CAAW,EACnC,SAAU,EAAY,aAAa,QACpC,EAED,OAAO,GAAqB,CAAW,EAGjC,SAAS,EAAiB,EAAG,CACnC,MAAO,CACN,aAAc,EAAK,CAClB,YAAa,EAAwB,cAAc,EACnD,KAAM,GACN,QAAS,EACR,GACA,MAAO,EAAO,IAAyB,CACtC,IAAM,EAAU,MAAM,GACrB,EACA,sBACA,MACD,EACM,EAAO,EAAM,MAAQ,UACrB,EAAY,GAAqB,CAAO,EAC9C,GAAI,CAAC,EAMJ,OALA,EAAmB,EAAS,eAAgB,CAC3C,OAAQ,kBACR,OACA,cAAe,EAAU,IAC1B,CAAC,EACM,GAAe,EAAS,UAAW,CAAS,EAKpD,IAAM,GADL,EAAM,yBAA2B,IAAS,aAEf,EAAU,KAClC,MAAM,GAAyB,EAAU,KAAM,CAAO,EACtD,OACE,EAAc,GAA2B,EAAS,CACvD,kBACD,CAAC,EAWD,OAVA,EAAmB,EAAS,eAAgB,CAC3C,UAAW,EAAQ,GACnB,OAAQ,EAAQ,OAChB,OACA,oBAAqB,EAAY,QAAQ,MACzC,uBAAwB,EAAY,kBAAkB,MACtD,2BACC,EAAY,kBAAkB,YAAc,EAC7C,cAAe,EAAU,IAC1B,CAAC,EACM,EAAO,CACb,OAAQ,KACR,QAAS,gBAAgB,uBAA0B,EAAQ,OAC3D,OACA,QAAS,GAAe,EAAa,CAAI,EACzC,cAAe,EAAU,KACzB,WACD,CAAC,EAEH,CACD,CAAC,CACF,ECzGM,SAAS,EAAyB,EAAG,CAC3C,OAAO,EAGD,SAAS,EAAkC,EAAG,CACpD,OAAO,GAGD,SAAS,EAAqB,CAAC,EAAyB,CAC9D,IAAM,EAAyB,EAAQ,OAAO,KAC7C,CAAC,IAAY,EAAQ,SAAW,WACjC,EAEA,GAAI,EAAQ,gBACX,OAAO,EAGR,OAAO,EACJ,GAA2B,EAAuB,EAAE,EACpD,EAGG,SAAS,EAA2B,CAC1C,EACA,EACC,CACD,GAAI,EAAM,SAAW,SACpB,OAAO,EAER,GAAI,EAAM,SAAW,UAAY,EAAM,QAAQ,SAAW,YACzD,OAAO,GAA2B,CAAS,EAE5C,OAAO,EAAM,QAAQ,SAAW,YAC7B,EACA,GAGG,SAAS,EAA0B,EAAG,CAC5C,OAAO,EChCR,SAAS,EAAsB,CAC9B,EAC2C,CAC3C,GAAI,IAAa,OAChB,OAED,OAAO,OAAO,YACb,OAAO,QAAQ,CAAQ,EAAE,OAAO,GAAI,KAAW,IAAU,MAAS,CACnE,EAGM,SAAS,EAAe,EAAG,CACjC,MAAO,CACN,eAAgB,EAAK,CACpB,YAAa,EAAwB,gBAAgB,EACrD,KAAM,GACN,QAAS,EACR,GACA,MAAO,EAAO,IAAyB,CACtC,IAAM,EAAW,GAAuB,EAAM,QAAQ,EACtD,EAAmB,EAAS,sBAAuB,CAClD,UAAW,KACX,UAAW,YACX,UAAW,WACX,YAAa,YACb,WAAY,SACZ,KAAM,EAAM,MAAQ,KACpB,mBAAoB,IAAa,OACjC,aAAc,EAAM,MAAM,SAAS,QAAU,IAC9C,CAAC,EAED,IAAM,EAAQ,MAAM,GAAuB,EAAS,YAAa,IAC5D,EAAM,KAAO,CAAE,KAAM,EAAM,IAAK,EAAI,CAAC,KACrC,IAAa,OAAY,CAAE,UAAS,EAAI,CAAC,KACzC,EAAQ,UAAY,CAAE,UAAW,EAAQ,SAAU,EAAI,CAAC,EAC5D,uBAAwB,GAA0B,CACnD,CAAC,EAED,GAAI,CAAC,EAAM,MAAQ,EAAM,MAAM,SAAW,eACzC,OAAO,EAAO,EAAM,QAAQ,EAG7B,OAAO,GAA8B,EAAS,aAAc,CAC3D,KAAM,EAAM,IACb,CAAC,EAEH,CACD,CAAC,EAED,kBAAmB,EAAK,CACvB,YAAa,EAAwB,mBAAmB,EACxD,KAAM,GACN,QAAS,EACR,GACA,MAAO,EAAO,IAAyB,CACtC,IAAM,EAAa,GAAgB,EAAM,UAAU,EAUnD,OATA,EAAmB,EAAS,0BAA2B,CACtD,UAAW,KACX,UAAW,YACX,UAAW,WACX,YAAa,gBACb,WAAY,SACZ,wBAAyB,WACzB,cAAe,EAAW,QAAU,IACrC,CAAC,EACM,GAA8B,EAAS,eAAgB,CAC7D,YACD,CAAC,EAEH,CACD,CAAC,CACF,EC5EM,SAAS,EAAgB,EAAG,CAClC,MAAO,CACN,mBAAoB,EAAK,CACxB,YAAa,EAAwB,oBAAoB,EACzD,KAAM,GACN,QAAS,EACR,GACA,MAAO,EAAO,IAAyB,CACtC,GAAI,EAAM,QAAU,UAAW,CAC9B,IAAM,EACL,MAAM,GACL,EACA,EAAM,SACP,EAmBD,OAlBA,EACC,EACA,4BAA4B,EAAM,sCAAqC,EAAM,YAC7E,CACC,UAAW,KACX,kBAAmB,iBACnB,0BAA2B,mBAC3B,cAAe,2BACf,UAAW,gBACX,UAAW,SACX,YAAa,mBAAmB,EAAM,YACtC,WAAY,SACZ,sBAAuB,EAAM,OAC7B,sBAAuB,KACvB,UAAW,EAAM,aACb,EAAsB,CAAE,qBAAoB,EAAI,CAAC,CACtD,CACD,EACO,GACN,EACA,wBACA,CAAE,SAAU,CAAM,CACnB,EAwBD,OArBA,EACC,EACA,4BAA4B,EAAM,oCAClC,CACC,UAAW,KACX,kBAAmB,iBACnB,0BAA2B,mBAC3B,cAAe,2BACf,UAAW,gBACX,UAAW,eACX,YAAa,uBACb,WAAY,SACZ,sBAAuB,EAAM,OAC7B,sBAAuB,KACvB,YAAa,EAAM,YACnB,iBAAkB,EAAM,oBACpB,EAAM,gBACP,CAAE,gBAAiB,EAAM,eAAgB,EACzC,CAAC,CACL,CACD,EACO,GAA8B,EAAS,sBAAuB,CACpE,SAAU,CACX,CAAC,EAEH,CACD,CAAC,CACF,ECjEM,SAAS,EAAc,EAAG,CAChC,MAAO,CACN,eAAgB,EAAK,CACpB,YAAa,EAAwB,gBAAgB,EACrD,KAAM,GACN,QAAS,EACR,GACA,MAAO,EAAO,IAAyB,CACtC,IAAM,EACL,MAAM,GACL,EACA,EAAM,SACP,EAgBD,OAfA,EACC,EACA,EAAM,UACH,wBAAwB,EAAM,YAC9B,6CACH,CACC,UAAW,KACX,UAAW,WACX,UAAW,YACX,YAAa,EAAM,WAAa,wBAChC,WAAY,SACZ,UAAW,EAAM,WAAa,QAC1B,EAAsB,CAAE,qBAAoB,EAAI,CAAC,CACtD,CACD,EACO,GAA8B,EAAS,YAAa,IACtD,EAAM,UAAY,CAAE,UAAW,EAAM,SAAU,EAAI,CAAC,CACzD,CAAC,EAEH,CACD,CAAC,EAED,sBAAuB,EAAK,CAC3B,YAAa,EAAwB,uBAAuB,EAC5D,KAAM,GACN,QAAS,EACR,GACA,MAAO,EAAO,IAAyB,CACtC,GAAI,EAAM,MAAO,CAChB,IAAM,EACL,MAAM,GACL,EACA,EAAM,SACP,EAcD,OAbA,EACC,EACA,4BAA4B,EAAM,YAClC,CACC,UAAW,KACX,UAAW,eACX,UAAW,WACX,YAAa,EAAM,UACnB,WAAY,SACZ,UAAW,EAAM,aACb,EAAsB,CAAE,qBAAoB,EAAI,CAAC,CACtD,CACD,EACO,GAA8B,EAAS,gBAAiB,CAC9D,UAAW,EAAM,SAClB,CAAC,EAGF,IAAM,EAAS,EAAM,OACf,EACL,MAAM,GACL,EACA,EAAO,eAAe,SACvB,EA0BD,OAzBA,EACC,EACA,2DAA0D,EAAO,eAAe,WAAa,YAC7F,CACC,UAAW,KACX,kBAAmB,iBACnB,0BAA2B,mBAC3B,cAAe,2BACf,UAAW,WACX,UAAW,YACX,YACC,EAAO,eAAe,WAAa,qBACpC,WAAY,SACZ,oBACC,EAAO,SAAW,KAAO,YAAc,cACxC,sBAAuB,EAAO,OAC9B,oBAAqB,KACrB,sBAAuB,KACvB,UAAW,EAAO,eAAe,WAAa,KAC9C,gBAAiB,EAAO,cAAc,OACtC,iBAAkB,EAAO,kBAAoB,KAC7C,eAAgB,EAAO,cAAgB,UACnC,EAAsB,CAAE,qBAAoB,EAAI,CAAC,CACtD,CACD,EACO,GAA8B,EAAS,eAAgB,CAC7D,QACD,CAAC,EAEH,CACD,CAAC,CACF,EC5FD,eAAe,EAAe,CAAC,EAAsB,EAAmB,CAEvE,OADA,EAAmB,EAAS,YAAY,IAAa,CAAE,WAAU,CAAC,EAC3D,GAA2B,EAAS,mBAAoB,CAC9D,YACA,YAAa,EACb,mBAAoB,GAAmC,CACxD,CAAC,EAGF,eAAe,EAAY,CAC1B,EACA,EACA,EACC,CAID,OAHA,EAAmB,EAAS,uBAAuB,KAAS,CAC3D,YAAa,CACd,CAAC,EACM,GAA2B,EAAS,gBAAiB,CAC3D,UACI,EAAU,CAAE,SAAQ,EAAI,CAAC,EAC7B,YAAa,GAA2B,CACzC,CAAC,EAGF,eAAe,EAAkB,CAAC,EAAsB,CACvD,IAAM,EAAU,MAAM,GACrB,EACA,uBACA,MACD,EACM,EAAW,GAAgB,EAAS,GAAsB,CAAO,CAAC,EAExE,OADA,EAAmB,EAAS,eAAgB,EAAS,QAAQ,EACtD,EAAS,QAGjB,eAAe,EAAiB,CAAC,EAAsB,EAAmB,CACzE,IAAM,EAAQ,MAAM,GAAqB,EAAS,uBAAwB,CACzE,WACD,CAAC,EAOD,GANA,EAAmB,EAAS,gBAAgB,IAAa,CACxD,YACA,OAAQ,GAAO,QAAU,KACzB,OAAQ,GAAO,QAAU,EAC1B,CAAC,EAEG,CAAC,EACJ,OAAO,GACN,EACA,GAAmC,CACpC,EAGD,IAAM,EAAY,GAAqB,CAAO,EAC9C,OAAO,MAAM,GACZ,EACA,EACA,GAA4B,EAAW,CAAK,EAC5C,CACD,EAGM,SAAS,EAAiB,EAAG,CACnC,MAAO,CACN,aAAc,EAAK,CAClB,YAAa,EAAwB,cAAc,EACnD,KAAM,GACN,QAAS,EACR,GACA,MAAO,EAAO,IAAyB,CACtC,OAAQ,EAAM,YACR,WAAY,CAChB,GAAI,CAAC,EAAM,UACV,MAAU,MACT,kDACD,EAED,OAAO,GAAgB,EAAS,EAAM,SAAS,CAChD,KACK,QAAS,CACb,GAAI,CAAC,EAAM,KACV,MAAU,MAAM,0CAA0C,EAE3D,OAAO,GAAa,EAAS,EAAM,KAAM,EAAM,OAAO,CACvD,KACK,UACJ,OAAO,GAAmB,CAAO,MAC7B,OAAQ,CACZ,GAAI,CAAC,EAAM,UACV,MAAU,MAAM,8CAA8C,EAE/D,OAAO,GAAkB,EAAS,EAAM,SAAS,CAClD,GAGH,CACD,CAAC,CACF,EC/FD,SAAS,EAAyB,EAAG,CACpC,OAAO,GAAkB,CACxB,0BACA,oCACA,6BACA,qBACA,2BACD,CAAC,EAGK,SAAS,EAAgB,EAAG,CAClC,MAAO,CACN,YAAa,EAAK,CACjB,YAAa,EAAwB,aAAa,EAClD,KAAM,GACN,QAAS,EACR,GACA,MAAO,EAAO,IAAyB,CACtC,IAAM,EAAU,MAAM,GACrB,EACA,sBACA,MACD,EACM,EAAY,GAAqB,CAAO,EACxC,EAAY,MAAM,GAAwB,EAAS,EAAS,CACjE,kBAAmB,EACpB,CAAC,EACK,EAAe,EAAU,GAAoB,CAAO,EAAI,CAAC,EAqB/D,OApBA,EAAmB,EAAS,cAAe,CAC1C,UAAW,GAAS,IAAM,KAC1B,OAAQ,GAAS,QAAU,UAC3B,SAAU,GAAS,UAAY,KAC/B,gBAAiB,GAAS,UAAU,iBAAmB,KACvD,KAAM,EAAM,MAAQ,WACpB,UAAW,EAAU,OACrB,kBAAmB,EAAa,OAChC,gBAAiB,EAAa,OAC7B,CAAC,IAAQ,EAAI,SAAW,QACzB,EAAE,OACF,iBAAkB,EAAa,OAC9B,CAAC,IACA,EAAI,SAAW,WACf,EAAI,SAAW,aACf,EAAI,SAAW,aACjB,EAAE,OACF,cAAe,EAAU,KACzB,yBAA0B,EAAU,eACrC,CAAC,EACM,MAAM,GACZ,EACA,EAAM,MAAQ,WACd,EACA,CACD,EAEF,CACD,CAAC,CACF,ECjFD,SAAS,EAAsD,CAAC,EAAa,CAC5E,IAAM,EAAY,IAAI,IAAI,OAAO,KAAK,CAAK,CAAC,EACtC,EAAiB,IAAI,IAAY,EAAiC,EAClE,EAAU,GAAkC,OACjD,CAAC,IAAS,CAAC,EAAU,IAAI,CAAI,CAC9B,EACM,EAAQ,CAAC,GAAG,CAAS,EAAE,OAAO,CAAC,IAAS,CAAC,EAAe,IAAI,CAAI,CAAC,EAEvE,GAAI,EAAQ,OAAS,GAAK,EAAM,OAAS,EACxC,MAAU,MACT,CACC,EAAQ,OAAS,EACd,sCAAsC,EAAQ,KAAK,IAAI,IACvD,KACH,EAAM,OAAS,EACZ,kCAAkC,EAAM,KAAK,IAAI,IACjD,IACJ,EACE,OAAO,CAAC,IAA+B,IAAY,IAAI,EACvD,KAAK,IAAI,CACZ,EAGD,OAAO,OAAO,YACb,GAAkC,IAAI,CAAC,IAAS,CAAC,EAAM,EAAM,EAAK,CAAC,CACpE,EAGD,SAAS,EAAe,EAAG,CAC1B,OAAO,GAAoB,IACvB,GAAiB,KACjB,GAAkB,KAClB,GAAgB,KAChB,GAAe,KACf,GAAiB,KACjB,GAAkB,CACtB,CAAC,EAGK,SAAS,EAAW,CAAC,EAAc,CAEzC,OADA,GAAc,CAAG,EAAE,OAAQ,6BAA6B,EACjD,GAAgB,ECnCxB,SAAS,EAA6B,CACrC,EAC2D,CAC3D,MAAO,OAAO,EAAQ,IAAW,CAChC,MAAM,GAAmC,EAAK,CAAM,GAItD,IAAM,GAAqB,MAAO,IAAQ,CACzC,IAAM,EAAM,GAAc,CAAG,EAC7B,EAAI,OAAQ,0BAA0B,EAEtC,IAAM,EAAgB,GAAyB,EAM/C,OALA,MAAM,GAAmB,EAAe,CAAG,EAG3C,GAAyB,EAAe,CAAG,EAEpC,CACN,OAAQ,GAAiB,CAAG,EAC5B,KAAM,GAAY,CAAG,EACrB,MAAO,CACN,qCAAsC,GAA8B,CAAG,EACvE,kCAAmC,MAClC,EACA,EACA,IACI,CACJ,MAAM,GAAuC,EAAS,CAAM,EAE9D,CACD,GAGc",
|
|
108
|
+
"debugId": "BF405A3A4CEF9CE164756E2164756E21",
|
|
93
109
|
"names": []
|
|
94
110
|
}
|