@ashx-j/lunr 0.2.11 → 0.2.13
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 +13 -0
- package/README.md +211 -236
- package/dist/builtin-extensions/ashxj-tui.d.ts +3 -0
- package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-tui.js +28 -11
- package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
- package/dist/builtin-extensions/index.d.ts.map +1 -1
- package/dist/builtin-extensions/index.js +0 -2
- package/dist/builtin-extensions/index.js.map +1 -1
- package/dist/builtin-extensions/lunr-cron.d.ts +1 -1
- package/dist/builtin-extensions/lunr-cron.d.ts.map +1 -1
- package/dist/builtin-extensions/lunr-cron.js +1 -1
- package/dist/builtin-extensions/lunr-cron.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/chain-validation.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/chain-validation.js +3 -3
- package/dist/builtin-extensions/pi-subagents/src/extension/chain-validation.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/doctor.d.ts +0 -2
- package/dist/builtin-extensions/pi-subagents/src/extension/doctor.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/doctor.js +1 -23
- package/dist/builtin-extensions/pi-subagents/src/extension/doctor.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js +6 -7
- package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js +7 -14
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts +12 -9
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +38 -34
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +3 -3
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +32 -47
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts +7 -10
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js +90 -109
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts +3 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js +37 -50
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.d.ts +4 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.js +5 -5
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js +31 -13
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts +4 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js +48 -20
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +90 -64
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts +6 -8
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +262 -161
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.js +24 -33
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts +25 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js +51 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/dynamic-fanout.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/dynamic-fanout.js +20 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/dynamic-fanout.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts +4 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts +5 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js +9 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js +20 -17
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts +70 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js +153 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/settings.d.ts +13 -8
- package/dist/builtin-extensions/pi-subagents/src/shared/settings.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/settings.js +20 -51
- package/dist/builtin-extensions/pi-subagents/src/shared/settings.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +80 -20
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.js +10 -2
- package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js +20 -32
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +23 -449
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js +13 -11
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.js +18 -17
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.js.map +1 -1
- package/dist/builtin-extensions/simple-pi-memory.d.ts +2 -2
- package/dist/builtin-extensions/simple-pi-memory.d.ts.map +1 -1
- package/dist/builtin-extensions/simple-pi-memory.js +41 -17
- package/dist/builtin-extensions/simple-pi-memory.js.map +1 -1
- package/dist/catalog/models.json +1 -1
- package/dist/catalog/providers/amazon-bedrock.json +1 -1
- package/dist/catalog/providers/azure-openai-responses.json +1 -1
- package/dist/catalog/providers/cloudflare-ai-gateway.json +1 -1
- package/dist/catalog/providers/cloudflare-workers-ai.json +1 -1
- package/dist/catalog/providers/fireworks.json +1 -1
- package/dist/catalog/providers/github-copilot.json +1 -1
- package/dist/catalog/providers/huggingface.json +1 -1
- package/dist/catalog/providers/minimax-cn.json +1 -1
- package/dist/catalog/providers/minimax.json +1 -1
- package/dist/catalog/providers/mistral.json +1 -1
- package/dist/catalog/providers/nvidia.json +1 -1
- package/dist/catalog/providers/openai.json +1 -1
- package/dist/catalog/providers/opencode-go.json +1 -1
- package/dist/catalog/providers/opencode.json +1 -1
- package/dist/catalog/providers/openrouter.json +1 -1
- package/dist/catalog/providers/qwen-cloud-cn.json +1 -1
- package/dist/catalog/providers/qwen-cloud.json +1 -1
- package/dist/catalog/providers/qwen-token-plan-cn.json +1 -1
- package/dist/catalog/providers/qwen-token-plan.json +1 -1
- package/dist/catalog/providers/together.json +1 -1
- package/dist/catalog/providers/vercel-ai-gateway.json +1 -1
- package/dist/catalog/providers/zai-coding-cn.json +1 -1
- package/dist/catalog/providers/zai.json +1 -1
- package/dist/catalog/publication.json +3 -3
- package/dist/core/agent-session.d.ts +7 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +34 -4
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/context-breakdown.d.ts +3 -1
- package/dist/core/context-breakdown.d.ts.map +1 -1
- package/dist/core/context-breakdown.js +5 -2
- package/dist/core/context-breakdown.js.map +1 -1
- package/dist/core/customize.d.ts +2 -0
- package/dist/core/customize.d.ts.map +1 -1
- package/dist/core/customize.js +6 -0
- package/dist/core/customize.js.map +1 -1
- package/dist/core/memory-cap.d.ts +4 -8
- package/dist/core/memory-cap.d.ts.map +1 -1
- package/dist/core/memory-cap.js +8 -8
- package/dist/core/memory-cap.js.map +1 -1
- package/dist/core/permissions.d.ts +2 -0
- package/dist/core/permissions.d.ts.map +1 -1
- package/dist/core/permissions.js +30 -14
- package/dist/core/permissions.js.map +1 -1
- package/dist/core/plan-mode.d.ts.map +1 -1
- package/dist/core/plan-mode.js +1 -9
- package/dist/core/plan-mode.js.map +1 -1
- package/dist/core/rollback.d.ts.map +1 -1
- package/dist/core/rollback.js +1 -1
- package/dist/core/rollback.js.map +1 -1
- package/dist/core/settings-manager.d.ts +16 -5
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +37 -10
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -5
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/subagent-permission-inherit.d.ts +34 -22
- package/dist/core/subagent-permission-inherit.d.ts.map +1 -1
- package/dist/core/subagent-permission-inherit.js +37 -80
- package/dist/core/subagent-permission-inherit.js.map +1 -1
- package/dist/core/swarm.d.ts.map +1 -1
- package/dist/core/swarm.js +13 -7
- package/dist/core/swarm.js.map +1 -1
- package/dist/core/system-prompt.d.ts +6 -4
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +38 -48
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/usage-adapters/openai-codex.d.ts +1 -1
- package/dist/core/usage-adapters/openai-codex.d.ts.map +1 -1
- package/dist/core/usage-adapters/openai-codex.js +22 -17
- package/dist/core/usage-adapters/openai-codex.js.map +1 -1
- package/dist/core/usage-service.d.ts +10 -1
- package/dist/core/usage-service.d.ts.map +1 -1
- package/dist/core/usage-service.js +17 -6
- package/dist/core/usage-service.js.map +1 -1
- package/dist/gateway/agent-bridge.d.ts.map +1 -1
- package/dist/gateway/agent-bridge.js +1 -4
- package/dist/gateway/agent-bridge.js.map +1 -1
- package/dist/gateway/cron.d.ts.map +1 -1
- package/dist/gateway/cron.js +1 -4
- package/dist/gateway/cron.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +0 -5
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts +2 -0
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +21 -0
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +7 -4
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +122 -162
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/usage-view.d.ts +1 -1
- package/dist/modes/interactive/components/usage-view.d.ts.map +1 -1
- package/dist/modes/interactive/components/usage-view.js +7 -4
- package/dist/modes/interactive/components/usage-view.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -2
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +55 -96
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/skill-tag-autocomplete.d.ts +13 -0
- package/dist/modes/interactive/skill-tag-autocomplete.d.ts.map +1 -0
- package/dist/modes/interactive/skill-tag-autocomplete.js +72 -0
- package/dist/modes/interactive/skill-tag-autocomplete.js.map +1 -0
- package/docs/compaction.md +23 -23
- package/docs/containerization.md +24 -24
- package/docs/custom-provider.md +18 -18
- package/docs/development.md +16 -15
- package/docs/docs.json +6 -2
- package/docs/extensions.md +82 -80
- package/docs/features.md +102 -0
- package/docs/index.md +25 -19
- package/docs/json.md +7 -7
- package/docs/keybindings.md +4 -4
- package/docs/models.md +2 -2
- package/docs/packages.md +38 -42
- package/docs/prompt-templates.md +4 -4
- package/docs/providers.md +22 -10
- package/docs/quickstart.md +81 -46
- package/docs/rpc.md +7 -13
- package/docs/sdk.md +43 -41
- package/docs/security.md +18 -18
- package/docs/session-format.md +9 -9
- package/docs/sessions.md +13 -12
- package/docs/settings.md +63 -24
- package/docs/shell-aliases.md +2 -2
- package/docs/skills.md +21 -11
- package/docs/terminal-setup.md +5 -5
- package/docs/termux.md +7 -7
- package/docs/themes.md +12 -14
- package/docs/tmux.md +4 -4
- package/docs/tui.md +23 -23
- package/docs/usage.md +112 -87
- package/docs/windows.md +10 -2
- package/examples/README.md +3 -1
- package/examples/extensions/README.md +6 -6
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/doom-overlay/README.md +2 -2
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/plan-mode/README.md +3 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/subagent/README.md +13 -11
- package/examples/extensions/todo.ts +2 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/sdk/README.md +9 -5
- package/package.json +6 -7
- package/dist/builtin-extensions/lunr-behavior.d.ts +0 -44
- package/dist/builtin-extensions/lunr-behavior.d.ts.map +0 -1
- package/dist/builtin-extensions/lunr-behavior.js +0 -213
- package/dist/builtin-extensions/lunr-behavior.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/agents/context-builder.md +0 -46
- package/dist/builtin-extensions/pi-subagents/agents/deep-researcher.md +0 -36
- package/dist/builtin-extensions/pi-subagents/agents/delegate.md +0 -12
- package/dist/builtin-extensions/pi-subagents/agents/oracle.md +0 -73
- package/dist/builtin-extensions/pi-subagents/agents/planner.md +0 -55
- package/dist/builtin-extensions/pi-subagents/agents/research-writer.md +0 -37
- package/dist/builtin-extensions/pi-subagents/agents/researcher.md +0 -52
- package/dist/builtin-extensions/pi-subagents/agents/reviewer.md +0 -79
- package/dist/builtin-extensions/pi-subagents/agents/scout.md +0 -50
- package/dist/builtin-extensions/pi-subagents/agents/worker.md +0 -55
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.d.ts +0 -20
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.js +0 -1273
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.d.ts +0 -49
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.js +0 -252
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.d.ts +0 -3
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.js +0 -6
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.d.ts +0 -3
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.js +0 -23
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.d.ts +0 -8
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.js +0 -143
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agents.d.ts +0 -176
- package/dist/builtin-extensions/pi-subagents/src/agents/agents.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agents.js +0 -1326
- package/dist/builtin-extensions/pi-subagents/src/agents/agents.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.d.ts +0 -7
- package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.js +0 -307
- package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/identity.d.ts +0 -8
- package/dist/builtin-extensions/pi-subagents/src/agents/identity.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/identity.js +0 -30
- package/dist/builtin-extensions/pi-subagents/src/agents/identity.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.d.ts +0 -35
- package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.js +0 -151
- package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.d.ts +0 -131
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.js +0 -491
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.js.map +0 -1
- package/dist/core/behavior-preset.d.ts +0 -60
- package/dist/core/behavior-preset.d.ts.map +0 -1
- package/dist/core/behavior-preset.js +0 -257
- package/dist/core/behavior-preset.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/tui/render.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;GAEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAyB,MAAM,iCAAiC,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAkB,MAAM,wBAAwB,CAAC;AACzG,OAAO,EASN,eAAe,EACf,UAAU,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtI,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAItI,SAAS,iBAAiB,GAAW;IACpC,OAAO,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAAA,CACnC;AAED,SAAS,kBAAkB,GAAW;IACrC,OAAO,SAAS,iBAAiB,EAAE,kBAAkB,CAAC;AAAA,CACtD;AAED,SAAS,YAAY,GAAW;IAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;AAAA,CACrC;AAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;AAE7E;;;;;;;;GAQG;AACH,SAAS,SAAS,CAAC,IAAY,EAAE,QAAgB,EAAU;IAC1D,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEhD,MAAM,WAAW,GAAG,QAAQ,GAAG,CAAC,CAAC;IACjC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,YAAY,GAAa,EAAE,CAAC;IAChC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACzD,IAAI,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,IAAI,IAAI,CAAC;YAEf,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7C,YAAY,GAAG,EAAE,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACP,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YACD,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;YACjB,SAAS;QACV,CAAC;QAED,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACvE,GAAG,EAAE,CAAC;QACP,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC;YAC7B,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YAE7C,IAAI,YAAY,GAAG,aAAa,GAAG,WAAW,EAAE,CAAC;gBAChD,OAAO,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAG,CAAC;YAC7C,CAAC;YAED,MAAM,IAAI,QAAQ,CAAC;YACnB,YAAY,IAAI,aAAa,CAAC;QAC/B,CAAC;QACD,CAAC,GAAG,GAAG,CAAC;IACT,CAAC;IAED,OAAO,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAG,CAAC;AAAA,CAC5C;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,QAAgB,EAAY;IAChE,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,SAAS;QACV,CAAC;QACD,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC;YAC7B,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,GAAG,aAAa,GAAG,QAAQ,EAAE,CAAC;gBACjE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpB,OAAO,GAAG,QAAQ,CAAC;gBACnB,YAAY,GAAG,aAAa,CAAC;gBAC7B,SAAS;YACV,CAAC;YACD,OAAO,IAAI,QAAQ,CAAC;YACpB,YAAY,IAAI,aAAa,CAAC;QAC/B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,KAAK,CAAC;AAAA,CACb;AAED,MAAM,cAAc,GAAG,CAAC,KAAG,EAAE,KAAG,EAAE,KAAG,EAAE,KAAG,EAAE,KAAG,EAAE,KAAG,EAAE,KAAG,EAAE,KAAG,EAAE,KAAG,EAAE,KAAG,CAAC,CAAC;AAC1E,MAAM,oBAAoB,GAAG,KAAG,CAAC;AAIjC,SAAS,WAAW,CAAC,GAAG,MAAiC,EAAsB;IAC9E,IAAI,IAAwB,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QAC7D,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACZ;AAED,SAAS,YAAY,CAAC,IAAa,EAAU;IAC5C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,oBAAoB,CAAC;IACpD,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,CAAE,CAAC;AAAA,CAC/D;AAED,SAAS,mBAAmB,CAAC,QAAwC,EAAsB;IAC1F,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,uEAAuE;IACvE,2FAA2F;IAC3F,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAAA,CACnC;AAMD,MAAM,UAAU,+BAA+B,CAAC,OAAqC,EAAQ;IAC5F,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,aAAa,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,SAAS,CAAC;AAAA,CACvD;AASD,MAAM,CAAC,MAAM,gBAAgB,GAA+C,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAE9F,SAAS,YAAY,CAAC,IAA+B,EAAE,KAAyB,EAAE,OAAgB,EAAQ;IACzG,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,IAAI,OAAO,IAAI,KAAK,KAAK,SAAS,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAChE,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACZ;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAsB;IAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC/D,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;QAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACjG,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;QAAE,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACnE,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;QAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3D,OAAO,SAAS,CAAC;AAAA,CACjB;AAED,SAAS,qCAAqC,CAAC,IAAY,EAAE,MAAc,EAAW;IACrF,IAAI,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IAChC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAAA,CAClC;AAED,SAAS,gBAAgB,CACxB,MAAkE,EAClE,QAAiB,EACN;IACX,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC;aACrC,MAAM,CAAC,CAAC,IAAI,EAAyE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;aAC7G,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAAA,CACnG;AAGD,SAAS,sBAAsB,CAAC,QAAuF,EAAsB;IAC5I,IAAI,QAAQ,CAAC,oBAAoB,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC,oBAAoB,GAAG,QAAQ,CAAC,UAAU,CAAC;IACjJ,OAAO,QAAQ,CAAC,cAAc,CAAC;AAAA,CAC/B;AAED,SAAS,qBAAqB,CAC7B,QAAyF,EACzF,cAAsB,EACtB,QAAiB,EACjB,WAAoB,EACC;IACrB,IAAI,CAAC,QAAQ,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,QAAQ,CAAC,eAAe;QAC/C,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,eAAe,CAAC,MAAM,IAAI,cAAc;YAC/D,CAAC,CAAC,QAAQ,CAAC,eAAe;YAC1B,CAAC,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC;QAC7D,CAAC,CAAC,EAAE,CAAC;IACN,MAAM,cAAc,GAAG,QAAQ,CAAC,oBAAoB,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS;QAC9F,CAAC,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC,EAAE;QAClF,CAAC,CAAC,EAAE,CAAC;IACN,OAAO,eAAe;QACrB,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,KAAK,eAAe,GAAG,cAAc,EAAE;QAChE,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,GAAG,cAAc,EAAE,CAAC;AAAA,CAC9C;AAED,SAAS,mBAAmB,CAAC,QAAiE,EAAE,WAAoB,EAAsB;IACzI,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,mBAAmB,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACjK,IAAI,QAAQ,CAAC,aAAa,KAAK,iBAAiB;QAAE,OAAO,iBAAiB,CAAC;IAC3E,IAAI,QAAQ,CAAC,aAAa,KAAK,qBAAqB;QAAE,OAAO,yBAAyB,CAAC;IACvF,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC3D,OAAO,SAAS,CAAC;AAAA,CACjB;AAED,SAAS,SAAS,CAAC,KAAY,EAAE,IAAY,EAAU;IACtD,OAAO,CAAE,KAA8C,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;AAAA,CAC9E;AAED,SAAS,QAAQ,CAAC,KAAY,EAAE,KAAe,EAAU;IACxD,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,GAAG,CAAC,CAAC;AAAA,CACpG;AAED,SAAS,eAAe,CAAC,MAAc,EAAU;IAChD,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;AAAA,CACvC;AAED,SAAS,iBAAiB,CAAC,KAAa,EAAU;IACjD,OAAO,GAAG,KAAK,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAAA,CACpD;AAED,SAAS,mBAAmB,CAAC,SAA2C,EAAU;IACjF,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,CAAC,IAAI,SAAS,CAAC,YAAY,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IACtH,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,SAAS,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACnF,IAAI,SAAS,CAAC,YAAY;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACtF,IAAI,SAAS,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAAA,CACvB;AAED,SAAS,mBAAmB,CAAC,KAAY,EAAE,QAAgF,EAAE,eAAe,GAAG,IAAI,EAAU;IAC5J,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9E,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,IAAI,eAAe,IAAI,QAAQ,CAAC,UAAU,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAChG,OAAO,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAAA,CAC9B;AAED,SAAS,eAAe,CAAC,IAAY,EAAU;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAAA,CAClE;AAED,+EAA+E;AAC/E,8CAA8C;AAC9C,SAAS,eAAe,CAAC,IAAwB,EAAE,GAAG,GAAG,EAAE,EAAU;IACpE,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IAC7E,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,KAAG,CAAC;AAAA,CACrC;AAED,MAAM,mBAAmB,GAAG,uCAAuC,CAAC;AAEpE,+EAA2E;AAC3E,MAAM,UAAU,eAAe,CAAC,IAAwB,EAAU;IACjE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACvE,KAAK,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAAA,CAC/B;AAED,4FAA4F;AAC5F,MAAM,UAAU,cAAc,CAAC,MAAyC,EAAU;IACjF,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,eAAc,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,OAAO,eAAe,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAAA,CACrD;AAED,SAAS,gBAAgB,CAAC,MAAkC,EAAE,MAAc,EAAU;IACrF,IAAI,MAAM,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IACtG,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,QAAQ,CAAC;IACxC,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,UAAU,MAAM,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;IACrH,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,cAAc;QAAE,OAAO,uBAAsB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;IACtI,IAAI,qCAAqC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;QAAE,OAAO,uBAAuB,CAAC;IAC/F,OAAO,MAAM,CAAC;AAAA,CACd;AAED,SAAS,WAAW,CAAC,MAAkC,EAAE,MAAc,EAAE,KAAY,EAAE,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,EAAE,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,eAAe,CAAC,EAAE,KAAc,EAAU;IACtO,IAAI,OAAO,EAAE,CAAC;QACb,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACtF,OAAO,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAG,CAAC,CAAC;IACzD,IAAI,qCAAqC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC,CAAC;IAChG,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC,CAAC;AAAA,CAChC;AAED,0DAA0D;AAC1D,MAAM,UAAU,0BAA0B,CACzC,QAAgF,EAChF,KAAa,EACb,KAAK,GAA0B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EACvC,MAAM,GAAG,SAAO,EACP;IACT,MAAM,SAAS,GAAG,QAAQ,EAAE,SAAS,IAAI,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,QAAQ,EAAE,UAAU,IAAI,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG;QACZ,iBAAiB,CAAC,SAAS,CAAC;QAC5B,eAAe,CAAC,MAAM,CAAC;QACvB,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK;KACnD,CAAC,IAAI,CAAC,MAAK,CAAC,CAAC;IACd,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAAA,CACnD;AAED,MAAM,UAAU,eAAe,CAAC,GAAkB,EAAU;IAC3D,OAAO,IAAI,CAAC,SAAS,CAAC;QACrB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,oBAAoB,EAAE,GAAG,CAAC,oBAAoB;QAC9C,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;QAC5C,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,WAAW,EAAE,GAAG,CAAC,WAAW;KAC5B,CAAC,CAAC;AAAA,CACH;AAED,SAAS,kBAAkB,CAAC,MAAgB,EAAU;IACrD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAK,MAAM,CAAC,MAAM,EAAE,CAAC;IAC1F,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC;IAC5F,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAAA,CACzB;AAED,SAAS,aAAa,CAAC,GAAkB,EAAU;IAClD,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAC/C,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC;IAC7E,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM;QAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO,GAAG,CAAC,IAAI,IAAI,UAAU,CAAC;AAAA,CAC9B;AAED,SAAS,cAAc,CAAC,GAAkB,EAAU;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,oBAAoB,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,WAAW,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;SACnM,IAAI,GAAG,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACtD,IAAI,GAAG,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9D,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,QAAQ,CAAC,CAAC;IACtE,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,QAAQ,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACzD,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,GAAG,QAAQ,OAAM,KAAK,CAAC,IAAI,CAAC,MAAK,CAAC,EAAE,CAAC;IAC1E,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAK,CAAC,CAAC;IAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,aAAW,CAAC;IACjD,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,WAAS,CAAC;IAC9C,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC7C,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC/C,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC7C,OAAO,MAAM,CAAC;AAAA,CACd;AAED,SAAS,qBAAqB,CAAC,IAAiD,EAAE,aAAsB,EAAsB;IAC7H,OAAO,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAAA,CAC9C;AAED,SAAS,sBAAsB,CAAC,KAAqE,EAAsB;IAC1H,IAAI,IAAwB,CAAC;IAC7B,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;QAAE,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAClH,OAAO,IAAI,CAAC;AAAA,CACZ;AAED,SAAS,oBAAoB,CAAC,GAAkB,EAAsB;IACrE,OAAO,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,YAAY,EAAE,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAAA,CACzF;AAED,SAAS,qBAAqB,CAAC,IAAqB,EAAsB;IACzE,IAAI,IAAwB,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5E,OAAO,IAAI,CAAC;AAAA,CACZ;AAED,SAAS,iBAAiB,CAAC,GAAkB,EAAE,KAAY,EAAU;IACpE,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjG,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAG,CAAC,CAAC;IAC3D,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC,CAAC;IAC/D,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC,CAAC;IAC7D,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAG,CAAC,CAAC;AAAA,CAC9B;AAED,SAAS,eAAe,CAAC,MAA8B,EAAE,KAAY,EAAE,IAAa,EAAU;IAC7F,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC,CAAC;IACrF,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAG,CAAC,CAAC;IACvD,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC,CAAC;IACzD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC,CAAC;IAC1D,OAAO,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAG,CAAC,CAAC;AAAA,CAC9B;AAED,SAAS,gBAAgB,CAAC,MAA8B,EAAE,KAAY,EAAU;IAC/E,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC/D,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC5F,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5D,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9D,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAAA,CAC/B;AAED,SAAS,kBAAkB,CAAC,IAAiD,EAAE,WAAoB,EAAU;IAC5G,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;SACnM,IAAI,IAAI,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAChE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC;IACxE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC;IACxE,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACxD,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,GAAG,QAAQ,OAAM,KAAK,CAAC,IAAI,CAAC,MAAK,CAAC,EAAE,CAAC;IAC1E,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,MAAK,CAAC,CAAC;AAAA,CACzB;AAGD,SAAS,kBAAkB,CAAC,GAAkB,EAAE,KAAY,EAAE,QAAQ,GAAG,KAAK,EAAE,KAAK,GAAG,YAAY,EAAE,EAAY;IACjH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;IACrD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1F,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACjP,SAAS;QACV,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,YAAU,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC;YACrF,SAAS;QACV,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,8BAA8B,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACrH,CAAC;IACD,OAAO,KAAK,CAAC;AAAA,CACb;AAED,SAAS,0BAA0B,CAAC,GAAkB,EAAE,KAAY,EAAE,QAAQ,GAAG,KAAK,EAAE,KAAK,GAAG,YAAY,EAAE,EAAY;IACzH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IAClC,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,EAAE,CAAC;IAC/D,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,cAAc,EAAE,MAAM;QAAE,OAAO,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3I,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAG,CAAC,CAAC,CAAC,KAAG,CAAC;QAC1D,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QACxF,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1E,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,SAAS,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,OAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAM,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QACzQ,KAAK,MAAM,UAAU,IAAI,uBAAuB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,UAAU,EAAE,CAAC,CAAC;IAC3J,CAAC;IACD,OAAO,KAAK,CAAC;AAAA,CACb;AAED,SAAS,4BAA4B,CAAC,KAAyB,EAAsB;IACpF,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AAAA,CAC1E;AAYD,SAAS,mBAAmB,CAAC,OAAuD,EAAmB;IACtG,IAAI,OAAO,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAoB,EAAE,CAAC;QAClC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;gBAAE,SAAS;YAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;gBAC9E,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;qBAC5C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;qBAC/B,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;gBAChE,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;gBACnF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;gBACzC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACrI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;gBACjD,SAAS;YACV,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACzI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IACxF,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;QAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAE,CAAC;QAC9C,MAAM,WAAW,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,WAAW,IAAI,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC,CAAC;QAC/E,KAAK,IAAI,KAAK,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AAAA,CACb;AAED,SAAS,0BAA0B,CAAC,OAAqF,EAAW;IACnI,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACzD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;AAAA,CACnH;AAED,SAAS,wBAAwB,CAAC,KAAa,EAAE,SAAiB,EAAE,cAAc,GAA+B,EAAE,EAAmB;IACrI,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QACpF,IAAI,KAAK,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YACpF,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3D,SAAS;QACV,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACrG,SAAS,EAAE,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AAAA,CACb;AAED,SAAS,YAAY,CAAC,MAAkC,EAAW;IAClE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;IACvC,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC/D,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxD,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;AAAA,CAC7B;AAED,SAAS,sBAAsB,CAAC,OAAuC,EAAE,QAA8B,EAAW;IACjH,OAAO,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC;AAAA,CAC5F;AAoBD,SAAS,uBAAuB,CAAC,OAAgB,EAAE,KAAyB,EAAkC;IAC7G,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,mBAAmB;QAAE,OAAO,SAAS,CAAC;IACzG,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,aAAa;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC;gBAC7B,SAAS,EAAE,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;gBACvC,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;gBAC9F,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;gBAChC,KAAK,EAAE,IAAI,CAAC,KAAK;aACjB,CAAC,CAAC;YACH,SAAS;QACV,CAAC;QACD,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,KAAK;gBAClB,SAAS,EAAE,KAAK,GAAG,CAAC;gBACpB,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;aACjH,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IACD,OAAO,OAAO,CAAC;AAAA,CACf;AAaD,SAAS,uBAAuB,CAAC,OAA6H,EAAE,UAAmB,EAAsB;IACxM,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjG,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAChE,MAAM,SAAS,GAAqB,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAE1G,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QAChE,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAmF,CAAC;QACzI,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC/C,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,IAAI,QAAQ,CAAC,KAAK,GAAG,UAAU;gBAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;QACpG,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;YACnC,MAAM,iBAAiB,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,CAAC;mBAChF,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YAC3G,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,IAAI,iBAAiB,EAAE,KAAK,IAAI,CAAC,CAAC;YACtE,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,UAAU;gBAAE,SAAS;YAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM;mBAClC,CAAC,MAAM,CAAC,OAAO;oBACjB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ;wBACtC,CAAC,CAAC,UAAU;wBACZ,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,CAAC;4BACtB,CAAC,CAAC,WAAW;4BACb,CAAC,CAAC,QAAQ,CAAC,CAAC;YAChB,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;QAC1B,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QACzE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;QACxE,MAAM,WAAW,GAAG,UAAU;YAC7B,CAAC,CAAC,GAAG,uBAAuB,CAAC,OAAO,CAAC,OAAM,IAAI,IAAI,UAAU,OAAO;YACpE,CAAC,CAAC,GAAG,IAAI,IAAI,UAAU,OAAO,CAAC;QAChC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC;IACnK,CAAC;IAED,IAAI,mBAAmB,EAAE,CAAC;QACzB,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAiB,CAAC;QACnD,MAAM,IAAI,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;QACxC,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,KAAK,GAAG,UAAU,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;YACxD,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;YACrF,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC;YACvF,IAAI,aAAa,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzC,OAAO,EAAE,CAAC;gBACV,SAAS;YACV,CAAC;YACD,IAAI,aAAa,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC3C,IAAI,EAAE,CAAC;gBACP,SAAS;YACV,CAAC;YACD,IAAI,WAAW,IAAI,YAAY,CAAC,WAAW,CAAC;gBAAE,IAAI,EAAE,CAAC;QACtD,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC;QAC1E,MAAM,WAAW,GAAG,UAAU;YAC7B,CAAC,CAAC,QAAQ,gBAAgB,GAAG,CAAC,IAAI,UAAU,uBAAsB,uBAAuB,CAAC,OAAO,CAAC,OAAM,IAAI,IAAI,SAAS,OAAO;YAChI,CAAC,CAAC,QAAQ,gBAAgB,GAAG,CAAC,IAAI,UAAU,uBAAsB,IAAI,IAAI,SAAS,OAAO,CAAC;QAC5F,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;IACpL,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;QAC7D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;QACpE,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW;gBAAE,OAAO,KAAK,CAAC;YAC7D,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC;YACzD,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;gBACvE,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;gBACrF,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjH,IAAI,aAAa,EAAE,MAAM,KAAK,SAAS,IAAI,aAAa,EAAE,MAAM,KAAK,SAAS,IAAI,aAAa,EAAE,MAAM,KAAK,QAAQ;oBAAE,OAAO,KAAK,CAAC;gBACnI,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;oBAAE,OAAO,KAAK,CAAC;YAC9D,CAAC;YACD,OAAO,IAAI,CAAC;QAAA,CACZ,CAAC,CAAC,MAAM,CAAC;QACV,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrJ,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,WAAW,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,WAAW,IAAI,UAAU,EAAE,CAAC;QAC3G,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC;IAC/K,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;IAChE,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrL,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;IACzD,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,WAAW,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,UAAU,EAAE,CAAC;IACpG,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC;AAAA,CAC9K;AAED,SAAS,cAAc,CAAC,OAAgE,EAAE,KAAyB,EAAE,WAAmB,EAAE,UAAkB,EAAU;IACrK,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS,CAAC,KAAK,IAAI,WAAW,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACjJ,IAAI,IAAI,EAAE,UAAU;YAAE,OAAO,SAAS,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACnF,IAAI,IAAI;YAAE,OAAO,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;IAC/C,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,eAAe,GAAG,KAAK,CAAC,mBAAmB;YAChD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC,eAAe,CAAC;YACjD,CAAC,CAAC,UAAU,CAAC;QACd,OAAO,SAAS,eAAe,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;IACvD,CAAC;IACD,OAAO,QAAQ,UAAU,EAAE,CAAC;AAAA,CAC5B;AAED,SAAS,WAAW,CAAC,GAAkB,EAAE,KAAY,EAAU;IAC9D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;IAC/D,IAAI,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1F,IAAI,UAAU,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,UAAU,OAAO,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACP,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,KAAK,SAAS;gBAChD,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,WAAY,IAAI,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,WAAY,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBACtH,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;YAC1D,MAAM,WAAW,GAAG,WAAW,EAAE,SAAS,IAAI,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC;YACnE,MAAM,KAAK,GAAG,GAAG,CAAC,cAAc,IAAI,UAAU,CAAC;YAC/C,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,IAAI,UAAU,OAAO,CAAC,CAAC;YAClD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC;gBAAE,UAAU,CAAC,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;YAClG,KAAK,CAAC,IAAI,CAAC,QAAQ,WAAW,GAAG,CAAC,IAAI,KAAK,uBAAsB,UAAU,CAAC,IAAI,CAAC,MAAK,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC;IACF,CAAC;SAAM,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAC1C,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;YACxD,MAAM,KAAK,GAAG,GAAG,CAAC,cAAc,IAAI,UAAU,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,QAAQ,sBAAsB,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QACvG,CAAC;aAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;SAAM,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9E,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/E,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACvI,OAAO,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAAA,CAC9B;AAED,SAAS,eAAe,CAAC,KAAY,EAAE,IAAiD,EAAU;IACjG,OAAO,QAAQ,CAAC,KAAK,EAAE;QACtB,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE;QAC7D,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;QACrE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QAC5D,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;KACpE,CAAC,CAAC;AAAA,CACH;AAED,SAAS,kBAAkB,CAAC,KAAY,EAAE,KAAc,EAAE,QAAiB,EAAU;IACpF,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAAA,CACnD;AAED,SAAS,sBAAsB,CAAC,IAAiD,EAAE,KAAa,EAAE,QAAiB,EAAE,WAAoB,EAAU;IAClJ,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC3E,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACxD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,aAAW,CAAC;IAClD,OAAO,EAAE,CAAC;AAAA,CACV;AAED,SAAS,aAAa,CAAC,GAAqB,EAAU;IACrD,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC;IAChC,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM;QAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO,GAAG,CAAC,EAAE,CAAC;AAAA,CACd;AAED,SAAS,iBAAiB,CAAC,KAA8D,EAAE,KAAY,EAAE,IAAa,EAAU;IAC/H,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC,CAAC;IACnF,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAG,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC,CAAC;IACxD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAG,CAAC,CAAC;AAAA,CAC9B;AAED,SAAS,aAAa,CAAC,GAAqB,EAAsB;IACjE,OAAO,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAAA,CACxJ;AAED,SAAS,cAAc,CAAC,KAA0K,EAAE,KAA8D,EAAE,WAAoB,EAAU;IACjS,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,oBAAoB,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,WAAW,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;SACvM,IAAI,KAAK,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAClE,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,QAAQ,CAAC,CAAC;IAC1E,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,QAAQ,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACzD,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,GAAG,QAAQ,OAAM,KAAK,CAAC,IAAI,CAAC,MAAK,CAAC,EAAE,CAAC;IAC1E,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAK,CAAC,CAAC;IAC3C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,aAAW,CAAC;IAC5C,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,WAAS,CAAC;IAChE,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACxC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACxC,OAAO,MAAM,CAAC;AAAA,CACd;AAED,SAAS,uBAAuB,CAAC,QAAwC,EAAE,KAAY,EAAE,KAAa,EAAE,QAAiB,EAAE,WAAoB,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAY;IAC1L,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,UAAU,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAClD,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAK,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,CAAC,CAAC;IACnB,MAAM,MAAM,GAAG,CAAC,KAAqC,EAAE,KAAa,EAAE,MAAc,EAAQ,EAAE,CAAC;QAC9F,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,UAAU;YAAE,OAAO;QACzD,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,UAAU;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,MAAM,OAAK,SAAS,EAAE,CAAC,CAAC,CAAC;YACnG,OAAO;QACR,CAAC;QACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACnD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;gBAChC,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC5D,IAAI,SAAS;oBAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,MAAM,OAAK,SAAS,EAAE,CAAC,CAAC;gBACpF,OAAO;YACR,CAAC;YACD,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;YACrF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAM,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,MAAM,OAAK,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,OAAM,KAAK,CAAC,KAAK,OAAM,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;YACxK,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACxB,MAAM,SAAS,GAAG,qBAAqB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrI,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,UAAU;oBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,MAAM,SAAO,SAAS,EAAE,CAAC,CAAC,CAAC;gBACrG,SAAS;YACV,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;gBACtC,IAAI,KAAK,CAAC,MAAM,IAAI,UAAU;oBAAE,OAAO;gBACvC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,MAAM,SAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,OAAM,IAAI,CAAC,MAAM,OAAM,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5L,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,MAAM,MAAM,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC;QAClD,CAAC;IAAA,CACD,CAAC;IACF,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAAA,CACnD;AAED,SAAS,8BAA8B,CACtC,GAAkB,EAClB,KAAY,EACZ,IAAiD,EACjD,SAA2B,EAC3B,KAAa,EACb,KAAa,EACb,QAAiB,EACjB,KAAa,EACF;IACX,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,IAAI,MAAM,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvQ,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9E,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAM,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IACrE,KAAK,MAAM,UAAU,IAAI,uBAAuB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACxG,KAAK,CAAC,IAAI,CAAC,OAAO,UAAU,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7E,IAAI,QAAQ,EAAE,CAAC;YACd,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5D,IAAI,UAAU,IAAI,UAAU,KAAK,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;YAC/F,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;gBAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC;gBACxG,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAChG,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvD,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9C,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AAAA,CACb;AAED,SAAS,4BAA4B,CAAC,GAAkB,EAAE,KAAY,EAAE,QAAiB,EAAE,KAAa,EAAY;IACnH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM;QAAE,OAAO;YAC9B,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAM,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACnD,GAAG,uBAAuB,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;SAChH,CAAC;IACF,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,cAAc,EAAE,MAAM;QAAE,OAAO,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3I,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;IACjD,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACxF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,GAAG,8BAA8B,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/G,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrG,MAAM,UAAU,GAAG,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxF,KAAK,MAAM,UAAU,IAAI,uBAAuB,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACrG,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AAAA,CACb;AAED,SAAS,sBAAsB,CAAC,GAAkB,EAAE,KAAY,EAAE,KAAa,EAAE,QAAiB,EAAY;IAC7G,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;IACpH,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,kBAAkB,IAAI,GAAG,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACjF,OAAO;QACN,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,eAAc,CAAC,EAAE;QACtF,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/G,GAAG,4BAA4B,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;KAC5D,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAAA,CACxC;AAED,SAAS,wBAAwB,CAAC,GAAkB,EAAE,KAAY,EAAE,KAAa,EAAY;IAC5F,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACnE,IAAI,SAAS,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5H,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;IACjD,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACxF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/F,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1E,KAAK,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,SAAS,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,IAAI,MAAM,GAAG,YAAY,GAAG,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5R,KAAK,MAAM,UAAU,IAAI,uBAAuB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,UAAU,EAAE,CAAC,CAAC;IACtI,CAAC;IACD,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC;IACrH,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAAA,CACnD;AAaD,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAEpC,IAAI,mBAAoD,CAAC;AAEzD,SAAS,wBAAwB,GAAS;IACzC,mBAAmB,GAAG,SAAS,CAAC;AAAA,CAChC;AAED,SAAS,2BAA2B,GAAW;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IACvC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,wBAAwB,CAAC,CAAC;AAAA,CACpD;AAED,SAAS,mBAAmB,GAAW;IACtC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;AAAA,CACjC;AAED,SAAS,sBAAsB,GAAW;IACzC,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;AAAA,CACrC;AAED,SAAS,oBAAoB,CAAC,QAAiB,EAAW;IACzD,OAAO,mBAAmB,EAAE,QAAQ,KAAK,QAAQ;WAC7C,mBAAmB,CAAC,IAAI,KAAK,mBAAmB,EAAE;WAClD,mBAAmB,CAAC,OAAO,KAAK,sBAAsB,EAAE,CAAC;AAAA,CAC7D;AAED,SAAS,kBAAkB,CAAC,IAAqB,EAAgK;IAChN,OAAO;QACN,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC;QACvD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC;QACrD,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC;QACzD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC;QACrD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC;QACrD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC;KACvD,CAAC;AAAA,CACF;AAED,SAAS,0BAA0B,CAAC,IAAqB,EAAE,KAAY,EAAE,KAAa,EAAY;IACjG,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAG,CAAC,CAAC,CAAC,KAAG,CAAC;IACtH,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,UAAU,CAAC,CAAC;IAC7F,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;IAC3E,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;IAC3E,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;IAC9E,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;IAC3E,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC;IAC1G,OAAO,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAAA,CACrL;AAED,SAAS,iBAAiB,CAAC,IAAqB,EAAmB;IAClE,OAAO;QACN,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC;QACjD,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC;QAChD,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC;KAC5E,CAAC;AAAA,CACF;AAED,SAAS,iBAAiB,CAAC,GAAkB,EAAU;IACtD,OAAO,GAAG,CAAC,OAAO,CAAC;AAAA,CACnB;AAED,SAAS,sBAAsB,CAAC,GAA8B,EAAW;IACxE,OAAO,GAAG,EAAE,MAAM,KAAK,SAAS,IAAI,GAAG,EAAE,MAAM,KAAK,QAAQ,CAAC;AAAA,CAC7D;AAED,SAAS,wBAAwB,CAAC,IAAqB,EAAE,YAAsB,EAAE,QAAgB,EAAY;IAC5G,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAC,GAAW,EAAQ,EAAE,CAAC;QACrC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC1D,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAAA,CACnB,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAAE,SAAS;QAC1D,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;IAClD,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC;YAAE,SAAS;QAC3C,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ;YAAE,MAAM;IACxC,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACjD,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAAE,SAAS;QACzD,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;IAClD,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ;YAAE,MAAM;IACxC,CAAC;IACD,OAAO,QAAQ,CAAC;AAAA,CAChB;AAED,SAAS,qBAAqB,CAAC,IAAqB,EAAE,KAAY,EAAE,KAAa,EAAU;IAC1F,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAG,CAAC,CAAC,CAAC,KAAG,CAAC;IACtH,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1F,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;IAC3E,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;QAC3E,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;QAC9E,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;QAC3E,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAAA,CAC7N;AAED,SAAS,kBAAkB,CAAC,GAAkB,EAAE,KAAY,EAAE,KAAa,EAAU;IACpF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;IAC/D,MAAM,KAAK,GAAG;QACb,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;QACpC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,KAAK;QACL,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;KAC9E,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,OAAO,SAAS,CAAC,KAAK,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAAA,CACzG;AAED,SAAS,qBAAqB,CAAC,UAA2B,EAAE,KAAY,EAAE,KAAa,EAAU;IAChG,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;IAC9E,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IAC9G,IAAI,QAAQ,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,WAAW,CAAC,CAAC;IACrD,OAAO,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,UAAU,CAAC,MAAM,QAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAAA,CACxH;AAED,SAAS,2BAA2B,CAAC,IAAqB,EAAE,KAAY,EAAE,KAAa,EAAE,UAAkB,EAAE,YAAsB,EAAiD;IACnL,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACzC,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,0BAA0B,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;IAEzG,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC9B,IAAI,cAAc,GAAG,wBAAwB,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5E,IAAI,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAwB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACtH,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAE9C,IAAI,eAAe,IAAI,WAAW,CAAC,MAAM,IAAI,QAAQ,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACvE,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;QACjD,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACpD,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,KAAK,GAAG;QACb,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;QACzC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KAClE,CAAC;IACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAClH,OAAO,KAAK,CAAC,MAAM,GAAG,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;AAAA,CAC3D;AAED,SAAS,yBAAyB,CAAC,IAAY,EAAU;IACxD,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAAA,CAC3D;AAED,SAAS,mBAAmB,CAAC,KAAe,EAAE,KAAY,EAAE,KAAa,EAAE,QAAiB,EAAY;IACvG,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,QAAQ;QACtB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,KAAK,CAAC;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;IAChD,MAAM,IAAI,GAAG,QAAQ;QACpB,CAAC,CAAC,OAAK,WAAW,2BAA2B;QAC7C,CAAC,CAAC,OAAK,WAAW,oBAAmB,iBAAiB,EAAE,UAAU,CAAC;IACpE,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAAA,CAClF;AAED,SAAS,sBAAsB,CAAC,IAAqB,EAAE,KAAe,EAAE,KAAY,EAAE,KAAa,EAAE,QAAiB,EAAY;IACjI,IAAI,QAAQ,EAAE,CAAC;QACd,wBAAwB,EAAE,CAAC;QAC3B,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,MAAM,aAAa,GAAG,2BAA2B,EAAE,CAAC;IAEpD,IAAI,kBAAkB,IAAI,mBAAmB,EAAE,IAAI,KAAK,aAAa,EAAE,CAAC;QACvE,OAAO,0BAA0B,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,kBAAkB,IAAI,mBAAmB,EAAE,IAAI,KAAK,aAAa,IAAI,mBAAmB,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACvH,MAAM,QAAQ,GAAG,2BAA2B,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACrI,mBAAmB,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;QAC7D,OAAO,QAAQ,CAAC,KAAK,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,mBAAmB,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;QACpF,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACxB,mBAAmB,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;QAC3F,OAAO,0BAA0B,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,2BAA2B,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACjF,mBAAmB,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC;IAC5H,OAAO,QAAQ,CAAC,KAAK,CAAC;AAAA,CACtB;AAED,SAAS,oBAAoB,CAAC,IAAqB,EAAE,QAAiB,EAA8C;IACnH,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ;YACrB,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBAClB,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,KAAK,EAAE,KAAK,CAAC;gBAClD,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;YAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzH,OAAO,SAAS,CAAC;IAAA,CACjB,CAAC;AAAA,CACF;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAqB,EAAE,KAAY,EAAE,KAAK,GAAG,YAAY,EAAE,EAAE,QAAQ,GAAG,KAAK,EAAY;IACzH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACvF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IAE3F,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAG,CAAC,CAAC,CAAC,KAAG,CAAC;IAC9G,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,eAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAEpL,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,KAAK,GAAG,eAAe,CAAC;IAE5B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAAC,aAAa,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC;YACV,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7H,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAM,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACnD,GAAG,0BAA0B,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;SAC1D,CAAC,CAAC;QACH,KAAK,EAAE,CAAC;IACT,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACxF,kBAAkB,GAAG,IAAI,CAAC;QAC1B,KAAK,EAAE,CAAC;IACT,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAAC,cAAc,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC;YACV,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7H,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAM,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACnD,GAAG,0BAA0B,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;SAC1D,CAAC,CAAC;QACH,KAAK,EAAE,CAAC;IACT,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,WAAW,GAAG,aAAa,GAAG,cAAc,GAAG,YAAY,CAAC;IAClE,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,aAAa,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,UAAU,CAAC,CAAC;QAC9D,IAAI,YAAY,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,SAAS,CAAC,CAAC;QAC3D,IAAI,cAAc,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,WAAW,CAAC,CAAC;QACjE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,WAAW,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,QAAI,CAAC,CAAC,CAAC,QAAI,CAAC;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAK,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QACtE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QAC5E,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAC;AAAA,CACb;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAqB,EAAE,IAAqB,EAAQ;IAChF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,wBAAwB,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,KAAK;YAAE,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACvD,OAAO;IACR,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,KAAK;QAAE,OAAO;IACvB,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC;AAAA,CAC/F;AAED,SAAS,mBAAmB,CAAC,CAAU,EAAE,CAA6B,EAAE,KAAY,EAAE,KAAc,EAAa;IAChH,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,IAAI,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,eAAe,CAAC;IACjD,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;IACnD,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,wGAAmG;IACnG,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,YAAY,EAAE,GAAG,CAAC,CAAC;IACjC,wGAAwG;IACxG,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAEhQ,IAAI,SAAS,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrG,OAAO,CAAC,CAAC;IACV,CAAC;IAED,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,UAAQ,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrG,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;QAC3F,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,CAAC,CAAC,WAAW;QAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7H,OAAO,CAAC,CAAC;AAAA,CACT;AAED,SAAS,kBAAkB,CAAC,CAAU,EAAE,KAAY,EAAE,KAAc,EAAa;IAChF,MAAM,UAAU,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;WAC9D,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;WACvD,sBAAsB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;WAChF,sBAAsB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;WACpG,sBAAsB,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;WACnG,sBAAsB,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IACtD,IAAI,YAAY,GAAG,CAAC,CAAC,eAAe,CAAC;IACrC,IAAI,CAAC,YAAY,EAAE,CAAC;QACnB,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QAC3D,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,eAAe,CAAC;YAC7C,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,WAAW,GAAG,IAAI,CAAC;YACnB,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;YACpC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;YAC9B,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAChI,CAAC;QACD,IAAI,WAAW;YAAE,YAAY,GAAG,OAAO,CAAC;IACzC,CAAC;IACD,MAAM,UAAU,GAAG,uBAAuB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpI,MAAM,KAAK,GAAG,CAAC,CAAqB,EAAE,EAAE,CAAC,UAAU;QAClD,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACxM,CAAC,CAAC,OAAO;YACR,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC;YAC1B,CAAC,CAAC,MAAM;gBACP,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAG,CAAC;gBACzB,CAAC,CAAC,MAAM;oBACP,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC;oBAC1B,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAG,CAAC,CAAC;IAC9B,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,YAAY,EAAE,GAAG,CAAC,CAAC;IACjC,2GAA2G;IAC3G,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAEnM,MAAM,kBAAkB,GAAG,UAAU,CAAC,kBAAkB,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC;IACnF,MAAM,YAAY,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,UAAU,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAY,CAAC,MAAM,CAAC,CAAC;IAC/I,MAAM,YAAY,GAAG,uBAAuB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,YAAY,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAoB,EAAE,CAAC;QACxH,MAAM,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,aAAa,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAClG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,aAAa,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAY,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,GAAG,aAAa,IAAI,SAAS,EAAE,CAAC,EAAE,CAAC;IAAA,CACzM,CAAC,CAAC;IACH,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,MAAgC,EAAE,KAAK,CAAC,CAAC;YAC7E,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAgC,EAAE,KAAK,CAAC,CAAC;YACpF,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,IAAI,WAAW,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3J,IAAI,KAAK,CAAC,KAAK;gBAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAiB,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACjH,SAAS;QACV,CAAC;QACD,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,CAAC,EAAE,CAAC;YACR,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC;YAC9G,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,SAAO,YAAY,KAAK,SAAS,aAAY,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7G,SAAS;QACV,CAAC;QACD,MAAM,MAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,iBAAiB,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QAC3I,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,IAAI,iBAAiB,IAAI,CAAC,CAAC,eAAe,CAAC;QACnE,MAAM,QAAQ,GAAG,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC;QAC1E,MAAM,QAAQ,GAAG,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC;QAC1E,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,YAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,wGAAmG;QACnG,wGAAwG;QACxG,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACvH,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YACvH,OAAO,SAAS,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAG,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;QAAA,CAC/K,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvB,IAAI,QAAQ,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC5C,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAC7C,KAAK,EACL,KAAK,EACL,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EACzB,WAAS,CACT,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACX,CAAC;aAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,QAAQ,IAAI,qCAAqC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YACpI,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,YAAU,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrI,CAAC;IACF,CAAC;IACD,OAAO,CAAC,CAAC;AAAA,CACT;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CACnC,MAAgC,EAChC,OAA8B,EAC9B,KAAY,EACZ,KAAc,EACF;IACZ,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;IACzB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;QACzD,MAAM,aAAa,GAAG,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,MAAM,KAAK,GAAG,YAAY,EAAE,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,aAAa,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7F,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,aAAa,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;QAChE,KAAK,MAAM,IAAI,IAAI,OAAO;YAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,CAAC;IACV,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IAEnC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,QAAQ;YAAE,OAAO,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;QACnD,MAAM,IAAI,GAAG,SAAS;YACrB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;YAChC,CAAC,CAAC,CAAC,CAAC,QAAQ;gBACX,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;gBACjC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC;oBACjB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;oBAC3B,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACjC,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,IAAI,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAE9D,MAAM,YAAY,GAAG,SAAS,IAAI,CAAC,CAAC,QAAQ;YAC3C,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,WAAW,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YACtH,CAAC,CAAC,CAAC,CAAC,eAAe;gBAClB,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,SAAS,WAAW,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;gBAC3I,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,CAAC,GAAG,YAAY,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnE,MAAM,aAAa,GAAG,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,GAAG,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvH,CAAC,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU;YAC1D,CAAC,CAAC,CAAC,CAAC,IAAI;YACR,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC;QACvC,CAAC,CAAC,QAAQ,CACT,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAC5D,CAAC;QACF,CAAC,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1B,IAAI,SAAS,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;YACrF,IAAI,QAAQ,EAAE,CAAC;gBACd,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,cAAc,GAAG,mBAAmB,CAAC,CAAC,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;YAC5E,IAAI,cAAc,EAAE,CAAC;gBACpB,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrE,CAAC;YACD,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1E,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;gBACrB,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3G,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;gBACpC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;oBACxC,MAAM,WAAW,GAAG,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU;wBAC1D,CAAC,CAAC,CAAC,CAAC,IAAI;wBACR,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC;oBACvC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/E,CAAC;YACF,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,QAAQ,IAAI,cAAc,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;gBACxH,CAAC,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;QACF,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACd,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBAClC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,aAAa,CAAC,MAAM;gBAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,MAAM;YAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACtB,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;YACrB,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,OAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjG,CAAC;QACD,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YACnB,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5F,CAAC;QAED,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;YACnC,CAAC,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3G,CAAC;QACD,OAAO,CAAC,CAAC;IACV,CAAC;IAED,IAAI,CAAC,QAAQ;QAAE,OAAO,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAE1D,MAAM,UAAU,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;WAC9D,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;WACvD,sBAAsB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3C,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IACxI,MAAM,qBAAqB,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAClD,CAAC,CAAC,QAAQ,KAAK,CAAC;WACb,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS;WAChC,qCAAqC,CAAC,CAAC,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAC1E,CAAC;IACF,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjE,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC,IAAI,sBAAsB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACvI,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG,UAAU;QACtB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;QAChC,CAAC,CAAC,qBAAqB;YACtB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;YAChC,CAAC,CAAC,kBAAkB;gBACnB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;gBAC7B,CAAC,CAAC,eAAe;oBAChB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;oBAChC,CAAC,CAAC,gBAAgB;wBACjB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;wBAChC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM;4BACxB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;4BAC3B,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEnC,MAAM,YAAY,GACjB,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,OAAO,CAAC,MAAM,CACf,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,eAAe,CAAC;YAC7C,IAAI,IAAI,EAAE,CAAC;gBACV,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;gBAChC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;gBAC1B,GAAG,CAAC,UAAU;oBACb,CAAC,CAAC,IAAI,KAAK,OAAO;wBACjB,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;wBAClC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/C,CAAC;YACD,OAAO,GAAG,CAAC;QAAA,CACX,EACD,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAC1C,CAAC;IAEH,MAAM,YAAY,GAAG;QACpB,YAAY,CAAC,SAAS,IAAI,YAAY,CAAC,MAAM;YAC5C,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS,WAAW,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,cAAc,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;YACzH,CAAC,CAAC,EAAE;QACL,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;KAChC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9E,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC;IACzB,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,UAAU,GAAG,uBAAuB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IAEvC,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB;QACvE,CAAC,CAAC,CAAC,CAAC,WAAW;aACZ,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;YAC1F,MAAM,UAAU,GAAG,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;YAC5F,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;mBACxC,OAAO,CAAC,UAAU,CAAC;mBACnB,qCAAqC,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;YACtF,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACjE,MAAM,QAAQ,GAAG,QAAQ;gBACxB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;gBAC7B,CAAC,CAAC,oBAAoB;oBACrB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;oBAChC,CAAC,CAAC,UAAU;wBACX,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;wBAC7B,CAAC,CAAC,SAAS,IAAI,UAAU;4BACxB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;4BAChC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACjC,OAAO,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC;QAAA,CAC9B,CAAC;aACD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC;IAER,MAAM,CAAC,GAAG,YAAY,EAAE,GAAG,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;IAC1B,CAAC,CAAC,QAAQ,CACT,IAAI,IAAI,CACP,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,YAAY,OAAM,UAAU,CAAC,WAAW,GAAG,UAAU,EAAE,CAAC,EACtH,CAAC,EACD,CAAC,CACD,CACD,CAAC;IACF,IAAI,QAAQ,EAAE,CAAC;QACd,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,kBAAkB,GAAG,UAAU,CAAC,kBAAkB,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC;IACnF,MAAM,YAAY,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,UAAU,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAY,CAAC,MAAM,CAAC,CAAC;IAC/I,MAAM,YAAY,GAAG,uBAAuB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,YAAY,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAoB,EAAE,CAAC;QACxH,MAAM,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,SAAS,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAClG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,QAAQ,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAY,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,QAAQ,SAAS,EAAE,CAAC,EAAE,CAAC;IAAA,CACjL,CAAC,CAAC;IAEH,CAAC,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1B,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAClC,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAgC,EAAE,KAAK,CAAC,CAAC;YACpF,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,WAAW,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACvG,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,eAAe,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACjH,IAAI,KAAK,CAAC,KAAK;gBAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5F,CAAC,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,SAAS;QACV,CAAC;QACD,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAElC,IAAI,CAAC,CAAC,EAAE,CAAC;YACR,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC;YAC9G,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,YAAY,KAAK,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpF,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACnE,CAAC,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,SAAS;QACV,CAAC;QAED,MAAM,iBAAiB,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;eAC5D,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,IAAI,iBAAiB,IAAI,CAAC,CAAC,eAAe,CAAC;QACnE,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;QAC7C,MAAM,UAAU,GAAG,OAAO,KAAK,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAE9E,MAAM,YAAY,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,QAAQ;YAC1B,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;YAChC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC;gBACjB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;gBAC7B,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC;oBAC5D,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;oBAChC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,SAAS,WAAW,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,QAAQ;YAC1B,CAAC,CAAC,GAAG,UAAU,IAAI,SAAS,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,GAAG,KAAK,EAAE;YAClG,CAAC,CAAC,GAAG,UAAU,IAAI,SAAS,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,YAAY,GAAG,KAAK,EAAE,CAAC;QAC/E,MAAM,aAAa,GAAG,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACpD,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE5C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU;YAC1D,CAAC,CAAC,CAAC,CAAC,IAAI;YACR,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC;QACvC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7E,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACtB,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;YACrB,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,OAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrG,CAAC;QAED,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBAC1B,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/F,CAAC;YACD,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;YAChF,IAAI,QAAQ,EAAE,CAAC;gBACd,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3E,CAAC;YACD,MAAM,cAAc,GAAG,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;YACvE,IAAI,cAAc,EAAE,CAAC;gBACpB,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9E,CAAC;YACD,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,kBAAkB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACnF,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;gBACrB,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/G,CAAC;YACD,IAAI,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;gBAC/B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;oBACxC,MAAM,WAAW,GAAG,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU;wBAC1D,CAAC,CAAC,CAAC,CAAC,IAAI;wBACR,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC;oBACvC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrF,CAAC;YACF,CAAC;YACD,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAChC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACnE,CAAC;QACF,CAAC;QAED,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;YAClC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/G,CAAC;QAED,IAAI,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBAClC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrE,CAAC;YACD,IAAI,aAAa,CAAC,MAAM;gBAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,CAAC,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QACjB,CAAC,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,CAAC,CAAC;AAAA,CACT","sourcesContent":["// @ts-nocheck\n/**\n * Rendering functions for subagent results\n */\n\nimport type { AgentToolResult } from \"@ashx-j/lunr-agent\";\nimport { getMarkdownTheme, keyText, type ExtensionContext } from \"@ashx-j/lunr\";\nimport { Container, Markdown, Spacer, Text, visibleWidth, type Component } from \"@ashx-j/lunr-tui\";\nimport {\n\ttype AgentProgress,\n\ttype AsyncJobState,\n\ttype AsyncJobStep,\n\ttype AsyncParallelGroupStatus,\n\ttype Details,\n\ttype NestedRunSummary,\n\ttype NestedStepSummary,\n\ttype WorkflowNodeStatus,\n\tMAX_WIDGET_JOBS,\n\tWIDGET_KEY,\n} from \"../shared/types.ts\";\nimport { formatTokens, formatUsage, formatDuration, formatModelThinking, formatToolCall, shortenPath } from \"../shared/formatters.ts\";\nimport { getDisplayItems, getSingleResultOutput } from \"../shared/utils.ts\";\nimport { flatToLogicalStepIndex } from \"../runs/background/parallel-groups.ts\";\nimport { formatNestedAggregate } from \"../runs/shared/nested-render.ts\";\nimport { aggregateStepStatus, formatActivityLabel, formatAgentRunningLabel, formatParallelOutcome } from \"../shared/status-format.ts\";\n\ntype Theme = ExtensionContext[\"ui\"][\"theme\"];\n\nfunction liveDetailKeyText(): string {\n\treturn keyText(\"app.tools.expand\");\n}\n\nfunction liveDetailHintText(): string {\n\treturn `Press ${liveDetailKeyText()} for live detail`;\n}\n\nfunction getTermWidth(): number {\n\treturn process.stdout.columns || 120;\n}\n\nconst segmenter = new Intl.Segmenter(undefined, { granularity: \"grapheme\" });\n\n/**\n * Truncate a line to maxWidth, preserving ANSI styling through the ellipsis.\n * \n * pi-tui's truncateToWidth adds \\x1b[0m before ellipsis which resets all styling,\n * causing background color bleed in the TUI. This implementation tracks active\n * ANSI styles and re-applies them before the ellipsis.\n * \n * Uses Intl.Segmenter for proper Unicode/emoji handling (not char-by-char).\n */\nfunction truncLine(text: string, maxWidth: number): string {\n\tif (visibleWidth(text) <= maxWidth) return text;\n\n\tconst targetWidth = maxWidth - 1;\n\tlet result = \"\";\n\tlet currentWidth = 0;\n\tlet activeStyles: string[] = [];\n\tlet i = 0;\n\n\twhile (i < text.length) {\n\t\tconst ansiMatch = text.slice(i).match(/^\\x1b\\[[0-9;]*m/);\n\t\tif (ansiMatch) {\n\t\t\tconst code = ansiMatch[0];\n\t\t\tresult += code;\n\n\t\t\tif (code === \"\\x1b[0m\" || code === \"\\x1b[m\") {\n\t\t\t\tactiveStyles = [];\n\t\t\t} else {\n\t\t\t\tactiveStyles.push(code);\n\t\t\t}\n\t\t\ti += code.length;\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet end = i;\n\t\twhile (end < text.length && !text.slice(end).match(/^\\x1b\\[[0-9;]*m/)) {\n\t\t\tend++;\n\t\t}\n\n\t\tconst textPortion = text.slice(i, end);\n\t\tfor (const seg of segmenter.segment(textPortion)) {\n\t\t\tconst grapheme = seg.segment;\n\t\t\tconst graphemeWidth = visibleWidth(grapheme);\n\n\t\t\tif (currentWidth + graphemeWidth > targetWidth) {\n\t\t\t\treturn result + activeStyles.join(\"\") + \"…\";\n\t\t\t}\n\n\t\t\tresult += grapheme;\n\t\t\tcurrentWidth += graphemeWidth;\n\t\t}\n\t\ti = end;\n\t}\n\n\treturn result + activeStyles.join(\"\") + \"…\";\n}\n\nfunction wrapPlainText(text: string, maxWidth: number): string[] {\n\tif (maxWidth <= 0) return [\"\"];\n\tconst lines: string[] = [];\n\tfor (const rawLine of text.split(\"\\n\")) {\n\t\tif (rawLine.length === 0) {\n\t\t\tlines.push(\"\");\n\t\t\tcontinue;\n\t\t}\n\t\tlet current = \"\";\n\t\tlet currentWidth = 0;\n\t\tfor (const seg of segmenter.segment(rawLine)) {\n\t\t\tconst grapheme = seg.segment;\n\t\t\tconst graphemeWidth = visibleWidth(grapheme);\n\t\t\tif (currentWidth > 0 && currentWidth + graphemeWidth > maxWidth) {\n\t\t\t\tlines.push(current);\n\t\t\t\tcurrent = grapheme;\n\t\t\t\tcurrentWidth = graphemeWidth;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcurrent += grapheme;\n\t\t\tcurrentWidth += graphemeWidth;\n\t\t}\n\t\tlines.push(current);\n\t}\n\treturn lines;\n}\n\nconst RUNNING_FRAMES = [\"⠋\", \"⠙\", \"⠹\", \"⠸\", \"⠼\", \"⠴\", \"⠦\", \"⠧\", \"⠇\", \"⠏\"];\nconst STATIC_RUNNING_GLYPH = \"●\";\n\ntype ProgressSeedSource = Partial<Pick<AgentProgress, \"index\" | \"toolCount\" | \"tokens\" | \"durationMs\" | \"lastActivityAt\" | \"currentToolStartedAt\" | \"turnCount\">>;\n\nfunction runningSeed(...values: Array<number | undefined>): number | undefined {\n\tlet seed: number | undefined;\n\tfor (const value of values) {\n\t\tif (value === undefined || !Number.isFinite(value)) continue;\n\t\tseed = (seed ?? 0) + Math.trunc(value);\n\t}\n\treturn seed;\n}\n\nfunction runningGlyph(seed?: number): string {\n\tif (seed === undefined) return STATIC_RUNNING_GLYPH;\n\treturn RUNNING_FRAMES[Math.abs(seed) % RUNNING_FRAMES.length]!;\n}\n\nfunction progressRunningSeed(progress: ProgressSeedSource | undefined): number | undefined {\n\tif (!progress) return undefined;\n\t// lunr: seed only the row identity. Tokens / duration / lastActivityAt\n\t// change on every thinking token and used to advance the glyph faster than the 80ms timer.\n\treturn runningSeed(progress.index);\n}\n\ninterface LegacyResultAnimationContext {\n\tstate: { subagentResultAnimationTimer?: ReturnType<typeof setInterval> };\n}\n\nexport function clearLegacyResultAnimationTimer(context: LegacyResultAnimationContext): void {\n\tconst timer = context.state.subagentResultAnimationTimer;\n\tif (!timer) return;\n\tclearInterval(timer);\n\tcontext.state.subagentResultAnimationTimer = undefined;\n}\n\n// lunr: animation sink — while `current` is set, running-glyph lines register a\n// per-frame template so the extension timer can rewrite just those Text nodes\n// (setText + requestRender) instead of rebuilding the whole result tree per frame.\nexport interface SubagentAnimatedLine {\n\ttext: Text;\n\tline: (frame: number) => string;\n}\nexport const subagentAnimSink: { current: SubagentAnimatedLine[] | null } = { current: null };\n\nfunction animatedLine(line: (frame: number) => string, frame: number | undefined, animate: boolean): Text {\n\tconst text = new Text(line(frame ?? 0), 0, 0);\n\tif (animate && frame !== undefined && subagentAnimSink.current) {\n\t\tsubagentAnimSink.current.push({ text, line });\n\t}\n\treturn text;\n}\n\nfunction extractOutputTarget(task: string): string | undefined {\n\tconst writeToMatch = task.match(/\\[Write to:\\s*([^\\]\\n]+)\\]/i);\n\tif (writeToMatch?.[1]?.trim()) return writeToMatch[1].trim();\n\tconst findingsMatch = task.match(/Write your findings to(?: exactly this path)?:\\s*([^\\r\\n]+)/i);\n\tif (findingsMatch?.[1]?.trim()) return findingsMatch[1].trim();\n\tconst outputMatch = task.match(/[Oo]utput(?:\\s+to)?\\s*:\\s*(\\S+)/i);\n\tif (outputMatch?.[1]?.trim()) return outputMatch[1].trim();\n\treturn undefined;\n}\n\nfunction hasEmptyTextOutputWithoutOutputTarget(task: string, output: string): boolean {\n\tif (output.trim()) return false;\n\treturn !extractOutputTarget(task);\n}\n\nfunction getToolCallLines(\n\tresult: Pick<Details[\"results\"][number], \"messages\" | \"toolCalls\">,\n\texpanded: boolean,\n): string[] {\n\tif (result.messages) {\n\t\treturn getDisplayItems(result.messages)\n\t\t\t.filter((item): item is { type: \"tool\"; name: string; args: Record<string, unknown> } => item.type === \"tool\")\n\t\t\t.map((item) => formatToolCall(item.name, item.args, expanded));\n\t}\n\treturn result.toolCalls?.map((toolCall) => expanded ? toolCall.expandedText : toolCall.text) ?? [];\n}\n\n\nfunction snapshotNowForProgress(progress: Pick<AgentProgress, \"currentToolStartedAt\" | \"durationMs\" | \"lastActivityAt\">): number | undefined {\n\tif (progress.currentToolStartedAt !== undefined && progress.durationMs !== undefined) return progress.currentToolStartedAt + progress.durationMs;\n\treturn progress.lastActivityAt;\n}\n\nfunction formatCurrentToolLine(\n\tprogress: Pick<AgentProgress, \"currentTool\" | \"currentToolArgs\" | \"currentToolStartedAt\">,\n\tavailableWidth: number,\n\texpanded: boolean,\n\tsnapshotNow?: number,\n): string | undefined {\n\tif (!progress.currentTool) return undefined;\n\tconst maxToolArgsLen = Math.max(50, availableWidth - 20);\n\tconst toolArgsPreview = progress.currentToolArgs\n\t\t? (expanded || progress.currentToolArgs.length <= maxToolArgsLen\n\t\t\t? progress.currentToolArgs\n\t\t\t: `${progress.currentToolArgs.slice(0, maxToolArgsLen)}...`)\n\t\t: \"\";\n\tconst durationSuffix = progress.currentToolStartedAt !== undefined && snapshotNow !== undefined\n\t\t? ` | ${formatDuration(Math.max(0, snapshotNow - progress.currentToolStartedAt))}`\n\t\t: \"\";\n\treturn toolArgsPreview\n\t\t? `${progress.currentTool}: ${toolArgsPreview}${durationSuffix}`\n\t\t: `${progress.currentTool}${durationSuffix}`;\n}\n\nfunction buildLiveStatusLine(progress: Pick<AgentProgress, \"activityState\" | \"lastActivityAt\">, snapshotNow?: number): string | undefined {\n\tif (progress.lastActivityAt !== undefined && snapshotNow !== undefined) return formatActivityLabel(progress.lastActivityAt, progress.activityState, snapshotNow);\n\tif (progress.activityState === \"needs_attention\") return \"needs attention\";\n\tif (progress.activityState === \"active_long_running\") return \"active but long-running\";\n\tif (progress.lastActivityAt !== undefined) return \"active\";\n\treturn undefined;\n}\n\nfunction themeBold(theme: Theme, text: string): string {\n\treturn ((theme as { bold?: (value: string) => string }).bold?.(text)) ?? text;\n}\n\nfunction statJoin(theme: Theme, parts: string[]): string {\n\treturn parts.filter(Boolean).map((part) => theme.fg(\"dim\", part)).join(` ${theme.fg(\"dim\", \"·\")} `);\n}\n\nfunction formatTokenStat(tokens: number): string {\n\treturn `${formatTokens(tokens)} token`;\n}\n\nfunction formatToolUseStat(count: number): string {\n\treturn `${count} tool use${count === 1 ? \"\" : \"s\"}`;\n}\n\nfunction formatTotalCostStat(totalCost: Details[\"totalCost\"] | undefined): string {\n\tif (!totalCost || (totalCost.inputTokens === 0 && totalCost.outputTokens === 0 && totalCost.costUsd === 0)) return \"\";\n\tconst parts: string[] = [];\n\tif (totalCost.inputTokens) parts.push(`in:${formatTokens(totalCost.inputTokens)}`);\n\tif (totalCost.outputTokens) parts.push(`out:${formatTokens(totalCost.outputTokens)}`);\n\tif (totalCost.costUsd) parts.push(`$${totalCost.costUsd.toFixed(4)}`);\n\treturn parts.join(\" \");\n}\n\nfunction formatProgressStats(theme: Theme, progress: Pick<AgentProgress, \"toolCount\" | \"tokens\" | \"durationMs\"> | undefined, includeDuration = true): string {\n\tif (!progress) return \"\";\n\tconst parts: string[] = [];\n\tif (progress.toolCount > 0) parts.push(formatToolUseStat(progress.toolCount));\n\tif (progress.tokens > 0) parts.push(formatTokenStat(progress.tokens));\n\tif (includeDuration && progress.durationMs > 0) parts.push(formatDuration(progress.durationMs));\n\treturn statJoin(theme, parts);\n}\n\nfunction firstOutputLine(text: string): string {\n\treturn text.split(\"\\n\").find((line) => line.trim())?.trim() ?? \"\";\n}\n\n// lunr: first line of the task with whitespace collapsed, capped at ~60 chars,\n// for the simplified collapsed subagent rows.\nfunction taskSummaryText(task: string | undefined, max = 60): string {\n\tconst first = (task ?? \"\").split(\"\\n\")[0]?.replace(/\\s+/g, \" \").trim() ?? \"\";\n\tif (first.length <= max) return first;\n\treturn `${first.slice(0, max - 1)}…`;\n}\n\nconst TASK_CHROME_LINE_RE = /^\\[(?:Read from|Write to):\\s*.*\\]\\s*$/;\n\n/** Drop leading [Read from: …] / [Write to: …] lines from a child task. */\nexport function stripTaskChrome(task: string | undefined): string {\n\tif (!task) return \"\";\n\tconst lines = task.split(\"\\n\");\n\twhile (lines.length > 0 && TASK_CHROME_LINE_RE.test(lines[0]!.trim())) {\n\t\tlines.shift();\n\t}\n\treturn lines.join(\"\\n\").trim();\n}\n\n/** Compact-row lead: model name only (no thinking level), else the chrome-stripped task. */\nexport function compactRowLead(result: { task?: string; model?: string }): string {\n\tconst badge = formatModelThinking(result.model);\n\tconst cut = badge.indexOf(\" · thinking \");\n\tconst modelOnly = cut === -1 ? badge : badge.slice(0, cut);\n\tif (modelOnly) return modelOnly;\n\treturn taskSummaryText(stripTaskChrome(result.task));\n}\n\nfunction resultStatusLine(result: Details[\"results\"][number], output: string): string {\n\tif (result.detached) return result.detachedReason ? `Detached: ${result.detachedReason}` : \"Detached\";\n\tif (result.stopped) return \"Stopped\";\n\tif (result.interrupted) return \"Paused\";\n\tif (result.exitCode !== 0) return `Error: ${result.error ?? (firstOutputLine(output) || `exit ${result.exitCode}`)}`;\n\tif (result.acceptance?.status && result.acceptance.status !== \"not-required\") return `Done · acceptance: ${result.acceptance.status}`;\n\tif (hasEmptyTextOutputWithoutOutputTarget(result.task, output)) return \"Done (no text output)\";\n\treturn \"Done\";\n}\n\nfunction resultGlyph(result: Details[\"results\"][number], output: string, theme: Theme, running = result.progress?.status === \"running\", seed = progressRunningSeed(result.progress ?? result.progressSummary), frame?: number): string {\n\tif (running) {\n\t\tif (frame !== undefined) return theme.fg(\"accent\", runningGlyph((seed ?? 0) + frame));\n\t\treturn theme.fg(\"accent\", runningGlyph(seed));\n\t}\n\tif (result.detached) return theme.fg(\"warning\", \"■\");\n\tif (result.stopped) return theme.fg(\"warning\", \"■\");\n\tif (result.interrupted) return theme.fg(\"warning\", \"■\");\n\tif (result.exitCode !== 0) return theme.fg(\"error\", \"✗\");\n\tif (hasEmptyTextOutputWithoutOutputTarget(result.task, output)) return theme.fg(\"warning\", \"✓\");\n\treturn theme.fg(\"success\", \"✓\");\n}\n\n/** Compact hang row: tool count, tokens, elapsed time. */\nexport function formatCompactStatsHangLine(\n\tprogress: Pick<AgentProgress, \"toolCount\" | \"tokens\" | \"durationMs\"> | undefined,\n\twidth: number,\n\tpaint: (s: string) => string = (s) => s,\n\tprefix = \" ⎿ \",\n): string {\n\tconst toolCount = progress?.toolCount ?? 0;\n\tconst tokens = progress?.tokens ?? 0;\n\tconst durationMs = progress?.durationMs ?? 0;\n\tconst body = [\n\t\tformatToolUseStat(toolCount),\n\t\tformatTokenStat(tokens),\n\t\tdurationMs > 0 ? formatDuration(durationMs) : \"0ms\",\n\t].join(\" · \");\n\treturn truncLine(paint(`${prefix}${body}`), width);\n}\n\nexport function widgetRenderKey(job: AsyncJobState): string {\n\treturn JSON.stringify({\n\t\tasyncDir: job.asyncDir,\n\t\tstatus: job.status,\n\t\tactivityState: job.activityState,\n\t\tlastActivityAt: job.lastActivityAt,\n\t\tcurrentTool: job.currentTool,\n\t\tcurrentToolStartedAt: job.currentToolStartedAt,\n\t\tcurrentPath: job.currentPath,\n\t\tturnCount: job.turnCount,\n\t\ttoolCount: job.toolCount,\n\t\tmode: job.mode,\n\t\tagents: job.agents,\n\t\tcurrentStep: job.currentStep,\n\t\tchainStepCount: job.chainStepCount,\n\t\tparallelGroups: job.parallelGroups,\n\t\tsteps: job.steps,\n\t\tnestedChildren: job.nestedChildren,\n\t\tstepsTotal: job.stepsTotal,\n\t\trunningSteps: job.runningSteps,\n\t\tcompletedSteps: job.completedSteps,\n\t\tactiveParallelGroup: job.activeParallelGroup,\n\t\tstartedAt: job.startedAt,\n\t\tupdatedAt: job.updatedAt,\n\t\ttotalTokens: job.totalTokens,\n\t});\n}\n\nfunction formatWidgetAgents(agents: string[]): string {\n\tconst distinct = [...new Set(agents)];\n\tif (distinct.length === 1 && agents.length > 1) return `${distinct[0]} ×${agents.length}`;\n\tif (agents.length > 3) return `${agents.slice(0, 2).join(\", \")} +${agents.length - 2} more`;\n\treturn agents.join(\", \");\n}\n\nfunction widgetJobName(job: AsyncJobState): string {\n\tif (job.mode === \"parallel\") return \"parallel\";\n\tif (job.mode === \"chain\") return \"chain\";\n\tif (job.mode === \"single\" && job.agents?.length === 1) return job.agents[0]!;\n\tif (job.agents?.length) return formatWidgetAgents(job.agents);\n\treturn job.mode ?? \"subagent\";\n}\n\nfunction widgetActivity(job: AsyncJobState): string {\n\tconst facts: string[] = [];\n\tif (job.currentTool && job.currentToolStartedAt !== undefined && job.updatedAt !== undefined) facts.push(`${job.currentTool} ${formatDuration(Math.max(0, job.updatedAt - job.currentToolStartedAt))}`);\n\telse if (job.currentTool) facts.push(job.currentTool);\n\tif (job.currentPath) facts.push(shortenPath(job.currentPath));\n\tif (job.turnCount !== undefined) facts.push(`${job.turnCount} turns`);\n\tif (job.toolCount !== undefined) facts.push(`${job.toolCount} tools`);\n\tconst activity = buildLiveStatusLine(job, job.updatedAt);\n\tif (activity && facts.length) return `${activity} · ${facts.join(\" · \")}`;\n\tif (activity) return activity;\n\tif (facts.length) return facts.join(\" · \");\n\tif (job.status === \"running\") return \"thinking…\";\n\tif (job.status === \"queued\") return \"queued…\";\n\tif (job.status === \"paused\") return \"Paused\";\n\tif (job.status === \"stopped\") return \"Stopped\";\n\tif (job.status === \"failed\") return \"Failed\";\n\treturn \"Done\";\n}\n\nfunction widgetStepRunningSeed(step: NonNullable<AsyncJobState[\"steps\"]>[number], fallbackIndex?: number): number | undefined {\n\treturn runningSeed(fallbackIndex, step.index);\n}\n\nfunction widgetStepsRunningSeed(steps: Array<NonNullable<AsyncJobState[\"steps\"]>[number]> | undefined): number | undefined {\n\tlet seed: number | undefined;\n\tfor (const [index, step] of (steps ?? []).entries()) seed = runningSeed(seed, widgetStepRunningSeed(step, index));\n\treturn seed;\n}\n\nfunction widgetJobRunningSeed(job: AsyncJobState): number | undefined {\n\treturn runningSeed(job.currentStep, job.runningSteps, widgetStepsRunningSeed(job.steps));\n}\n\nfunction widgetJobsRunningSeed(jobs: AsyncJobState[]): number | undefined {\n\tlet seed: number | undefined;\n\tfor (const job of jobs) seed = runningSeed(seed, widgetJobRunningSeed(job));\n\treturn seed;\n}\n\nfunction widgetStatusGlyph(job: AsyncJobState, theme: Theme): string {\n\tif (job.status === \"running\") return theme.fg(\"accent\", runningGlyph(widgetJobRunningSeed(job)));\n\tif (job.status === \"queued\") return theme.fg(\"muted\", \"◦\");\n\tif (job.status === \"complete\") return theme.fg(\"success\", \"✓\");\n\tif (job.status === \"paused\") return theme.fg(\"warning\", \"■\");\n\tif (job.status === \"stopped\") return theme.fg(\"warning\", \"■\");\n\treturn theme.fg(\"error\", \"✗\");\n}\n\nfunction widgetStepGlyph(status: AsyncJobStep[\"status\"], theme: Theme, seed?: number): string {\n\tif (status === \"running\") return theme.fg(\"accent\", runningGlyph(seed));\n\tif (status === \"complete\" || status === \"completed\") return theme.fg(\"success\", \"✓\");\n\tif (status === \"failed\") return theme.fg(\"error\", \"✗\");\n\tif (status === \"paused\") return theme.fg(\"warning\", \"■\");\n\tif (status === \"stopped\") return theme.fg(\"warning\", \"■\");\n\treturn theme.fg(\"muted\", \"◦\");\n}\n\nfunction widgetStepStatus(status: AsyncJobStep[\"status\"], theme: Theme): string {\n\tif (status === \"running\") return theme.fg(\"accent\", \"running\");\n\tif (status === \"complete\" || status === \"completed\") return theme.fg(\"success\", \"complete\");\n\tif (status === \"failed\") return theme.fg(\"error\", \"failed\");\n\tif (status === \"paused\") return theme.fg(\"warning\", \"paused\");\n\tif (status === \"stopped\") return theme.fg(\"warning\", \"stopped\");\n\treturn theme.fg(\"dim\", status);\n}\n\nfunction widgetStepActivity(step: NonNullable<AsyncJobState[\"steps\"]>[number], snapshotNow?: number): string {\n\tconst facts: string[] = [];\n\tif (step.currentTool && step.currentToolStartedAt !== undefined && snapshotNow !== undefined) facts.push(`${step.currentTool} ${formatDuration(Math.max(0, snapshotNow - step.currentToolStartedAt))}`);\n\telse if (step.currentTool) facts.push(step.currentTool);\n\tif (step.currentPath) facts.push(shortenPath(step.currentPath));\n\tif (step.turnCount !== undefined) facts.push(`${step.turnCount} turns`);\n\tif (step.toolCount !== undefined) facts.push(`${step.toolCount} tools`);\n\tif (step.tokens?.total) facts.push(formatTokenStat(step.tokens.total));\n\tconst activity = buildLiveStatusLine(step, snapshotNow);\n\tif (activity && facts.length) return `${activity} · ${facts.join(\" · \")}`;\n\tif (activity) return activity;\n\treturn facts.join(\" · \");\n}\n\n\nfunction widgetChainDetails(job: AsyncJobState, theme: Theme, expanded = false, width = getTermWidth()): string[] {\n\tif (!job.steps?.length) return [];\n\tconst total = job.chainStepCount ?? job.steps.length;\n\tconst lines: string[] = [];\n\tfor (const span of buildAsyncChainStepSpans(total, job.steps.length, job.parallelGroups)) {\n\t\tconst steps = job.steps.slice(span.start, span.start + span.count);\n\t\tif (span.isParallel) {\n\t\t\tconst status = aggregateStepStatus(steps);\n\t\t\tlines.push(` ${widgetStepGlyph(status, theme, widgetStepsRunningSeed(steps))} Step ${span.stepIndex + 1}/${total}: ${themeBold(theme, \"parallel group\")} ${theme.fg(\"dim\", \"·\")} ${theme.fg(\"dim\", formatParallelOutcome(steps, span.count))}`);\n\t\t\tcontinue;\n\t\t}\n\t\tconst step = steps[0];\n\t\tif (!step) {\n\t\t\tlines.push(` ${theme.fg(\"dim\", `◦ Step ${span.stepIndex + 1}/${total}: pending`)}`);\n\t\t\tcontinue;\n\t\t}\n\t\tlines.push(...foregroundStyleWidgetStepLines(job, theme, step, \"Step\", span.stepIndex + 1, total, expanded, width));\n\t}\n\treturn lines;\n}\n\nfunction widgetParallelAgentDetails(job: AsyncJobState, theme: Theme, expanded = false, width = getTermWidth()): string[] {\n\tif (!job.steps?.length) return [];\n\tif (job.mode !== \"parallel\" && job.mode !== \"chain\") return [];\n\tif (job.mode === \"chain\" && !job.activeParallelGroup && job.parallelGroups?.length) return widgetChainDetails(job, theme, expanded, width);\n\tconst total = job.stepsTotal ?? job.steps.length;\n\tconst lines: string[] = [];\n\tfor (const [index, step] of job.steps.entries()) {\n\t\tconst marker = index === job.steps.length - 1 ? \"└\" : \"├\";\n\t\tconst activity = widgetStepActivity(step, job.updatedAt);\n\t\tconst itemTitle = job.mode === \"parallel\" || job.activeParallelGroup ? \"Agent\" : \"Step\";\n\t\tconst modelDisplay = modelThinkingBadge(theme, step.model, step.thinking);\n\t\tlines.push(` ${theme.fg(\"dim\", `${marker} ${widgetStepGlyph(step.status, theme, widgetStepRunningSeed(step, index))} ${itemTitle} ${index + 1}/${total}: ${step.agent} · ${widgetStepStatus(step.status, theme)}${modelDisplay}${activity ? ` · ${activity}` : \"\"}`)}`);\n\t\tfor (const nestedLine of formatNestedWidgetLines(step.children, theme, width, expanded, job.updatedAt, expanded ? 8 : 1)) lines.push(` ${nestedLine}`);\n\t}\n\treturn lines;\n}\n\nfunction parseParallelGroupAgentCount(label: string | undefined): number | undefined {\n\tif (!label || !label.startsWith(\"[\") || !label.endsWith(\"]\")) return undefined;\n\tconst inner = label.slice(1, -1).trim();\n\tif (!inner) return 0;\n\treturn inner.split(\"+\").map((part) => part.trim()).filter(Boolean).length;\n}\n\ninterface ChainStepSpan {\n\tstepIndex: number;\n\tstart: number;\n\tcount: number;\n\tisParallel: boolean;\n\tstatus?: WorkflowNodeStatus;\n\tlabel?: string;\n\terror?: string;\n}\n\nfunction buildChainStepSpans(details: Pick<Details, \"chainAgents\" | \"workflowGraph\">): ChainStepSpan[] {\n\tif (details.workflowGraph?.nodes?.length) {\n\t\tconst spans: ChainStepSpan[] = [];\n\t\tlet flatCursor = 0;\n\t\tfor (const node of details.workflowGraph.nodes) {\n\t\t\tif (node.stepIndex === undefined) continue;\n\t\t\tif (node.kind === \"parallel-group\" || node.kind === \"dynamic-parallel-group\") {\n\t\t\t\tconst childFlatIndexes = (node.children ?? [])\n\t\t\t\t\t.map((child) => child.flatIndex)\n\t\t\t\t\t.filter((value): value is number => typeof value === \"number\");\n\t\t\t\tconst start = childFlatIndexes.length ? Math.min(...childFlatIndexes) : flatCursor;\n\t\t\t\tconst count = node.children?.length ?? 0;\n\t\t\t\tspans.push({ stepIndex: node.stepIndex, start, count, isParallel: true, status: node.status, label: node.label, error: node.error });\n\t\t\t\tflatCursor = Math.max(flatCursor, start + count);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst start = node.flatIndex ?? flatCursor;\n\t\t\tspans.push({ stepIndex: node.stepIndex, start, count: 1, isParallel: false, status: node.status, label: node.label, error: node.error });\n\t\t\tflatCursor = Math.max(flatCursor, start + 1);\n\t\t}\n\t\tif (spans.length) return spans.sort((left, right) => left.stepIndex - right.stepIndex);\n\t}\n\n\tif (!details.chainAgents?.length) return [];\n\tconst spans: ChainStepSpan[] = [];\n\tlet start = 0;\n\tfor (let stepIndex = 0; stepIndex < details.chainAgents.length; stepIndex++) {\n\t\tconst label = details.chainAgents[stepIndex]!;\n\t\tconst parsedCount = parseParallelGroupAgentCount(label);\n\t\tconst count = parsedCount ?? 1;\n\t\tspans.push({ stepIndex, start, count, isParallel: parsedCount !== undefined });\n\t\tstart += count;\n\t}\n\treturn spans;\n}\n\nfunction isChainParallelGroupActive(details: Pick<Details, \"mode\" | \"chainAgents\" | \"currentStepIndex\" | \"workflowGraph\">): boolean {\n\tif (details.mode !== \"chain\") return false;\n\tif (details.currentStepIndex === undefined) return false;\n\treturn buildChainStepSpans(details).some((span) => span.stepIndex === details.currentStepIndex && span.isParallel);\n}\n\nfunction buildAsyncChainStepSpans(total: number, stepCount: number, parallelGroups: AsyncParallelGroupStatus[] = []): ChainStepSpan[] {\n\tconst spans: ChainStepSpan[] = [];\n\tlet flatIndex = 0;\n\tfor (let stepIndex = 0; stepIndex < total; stepIndex++) {\n\t\tconst group = parallelGroups.find((candidate) => candidate.stepIndex === stepIndex);\n\t\tif (group) {\n\t\t\tspans.push({ stepIndex, start: group.start, count: group.count, isParallel: true });\n\t\t\tflatIndex = Math.max(flatIndex, group.start + group.count);\n\t\t\tcontinue;\n\t\t}\n\t\tspans.push({ stepIndex, start: flatIndex, count: flatIndex < stepCount ? 1 : 0, isParallel: false });\n\t\tflatIndex++;\n\t}\n\treturn spans;\n}\n\nfunction isDoneResult(result: Details[\"results\"][number]): boolean {\n\tconst status = result.progress?.status;\n\tif (status === \"completed\") return true;\n\tif (status === \"running\" || status === \"pending\") return false;\n\tif (result.interrupted || result.detached) return false;\n\treturn result.exitCode === 0;\n}\n\nfunction workflowGraphHasStatus(details: Pick<Details, \"workflowGraph\">, statuses: WorkflowNodeStatus[]): boolean {\n\treturn details.workflowGraph?.nodes.some((node) => statuses.includes(node.status)) ?? false;\n}\n\ninterface ChainRenderResultEntry {\n\tkind: \"result\";\n\tresultIndex: number;\n\trowNumber: number;\n\tagentName: string;\n}\n\ninterface ChainRenderPlaceholderEntry {\n\tkind: \"placeholder\";\n\trowNumber: number;\n\tstepLabel: string;\n\tagentName: string;\n\tstatus: WorkflowNodeStatus;\n\terror?: string;\n}\n\ntype ChainRenderEntry = ChainRenderResultEntry | ChainRenderPlaceholderEntry;\n\nfunction buildChainRenderEntries(details: Details, label: MultiProgressLabel): ChainRenderEntry[] | undefined {\n\tif (details.mode !== \"chain\" || !label.hasParallelInChain || label.showActiveGroupOnly) return undefined;\n\tconst entries: ChainRenderEntry[] = [];\n\tfor (const span of buildChainStepSpans(details)) {\n\t\tif (span.isParallel && span.count === 0) {\n\t\t\tentries.push({\n\t\t\t\tkind: \"placeholder\",\n\t\t\t\trowNumber: span.stepIndex + 1,\n\t\t\t\tstepLabel: `Step ${span.stepIndex + 1}`,\n\t\t\t\tagentName: span.label ?? details.chainAgents?.[span.stepIndex] ?? `step-${span.stepIndex + 1}`,\n\t\t\t\tstatus: span.status ?? \"pending\",\n\t\t\t\terror: span.error,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tfor (let index = span.start; index < span.start + span.count; index++) {\n\t\t\tentries.push({\n\t\t\t\tkind: \"result\",\n\t\t\t\tresultIndex: index,\n\t\t\t\trowNumber: index + 1,\n\t\t\t\tagentName: details.results[index]?.agent ?? details.chainAgents?.[span.stepIndex] ?? `step-${span.stepIndex + 1}`,\n\t\t\t});\n\t\t}\n\t}\n\treturn entries;\n}\n\ninterface MultiProgressLabel {\n\theaderLabel: string;\n\titemTitle: \"Step\" | \"Agent\";\n\ttotalCount: number;\n\thasParallelInChain: boolean;\n\tactiveParallelGroup: boolean;\n\tgroupStartIndex: number;\n\tgroupEndIndex: number;\n\tshowActiveGroupOnly: boolean;\n}\n\nfunction buildMultiProgressLabel(details: Pick<Details, \"mode\" | \"results\" | \"progress\" | \"totalSteps\" | \"currentStepIndex\" | \"chainAgents\" | \"workflowGraph\">, hasRunning: boolean): MultiProgressLabel {\n\tconst stepSpans = buildChainStepSpans(details);\n\tconst hasParallelInChain = details.mode === \"chain\" && stepSpans.some((span) => span.isParallel);\n\tconst activeParallelGroup = isChainParallelGroupActive(details);\n\tconst itemTitle: \"Step\" | \"Agent\" = details.mode === \"parallel\" || activeParallelGroup ? \"Agent\" : \"Step\";\n\n\tif (details.mode === \"parallel\") {\n\t\tconst totalCount = details.totalSteps ?? details.results.length;\n\t\tconst statuses = new Array(totalCount).fill(\"pending\") as Array<\"pending\" | \"running\" | \"completed\" | \"failed\" | \"stopped\" | \"detached\">;\n\t\tfor (const progress of details.progress ?? []) {\n\t\t\tif (progress.index >= 0 && progress.index < totalCount) statuses[progress.index] = progress.status;\n\t\t}\n\t\tfor (let i = 0; i < details.results.length; i++) {\n\t\t\tconst result = details.results[i]!;\n\t\t\tconst progressFromArray = details.progress?.find((progress) => progress.index === i)\n\t\t\t\t|| details.progress?.find((progress) => progress.agent === result.agent && progress.status === \"running\");\n\t\t\tconst index = result.progress?.index ?? progressFromArray?.index ?? i;\n\t\t\tif (index < 0 || index >= totalCount) continue;\n\t\t\tconst status = result.progress?.status\n\t\t\t\t?? (result.stopped\n\t\t\t\t\t? \"stopped\"\n\t\t\t\t\t: result.interrupted || result.detached\n\t\t\t\t\t\t? \"detached\"\n\t\t\t\t\t\t: result.exitCode === 0\n\t\t\t\t\t\t\t? \"completed\"\n\t\t\t\t\t\t\t: \"failed\");\n\t\t\tstatuses[index] = status;\n\t\t}\n\t\tconst running = statuses.filter((status) => status === \"running\").length;\n\t\tconst done = statuses.filter((status) => status === \"completed\").length;\n\t\tconst headerLabel = hasRunning\n\t\t\t? `${formatAgentRunningLabel(running)} · ${done}/${totalCount} done`\n\t\t\t: `${done}/${totalCount} done`;\n\t\treturn { headerLabel, itemTitle, totalCount, hasParallelInChain, activeParallelGroup, groupStartIndex: 0, groupEndIndex: totalCount, showActiveGroupOnly: false };\n\t}\n\n\tif (activeParallelGroup) {\n\t\tconst currentStepIndex = details.currentStepIndex!;\n\t\tconst span = stepSpans[currentStepIndex];\n\t\tconst groupSize = span?.count ?? 1;\n\t\tconst groupStart = span?.start ?? 0;\n\t\tconst groupEnd = groupStart + groupSize;\n\t\tlet running = 0;\n\t\tlet done = 0;\n\t\tfor (let index = groupStart; index < groupEnd; index++) {\n\t\t\tconst progressEntry = details.progress?.find((progress) => progress.index === index);\n\t\t\tconst resultEntry = details.results.find((result) => result.progress?.index === index);\n\t\t\tif (progressEntry?.status === \"running\") {\n\t\t\t\trunning++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (progressEntry?.status === \"completed\") {\n\t\t\t\tdone++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (resultEntry && isDoneResult(resultEntry)) done++;\n\t\t}\n\t\tconst totalSteps = details.totalSteps ?? details.chainAgents?.length ?? 1;\n\t\tconst headerLabel = hasRunning\n\t\t\t? `step ${currentStepIndex + 1}/${totalSteps} · parallel group: ${formatAgentRunningLabel(running)} · ${done}/${groupSize} done`\n\t\t\t: `step ${currentStepIndex + 1}/${totalSteps} · parallel group: ${done}/${groupSize} done`;\n\t\treturn { headerLabel, itemTitle, totalCount: groupSize, hasParallelInChain, activeParallelGroup, groupStartIndex: groupStart, groupEndIndex: groupEnd, showActiveGroupOnly: true };\n\t}\n\n\tif (details.mode === \"chain\" && details.chainAgents?.length) {\n\t\tconst totalCount = details.totalSteps ?? details.chainAgents.length;\n\t\tconst doneLogical = stepSpans.filter((span) => {\n\t\t\tif (span.status && span.status !== \"completed\") return false;\n\t\t\tif (span.count === 0) return span.status === \"completed\";\n\t\t\tfor (let index = span.start; index < span.start + span.count; index++) {\n\t\t\t\tconst progressEntry = details.progress?.find((progress) => progress.index === index);\n\t\t\t\tconst resultEntry = details.results.find((result) => result.progress?.index === index) ?? details.results[index];\n\t\t\t\tif (progressEntry?.status === \"running\" || progressEntry?.status === \"pending\" || progressEntry?.status === \"failed\") return false;\n\t\t\t\tif (!resultEntry || !isDoneResult(resultEntry)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}).length;\n\t\tconst currentStep = details.currentStepIndex !== undefined ? details.currentStepIndex + 1 : Math.min(totalCount, doneLogical + (hasRunning ? 1 : 0));\n\t\tconst headerLabel = hasRunning ? `step ${currentStep}/${totalCount}` : `step ${doneLogical}/${totalCount}`;\n\t\treturn { headerLabel, itemTitle, totalCount, hasParallelInChain, activeParallelGroup, groupStartIndex: 0, groupEndIndex: details.results.length, showActiveGroupOnly: false };\n\t}\n\n\tconst totalCount = details.totalSteps ?? details.results.length;\n\tconst currentStep = details.currentStepIndex !== undefined ? details.currentStepIndex + 1 : Math.min(totalCount, details.results.filter(isDoneResult).length + (hasRunning ? 1 : 0));\n\tconst done = details.results.filter(isDoneResult).length;\n\tconst headerLabel = hasRunning ? `step ${currentStep}/${totalCount}` : `step ${done}/${totalCount}`;\n\treturn { headerLabel, itemTitle, totalCount, hasParallelInChain, activeParallelGroup, groupStartIndex: 0, groupEndIndex: details.results.length, showActiveGroupOnly: false };\n}\n\nfunction resultRowLabel(details: Pick<Details, \"mode\" | \"chainAgents\" | \"workflowGraph\">, label: MultiProgressLabel, resultIndex: number, stepNumber: number): string {\n\tif (details.mode === \"chain\" && label.hasParallelInChain) {\n\t\tconst span = buildChainStepSpans(details).find((candidate) => resultIndex >= candidate.start && resultIndex < candidate.start + candidate.count);\n\t\tif (span?.isParallel) return `Agent ${resultIndex - span.start + 1}/${span.count}`;\n\t\tif (span) return `Step ${span.stepIndex + 1}`;\n\t}\n\tif (label.itemTitle === \"Agent\") {\n\t\tconst localStepNumber = label.activeParallelGroup\n\t\t\t? Math.max(1, stepNumber - label.groupStartIndex)\n\t\t\t: stepNumber;\n\t\treturn `Agent ${localStepNumber}/${label.totalCount}`;\n\t}\n\treturn `Step ${stepNumber}`;\n}\n\nfunction widgetStats(job: AsyncJobState, theme: Theme): string {\n\tconst parts: string[] = [];\n\tconst stepsTotal = job.stepsTotal ?? (job.agents?.length ?? 1);\n\tif (job.activeParallelGroup) {\n\t\tconst running = job.runningSteps ?? (job.status === \"running\" ? 1 : 0);\n\t\tconst done = job.completedSteps ?? (job.status === \"complete\" ? stepsTotal : 0);\n\t\tif (job.mode === \"parallel\") {\n\t\t\tif (job.status === \"running\" && running > 0) parts.push(formatAgentRunningLabel(running));\n\t\t\tif (stepsTotal > 0) parts.push(`${done}/${stepsTotal} done`);\n\t\t} else {\n\t\t\tconst activeGroup = job.currentStep !== undefined\n\t\t\t\t? job.parallelGroups?.find((group) => job.currentStep! >= group.start && job.currentStep! < group.start + group.count)\n\t\t\t\t: job.parallelGroups?.find((group) => group.start === 0);\n\t\t\tconst logicalStep = activeGroup?.stepIndex ?? job.currentStep ?? 0;\n\t\t\tconst total = job.chainStepCount ?? stepsTotal;\n\t\t\tconst groupParts = [`${done}/${stepsTotal} done`];\n\t\t\tif (job.status === \"running\" && running > 0) groupParts.unshift(formatAgentRunningLabel(running));\n\t\t\tparts.push(`step ${logicalStep + 1}/${total} · parallel group: ${groupParts.join(\" · \")}`);\n\t\t}\n\t} else if (job.currentStep !== undefined) {\n\t\tif (job.mode === \"chain\" && job.parallelGroups?.length) {\n\t\t\tconst total = job.chainStepCount ?? stepsTotal;\n\t\t\tparts.push(`step ${flatToLogicalStepIndex(job.currentStep, total, job.parallelGroups) + 1}/${total}`);\n\t\t} else {\n\t\t\tparts.push(`step ${job.currentStep + 1}/${stepsTotal}`);\n\t\t}\n\t} else if (stepsTotal > 1) {\n\t\tparts.push(`steps ${stepsTotal}`);\n\t}\n\tif (job.toolCount !== undefined) parts.push(formatToolUseStat(job.toolCount));\n\tif (job.totalTokens?.total) parts.push(formatTokenStat(job.totalTokens.total));\n\tif (job.startedAt !== undefined && job.updatedAt !== undefined) parts.push(formatDuration(Math.max(0, job.updatedAt - job.startedAt)));\n\treturn statJoin(theme, parts);\n}\n\nfunction widgetStepStats(theme: Theme, step: NonNullable<AsyncJobState[\"steps\"]>[number]): string {\n\treturn statJoin(theme, [\n\t\tstep.turnCount !== undefined ? `${step.turnCount} turns` : \"\",\n\t\tstep.toolCount !== undefined ? formatToolUseStat(step.toolCount) : \"\",\n\t\tstep.tokens?.total ? formatTokenStat(step.tokens.total) : \"\",\n\t\tstep.durationMs !== undefined ? formatDuration(step.durationMs) : \"\",\n\t]);\n}\n\nfunction modelThinkingBadge(theme: Theme, model?: string, thinking?: string): string {\n\tconst label = formatModelThinking(model, thinking);\n\treturn label ? theme.fg(\"dim\", ` (${label})`) : \"\";\n}\n\nfunction widgetStepActivityLine(step: NonNullable<AsyncJobState[\"steps\"]>[number], width: number, expanded: boolean, snapshotNow?: number): string {\n\tconst toolLine = formatCurrentToolLine(step, width, expanded, snapshotNow);\n\tif (toolLine) return toolLine;\n\tconst activity = buildLiveStatusLine(step, snapshotNow);\n\tif (activity) return activity;\n\tif (step.status === \"running\") return \"thinking…\";\n\treturn \"\";\n}\n\nfunction nestedRunName(run: NestedRunSummary): string {\n\tif (run.agent) return run.agent;\n\tif (run.agents?.length) return formatWidgetAgents(run.agents);\n\treturn run.id;\n}\n\nfunction nestedStatusGlyph(state: NestedRunSummary[\"state\"] | NestedStepSummary[\"status\"], theme: Theme, seed?: number): string {\n\tif (state === \"running\") return theme.fg(\"accent\", runningGlyph(seed));\n\tif (state === \"complete\" || state === \"completed\") return theme.fg(\"success\", \"✓\");\n\tif (state === \"failed\") return theme.fg(\"error\", \"✗\");\n\tif (state === \"paused\") return theme.fg(\"warning\", \"■\");\n\tif (state === \"stopped\") return theme.fg(\"warning\", \"■\");\n\treturn theme.fg(\"muted\", \"◦\");\n}\n\nfunction nestedRunSeed(run: NestedRunSummary): number | undefined {\n\treturn runningSeed(run.lastUpdate, run.lastActivityAt, run.currentStep, run.toolCount, run.turnCount, run.totalTokens?.total, run.currentToolStartedAt);\n}\n\nfunction nestedActivity(input: Pick<NestedRunSummary | NestedStepSummary, \"activityState\" | \"lastActivityAt\" | \"currentTool\" | \"currentToolStartedAt\" | \"currentPath\" | \"turnCount\" | \"toolCount\">, state: NestedRunSummary[\"state\"] | NestedStepSummary[\"status\"], snapshotNow?: number): string {\n\tconst facts: string[] = [];\n\tif (input.currentTool && input.currentToolStartedAt !== undefined && snapshotNow !== undefined) facts.push(`${input.currentTool} ${formatDuration(Math.max(0, snapshotNow - input.currentToolStartedAt))}`);\n\telse if (input.currentTool) facts.push(input.currentTool);\n\tif (input.currentPath) facts.push(shortenPath(input.currentPath));\n\tif (input.turnCount !== undefined) facts.push(`${input.turnCount} turns`);\n\tif (input.toolCount !== undefined) facts.push(`${input.toolCount} tools`);\n\tconst activity = buildLiveStatusLine(input, snapshotNow);\n\tif (activity && facts.length) return `${activity} · ${facts.join(\" · \")}`;\n\tif (activity) return activity;\n\tif (facts.length) return facts.join(\" · \");\n\tif (state === \"running\") return \"thinking…\";\n\tif (state === \"queued\" || state === \"pending\") return \"queued…\";\n\tif (state === \"paused\") return \"Paused\";\n\tif (state === \"stopped\") return \"Stopped\";\n\tif (state === \"failed\") return \"Failed\";\n\treturn \"Done\";\n}\n\nfunction formatNestedWidgetLines(children: NestedRunSummary[] | undefined, theme: Theme, width: number, expanded: boolean, snapshotNow?: number, lineBudget = expanded ? 12 : 1): string[] {\n\tif (!children?.length || lineBudget <= 0) return [];\n\tif (!expanded) {\n\t\tconst aggregate = formatNestedAggregate(children);\n\t\treturn aggregate ? [theme.fg(\"dim\", `↳ ${aggregate}`)] : [];\n\t}\n\tconst lines: string[] = [];\n\tconst maxDepth = 2;\n\tconst append = (items: NestedRunSummary[] | undefined, depth: number, prefix: string): void => {\n\t\tif (!items?.length || lines.length >= lineBudget) return;\n\t\tif (depth > maxDepth) {\n\t\t\tconst aggregate = formatNestedAggregate(items);\n\t\t\tif (aggregate && lines.length < lineBudget) lines.push(theme.fg(\"dim\", `${prefix}↳ ${aggregate}`));\n\t\t\treturn;\n\t\t}\n\t\tfor (let index = 0; index < items.length; index++) {\n\t\t\tconst child = items[index]!;\n\t\t\tif (lines.length >= lineBudget) {\n\t\t\t\tconst aggregate = formatNestedAggregate(items.slice(index));\n\t\t\t\tif (aggregate) lines[lines.length - 1] = theme.fg(\"dim\", `${prefix}↳ ${aggregate}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst activity = nestedActivity(child, child.state, snapshotNow ?? child.lastUpdate);\n\t\t\tconst error = child.error ? ` · ${child.error}` : \"\";\n\t\t\tlines.push(theme.fg(\"dim\", `${prefix}↳ ${nestedStatusGlyph(child.state, theme, nestedRunSeed(child))} ${nestedRunName(child)} · ${child.state} · ${activity}${error}`));\n\t\t\tif (depth === maxDepth) {\n\t\t\t\tconst aggregate = formatNestedAggregate([...(child.steps?.flatMap((step) => step.children ?? []) ?? []), ...(child.children ?? [])]);\n\t\t\t\tif (aggregate && lines.length < lineBudget) lines.push(theme.fg(\"dim\", `${prefix} ↳ ${aggregate}`));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (const step of child.steps ?? []) {\n\t\t\t\tif (lines.length >= lineBudget) return;\n\t\t\t\tlines.push(theme.fg(\"dim\", `${prefix} ↳ ${nestedStatusGlyph(step.status, theme)} ${step.agent} · ${step.status} · ${nestedActivity(step, step.status, snapshotNow ?? child.lastUpdate)}`));\n\t\t\t\tappend(step.children, depth + 1, `${prefix} `);\n\t\t\t}\n\t\t\tappend(child.children, depth + 1, `${prefix} `);\n\t\t}\n\t};\n\tappend(children, 0, \"\");\n\treturn lines.map((line) => truncLine(line, width));\n}\n\nfunction foregroundStyleWidgetStepLines(\n\tjob: AsyncJobState,\n\ttheme: Theme,\n\tstep: NonNullable<AsyncJobState[\"steps\"]>[number],\n\titemTitle: \"Agent\" | \"Step\",\n\tindex: number,\n\ttotal: number,\n\texpanded: boolean,\n\twidth: number,\n): string[] {\n\tconst status = widgetStepStatus(step.status, theme);\n\tconst stats = widgetStepStats(theme, step);\n\tconst modelDisplay = modelThinkingBadge(theme, step.model, step.thinking);\n\tconst lines = [` ${widgetStepGlyph(step.status, theme, widgetStepRunningSeed(step, index - 1))} ${itemTitle} ${index}/${total}: ${themeBold(theme, step.agent)} ${theme.fg(\"dim\", \"·\")} ${status}${modelDisplay}${stats ? ` ${theme.fg(\"dim\", \"·\")} ${stats}` : \"\"}`];\n\tconst activity = widgetStepActivityLine(step, width, expanded, job.updatedAt);\n\tif (activity) lines.push(` ${theme.fg(\"dim\", `⎿ ${activity}`)}`);\n\tfor (const nestedLine of formatNestedWidgetLines(step.children, theme, width, expanded, job.updatedAt)) {\n\t\tlines.push(` ${nestedLine}`);\n\t}\n\tif (step.status === \"running\") {\n\t\tif (!expanded) lines.push(` ${theme.fg(\"accent\", liveDetailHintText())}`);\n\t\tif (expanded) {\n\t\t\tconst liveStatus = buildLiveStatusLine(step, job.updatedAt);\n\t\t\tif (liveStatus && liveStatus !== activity) lines.push(` ${theme.fg(\"accent\", liveStatus)}`);\n\t\t\tfor (const tool of step.recentTools?.slice(-3) ?? []) {\n\t\t\t\tconst maxArgsLen = Math.max(40, width - 30);\n\t\t\t\tconst argsPreview = tool.args.length <= maxArgsLen ? tool.args : `${tool.args.slice(0, maxArgsLen)}...`;\n\t\t\t\tlines.push(` ${theme.fg(\"dim\", `${tool.tool}${argsPreview ? `: ${argsPreview}` : \"\"}`)}`);\n\t\t\t}\n\t\t\tfor (const line of step.recentOutput?.slice(-5) ?? []) {\n\t\t\t\tlines.push(` ${theme.fg(\"dim\", line)}`);\n\t\t\t}\n\t\t}\n\t}\n\treturn lines;\n}\n\nfunction foregroundStyleWidgetDetails(job: AsyncJobState, theme: Theme, expanded: boolean, width: number): string[] {\n\tif (!job.steps?.length) return [\n\t\t` ${theme.fg(\"dim\", `⎿ ${widgetActivity(job)}`)}`,\n\t\t...formatNestedWidgetLines(job.nestedChildren, theme, width, expanded, job.updatedAt).map((line) => ` ${line}`),\n\t];\n\tif (job.mode === \"chain\" && !job.activeParallelGroup && job.parallelGroups?.length) return widgetChainDetails(job, theme, expanded, width);\n\tconst total = job.stepsTotal ?? job.steps.length;\n\tconst itemTitle = job.mode === \"parallel\" || job.activeParallelGroup ? \"Agent\" : \"Step\";\n\tconst lines: string[] = [];\n\tfor (const [index, step] of job.steps.entries()) {\n\t\tlines.push(...foregroundStyleWidgetStepLines(job, theme, step, itemTitle, index + 1, total, expanded, width));\n\t}\n\tconst attached = new Set(job.steps.flatMap((step) => step.children?.map((child) => child.id) ?? []));\n\tconst unattached = job.nestedChildren?.filter((child) => !attached.has(child.id)) ?? [];\n\tfor (const nestedLine of formatNestedWidgetLines(unattached, theme, width, expanded, job.updatedAt)) {\n\t\tlines.push(` ${nestedLine}`);\n\t}\n\treturn lines;\n}\n\nfunction buildSingleWidgetLines(job: AsyncJobState, theme: Theme, width: number, expanded: boolean): string[] {\n\tconst stats = widgetStats(job, theme);\n\tconst count = job.mode === \"chain\" ? job.chainStepCount : job.stepsTotal ?? job.agents?.length ?? job.steps?.length;\n\tconst mode = widgetJobName(job);\n\tconst title = `async subagent ${mode}${count && count > 1 ? ` (${count})` : \"\"}`;\n\treturn [\n\t\t`${theme.fg(\"toolTitle\", themeBold(theme, title))} ${theme.fg(\"dim\", \"· background\")}`,\n\t\t`${widgetStatusGlyph(job, theme)} ${themeBold(theme, mode)}${stats ? ` ${theme.fg(\"dim\", \"·\")} ${stats}` : \"\"}`,\n\t\t...foregroundStyleWidgetDetails(job, theme, expanded, width),\n\t].map((line) => truncLine(line, width));\n}\n\nfunction compactSingleWidgetLines(job: AsyncJobState, theme: Theme, width: number): string[] {\n\tconst fullLines = buildSingleWidgetLines(job, theme, width, false);\n\tif (fullLines.length <= 10 || !job.steps?.length || (job.mode !== \"parallel\" && !job.activeParallelGroup)) return fullLines;\n\n\tconst total = job.stepsTotal ?? job.steps.length;\n\tconst itemTitle = job.mode === \"parallel\" || job.activeParallelGroup ? \"Agent\" : \"Step\";\n\tconst lines = fullLines.slice(0, 2);\n\tfor (const [index, step] of job.steps.entries()) {\n\t\tconst status = widgetStepStatus(step.status, theme);\n\t\tconst activity = widgetStepActivityLine(step, width, false, job.updatedAt);\n\t\tconst stepStats = widgetStepStats(theme, step);\n\t\tconst activitySuffix = activity ? ` ${theme.fg(\"dim\", \"·\")} ${theme.fg(\"dim\", activity)}` : \"\";\n\t\tconst modelDisplay = modelThinkingBadge(theme, step.model, step.thinking);\n\t\tlines.push(` ${widgetStepGlyph(step.status, theme, widgetStepRunningSeed(step, index))} ${itemTitle} ${index + 1}/${total}: ${themeBold(theme, step.agent)} ${theme.fg(\"dim\", \"·\")} ${status}${modelDisplay}${activitySuffix}${stepStats ? ` ${theme.fg(\"dim\", \"·\")} ${stepStats}` : \"\"}`);\n\t\tfor (const nestedLine of formatNestedWidgetLines(step.children, theme, width, false, job.updatedAt)) lines.push(` ${nestedLine}`);\n\t}\n\tif (job.steps.some((step) => step.status === \"running\")) lines.push(theme.fg(\"accent\", ` ${liveDetailHintText()}`));\n\treturn lines.map((line) => truncLine(line, width));\n}\n\ntype WidgetRenderTier = \"full\" | \"single-line\" | \"progressive\";\n\ninterface WidgetLayoutSession {\n\texpanded: boolean;\n\trows: number;\n\tcolumns: number;\n\ttier: WidgetRenderTier;\n\tlockedRows?: number;\n\tvisibleJobKeys: string[];\n}\n\nconst RESERVED_NON_WIDGET_ROWS = 19;\n\nlet widgetLayoutSession: WidgetLayoutSession | undefined;\n\nfunction resetWidgetLayoutSession(): void {\n\twidgetLayoutSession = undefined;\n}\n\nfunction estimateAvailableWidgetRows(): number {\n\tconst rows = process.stdout.rows || 30;\n\treturn Math.max(1, rows - RESERVED_NON_WIDGET_ROWS);\n}\n\nfunction currentTerminalRows(): number {\n\treturn process.stdout.rows || 30;\n}\n\nfunction currentTerminalColumns(): number {\n\treturn process.stdout.columns || 120;\n}\n\nfunction widgetSessionMatches(expanded: boolean): boolean {\n\treturn widgetLayoutSession?.expanded === expanded\n\t\t&& widgetLayoutSession.rows === currentTerminalRows()\n\t\t&& widgetLayoutSession.columns === currentTerminalColumns();\n}\n\nfunction widgetHeaderCounts(jobs: AsyncJobState[]): { running: AsyncJobState[]; queued: AsyncJobState[]; complete: AsyncJobState[]; failed: AsyncJobState[]; paused: AsyncJobState[]; stopped: AsyncJobState[] } {\n\treturn {\n\t\trunning: jobs.filter((job) => job.status === \"running\"),\n\t\tqueued: jobs.filter((job) => job.status === \"queued\"),\n\t\tcomplete: jobs.filter((job) => job.status === \"complete\"),\n\t\tfailed: jobs.filter((job) => job.status === \"failed\"),\n\t\tpaused: jobs.filter((job) => job.status === \"paused\"),\n\t\tstopped: jobs.filter((job) => job.status === \"stopped\"),\n\t};\n}\n\nfunction buildSingleLineWidgetLines(jobs: AsyncJobState[], theme: Theme, width: number): string[] {\n\tconst counts = widgetHeaderCounts(jobs);\n\tconst hasActive = counts.running.length > 0 || counts.queued.length > 0;\n\tconst glyph = counts.running.length > 0 ? runningGlyph(widgetJobsRunningSeed(counts.running)) : hasActive ? \"●\" : \"○\";\n\tconst parts: string[] = [];\n\tif (counts.running.length > 0) parts.push(`${counts.running.length}/${jobs.length} running`);\n\tif (counts.queued.length > 0) parts.push(`${counts.queued.length} queued`);\n\tif (counts.failed.length > 0) parts.push(`${counts.failed.length} failed`);\n\tif (counts.stopped.length > 0) parts.push(`${counts.stopped.length} stopped`);\n\tif (counts.paused.length > 0) parts.push(`${counts.paused.length} paused`);\n\tif (!hasActive && counts.complete.length > 0) parts.push(`${counts.complete.length}/${jobs.length} done`);\n\treturn [truncLine(`${theme.fg(hasActive ? \"accent\" : \"dim\", glyph)} ${theme.fg(hasActive ? \"accent\" : \"dim\", \"subagents\")} (${parts.join(\", \") || `${jobs.length} total`})`, width)];\n}\n\nfunction orderedWidgetJobs(jobs: AsyncJobState[]): AsyncJobState[] {\n\treturn [\n\t\t...jobs.filter((job) => job.status === \"running\"),\n\t\t...jobs.filter((job) => job.status === \"queued\"),\n\t\t...jobs.filter((job) => job.status !== \"running\" && job.status !== \"queued\"),\n\t];\n}\n\nfunction progressiveJobKey(job: AsyncJobState): string {\n\treturn job.asyncId;\n}\n\nfunction isProgressiveActiveJob(job: AsyncJobState | undefined): boolean {\n\treturn job?.status === \"running\" || job?.status === \"queued\";\n}\n\nfunction selectProgressiveJobKeys(jobs: AsyncJobState[], previousKeys: string[], bodyRows: number): string[] {\n\tif (bodyRows <= 0) return [];\n\tconst jobsByKey = new Map(jobs.map((job) => [progressiveJobKey(job), job]));\n\tconst selected: string[] = [];\n\tconst append = (key: string): void => {\n\t\tif (selected.includes(key) || !jobsByKey.has(key)) return;\n\t\tselected.push(key);\n\t};\n\tfor (const key of previousKeys) {\n\t\tif (!isProgressiveActiveJob(jobsByKey.get(key))) continue;\n\t\tappend(key);\n\t\tif (selected.length >= bodyRows) return selected;\n\t}\n\tfor (const job of orderedWidgetJobs(jobs)) {\n\t\tif (!isProgressiveActiveJob(job)) continue;\n\t\tconst key = progressiveJobKey(job);\n\t\tappend(key);\n\t\tif (selected.length >= bodyRows) break;\n\t}\n\tif (selected.length >= bodyRows) return selected;\n\tfor (const key of previousKeys) {\n\t\tif (isProgressiveActiveJob(jobsByKey.get(key))) continue;\n\t\tappend(key);\n\t\tif (selected.length >= bodyRows) return selected;\n\t}\n\tfor (const job of orderedWidgetJobs(jobs)) {\n\t\tconst key = progressiveJobKey(job);\n\t\tappend(key);\n\t\tif (selected.length >= bodyRows) break;\n\t}\n\treturn selected;\n}\n\nfunction progressiveHeaderLine(jobs: AsyncJobState[], theme: Theme, width: number): string {\n\tconst counts = widgetHeaderCounts(jobs);\n\tconst hasActive = counts.running.length > 0 || counts.queued.length > 0;\n\tconst glyph = counts.running.length > 0 ? runningGlyph(widgetJobsRunningSeed(counts.running)) : hasActive ? \"●\" : \"○\";\n\tconst parts: string[] = [];\n\tif (counts.running.length > 0) parts.push(formatAgentRunningLabel(counts.running.length));\n\tif (counts.queued.length > 0) parts.push(`${counts.queued.length} queued`);\n\tif (!hasActive) {\n\t\tif (counts.failed.length > 0) parts.push(`${counts.failed.length} failed`);\n\t\tif (counts.stopped.length > 0) parts.push(`${counts.stopped.length} stopped`);\n\t\tif (counts.paused.length > 0) parts.push(`${counts.paused.length} paused`);\n\t\tif (counts.complete.length > 0) parts.push(`${counts.complete.length}/${jobs.length} done`);\n\t}\n\treturn truncLine(`${theme.fg(hasActive ? \"accent\" : \"dim\", glyph)} ${theme.fg(hasActive ? \"accent\" : \"dim\", \"Async agents\")} ${theme.fg(\"dim\", \"·\")} ${theme.fg(\"dim\", parts.join(\", \") || `${jobs.length} total`)}`, width);\n}\n\nfunction progressiveJobLine(job: AsyncJobState, theme: Theme, width: number): string {\n\tconst stats = widgetStats(job, theme);\n\tconst activity = widgetActivity(job);\n\tconst status = job.status === \"complete\" ? \"done\" : job.status;\n\tconst parts = [\n\t\tthemeBold(theme, widgetJobName(job)),\n\t\ttheme.fg(\"dim\", status),\n\t\tstats,\n\t\tactivity && activity.toLowerCase() !== status ? theme.fg(\"dim\", activity) : \"\",\n\t].filter(Boolean);\n\treturn truncLine(` ${widgetStatusGlyph(job, theme)} ${parts.join(` ${theme.fg(\"dim\", \"·\")} `)}`, width);\n}\n\nfunction progressiveHiddenLine(hiddenJobs: AsyncJobState[], theme: Theme, width: number): string {\n\tconst counts = widgetHeaderCounts(hiddenJobs);\n\tconst parts: string[] = [];\n\tif (counts.running.length > 0) parts.push(`${counts.running.length} running`);\n\tif (counts.queued.length > 0) parts.push(`${counts.queued.length} queued`);\n\tconst finished = counts.complete.length + counts.failed.length + counts.paused.length + counts.stopped.length;\n\tif (finished > 0) parts.push(`${finished} finished`);\n\treturn truncLine(theme.fg(\"dim\", ` +${hiddenJobs.length} more${parts.length ? ` (${parts.join(\", \")})` : \"\"}`), width);\n}\n\nfunction buildProgressiveWidgetLines(jobs: AsyncJobState[], theme: Theme, width: number, lockedRows: number, previousKeys: string[]): { lines: string[]; visibleJobKeys: string[] } {\n\tconst rowCount = Math.max(1, lockedRows);\n\tif (rowCount === 1) return { lines: buildSingleLineWidgetLines(jobs, theme, width), visibleJobKeys: [] };\n\n\tconst bodyRows = rowCount - 1;\n\tlet visibleJobKeys = selectProgressiveJobKeys(jobs, previousKeys, bodyRows);\n\tconst jobsByKey = new Map(jobs.map((job) => [progressiveJobKey(job), job]));\n\tlet visibleJobs = visibleJobKeys.map((key) => jobsByKey.get(key)).filter((job): job is AsyncJobState => Boolean(job));\n\tlet hiddenJobs = jobs.filter((job) => !visibleJobKeys.includes(progressiveJobKey(job)));\n\tconst needsHiddenLine = hiddenJobs.length > 0;\n\n\tif (needsHiddenLine && visibleJobs.length >= bodyRows && bodyRows > 0) {\n\t\tvisibleJobs = visibleJobs.slice(0, bodyRows - 1);\n\t\tvisibleJobKeys = visibleJobs.map(progressiveJobKey);\n\t\thiddenJobs = jobs.filter((job) => !visibleJobKeys.includes(progressiveJobKey(job)));\n\t}\n\n\tconst lines = [\n\t\tprogressiveHeaderLine(jobs, theme, width),\n\t\t...visibleJobs.map((job) => progressiveJobLine(job, theme, width)),\n\t];\n\tif (hiddenJobs.length > 0 && lines.length < rowCount) lines.push(progressiveHiddenLine(hiddenJobs, theme, width));\n\twhile (lines.length < rowCount) lines.push(\" \");\n\treturn { lines: lines.slice(0, rowCount), visibleJobKeys };\n}\n\nfunction collapsedWidgetLineBudget(rows: number): number {\n\treturn Math.max(10, Math.min(14, Math.floor(rows * 0.35)));\n}\n\nfunction fitWidgetLineBudget(lines: string[], theme: Theme, width: number, expanded: boolean): string[] {\n\tconst rows = process.stdout.rows || 30;\n\tconst budget = expanded\n\t\t? Math.max(12, Math.min(24, Math.floor(rows * 0.55)))\n\t\t: collapsedWidgetLineBudget(rows);\n\tif (lines.length <= budget) return lines;\n\tconst visibleLines = Math.max(1, budget - 1);\n\tconst hiddenCount = lines.length - visibleLines;\n\tconst hint = expanded\n\t\t? `… ${hiddenCount} live-detail lines hidden`\n\t\t: `… ${hiddenCount} lines hidden · ${liveDetailKeyText()} expands`;\n\treturn [...lines.slice(0, visibleLines), truncLine(theme.fg(\"dim\", hint), width)];\n}\n\nfunction fitAdaptiveWidgetLines(jobs: AsyncJobState[], lines: string[], theme: Theme, width: number, expanded: boolean): string[] {\n\tif (expanded) {\n\t\tresetWidgetLayoutSession();\n\t\treturn fitWidgetLineBudget(lines, theme, width, true);\n\t}\n\n\tconst hasMatchingSession = widgetSessionMatches(expanded);\n\tconst rows = currentTerminalRows();\n\tconst columns = currentTerminalColumns();\n\tconst availableRows = estimateAvailableWidgetRows();\n\n\tif (hasMatchingSession && widgetLayoutSession?.tier === \"single-line\") {\n\t\treturn buildSingleLineWidgetLines(jobs, theme, width);\n\t}\n\n\tif (hasMatchingSession && widgetLayoutSession?.tier === \"progressive\" && widgetLayoutSession.lockedRows !== undefined) {\n\t\tconst rendered = buildProgressiveWidgetLines(jobs, theme, width, widgetLayoutSession.lockedRows, widgetLayoutSession.visibleJobKeys);\n\t\twidgetLayoutSession.visibleJobKeys = rendered.visibleJobKeys;\n\t\treturn rendered.lines;\n\t}\n\n\tif (lines.length <= availableRows) {\n\t\twidgetLayoutSession = { expanded, rows, columns, tier: \"full\", visibleJobKeys: [] };\n\t\treturn fitWidgetLineBudget(lines, theme, width, false);\n\t}\n\n\tif (availableRows <= 2) {\n\t\twidgetLayoutSession = { expanded, rows, columns, tier: \"single-line\", visibleJobKeys: [] };\n\t\treturn buildSingleLineWidgetLines(jobs, theme, width);\n\t}\n\n\tconst lockedRows = Math.min(availableRows, collapsedWidgetLineBudget(rows));\n\tconst rendered = buildProgressiveWidgetLines(jobs, theme, width, lockedRows, []);\n\twidgetLayoutSession = { expanded, rows, columns, tier: \"progressive\", lockedRows, visibleJobKeys: rendered.visibleJobKeys };\n\treturn rendered.lines;\n}\n\nfunction buildWidgetComponent(jobs: AsyncJobState[], expanded: boolean): (_tui: unknown, theme: Theme) => Component {\n\treturn (_tui, theme) => {\n\t\tconst width = getTermWidth();\n\t\tconst lines = expanded\n\t\t\t? buildWidgetLines(jobs, theme, width, true)\n\t\t\t: jobs.length === 1\n\t\t\t\t? compactSingleWidgetLines(jobs[0]!, theme, width)\n\t\t\t\t: buildWidgetLines(jobs, theme, width, false);\n\t\tconst container = new Container();\n\t\tfor (const line of fitAdaptiveWidgetLines(jobs, lines, theme, width, expanded)) container.addChild(new Text(line, 1, 0));\n\t\treturn container;\n\t};\n}\n\nexport function buildWidgetLines(jobs: AsyncJobState[], theme: Theme, width = getTermWidth(), expanded = false): string[] {\n\tif (jobs.length === 0) return [];\n\tif (jobs.length === 1) return buildSingleWidgetLines(jobs[0]!, theme, width, expanded);\n\tconst running = jobs.filter((job) => job.status === \"running\");\n\tconst queued = jobs.filter((job) => job.status === \"queued\");\n\tconst finished = jobs.filter((job) => job.status !== \"running\" && job.status !== \"queued\");\n\n\tconst lines: string[] = [];\n\tconst hasActive = running.length > 0 || queued.length > 0;\n\tconst headerGlyph = running.length > 0 ? runningGlyph(widgetJobsRunningSeed(running)) : hasActive ? \"●\" : \"○\";\n\tlines.push(truncLine(`${theme.fg(hasActive ? \"accent\" : \"dim\", headerGlyph)} ${theme.fg(hasActive ? \"accent\" : \"dim\", \"Async agents\")} ${theme.fg(\"dim\", \"· background\")}`, width));\n\n\tconst items: string[][] = [];\n\tlet hiddenRunning = 0;\n\tlet hiddenFinished = 0;\n\tlet queuedSummaryShown = false;\n\tlet slots = MAX_WIDGET_JOBS;\n\n\tfor (const job of running) {\n\t\tif (slots <= 0) { hiddenRunning++; continue; }\n\t\tconst stats = widgetStats(job, theme);\n\t\titems.push([\n\t\t\t`${widgetStatusGlyph(job, theme)} ${themeBold(theme, widgetJobName(job))}${stats ? ` ${theme.fg(\"dim\", \"·\")} ${stats}` : \"\"}`,\n\t\t\t` ${theme.fg(\"dim\", `⎿ ${widgetActivity(job)}`)}`,\n\t\t\t...widgetParallelAgentDetails(job, theme, expanded, width),\n\t\t]);\n\t\tslots--;\n\t}\n\n\tif (queued.length > 0 && slots > 0) {\n\t\titems.push([`${theme.fg(\"muted\", \"◦\")} ${theme.fg(\"dim\", `${queued.length} queued`)}`]);\n\t\tqueuedSummaryShown = true;\n\t\tslots--;\n\t}\n\n\tfor (const job of finished) {\n\t\tif (slots <= 0) { hiddenFinished++; continue; }\n\t\tconst stats = widgetStats(job, theme);\n\t\titems.push([\n\t\t\t`${widgetStatusGlyph(job, theme)} ${themeBold(theme, widgetJobName(job))}${stats ? ` ${theme.fg(\"dim\", \"·\")} ${stats}` : \"\"}`,\n\t\t\t` ${theme.fg(\"dim\", `⎿ ${widgetActivity(job)}`)}`,\n\t\t\t...widgetParallelAgentDetails(job, theme, expanded, width),\n\t\t]);\n\t\tslots--;\n\t}\n\n\tconst hiddenQueued = queued.length > 0 && !queuedSummaryShown ? queued.length : 0;\n\tconst hiddenTotal = hiddenRunning + hiddenFinished + hiddenQueued;\n\tif (hiddenTotal > 0) {\n\t\tconst parts: string[] = [];\n\t\tif (hiddenRunning > 0) parts.push(`${hiddenRunning} running`);\n\t\tif (hiddenQueued > 0) parts.push(`${hiddenQueued} queued`);\n\t\tif (hiddenFinished > 0) parts.push(`${hiddenFinished} finished`);\n\t\titems.push([theme.fg(\"dim\", `+${hiddenTotal} more (${parts.join(\", \")})`)]);\n\t}\n\n\tfor (let i = 0; i < items.length; i++) {\n\t\tconst item = items[i]!;\n\t\tconst last = i === items.length - 1;\n\t\tconst branch = last ? \"└─\" : \"├─\";\n\t\tconst continuation = last ? \" \" : \"│ \";\n\t\tlines.push(truncLine(`${theme.fg(\"dim\", branch)} ${item[0]}`, width));\n\t\tfor (const detail of item.slice(1)) {\n\t\t\tlines.push(truncLine(`${theme.fg(\"dim\", continuation)} ${detail}`, width));\n\t\t}\n\t}\n\n\treturn lines;\n}\n\n/**\n * Render the async jobs widget\n */\nexport function renderWidget(ctx: ExtensionContext, jobs: AsyncJobState[]): void {\n\tif (jobs.length === 0) {\n\t\tresetWidgetLayoutSession();\n\t\tif (ctx.hasUI) ctx.ui.setWidget(WIDGET_KEY, undefined);\n\t\treturn;\n\t}\n\tif (!ctx.hasUI) return;\n\tctx.ui.setWidget(WIDGET_KEY, buildWidgetComponent(jobs, ctx.ui.getToolsExpanded?.() ?? false));\n}\n\nfunction renderSingleCompact(d: Details, r: Details[\"results\"][number], theme: Theme, frame?: number): Component {\n\tconst output = r.truncation?.text || getSingleResultOutput(r);\n\tconst progress = r.progress || r.progressSummary;\n\tconst isRunning = r.progress?.status === \"running\";\n\tconst contextBadge = d.context === \"fork\" ? theme.fg(\"warning\", \" [fork]\") : \"\";\n\t// lunr: simplified collapsed row — glyph · task summary · agent type · runtime/tools/tokens stats.\n\tconst stats = formatProgressStats(theme, progress);\n\tconst c = new Container();\n\tconst width = getTermWidth() - 4;\n\t// lunr: row line is a per-frame template so the running glyph animates in place (see subagentAnimSink).\n\tconst lead = compactRowLead({ task: r.task, model: r.model ?? progress?.model });\n\tc.addChild(animatedLine((f) => truncLine(`${resultGlyph(r, output, theme, isRunning, undefined, f)} ${lead} ${theme.fg(\"dim\", \"·\")} ${themeBold(theme, r.agent)}${contextBadge}${stats ? ` ${theme.fg(\"dim\", \"·\")} ${stats}` : \"\"}`, width), frame, isRunning));\n\n\tif (isRunning && r.progress) {\n\t\tc.addChild(new Text(formatCompactStatsHangLine(r.progress, width, (s) => theme.fg(\"dim\", s)), 0, 0));\n\t\treturn c;\n\t}\n\n\tc.addChild(new Text(truncLine(theme.fg(\"dim\", ` ⎿ ${resultStatusLine(r, output)}`), width), 0, 0));\n\tconst preview = firstOutputLine(output);\n\tif (preview && r.exitCode === 0 && !hasEmptyTextOutputWithoutOutputTarget(r.task, output)) {\n\t\tc.addChild(new Text(truncLine(theme.fg(\"dim\", ` ${preview}`), width), 0, 0));\n\t}\n\tif (r.sessionFile) c.addChild(new Text(truncLine(theme.fg(\"dim\", ` session: ${shortenPath(r.sessionFile)}`), width), 0, 0));\n\treturn c;\n}\n\nfunction renderMultiCompact(d: Details, theme: Theme, frame?: number): Component {\n\tconst hasRunning = d.progress?.some((p) => p.status === \"running\")\n\t\t|| d.results.some((r) => r.progress?.status === \"running\")\n\t\t|| workflowGraphHasStatus(d, [\"running\"]);\n\tconst stopped = d.results.some((r) => r.stopped && r.progress?.status !== \"running\")\n\t\t|| workflowGraphHasStatus(d, [\"stopped\"]);\n\tconst failed = d.results.some((r) => !r.stopped && r.exitCode !== 0 && r.progress?.status !== \"running\")\n\t\t|| workflowGraphHasStatus(d, [\"failed\"]);\n\tconst paused = d.results.some((r) => (r.interrupted || r.detached) && r.progress?.status !== \"running\")\n\t\t|| workflowGraphHasStatus(d, [\"paused\", \"detached\"]);\n\tlet totalSummary = d.progressSummary;\n\tif (!totalSummary) {\n\t\tlet sawProgress = false;\n\t\tconst summary = { toolCount: 0, tokens: 0, durationMs: 0 };\n\t\tfor (const r of d.results) {\n\t\t\tconst prog = r.progress || r.progressSummary;\n\t\t\tif (!prog) continue;\n\t\t\tsawProgress = true;\n\t\t\tsummary.toolCount += prog.toolCount;\n\t\t\tsummary.tokens += prog.tokens;\n\t\t\tsummary.durationMs = d.mode === \"chain\" ? summary.durationMs + prog.durationMs : Math.max(summary.durationMs, prog.durationMs);\n\t\t}\n\t\tif (sawProgress) totalSummary = summary;\n\t}\n\tconst multiLabel = buildMultiProgressLabel(d, hasRunning);\n\tconst itemTitle = multiLabel.itemTitle;\n\tconst stats = statJoin(theme, [multiLabel.headerLabel, formatProgressStats(theme, totalSummary), formatTotalCostStat(d.totalCost)]);\n\tconst glyph = (f: number | undefined) => hasRunning\n\t\t? theme.fg(\"accent\", runningGlyph(f !== undefined ? (runningSeed(progressRunningSeed(totalSummary), d.currentStepIndex) ?? 0) + f : runningSeed(progressRunningSeed(totalSummary), d.currentStepIndex)))\n\t\t: stopped\n\t\t\t? theme.fg(\"warning\", \"■\")\n\t\t\t: failed\n\t\t\t\t? theme.fg(\"error\", \"✗\")\n\t\t\t: paused\n\t\t\t\t? theme.fg(\"warning\", \"■\")\n\t\t\t\t: theme.fg(\"success\", \"✓\");\n\tconst contextBadge = d.context === \"fork\" ? theme.fg(\"warning\", \" [fork]\") : \"\";\n\tconst c = new Container();\n\tconst width = getTermWidth() - 4;\n\t// lunr: header line is a per-frame template so the running glyph animates in place (see subagentAnimSink).\n\tc.addChild(animatedLine((f) => truncLine(`${glyph(f)} ${theme.fg(\"toolTitle\", theme.bold(d.mode))}${contextBadge}${stats ? ` ${theme.fg(\"dim\", \"·\")} ${stats}` : \"\"}`, width), frame, hasRunning));\n\n\tconst useResultsDirectly = multiLabel.hasParallelInChain || !d.chainAgents?.length;\n\tconst displayStart = multiLabel.showActiveGroupOnly ? multiLabel.groupStartIndex : 0;\n\tconst displayEnd = multiLabel.showActiveGroupOnly ? multiLabel.groupEndIndex : (useResultsDirectly ? d.results.length : d.chainAgents!.length);\n\tconst chainEntries = buildChainRenderEntries(d, multiLabel);\n\tconst renderEntries = chainEntries ?? Array.from({ length: displayEnd - displayStart }, (_, offset): ChainRenderEntry => {\n\t\tconst i = displayStart + offset;\n\t\tconst r = d.results[i];\n\t\tconst fallbackLabel = itemTitle.toLowerCase();\n\t\tconst rowNumber = multiLabel.showActiveGroupOnly ? (i - multiLabel.groupStartIndex + 1) : (i + 1);\n\t\treturn { kind: \"result\", resultIndex: i, rowNumber, agentName: useResultsDirectly ? (r?.agent || `${fallbackLabel}-${rowNumber}`) : (d.chainAgents![i] || r?.agent || `${fallbackLabel}-${rowNumber}`) };\n\t});\n\tfor (const entry of renderEntries) {\n\t\tif (entry.kind === \"placeholder\") {\n\t\t\tconst glyph = widgetStepGlyph(entry.status as AsyncJobStep[\"status\"], theme);\n\t\t\tconst statusLabel = widgetStepStatus(entry.status as AsyncJobStep[\"status\"], theme);\n\t\t\tc.addChild(new Text(truncLine(` ${glyph} ${entry.stepLabel}: ${themeBold(theme, entry.agentName)} ${theme.fg(\"dim\", \"·\")} ${statusLabel}`, width), 0, 0));\n\t\t\tif (entry.error) c.addChild(new Text(truncLine(theme.fg(\"error\", ` ⎿ Error: ${entry.error}`), width), 0, 0));\n\t\t\tcontinue;\n\t\t}\n\t\tconst i = entry.resultIndex;\n\t\tconst r = d.results[i];\n\t\tconst rowNumber = entry.rowNumber;\n\t\tconst agentName = entry.agentName;\n\t\tif (!r) {\n\t\t\tconst pendingLabel = chainEntries ? resultRowLabel(d, multiLabel, i, rowNumber) : `${itemTitle} ${rowNumber}`;\n\t\t\tc.addChild(new Text(truncLine(theme.fg(\"dim\", ` ◦ ${pendingLabel}: ${agentName} · pending`), width), 0, 0));\n\t\t\tcontinue;\n\t\t}\n\t\tconst output = getSingleResultOutput(r);\n\t\tconst progressFromArray = d.progress?.find((p) => p.index === i) || d.progress?.find((p) => p.agent === r.agent && p.status === \"running\");\n\t\tconst rProg = r.progress || progressFromArray || r.progressSummary;\n\t\tconst rRunning = rProg && \"status\" in rProg && rProg.status === \"running\";\n\t\tconst rPending = rProg && \"status\" in rProg && rProg.status === \"pending\";\n\t\tconst stepStats = formatProgressStats(theme, rProg);\n\t\tconst pendingLabel = rPending ? ` ${theme.fg(\"dim\", \"· pending\")}` : \"\";\n\t\t// lunr: simplified collapsed row — glyph · task summary · agent type · runtime/tools/tokens stats.\n\t\t// lunr: row line is a per-frame template so the running glyph animates in place (see subagentAnimSink).\n\t\tconst lead = compactRowLead({ task: r.task, model: r.model ?? (rProg && \"model\" in rProg ? rProg.model : undefined) });\n\t\tc.addChild(animatedLine((f) => {\n\t\t\tconst glyph = rPending ? theme.fg(\"dim\", \"◦\") : resultGlyph(r, output, theme, rRunning, progressRunningSeed(rProg), f);\n\t\t\treturn truncLine(` ${glyph} ${lead} ${theme.fg(\"dim\", \"·\")} ${themeBold(theme, agentName)}${stepStats ? ` ${theme.fg(\"dim\", \"·\")} ${stepStats}` : \"\"}${pendingLabel}`, width);\n\t\t}, frame, !!rRunning));\n\t\tif (rRunning && rProg && \"status\" in rProg) {\n\t\t\tc.addChild(new Text(formatCompactStatsHangLine(\n\t\t\t\trProg,\n\t\t\t\twidth,\n\t\t\t\t(s) => theme.fg(\"dim\", s),\n\t\t\t\t\" ⎿ \",\n\t\t\t), 0, 0));\n\t\t} else if (!rPending && (r.exitCode !== 0 || r.interrupted || r.detached || hasEmptyTextOutputWithoutOutputTarget(r.task, output))) {\n\t\t\tc.addChild(new Text(truncLine(theme.fg(r.exitCode !== 0 ? \"error\" : \"dim\", ` ⎿ ${resultStatusLine(r, output)}`), width), 0, 0));\n\t\t}\n\t}\n\treturn c;\n}\n\n/**\n * Render a subagent result\n */\nexport function renderSubagentResult(\n\tresult: AgentToolResult<Details>,\n\toptions: { expanded: boolean },\n\ttheme: Theme,\n\tframe?: number,\n): Component {\n\tconst d = result.details;\n\tif (!d || !d.results.length) {\n\t\tconst t = result.content[0];\n\t\tconst text = t?.type === \"text\" ? t.text : \"(no output)\";\n\t\tconst contextPrefix = d?.context === \"fork\" ? `${theme.fg(\"warning\", \"[fork]\")} ` : \"\";\n\t\tconst width = getTermWidth() - 4;\n\t\tif (!text.includes(\"\\n\")) return new Text(truncLine(`${contextPrefix}${text}`, width), 0, 0);\n\t\tconst c = new Container();\n\t\tconst wrapped = wrapPlainText(`${contextPrefix}${text}`, width);\n\t\tfor (const line of wrapped) c.addChild(new Text(line, 0, 0));\n\t\treturn c;\n\t}\n\n\tconst expanded = options.expanded;\n\tconst mdTheme = getMarkdownTheme();\n\n\tif (d.mode === \"single\" && d.results.length === 1) {\n\t\tconst r = d.results[0];\n\t\tif (!expanded) return renderSingleCompact(d, r, theme, frame);\n\t\tconst isRunning = r.progress?.status === \"running\";\n\t\tconst icon = isRunning\n\t\t\t? theme.fg(\"warning\", \"running\")\n\t\t\t: r.detached\n\t\t\t\t? theme.fg(\"warning\", \"detached\")\n\t\t\t\t: r.exitCode === 0\n\t\t\t\t\t? theme.fg(\"success\", \"ok\")\n\t\t\t\t\t: theme.fg(\"error\", \"failed\");\n\t\tconst contextBadge = d.context === \"fork\" ? theme.fg(\"warning\", \" [fork]\") : \"\";\n\t\tconst output = r.truncation?.text || getSingleResultOutput(r);\n\n\t\tconst progressInfo = isRunning && r.progress\n\t\t\t? ` | ${r.progress.toolCount} tools, ${formatTokens(r.progress.tokens)} tok, ${formatDuration(r.progress.durationMs)}`\n\t\t\t: r.progressSummary\n\t\t\t\t? ` | ${r.progressSummary.toolCount} tools, ${formatTokens(r.progressSummary.tokens)} tok, ${formatDuration(r.progressSummary.durationMs)}`\n\t\t\t\t: \"\";\n\n\t\tconst w = getTermWidth() - 4;\n\t\tconst fit = (text: string) => expanded ? text : truncLine(text, w);\n\t\tconst toolCallLines = getToolCallLines(r, expanded);\n\t\tconst c = new Container();\n\t\tc.addChild(new Text(fit(`${icon} ${theme.fg(\"toolTitle\", theme.bold(r.agent))}${contextBadge}${progressInfo}`), 0, 0));\n\t\tc.addChild(new Spacer(1));\n\t\tconst taskMaxLen = Math.max(20, w - 8);\n\t\tconst taskPreview = expanded || r.task.length <= taskMaxLen\n\t\t\t? r.task\n\t\t\t: `${r.task.slice(0, taskMaxLen)}...`;\n\t\tc.addChild(\n\t\t\tnew Text(fit(theme.fg(\"dim\", `Task: ${taskPreview}`)), 0, 0),\n\t\t);\n\t\tc.addChild(new Spacer(1));\n\n\t\tif (isRunning && r.progress) {\n\t\t\tconst progressSnapshotNow = snapshotNowForProgress(r.progress);\n\t\t\tconst toolLine = formatCurrentToolLine(r.progress, w, expanded, progressSnapshotNow);\n\t\t\tif (toolLine) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"warning\", `> ${toolLine}`)), 0, 0));\n\t\t\t}\n\t\t\tconst liveStatusLine = buildLiveStatusLine(r.progress, progressSnapshotNow);\n\t\t\tif (liveStatusLine) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"accent\", liveStatusLine)), 0, 0));\n\t\t\t}\n\t\t\tc.addChild(new Text(fit(theme.fg(\"accent\", liveDetailHintText())), 0, 0));\n\t\t\tif (r.artifactPaths) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", `Artifacts: ${shortenPath(r.artifactPaths.outputPath)}`)), 0, 0));\n\t\t\t}\n\t\t\tif (r.progress.recentTools?.length) {\n\t\t\t\tfor (const t of r.progress.recentTools.slice(-3)) {\n\t\t\t\t\tconst maxArgsLen = Math.max(40, w - 24);\n\t\t\t\t\tconst argsPreview = expanded || t.args.length <= maxArgsLen\n\t\t\t\t\t\t? t.args\n\t\t\t\t\t\t: `${t.args.slice(0, maxArgsLen)}...`;\n\t\t\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", `${t.tool}: ${argsPreview}`)), 0, 0));\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const line of (r.progress.recentOutput ?? []).slice(-5)) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` ${line}`)), 0, 0));\n\t\t\t}\n\t\t\tif (toolLine || liveStatusLine || r.progress.recentTools?.length || r.progress.recentOutput?.length || r.artifactPaths) {\n\t\t\t\tc.addChild(new Spacer(1));\n\t\t\t}\n\t\t}\n\n\t\tif (expanded) {\n\t\t\tfor (const line of toolCallLines) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"muted\", line)), 0, 0));\n\t\t\t}\n\t\t\tif (toolCallLines.length) c.addChild(new Spacer(1));\n\t\t}\n\n\t\tif (output) c.addChild(new Markdown(output, 0, 0, mdTheme));\n\t\tc.addChild(new Spacer(1));\n\t\tif (r.skills?.length) {\n\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", `Skills: ${r.skills.join(\", \")}`)), 0, 0));\n\t\t}\n\t\tif (r.skillsWarning) {\n\t\t\tc.addChild(new Text(fit(theme.fg(\"warning\", `Warning: ${r.skillsWarning}`)), 0, 0));\n\t\t}\n\t\tif (r.attemptedModels && r.attemptedModels.length > 1) {\n\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", `Fallbacks: ${r.attemptedModels.join(\" → \")}`)), 0, 0));\n\t\t}\n\t\tc.addChild(new Text(fit(theme.fg(\"dim\", formatUsage(r.usage, r.model))), 0, 0));\n\t\tif (r.sessionFile) {\n\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", `Session: ${shortenPath(r.sessionFile)}`)), 0, 0));\n\t\t}\n\n\t\tif (!isRunning && r.artifactPaths) {\n\t\t\tc.addChild(new Spacer(1));\n\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", `Artifacts: ${shortenPath(r.artifactPaths.outputPath)}`)), 0, 0));\n\t\t}\n\t\treturn c;\n\t}\n\n\tif (!expanded) return renderMultiCompact(d, theme, frame);\n\n\tconst hasRunning = d.progress?.some((p) => p.status === \"running\") \n\t\t|| d.results.some((r) => r.progress?.status === \"running\")\n\t\t|| workflowGraphHasStatus(d, [\"running\"]);\n\tconst ok = d.results.filter((r) => r.progress?.status === \"completed\" || (r.exitCode === 0 && r.progress?.status !== \"running\")).length;\n\tconst hasEmptyWithoutTarget = d.results.some((r) =>\n\t\tr.exitCode === 0\n\t\t&& r.progress?.status !== \"running\"\n\t\t&& hasEmptyTextOutputWithoutOutputTarget(r.task, getSingleResultOutput(r)),\n\t);\n\tconst hasWorkflowFailure = workflowGraphHasStatus(d, [\"failed\"]);\n\tconst hasWorkflowStop = d.results.some((r) => r.stopped && r.progress?.status !== \"running\") || workflowGraphHasStatus(d, [\"stopped\"]);\n\tconst hasWorkflowPause = workflowGraphHasStatus(d, [\"paused\", \"detached\"]);\n\tconst icon = hasRunning\n\t\t? theme.fg(\"warning\", \"running\")\n\t\t: hasEmptyWithoutTarget\n\t\t\t? theme.fg(\"warning\", \"warning\")\n\t\t\t: hasWorkflowFailure\n\t\t\t\t? theme.fg(\"error\", \"failed\")\n\t\t\t\t: hasWorkflowStop\n\t\t\t\t\t? theme.fg(\"warning\", \"stopped\")\n\t\t\t\t\t: hasWorkflowPause\n\t\t\t\t\t\t? theme.fg(\"warning\", \"paused\")\n\t\t\t\t\t: ok === d.results.length\n\t\t\t\t\t\t? theme.fg(\"success\", \"ok\")\n\t\t\t\t\t\t: theme.fg(\"error\", \"failed\");\n\n\tconst totalSummary =\n\t\td.progressSummary ||\n\t\td.results.reduce(\n\t\t\t(acc, r) => {\n\t\t\t\tconst prog = r.progress || r.progressSummary;\n\t\t\t\tif (prog) {\n\t\t\t\t\tacc.toolCount += prog.toolCount;\n\t\t\t\t\tacc.tokens += prog.tokens;\n\t\t\t\t\tacc.durationMs =\n\t\t\t\t\t\td.mode === \"chain\"\n\t\t\t\t\t\t\t? acc.durationMs + prog.durationMs\n\t\t\t\t\t\t\t: Math.max(acc.durationMs, prog.durationMs);\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{ toolCount: 0, tokens: 0, durationMs: 0 },\n\t\t);\n\n\tconst summaryParts = [\n\t\ttotalSummary.toolCount || totalSummary.tokens\n\t\t\t? `${totalSummary.toolCount} tools, ${formatTokens(totalSummary.tokens)} tok, ${formatDuration(totalSummary.durationMs)}`\n\t\t\t: \"\",\n\t\tformatTotalCostStat(d.totalCost),\n\t].filter(Boolean);\n\tconst summaryStr = summaryParts.length ? ` | ${summaryParts.join(\", \")}` : \"\";\n\n\tconst modeLabel = d.mode;\n\tconst contextBadge = d.context === \"fork\" ? theme.fg(\"warning\", \" [fork]\") : \"\";\n\tconst multiLabel = buildMultiProgressLabel(d, hasRunning);\n\tconst itemTitle = multiLabel.itemTitle;\n\t\n\tconst chainVis = d.chainAgents?.length && !multiLabel.hasParallelInChain\n\t\t? d.chainAgents\n\t\t\t\t.map((agent, i) => {\n\t\t\t\t\tconst result = d.results[i];\n\t\t\t\t\tconst isFailed = result && result.exitCode !== 0 && result.progress?.status !== \"running\";\n\t\t\t\t\tconst isComplete = result && result.exitCode === 0 && result.progress?.status !== \"running\";\n\t\t\t\t\tconst isEmptyWithoutTarget = Boolean(result)\n\t\t\t\t\t\t&& Boolean(isComplete)\n\t\t\t\t\t\t&& hasEmptyTextOutputWithoutOutputTarget(result.task, getSingleResultOutput(result));\n\t\t\t\t\tconst isCurrent = i === (d.currentStepIndex ?? d.results.length);\n\t\t\t\t\tconst stepIcon = isFailed\n\t\t\t\t\t\t? theme.fg(\"error\", \"failed\")\n\t\t\t\t\t\t: isEmptyWithoutTarget\n\t\t\t\t\t\t\t? theme.fg(\"warning\", \"warning\")\n\t\t\t\t\t\t\t: isComplete\n\t\t\t\t\t\t\t\t? theme.fg(\"success\", \"done\")\n\t\t\t\t\t\t\t\t: isCurrent && hasRunning\n\t\t\t\t\t\t\t\t\t? theme.fg(\"warning\", \"running\")\n\t\t\t\t\t\t\t\t\t: theme.fg(\"dim\", \"pending\");\n\t\t\t\t\treturn `${stepIcon} ${agent}`;\n\t\t\t\t})\n\t\t\t\t.join(theme.fg(\"dim\", \" → \"))\n\t\t: null;\n\n\tconst w = getTermWidth() - 4;\n\tconst fit = (text: string) => expanded ? text : truncLine(text, w);\n\tconst c = new Container();\n\tc.addChild(\n\t\tnew Text(\n\t\t\tfit(`${icon} ${theme.fg(\"toolTitle\", theme.bold(modeLabel))}${contextBadge} · ${multiLabel.headerLabel}${summaryStr}`),\n\t\t\t0,\n\t\t\t0,\n\t\t),\n\t);\n\tif (chainVis) {\n\t\tc.addChild(new Text(fit(` ${chainVis}`), 0, 0));\n\t}\n\n\tconst useResultsDirectly = multiLabel.hasParallelInChain || !d.chainAgents?.length;\n\tconst displayStart = multiLabel.showActiveGroupOnly ? multiLabel.groupStartIndex : 0;\n\tconst displayEnd = multiLabel.showActiveGroupOnly ? multiLabel.groupEndIndex : (useResultsDirectly ? d.results.length : d.chainAgents!.length);\n\tconst chainEntries = buildChainRenderEntries(d, multiLabel);\n\tconst renderEntries = chainEntries ?? Array.from({ length: displayEnd - displayStart }, (_, offset): ChainRenderEntry => {\n\t\tconst i = displayStart + offset;\n\t\tconst r = d.results[i];\n\t\tconst rowNumber = multiLabel.showActiveGroupOnly ? (i - multiLabel.groupStartIndex + 1) : (i + 1);\n\t\treturn { kind: \"result\", resultIndex: i, rowNumber, agentName: useResultsDirectly ? (r?.agent || `step-${rowNumber}`) : (d.chainAgents![i] || r?.agent || `step-${rowNumber}`) };\n\t});\n\n\tc.addChild(new Spacer(1));\n\n\tfor (const entry of renderEntries) {\n\t\tif (entry.kind === \"placeholder\") {\n\t\t\tconst statusLabel = widgetStepStatus(entry.status as AsyncJobStep[\"status\"], theme);\n\t\t\tc.addChild(new Text(fit(` ${statusLabel} ${entry.stepLabel}: ${theme.bold(entry.agentName)}`), 0, 0));\n\t\t\tc.addChild(new Text(theme.fg(entry.status === \"failed\" ? \"error\" : \"dim\", ` status: ${entry.status}`), 0, 0));\n\t\t\tif (entry.error) c.addChild(new Text(theme.fg(\"error\", ` error: ${entry.error}`), 0, 0));\n\t\t\tc.addChild(new Spacer(1));\n\t\t\tcontinue;\n\t\t}\n\t\tconst i = entry.resultIndex;\n\t\tconst r = d.results[i];\n\t\tconst rowNumber = entry.rowNumber;\n\t\tconst agentName = entry.agentName;\n\n\t\tif (!r) {\n\t\t\tconst pendingLabel = chainEntries ? resultRowLabel(d, multiLabel, i, rowNumber) : `${itemTitle} ${rowNumber}`;\n\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` ${pendingLabel}: ${agentName}`)), 0, 0));\n\t\t\tc.addChild(new Text(theme.fg(\"dim\", ` status: pending`), 0, 0));\n\t\t\tc.addChild(new Spacer(1));\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst progressFromArray = d.progress?.find((p) => p.index === i) \n\t\t\t|| d.progress?.find((p) => p.agent === r.agent && p.status === \"running\");\n\t\tconst rProg = r.progress || progressFromArray || r.progressSummary;\n\t\tconst rRunning = rProg?.status === \"running\";\n\t\tconst stepNumber = typeof rProg?.index === \"number\" ? rProg.index + 1 : i + 1;\n\n\t\tconst resultOutput = getSingleResultOutput(r);\n\t\tconst statusIcon = rRunning\n\t\t\t? theme.fg(\"warning\", \"running\")\n\t\t\t: r.exitCode !== 0\n\t\t\t\t? theme.fg(\"error\", \"failed\")\n\t\t\t\t: hasEmptyTextOutputWithoutOutputTarget(r.task, resultOutput)\n\t\t\t\t\t? theme.fg(\"warning\", \"warning\")\n\t\t\t\t\t: theme.fg(\"success\", \"done\");\n\t\tconst stats = rProg ? ` | ${rProg.toolCount} tools, ${formatDuration(rProg.durationMs)}` : \"\";\n\t\tconst modelDisplay = modelThinkingBadge(theme, r.model);\n\t\tconst stepLabel = resultRowLabel(d, multiLabel, i, stepNumber);\n\t\tconst stepHeader = rRunning\n\t\t\t? `${statusIcon} ${stepLabel}: ${theme.bold(theme.fg(\"warning\", r.agent))}${modelDisplay}${stats}`\n\t\t\t: `${statusIcon} ${stepLabel}: ${theme.bold(r.agent)}${modelDisplay}${stats}`;\n\t\tconst toolCallLines = getToolCallLines(r, expanded);\n\t\tc.addChild(new Text(fit(stepHeader), 0, 0));\n\n\t\tconst taskMaxLen = Math.max(20, w - 12);\n\t\tconst taskPreview = expanded || r.task.length <= taskMaxLen\n\t\t\t? r.task\n\t\t\t: `${r.task.slice(0, taskMaxLen)}...`;\n\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` task: ${taskPreview}`)), 0, 0));\n\n\t\tif (r.skills?.length) {\n\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` skills: ${r.skills.join(\", \")}`)), 0, 0));\n\t\t}\n\t\tif (r.skillsWarning) {\n\t\t\tc.addChild(new Text(fit(theme.fg(\"warning\", ` Warning: ${r.skillsWarning}`)), 0, 0));\n\t\t}\n\t\tif (r.attemptedModels && r.attemptedModels.length > 1) {\n\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` fallbacks: ${r.attemptedModels.join(\" → \")}`)), 0, 0));\n\t\t}\n\n\t\tif (rRunning && rProg) {\n\t\t\tif (rProg.skills?.length) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"accent\", ` skills: ${rProg.skills.join(\", \")}`)), 0, 0));\n\t\t\t}\n\t\t\tconst progressSnapshotNow = snapshotNowForProgress(rProg);\n\t\t\tconst toolLine = formatCurrentToolLine(rProg, w, expanded, progressSnapshotNow);\n\t\t\tif (toolLine) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"warning\", ` > ${toolLine}`)), 0, 0));\n\t\t\t}\n\t\t\tconst liveStatusLine = buildLiveStatusLine(rProg, progressSnapshotNow);\n\t\t\tif (liveStatusLine) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"accent\", ` ${liveStatusLine}`)), 0, 0));\n\t\t\t}\n\t\t\tc.addChild(new Text(fit(theme.fg(\"accent\", ` ${liveDetailHintText()}`)), 0, 0));\n\t\t\tif (r.artifactPaths) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` artifacts: ${shortenPath(r.artifactPaths.outputPath)}`)), 0, 0));\n\t\t\t}\n\t\t\tif (rProg.recentTools?.length) {\n\t\t\t\tfor (const t of rProg.recentTools.slice(-3)) {\n\t\t\t\t\tconst maxArgsLen = Math.max(40, w - 30);\n\t\t\t\t\tconst argsPreview = expanded || t.args.length <= maxArgsLen\n\t\t\t\t\t\t? t.args\n\t\t\t\t\t\t: `${t.args.slice(0, maxArgsLen)}...`;\n\t\t\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` ${t.tool}: ${argsPreview}`)), 0, 0));\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst recentLines = (rProg.recentOutput ?? []).slice(-5);\n\t\t\tfor (const line of recentLines) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` ${line}`)), 0, 0));\n\t\t\t}\n\t\t}\n\n\t\tif (!rRunning && r.artifactPaths) {\n\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` artifacts: ${shortenPath(r.artifactPaths.outputPath)}`)), 0, 0));\n\t\t}\n\n\t\tif (expanded && !rRunning) {\n\t\t\tfor (const line of toolCallLines) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"muted\", ` ${line}`)), 0, 0));\n\t\t\t}\n\t\t\tif (toolCallLines.length) c.addChild(new Spacer(1));\n\t\t}\n\n\t\tc.addChild(new Spacer(1));\n\t}\n\n\tif (d.artifacts) {\n\t\tc.addChild(new Spacer(1));\n\t\tc.addChild(new Text(fit(theme.fg(\"dim\", `Artifacts dir: ${shortenPath(d.artifacts.dir)}`)), 0, 0));\n\t}\n\treturn c;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/tui/render.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Rendering functions for subagent results\n */\n\nimport type { AgentToolResult } from \"@ashx-j/lunr-agent\";\nimport { getMarkdownTheme, keyText, type ExtensionContext } from \"@ashx-j/lunr\";\nimport { Container, Markdown, Spacer, Text, visibleWidth, type Component } from \"@ashx-j/lunr-tui\";\nimport {\n\ttype AgentProgress,\n\ttype AsyncJobState,\n\ttype AsyncJobStep,\n\ttype AsyncParallelGroupStatus,\n\ttype Details,\n\ttype NestedRunSummary,\n\ttype NestedStepSummary,\n\ttype WorkflowNodeStatus,\n\tMAX_WIDGET_JOBS,\n\tWIDGET_KEY,\n} from \"../shared/types.ts\";\nimport { formatTokens, formatUsage, formatDuration, formatModelThinking, formatToolCall, shortenPath } from \"../shared/formatters.ts\";\nimport { childRowLabel } from \"../shared/types.ts\";\nimport { sanitizeChildDescription } from \"../shared/child-spec.ts\";\nimport { getDisplayItems, getSingleResultOutput } from \"../shared/utils.ts\";\nimport { flatToLogicalStepIndex } from \"../runs/background/parallel-groups.ts\";\nimport { formatNestedAggregate } from \"../runs/shared/nested-render.ts\";\nimport { aggregateStepStatus, formatActivityLabel, formatAgentRunningLabel, formatParallelOutcome } from \"../shared/status-format.ts\";\n\ntype Theme = ExtensionContext[\"ui\"][\"theme\"];\n\nfunction liveDetailKeyText(): string {\n\treturn keyText(\"app.tools.expand\");\n}\n\nfunction liveDetailHintText(): string {\n\treturn `Press ${liveDetailKeyText()} for live detail`;\n}\n\nfunction getTermWidth(): number {\n\treturn process.stdout.columns || 120;\n}\n\nconst segmenter = new Intl.Segmenter(undefined, { granularity: \"grapheme\" });\n\n/**\n * Truncate a line to maxWidth, preserving ANSI styling through the ellipsis.\n * \n * pi-tui's truncateToWidth adds \\x1b[0m before ellipsis which resets all styling,\n * causing background color bleed in the TUI. This implementation tracks active\n * ANSI styles and re-applies them before the ellipsis.\n * \n * Uses Intl.Segmenter for proper Unicode/emoji handling (not char-by-char).\n */\nfunction truncLine(text: string, maxWidth: number): string {\n\tif (visibleWidth(text) <= maxWidth) return text;\n\n\tconst targetWidth = maxWidth - 1;\n\tlet result = \"\";\n\tlet currentWidth = 0;\n\tlet activeStyles: string[] = [];\n\tlet i = 0;\n\n\twhile (i < text.length) {\n\t\tconst ansiMatch = text.slice(i).match(/^\\x1b\\[[0-9;]*m/);\n\t\tif (ansiMatch) {\n\t\t\tconst code = ansiMatch[0];\n\t\t\tresult += code;\n\n\t\t\tif (code === \"\\x1b[0m\" || code === \"\\x1b[m\") {\n\t\t\t\tactiveStyles = [];\n\t\t\t} else {\n\t\t\t\tactiveStyles.push(code);\n\t\t\t}\n\t\t\ti += code.length;\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet end = i;\n\t\twhile (end < text.length && !text.slice(end).match(/^\\x1b\\[[0-9;]*m/)) {\n\t\t\tend++;\n\t\t}\n\n\t\tconst textPortion = text.slice(i, end);\n\t\tfor (const seg of segmenter.segment(textPortion)) {\n\t\t\tconst grapheme = seg.segment;\n\t\t\tconst graphemeWidth = visibleWidth(grapheme);\n\n\t\t\tif (currentWidth + graphemeWidth > targetWidth) {\n\t\t\t\treturn result + activeStyles.join(\"\") + \"…\";\n\t\t\t}\n\n\t\t\tresult += grapheme;\n\t\t\tcurrentWidth += graphemeWidth;\n\t\t}\n\t\ti = end;\n\t}\n\n\treturn result + activeStyles.join(\"\") + \"…\";\n}\n\nfunction wrapPlainText(text: string, maxWidth: number): string[] {\n\tif (maxWidth <= 0) return [\"\"];\n\tconst lines: string[] = [];\n\tfor (const rawLine of text.split(\"\\n\")) {\n\t\tif (rawLine.length === 0) {\n\t\t\tlines.push(\"\");\n\t\t\tcontinue;\n\t\t}\n\t\tlet current = \"\";\n\t\tlet currentWidth = 0;\n\t\tfor (const seg of segmenter.segment(rawLine)) {\n\t\t\tconst grapheme = seg.segment;\n\t\t\tconst graphemeWidth = visibleWidth(grapheme);\n\t\t\tif (currentWidth > 0 && currentWidth + graphemeWidth > maxWidth) {\n\t\t\t\tlines.push(current);\n\t\t\t\tcurrent = grapheme;\n\t\t\t\tcurrentWidth = graphemeWidth;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcurrent += grapheme;\n\t\t\tcurrentWidth += graphemeWidth;\n\t\t}\n\t\tlines.push(current);\n\t}\n\treturn lines;\n}\n\nconst RUNNING_FRAMES = [\"⠋\", \"⠙\", \"⠹\", \"⠸\", \"⠼\", \"⠴\", \"⠦\", \"⠧\", \"⠇\", \"⠏\"];\nconst STATIC_RUNNING_GLYPH = \"●\";\n\ntype ProgressSeedSource = Partial<Pick<AgentProgress, \"index\" | \"toolCount\" | \"tokens\" | \"durationMs\" | \"lastActivityAt\" | \"currentToolStartedAt\" | \"turnCount\">>;\n\nfunction runningSeed(...values: Array<number | undefined>): number | undefined {\n\tlet seed: number | undefined;\n\tfor (const value of values) {\n\t\tif (value === undefined || !Number.isFinite(value)) continue;\n\t\tseed = (seed ?? 0) + Math.trunc(value);\n\t}\n\treturn seed;\n}\n\nfunction runningGlyph(seed?: number): string {\n\tif (seed === undefined) return STATIC_RUNNING_GLYPH;\n\treturn RUNNING_FRAMES[Math.abs(seed) % RUNNING_FRAMES.length]!;\n}\n\nfunction progressRunningSeed(progress: ProgressSeedSource | undefined): number | undefined {\n\tif (!progress) return undefined;\n\t// lunr: seed only the row identity. Tokens / duration / lastActivityAt\n\t// change on every thinking token and used to advance the glyph faster than the 80ms timer.\n\treturn runningSeed(progress.index);\n}\n\ninterface LegacyResultAnimationContext {\n\tstate: { subagentResultAnimationTimer?: ReturnType<typeof setInterval> };\n}\n\nexport function clearLegacyResultAnimationTimer(context: LegacyResultAnimationContext): void {\n\tconst timer = context.state.subagentResultAnimationTimer;\n\tif (!timer) return;\n\tclearInterval(timer);\n\tcontext.state.subagentResultAnimationTimer = undefined;\n}\n\n// lunr: animation sink — while `current` is set, running-glyph lines register a\n// per-frame template so the extension timer can rewrite just those Text nodes\n// (setText + requestRender) instead of rebuilding the whole result tree per frame.\nexport interface SubagentAnimatedLine {\n\ttext: Text;\n\tline: (frame: number) => string;\n}\nexport const subagentAnimSink: { current: SubagentAnimatedLine[] | null } = { current: null };\n\nfunction animatedLine(line: (frame: number) => string, frame: number | undefined, animate: boolean): Text {\n\tconst text = new Text(line(frame ?? 0), 0, 0);\n\tif (animate && frame !== undefined && subagentAnimSink.current) {\n\t\tsubagentAnimSink.current.push({ text, line });\n\t}\n\treturn text;\n}\n\nfunction extractOutputTarget(task: string): string | undefined {\n\tconst writeToMatch = task.match(/\\[Write to:\\s*([^\\]\\n]+)\\]/i);\n\tif (writeToMatch?.[1]?.trim()) return writeToMatch[1].trim();\n\tconst findingsMatch = task.match(/Write your findings to(?: exactly this path)?:\\s*([^\\r\\n]+)/i);\n\tif (findingsMatch?.[1]?.trim()) return findingsMatch[1].trim();\n\tconst outputMatch = task.match(/[Oo]utput(?:\\s+to)?\\s*:\\s*(\\S+)/i);\n\tif (outputMatch?.[1]?.trim()) return outputMatch[1].trim();\n\treturn undefined;\n}\n\nfunction hasEmptyTextOutputWithoutOutputTarget(task: string, output: string): boolean {\n\tif (output.trim()) return false;\n\treturn !extractOutputTarget(task);\n}\n\nfunction getToolCallLines(\n\tresult: Pick<Details[\"results\"][number], \"messages\" | \"toolCalls\">,\n\texpanded: boolean,\n): string[] {\n\tif (result.messages) {\n\t\treturn getDisplayItems(result.messages)\n\t\t\t.filter((item): item is { type: \"tool\"; name: string; args: Record<string, unknown> } => item.type === \"tool\")\n\t\t\t.map((item) => formatToolCall(item.name, item.args, expanded));\n\t}\n\treturn result.toolCalls?.map((toolCall) => expanded ? toolCall.expandedText : toolCall.text) ?? [];\n}\n\n\nfunction snapshotNowForProgress(progress: Pick<AgentProgress, \"currentToolStartedAt\" | \"durationMs\" | \"lastActivityAt\">): number | undefined {\n\tif (progress.currentToolStartedAt !== undefined && progress.durationMs !== undefined) return progress.currentToolStartedAt + progress.durationMs;\n\treturn progress.lastActivityAt;\n}\n\nfunction formatCurrentToolLine(\n\tprogress: Pick<AgentProgress, \"currentTool\" | \"currentToolArgs\" | \"currentToolStartedAt\">,\n\tavailableWidth: number,\n\texpanded: boolean,\n\tsnapshotNow?: number,\n): string | undefined {\n\tif (!progress.currentTool) return undefined;\n\tconst maxToolArgsLen = Math.max(50, availableWidth - 20);\n\tconst toolArgsPreview = progress.currentToolArgs\n\t\t? (expanded || progress.currentToolArgs.length <= maxToolArgsLen\n\t\t\t? progress.currentToolArgs\n\t\t\t: `${progress.currentToolArgs.slice(0, maxToolArgsLen)}...`)\n\t\t: \"\";\n\tconst durationSuffix = progress.currentToolStartedAt !== undefined && snapshotNow !== undefined\n\t\t? ` | ${formatDuration(Math.max(0, snapshotNow - progress.currentToolStartedAt))}`\n\t\t: \"\";\n\treturn toolArgsPreview\n\t\t? `${progress.currentTool}: ${toolArgsPreview}${durationSuffix}`\n\t\t: `${progress.currentTool}${durationSuffix}`;\n}\n\nfunction buildLiveStatusLine(progress: Pick<AgentProgress, \"activityState\" | \"lastActivityAt\">, snapshotNow?: number): string | undefined {\n\tif (progress.lastActivityAt !== undefined && snapshotNow !== undefined) return formatActivityLabel(progress.lastActivityAt, progress.activityState, snapshotNow);\n\tif (progress.activityState === \"needs_attention\") return \"needs attention\";\n\tif (progress.activityState === \"active_long_running\") return \"active but long-running\";\n\tif (progress.lastActivityAt !== undefined) return \"active\";\n\treturn undefined;\n}\n\nfunction themeBold(theme: Theme, text: string): string {\n\treturn ((theme as { bold?: (value: string) => string }).bold?.(text)) ?? text;\n}\n\nfunction statJoin(theme: Theme, parts: string[]): string {\n\treturn parts.filter(Boolean).map((part) => theme.fg(\"dim\", part)).join(` ${theme.fg(\"dim\", \"·\")} `);\n}\n\nfunction formatTokenStat(tokens: number): string {\n\treturn `${formatTokens(tokens)} token`;\n}\n\nfunction formatToolUseStat(count: number): string {\n\treturn `${count} tool use${count === 1 ? \"\" : \"s\"}`;\n}\n\nfunction formatTotalCostStat(totalCost: Details[\"totalCost\"] | undefined): string {\n\tif (!totalCost || (totalCost.inputTokens === 0 && totalCost.outputTokens === 0 && totalCost.costUsd === 0)) return \"\";\n\tconst parts: string[] = [];\n\tif (totalCost.inputTokens) parts.push(`in:${formatTokens(totalCost.inputTokens)}`);\n\tif (totalCost.outputTokens) parts.push(`out:${formatTokens(totalCost.outputTokens)}`);\n\tif (totalCost.costUsd) parts.push(`$${totalCost.costUsd.toFixed(4)}`);\n\treturn parts.join(\" \");\n}\n\nfunction formatProgressStats(theme: Theme, progress: Pick<AgentProgress, \"toolCount\" | \"tokens\" | \"durationMs\"> | undefined, includeDuration = true): string {\n\tif (!progress) return \"\";\n\tconst parts: string[] = [];\n\tif (progress.toolCount > 0) parts.push(formatToolUseStat(progress.toolCount));\n\tif (progress.tokens > 0) parts.push(formatTokenStat(progress.tokens));\n\tif (includeDuration && progress.durationMs > 0) parts.push(formatDuration(progress.durationMs));\n\treturn statJoin(theme, parts);\n}\n\nfunction firstOutputLine(text: string): string {\n\treturn text.split(\"\\n\").find((line) => line.trim())?.trim() ?? \"\";\n}\n\n// lunr: first line of the task with whitespace collapsed, capped at ~60 chars,\n// for the simplified collapsed subagent rows.\nfunction taskSummaryText(task: string | undefined, max = 60): string {\n\tconst first = (task ?? \"\").split(\"\\n\")[0]?.replace(/\\s+/g, \" \").trim() ?? \"\";\n\tif (first.length <= max) return first;\n\treturn `${first.slice(0, max - 1)}…`;\n}\n\nconst TASK_CHROME_LINE_RE = /^\\[(?:Read from|Write to):\\s*.*\\]\\s*$/;\n\n/** Drop leading [Read from: …] / [Write to: …] lines from a child task. */\nexport function stripTaskChrome(task: string | undefined): string {\n\tif (!task) return \"\";\n\tconst lines = task.split(\"\\n\");\n\twhile (lines.length > 0 && TASK_CHROME_LINE_RE.test(lines[0]!.trim())) {\n\t\tlines.shift();\n\t}\n\treturn lines.join(\"\\n\").trim();\n}\n\n/** Compact-row lead: sanitized description, never a removed agent type or the model. */\nexport function compactRowLead(result: { description?: string; task?: string; model?: string }): string {\n\tconst fromDescription = sanitizeChildDescription(result.description ?? \"\", 80);\n\tif (fromDescription) return fromDescription;\n\treturn taskSummaryText(stripTaskChrome(result.task), 80);\n}\n\nfunction resultStatusLine(result: Details[\"results\"][number], output: string): string {\n\tif (result.detached) return result.detachedReason ? `Detached: ${result.detachedReason}` : \"Detached\";\n\tif (result.stopped) return \"Stopped\";\n\tif (result.interrupted) return \"Paused\";\n\tif (result.exitCode !== 0) return `Error: ${result.error ?? (firstOutputLine(output) || `exit ${result.exitCode}`)}`;\n\tif (result.acceptance?.status && result.acceptance.status !== \"not-required\") return `Done · acceptance: ${result.acceptance.status}`;\n\tif (hasEmptyTextOutputWithoutOutputTarget(result.task, output)) return \"Done (no text output)\";\n\treturn \"Done\";\n}\n\nfunction resultGlyph(result: Details[\"results\"][number], output: string, theme: Theme, running = result.progress?.status === \"running\", seed = progressRunningSeed(result.progress ?? result.progressSummary), frame?: number): string {\n\tif (running) {\n\t\tif (frame !== undefined) return theme.fg(\"accent\", runningGlyph((seed ?? 0) + frame));\n\t\treturn theme.fg(\"accent\", runningGlyph(seed));\n\t}\n\tif (result.detached) return theme.fg(\"warning\", \"■\");\n\tif (result.stopped) return theme.fg(\"warning\", \"■\");\n\tif (result.interrupted) return theme.fg(\"warning\", \"■\");\n\tif (result.exitCode !== 0) return theme.fg(\"error\", \"✗\");\n\tif (hasEmptyTextOutputWithoutOutputTarget(result.task, output)) return theme.fg(\"warning\", \"✓\");\n\treturn theme.fg(\"success\", \"✓\");\n}\n\n/** Compact hang row: tool count, tokens, elapsed time. */\nexport function formatCompactStatsHangLine(\n\tprogress: Pick<AgentProgress, \"toolCount\" | \"tokens\" | \"durationMs\"> | undefined,\n\twidth: number,\n\tpaint: (s: string) => string = (s) => s,\n\tprefix = \" ⎿ \",\n): string {\n\tconst toolCount = progress?.toolCount ?? 0;\n\tconst tokens = progress?.tokens ?? 0;\n\tconst durationMs = progress?.durationMs ?? 0;\n\tconst body = [\n\t\tformatToolUseStat(toolCount),\n\t\tformatTokenStat(tokens),\n\t\tdurationMs > 0 ? formatDuration(durationMs) : \"0ms\",\n\t].join(\" · \");\n\treturn truncLine(paint(`${prefix}${body}`), width);\n}\n\nexport function widgetRenderKey(job: AsyncJobState): string {\n\treturn JSON.stringify({\n\t\tasyncDir: job.asyncDir,\n\t\tstatus: job.status,\n\t\tactivityState: job.activityState,\n\t\tlastActivityAt: job.lastActivityAt,\n\t\tcurrentTool: job.currentTool,\n\t\tcurrentToolStartedAt: job.currentToolStartedAt,\n\t\tcurrentPath: job.currentPath,\n\t\tturnCount: job.turnCount,\n\t\ttoolCount: job.toolCount,\n\t\tmode: job.mode,\n\t\tagents: job.agents,\n\t\tcurrentStep: job.currentStep,\n\t\tchainStepCount: job.chainStepCount,\n\t\tparallelGroups: job.parallelGroups,\n\t\tsteps: job.steps,\n\t\tnestedChildren: job.nestedChildren,\n\t\tstepsTotal: job.stepsTotal,\n\t\trunningSteps: job.runningSteps,\n\t\tcompletedSteps: job.completedSteps,\n\t\tactiveParallelGroup: job.activeParallelGroup,\n\t\tstartedAt: job.startedAt,\n\t\tupdatedAt: job.updatedAt,\n\t\ttotalTokens: job.totalTokens,\n\t});\n}\n\nfunction formatWidgetAgents(agents: string[]): string {\n\tconst distinct = [...new Set(agents)];\n\tif (distinct.length === 1 && agents.length > 1) return `${distinct[0]} ×${agents.length}`;\n\tif (agents.length > 3) return `${agents.slice(0, 2).join(\", \")} +${agents.length - 2} more`;\n\treturn agents.join(\", \");\n}\n\nfunction widgetJobName(job: AsyncJobState): string {\n\tif (job.mode === \"parallel\") return \"parallel\";\n\tif (job.mode === \"chain\") return \"chain\";\n\tif (job.mode === \"single\" && job.agents?.length === 1) return job.agents[0]!;\n\tif (job.agents?.length) return formatWidgetAgents(job.agents);\n\treturn job.mode ?? \"subagent\";\n}\n\nfunction widgetActivity(job: AsyncJobState): string {\n\tconst facts: string[] = [];\n\tif (job.currentTool && job.currentToolStartedAt !== undefined && job.updatedAt !== undefined) facts.push(`${job.currentTool} ${formatDuration(Math.max(0, job.updatedAt - job.currentToolStartedAt))}`);\n\telse if (job.currentTool) facts.push(job.currentTool);\n\tif (job.currentPath) facts.push(shortenPath(job.currentPath));\n\tif (job.turnCount !== undefined) facts.push(`${job.turnCount} turns`);\n\tif (job.toolCount !== undefined) facts.push(`${job.toolCount} tools`);\n\tconst activity = buildLiveStatusLine(job, job.updatedAt);\n\tif (activity && facts.length) return `${activity} · ${facts.join(\" · \")}`;\n\tif (activity) return activity;\n\tif (facts.length) return facts.join(\" · \");\n\tif (job.status === \"running\") return \"thinking…\";\n\tif (job.status === \"queued\") return \"queued…\";\n\tif (job.status === \"paused\") return \"Paused\";\n\tif (job.status === \"stopped\") return \"Stopped\";\n\tif (job.status === \"failed\") return \"Failed\";\n\treturn \"Done\";\n}\n\nfunction widgetStepRunningSeed(step: NonNullable<AsyncJobState[\"steps\"]>[number], fallbackIndex?: number): number | undefined {\n\treturn runningSeed(fallbackIndex, step.index);\n}\n\nfunction widgetStepsRunningSeed(steps: Array<NonNullable<AsyncJobState[\"steps\"]>[number]> | undefined): number | undefined {\n\tlet seed: number | undefined;\n\tfor (const [index, step] of (steps ?? []).entries()) seed = runningSeed(seed, widgetStepRunningSeed(step, index));\n\treturn seed;\n}\n\nfunction widgetJobRunningSeed(job: AsyncJobState): number | undefined {\n\treturn runningSeed(job.currentStep, job.runningSteps, widgetStepsRunningSeed(job.steps));\n}\n\nfunction widgetJobsRunningSeed(jobs: AsyncJobState[]): number | undefined {\n\tlet seed: number | undefined;\n\tfor (const job of jobs) seed = runningSeed(seed, widgetJobRunningSeed(job));\n\treturn seed;\n}\n\nfunction widgetStatusGlyph(job: AsyncJobState, theme: Theme): string {\n\tif (job.status === \"running\") return theme.fg(\"accent\", runningGlyph(widgetJobRunningSeed(job)));\n\tif (job.status === \"queued\") return theme.fg(\"muted\", \"◦\");\n\tif (job.status === \"complete\") return theme.fg(\"success\", \"✓\");\n\tif (job.status === \"paused\") return theme.fg(\"warning\", \"■\");\n\tif (job.status === \"stopped\") return theme.fg(\"warning\", \"■\");\n\treturn theme.fg(\"error\", \"✗\");\n}\n\nfunction widgetStepGlyph(status: AsyncJobStep[\"status\"], theme: Theme, seed?: number): string {\n\tif (status === \"running\") return theme.fg(\"accent\", runningGlyph(seed));\n\tif (status === \"complete\" || status === \"completed\") return theme.fg(\"success\", \"✓\");\n\tif (status === \"failed\") return theme.fg(\"error\", \"✗\");\n\tif (status === \"paused\") return theme.fg(\"warning\", \"■\");\n\tif (status === \"stopped\") return theme.fg(\"warning\", \"■\");\n\treturn theme.fg(\"muted\", \"◦\");\n}\n\nfunction widgetStepStatus(status: AsyncJobStep[\"status\"], theme: Theme): string {\n\tif (status === \"running\") return theme.fg(\"accent\", \"running\");\n\tif (status === \"complete\" || status === \"completed\") return theme.fg(\"success\", \"complete\");\n\tif (status === \"failed\") return theme.fg(\"error\", \"failed\");\n\tif (status === \"paused\") return theme.fg(\"warning\", \"paused\");\n\tif (status === \"stopped\") return theme.fg(\"warning\", \"stopped\");\n\treturn theme.fg(\"dim\", status);\n}\n\nfunction widgetStepActivity(step: NonNullable<AsyncJobState[\"steps\"]>[number], snapshotNow?: number): string {\n\tconst facts: string[] = [];\n\tif (step.currentTool && step.currentToolStartedAt !== undefined && snapshotNow !== undefined) facts.push(`${step.currentTool} ${formatDuration(Math.max(0, snapshotNow - step.currentToolStartedAt))}`);\n\telse if (step.currentTool) facts.push(step.currentTool);\n\tif (step.currentPath) facts.push(shortenPath(step.currentPath));\n\tif (step.turnCount !== undefined) facts.push(`${step.turnCount} turns`);\n\tif (step.toolCount !== undefined) facts.push(`${step.toolCount} tools`);\n\tif (step.tokens?.total) facts.push(formatTokenStat(step.tokens.total));\n\tconst activity = buildLiveStatusLine(step, snapshotNow);\n\tif (activity && facts.length) return `${activity} · ${facts.join(\" · \")}`;\n\tif (activity) return activity;\n\treturn facts.join(\" · \");\n}\n\n\nfunction widgetChainDetails(job: AsyncJobState, theme: Theme, expanded = false, width = getTermWidth()): string[] {\n\tif (!job.steps?.length) return [];\n\tconst total = job.chainStepCount ?? job.steps.length;\n\tconst lines: string[] = [];\n\tfor (const span of buildAsyncChainStepSpans(total, job.steps.length, job.parallelGroups)) {\n\t\tconst steps = job.steps.slice(span.start, span.start + span.count);\n\t\tif (span.isParallel) {\n\t\t\tconst status = aggregateStepStatus(steps);\n\t\t\tlines.push(` ${widgetStepGlyph(status, theme, widgetStepsRunningSeed(steps))} Step ${span.stepIndex + 1}/${total}: ${themeBold(theme, \"parallel group\")} ${theme.fg(\"dim\", \"·\")} ${theme.fg(\"dim\", formatParallelOutcome(steps, span.count))}`);\n\t\t\tcontinue;\n\t\t}\n\t\tconst step = steps[0];\n\t\tif (!step) {\n\t\t\tlines.push(` ${theme.fg(\"dim\", `◦ Step ${span.stepIndex + 1}/${total}: pending`)}`);\n\t\t\tcontinue;\n\t\t}\n\t\tlines.push(...foregroundStyleWidgetStepLines(job, theme, step, \"Step\", span.stepIndex + 1, total, expanded, width));\n\t}\n\treturn lines;\n}\n\nfunction widgetParallelAgentDetails(job: AsyncJobState, theme: Theme, expanded = false, width = getTermWidth()): string[] {\n\tif (!job.steps?.length) return [];\n\tif (job.mode !== \"parallel\" && job.mode !== \"chain\") return [];\n\tif (job.mode === \"chain\" && !job.activeParallelGroup && job.parallelGroups?.length) return widgetChainDetails(job, theme, expanded, width);\n\tconst total = job.stepsTotal ?? job.steps.length;\n\tconst lines: string[] = [];\n\tfor (const [index, step] of job.steps.entries()) {\n\t\tconst marker = index === job.steps.length - 1 ? \"└\" : \"├\";\n\t\tconst activity = widgetStepActivity(step, job.updatedAt);\n\t\tconst itemTitle = job.mode === \"parallel\" || job.activeParallelGroup ? \"Agent\" : \"Step\";\n\t\tconst modelDisplay = modelThinkingBadge(theme, step.model, step.thinking);\n\t\tlines.push(` ${theme.fg(\"dim\", `${marker} ${widgetStepGlyph(step.status, theme, widgetStepRunningSeed(step, index))} ${itemTitle} ${index + 1}/${total}: ${step.agent} · ${widgetStepStatus(step.status, theme)}${modelDisplay}${activity ? ` · ${activity}` : \"\"}`)}`);\n\t\tfor (const nestedLine of formatNestedWidgetLines(step.children, theme, width, expanded, job.updatedAt, expanded ? 8 : 1)) lines.push(` ${nestedLine}`);\n\t}\n\treturn lines;\n}\n\nfunction parseParallelGroupAgentCount(label: string | undefined): number | undefined {\n\tif (!label || !label.startsWith(\"[\") || !label.endsWith(\"]\")) return undefined;\n\tconst inner = label.slice(1, -1).trim();\n\tif (!inner) return 0;\n\treturn inner.split(\"+\").map((part) => part.trim()).filter(Boolean).length;\n}\n\ninterface ChainStepSpan {\n\tstepIndex: number;\n\tstart: number;\n\tcount: number;\n\tisParallel: boolean;\n\tstatus?: WorkflowNodeStatus;\n\tlabel?: string;\n\terror?: string;\n}\n\nfunction buildChainStepSpans(details: Pick<Details, \"chainAgents\" | \"workflowGraph\">): ChainStepSpan[] {\n\tif (details.workflowGraph?.nodes?.length) {\n\t\tconst spans: ChainStepSpan[] = [];\n\t\tlet flatCursor = 0;\n\t\tfor (const node of details.workflowGraph.nodes) {\n\t\t\tif (node.stepIndex === undefined) continue;\n\t\t\tif (node.kind === \"parallel-group\" || node.kind === \"dynamic-parallel-group\") {\n\t\t\t\tconst childFlatIndexes = (node.children ?? [])\n\t\t\t\t\t.map((child) => child.flatIndex)\n\t\t\t\t\t.filter((value): value is number => typeof value === \"number\");\n\t\t\t\tconst start = childFlatIndexes.length ? Math.min(...childFlatIndexes) : flatCursor;\n\t\t\t\tconst count = node.children?.length ?? 0;\n\t\t\t\tspans.push({ stepIndex: node.stepIndex, start, count, isParallel: true, status: node.status, label: node.label, error: node.error });\n\t\t\t\tflatCursor = Math.max(flatCursor, start + count);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst start = node.flatIndex ?? flatCursor;\n\t\t\tspans.push({ stepIndex: node.stepIndex, start, count: 1, isParallel: false, status: node.status, label: node.label, error: node.error });\n\t\t\tflatCursor = Math.max(flatCursor, start + 1);\n\t\t}\n\t\tif (spans.length) return spans.sort((left, right) => left.stepIndex - right.stepIndex);\n\t}\n\n\tif (!details.chainAgents?.length) return [];\n\tconst spans: ChainStepSpan[] = [];\n\tlet start = 0;\n\tfor (let stepIndex = 0; stepIndex < details.chainAgents.length; stepIndex++) {\n\t\tconst label = details.chainAgents[stepIndex]!;\n\t\tconst parsedCount = parseParallelGroupAgentCount(label);\n\t\tconst count = parsedCount ?? 1;\n\t\tspans.push({ stepIndex, start, count, isParallel: parsedCount !== undefined });\n\t\tstart += count;\n\t}\n\treturn spans;\n}\n\nfunction isChainParallelGroupActive(details: Pick<Details, \"mode\" | \"chainAgents\" | \"currentStepIndex\" | \"workflowGraph\">): boolean {\n\tif (details.mode !== \"chain\") return false;\n\tif (details.currentStepIndex === undefined) return false;\n\treturn buildChainStepSpans(details).some((span) => span.stepIndex === details.currentStepIndex && span.isParallel);\n}\n\nfunction buildAsyncChainStepSpans(total: number, stepCount: number, parallelGroups: AsyncParallelGroupStatus[] = []): ChainStepSpan[] {\n\tconst spans: ChainStepSpan[] = [];\n\tlet flatIndex = 0;\n\tfor (let stepIndex = 0; stepIndex < total; stepIndex++) {\n\t\tconst group = parallelGroups.find((candidate) => candidate.stepIndex === stepIndex);\n\t\tif (group) {\n\t\t\tspans.push({ stepIndex, start: group.start, count: group.count, isParallel: true });\n\t\t\tflatIndex = Math.max(flatIndex, group.start + group.count);\n\t\t\tcontinue;\n\t\t}\n\t\tspans.push({ stepIndex, start: flatIndex, count: flatIndex < stepCount ? 1 : 0, isParallel: false });\n\t\tflatIndex++;\n\t}\n\treturn spans;\n}\n\nfunction isDoneResult(result: Details[\"results\"][number]): boolean {\n\tconst status = result.progress?.status;\n\tif (status === \"completed\") return true;\n\tif (status === \"running\" || status === \"pending\") return false;\n\tif (result.interrupted || result.detached) return false;\n\treturn result.exitCode === 0;\n}\n\nfunction workflowGraphHasStatus(details: Pick<Details, \"workflowGraph\">, statuses: WorkflowNodeStatus[]): boolean {\n\treturn details.workflowGraph?.nodes.some((node) => statuses.includes(node.status)) ?? false;\n}\n\ninterface ChainRenderResultEntry {\n\tkind: \"result\";\n\tresultIndex: number;\n\trowNumber: number;\n\tagentName: string;\n}\n\ninterface ChainRenderPlaceholderEntry {\n\tkind: \"placeholder\";\n\trowNumber: number;\n\tstepLabel: string;\n\tagentName: string;\n\tstatus: WorkflowNodeStatus;\n\terror?: string;\n}\n\ntype ChainRenderEntry = ChainRenderResultEntry | ChainRenderPlaceholderEntry;\n\nfunction buildChainRenderEntries(details: Details, label: MultiProgressLabel): ChainRenderEntry[] | undefined {\n\tif (details.mode !== \"chain\" || !label.hasParallelInChain || label.showActiveGroupOnly) return undefined;\n\tconst entries: ChainRenderEntry[] = [];\n\tfor (const span of buildChainStepSpans(details)) {\n\t\tif (span.isParallel && span.count === 0) {\n\t\t\tentries.push({\n\t\t\t\tkind: \"placeholder\",\n\t\t\t\trowNumber: span.stepIndex + 1,\n\t\t\t\tstepLabel: `Step ${span.stepIndex + 1}`,\n\t\t\t\tagentName: span.label ?? details.chainAgents?.[span.stepIndex] ?? `step-${span.stepIndex + 1}`,\n\t\t\t\tstatus: span.status ?? \"pending\",\n\t\t\t\terror: span.error,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tfor (let index = span.start; index < span.start + span.count; index++) {\n\t\t\tentries.push({\n\t\t\t\tkind: \"result\",\n\t\t\t\tresultIndex: index,\n\t\t\t\trowNumber: index + 1,\n\t\t\t\tagentName: details.results[index]?.agent ?? details.chainAgents?.[span.stepIndex] ?? `step-${span.stepIndex + 1}`,\n\t\t\t});\n\t\t}\n\t}\n\treturn entries;\n}\n\ninterface MultiProgressLabel {\n\theaderLabel: string;\n\titemTitle: \"Step\" | \"Agent\";\n\ttotalCount: number;\n\thasParallelInChain: boolean;\n\tactiveParallelGroup: boolean;\n\tgroupStartIndex: number;\n\tgroupEndIndex: number;\n\tshowActiveGroupOnly: boolean;\n}\n\nfunction buildMultiProgressLabel(details: Pick<Details, \"mode\" | \"results\" | \"progress\" | \"totalSteps\" | \"currentStepIndex\" | \"chainAgents\" | \"workflowGraph\">, hasRunning: boolean): MultiProgressLabel {\n\tconst stepSpans = buildChainStepSpans(details);\n\tconst hasParallelInChain = details.mode === \"chain\" && stepSpans.some((span) => span.isParallel);\n\tconst activeParallelGroup = isChainParallelGroupActive(details);\n\tconst itemTitle: \"Step\" | \"Agent\" = details.mode === \"parallel\" || activeParallelGroup ? \"Agent\" : \"Step\";\n\n\tif (details.mode === \"parallel\") {\n\t\tconst totalCount = details.totalSteps ?? details.results.length;\n\t\tconst statuses = new Array(totalCount).fill(\"pending\") as Array<\"pending\" | \"running\" | \"completed\" | \"failed\" | \"stopped\" | \"detached\">;\n\t\tfor (const progress of details.progress ?? []) {\n\t\t\tif (progress.index >= 0 && progress.index < totalCount) statuses[progress.index] = progress.status;\n\t\t}\n\t\tfor (let i = 0; i < details.results.length; i++) {\n\t\t\tconst result = details.results[i]!;\n\t\t\tconst progressFromArray = details.progress?.find((progress) => progress.index === i)\n\t\t\t\t|| details.progress?.find((progress) => progress.agent === result.agent && progress.status === \"running\");\n\t\t\tconst index = result.progress?.index ?? progressFromArray?.index ?? i;\n\t\t\tif (index < 0 || index >= totalCount) continue;\n\t\t\tconst status = result.progress?.status\n\t\t\t\t?? (result.stopped\n\t\t\t\t\t? \"stopped\"\n\t\t\t\t\t: result.interrupted || result.detached\n\t\t\t\t\t\t? \"detached\"\n\t\t\t\t\t\t: result.exitCode === 0\n\t\t\t\t\t\t\t? \"completed\"\n\t\t\t\t\t\t\t: \"failed\");\n\t\t\tstatuses[index] = status;\n\t\t}\n\t\tconst running = statuses.filter((status) => status === \"running\").length;\n\t\tconst done = statuses.filter((status) => status === \"completed\").length;\n\t\tconst headerLabel = hasRunning\n\t\t\t? `${formatAgentRunningLabel(running)} · ${done}/${totalCount} done`\n\t\t\t: `${done}/${totalCount} done`;\n\t\treturn { headerLabel, itemTitle, totalCount, hasParallelInChain, activeParallelGroup, groupStartIndex: 0, groupEndIndex: totalCount, showActiveGroupOnly: false };\n\t}\n\n\tif (activeParallelGroup) {\n\t\tconst currentStepIndex = details.currentStepIndex!;\n\t\tconst span = stepSpans[currentStepIndex];\n\t\tconst groupSize = span?.count ?? 1;\n\t\tconst groupStart = span?.start ?? 0;\n\t\tconst groupEnd = groupStart + groupSize;\n\t\tlet running = 0;\n\t\tlet done = 0;\n\t\tfor (let index = groupStart; index < groupEnd; index++) {\n\t\t\tconst progressEntry = details.progress?.find((progress) => progress.index === index);\n\t\t\tconst resultEntry = details.results.find((result) => result.progress?.index === index);\n\t\t\tif (progressEntry?.status === \"running\") {\n\t\t\t\trunning++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (progressEntry?.status === \"completed\") {\n\t\t\t\tdone++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (resultEntry && isDoneResult(resultEntry)) done++;\n\t\t}\n\t\tconst totalSteps = details.totalSteps ?? details.chainAgents?.length ?? 1;\n\t\tconst headerLabel = hasRunning\n\t\t\t? `step ${currentStepIndex + 1}/${totalSteps} · parallel group: ${formatAgentRunningLabel(running)} · ${done}/${groupSize} done`\n\t\t\t: `step ${currentStepIndex + 1}/${totalSteps} · parallel group: ${done}/${groupSize} done`;\n\t\treturn { headerLabel, itemTitle, totalCount: groupSize, hasParallelInChain, activeParallelGroup, groupStartIndex: groupStart, groupEndIndex: groupEnd, showActiveGroupOnly: true };\n\t}\n\n\tif (details.mode === \"chain\" && details.chainAgents?.length) {\n\t\tconst totalCount = details.totalSteps ?? details.chainAgents.length;\n\t\tconst doneLogical = stepSpans.filter((span) => {\n\t\t\tif (span.status && span.status !== \"completed\") return false;\n\t\t\tif (span.count === 0) return span.status === \"completed\";\n\t\t\tfor (let index = span.start; index < span.start + span.count; index++) {\n\t\t\t\tconst progressEntry = details.progress?.find((progress) => progress.index === index);\n\t\t\t\tconst resultEntry = details.results.find((result) => result.progress?.index === index) ?? details.results[index];\n\t\t\t\tif (progressEntry?.status === \"running\" || progressEntry?.status === \"pending\" || progressEntry?.status === \"failed\") return false;\n\t\t\t\tif (!resultEntry || !isDoneResult(resultEntry)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}).length;\n\t\tconst currentStep = details.currentStepIndex !== undefined ? details.currentStepIndex + 1 : Math.min(totalCount, doneLogical + (hasRunning ? 1 : 0));\n\t\tconst headerLabel = hasRunning ? `step ${currentStep}/${totalCount}` : `step ${doneLogical}/${totalCount}`;\n\t\treturn { headerLabel, itemTitle, totalCount, hasParallelInChain, activeParallelGroup, groupStartIndex: 0, groupEndIndex: details.results.length, showActiveGroupOnly: false };\n\t}\n\n\tconst totalCount = details.totalSteps ?? details.results.length;\n\tconst currentStep = details.currentStepIndex !== undefined ? details.currentStepIndex + 1 : Math.min(totalCount, details.results.filter(isDoneResult).length + (hasRunning ? 1 : 0));\n\tconst done = details.results.filter(isDoneResult).length;\n\tconst headerLabel = hasRunning ? `step ${currentStep}/${totalCount}` : `step ${done}/${totalCount}`;\n\treturn { headerLabel, itemTitle, totalCount, hasParallelInChain, activeParallelGroup, groupStartIndex: 0, groupEndIndex: details.results.length, showActiveGroupOnly: false };\n}\n\nfunction resultRowLabel(details: Pick<Details, \"mode\" | \"chainAgents\" | \"workflowGraph\">, label: MultiProgressLabel, resultIndex: number, stepNumber: number): string {\n\tif (details.mode === \"chain\" && label.hasParallelInChain) {\n\t\tconst span = buildChainStepSpans(details).find((candidate) => resultIndex >= candidate.start && resultIndex < candidate.start + candidate.count);\n\t\tif (span?.isParallel) return `Agent ${resultIndex - span.start + 1}/${span.count}`;\n\t\tif (span) return `Step ${span.stepIndex + 1}`;\n\t}\n\tif (label.itemTitle === \"Agent\") {\n\t\tconst localStepNumber = label.activeParallelGroup\n\t\t\t? Math.max(1, stepNumber - label.groupStartIndex)\n\t\t\t: stepNumber;\n\t\treturn `Agent ${localStepNumber}/${label.totalCount}`;\n\t}\n\treturn `Step ${stepNumber}`;\n}\n\nfunction widgetStats(job: AsyncJobState, theme: Theme): string {\n\tconst parts: string[] = [];\n\tconst stepsTotal = job.stepsTotal ?? (job.agents?.length ?? 1);\n\tif (job.activeParallelGroup) {\n\t\tconst running = job.runningSteps ?? (job.status === \"running\" ? 1 : 0);\n\t\tconst done = job.completedSteps ?? (job.status === \"complete\" ? stepsTotal : 0);\n\t\tif (job.mode === \"parallel\") {\n\t\t\tif (job.status === \"running\" && running > 0) parts.push(formatAgentRunningLabel(running));\n\t\t\tif (stepsTotal > 0) parts.push(`${done}/${stepsTotal} done`);\n\t\t} else {\n\t\t\tconst activeGroup = job.currentStep !== undefined\n\t\t\t\t? job.parallelGroups?.find((group) => job.currentStep! >= group.start && job.currentStep! < group.start + group.count)\n\t\t\t\t: job.parallelGroups?.find((group) => group.start === 0);\n\t\t\tconst logicalStep = activeGroup?.stepIndex ?? job.currentStep ?? 0;\n\t\t\tconst total = job.chainStepCount ?? stepsTotal;\n\t\t\tconst groupParts = [`${done}/${stepsTotal} done`];\n\t\t\tif (job.status === \"running\" && running > 0) groupParts.unshift(formatAgentRunningLabel(running));\n\t\t\tparts.push(`step ${logicalStep + 1}/${total} · parallel group: ${groupParts.join(\" · \")}`);\n\t\t}\n\t} else if (job.currentStep !== undefined) {\n\t\tif (job.mode === \"chain\" && job.parallelGroups?.length) {\n\t\t\tconst total = job.chainStepCount ?? stepsTotal;\n\t\t\tparts.push(`step ${flatToLogicalStepIndex(job.currentStep, total, job.parallelGroups) + 1}/${total}`);\n\t\t} else {\n\t\t\tparts.push(`step ${job.currentStep + 1}/${stepsTotal}`);\n\t\t}\n\t} else if (stepsTotal > 1) {\n\t\tparts.push(`steps ${stepsTotal}`);\n\t}\n\tif (job.toolCount !== undefined) parts.push(formatToolUseStat(job.toolCount));\n\tif (job.totalTokens?.total) parts.push(formatTokenStat(job.totalTokens.total));\n\tif (job.startedAt !== undefined && job.updatedAt !== undefined) parts.push(formatDuration(Math.max(0, job.updatedAt - job.startedAt)));\n\treturn statJoin(theme, parts);\n}\n\nfunction widgetStepStats(theme: Theme, step: NonNullable<AsyncJobState[\"steps\"]>[number]): string {\n\treturn statJoin(theme, [\n\t\tstep.turnCount !== undefined ? `${step.turnCount} turns` : \"\",\n\t\tstep.toolCount !== undefined ? formatToolUseStat(step.toolCount) : \"\",\n\t\tstep.tokens?.total ? formatTokenStat(step.tokens.total) : \"\",\n\t\tstep.durationMs !== undefined ? formatDuration(step.durationMs) : \"\",\n\t]);\n}\n\nfunction modelThinkingBadge(theme: Theme, model?: string, thinking?: string): string {\n\tconst label = formatModelThinking(model, thinking);\n\treturn label ? theme.fg(\"dim\", ` (${label})`) : \"\";\n}\n\nfunction widgetStepActivityLine(step: NonNullable<AsyncJobState[\"steps\"]>[number], width: number, expanded: boolean, snapshotNow?: number): string {\n\tconst toolLine = formatCurrentToolLine(step, width, expanded, snapshotNow);\n\tif (toolLine) return toolLine;\n\tconst activity = buildLiveStatusLine(step, snapshotNow);\n\tif (activity) return activity;\n\tif (step.status === \"running\") return \"thinking…\";\n\treturn \"\";\n}\n\nfunction nestedRunName(run: NestedRunSummary): string {\n\tif (run.agent) return run.agent;\n\tif (run.agents?.length) return formatWidgetAgents(run.agents);\n\treturn run.id;\n}\n\nfunction nestedStatusGlyph(state: NestedRunSummary[\"state\"] | NestedStepSummary[\"status\"], theme: Theme, seed?: number): string {\n\tif (state === \"running\") return theme.fg(\"accent\", runningGlyph(seed));\n\tif (state === \"complete\" || state === \"completed\") return theme.fg(\"success\", \"✓\");\n\tif (state === \"failed\") return theme.fg(\"error\", \"✗\");\n\tif (state === \"paused\") return theme.fg(\"warning\", \"■\");\n\tif (state === \"stopped\") return theme.fg(\"warning\", \"■\");\n\treturn theme.fg(\"muted\", \"◦\");\n}\n\nfunction nestedRunSeed(run: NestedRunSummary): number | undefined {\n\treturn runningSeed(run.lastUpdate, run.lastActivityAt, run.currentStep, run.toolCount, run.turnCount, run.totalTokens?.total, run.currentToolStartedAt);\n}\n\nfunction nestedActivity(input: Pick<NestedRunSummary | NestedStepSummary, \"activityState\" | \"lastActivityAt\" | \"currentTool\" | \"currentToolStartedAt\" | \"currentPath\" | \"turnCount\" | \"toolCount\">, state: NestedRunSummary[\"state\"] | NestedStepSummary[\"status\"], snapshotNow?: number): string {\n\tconst facts: string[] = [];\n\tif (input.currentTool && input.currentToolStartedAt !== undefined && snapshotNow !== undefined) facts.push(`${input.currentTool} ${formatDuration(Math.max(0, snapshotNow - input.currentToolStartedAt))}`);\n\telse if (input.currentTool) facts.push(input.currentTool);\n\tif (input.currentPath) facts.push(shortenPath(input.currentPath));\n\tif (input.turnCount !== undefined) facts.push(`${input.turnCount} turns`);\n\tif (input.toolCount !== undefined) facts.push(`${input.toolCount} tools`);\n\tconst activity = buildLiveStatusLine(input, snapshotNow);\n\tif (activity && facts.length) return `${activity} · ${facts.join(\" · \")}`;\n\tif (activity) return activity;\n\tif (facts.length) return facts.join(\" · \");\n\tif (state === \"running\") return \"thinking…\";\n\tif (state === \"queued\" || state === \"pending\") return \"queued…\";\n\tif (state === \"paused\") return \"Paused\";\n\tif (state === \"stopped\") return \"Stopped\";\n\tif (state === \"failed\") return \"Failed\";\n\treturn \"Done\";\n}\n\nfunction formatNestedWidgetLines(children: NestedRunSummary[] | undefined, theme: Theme, width: number, expanded: boolean, snapshotNow?: number, lineBudget = expanded ? 12 : 1): string[] {\n\tif (!children?.length || lineBudget <= 0) return [];\n\tif (!expanded) {\n\t\tconst aggregate = formatNestedAggregate(children);\n\t\treturn aggregate ? [theme.fg(\"dim\", `↳ ${aggregate}`)] : [];\n\t}\n\tconst lines: string[] = [];\n\tconst maxDepth = 2;\n\tconst append = (items: NestedRunSummary[] | undefined, depth: number, prefix: string): void => {\n\t\tif (!items?.length || lines.length >= lineBudget) return;\n\t\tif (depth > maxDepth) {\n\t\t\tconst aggregate = formatNestedAggregate(items);\n\t\t\tif (aggregate && lines.length < lineBudget) lines.push(theme.fg(\"dim\", `${prefix}↳ ${aggregate}`));\n\t\t\treturn;\n\t\t}\n\t\tfor (let index = 0; index < items.length; index++) {\n\t\t\tconst child = items[index]!;\n\t\t\tif (lines.length >= lineBudget) {\n\t\t\t\tconst aggregate = formatNestedAggregate(items.slice(index));\n\t\t\t\tif (aggregate) lines[lines.length - 1] = theme.fg(\"dim\", `${prefix}↳ ${aggregate}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst activity = nestedActivity(child, child.state, snapshotNow ?? child.lastUpdate);\n\t\t\tconst error = child.error ? ` · ${child.error}` : \"\";\n\t\t\tlines.push(theme.fg(\"dim\", `${prefix}↳ ${nestedStatusGlyph(child.state, theme, nestedRunSeed(child))} ${nestedRunName(child)} · ${child.state} · ${activity}${error}`));\n\t\t\tif (depth === maxDepth) {\n\t\t\t\tconst aggregate = formatNestedAggregate([...(child.steps?.flatMap((step) => step.children ?? []) ?? []), ...(child.children ?? [])]);\n\t\t\t\tif (aggregate && lines.length < lineBudget) lines.push(theme.fg(\"dim\", `${prefix} ↳ ${aggregate}`));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (const step of child.steps ?? []) {\n\t\t\t\tif (lines.length >= lineBudget) return;\n\t\t\t\tlines.push(theme.fg(\"dim\", `${prefix} ↳ ${nestedStatusGlyph(step.status, theme)} ${step.agent} · ${step.status} · ${nestedActivity(step, step.status, snapshotNow ?? child.lastUpdate)}`));\n\t\t\t\tappend(step.children, depth + 1, `${prefix} `);\n\t\t\t}\n\t\t\tappend(child.children, depth + 1, `${prefix} `);\n\t\t}\n\t};\n\tappend(children, 0, \"\");\n\treturn lines.map((line) => truncLine(line, width));\n}\n\nfunction foregroundStyleWidgetStepLines(\n\tjob: AsyncJobState,\n\ttheme: Theme,\n\tstep: NonNullable<AsyncJobState[\"steps\"]>[number],\n\titemTitle: \"Agent\" | \"Step\",\n\tindex: number,\n\ttotal: number,\n\texpanded: boolean,\n\twidth: number,\n): string[] {\n\tconst status = widgetStepStatus(step.status, theme);\n\tconst stats = widgetStepStats(theme, step);\n\tconst modelDisplay = modelThinkingBadge(theme, step.model, step.thinking);\n\tconst lines = [` ${widgetStepGlyph(step.status, theme, widgetStepRunningSeed(step, index - 1))} ${itemTitle} ${index}/${total}: ${themeBold(theme, step.agent)} ${theme.fg(\"dim\", \"·\")} ${status}${modelDisplay}${stats ? ` ${theme.fg(\"dim\", \"·\")} ${stats}` : \"\"}`];\n\tconst activity = widgetStepActivityLine(step, width, expanded, job.updatedAt);\n\tif (activity) lines.push(` ${theme.fg(\"dim\", `⎿ ${activity}`)}`);\n\tfor (const nestedLine of formatNestedWidgetLines(step.children, theme, width, expanded, job.updatedAt)) {\n\t\tlines.push(` ${nestedLine}`);\n\t}\n\tif (step.status === \"running\") {\n\t\tif (!expanded) lines.push(` ${theme.fg(\"accent\", liveDetailHintText())}`);\n\t\tif (expanded) {\n\t\t\tconst liveStatus = buildLiveStatusLine(step, job.updatedAt);\n\t\t\tif (liveStatus && liveStatus !== activity) lines.push(` ${theme.fg(\"accent\", liveStatus)}`);\n\t\t\tfor (const tool of step.recentTools?.slice(-3) ?? []) {\n\t\t\t\tconst maxArgsLen = Math.max(40, width - 30);\n\t\t\t\tconst argsPreview = tool.args.length <= maxArgsLen ? tool.args : `${tool.args.slice(0, maxArgsLen)}...`;\n\t\t\t\tlines.push(` ${theme.fg(\"dim\", `${tool.tool}${argsPreview ? `: ${argsPreview}` : \"\"}`)}`);\n\t\t\t}\n\t\t\tfor (const line of step.recentOutput?.slice(-5) ?? []) {\n\t\t\t\tlines.push(` ${theme.fg(\"dim\", line)}`);\n\t\t\t}\n\t\t}\n\t}\n\treturn lines;\n}\n\nfunction foregroundStyleWidgetDetails(job: AsyncJobState, theme: Theme, expanded: boolean, width: number): string[] {\n\tif (!job.steps?.length) return [\n\t\t` ${theme.fg(\"dim\", `⎿ ${widgetActivity(job)}`)}`,\n\t\t...formatNestedWidgetLines(job.nestedChildren, theme, width, expanded, job.updatedAt).map((line) => ` ${line}`),\n\t];\n\tif (job.mode === \"chain\" && !job.activeParallelGroup && job.parallelGroups?.length) return widgetChainDetails(job, theme, expanded, width);\n\tconst total = job.stepsTotal ?? job.steps.length;\n\tconst itemTitle = job.mode === \"parallel\" || job.activeParallelGroup ? \"Agent\" : \"Step\";\n\tconst lines: string[] = [];\n\tfor (const [index, step] of job.steps.entries()) {\n\t\tlines.push(...foregroundStyleWidgetStepLines(job, theme, step, itemTitle, index + 1, total, expanded, width));\n\t}\n\tconst attached = new Set(job.steps.flatMap((step) => step.children?.map((child) => child.id) ?? []));\n\tconst unattached = job.nestedChildren?.filter((child) => !attached.has(child.id)) ?? [];\n\tfor (const nestedLine of formatNestedWidgetLines(unattached, theme, width, expanded, job.updatedAt)) {\n\t\tlines.push(` ${nestedLine}`);\n\t}\n\treturn lines;\n}\n\nfunction buildSingleWidgetLines(job: AsyncJobState, theme: Theme, width: number, expanded: boolean): string[] {\n\tconst stats = widgetStats(job, theme);\n\tconst count = job.mode === \"chain\" ? job.chainStepCount : job.stepsTotal ?? job.agents?.length ?? job.steps?.length;\n\tconst mode = widgetJobName(job);\n\tconst title = `async subagent ${mode}${count && count > 1 ? ` (${count})` : \"\"}`;\n\treturn [\n\t\t`${theme.fg(\"toolTitle\", themeBold(theme, title))} ${theme.fg(\"dim\", \"· background\")}`,\n\t\t`${widgetStatusGlyph(job, theme)} ${themeBold(theme, mode)}${stats ? ` ${theme.fg(\"dim\", \"·\")} ${stats}` : \"\"}`,\n\t\t...foregroundStyleWidgetDetails(job, theme, expanded, width),\n\t].map((line) => truncLine(line, width));\n}\n\nfunction compactSingleWidgetLines(job: AsyncJobState, theme: Theme, width: number): string[] {\n\tconst fullLines = buildSingleWidgetLines(job, theme, width, false);\n\tif (fullLines.length <= 10 || !job.steps?.length || (job.mode !== \"parallel\" && !job.activeParallelGroup)) return fullLines;\n\n\tconst total = job.stepsTotal ?? job.steps.length;\n\tconst itemTitle = job.mode === \"parallel\" || job.activeParallelGroup ? \"Agent\" : \"Step\";\n\tconst lines = fullLines.slice(0, 2);\n\tfor (const [index, step] of job.steps.entries()) {\n\t\tconst status = widgetStepStatus(step.status, theme);\n\t\tconst activity = widgetStepActivityLine(step, width, false, job.updatedAt);\n\t\tconst stepStats = widgetStepStats(theme, step);\n\t\tconst activitySuffix = activity ? ` ${theme.fg(\"dim\", \"·\")} ${theme.fg(\"dim\", activity)}` : \"\";\n\t\tconst modelDisplay = modelThinkingBadge(theme, step.model, step.thinking);\n\t\tlines.push(` ${widgetStepGlyph(step.status, theme, widgetStepRunningSeed(step, index))} ${itemTitle} ${index + 1}/${total}: ${themeBold(theme, step.agent)} ${theme.fg(\"dim\", \"·\")} ${status}${modelDisplay}${activitySuffix}${stepStats ? ` ${theme.fg(\"dim\", \"·\")} ${stepStats}` : \"\"}`);\n\t\tfor (const nestedLine of formatNestedWidgetLines(step.children, theme, width, false, job.updatedAt)) lines.push(` ${nestedLine}`);\n\t}\n\tif (job.steps.some((step) => step.status === \"running\")) lines.push(theme.fg(\"accent\", ` ${liveDetailHintText()}`));\n\treturn lines.map((line) => truncLine(line, width));\n}\n\ntype WidgetRenderTier = \"full\" | \"single-line\" | \"progressive\";\n\ninterface WidgetLayoutSession {\n\texpanded: boolean;\n\trows: number;\n\tcolumns: number;\n\ttier: WidgetRenderTier;\n\tlockedRows?: number;\n\tvisibleJobKeys: string[];\n}\n\nconst RESERVED_NON_WIDGET_ROWS = 19;\n\nlet widgetLayoutSession: WidgetLayoutSession | undefined;\n\nfunction resetWidgetLayoutSession(): void {\n\twidgetLayoutSession = undefined;\n}\n\nfunction estimateAvailableWidgetRows(): number {\n\tconst rows = process.stdout.rows || 30;\n\treturn Math.max(1, rows - RESERVED_NON_WIDGET_ROWS);\n}\n\nfunction currentTerminalRows(): number {\n\treturn process.stdout.rows || 30;\n}\n\nfunction currentTerminalColumns(): number {\n\treturn process.stdout.columns || 120;\n}\n\nfunction widgetSessionMatches(expanded: boolean): boolean {\n\treturn widgetLayoutSession?.expanded === expanded\n\t\t&& widgetLayoutSession.rows === currentTerminalRows()\n\t\t&& widgetLayoutSession.columns === currentTerminalColumns();\n}\n\nfunction widgetHeaderCounts(jobs: AsyncJobState[]): { running: AsyncJobState[]; queued: AsyncJobState[]; complete: AsyncJobState[]; failed: AsyncJobState[]; paused: AsyncJobState[]; stopped: AsyncJobState[] } {\n\treturn {\n\t\trunning: jobs.filter((job) => job.status === \"running\"),\n\t\tqueued: jobs.filter((job) => job.status === \"queued\"),\n\t\tcomplete: jobs.filter((job) => job.status === \"complete\"),\n\t\tfailed: jobs.filter((job) => job.status === \"failed\"),\n\t\tpaused: jobs.filter((job) => job.status === \"paused\"),\n\t\tstopped: jobs.filter((job) => job.status === \"stopped\"),\n\t};\n}\n\nfunction buildSingleLineWidgetLines(jobs: AsyncJobState[], theme: Theme, width: number): string[] {\n\tconst counts = widgetHeaderCounts(jobs);\n\tconst hasActive = counts.running.length > 0 || counts.queued.length > 0;\n\tconst glyph = counts.running.length > 0 ? runningGlyph(widgetJobsRunningSeed(counts.running)) : hasActive ? \"●\" : \"○\";\n\tconst parts: string[] = [];\n\tif (counts.running.length > 0) parts.push(`${counts.running.length}/${jobs.length} running`);\n\tif (counts.queued.length > 0) parts.push(`${counts.queued.length} queued`);\n\tif (counts.failed.length > 0) parts.push(`${counts.failed.length} failed`);\n\tif (counts.stopped.length > 0) parts.push(`${counts.stopped.length} stopped`);\n\tif (counts.paused.length > 0) parts.push(`${counts.paused.length} paused`);\n\tif (!hasActive && counts.complete.length > 0) parts.push(`${counts.complete.length}/${jobs.length} done`);\n\treturn [truncLine(`${theme.fg(hasActive ? \"accent\" : \"dim\", glyph)} ${theme.fg(hasActive ? \"accent\" : \"dim\", \"subagents\")} (${parts.join(\", \") || `${jobs.length} total`})`, width)];\n}\n\nfunction orderedWidgetJobs(jobs: AsyncJobState[]): AsyncJobState[] {\n\treturn [\n\t\t...jobs.filter((job) => job.status === \"running\"),\n\t\t...jobs.filter((job) => job.status === \"queued\"),\n\t\t...jobs.filter((job) => job.status !== \"running\" && job.status !== \"queued\"),\n\t];\n}\n\nfunction progressiveJobKey(job: AsyncJobState): string {\n\treturn job.asyncId;\n}\n\nfunction isProgressiveActiveJob(job: AsyncJobState | undefined): boolean {\n\treturn job?.status === \"running\" || job?.status === \"queued\";\n}\n\nfunction selectProgressiveJobKeys(jobs: AsyncJobState[], previousKeys: string[], bodyRows: number): string[] {\n\tif (bodyRows <= 0) return [];\n\tconst jobsByKey = new Map(jobs.map((job) => [progressiveJobKey(job), job]));\n\tconst selected: string[] = [];\n\tconst append = (key: string): void => {\n\t\tif (selected.includes(key) || !jobsByKey.has(key)) return;\n\t\tselected.push(key);\n\t};\n\tfor (const key of previousKeys) {\n\t\tif (!isProgressiveActiveJob(jobsByKey.get(key))) continue;\n\t\tappend(key);\n\t\tif (selected.length >= bodyRows) return selected;\n\t}\n\tfor (const job of orderedWidgetJobs(jobs)) {\n\t\tif (!isProgressiveActiveJob(job)) continue;\n\t\tconst key = progressiveJobKey(job);\n\t\tappend(key);\n\t\tif (selected.length >= bodyRows) break;\n\t}\n\tif (selected.length >= bodyRows) return selected;\n\tfor (const key of previousKeys) {\n\t\tif (isProgressiveActiveJob(jobsByKey.get(key))) continue;\n\t\tappend(key);\n\t\tif (selected.length >= bodyRows) return selected;\n\t}\n\tfor (const job of orderedWidgetJobs(jobs)) {\n\t\tconst key = progressiveJobKey(job);\n\t\tappend(key);\n\t\tif (selected.length >= bodyRows) break;\n\t}\n\treturn selected;\n}\n\nfunction progressiveHeaderLine(jobs: AsyncJobState[], theme: Theme, width: number): string {\n\tconst counts = widgetHeaderCounts(jobs);\n\tconst hasActive = counts.running.length > 0 || counts.queued.length > 0;\n\tconst glyph = counts.running.length > 0 ? runningGlyph(widgetJobsRunningSeed(counts.running)) : hasActive ? \"●\" : \"○\";\n\tconst parts: string[] = [];\n\tif (counts.running.length > 0) parts.push(formatAgentRunningLabel(counts.running.length));\n\tif (counts.queued.length > 0) parts.push(`${counts.queued.length} queued`);\n\tif (!hasActive) {\n\t\tif (counts.failed.length > 0) parts.push(`${counts.failed.length} failed`);\n\t\tif (counts.stopped.length > 0) parts.push(`${counts.stopped.length} stopped`);\n\t\tif (counts.paused.length > 0) parts.push(`${counts.paused.length} paused`);\n\t\tif (counts.complete.length > 0) parts.push(`${counts.complete.length}/${jobs.length} done`);\n\t}\n\treturn truncLine(`${theme.fg(hasActive ? \"accent\" : \"dim\", glyph)} ${theme.fg(hasActive ? \"accent\" : \"dim\", \"Async agents\")} ${theme.fg(\"dim\", \"·\")} ${theme.fg(\"dim\", parts.join(\", \") || `${jobs.length} total`)}`, width);\n}\n\nfunction progressiveJobLine(job: AsyncJobState, theme: Theme, width: number): string {\n\tconst stats = widgetStats(job, theme);\n\tconst activity = widgetActivity(job);\n\tconst status = job.status === \"complete\" ? \"done\" : job.status;\n\tconst parts = [\n\t\tthemeBold(theme, widgetJobName(job)),\n\t\ttheme.fg(\"dim\", status),\n\t\tstats,\n\t\tactivity && activity.toLowerCase() !== status ? theme.fg(\"dim\", activity) : \"\",\n\t].filter(Boolean);\n\treturn truncLine(` ${widgetStatusGlyph(job, theme)} ${parts.join(` ${theme.fg(\"dim\", \"·\")} `)}`, width);\n}\n\nfunction progressiveHiddenLine(hiddenJobs: AsyncJobState[], theme: Theme, width: number): string {\n\tconst counts = widgetHeaderCounts(hiddenJobs);\n\tconst parts: string[] = [];\n\tif (counts.running.length > 0) parts.push(`${counts.running.length} running`);\n\tif (counts.queued.length > 0) parts.push(`${counts.queued.length} queued`);\n\tconst finished = counts.complete.length + counts.failed.length + counts.paused.length + counts.stopped.length;\n\tif (finished > 0) parts.push(`${finished} finished`);\n\treturn truncLine(theme.fg(\"dim\", ` +${hiddenJobs.length} more${parts.length ? ` (${parts.join(\", \")})` : \"\"}`), width);\n}\n\nfunction buildProgressiveWidgetLines(jobs: AsyncJobState[], theme: Theme, width: number, lockedRows: number, previousKeys: string[]): { lines: string[]; visibleJobKeys: string[] } {\n\tconst rowCount = Math.max(1, lockedRows);\n\tif (rowCount === 1) return { lines: buildSingleLineWidgetLines(jobs, theme, width), visibleJobKeys: [] };\n\n\tconst bodyRows = rowCount - 1;\n\tlet visibleJobKeys = selectProgressiveJobKeys(jobs, previousKeys, bodyRows);\n\tconst jobsByKey = new Map(jobs.map((job) => [progressiveJobKey(job), job]));\n\tlet visibleJobs = visibleJobKeys.map((key) => jobsByKey.get(key)).filter((job): job is AsyncJobState => Boolean(job));\n\tlet hiddenJobs = jobs.filter((job) => !visibleJobKeys.includes(progressiveJobKey(job)));\n\tconst needsHiddenLine = hiddenJobs.length > 0;\n\n\tif (needsHiddenLine && visibleJobs.length >= bodyRows && bodyRows > 0) {\n\t\tvisibleJobs = visibleJobs.slice(0, bodyRows - 1);\n\t\tvisibleJobKeys = visibleJobs.map(progressiveJobKey);\n\t\thiddenJobs = jobs.filter((job) => !visibleJobKeys.includes(progressiveJobKey(job)));\n\t}\n\n\tconst lines = [\n\t\tprogressiveHeaderLine(jobs, theme, width),\n\t\t...visibleJobs.map((job) => progressiveJobLine(job, theme, width)),\n\t];\n\tif (hiddenJobs.length > 0 && lines.length < rowCount) lines.push(progressiveHiddenLine(hiddenJobs, theme, width));\n\twhile (lines.length < rowCount) lines.push(\" \");\n\treturn { lines: lines.slice(0, rowCount), visibleJobKeys };\n}\n\nfunction collapsedWidgetLineBudget(rows: number): number {\n\treturn Math.max(10, Math.min(14, Math.floor(rows * 0.35)));\n}\n\nfunction fitWidgetLineBudget(lines: string[], theme: Theme, width: number, expanded: boolean): string[] {\n\tconst rows = process.stdout.rows || 30;\n\tconst budget = expanded\n\t\t? Math.max(12, Math.min(24, Math.floor(rows * 0.55)))\n\t\t: collapsedWidgetLineBudget(rows);\n\tif (lines.length <= budget) return lines;\n\tconst visibleLines = Math.max(1, budget - 1);\n\tconst hiddenCount = lines.length - visibleLines;\n\tconst hint = expanded\n\t\t? `… ${hiddenCount} live-detail lines hidden`\n\t\t: `… ${hiddenCount} lines hidden · ${liveDetailKeyText()} expands`;\n\treturn [...lines.slice(0, visibleLines), truncLine(theme.fg(\"dim\", hint), width)];\n}\n\nfunction fitAdaptiveWidgetLines(jobs: AsyncJobState[], lines: string[], theme: Theme, width: number, expanded: boolean): string[] {\n\tif (expanded) {\n\t\tresetWidgetLayoutSession();\n\t\treturn fitWidgetLineBudget(lines, theme, width, true);\n\t}\n\n\tconst hasMatchingSession = widgetSessionMatches(expanded);\n\tconst rows = currentTerminalRows();\n\tconst columns = currentTerminalColumns();\n\tconst availableRows = estimateAvailableWidgetRows();\n\n\tif (hasMatchingSession && widgetLayoutSession?.tier === \"single-line\") {\n\t\treturn buildSingleLineWidgetLines(jobs, theme, width);\n\t}\n\n\tif (hasMatchingSession && widgetLayoutSession?.tier === \"progressive\" && widgetLayoutSession.lockedRows !== undefined) {\n\t\tconst rendered = buildProgressiveWidgetLines(jobs, theme, width, widgetLayoutSession.lockedRows, widgetLayoutSession.visibleJobKeys);\n\t\twidgetLayoutSession.visibleJobKeys = rendered.visibleJobKeys;\n\t\treturn rendered.lines;\n\t}\n\n\tif (lines.length <= availableRows) {\n\t\twidgetLayoutSession = { expanded, rows, columns, tier: \"full\", visibleJobKeys: [] };\n\t\treturn fitWidgetLineBudget(lines, theme, width, false);\n\t}\n\n\tif (availableRows <= 2) {\n\t\twidgetLayoutSession = { expanded, rows, columns, tier: \"single-line\", visibleJobKeys: [] };\n\t\treturn buildSingleLineWidgetLines(jobs, theme, width);\n\t}\n\n\tconst lockedRows = Math.min(availableRows, collapsedWidgetLineBudget(rows));\n\tconst rendered = buildProgressiveWidgetLines(jobs, theme, width, lockedRows, []);\n\twidgetLayoutSession = { expanded, rows, columns, tier: \"progressive\", lockedRows, visibleJobKeys: rendered.visibleJobKeys };\n\treturn rendered.lines;\n}\n\nfunction buildWidgetComponent(jobs: AsyncJobState[], expanded: boolean): (_tui: unknown, theme: Theme) => Component {\n\treturn (_tui, theme) => {\n\t\tconst width = getTermWidth();\n\t\tconst lines = expanded\n\t\t\t? buildWidgetLines(jobs, theme, width, true)\n\t\t\t: jobs.length === 1\n\t\t\t\t? compactSingleWidgetLines(jobs[0]!, theme, width)\n\t\t\t\t: buildWidgetLines(jobs, theme, width, false);\n\t\tconst container = new Container();\n\t\tfor (const line of fitAdaptiveWidgetLines(jobs, lines, theme, width, expanded)) container.addChild(new Text(line, 1, 0));\n\t\treturn container;\n\t};\n}\n\nexport function buildWidgetLines(jobs: AsyncJobState[], theme: Theme, width = getTermWidth(), expanded = false): string[] {\n\tif (jobs.length === 0) return [];\n\tif (jobs.length === 1) return buildSingleWidgetLines(jobs[0]!, theme, width, expanded);\n\tconst running = jobs.filter((job) => job.status === \"running\");\n\tconst queued = jobs.filter((job) => job.status === \"queued\");\n\tconst finished = jobs.filter((job) => job.status !== \"running\" && job.status !== \"queued\");\n\n\tconst lines: string[] = [];\n\tconst hasActive = running.length > 0 || queued.length > 0;\n\tconst headerGlyph = running.length > 0 ? runningGlyph(widgetJobsRunningSeed(running)) : hasActive ? \"●\" : \"○\";\n\tlines.push(truncLine(`${theme.fg(hasActive ? \"accent\" : \"dim\", headerGlyph)} ${theme.fg(hasActive ? \"accent\" : \"dim\", \"Async agents\")} ${theme.fg(\"dim\", \"· background\")}`, width));\n\n\tconst items: string[][] = [];\n\tlet hiddenRunning = 0;\n\tlet hiddenFinished = 0;\n\tlet queuedSummaryShown = false;\n\tlet slots = MAX_WIDGET_JOBS;\n\n\tfor (const job of running) {\n\t\tif (slots <= 0) { hiddenRunning++; continue; }\n\t\tconst stats = widgetStats(job, theme);\n\t\titems.push([\n\t\t\t`${widgetStatusGlyph(job, theme)} ${themeBold(theme, widgetJobName(job))}${stats ? ` ${theme.fg(\"dim\", \"·\")} ${stats}` : \"\"}`,\n\t\t\t` ${theme.fg(\"dim\", `⎿ ${widgetActivity(job)}`)}`,\n\t\t\t...widgetParallelAgentDetails(job, theme, expanded, width),\n\t\t]);\n\t\tslots--;\n\t}\n\n\tif (queued.length > 0 && slots > 0) {\n\t\titems.push([`${theme.fg(\"muted\", \"◦\")} ${theme.fg(\"dim\", `${queued.length} queued`)}`]);\n\t\tqueuedSummaryShown = true;\n\t\tslots--;\n\t}\n\n\tfor (const job of finished) {\n\t\tif (slots <= 0) { hiddenFinished++; continue; }\n\t\tconst stats = widgetStats(job, theme);\n\t\titems.push([\n\t\t\t`${widgetStatusGlyph(job, theme)} ${themeBold(theme, widgetJobName(job))}${stats ? ` ${theme.fg(\"dim\", \"·\")} ${stats}` : \"\"}`,\n\t\t\t` ${theme.fg(\"dim\", `⎿ ${widgetActivity(job)}`)}`,\n\t\t\t...widgetParallelAgentDetails(job, theme, expanded, width),\n\t\t]);\n\t\tslots--;\n\t}\n\n\tconst hiddenQueued = queued.length > 0 && !queuedSummaryShown ? queued.length : 0;\n\tconst hiddenTotal = hiddenRunning + hiddenFinished + hiddenQueued;\n\tif (hiddenTotal > 0) {\n\t\tconst parts: string[] = [];\n\t\tif (hiddenRunning > 0) parts.push(`${hiddenRunning} running`);\n\t\tif (hiddenQueued > 0) parts.push(`${hiddenQueued} queued`);\n\t\tif (hiddenFinished > 0) parts.push(`${hiddenFinished} finished`);\n\t\titems.push([theme.fg(\"dim\", `+${hiddenTotal} more (${parts.join(\", \")})`)]);\n\t}\n\n\tfor (let i = 0; i < items.length; i++) {\n\t\tconst item = items[i]!;\n\t\tconst last = i === items.length - 1;\n\t\tconst branch = last ? \"└─\" : \"├─\";\n\t\tconst continuation = last ? \" \" : \"│ \";\n\t\tlines.push(truncLine(`${theme.fg(\"dim\", branch)} ${item[0]}`, width));\n\t\tfor (const detail of item.slice(1)) {\n\t\t\tlines.push(truncLine(`${theme.fg(\"dim\", continuation)} ${detail}`, width));\n\t\t}\n\t}\n\n\treturn lines;\n}\n\n/**\n * Render the async jobs widget\n */\nexport function renderWidget(ctx: ExtensionContext, jobs: AsyncJobState[]): void {\n\tif (jobs.length === 0) {\n\t\tresetWidgetLayoutSession();\n\t\tif (ctx.hasUI) ctx.ui.setWidget(WIDGET_KEY, undefined);\n\t\treturn;\n\t}\n\tif (!ctx.hasUI) return;\n\tctx.ui.setWidget(WIDGET_KEY, buildWidgetComponent(jobs, ctx.ui.getToolsExpanded?.() ?? false));\n}\n\nfunction renderSingleCompact(d: Details, r: Details[\"results\"][number], theme: Theme, frame?: number): Component {\n\tconst output = r.truncation?.text || getSingleResultOutput(r);\n\tconst progress = r.progress || r.progressSummary;\n\tconst isRunning = r.progress?.status === \"running\";\n\tconst contextBadge = d.context === \"fork\" ? theme.fg(\"warning\", \" [fork]\") : \"\";\n\t// lunr: simplified collapsed row — glyph · task summary · agent type · runtime/tools/tokens stats.\n\tconst stats = formatProgressStats(theme, progress);\n\tconst c = new Container();\n\tconst width = getTermWidth() - 4;\n\t// lunr: row line is a per-frame template so the running glyph animates in place (see subagentAnimSink).\n\tconst lead = compactRowLead({ description: r.description ?? r.agent, task: r.task });\n\tconst modelBadge = formatModelThinking(r.model ?? progress?.model, r.thinking ?? progress?.thinking);\n\tconst permissionBadge = r.permissions ? theme.fg(\"dim\", r.permissions) : \"\";\n\tc.addChild(animatedLine((f) => truncLine(`${resultGlyph(r, output, theme, isRunning, undefined, f)} ${themeBold(theme, lead)}${modelBadge ? ` ${theme.fg(\"dim\", \"·\")} ${theme.fg(\"dim\", modelBadge)}` : \"\"}${permissionBadge ? ` ${theme.fg(\"dim\", \"·\")} ${permissionBadge}` : \"\"}${contextBadge}${stats ? ` ${theme.fg(\"dim\", \"·\")} ${stats}` : \"\"}`, width), frame, isRunning));\n\n\tif (isRunning && r.progress) {\n\t\tc.addChild(new Text(formatCompactStatsHangLine(r.progress, width, (s) => theme.fg(\"dim\", s)), 0, 0));\n\t\treturn c;\n\t}\n\n\tc.addChild(new Text(truncLine(theme.fg(\"dim\", ` ⎿ ${resultStatusLine(r, output)}`), width), 0, 0));\n\tconst preview = firstOutputLine(output);\n\tif (preview && r.exitCode === 0 && !hasEmptyTextOutputWithoutOutputTarget(r.task, output)) {\n\t\tc.addChild(new Text(truncLine(theme.fg(\"dim\", ` ${preview}`), width), 0, 0));\n\t}\n\tif (r.sessionFile) c.addChild(new Text(truncLine(theme.fg(\"dim\", ` session: ${shortenPath(r.sessionFile)}`), width), 0, 0));\n\treturn c;\n}\n\nfunction renderMultiCompact(d: Details, theme: Theme, frame?: number): Component {\n\tconst hasRunning = d.progress?.some((p) => p.status === \"running\")\n\t\t|| d.results.some((r) => r.progress?.status === \"running\")\n\t\t|| workflowGraphHasStatus(d, [\"running\"]);\n\tconst stopped = d.results.some((r) => r.stopped && r.progress?.status !== \"running\")\n\t\t|| workflowGraphHasStatus(d, [\"stopped\"]);\n\tconst failed = d.results.some((r) => !r.stopped && r.exitCode !== 0 && r.progress?.status !== \"running\")\n\t\t|| workflowGraphHasStatus(d, [\"failed\"]);\n\tconst paused = d.results.some((r) => (r.interrupted || r.detached) && r.progress?.status !== \"running\")\n\t\t|| workflowGraphHasStatus(d, [\"paused\", \"detached\"]);\n\tlet totalSummary = d.progressSummary;\n\tif (!totalSummary) {\n\t\tlet sawProgress = false;\n\t\tconst summary = { toolCount: 0, tokens: 0, durationMs: 0 };\n\t\tfor (const r of d.results) {\n\t\t\tconst prog = r.progress || r.progressSummary;\n\t\t\tif (!prog) continue;\n\t\t\tsawProgress = true;\n\t\t\tsummary.toolCount += prog.toolCount;\n\t\t\tsummary.tokens += prog.tokens;\n\t\t\tsummary.durationMs = d.mode === \"chain\" ? summary.durationMs + prog.durationMs : Math.max(summary.durationMs, prog.durationMs);\n\t\t}\n\t\tif (sawProgress) totalSummary = summary;\n\t}\n\tconst multiLabel = buildMultiProgressLabel(d, hasRunning);\n\tconst itemTitle = multiLabel.itemTitle;\n\tconst stats = statJoin(theme, [multiLabel.headerLabel, formatProgressStats(theme, totalSummary), formatTotalCostStat(d.totalCost)]);\n\tconst glyph = (f: number | undefined) => hasRunning\n\t\t? theme.fg(\"accent\", runningGlyph(f !== undefined ? (runningSeed(progressRunningSeed(totalSummary), d.currentStepIndex) ?? 0) + f : runningSeed(progressRunningSeed(totalSummary), d.currentStepIndex)))\n\t\t: stopped\n\t\t\t? theme.fg(\"warning\", \"■\")\n\t\t\t: failed\n\t\t\t\t? theme.fg(\"error\", \"✗\")\n\t\t\t: paused\n\t\t\t\t? theme.fg(\"warning\", \"■\")\n\t\t\t\t: theme.fg(\"success\", \"✓\");\n\tconst contextBadge = d.context === \"fork\" ? theme.fg(\"warning\", \" [fork]\") : \"\";\n\tconst c = new Container();\n\tconst width = getTermWidth() - 4;\n\t// lunr: header line is a per-frame template so the running glyph animates in place (see subagentAnimSink).\n\tc.addChild(animatedLine((f) => truncLine(`${glyph(f)} ${theme.fg(\"toolTitle\", theme.bold(d.mode))}${contextBadge}${stats ? ` ${theme.fg(\"dim\", \"·\")} ${stats}` : \"\"}`, width), frame, hasRunning));\n\n\tconst useResultsDirectly = multiLabel.hasParallelInChain || !d.chainAgents?.length;\n\tconst displayStart = multiLabel.showActiveGroupOnly ? multiLabel.groupStartIndex : 0;\n\tconst displayEnd = multiLabel.showActiveGroupOnly ? multiLabel.groupEndIndex : (useResultsDirectly ? d.results.length : d.chainAgents!.length);\n\tconst chainEntries = buildChainRenderEntries(d, multiLabel);\n\tconst renderEntries = chainEntries ?? Array.from({ length: displayEnd - displayStart }, (_, offset): ChainRenderEntry => {\n\t\tconst i = displayStart + offset;\n\t\tconst r = d.results[i];\n\t\tconst fallbackLabel = itemTitle.toLowerCase();\n\t\tconst rowNumber = multiLabel.showActiveGroupOnly ? (i - multiLabel.groupStartIndex + 1) : (i + 1);\n\t\treturn { kind: \"result\", resultIndex: i, rowNumber, agentName: useResultsDirectly ? (r?.agent || `${fallbackLabel}-${rowNumber}`) : (d.chainAgents![i] || r?.agent || `${fallbackLabel}-${rowNumber}`) };\n\t});\n\tfor (const entry of renderEntries) {\n\t\tif (entry.kind === \"placeholder\") {\n\t\t\tconst glyph = widgetStepGlyph(entry.status as AsyncJobStep[\"status\"], theme);\n\t\t\tconst statusLabel = widgetStepStatus(entry.status as AsyncJobStep[\"status\"], theme);\n\t\t\tc.addChild(new Text(truncLine(` ${glyph} ${entry.stepLabel}: ${themeBold(theme, entry.agentName)} ${theme.fg(\"dim\", \"·\")} ${statusLabel}`, width), 0, 0));\n\t\t\tif (entry.error) c.addChild(new Text(truncLine(theme.fg(\"error\", ` ⎿ Error: ${entry.error}`), width), 0, 0));\n\t\t\tcontinue;\n\t\t}\n\t\tconst i = entry.resultIndex;\n\t\tconst r = d.results[i];\n\t\tconst rowNumber = entry.rowNumber;\n\t\tconst agentName = entry.agentName;\n\t\tif (!r) {\n\t\t\tconst pendingLabel = chainEntries ? resultRowLabel(d, multiLabel, i, rowNumber) : `${itemTitle} ${rowNumber}`;\n\t\t\tc.addChild(new Text(truncLine(theme.fg(\"dim\", ` ◦ ${pendingLabel}: ${agentName} · pending`), width), 0, 0));\n\t\t\tcontinue;\n\t\t}\n\t\tconst output = getSingleResultOutput(r);\n\t\tconst progressFromArray = d.progress?.find((p) => p.index === i) || d.progress?.find((p) => p.agent === r.agent && p.status === \"running\");\n\t\tconst rProg = r.progress || progressFromArray || r.progressSummary;\n\t\tconst rRunning = rProg && \"status\" in rProg && rProg.status === \"running\";\n\t\tconst rPending = rProg && \"status\" in rProg && rProg.status === \"pending\";\n\t\tconst stepStats = formatProgressStats(theme, rProg);\n\t\tconst pendingLabel = rPending ? ` ${theme.fg(\"dim\", \"· pending\")}` : \"\";\n\t\t// lunr: simplified collapsed row — glyph · task summary · agent type · runtime/tools/tokens stats.\n\t\t// lunr: row line is a per-frame template so the running glyph animates in place (see subagentAnimSink).\n\t\tconst lead = compactRowLead({ description: r.description ?? agentName, task: r.task });\n\t\tconst permissionBadge = r.permissions ? theme.fg(\"dim\", r.permissions) : \"\";\n\t\tc.addChild(animatedLine((f) => {\n\t\t\tconst glyph = rPending ? theme.fg(\"dim\", \"◦\") : resultGlyph(r, output, theme, rRunning, progressRunningSeed(rProg), f);\n\t\t\treturn truncLine(` ${glyph} ${themeBold(theme, lead)}${permissionBadge ? ` ${theme.fg(\"dim\", \"·\")} ${permissionBadge}` : \"\"}${stepStats ? ` ${theme.fg(\"dim\", \"·\")} ${stepStats}` : \"\"}${pendingLabel}`, width);\n\t\t}, frame, !!rRunning));\n\t\tif (rRunning && rProg && \"status\" in rProg) {\n\t\t\tc.addChild(new Text(formatCompactStatsHangLine(\n\t\t\t\trProg,\n\t\t\t\twidth,\n\t\t\t\t(s) => theme.fg(\"dim\", s),\n\t\t\t\t\" ⎿ \",\n\t\t\t), 0, 0));\n\t\t} else if (!rPending && (r.exitCode !== 0 || r.interrupted || r.detached || hasEmptyTextOutputWithoutOutputTarget(r.task, output))) {\n\t\t\tc.addChild(new Text(truncLine(theme.fg(r.exitCode !== 0 ? \"error\" : \"dim\", ` ⎿ ${resultStatusLine(r, output)}`), width), 0, 0));\n\t\t}\n\t}\n\treturn c;\n}\n\n/**\n * Render a subagent result\n */\nexport function renderSubagentResult(\n\tresult: AgentToolResult<Details>,\n\toptions: { expanded: boolean },\n\ttheme: Theme,\n\tframe?: number,\n): Component {\n\tconst d = result.details;\n\tif (!d || !d.results.length) {\n\t\tconst t = result.content[0];\n\t\tconst text = t?.type === \"text\" ? t.text : \"(no output)\";\n\t\tconst contextPrefix = d?.context === \"fork\" ? `${theme.fg(\"warning\", \"[fork]\")} ` : \"\";\n\t\tconst width = getTermWidth() - 4;\n\t\tif (!text.includes(\"\\n\")) return new Text(truncLine(`${contextPrefix}${text}`, width), 0, 0);\n\t\tconst c = new Container();\n\t\tconst wrapped = wrapPlainText(`${contextPrefix}${text}`, width);\n\t\tfor (const line of wrapped) c.addChild(new Text(line, 0, 0));\n\t\treturn c;\n\t}\n\n\tconst expanded = options.expanded;\n\tconst mdTheme = getMarkdownTheme();\n\n\tif (d.mode === \"single\" && d.results.length === 1) {\n\t\tconst r = d.results[0];\n\t\tif (!expanded) return renderSingleCompact(d, r, theme, frame);\n\t\tconst isRunning = r.progress?.status === \"running\";\n\t\tconst icon = isRunning\n\t\t\t? theme.fg(\"warning\", \"running\")\n\t\t\t: r.detached\n\t\t\t\t? theme.fg(\"warning\", \"detached\")\n\t\t\t\t: r.exitCode === 0\n\t\t\t\t\t? theme.fg(\"success\", \"ok\")\n\t\t\t\t\t: theme.fg(\"error\", \"failed\");\n\t\tconst contextBadge = d.context === \"fork\" ? theme.fg(\"warning\", \" [fork]\") : \"\";\n\t\tconst output = r.truncation?.text || getSingleResultOutput(r);\n\n\t\tconst progressInfo = isRunning && r.progress\n\t\t\t? ` | ${r.progress.toolCount} tools, ${formatTokens(r.progress.tokens)} tok, ${formatDuration(r.progress.durationMs)}`\n\t\t\t: r.progressSummary\n\t\t\t\t? ` | ${r.progressSummary.toolCount} tools, ${formatTokens(r.progressSummary.tokens)} tok, ${formatDuration(r.progressSummary.durationMs)}`\n\t\t\t\t: \"\";\n\n\t\tconst w = getTermWidth() - 4;\n\t\tconst fit = (text: string) => expanded ? text : truncLine(text, w);\n\t\tconst toolCallLines = getToolCallLines(r, expanded);\n\t\tconst c = new Container();\n\t\tc.addChild(new Text(fit(`${icon} ${theme.fg(\"toolTitle\", theme.bold(r.agent))}${contextBadge}${progressInfo}`), 0, 0));\n\t\tc.addChild(new Spacer(1));\n\t\tconst taskMaxLen = Math.max(20, w - 8);\n\t\tconst taskPreview = expanded || r.task.length <= taskMaxLen\n\t\t\t? r.task\n\t\t\t: `${r.task.slice(0, taskMaxLen)}...`;\n\t\tc.addChild(\n\t\t\tnew Text(fit(theme.fg(\"dim\", `Task: ${taskPreview}`)), 0, 0),\n\t\t);\n\t\tc.addChild(new Spacer(1));\n\n\t\tif (isRunning && r.progress) {\n\t\t\tconst progressSnapshotNow = snapshotNowForProgress(r.progress);\n\t\t\tconst toolLine = formatCurrentToolLine(r.progress, w, expanded, progressSnapshotNow);\n\t\t\tif (toolLine) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"warning\", `> ${toolLine}`)), 0, 0));\n\t\t\t}\n\t\t\tconst liveStatusLine = buildLiveStatusLine(r.progress, progressSnapshotNow);\n\t\t\tif (liveStatusLine) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"accent\", liveStatusLine)), 0, 0));\n\t\t\t}\n\t\t\tc.addChild(new Text(fit(theme.fg(\"accent\", liveDetailHintText())), 0, 0));\n\t\t\tif (r.artifactPaths) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", `Artifacts: ${shortenPath(r.artifactPaths.outputPath)}`)), 0, 0));\n\t\t\t}\n\t\t\tif (r.progress.recentTools?.length) {\n\t\t\t\tfor (const t of r.progress.recentTools.slice(-3)) {\n\t\t\t\t\tconst maxArgsLen = Math.max(40, w - 24);\n\t\t\t\t\tconst argsPreview = expanded || t.args.length <= maxArgsLen\n\t\t\t\t\t\t? t.args\n\t\t\t\t\t\t: `${t.args.slice(0, maxArgsLen)}...`;\n\t\t\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", `${t.tool}: ${argsPreview}`)), 0, 0));\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const line of (r.progress.recentOutput ?? []).slice(-5)) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` ${line}`)), 0, 0));\n\t\t\t}\n\t\t\tif (toolLine || liveStatusLine || r.progress.recentTools?.length || r.progress.recentOutput?.length || r.artifactPaths) {\n\t\t\t\tc.addChild(new Spacer(1));\n\t\t\t}\n\t\t}\n\n\t\tif (expanded) {\n\t\t\tfor (const line of toolCallLines) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"muted\", line)), 0, 0));\n\t\t\t}\n\t\t\tif (toolCallLines.length) c.addChild(new Spacer(1));\n\t\t}\n\n\t\tif (output) c.addChild(new Markdown(output, 0, 0, mdTheme));\n\t\tc.addChild(new Spacer(1));\n\t\tif (r.skills?.length) {\n\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", `Skills: ${r.skills.join(\", \")}`)), 0, 0));\n\t\t}\n\t\tif (r.skillsWarning) {\n\t\t\tc.addChild(new Text(fit(theme.fg(\"warning\", `Warning: ${r.skillsWarning}`)), 0, 0));\n\t\t}\n\t\tif (r.attemptedModels && r.attemptedModels.length > 1) {\n\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", `Fallbacks: ${r.attemptedModels.join(\" → \")}`)), 0, 0));\n\t\t}\n\t\tc.addChild(new Text(fit(theme.fg(\"dim\", formatUsage(r.usage, r.model))), 0, 0));\n\t\tif (r.sessionFile) {\n\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", `Session: ${shortenPath(r.sessionFile)}`)), 0, 0));\n\t\t}\n\n\t\tif (!isRunning && r.artifactPaths) {\n\t\t\tc.addChild(new Spacer(1));\n\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", `Artifacts: ${shortenPath(r.artifactPaths.outputPath)}`)), 0, 0));\n\t\t}\n\t\treturn c;\n\t}\n\n\tif (!expanded) return renderMultiCompact(d, theme, frame);\n\n\tconst hasRunning = d.progress?.some((p) => p.status === \"running\") \n\t\t|| d.results.some((r) => r.progress?.status === \"running\")\n\t\t|| workflowGraphHasStatus(d, [\"running\"]);\n\tconst ok = d.results.filter((r) => r.progress?.status === \"completed\" || (r.exitCode === 0 && r.progress?.status !== \"running\")).length;\n\tconst hasEmptyWithoutTarget = d.results.some((r) =>\n\t\tr.exitCode === 0\n\t\t&& r.progress?.status !== \"running\"\n\t\t&& hasEmptyTextOutputWithoutOutputTarget(r.task, getSingleResultOutput(r)),\n\t);\n\tconst hasWorkflowFailure = workflowGraphHasStatus(d, [\"failed\"]);\n\tconst hasWorkflowStop = d.results.some((r) => r.stopped && r.progress?.status !== \"running\") || workflowGraphHasStatus(d, [\"stopped\"]);\n\tconst hasWorkflowPause = workflowGraphHasStatus(d, [\"paused\", \"detached\"]);\n\tconst icon = hasRunning\n\t\t? theme.fg(\"warning\", \"running\")\n\t\t: hasEmptyWithoutTarget\n\t\t\t? theme.fg(\"warning\", \"warning\")\n\t\t\t: hasWorkflowFailure\n\t\t\t\t? theme.fg(\"error\", \"failed\")\n\t\t\t\t: hasWorkflowStop\n\t\t\t\t\t? theme.fg(\"warning\", \"stopped\")\n\t\t\t\t\t: hasWorkflowPause\n\t\t\t\t\t\t? theme.fg(\"warning\", \"paused\")\n\t\t\t\t\t: ok === d.results.length\n\t\t\t\t\t\t? theme.fg(\"success\", \"ok\")\n\t\t\t\t\t\t: theme.fg(\"error\", \"failed\");\n\n\tconst totalSummary =\n\t\td.progressSummary ||\n\t\td.results.reduce(\n\t\t\t(acc, r) => {\n\t\t\t\tconst prog = r.progress || r.progressSummary;\n\t\t\t\tif (prog) {\n\t\t\t\t\tacc.toolCount += prog.toolCount;\n\t\t\t\t\tacc.tokens += prog.tokens;\n\t\t\t\t\tacc.durationMs =\n\t\t\t\t\t\td.mode === \"chain\"\n\t\t\t\t\t\t\t? acc.durationMs + prog.durationMs\n\t\t\t\t\t\t\t: Math.max(acc.durationMs, prog.durationMs);\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{ toolCount: 0, tokens: 0, durationMs: 0 },\n\t\t);\n\n\tconst summaryParts = [\n\t\ttotalSummary.toolCount || totalSummary.tokens\n\t\t\t? `${totalSummary.toolCount} tools, ${formatTokens(totalSummary.tokens)} tok, ${formatDuration(totalSummary.durationMs)}`\n\t\t\t: \"\",\n\t\tformatTotalCostStat(d.totalCost),\n\t].filter(Boolean);\n\tconst summaryStr = summaryParts.length ? ` | ${summaryParts.join(\", \")}` : \"\";\n\n\tconst modeLabel = d.mode;\n\tconst contextBadge = d.context === \"fork\" ? theme.fg(\"warning\", \" [fork]\") : \"\";\n\tconst multiLabel = buildMultiProgressLabel(d, hasRunning);\n\tconst itemTitle = multiLabel.itemTitle;\n\t\n\tconst chainVis = d.chainAgents?.length && !multiLabel.hasParallelInChain\n\t\t? d.chainAgents\n\t\t\t\t.map((agent, i) => {\n\t\t\t\t\tconst result = d.results[i];\n\t\t\t\t\tconst isFailed = result && result.exitCode !== 0 && result.progress?.status !== \"running\";\n\t\t\t\t\tconst isComplete = result && result.exitCode === 0 && result.progress?.status !== \"running\";\n\t\t\t\t\tconst isEmptyWithoutTarget = Boolean(result)\n\t\t\t\t\t\t&& Boolean(isComplete)\n\t\t\t\t\t\t&& hasEmptyTextOutputWithoutOutputTarget(result.task, getSingleResultOutput(result));\n\t\t\t\t\tconst isCurrent = i === (d.currentStepIndex ?? d.results.length);\n\t\t\t\t\tconst stepIcon = isFailed\n\t\t\t\t\t\t? theme.fg(\"error\", \"failed\")\n\t\t\t\t\t\t: isEmptyWithoutTarget\n\t\t\t\t\t\t\t? theme.fg(\"warning\", \"warning\")\n\t\t\t\t\t\t\t: isComplete\n\t\t\t\t\t\t\t\t? theme.fg(\"success\", \"done\")\n\t\t\t\t\t\t\t\t: isCurrent && hasRunning\n\t\t\t\t\t\t\t\t\t? theme.fg(\"warning\", \"running\")\n\t\t\t\t\t\t\t\t\t: theme.fg(\"dim\", \"pending\");\n\t\t\t\t\treturn `${stepIcon} ${agent}`;\n\t\t\t\t})\n\t\t\t\t.join(theme.fg(\"dim\", \" → \"))\n\t\t: null;\n\n\tconst w = getTermWidth() - 4;\n\tconst fit = (text: string) => expanded ? text : truncLine(text, w);\n\tconst c = new Container();\n\tc.addChild(\n\t\tnew Text(\n\t\t\tfit(`${icon} ${theme.fg(\"toolTitle\", theme.bold(modeLabel))}${contextBadge} · ${multiLabel.headerLabel}${summaryStr}`),\n\t\t\t0,\n\t\t\t0,\n\t\t),\n\t);\n\tif (chainVis) {\n\t\tc.addChild(new Text(fit(` ${chainVis}`), 0, 0));\n\t}\n\n\tconst useResultsDirectly = multiLabel.hasParallelInChain || !d.chainAgents?.length;\n\tconst displayStart = multiLabel.showActiveGroupOnly ? multiLabel.groupStartIndex : 0;\n\tconst displayEnd = multiLabel.showActiveGroupOnly ? multiLabel.groupEndIndex : (useResultsDirectly ? d.results.length : d.chainAgents!.length);\n\tconst chainEntries = buildChainRenderEntries(d, multiLabel);\n\tconst renderEntries = chainEntries ?? Array.from({ length: displayEnd - displayStart }, (_, offset): ChainRenderEntry => {\n\t\tconst i = displayStart + offset;\n\t\tconst r = d.results[i];\n\t\tconst rowNumber = multiLabel.showActiveGroupOnly ? (i - multiLabel.groupStartIndex + 1) : (i + 1);\n\t\treturn { kind: \"result\", resultIndex: i, rowNumber, agentName: useResultsDirectly ? (r?.agent || `step-${rowNumber}`) : (d.chainAgents![i] || r?.agent || `step-${rowNumber}`) };\n\t});\n\n\tc.addChild(new Spacer(1));\n\n\tfor (const entry of renderEntries) {\n\t\tif (entry.kind === \"placeholder\") {\n\t\t\tconst statusLabel = widgetStepStatus(entry.status as AsyncJobStep[\"status\"], theme);\n\t\t\tc.addChild(new Text(fit(` ${statusLabel} ${entry.stepLabel}: ${theme.bold(entry.agentName)}`), 0, 0));\n\t\t\tc.addChild(new Text(theme.fg(entry.status === \"failed\" ? \"error\" : \"dim\", ` status: ${entry.status}`), 0, 0));\n\t\t\tif (entry.error) c.addChild(new Text(theme.fg(\"error\", ` error: ${entry.error}`), 0, 0));\n\t\t\tc.addChild(new Spacer(1));\n\t\t\tcontinue;\n\t\t}\n\t\tconst i = entry.resultIndex;\n\t\tconst r = d.results[i];\n\t\tconst rowNumber = entry.rowNumber;\n\t\tconst agentName = entry.agentName;\n\n\t\tif (!r) {\n\t\t\tconst pendingLabel = chainEntries ? resultRowLabel(d, multiLabel, i, rowNumber) : `${itemTitle} ${rowNumber}`;\n\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` ${pendingLabel}: ${agentName}`)), 0, 0));\n\t\t\tc.addChild(new Text(theme.fg(\"dim\", ` status: pending`), 0, 0));\n\t\t\tc.addChild(new Spacer(1));\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst progressFromArray = d.progress?.find((p) => p.index === i) \n\t\t\t|| d.progress?.find((p) => p.agent === r.agent && p.status === \"running\");\n\t\tconst rProg = r.progress || progressFromArray || r.progressSummary;\n\t\tconst rRunning = rProg?.status === \"running\";\n\t\tconst stepNumber = typeof rProg?.index === \"number\" ? rProg.index + 1 : i + 1;\n\n\t\tconst resultOutput = getSingleResultOutput(r);\n\t\tconst statusIcon = rRunning\n\t\t\t? theme.fg(\"warning\", \"running\")\n\t\t\t: r.exitCode !== 0\n\t\t\t\t? theme.fg(\"error\", \"failed\")\n\t\t\t\t: hasEmptyTextOutputWithoutOutputTarget(r.task, resultOutput)\n\t\t\t\t\t? theme.fg(\"warning\", \"warning\")\n\t\t\t\t\t: theme.fg(\"success\", \"done\");\n\t\tconst stats = rProg ? ` | ${rProg.toolCount} tools, ${formatDuration(rProg.durationMs)}` : \"\";\n\t\tconst modelDisplay = modelThinkingBadge(theme, r.model);\n\t\tconst stepLabel = resultRowLabel(d, multiLabel, i, stepNumber);\n\t\tconst stepHeader = rRunning\n\t\t\t? `${statusIcon} ${stepLabel}: ${theme.bold(theme.fg(\"warning\", r.agent))}${modelDisplay}${stats}`\n\t\t\t: `${statusIcon} ${stepLabel}: ${theme.bold(r.agent)}${modelDisplay}${stats}`;\n\t\tconst toolCallLines = getToolCallLines(r, expanded);\n\t\tc.addChild(new Text(fit(stepHeader), 0, 0));\n\n\t\tconst taskMaxLen = Math.max(20, w - 12);\n\t\tconst taskPreview = expanded || r.task.length <= taskMaxLen\n\t\t\t? r.task\n\t\t\t: `${r.task.slice(0, taskMaxLen)}...`;\n\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` task: ${taskPreview}`)), 0, 0));\n\n\t\tif (r.skills?.length) {\n\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` skills: ${r.skills.join(\", \")}`)), 0, 0));\n\t\t}\n\t\tif (r.skillsWarning) {\n\t\t\tc.addChild(new Text(fit(theme.fg(\"warning\", ` Warning: ${r.skillsWarning}`)), 0, 0));\n\t\t}\n\t\tif (r.attemptedModels && r.attemptedModels.length > 1) {\n\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` fallbacks: ${r.attemptedModels.join(\" → \")}`)), 0, 0));\n\t\t}\n\n\t\tif (rRunning && rProg) {\n\t\t\tif (rProg.skills?.length) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"accent\", ` skills: ${rProg.skills.join(\", \")}`)), 0, 0));\n\t\t\t}\n\t\t\tconst progressSnapshotNow = snapshotNowForProgress(rProg);\n\t\t\tconst toolLine = formatCurrentToolLine(rProg, w, expanded, progressSnapshotNow);\n\t\t\tif (toolLine) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"warning\", ` > ${toolLine}`)), 0, 0));\n\t\t\t}\n\t\t\tconst liveStatusLine = buildLiveStatusLine(rProg, progressSnapshotNow);\n\t\t\tif (liveStatusLine) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"accent\", ` ${liveStatusLine}`)), 0, 0));\n\t\t\t}\n\t\t\tc.addChild(new Text(fit(theme.fg(\"accent\", ` ${liveDetailHintText()}`)), 0, 0));\n\t\t\tif (r.artifactPaths) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` artifacts: ${shortenPath(r.artifactPaths.outputPath)}`)), 0, 0));\n\t\t\t}\n\t\t\tif (rProg.recentTools?.length) {\n\t\t\t\tfor (const t of rProg.recentTools.slice(-3)) {\n\t\t\t\t\tconst maxArgsLen = Math.max(40, w - 30);\n\t\t\t\t\tconst argsPreview = expanded || t.args.length <= maxArgsLen\n\t\t\t\t\t\t? t.args\n\t\t\t\t\t\t: `${t.args.slice(0, maxArgsLen)}...`;\n\t\t\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` ${t.tool}: ${argsPreview}`)), 0, 0));\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst recentLines = (rProg.recentOutput ?? []).slice(-5);\n\t\t\tfor (const line of recentLines) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` ${line}`)), 0, 0));\n\t\t\t}\n\t\t}\n\n\t\tif (!rRunning && r.artifactPaths) {\n\t\t\tc.addChild(new Text(fit(theme.fg(\"dim\", ` artifacts: ${shortenPath(r.artifactPaths.outputPath)}`)), 0, 0));\n\t\t}\n\n\t\tif (expanded && !rRunning) {\n\t\t\tfor (const line of toolCallLines) {\n\t\t\t\tc.addChild(new Text(fit(theme.fg(\"muted\", ` ${line}`)), 0, 0));\n\t\t\t}\n\t\t\tif (toolCallLines.length) c.addChild(new Spacer(1));\n\t\t}\n\n\t\tc.addChild(new Spacer(1));\n\t}\n\n\tif (d.artifacts) {\n\t\tc.addChild(new Spacer(1));\n\t\tc.addChild(new Text(fit(theme.fg(\"dim\", `Artifacts dir: ${shortenPath(d.artifacts.dir)}`)), 0, 0));\n\t}\n\treturn c;\n}\n"]}
|