indusagi-coding-agent 0.1.22 → 0.1.24

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.
Files changed (222) hide show
  1. package/CHANGELOG.md +72 -11
  2. package/README.md +2 -36
  3. package/dist/cli/args.d.ts +117 -1
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +231 -64
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/cli/config-selector.d.ts +58 -2
  8. package/dist/cli/config-selector.d.ts.map +1 -1
  9. package/dist/cli/config-selector.js +130 -12
  10. package/dist/cli/config-selector.js.map +1 -1
  11. package/dist/cli/file-processor.d.ts +70 -2
  12. package/dist/cli/file-processor.d.ts.map +1 -1
  13. package/dist/cli/file-processor.js +240 -15
  14. package/dist/cli/file-processor.js.map +1 -1
  15. package/dist/cli/list-models.d.ts +63 -3
  16. package/dist/cli/list-models.d.ts.map +1 -1
  17. package/dist/cli/list-models.js +202 -27
  18. package/dist/cli/list-models.js.map +1 -1
  19. package/dist/cli/login-handler.d.ts +82 -8
  20. package/dist/cli/login-handler.d.ts.map +1 -1
  21. package/dist/cli/login-handler.js +410 -77
  22. package/dist/cli/login-handler.js.map +1 -1
  23. package/dist/cli/session-picker.d.ts +74 -2
  24. package/dist/cli/session-picker.d.ts.map +1 -1
  25. package/dist/cli/session-picker.js +236 -12
  26. package/dist/cli/session-picker.js.map +1 -1
  27. package/dist/core/agent-session.d.ts +214 -9
  28. package/dist/core/agent-session.d.ts.map +1 -1
  29. package/dist/core/agent-session.js +214 -9
  30. package/dist/core/agent-session.js.map +1 -1
  31. package/dist/core/bash-executor.d.ts +302 -12
  32. package/dist/core/bash-executor.d.ts.map +1 -1
  33. package/dist/core/bash-executor.js +302 -12
  34. package/dist/core/bash-executor.js.map +1 -1
  35. package/dist/core/diagnostics.d.ts +191 -0
  36. package/dist/core/diagnostics.d.ts.map +1 -1
  37. package/dist/core/diagnostics.js +142 -0
  38. package/dist/core/diagnostics.js.map +1 -1
  39. package/dist/core/event-bus.d.ts +146 -0
  40. package/dist/core/event-bus.d.ts.map +1 -1
  41. package/dist/core/event-bus.js +93 -0
  42. package/dist/core/event-bus.js.map +1 -1
  43. package/dist/core/export-html/ansi-to-html.d.ts +4 -0
  44. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  45. package/dist/core/export-html/ansi-to-html.js +4 -0
  46. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  47. package/dist/core/export-html/index.d.ts +128 -0
  48. package/dist/core/export-html/index.d.ts.map +1 -1
  49. package/dist/core/export-html/index.js +128 -0
  50. package/dist/core/export-html/index.js.map +1 -1
  51. package/dist/core/export-html/tool-renderer.d.ts +4 -0
  52. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  53. package/dist/core/export-html/tool-renderer.js +4 -0
  54. package/dist/core/export-html/tool-renderer.js.map +1 -1
  55. package/dist/core/keybindings.d.ts +142 -0
  56. package/dist/core/keybindings.d.ts.map +1 -1
  57. package/dist/core/keybindings.js +142 -0
  58. package/dist/core/keybindings.js.map +1 -1
  59. package/dist/core/model-registry.d.ts +98 -1
  60. package/dist/core/model-registry.d.ts.map +1 -1
  61. package/dist/core/model-registry.js +98 -1
  62. package/dist/core/model-registry.js.map +1 -1
  63. package/dist/core/model-resolver.d.ts +99 -1
  64. package/dist/core/model-resolver.d.ts.map +1 -1
  65. package/dist/core/model-resolver.js +99 -1
  66. package/dist/core/model-resolver.js.map +1 -1
  67. package/dist/core/prompt-templates.js.map +1 -1
  68. package/dist/core/sdk.d.ts +1 -1
  69. package/dist/core/sdk.d.ts.map +1 -1
  70. package/dist/core/sdk.js +0 -2
  71. package/dist/core/sdk.js.map +1 -1
  72. package/dist/core/session-manager.d.ts +127 -0
  73. package/dist/core/session-manager.d.ts.map +1 -1
  74. package/dist/core/session-manager.js +125 -0
  75. package/dist/core/session-manager.js.map +1 -1
  76. package/dist/core/skills.js.map +1 -1
  77. package/dist/core/subagents.js.map +1 -1
  78. package/dist/core/tools/bash.d.ts +391 -11
  79. package/dist/core/tools/bash.d.ts.map +1 -1
  80. package/dist/core/tools/bash.js +269 -2
  81. package/dist/core/tools/bash.js.map +1 -1
  82. package/dist/core/tools/edit.d.ts +284 -6
  83. package/dist/core/tools/edit.d.ts.map +1 -1
  84. package/dist/core/tools/edit.js +238 -0
  85. package/dist/core/tools/edit.js.map +1 -1
  86. package/dist/core/tools/find.d.ts +169 -5
  87. package/dist/core/tools/find.d.ts.map +1 -1
  88. package/dist/core/tools/find.js +136 -0
  89. package/dist/core/tools/find.js.map +1 -1
  90. package/dist/core/tools/grep.d.ts +285 -5
  91. package/dist/core/tools/grep.d.ts.map +1 -1
  92. package/dist/core/tools/grep.js +247 -0
  93. package/dist/core/tools/grep.js.map +1 -1
  94. package/dist/core/tools/index.d.ts +0 -18
  95. package/dist/core/tools/index.d.ts.map +1 -1
  96. package/dist/core/tools/index.js +1 -23
  97. package/dist/core/tools/index.js.map +1 -1
  98. package/dist/core/tools/ls.d.ts +6 -0
  99. package/dist/core/tools/ls.d.ts.map +1 -1
  100. package/dist/core/tools/ls.js +6 -0
  101. package/dist/core/tools/ls.js.map +1 -1
  102. package/dist/core/tools/read.d.ts +308 -7
  103. package/dist/core/tools/read.d.ts.map +1 -1
  104. package/dist/core/tools/read.js +231 -0
  105. package/dist/core/tools/read.js.map +1 -1
  106. package/dist/core/tools/webfetch.d.ts +118 -3
  107. package/dist/core/tools/webfetch.d.ts.map +1 -1
  108. package/dist/core/tools/webfetch.js +118 -3
  109. package/dist/core/tools/webfetch.js.map +1 -1
  110. package/dist/core/tools/websearch.d.ts +130 -3
  111. package/dist/core/tools/websearch.d.ts.map +1 -1
  112. package/dist/core/tools/websearch.js +130 -3
  113. package/dist/core/tools/websearch.js.map +1 -1
  114. package/dist/core/tools/write.d.ts +251 -5
  115. package/dist/core/tools/write.d.ts.map +1 -1
  116. package/dist/core/tools/write.js +210 -0
  117. package/dist/core/tools/write.js.map +1 -1
  118. package/dist/modes/interactive/components/assistant-message.d.ts +164 -1
  119. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  120. package/dist/modes/interactive/components/assistant-message.js +164 -1
  121. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  122. package/dist/modes/interactive/components/bash-execution.d.ts +297 -1
  123. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  124. package/dist/modes/interactive/components/bash-execution.js +297 -1
  125. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  126. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  127. package/dist/modes/interactive/components/tool-execution.js +251 -1
  128. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  129. package/dist/modes/interactive/components/user-message.d.ts +186 -1
  130. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  131. package/dist/modes/interactive/components/user-message.js +186 -1
  132. package/dist/modes/interactive/components/user-message.js.map +1 -1
  133. package/dist/modes/interactive/interactive-mode.d.ts +1567 -13
  134. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  135. package/dist/modes/interactive/interactive-mode.js +1567 -13
  136. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  137. package/dist/modes/interactive/theme/theme.d.ts +422 -0
  138. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  139. package/dist/modes/interactive/theme/theme.js +422 -0
  140. package/dist/modes/interactive/theme/theme.js.map +1 -1
  141. package/dist/modes/print-mode.d.ts +538 -5
  142. package/dist/modes/print-mode.d.ts.map +1 -1
  143. package/dist/modes/print-mode.js +538 -5
  144. package/dist/modes/print-mode.js.map +1 -1
  145. package/dist/modes/rpc/rpc-client.d.ts +921 -8
  146. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  147. package/dist/modes/rpc/rpc-client.js +921 -8
  148. package/dist/modes/rpc/rpc-client.js.map +1 -1
  149. package/dist/modes/rpc/rpc-mode.d.ts +802 -9
  150. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  151. package/dist/modes/rpc/rpc-mode.js +802 -9
  152. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  153. package/dist/modes/rpc/rpc-types.d.ts +356 -3
  154. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  155. package/dist/modes/rpc/rpc-types.js +356 -3
  156. package/dist/modes/rpc/rpc-types.js.map +1 -1
  157. package/dist/modes/shared.d.ts +386 -0
  158. package/dist/modes/shared.d.ts.map +1 -0
  159. package/dist/modes/shared.js +543 -0
  160. package/dist/modes/shared.js.map +1 -0
  161. package/dist/utils/array.d.ts +389 -0
  162. package/dist/utils/array.d.ts.map +1 -0
  163. package/dist/utils/array.js +585 -0
  164. package/dist/utils/array.js.map +1 -0
  165. package/dist/utils/color-formatter.d.ts +318 -0
  166. package/dist/utils/color-formatter.d.ts.map +1 -0
  167. package/dist/utils/color-formatter.js +442 -0
  168. package/dist/utils/color-formatter.js.map +1 -0
  169. package/dist/utils/data-transformer.d.ts +326 -0
  170. package/dist/utils/data-transformer.d.ts.map +1 -0
  171. package/dist/utils/data-transformer.js +512 -0
  172. package/dist/utils/data-transformer.js.map +1 -0
  173. package/dist/utils/date-formatter.d.ts +281 -0
  174. package/dist/utils/date-formatter.d.ts.map +1 -0
  175. package/dist/utils/date-formatter.js +503 -0
  176. package/dist/utils/date-formatter.js.map +1 -0
  177. package/dist/utils/error-handler.d.ts +541 -0
  178. package/dist/utils/error-handler.d.ts.map +1 -0
  179. package/dist/utils/error-handler.js +726 -0
  180. package/dist/utils/error-handler.js.map +1 -0
  181. package/dist/utils/file-operations.d.ts +297 -0
  182. package/dist/utils/file-operations.d.ts.map +1 -0
  183. package/dist/utils/file-operations.js +505 -0
  184. package/dist/utils/file-operations.js.map +1 -0
  185. package/dist/utils/frontmatter.d.ts +268 -6
  186. package/dist/utils/frontmatter.d.ts.map +1 -1
  187. package/dist/utils/frontmatter.js +500 -21
  188. package/dist/utils/frontmatter.js.map +1 -1
  189. package/dist/utils/json-formatter.d.ts +259 -0
  190. package/dist/utils/json-formatter.d.ts.map +1 -0
  191. package/dist/utils/json-formatter.js +517 -0
  192. package/dist/utils/json-formatter.js.map +1 -0
  193. package/dist/utils/logger.d.ts +176 -0
  194. package/dist/utils/logger.d.ts.map +1 -0
  195. package/dist/utils/logger.js +346 -0
  196. package/dist/utils/logger.js.map +1 -0
  197. package/dist/utils/markdown-formatter.d.ts +211 -0
  198. package/dist/utils/markdown-formatter.d.ts.map +1 -0
  199. package/dist/utils/markdown-formatter.js +482 -0
  200. package/dist/utils/markdown-formatter.js.map +1 -0
  201. package/dist/utils/path-validator.d.ts +603 -0
  202. package/dist/utils/path-validator.d.ts.map +1 -0
  203. package/dist/utils/path-validator.js +870 -0
  204. package/dist/utils/path-validator.js.map +1 -0
  205. package/dist/utils/string-formatter.d.ts +609 -0
  206. package/dist/utils/string-formatter.d.ts.map +1 -0
  207. package/dist/utils/string-formatter.js +806 -0
  208. package/dist/utils/string-formatter.js.map +1 -0
  209. package/dist/utils/type-guards.d.ts +629 -0
  210. package/dist/utils/type-guards.d.ts.map +1 -0
  211. package/dist/utils/type-guards.js +662 -0
  212. package/dist/utils/type-guards.js.map +1 -0
  213. package/docs/COMPLETE-GUIDE.md +300 -0
  214. package/docs/MODES-ARCHITECTURE.md +565 -0
  215. package/docs/PRINT-MODE-GUIDE.md +456 -0
  216. package/docs/README.md +1 -2
  217. package/docs/RPC-GUIDE.md +705 -0
  218. package/docs/UTILS-IMPLEMENTATION-SUMMARY.md +647 -0
  219. package/docs/UTILS-MODULE-OVERVIEW.md +1480 -0
  220. package/docs/UTILS-QA-CHECKLIST.md +1061 -0
  221. package/docs/UTILS-USAGE-GUIDE.md +1419 -0
  222. package/package.json +3 -3
@@ -1,7 +1,192 @@
1
1
  import { Container, Markdown, Spacer } from "indusagi/tui";
2
2
  import { getMarkdownTheme, theme } from "../theme/theme.js";
3
3
  /**
4
- * Component that renders a user message
4
+ * ============================================================================
5
+ * USER MESSAGE COMPONENT - RENDERING MODULE
6
+ * ============================================================================
7
+ *
8
+ * PURPOSE:
9
+ * ============================================================================
10
+ * Renders user input messages with distinctive background styling and
11
+ * formatting. This component is the core renderer for all human user prompts
12
+ * in the interactive chat interface. User messages are visually distinguished
13
+ * from assistant messages through background color and text color.
14
+ *
15
+ * DESIGN PRINCIPLE:
16
+ * User messages are enclosed in colored backgrounds to clearly distinguish
17
+ * them from assistant responses. This improves visual clarity in long
18
+ * conversations where message boundaries must be obvious at a glance.
19
+ *
20
+ * MESSAGE CONTENT:
21
+ * - Text: Full markdown support (lists, code, emphasis, links, etc.)
22
+ * - Images: Handled by markdown renderer (embedding/fallback)
23
+ * - Skill blocks: Parsed and removed before rendering (rendered separately)
24
+ * - Code blocks: Rendered with syntax highlighting
25
+ *
26
+ * DATA FLOW:
27
+ * ============================================================================
28
+ * User Input Pipeline:
29
+ * User types message + presses Enter
30
+ * ↓
31
+ * CustomEditor captures input text
32
+ * ↓
33
+ * InteractiveMode.handleCommand() or session.prompt(text)
34
+ * ↓
35
+ * AgentSession processes request
36
+ * ↓
37
+ * Session emits message_streamed event with user message
38
+ * ↓
39
+ * InteractiveMode.subscribeToAgent() receives event
40
+ * ↓
41
+ * addMessageToChat() called with user message
42
+ * ↓
43
+ * UserMessageComponent instantiated with text
44
+ * ↓
45
+ * Component rendered to chatContainer
46
+ * ↓
47
+ * TUI invalidate() and requestRender()
48
+ * ↓
49
+ * Terminal displays styled user message with background
50
+ *
51
+ * Component Lifecycle:
52
+ * 1. Constructor: Called immediately when message created
53
+ * 2. Text passed as parameter (complete, not streamed)
54
+ * 3. Children added: Spacer + Markdown
55
+ * 4. Theme applied: userMessageBg and userMessageText colors
56
+ * 5. Displayed in chat container
57
+ * 6. Static: No updates after creation (user messages don't stream)
58
+ *
59
+ * RENDERING PIPELINE:
60
+ * ============================================================================
61
+ * Layout Structure (ASCII):
62
+ * ┌─────────────────────────────────────────────────────────┐
63
+ * │ [Spacer 1 line] │ ← Top spacing
64
+ * ├─────────────────────────────────────────────────────────┤
65
+ * │ ████████████████████████████████████████████████████████ │
66
+ * │ █ User Message Text (markdown rendered) █ ← Background wrap
67
+ * │ █ with styling, code blocks, lists, etc. █
68
+ * │ ████████████████████████████████████████████████████████ │
69
+ * └─────────────────────────────────────────────────────────┘
70
+ *
71
+ * Rendering Order:
72
+ * 1. Spacer(1): Top margin (blank line above message)
73
+ * 2. Markdown: Full text rendering with:
74
+ * - paddingY=1 (vertical padding inside background)
75
+ * - paddingX=1 (horizontal padding inside background)
76
+ * - bgColor() function: background color wrapper
77
+ * - color() function: text color wrapper
78
+ *
79
+ * Padding Rules:
80
+ * - Top/bottom padding: 1 line (visual separation from other messages)
81
+ * - Left/right padding: 1 character (space between text and edge)
82
+ * - Total width: terminal width (minus margins)
83
+ *
84
+ * STYLING/FORMATTING:
85
+ * ============================================================================
86
+ * Color Scheme (from theme):
87
+ * - Background: theme.bg("userMessageBg", text)
88
+ * - Text: theme.fg("userMessageText", text)
89
+ * - Both applied via Markdown constructor options
90
+ * - Overrides markdown theme colors within userMessageBg
91
+ *
92
+ * Markdown Content:
93
+ * - Code blocks: Syntax highlighted within background
94
+ * - Lists: Rendered with bullets/numbers within background
95
+ * - Links: Styled as links within background
96
+ * - Emphasis: Bold/italic within background
97
+ * - Code inline: Monospace within background
98
+ *
99
+ * Component Nesting:
100
+ * - UserMessageComponent (Container)
101
+ * ├── Spacer(1) ← Top margin
102
+ * └── Markdown(text) ← Full markdown with background
103
+ * └── styled via bgColor and color functions
104
+ *
105
+ * EXAMPLES:
106
+ * ============================================================================
107
+ *
108
+ * Example 1: Simple Text
109
+ * ──────────────────────
110
+ * Input: "Hello, what's 2 + 2?"
111
+ * Rendered:
112
+ * <blank line>
113
+ * ┌──────────────────────────────────────────────┐
114
+ * │ Hello, what's 2 + 2? │
115
+ * └──────────────────────────────────────────────┘
116
+ *
117
+ * Example 2: Message with Code
118
+ * ──────────────────────────────
119
+ * Input: "Can you read this file?\n\n```bash\ncat file.txt\n```"
120
+ * Rendered:
121
+ * <blank line>
122
+ * ┌──────────────────────────────────────────────┐
123
+ * │ Can you read this file? │
124
+ * │ │
125
+ * │ $ cat file.txt │
126
+ * └──────────────────────────────────────────────┘
127
+ *
128
+ * Example 3: Message with Markdown Formatting
129
+ * ────────────────────────────────────────────
130
+ * Input: "Please do these tasks:\n\n1. **Create** file\n2. *Edit* it"
131
+ * Rendered:
132
+ * <blank line>
133
+ * ┌──────────────────────────────────────────────┐
134
+ * │ Please do these tasks: │
135
+ * │ │
136
+ * │ 1. Create file │
137
+ * │ 2. Edit it │
138
+ * └──────────────────────────────────────────────┘
139
+ *
140
+ * Example 4: Multi-line Message
141
+ * ─────────────────────────────
142
+ * Input: "This is a longer message\nwith multiple lines\nof text"
143
+ * Rendered:
144
+ * <blank line>
145
+ * ┌──────────────────────────────────────────────┐
146
+ * │ This is a longer message │
147
+ * │ with multiple lines │
148
+ * │ of text │
149
+ * └──────────────────────────────────────────────┘
150
+ *
151
+ * INTEGRATION:
152
+ * ============================================================================
153
+ * TUI Integration:
154
+ * - Extends Container (indusagi/tui base component)
155
+ * - Uses Markdown and Spacer from indusagi/tui
156
+ * - Theme system: theme.bg(), theme.fg()
157
+ * - Automatic text wrapping to terminal width
158
+ * - ANSI color code support via theme functions
159
+ *
160
+ * Session Integration:
161
+ * - Created in InteractiveMode.addMessageToChat() for user messages
162
+ * - Called during renderSessionContext() for all user messages
163
+ * - Stored in chatContainer for persistent display
164
+ * - Optional: added to editor history for Up arrow recall
165
+ *
166
+ * Theme Integration:
167
+ * - userMessageBg color: Background color (theme.json)
168
+ * - userMessageText color: Foreground color (theme.json)
169
+ * - MarkdownTheme: Used for code highlighting within background
170
+ * - Colors update: No re-rendering needed (colors applied at render time)
171
+ *
172
+ * Editor Integration:
173
+ * - User message text optionally added to editor.history
174
+ * - Allows recalling previous messages with Up arrow
175
+ * - Configured via populateHistory parameter
176
+ *
177
+ * Performance Notes:
178
+ * - Stateless component: No updates after creation
179
+ * - Single render pass: Markdown parsed once
180
+ * - Minimal memory: No streaming state to maintain
181
+ * - Suitable for large conversations (1000+ messages)
182
+ *
183
+ * API:
184
+ * ============================================================================
185
+ * Constructor(text, markdownTheme):
186
+ * - text: User message text (supports full markdown)
187
+ * - markdownTheme: Theme for code highlighting (default: getMarkdownTheme())
188
+ *
189
+ * No public methods (stateless component)
5
190
  */
6
191
  export class UserMessageComponent extends Container {
7
192
  constructor(text, markdownTheme = getMarkdownTheme()) {
@@ -1 +1 @@
1
- {"version":3,"file":"user-message.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/user-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAsB,MAAM,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,SAAS;IAClD,YAAY,IAAY,EAAE,gBAA+B,gBAAgB,EAAE;QAC1E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CACZ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE;YACvC,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC;YAC1D,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC;SAC1D,CAAC,CACF,CAAC;IACH,CAAC;CACD"}
1
+ {"version":3,"file":"user-message.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/user-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAsB,MAAM,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2LG;AACH,MAAM,OAAO,oBAAqB,SAAQ,SAAS;IAClD,YAAY,IAAY,EAAE,gBAA+B,gBAAgB,EAAE;QAC1E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CACZ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE;YACvC,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC;YAC1D,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC;SAC1D,CAAC,CACF,CAAC;IACH,CAAC;CACD"}