nowaikit 4.11.1 → 4.12.0

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 (75) hide show
  1. package/desktop/renderer/dist/assets/index-DIXajM0H.js +55 -0
  2. package/desktop/renderer/dist/index.html +1 -1
  3. package/dist/cli/detect-clients.d.ts +1 -1
  4. package/dist/cli/detect-clients.d.ts.map +1 -1
  5. package/dist/cli/detect-clients.js +13 -0
  6. package/dist/cli/detect-clients.js.map +1 -1
  7. package/dist/cli/setup.js +1 -1
  8. package/dist/cli/setup.js.map +1 -1
  9. package/dist/cli/writers/index.d.ts.map +1 -1
  10. package/dist/cli/writers/index.js +20 -0
  11. package/dist/cli/writers/index.js.map +1 -1
  12. package/dist/direct/llm-client.js +1 -1
  13. package/dist/direct/llm-client.js.map +1 -1
  14. package/dist/server.d.ts.map +1 -1
  15. package/dist/server.js +2 -1
  16. package/dist/server.js.map +1 -1
  17. package/dist/servicenow/client.d.ts +12 -0
  18. package/dist/servicenow/client.d.ts.map +1 -1
  19. package/dist/servicenow/client.js +54 -0
  20. package/dist/servicenow/client.js.map +1 -1
  21. package/dist/tools/access-admin.d.ts +162 -0
  22. package/dist/tools/access-admin.d.ts.map +1 -0
  23. package/dist/tools/access-admin.js +216 -0
  24. package/dist/tools/access-admin.js.map +1 -0
  25. package/dist/tools/ai-agent-exec.d.ts +70 -0
  26. package/dist/tools/ai-agent-exec.d.ts.map +1 -0
  27. package/dist/tools/ai-agent-exec.js +73 -0
  28. package/dist/tools/ai-agent-exec.js.map +1 -0
  29. package/dist/tools/approvals-extra.d.ts +202 -0
  30. package/dist/tools/approvals-extra.d.ts.map +1 -0
  31. package/dist/tools/approvals-extra.js +212 -0
  32. package/dist/tools/approvals-extra.js.map +1 -0
  33. package/dist/tools/catalog-fulfillment.d.ts +349 -0
  34. package/dist/tools/catalog-fulfillment.d.ts.map +1 -0
  35. package/dist/tools/catalog-fulfillment.js +222 -0
  36. package/dist/tools/catalog-fulfillment.js.map +1 -0
  37. package/dist/tools/grc-extra.d.ts +149 -0
  38. package/dist/tools/grc-extra.d.ts.map +1 -0
  39. package/dist/tools/grc-extra.js +115 -0
  40. package/dist/tools/grc-extra.js.map +1 -0
  41. package/dist/tools/index.d.ts +1600 -107
  42. package/dist/tools/index.d.ts.map +1 -1
  43. package/dist/tools/index.js +38 -0
  44. package/dist/tools/index.js.map +1 -1
  45. package/dist/tools/oncall.d.ts +165 -0
  46. package/dist/tools/oncall.d.ts.map +1 -0
  47. package/dist/tools/oncall.js +155 -0
  48. package/dist/tools/oncall.js.map +1 -0
  49. package/dist/tools/platform-ops.d.ts +156 -0
  50. package/dist/tools/platform-ops.d.ts.map +1 -0
  51. package/dist/tools/platform-ops.js +141 -0
  52. package/dist/tools/platform-ops.js.map +1 -0
  53. package/dist/tools/service-mapping.d.ts +108 -0
  54. package/dist/tools/service-mapping.d.ts.map +1 -0
  55. package/dist/tools/service-mapping.js +144 -0
  56. package/dist/tools/service-mapping.js.map +1 -0
  57. package/dist/tools/service-portfolio.d.ts +93 -0
  58. package/dist/tools/service-portfolio.d.ts.map +1 -0
  59. package/dist/tools/service-portfolio.js +86 -0
  60. package/dist/tools/service-portfolio.js.map +1 -0
  61. package/dist/tools/sla.d.ts +222 -0
  62. package/dist/tools/sla.d.ts.map +1 -0
  63. package/dist/tools/sla.js +160 -0
  64. package/dist/tools/sla.js.map +1 -0
  65. package/dist/tools/sn-parity.d.ts +239 -0
  66. package/dist/tools/sn-parity.d.ts.map +1 -0
  67. package/dist/tools/sn-parity.js +236 -0
  68. package/dist/tools/sn-parity.js.map +1 -0
  69. package/dist/tools/survey.d.ts +140 -0
  70. package/dist/tools/survey.d.ts.map +1 -0
  71. package/dist/tools/survey.js +118 -0
  72. package/dist/tools/survey.js.map +1 -0
  73. package/dist/tools-manifest.json +1537 -0
  74. package/package.json +15 -8
  75. package/desktop/renderer/dist/assets/index-BQ4P9VJR.js +0 -49
@@ -0,0 +1,86 @@
1
+ import { ServiceNowError } from '../utils/errors.js';
2
+ import { requireWrite } from '../utils/permissions.js';
3
+ export function getServicePortfolioToolDefinitions() {
4
+ return [
5
+ {
6
+ name: 'create_business_service',
7
+ description: 'Create a business service (cmdb_ci_service). Requires WRITE_ENABLED=true',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {
11
+ name: { type: 'string', description: 'Business service name' },
12
+ owned_by: { type: 'string', description: 'Owner user sys_id' },
13
+ support_group: { type: 'string', description: 'Support group sys_id' },
14
+ fields: { type: 'object', description: 'Additional field values' },
15
+ },
16
+ required: ['name'],
17
+ },
18
+ },
19
+ {
20
+ name: 'create_service_offering',
21
+ description: 'Create a service offering under a business service (service_offering). Requires WRITE_ENABLED=true',
22
+ inputSchema: {
23
+ type: 'object',
24
+ properties: {
25
+ name: { type: 'string', description: 'Service offering name' },
26
+ parent: { type: 'string', description: 'Parent business service sys_id (cmdb_ci_service)' },
27
+ support_group: { type: 'string', description: 'Support group sys_id' },
28
+ fields: { type: 'object', description: 'Additional field values' },
29
+ },
30
+ required: ['name'],
31
+ },
32
+ },
33
+ {
34
+ name: 'list_service_offerings',
35
+ description: 'List service offerings (service_offering), optionally by parent business service',
36
+ inputSchema: {
37
+ type: 'object',
38
+ properties: {
39
+ parent: { type: 'string', description: 'Parent business service sys_id' },
40
+ query: { type: 'string', description: 'Search offerings by name' },
41
+ limit: { type: 'number', description: 'Max records (default 50)' },
42
+ },
43
+ required: [],
44
+ },
45
+ },
46
+ ];
47
+ }
48
+ export async function executeServicePortfolioToolCall(client, name, args) {
49
+ switch (name) {
50
+ case 'create_business_service': {
51
+ requireWrite();
52
+ if (!args.name)
53
+ throw new ServiceNowError('name is required', 'INVALID_REQUEST');
54
+ const payload = { name: args.name, ...(args.fields ?? {}) };
55
+ if (args.owned_by)
56
+ payload.owned_by = args.owned_by;
57
+ if (args.support_group)
58
+ payload.support_group = args.support_group;
59
+ const result = await client.createRecord('cmdb_ci_service', payload);
60
+ return { ...result, summary: `Created business service "${args.name}"` };
61
+ }
62
+ case 'create_service_offering': {
63
+ requireWrite();
64
+ if (!args.name)
65
+ throw new ServiceNowError('name is required', 'INVALID_REQUEST');
66
+ const payload = { name: args.name, ...(args.fields ?? {}) };
67
+ if (args.parent)
68
+ payload.parent = args.parent;
69
+ if (args.support_group)
70
+ payload.support_group = args.support_group;
71
+ const result = await client.createRecord('service_offering', payload);
72
+ return { ...result, summary: `Created service offering "${args.name}"` };
73
+ }
74
+ case 'list_service_offerings': {
75
+ const parts = [];
76
+ if (args.parent)
77
+ parts.push(`parent=${args.parent}`);
78
+ if (args.query)
79
+ parts.push(`nameCONTAINS${args.query}`);
80
+ return await client.queryRecords({ table: 'service_offering', query: parts.join('^'), limit: args.limit ?? 50 });
81
+ }
82
+ default:
83
+ return null;
84
+ }
85
+ }
86
+ //# sourceMappingURL=service-portfolio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-portfolio.js","sourceRoot":"","sources":["../../src/tools/service-portfolio.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * SLA / OLA management tools. Read tools: Tier 0. Create/update: Tier 1 (WRITE_ENABLED=true).
3
+ *
4
+ * Tables:
5
+ * contract_sla — SLA/OLA definitions
6
+ * task_sla — live SLA instances attached to tasks (percent, breach, stage)
7
+ */
8
+ import type { ServiceNowClient } from '../servicenow/client.js';
9
+ export declare function getSlaToolDefinitions(): ({
10
+ name: string;
11
+ description: string;
12
+ inputSchema: {
13
+ type: string;
14
+ properties: {
15
+ query: {
16
+ type: string;
17
+ description: string;
18
+ };
19
+ table: {
20
+ type: string;
21
+ description: string;
22
+ };
23
+ active: {
24
+ type: string;
25
+ description: string;
26
+ };
27
+ limit: {
28
+ type: string;
29
+ description: string;
30
+ };
31
+ name?: undefined;
32
+ collection?: undefined;
33
+ duration_type?: undefined;
34
+ duration?: undefined;
35
+ start_condition?: undefined;
36
+ stop_condition?: undefined;
37
+ schedule?: undefined;
38
+ type?: undefined;
39
+ fields?: undefined;
40
+ sys_id?: undefined;
41
+ task?: undefined;
42
+ task_number?: undefined;
43
+ active_only?: undefined;
44
+ breached?: undefined;
45
+ min_percentage?: undefined;
46
+ sla_table?: undefined;
47
+ };
48
+ required: never[];
49
+ };
50
+ } | {
51
+ name: string;
52
+ description: string;
53
+ inputSchema: {
54
+ type: string;
55
+ properties: {
56
+ name: {
57
+ type: string;
58
+ description: string;
59
+ };
60
+ collection: {
61
+ type: string;
62
+ description: string;
63
+ };
64
+ duration_type: {
65
+ type: string;
66
+ description: string;
67
+ };
68
+ duration: {
69
+ type: string;
70
+ description: string;
71
+ };
72
+ start_condition: {
73
+ type: string;
74
+ description: string;
75
+ };
76
+ stop_condition: {
77
+ type: string;
78
+ description: string;
79
+ };
80
+ schedule: {
81
+ type: string;
82
+ description: string;
83
+ };
84
+ type: {
85
+ type: string;
86
+ description: string;
87
+ };
88
+ fields: {
89
+ type: string;
90
+ description: string;
91
+ };
92
+ query?: undefined;
93
+ table?: undefined;
94
+ active?: undefined;
95
+ limit?: undefined;
96
+ sys_id?: undefined;
97
+ task?: undefined;
98
+ task_number?: undefined;
99
+ active_only?: undefined;
100
+ breached?: undefined;
101
+ min_percentage?: undefined;
102
+ sla_table?: undefined;
103
+ };
104
+ required: string[];
105
+ };
106
+ } | {
107
+ name: string;
108
+ description: string;
109
+ inputSchema: {
110
+ type: string;
111
+ properties: {
112
+ sys_id: {
113
+ type: string;
114
+ description: string;
115
+ };
116
+ fields: {
117
+ type: string;
118
+ description: string;
119
+ };
120
+ query?: undefined;
121
+ table?: undefined;
122
+ active?: undefined;
123
+ limit?: undefined;
124
+ name?: undefined;
125
+ collection?: undefined;
126
+ duration_type?: undefined;
127
+ duration?: undefined;
128
+ start_condition?: undefined;
129
+ stop_condition?: undefined;
130
+ schedule?: undefined;
131
+ type?: undefined;
132
+ task?: undefined;
133
+ task_number?: undefined;
134
+ active_only?: undefined;
135
+ breached?: undefined;
136
+ min_percentage?: undefined;
137
+ sla_table?: undefined;
138
+ };
139
+ required: string[];
140
+ };
141
+ } | {
142
+ name: string;
143
+ description: string;
144
+ inputSchema: {
145
+ type: string;
146
+ properties: {
147
+ task: {
148
+ type: string;
149
+ description: string;
150
+ };
151
+ task_number: {
152
+ type: string;
153
+ description: string;
154
+ };
155
+ active_only: {
156
+ type: string;
157
+ description: string;
158
+ };
159
+ query?: undefined;
160
+ table?: undefined;
161
+ active?: undefined;
162
+ limit?: undefined;
163
+ name?: undefined;
164
+ collection?: undefined;
165
+ duration_type?: undefined;
166
+ duration?: undefined;
167
+ start_condition?: undefined;
168
+ stop_condition?: undefined;
169
+ schedule?: undefined;
170
+ type?: undefined;
171
+ fields?: undefined;
172
+ sys_id?: undefined;
173
+ breached?: undefined;
174
+ min_percentage?: undefined;
175
+ sla_table?: undefined;
176
+ };
177
+ required: never[];
178
+ };
179
+ } | {
180
+ name: string;
181
+ description: string;
182
+ inputSchema: {
183
+ type: string;
184
+ properties: {
185
+ breached: {
186
+ type: string;
187
+ description: string;
188
+ };
189
+ min_percentage: {
190
+ type: string;
191
+ description: string;
192
+ };
193
+ sla_table: {
194
+ type: string;
195
+ description: string;
196
+ };
197
+ limit: {
198
+ type: string;
199
+ description: string;
200
+ };
201
+ query?: undefined;
202
+ table?: undefined;
203
+ active?: undefined;
204
+ name?: undefined;
205
+ collection?: undefined;
206
+ duration_type?: undefined;
207
+ duration?: undefined;
208
+ start_condition?: undefined;
209
+ stop_condition?: undefined;
210
+ schedule?: undefined;
211
+ type?: undefined;
212
+ fields?: undefined;
213
+ sys_id?: undefined;
214
+ task?: undefined;
215
+ task_number?: undefined;
216
+ active_only?: undefined;
217
+ };
218
+ required: never[];
219
+ };
220
+ })[];
221
+ export declare function executeSlaToolCall(client: ServiceNowClient, name: string, args: Record<string, any>): Promise<any>;
222
+ //# sourceMappingURL=sla.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sla.d.ts","sourceRoot":"","sources":["../../src/tools/sla.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,wBAAgB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2EpC;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,GAAG,CAAC,CAoEd"}
@@ -0,0 +1,160 @@
1
+ import { ServiceNowError } from '../utils/errors.js';
2
+ import { requireWrite } from '../utils/permissions.js';
3
+ export function getSlaToolDefinitions() {
4
+ return [
5
+ {
6
+ name: 'list_sla_definitions',
7
+ description: 'List SLA/OLA definitions (contract_sla), optionally filtered by name, table, or active status',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {
11
+ query: { type: 'string', description: 'Search definitions by name' },
12
+ table: { type: 'string', description: 'Filter to a collection/table (e.g. "incident")' },
13
+ active: { type: 'boolean', description: 'Filter to active definitions only' },
14
+ limit: { type: 'number', description: 'Max records to return (default 50)' },
15
+ },
16
+ required: [],
17
+ },
18
+ },
19
+ {
20
+ name: 'create_sla_definition',
21
+ description: 'Create an SLA/OLA definition (contract_sla). Requires WRITE_ENABLED=true',
22
+ inputSchema: {
23
+ type: 'object',
24
+ properties: {
25
+ name: { type: 'string', description: 'SLA definition name' },
26
+ collection: { type: 'string', description: 'Table the SLA applies to (e.g. "incident")' },
27
+ duration_type: { type: 'string', description: 'Duration type (e.g. "User specified")' },
28
+ duration: { type: 'string', description: 'Duration value (e.g. "1970-01-01 04:00:00" for 4h)' },
29
+ start_condition: { type: 'string', description: 'Encoded start condition' },
30
+ stop_condition: { type: 'string', description: 'Encoded stop condition' },
31
+ schedule: { type: 'string', description: 'Schedule sys_id (business hours)' },
32
+ type: { type: 'string', description: '"SLA" or "OLA" (default SLA)' },
33
+ fields: { type: 'object', description: 'Additional field values' },
34
+ },
35
+ required: ['name', 'collection'],
36
+ },
37
+ },
38
+ {
39
+ name: 'update_sla_definition',
40
+ description: 'Update an SLA/OLA definition (contract_sla). Requires WRITE_ENABLED=true',
41
+ inputSchema: {
42
+ type: 'object',
43
+ properties: {
44
+ sys_id: { type: 'string', description: 'sys_id of the definition' },
45
+ fields: { type: 'object', description: 'Field values to update' },
46
+ },
47
+ required: ['sys_id', 'fields'],
48
+ },
49
+ },
50
+ {
51
+ name: 'get_task_sla',
52
+ description: 'Get live SLA instances (task_sla) for a task — percent complete, breach status, stage, planned end',
53
+ inputSchema: {
54
+ type: 'object',
55
+ properties: {
56
+ task: { type: 'string', description: 'sys_id of the task (incident/change/etc.)' },
57
+ task_number: { type: 'string', description: 'Task number (e.g. INC0010001) if sys_id not known' },
58
+ active_only: { type: 'boolean', description: 'Only in-progress SLAs (default true)' },
59
+ },
60
+ required: [],
61
+ },
62
+ },
63
+ {
64
+ name: 'list_breached_slas',
65
+ description: 'List SLA instances that have breached or are at risk within a window (task_sla)',
66
+ inputSchema: {
67
+ type: 'object',
68
+ properties: {
69
+ breached: { type: 'boolean', description: 'true = already breached; false = at-risk/in-progress (default true)' },
70
+ min_percentage: { type: 'number', description: 'For at-risk: minimum business_percentage (e.g. 80)' },
71
+ sla_table: { type: 'string', description: 'Filter to a task table (e.g. "incident") via task.sys_class_name' },
72
+ limit: { type: 'number', description: 'Max records (default 50)' },
73
+ },
74
+ required: [],
75
+ },
76
+ },
77
+ ];
78
+ }
79
+ export async function executeSlaToolCall(client, name, args) {
80
+ switch (name) {
81
+ case 'list_sla_definitions': {
82
+ const parts = [];
83
+ if (args.active !== undefined)
84
+ parts.push(`active=${args.active ? 'true' : 'false'}`);
85
+ if (args.table)
86
+ parts.push(`collection=${args.table}`);
87
+ if (args.query)
88
+ parts.push(`nameCONTAINS${args.query}`);
89
+ return await client.queryRecords({ table: 'contract_sla', query: parts.join('^'), limit: args.limit ?? 50 });
90
+ }
91
+ case 'create_sla_definition': {
92
+ requireWrite();
93
+ if (!args.name || !args.collection)
94
+ throw new ServiceNowError('name and collection are required', 'INVALID_REQUEST');
95
+ const payload = {
96
+ name: args.name,
97
+ collection: args.collection,
98
+ type: args.type ?? 'SLA',
99
+ active: 'true',
100
+ ...(args.fields ?? {}),
101
+ };
102
+ for (const k of ['duration_type', 'duration', 'start_condition', 'stop_condition', 'schedule']) {
103
+ if (args[k] !== undefined)
104
+ payload[k] = args[k];
105
+ }
106
+ const result = await client.createRecord('contract_sla', payload);
107
+ return { ...result, summary: `Created SLA definition "${args.name}" on ${args.collection}` };
108
+ }
109
+ case 'update_sla_definition': {
110
+ requireWrite();
111
+ if (!args.sys_id)
112
+ throw new ServiceNowError('sys_id is required', 'INVALID_REQUEST');
113
+ const result = await client.updateRecord('contract_sla', args.sys_id, args.fields ?? {});
114
+ return { ...result, summary: `Updated SLA definition ${args.sys_id}` };
115
+ }
116
+ case 'get_task_sla': {
117
+ let taskId = args.task;
118
+ if (!taskId && args.task_number) {
119
+ const resp = await client.queryRecords({ table: 'task', query: `number=${args.task_number}`, limit: 1 });
120
+ if (resp.count === 0)
121
+ throw new ServiceNowError(`Task not found: ${args.task_number}`, 'NOT_FOUND');
122
+ taskId = resp.records[0].sys_id;
123
+ }
124
+ if (!taskId)
125
+ throw new ServiceNowError('task or task_number is required', 'INVALID_REQUEST');
126
+ const parts = [`task=${taskId}`];
127
+ if (args.active_only !== false)
128
+ parts.push('active=true');
129
+ return await client.queryRecords({
130
+ table: 'task_sla',
131
+ query: parts.join('^'),
132
+ fields: 'sla,stage,business_percentage,percentage,has_breached,planned_end_time,business_time_left,sla.name',
133
+ limit: 100,
134
+ });
135
+ }
136
+ case 'list_breached_slas': {
137
+ const parts = ['active=true'];
138
+ if (args.breached !== false) {
139
+ parts.push('has_breached=true');
140
+ }
141
+ else if (args.min_percentage !== undefined) {
142
+ parts.push(`business_percentage>=${args.min_percentage}^has_breached=false`);
143
+ }
144
+ else {
145
+ parts.push('has_breached=false');
146
+ }
147
+ if (args.sla_table)
148
+ parts.push(`task.sys_class_name=${args.sla_table}`);
149
+ return await client.queryRecords({
150
+ table: 'task_sla',
151
+ query: parts.join('^') + '^ORDERBYDESCbusiness_percentage',
152
+ fields: 'task,task.number,sla.name,stage,business_percentage,has_breached,planned_end_time',
153
+ limit: args.limit ?? 50,
154
+ });
155
+ }
156
+ default:
157
+ return null;
158
+ }
159
+ }
160
+ //# sourceMappingURL=sla.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sla.js","sourceRoot":"","sources":["../../src/tools/sla.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL;YACE,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,+FAA+F;YAC5G,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;oBACpE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gDAAgD,EAAE;oBACxF,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,mCAAmC,EAAE;oBAC7E,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE;iBAC7E;gBACD,QAAQ,EAAE,EAAE;aACb;SACF;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,WAAW,EAAE,0EAA0E;YACvF,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE;oBAC5D,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;oBACzF,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;oBACvF,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oDAAoD,EAAE;oBAC/F,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;oBAC3E,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;oBACzE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;oBAC7E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;oBACrE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;iBACnE;gBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;aACjC;SACF;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,WAAW,EAAE,0EAA0E;YACvF,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;oBACnE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;iBAClE;gBACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;aAC/B;SACF;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,oGAAoG;YACjH,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;oBAClF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAE;oBACjG,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,sCAAsC,EAAE;iBACtF;gBACD,QAAQ,EAAE,EAAE;aACb;SACF;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,WAAW,EAAE,iFAAiF;YAC9F,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,qEAAqE,EAAE;oBACjH,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oDAAoD,EAAE;oBACrG,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kEAAkE,EAAE;oBAC9G,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;iBACnE;gBACD,QAAQ,EAAE,EAAE;aACb;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAwB,EACxB,IAAY,EACZ,IAAyB;IAEzB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACtF,IAAI,IAAI,CAAC,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACvD,IAAI,IAAI,CAAC,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACxD,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/G,CAAC;QACD,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,eAAe,CAAC,kCAAkC,EAAE,iBAAiB,CAAC,CAAC;YACrH,MAAM,OAAO,GAAwB;gBACnC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK;gBACxB,MAAM,EAAE,MAAM;gBACd,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;aACvB,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,CAAC;gBAC/F,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS;oBAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YAClE,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,2BAA2B,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;QAC/F,CAAC;QACD,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,eAAe,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;YACrF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YACzF,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,0BAA0B,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACzE,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACzG,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC;oBAAE,MAAM,IAAI,eAAe,CAAC,mBAAmB,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAC;gBACpG,MAAM,GAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAS,CAAC,MAAM,CAAC;YAC3C,CAAC;YACD,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,eAAe,CAAC,iCAAiC,EAAE,iBAAiB,CAAC,CAAC;YAC7F,MAAM,KAAK,GAAG,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;YACjC,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1D,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC;gBAC/B,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;gBACtB,MAAM,EAAE,oGAAoG;gBAC5G,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;QACL,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,KAAK,GAAa,CAAC,aAAa,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;gBAC7C,KAAK,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,cAAc,qBAAqB,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,IAAI,CAAC,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACxE,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC;gBAC/B,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,iCAAiC;gBAC1D,MAAM,EAAE,mFAAmF;gBAC3F,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;aACxB,CAAC,CAAC;QACL,CAAC;QACD;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC"}