@indemn/cli 1.6.0 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +9 -4
  3. package/.github/workflows/ci.yml +10 -0
  4. package/.github/workflows/publish.yml +2 -2
  5. package/.mcp.json +1 -4
  6. package/CONTRIBUTING.md +3 -1
  7. package/README.md +69 -176
  8. package/dist/cli/agents.d.ts.map +1 -1
  9. package/dist/cli/agents.js +226 -18
  10. package/dist/cli/agents.js.map +1 -1
  11. package/dist/cli/analytics.d.ts +3 -0
  12. package/dist/cli/analytics.d.ts.map +1 -0
  13. package/dist/cli/analytics.js +133 -0
  14. package/dist/cli/analytics.js.map +1 -0
  15. package/dist/cli/auth.d.ts.map +1 -1
  16. package/dist/cli/auth.js +62 -17
  17. package/dist/cli/auth.js.map +1 -1
  18. package/dist/cli/billing.d.ts +3 -0
  19. package/dist/cli/billing.d.ts.map +1 -0
  20. package/dist/cli/billing.js +23 -0
  21. package/dist/cli/billing.js.map +1 -0
  22. package/dist/cli/campaigns.d.ts +3 -0
  23. package/dist/cli/campaigns.d.ts.map +1 -0
  24. package/dist/cli/campaigns.js +34 -0
  25. package/dist/cli/campaigns.js.map +1 -0
  26. package/dist/cli/chat.d.ts.map +1 -1
  27. package/dist/cli/chat.js +69 -102
  28. package/dist/cli/chat.js.map +1 -1
  29. package/dist/cli/config.d.ts.map +1 -1
  30. package/dist/cli/config.js +71 -27
  31. package/dist/cli/config.js.map +1 -1
  32. package/dist/cli/conversations.d.ts +3 -0
  33. package/dist/cli/conversations.d.ts.map +1 -0
  34. package/dist/cli/conversations.js +129 -0
  35. package/dist/cli/conversations.js.map +1 -0
  36. package/dist/cli/distribution.d.ts +3 -0
  37. package/dist/cli/distribution.d.ts.map +1 -0
  38. package/dist/cli/distribution.js +122 -0
  39. package/dist/cli/distribution.js.map +1 -0
  40. package/dist/cli/eval.d.ts.map +1 -1
  41. package/dist/cli/eval.js +315 -71
  42. package/dist/cli/eval.js.map +1 -1
  43. package/dist/cli/functions.d.ts.map +1 -1
  44. package/dist/cli/functions.js +109 -38
  45. package/dist/cli/functions.js.map +1 -1
  46. package/dist/cli/index.js +63 -54
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/cli/init.d.ts +27 -0
  49. package/dist/cli/init.d.ts.map +1 -0
  50. package/dist/cli/init.js +152 -0
  51. package/dist/cli/init.js.map +1 -0
  52. package/dist/cli/kb.d.ts.map +1 -1
  53. package/dist/cli/kb.js +141 -15
  54. package/dist/cli/kb.js.map +1 -1
  55. package/dist/cli/link.d.ts +21 -0
  56. package/dist/cli/link.d.ts.map +1 -0
  57. package/dist/cli/link.js +112 -0
  58. package/dist/cli/link.js.map +1 -0
  59. package/dist/cli/org.d.ts.map +1 -1
  60. package/dist/cli/org.js +79 -67
  61. package/dist/cli/org.js.map +1 -1
  62. package/dist/cli/platform.d.ts +3 -0
  63. package/dist/cli/platform.d.ts.map +1 -0
  64. package/dist/cli/platform.js +133 -0
  65. package/dist/cli/platform.js.map +1 -0
  66. package/dist/cli/tickets.d.ts +3 -0
  67. package/dist/cli/tickets.d.ts.map +1 -0
  68. package/dist/cli/tickets.js +125 -0
  69. package/dist/cli/tickets.js.map +1 -0
  70. package/dist/cli/utils/output.d.ts +15 -9
  71. package/dist/cli/utils/output.d.ts.map +1 -1
  72. package/dist/cli/utils/output.js +53 -46
  73. package/dist/cli/utils/output.js.map +1 -1
  74. package/dist/cli/voice.d.ts +3 -0
  75. package/dist/cli/voice.d.ts.map +1 -0
  76. package/dist/cli/voice.js +206 -0
  77. package/dist/cli/voice.js.map +1 -0
  78. package/dist/core/diff.d.ts +16 -0
  79. package/dist/core/diff.d.ts.map +1 -0
  80. package/dist/core/diff.js +57 -0
  81. package/dist/core/diff.js.map +1 -0
  82. package/dist/core/org-resolver.d.ts +37 -0
  83. package/dist/core/org-resolver.d.ts.map +1 -0
  84. package/dist/core/org-resolver.js +73 -0
  85. package/dist/core/org-resolver.js.map +1 -0
  86. package/dist/core/runtime.d.ts +36 -0
  87. package/dist/core/runtime.d.ts.map +1 -0
  88. package/dist/core/runtime.js +62 -0
  89. package/dist/core/runtime.js.map +1 -0
  90. package/dist/core/scope.d.ts +33 -0
  91. package/dist/core/scope.d.ts.map +1 -0
  92. package/dist/core/scope.js +37 -0
  93. package/dist/core/scope.js.map +1 -0
  94. package/dist/mcp/registry.d.ts +67 -0
  95. package/dist/mcp/registry.d.ts.map +1 -0
  96. package/dist/mcp/registry.js +195 -0
  97. package/dist/mcp/registry.js.map +1 -0
  98. package/dist/mcp/server.d.ts +9 -0
  99. package/dist/mcp/server.d.ts.map +1 -1
  100. package/dist/mcp/server.js +87 -2
  101. package/dist/mcp/server.js.map +1 -1
  102. package/dist/mcp/tool-meta.d.ts +21 -0
  103. package/dist/mcp/tool-meta.d.ts.map +1 -0
  104. package/dist/mcp/tool-meta.js +203 -0
  105. package/dist/mcp/tool-meta.js.map +1 -0
  106. package/dist/mcp/tools.d.ts +2 -1
  107. package/dist/mcp/tools.d.ts.map +1 -1
  108. package/dist/mcp/tools.js +1462 -215
  109. package/dist/mcp/tools.js.map +1 -1
  110. package/dist/sdk/agent-bundle.d.ts +99 -0
  111. package/dist/sdk/agent-bundle.d.ts.map +1 -0
  112. package/dist/sdk/agent-bundle.js +211 -0
  113. package/dist/sdk/agent-bundle.js.map +1 -0
  114. package/dist/sdk/agents.d.ts +54 -1
  115. package/dist/sdk/agents.d.ts.map +1 -1
  116. package/dist/sdk/agents.js +59 -5
  117. package/dist/sdk/agents.js.map +1 -1
  118. package/dist/sdk/analytics.d.ts +158 -0
  119. package/dist/sdk/analytics.d.ts.map +1 -0
  120. package/dist/sdk/analytics.js +185 -0
  121. package/dist/sdk/analytics.js.map +1 -0
  122. package/dist/sdk/auth.d.ts +34 -12
  123. package/dist/sdk/auth.d.ts.map +1 -1
  124. package/dist/sdk/auth.js +62 -79
  125. package/dist/sdk/auth.js.map +1 -1
  126. package/dist/sdk/billing.d.ts +25 -0
  127. package/dist/sdk/billing.d.ts.map +1 -0
  128. package/dist/sdk/billing.js +61 -0
  129. package/dist/sdk/billing.js.map +1 -0
  130. package/dist/sdk/campaigns.d.ts +35 -0
  131. package/dist/sdk/campaigns.d.ts.map +1 -0
  132. package/dist/sdk/campaigns.js +59 -0
  133. package/dist/sdk/campaigns.js.map +1 -0
  134. package/dist/sdk/chat.d.ts +25 -2
  135. package/dist/sdk/chat.d.ts.map +1 -1
  136. package/dist/sdk/chat.js +37 -10
  137. package/dist/sdk/chat.js.map +1 -1
  138. package/dist/sdk/client.d.ts +93 -5
  139. package/dist/sdk/client.d.ts.map +1 -1
  140. package/dist/sdk/client.js +362 -100
  141. package/dist/sdk/client.js.map +1 -1
  142. package/dist/sdk/config-change.d.ts +74 -0
  143. package/dist/sdk/config-change.d.ts.map +1 -0
  144. package/dist/sdk/config-change.js +117 -0
  145. package/dist/sdk/config-change.js.map +1 -0
  146. package/dist/sdk/config.d.ts.map +1 -1
  147. package/dist/sdk/config.js +2 -1
  148. package/dist/sdk/config.js.map +1 -1
  149. package/dist/sdk/conversations.d.ts +101 -0
  150. package/dist/sdk/conversations.d.ts.map +1 -0
  151. package/dist/sdk/conversations.js +155 -0
  152. package/dist/sdk/conversations.js.map +1 -0
  153. package/dist/sdk/credentials.d.ts +25 -0
  154. package/dist/sdk/credentials.d.ts.map +1 -0
  155. package/dist/sdk/credentials.js +44 -0
  156. package/dist/sdk/credentials.js.map +1 -0
  157. package/dist/sdk/distribution.d.ts +94 -0
  158. package/dist/sdk/distribution.d.ts.map +1 -0
  159. package/dist/sdk/distribution.js +100 -0
  160. package/dist/sdk/distribution.js.map +1 -0
  161. package/dist/sdk/eval.d.ts +81 -0
  162. package/dist/sdk/eval.d.ts.map +1 -1
  163. package/dist/sdk/eval.js +117 -0
  164. package/dist/sdk/eval.js.map +1 -1
  165. package/dist/sdk/functions.d.ts +14 -1
  166. package/dist/sdk/functions.d.ts.map +1 -1
  167. package/dist/sdk/functions.js +48 -5
  168. package/dist/sdk/functions.js.map +1 -1
  169. package/dist/sdk/index.d.ts +2 -0
  170. package/dist/sdk/index.d.ts.map +1 -1
  171. package/dist/sdk/index.js +2 -0
  172. package/dist/sdk/index.js.map +1 -1
  173. package/dist/sdk/jarvis-chat.d.ts +28 -0
  174. package/dist/sdk/jarvis-chat.d.ts.map +1 -0
  175. package/dist/sdk/jarvis-chat.js +117 -0
  176. package/dist/sdk/jarvis-chat.js.map +1 -0
  177. package/dist/sdk/kb.d.ts +69 -1
  178. package/dist/sdk/kb.d.ts.map +1 -1
  179. package/dist/sdk/kb.js +111 -24
  180. package/dist/sdk/kb.js.map +1 -1
  181. package/dist/sdk/orgs.d.ts +13 -0
  182. package/dist/sdk/orgs.d.ts.map +1 -0
  183. package/dist/sdk/orgs.js +59 -0
  184. package/dist/sdk/orgs.js.map +1 -0
  185. package/dist/sdk/platform.d.ts +62 -0
  186. package/dist/sdk/platform.d.ts.map +1 -0
  187. package/dist/sdk/platform.js +95 -0
  188. package/dist/sdk/platform.js.map +1 -0
  189. package/dist/sdk/session.d.ts +25 -0
  190. package/dist/sdk/session.d.ts.map +1 -0
  191. package/dist/sdk/session.js +69 -0
  192. package/dist/sdk/session.js.map +1 -0
  193. package/dist/sdk/skills.d.ts +46 -0
  194. package/dist/sdk/skills.d.ts.map +1 -0
  195. package/dist/sdk/skills.js +203 -0
  196. package/dist/sdk/skills.js.map +1 -0
  197. package/dist/sdk/test-chat.d.ts +52 -0
  198. package/dist/sdk/test-chat.d.ts.map +1 -0
  199. package/dist/sdk/test-chat.js +134 -0
  200. package/dist/sdk/test-chat.js.map +1 -0
  201. package/dist/sdk/tickets.d.ts +98 -0
  202. package/dist/sdk/tickets.d.ts.map +1 -0
  203. package/dist/sdk/tickets.js +91 -0
  204. package/dist/sdk/tickets.js.map +1 -0
  205. package/dist/sdk/types.d.ts +91 -6
  206. package/dist/sdk/types.d.ts.map +1 -1
  207. package/dist/sdk/voice.d.ts +147 -0
  208. package/dist/sdk/voice.d.ts.map +1 -0
  209. package/dist/sdk/voice.js +236 -0
  210. package/dist/sdk/voice.js.map +1 -0
  211. package/package.json +21 -4
  212. package/scripts/check-skills.mjs +25 -0
  213. package/skills/agent-builder/SKILL.md +89 -252
  214. package/skills/evaluations/SKILL.md +23 -234
  215. package/skills/evaluations/references/analysis.md +95 -0
  216. package/skills/evaluations/references/cli-reference.md +28 -0
  217. package/skills/evaluations/references/json-formats.md +100 -0
  218. package/src/cli/agents.ts +202 -22
  219. package/src/cli/analytics.ts +138 -0
  220. package/src/cli/auth.ts +56 -18
  221. package/src/cli/billing.ts +25 -0
  222. package/src/cli/campaigns.ts +33 -0
  223. package/src/cli/chat.ts +66 -115
  224. package/src/cli/config.ts +65 -31
  225. package/src/cli/conversations.ts +133 -0
  226. package/src/cli/distribution.ts +116 -0
  227. package/src/cli/eval.ts +254 -70
  228. package/src/cli/functions.ts +105 -39
  229. package/src/cli/index.ts +58 -55
  230. package/src/cli/init.ts +154 -0
  231. package/src/cli/kb.ts +120 -17
  232. package/src/cli/link.ts +117 -0
  233. package/src/cli/org.ts +81 -75
  234. package/src/cli/platform.ts +128 -0
  235. package/src/cli/tickets.ts +130 -0
  236. package/src/cli/utils/output.ts +51 -42
  237. package/src/cli/voice.ts +204 -0
  238. package/src/core/diff.ts +52 -0
  239. package/src/core/org-resolver.ts +113 -0
  240. package/src/core/runtime.ts +73 -0
  241. package/src/core/scope.ts +64 -0
  242. package/src/mcp/registry.ts +236 -0
  243. package/src/mcp/server.ts +84 -2
  244. package/src/mcp/tool-meta.ts +241 -0
  245. package/src/mcp/tools.ts +1529 -265
  246. package/src/sdk/agent-bundle.ts +245 -0
  247. package/src/sdk/agents.ts +74 -5
  248. package/src/sdk/analytics.ts +220 -0
  249. package/src/sdk/auth.ts +89 -109
  250. package/src/sdk/billing.ts +59 -0
  251. package/src/sdk/campaigns.ts +60 -0
  252. package/src/sdk/chat.ts +44 -10
  253. package/src/sdk/client.ts +373 -102
  254. package/src/sdk/config-change.ts +148 -0
  255. package/src/sdk/config.ts +2 -1
  256. package/src/sdk/conversations.ts +199 -0
  257. package/src/sdk/credentials.ts +53 -0
  258. package/src/sdk/distribution.ts +132 -0
  259. package/src/sdk/eval.ts +140 -0
  260. package/src/sdk/functions.ts +52 -6
  261. package/src/sdk/index.ts +2 -0
  262. package/src/sdk/jarvis-chat.ts +112 -0
  263. package/src/sdk/kb.ts +116 -29
  264. package/src/sdk/orgs.ts +62 -0
  265. package/src/sdk/platform.ts +115 -0
  266. package/src/sdk/session.ts +90 -0
  267. package/src/sdk/skills.ts +188 -0
  268. package/src/sdk/test-chat.ts +151 -0
  269. package/src/sdk/tickets.ts +120 -0
  270. package/src/sdk/types.ts +88 -6
  271. package/src/sdk/voice.ts +262 -0
  272. package/test/cli/entry.test.ts +34 -0
  273. package/test/cli/init.test.ts +66 -0
  274. package/test/cli/link.test.ts +57 -0
  275. package/test/core/org-resolver.test.ts +92 -0
  276. package/test/core/runtime.test.ts +30 -0
  277. package/test/core/scope.test.ts +93 -0
  278. package/test/harness.test.ts +24 -0
  279. package/test/helpers/config-home.ts +22 -0
  280. package/test/helpers/fake-middleware.ts +56 -0
  281. package/test/helpers/fetch-recorder.ts +75 -0
  282. package/test/helpers/jwt.ts +9 -0
  283. package/test/helpers/mcp-pair.ts +38 -0
  284. package/test/mcp/__snapshots__/tools-snapshot.test.ts.snap +145 -0
  285. package/test/mcp/askers.test.ts +60 -0
  286. package/test/mcp/elicit-timeout.test.ts +29 -0
  287. package/test/mcp/registry.test.ts +169 -0
  288. package/test/mcp/shaping.test.ts +41 -0
  289. package/test/mcp/tools-snapshot.test.ts +42 -0
  290. package/test/sdk/agents.test.ts +232 -0
  291. package/test/sdk/analytics.test.ts +89 -0
  292. package/test/sdk/auth.test.ts +70 -0
  293. package/test/sdk/billing.test.ts +47 -0
  294. package/test/sdk/campaigns.test.ts +43 -0
  295. package/test/sdk/client.test.ts +80 -0
  296. package/test/sdk/config-change.test.ts +142 -0
  297. package/test/sdk/conversations.test.ts +80 -0
  298. package/test/sdk/credentials.test.ts +33 -0
  299. package/test/sdk/distribution.test.ts +55 -0
  300. package/test/sdk/eval.test.ts +155 -0
  301. package/test/sdk/kb-upload.test.ts +50 -0
  302. package/test/sdk/kb.test.ts +95 -0
  303. package/test/sdk/orgs.test.ts +48 -0
  304. package/test/sdk/platform.test.ts +89 -0
  305. package/test/sdk/renewal.test.ts +115 -0
  306. package/test/sdk/session.test.ts +60 -0
  307. package/test/sdk/skills.test.ts +235 -0
  308. package/test/sdk/test-chat.test.ts +112 -0
  309. package/test/sdk/tickets.test.ts +42 -0
  310. package/test/sdk/voice.test.ts +147 -0
  311. package/vitest.config.ts +11 -0
@@ -1,36 +1,84 @@
1
1
  import Conf from 'conf';
2
2
  import { chmodSync } from 'node:fs';
3
- const DEFAULT_HOSTS = {
3
+ import { CliError, cliVersion, isDebug, SessionExpiredError } from '../core/runtime.js';
4
+ import { copilotAuthHeader, darwinAuthHeader, resolveCredential } from './credentials.js';
5
+ import { exchangeIdToken, needsRenewal, refreshIdToken, toStoredSession } from './session.js';
6
+ import { findLinkFile, resolveOrg } from '../core/org-resolver.js';
7
+ import { emitOrgResolved, getAskers, getOrgFlag, scopedOrg } from '../core/scope.js';
8
+ export const DEFAULT_HOSTS = {
4
9
  dev: {
5
10
  copilot: 'https://devcopilot.indemn.ai/api',
6
11
  evaluations: 'https://devevaluations.indemn.ai',
7
12
  middleware: 'https://devproxy.indemn.ai',
13
+ platform: 'https://devplatform.indemn.ai/api/v1',
8
14
  },
9
15
  production: {
10
16
  copilot: 'https://copilot.indemn.ai/api',
11
17
  evaluations: 'https://evaluations.indemn.ai',
12
18
  middleware: 'https://proxy.indemn.ai',
19
+ platform: 'https://platform.indemn.ai/api/v1',
13
20
  },
14
21
  };
22
+ let clientKind = 'cli';
23
+ const RETRY_STATUSES = new Set([502, 503, 504]);
24
+ const RETRY_DELAYS_MS = [300, 600];
25
+ function isEnvironment(value) {
26
+ return value === 'dev' || value === 'production';
27
+ }
28
+ /**
29
+ * The environment belongs to the credential. A saved login knows its own
30
+ * environment; an API key says it in its prefix. INDEMN_ENV is only read for a
31
+ * host-supplied session token (INDEMN_TOKEN), which carries no environment.
32
+ */
33
+ export function resolveEnvironment(config, env = process.env) {
34
+ if (env.INDEMN_TOKEN && isEnvironment(env.INDEMN_ENV))
35
+ return env.INDEMN_ENV;
36
+ if (env.INDEMN_API_KEY?.startsWith('ind_live_'))
37
+ return 'production';
38
+ if (env.INDEMN_API_KEY?.startsWith('ind_dev_'))
39
+ return 'dev';
40
+ if (config && isEnvironment(config.environment))
41
+ return config.environment;
42
+ return 'dev';
43
+ }
44
+ function sleep(ms) {
45
+ return new Promise((resolve) => setTimeout(resolve, ms));
46
+ }
47
+ /** One renewal at a time per process, shared by every client. */
48
+ let renewing = null;
15
49
  export class IndemnClient {
16
- apiKey;
17
- orgId;
50
+ explicitCredential;
51
+ orgOverride;
18
52
  environment;
19
53
  hosts;
54
+ resolvedOrg;
55
+ linkCache;
56
+ membershipCache;
57
+ ignoreLink;
20
58
  constructor(opts) {
21
- // Priority: explicit opts > env vars > config file
22
59
  const config = IndemnClient.loadConfig();
23
- this.apiKey = opts?.apiKey || process.env.INDEMN_API_KEY || config?.api_key || '';
24
- this.orgId = opts?.orgId || process.env.INDEMN_ORG_ID || config?.org_id || '';
25
- this.environment = opts?.environment || process.env.INDEMN_ENV || config?.environment || 'dev';
60
+ const env = opts?.environment || resolveEnvironment(config);
61
+ this.explicitCredential = opts?.token
62
+ ? { kind: 'token', token: opts.token, source: 'env', environment: env }
63
+ : opts?.apiKey
64
+ ? { kind: 'api_key', key: opts.apiKey, source: 'env', environment: env }
65
+ : null;
66
+ this.orgOverride = opts?.orgId;
67
+ this.ignoreLink = Boolean(opts?.ignoreLink);
68
+ this.environment = env;
26
69
  const defaultHosts = DEFAULT_HOSTS[this.environment];
27
70
  const configHosts = config?.hosts?.[this.environment];
28
71
  this.hosts = {
29
72
  copilot: process.env.INDEMN_COPILOT_URL || configHosts?.copilot || defaultHosts.copilot,
30
73
  evaluations: process.env.INDEMN_EVALS_URL || configHosts?.evaluations || defaultHosts.evaluations,
31
74
  middleware: process.env.INDEMN_MIDDLEWARE_URL || configHosts?.middleware || defaultHosts.middleware,
75
+ platform: process.env.INDEMN_PLATFORM_URL || configHosts?.platform || defaultHosts.platform,
32
76
  };
33
77
  }
78
+ /** Name the caller in the X-Indemn-Client header: the terminal CLI or the MCP server. */
79
+ static setClientKind(kind) {
80
+ clientKind = kind;
81
+ }
34
82
  static getConfigStore() {
35
83
  return new Conf({
36
84
  projectName: 'indemn',
@@ -38,18 +86,21 @@ export class IndemnClient {
38
86
  cwd: `${process.env.HOME}/.indemn`,
39
87
  });
40
88
  }
89
+ /** The saved login, or null. Read fresh on every request so a new login in another terminal is picked up. */
41
90
  static loadConfig() {
42
91
  try {
43
92
  const store = IndemnClient.getConfigStore();
93
+ const session = store.get('session');
44
94
  const apiKey = store.get('api_key');
45
- if (!apiKey)
95
+ if (!session?.token && !apiKey)
46
96
  return null;
47
97
  return {
48
- api_key: apiKey,
49
- org_id: store.get('org_id', ''),
50
- org_name: store.get('org_name', '') || undefined,
51
- user_id: store.get('user_id', ''),
52
98
  environment: store.get('environment', 'dev'),
99
+ user_id: store.get('user_id', ''),
100
+ email: store.get('email'),
101
+ session,
102
+ orgs: store.get('orgs'),
103
+ api_key: apiKey,
53
104
  hosts: store.get('hosts', DEFAULT_HOSTS),
54
105
  };
55
106
  }
@@ -60,9 +111,12 @@ export class IndemnClient {
60
111
  static saveConfig(config) {
61
112
  const store = IndemnClient.getConfigStore();
62
113
  for (const [key, value] of Object.entries(config)) {
63
- store.set(key, value);
114
+ if (value === undefined)
115
+ store.delete(key);
116
+ else
117
+ store.set(key, value);
64
118
  }
65
- // Restrict config file to owner-only (contains API key)
119
+ // Restrict config file to owner-only (contains credentials)
66
120
  try {
67
121
  chmodSync(store.path, 0o600);
68
122
  }
@@ -75,133 +129,341 @@ export class IndemnClient {
75
129
  store.clear();
76
130
  }
77
131
  getEnvironment() { return this.environment; }
78
- getOrgId() { return this.orgId; }
79
- getApiKey() { return this.apiKey; }
80
132
  getHosts() { return this.hosts; }
81
- ensureAuth() {
82
- if (!this.apiKey) {
83
- throw new Error('Not authenticated. Run `indemn login` first.');
133
+ /** The credential for the next request. Never cached: the saved login may have been renewed or replaced. */
134
+ getCredential() {
135
+ return this.explicitCredential ?? resolveCredential(IndemnClient.loadConfig());
136
+ }
137
+ requireCredential() {
138
+ const cred = this.getCredential();
139
+ if (!cred)
140
+ throw new SessionExpiredError('Not logged in. Run `indemn login` first.');
141
+ return cred;
142
+ }
143
+ /**
144
+ * Get a fresh copilot session with the saved Firebase refresh token, save
145
+ * it, and revoke the old one. Accounts with MFA are asked for the emailed
146
+ * code when a terminal or MCP host can ask; otherwise the person must log in.
147
+ */
148
+ async renewSession() {
149
+ if (renewing)
150
+ return renewing;
151
+ renewing = (async () => {
152
+ const config = IndemnClient.loadConfig();
153
+ const old = config?.session;
154
+ if (!config || !old?.refresh_token) {
155
+ throw new SessionExpiredError('Session expired. Run `indemn login`, then retry.');
156
+ }
157
+ const { idToken, refreshToken } = await refreshIdToken(config.environment, old.refresh_token);
158
+ const { token } = await exchangeIdToken((path, body, headers) => this.copilotPostUnauth(path, body, headers), idToken, getAskers().mfaCode);
159
+ IndemnClient.saveConfig({ session: toStoredSession(token, refreshToken) });
160
+ try {
161
+ await this.send('copilot', 'POST', `${this.hosts.copilot}/auth/firebase/logout`, {
162
+ auth: false,
163
+ headers: { Authorization: `JWT ${old.token}` },
164
+ });
165
+ }
166
+ catch {
167
+ // Best effort: the old token expires within the hour anyway.
168
+ }
169
+ })().finally(() => {
170
+ renewing = null;
171
+ });
172
+ return renewing;
173
+ }
174
+ /** The credential for the next request, renewed first when a saved session is about to expire. */
175
+ async freshCredential() {
176
+ let cred = this.requireCredential();
177
+ if (cred.kind === 'token' && cred.source === 'config') {
178
+ const session = IndemnClient.loadConfig()?.session;
179
+ if (session && needsRenewal(session)) {
180
+ await this.renewSession();
181
+ cred = this.requireCredential();
182
+ }
84
183
  }
184
+ return cred;
85
185
  }
86
- buildCopilotUrl(path) {
87
- // Inject org_id into path templates
88
- const resolvedPath = path.replace(':org_id', this.orgId);
186
+ async authHeader() {
187
+ return copilotAuthHeader(await this.freshCredential());
188
+ }
189
+ // --- Organizations -------------------------------------------------------
190
+ /** The `.indemn/project.json` in effect for this working directory. */
191
+ getLink() {
192
+ if (this.ignoreLink)
193
+ return null;
194
+ if (this.linkCache === undefined)
195
+ this.linkCache = findLinkFile();
196
+ return this.linkCache;
197
+ }
198
+ /** Orgs the user belongs to: saved at login, else asked live from copilot. */
199
+ async memberships() {
200
+ if (this.membershipCache)
201
+ return this.membershipCache;
202
+ const cred = this.requireCredential();
203
+ const saved = cred.source === 'config' ? IndemnClient.loadConfig()?.orgs : undefined;
204
+ if (saved?.length) {
205
+ this.membershipCache = saved;
206
+ }
207
+ else {
208
+ const res = await this.copilotGet('/organization');
209
+ this.membershipCache = (res.userOrganizations ?? []).map((o) => ({ id: String(o._id), name: o.name }));
210
+ }
211
+ return this.membershipCache;
212
+ }
213
+ /**
214
+ * The org this client acts on. `explicit` is an MCP tool's org_id; the
215
+ * terminal passes --org through the scope module. Decided once per client.
216
+ */
217
+ async resolveOrg(explicit, opts = {}) {
218
+ const run = async () => {
219
+ const resolved = await resolveOrg({
220
+ flag: explicit ?? this.orgOverride ?? getOrgFlag(),
221
+ envOrg: process.env.INDEMN_ORG_ID || undefined,
222
+ link: this.getLink(),
223
+ environment: this.environment,
224
+ memberships: () => this.memberships(),
225
+ ask: getAskers().chooseOrg,
226
+ });
227
+ const known = this.membershipCache ?? IndemnClient.loadConfig()?.orgs ?? [];
228
+ const name = known.find((o) => o.id === resolved.id)?.name ?? resolved.link?.org_name;
229
+ return { ...resolved, name };
230
+ };
231
+ if (explicit || opts.cache === false)
232
+ return run();
233
+ if (!this.resolvedOrg) {
234
+ this.resolvedOrg = run().then((org) => {
235
+ emitOrgResolved({ id: org.id, name: org.name, source: org.source, environment: this.environment });
236
+ return org;
237
+ });
238
+ this.resolvedOrg.catch(() => { this.resolvedOrg = undefined; });
239
+ }
240
+ return this.resolvedOrg;
241
+ }
242
+ /** Org id for the current call: an MCP call's scope first, then this client's resolution. */
243
+ async currentOrgId() {
244
+ return scopedOrg() ?? (await this.resolveOrg()).id;
245
+ }
246
+ /** What every MCP result reports as its origin. Never triggers a question. */
247
+ async getResultContext() {
248
+ const scoped = scopedOrg();
249
+ const settled = this.resolvedOrg ? await this.resolvedOrg.catch(() => undefined) : undefined;
250
+ const id = scoped ?? settled?.id;
251
+ const known = this.membershipCache ?? IndemnClient.loadConfig()?.orgs ?? [];
252
+ return { org_id: id, org_name: id ? known.find((o) => o.id === id)?.name : undefined, environment: this.environment };
253
+ }
254
+ /**
255
+ * In a linked folder with an agent list, refuse any agent that is not on
256
+ * the list before a request leaves the machine.
257
+ */
258
+ assertAgentInScope(path) {
259
+ const link = this.getLink();
260
+ if (!link || link.agents.length === 0)
261
+ return;
262
+ const match = /\/bots\/([a-f0-9]{24})(?:\/|$|\?)/i.exec(path);
263
+ if (match && !link.agents.includes(match[1])) {
264
+ throw new CliError(`Agent ${match[1]} is not linked in ${link.path}. Linked agents: ${link.agents.join(', ')}. ` +
265
+ 'Add it with `indemn link` or work from another folder.');
266
+ }
267
+ }
268
+ async buildCopilotUrl(path) {
269
+ let resolvedPath = path;
270
+ if (path.includes(':org_id')) {
271
+ resolvedPath = path.replace(':org_id', await this.currentOrgId());
272
+ }
273
+ this.assertAgentInScope(resolvedPath);
89
274
  return `${this.hosts.copilot}${resolvedPath}`;
90
275
  }
91
276
  buildEvalsUrl(path) {
92
277
  return `${this.hosts.evaluations}${path}`;
93
278
  }
94
- // Copilot Server requests (with /api/ prefix and org_id injection)
95
- async copilotGet(path, query) {
96
- this.ensureAuth();
97
- const url = new URL(this.buildCopilotUrl(path));
98
- if (query) {
99
- for (const [k, v] of Object.entries(query)) {
100
- if (v !== undefined && v !== null)
101
- url.searchParams.set(k, v);
279
+ /**
280
+ * The one place every request goes through: client headers, credential,
281
+ * --debug tracing, and retries for reads only (a retried create could
282
+ * create twice).
283
+ */
284
+ async send(backend, method, url, opts = {}) {
285
+ const headers = {
286
+ 'User-Agent': `indemn-cli/${cliVersion()}`,
287
+ 'X-Indemn-Client': clientKind,
288
+ ...opts.headers,
289
+ };
290
+ let body;
291
+ if (opts.body instanceof FormData) {
292
+ body = opts.body;
293
+ }
294
+ else if (opts.body !== undefined) {
295
+ headers['Content-Type'] = 'application/json';
296
+ body = JSON.stringify(opts.body);
297
+ }
298
+ else if (method !== 'GET') {
299
+ headers['Content-Type'] = 'application/json';
300
+ }
301
+ if (backend === 'copilot' && opts.auth !== false) {
302
+ headers['Authorization'] = await this.authHeader();
303
+ }
304
+ const attempts = method === 'GET' ? RETRY_DELAYS_MS.length + 1 : 1;
305
+ for (let attempt = 0;; attempt++) {
306
+ const started = Date.now();
307
+ if (isDebug())
308
+ process.stderr.write(`[debug] → ${method} ${url}\n`);
309
+ try {
310
+ const res = await fetch(url, { method, headers, body });
311
+ if (isDebug())
312
+ process.stderr.write(`[debug] ← ${res.status} ${method} ${url} (${Date.now() - started} ms)\n`);
313
+ if (RETRY_STATUSES.has(res.status) && attempt + 1 < attempts) {
314
+ await sleep(RETRY_DELAYS_MS[attempt]);
315
+ continue;
316
+ }
317
+ return res;
318
+ }
319
+ catch (err) {
320
+ if (isDebug())
321
+ process.stderr.write(`[debug] ✗ ${method} ${url}: ${err.message}\n`);
322
+ if (attempt + 1 < attempts) {
323
+ await sleep(RETRY_DELAYS_MS[attempt]);
324
+ continue;
325
+ }
326
+ throw err;
102
327
  }
103
328
  }
104
- const res = await fetch(url.toString(), {
105
- headers: {
106
- 'Authorization': `Bearer ${this.apiKey}`,
107
- 'Content-Type': 'application/json',
108
- },
109
- });
329
+ }
330
+ withQuery(url, query) {
331
+ if (!query)
332
+ return url;
333
+ const u = new URL(url);
334
+ for (const [k, v] of Object.entries(query)) {
335
+ if (v !== undefined && v !== null)
336
+ u.searchParams.set(k, v);
337
+ }
338
+ return u.toString();
339
+ }
340
+ /**
341
+ * A copilot request with the session rules: renew before expiry, and on a
342
+ * 401 with a saved session renew once and retry once.
343
+ */
344
+ async copilotRequest(method, path, opts = {}) {
345
+ const url = this.withQuery(await this.buildCopilotUrl(path), opts.query);
346
+ let res = await this.send('copilot', method, url, { body: opts.body });
347
+ const cred = this.getCredential();
348
+ if (res.status === 401 && cred?.kind === 'token' && cred.source === 'config') {
349
+ await this.renewSession();
350
+ res = await this.send('copilot', method, url, { body: opts.body });
351
+ }
110
352
  return this.handleCopilotResponse(res);
111
353
  }
354
+ /** A copilot request with any method (for PATCH and other routes without a helper). */
355
+ async copilotRequestRaw(method, path, body) {
356
+ return this.copilotRequest(method, path, { body });
357
+ }
358
+ /** A copilot request whose answer is a file or audio, returned as bytes. */
359
+ async copilotBinary(method, path, body) {
360
+ const res = await this.send('copilot', method, await this.buildCopilotUrl(path), { body });
361
+ if (res.status === 401)
362
+ throw new SessionExpiredError('Authentication failed. Run `indemn login` to re-authenticate.');
363
+ if (!res.ok)
364
+ throw new Error(`API error (${res.status}): ${await res.text()}`);
365
+ return { contentType: res.headers.get('content-type') ?? 'application/octet-stream', data: Buffer.from(await res.arrayBuffer()) };
366
+ }
367
+ // Copilot Server requests (with /api/ prefix and org_id injection)
368
+ async copilotGet(path, query) {
369
+ return this.copilotRequest('GET', path, { query });
370
+ }
112
371
  async copilotPost(path, body) {
113
- this.ensureAuth();
114
- const res = await fetch(this.buildCopilotUrl(path), {
115
- method: 'POST',
116
- headers: {
117
- 'Authorization': `Bearer ${this.apiKey}`,
118
- 'Content-Type': 'application/json',
119
- },
120
- body: body ? JSON.stringify(body) : undefined,
121
- });
122
- return this.handleCopilotResponse(res);
372
+ return this.copilotRequest('POST', path, { body });
373
+ }
374
+ /** Multipart upload (for example a knowledge-base file). */
375
+ async copilotPostForm(path, form) {
376
+ return this.copilotRequest('POST', path, { body: form });
123
377
  }
124
378
  async copilotPut(path, body) {
125
- this.ensureAuth();
126
- const res = await fetch(this.buildCopilotUrl(path), {
127
- method: 'PUT',
128
- headers: {
129
- 'Authorization': `Bearer ${this.apiKey}`,
130
- 'Content-Type': 'application/json',
131
- },
132
- body: body ? JSON.stringify(body) : undefined,
133
- });
134
- return this.handleCopilotResponse(res);
379
+ return this.copilotRequest('PUT', path, { body });
135
380
  }
136
381
  async copilotDelete(path) {
137
- this.ensureAuth();
138
- const res = await fetch(this.buildCopilotUrl(path), {
139
- method: 'DELETE',
140
- headers: {
141
- 'Authorization': `Bearer ${this.apiKey}`,
142
- 'Content-Type': 'application/json',
143
- },
144
- });
145
- return this.handleCopilotResponse(res);
382
+ return this.copilotRequest('DELETE', path);
146
383
  }
147
- // Evaluations Service requests (no /api/ prefix, no org_id, no auth in Phase 1)
148
- async evalsGet(path, query) {
149
- const url = new URL(this.buildEvalsUrl(path));
150
- if (query) {
151
- for (const [k, v] of Object.entries(query)) {
152
- if (v !== undefined && v !== null)
153
- url.searchParams.set(k, v);
384
+ /**
385
+ * Darwin (the V2 platform) request: the same session token as copilot, sent
386
+ * as Bearer, with the org in X-Organization-Id. Darwin checks membership and
387
+ * roles itself. A 401 on a saved session renews once and retries once.
388
+ */
389
+ async platformRequest(method, path, opts = {}) {
390
+ const base = this.hosts.platform;
391
+ if (!base)
392
+ throw new CliError('No V2 platform host is configured for this environment.');
393
+ const url = this.withQuery(`${base}${path}`, opts.query);
394
+ this.assertAgentInScope(path);
395
+ const headersFor = async () => {
396
+ const headers = { Authorization: darwinAuthHeader(await this.freshCredential()) };
397
+ if (opts.orgHeader !== false)
398
+ headers['X-Organization-Id'] = await this.currentOrgId();
399
+ return headers;
400
+ };
401
+ let res = await this.send('platform', method, url, { body: opts.body, headers: await headersFor() });
402
+ const cred = this.getCredential();
403
+ if (res.status === 401 && cred?.kind === 'token' && cred.source === 'config') {
404
+ await this.renewSession();
405
+ res = await this.send('platform', method, url, { body: opts.body, headers: await headersFor() });
406
+ }
407
+ if (res.status === 401)
408
+ throw new SessionExpiredError('The V2 platform rejected the session. Run `indemn login`, then retry.');
409
+ if (!res.ok) {
410
+ const text = await res.text();
411
+ let detail = text;
412
+ try {
413
+ detail = JSON.parse(text).detail ?? text;
154
414
  }
415
+ catch { /* plain text */ }
416
+ if (res.status === 403)
417
+ throw new CliError(`Not allowed by the V2 platform: ${typeof detail === 'string' ? detail : JSON.stringify(detail)}`);
418
+ if (res.status === 404)
419
+ throw new CliError('Not found on the V2 platform.');
420
+ throw new CliError(`V2 platform error (${res.status}): ${typeof detail === 'string' ? detail : JSON.stringify(detail)}`);
155
421
  }
156
- const res = await fetch(url.toString(), {
157
- headers: { 'Content-Type': 'application/json' },
158
- });
422
+ if (res.status === 204)
423
+ return undefined;
424
+ return res.json();
425
+ }
426
+ // Evaluations Service requests (no /api/ prefix, no org_id, no auth)
427
+ async evalsGet(path, query) {
428
+ const res = await this.send('evaluations', 'GET', this.withQuery(this.buildEvalsUrl(path), query));
159
429
  return this.handleEvalsResponse(res);
160
430
  }
161
431
  async evalsPost(path, body) {
162
- const res = await fetch(this.buildEvalsUrl(path), {
163
- method: 'POST',
164
- headers: { 'Content-Type': 'application/json' },
165
- body: body ? JSON.stringify(body) : undefined,
166
- });
432
+ const res = await this.send('evaluations', 'POST', this.buildEvalsUrl(path), { body });
167
433
  return this.handleEvalsResponse(res);
168
434
  }
169
435
  async evalsPut(path, body) {
170
- const res = await fetch(this.buildEvalsUrl(path), {
171
- method: 'PUT',
172
- headers: { 'Content-Type': 'application/json' },
173
- body: body ? JSON.stringify(body) : undefined,
174
- });
436
+ const res = await this.send('evaluations', 'PUT', this.buildEvalsUrl(path), { body });
175
437
  return this.handleEvalsResponse(res);
176
438
  }
177
439
  async evalsDelete(path) {
178
- const res = await fetch(this.buildEvalsUrl(path), {
179
- method: 'DELETE',
180
- headers: { 'Content-Type': 'application/json' },
181
- });
440
+ const res = await this.send('evaluations', 'DELETE', this.buildEvalsUrl(path));
182
441
  return this.handleEvalsResponse(res);
183
442
  }
184
443
  // Unauthenticated Copilot Server requests (for login flow)
185
444
  async copilotPostUnauth(path, body, headers) {
186
- const res = await fetch(`${this.hosts.copilot}${path}`, {
187
- method: 'POST',
188
- headers: {
189
- 'Content-Type': 'application/json',
190
- ...headers,
191
- },
192
- body: body ? JSON.stringify(body) : undefined,
193
- });
445
+ const res = await this.send('copilot', 'POST', `${this.hosts.copilot}${path}`, { body, headers, auth: false });
194
446
  return this.handleCopilotResponse(res);
195
447
  }
196
448
  async handleCopilotResponse(res) {
197
449
  if (res.status === 401) {
198
- throw new Error('Authentication failed. Run `indemn login` to re-authenticate.');
450
+ throw new SessionExpiredError('Authentication failed. Run `indemn login` to re-authenticate.');
199
451
  }
200
452
  if (res.status === 403) {
201
453
  throw new Error('Access denied. You may not have permission for this operation.');
202
454
  }
203
455
  if (res.status === 404) {
204
- throw new Error('Resource not found.');
456
+ // Keep the server's reason: voice-service answers 404 with specific messages (no phone number, ...).
457
+ const text = await res.text().catch(() => '');
458
+ let reason = '';
459
+ try {
460
+ const b = JSON.parse(text);
461
+ reason = String(b.message ?? b.error ?? '');
462
+ }
463
+ catch {
464
+ reason = text.trim().startsWith('<') ? '' : text.slice(0, 200);
465
+ }
466
+ throw new Error(reason ? `Not found: ${reason}` : 'Resource not found.');
205
467
  }
206
468
  if (!res.ok) {
207
469
  const text = await res.text();
@@ -211,7 +473,7 @@ export class IndemnClient {
211
473
  // Copilot Server wraps responses in { success, data }
212
474
  if (json.success !== undefined) {
213
475
  if (!json.success) {
214
- throw new Error(json.msg || 'API request failed');
476
+ throw new Error(json.msg || json.message || 'API request failed');
215
477
  }
216
478
  return (json.data !== undefined ? json.data : json);
217
479
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAmB,MAAM,kBAAkB,CAAC;AAC3G,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,UAAU,EAAmD,MAAM,yBAAyB,CAAC;AACpH,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAErF,MAAM,CAAC,MAAM,aAAa,GAA0C;IAClE,GAAG,EAAE;QACH,OAAO,EAAE,kCAAkC;QAC3C,WAAW,EAAE,kCAAkC;QAC/C,UAAU,EAAE,4BAA4B;QACxC,QAAQ,EAAE,sCAAsC;KACjD;IACD,UAAU,EAAE;QACV,OAAO,EAAE,+BAA+B;QACxC,WAAW,EAAE,+BAA+B;QAC5C,UAAU,EAAE,yBAAyB;QACrC,QAAQ,EAAE,mCAAmC;KAC9C;CACF,CAAC;AAGF,IAAI,UAAU,GAAe,KAAK,CAAC;AAYnC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAChD,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAEnC,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,YAAY,CAAC;AACnD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA2B,EAAE,MAAyB,OAAO,CAAC,GAAG;IAClG,IAAI,GAAG,CAAC,YAAY,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,GAAG,CAAC,UAAU,CAAC;IAC7E,IAAI,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,YAAY,CAAC;IACrE,IAAI,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC;QAAE,OAAO,MAAM,CAAC,WAAW,CAAC;IAC3E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,iEAAiE;AACjE,IAAI,QAAQ,GAAyB,IAAI,CAAC;AAM1C,MAAM,OAAO,YAAY;IACf,kBAAkB,CAAoB;IACtC,WAAW,CAAU;IACrB,WAAW,CAAc;IACzB,KAAK,CAAmB;IACxB,WAAW,CAAuB;IAClC,SAAS,CAAmB;IAC5B,eAAe,CAAe;IAE9B,UAAU,CAAU;IAE5B,YAAY,IAA2G;QACrH,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,EAAE,WAAW,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,CAAC,kBAAkB,GAAG,IAAI,EAAE,KAAK;YACnC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE;YACvE,CAAC,CAAC,IAAI,EAAE,MAAM;gBACZ,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE;gBACxE,CAAC,CAAC,IAAI,CAAC;QACX,IAAI,CAAC,WAAW,GAAG,IAAI,EAAE,KAAK,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG;YACX,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,WAAW,EAAE,OAAO,IAAI,YAAY,CAAC,OAAO;YACvF,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,WAAW,EAAE,WAAW,IAAI,YAAY,CAAC,WAAW;YACjG,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,WAAW,EAAE,UAAU,IAAI,YAAY,CAAC,UAAU;YACnG,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,WAAW,EAAE,QAAQ,IAAI,YAAY,CAAC,QAAQ;SAC5F,CAAC;IACJ,CAAC;IAED,yFAAyF;IACzF,MAAM,CAAC,aAAa,CAAC,IAAgB;QACnC,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,cAAc;QACnB,OAAO,IAAI,IAAI,CAAe;YAC5B,WAAW,EAAE,QAAQ;YACrB,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,UAAU;SACnC,CAAC,CAAC;IACL,CAAC;IAED,6GAA6G;IAC7G,MAAM,CAAC,UAAU;QACf,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YAC5C,OAAO;gBACL,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC;gBAC5C,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC;gBACjC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;gBACzB,OAAO;gBACP,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;gBACvB,OAAO,EAAE,MAAM;gBACf,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC;aACzC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAA6B;QAC7C,MAAM,KAAK,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,KAAK,KAAK,SAAS;gBAAE,KAAK,CAAC,MAAM,CAAC,GAAyB,CAAC,CAAC;;gBAC5D,KAAK,CAAC,GAAG,CAAC,GAAyB,EAAE,KAAK,CAAC,CAAC;QACnD,CAAC;QACD,4DAA4D;QAC5D,IAAI,CAAC;YACH,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,MAAM,KAAK,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;QAC5C,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAED,cAAc,KAAkB,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1D,QAAQ,KAAuB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnD,4GAA4G;IAC5G,aAAa;QACX,OAAO,IAAI,CAAC,kBAAkB,IAAI,iBAAiB,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;IACjF,CAAC;IAEO,iBAAiB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,mBAAmB,CAAC,0CAA0C,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY;QAChB,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE;YACrB,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,MAAM,EAAE,OAAO,CAAC;YAC5B,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC;gBACnC,MAAM,IAAI,mBAAmB,CAAC,kDAAkD,CAAC,CAAC;YACpF,CAAC;YACD,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAC9F,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,eAAe,CACrC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EACpE,OAAO,EACP,SAAS,EAAE,CAAC,OAAO,CACpB,CAAC;YACF,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;YAC3E,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,uBAAuB,EAAE;oBAC/E,IAAI,EAAE,KAAK;oBACX,OAAO,EAAE,EAAE,aAAa,EAAE,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;iBAC/C,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,6DAA6D;YAC/D,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kGAAkG;IAC1F,KAAK,CAAC,eAAe;QAC3B,IAAI,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC;YACnD,IAAI,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1B,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAClC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,OAAO,iBAAiB,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,4EAA4E;IAE5E,uEAAuE;IACvE,OAAO;QACL,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QACjC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,WAAW;QACf,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC,eAAe,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACrF,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;YAClB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAA+D,eAAe,CAAC,CAAC;YACjH,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzG,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,QAAiB,EAAE,OAA4B,EAAE;QAChE,MAAM,GAAG,GAAG,KAAK,IAAyB,EAAE;YAC1C,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC;gBAChC,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,UAAU,EAAE;gBAClD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,SAAS;gBAC9C,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;gBACpB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrC,GAAG,EAAE,SAAS,EAAE,CAAC,SAAS;aAC3B,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,IAAI,YAAY,CAAC,UAAU,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC;YAC5E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;YACtF,OAAO,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC/B,CAAC,CAAC;QACF,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;YAAE,OAAO,GAAG,EAAE,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBACpC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBACnG,OAAO,GAAG,CAAC;YACb,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,6FAA6F;IAC7F,KAAK,CAAC,YAAY;QAChB,OAAO,SAAS,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;IACrD,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,gBAAgB;QACpB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7F,MAAM,EAAE,GAAG,MAAM,IAAI,OAAO,EAAE,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,IAAI,YAAY,CAAC,UAAU,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC;QAC5E,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IACxH,CAAC;IAED;;;OAGG;IACK,kBAAkB,CAAC,IAAY;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC9C,MAAM,KAAK,GAAG,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,QAAQ,CAChB,SAAS,KAAK,CAAC,CAAC,CAAC,qBAAqB,IAAI,CAAC,IAAI,oBAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC3F,wDAAwD,CAC3D,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,IAAY;QACxC,IAAI,YAAY,GAAG,IAAI,CAAC;QACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACtC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,EAAE,CAAC;IAChD,CAAC;IAEO,aAAa,CAAC,IAAY;QAChC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,EAAE,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,IAAI,CAAC,OAAgB,EAAE,MAAc,EAAE,GAAW,EAAE,OAAoB,EAAE;QACtF,MAAM,OAAO,GAA2B;YACtC,YAAY,EAAE,cAAc,UAAU,EAAE,EAAE;YAC1C,iBAAiB,EAAE,UAAU;YAC7B,GAAG,IAAI,CAAC,OAAO;SAChB,CAAC;QACF,IAAI,IAA0B,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,YAAY,QAAQ,EAAE,CAAC;YAClC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;YAC7C,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YAC5B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QAC/C,CAAC;QACD,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACjD,OAAO,CAAC,eAAe,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACrD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,IAAI,OAAO,EAAE;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC;YACpE,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxD,IAAI,OAAO,EAAE;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,MAAM,IAAI,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,QAAQ,CAAC,CAAC;gBAC/G,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC;oBAC7D,MAAM,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;oBACtC,SAAS;gBACX,CAAC;gBACD,OAAO,GAAG,CAAC;YACb,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,OAAO,EAAE;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,IAAI,GAAG,KAAM,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;gBAC/F,IAAI,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC;oBAC3B,MAAM,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;oBACtC,SAAS;gBACX,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,GAAW,EAAE,KAA8B;QAC3D,IAAI,CAAC,KAAK;YAAE,OAAO,GAAG,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;gBAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,cAAc,CAAI,MAAc,EAAE,IAAY,EAAE,OAA2D,EAAE;QACzH,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzE,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAClC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7E,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1B,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,IAAI,CAAC,qBAAqB,CAAI,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,uFAAuF;IACvF,KAAK,CAAC,iBAAiB,CAAc,MAAwB,EAAE,IAAY,EAAE,IAAc;QACzF,OAAO,IAAI,CAAC,cAAc,CAAI,MAAgB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,IAAY,EAAE,IAAc;QAC9D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3F,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,MAAM,IAAI,mBAAmB,CAAC,+DAA+D,CAAC,CAAC;QACvH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/E,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,0BAA0B,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;IACpI,CAAC;IAED,mEAAmE;IACnE,KAAK,CAAC,UAAU,CAAc,IAAY,EAAE,KAA8B;QACxE,OAAO,IAAI,CAAC,cAAc,CAAI,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,WAAW,CAAc,IAAY,EAAE,IAAc;QACzD,OAAO,IAAI,CAAC,cAAc,CAAI,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,eAAe,CAAc,IAAY,EAAE,IAAc;QAC7D,OAAO,IAAI,CAAC,cAAc,CAAI,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,UAAU,CAAc,IAAY,EAAE,IAAc;QACxD,OAAO,IAAI,CAAC,cAAc,CAAI,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,aAAa,CAAc,IAAY;QAC3C,OAAO,IAAI,CAAC,cAAc,CAAI,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAc,MAAc,EAAE,IAAY,EAAE,OAAgF,EAAE;QACjJ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,QAAQ,CAAC,yDAAyD,CAAC,CAAC;QACzF,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,IAAqC,EAAE;YAC7D,MAAM,OAAO,GAA2B,EAAE,aAAa,EAAE,gBAAgB,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;YAC1G,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK;gBAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YACvF,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;QACF,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,UAAU,EAAE,EAAE,CAAC,CAAC;QACrG,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAClC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7E,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1B,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,UAAU,EAAE,EAAE,CAAC,CAAC;QACnG,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,MAAM,IAAI,mBAAmB,CAAC,uEAAuE,CAAC,CAAC;QAC/H,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,MAAM,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC;gBAAC,MAAM,GAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAA0B,CAAC,MAAgB,IAAI,IAAI,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC;YAChH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;gBAAE,MAAM,IAAI,QAAQ,CAAC,mCAAmC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9I,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;gBAAE,MAAM,IAAI,QAAQ,CAAC,+BAA+B,CAAC,CAAC;YAC5E,MAAM,IAAI,QAAQ,CAAC,sBAAsB,GAAG,CAAC,MAAM,MAAM,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3H,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,SAAc,CAAC;QAC9C,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;IAClC,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,QAAQ,CAAc,IAAY,EAAE,KAA8B;QACtE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACnG,OAAO,IAAI,CAAC,mBAAmB,CAAI,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,SAAS,CAAc,IAAY,EAAE,IAAc;QACvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC,mBAAmB,CAAI,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAc,IAAY,EAAE,IAAc;QACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC,mBAAmB,CAAI,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,WAAW,CAAc,IAAY;QACzC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,mBAAmB,CAAI,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,iBAAiB,CAAc,IAAY,EAAE,IAAc,EAAE,OAAgC;QACjG,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/G,OAAO,IAAI,CAAC,qBAAqB,CAAI,GAAG,CAAC,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAI,GAAa;QAClD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,mBAAmB,CAAC,+DAA+D,CAAC,CAAC;QACjG,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,qGAAqG;YACrG,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC;gBAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA2C,CAAC;gBAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAAC,CAAC;YACpM,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA2C,CAAC;QACvE,sDAAsD;QACtD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,oBAAoB,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAM,CAAC;QAC3D,CAAC;QACD,OAAO,IAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAI,GAAa;QAChD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;IAClC,CAAC;CACF"}