@dbx-tools/shared-genie 0.9.129 → 0.9.132

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.
@@ -27,9 +27,22 @@ export const GenieAgentOutputItemSchema = z
27
27
  arguments: z.string().optional(),
28
28
  output: z.string().optional(),
29
29
  status: z.string().optional(),
30
+ role: z.string().optional(),
30
31
  content: z.array(GenieAgentContentSchema).optional(),
32
+ metadata: z.unknown().optional(),
33
+ created_at: z.number().optional(),
31
34
  })
32
35
  .loose();
36
+ /** One page of an Agent Mode conversation's item history. */
37
+ export const GenieAgentConversationItemsSchema = z
38
+ .object({
39
+ data: z.array(GenieAgentOutputItemSchema).describe("Conversation items, oldest first."),
40
+ has_more: z.boolean().optional().describe("Whether another page follows `last_id`."),
41
+ last_id: z.string().optional().describe("Item id that the next page starts after."),
42
+ status: z.string().optional().describe("Current status of the conversation's latest response."),
43
+ })
44
+ .loose()
45
+ .describe("Page of Agent Mode conversation items.");
33
46
  /** Genie Agent Mode response carried by lifecycle events. */
34
47
  export const GenieAgentResponseSchema = z
35
48
  .object({
@@ -114,18 +127,73 @@ export function projectAgentModeMessage(spaceId, content, response, items) {
114
127
  : typeof response.error === "string"
115
128
  ? response.error
116
129
  : undefined;
130
+ const messageId = items.map(itemMessageId).find((id) => id !== undefined) ?? response.id;
117
131
  return GenieMessageSchema.parse({
118
- id: response.id,
119
- message_id: response.id,
132
+ id: messageId,
133
+ message_id: messageId,
120
134
  space_id: spaceId,
121
135
  conversation_id: response.conversation_id ?? "",
122
136
  content,
123
137
  status: agentModeStatus(response.status, items),
124
- attachments: items.flatMap(itemAttachments),
138
+ attachments: withStatementIds(items.flatMap(itemAttachments), items),
125
139
  ...(response.created_at !== undefined ? { created_timestamp: response.created_at } : {}),
126
140
  ...(errorMessage ? { error: { error: errorMessage } } : {}),
127
141
  });
128
142
  }
143
+ /**
144
+ * Project an Agent Mode conversation's item history onto one Genie message per
145
+ * turn. Items are grouped by their `metadata.message_id`; each turn's user
146
+ * `message` item supplies the question.
147
+ */
148
+ export function projectAgentModeConversation(spaceId, conversationId, items, status = "completed") {
149
+ const turns = [];
150
+ let current;
151
+ for (const item of items) {
152
+ if (item.type === "message" && item.role === "user") {
153
+ const messageId = itemMessageId(item) ??
154
+ (item.id?.endsWith("_input") ? item.id.slice(0, -"_input".length) : item.id);
155
+ if (!messageId)
156
+ continue;
157
+ current = { messageId, question: item, items: [] };
158
+ turns.push(current);
159
+ continue;
160
+ }
161
+ current?.items.push(item);
162
+ }
163
+ return turns.map((turn, index) => {
164
+ const failed = turn.items.some((item) => item.status === "failed");
165
+ const turnStatus = failed ? "failed" : index === turns.length - 1 ? status : "completed";
166
+ return projectAgentModeMessage(spaceId, contentText(turn.question.content, "input_text").join("\n"), {
167
+ id: turn.messageId,
168
+ status: turnStatus,
169
+ conversation_id: conversationId,
170
+ ...(turn.question.created_at !== undefined ? { created_at: turn.question.created_at } : {}),
171
+ }, turn.items);
172
+ });
173
+ }
174
+ function itemMetadata(item) {
175
+ return object.isRecord(item.metadata) ? item.metadata : undefined;
176
+ }
177
+ function itemMessageId(item) {
178
+ const messageId = itemMetadata(item)?.message_id;
179
+ return typeof messageId === "string" ? messageId : undefined;
180
+ }
181
+ /** Copy each query output's `statement_id` onto the query attachment it answers. */
182
+ function withStatementIds(attachments, items) {
183
+ const statements = new Map();
184
+ for (const item of items) {
185
+ const statementId = itemMetadata(item)?.statement_id;
186
+ if (item.type === "function_call_output" && item.call_id && typeof statementId === "string") {
187
+ statements.set(item.call_id, statementId);
188
+ }
189
+ }
190
+ return attachments.map((attachment) => {
191
+ const statementId = attachment.query && statements.get(attachment.attachment_id ?? "");
192
+ return statementId && attachment.query
193
+ ? { ...attachment, query: { ...attachment.query, statement_id: statementId } }
194
+ : attachment;
195
+ });
196
+ }
129
197
  function agentModeStatus(value, items) {
130
198
  if (value === "completed")
131
199
  return "COMPLETED";
@@ -149,6 +217,7 @@ function itemAttachments(item) {
149
217
  : [{ attachment_id: id, attachment_type: "query", query: { id, thoughts } }];
150
218
  }
151
219
  if (item.type === "function_call") {
220
+ const callId = item.call_id ?? item.id;
152
221
  const argumentsValue = json.parseRecord(item.arguments);
153
222
  const query = typeof argumentsValue?.sql === "string"
154
223
  ? argumentsValue.sql
@@ -159,10 +228,10 @@ function itemAttachments(item) {
159
228
  return query
160
229
  ? [
161
230
  {
162
- attachment_id: id,
231
+ attachment_id: callId,
163
232
  attachment_type: "query",
164
233
  query: {
165
- id,
234
+ id: callId,
166
235
  query,
167
236
  ...(title ? { title } : {}),
168
237
  },
@@ -171,7 +240,22 @@ function itemAttachments(item) {
171
240
  : [];
172
241
  }
173
242
  if (item.type === "function_call_output" && item.output !== undefined) {
174
- return [textAttachment(id, item.output)];
243
+ const viz = itemMetadata(item)?.viz;
244
+ if (object.isRecord(viz) && typeof viz.attachment_id === "string") {
245
+ return [
246
+ {
247
+ attachment_id: viz.attachment_id,
248
+ attachment_type: "viz",
249
+ viz: {
250
+ ...(item.output ? { title: item.output } : {}),
251
+ ...(typeof viz.query_attachment_id === "string"
252
+ ? { query_attachment_id: viz.query_attachment_id }
253
+ : {}),
254
+ },
255
+ },
256
+ ];
257
+ }
258
+ return [textAttachment(id, item.output, item.metadata)];
175
259
  }
176
260
  if (item.type === "message") {
177
261
  return (item.content ?? []).flatMap((part) => part.type === "output_text" && part.text
@@ -197,4 +281,4 @@ function textAttachment(id, content, metadata) {
197
281
  },
198
282
  };
199
283
  }
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtbW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZ2VudC1tb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsT0FBTyxFQUNMLGtCQUFrQixHQUluQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLHFFQUFxRTtBQUNyRSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDO0tBQ3JDLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2pDLENBQUM7S0FDRCxLQUFLLEVBQUUsQ0FBQztBQUVYLG9FQUFvRTtBQUNwRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDO0tBQ3hDLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3pCLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzlCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2hDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMs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QUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxFQUFFLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FDbEIsS0FBNEQsRUFDNUQsSUFBWTtJQUVaLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDdEIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FDckIsRUFBc0IsRUFDdEIsT0FBZSxFQUNmLFFBQWtCO0lBRWxCLE9BQU87UUFDTCxhQUFhLEVBQUUsRUFBRTtRQUNqQixlQUFlLEVBQUUsTUFBTTtRQUN2QixJQUFJLEVBQUU7WUFDSixFQUFFO1lBQ0YsT0FBTztZQUNQLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsR0FBRyxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNoRDtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCcm93c2VyLXNhZmUgR2VuaWUgQWdlbnQgTW9kZSBTU0UgY29udHJhY3RzLlxuICpcbiAqIFNjaGVtYXMgdmFsaWRhdGUgdGhlIHN0YWJsZSBSZXNwb25zZXMtc3R5bGUgZXZlbnQgZW52ZWxvcGUgd2hpbGUgcHJlc2VydmluZ1xuICogYWRkaXRpdmUgZmllbGRzIGFuZCBvdXRwdXQtaXRlbSB2YXJpYW50cyBpbnRyb2R1Y2VkIGJ5IHRoZSBiZXRhIEFQSS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsganNvbiwgb2JqZWN0IH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7XG4gIEdlbmllTWVzc2FnZVNjaGVtYSxcbiAgdHlwZSBHZW5pZUF0dGFjaG1lbnQsXG4gIHR5cGUgR2VuaWVNZXNzYWdlLFxuICB0eXBlIEdlbmllVGhvdWdodCxcbn0gZnJvbSBcIi4vZ2VuaWUtbW9kZWwudHNcIjtcblxuLyoqIEFnZW50IE1vZGUgb3V0cHV0IGNvbnRlbnQgaXRlbSB3aXRoIGZvcndhcmQtY29tcGF0aWJsZSBmaWVsZHMuICovXG5leHBvcnQgY29uc3QgR2VuaWVBZ2VudENvbnRlbnRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHR5cGU6IHouc3RyaW5nKCksXG4gICAgdGV4dDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG1ldGFkYXRhOiB6LnVua25vd24oKS5vcHRpb25hbCgpLFxuICB9KVxuICAubG9vc2UoKTtcblxuLyoqIEFnZW50IE1vZGUgcmVzcG9uc2Ugb3V0cHV0IGl0ZW0gd2l0aCBrbm93biBwcm9qZWN0aW9uIGZpZWxkcy4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUFnZW50T3V0cHV0SXRlbVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgdHlwZTogei5zdHJpbmcoKSxcbiAgICBpZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNhbGxfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgYXJndW1lbnRzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgb3V0cHV0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgc3RhdHVzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY29udGVudDogei5hcnJheShHZW5pZUFnZW50Q29udGVudFNjaGVtYSkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLmxvb3NlKCk7XG5cbi8qKiBHZW5pZSBBZ2VudCBNb2RlIHJlc3BvbnNlIGNhcnJpZWQgYnkgbGlmZWN5Y2xlIGV2ZW50cy4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUFnZW50UmVzcG9uc2VTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG9iamVjdDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlkOiB6LnN0cmluZygpLFxuICAgIG1vZGVsOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgc3RhdHVzOiB6LnN0cmluZygpLFxuICAgIG91dHB1dDogei5hcnJheShHZW5pZUFnZW50T3V0cHV0SXRlbVNjaGVtYSkub3B0aW9uYWwoKSxcbiAgICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjcmVhdGVkX2F0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgZXJyb3I6IHoudW5rbm93bigpLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5sb29zZSgpO1xuXG4vKiogT25lIFNTRSBldmVudCBmcm9tIHRoZSBHZW5pZSBBZ2VudCBNb2RlIHJlc3BvbnNlIHN0cmVhbS4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUFnZW50TW9kZUV2ZW50U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0eXBlOiB6LnN0cmluZygpLFxuICAgIHNlcXVlbmNlX251bWJlcjogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIG91dHB1dF9pbmRleDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIHJlc3BvbnNlOiBHZW5pZUFnZW50UmVzcG9uc2VTY2hlbWEub3B0aW9uYWwoKSxcbiAgICBpdGVtOiBHZW5pZUFnZW50T3V0cHV0SXRlbVNjaGVtYS5vcHRpb25hbCgpLFxuICB9KVxuICAubG9vc2UoKTtcblxuLyoqIFZhbGlkYXRlZCBBZ2VudCBNb2RlIHJlc3BvbnNlIG91dHB1dCBpdGVtLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVBZ2VudE91dHB1dEl0ZW0gPSB6LmluZmVyPHR5cGVvZiBHZW5pZUFnZW50T3V0cHV0SXRlbVNjaGVtYT47XG4vKiogVmFsaWRhdGVkIEFnZW50IE1vZGUgcmVzcG9uc2UuICovXG5leHBvcnQgdHlwZSBHZW5pZUFnZW50UmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBHZW5pZUFnZW50UmVzcG9uc2VTY2hlbWE+O1xuLyoqIFZhbGlkYXRlZCBBZ2VudCBNb2RlIFNTRSBldmVudC4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQWdlbnRNb2RlRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZUFnZW50TW9kZUV2ZW50U2NoZW1hPjtcblxuLyoqIFN0YXRlZnVsIHB1cmUgcmVkdWNlciBmcm9tIEFnZW50IE1vZGUgU1NFIGV2ZW50cyB0byBHZW5pZSBtZXNzYWdlIHNuYXBzaG90cy4gKi9cbmV4cG9ydCBjbGFzcyBHZW5pZUFnZW50TW9kZVByb2plY3Rpb24ge1xuICBwcml2YXRlIHJlYWRvbmx5IGl0ZW1zID0gbmV3IE1hcDxzdHJpbmcsIEdlbmllQWdlbnRPdXRwdXRJdGVtPigpO1xuICBwcml2YXRlIHJlc3BvbnNlOiBHZW5pZUFnZW50UmVzcG9uc2UgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzcGFjZUlkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250ZW50OiBzdHJpbmcsXG4gICkge31cblxuICAvKiogQXBwbHkgb25lIHZhbGlkYXRlZCBTU0UgZXZlbnQgYW5kIHJldHVybiBpdHMgcHJvamVjdGVkIHNuYXBzaG90LiAqL1xuICBhcHBseShldmVudDogR2VuaWVBZ2VudE1vZGVFdmVudCk6IEdlbmllTWVzc2FnZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGV2ZW50LnJlc3BvbnNlKSB7XG4gICAgICB0aGlzLnJlc3BvbnNlID0gZXZlbnQucmVzcG9uc2U7XG4gICAgICBpZiAoZXZlbnQucmVzcG9uc2Uub3V0cHV0KSB7XG4gICAgICAgIHRoaXMuaXRlbXMuY2xlYXIoKTtcbiAgICAgICAgZXZlbnQucmVzcG9uc2Uub3V0cHV0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgdGhpcy5pdGVtcy5zZXQoYWdlbnRJdGVtS2V5KGl0ZW0sIGluZGV4KSwgaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXZlbnQuaXRlbSkge1xuICAgICAgdGhpcy5pdGVtcy5zZXQoYWdlbnRJdGVtS2V5KGV2ZW50Lml0ZW0sIGV2ZW50Lm91dHB1dF9pbmRleCksIGV2ZW50Lml0ZW0pO1xuICAgIH1cbiAgICBpZiAoKCFldmVudC5yZXNwb25zZSAmJiAhZXZlbnQuaXRlbSkgfHwgIXRoaXMucmVzcG9uc2UpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHByb2plY3RBZ2VudE1vZGVNZXNzYWdlKHRoaXMuc3BhY2VJZCwgdGhpcy5jb250ZW50LCB0aGlzLnJlc3BvbnNlLCBbXG4gICAgICAuLi50aGlzLml0ZW1zLnZhbHVlcygpLFxuICAgIF0pO1xuICB9XG5cbiAgLyoqIEN1cnJlbnQgcmVzcG9uc2UgaWQsIG9uY2UgYHJlc3BvbnNlLmNyZWF0ZWRgIGhhcyBhcnJpdmVkLiAqL1xuICBnZXQgcmVzcG9uc2VJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlPy5pZDtcbiAgfVxuXG4gIC8qKiBDdXJyZW50IGNvbnZlcnNhdGlvbiBpZCwgb25jZSBhc3NpZ25lZCBieSBHZW5pZS4gKi9cbiAgZ2V0IGNvbnZlcnNhdGlvbklkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2U/LmNvbnZlcnNhdGlvbl9pZDtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBsYXRlc3QgcmVzcG9uc2Ugc3RhdHVzIGlzIHRlcm1pbmFsLiAqL1xuICBnZXQgdGVybWluYWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2UgPyBpc1Rlcm1pbmFsU3RhdHVzKHRoaXMucmVzcG9uc2Uuc3RhdHVzKSA6IGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzVGVybWluYWxTdGF0dXMoc3RhdHVzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0YXR1cyA9PT0gXCJjb21wbGV0ZWRcIiB8fCBzdGF0dXMgPT09IFwiZmFpbGVkXCIgfHwgc3RhdHVzID09PSBcImNhbmNlbGxlZFwiO1xufVxuXG5mdW5jdGlvbiBhZ2VudEl0ZW1LZXkoaXRlbTogR2VuaWVBZ2VudE91dHB1dEl0ZW0sIGluZGV4OiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBpdGVtLmlkID09PSBcInN0cmluZ1wiKSByZXR1cm4gaXRlbS5pZDtcbiAgaWYgKHR5cGVvZiBpdGVtLmNhbGxfaWQgPT09IFwic3RyaW5nXCIpIHJldHVybiBpdGVtLmNhbGxfaWQ7XG4gIHJldHVybiBTdHJpbmcodHlwZW9mIGluZGV4ID09PSBcIm51bWJlclwiID8gaW5kZXggOiAoaXRlbS50eXBlID8/IFwiaXRlbVwiKSk7XG59XG5cbi8qKiBQcm9qZWN0IG9uZSBBZ2VudCBNb2RlIHJlc3BvbnNlIHNuYXBzaG90IG9udG8gdGhlIHNoYXJlZCBHZW5pZSBtZXNzYWdlIHNoYXBlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RBZ2VudE1vZGVNZXNzYWdlKFxuICBzcGFjZUlkOiBzdHJpbmcsXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgcmVzcG9uc2U6IEdlbmllQWdlbnRSZXNwb25zZSxcbiAgaXRlbXM6IEdlbmllQWdlbnRPdXRwdXRJdGVtW10sXG4pOiBHZW5pZU1lc3NhZ2Uge1xuICBjb25zdCBlcnJvclZhbHVlID0gb2JqZWN0LmlzUmVjb3JkKHJlc3BvbnNlLmVycm9yKSA/IHJlc3BvbnNlLmVycm9yIDogdW5kZWZpbmVkO1xuICBjb25zdCBlcnJvck1lc3NhZ2UgPVxuICAgIHR5cGVvZiBlcnJvclZhbHVlPy5tZXNzYWdlID09PSBcInN0cmluZ1wiXG4gICAgICA/IGVycm9yVmFsdWUubWVzc2FnZVxuICAgICAgOiB0eXBlb2YgcmVzcG9uc2UuZXJyb3IgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyByZXNwb25zZS5lcnJvclxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEdlbmllTWVzc2FnZVNjaGVtYS5wYXJzZSh7XG4gICAgaWQ6IHJlc3BvbnNlLmlkLFxuICAgIG1lc3NhZ2VfaWQ6IHJlc3BvbnNlLmlkLFxuICAgIHNwYWNlX2lkOiBzcGFjZUlkLFxuICAgIGNvbnZlcnNhdGlvbl9pZDogcmVzcG9uc2UuY29udmVyc2F0aW9uX2lkID8/IFwiXCIsXG4gICAgY29udGVudCxcbiAgICBzdGF0dXM6IGFnZW50TW9kZVN0YXR1cyhyZXNwb25zZS5zdGF0dXMsIGl0ZW1zKSxcbiAgICBhdHRhY2htZW50czogaXRlbXMuZmxhdE1hcChpdGVtQXR0YWNobWVudHMpLFxuICAgIC4uLihyZXNwb25zZS5jcmVhdGVkX2F0ICE9PSB1bmRlZmluZWQgPyB7IGNyZWF0ZWRfdGltZXN0YW1wOiByZXNwb25zZS5jcmVhdGVkX2F0IH0gOiB7fSksXG4gICAgLi4uKGVycm9yTWVzc2FnZSA/IHsgZXJyb3I6IHsgZXJyb3I6IGVycm9yTWVzc2FnZSB9IH0gOiB7fSksXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZ2VudE1vZGVTdGF0dXModmFsdWU6IHN0cmluZywgaXRlbXM6IEdlbmllQWdlbnRPdXRwdXRJdGVtW10pOiBHZW5pZU1lc3NhZ2VbXCJzdGF0dXNcIl0ge1xuICBpZiAodmFsdWUgPT09IFwiY29tcGxldGVkXCIpIHJldHVybiBcIkNPTVBMRVRFRFwiO1xuICBpZiAodmFsdWUgPT09IFwiZmFpbGVkXCIpIHJldHVybiBcIkZBSUxFRFwiO1xuICBpZiAodmFsdWUgPT09IFwiY2FuY2VsbGVkXCIpIHJldHVybiBcIkNBTkNFTExFRFwiO1xuICBpZiAoaXRlbXMuc29tZSgoaXRlbSkgPT4gaXRlbS50eXBlID09PSBcImZ1bmN0aW9uX2NhbGxcIikpIHJldHVybiBcIkVYRUNVVElOR19RVUVSWVwiO1xuICByZXR1cm4gXCJBU0tJTkdfQUlcIjtcbn1cblxuZnVuY3Rpb24gaXRlbUF0dGFjaG1lbnRzKGl0ZW06IEdlbmllQWdlbnRPdXRwdXRJdGVtKTogR2VuaWVBdHRhY2htZW50W10ge1xuICBjb25zdCBpZCA9IGl0ZW0uaWQgPz8gaXRlbS5jYWxsX2lkO1xuICBpZiAoaXRlbS50eXBlID09PSBcInJlYXNvbmluZ1wiKSB7XG4gICAgY29uc3QgdGhvdWdodHMgPSBjb250ZW50VGV4dChpdGVtLmNvbnRlbnQsIFwicmVhc29uaW5nX3RleHRcIikubWFwKFxuICAgICAgKHRob3VnaHRDb250ZW50KTogR2VuaWVUaG91Z2h0ID0+ICh7XG4gICAgICAgIHRob3VnaHRfdHlwZTogXCJUSE9VR0hUX1RZUEVfU1RFUFNcIixcbiAgICAgICAgY29udGVudDogdGhvdWdodENvbnRlbnQsXG4gICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiB0aG91Z2h0cy5sZW5ndGggPT09IDBcbiAgICAgID8gW11cbiAgICAgIDogW3sgYXR0YWNobWVudF9pZDogaWQsIGF0dGFjaG1lbnRfdHlwZTogXCJxdWVyeVwiLCBxdWVyeTogeyBpZCwgdGhvdWdodHMgfSB9XTtcbiAgfVxuICBpZiAoaXRlbS50eXBlID09PSBcImZ1bmN0aW9uX2NhbGxcIikge1xuICAgIGNvbnN0IGFyZ3VtZW50c1ZhbHVlID0ganNvbi5wYXJzZVJlY29yZChpdGVtLmFyZ3VtZW50cyk7XG4gICAgY29uc3QgcXVlcnkgPVxuICAgICAgdHlwZW9mIGFyZ3VtZW50c1ZhbHVlPy5zcWwgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBhcmd1bWVudHNWYWx1ZS5zcWxcbiAgICAgICAgOiB0eXBlb2YgYXJndW1lbnRzVmFsdWU/LnF1ZXJ5ID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgPyBhcmd1bWVudHNWYWx1ZS5xdWVyeVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHRpdGxlID0gdHlwZW9mIGFyZ3VtZW50c1ZhbHVlPy50aXRsZSA9PT0gXCJzdHJpbmdcIiA/IGFyZ3VtZW50c1ZhbHVlLnRpdGxlIDogaXRlbS5uYW1lO1xuICAgIHJldHVybiBxdWVyeVxuICAgICAgPyBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYXR0YWNobWVudF9pZDogaWQsXG4gICAgICAgICAgICBhdHRhY2htZW50X3R5cGU6IFwicXVlcnlcIixcbiAgICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAgICAgLi4uKHRpdGxlID8geyB0aXRsZSB9IDoge30pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICA6IFtdO1xuICB9XG4gIGlmIChpdGVtLnR5cGUgPT09IFwiZnVuY3Rpb25fY2FsbF9vdXRwdXRcIiAmJiBpdGVtLm91dHB1dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFt0ZXh0QXR0YWNobWVudChpZCwgaXRlbS5vdXRwdXQpXTtcbiAgfVxuICBpZiAoaXRlbS50eXBlID09PSBcIm1lc3NhZ2VcIikge1xuICAgIHJldHVybiAoaXRlbS5jb250ZW50ID8/IFtdKS5mbGF0TWFwKChwYXJ0KSA9PlxuICAgICAgcGFydC50eXBlID09PSBcIm91dHB1dF90ZXh0XCIgJiYgcGFydC50ZXh0XG4gICAgICAgID8gW3RleHRBdHRhY2htZW50KGlkLCBwYXJ0LnRleHQsIHBhcnQubWV0YWRhdGEpXVxuICAgICAgICA6IFtdLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuXG5mdW5jdGlvbiBjb250ZW50VGV4dChcbiAgdmFsdWU6IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRDb250ZW50U2NoZW1hPltdIHwgdW5kZWZpbmVkLFxuICB0eXBlOiBzdHJpbmcsXG4pOiBzdHJpbmdbXSB7XG4gIGlmICghdmFsdWUpIHJldHVybiBbXTtcbiAgcmV0dXJuIHZhbHVlLmZsYXRNYXAoKHBhcnQpID0+IChwYXJ0LnR5cGUgPT09IHR5cGUgJiYgcGFydC50ZXh0ID8gW3BhcnQudGV4dF0gOiBbXSkpO1xufVxuXG5mdW5jdGlvbiB0ZXh0QXR0YWNobWVudChcbiAgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgY29udGVudDogc3RyaW5nLFxuICBtZXRhZGF0YT86IHVua25vd24sXG4pOiBHZW5pZUF0dGFjaG1lbnQge1xuICByZXR1cm4ge1xuICAgIGF0dGFjaG1lbnRfaWQ6IGlkLFxuICAgIGF0dGFjaG1lbnRfdHlwZTogXCJ0ZXh0XCIsXG4gICAgdGV4dDoge1xuICAgICAgaWQsXG4gICAgICBjb250ZW50LFxuICAgICAgcHVycG9zZTogXCJURVhUX0FUVEFDSE1FTlRfUFVSUE9TRV9BTlNXRVJcIixcbiAgICAgIC4uLihtZXRhZGF0YSAhPT0gdW5kZWZpbmVkID8geyBtZXRhZGF0YSB9IDoge30pLFxuICAgIH0sXG4gIH07XG59XG4iXX0=
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtbW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZ2VudC1tb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsT0FBTyxFQUNMLGtCQUFrQixHQUluQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLHFFQUFxRTtBQUNyRSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDO0tBQ3JDLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2pDLENBQUM7S0FDRCxLQUFLLEVBQUUsQ0FBQztBQUVYLG9FQUFvRTtBQUNwRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDO0tBQ3hDLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3pCLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzlCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2hDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMs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QUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDM0MsSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLElBQUksSUFBSSxDQUFDLElBQUk7WUFDdEMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUMsRUFBRSxDQUNQLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQ2xCLEtBQTRELEVBQzVELElBQVk7SUFFWixJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3RCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2RixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQ3JCLEVBQXNCLEVBQ3RCLE9BQWUsRUFDZixRQUFrQjtJQUVsQixPQUFPO1FBQ0wsYUFBYSxFQUFFLEVBQUU7UUFDakIsZUFBZSxFQUFFLE1BQU07UUFDdkIsSUFBSSxFQUFFO1lBQ0osRUFBRTtZQUNGLE9BQU87WUFDUCxPQUFPLEVBQUUsZ0NBQWdDO1lBQ3pDLEdBQUcsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDaEQ7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnJvd3Nlci1zYWZlIEdlbmllIEFnZW50IE1vZGUgU1NFIGNvbnRyYWN0cy5cbiAqXG4gKiBTY2hlbWFzIHZhbGlkYXRlIHRoZSBzdGFibGUgUmVzcG9uc2VzLXN0eWxlIGV2ZW50IGVudmVsb3BlIHdoaWxlIHByZXNlcnZpbmdcbiAqIGFkZGl0aXZlIGZpZWxkcyBhbmQgb3V0cHV0LWl0ZW0gdmFyaWFudHMgaW50cm9kdWNlZCBieSB0aGUgYmV0YSBBUEkuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGpzb24sIG9iamVjdCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQge1xuICBHZW5pZU1lc3NhZ2VTY2hlbWEsXG4gIHR5cGUgR2VuaWVBdHRhY2htZW50LFxuICB0eXBlIEdlbmllTWVzc2FnZSxcbiAgdHlwZSBHZW5pZVRob3VnaHQsXG59IGZyb20gXCIuL2dlbmllLW1vZGVsLnRzXCI7XG5cbi8qKiBBZ2VudCBNb2RlIG91dHB1dCBjb250ZW50IGl0ZW0gd2l0aCBmb3J3YXJkLWNvbXBhdGlibGUgZmllbGRzLiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQWdlbnRDb250ZW50U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0eXBlOiB6LnN0cmluZygpLFxuICAgIHRleHQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBtZXRhZGF0YTogei51bmtub3duKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLmxvb3NlKCk7XG5cbi8qKiBBZ2VudCBNb2RlIHJlc3BvbnNlIG91dHB1dCBpdGVtIHdpdGgga25vd24gcHJvamVjdGlvbiBmaWVsZHMuICovXG5leHBvcnQgY29uc3QgR2VuaWVBZ2VudE91dHB1dEl0ZW1TY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHR5cGU6IHouc3RyaW5nKCksXG4gICAgaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjYWxsX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGFyZ3VtZW50czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG91dHB1dDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHN0YXR1czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHJvbGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjb250ZW50OiB6LmFycmF5KEdlbmllQWdlbnRDb250ZW50U2NoZW1hKS5vcHRpb25hbCgpLFxuICAgIG1ldGFkYXRhOiB6LnVua25vd24oKS5vcHRpb25hbCgpLFxuICAgIGNyZWF0ZWRfYXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLmxvb3NlKCk7XG5cbi8qKiBPbmUgcGFnZSBvZiBhbiBBZ2VudCBNb2RlIGNvbnZlcnNhdGlvbidzIGl0ZW0gaGlzdG9yeS4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUFnZW50Q29udmVyc2F0aW9uSXRlbXNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGRhdGE6IHouYXJyYXkoR2VuaWVBZ2VudE91dHB1dEl0ZW1TY2hlbWEpLmRlc2NyaWJlKFwiQ29udmVyc2F0aW9uIGl0ZW1zLCBvbGRlc3QgZmlyc3QuXCIpLFxuICAgIGhhc19tb3JlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hldGhlciBhbm90aGVyIHBhZ2UgZm9sbG93cyBgbGFzdF9pZGAuXCIpLFxuICAgIGxhc3RfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkl0ZW0gaWQgdGhhdCB0aGUgbmV4dCBwYWdlIHN0YXJ0cyBhZnRlci5cIiksXG4gICAgc3RhdHVzOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXJyZW50IHN0YXR1cyBvZiB0aGUgY29udmVyc2F0aW9uJ3MgbGF0ZXN0IHJlc3BvbnNlLlwiKSxcbiAgfSlcbiAgLmxvb3NlKClcbiAgLmRlc2NyaWJlKFwiUGFnZSBvZiBBZ2VudCBNb2RlIGNvbnZlcnNhdGlvbiBpdGVtcy5cIik7XG5cbi8qKiBWYWxpZGF0ZWQgQWdlbnQgTW9kZSBjb252ZXJzYXRpb24gaXRlbSBwYWdlLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVBZ2VudENvbnZlcnNhdGlvbkl0ZW1zID0gei5pbmZlcjx0eXBlb2YgR2VuaWVBZ2VudENvbnZlcnNhdGlvbkl0ZW1zU2NoZW1hPjtcblxuLyoqIEdlbmllIEFnZW50IE1vZGUgcmVzcG9uc2UgY2FycmllZCBieSBsaWZlY3ljbGUgZXZlbnRzLiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQWdlbnRSZXNwb25zZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgb2JqZWN0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaWQ6IHouc3RyaW5nKCksXG4gICAgbW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBzdGF0dXM6IHouc3RyaW5nKCksXG4gICAgb3V0cHV0OiB6LmFycmF5KEdlbmllQWdlbnRPdXRwdXRJdGVtU2NoZW1hKS5vcHRpb25hbCgpLFxuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNyZWF0ZWRfYXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICBlcnJvcjogei51bmtub3duKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLmxvb3NlKCk7XG5cbi8qKiBPbmUgU1NFIGV2ZW50IGZyb20gdGhlIEdlbmllIEFnZW50IE1vZGUgcmVzcG9uc2Ugc3RyZWFtLiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQWdlbnRNb2RlRXZlbnRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHR5cGU6IHouc3RyaW5nKCksXG4gICAgc2VxdWVuY2VfbnVtYmVyOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgb3V0cHV0X2luZGV4OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgcmVzcG9uc2U6IEdlbmllQWdlbnRSZXNwb25zZVNjaGVtYS5vcHRpb25hbCgpLFxuICAgIGl0ZW06IEdlbmllQWdlbnRPdXRwdXRJdGVtU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5sb29zZSgpO1xuXG4vKiogVmFsaWRhdGVkIEFnZW50IE1vZGUgcmVzcG9uc2Ugb3V0cHV0IGl0ZW0uICovXG5leHBvcnQgdHlwZSBHZW5pZUFnZW50T3V0cHV0SXRlbSA9IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRPdXRwdXRJdGVtU2NoZW1hPjtcbi8qKiBWYWxpZGF0ZWQgQWdlbnQgTW9kZSByZXNwb25zZS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQWdlbnRSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRSZXNwb25zZVNjaGVtYT47XG4vKiogVmFsaWRhdGVkIEFnZW50IE1vZGUgU1NFIGV2ZW50LiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVBZ2VudE1vZGVFdmVudCA9IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRNb2RlRXZlbnRTY2hlbWE+O1xuXG4vKiogU3RhdGVmdWwgcHVyZSByZWR1Y2VyIGZyb20gQWdlbnQgTW9kZSBTU0UgZXZlbnRzIHRvIEdlbmllIG1lc3NhZ2Ugc25hcHNob3RzLiAqL1xuZXhwb3J0IGNsYXNzIEdlbmllQWdlbnRNb2RlUHJvamVjdGlvbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXRlbXMgPSBuZXcgTWFwPHN0cmluZywgR2VuaWVBZ2VudE91dHB1dEl0ZW0+KCk7XG4gIHByaXZhdGUgcmVzcG9uc2U6IEdlbmllQWdlbnRSZXNwb25zZSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNwYWNlSWQ6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZyxcbiAgKSB7fVxuXG4gIC8qKiBBcHBseSBvbmUgdmFsaWRhdGVkIFNTRSBldmVudCBhbmQgcmV0dXJuIGl0cyBwcm9qZWN0ZWQgc25hcHNob3QuICovXG4gIGFwcGx5KGV2ZW50OiBHZW5pZUFnZW50TW9kZUV2ZW50KTogR2VuaWVNZXNzYWdlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoZXZlbnQucmVzcG9uc2UpIHtcbiAgICAgIHRoaXMucmVzcG9uc2UgPSBldmVudC5yZXNwb25zZTtcbiAgICAgIGlmIChldmVudC5yZXNwb25zZS5vdXRwdXQpIHtcbiAgICAgICAgdGhpcy5pdGVtcy5jbGVhcigpO1xuICAgICAgICBldmVudC5yZXNwb25zZS5vdXRwdXQuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnNldChhZ2VudEl0ZW1LZXkoaXRlbSwgaW5kZXgpLCBpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChldmVudC5pdGVtKSB7XG4gICAgICB0aGlzLml0ZW1zLnNldChhZ2VudEl0ZW1LZXkoZXZlbnQuaXRlbSwgZXZlbnQub3V0cHV0X2luZGV4KSwgZXZlbnQuaXRlbSk7XG4gICAgfVxuICAgIGlmICgoIWV2ZW50LnJlc3BvbnNlICYmICFldmVudC5pdGVtKSB8fCAhdGhpcy5yZXNwb25zZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcHJvamVjdEFnZW50TW9kZU1lc3NhZ2UodGhpcy5zcGFjZUlkLCB0aGlzLmNvbnRlbnQsIHRoaXMucmVzcG9uc2UsIFtcbiAgICAgIC4uLnRoaXMuaXRlbXMudmFsdWVzKCksXG4gICAgXSk7XG4gIH1cblxuICAvKiogQ3VycmVudCByZXNwb25zZSBpZCwgb25jZSBgcmVzcG9uc2UuY3JlYXRlZGAgaGFzIGFycml2ZWQuICovXG4gIGdldCByZXNwb25zZUlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2U/LmlkO1xuICB9XG5cbiAgLyoqIEN1cnJlbnQgY29udmVyc2F0aW9uIGlkLCBvbmNlIGFzc2lnbmVkIGJ5IEdlbmllLiAqL1xuICBnZXQgY29udmVyc2F0aW9uSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZT8uY29udmVyc2F0aW9uX2lkO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGxhdGVzdCByZXNwb25zZSBzdGF0dXMgaXMgdGVybWluYWwuICovXG4gIGdldCB0ZXJtaW5hbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZSA/IGlzVGVybWluYWxTdGF0dXModGhpcy5yZXNwb25zZS5zdGF0dXMpIDogZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNUZXJtaW5hbFN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3RhdHVzID09PSBcImNvbXBsZXRlZFwiIHx8IHN0YXR1cyA9PT0gXCJmYWlsZWRcIiB8fCBzdGF0dXMgPT09IFwiY2FuY2VsbGVkXCI7XG59XG5cbmZ1bmN0aW9uIGFnZW50SXRlbUtleShpdGVtOiBHZW5pZUFnZW50T3V0cHV0SXRlbSwgaW5kZXg6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGl0ZW0uaWQgPT09IFwic3RyaW5nXCIpIHJldHVybiBpdGVtLmlkO1xuICBpZiAodHlwZW9mIGl0ZW0uY2FsbF9pZCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGl0ZW0uY2FsbF9pZDtcbiAgcmV0dXJuIFN0cmluZyh0eXBlb2YgaW5kZXggPT09IFwibnVtYmVyXCIgPyBpbmRleCA6IChpdGVtLnR5cGUgPz8gXCJpdGVtXCIpKTtcbn1cblxuLyoqIFByb2plY3Qgb25lIEFnZW50IE1vZGUgcmVzcG9uc2Ugc25hcHNob3Qgb250byB0aGUgc2hhcmVkIEdlbmllIG1lc3NhZ2Ugc2hhcGUuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdEFnZW50TW9kZU1lc3NhZ2UoXG4gIHNwYWNlSWQ6IHN0cmluZyxcbiAgY29udGVudDogc3RyaW5nLFxuICByZXNwb25zZTogR2VuaWVBZ2VudFJlc3BvbnNlLFxuICBpdGVtczogR2VuaWVBZ2VudE91dHB1dEl0ZW1bXSxcbik6IEdlbmllTWVzc2FnZSB7XG4gIGNvbnN0IGVycm9yVmFsdWUgPSBvYmplY3QuaXNSZWNvcmQocmVzcG9uc2UuZXJyb3IpID8gcmVzcG9uc2UuZXJyb3IgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9XG4gICAgdHlwZW9mIGVycm9yVmFsdWU/Lm1lc3NhZ2UgPT09IFwic3RyaW5nXCJcbiAgICAgID8gZXJyb3JWYWx1ZS5tZXNzYWdlXG4gICAgICA6IHR5cGVvZiByZXNwb25zZS5lcnJvciA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IHJlc3BvbnNlLmVycm9yXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICBjb25zdCBtZXNzYWdlSWQgPSBpdGVtcy5tYXAoaXRlbU1lc3NhZ2VJZCkuZmluZCgoaWQpID0+IGlkICE9PSB1bmRlZmluZWQpID8/IHJlc3BvbnNlLmlkO1xuICByZXR1cm4gR2VuaWVNZXNzYWdlU2NoZW1hLnBhcnNlKHtcbiAgICBpZDogbWVzc2FnZUlkLFxuICAgIG1lc3NhZ2VfaWQ6IG1lc3NhZ2VJZCxcbiAgICBzcGFjZV9pZDogc3BhY2VJZCxcbiAgICBjb252ZXJzYXRpb25faWQ6IHJlc3BvbnNlLmNvbnZlcnNhdGlvbl9pZCA/PyBcIlwiLFxuICAgIGNvbnRlbnQsXG4gICAgc3RhdHVzOiBhZ2VudE1vZGVTdGF0dXMocmVzcG9uc2Uuc3RhdHVzLCBpdGVtcyksXG4gICAgYXR0YWNobWVudHM6IHdpdGhTdGF0ZW1lbnRJZHMoaXRlbXMuZmxhdE1hcChpdGVtQXR0YWNobWVudHMpLCBpdGVtcyksXG4gICAgLi4uKHJlc3BvbnNlLmNyZWF0ZWRfYXQgIT09IHVuZGVmaW5lZCA/IHsgY3JlYXRlZF90aW1lc3RhbXA6IHJlc3BvbnNlLmNyZWF0ZWRfYXQgfSA6IHt9KSxcbiAgICAuLi4oZXJyb3JNZXNzYWdlID8geyBlcnJvcjogeyBlcnJvcjogZXJyb3JNZXNzYWdlIH0gfSA6IHt9KSxcbiAgfSk7XG59XG5cbi8qKlxuICogUHJvamVjdCBhbiBBZ2VudCBNb2RlIGNvbnZlcnNhdGlvbidzIGl0ZW0gaGlzdG9yeSBvbnRvIG9uZSBHZW5pZSBtZXNzYWdlIHBlclxuICogdHVybi4gSXRlbXMgYXJlIGdyb3VwZWQgYnkgdGhlaXIgYG1ldGFkYXRhLm1lc3NhZ2VfaWRgOyBlYWNoIHR1cm4ncyB1c2VyXG4gKiBgbWVzc2FnZWAgaXRlbSBzdXBwbGllcyB0aGUgcXVlc3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0QWdlbnRNb2RlQ29udmVyc2F0aW9uKFxuICBzcGFjZUlkOiBzdHJpbmcsXG4gIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcsXG4gIGl0ZW1zOiBHZW5pZUFnZW50T3V0cHV0SXRlbVtdLFxuICBzdGF0dXMgPSBcImNvbXBsZXRlZFwiLFxuKTogR2VuaWVNZXNzYWdlW10ge1xuICBjb25zdCB0dXJuczogQXJyYXk8e1xuICAgIG1lc3NhZ2VJZDogc3RyaW5nO1xuICAgIHF1ZXN0aW9uOiBHZW5pZUFnZW50T3V0cHV0SXRlbTtcbiAgICBpdGVtczogR2VuaWVBZ2VudE91dHB1dEl0ZW1bXTtcbiAgfT4gPSBbXTtcbiAgbGV0IGN1cnJlbnQ6ICh0eXBlb2YgdHVybnMpW251bWJlcl0gfCB1bmRlZmluZWQ7XG4gIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgIGlmIChpdGVtLnR5cGUgPT09IFwibWVzc2FnZVwiICYmIGl0ZW0ucm9sZSA9PT0gXCJ1c2VyXCIpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2VJZCA9XG4gICAgICAgIGl0ZW1NZXNzYWdlSWQoaXRlbSkgPz9cbiAgICAgICAgKGl0ZW0uaWQ/LmVuZHNXaXRoKFwiX2lucHV0XCIpID8gaXRlbS5pZC5zbGljZSgwLCAtXCJfaW5wdXRcIi5sZW5ndGgpIDogaXRlbS5pZCk7XG4gICAgICBpZiAoIW1lc3NhZ2VJZCkgY29udGludWU7XG4gICAgICBjdXJyZW50ID0geyBtZXNzYWdlSWQsIHF1ZXN0aW9uOiBpdGVtLCBpdGVtczogW10gfTtcbiAgICAgIHR1cm5zLnB1c2goY3VycmVudCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY3VycmVudD8uaXRlbXMucHVzaChpdGVtKTtcbiAgfVxuICByZXR1cm4gdHVybnMubWFwKCh0dXJuLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGZhaWxlZCA9IHR1cm4uaXRlbXMuc29tZSgoaXRlbSkgPT4gaXRlbS5zdGF0dXMgPT09IFwiZmFpbGVkXCIpO1xuICAgIGNvbnN0IHR1cm5TdGF0dXMgPSBmYWlsZWQgPyBcImZhaWxlZFwiIDogaW5kZXggPT09IHR1cm5zLmxlbmd0aCAtIDEgPyBzdGF0dXMgOiBcImNvbXBsZXRlZFwiO1xuICAgIHJldHVybiBwcm9qZWN0QWdlbnRNb2RlTWVzc2FnZShcbiAgICAgIHNwYWNlSWQsXG4gICAgICBjb250ZW50VGV4dCh0dXJuLnF1ZXN0aW9uLmNvbnRlbnQsIFwiaW5wdXRfdGV4dFwiKS5qb2luKFwiXFxuXCIpLFxuICAgICAge1xuICAgICAgICBpZDogdHVybi5tZXNzYWdlSWQsXG4gICAgICAgIHN0YXR1czogdHVyblN0YXR1cyxcbiAgICAgICAgY29udmVyc2F0aW9uX2lkOiBjb252ZXJzYXRpb25JZCxcbiAgICAgICAgLi4uKHR1cm4ucXVlc3Rpb24uY3JlYXRlZF9hdCAhPT0gdW5kZWZpbmVkID8geyBjcmVhdGVkX2F0OiB0dXJuLnF1ZXN0aW9uLmNyZWF0ZWRfYXQgfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgICB0dXJuLml0ZW1zLFxuICAgICk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpdGVtTWV0YWRhdGEoaXRlbTogR2VuaWVBZ2VudE91dHB1dEl0ZW0pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBvYmplY3QuaXNSZWNvcmQoaXRlbS5tZXRhZGF0YSkgPyBpdGVtLm1ldGFkYXRhIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpdGVtTWVzc2FnZUlkKGl0ZW06IEdlbmllQWdlbnRPdXRwdXRJdGVtKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbWVzc2FnZUlkID0gaXRlbU1ldGFkYXRhKGl0ZW0pPy5tZXNzYWdlX2lkO1xuICByZXR1cm4gdHlwZW9mIG1lc3NhZ2VJZCA9PT0gXCJzdHJpbmdcIiA/IG1lc3NhZ2VJZCA6IHVuZGVmaW5lZDtcbn1cblxuLyoqIENvcHkgZWFjaCBxdWVyeSBvdXRwdXQncyBgc3RhdGVtZW50X2lkYCBvbnRvIHRoZSBxdWVyeSBhdHRhY2htZW50IGl0IGFuc3dlcnMuICovXG5mdW5jdGlvbiB3aXRoU3RhdGVtZW50SWRzKFxuICBhdHRhY2htZW50czogR2VuaWVBdHRhY2htZW50W10sXG4gIGl0ZW1zOiBHZW5pZUFnZW50T3V0cHV0SXRlbVtdLFxuKTogR2VuaWVBdHRhY2htZW50W10ge1xuICBjb25zdCBzdGF0ZW1lbnRzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50SWQgPSBpdGVtTWV0YWRhdGEoaXRlbSk/LnN0YXRlbWVudF9pZDtcbiAgICBpZiAoaXRlbS50eXBlID09PSBcImZ1bmN0aW9uX2NhbGxfb3V0cHV0XCIgJiYgaXRlbS5jYWxsX2lkICYmIHR5cGVvZiBzdGF0ZW1lbnRJZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgc3RhdGVtZW50cy5zZXQoaXRlbS5jYWxsX2lkLCBzdGF0ZW1lbnRJZCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQpID0+IHtcbiAgICBjb25zdCBzdGF0ZW1lbnRJZCA9IGF0dGFjaG1lbnQucXVlcnkgJiYgc3RhdGVtZW50cy5nZXQoYXR0YWNobWVudC5hdHRhY2htZW50X2lkID8/IFwiXCIpO1xuICAgIHJldHVybiBzdGF0ZW1lbnRJZCAmJiBhdHRhY2htZW50LnF1ZXJ5XG4gICAgICA/IHsgLi4uYXR0YWNobWVudCwgcXVlcnk6IHsgLi4uYXR0YWNobWVudC5xdWVyeSwgc3RhdGVtZW50X2lkOiBzdGF0ZW1lbnRJZCB9IH1cbiAgICAgIDogYXR0YWNobWVudDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFnZW50TW9kZVN0YXR1cyh2YWx1ZTogc3RyaW5nLCBpdGVtczogR2VuaWVBZ2VudE91dHB1dEl0ZW1bXSk6IEdlbmllTWVzc2FnZVtcInN0YXR1c1wiXSB7XG4gIGlmICh2YWx1ZSA9PT0gXCJjb21wbGV0ZWRcIikgcmV0dXJuIFwiQ09NUExFVEVEXCI7XG4gIGlmICh2YWx1ZSA9PT0gXCJmYWlsZWRcIikgcmV0dXJuIFwiRkFJTEVEXCI7XG4gIGlmICh2YWx1ZSA9PT0gXCJjYW5jZWxsZWRcIikgcmV0dXJuIFwiQ0FOQ0VMTEVEXCI7XG4gIGlmIChpdGVtcy5zb21lKChpdGVtKSA9PiBpdGVtLnR5cGUgPT09IFwiZnVuY3Rpb25fY2FsbFwiKSkgcmV0dXJuIFwiRVhFQ1VUSU5HX1FVRVJZXCI7XG4gIHJldHVybiBcIkFTS0lOR19BSVwiO1xufVxuXG5mdW5jdGlvbiBpdGVtQXR0YWNobWVudHMoaXRlbTogR2VuaWVBZ2VudE91dHB1dEl0ZW0pOiBHZW5pZUF0dGFjaG1lbnRbXSB7XG4gIGNvbnN0IGlkID0gaXRlbS5pZCA/PyBpdGVtLmNhbGxfaWQ7XG4gIGlmIChpdGVtLnR5cGUgPT09IFwicmVhc29uaW5nXCIpIHtcbiAgICBjb25zdCB0aG91Z2h0cyA9IGNvbnRlbnRUZXh0KGl0ZW0uY29udGVudCwgXCJyZWFzb25pbmdfdGV4dFwiKS5tYXAoXG4gICAgICAodGhvdWdodENvbnRlbnQpOiBHZW5pZVRob3VnaHQgPT4gKHtcbiAgICAgICAgdGhvdWdodF90eXBlOiBcIlRIT1VHSFRfVFlQRV9TVEVQU1wiLFxuICAgICAgICBjb250ZW50OiB0aG91Z2h0Q29udGVudCxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgcmV0dXJuIHRob3VnaHRzLmxlbmd0aCA9PT0gMFxuICAgICAgPyBbXVxuICAgICAgOiBbeyBhdHRhY2htZW50X2lkOiBpZCwgYXR0YWNobWVudF90eXBlOiBcInF1ZXJ5XCIsIHF1ZXJ5OiB7IGlkLCB0aG91Z2h0cyB9IH1dO1xuICB9XG4gIGlmIChpdGVtLnR5cGUgPT09IFwiZnVuY3Rpb25fY2FsbFwiKSB7XG4gICAgY29uc3QgY2FsbElkID0gaXRlbS5jYWxsX2lkID8/IGl0ZW0uaWQ7XG4gICAgY29uc3QgYXJndW1lbnRzVmFsdWUgPSBqc29uLnBhcnNlUmVjb3JkKGl0ZW0uYXJndW1lbnRzKTtcbiAgICBjb25zdCBxdWVyeSA9XG4gICAgICB0eXBlb2YgYXJndW1lbnRzVmFsdWU/LnNxbCA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IGFyZ3VtZW50c1ZhbHVlLnNxbFxuICAgICAgICA6IHR5cGVvZiBhcmd1bWVudHNWYWx1ZT8ucXVlcnkgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICA/IGFyZ3VtZW50c1ZhbHVlLnF1ZXJ5XG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdGl0bGUgPSB0eXBlb2YgYXJndW1lbnRzVmFsdWU/LnRpdGxlID09PSBcInN0cmluZ1wiID8gYXJndW1lbnRzVmFsdWUudGl0bGUgOiBpdGVtLm5hbWU7XG4gICAgcmV0dXJuIHF1ZXJ5XG4gICAgICA/IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhdHRhY2htZW50X2lkOiBjYWxsSWQsXG4gICAgICAgICAgICBhdHRhY2htZW50X3R5cGU6IFwicXVlcnlcIixcbiAgICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICAgIGlkOiBjYWxsSWQsXG4gICAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgICAuLi4odGl0bGUgPyB7IHRpdGxlIH0gOiB7fSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIDogW107XG4gIH1cbiAgaWYgKGl0ZW0udHlwZSA9PT0gXCJmdW5jdGlvbl9jYWxsX291dHB1dFwiICYmIGl0ZW0ub3V0cHV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCB2aXogPSBpdGVtTWV0YWRhdGEoaXRlbSk/LnZpejtcbiAgICBpZiAob2JqZWN0LmlzUmVjb3JkKHZpeikgJiYgdHlwZW9mIHZpei5hdHRhY2htZW50X2lkID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgYXR0YWNobWVudF9pZDogdml6LmF0dGFjaG1lbnRfaWQsXG4gICAgICAgICAgYXR0YWNobWVudF90eXBlOiBcInZpelwiLFxuICAgICAgICAgIHZpejoge1xuICAgICAgICAgICAgLi4uKGl0ZW0ub3V0cHV0ID8geyB0aXRsZTogaXRlbS5vdXRwdXQgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLih0eXBlb2Ygdml6LnF1ZXJ5X2F0dGFjaG1lbnRfaWQgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgPyB7IHF1ZXJ5X2F0dGFjaG1lbnRfaWQ6IHZpei5xdWVyeV9hdHRhY2htZW50X2lkIH1cbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBbdGV4dEF0dGFjaG1lbnQoaWQsIGl0ZW0ub3V0cHV0LCBpdGVtLm1ldGFkYXRhKV07XG4gIH1cbiAgaWYgKGl0ZW0udHlwZSA9PT0gXCJtZXNzYWdlXCIpIHtcbiAgICByZXR1cm4gKGl0ZW0uY29udGVudCA/PyBbXSkuZmxhdE1hcCgocGFydCkgPT5cbiAgICAgIHBhcnQudHlwZSA9PT0gXCJvdXRwdXRfdGV4dFwiICYmIHBhcnQudGV4dFxuICAgICAgICA/IFt0ZXh0QXR0YWNobWVudChpZCwgcGFydC50ZXh0LCBwYXJ0Lm1ldGFkYXRhKV1cbiAgICAgICAgOiBbXSxcbiAgICApO1xuICB9XG4gIHJldHVybiBbXTtcbn1cblxuZnVuY3Rpb24gY29udGVudFRleHQoXG4gIHZhbHVlOiB6LmluZmVyPHR5cGVvZiBHZW5pZUFnZW50Q29udGVudFNjaGVtYT5bXSB8IHVuZGVmaW5lZCxcbiAgdHlwZTogc3RyaW5nLFxuKTogc3RyaW5nW10ge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gW107XG4gIHJldHVybiB2YWx1ZS5mbGF0TWFwKChwYXJ0KSA9PiAocGFydC50eXBlID09PSB0eXBlICYmIHBhcnQudGV4dCA/IFtwYXJ0LnRleHRdIDogW10pKTtcbn1cblxuZnVuY3Rpb24gdGV4dEF0dGFjaG1lbnQoXG4gIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgbWV0YWRhdGE/OiB1bmtub3duLFxuKTogR2VuaWVBdHRhY2htZW50IHtcbiAgcmV0dXJuIHtcbiAgICBhdHRhY2htZW50X2lkOiBpZCxcbiAgICBhdHRhY2htZW50X3R5cGU6IFwidGV4dFwiLFxuICAgIHRleHQ6IHtcbiAgICAgIGlkLFxuICAgICAgY29udGVudCxcbiAgICAgIHB1cnBvc2U6IFwiVEVYVF9BVFRBQ0hNRU5UX1BVUlBPU0VfQU5TV0VSXCIsXG4gICAgICAuLi4obWV0YWRhdGEgIT09IHVuZGVmaW5lZCA/IHsgbWV0YWRhdGEgfSA6IHt9KSxcbiAgICB9LFxuICB9O1xufVxuIl19
@@ -97,11 +97,12 @@ export type GenieThought = z.infer<typeof GenieThoughtSchema>;
97
97
  * `attachment_type` (vs a bare `type`) to keep the field clear of
98
98
  * the event-union discriminator key.
99
99
  */
100
- export declare const ATTACHMENT_TYPES: readonly ["query", "text", "suggested_questions"];
100
+ export declare const ATTACHMENT_TYPES: readonly ["query", "text", "suggested_questions", "viz"];
101
101
  export declare const KnownAttachmentTypeSchema: z.ZodEnum<{
102
102
  query: "query";
103
103
  suggested_questions: "suggested_questions";
104
104
  text: "text";
105
+ viz: "viz";
105
106
  }>;
106
107
  export type KnownAttachmentType = z.infer<typeof KnownAttachmentTypeSchema>;
107
108
  export declare const AttachmentTypeSchema: z.ZodString;
@@ -160,6 +161,17 @@ export declare const GenieTextAttachmentSchema: z.ZodObject<{
160
161
  }, z.core.$strip>;
161
162
  /** Narrative text attachment, including its optional semantic purpose. */
162
163
  export type GenieTextAttachment = z.infer<typeof GenieTextAttachmentSchema>;
164
+ /**
165
+ * Visualization Genie requested for one of its query results. Genie stores only
166
+ * the title and the query attachment it charts; the client draws the chart from
167
+ * that query's statement rows.
168
+ */
169
+ export declare const GenieVizAttachmentSchema: z.ZodObject<{
170
+ title: z.ZodOptional<z.ZodString>;
171
+ query_attachment_id: z.ZodOptional<z.ZodString>;
172
+ }, z.core.$strip>;
173
+ /** Genie visualization request over one query attachment. */
174
+ export type GenieVizAttachment = z.infer<typeof GenieVizAttachmentSchema>;
163
175
  /**
164
176
  * `GenieAttachment` with:
165
177
  *
@@ -212,6 +224,10 @@ export declare const GenieAttachmentSchema: z.ZodObject<{
212
224
  purpose: z.ZodOptional<z.ZodString>;
213
225
  metadata: z.ZodOptional<z.ZodUnknown>;
214
226
  }, z.core.$strip>>;
227
+ viz: z.ZodOptional<z.ZodObject<{
228
+ title: z.ZodOptional<z.ZodString>;
229
+ query_attachment_id: z.ZodOptional<z.ZodString>;
230
+ }, z.core.$strip>>;
215
231
  attachment_type: z.ZodOptional<z.ZodString>;
216
232
  }, z.core.$strip>;
217
233
  /** Genie message attachment with an optional computed discriminator. */
@@ -287,6 +303,10 @@ export declare const GenieMessageSchema: z.ZodObject<{
287
303
  purpose: z.ZodOptional<z.ZodString>;
288
304
  metadata: z.ZodOptional<z.ZodUnknown>;
289
305
  }, z.core.$strip>>;
306
+ viz: z.ZodOptional<z.ZodObject<{
307
+ title: z.ZodOptional<z.ZodString>;
308
+ query_attachment_id: z.ZodOptional<z.ZodString>;
309
+ }, z.core.$strip>>;
290
310
  attachment_type: z.ZodOptional<z.ZodString>;
291
311
  }, z.core.$strip>>>;
292
312
  auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
@@ -359,6 +379,10 @@ export declare const GenieResponseSchema: z.ZodPipe<z.ZodObject<{
359
379
  purpose: z.ZodOptional<z.ZodString>;
360
380
  metadata: z.ZodOptional<z.ZodUnknown>;
361
381
  }, z.core.$strip>>;
382
+ viz: z.ZodOptional<z.ZodObject<{
383
+ title: z.ZodOptional<z.ZodString>;
384
+ query_attachment_id: z.ZodOptional<z.ZodString>;
385
+ }, z.core.$strip>>;
362
386
  attachment_type: z.ZodOptional<z.ZodString>;
363
387
  }, z.core.$strip>>>;
364
388
  auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
@@ -394,6 +418,10 @@ export declare const GenieResponseSchema: z.ZodPipe<z.ZodObject<{
394
418
  purpose?: string | undefined;
395
419
  metadata?: unknown;
396
420
  } | undefined;
421
+ viz?: {
422
+ title?: string | undefined;
423
+ query_attachment_id?: string | undefined;
424
+ } | undefined;
397
425
  attachment_type?: string | undefined;
398
426
  }[], {
399
427
  content: string;
@@ -450,6 +478,10 @@ export declare const GenieResponseSchema: z.ZodPipe<z.ZodObject<{
450
478
  purpose?: string | undefined;
451
479
  metadata?: unknown;
452
480
  } | undefined;
481
+ viz?: {
482
+ title?: string | undefined;
483
+ query_attachment_id?: string | undefined;
484
+ } | undefined;
453
485
  attachment_type?: string | undefined;
454
486
  }[] | undefined;
455
487
  auto_regenerate_count?: number | undefined;
@@ -631,6 +663,10 @@ export declare const MessageEventSchema: z.ZodObject<{
631
663
  purpose: z.ZodOptional<z.ZodString>;
632
664
  metadata: z.ZodOptional<z.ZodUnknown>;
633
665
  }, z.core.$strip>>;
666
+ viz: z.ZodOptional<z.ZodObject<{
667
+ title: z.ZodOptional<z.ZodString>;
668
+ query_attachment_id: z.ZodOptional<z.ZodString>;
669
+ }, z.core.$strip>>;
634
670
  attachment_type: z.ZodOptional<z.ZodString>;
635
671
  }, z.core.$strip>>>;
636
672
  auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
@@ -847,6 +883,10 @@ export declare const ResultEventSchema: z.ZodObject<{
847
883
  purpose: z.ZodOptional<z.ZodString>;
848
884
  metadata: z.ZodOptional<z.ZodUnknown>;
849
885
  }, z.core.$strip>>;
886
+ viz: z.ZodOptional<z.ZodObject<{
887
+ title: z.ZodOptional<z.ZodString>;
888
+ query_attachment_id: z.ZodOptional<z.ZodString>;
889
+ }, z.core.$strip>>;
850
890
  attachment_type: z.ZodOptional<z.ZodString>;
851
891
  }, z.core.$strip>>>;
852
892
  auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
@@ -954,6 +994,10 @@ export declare const GenieChatEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
954
994
  purpose: z.ZodOptional<z.ZodString>;
955
995
  metadata: z.ZodOptional<z.ZodUnknown>;
956
996
  }, z.core.$strip>>;
997
+ viz: z.ZodOptional<z.ZodObject<{
998
+ title: z.ZodOptional<z.ZodString>;
999
+ query_attachment_id: z.ZodOptional<z.ZodString>;
1000
+ }, z.core.$strip>>;
957
1001
  attachment_type: z.ZodOptional<z.ZodString>;
958
1002
  }, z.core.$strip>>>;
959
1003
  auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
@@ -1085,6 +1129,10 @@ export declare const GenieChatEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
1085
1129
  purpose: z.ZodOptional<z.ZodString>;
1086
1130
  metadata: z.ZodOptional<z.ZodUnknown>;
1087
1131
  }, z.core.$strip>>;
1132
+ viz: z.ZodOptional<z.ZodObject<{
1133
+ title: z.ZodOptional<z.ZodString>;
1134
+ query_attachment_id: z.ZodOptional<z.ZodString>;
1135
+ }, z.core.$strip>>;
1088
1136
  attachment_type: z.ZodOptional<z.ZodString>;
1089
1137
  }, z.core.$strip>>>;
1090
1138
  auto_regenerate_count: z.ZodOptional<z.ZodNumber>;