@dbx-tools/shared-genie 0.9.187 → 0.9.188

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.ts CHANGED
@@ -3,11 +3,12 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-genie";
6
- export const PACKAGE_VERSION = "0.9.187";
6
+ export const PACKAGE_VERSION = "0.9.188";
7
7
  export * as agentMode from "./src/agent-mode.ts";
8
8
  export * as dashboards from "./src/dashboards.ts";
9
9
  export * as event from "./src/event.ts";
10
10
  export * as genieModel from "./src/genie-model.ts";
11
+ export * as visualization from "./src/visualization.ts";
11
12
  export { GenieAgentContentSchema, GenieAgentOutputItemSchema, GenieAgentConversationItemsSchema, GenieAgentResponseSchema, GenieAgentModeEventSchema, GenieAgentModeProjection, projectAgentModeMessage, projectAgentModeConversation } from "./src/agent-mode.ts";
12
13
  export type { GenieAgentConversationItems, GenieAgentOutputItem, GenieAgentResponse, GenieAgentModeEvent } from "./src/agent-mode.ts";
13
14
  export { authorizationDetailsGrantRuleSchema, cronScheduleSchema, lifecycleStateSchema, dashboardViewSchema, deleteScheduleRequestSchema, deleteSubscriptionRequestSchema, genieSuggestedQuestionsAttachmentSchema, genieConversationSchema, genieConversationSummarySchema, genieCreateConversationMessageRequestSchema, genieDeleteConversationMessageRequestSchema, genieDeleteConversationRequestSchema, genieExecuteMessageAttachmentQueryRequestSchema, genieExecuteMessageQueryRequestSchema, genieFeedbackRatingSchema, genieGetConversationMessageRequestSchema, genieGetMessageAttachmentQueryResultRequestSchema, genieGetMessageQueryResultRequestSchema, genieGetMessageQueryResultResponseSchema, genieGetQueryResultByAttachmentRequestSchema, genieGetSpaceRequestSchema, genieListConversationMessagesRequestSchema, genieListConversationsRequestSchema, genieListConversationsResponseSchema, genieListSpacesRequestSchema, genieSpaceSchema, genieFeedbackSchema, resultSchema, messageStatusSchema, queryAttachmentParameterSchema, genieResultMetadataSchema, genieSendMessageFeedbackRequestSchema, genieStartConversationMessageRequestSchema, genieTrashSpaceRequestSchema, getDashboardRequestSchema, getPublishedDashboardRequestSchema, getPublishedDashboardTokenInfoRequestSchema, authorizationDetailsSchema, getScheduleRequestSchema, getSubscriptionRequestSchema, listDashboardsRequestSchema, dashboardSchema, listSchedulesRequestSchema, listSubscriptionsRequestSchema, messageErrorTypeSchema, migrateDashboardRequestSchema, publishRequestSchema, publishedDashboardSchema, schedulePauseStatusSchema, subscriptionSubscriberDestinationSchema, subscriptionSubscriberUserSchema, subscriberSchema, textAttachmentPurposeSchema, trashDashboardRequestSchema, unpublishDashboardRequestSchema, updateDashboardRequestSchema, scheduleSchema, createDashboardRequestSchema, createScheduleRequestSchema, subscriptionSchema, genieQueryAttachmentSchema, textAttachmentSchema, genieListSpacesResponseSchema, genieAttachmentSchema, messageErrorSchema, genieMessageSchema, getPublishedDashboardTokenInfoResponseSchema, listDashboardsResponseSchema, listSchedulesResponseSchema, listSubscriptionsResponseSchema, updateScheduleRequestSchema, createSubscriptionRequestSchema, genieListConversationMessagesResponseSchema, genieStartConversationResponseSchema } from "./src/dashboards.ts";
@@ -15,3 +16,5 @@ export type { AuthorizationDetailsGrantRule, CronSchedule, LifecycleState, Dashb
15
16
  export { eventDetector, detectStatus, detectAttachmentAdded, detectThinking, detectText, detectQuery, detectStatement, detectRows, detectSuggestedQuestions, eventsFromMessage } from "./src/event.ts";
16
17
  export { MessageStatusSchema, GenieThoughtTypeSchema, GenieThoughtSchema, ATTACHMENT_TYPES, KnownAttachmentTypeSchema, AttachmentTypeSchema, GenieQueryAttachmentSchema, GenieTextAttachmentPurposeSchema, GenieTextAttachmentSchema, GenieVizAttachmentSchema, GenieAttachmentSchema, GenieMessageSchema, GenieResponseSchema, GenieSpaceSchema, CreateGenieSpaceRequestSchema, GenieMessageFeedbackRequestSchema, TERMINAL_STATUSES, TerminalStatusSchema, isTerminalStatus, humanizeStatus, detectAttachmentType, GenieChatLocationSchema, QuestionEventSchema, MessageEventSchema, StatusEventSchema, AttachmentEventSchema, ThinkingEventSchema, TextEventSchema, QueryEventSchema, StatementEventSchema, RowsEventSchema, SuggestedQuestionsEventSchema, ResultEventSchema, GenieChatEventSchema } from "./src/genie-model.ts";
17
18
  export type { MessageStatus, GenieThoughtType, GenieThought, KnownAttachmentType, AttachmentType, GenieQueryAttachment, GenieTextAttachmentPurpose, GenieTextAttachment, GenieVizAttachment, GenieAttachment, GenieMessage, GenieResponse, GenieSpace, CreateGenieSpaceRequest, GenieMessageFeedbackRequest, TerminalStatus, GenieChatLocation, QuestionEvent, MessageEvent, StatusEvent, AttachmentEvent, ThinkingEvent, TextEvent, QueryEvent, StatementEvent, RowsEvent, SuggestedQuestionsEvent, ResultEvent, GenieChatEvent, GenieChatEventType, GenieChatEventFields } from "./src/genie-model.ts";
19
+ export { GenieVisualizationRequestSchema, genieVisualizationDownloadPath } from "./src/visualization.ts";
20
+ export type { GenieVisualizationRequest } from "./src/visualization.ts";
package/lib/index.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/shared-genie";
2
- export declare const PACKAGE_VERSION = "0.9.187";
2
+ export declare const PACKAGE_VERSION = "0.9.188";
3
3
  export * as agentMode from "./src/agent-mode.ts";
4
4
  export * as dashboards from "./src/dashboards.ts";
5
5
  export * as event from "./src/event.ts";
6
6
  export * as genieModel from "./src/genie-model.ts";
7
+ export * as visualization from "./src/visualization.ts";
7
8
  export { GenieAgentContentSchema, GenieAgentOutputItemSchema, GenieAgentConversationItemsSchema, GenieAgentResponseSchema, GenieAgentModeEventSchema, GenieAgentModeProjection, projectAgentModeMessage, projectAgentModeConversation } from "./src/agent-mode.ts";
8
9
  export type { GenieAgentConversationItems, GenieAgentOutputItem, GenieAgentResponse, GenieAgentModeEvent } from "./src/agent-mode.ts";
9
10
  export { authorizationDetailsGrantRuleSchema, cronScheduleSchema, lifecycleStateSchema, dashboardViewSchema, deleteScheduleRequestSchema, deleteSubscriptionRequestSchema, genieSuggestedQuestionsAttachmentSchema, genieConversationSchema, genieConversationSummarySchema, genieCreateConversationMessageRequestSchema, genieDeleteConversationMessageRequestSchema, genieDeleteConversationRequestSchema, genieExecuteMessageAttachmentQueryRequestSchema, genieExecuteMessageQueryRequestSchema, genieFeedbackRatingSchema, genieGetConversationMessageRequestSchema, genieGetMessageAttachmentQueryResultRequestSchema, genieGetMessageQueryResultRequestSchema, genieGetMessageQueryResultResponseSchema, genieGetQueryResultByAttachmentRequestSchema, genieGetSpaceRequestSchema, genieListConversationMessagesRequestSchema, genieListConversationsRequestSchema, genieListConversationsResponseSchema, genieListSpacesRequestSchema, genieSpaceSchema, genieFeedbackSchema, resultSchema, messageStatusSchema, queryAttachmentParameterSchema, genieResultMetadataSchema, genieSendMessageFeedbackRequestSchema, genieStartConversationMessageRequestSchema, genieTrashSpaceRequestSchema, getDashboardRequestSchema, getPublishedDashboardRequestSchema, getPublishedDashboardTokenInfoRequestSchema, authorizationDetailsSchema, getScheduleRequestSchema, getSubscriptionRequestSchema, listDashboardsRequestSchema, dashboardSchema, listSchedulesRequestSchema, listSubscriptionsRequestSchema, messageErrorTypeSchema, migrateDashboardRequestSchema, publishRequestSchema, publishedDashboardSchema, schedulePauseStatusSchema, subscriptionSubscriberDestinationSchema, subscriptionSubscriberUserSchema, subscriberSchema, textAttachmentPurposeSchema, trashDashboardRequestSchema, unpublishDashboardRequestSchema, updateDashboardRequestSchema, scheduleSchema, createDashboardRequestSchema, createScheduleRequestSchema, subscriptionSchema, genieQueryAttachmentSchema, textAttachmentSchema, genieListSpacesResponseSchema, genieAttachmentSchema, messageErrorSchema, genieMessageSchema, getPublishedDashboardTokenInfoResponseSchema, listDashboardsResponseSchema, listSchedulesResponseSchema, listSubscriptionsResponseSchema, updateScheduleRequestSchema, createSubscriptionRequestSchema, genieListConversationMessagesResponseSchema, genieStartConversationResponseSchema } from "./src/dashboards.ts";
@@ -11,3 +12,5 @@ export type { AuthorizationDetailsGrantRule, CronSchedule, LifecycleState, Dashb
11
12
  export { eventDetector, detectStatus, detectAttachmentAdded, detectThinking, detectText, detectQuery, detectStatement, detectRows, detectSuggestedQuestions, eventsFromMessage } from "./src/event.ts";
12
13
  export { MessageStatusSchema, GenieThoughtTypeSchema, GenieThoughtSchema, ATTACHMENT_TYPES, KnownAttachmentTypeSchema, AttachmentTypeSchema, GenieQueryAttachmentSchema, GenieTextAttachmentPurposeSchema, GenieTextAttachmentSchema, GenieVizAttachmentSchema, GenieAttachmentSchema, GenieMessageSchema, GenieResponseSchema, GenieSpaceSchema, CreateGenieSpaceRequestSchema, GenieMessageFeedbackRequestSchema, TERMINAL_STATUSES, TerminalStatusSchema, isTerminalStatus, humanizeStatus, detectAttachmentType, GenieChatLocationSchema, QuestionEventSchema, MessageEventSchema, StatusEventSchema, AttachmentEventSchema, ThinkingEventSchema, TextEventSchema, QueryEventSchema, StatementEventSchema, RowsEventSchema, SuggestedQuestionsEventSchema, ResultEventSchema, GenieChatEventSchema } from "./src/genie-model.ts";
13
14
  export type { MessageStatus, GenieThoughtType, GenieThought, KnownAttachmentType, AttachmentType, GenieQueryAttachment, GenieTextAttachmentPurpose, GenieTextAttachment, GenieVizAttachment, GenieAttachment, GenieMessage, GenieResponse, GenieSpace, CreateGenieSpaceRequest, GenieMessageFeedbackRequest, TerminalStatus, GenieChatLocation, QuestionEvent, MessageEvent, StatusEvent, AttachmentEvent, ThinkingEvent, TextEvent, QueryEvent, StatementEvent, RowsEvent, SuggestedQuestionsEvent, ResultEvent, GenieChatEvent, GenieChatEventType, GenieChatEventFields } from "./src/genie-model.ts";
15
+ export { GenieVisualizationRequestSchema, genieVisualizationDownloadPath } from "./src/visualization.ts";
16
+ export type { GenieVisualizationRequest } from "./src/visualization.ts";
package/lib/index.js CHANGED
@@ -2,13 +2,15 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
  export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-genie";
5
- export const PACKAGE_VERSION = "0.9.187";
5
+ export const PACKAGE_VERSION = "0.9.188";
6
6
  export * as agentMode from "./src/agent-mode.js";
7
7
  export * as dashboards from "./src/dashboards.js";
8
8
  export * as event from "./src/event.js";
9
9
  export * as genieModel from "./src/genie-model.js";
10
+ export * as visualization from "./src/visualization.js";
10
11
  export { GenieAgentContentSchema, GenieAgentOutputItemSchema, GenieAgentConversationItemsSchema, GenieAgentResponseSchema, GenieAgentModeEventSchema, GenieAgentModeProjection, projectAgentModeMessage, projectAgentModeConversation } from "./src/agent-mode.js";
11
12
  export { authorizationDetailsGrantRuleSchema, cronScheduleSchema, lifecycleStateSchema, dashboardViewSchema, deleteScheduleRequestSchema, deleteSubscriptionRequestSchema, genieSuggestedQuestionsAttachmentSchema, genieConversationSchema, genieConversationSummarySchema, genieCreateConversationMessageRequestSchema, genieDeleteConversationMessageRequestSchema, genieDeleteConversationRequestSchema, genieExecuteMessageAttachmentQueryRequestSchema, genieExecuteMessageQueryRequestSchema, genieFeedbackRatingSchema, genieGetConversationMessageRequestSchema, genieGetMessageAttachmentQueryResultRequestSchema, genieGetMessageQueryResultRequestSchema, genieGetMessageQueryResultResponseSchema, genieGetQueryResultByAttachmentRequestSchema, genieGetSpaceRequestSchema, genieListConversationMessagesRequestSchema, genieListConversationsRequestSchema, genieListConversationsResponseSchema, genieListSpacesRequestSchema, genieSpaceSchema, genieFeedbackSchema, resultSchema, messageStatusSchema, queryAttachmentParameterSchema, genieResultMetadataSchema, genieSendMessageFeedbackRequestSchema, genieStartConversationMessageRequestSchema, genieTrashSpaceRequestSchema, getDashboardRequestSchema, getPublishedDashboardRequestSchema, getPublishedDashboardTokenInfoRequestSchema, authorizationDetailsSchema, getScheduleRequestSchema, getSubscriptionRequestSchema, listDashboardsRequestSchema, dashboardSchema, listSchedulesRequestSchema, listSubscriptionsRequestSchema, messageErrorTypeSchema, migrateDashboardRequestSchema, publishRequestSchema, publishedDashboardSchema, schedulePauseStatusSchema, subscriptionSubscriberDestinationSchema, subscriptionSubscriberUserSchema, subscriberSchema, textAttachmentPurposeSchema, trashDashboardRequestSchema, unpublishDashboardRequestSchema, updateDashboardRequestSchema, scheduleSchema, createDashboardRequestSchema, createScheduleRequestSchema, subscriptionSchema, genieQueryAttachmentSchema, textAttachmentSchema, genieListSpacesResponseSchema, genieAttachmentSchema, messageErrorSchema, genieMessageSchema, getPublishedDashboardTokenInfoResponseSchema, listDashboardsResponseSchema, listSchedulesResponseSchema, listSubscriptionsResponseSchema, updateScheduleRequestSchema, createSubscriptionRequestSchema, genieListConversationMessagesResponseSchema, genieStartConversationResponseSchema } from "./src/dashboards.js";
12
13
  export { eventDetector, detectStatus, detectAttachmentAdded, detectThinking, detectText, detectQuery, detectStatement, detectRows, detectSuggestedQuestions, eventsFromMessage } from "./src/event.js";
13
14
  export { MessageStatusSchema, GenieThoughtTypeSchema, GenieThoughtSchema, ATTACHMENT_TYPES, KnownAttachmentTypeSchema, AttachmentTypeSchema, GenieQueryAttachmentSchema, GenieTextAttachmentPurposeSchema, GenieTextAttachmentSchema, GenieVizAttachmentSchema, GenieAttachmentSchema, GenieMessageSchema, GenieResponseSchema, GenieSpaceSchema, CreateGenieSpaceRequestSchema, GenieMessageFeedbackRequestSchema, TERMINAL_STATUSES, TerminalStatusSchema, isTerminalStatus, humanizeStatus, detectAttachmentType, GenieChatLocationSchema, QuestionEventSchema, MessageEventSchema, StatusEventSchema, AttachmentEventSchema, ThinkingEventSchema, TextEventSchema, QueryEventSchema, StatementEventSchema, RowsEventSchema, SuggestedQuestionsEventSchema, ResultEventSchema, GenieChatEventSchema } from "./src/genie-model.js";
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx5QkFBeUIsQ0FBQztBQUM1RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLDBCQUEwQixFQUFFLGlDQUFpQyxFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLDRCQUE0QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFblEsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLDJCQUEyQixFQUFFLCtCQUErQixFQUFFLHVDQUF1QyxFQUFFLHVCQUF1QixFQUFFLDhCQUE4QixFQUFFLDJDQUEyQyxFQUFFLDJDQUEyQyxFQUFFLG9DQUFvQyxFQUFFLCtDQUErQyxFQUFFLHFDQUFxQyxFQUFFLHlCQUF5QixFQUFFLHdDQUF3QyxFQUFFLGlEQUFpRCxFQUFFLHVDQUF1QyxFQUFFLHdDQUF3QyxFQUFFLDRDQUE0QyxFQUFFLDBCQUEwQixFQUFFLDBDQUEwQyxFQUFFLG1DQUFtQyxFQUFFLG9DQUFvQyxFQUFFLDRCQUE0QixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSw4QkFBOEIsRUFBRSx5QkFBeUIsRUFBRSxxQ0FBcUMsRUFBRSwwQ0FBMEMsRUFBRSw0QkFBNEIsRUFBRSx5QkFBeUIsRUFBRSxrQ0FBa0MsRUFBRSwyQ0FBMkMsRUFBRSwwQkFBMEIsRUFBRSx3QkFBd0IsRUFBRSw0QkFBNEIsRUFBRSwyQkFBMkIsRUFBRSxlQUFlLEVBQUUsMEJBQTBCLEVBQUUsOEJBQThCLEVBQUUsc0JBQXNCLEVBQUUsNkJBQTZCLEVBQUUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUsdUNBQXVDLEVBQUUsZ0NBQWdDLEVBQUUsZ0JBQWdCLEVBQUUsMkJBQTJCLEVBQUUsMkJBQTJCLEVBQUUsK0JBQStCLEVBQUUsNEJBQTRCLEVBQUUsY0FBYyxFQUFFLDRCQUE0QixFQUFFLDJCQUEyQixFQUFFLGtCQUFrQixFQUFFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLDZCQUE2QixFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLDRDQUE0QyxFQUFFLDRCQUE0QixFQUFFLDJCQUEyQixFQUFFLCtCQUErQixFQUFFLDJCQUEyQixFQUFFLCtCQUErQixFQUFFLDJDQUEyQyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN3lFLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2TSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsb0JBQW9CLEVBQUUsMEJBQTBCLEVBQUUsZ0NBQWdDLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsNkJBQTZCLEVBQUUsaUNBQWlDLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsNkJBQTZCLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmllXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuMTg3XCI7XG5leHBvcnQgKiBhcyBhZ2VudE1vZGUgZnJvbSBcIi4vc3JjL2FnZW50LW1vZGUudHNcIjtcbmV4cG9ydCAqIGFzIGRhc2hib2FyZHMgZnJvbSBcIi4vc3JjL2Rhc2hib2FyZHMudHNcIjtcbmV4cG9ydCAqIGFzIGV2ZW50IGZyb20gXCIuL3NyYy9ldmVudC50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWVNb2RlbCBmcm9tIFwiLi9zcmMvZ2VuaWUtbW9kZWwudHNcIjtcbmV4cG9ydCB7IEdlbmllQWdlbnRDb250ZW50U2NoZW1hLCBHZW5pZUFnZW50T3V0cHV0SXRlbVNjaGVtYSwgR2VuaWVBZ2VudENvbnZlcnNhdGlvbkl0ZW1zU2NoZW1hLCBHZW5pZUFnZW50UmVzcG9uc2VTY2hlbWEsIEdlbmllQWdlbnRNb2RlRXZlbnRTY2hlbWEsIEdlbmllQWdlbnRNb2RlUHJvamVjdGlvbiwgcHJvamVjdEFnZW50TW9kZU1lc3NhZ2UsIHByb2plY3RBZ2VudE1vZGVDb252ZXJzYXRpb24gfSBmcm9tIFwiLi9zcmMvYWdlbnQtbW9kZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBHZW5pZUFnZW50Q29udmVyc2F0aW9uSXRlbXMsIEdlbmllQWdlbnRPdXRwdXRJdGVtLCBHZW5pZUFnZW50UmVzcG9uc2UsIEdlbmllQWdlbnRNb2RlRXZlbnQgfSBmcm9tIFwiLi9zcmMvYWdlbnQtbW9kZS50c1wiO1xuZXhwb3J0IHsgYXV0aG9yaXphdGlvbkRldGFpbHNHcmFudFJ1bGVTY2hlbWEsIGNyb25TY2hlZHVsZVNjaGVtYSwgbGlmZWN5Y2xlU3RhdGVTY2hlbWEsIGRhc2hib2FyZFZpZXdTY2hlbWEsIGRlbGV0ZVNjaGVkdWxlUmVxdWVzdFNjaGVtYSwgZGVsZXRlU3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYSwgZ2VuaWVTdWdnZXN0ZWRRdWVzdGlvbnNBdHRhY2htZW50U2NoZW1hLCBnZW5pZUNvbnZlcnNhdGlvblNjaGVtYSwgZ2VuaWVDb252ZXJzYXRpb25TdW1tYXJ5U2NoZW1hLCBnZW5pZUNyZWF0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZURlbGV0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZURlbGV0ZUNvbnZlcnNhdGlvblJlcXVlc3RTY2hlbWEsIGdlbmllRXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXF1ZXN0U2NoZW1hLCBnZW5pZUV4ZWN1dGVNZXNzYWdlUXVlcnlSZXF1ZXN0U2NoZW1hLCBnZW5pZUZlZWRiYWNrUmF0aW5nU2NoZW1hLCBnZW5pZUdldENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZUdldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRSZXF1ZXN0U2NoZW1hLCBnZW5pZUdldE1lc3NhZ2VRdWVyeVJlc3VsdFJlcXVlc3RTY2hlbWEsIGdlbmllR2V0TWVzc2FnZVF1ZXJ5UmVzdWx0UmVzcG9uc2VTY2hlbWEsIGdlbmllR2V0UXVlcnlSZXN1bHRCeUF0dGFjaG1lbnRSZXF1ZXN0U2NoZW1hLCBnZW5pZUdldFNwYWNlUmVxdWVzdFNjaGVtYSwgZ2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXF1ZXN0U2NoZW1hLCBnZW5pZUxpc3RDb252ZXJzYXRpb25zUmVxdWVzdFNjaGVtYSwgZ2VuaWVMaXN0Q29udmVyc2F0aW9uc1Jlc3BvbnNlU2NoZW1hLCBnZW5pZUxpc3RTcGFjZXNSZXF1ZXN0U2NoZW1hLCBnZW5pZVNwYWNlU2NoZW1hLCBnZW5pZUZlZWRiYWNrU2NoZW1hLCByZXN1bHRTY2hlbWEsIG1lc3NhZ2VTdGF0dXNTY2hlbWEsIHF1ZXJ5QXR0YWNobWVudFBhcmFtZXRlclNjaGVtYSwgZ2VuaWVSZXN1bHRNZXRhZGF0YVNjaGVtYSwgZ2VuaWVTZW5kTWVzc2FnZUZlZWRiYWNrUmVxdWVzdFNjaGVtYSwgZ2VuaWVTdGFydENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZVRyYXNoU3BhY2VSZXF1ZXN0U2NoZW1hLCBnZXREYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCBnZXRQdWJsaXNoZWREYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCBnZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXF1ZXN0U2NoZW1hLCBhdXRob3JpemF0aW9uRGV0YWlsc1NjaGVtYSwgZ2V0U2NoZWR1bGVSZXF1ZXN0U2NoZW1hLCBnZXRTdWJzY3JpcHRpb25SZXF1ZXN0U2NoZW1hLCBsaXN0RGFzaGJvYXJkc1JlcXVlc3RTY2hlbWEsIGRhc2hib2FyZFNjaGVtYSwgbGlzdFNjaGVkdWxlc1JlcXVlc3RTY2hlbWEsIGxpc3RTdWJzY3JpcHRpb25zUmVxdWVzdFNjaGVtYSwgbWVzc2FnZUVycm9yVHlwZVNjaGVtYSwgbWlncmF0ZURhc2hib2FyZFJlcXVlc3RTY2hlbWEsIHB1Ymxpc2hSZXF1ZXN0U2NoZW1hLCBwdWJsaXNoZWREYXNoYm9hcmRTY2hlbWEsIHNjaGVkdWxlUGF1c2VTdGF0dXNTY2hlbWEsIHN1YnNjcmlwdGlvblN1YnNjcmliZXJEZXN0aW5hdGlvblNjaGVtYSwgc3Vic2NyaXB0aW9uU3Vic2NyaWJlclVzZXJTY2hlbWEsIHN1YnNjcmliZXJTY2hlbWEsIHRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYSwgdHJhc2hEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCB1bnB1Ymxpc2hEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCB1cGRhdGVEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCBzY2hlZHVsZVNjaGVtYSwgY3JlYXRlRGFzaGJvYXJkUmVxdWVzdFNjaGVtYSwgY3JlYXRlU2NoZWR1bGVSZXF1ZXN0U2NoZW1hLCBzdWJzY3JpcHRpb25TY2hlbWEsIGdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hLCB0ZXh0QXR0YWNobWVudFNjaGVtYSwgZ2VuaWVMaXN0U3BhY2VzUmVzcG9uc2VTY2hlbWEsIGdlbmllQXR0YWNobWVudFNjaGVtYSwgbWVzc2FnZUVycm9yU2NoZW1hLCBnZW5pZU1lc3NhZ2VTY2hlbWEsIGdldFB1Ymxpc2hlZERhc2hib2FyZFRva2VuSW5mb1Jlc3BvbnNlU2NoZW1hLCBsaXN0RGFzaGJvYXJkc1Jlc3BvbnNlU2NoZW1hLCBsaXN0U2NoZWR1bGVzUmVzcG9uc2VTY2hlbWEsIGxpc3RTdWJzY3JpcHRpb25zUmVzcG9uc2VTY2hlbWEsIHVwZGF0ZVNjaGVkdWxlUmVxdWVzdFNjaGVtYSwgY3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYSwgZ2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXNwb25zZVNjaGVtYSwgZ2VuaWVTdGFydENvbnZlcnNhdGlvblJlc3BvbnNlU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2Rhc2hib2FyZHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgQXV0aG9yaXphdGlvbkRldGFpbHNHcmFudFJ1bGUsIENyb25TY2hlZHVsZSwgTGlmZWN5Y2xlU3RhdGUsIERhc2hib2FyZFZpZXcsIERlbGV0ZVNjaGVkdWxlUmVxdWVzdCwgRGVsZXRlU3Vic2NyaXB0aW9uUmVxdWVzdCwgR2VuaWVTdWdnZXN0ZWRRdWVzdGlvbnNBdHRhY2htZW50LCBHZW5pZUNvbnZlcnNhdGlvbiwgR2VuaWVDb252ZXJzYXRpb25TdW1tYXJ5LCBHZW5pZUNyZWF0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZURlbGV0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZURlbGV0ZUNvbnZlcnNhdGlvblJlcXVlc3QsIEdlbmllRXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXF1ZXN0LCBHZW5pZUV4ZWN1dGVNZXNzYWdlUXVlcnlSZXF1ZXN0LCBHZW5pZUZlZWRiYWNrUmF0aW5nLCBHZW5pZUdldENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZUdldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRSZXF1ZXN0LCBHZW5pZUdldE1lc3NhZ2VRdWVyeVJlc3VsdFJlcXVlc3QsIEdlbmllR2V0TWVzc2FnZVF1ZXJ5UmVzdWx0UmVzcG9uc2UsIEdlbmllR2V0UXVlcnlSZXN1bHRCeUF0dGFjaG1lbnRSZXF1ZXN0LCBHZW5pZUdldFNwYWNlUmVxdWVzdCwgR2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXF1ZXN0LCBHZW5pZUxpc3RDb252ZXJzYXRpb25zUmVxdWVzdCwgR2VuaWVMaXN0Q29udmVyc2F0aW9uc1Jlc3BvbnNlLCBHZW5pZUxpc3RTcGFjZXNSZXF1ZXN0LCBHZW5pZUZlZWRiYWNrLCBSZXN1bHQsIFF1ZXJ5QXR0YWNobWVudFBhcmFtZXRlciwgR2VuaWVSZXN1bHRNZXRhZGF0YSwgR2VuaWVTZW5kTWVzc2FnZUZlZWRiYWNrUmVxdWVzdCwgR2VuaWVTdGFydENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZVRyYXNoU3BhY2VSZXF1ZXN0LCBHZXREYXNoYm9hcmRSZXF1ZXN0LCBHZXRQdWJsaXNoZWREYXNoYm9hcmRSZXF1ZXN0LCBHZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXF1ZXN0LCBBdXRob3JpemF0aW9uRGV0YWlscywgR2V0U2NoZWR1bGVSZXF1ZXN0LCBHZXRTdWJzY3JpcHRpb25SZXF1ZXN0LCBMaXN0RGFzaGJvYXJkc1JlcXVlc3QsIERhc2hib2FyZCwgTGlzdFNjaGVkdWxlc1JlcXVlc3QsIExpc3RTdWJzY3JpcHRpb25zUmVxdWVzdCwgTWVzc2FnZUVycm9yVHlwZSwgTWlncmF0ZURhc2hib2FyZFJlcXVlc3QsIFB1Ymxpc2hSZXF1ZXN0LCBQdWJsaXNoZWREYXNoYm9hcmQsIFNjaGVkdWxlUGF1c2VTdGF0dXMsIFN1YnNjcmlwdGlvblN1YnNjcmliZXJEZXN0aW5hdGlvbiwgU3Vic2NyaXB0aW9uU3Vic2NyaWJlclVzZXIsIFN1YnNjcmliZXIsIFRleHRBdHRhY2htZW50UHVycG9zZSwgVHJhc2hEYXNoYm9hcmRSZXF1ZXN0LCBVbnB1Ymxpc2hEYXNoYm9hcmRSZXF1ZXN0LCBVcGRhdGVEYXNoYm9hcmRSZXF1ZXN0LCBTY2hlZHVsZSwgQ3JlYXRlRGFzaGJvYXJkUmVxdWVzdCwgQ3JlYXRlU2NoZWR1bGVSZXF1ZXN0LCBTdWJzY3JpcHRpb24sIFRleHRBdHRhY2htZW50LCBHZW5pZUxpc3RTcGFjZXNSZXNwb25zZSwgTWVzc2FnZUVycm9yLCBHZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXNwb25zZSwgTGlzdERhc2hib2FyZHNSZXNwb25zZSwgTGlzdFNjaGVkdWxlc1Jlc3BvbnNlLCBMaXN0U3Vic2NyaXB0aW9uc1Jlc3BvbnNlLCBVcGRhdGVTY2hlZHVsZVJlcXVlc3QsIENyZWF0ZVN1YnNjcmlwdGlvblJlcXVlc3QsIEdlbmllTGlzdENvbnZlcnNhdGlvbk1lc3NhZ2VzUmVzcG9uc2UsIEdlbmllU3RhcnRDb252ZXJzYXRpb25SZXNwb25zZSB9IGZyb20gXCIuL3NyYy9kYXNoYm9hcmRzLnRzXCI7XG5leHBvcnQgeyBldmVudERldGVjdG9yLCBkZXRlY3RTdGF0dXMsIGRldGVjdEF0dGFjaG1lbnRBZGRlZCwgZGV0ZWN0VGhpbmtpbmcsIGRldGVjdFRleHQsIGRldGVjdFF1ZXJ5LCBkZXRlY3RTdGF0ZW1lbnQsIGRldGVjdFJvd3MsIGRldGVjdFN1Z2dlc3RlZFF1ZXN0aW9ucywgZXZlbnRzRnJvbU1lc3NhZ2UgfSBmcm9tIFwiLi9zcmMvZXZlbnQudHNcIjtcbmV4cG9ydCB7IE1lc3NhZ2VTdGF0dXNTY2hlbWEsIEdlbmllVGhvdWdodFR5cGVTY2hlbWEsIEdlbmllVGhvdWdodFNjaGVtYSwgQVRUQUNITUVOVF9UWVBFUywgS25vd25BdHRhY2htZW50VHlwZVNjaGVtYSwgQXR0YWNobWVudFR5cGVTY2hlbWEsIEdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hLCBHZW5pZVRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYSwgR2VuaWVUZXh0QXR0YWNobWVudFNjaGVtYSwgR2VuaWVWaXpBdHRhY2htZW50U2NoZW1hLCBHZW5pZUF0dGFjaG1lbnRTY2hlbWEsIEdlbmllTWVzc2FnZVNjaGVtYSwgR2VuaWVSZXNwb25zZVNjaGVtYSwgR2VuaWVTcGFjZVNjaGVtYSwgQ3JlYXRlR2VuaWVTcGFjZVJlcXVlc3RTY2hlbWEsIEdlbmllTWVzc2FnZUZlZWRiYWNrUmVxdWVzdFNjaGVtYSwgVEVSTUlOQUxfU1RBVFVTRVMsIFRlcm1pbmFsU3RhdHVzU2NoZW1hLCBpc1Rlcm1pbmFsU3RhdHVzLCBodW1hbml6ZVN0YXR1cywgZGV0ZWN0QXR0YWNobWVudFR5cGUsIEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLCBRdWVzdGlvbkV2ZW50U2NoZW1hLCBNZXNzYWdlRXZlbnRTY2hlbWEsIFN0YXR1c0V2ZW50U2NoZW1hLCBBdHRhY2htZW50RXZlbnRTY2hlbWEsIFRoaW5raW5nRXZlbnRTY2hlbWEsIFRleHRFdmVudFNjaGVtYSwgUXVlcnlFdmVudFNjaGVtYSwgU3RhdGVtZW50RXZlbnRTY2hlbWEsIFJvd3NFdmVudFNjaGVtYSwgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWEsIFJlc3VsdEV2ZW50U2NoZW1hLCBHZW5pZUNoYXRFdmVudFNjaGVtYSB9IGZyb20gXCIuL3NyYy9nZW5pZS1tb2RlbC50c1wiO1xuZXhwb3J0IHR5cGUgeyBNZXNzYWdlU3RhdHVzLCBHZW5pZVRob3VnaHRUeXBlLCBHZW5pZVRob3VnaHQsIEtub3duQXR0YWNobWVudFR5cGUsIEF0dGFjaG1lbnRUeXBlLCBHZW5pZVF1ZXJ5QXR0YWNobWVudCwgR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2UsIEdlbmllVGV4dEF0dGFjaG1lbnQsIEdlbmllVml6QXR0YWNobWVudCwgR2VuaWVBdHRhY2htZW50LCBHZW5pZU1lc3NhZ2UsIEdlbmllUmVzcG9uc2UsIEdlbmllU3BhY2UsIENyZWF0ZUdlbmllU3BhY2VSZXF1ZXN0LCBHZW5pZU1lc3NhZ2VGZWVkYmFja1JlcXVlc3QsIFRlcm1pbmFsU3RhdHVzLCBHZW5pZUNoYXRMb2NhdGlvbiwgUXVlc3Rpb25FdmVudCwgTWVzc2FnZUV2ZW50LCBTdGF0dXNFdmVudCwgQXR0YWNobWVudEV2ZW50LCBUaGlua2luZ0V2ZW50LCBUZXh0RXZlbnQsIFF1ZXJ5RXZlbnQsIFN0YXRlbWVudEV2ZW50LCBSb3dzRXZlbnQsIFN1Z2dlc3RlZFF1ZXN0aW9uc0V2ZW50LCBSZXN1bHRFdmVudCwgR2VuaWVDaGF0RXZlbnQsIEdlbmllQ2hhdEV2ZW50VHlwZSwgR2VuaWVDaGF0RXZlbnRGaWVsZHMgfSBmcm9tIFwiLi9zcmMvZ2VuaWUtbW9kZWwudHNcIjtcbiJdfQ==
15
+ export { GenieVisualizationRequestSchema, genieVisualizationDownloadPath } from "./src/visualization.js";
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx5QkFBeUIsQ0FBQztBQUM1RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxLQUFLLGFBQWEsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsMEJBQTBCLEVBQUUsaUNBQWlDLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsdUJBQXVCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuUSxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsMkJBQTJCLEVBQUUsK0JBQStCLEVBQUUsdUNBQXVDLEVBQUUsdUJBQXVCLEVBQUUsOEJBQThCLEVBQUUsMkNBQTJDLEVBQUUsMkNBQTJDLEVBQUUsb0NBQW9DLEVBQUUsK0NBQStDLEVBQUUscUNBQXFDLEVBQUUseUJBQXlCLEVBQUUsd0NBQXdDLEVBQUUsaURBQWlELEVBQUUsdUNBQXVDLEVBQUUsd0NBQXdDLEVBQUUsNENBQTRDLEVBQUUsMEJBQTBCLEVBQUUsMENBQTBDLEVBQUUsbUNBQW1DLEVBQUUsb0NBQW9DLEVBQUUsNEJBQTRCLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLDhCQUE4QixFQUFFLHlCQUF5QixFQUFFLHFDQUFxQyxFQUFFLDBDQUEwQyxFQUFFLDRCQUE0QixFQUFFLHlCQUF5QixFQUFFLGtDQUFrQyxFQUFFLDJDQUEyQyxFQUFFLDBCQUEwQixFQUFFLHdCQUF3QixFQUFFLDRCQUE0QixFQUFFLDJCQUEyQixFQUFFLGVBQWUsRUFBRSwwQkFBMEIsRUFBRSw4QkFBOEIsRUFBRSxzQkFBc0IsRUFBRSw2QkFBNkIsRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSx5QkFBeUIsRUFBRSx1Q0FBdUMsRUFBRSxnQ0FBZ0MsRUFBRSxnQkFBZ0IsRUFBRSwyQkFBMkIsRUFBRSwyQkFBMkIsRUFBRSwrQkFBK0IsRUFBRSw0QkFBNEIsRUFBRSxjQUFjLEVBQUUsNEJBQTRCLEVBQUUsMkJBQTJCLEVBQUUsa0JBQWtCLEVBQUUsMEJBQTBCLEVBQUUsb0JBQW9CLEVBQUUsNkJBQTZCLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsNENBQTRDLEVBQUUsNEJBQTRCLEVBQUUsMkJBQTJCLEVBQUUsK0JBQStCLEVBQUUsMkJBQTJCLEVBQUUsK0JBQStCLEVBQUUsMkNBQTJDLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU3eUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZNLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSwwQkFBMEIsRUFBRSxnQ0FBZ0MsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSw2QkFBNkIsRUFBRSxpQ0FBaUMsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSw2QkFBNkIsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJ5QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmllXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuMTg4XCI7XG5leHBvcnQgKiBhcyBhZ2VudE1vZGUgZnJvbSBcIi4vc3JjL2FnZW50LW1vZGUudHNcIjtcbmV4cG9ydCAqIGFzIGRhc2hib2FyZHMgZnJvbSBcIi4vc3JjL2Rhc2hib2FyZHMudHNcIjtcbmV4cG9ydCAqIGFzIGV2ZW50IGZyb20gXCIuL3NyYy9ldmVudC50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWVNb2RlbCBmcm9tIFwiLi9zcmMvZ2VuaWUtbW9kZWwudHNcIjtcbmV4cG9ydCAqIGFzIHZpc3VhbGl6YXRpb24gZnJvbSBcIi4vc3JjL3Zpc3VhbGl6YXRpb24udHNcIjtcbmV4cG9ydCB7IEdlbmllQWdlbnRDb250ZW50U2NoZW1hLCBHZW5pZUFnZW50T3V0cHV0SXRlbVNjaGVtYSwgR2VuaWVBZ2VudENvbnZlcnNhdGlvbkl0ZW1zU2NoZW1hLCBHZW5pZUFnZW50UmVzcG9uc2VTY2hlbWEsIEdlbmllQWdlbnRNb2RlRXZlbnRTY2hlbWEsIEdlbmllQWdlbnRNb2RlUHJvamVjdGlvbiwgcHJvamVjdEFnZW50TW9kZU1lc3NhZ2UsIHByb2plY3RBZ2VudE1vZGVDb252ZXJzYXRpb24gfSBmcm9tIFwiLi9zcmMvYWdlbnQtbW9kZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBHZW5pZUFnZW50Q29udmVyc2F0aW9uSXRlbXMsIEdlbmllQWdlbnRPdXRwdXRJdGVtLCBHZW5pZUFnZW50UmVzcG9uc2UsIEdlbmllQWdlbnRNb2RlRXZlbnQgfSBmcm9tIFwiLi9zcmMvYWdlbnQtbW9kZS50c1wiO1xuZXhwb3J0IHsgYXV0aG9yaXphdGlvbkRldGFpbHNHcmFudFJ1bGVTY2hlbWEsIGNyb25TY2hlZHVsZVNjaGVtYSwgbGlmZWN5Y2xlU3RhdGVTY2hlbWEsIGRhc2hib2FyZFZpZXdTY2hlbWEsIGRlbGV0ZVNjaGVkdWxlUmVxdWVzdFNjaGVtYSwgZGVsZXRlU3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYSwgZ2VuaWVTdWdnZXN0ZWRRdWVzdGlvbnNBdHRhY2htZW50U2NoZW1hLCBnZW5pZUNvbnZlcnNhdGlvblNjaGVtYSwgZ2VuaWVDb252ZXJzYXRpb25TdW1tYXJ5U2NoZW1hLCBnZW5pZUNyZWF0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZURlbGV0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZURlbGV0ZUNvbnZlcnNhdGlvblJlcXVlc3RTY2hlbWEsIGdlbmllRXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXF1ZXN0U2NoZW1hLCBnZW5pZUV4ZWN1dGVNZXNzYWdlUXVlcnlSZXF1ZXN0U2NoZW1hLCBnZW5pZUZlZWRiYWNrUmF0aW5nU2NoZW1hLCBnZW5pZUdldENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZUdldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRSZXF1ZXN0U2NoZW1hLCBnZW5pZUdldE1lc3NhZ2VRdWVyeVJlc3VsdFJlcXVlc3RTY2hlbWEsIGdlbmllR2V0TWVzc2FnZVF1ZXJ5UmVzdWx0UmVzcG9uc2VTY2hlbWEsIGdlbmllR2V0UXVlcnlSZXN1bHRCeUF0dGFjaG1lbnRSZXF1ZXN0U2NoZW1hLCBnZW5pZUdldFNwYWNlUmVxdWVzdFNjaGVtYSwgZ2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXF1ZXN0U2NoZW1hLCBnZW5pZUxpc3RDb252ZXJzYXRpb25zUmVxdWVzdFNjaGVtYSwgZ2VuaWVMaXN0Q29udmVyc2F0aW9uc1Jlc3BvbnNlU2NoZW1hLCBnZW5pZUxpc3RTcGFjZXNSZXF1ZXN0U2NoZW1hLCBnZW5pZVNwYWNlU2NoZW1hLCBnZW5pZUZlZWRiYWNrU2NoZW1hLCByZXN1bHRTY2hlbWEsIG1lc3NhZ2VTdGF0dXNTY2hlbWEsIHF1ZXJ5QXR0YWNobWVudFBhcmFtZXRlclNjaGVtYSwgZ2VuaWVSZXN1bHRNZXRhZGF0YVNjaGVtYSwgZ2VuaWVTZW5kTWVzc2FnZUZlZWRiYWNrUmVxdWVzdFNjaGVtYSwgZ2VuaWVTdGFydENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZVRyYXNoU3BhY2VSZXF1ZXN0U2NoZW1hLCBnZXREYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCBnZXRQdWJsaXNoZWREYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCBnZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXF1ZXN0U2NoZW1hLCBhdXRob3JpemF0aW9uRGV0YWlsc1NjaGVtYSwgZ2V0U2NoZWR1bGVSZXF1ZXN0U2NoZW1hLCBnZXRTdWJzY3JpcHRpb25SZXF1ZXN0U2NoZW1hLCBsaXN0RGFzaGJvYXJkc1JlcXVlc3RTY2hlbWEsIGRhc2hib2FyZFNjaGVtYSwgbGlzdFNjaGVkdWxlc1JlcXVlc3RTY2hlbWEsIGxpc3RTdWJzY3JpcHRpb25zUmVxdWVzdFNjaGVtYSwgbWVzc2FnZUVycm9yVHlwZVNjaGVtYSwgbWlncmF0ZURhc2hib2FyZFJlcXVlc3RTY2hlbWEsIHB1Ymxpc2hSZXF1ZXN0U2NoZW1hLCBwdWJsaXNoZWREYXNoYm9hcmRTY2hlbWEsIHNjaGVkdWxlUGF1c2VTdGF0dXNTY2hlbWEsIHN1YnNjcmlwdGlvblN1YnNjcmliZXJEZXN0aW5hdGlvblNjaGVtYSwgc3Vic2NyaXB0aW9uU3Vic2NyaWJlclVzZXJTY2hlbWEsIHN1YnNjcmliZXJTY2hlbWEsIHRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYSwgdHJhc2hEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCB1bnB1Ymxpc2hEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCB1cGRhdGVEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCBzY2hlZHVsZVNjaGVtYSwgY3JlYXRlRGFzaGJvYXJkUmVxdWVzdFNjaGVtYSwgY3JlYXRlU2NoZWR1bGVSZXF1ZXN0U2NoZW1hLCBzdWJzY3JpcHRpb25TY2hlbWEsIGdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hLCB0ZXh0QXR0YWNobWVudFNjaGVtYSwgZ2VuaWVMaXN0U3BhY2VzUmVzcG9uc2VTY2hlbWEsIGdlbmllQXR0YWNobWVudFNjaGVtYSwgbWVzc2FnZUVycm9yU2NoZW1hLCBnZW5pZU1lc3NhZ2VTY2hlbWEsIGdldFB1Ymxpc2hlZERhc2hib2FyZFRva2VuSW5mb1Jlc3BvbnNlU2NoZW1hLCBsaXN0RGFzaGJvYXJkc1Jlc3BvbnNlU2NoZW1hLCBsaXN0U2NoZWR1bGVzUmVzcG9uc2VTY2hlbWEsIGxpc3RTdWJzY3JpcHRpb25zUmVzcG9uc2VTY2hlbWEsIHVwZGF0ZVNjaGVkdWxlUmVxdWVzdFNjaGVtYSwgY3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYSwgZ2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXNwb25zZVNjaGVtYSwgZ2VuaWVTdGFydENvbnZlcnNhdGlvblJlc3BvbnNlU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2Rhc2hib2FyZHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgQXV0aG9yaXphdGlvbkRldGFpbHNHcmFudFJ1bGUsIENyb25TY2hlZHVsZSwgTGlmZWN5Y2xlU3RhdGUsIERhc2hib2FyZFZpZXcsIERlbGV0ZVNjaGVkdWxlUmVxdWVzdCwgRGVsZXRlU3Vic2NyaXB0aW9uUmVxdWVzdCwgR2VuaWVTdWdnZXN0ZWRRdWVzdGlvbnNBdHRhY2htZW50LCBHZW5pZUNvbnZlcnNhdGlvbiwgR2VuaWVDb252ZXJzYXRpb25TdW1tYXJ5LCBHZW5pZUNyZWF0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZURlbGV0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZURlbGV0ZUNvbnZlcnNhdGlvblJlcXVlc3QsIEdlbmllRXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXF1ZXN0LCBHZW5pZUV4ZWN1dGVNZXNzYWdlUXVlcnlSZXF1ZXN0LCBHZW5pZUZlZWRiYWNrUmF0aW5nLCBHZW5pZUdldENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZUdldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRSZXF1ZXN0LCBHZW5pZUdldE1lc3NhZ2VRdWVyeVJlc3VsdFJlcXVlc3QsIEdlbmllR2V0TWVzc2FnZVF1ZXJ5UmVzdWx0UmVzcG9uc2UsIEdlbmllR2V0UXVlcnlSZXN1bHRCeUF0dGFjaG1lbnRSZXF1ZXN0LCBHZW5pZUdldFNwYWNlUmVxdWVzdCwgR2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXF1ZXN0LCBHZW5pZUxpc3RDb252ZXJzYXRpb25zUmVxdWVzdCwgR2VuaWVMaXN0Q29udmVyc2F0aW9uc1Jlc3BvbnNlLCBHZW5pZUxpc3RTcGFjZXNSZXF1ZXN0LCBHZW5pZUZlZWRiYWNrLCBSZXN1bHQsIFF1ZXJ5QXR0YWNobWVudFBhcmFtZXRlciwgR2VuaWVSZXN1bHRNZXRhZGF0YSwgR2VuaWVTZW5kTWVzc2FnZUZlZWRiYWNrUmVxdWVzdCwgR2VuaWVTdGFydENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZVRyYXNoU3BhY2VSZXF1ZXN0LCBHZXREYXNoYm9hcmRSZXF1ZXN0LCBHZXRQdWJsaXNoZWREYXNoYm9hcmRSZXF1ZXN0LCBHZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXF1ZXN0LCBBdXRob3JpemF0aW9uRGV0YWlscywgR2V0U2NoZWR1bGVSZXF1ZXN0LCBHZXRTdWJzY3JpcHRpb25SZXF1ZXN0LCBMaXN0RGFzaGJvYXJkc1JlcXVlc3QsIERhc2hib2FyZCwgTGlzdFNjaGVkdWxlc1JlcXVlc3QsIExpc3RTdWJzY3JpcHRpb25zUmVxdWVzdCwgTWVzc2FnZUVycm9yVHlwZSwgTWlncmF0ZURhc2hib2FyZFJlcXVlc3QsIFB1Ymxpc2hSZXF1ZXN0LCBQdWJsaXNoZWREYXNoYm9hcmQsIFNjaGVkdWxlUGF1c2VTdGF0dXMsIFN1YnNjcmlwdGlvblN1YnNjcmliZXJEZXN0aW5hdGlvbiwgU3Vic2NyaXB0aW9uU3Vic2NyaWJlclVzZXIsIFN1YnNjcmliZXIsIFRleHRBdHRhY2htZW50UHVycG9zZSwgVHJhc2hEYXNoYm9hcmRSZXF1ZXN0LCBVbnB1Ymxpc2hEYXNoYm9hcmRSZXF1ZXN0LCBVcGRhdGVEYXNoYm9hcmRSZXF1ZXN0LCBTY2hlZHVsZSwgQ3JlYXRlRGFzaGJvYXJkUmVxdWVzdCwgQ3JlYXRlU2NoZWR1bGVSZXF1ZXN0LCBTdWJzY3JpcHRpb24sIFRleHRBdHRhY2htZW50LCBHZW5pZUxpc3RTcGFjZXNSZXNwb25zZSwgTWVzc2FnZUVycm9yLCBHZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXNwb25zZSwgTGlzdERhc2hib2FyZHNSZXNwb25zZSwgTGlzdFNjaGVkdWxlc1Jlc3BvbnNlLCBMaXN0U3Vic2NyaXB0aW9uc1Jlc3BvbnNlLCBVcGRhdGVTY2hlZHVsZVJlcXVlc3QsIENyZWF0ZVN1YnNjcmlwdGlvblJlcXVlc3QsIEdlbmllTGlzdENvbnZlcnNhdGlvbk1lc3NhZ2VzUmVzcG9uc2UsIEdlbmllU3RhcnRDb252ZXJzYXRpb25SZXNwb25zZSB9IGZyb20gXCIuL3NyYy9kYXNoYm9hcmRzLnRzXCI7XG5leHBvcnQgeyBldmVudERldGVjdG9yLCBkZXRlY3RTdGF0dXMsIGRldGVjdEF0dGFjaG1lbnRBZGRlZCwgZGV0ZWN0VGhpbmtpbmcsIGRldGVjdFRleHQsIGRldGVjdFF1ZXJ5LCBkZXRlY3RTdGF0ZW1lbnQsIGRldGVjdFJvd3MsIGRldGVjdFN1Z2dlc3RlZFF1ZXN0aW9ucywgZXZlbnRzRnJvbU1lc3NhZ2UgfSBmcm9tIFwiLi9zcmMvZXZlbnQudHNcIjtcbmV4cG9ydCB7IE1lc3NhZ2VTdGF0dXNTY2hlbWEsIEdlbmllVGhvdWdodFR5cGVTY2hlbWEsIEdlbmllVGhvdWdodFNjaGVtYSwgQVRUQUNITUVOVF9UWVBFUywgS25vd25BdHRhY2htZW50VHlwZVNjaGVtYSwgQXR0YWNobWVudFR5cGVTY2hlbWEsIEdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hLCBHZW5pZVRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYSwgR2VuaWVUZXh0QXR0YWNobWVudFNjaGVtYSwgR2VuaWVWaXpBdHRhY2htZW50U2NoZW1hLCBHZW5pZUF0dGFjaG1lbnRTY2hlbWEsIEdlbmllTWVzc2FnZVNjaGVtYSwgR2VuaWVSZXNwb25zZVNjaGVtYSwgR2VuaWVTcGFjZVNjaGVtYSwgQ3JlYXRlR2VuaWVTcGFjZVJlcXVlc3RTY2hlbWEsIEdlbmllTWVzc2FnZUZlZWRiYWNrUmVxdWVzdFNjaGVtYSwgVEVSTUlOQUxfU1RBVFVTRVMsIFRlcm1pbmFsU3RhdHVzU2NoZW1hLCBpc1Rlcm1pbmFsU3RhdHVzLCBodW1hbml6ZVN0YXR1cywgZGV0ZWN0QXR0YWNobWVudFR5cGUsIEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLCBRdWVzdGlvbkV2ZW50U2NoZW1hLCBNZXNzYWdlRXZlbnRTY2hlbWEsIFN0YXR1c0V2ZW50U2NoZW1hLCBBdHRhY2htZW50RXZlbnRTY2hlbWEsIFRoaW5raW5nRXZlbnRTY2hlbWEsIFRleHRFdmVudFNjaGVtYSwgUXVlcnlFdmVudFNjaGVtYSwgU3RhdGVtZW50RXZlbnRTY2hlbWEsIFJvd3NFdmVudFNjaGVtYSwgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWEsIFJlc3VsdEV2ZW50U2NoZW1hLCBHZW5pZUNoYXRFdmVudFNjaGVtYSB9IGZyb20gXCIuL3NyYy9nZW5pZS1tb2RlbC50c1wiO1xuZXhwb3J0IHR5cGUgeyBNZXNzYWdlU3RhdHVzLCBHZW5pZVRob3VnaHRUeXBlLCBHZW5pZVRob3VnaHQsIEtub3duQXR0YWNobWVudFR5cGUsIEF0dGFjaG1lbnRUeXBlLCBHZW5pZVF1ZXJ5QXR0YWNobWVudCwgR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2UsIEdlbmllVGV4dEF0dGFjaG1lbnQsIEdlbmllVml6QXR0YWNobWVudCwgR2VuaWVBdHRhY2htZW50LCBHZW5pZU1lc3NhZ2UsIEdlbmllUmVzcG9uc2UsIEdlbmllU3BhY2UsIENyZWF0ZUdlbmllU3BhY2VSZXF1ZXN0LCBHZW5pZU1lc3NhZ2VGZWVkYmFja1JlcXVlc3QsIFRlcm1pbmFsU3RhdHVzLCBHZW5pZUNoYXRMb2NhdGlvbiwgUXVlc3Rpb25FdmVudCwgTWVzc2FnZUV2ZW50LCBTdGF0dXNFdmVudCwgQXR0YWNobWVudEV2ZW50LCBUaGlua2luZ0V2ZW50LCBUZXh0RXZlbnQsIFF1ZXJ5RXZlbnQsIFN0YXRlbWVudEV2ZW50LCBSb3dzRXZlbnQsIFN1Z2dlc3RlZFF1ZXN0aW9uc0V2ZW50LCBSZXN1bHRFdmVudCwgR2VuaWVDaGF0RXZlbnQsIEdlbmllQ2hhdEV2ZW50VHlwZSwgR2VuaWVDaGF0RXZlbnRGaWVsZHMgfSBmcm9tIFwiLi9zcmMvZ2VuaWUtbW9kZWwudHNcIjtcbmV4cG9ydCB7IEdlbmllVmlzdWFsaXphdGlvblJlcXVlc3RTY2hlbWEsIGdlbmllVmlzdWFsaXphdGlvbkRvd25sb2FkUGF0aCB9IGZyb20gXCIuL3NyYy92aXN1YWxpemF0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IEdlbmllVmlzdWFsaXphdGlvblJlcXVlc3QgfSBmcm9tIFwiLi9zcmMvdmlzdWFsaXphdGlvbi50c1wiO1xuIl19
@@ -162,9 +162,9 @@ export declare const GenieTextAttachmentSchema: z.ZodObject<{
162
162
  /** Narrative text attachment, including its optional semantic purpose. */
163
163
  export type GenieTextAttachment = z.infer<typeof GenieTextAttachmentSchema>;
164
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.
165
+ * Visualization Genie generated for one query result. The attachment carries
166
+ * its title and query link; its rendered PNG is retrieved separately through
167
+ * the visualization download endpoint.
168
168
  */
169
169
  export declare const GenieVizAttachmentSchema: z.ZodObject<{
170
170
  title: z.ZodOptional<z.ZodString>;
@@ -141,9 +141,9 @@ export const GenieTextAttachmentSchema = dashboards.textAttachmentSchema.extend(
141
141
  metadata: z.unknown().optional().describe("Agent Mode metadata attached to this text response."),
142
142
  });
143
143
  /**
144
- * Visualization Genie requested for one of its query results. Genie stores only
145
- * the title and the query attachment it charts; the client draws the chart from
146
- * that query's statement rows.
144
+ * Visualization Genie generated for one query result. The attachment carries
145
+ * its title and query link; its rendered PNG is retrieved separately through
146
+ * the visualization download endpoint.
147
147
  */
148
148
  export const GenieVizAttachmentSchema = z
149
149
  .object({
@@ -539,4 +539,4 @@ export const GenieChatEventSchema = z.discriminatedUnion("type", [
539
539
  SuggestedQuestionsEventSchema,
540
540
  ResultEventSchema,
541
541
  ]);
542
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuaWUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuaWUtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0NHO0FBRUgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUN4QixPQUFPLEtBQUssVUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLGtGQUFrRjtBQUNsRixpRkFBaUY7QUFDakYsNkRBQTZEO0FBQzdELE1BQU0sRUFDSixxQkFBcUIsRUFBRSx3QkFBd0IsRUFDL0Msa0JBQWtCLEVBQUUscUJBQXFCLEVBQ3pDLDBCQUEwQixFQUFFLDZCQUE2QixFQUN6RCxnQkFBZ0IsRUFBRSxtQkFBbUIsR0FDdEMsR0FBRyxVQUFVLENBQUM7QUFVZix3RkFBd0Y7QUFDeEYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixDQUFDO0FBRWxFLHlFQUF5RTtBQUV6RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQztLQUNwQyxNQUFNLEVBQUU7S0FDUixRQUFRLENBQUMsa0RBQWtELENBQUMsQ0FBQztBQUloRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3pDLFlBQVksRUFBRSxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsOENBQThDLENBQUM7SUFDN0YsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsMENBQTBDLENBQUM7Q0FDekUsQ0FBQyxDQUFDO0FBSUgsNkVBQTZFO0FBRTdFOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1B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bEIsaUJBQWlCO0lBQ2pCLHFCQUFxQjtJQUNyQixtQkFBbUI7SUFDbkIsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixvQkFBb0I7SUFDcEIsZUFBZTtJQUNmLDZCQUE2QjtJQUM3QixpQkFBaUI7Q0FDbEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBXaXJlLWZvcm1hdCB6b2Qgc2NoZW1hcyArIHR5cGVzIGFuZCBoaWdoLWxldmVsIGV2ZW50IHZvY2FidWxhcnlcbiAqIGZvciB0aGUgR2VuaWUgY2hhdCBkcml2ZXIuXG4gKlxuICogVHdvIHJlbGF0ZWQgbGF5ZXJzIGxpdmUgaGVyZTpcbiAqXG4gKiAgIDEuIEdlbmllIHdpcmUgc2hhcGVzIGRlcml2ZWQgZnJvbSB0aGlzIHBhY2thZ2UncyBvd24gZ2VuZXJhdGVkXG4gKiAgICAgIGBkYXNoYm9hcmRzYCBzY2hlbWFzIChyZWdlbmVyYXRlZCBmcm9tIHRoZSB1cHN0cmVhbVxuICogICAgICBgQGRhdGFicmlja3Mvc2RrLWV4cGVyaW1lbnRhbGAgYGFwaXMvZGFzaGJvYXJkcy9tb2RlbC5kLnRzYFxuICogICAgICBieSB0aGUgZW5naW5lJ3MgY29kZWdlbiBvbiBzeW50aCkuIFdlIGV4dGVuZCB0aGUgU0RLIHNjaGVtYXMgd2hlcmUgR2VuaWVcbiAqICAgICAgc2hpcHMgZmllbGRzIG9uIHRoZSB3aXJlIHRoYXQgdGhlIFNESyBkb2Vzbid0IGN1cnJlbnRseSB0eXBlOlxuICpcbiAqICAgICAgICAtIGBHZW5pZU1lc3NhZ2UuYXV0b19yZWdlbmVyYXRlX2NvdW50OiBudW1iZXJgIChzdGFtcGVkXG4gKiAgICAgICAgICBvbiBldmVyeSB3aXJlIG1lc3NhZ2UsIG9taXR0ZWQgZnJvbSB0aGUgU0RLIHNoYXBlKS5cbiAqICAgICAgICAtIGBHZW5pZVF1ZXJ5QXR0YWNobWVudC50aG91Z2h0czogR2VuaWVUaG91Z2h0W11gICh0aGVcbiAqICAgICAgICAgIHN0cmVhbWVkIHJlYXNvbmluZyBwYXlsb2FkIHdpdGggYERFU0NSSVBUSU9OYCxcbiAqICAgICAgICAgIGBEQVRBX1NPVVJDSU5HYCwgYFNURVBTYCwgYW5kIGBVTkRFUlNUQU5ESU5HYCB0aG91Z2h0XG4gKiAgICAgICAgICBraW5kcykuXG4gKiAgICAgICAgLSBgR2VuaWVBdHRhY2htZW50LmF0dGFjaG1lbnRfdHlwZTogQXR0YWNobWVudFR5cGVgXG4gKiAgICAgICAgICAoYW4gb3B0aW9uYWwgZGlzY3JpbWluYXRvciBsaXRlcmFsIHNvIGNhbGxlcnMgY2FuXG4gKiAgICAgICAgICBgc3dpdGNoIChhdHQuYXR0YWNobWVudF90eXBlKWAgaW5zdGVhZCBvZiBwcm9iaW5nXG4gKiAgICAgICAgICB3aGljaCBzdWIta2V5IGlzIHBvcHVsYXRlZDsgY29tcHV0ZSBpdCB3aXRoXG4gKiAgICAgICAgICB7QGxpbmsgZGV0ZWN0QXR0YWNobWVudFR5cGV9KS5cbiAqXG4gKiAgIDIuIEV2ZW50IHZvY2FidWxhcnkgZm9yIHRoZSBoaWdoLWxldmVsIGBnZW5pZUV2ZW50Q2hhdGBcbiAqICAgICAgZHJpdmVyLiBFYWNoIGV2ZW50IGlzIGEgZmxhdCBgei5vYmplY3RgIHdpdGggYSBgdHlwZWBcbiAqICAgICAgbGl0ZXJhbCBkaXNjcmltaW5hdG9yIGFuZCBzbmFrZV9jYXNlIHBheWxvYWQgZmllbGRzIGhvaXN0ZWRcbiAqICAgICAgdG8gdGhlIHRvcCBsZXZlbCAobm8gYHBheWxvYWRgIHdyYXBwZXIpLiBFdmVudHMgdGhhdCBzaGFyZVxuICogICAgICB0aGUgYXR0YWNobWVudC1zY29wZWQgbG9jYXRpb24gdXNlXG4gKiAgICAgIHtAbGluayBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYX0gYXMgYSBiYXNlOyBldmVudHMgdGhhdFxuICogICAgICBkb24ndCBjYXJyeSBhbiBgYXR0YWNobWVudF9pZGAgKHN0YXR1cywgcmVzdWx0KSBvbWl0IGl0LlxuICogICAgICB7QGxpbmsgR2VuaWVDaGF0RXZlbnRTY2hlbWF9IGJ1bmRsZXMgdGhlIHZhcmlhbnRzIGludG8gb25lXG4gKiAgICAgIGRpc2NyaW1pbmF0ZWQgdW5pb24uXG4gKlxuICogUHVyZSB0eXBlczogbm8gcnVudGltZSBpbXBvcnRzIGJleW9uZCB6b2QgKyB0aGUgZ2VuZXJhdGVkXG4gKiBgZGFzaGJvYXJkc2Agc2NoZW1hcywgbm8gTm9kZS1vbmx5IGNvZGUsIHNhZmUgZm9yIGJyb3dzZXIgYnVuZGxlcy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgdG9rZW5pemVXaXRoT3B0aW9ucyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0ICogYXMgZGFzaGJvYXJkcyBmcm9tIFwiLi9kYXNoYm9hcmRzLnRzXCI7XG5cbi8vIFRoZSBnZW5lcmF0ZWQgU0RLIHNjaGVtYXMgbGl2ZSBpbiB0aGUgc2libGluZyBgLi9kYXNoYm9hcmRzLnRzYCwgd3JpdHRlbiBieSB0aGVcbi8vIGVuZ2luZSdzIGNvZGVnZW4gZnJvbSB0aGUgdXBzdHJlYW0gYC5kLnRzYC4gQWxpYXMgdGhlIGhhbmRmdWwgR2VuaWUgZXh0ZW5kcyBzb1xuLy8gdGhlIHdpZGVuZWQgc2NoZW1hcyBiZWxvdyByZWFkIGFnYWluc3Qgc2hvcnQsIGxvY2FsIG5hbWVzLlxuY29uc3Qge1xuICBnZW5pZUF0dGFjaG1lbnRTY2hlbWE6IFNES0dlbmllQXR0YWNobWVudFNjaGVtYSxcbiAgZ2VuaWVNZXNzYWdlU2NoZW1hOiBTREtHZW5pZU1lc3NhZ2VTY2hlbWEsXG4gIGdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hOiBTREtHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYSxcbiAgZ2VuaWVTcGFjZVNjaGVtYTogU0RLR2VuaWVTcGFjZVNjaGVtYSxcbn0gPSBkYXNoYm9hcmRzO1xuXG4vKipcbiAqIFRoZSBTREsncyBgTWVzc2FnZVN0YXR1c2AgdHlwZSwgcmUtZXhwb3J0ZWQgc28gY29uc3VtZXJzIG9mIHRoZVxuICogR2VuaWUgY29udHJhY3QgZ2V0IHRoZSBmdWxsIHdpcmUgdm9jYWJ1bGFyeSBmcm9tIGEgc2luZ2xlIGltcG9ydFxuICogcGF0aCAtIG1pcnJvcnMgdGhlIHJlLWV4cG9ydHMgb2YgdGhlIG90aGVyIFNESy1kZXJpdmVkIHNjaGVtYXNcbiAqIGJlbG93LlxuICovXG5leHBvcnQgdHlwZSBNZXNzYWdlU3RhdHVzID0gZGFzaGJvYXJkcy5NZXNzYWdlU3RhdHVzO1xuXG4vKiogUnVudGltZSB2YWxpZGF0b3IgZm9yIGEgcmF3IEdlbmllIG1lc3NhZ2Ugc3RhdHVzIGZyb20gdGhlIGdlbmVyYXRlZCBTREsgY29udHJhY3QuICovXG5leHBvcnQgY29uc3QgTWVzc2FnZVN0YXR1c1NjaGVtYSA9IGRhc2hib2FyZHMubWVzc2FnZVN0YXR1c1NjaGVtYTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gdGhvdWdodHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEdlbmllJ3MgcGVyLXF1ZXJ5IFwidGhvdWdodHNcIiBzdXJmYWNlLiBUaGVzZSBhcHBlYXIgb24gdGhlXG4gKiBgL21lc3NhZ2VzL3tpZH1gIHdpcmUgdW5kZXIgYGF0dGFjaG1lbnRzW2ldLnF1ZXJ5LnRob3VnaHRzW11gIGJ1dFxuICogYXJlIG5vdCB0eXBlZCBvbiB0aGUgU0RLJ3MgYEdlbmllUXVlcnlBdHRhY2htZW50YCBhdCB2MC4xNy5cbiAqXG4gKiBLbm93biB0aG91Z2h0IHR5cGVzIG9ic2VydmVkIGluIHByb2R1Y3Rpb24gcG9sbHM6XG4gKlxuICogICAtIGBUSE9VR0hUX1RZUEVfREVTQ1JJUFRJT05gOiBhIG9uZS1wYXJhZ3JhcGggcmVzdGF0ZW1lbnQgb2ZcbiAqICAgICB3aGF0IHRoZSB1c2VyIGFza2VkLiBUaGUgZmluYWwgYHF1ZXJ5LmRlc2NyaXB0aW9uYCBmaWVsZCBvblxuICogICAgIHRoZSBhdHRhY2htZW50IGNhcnJpZXMgdGhlIHNhbWUgdGV4dC5cbiAqICAgLSBgVEhPVUdIVF9UWVBFX0RBVEFfU09VUkNJTkdgOiBtYXJrZG93biBidWxsZXRzIG9mIHRoZVxuICogICAgIGZ1bGx5LXF1YWxpZmllZCBgY2F0YWxvZy5zY2hlbWEudGFibGVgIHNvdXJjZXMgR2VuaWUgY2hvc2UuXG4gKiAgIC0gYFRIT1VHSFRfVFlQRV9TVEVQU2A6IHRoZSBoaWdoLWxldmVsIHBsYW4gR2VuaWUgd3JvdGUgYmVmb3JlXG4gKiAgICAgcnVubmluZyBTUUwgKG9uZSBidWxsZXQgcGVyIHN0ZXApLlxuICogICAtIGBUSE9VR0hUX1RZUEVfVU5ERVJTVEFORElOR2A6IGFtYmlndWl0eSAvIGludGVycHJldGF0aW9uXG4gKiAgICAgbm90ZXMgKGUuZy4gXCIncmV2ZW51ZScgY291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgZ3Jvc3MsXG4gKiAgICAgbmV0LCBvciByZWNvZ25pemVkIHJldmVudWUuLi5cIikuXG4gKlxuICogT3BlbiBhdCB0aGUgdHlwZSBsZXZlbCAoYHwgKHN0cmluZyAmIHt9KWApIHNvIGEgbmV3IHNlcnZlci1zaWRlXG4gKiB0aG91Z2h0IHR5cGUgZG9lc24ndCBicmVhayBjb21waWxhdGlvbjsgdGhlIGZvdXIga25vd24gdHlwZXNcbiAqIHN0aWxsIG5hcnJvdyBjb3JyZWN0bHkgdW5kZXIgYHN3aXRjaGAuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVRob3VnaHRUeXBlU2NoZW1hID0gelxuICAuc3RyaW5nKClcbiAgLmRlc2NyaWJlKFwiRm9yd2FyZC1jb21wYXRpYmxlIEdlbmllIHJlYXNvbmluZyB0aG91Z2h0IHR5cGUuXCIpO1xuXG5leHBvcnQgdHlwZSBHZW5pZVRob3VnaHRUeXBlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVUaG91Z2h0VHlwZVNjaGVtYT47XG5cbi8qKlxuICogT25lIHJlYXNvbmluZyBzdGVwIG9uIGEgcXVlcnkgYXR0YWNobWVudC4gU2VlXG4gKiB7QGxpbmsgR2VuaWVUaG91Z2h0VHlwZX0gZm9yIHRoZSBrbm93biBgdGhvdWdodF90eXBlYCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVRob3VnaHRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHRob3VnaHRfdHlwZTogR2VuaWVUaG91Z2h0VHlwZVNjaGVtYS5kZXNjcmliZShcIktpbmQgb2YgcmVhc29uaW5nIHJlcHJlc2VudGVkIGJ5IHRoaXMgZW50cnkuXCIpLFxuICBjb250ZW50OiB6LnN0cmluZygpLmRlc2NyaWJlKFwiUmVhc29uaW5nIHRleHQgZW1pdHRlZCBmb3IgdGhpcyB0aG91Z2h0LlwiKSxcbn0pO1xuLyoqIE9uZSB0eXBlZCByZWFzb25pbmcgZW50cnkgYXR0YWNoZWQgdG8gYSBHZW5pZSBxdWVyeS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllVGhvdWdodCA9IHouaW5mZXI8dHlwZW9mIEdlbmllVGhvdWdodFNjaGVtYT47XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGF0dGFjaG1lbnQgZGlzY3JpbWluYXRvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogRGlzY3JpbWluYXRvciBmb3Igd2hhdCdzIGluc2lkZSBhIGBHZW5pZUF0dGFjaG1lbnRgLiBHZW5pZSBvbmx5XG4gKiBldmVyIHBvcHVsYXRlcyBvbmUgb2YgYHF1ZXJ5YCAvIGB0ZXh0YCAvIGBzdWdnZXN0ZWRfcXVlc3Rpb25zYFxuICogcGVyIGF0dGFjaG1lbnQuIE9wZW4gdmlhIGAoc3RyaW5nICYge30pYCBzbyBhIG5ldyBzZXJ2ZXItc2lkZVxuICogdHlwZSBkb2Vzbid0IGJyZWFrIGNvbXBpbGF0aW9uOyB0aGUgdGhyZWUga25vd24gdHlwZXMgc3RpbGxcbiAqIG5hcnJvdyBjb3JyZWN0bHkgdW5kZXIgYHN3aXRjaGAuXG4gKlxuICogTGlmdGVkIGludG8gdGhlIHNjaGVtYSBhcyB0aGUgb3B0aW9uYWxcbiAqIHtAbGluayBHZW5pZUF0dGFjaG1lbnRTY2hlbWF9LmBhdHRhY2htZW50X3R5cGVgIGZpZWxkIChjb21wdXRlXG4gKiBpdCB3aXRoIHtAbGluayBkZXRlY3RBdHRhY2htZW50VHlwZX0pIHNvIGNvbnN1bWVycyBjYW4gYnJhbmNoXG4gKiBvbiBhIGxpdGVyYWwgaW5zdGVhZCBvZiBwcm9iaW5nIHdoaWNoIHN1Yi1vYmplY3Qga2V5IGlzXG4gKiBwcmVzZW50LiBBbHNvIHN1cmZhY2VkIG9uIHtAbGluayBBdHRhY2htZW50RXZlbnR9J3MgcGF5bG9hZCBhc1xuICogYGF0dGFjaG1lbnRfdHlwZWAgKHZzIGEgYmFyZSBgdHlwZWApIHRvIGtlZXAgdGhlIGZpZWxkIGNsZWFyIG9mXG4gKiB0aGUgZXZlbnQtdW5pb24gZGlzY3JpbWluYXRvciBrZXkuXG4gKi9cbmV4cG9ydCBjb25zdCBBVFRBQ0hNRU5UX1RZUEVTID0gW1xuICBcInF1ZXJ5XCIsXG4gIFwidGV4dFwiLFxuICBcInN1Z2dlc3RlZF9xdWVzdGlvbnNcIixcbiAgXCJ2aXpcIixcbl0gYXMgY29uc3Qgc2F0aXNmaWVzIHJlYWRvbmx5IHN0cmluZ1tdO1xuXG5leHBvcnQgY29uc3QgS25vd25BdHRhY2htZW50VHlwZVNjaGVtYSA9IHpcbiAgLmVudW0oQVRUQUNITUVOVF9UWVBFUylcbiAgLmRlc2NyaWJlKFwiQXR0YWNobWVudCBkaXNjcmltaW5hdG9yIHZhbHVlcyB1bmRlcnN0b29kIGJ5IHRoaXMgcGFja2FnZSB2ZXJzaW9uLlwiKTtcblxuZXhwb3J0IHR5cGUgS25vd25BdHRhY2htZW50VHlwZSA9IHouaW5mZXI8dHlwZW9mIEtub3duQXR0YWNobWVudFR5cGVTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgQXR0YWNobWVudFR5cGVTY2hlbWEgPSB6XG4gIC5zdHJpbmcoKVxuICAuZGVzY3JpYmUoXCJGb3J3YXJkLWNvbXBhdGlibGUgR2VuaWUgYXR0YWNobWVudCBkaXNjcmltaW5hdG9yLlwiKTtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudFR5cGUgPSB6LmluZmVyPHR5cGVvZiBBdHRhY2htZW50VHlwZVNjaGVtYT47XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0gd2lkZW5lZCB3aXJlIHNjaGVtYXMgKyB0eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBgR2VuaWVRdWVyeUF0dGFjaG1lbnRgIHdpZGVuZWQgd2l0aCB0aGUgYHRob3VnaHRzW11gIGZpZWxkIHRoZVxuICogR2VuaWUgd2lyZSBleHBvc2VzIGJ1dCB0aGUgU0RLIGRvZXNuJ3QgY3VycmVudGx5IHR5cGUuIEV2ZXJ5XG4gKiBvdGhlciBmaWVsZCAoYGRlc2NyaXB0aW9uYCwgYHF1ZXJ5YCwgYHN0YXRlbWVudF9pZGAsXG4gKiBgcXVlcnlfcmVzdWx0X21ldGFkYXRhYCwgYHRpdGxlYCwgYHBhcmFtZXRlcnNgLFxuICogYGxhc3RfdXBkYXRlZF90aW1lc3RhbXBgLCBgaWRgKSBmbG93cyB0aHJvdWdoIHZlcmJhdGltIGZyb21cbiAqIHRoZSBTREsgc2NoZW1hLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWEgPSBTREtHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYS5leHRlbmQoe1xuICB0aG91Z2h0czogei5hcnJheShHZW5pZVRob3VnaHRTY2hlbWEpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBRdWVyeSBhdHRhY2htZW50IHdpZGVuZWQgd2l0aCBHZW5pZSdzIHN0cmVhbWVkIHJlYXNvbmluZyB0aG91Z2h0cy4gKi9cbmV4cG9ydCB0eXBlIEdlbmllUXVlcnlBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWE+O1xuXG4vKipcbiAqIFB1cnBvc2UgYXR0YWNoZWQgdG8gYSBHZW5pZSB0ZXh0IHJlc3BvbnNlLlxuICpcbiAqIFRoZSBnZW5lcmF0ZWQgRGF0YWJyaWNrcyBTREsgc2NoZW1hIGN1cnJlbnRseSBrbm93cyBvbmx5XG4gKiBgRk9MTE9XX1VQX1FVRVNUSU9OYCwgd2hpbGUgdGhlIGxpdmUgR2VuaWUgQVBJIGFsc28gZW1pdHNcbiAqIGBURVhUX0FUVEFDSE1FTlRfUFVSUE9TRV9BTlNXRVJgIGZvciB0aGUgcHJpbWFyeSBhbnN3ZXIgdGV4dC4gS2VlcCB0aGVcbiAqIGtub3duIHZhbHVlcyBkaXNjb3ZlcmFibGUgYW5kIGFjY2VwdCBmdXR1cmUgc3RyaW5nIHZhbHVlcyBzbyBhbiBhZGRpdGl2ZVxuICogc2VydmVyLXNpZGUgZW51bSBjaGFuZ2UgY2Fubm90IGludmFsaWRhdGUgYW4gb3RoZXJ3aXNlIGNvbXBsZXRlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYSA9IHpcbiAgLnN0cmluZygpXG4gIC5kZXNjcmliZShcIkZvcndhcmQtY29tcGF0aWJsZSBzZW1hbnRpYyBwdXJwb3NlIGZvciBhIEdlbmllIHRleHQgYXR0YWNobWVudC5cIik7XG5cbmV4cG9ydCB0eXBlIEdlbmllVGV4dEF0dGFjaG1lbnRQdXJwb3NlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2VTY2hlbWE+O1xuXG4vKipcbiAqIFRleHQgYXR0YWNobWVudCB3aWRlbmVkIGZvciBmb3J3YXJkLWNvbXBhdGlibGUgcHVycG9zZSB2YWx1ZXMgYW5kIG9wdGlvbmFsXG4gKiBBZ2VudCBNb2RlIHRhYmxlIG1ldGFkYXRhLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVUZXh0QXR0YWNobWVudFNjaGVtYSA9IGRhc2hib2FyZHMudGV4dEF0dGFjaG1lbnRTY2hlbWEuZXh0ZW5kKHtcbiAgcHVycG9zZTogR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2VTY2hlbWEub3B0aW9uYWwoKSxcbiAgbWV0YWRhdGE6IHoudW5rbm93bigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBZ2VudCBNb2RlIG1ldGFkYXRhIGF0dGFjaGVkIHRvIHRoaXMgdGV4dCByZXNwb25zZS5cIiksXG59KTtcbi8qKiBOYXJyYXRpdmUgdGV4dCBhdHRhY2htZW50LCBpbmNsdWRpbmcgaXRzIG9wdGlvbmFsIHNlbWFudGljIHB1cnBvc2UuICovXG5leHBvcnQgdHlwZSBHZW5pZVRleHRBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVUZXh0QXR0YWNobWVudFNjaGVtYT47XG5cbi8qKlxuICogVmlzdWFsaXphdGlvbiBHZW5pZSByZXF1ZXN0ZWQgZm9yIG9uZSBvZiBpdHMgcXVlcnkgcmVzdWx0cy4gR2VuaWUgc3RvcmVzIG9ubHlcbiAqIHRoZSB0aXRsZSBhbmQgdGhlIHF1ZXJ5IGF0dGFjaG1lbnQgaXQgY2hhcnRzOyB0aGUgY2xpZW50IGRyYXdzIHRoZSBjaGFydCBmcm9tXG4gKiB0aGF0IHF1ZXJ5J3Mgc3RhdGVtZW50IHJvd3MuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVZpekF0dGFjaG1lbnRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHRpdGxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJEaXNwbGF5IHRpdGxlIEdlbmllIGNob3NlIGZvciB0aGUgY2hhcnQuXCIpLFxuICAgIHF1ZXJ5X2F0dGFjaG1lbnRfaWQ6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcImBhdHRhY2htZW50X2lkYCBvZiB0aGUgcXVlcnkgYXR0YWNobWVudCB3aG9zZSByb3dzIHRoZSBjaGFydCBwbG90cy5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIkdlbmllIHZpc3VhbGl6YXRpb24gcmVxdWVzdCBvdmVyIG9uZSBxdWVyeSBhdHRhY2htZW50LlwiKTtcbi8qKiBHZW5pZSB2aXN1YWxpemF0aW9uIHJlcXVlc3Qgb3ZlciBvbmUgcXVlcnkgYXR0YWNobWVudC4gKi9cbmV4cG9ydCB0eXBlIEdlbmllVml6QXR0YWNobWVudCA9IHouaW5mZXI8dHlwZW9mIEdlbmllVml6QXR0YWNobWVudFNjaGVtYT47XG5cbi8qKlxuICogYEdlbmllQXR0YWNobWVudGAgd2l0aDpcbiAqXG4gKiAgIC0gYHF1ZXJ5YCByZS10eXBlZCB0byB0aGUgdGhvdWdodHMtYXdhcmVcbiAqICAgICB7QGxpbmsgR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWF9LlxuICogICAtIGBhdHRhY2htZW50X3R5cGVgIGRpc2NyaW1pbmF0b3IgbGl0ZXJhbFxuICogICAgICh7QGxpbmsgQXR0YWNobWVudFR5cGV9KSBzbyBjb25zdW1lcnMgY2FuIGBzd2l0Y2hcbiAqICAgICAoYXR0LmF0dGFjaG1lbnRfdHlwZSlgIHRvIG5hcnJvdyB3aGljaCBzdWItb2JqZWN0IGlzXG4gKiAgICAgcG9wdWxhdGVkLiBPcHRpb25hbCBvbiB0aGUgd2lyZSAoR2VuaWUgZG9lc24ndCBzZW5kIGl0KTtcbiAqICAgICBjYWxsZXJzIGNvbXB1dGUgaXQgd2l0aCB7QGxpbmsgZGV0ZWN0QXR0YWNobWVudFR5cGV9IHdoZW5cbiAqICAgICB0aGV5IHdhbnQgdGhlIGxpdGVyYWwgdXAtZnJvbnQuXG4gKlxuICogYHRleHRgIGlzIHJlLXR5cGVkIHRvIHRoZSBmb3J3YXJkLWNvbXBhdGlibGVcbiAqIHtAbGluayBHZW5pZVRleHRBdHRhY2htZW50U2NoZW1hfS4gYGF0dGFjaG1lbnRfaWRgIGFuZFxuICogYHN1Z2dlc3RlZF9xdWVzdGlvbnNgIHBhc3MgdGhyb3VnaCB1bmNoYW5nZWQuIGBhdHRhY2htZW50X2lkYCBpcyBnZW51aW5lbHlcbiAqIG9wdGlvbmFsIG9uIHRoZSB3aXJlOlxuICogdGhlIGZpcnN0IHRleHQgYXR0YWNobWVudCBHZW5pZSBlbWl0cyBwZXIgdHVybiAodGhlIFwibWFpblxuICogYW5zd2VyIHRleHRcIikgYXJyaXZlcyB3aXRoIG5vIGlkLCBvbmx5IHRoZSBmb2xsb3ctdXAgdGV4dFxuICogYXR0YWNobWVudCBnZXRzIG9uZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQXR0YWNobWVudFNjaGVtYSA9IFNES0dlbmllQXR0YWNobWVudFNjaGVtYS5leHRlbmQoe1xuICBxdWVyeTogR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWEub3B0aW9uYWwoKSxcbiAgdGV4dDogR2VuaWVUZXh0QXR0YWNobWVudFNjaGVtYS5vcHRpb25hbCgpLFxuICB2aXo6IEdlbmllVml6QXR0YWNobWVudFNjaGVtYS5vcHRpb25hbCgpLFxuICBhdHRhY2htZW50X3R5cGU6IEF0dGFjaG1lbnRUeXBlU2NoZW1hLm9wdGlvbmFsKCksXG59KTtcbi8qKiBHZW5pZSBtZXNzYWdlIGF0dGFjaG1lbnQgd2l0aCBhbiBvcHRpb25hbCBjb21wdXRlZCBkaXNjcmltaW5hdG9yLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVBdHRhY2htZW50U2NoZW1hPjtcblxuLyoqXG4gKiBgR2VuaWVNZXNzYWdlYCB3aWRlbmVkIHdpdGg6XG4gKlxuICogICAtIGBhdXRvX3JlZ2VuZXJhdGVfY291bnRgOiBudW1iZXIgc3RhbXBlZCBvbiBldmVyeSB3aXJlXG4gKiAgICAgbWVzc2FnZSB0aGF0IHRoZSBTREsgdHlwZSBvbWl0cyBhdCB2MC4xNy5cbiAqICAgLSBgYXR0YWNobWVudHNgOiByZS10eXBlZCB0byB0aGUgbG9jYWxcbiAqICAgICB7QGxpbmsgR2VuaWVBdHRhY2htZW50U2NoZW1hfSBzb1xuICogICAgIGBhdHRhY2htZW50LnF1ZXJ5Py50aG91Z2h0c2AgKGFuZCB0aGVcbiAqICAgICBgYXR0YWNobWVudF90eXBlYCBkaXNjcmltaW5hdG9yKSBpcyByZWFjaGFibGUgd2l0aG91dCBhXG4gKiAgICAgY2FzdC5cbiAqXG4gKiBFdmVyeSBvdGhlciBmaWVsZCAoYGlkYCwgYHNwYWNlX2lkYCwgYGNvbnZlcnNhdGlvbl9pZGAsXG4gKiBgdXNlcl9pZGAsIGBjcmVhdGVkX3RpbWVzdGFtcGAsIGBsYXN0X3VwZGF0ZWRfdGltZXN0YW1wYCxcbiAqIGBzdGF0dXNgLCBgY29udGVudGAsIGBtZXNzYWdlX2lkYCwgYHF1ZXJ5X3Jlc3VsdGAsIGBlcnJvcmAsXG4gKiBgZmVlZGJhY2tgKSBwYXNzZXMgdGhyb3VnaCBmcm9tIHRoZSBTREsgc2NoZW1hLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVNZXNzYWdlU2NoZW1hID0gU0RLR2VuaWVNZXNzYWdlU2NoZW1hLmV4dGVuZCh7XG4gIGF0dGFjaG1lbnRzOiB6LmFycmF5KEdlbmllQXR0YWNobWVudFNjaGVtYSkub3B0aW9uYWwoKSxcbiAgYXV0b19yZWdlbmVyYXRlX2NvdW50OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBHZW5pZSBtZXNzYWdlIHNuYXBzaG90IHdpZGVuZWQgd2l0aCB0eXBlZCBhdHRhY2htZW50cyBhbmQgcmVnZW5lcmF0aW9uIGNvdW50LiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVNZXNzYWdlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVNZXNzYWdlU2NoZW1hPjtcblxuLyoqXG4gKiBEb21haW4gcHJvamVjdGlvbiBvZiB7QGxpbmsgR2VuaWVNZXNzYWdlU2NoZW1hfSB0aGF0IGRyb3BzIGV2ZXJ5XG4gKiB0dXJuLWxldmVsIGZpZWxkIChgaWRgLCBgc3RhdHVzYCwgYGNyZWF0ZWRfdGltZXN0YW1wYCxcbiAqIGBxdWVyeV9yZXN1bHRgLCAuLi4pIGFuZCB5aWVsZHMganVzdCB0aGUgcmVzcG9uc2UgcGF5bG9hZCBhcyBhXG4gKiBmbGF0IGBHZW5pZUF0dGFjaG1lbnRbXWAuIFBhcnNlcyB0aGUgc2FtZSB3aXJlIHNoYXBlIGFzXG4gKiB7QGxpbmsgR2VuaWVNZXNzYWdlU2NoZW1hfTsgbWlzc2luZyBgYXR0YWNobWVudHNgIGRlZmF1bHRzIHRvXG4gKiBgW11gIHNvIHRoZSBvdXRwdXQgaXMgYWx3YXlzIGFuIGFycmF5LlxuICpcbiAqIFVzZSB3aGVuIGNvbnN1bWVycyBvbmx5IGNhcmUgYWJvdXQgdGhlIG1vZGVsJ3MgcmVzcG9uc2VcbiAqIGF0dGFjaG1lbnRzIGFuZCBub3QgdGhlIHN1cnJvdW5kaW5nIG1lc3NhZ2UgZW52ZWxvcGUuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVJlc3BvbnNlU2NoZW1hID0gR2VuaWVNZXNzYWdlU2NoZW1hLnRyYW5zZm9ybSgobSkgPT4gbS5hdHRhY2htZW50cyA/PyBbXSk7XG4vKiogTm9ybWFsaXplZCBhdHRhY2htZW50IGFycmF5IGV4dHJhY3RlZCBmcm9tIGEgR2VuaWUgbWVzc2FnZSByZXNwb25zZS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVJlc3BvbnNlU2NoZW1hPjtcblxuLyoqXG4gKiBgR2VuaWVTcGFjZWAgd2lkZW5lZCB3aXRoIGFuIG9wdGlvbmFsIGBzZXJpYWxpemVkX3NwYWNlYCBmaWVsZFxuICogY2FycnlpbmcgYSBKU09OLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3BhY2UncyBmdWxsXG4gKiBkZWZpbml0aW9uIChjYXRhbG9ncywgc2NoZW1hcywgdGFibGVzLCBzYW1wbGUgcXVlc3Rpb25zLCBwcm9tcHRzLFxuICogZXRjLikgYXMgZXhwb3J0ZWQgYnkgdGhlIHdvcmtzcGFjZSBleHBvcnQgZW5kcG9pbnQuXG4gKlxuICogVGhlIGJhc2UgU0RLIHNoYXBlIChgZGVzY3JpcHRpb25gLCBgc3BhY2VfaWRgLCBgdGl0bGVgLFxuICogYHdhcmVob3VzZV9pZGApIGNvdmVycyB0aGUgZGlyZWN0b3J5LWxpc3Rpbmcgc3VyZmFjZSAtIGVub3VnaCB0b1xuICogcm91dGUgYSBjaGF0LiBgc2VyaWFsaXplZF9zcGFjZWAgaXMgb3B0LWluIHNvIGNhbGxlcnMgdGhhdCBuZWVkXG4gKiB0aGUgZnVsbCBzcGFjZSBzY2hlbWEgKGUuZy4gdG8gc2VlZCBhIHN5c3RlbSBwcm9tcHQgb3IgdG8gc2hpcFxuICogdGhlIGRlZmluaXRpb24gdG8gYW4gYWdlbnQpIGNhbiBhdHRhY2ggaXQgd2l0aG91dCBhIHNlY29uZCB0eXBlLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVTcGFjZVNjaGVtYSA9IFNES0dlbmllU3BhY2VTY2hlbWEuZXh0ZW5kKHtcbiAgc2VyaWFsaXplZF9zcGFjZTogelxuICAgIC5zdHJpbmcoKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlc2NyaWJlKFxuICAgICAgXCJUaGUgY29udGVudHMgb2YgdGhlIEdlbmllIFNwYWNlIGluIHNlcmlhbGl6ZWQgc3RyaW5nIGZvcm0uIFRoaXMgZmllbGQgaXMgZXhjbHVkZWQgaW4gTGlzdCBHZW5pZSBzcGFjZXMgcmVzcG9uc2VzLiBUaGlzIGZpZWxkIHByb3ZpZGVzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIEpTT04gc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUgc3BhY2UncyBsYXlvdXQgYW5kIGNvbXBvbmVudHMuXCIsXG4gICAgKSxcbn0pO1xuLyoqIEdlbmllIHNwYWNlIG1ldGFkYXRhIHdpdGggdGhlIGlkZW50aWZpZXJzIHJlcXVpcmVkIGJ5IGNoYXQgY29uc3VtZXJzLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVTcGFjZSA9IHouaW5mZXI8dHlwZW9mIEdlbmllU3BhY2VTY2hlbWE+O1xuXG4vKiogUmVxdWVzdCBhY2NlcHRlZCBieSB0aGUgR0EgR2VuaWUgc3BhY2UgY3JlYXRlIGVuZHBvaW50LiAqL1xuZXhwb3J0IGNvbnN0IENyZWF0ZUdlbmllU3BhY2VSZXF1ZXN0U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB3YXJlaG91c2VfaWQ6IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKS5kZXNjcmliZShcIkFzc29jaWF0ZWQgU1FMIHdhcmVob3VzZSBJRC5cIiksXG4gICAgc2VyaWFsaXplZF9zcGFjZTogei5zdHJpbmcoKS50cmltKCkubWluKDEpLmRlc2NyaWJlKFwiU2VyaWFsaXplZCBHZW5pZSBzcGFjZSBkZWZpbml0aW9uLlwiKSxcbiAgICB0aXRsZTogei5zdHJpbmcoKS50cmltKCkubWluKDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJHZW5pZSBzcGFjZSB0aXRsZS5cIiksXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiR2VuaWUgc3BhY2UgZGVzY3JpcHRpb24uXCIpLFxuICAgIHBhcmVudF9wYXRoOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkub3B0aW9uYWwoKS5kZXNjcmliZShcIlBhcmVudCB3b3Jrc3BhY2UgZm9sZGVyLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIkdBIEdlbmllIHNwYWNlIGNyZWF0aW9uIHJlcXVlc3QuXCIpO1xuXG4vKiogR0EgR2VuaWUgc3BhY2UgY3JlYXRpb24gcmVxdWVzdC4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZUdlbmllU3BhY2VSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgQ3JlYXRlR2VuaWVTcGFjZVJlcXVlc3RTY2hlbWE+O1xuXG4vKiogRmVlZGJhY2sgcmVxdWVzdCBhY2NlcHRlZCBieSBHZW5pZSBjaGF0LW1vZGUgYW5kIGFnZW50LW1vZGUgbWVzc2FnZXMuICovXG5leHBvcnQgY29uc3QgR2VuaWVNZXNzYWdlRmVlZGJhY2tSZXF1ZXN0U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBzcGFjZV9pZDogei5zdHJpbmcoKS50cmltKCkubWluKDEpLmRlc2NyaWJlKFwiR2VuaWUgc3BhY2UgSUQuXCIpLFxuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS50cmltKCkubWluKDEpLmRlc2NyaWJlKFwiR2VuaWUgY29udmVyc2F0aW9uIElELlwiKSxcbiAgICBtZXNzYWdlX2lkOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkuZGVzY3JpYmUoXCJHZW5pZSBtZXNzYWdlIElELlwiKSxcbiAgICByYXRpbmc6IHouZW51bShbXCJQT1NJVElWRVwiLCBcIk5FR0FUSVZFXCIsIFwiTk9ORVwiXSkuZGVzY3JpYmUoXCJHZW5pZSBmZWVkYmFjayByYXRpbmcuXCIpLFxuICAgIGNvbW1lbnQ6IHouc3RyaW5nKCkudHJpbSgpLm1heCg1XzAwMCkub3B0aW9uYWwoKS5kZXNjcmliZShcIk9wdGlvbmFsIEdlbmllIGZlZWRiYWNrIGNvbW1lbnQuXCIpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiRmVlZGJhY2sgYXR0YWNoZWQgdG8gb25lIEdlbmllIGNvbnZlcnNhdGlvbiBtZXNzYWdlLlwiKTtcblxuLyoqIEZlZWRiYWNrIGF0dGFjaGVkIHRvIG9uZSBHZW5pZSBjb252ZXJzYXRpb24gbWVzc2FnZS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllTWVzc2FnZUZlZWRiYWNrUmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIEdlbmllTWVzc2FnZUZlZWRiYWNrUmVxdWVzdFNjaGVtYT47XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB0ZXJtaW5hbCBoZWxwZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBUZXJtaW5hbCBHZW5pZSBtZXNzYWdlIHN0YXR1c2VzLiBUaGUgcG9sbGluZyBsb29wIGluIHRoZSBjaGF0XG4gKiBkcml2ZXIgc3RvcHMgYXMgc29vbiBhcyB0aGUgbGF0ZXN0IG1lc3NhZ2UgaGFzIG9uZSBvZiB0aGVzZVxuICogc3RhdHVzZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBURVJNSU5BTF9TVEFUVVNFUyA9IFtcIkNPTVBMRVRFRFwiLCBcIkZBSUxFRFwiLCBcIkNBTkNFTExFRFwiXSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFRlcm1pbmFsU3RhdHVzU2NoZW1hID0gelxuICAuZW51bShURVJNSU5BTF9TVEFUVVNFUylcbiAgLmRlc2NyaWJlKFwiTWVzc2FnZSBzdGF0dXMgdGhhdCBlbmRzIGEgR2VuaWUgdHVybiBhbmQgcHJvZHVjZXMgYSBmaW5hbCByZXN1bHQgZXZlbnQuXCIpO1xuXG5leHBvcnQgdHlwZSBUZXJtaW5hbFN0YXR1cyA9IHouaW5mZXI8dHlwZW9mIFRlcm1pbmFsU3RhdHVzU2NoZW1hPjtcblxuLyoqIE5hcnJvdyBgTWVzc2FnZVN0YXR1cyB8IHVuZGVmaW5lZGAgdG8gYSB7QGxpbmsgVGVybWluYWxTdGF0dXN9LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVGVybWluYWxTdGF0dXMoczogTWVzc2FnZVN0YXR1cyB8IHVuZGVmaW5lZCk6IHMgaXMgVGVybWluYWxTdGF0dXMge1xuICByZXR1cm4gcyAhPT0gdW5kZWZpbmVkICYmIChURVJNSU5BTF9TVEFUVVNFUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXMocyk7XG59XG5cbi8qKlxuICogQ29udmVydCBhIHJhdyBHZW5pZSB3aXJlIHN0YXR1cyAoYEZFVENISU5HX01FVEFEQVRBYCxcbiAqIGBBU0tJTkdfQUlgLCBgRVhFQ1VUSU5HX1FVRVJZYCwgLi4uKSBpbnRvIGEgc2hvcnQsIHNlbnRlbmNlLWNhc2VkXG4gKiBsYWJlbCBzYWZlIHRvIGRyb3AgaW50byBhIFVJIHBpbGwuIEtub3duIHN0YXRlcyBnZXQgYSBjdXJhdGVkXG4gKiBsYWJlbDsgdW5rbm93biBzdGF0ZXMgZmFsbCBiYWNrIHRvIGBzdHJpbmdVdGlscy50b2tlbml6ZVdpdGhPcHRpb25zYFxuICogc28gbmV3IHN0YXRlcyBzdGlsbCByZW5kZXIgY2xlYW5seSB3aXRob3V0IGNvZGUgY2hhbmdlcy5cbiAqXG4gKiBQdXJlIChubyBOb2RlLW9ubHkgZGVwcyksIHNhZmUgZm9yIGJyb3dzZXIgYnVuZGxlcy4gQm90aCB0aGVcbiAqIEdlbmllIGFnZW50IChzZXJ2ZXIpIGFuZCBhbnkgVUkgdGhhdCBzdWJzY3JpYmVzIHRvIHN0YXR1cyBldmVudHNcbiAqIGNhbGwgdGhpcyBzbyBsYWJlbHMgc3RheSBpbiBsb2NrLXN0ZXAgYWNyb3NzIHRoZSB3aXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaHVtYW5pemVTdGF0dXMoc3RhdHVzOiBNZXNzYWdlU3RhdHVzKTogc3RyaW5nIHtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFwiRkVUQ0hJTkdfTUVUQURBVEFcIjpcbiAgICAgIHJldHVybiBcIkZldGNoaW5nIG1ldGFkYXRhXCI7XG4gICAgY2FzZSBcIkFTS0lOR19BSVwiOlxuICAgICAgcmV0dXJuIFwiQXNraW5nIEdlbmllXCI7XG4gICAgY2FzZSBcIkVYRUNVVElOR19RVUVSWVwiOlxuICAgICAgcmV0dXJuIFwiUnVubmluZyBTUUwgcXVlcnlcIjtcbiAgICBjYXNlIFwiRklMVEVSSU5HX0NPTlRFWFRcIjpcbiAgICAgIHJldHVybiBcIkZpbHRlcmluZyBjb250ZXh0XCI7XG4gICAgY2FzZSBcIlBFTkRJTkdfV0FSRUhPVVNFXCI6XG4gICAgICByZXR1cm4gXCJXYWl0aW5nIGZvciB3YXJlaG91c2VcIjtcbiAgICBjYXNlIFwiQ09NUExFVEVEXCI6XG4gICAgICByZXR1cm4gXCJDb21wbGV0ZWRcIjtcbiAgICBjYXNlIFwiRkFJTEVEXCI6XG4gICAgICByZXR1cm4gXCJGYWlsZWRcIjtcbiAgICBjYXNlIFwiQ0FOQ0VMTEVEXCI6XG4gICAgICByZXR1cm4gXCJDYW5jZWxsZWRcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFsuLi50b2tlbml6ZVdpdGhPcHRpb25zKHsgY2FwaXRhbGl6ZTogdHJ1ZSwgbG93ZXJDYXNlOiB0cnVlIH0sIHN0YXR1cyldLmpvaW4oXCIgXCIpO1xuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGF0dGFjaG1lbnQgdHlwZSBoZWxwZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEluc3BlY3QgYSB7QGxpbmsgR2VuaWVBdHRhY2htZW50fSBhbmQgcmV0dXJuIHRoZVxuICoge0BsaW5rIEF0dGFjaG1lbnRUeXBlfSBvZiBwYXlsb2FkIGl0IGNhcnJpZXMuIFJldHVybnMgdGhlIGZpcnN0XG4gKiBrbm93biBzdWItb2JqZWN0IHRoYXQncyBwcmVzZW50OyBpZiBub25lIG9mIHRoZSBrbm93biBvbmVzIGFyZVxuICogcG9wdWxhdGVkLCBmYWxscyBiYWNrIHRvIHRoZSBmaXJzdCBub24tYm9va2tlZXBpbmcga2V5XG4gKiAoZm9yd2FyZC1jb21wYXQgZm9yIHR5cGVzIHdlIGRvbid0IG1vZGVsIHlldCksIGVsc2UgYFwidW5rbm93blwiYC5cbiAqXG4gKiBIb25vcnMgYSBwcmUtc2V0IGBhdHRhY2htZW50X3R5cGVgIGlmIG9uZSBpcyBhbHJlYWR5IG9uIHRoZVxuICogdmFsdWUsIHNvIHRoaXMgaXMgaWRlbXBvdGVudCBhY3Jvc3MgcmUtZGV0ZWN0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdEF0dGFjaG1lbnRUeXBlKGF0dDogR2VuaWVBdHRhY2htZW50KTogQXR0YWNobWVudFR5cGUge1xuICBpZiAoYXR0LmF0dGFjaG1lbnRfdHlwZSkgcmV0dXJuIGF0dC5hdHRhY2htZW50X3R5cGU7XG4gIGlmIChhdHQucXVlcnkpIHJldHVybiBcInF1ZXJ5XCI7XG4gIGlmIChhdHQudGV4dCkgcmV0dXJuIFwidGV4dFwiO1xuICBpZiAoYXR0LnN1Z2dlc3RlZF9xdWVzdGlvbnMpIHJldHVybiBcInN1Z2dlc3RlZF9xdWVzdGlvbnNcIjtcbiAgaWYgKGF0dC52aXopIHJldHVybiBcInZpelwiO1xuICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXMoYXR0KSkge1xuICAgIGlmIChrICE9PSBcImF0dGFjaG1lbnRfaWRcIiAmJiBrICE9PSBcImF0dGFjaG1lbnRfdHlwZVwiKSByZXR1cm4gaztcbiAgfVxuICByZXR1cm4gXCJ1bmtub3duXCI7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gR2VuaWVDaGF0IGV2ZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBXaGVyZSBvbiB0aGUgd2lyZSBhbiBldmVudCB3YXMgb2JzZXJ2ZWQuIFNwcmVhZCBpbnRvIGV2ZXJ5XG4gKiBhdHRhY2htZW50LXNjb3BlZCBldmVudCBwYXlsb2FkIHNvIHN1YnNjcmliZXJzIGNhbiByb3V0ZSwgbG9nLFxuICogb3IgY29ycmVsYXRlIHdpdGhvdXQgcmUtd2Fsa2luZyB0aGUgbWVzc2FnZS5cbiAqXG4gKiBGaWVsZHM6XG4gKiAgIC0gYHNwYWNlX2lkYDogdGhlIEdlbmllIHNwYWNlIHRoZSBjb252ZXJzYXRpb24gbGl2ZXMgaW4uXG4gKiAgIC0gYGNvbnZlcnNhdGlvbl9pZGA6IGNvbnZlcnNhdGlvbiBpZCBvbmNlIEdlbmllIGhhcyBhc3NpZ25lZCBvbmUuXG4gKiAgIC0gYG1lc3NhZ2VfaWRgOiBHZW5pZSBtZXNzYWdlIGlkIGZvciB0aGUgYWN0aXZlIHR1cm4uXG4gKiAgIC0gYGF0dGFjaG1lbnRfaWRgOiBhdHRhY2htZW50IHRoZSBldmVudCBjYW1lIGZyb20uIE9wdGlvbmFsXG4gKiAgICAgYmVjYXVzZSBHZW5pZSBzb21ldGltZXMgZW1pdHMgYW4gYW5vbnltb3VzIG1haW4tYW5zd2VyXG4gKiAgICAgYXR0YWNobWVudCB3aXRob3V0IGFuIGlkOyB0aG9zZSBzdGlsbCBnZXQgZXZlbnRzLCBqdXN0IHdpdGhcbiAqICAgICBgYXR0YWNobWVudF9pZGAgdW5kZWZpbmVkLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHNwYWNlX2lkOiB6LnN0cmluZygpLFxuICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbWVzc2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBhdHRhY2htZW50X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBDb252ZXJzYXRpb24sIG1lc3NhZ2UsIGFuZCBhdHRhY2htZW50IGNvb3JkaW5hdGVzIHNoYXJlZCBieSBhdHRhY2htZW50IGV2ZW50cy4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQ2hhdExvY2F0aW9uID0gei5pbmZlcjx0eXBlb2YgR2VuaWVDaGF0TG9jYXRpb25TY2hlbWE+O1xuXG4vKipcbiAqIExpZmVjeWNsZSBldmVudDogdGhlIHF1ZXN0aW9uIHRoaXMgdHVybiBpcyBhc2tpbmcgR2VuaWUuIEZpcmVzXG4gKiBvbmNlIHBlciBgZ2VuaWVFdmVudENoYXRgIGNhbGwsIHRoZSBmaXJzdCB0aW1lIHRoZSB1bmRlcmx5aW5nXG4gKiBgZ2VuaWVDaGF0YCBsb29wIHlpZWxkcyBhIGBHZW5pZU1lc3NhZ2VgLiBDYXJyaWVzIHRoZSBwcm9tcHRcbiAqIHRleHQgR2VuaWUgZWNob2VkIGJhY2sgb24gYG1lc3NhZ2UuY29udGVudGAgYW5kIHRoZSBhc3NpZ25lZFxuICogYG1lc3NhZ2VfaWRgIHNvIHN1YnNjcmliZXJzIGNhbiBncm91cCBldmVyeSBzdWJzZXF1ZW50IGV2ZW50XG4gKiBmb3IgdGhpcyB0dXJuIHVuZGVyIG9uZSBzdGFibGUga2V5LiBgY29udmVyc2F0aW9uX2lkYCBpc1xuICogcG9wdWxhdGVkIGZvciBib3RoIG9wZW5pbmcgYW5kIGZvbGxvdy11cCB0dXJucyAoR2VuaWUgYXNzaWduc1xuICogaXQgb24gYHN0YXJ0Q29udmVyc2F0aW9uYCkuXG4gKlxuICogRGVmZXJyZWQgKGluc3RlYWQgb2YgZmlyZWQgc3luY2hyb25vdXNseSBvbiBlbnRyeSkgc28gdGhlXG4gKiBgbWVzc2FnZV9pZGAgaXMgYXZhaWxhYmxlIHdoZW4gdGhlIGV2ZW50IGxhbmRzIC0gdGhhdCBvbmUgcm91bmRcbiAqIHRyaXAgY29zdHMgfjIwMG1zIGJ1dCBsZXRzIFVJcyByZW5kZXIgcXVlc3Rpb24gLyB0aGlua2luZyAvXG4gKiBxdWVyeSAvIHRleHQgYXMgYSBzaW5nbGUgZ3JvdXBlZCBibG9jayBwZXIgR2VuaWUgY2FsbCBpbnN0ZWFkXG4gKiBvZiBhIGZsYXQgc3RyZWFtLlxuICpcbiAqIGBhdHRhY2htZW50X2lkYCBpcyBpbnRlbnRpb25hbGx5IGFic2VudCAtIHF1ZXN0aW9ucyBhcmUgdHVyblxuICogc2NvcGVkLCBub3QgYXR0YWNobWVudCBzY29wZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBRdWVzdGlvbkV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEub21pdCh7XG4gIGF0dGFjaG1lbnRfaWQ6IHRydWUsXG59KS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJxdWVzdGlvblwiKSxcbiAgY29udGVudDogei5zdHJpbmcoKSxcbn0pO1xuLyoqIEluaXRpYWwgZXZlbnQgY2FycnlpbmcgdGhlIHVzZXIncyBxdWVzdGlvbiBhZnRlciBHZW5pZSBhc3NpZ25zIGEgbWVzc2FnZSBpZC4gKi9cbmV4cG9ydCB0eXBlIFF1ZXN0aW9uRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBRdWVzdGlvbkV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBMaWZlY3ljbGUgZXZlbnQ6IHJhdyBgR2VuaWVNZXNzYWdlYCBzbmFwc2hvdCBmb3IgdGhlIGFjdGl2ZVxuICogdHVybi4gRmlyZXMgb25jZSBwZXIgcG9sbCB5aWVsZC4gVGhlIGZ1bGwgbWVzc2FnZSBzaGFwZVxuICogKGluY2x1ZGluZyB0aGUgd2lkZW5lZCB0aG91Z2h0IC8gcmVnZW4gLyBhdHRhY2htZW50LXR5cGVcbiAqIGZpZWxkcykgaXMgZXhwb3NlZCBpbmxpbmUgYXMgYG1lc3NhZ2VgOyBjb25zdW1lcnMgbmFycm93IG9uXG4gKiBgZXZlbnQudHlwZSA9PT0gXCJtZXNzYWdlXCJgIGFuZCByZWFjaCBmb3IgYGV2ZW50Lm1lc3NhZ2VgLlxuICovXG5leHBvcnQgY29uc3QgTWVzc2FnZUV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEub21pdCh7XG4gIGF0dGFjaG1lbnRfaWQ6IHRydWUsXG59KS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJtZXNzYWdlXCIpLFxuICBtZXNzYWdlOiBHZW5pZU1lc3NhZ2VTY2hlbWEsXG59KTtcbi8qKiBSYXcgR2VuaWUgbWVzc2FnZSBzbmFwc2hvdCBlbWl0dGVkIG9uIGV2ZXJ5IHBvbGwgaXRlcmF0aW9uLiAqL1xuZXhwb3J0IHR5cGUgTWVzc2FnZUV2ZW50ID0gei5pbmZlcjx0eXBlb2YgTWVzc2FnZUV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBUb3AtbGV2ZWwgYG1lc3NhZ2Uuc3RhdHVzYCB0cmFuc2l0aW9uZWQuIEZpcmVzIGZvciBldmVyeVxuICogZGlzdGluY3Qgc3RhdHVzIHNlZW4gb24gdGhlIHdpcmUgKGUuZy4gYFNVQk1JVFRFRGAgLT5cbiAqIGBGSUxURVJJTkdfQ09OVEVYVGAgLT4gYEFTS0lOR19BSWAgLT4gYFBFTkRJTkdfV0FSRUhPVVNFYCAtPlxuICogYEFTS0lOR19BSWAgLT4gYENPTVBMRVRFRGApLlxuICovXG5leHBvcnQgY29uc3QgU3RhdHVzRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5vbWl0KHtcbiAgYXR0YWNobWVudF9pZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInN0YXR1c1wiKSxcbiAgc3RhdHVzOiBNZXNzYWdlU3RhdHVzU2NoZW1hLFxuICBwcmV2aW91c19zdGF0dXM6IE1lc3NhZ2VTdGF0dXNTY2hlbWEub3B0aW9uYWwoKSxcbn0pO1xuLyoqIE1lc3NhZ2Utc3RhdHVzIHRyYW5zaXRpb24sIGluY2x1ZGluZyB0aGUgcHJldmlvdXMgc3RhdHVzIHdoZW4gYXZhaWxhYmxlLiAqL1xuZXhwb3J0IHR5cGUgU3RhdHVzRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBTdGF0dXNFdmVudFNjaGVtYT47XG5cbi8qKlxuICogQSBuZXcgYXR0YWNobWVudCBzbG90IGFwcGVhcmVkIGluIGBtZXNzYWdlLmF0dGFjaG1lbnRzW11gLlxuICogRmlyZXMgZXhhY3RseSBvbmNlIHBlciBhdHRhY2htZW50IChtYXRjaGVkIGJ5IGBhdHRhY2htZW50X2lkYCxcbiAqIHBvc2l0aW9uYWxseSBmb3IgYW5vbnltb3VzIGF0dGFjaG1lbnRzKSB0aGUgZmlyc3QgdGltZSB3ZSBzZWVcbiAqIGl0LiBUaGUgc2xvdCdzIHBheWxvYWQga2luZCBsYW5kcyBpbiBgYXR0YWNobWVudF90eXBlYCBzbyB0aGVcbiAqIG91dGVyIGB0eXBlYCBkaXNjcmltaW5hdG9yIHN0YXlzIHVuYW1iaWd1b3VzLlxuICovXG5leHBvcnQgY29uc3QgQXR0YWNobWVudEV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwiYXR0YWNobWVudFwiKSxcbiAgaW5kZXg6IHoubnVtYmVyKCksXG4gIGF0dGFjaG1lbnRfdHlwZTogQXR0YWNobWVudFR5cGVTY2hlbWEsXG59KTtcbi8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBuZXcgdHlwZWQgYXR0YWNobWVudCBhcHBlYXJzIG9uIHRoZSBtZXNzYWdlLiAqL1xuZXhwb3J0IHR5cGUgQXR0YWNobWVudEV2ZW50ID0gei5pbmZlcjx0eXBlb2YgQXR0YWNobWVudEV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBBIG5ldyByZWFzb25pbmcgc3RlcCBhcHBlYXJlZCBvbiBhIHF1ZXJ5IGF0dGFjaG1lbnRcbiAqIChgYXR0YWNobWVudHNbaV0ucXVlcnkudGhvdWdodHNbaV1gKS4gRGVkdXBsaWNhdGVkIHBlclxuICogYCh0aG91Z2h0X3R5cGUsIGNvbnRlbnQpYCB0dXBsZSB3aXRoaW4gYW4gYXR0YWNobWVudCBzb1xuICogc3Vic2NyaWJlcnMgZG9uJ3Qgc2VlIHRoZSBzYW1lIHRob3VnaHQgbXVsdGlwbGUgdGltZXMgLSBHZW5pZVxuICogc29tZXRpbWVzIG11dGF0ZXMgZXhpc3RpbmcgdGhvdWdodCBzbG90cyBpbiBwbGFjZSwgc28gdGhlIGRpZmZcbiAqIGlzIHZhbHVlLWJhc2VkIHJhdGhlciB0aGFuIHBvc2l0aW9uYWwuXG4gKi9cbmV4cG9ydCBjb25zdCBUaGlua2luZ0V2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwidGhpbmtpbmdcIiksXG4gIHRleHQ6IHouc3RyaW5nKCksXG4gIHRob3VnaHRfdHlwZTogR2VuaWVUaG91Z2h0VHlwZVNjaGVtYSxcbn0pO1xuLyoqIEluY3JlbWVudGFsIEdlbmllIHJlYXNvbmluZyBldmVudCBkZXJpdmVkIGZyb20gcXVlcnkgdGhvdWdodHMuICovXG5leHBvcnQgdHlwZSBUaGlua2luZ0V2ZW50ID0gei5pbmZlcjx0eXBlb2YgVGhpbmtpbmdFdmVudFNjaGVtYT47XG5cbi8qKlxuICogQSB0ZXh0LWF0dGFjaG1lbnQgYGNvbnRlbnRgIGZpZWxkIGFwcGVhcmVkIG9yIGNoYW5nZWRcbiAqIChgYXR0YWNobWVudHNbaV0udGV4dC5jb250ZW50YCkuIEZpcmVzIHdoZW5ldmVyIHRoZSBzbmFwc2hvdFxuICogdmFsdWUgZGlmZmVycyBmcm9tIHRoZSBwcmV2aW91cyBvbmUgZm9yIHRoZSBzYW1lIGF0dGFjaG1lbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBUZXh0RXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJ0ZXh0XCIpLFxuICB0ZXh0OiB6LnN0cmluZygpLFxufSk7XG4vKiogTmFycmF0aXZlIGFuc3dlciBmcmFnbWVudCBlbWl0dGVkIGZyb20gYSBHZW5pZSB0ZXh0IGF0dGFjaG1lbnQuICovXG5leHBvcnQgdHlwZSBUZXh0RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBUZXh0RXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIFNRTCB3YXMgZmluYWxpemVkIG9uIGEgcXVlcnkgYXR0YWNobWVudFxuICogKGBhdHRhY2htZW50c1tpXS5xdWVyeS5xdWVyeWApLiBGaXJlcyBvbmNlIHdoZW4gdGhlIFNRTCBzdHJpbmdcbiAqIHRyYW5zaXRpb25zIGZyb20gdW5kZWZpbmVkIHRvIGRlZmluZWQsIGFuZCBhZ2FpbiBpZiBHZW5pZSBldmVyXG4gKiByZXdyaXRlcyBpdC4gYHRpdGxlYCBhbmQgYGRlc2NyaXB0aW9uYCBhcmUgZGVub3JtYWxpc2VkIG9mZiB0aGVcbiAqIGF0dGFjaG1lbnQncyBgcXVlcnkudGl0bGVgIC8gYHF1ZXJ5LmRlc2NyaXB0aW9uYCBzbyBjb25zdW1lcnNcbiAqIGNhbiBsYWJlbCB0aGUgU1FMIHBpbGwgd2l0aG91dCByZS13YWxraW5nIHRoZSBtZXNzYWdlLlxuICovXG5leHBvcnQgY29uc3QgUXVlcnlFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInF1ZXJ5XCIpLFxuICBzcWw6IHouc3RyaW5nKCksXG4gIHRpdGxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBGaW5hbGl6ZWQgb3IgcmV3cml0dGVuIFNRTCBlbWl0dGVkIGZvciBhIEdlbmllIHF1ZXJ5IGF0dGFjaG1lbnQuICovXG5leHBvcnQgdHlwZSBRdWVyeUV2ZW50ID0gei5pbmZlcjx0eXBlb2YgUXVlcnlFdmVudFNjaGVtYT47XG5cbi8qKlxuICogU1FMIHdhcyBzdWJtaXR0ZWQgdG8gYSBTUUwgd2FyZWhvdXNlIGFuZCBhIHN0YXRlbWVudCBpZCB3YXNcbiAqIGFzc2lnbmVkIChgYXR0YWNobWVudHNbaV0ucXVlcnkuc3RhdGVtZW50X2lkYCkuIEZpcmVzIHdoZW4gdGhlXG4gKiBzdGF0ZW1lbnQgaWQgdHJhbnNpdGlvbnMgZnJvbSB1bmRlZmluZWQgdG8gZGVmaW5lZCAtIHRoaXMgaXMgdGhlXG4gKiBwb2ludCBhdCB3aGljaCBgY2xpZW50LnN0YXRlbWVudEV4ZWN1dGlvbi5nZXRTdGF0ZW1lbnQoeyBzdGF0ZW1lbnRfaWQgfSlgXG4gKiBiZWNvbWVzIGEgdmFsaWQgY2FsbC5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0YXRlbWVudEV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwic3RhdGVtZW50XCIpLFxuICBzdGF0ZW1lbnRfaWQ6IHouc3RyaW5nKCksXG59KTtcbi8qKiBFdmVudCBpbmRpY2F0aW5nIHRoYXQgYSBxdWVyeSByZWNlaXZlZCBhbiBleGVjdXRhYmxlIHN0YXRlbWVudCBpZC4gKi9cbmV4cG9ydCB0eXBlIFN0YXRlbWVudEV2ZW50ID0gei5pbmZlcjx0eXBlb2YgU3RhdGVtZW50RXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIFJvdyBjb3VudCBmb3IgYSBxdWVyeSBhdHRhY2htZW50J3MgcmVzdWx0IGNoYW5nZWRcbiAqIChgYXR0YWNobWVudHNbaV0ucXVlcnkucXVlcnlfcmVzdWx0X21ldGFkYXRhLnJvd19jb3VudGApLiBGaXJlc1xuICogb24gZXZlcnkgY2hhbmdlLCBpbmNsdWRpbmcgdGhlIGluaXRpYWwgYHVuZGVmaW5lZCAtPiAwYCBhbmQgdGhlXG4gKiBsYXRlciBgMCAtPiBOYCBvbmNlIHRoZSB3YXJlaG91c2UgZmluaXNoZXMgZXhlY3V0aW9uLlxuICovXG5leHBvcnQgY29uc3QgUm93c0V2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwicm93c1wiKSxcbiAgcm93X2NvdW50OiB6Lm51bWJlcigpLFxuICBwcmV2aW91c19yb3dfY291bnQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgc3RhdGVtZW50X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBSb3ctY291bnQgdHJhbnNpdGlvbiBmb3IgYSBHZW5pZSBxdWVyeSByZXN1bHQuICovXG5leHBvcnQgdHlwZSBSb3dzRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBSb3dzRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIEdlbmllIHByb2R1Y2VkIGEgZm9sbG93LXVwIHN1Z2dlc3RlZC1xdWVzdGlvbnMgbGlzdFxuICogKGBhdHRhY2htZW50c1tpXS5zdWdnZXN0ZWRfcXVlc3Rpb25zLnF1ZXN0aW9uc1tdYCkuIEZpcmVzIG9uY2VcbiAqIHdoZW4gdGhlIGxpc3QgYXBwZWFycywgYW5kIGFnYWluIGlmIEdlbmllIHJld3JpdGVzIGl0LlxuICovXG5leHBvcnQgY29uc3QgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJzdWdnZXN0ZWRfcXVlc3Rpb25zXCIpLFxuICBxdWVzdGlvbnM6IHouYXJyYXkoei5zdHJpbmcoKSksXG59KTtcbi8qKiBGb2xsb3ctdXAgcXVlc3Rpb24gbGlzdCBlbWl0dGVkIHdoZW4gR2VuaWUgYWRkcyBvciByZXdyaXRlcyBzdWdnZXN0aW9ucy4gKi9cbmV4cG9ydCB0eXBlIFN1Z2dlc3RlZFF1ZXN0aW9uc0V2ZW50ID0gei5pbmZlcjx0eXBlb2YgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIFRoZSBhY3RpdmUgdHVybiByZWFjaGVkIGEgdGVybWluYWwgc3RhdHVzLiBBbHdheXMgZmlyZXMgb25jZVxuICogcGVyIHR1cm4gKGltbWVkaWF0ZWx5IGFmdGVyIHRoZSB0ZXJtaW5hbCBgbWVzc2FnZWAgZXZlbnQpLlxuICogQ2FycmllcyB0aGUgZmluYWwgYEdlbmllTWVzc2FnZWAgc25hcHNob3QgaW5saW5lIHNvIHN1YnNjcmliZXJzXG4gKiBkb24ndCBuZWVkIHRvIGtlZXAgdGhlaXIgb3duIGNvcHkgb2YgdGhlIGxhc3QgbWVzc2FnZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VsdEV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEub21pdCh7XG4gIGF0dGFjaG1lbnRfaWQ6IHRydWUsXG59KS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJyZXN1bHRcIiksXG4gIHN0YXR1czogVGVybWluYWxTdGF0dXNTY2hlbWEsXG4gIG1lc3NhZ2U6IEdlbmllTWVzc2FnZVNjaGVtYSxcbn0pO1xuLyoqIEZpbmFsIGV2ZW50IGZvciBhIEdlbmllIHR1cm4sIGNhcnJ5aW5nIGl0cyB0ZXJtaW5hbCBzdGF0dXMgYW5kIG1lc3NhZ2Ugc25hcHNob3QuICovXG5leHBvcnQgdHlwZSBSZXN1bHRFdmVudCA9IHouaW5mZXI8dHlwZW9mIFJlc3VsdEV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBEaXNjcmltaW5hdGVkIHVuaW9uIHlpZWxkZWQgYnkgYGdlbmllRXZlbnRDaGF0YC4gRWFjaCB2YXJpYW50XG4gKiBpcyBhIHNpbmdsZSBmbGF0IG9iamVjdCB3aXRoIGB0eXBlYCBhcyB0aGUgZGlzY3JpbWluYXRvciBhbmRcbiAqIHRoZSBwYXlsb2FkIGZpZWxkcyBob2lzdGVkIGRpcmVjdGx5IHRvIHRoZSB0b3AgbGV2ZWwgLSBub1xuICogYHBheWxvYWRgIHdyYXBwZXIuIENvbnN1bWVycyBuYXJyb3cgb24gYHR5cGVgIGFuZCByZWFkIGZpZWxkc1xuICogaW5saW5lOlxuICpcbiAqIEBleGFtcGxlXG4gKiBmb3IgYXdhaXQgKGNvbnN0IGV2ZW50IG9mIGdlbmllRXZlbnRDaGF0KHNwYWNlSWQsIFwiVG9wIHN0b3Jlcz9cIikpIHtcbiAqICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gKiAgICAgY2FzZSBcInRoaW5raW5nXCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhldmVudC50aG91Z2h0X3R5cGUsIGV2ZW50LnRleHQpO1xuICogICAgICAgYnJlYWs7XG4gKiAgICAgY2FzZSBcInJlc3VsdFwiOlxuICogICAgICAgY29uc29sZS5sb2coXCJkb25lOlwiLCBldmVudC5zdGF0dXMpO1xuICogICAgICAgYnJlYWs7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBTdHJlYW0gb3JkZXIgcGVyIHR1cm46XG4gKlxuICogICAxLiBgcXVlc3Rpb25gLCBlbWl0dGVkIHdpdGggdGhlIGZpcnN0IGBtZXNzYWdlYCB5aWVsZCAoZGVmZXJyZWQgc29cbiAqICAgICAgdGhlIGFzc2lnbmVkIGBtZXNzYWdlX2lkYCBpcyBhdmFpbGFibGUpLCBjYXJyeWluZyB0aGUgcHJvbXB0XG4gKiAgICAgIHRoaXMgdHVybiBzZW50IHRvIEdlbmllLlxuICogICAyLiBgbWVzc2FnZWAgZm9yIGV2ZXJ5IHBvbGwgeWllbGQgKHJhdyBgR2VuaWVNZXNzYWdlYCBvblxuICogICAgICBgZXZlbnQubWVzc2FnZWApLlxuICogICAzLiBBbnkgZGVyaXZlZCBldmVudHMgdGhlIHNuYXBzaG90IGRpZmYgcHJvZHVjZWQgKGBzdGF0dXNgLFxuICogICAgICBgYXR0YWNobWVudGAsIGB0aGlua2luZ2AsIGB0ZXh0YCwgYHF1ZXJ5YCwgYHN0YXRlbWVudGAsXG4gKiAgICAgIGByb3dzYCwgYHN1Z2dlc3RlZF9xdWVzdGlvbnNgKSBpbiB0aGF0IGZpeGVkIG9yZGVyLlxuICogICA0LiBPbiB0aGUgdGVybWluYWwgc25hcHNob3QsIGEgZmluYWwgYHJlc3VsdGAgZXZlbnQuXG4gKlxuICogRXJyb3JzIHByb3BhZ2F0ZSB2aWEgdGhlIGdlbmVyYXRvciB0aHJvd2luZyAoYHRyeWAvYGNhdGNoYCB0aGVcbiAqIGBmb3IgYXdhaXRgKSwgbm90IHZpYSBhbiBgZXJyb3JgIHZhcmlhbnQgb24gdGhpcyB1bmlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQ2hhdEV2ZW50U2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgUXVlc3Rpb25FdmVudFNjaGVtYSxcbiAgTWVzc2FnZUV2ZW50U2NoZW1hLFxuICBTdGF0dXNFdmVudFNjaGVtYSxcbiAgQXR0YWNobWVudEV2ZW50U2NoZW1hLFxuICBUaGlua2luZ0V2ZW50U2NoZW1hLFxuICBUZXh0RXZlbnRTY2hlbWEsXG4gIFF1ZXJ5RXZlbnRTY2hlbWEsXG4gIFN0YXRlbWVudEV2ZW50U2NoZW1hLFxuICBSb3dzRXZlbnRTY2hlbWEsXG4gIFN1Z2dlc3RlZFF1ZXN0aW9uc0V2ZW50U2NoZW1hLFxuICBSZXN1bHRFdmVudFNjaGVtYSxcbl0pO1xuLyoqIE9yZGVyZWQgZXZlbnQgdW5pb24geWllbGRlZCBieSBgZ2VuaWVFdmVudENoYXRgOyBmYWlsdXJlcyBhcmUgdGhyb3duLCBub3QgZW1pdHRlZC4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQ2hhdEV2ZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVDaGF0RXZlbnRTY2hlbWE+O1xuXG4vKiogRGlzY3JpbWluYXRvciB0eXBlIGZvciB7QGxpbmsgR2VuaWVDaGF0RXZlbnR9LiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVDaGF0RXZlbnRUeXBlID0gR2VuaWVDaGF0RXZlbnRbXCJ0eXBlXCJdO1xuXG4vKipcbiAqIEZpZWxkIHNldCBmb3IgYSBnaXZlbiB7QGxpbmsgR2VuaWVDaGF0RXZlbnRUeXBlfSAtIHRoZSB2YXJpYW50XG4gKiB3aXRoIHRoZSBgdHlwZWAgZGlzY3JpbWluYXRvciBzdHJpcHBlZC4gVXNlZCBieSBkZXRlY3RvcnMgaW5cbiAqIGBldmVudC50c2Agc28gZWFjaCBkZXRlY3RvciByZXR1cm5zIGp1c3QgdGhlIHBheWxvYWQgZmllbGRzIGFuZFxuICogdGhlIG9yY2hlc3RyYXRvciBzdGFtcHMgYHR5cGVgIGF0IHlpZWxkIHRpbWUuXG4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQ2hhdEV2ZW50RmllbGRzPFQgZXh0ZW5kcyBHZW5pZUNoYXRFdmVudFR5cGU+ID0gT21pdDxcbiAgRXh0cmFjdDxHZW5pZUNoYXRFdmVudCwgeyB0eXBlOiBUIH0+LFxuICBcInR5cGVcIlxuPjtcbiJdfQ==
542
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuaWUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuaWUtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0NHO0FBRUgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUN4QixPQUFPLEtBQUssVUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLGtGQUFrRjtBQUNsRixpRkFBaUY7QUFDakYsNkRBQTZEO0FBQzdELE1BQU0sRUFDSixxQkFBcUIsRUFBRSx3QkFBd0IsRUFDL0Msa0JBQWtCLEVBQUUscUJBQXFCLEVBQ3pDLDBCQUEwQixFQUFFLDZCQUE2QixFQUN6RCxnQkFBZ0IsRUFBRSxtQkFBbUIsR0FDdEMsR0FBRyxVQUFVLENBQUM7QUFVZix3RkFBd0Y7QUFDeEYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixDQUFDO0FBRWxFLHlFQUF5RTtBQUV6RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQztLQUNwQyxNQUFNLEVBQUU7S0FDUixRQUFRLENBQUMsa0RBQWtELENBQUMsQ0FBQztBQUloRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3pDLFlBQVksRUFBRSxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsOENBQThDLENBQUM7SUFDN0YsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsMENBQTBDLENBQUM7Q0FDekUsQ0FBQyxDQUFDO0FBSUgsNkVBQTZFO0FBRTdFOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLE1B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bEIsaUJBQWlCO0lBQ2pCLHFCQUFxQjtJQUNyQixtQkFBbUI7SUFDbkIsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixvQkFBb0I7SUFDcEIsZUFBZTtJQUNmLDZCQUE2QjtJQUM3QixpQkFBaUI7Q0FDbEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBXaXJlLWZvcm1hdCB6b2Qgc2NoZW1hcyArIHR5cGVzIGFuZCBoaWdoLWxldmVsIGV2ZW50IHZvY2FidWxhcnlcbiAqIGZvciB0aGUgR2VuaWUgY2hhdCBkcml2ZXIuXG4gKlxuICogVHdvIHJlbGF0ZWQgbGF5ZXJzIGxpdmUgaGVyZTpcbiAqXG4gKiAgIDEuIEdlbmllIHdpcmUgc2hhcGVzIGRlcml2ZWQgZnJvbSB0aGlzIHBhY2thZ2UncyBvd24gZ2VuZXJhdGVkXG4gKiAgICAgIGBkYXNoYm9hcmRzYCBzY2hlbWFzIChyZWdlbmVyYXRlZCBmcm9tIHRoZSB1cHN0cmVhbVxuICogICAgICBgQGRhdGFicmlja3Mvc2RrLWV4cGVyaW1lbnRhbGAgYGFwaXMvZGFzaGJvYXJkcy9tb2RlbC5kLnRzYFxuICogICAgICBieSB0aGUgZW5naW5lJ3MgY29kZWdlbiBvbiBzeW50aCkuIFdlIGV4dGVuZCB0aGUgU0RLIHNjaGVtYXMgd2hlcmUgR2VuaWVcbiAqICAgICAgc2hpcHMgZmllbGRzIG9uIHRoZSB3aXJlIHRoYXQgdGhlIFNESyBkb2Vzbid0IGN1cnJlbnRseSB0eXBlOlxuICpcbiAqICAgICAgICAtIGBHZW5pZU1lc3NhZ2UuYXV0b19yZWdlbmVyYXRlX2NvdW50OiBudW1iZXJgIChzdGFtcGVkXG4gKiAgICAgICAgICBvbiBldmVyeSB3aXJlIG1lc3NhZ2UsIG9taXR0ZWQgZnJvbSB0aGUgU0RLIHNoYXBlKS5cbiAqICAgICAgICAtIGBHZW5pZVF1ZXJ5QXR0YWNobWVudC50aG91Z2h0czogR2VuaWVUaG91Z2h0W11gICh0aGVcbiAqICAgICAgICAgIHN0cmVhbWVkIHJlYXNvbmluZyBwYXlsb2FkIHdpdGggYERFU0NSSVBUSU9OYCxcbiAqICAgICAgICAgIGBEQVRBX1NPVVJDSU5HYCwgYFNURVBTYCwgYW5kIGBVTkRFUlNUQU5ESU5HYCB0aG91Z2h0XG4gKiAgICAgICAgICBraW5kcykuXG4gKiAgICAgICAgLSBgR2VuaWVBdHRhY2htZW50LmF0dGFjaG1lbnRfdHlwZTogQXR0YWNobWVudFR5cGVgXG4gKiAgICAgICAgICAoYW4gb3B0aW9uYWwgZGlzY3JpbWluYXRvciBsaXRlcmFsIHNvIGNhbGxlcnMgY2FuXG4gKiAgICAgICAgICBgc3dpdGNoIChhdHQuYXR0YWNobWVudF90eXBlKWAgaW5zdGVhZCBvZiBwcm9iaW5nXG4gKiAgICAgICAgICB3aGljaCBzdWIta2V5IGlzIHBvcHVsYXRlZDsgY29tcHV0ZSBpdCB3aXRoXG4gKiAgICAgICAgICB7QGxpbmsgZGV0ZWN0QXR0YWNobWVudFR5cGV9KS5cbiAqXG4gKiAgIDIuIEV2ZW50IHZvY2FidWxhcnkgZm9yIHRoZSBoaWdoLWxldmVsIGBnZW5pZUV2ZW50Q2hhdGBcbiAqICAgICAgZHJpdmVyLiBFYWNoIGV2ZW50IGlzIGEgZmxhdCBgei5vYmplY3RgIHdpdGggYSBgdHlwZWBcbiAqICAgICAgbGl0ZXJhbCBkaXNjcmltaW5hdG9yIGFuZCBzbmFrZV9jYXNlIHBheWxvYWQgZmllbGRzIGhvaXN0ZWRcbiAqICAgICAgdG8gdGhlIHRvcCBsZXZlbCAobm8gYHBheWxvYWRgIHdyYXBwZXIpLiBFdmVudHMgdGhhdCBzaGFyZVxuICogICAgICB0aGUgYXR0YWNobWVudC1zY29wZWQgbG9jYXRpb24gdXNlXG4gKiAgICAgIHtAbGluayBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYX0gYXMgYSBiYXNlOyBldmVudHMgdGhhdFxuICogICAgICBkb24ndCBjYXJyeSBhbiBgYXR0YWNobWVudF9pZGAgKHN0YXR1cywgcmVzdWx0KSBvbWl0IGl0LlxuICogICAgICB7QGxpbmsgR2VuaWVDaGF0RXZlbnRTY2hlbWF9IGJ1bmRsZXMgdGhlIHZhcmlhbnRzIGludG8gb25lXG4gKiAgICAgIGRpc2NyaW1pbmF0ZWQgdW5pb24uXG4gKlxuICogUHVyZSB0eXBlczogbm8gcnVudGltZSBpbXBvcnRzIGJleW9uZCB6b2QgKyB0aGUgZ2VuZXJhdGVkXG4gKiBgZGFzaGJvYXJkc2Agc2NoZW1hcywgbm8gTm9kZS1vbmx5IGNvZGUsIHNhZmUgZm9yIGJyb3dzZXIgYnVuZGxlcy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgdG9rZW5pemVXaXRoT3B0aW9ucyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0ICogYXMgZGFzaGJvYXJkcyBmcm9tIFwiLi9kYXNoYm9hcmRzLnRzXCI7XG5cbi8vIFRoZSBnZW5lcmF0ZWQgU0RLIHNjaGVtYXMgbGl2ZSBpbiB0aGUgc2libGluZyBgLi9kYXNoYm9hcmRzLnRzYCwgd3JpdHRlbiBieSB0aGVcbi8vIGVuZ2luZSdzIGNvZGVnZW4gZnJvbSB0aGUgdXBzdHJlYW0gYC5kLnRzYC4gQWxpYXMgdGhlIGhhbmRmdWwgR2VuaWUgZXh0ZW5kcyBzb1xuLy8gdGhlIHdpZGVuZWQgc2NoZW1hcyBiZWxvdyByZWFkIGFnYWluc3Qgc2hvcnQsIGxvY2FsIG5hbWVzLlxuY29uc3Qge1xuICBnZW5pZUF0dGFjaG1lbnRTY2hlbWE6IFNES0dlbmllQXR0YWNobWVudFNjaGVtYSxcbiAgZ2VuaWVNZXNzYWdlU2NoZW1hOiBTREtHZW5pZU1lc3NhZ2VTY2hlbWEsXG4gIGdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hOiBTREtHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYSxcbiAgZ2VuaWVTcGFjZVNjaGVtYTogU0RLR2VuaWVTcGFjZVNjaGVtYSxcbn0gPSBkYXNoYm9hcmRzO1xuXG4vKipcbiAqIFRoZSBTREsncyBgTWVzc2FnZVN0YXR1c2AgdHlwZSwgcmUtZXhwb3J0ZWQgc28gY29uc3VtZXJzIG9mIHRoZVxuICogR2VuaWUgY29udHJhY3QgZ2V0IHRoZSBmdWxsIHdpcmUgdm9jYWJ1bGFyeSBmcm9tIGEgc2luZ2xlIGltcG9ydFxuICogcGF0aCAtIG1pcnJvcnMgdGhlIHJlLWV4cG9ydHMgb2YgdGhlIG90aGVyIFNESy1kZXJpdmVkIHNjaGVtYXNcbiAqIGJlbG93LlxuICovXG5leHBvcnQgdHlwZSBNZXNzYWdlU3RhdHVzID0gZGFzaGJvYXJkcy5NZXNzYWdlU3RhdHVzO1xuXG4vKiogUnVudGltZSB2YWxpZGF0b3IgZm9yIGEgcmF3IEdlbmllIG1lc3NhZ2Ugc3RhdHVzIGZyb20gdGhlIGdlbmVyYXRlZCBTREsgY29udHJhY3QuICovXG5leHBvcnQgY29uc3QgTWVzc2FnZVN0YXR1c1NjaGVtYSA9IGRhc2hib2FyZHMubWVzc2FnZVN0YXR1c1NjaGVtYTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gdGhvdWdodHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEdlbmllJ3MgcGVyLXF1ZXJ5IFwidGhvdWdodHNcIiBzdXJmYWNlLiBUaGVzZSBhcHBlYXIgb24gdGhlXG4gKiBgL21lc3NhZ2VzL3tpZH1gIHdpcmUgdW5kZXIgYGF0dGFjaG1lbnRzW2ldLnF1ZXJ5LnRob3VnaHRzW11gIGJ1dFxuICogYXJlIG5vdCB0eXBlZCBvbiB0aGUgU0RLJ3MgYEdlbmllUXVlcnlBdHRhY2htZW50YCBhdCB2MC4xNy5cbiAqXG4gKiBLbm93biB0aG91Z2h0IHR5cGVzIG9ic2VydmVkIGluIHByb2R1Y3Rpb24gcG9sbHM6XG4gKlxuICogICAtIGBUSE9VR0hUX1RZUEVfREVTQ1JJUFRJT05gOiBhIG9uZS1wYXJhZ3JhcGggcmVzdGF0ZW1lbnQgb2ZcbiAqICAgICB3aGF0IHRoZSB1c2VyIGFza2VkLiBUaGUgZmluYWwgYHF1ZXJ5LmRlc2NyaXB0aW9uYCBmaWVsZCBvblxuICogICAgIHRoZSBhdHRhY2htZW50IGNhcnJpZXMgdGhlIHNhbWUgdGV4dC5cbiAqICAgLSBgVEhPVUdIVF9UWVBFX0RBVEFfU09VUkNJTkdgOiBtYXJrZG93biBidWxsZXRzIG9mIHRoZVxuICogICAgIGZ1bGx5LXF1YWxpZmllZCBgY2F0YWxvZy5zY2hlbWEudGFibGVgIHNvdXJjZXMgR2VuaWUgY2hvc2UuXG4gKiAgIC0gYFRIT1VHSFRfVFlQRV9TVEVQU2A6IHRoZSBoaWdoLWxldmVsIHBsYW4gR2VuaWUgd3JvdGUgYmVmb3JlXG4gKiAgICAgcnVubmluZyBTUUwgKG9uZSBidWxsZXQgcGVyIHN0ZXApLlxuICogICAtIGBUSE9VR0hUX1RZUEVfVU5ERVJTVEFORElOR2A6IGFtYmlndWl0eSAvIGludGVycHJldGF0aW9uXG4gKiAgICAgbm90ZXMgKGUuZy4gXCIncmV2ZW51ZScgY291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgZ3Jvc3MsXG4gKiAgICAgbmV0LCBvciByZWNvZ25pemVkIHJldmVudWUuLi5cIikuXG4gKlxuICogT3BlbiBhdCB0aGUgdHlwZSBsZXZlbCAoYHwgKHN0cmluZyAmIHt9KWApIHNvIGEgbmV3IHNlcnZlci1zaWRlXG4gKiB0aG91Z2h0IHR5cGUgZG9lc24ndCBicmVhayBjb21waWxhdGlvbjsgdGhlIGZvdXIga25vd24gdHlwZXNcbiAqIHN0aWxsIG5hcnJvdyBjb3JyZWN0bHkgdW5kZXIgYHN3aXRjaGAuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVRob3VnaHRUeXBlU2NoZW1hID0gelxuICAuc3RyaW5nKClcbiAgLmRlc2NyaWJlKFwiRm9yd2FyZC1jb21wYXRpYmxlIEdlbmllIHJlYXNvbmluZyB0aG91Z2h0IHR5cGUuXCIpO1xuXG5leHBvcnQgdHlwZSBHZW5pZVRob3VnaHRUeXBlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVUaG91Z2h0VHlwZVNjaGVtYT47XG5cbi8qKlxuICogT25lIHJlYXNvbmluZyBzdGVwIG9uIGEgcXVlcnkgYXR0YWNobWVudC4gU2VlXG4gKiB7QGxpbmsgR2VuaWVUaG91Z2h0VHlwZX0gZm9yIHRoZSBrbm93biBgdGhvdWdodF90eXBlYCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVRob3VnaHRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHRob3VnaHRfdHlwZTogR2VuaWVUaG91Z2h0VHlwZVNjaGVtYS5kZXNjcmliZShcIktpbmQgb2YgcmVhc29uaW5nIHJlcHJlc2VudGVkIGJ5IHRoaXMgZW50cnkuXCIpLFxuICBjb250ZW50OiB6LnN0cmluZygpLmRlc2NyaWJlKFwiUmVhc29uaW5nIHRleHQgZW1pdHRlZCBmb3IgdGhpcyB0aG91Z2h0LlwiKSxcbn0pO1xuLyoqIE9uZSB0eXBlZCByZWFzb25pbmcgZW50cnkgYXR0YWNoZWQgdG8gYSBHZW5pZSBxdWVyeS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllVGhvdWdodCA9IHouaW5mZXI8dHlwZW9mIEdlbmllVGhvdWdodFNjaGVtYT47XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGF0dGFjaG1lbnQgZGlzY3JpbWluYXRvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogRGlzY3JpbWluYXRvciBmb3Igd2hhdCdzIGluc2lkZSBhIGBHZW5pZUF0dGFjaG1lbnRgLiBHZW5pZSBvbmx5XG4gKiBldmVyIHBvcHVsYXRlcyBvbmUgb2YgYHF1ZXJ5YCAvIGB0ZXh0YCAvIGBzdWdnZXN0ZWRfcXVlc3Rpb25zYFxuICogcGVyIGF0dGFjaG1lbnQuIE9wZW4gdmlhIGAoc3RyaW5nICYge30pYCBzbyBhIG5ldyBzZXJ2ZXItc2lkZVxuICogdHlwZSBkb2Vzbid0IGJyZWFrIGNvbXBpbGF0aW9uOyB0aGUgdGhyZWUga25vd24gdHlwZXMgc3RpbGxcbiAqIG5hcnJvdyBjb3JyZWN0bHkgdW5kZXIgYHN3aXRjaGAuXG4gKlxuICogTGlmdGVkIGludG8gdGhlIHNjaGVtYSBhcyB0aGUgb3B0aW9uYWxcbiAqIHtAbGluayBHZW5pZUF0dGFjaG1lbnRTY2hlbWF9LmBhdHRhY2htZW50X3R5cGVgIGZpZWxkIChjb21wdXRlXG4gKiBpdCB3aXRoIHtAbGluayBkZXRlY3RBdHRhY2htZW50VHlwZX0pIHNvIGNvbnN1bWVycyBjYW4gYnJhbmNoXG4gKiBvbiBhIGxpdGVyYWwgaW5zdGVhZCBvZiBwcm9iaW5nIHdoaWNoIHN1Yi1vYmplY3Qga2V5IGlzXG4gKiBwcmVzZW50LiBBbHNvIHN1cmZhY2VkIG9uIHtAbGluayBBdHRhY2htZW50RXZlbnR9J3MgcGF5bG9hZCBhc1xuICogYGF0dGFjaG1lbnRfdHlwZWAgKHZzIGEgYmFyZSBgdHlwZWApIHRvIGtlZXAgdGhlIGZpZWxkIGNsZWFyIG9mXG4gKiB0aGUgZXZlbnQtdW5pb24gZGlzY3JpbWluYXRvciBrZXkuXG4gKi9cbmV4cG9ydCBjb25zdCBBVFRBQ0hNRU5UX1RZUEVTID0gW1xuICBcInF1ZXJ5XCIsXG4gIFwidGV4dFwiLFxuICBcInN1Z2dlc3RlZF9xdWVzdGlvbnNcIixcbiAgXCJ2aXpcIixcbl0gYXMgY29uc3Qgc2F0aXNmaWVzIHJlYWRvbmx5IHN0cmluZ1tdO1xuXG5leHBvcnQgY29uc3QgS25vd25BdHRhY2htZW50VHlwZVNjaGVtYSA9IHpcbiAgLmVudW0oQVRUQUNITUVOVF9UWVBFUylcbiAgLmRlc2NyaWJlKFwiQXR0YWNobWVudCBkaXNjcmltaW5hdG9yIHZhbHVlcyB1bmRlcnN0b29kIGJ5IHRoaXMgcGFja2FnZSB2ZXJzaW9uLlwiKTtcblxuZXhwb3J0IHR5cGUgS25vd25BdHRhY2htZW50VHlwZSA9IHouaW5mZXI8dHlwZW9mIEtub3duQXR0YWNobWVudFR5cGVTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgQXR0YWNobWVudFR5cGVTY2hlbWEgPSB6XG4gIC5zdHJpbmcoKVxuICAuZGVzY3JpYmUoXCJGb3J3YXJkLWNvbXBhdGlibGUgR2VuaWUgYXR0YWNobWVudCBkaXNjcmltaW5hdG9yLlwiKTtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudFR5cGUgPSB6LmluZmVyPHR5cGVvZiBBdHRhY2htZW50VHlwZVNjaGVtYT47XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0gd2lkZW5lZCB3aXJlIHNjaGVtYXMgKyB0eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBgR2VuaWVRdWVyeUF0dGFjaG1lbnRgIHdpZGVuZWQgd2l0aCB0aGUgYHRob3VnaHRzW11gIGZpZWxkIHRoZVxuICogR2VuaWUgd2lyZSBleHBvc2VzIGJ1dCB0aGUgU0RLIGRvZXNuJ3QgY3VycmVudGx5IHR5cGUuIEV2ZXJ5XG4gKiBvdGhlciBmaWVsZCAoYGRlc2NyaXB0aW9uYCwgYHF1ZXJ5YCwgYHN0YXRlbWVudF9pZGAsXG4gKiBgcXVlcnlfcmVzdWx0X21ldGFkYXRhYCwgYHRpdGxlYCwgYHBhcmFtZXRlcnNgLFxuICogYGxhc3RfdXBkYXRlZF90aW1lc3RhbXBgLCBgaWRgKSBmbG93cyB0aHJvdWdoIHZlcmJhdGltIGZyb21cbiAqIHRoZSBTREsgc2NoZW1hLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWEgPSBTREtHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYS5leHRlbmQoe1xuICB0aG91Z2h0czogei5hcnJheShHZW5pZVRob3VnaHRTY2hlbWEpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBRdWVyeSBhdHRhY2htZW50IHdpZGVuZWQgd2l0aCBHZW5pZSdzIHN0cmVhbWVkIHJlYXNvbmluZyB0aG91Z2h0cy4gKi9cbmV4cG9ydCB0eXBlIEdlbmllUXVlcnlBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWE+O1xuXG4vKipcbiAqIFB1cnBvc2UgYXR0YWNoZWQgdG8gYSBHZW5pZSB0ZXh0IHJlc3BvbnNlLlxuICpcbiAqIFRoZSBnZW5lcmF0ZWQgRGF0YWJyaWNrcyBTREsgc2NoZW1hIGN1cnJlbnRseSBrbm93cyBvbmx5XG4gKiBgRk9MTE9XX1VQX1FVRVNUSU9OYCwgd2hpbGUgdGhlIGxpdmUgR2VuaWUgQVBJIGFsc28gZW1pdHNcbiAqIGBURVhUX0FUVEFDSE1FTlRfUFVSUE9TRV9BTlNXRVJgIGZvciB0aGUgcHJpbWFyeSBhbnN3ZXIgdGV4dC4gS2VlcCB0aGVcbiAqIGtub3duIHZhbHVlcyBkaXNjb3ZlcmFibGUgYW5kIGFjY2VwdCBmdXR1cmUgc3RyaW5nIHZhbHVlcyBzbyBhbiBhZGRpdGl2ZVxuICogc2VydmVyLXNpZGUgZW51bSBjaGFuZ2UgY2Fubm90IGludmFsaWRhdGUgYW4gb3RoZXJ3aXNlIGNvbXBsZXRlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYSA9IHpcbiAgLnN0cmluZygpXG4gIC5kZXNjcmliZShcIkZvcndhcmQtY29tcGF0aWJsZSBzZW1hbnRpYyBwdXJwb3NlIGZvciBhIEdlbmllIHRleHQgYXR0YWNobWVudC5cIik7XG5cbmV4cG9ydCB0eXBlIEdlbmllVGV4dEF0dGFjaG1lbnRQdXJwb3NlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2VTY2hlbWE+O1xuXG4vKipcbiAqIFRleHQgYXR0YWNobWVudCB3aWRlbmVkIGZvciBmb3J3YXJkLWNvbXBhdGlibGUgcHVycG9zZSB2YWx1ZXMgYW5kIG9wdGlvbmFsXG4gKiBBZ2VudCBNb2RlIHRhYmxlIG1ldGFkYXRhLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVUZXh0QXR0YWNobWVudFNjaGVtYSA9IGRhc2hib2FyZHMudGV4dEF0dGFjaG1lbnRTY2hlbWEuZXh0ZW5kKHtcbiAgcHVycG9zZTogR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2VTY2hlbWEub3B0aW9uYWwoKSxcbiAgbWV0YWRhdGE6IHoudW5rbm93bigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBZ2VudCBNb2RlIG1ldGFkYXRhIGF0dGFjaGVkIHRvIHRoaXMgdGV4dCByZXNwb25zZS5cIiksXG59KTtcbi8qKiBOYXJyYXRpdmUgdGV4dCBhdHRhY2htZW50LCBpbmNsdWRpbmcgaXRzIG9wdGlvbmFsIHNlbWFudGljIHB1cnBvc2UuICovXG5leHBvcnQgdHlwZSBHZW5pZVRleHRBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVUZXh0QXR0YWNobWVudFNjaGVtYT47XG5cbi8qKlxuICogVmlzdWFsaXphdGlvbiBHZW5pZSBnZW5lcmF0ZWQgZm9yIG9uZSBxdWVyeSByZXN1bHQuIFRoZSBhdHRhY2htZW50IGNhcnJpZXNcbiAqIGl0cyB0aXRsZSBhbmQgcXVlcnkgbGluazsgaXRzIHJlbmRlcmVkIFBORyBpcyByZXRyaWV2ZWQgc2VwYXJhdGVseSB0aHJvdWdoXG4gKiB0aGUgdmlzdWFsaXphdGlvbiBkb3dubG9hZCBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllVml6QXR0YWNobWVudFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgdGl0bGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRpc3BsYXkgdGl0bGUgR2VuaWUgY2hvc2UgZm9yIHRoZSBjaGFydC5cIiksXG4gICAgcXVlcnlfYXR0YWNobWVudF9pZDogelxuICAgICAgLnN0cmluZygpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiYGF0dGFjaG1lbnRfaWRgIG9mIHRoZSBxdWVyeSBhdHRhY2htZW50IHdob3NlIHJvd3MgdGhlIGNoYXJ0IHBsb3RzLlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiR2VuaWUgdmlzdWFsaXphdGlvbiByZXF1ZXN0IG92ZXIgb25lIHF1ZXJ5IGF0dGFjaG1lbnQuXCIpO1xuLyoqIEdlbmllIHZpc3VhbGl6YXRpb24gcmVxdWVzdCBvdmVyIG9uZSBxdWVyeSBhdHRhY2htZW50LiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVWaXpBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVWaXpBdHRhY2htZW50U2NoZW1hPjtcblxuLyoqXG4gKiBgR2VuaWVBdHRhY2htZW50YCB3aXRoOlxuICpcbiAqICAgLSBgcXVlcnlgIHJlLXR5cGVkIHRvIHRoZSB0aG91Z2h0cy1hd2FyZVxuICogICAgIHtAbGluayBHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYX0uXG4gKiAgIC0gYGF0dGFjaG1lbnRfdHlwZWAgZGlzY3JpbWluYXRvciBsaXRlcmFsXG4gKiAgICAgKHtAbGluayBBdHRhY2htZW50VHlwZX0pIHNvIGNvbnN1bWVycyBjYW4gYHN3aXRjaFxuICogICAgIChhdHQuYXR0YWNobWVudF90eXBlKWAgdG8gbmFycm93IHdoaWNoIHN1Yi1vYmplY3QgaXNcbiAqICAgICBwb3B1bGF0ZWQuIE9wdGlvbmFsIG9uIHRoZSB3aXJlIChHZW5pZSBkb2Vzbid0IHNlbmQgaXQpO1xuICogICAgIGNhbGxlcnMgY29tcHV0ZSBpdCB3aXRoIHtAbGluayBkZXRlY3RBdHRhY2htZW50VHlwZX0gd2hlblxuICogICAgIHRoZXkgd2FudCB0aGUgbGl0ZXJhbCB1cC1mcm9udC5cbiAqXG4gKiBgdGV4dGAgaXMgcmUtdHlwZWQgdG8gdGhlIGZvcndhcmQtY29tcGF0aWJsZVxuICoge0BsaW5rIEdlbmllVGV4dEF0dGFjaG1lbnRTY2hlbWF9LiBgYXR0YWNobWVudF9pZGAgYW5kXG4gKiBgc3VnZ2VzdGVkX3F1ZXN0aW9uc2AgcGFzcyB0aHJvdWdoIHVuY2hhbmdlZC4gYGF0dGFjaG1lbnRfaWRgIGlzIGdlbnVpbmVseVxuICogb3B0aW9uYWwgb24gdGhlIHdpcmU6XG4gKiB0aGUgZmlyc3QgdGV4dCBhdHRhY2htZW50IEdlbmllIGVtaXRzIHBlciB0dXJuICh0aGUgXCJtYWluXG4gKiBhbnN3ZXIgdGV4dFwiKSBhcnJpdmVzIHdpdGggbm8gaWQsIG9ubHkgdGhlIGZvbGxvdy11cCB0ZXh0XG4gKiBhdHRhY2htZW50IGdldHMgb25lLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVBdHRhY2htZW50U2NoZW1hID0gU0RLR2VuaWVBdHRhY2htZW50U2NoZW1hLmV4dGVuZCh7XG4gIHF1ZXJ5OiBHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYS5vcHRpb25hbCgpLFxuICB0ZXh0OiBHZW5pZVRleHRBdHRhY2htZW50U2NoZW1hLm9wdGlvbmFsKCksXG4gIHZpejogR2VuaWVWaXpBdHRhY2htZW50U2NoZW1hLm9wdGlvbmFsKCksXG4gIGF0dGFjaG1lbnRfdHlwZTogQXR0YWNobWVudFR5cGVTY2hlbWEub3B0aW9uYWwoKSxcbn0pO1xuLyoqIEdlbmllIG1lc3NhZ2UgYXR0YWNobWVudCB3aXRoIGFuIG9wdGlvbmFsIGNvbXB1dGVkIGRpc2NyaW1pbmF0b3IuICovXG5leHBvcnQgdHlwZSBHZW5pZUF0dGFjaG1lbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZUF0dGFjaG1lbnRTY2hlbWE+O1xuXG4vKipcbiAqIGBHZW5pZU1lc3NhZ2VgIHdpZGVuZWQgd2l0aDpcbiAqXG4gKiAgIC0gYGF1dG9fcmVnZW5lcmF0ZV9jb3VudGA6IG51bWJlciBzdGFtcGVkIG9uIGV2ZXJ5IHdpcmVcbiAqICAgICBtZXNzYWdlIHRoYXQgdGhlIFNESyB0eXBlIG9taXRzIGF0IHYwLjE3LlxuICogICAtIGBhdHRhY2htZW50c2A6IHJlLXR5cGVkIHRvIHRoZSBsb2NhbFxuICogICAgIHtAbGluayBHZW5pZUF0dGFjaG1lbnRTY2hlbWF9IHNvXG4gKiAgICAgYGF0dGFjaG1lbnQucXVlcnk/LnRob3VnaHRzYCAoYW5kIHRoZVxuICogICAgIGBhdHRhY2htZW50X3R5cGVgIGRpc2NyaW1pbmF0b3IpIGlzIHJlYWNoYWJsZSB3aXRob3V0IGFcbiAqICAgICBjYXN0LlxuICpcbiAqIEV2ZXJ5IG90aGVyIGZpZWxkIChgaWRgLCBgc3BhY2VfaWRgLCBgY29udmVyc2F0aW9uX2lkYCxcbiAqIGB1c2VyX2lkYCwgYGNyZWF0ZWRfdGltZXN0YW1wYCwgYGxhc3RfdXBkYXRlZF90aW1lc3RhbXBgLFxuICogYHN0YXR1c2AsIGBjb250ZW50YCwgYG1lc3NhZ2VfaWRgLCBgcXVlcnlfcmVzdWx0YCwgYGVycm9yYCxcbiAqIGBmZWVkYmFja2ApIHBhc3NlcyB0aHJvdWdoIGZyb20gdGhlIFNESyBzY2hlbWEuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZU1lc3NhZ2VTY2hlbWEgPSBTREtHZW5pZU1lc3NhZ2VTY2hlbWEuZXh0ZW5kKHtcbiAgYXR0YWNobWVudHM6IHouYXJyYXkoR2VuaWVBdHRhY2htZW50U2NoZW1hKS5vcHRpb25hbCgpLFxuICBhdXRvX3JlZ2VuZXJhdGVfY291bnQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIEdlbmllIG1lc3NhZ2Ugc25hcHNob3Qgd2lkZW5lZCB3aXRoIHR5cGVkIGF0dGFjaG1lbnRzIGFuZCByZWdlbmVyYXRpb24gY291bnQuICovXG5leHBvcnQgdHlwZSBHZW5pZU1lc3NhZ2UgPSB6LmluZmVyPHR5cGVvZiBHZW5pZU1lc3NhZ2VTY2hlbWE+O1xuXG4vKipcbiAqIERvbWFpbiBwcm9qZWN0aW9uIG9mIHtAbGluayBHZW5pZU1lc3NhZ2VTY2hlbWF9IHRoYXQgZHJvcHMgZXZlcnlcbiAqIHR1cm4tbGV2ZWwgZmllbGQgKGBpZGAsIGBzdGF0dXNgLCBgY3JlYXRlZF90aW1lc3RhbXBgLFxuICogYHF1ZXJ5X3Jlc3VsdGAsIC4uLikgYW5kIHlpZWxkcyBqdXN0IHRoZSByZXNwb25zZSBwYXlsb2FkIGFzIGFcbiAqIGZsYXQgYEdlbmllQXR0YWNobWVudFtdYC4gUGFyc2VzIHRoZSBzYW1lIHdpcmUgc2hhcGUgYXNcbiAqIHtAbGluayBHZW5pZU1lc3NhZ2VTY2hlbWF9OyBtaXNzaW5nIGBhdHRhY2htZW50c2AgZGVmYXVsdHMgdG9cbiAqIGBbXWAgc28gdGhlIG91dHB1dCBpcyBhbHdheXMgYW4gYXJyYXkuXG4gKlxuICogVXNlIHdoZW4gY29uc3VtZXJzIG9ubHkgY2FyZSBhYm91dCB0aGUgbW9kZWwncyByZXNwb25zZVxuICogYXR0YWNobWVudHMgYW5kIG5vdCB0aGUgc3Vycm91bmRpbmcgbWVzc2FnZSBlbnZlbG9wZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllUmVzcG9uc2VTY2hlbWEgPSBHZW5pZU1lc3NhZ2VTY2hlbWEudHJhbnNmb3JtKChtKSA9PiBtLmF0dGFjaG1lbnRzID8/IFtdKTtcbi8qKiBOb3JtYWxpemVkIGF0dGFjaG1lbnQgYXJyYXkgZXh0cmFjdGVkIGZyb20gYSBHZW5pZSBtZXNzYWdlIHJlc3BvbnNlLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIEdlbmllUmVzcG9uc2VTY2hlbWE+O1xuXG4vKipcbiAqIGBHZW5pZVNwYWNlYCB3aWRlbmVkIHdpdGggYW4gb3B0aW9uYWwgYHNlcmlhbGl6ZWRfc3BhY2VgIGZpZWxkXG4gKiBjYXJyeWluZyBhIEpTT04tc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzcGFjZSdzIGZ1bGxcbiAqIGRlZmluaXRpb24gKGNhdGFsb2dzLCBzY2hlbWFzLCB0YWJsZXMsIHNhbXBsZSBxdWVzdGlvbnMsIHByb21wdHMsXG4gKiBldGMuKSBhcyBleHBvcnRlZCBieSB0aGUgd29ya3NwYWNlIGV4cG9ydCBlbmRwb2ludC5cbiAqXG4gKiBUaGUgYmFzZSBTREsgc2hhcGUgKGBkZXNjcmlwdGlvbmAsIGBzcGFjZV9pZGAsIGB0aXRsZWAsXG4gKiBgd2FyZWhvdXNlX2lkYCkgY292ZXJzIHRoZSBkaXJlY3RvcnktbGlzdGluZyBzdXJmYWNlIC0gZW5vdWdoIHRvXG4gKiByb3V0ZSBhIGNoYXQuIGBzZXJpYWxpemVkX3NwYWNlYCBpcyBvcHQtaW4gc28gY2FsbGVycyB0aGF0IG5lZWRcbiAqIHRoZSBmdWxsIHNwYWNlIHNjaGVtYSAoZS5nLiB0byBzZWVkIGEgc3lzdGVtIHByb21wdCBvciB0byBzaGlwXG4gKiB0aGUgZGVmaW5pdGlvbiB0byBhbiBhZ2VudCkgY2FuIGF0dGFjaCBpdCB3aXRob3V0IGEgc2Vjb25kIHR5cGUuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVNwYWNlU2NoZW1hID0gU0RLR2VuaWVTcGFjZVNjaGVtYS5leHRlbmQoe1xuICBzZXJpYWxpemVkX3NwYWNlOiB6XG4gICAgLnN0cmluZygpXG4gICAgLm9wdGlvbmFsKClcbiAgICAuZGVzY3JpYmUoXG4gICAgICBcIlRoZSBjb250ZW50cyBvZiB0aGUgR2VuaWUgU3BhY2UgaW4gc2VyaWFsaXplZCBzdHJpbmcgZm9ybS4gVGhpcyBmaWVsZCBpcyBleGNsdWRlZCBpbiBMaXN0IEdlbmllIHNwYWNlcyByZXNwb25zZXMuIFRoaXMgZmllbGQgcHJvdmlkZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgSlNPTiBzdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBzcGFjZSdzIGxheW91dCBhbmQgY29tcG9uZW50cy5cIixcbiAgICApLFxufSk7XG4vKiogR2VuaWUgc3BhY2UgbWV0YWRhdGEgd2l0aCB0aGUgaWRlbnRpZmllcnMgcmVxdWlyZWQgYnkgY2hhdCBjb25zdW1lcnMuICovXG5leHBvcnQgdHlwZSBHZW5pZVNwYWNlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVTcGFjZVNjaGVtYT47XG5cbi8qKiBSZXF1ZXN0IGFjY2VwdGVkIGJ5IHRoZSBHQSBHZW5pZSBzcGFjZSBjcmVhdGUgZW5kcG9pbnQuICovXG5leHBvcnQgY29uc3QgQ3JlYXRlR2VuaWVTcGFjZVJlcXVlc3RTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHdhcmVob3VzZV9pZDogei5zdHJpbmcoKS50cmltKCkubWluKDEpLmRlc2NyaWJlKFwiQXNzb2NpYXRlZCBTUUwgd2FyZWhvdXNlIElELlwiKSxcbiAgICBzZXJpYWxpemVkX3NwYWNlOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkuZGVzY3JpYmUoXCJTZXJpYWxpemVkIEdlbmllIHNwYWNlIGRlZmluaXRpb24uXCIpLFxuICAgIHRpdGxlOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkdlbmllIHNwYWNlIHRpdGxlLlwiKSxcbiAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS50cmltKCkubWluKDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJHZW5pZSBzcGFjZSBkZXNjcmlwdGlvbi5cIiksXG4gICAgcGFyZW50X3BhdGg6IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUGFyZW50IHdvcmtzcGFjZSBmb2xkZXIuXCIpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiR0EgR2VuaWUgc3BhY2UgY3JlYXRpb24gcmVxdWVzdC5cIik7XG5cbi8qKiBHQSBHZW5pZSBzcGFjZSBjcmVhdGlvbiByZXF1ZXN0LiAqL1xuZXhwb3J0IHR5cGUgQ3JlYXRlR2VuaWVTcGFjZVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBDcmVhdGVHZW5pZVNwYWNlUmVxdWVzdFNjaGVtYT47XG5cbi8qKiBGZWVkYmFjayByZXF1ZXN0IGFjY2VwdGVkIGJ5IEdlbmllIGNoYXQtbW9kZSBhbmQgYWdlbnQtbW9kZSBtZXNzYWdlcy4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZU1lc3NhZ2VGZWVkYmFja1JlcXVlc3RTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkuZGVzY3JpYmUoXCJHZW5pZSBzcGFjZSBJRC5cIiksXG4gICAgY29udmVyc2F0aW9uX2lkOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkuZGVzY3JpYmUoXCJHZW5pZSBjb252ZXJzYXRpb24gSUQuXCIpLFxuICAgIG1lc3NhZ2VfaWQ6IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKS5kZXNjcmliZShcIkdlbmllIG1lc3NhZ2UgSUQuXCIpLFxuICAgIHJhdGluZzogei5lbnVtKFtcIlBPU0lUSVZFXCIsIFwiTkVHQVRJVkVcIiwgXCJOT05FXCJdKS5kZXNjcmliZShcIkdlbmllIGZlZWRiYWNrIHJhdGluZy5cIiksXG4gICAgY29tbWVudDogei5zdHJpbmcoKS50cmltKCkubWF4KDVfMDAwKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiT3B0aW9uYWwgR2VuaWUgZmVlZGJhY2sgY29tbWVudC5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJGZWVkYmFjayBhdHRhY2hlZCB0byBvbmUgR2VuaWUgY29udmVyc2F0aW9uIG1lc3NhZ2UuXCIpO1xuXG4vKiogRmVlZGJhY2sgYXR0YWNoZWQgdG8gb25lIEdlbmllIGNvbnZlcnNhdGlvbiBtZXNzYWdlLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVNZXNzYWdlRmVlZGJhY2tSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVNZXNzYWdlRmVlZGJhY2tSZXF1ZXN0U2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHRlcm1pbmFsIGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFRlcm1pbmFsIEdlbmllIG1lc3NhZ2Ugc3RhdHVzZXMuIFRoZSBwb2xsaW5nIGxvb3AgaW4gdGhlIGNoYXRcbiAqIGRyaXZlciBzdG9wcyBhcyBzb29uIGFzIHRoZSBsYXRlc3QgbWVzc2FnZSBoYXMgb25lIG9mIHRoZXNlXG4gKiBzdGF0dXNlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IFRFUk1JTkFMX1NUQVRVU0VTID0gW1wiQ09NUExFVEVEXCIsIFwiRkFJTEVEXCIsIFwiQ0FOQ0VMTEVEXCJdIGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgVGVybWluYWxTdGF0dXNTY2hlbWEgPSB6XG4gIC5lbnVtKFRFUk1JTkFMX1NUQVRVU0VTKVxuICAuZGVzY3JpYmUoXCJNZXNzYWdlIHN0YXR1cyB0aGF0IGVuZHMgYSBHZW5pZSB0dXJuIGFuZCBwcm9kdWNlcyBhIGZpbmFsIHJlc3VsdCBldmVudC5cIik7XG5cbmV4cG9ydCB0eXBlIFRlcm1pbmFsU3RhdHVzID0gei5pbmZlcjx0eXBlb2YgVGVybWluYWxTdGF0dXNTY2hlbWE+O1xuXG4vKiogTmFycm93IGBNZXNzYWdlU3RhdHVzIHwgdW5kZWZpbmVkYCB0byBhIHtAbGluayBUZXJtaW5hbFN0YXR1c30uICovXG5leHBvcnQgZnVuY3Rpb24gaXNUZXJtaW5hbFN0YXR1cyhzOiBNZXNzYWdlU3RhdHVzIHwgdW5kZWZpbmVkKTogcyBpcyBUZXJtaW5hbFN0YXR1cyB7XG4gIHJldHVybiBzICE9PSB1bmRlZmluZWQgJiYgKFRFUk1JTkFMX1NUQVRVU0VTIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyhzKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgcmF3IEdlbmllIHdpcmUgc3RhdHVzIChgRkVUQ0hJTkdfTUVUQURBVEFgLFxuICogYEFTS0lOR19BSWAsIGBFWEVDVVRJTkdfUVVFUllgLCAuLi4pIGludG8gYSBzaG9ydCwgc2VudGVuY2UtY2FzZWRcbiAqIGxhYmVsIHNhZmUgdG8gZHJvcCBpbnRvIGEgVUkgcGlsbC4gS25vd24gc3RhdGVzIGdldCBhIGN1cmF0ZWRcbiAqIGxhYmVsOyB1bmtub3duIHN0YXRlcyBmYWxsIGJhY2sgdG8gYHN0cmluZ1V0aWxzLnRva2VuaXplV2l0aE9wdGlvbnNgXG4gKiBzbyBuZXcgc3RhdGVzIHN0aWxsIHJlbmRlciBjbGVhbmx5IHdpdGhvdXQgY29kZSBjaGFuZ2VzLlxuICpcbiAqIFB1cmUgKG5vIE5vZGUtb25seSBkZXBzKSwgc2FmZSBmb3IgYnJvd3NlciBidW5kbGVzLiBCb3RoIHRoZVxuICogR2VuaWUgYWdlbnQgKHNlcnZlcikgYW5kIGFueSBVSSB0aGF0IHN1YnNjcmliZXMgdG8gc3RhdHVzIGV2ZW50c1xuICogY2FsbCB0aGlzIHNvIGxhYmVscyBzdGF5IGluIGxvY2stc3RlcCBhY3Jvc3MgdGhlIHdpcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBodW1hbml6ZVN0YXR1cyhzdGF0dXM6IE1lc3NhZ2VTdGF0dXMpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgXCJGRVRDSElOR19NRVRBREFUQVwiOlxuICAgICAgcmV0dXJuIFwiRmV0Y2hpbmcgbWV0YWRhdGFcIjtcbiAgICBjYXNlIFwiQVNLSU5HX0FJXCI6XG4gICAgICByZXR1cm4gXCJBc2tpbmcgR2VuaWVcIjtcbiAgICBjYXNlIFwiRVhFQ1VUSU5HX1FVRVJZXCI6XG4gICAgICByZXR1cm4gXCJSdW5uaW5nIFNRTCBxdWVyeVwiO1xuICAgIGNhc2UgXCJGSUxURVJJTkdfQ09OVEVYVFwiOlxuICAgICAgcmV0dXJuIFwiRmlsdGVyaW5nIGNvbnRleHRcIjtcbiAgICBjYXNlIFwiUEVORElOR19XQVJFSE9VU0VcIjpcbiAgICAgIHJldHVybiBcIldhaXRpbmcgZm9yIHdhcmVob3VzZVwiO1xuICAgIGNhc2UgXCJDT01QTEVURURcIjpcbiAgICAgIHJldHVybiBcIkNvbXBsZXRlZFwiO1xuICAgIGNhc2UgXCJGQUlMRURcIjpcbiAgICAgIHJldHVybiBcIkZhaWxlZFwiO1xuICAgIGNhc2UgXCJDQU5DRUxMRURcIjpcbiAgICAgIHJldHVybiBcIkNhbmNlbGxlZFwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gWy4uLnRva2VuaXplV2l0aE9wdGlvbnMoeyBjYXBpdGFsaXplOiB0cnVlLCBsb3dlckNhc2U6IHRydWUgfSwgc3RhdHVzKV0uam9pbihcIiBcIik7XG4gIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYXR0YWNobWVudCB0eXBlIGhlbHBlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogSW5zcGVjdCBhIHtAbGluayBHZW5pZUF0dGFjaG1lbnR9IGFuZCByZXR1cm4gdGhlXG4gKiB7QGxpbmsgQXR0YWNobWVudFR5cGV9IG9mIHBheWxvYWQgaXQgY2Fycmllcy4gUmV0dXJucyB0aGUgZmlyc3RcbiAqIGtub3duIHN1Yi1vYmplY3QgdGhhdCdzIHByZXNlbnQ7IGlmIG5vbmUgb2YgdGhlIGtub3duIG9uZXMgYXJlXG4gKiBwb3B1bGF0ZWQsIGZhbGxzIGJhY2sgdG8gdGhlIGZpcnN0IG5vbi1ib29ra2VlcGluZyBrZXlcbiAqIChmb3J3YXJkLWNvbXBhdCBmb3IgdHlwZXMgd2UgZG9uJ3QgbW9kZWwgeWV0KSwgZWxzZSBgXCJ1bmtub3duXCJgLlxuICpcbiAqIEhvbm9ycyBhIHByZS1zZXQgYGF0dGFjaG1lbnRfdHlwZWAgaWYgb25lIGlzIGFscmVhZHkgb24gdGhlXG4gKiB2YWx1ZSwgc28gdGhpcyBpcyBpZGVtcG90ZW50IGFjcm9zcyByZS1kZXRlY3Rpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0QXR0YWNobWVudFR5cGUoYXR0OiBHZW5pZUF0dGFjaG1lbnQpOiBBdHRhY2htZW50VHlwZSB7XG4gIGlmIChhdHQuYXR0YWNobWVudF90eXBlKSByZXR1cm4gYXR0LmF0dGFjaG1lbnRfdHlwZTtcbiAgaWYgKGF0dC5xdWVyeSkgcmV0dXJuIFwicXVlcnlcIjtcbiAgaWYgKGF0dC50ZXh0KSByZXR1cm4gXCJ0ZXh0XCI7XG4gIGlmIChhdHQuc3VnZ2VzdGVkX3F1ZXN0aW9ucykgcmV0dXJuIFwic3VnZ2VzdGVkX3F1ZXN0aW9uc1wiO1xuICBpZiAoYXR0LnZpeikgcmV0dXJuIFwidml6XCI7XG4gIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyhhdHQpKSB7XG4gICAgaWYgKGsgIT09IFwiYXR0YWNobWVudF9pZFwiICYmIGsgIT09IFwiYXR0YWNobWVudF90eXBlXCIpIHJldHVybiBrO1xuICB9XG4gIHJldHVybiBcInVua25vd25cIjtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBHZW5pZUNoYXQgZXZlbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFdoZXJlIG9uIHRoZSB3aXJlIGFuIGV2ZW50IHdhcyBvYnNlcnZlZC4gU3ByZWFkIGludG8gZXZlcnlcbiAqIGF0dGFjaG1lbnQtc2NvcGVkIGV2ZW50IHBheWxvYWQgc28gc3Vic2NyaWJlcnMgY2FuIHJvdXRlLCBsb2csXG4gKiBvciBjb3JyZWxhdGUgd2l0aG91dCByZS13YWxraW5nIHRoZSBtZXNzYWdlLlxuICpcbiAqIEZpZWxkczpcbiAqICAgLSBgc3BhY2VfaWRgOiB0aGUgR2VuaWUgc3BhY2UgdGhlIGNvbnZlcnNhdGlvbiBsaXZlcyBpbi5cbiAqICAgLSBgY29udmVyc2F0aW9uX2lkYDogY29udmVyc2F0aW9uIGlkIG9uY2UgR2VuaWUgaGFzIGFzc2lnbmVkIG9uZS5cbiAqICAgLSBgbWVzc2FnZV9pZGA6IEdlbmllIG1lc3NhZ2UgaWQgZm9yIHRoZSBhY3RpdmUgdHVybi5cbiAqICAgLSBgYXR0YWNobWVudF9pZGA6IGF0dGFjaG1lbnQgdGhlIGV2ZW50IGNhbWUgZnJvbS4gT3B0aW9uYWxcbiAqICAgICBiZWNhdXNlIEdlbmllIHNvbWV0aW1lcyBlbWl0cyBhbiBhbm9ueW1vdXMgbWFpbi1hbnN3ZXJcbiAqICAgICBhdHRhY2htZW50IHdpdGhvdXQgYW4gaWQ7IHRob3NlIHN0aWxsIGdldCBldmVudHMsIGp1c3Qgd2l0aFxuICogICAgIGBhdHRhY2htZW50X2lkYCB1bmRlZmluZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc3BhY2VfaWQ6IHouc3RyaW5nKCksXG4gIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtZXNzYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGF0dGFjaG1lbnRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIENvbnZlcnNhdGlvbiwgbWVzc2FnZSwgYW5kIGF0dGFjaG1lbnQgY29vcmRpbmF0ZXMgc2hhcmVkIGJ5IGF0dGFjaG1lbnQgZXZlbnRzLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVDaGF0TG9jYXRpb24gPSB6LmluZmVyPHR5cGVvZiBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYT47XG5cbi8qKlxuICogTGlmZWN5Y2xlIGV2ZW50OiB0aGUgcXVlc3Rpb24gdGhpcyB0dXJuIGlzIGFza2luZyBHZW5pZS4gRmlyZXNcbiAqIG9uY2UgcGVyIGBnZW5pZUV2ZW50Q2hhdGAgY2FsbCwgdGhlIGZpcnN0IHRpbWUgdGhlIHVuZGVybHlpbmdcbiAqIGBnZW5pZUNoYXRgIGxvb3AgeWllbGRzIGEgYEdlbmllTWVzc2FnZWAuIENhcnJpZXMgdGhlIHByb21wdFxuICogdGV4dCBHZW5pZSBlY2hvZWQgYmFjayBvbiBgbWVzc2FnZS5jb250ZW50YCBhbmQgdGhlIGFzc2lnbmVkXG4gKiBgbWVzc2FnZV9pZGAgc28gc3Vic2NyaWJlcnMgY2FuIGdyb3VwIGV2ZXJ5IHN1YnNlcXVlbnQgZXZlbnRcbiAqIGZvciB0aGlzIHR1cm4gdW5kZXIgb25lIHN0YWJsZSBrZXkuIGBjb252ZXJzYXRpb25faWRgIGlzXG4gKiBwb3B1bGF0ZWQgZm9yIGJvdGggb3BlbmluZyBhbmQgZm9sbG93LXVwIHR1cm5zIChHZW5pZSBhc3NpZ25zXG4gKiBpdCBvbiBgc3RhcnRDb252ZXJzYXRpb25gKS5cbiAqXG4gKiBEZWZlcnJlZCAoaW5zdGVhZCBvZiBmaXJlZCBzeW5jaHJvbm91c2x5IG9uIGVudHJ5KSBzbyB0aGVcbiAqIGBtZXNzYWdlX2lkYCBpcyBhdmFpbGFibGUgd2hlbiB0aGUgZXZlbnQgbGFuZHMgLSB0aGF0IG9uZSByb3VuZFxuICogdHJpcCBjb3N0cyB+MjAwbXMgYnV0IGxldHMgVUlzIHJlbmRlciBxdWVzdGlvbiAvIHRoaW5raW5nIC9cbiAqIHF1ZXJ5IC8gdGV4dCBhcyBhIHNpbmdsZSBncm91cGVkIGJsb2NrIHBlciBHZW5pZSBjYWxsIGluc3RlYWRcbiAqIG9mIGEgZmxhdCBzdHJlYW0uXG4gKlxuICogYGF0dGFjaG1lbnRfaWRgIGlzIGludGVudGlvbmFsbHkgYWJzZW50IC0gcXVlc3Rpb25zIGFyZSB0dXJuXG4gKiBzY29wZWQsIG5vdCBhdHRhY2htZW50IHNjb3BlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5vbWl0KHtcbiAgYXR0YWNobWVudF9pZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInF1ZXN0aW9uXCIpLFxuICBjb250ZW50OiB6LnN0cmluZygpLFxufSk7XG4vKiogSW5pdGlhbCBldmVudCBjYXJyeWluZyB0aGUgdXNlcidzIHF1ZXN0aW9uIGFmdGVyIEdlbmllIGFzc2lnbnMgYSBtZXNzYWdlIGlkLiAqL1xuZXhwb3J0IHR5cGUgUXVlc3Rpb25FdmVudCA9IHouaW5mZXI8dHlwZW9mIFF1ZXN0aW9uRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIExpZmVjeWNsZSBldmVudDogcmF3IGBHZW5pZU1lc3NhZ2VgIHNuYXBzaG90IGZvciB0aGUgYWN0aXZlXG4gKiB0dXJuLiBGaXJlcyBvbmNlIHBlciBwb2xsIHlpZWxkLiBUaGUgZnVsbCBtZXNzYWdlIHNoYXBlXG4gKiAoaW5jbHVkaW5nIHRoZSB3aWRlbmVkIHRob3VnaHQgLyByZWdlbiAvIGF0dGFjaG1lbnQtdHlwZVxuICogZmllbGRzKSBpcyBleHBvc2VkIGlubGluZSBhcyBgbWVzc2FnZWA7IGNvbnN1bWVycyBuYXJyb3cgb25cbiAqIGBldmVudC50eXBlID09PSBcIm1lc3NhZ2VcImAgYW5kIHJlYWNoIGZvciBgZXZlbnQubWVzc2FnZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdlRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5vbWl0KHtcbiAgYXR0YWNobWVudF9pZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcIm1lc3NhZ2VcIiksXG4gIG1lc3NhZ2U6IEdlbmllTWVzc2FnZVNjaGVtYSxcbn0pO1xuLyoqIFJhdyBHZW5pZSBtZXNzYWdlIHNuYXBzaG90IGVtaXR0ZWQgb24gZXZlcnkgcG9sbCBpdGVyYXRpb24uICovXG5leHBvcnQgdHlwZSBNZXNzYWdlRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBNZXNzYWdlRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIFRvcC1sZXZlbCBgbWVzc2FnZS5zdGF0dXNgIHRyYW5zaXRpb25lZC4gRmlyZXMgZm9yIGV2ZXJ5XG4gKiBkaXN0aW5jdCBzdGF0dXMgc2VlbiBvbiB0aGUgd2lyZSAoZS5nLiBgU1VCTUlUVEVEYCAtPlxuICogYEZJTFRFUklOR19DT05URVhUYCAtPiBgQVNLSU5HX0FJYCAtPiBgUEVORElOR19XQVJFSE9VU0VgIC0+XG4gKiBgQVNLSU5HX0FJYCAtPiBgQ09NUExFVEVEYCkuXG4gKi9cbmV4cG9ydCBjb25zdCBTdGF0dXNFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLm9taXQoe1xuICBhdHRhY2htZW50X2lkOiB0cnVlLFxufSkuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwic3RhdHVzXCIpLFxuICBzdGF0dXM6IE1lc3NhZ2VTdGF0dXNTY2hlbWEsXG4gIHByZXZpb3VzX3N0YXR1czogTWVzc2FnZVN0YXR1c1NjaGVtYS5vcHRpb25hbCgpLFxufSk7XG4vKiogTWVzc2FnZS1zdGF0dXMgdHJhbnNpdGlvbiwgaW5jbHVkaW5nIHRoZSBwcmV2aW91cyBzdGF0dXMgd2hlbiBhdmFpbGFibGUuICovXG5leHBvcnQgdHlwZSBTdGF0dXNFdmVudCA9IHouaW5mZXI8dHlwZW9mIFN0YXR1c0V2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBBIG5ldyBhdHRhY2htZW50IHNsb3QgYXBwZWFyZWQgaW4gYG1lc3NhZ2UuYXR0YWNobWVudHNbXWAuXG4gKiBGaXJlcyBleGFjdGx5IG9uY2UgcGVyIGF0dGFjaG1lbnQgKG1hdGNoZWQgYnkgYGF0dGFjaG1lbnRfaWRgLFxuICogcG9zaXRpb25hbGx5IGZvciBhbm9ueW1vdXMgYXR0YWNobWVudHMpIHRoZSBmaXJzdCB0aW1lIHdlIHNlZVxuICogaXQuIFRoZSBzbG90J3MgcGF5bG9hZCBraW5kIGxhbmRzIGluIGBhdHRhY2htZW50X3R5cGVgIHNvIHRoZVxuICogb3V0ZXIgYHR5cGVgIGRpc2NyaW1pbmF0b3Igc3RheXMgdW5hbWJpZ3VvdXMuXG4gKi9cbmV4cG9ydCBjb25zdCBBdHRhY2htZW50RXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJhdHRhY2htZW50XCIpLFxuICBpbmRleDogei5udW1iZXIoKSxcbiAgYXR0YWNobWVudF90eXBlOiBBdHRhY2htZW50VHlwZVNjaGVtYSxcbn0pO1xuLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIG5ldyB0eXBlZCBhdHRhY2htZW50IGFwcGVhcnMgb24gdGhlIG1lc3NhZ2UuICovXG5leHBvcnQgdHlwZSBBdHRhY2htZW50RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBBdHRhY2htZW50RXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIEEgbmV3IHJlYXNvbmluZyBzdGVwIGFwcGVhcmVkIG9uIGEgcXVlcnkgYXR0YWNobWVudFxuICogKGBhdHRhY2htZW50c1tpXS5xdWVyeS50aG91Z2h0c1tpXWApLiBEZWR1cGxpY2F0ZWQgcGVyXG4gKiBgKHRob3VnaHRfdHlwZSwgY29udGVudClgIHR1cGxlIHdpdGhpbiBhbiBhdHRhY2htZW50IHNvXG4gKiBzdWJzY3JpYmVycyBkb24ndCBzZWUgdGhlIHNhbWUgdGhvdWdodCBtdWx0aXBsZSB0aW1lcyAtIEdlbmllXG4gKiBzb21ldGltZXMgbXV0YXRlcyBleGlzdGluZyB0aG91Z2h0IHNsb3RzIGluIHBsYWNlLCBzbyB0aGUgZGlmZlxuICogaXMgdmFsdWUtYmFzZWQgcmF0aGVyIHRoYW4gcG9zaXRpb25hbC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRoaW5raW5nRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJ0aGlua2luZ1wiKSxcbiAgdGV4dDogei5zdHJpbmcoKSxcbiAgdGhvdWdodF90eXBlOiBHZW5pZVRob3VnaHRUeXBlU2NoZW1hLFxufSk7XG4vKiogSW5jcmVtZW50YWwgR2VuaWUgcmVhc29uaW5nIGV2ZW50IGRlcml2ZWQgZnJvbSBxdWVyeSB0aG91Z2h0cy4gKi9cbmV4cG9ydCB0eXBlIFRoaW5raW5nRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBUaGlua2luZ0V2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBBIHRleHQtYXR0YWNobWVudCBgY29udGVudGAgZmllbGQgYXBwZWFyZWQgb3IgY2hhbmdlZFxuICogKGBhdHRhY2htZW50c1tpXS50ZXh0LmNvbnRlbnRgKS4gRmlyZXMgd2hlbmV2ZXIgdGhlIHNuYXBzaG90XG4gKiB2YWx1ZSBkaWZmZXJzIGZyb20gdGhlIHByZXZpb3VzIG9uZSBmb3IgdGhlIHNhbWUgYXR0YWNobWVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRleHRFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInRleHRcIiksXG4gIHRleHQ6IHouc3RyaW5nKCksXG59KTtcbi8qKiBOYXJyYXRpdmUgYW5zd2VyIGZyYWdtZW50IGVtaXR0ZWQgZnJvbSBhIEdlbmllIHRleHQgYXR0YWNobWVudC4gKi9cbmV4cG9ydCB0eXBlIFRleHRFdmVudCA9IHouaW5mZXI8dHlwZW9mIFRleHRFdmVudFNjaGVtYT47XG5cbi8qKlxuICogU1FMIHdhcyBmaW5hbGl6ZWQgb24gYSBxdWVyeSBhdHRhY2htZW50XG4gKiAoYGF0dGFjaG1lbnRzW2ldLnF1ZXJ5LnF1ZXJ5YCkuIEZpcmVzIG9uY2Ugd2hlbiB0aGUgU1FMIHN0cmluZ1xuICogdHJhbnNpdGlvbnMgZnJvbSB1bmRlZmluZWQgdG8gZGVmaW5lZCwgYW5kIGFnYWluIGlmIEdlbmllIGV2ZXJcbiAqIHJld3JpdGVzIGl0LiBgdGl0bGVgIGFuZCBgZGVzY3JpcHRpb25gIGFyZSBkZW5vcm1hbGlzZWQgb2ZmIHRoZVxuICogYXR0YWNobWVudCdzIGBxdWVyeS50aXRsZWAgLyBgcXVlcnkuZGVzY3JpcHRpb25gIHNvIGNvbnN1bWVyc1xuICogY2FuIGxhYmVsIHRoZSBTUUwgcGlsbCB3aXRob3V0IHJlLXdhbGtpbmcgdGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBRdWVyeUV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwicXVlcnlcIiksXG4gIHNxbDogei5zdHJpbmcoKSxcbiAgdGl0bGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIEZpbmFsaXplZCBvciByZXdyaXR0ZW4gU1FMIGVtaXR0ZWQgZm9yIGEgR2VuaWUgcXVlcnkgYXR0YWNobWVudC4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBRdWVyeUV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBTUUwgd2FzIHN1Ym1pdHRlZCB0byBhIFNRTCB3YXJlaG91c2UgYW5kIGEgc3RhdGVtZW50IGlkIHdhc1xuICogYXNzaWduZWQgKGBhdHRhY2htZW50c1tpXS5xdWVyeS5zdGF0ZW1lbnRfaWRgKS4gRmlyZXMgd2hlbiB0aGVcbiAqIHN0YXRlbWVudCBpZCB0cmFuc2l0aW9ucyBmcm9tIHVuZGVmaW5lZCB0byBkZWZpbmVkIC0gdGhpcyBpcyB0aGVcbiAqIHBvaW50IGF0IHdoaWNoIGBjbGllbnQuc3RhdGVtZW50RXhlY3V0aW9uLmdldFN0YXRlbWVudCh7IHN0YXRlbWVudF9pZCB9KWBcbiAqIGJlY29tZXMgYSB2YWxpZCBjYWxsLlxuICovXG5leHBvcnQgY29uc3QgU3RhdGVtZW50RXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJzdGF0ZW1lbnRcIiksXG4gIHN0YXRlbWVudF9pZDogei5zdHJpbmcoKSxcbn0pO1xuLyoqIEV2ZW50IGluZGljYXRpbmcgdGhhdCBhIHF1ZXJ5IHJlY2VpdmVkIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50IGlkLiAqL1xuZXhwb3J0IHR5cGUgU3RhdGVtZW50RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBTdGF0ZW1lbnRFdmVudFNjaGVtYT47XG5cbi8qKlxuICogUm93IGNvdW50IGZvciBhIHF1ZXJ5IGF0dGFjaG1lbnQncyByZXN1bHQgY2hhbmdlZFxuICogKGBhdHRhY2htZW50c1tpXS5xdWVyeS5xdWVyeV9yZXN1bHRfbWV0YWRhdGEucm93X2NvdW50YCkuIEZpcmVzXG4gKiBvbiBldmVyeSBjaGFuZ2UsIGluY2x1ZGluZyB0aGUgaW5pdGlhbCBgdW5kZWZpbmVkIC0+IDBgIGFuZCB0aGVcbiAqIGxhdGVyIGAwIC0+IE5gIG9uY2UgdGhlIHdhcmVob3VzZSBmaW5pc2hlcyBleGVjdXRpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBSb3dzRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJyb3dzXCIpLFxuICByb3dfY291bnQ6IHoubnVtYmVyKCksXG4gIHByZXZpb3VzX3Jvd19jb3VudDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBzdGF0ZW1lbnRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIFJvdy1jb3VudCB0cmFuc2l0aW9uIGZvciBhIEdlbmllIHF1ZXJ5IHJlc3VsdC4gKi9cbmV4cG9ydCB0eXBlIFJvd3NFdmVudCA9IHouaW5mZXI8dHlwZW9mIFJvd3NFdmVudFNjaGVtYT47XG5cbi8qKlxuICogR2VuaWUgcHJvZHVjZWQgYSBmb2xsb3ctdXAgc3VnZ2VzdGVkLXF1ZXN0aW9ucyBsaXN0XG4gKiAoYGF0dGFjaG1lbnRzW2ldLnN1Z2dlc3RlZF9xdWVzdGlvbnMucXVlc3Rpb25zW11gKS4gRmlyZXMgb25jZVxuICogd2hlbiB0aGUgbGlzdCBhcHBlYXJzLCBhbmQgYWdhaW4gaWYgR2VuaWUgcmV3cml0ZXMgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBTdWdnZXN0ZWRRdWVzdGlvbnNFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInN1Z2dlc3RlZF9xdWVzdGlvbnNcIiksXG4gIHF1ZXN0aW9uczogei5hcnJheSh6LnN0cmluZygpKSxcbn0pO1xuLyoqIEZvbGxvdy11cCBxdWVzdGlvbiBsaXN0IGVtaXR0ZWQgd2hlbiBHZW5pZSBhZGRzIG9yIHJld3JpdGVzIHN1Z2dlc3Rpb25zLiAqL1xuZXhwb3J0IHR5cGUgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBTdWdnZXN0ZWRRdWVzdGlvbnNFdmVudFNjaGVtYT47XG5cbi8qKlxuICogVGhlIGFjdGl2ZSB0dXJuIHJlYWNoZWQgYSB0ZXJtaW5hbCBzdGF0dXMuIEFsd2F5cyBmaXJlcyBvbmNlXG4gKiBwZXIgdHVybiAoaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHRlcm1pbmFsIGBtZXNzYWdlYCBldmVudCkuXG4gKiBDYXJyaWVzIHRoZSBmaW5hbCBgR2VuaWVNZXNzYWdlYCBzbmFwc2hvdCBpbmxpbmUgc28gc3Vic2NyaWJlcnNcbiAqIGRvbid0IG5lZWQgdG8ga2VlcCB0aGVpciBvd24gY29weSBvZiB0aGUgbGFzdCBtZXNzYWdlLlxuICovXG5leHBvcnQgY29uc3QgUmVzdWx0RXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5vbWl0KHtcbiAgYXR0YWNobWVudF9pZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInJlc3VsdFwiKSxcbiAgc3RhdHVzOiBUZXJtaW5hbFN0YXR1c1NjaGVtYSxcbiAgbWVzc2FnZTogR2VuaWVNZXNzYWdlU2NoZW1hLFxufSk7XG4vKiogRmluYWwgZXZlbnQgZm9yIGEgR2VuaWUgdHVybiwgY2FycnlpbmcgaXRzIHRlcm1pbmFsIHN0YXR1cyBhbmQgbWVzc2FnZSBzbmFwc2hvdC4gKi9cbmV4cG9ydCB0eXBlIFJlc3VsdEV2ZW50ID0gei5pbmZlcjx0eXBlb2YgUmVzdWx0RXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIERpc2NyaW1pbmF0ZWQgdW5pb24geWllbGRlZCBieSBgZ2VuaWVFdmVudENoYXRgLiBFYWNoIHZhcmlhbnRcbiAqIGlzIGEgc2luZ2xlIGZsYXQgb2JqZWN0IHdpdGggYHR5cGVgIGFzIHRoZSBkaXNjcmltaW5hdG9yIGFuZFxuICogdGhlIHBheWxvYWQgZmllbGRzIGhvaXN0ZWQgZGlyZWN0bHkgdG8gdGhlIHRvcCBsZXZlbCAtIG5vXG4gKiBgcGF5bG9hZGAgd3JhcHBlci4gQ29uc3VtZXJzIG5hcnJvdyBvbiBgdHlwZWAgYW5kIHJlYWQgZmllbGRzXG4gKiBpbmxpbmU6XG4gKlxuICogQGV4YW1wbGVcbiAqIGZvciBhd2FpdCAoY29uc3QgZXZlbnQgb2YgZ2VuaWVFdmVudENoYXQoc3BhY2VJZCwgXCJUb3Agc3RvcmVzP1wiKSkge1xuICogICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAqICAgICBjYXNlIFwidGhpbmtpbmdcIjpcbiAqICAgICAgIGNvbnNvbGUubG9nKGV2ZW50LnRob3VnaHRfdHlwZSwgZXZlbnQudGV4dCk7XG4gKiAgICAgICBicmVhaztcbiAqICAgICBjYXNlIFwicmVzdWx0XCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhcImRvbmU6XCIsIGV2ZW50LnN0YXR1cyk7XG4gKiAgICAgICBicmVhaztcbiAqICAgfVxuICogfVxuICpcbiAqIFN0cmVhbSBvcmRlciBwZXIgdHVybjpcbiAqXG4gKiAgIDEuIGBxdWVzdGlvbmAsIGVtaXR0ZWQgd2l0aCB0aGUgZmlyc3QgYG1lc3NhZ2VgIHlpZWxkIChkZWZlcnJlZCBzb1xuICogICAgICB0aGUgYXNzaWduZWQgYG1lc3NhZ2VfaWRgIGlzIGF2YWlsYWJsZSksIGNhcnJ5aW5nIHRoZSBwcm9tcHRcbiAqICAgICAgdGhpcyB0dXJuIHNlbnQgdG8gR2VuaWUuXG4gKiAgIDIuIGBtZXNzYWdlYCBmb3IgZXZlcnkgcG9sbCB5aWVsZCAocmF3IGBHZW5pZU1lc3NhZ2VgIG9uXG4gKiAgICAgIGBldmVudC5tZXNzYWdlYCkuXG4gKiAgIDMuIEFueSBkZXJpdmVkIGV2ZW50cyB0aGUgc25hcHNob3QgZGlmZiBwcm9kdWNlZCAoYHN0YXR1c2AsXG4gKiAgICAgIGBhdHRhY2htZW50YCwgYHRoaW5raW5nYCwgYHRleHRgLCBgcXVlcnlgLCBgc3RhdGVtZW50YCxcbiAqICAgICAgYHJvd3NgLCBgc3VnZ2VzdGVkX3F1ZXN0aW9uc2ApIGluIHRoYXQgZml4ZWQgb3JkZXIuXG4gKiAgIDQuIE9uIHRoZSB0ZXJtaW5hbCBzbmFwc2hvdCwgYSBmaW5hbCBgcmVzdWx0YCBldmVudC5cbiAqXG4gKiBFcnJvcnMgcHJvcGFnYXRlIHZpYSB0aGUgZ2VuZXJhdG9yIHRocm93aW5nIChgdHJ5YC9gY2F0Y2hgIHRoZVxuICogYGZvciBhd2FpdGApLCBub3QgdmlhIGFuIGBlcnJvcmAgdmFyaWFudCBvbiB0aGlzIHVuaW9uLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVDaGF0RXZlbnRTY2hlbWEgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICBRdWVzdGlvbkV2ZW50U2NoZW1hLFxuICBNZXNzYWdlRXZlbnRTY2hlbWEsXG4gIFN0YXR1c0V2ZW50U2NoZW1hLFxuICBBdHRhY2htZW50RXZlbnRTY2hlbWEsXG4gIFRoaW5raW5nRXZlbnRTY2hlbWEsXG4gIFRleHRFdmVudFNjaGVtYSxcbiAgUXVlcnlFdmVudFNjaGVtYSxcbiAgU3RhdGVtZW50RXZlbnRTY2hlbWEsXG4gIFJvd3NFdmVudFNjaGVtYSxcbiAgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWEsXG4gIFJlc3VsdEV2ZW50U2NoZW1hLFxuXSk7XG4vKiogT3JkZXJlZCBldmVudCB1bmlvbiB5aWVsZGVkIGJ5IGBnZW5pZUV2ZW50Q2hhdGA7IGZhaWx1cmVzIGFyZSB0aHJvd24sIG5vdCBlbWl0dGVkLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVDaGF0RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZUNoYXRFdmVudFNjaGVtYT47XG5cbi8qKiBEaXNjcmltaW5hdG9yIHR5cGUgZm9yIHtAbGluayBHZW5pZUNoYXRFdmVudH0uICovXG5leHBvcnQgdHlwZSBHZW5pZUNoYXRFdmVudFR5cGUgPSBHZW5pZUNoYXRFdmVudFtcInR5cGVcIl07XG5cbi8qKlxuICogRmllbGQgc2V0IGZvciBhIGdpdmVuIHtAbGluayBHZW5pZUNoYXRFdmVudFR5cGV9IC0gdGhlIHZhcmlhbnRcbiAqIHdpdGggdGhlIGB0eXBlYCBkaXNjcmltaW5hdG9yIHN0cmlwcGVkLiBVc2VkIGJ5IGRldGVjdG9ycyBpblxuICogYGV2ZW50LnRzYCBzbyBlYWNoIGRldGVjdG9yIHJldHVybnMganVzdCB0aGUgcGF5bG9hZCBmaWVsZHMgYW5kXG4gKiB0aGUgb3JjaGVzdHJhdG9yIHN0YW1wcyBgdHlwZWAgYXQgeWllbGQgdGltZS5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVDaGF0RXZlbnRGaWVsZHM8VCBleHRlbmRzIEdlbmllQ2hhdEV2ZW50VHlwZT4gPSBPbWl0PFxuICBFeHRyYWN0PEdlbmllQ2hhdEV2ZW50LCB7IHR5cGU6IFQgfT4sXG4gIFwidHlwZVwiXG4+O1xuIl19
@@ -0,0 +1,12 @@
1
+ import { z } from "zod";
2
+ /** Identifiers required to download a Genie-rendered visualization. */
3
+ export declare const GenieVisualizationRequestSchema: z.ZodObject<{
4
+ space_id: z.ZodString;
5
+ conversation_id: z.ZodString;
6
+ message_id: z.ZodString;
7
+ attachment_id: z.ZodString;
8
+ }, z.core.$strict>;
9
+ /** Identifiers required to download a Genie-rendered visualization. */
10
+ export type GenieVisualizationRequest = z.infer<typeof GenieVisualizationRequestSchema>;
11
+ /** Build the workspace-relative binary visualization download endpoint. */
12
+ export declare function genieVisualizationDownloadPath(input: GenieVisualizationRequest): string;
@@ -0,0 +1,21 @@
1
+ import { z } from "zod";
2
+ /** Identifiers required to download a Genie-rendered visualization. */
3
+ export const GenieVisualizationRequestSchema = z
4
+ .object({
5
+ space_id: z.string().trim().min(1).describe("Genie space ID."),
6
+ conversation_id: z.string().trim().min(1).describe("Genie conversation ID."),
7
+ message_id: z.string().trim().min(1).describe("Genie message ID."),
8
+ attachment_id: z
9
+ .string()
10
+ .trim()
11
+ .min(1)
12
+ .describe("Visualization attachment ID, not its query ID."),
13
+ })
14
+ .strict()
15
+ .describe("Genie visualization download identifiers.");
16
+ /** Build the workspace-relative binary visualization download endpoint. */
17
+ export function genieVisualizationDownloadPath(input) {
18
+ const request = GenieVisualizationRequestSchema.parse(input);
19
+ return `/api/2.0/genie/spaces/${encodeURIComponent(request.space_id)}/conversations/${encodeURIComponent(request.conversation_id)}/messages/${encodeURIComponent(request.message_id)}/attachments/${encodeURIComponent(request.attachment_id)}/download-visualization`;
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92aXN1YWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsdUVBQXVFO0FBQ3ZFLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQUM7S0FDN0MsTUFBTSxDQUFDO0lBQ04sUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO0lBQzlELGVBQWUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQztJQUM1RSxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUM7SUFDbEUsYUFBYSxFQUFFLENBQUM7U0FDYixNQUFNLEVBQUU7U0FDUixJQUFJLEVBQUU7U0FDTixHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ04sUUFBUSxDQUFDLGdEQUFnRCxDQUFDO0NBQzlELENBQUM7S0FDRCxNQUFNLEVBQUU7S0FDUixRQUFRLENBQUMsMkNBQTJDLENBQUMsQ0FBQztBQUt6RCwyRUFBMkU7QUFDM0UsTUFBTSxVQUFVLDhCQUE4QixDQUFDLEtBQWdDO0lBQzdFLE1BQU0sT0FBTyxHQUFHLCtCQUErQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxPQUFPLHlCQUF5QixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLGFBQWEsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0Isa0JBQWtCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQztBQUN6USxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuLyoqIElkZW50aWZpZXJzIHJlcXVpcmVkIHRvIGRvd25sb2FkIGEgR2VuaWUtcmVuZGVyZWQgdmlzdWFsaXphdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVZpc3VhbGl6YXRpb25SZXF1ZXN0U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBzcGFjZV9pZDogei5zdHJpbmcoKS50cmltKCkubWluKDEpLmRlc2NyaWJlKFwiR2VuaWUgc3BhY2UgSUQuXCIpLFxuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS50cmltKCkubWluKDEpLmRlc2NyaWJlKFwiR2VuaWUgY29udmVyc2F0aW9uIElELlwiKSxcbiAgICBtZXNzYWdlX2lkOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkuZGVzY3JpYmUoXCJHZW5pZSBtZXNzYWdlIElELlwiKSxcbiAgICBhdHRhY2htZW50X2lkOiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC50cmltKClcbiAgICAgIC5taW4oMSlcbiAgICAgIC5kZXNjcmliZShcIlZpc3VhbGl6YXRpb24gYXR0YWNobWVudCBJRCwgbm90IGl0cyBxdWVyeSBJRC5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJHZW5pZSB2aXN1YWxpemF0aW9uIGRvd25sb2FkIGlkZW50aWZpZXJzLlwiKTtcblxuLyoqIElkZW50aWZpZXJzIHJlcXVpcmVkIHRvIGRvd25sb2FkIGEgR2VuaWUtcmVuZGVyZWQgdmlzdWFsaXphdGlvbi4gKi9cbmV4cG9ydCB0eXBlIEdlbmllVmlzdWFsaXphdGlvblJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVZpc3VhbGl6YXRpb25SZXF1ZXN0U2NoZW1hPjtcblxuLyoqIEJ1aWxkIHRoZSB3b3Jrc3BhY2UtcmVsYXRpdmUgYmluYXJ5IHZpc3VhbGl6YXRpb24gZG93bmxvYWQgZW5kcG9pbnQuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuaWVWaXN1YWxpemF0aW9uRG93bmxvYWRQYXRoKGlucHV0OiBHZW5pZVZpc3VhbGl6YXRpb25SZXF1ZXN0KTogc3RyaW5nIHtcbiAgY29uc3QgcmVxdWVzdCA9IEdlbmllVmlzdWFsaXphdGlvblJlcXVlc3RTY2hlbWEucGFyc2UoaW5wdXQpO1xuICByZXR1cm4gYC9hcGkvMi4wL2dlbmllL3NwYWNlcy8ke2VuY29kZVVSSUNvbXBvbmVudChyZXF1ZXN0LnNwYWNlX2lkKX0vY29udmVyc2F0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChyZXF1ZXN0LmNvbnZlcnNhdGlvbl9pZCl9L21lc3NhZ2VzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHJlcXVlc3QubWVzc2FnZV9pZCl9L2F0dGFjaG1lbnRzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHJlcXVlc3QuYXR0YWNobWVudF9pZCl9L2Rvd25sb2FkLXZpc3VhbGl6YXRpb25gO1xufVxuIl19
@@ -1 +1 @@
1
- {"root":["../src/agent-mode.ts","../src/dashboards.ts","../src/event.ts","../src/genie-model.ts","../index.ts"],"version":"5.9.3"}
1
+ {"root":["../src/agent-mode.ts","../src/dashboards.ts","../src/event.ts","../src/genie-model.ts","../src/visualization.ts","../index.ts"],"version":"5.9.3"}
package/package.json CHANGED
@@ -23,7 +23,7 @@
23
23
  "typescript": "^5.9.3"
24
24
  },
25
25
  "dependencies": {
26
- "@dbx-tools/shared-core": "^0.9.187",
26
+ "@dbx-tools/shared-core": "^0.9.188",
27
27
  "zod": "4.3.6"
28
28
  },
29
29
  "main": "./lib/index.js",
@@ -40,7 +40,7 @@
40
40
  "./package.json": "./package.json"
41
41
  }
42
42
  },
43
- "version": "0.9.187",
43
+ "version": "0.9.188",
44
44
  "types": "./lib/index.d.ts",
45
45
  "dbxToolsConfig": {
46
46
  "tags": [
@@ -183,9 +183,9 @@ export const GenieTextAttachmentSchema = dashboards.textAttachmentSchema.extend(
183
183
  export type GenieTextAttachment = z.infer<typeof GenieTextAttachmentSchema>;
184
184
 
185
185
  /**
186
- * Visualization Genie requested for one of its query results. Genie stores only
187
- * the title and the query attachment it charts; the client draws the chart from
188
- * that query's statement rows.
186
+ * Visualization Genie generated for one query result. The attachment carries
187
+ * its title and query link; its rendered PNG is retrieved separately through
188
+ * the visualization download endpoint.
189
189
  */
190
190
  export const GenieVizAttachmentSchema = z
191
191
  .object({
@@ -0,0 +1,25 @@
1
+ import { z } from "zod";
2
+
3
+ /** Identifiers required to download a Genie-rendered visualization. */
4
+ export const GenieVisualizationRequestSchema = z
5
+ .object({
6
+ space_id: z.string().trim().min(1).describe("Genie space ID."),
7
+ conversation_id: z.string().trim().min(1).describe("Genie conversation ID."),
8
+ message_id: z.string().trim().min(1).describe("Genie message ID."),
9
+ attachment_id: z
10
+ .string()
11
+ .trim()
12
+ .min(1)
13
+ .describe("Visualization attachment ID, not its query ID."),
14
+ })
15
+ .strict()
16
+ .describe("Genie visualization download identifiers.");
17
+
18
+ /** Identifiers required to download a Genie-rendered visualization. */
19
+ export type GenieVisualizationRequest = z.infer<typeof GenieVisualizationRequestSchema>;
20
+
21
+ /** Build the workspace-relative binary visualization download endpoint. */
22
+ export function genieVisualizationDownloadPath(input: GenieVisualizationRequest): string {
23
+ const request = GenieVisualizationRequestSchema.parse(input);
24
+ return `/api/2.0/genie/spaces/${encodeURIComponent(request.space_id)}/conversations/${encodeURIComponent(request.conversation_id)}/messages/${encodeURIComponent(request.message_id)}/attachments/${encodeURIComponent(request.attachment_id)}/download-visualization`;
25
+ }