@dbx-tools/shared-mastra 0.9.70 → 0.9.72

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,7 +3,7 @@
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-mastra";
6
- export const PACKAGE_VERSION = "0.9.70";
6
+ export const PACKAGE_VERSION = "0.9.72";
7
7
  export * as feedback from "./src/feedback.ts";
8
8
  export * as markers from "./src/markers.ts";
9
9
  export * as override from "./src/override.ts";
@@ -16,5 +16,5 @@ export type { MarkerType, ParsedMarker } from "./src/markers.ts";
16
16
  export { MODEL_OVERRIDE_HEADER, MODEL_OVERRIDE_QUERY, MODEL_OVERRIDE_BODY_FIELDS } from "./src/override.ts";
17
17
  export { MASTRA_ROUTES } from "./src/routes.ts";
18
18
  export { THREAD_ID_HEADER, THREAD_ID_QUERY } from "./src/thread.ts";
19
- export { MastraClientConfigSchema, DefaultModelResponseSchema, ServingEndpointsResponseSchema, MastraSuggestionsResponseSchema, ChartTypeSchema, ChartResultSchema, ChartSchema, StatementDataSchema, StartedEventSchema, AskGenieDoneEventSchema, MastraGenieErrorEventSchema, SummaryEventSchema, GenieAgentEventSchema, GenieWriterEventSchema, GENIE_PROGRESS_PART_TYPE, GenieProgressPartDataSchema, GenieDatasetDataSchema, GenieDatasetChartSchema, GenieDatasetSchema, GenieSummaryItemSchema, GenieAgentResultSchema } from "./src/wire.ts";
20
- export type { MastraClientConfig, DefaultModelResponse, ServingEndpointsResponse, MastraSuggestionsResponse, ChartType, ChartResult, Chart, StatementData, StartedEvent, AskGenieDoneEvent, MastraGenieErrorEvent, SummaryEvent, GenieAgentEvent, GenieWriterEvent, GenieWriterEventType, GenieProgressPartData, GenieDatasetData, GenieDatasetChart, GenieDataset, GenieSummaryItem, GenieSummaryItemType, GenieAgentResult } from "./src/wire.ts";
19
+ export { MastraClientConfigSchema, DefaultModelResponseSchema, ServingEndpointsResponseSchema, MastraSuggestionsResponseSchema, ChartTypeSchema, ChartResultSchema, ChartSchema, StatementDataSchema, StartedEventSchema, AskGenieDoneEventSchema, MastraGenieErrorEventSchema, SummaryEventSchema, GenieAgentEventSchema, GenieWriterEventSchema, GENIE_PROGRESS_PART_TYPE, GenieProgressPartDataSchema, ToolStatusProgressEventSchema, ToolProgressEventSchema, TOOL_PROGRESS_PART_TYPE, ToolProgressPartDataSchema, GenieDatasetDataSchema, GenieDatasetChartSchema, GenieDatasetSchema, GenieSummaryItemSchema, GenieAgentResultSchema } from "./src/wire.ts";
20
+ export type { MastraClientConfig, DefaultModelResponse, ServingEndpointsResponse, MastraSuggestionsResponse, ChartType, ChartResult, Chart, StatementData, StartedEvent, AskGenieDoneEvent, MastraGenieErrorEvent, SummaryEvent, GenieAgentEvent, GenieWriterEvent, GenieWriterEventType, GenieProgressPartData, ToolStatusProgressEvent, ToolProgressEvent, ToolProgressPartData, GenieDatasetData, GenieDatasetChart, GenieDataset, GenieSummaryItem, GenieSummaryItemType, GenieAgentResult } from "./src/wire.ts";
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/shared-mastra";
2
- export declare const PACKAGE_VERSION = "0.9.70";
2
+ export declare const PACKAGE_VERSION = "0.9.72";
3
3
  export * as feedback from "./src/feedback.ts";
4
4
  export * as markers from "./src/markers.ts";
5
5
  export * as override from "./src/override.ts";
@@ -12,5 +12,5 @@ export type { MarkerType, ParsedMarker } from "./src/markers.ts";
12
12
  export { MODEL_OVERRIDE_HEADER, MODEL_OVERRIDE_QUERY, MODEL_OVERRIDE_BODY_FIELDS } from "./src/override.ts";
13
13
  export { MASTRA_ROUTES } from "./src/routes.ts";
14
14
  export { THREAD_ID_HEADER, THREAD_ID_QUERY } from "./src/thread.ts";
15
- export { MastraClientConfigSchema, DefaultModelResponseSchema, ServingEndpointsResponseSchema, MastraSuggestionsResponseSchema, ChartTypeSchema, ChartResultSchema, ChartSchema, StatementDataSchema, StartedEventSchema, AskGenieDoneEventSchema, MastraGenieErrorEventSchema, SummaryEventSchema, GenieAgentEventSchema, GenieWriterEventSchema, GENIE_PROGRESS_PART_TYPE, GenieProgressPartDataSchema, GenieDatasetDataSchema, GenieDatasetChartSchema, GenieDatasetSchema, GenieSummaryItemSchema, GenieAgentResultSchema } from "./src/wire.ts";
16
- export type { MastraClientConfig, DefaultModelResponse, ServingEndpointsResponse, MastraSuggestionsResponse, ChartType, ChartResult, Chart, StatementData, StartedEvent, AskGenieDoneEvent, MastraGenieErrorEvent, SummaryEvent, GenieAgentEvent, GenieWriterEvent, GenieWriterEventType, GenieProgressPartData, GenieDatasetData, GenieDatasetChart, GenieDataset, GenieSummaryItem, GenieSummaryItemType, GenieAgentResult } from "./src/wire.ts";
15
+ export { MastraClientConfigSchema, DefaultModelResponseSchema, ServingEndpointsResponseSchema, MastraSuggestionsResponseSchema, ChartTypeSchema, ChartResultSchema, ChartSchema, StatementDataSchema, StartedEventSchema, AskGenieDoneEventSchema, MastraGenieErrorEventSchema, SummaryEventSchema, GenieAgentEventSchema, GenieWriterEventSchema, GENIE_PROGRESS_PART_TYPE, GenieProgressPartDataSchema, ToolStatusProgressEventSchema, ToolProgressEventSchema, TOOL_PROGRESS_PART_TYPE, ToolProgressPartDataSchema, GenieDatasetDataSchema, GenieDatasetChartSchema, GenieDatasetSchema, GenieSummaryItemSchema, GenieAgentResultSchema } from "./src/wire.ts";
16
+ export type { MastraClientConfig, DefaultModelResponse, ServingEndpointsResponse, MastraSuggestionsResponse, ChartType, ChartResult, Chart, StatementData, StartedEvent, AskGenieDoneEvent, MastraGenieErrorEvent, SummaryEvent, GenieAgentEvent, GenieWriterEvent, GenieWriterEventType, GenieProgressPartData, ToolStatusProgressEvent, ToolProgressEvent, ToolProgressPartData, GenieDatasetData, GenieDatasetChart, GenieDataset, GenieSummaryItem, GenieSummaryItemType, GenieAgentResult } from "./src/wire.ts";
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@
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-mastra";
5
- export const PACKAGE_VERSION = "0.9.70";
5
+ export const PACKAGE_VERSION = "0.9.72";
6
6
  export * as feedback from "./src/feedback.js";
7
7
  export * as markers from "./src/markers.js";
8
8
  export * as override from "./src/override.js";
@@ -13,5 +13,5 @@ export { MLFLOW_TRACE_ID_HEADER, DEFAULT_FEEDBACK_NAME, DEFAULT_COMMENT_NAME, Ma
13
13
  export { MODEL_OVERRIDE_HEADER, MODEL_OVERRIDE_QUERY, MODEL_OVERRIDE_BODY_FIELDS } from "./src/override.js";
14
14
  export { MASTRA_ROUTES } from "./src/routes.js";
15
15
  export { THREAD_ID_HEADER, THREAD_ID_QUERY } from "./src/thread.js";
16
- export { MastraClientConfigSchema, DefaultModelResponseSchema, ServingEndpointsResponseSchema, MastraSuggestionsResponseSchema, ChartTypeSchema, ChartResultSchema, ChartSchema, StatementDataSchema, StartedEventSchema, AskGenieDoneEventSchema, MastraGenieErrorEventSchema, SummaryEventSchema, GenieAgentEventSchema, GenieWriterEventSchema, GENIE_PROGRESS_PART_TYPE, GenieProgressPartDataSchema, GenieDatasetDataSchema, GenieDatasetChartSchema, GenieDatasetSchema, GenieSummaryItemSchema, GenieAgentResultSchema } from "./src/wire.js";
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRywwQkFBMEIsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUseUJBQXlCLEVBQUUsMkJBQTJCLEVBQUUsNEJBQTRCLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdwTyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSwwQkFBMEIsRUFBRSw4QkFBOEIsRUFBRSwrQkFBK0IsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLDJCQUEyQixFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLDJCQUEyQixFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9zaGFyZWQtbWFzdHJhXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuNzBcIjtcbmV4cG9ydCAqIGFzIGZlZWRiYWNrIGZyb20gXCIuL3NyYy9mZWVkYmFjay50c1wiO1xuZXhwb3J0ICogYXMgbWFya2VycyBmcm9tIFwiLi9zcmMvbWFya2Vycy50c1wiO1xuZXhwb3J0ICogYXMgb3ZlcnJpZGUgZnJvbSBcIi4vc3JjL292ZXJyaWRlLnRzXCI7XG5leHBvcnQgKiBhcyByb3V0ZXMgZnJvbSBcIi4vc3JjL3JvdXRlcy50c1wiO1xuZXhwb3J0ICogYXMgdGhyZWFkIGZyb20gXCIuL3NyYy90aHJlYWQudHNcIjtcbmV4cG9ydCAqIGFzIHdpcmUgZnJvbSBcIi4vc3JjL3dpcmUudHNcIjtcbmV4cG9ydCB7IE1MRkxPV19UUkFDRV9JRF9IRUFERVIsIERFRkFVTFRfRkVFREJBQ0tfTkFNRSwgREVGQVVMVF9DT01NRU5UX05BTUUsIE1hc3RyYUZlZWRiYWNrVmFsdWVTY2hlbWEsIE1hc3RyYUZlZWRiYWNrUmVxdWVzdFNjaGVtYSwgTWFzdHJhRmVlZGJhY2tSZXNwb25zZVNjaGVtYSwgTWFzdHJhTWxmbG93RXhwZXJpbWVudFJlc3BvbnNlU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2ZlZWRiYWNrLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYUZlZWRiYWNrVmFsdWUsIE1hc3RyYUZlZWRiYWNrUmVxdWVzdCwgTWFzdHJhRmVlZGJhY2tSZXNwb25zZSwgTWFzdHJhTWxmbG93RXhwZXJpbWVudFJlc3BvbnNlIH0gZnJvbSBcIi4vc3JjL2ZlZWRiYWNrLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hcmtlclR5cGUsIFBhcnNlZE1hcmtlciB9IGZyb20gXCIuL3NyYy9tYXJrZXJzLnRzXCI7XG5leHBvcnQgeyBNT0RFTF9PVkVSUklERV9IRUFERVIsIE1PREVMX09WRVJSSURFX1FVRVJZLCBNT0RFTF9PVkVSUklERV9CT0RZX0ZJRUxEUyB9IGZyb20gXCIuL3NyYy9vdmVycmlkZS50c1wiO1xuZXhwb3J0IHsgTUFTVFJBX1JPVVRFUyB9IGZyb20gXCIuL3NyYy9yb3V0ZXMudHNcIjtcbmV4cG9ydCB7IFRIUkVBRF9JRF9IRUFERVIsIFRIUkVBRF9JRF9RVUVSWSB9IGZyb20gXCIuL3NyYy90aHJlYWQudHNcIjtcbmV4cG9ydCB7IE1hc3RyYUNsaWVudENvbmZpZ1NjaGVtYSwgRGVmYXVsdE1vZGVsUmVzcG9uc2VTY2hlbWEsIFNlcnZpbmdFbmRwb2ludHNSZXNwb25zZVNjaGVtYSwgTWFzdHJhU3VnZ2VzdGlvbnNSZXNwb25zZVNjaGVtYSwgQ2hhcnRUeXBlU2NoZW1hLCBDaGFydFJlc3VsdFNjaGVtYSwgQ2hhcnRTY2hlbWEsIFN0YXRlbWVudERhdGFTY2hlbWEsIFN0YXJ0ZWRFdmVudFNjaGVtYSwgQXNrR2VuaWVEb25lRXZlbnRTY2hlbWEsIE1hc3RyYUdlbmllRXJyb3JFdmVudFNjaGVtYSwgU3VtbWFyeUV2ZW50U2NoZW1hLCBHZW5pZUFnZW50RXZlbnRTY2hlbWEsIEdlbmllV3JpdGVyRXZlbnRTY2hlbWEsIEdFTklFX1BST0dSRVNTX1BBUlRfVFlQRSwgR2VuaWVQcm9ncmVzc1BhcnREYXRhU2NoZW1hLCBHZW5pZURhdGFzZXREYXRhU2NoZW1hLCBHZW5pZURhdGFzZXRDaGFydFNjaGVtYSwgR2VuaWVEYXRhc2V0U2NoZW1hLCBHZW5pZVN1bW1hcnlJdGVtU2NoZW1hLCBHZW5pZUFnZW50UmVzdWx0U2NoZW1hIH0gZnJvbSBcIi4vc3JjL3dpcmUudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFzdHJhQ2xpZW50Q29uZmlnLCBEZWZhdWx0TW9kZWxSZXNwb25zZSwgU2VydmluZ0VuZHBvaW50c1Jlc3BvbnNlLCBNYXN0cmFTdWdnZXN0aW9uc1Jlc3BvbnNlLCBDaGFydFR5cGUsIENoYXJ0UmVzdWx0LCBDaGFydCwgU3RhdGVtZW50RGF0YSwgU3RhcnRlZEV2ZW50LCBBc2tHZW5pZURvbmVFdmVudCwgTWFzdHJhR2VuaWVFcnJvckV2ZW50LCBTdW1tYXJ5RXZlbnQsIEdlbmllQWdlbnRFdmVudCwgR2VuaWVXcml0ZXJFdmVudCwgR2VuaWVXcml0ZXJFdmVudFR5cGUsIEdlbmllUHJvZ3Jlc3NQYXJ0RGF0YSwgR2VuaWVEYXRhc2V0RGF0YSwgR2VuaWVEYXRhc2V0Q2hhcnQsIEdlbmllRGF0YXNldCwgR2VuaWVTdW1tYXJ5SXRlbSwgR2VuaWVTdW1tYXJ5SXRlbVR5cGUsIEdlbmllQWdlbnRSZXN1bHQgfSBmcm9tIFwiLi9zcmMvd2lyZS50c1wiO1xuIl19
16
+ export { MastraClientConfigSchema, DefaultModelResponseSchema, ServingEndpointsResponseSchema, MastraSuggestionsResponseSchema, ChartTypeSchema, ChartResultSchema, ChartSchema, StatementDataSchema, StartedEventSchema, AskGenieDoneEventSchema, MastraGenieErrorEventSchema, SummaryEventSchema, GenieAgentEventSchema, GenieWriterEventSchema, GENIE_PROGRESS_PART_TYPE, GenieProgressPartDataSchema, ToolStatusProgressEventSchema, ToolProgressEventSchema, TOOL_PROGRESS_PART_TYPE, ToolProgressPartDataSchema, GenieDatasetDataSchema, GenieDatasetChartSchema, GenieDatasetSchema, GenieSummaryItemSchema, GenieAgentResultSchema } from "./src/wire.js";
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRywwQkFBMEIsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUseUJBQXlCLEVBQUUsMkJBQTJCLEVBQUUsNEJBQTRCLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdwTyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSwwQkFBMEIsRUFBRSw4QkFBOEIsRUFBRSwrQkFBK0IsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLDJCQUEyQixFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLDJCQUEyQixFQUFFLDZCQUE2QixFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLDBCQUEwQixFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9zaGFyZWQtbWFzdHJhXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuNzJcIjtcbmV4cG9ydCAqIGFzIGZlZWRiYWNrIGZyb20gXCIuL3NyYy9mZWVkYmFjay50c1wiO1xuZXhwb3J0ICogYXMgbWFya2VycyBmcm9tIFwiLi9zcmMvbWFya2Vycy50c1wiO1xuZXhwb3J0ICogYXMgb3ZlcnJpZGUgZnJvbSBcIi4vc3JjL292ZXJyaWRlLnRzXCI7XG5leHBvcnQgKiBhcyByb3V0ZXMgZnJvbSBcIi4vc3JjL3JvdXRlcy50c1wiO1xuZXhwb3J0ICogYXMgdGhyZWFkIGZyb20gXCIuL3NyYy90aHJlYWQudHNcIjtcbmV4cG9ydCAqIGFzIHdpcmUgZnJvbSBcIi4vc3JjL3dpcmUudHNcIjtcbmV4cG9ydCB7IE1MRkxPV19UUkFDRV9JRF9IRUFERVIsIERFRkFVTFRfRkVFREJBQ0tfTkFNRSwgREVGQVVMVF9DT01NRU5UX05BTUUsIE1hc3RyYUZlZWRiYWNrVmFsdWVTY2hlbWEsIE1hc3RyYUZlZWRiYWNrUmVxdWVzdFNjaGVtYSwgTWFzdHJhRmVlZGJhY2tSZXNwb25zZVNjaGVtYSwgTWFzdHJhTWxmbG93RXhwZXJpbWVudFJlc3BvbnNlU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2ZlZWRiYWNrLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYUZlZWRiYWNrVmFsdWUsIE1hc3RyYUZlZWRiYWNrUmVxdWVzdCwgTWFzdHJhRmVlZGJhY2tSZXNwb25zZSwgTWFzdHJhTWxmbG93RXhwZXJpbWVudFJlc3BvbnNlIH0gZnJvbSBcIi4vc3JjL2ZlZWRiYWNrLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hcmtlclR5cGUsIFBhcnNlZE1hcmtlciB9IGZyb20gXCIuL3NyYy9tYXJrZXJzLnRzXCI7XG5leHBvcnQgeyBNT0RFTF9PVkVSUklERV9IRUFERVIsIE1PREVMX09WRVJSSURFX1FVRVJZLCBNT0RFTF9PVkVSUklERV9CT0RZX0ZJRUxEUyB9IGZyb20gXCIuL3NyYy9vdmVycmlkZS50c1wiO1xuZXhwb3J0IHsgTUFTVFJBX1JPVVRFUyB9IGZyb20gXCIuL3NyYy9yb3V0ZXMudHNcIjtcbmV4cG9ydCB7IFRIUkVBRF9JRF9IRUFERVIsIFRIUkVBRF9JRF9RVUVSWSB9IGZyb20gXCIuL3NyYy90aHJlYWQudHNcIjtcbmV4cG9ydCB7IE1hc3RyYUNsaWVudENvbmZpZ1NjaGVtYSwgRGVmYXVsdE1vZGVsUmVzcG9uc2VTY2hlbWEsIFNlcnZpbmdFbmRwb2ludHNSZXNwb25zZVNjaGVtYSwgTWFzdHJhU3VnZ2VzdGlvbnNSZXNwb25zZVNjaGVtYSwgQ2hhcnRUeXBlU2NoZW1hLCBDaGFydFJlc3VsdFNjaGVtYSwgQ2hhcnRTY2hlbWEsIFN0YXRlbWVudERhdGFTY2hlbWEsIFN0YXJ0ZWRFdmVudFNjaGVtYSwgQXNrR2VuaWVEb25lRXZlbnRTY2hlbWEsIE1hc3RyYUdlbmllRXJyb3JFdmVudFNjaGVtYSwgU3VtbWFyeUV2ZW50U2NoZW1hLCBHZW5pZUFnZW50RXZlbnRTY2hlbWEsIEdlbmllV3JpdGVyRXZlbnRTY2hlbWEsIEdFTklFX1BST0dSRVNTX1BBUlRfVFlQRSwgR2VuaWVQcm9ncmVzc1BhcnREYXRhU2NoZW1hLCBUb29sU3RhdHVzUHJvZ3Jlc3NFdmVudFNjaGVtYSwgVG9vbFByb2dyZXNzRXZlbnRTY2hlbWEsIFRPT0xfUFJPR1JFU1NfUEFSVF9UWVBFLCBUb29sUHJvZ3Jlc3NQYXJ0RGF0YVNjaGVtYSwgR2VuaWVEYXRhc2V0RGF0YVNjaGVtYSwgR2VuaWVEYXRhc2V0Q2hhcnRTY2hlbWEsIEdlbmllRGF0YXNldFNjaGVtYSwgR2VuaWVTdW1tYXJ5SXRlbVNjaGVtYSwgR2VuaWVBZ2VudFJlc3VsdFNjaGVtYSB9IGZyb20gXCIuL3NyYy93aXJlLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYUNsaWVudENvbmZpZywgRGVmYXVsdE1vZGVsUmVzcG9uc2UsIFNlcnZpbmdFbmRwb2ludHNSZXNwb25zZSwgTWFzdHJhU3VnZ2VzdGlvbnNSZXNwb25zZSwgQ2hhcnRUeXBlLCBDaGFydFJlc3VsdCwgQ2hhcnQsIFN0YXRlbWVudERhdGEsIFN0YXJ0ZWRFdmVudCwgQXNrR2VuaWVEb25lRXZlbnQsIE1hc3RyYUdlbmllRXJyb3JFdmVudCwgU3VtbWFyeUV2ZW50LCBHZW5pZUFnZW50RXZlbnQsIEdlbmllV3JpdGVyRXZlbnQsIEdlbmllV3JpdGVyRXZlbnRUeXBlLCBHZW5pZVByb2dyZXNzUGFydERhdGEsIFRvb2xTdGF0dXNQcm9ncmVzc0V2ZW50LCBUb29sUHJvZ3Jlc3NFdmVudCwgVG9vbFByb2dyZXNzUGFydERhdGEsIEdlbmllRGF0YXNldERhdGEsIEdlbmllRGF0YXNldENoYXJ0LCBHZW5pZURhdGFzZXQsIEdlbmllU3VtbWFyeUl0ZW0sIEdlbmllU3VtbWFyeUl0ZW1UeXBlLCBHZW5pZUFnZW50UmVzdWx0IH0gZnJvbSBcIi4vc3JjL3dpcmUudHNcIjtcbiJdfQ==
package/lib/src/wire.d.ts CHANGED
@@ -823,6 +823,498 @@ export declare const GenieProgressPartDataSchema: z.ZodObject<{
823
823
  }, z.core.$strip>;
824
824
  /** Validated payload carried by a native Genie progress data part. */
825
825
  export type GenieProgressPartData = z.infer<typeof GenieProgressPartDataSchema>;
826
+ /** Generic progress status emitted by non-Genie agent tools. */
827
+ export declare const ToolStatusProgressEventSchema: z.ZodObject<{
828
+ type: z.ZodLiteral<"tool_status">;
829
+ status: z.ZodString;
830
+ message: z.ZodString;
831
+ url: z.ZodOptional<z.ZodString>;
832
+ groupId: z.ZodOptional<z.ZodString>;
833
+ detail: z.ZodOptional<z.ZodString>;
834
+ }, z.core.$strip>;
835
+ /** Generic progress status emitted by non-Genie agent tools. */
836
+ export type ToolStatusProgressEvent = z.infer<typeof ToolStatusProgressEventSchema>;
837
+ /** Complete progress vocabulary rendered by the common tool-session pill. */
838
+ export declare const ToolProgressEventSchema: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
839
+ conversation_id: z.ZodOptional<z.ZodString>;
840
+ space_id: z.ZodString;
841
+ message_id: z.ZodOptional<z.ZodString>;
842
+ type: z.ZodLiteral<"question">;
843
+ content: z.ZodString;
844
+ }, z.core.$strip>, z.ZodObject<{
845
+ conversation_id: z.ZodOptional<z.ZodString>;
846
+ space_id: z.ZodString;
847
+ message_id: z.ZodOptional<z.ZodString>;
848
+ type: z.ZodLiteral<"message">;
849
+ message: z.ZodObject<{
850
+ content: z.ZodString;
851
+ conversation_id: z.ZodString;
852
+ created_timestamp: z.ZodOptional<z.ZodNumber>;
853
+ error: z.ZodOptional<z.ZodObject<{
854
+ error: z.ZodOptional<z.ZodString>;
855
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"BLOCK_MULTIPLE_EXECUTIONS_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_TIMEOUT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_NETWORK_EXCEPTION">, z.ZodLiteral<"CONTENT_FILTER_EXCEPTION">, z.ZodLiteral<"CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_MODEL_DEPLOYMENTS_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_UC_SCHEMA_EXCEPTION">, z.ZodLiteral<"DEPLOYMENT_NOT_FOUND_EXCEPTION">, z.ZodLiteral<"DESCRIBE_QUERY_INVALID_SQL_ERROR">, z.ZodLiteral<"DESCRIBE_QUERY_TIMEOUT">, z.ZodLiteral<"DESCRIBE_QUERY_UNEXPECTED_FAILURE">, z.ZodLiteral<"EXCEEDED_MAX_TOKEN_LENGTH_EXCEPTION">, z.ZodLiteral<"FUNCTIONS_NOT_AVAILABLE_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_JSON_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_TYPE_EXCEPTION">, z.ZodLiteral<"FUNCTION_CALL_MISSING_PARAMETER_EXCEPTION">, z.ZodLiteral<"GENERATED_SQL_QUERY_TOO_LONG_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION">, z.ZodLiteral<"GENERIC_SQL_EXEC_API_CALL_EXCEPTION">, z.ZodLiteral<"ILLEGAL_PARAMETER_DEFINITION_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_FAILED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_ONGOING_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_UNSUPPORTED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_MISSING_UC_PATH_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_PATH_OVERLAP_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_FUNCTION_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_ARGUMENTS_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_COMPLETION_REQUEST_EXCEPTION">, z.ZodLiteral<"INVALID_FUNCTION_CALL_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_DATASET_REFERENCES_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_STATEMENTS_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_UNKNOWN_TABLE_EXCEPTION">, z.ZodLiteral<"INVALID_TABLE_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"LOCAL_CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"MESSAGE_ATTACHMENT_TOO_LONG_ERROR">, z.ZodLiteral<"MESSAGE_CANCELLED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_DELETED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_UPDATED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MISSING_SQL_QUERY_EXCEPTION">, z.ZodLiteral<"NO_DEPLOYMENTS_AVAILABLE_TO_WORKSPACE">, z.ZodLiteral<"NO_QUERY_TO_VISUALIZE_EXCEPTION">, z.ZodLiteral<"NO_TABLES_TO_QUERY_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_GENERIC_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_SPECIFIED_WAIT_EXCEPTION">, z.ZodLiteral<"REPLY_PROCESS_TIMEOUT_EXCEPTION">, z.ZodLiteral<"RETRYABLE_PROCESSING_EXCEPTION">, z.ZodLiteral<"SQL_EXECUTION_EXCEPTION">, z.ZodLiteral<"STOP_PROCESS_DUE_TO_AUTO_REGENERATE">, z.ZodLiteral<"TABLES_MISSING_EXCEPTION">, z.ZodLiteral<"TOO_MANY_CERTIFIED_ANSWERS_EXCEPTION">, z.ZodLiteral<"TOO_MANY_TABLES_EXCEPTION">, z.ZodLiteral<"UNEXPECTED_REPLY_PROCESS_EXCEPTION">, z.ZodLiteral<"UNKNOWN_AI_MODEL">, z.ZodLiteral<"UNSUPPORTED_CONVERSATION_TYPE_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_ACCESS_MISSING_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_NOT_FOUND_EXCEPTION">]>>;
856
+ }, z.core.$strip>>;
857
+ feedback: z.ZodOptional<z.ZodObject<{
858
+ rating: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"NEGATIVE">, z.ZodLiteral<"NONE">, z.ZodLiteral<"POSITIVE">]>>;
859
+ }, z.core.$strip>>;
860
+ id: z.ZodString;
861
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
862
+ message_id: z.ZodString;
863
+ query_result: z.ZodOptional<z.ZodObject<{
864
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
865
+ row_count: z.ZodOptional<z.ZodNumber>;
866
+ statement_id: z.ZodOptional<z.ZodString>;
867
+ statement_id_signature: z.ZodOptional<z.ZodString>;
868
+ }, z.core.$strip>>;
869
+ space_id: z.ZodString;
870
+ status: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>>;
871
+ user_id: z.ZodOptional<z.ZodNumber>;
872
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
873
+ attachment_id: z.ZodOptional<z.ZodString>;
874
+ suggested_questions: z.ZodOptional<z.ZodObject<{
875
+ questions: z.ZodOptional<z.ZodArray<z.ZodString>>;
876
+ }, z.core.$strip>>;
877
+ query: z.ZodOptional<z.ZodObject<{
878
+ description: z.ZodOptional<z.ZodString>;
879
+ id: z.ZodOptional<z.ZodString>;
880
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
881
+ parameters: z.ZodOptional<z.ZodArray<z.ZodObject<{
882
+ keyword: z.ZodOptional<z.ZodString>;
883
+ sql_type: z.ZodOptional<z.ZodString>;
884
+ value: z.ZodOptional<z.ZodString>;
885
+ }, z.core.$strip>>>;
886
+ query: z.ZodOptional<z.ZodString>;
887
+ query_result_metadata: z.ZodOptional<z.ZodObject<{
888
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
889
+ row_count: z.ZodOptional<z.ZodNumber>;
890
+ }, z.core.$strip>>;
891
+ statement_id: z.ZodOptional<z.ZodString>;
892
+ title: z.ZodOptional<z.ZodString>;
893
+ thoughts: z.ZodOptional<z.ZodArray<z.ZodObject<{
894
+ thought_type: z.ZodString;
895
+ content: z.ZodString;
896
+ }, z.core.$strip>>>;
897
+ }, z.core.$strip>>;
898
+ text: z.ZodOptional<z.ZodObject<{
899
+ content: z.ZodOptional<z.ZodString>;
900
+ id: z.ZodOptional<z.ZodString>;
901
+ purpose: z.ZodOptional<z.ZodString>;
902
+ metadata: z.ZodOptional<z.ZodUnknown>;
903
+ }, z.core.$strip>>;
904
+ attachment_type: z.ZodOptional<z.ZodString>;
905
+ }, z.core.$strip>>>;
906
+ auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
907
+ }, z.core.$strip>;
908
+ }, z.core.$strip>, z.ZodObject<{
909
+ conversation_id: z.ZodOptional<z.ZodString>;
910
+ space_id: z.ZodString;
911
+ message_id: z.ZodOptional<z.ZodString>;
912
+ type: z.ZodLiteral<"status">;
913
+ status: z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>;
914
+ previous_status: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>>;
915
+ }, z.core.$strip>, z.ZodObject<{
916
+ space_id: z.ZodString;
917
+ conversation_id: z.ZodOptional<z.ZodString>;
918
+ message_id: z.ZodOptional<z.ZodString>;
919
+ attachment_id: z.ZodOptional<z.ZodString>;
920
+ type: z.ZodLiteral<"attachment">;
921
+ index: z.ZodNumber;
922
+ attachment_type: z.ZodString;
923
+ }, z.core.$strip>, z.ZodObject<{
924
+ space_id: z.ZodString;
925
+ conversation_id: z.ZodOptional<z.ZodString>;
926
+ message_id: z.ZodOptional<z.ZodString>;
927
+ attachment_id: z.ZodOptional<z.ZodString>;
928
+ type: z.ZodLiteral<"thinking">;
929
+ text: z.ZodString;
930
+ thought_type: z.ZodString;
931
+ }, z.core.$strip>, z.ZodObject<{
932
+ space_id: z.ZodString;
933
+ conversation_id: z.ZodOptional<z.ZodString>;
934
+ message_id: z.ZodOptional<z.ZodString>;
935
+ attachment_id: z.ZodOptional<z.ZodString>;
936
+ type: z.ZodLiteral<"text">;
937
+ text: z.ZodString;
938
+ }, z.core.$strip>, z.ZodObject<{
939
+ space_id: z.ZodString;
940
+ conversation_id: z.ZodOptional<z.ZodString>;
941
+ message_id: z.ZodOptional<z.ZodString>;
942
+ attachment_id: z.ZodOptional<z.ZodString>;
943
+ type: z.ZodLiteral<"query">;
944
+ sql: z.ZodString;
945
+ title: z.ZodOptional<z.ZodString>;
946
+ description: z.ZodOptional<z.ZodString>;
947
+ }, z.core.$strip>, z.ZodObject<{
948
+ space_id: z.ZodString;
949
+ conversation_id: z.ZodOptional<z.ZodString>;
950
+ message_id: z.ZodOptional<z.ZodString>;
951
+ attachment_id: z.ZodOptional<z.ZodString>;
952
+ type: z.ZodLiteral<"statement">;
953
+ statement_id: z.ZodString;
954
+ }, z.core.$strip>, z.ZodObject<{
955
+ space_id: z.ZodString;
956
+ conversation_id: z.ZodOptional<z.ZodString>;
957
+ message_id: z.ZodOptional<z.ZodString>;
958
+ attachment_id: z.ZodOptional<z.ZodString>;
959
+ type: z.ZodLiteral<"rows">;
960
+ row_count: z.ZodNumber;
961
+ previous_row_count: z.ZodOptional<z.ZodNumber>;
962
+ statement_id: z.ZodOptional<z.ZodString>;
963
+ }, z.core.$strip>, z.ZodObject<{
964
+ space_id: z.ZodString;
965
+ conversation_id: z.ZodOptional<z.ZodString>;
966
+ message_id: z.ZodOptional<z.ZodString>;
967
+ attachment_id: z.ZodOptional<z.ZodString>;
968
+ type: z.ZodLiteral<"suggested_questions">;
969
+ questions: z.ZodArray<z.ZodString>;
970
+ }, z.core.$strip>, z.ZodObject<{
971
+ conversation_id: z.ZodOptional<z.ZodString>;
972
+ space_id: z.ZodString;
973
+ message_id: z.ZodOptional<z.ZodString>;
974
+ type: z.ZodLiteral<"result">;
975
+ status: z.ZodEnum<{
976
+ CANCELLED: "CANCELLED";
977
+ COMPLETED: "COMPLETED";
978
+ FAILED: "FAILED";
979
+ }>;
980
+ message: z.ZodObject<{
981
+ content: z.ZodString;
982
+ conversation_id: z.ZodString;
983
+ created_timestamp: z.ZodOptional<z.ZodNumber>;
984
+ error: z.ZodOptional<z.ZodObject<{
985
+ error: z.ZodOptional<z.ZodString>;
986
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"BLOCK_MULTIPLE_EXECUTIONS_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_TIMEOUT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_NETWORK_EXCEPTION">, z.ZodLiteral<"CONTENT_FILTER_EXCEPTION">, z.ZodLiteral<"CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_MODEL_DEPLOYMENTS_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_UC_SCHEMA_EXCEPTION">, z.ZodLiteral<"DEPLOYMENT_NOT_FOUND_EXCEPTION">, z.ZodLiteral<"DESCRIBE_QUERY_INVALID_SQL_ERROR">, z.ZodLiteral<"DESCRIBE_QUERY_TIMEOUT">, z.ZodLiteral<"DESCRIBE_QUERY_UNEXPECTED_FAILURE">, z.ZodLiteral<"EXCEEDED_MAX_TOKEN_LENGTH_EXCEPTION">, z.ZodLiteral<"FUNCTIONS_NOT_AVAILABLE_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_JSON_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_TYPE_EXCEPTION">, z.ZodLiteral<"FUNCTION_CALL_MISSING_PARAMETER_EXCEPTION">, z.ZodLiteral<"GENERATED_SQL_QUERY_TOO_LONG_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION">, z.ZodLiteral<"GENERIC_SQL_EXEC_API_CALL_EXCEPTION">, z.ZodLiteral<"ILLEGAL_PARAMETER_DEFINITION_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_FAILED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_ONGOING_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_UNSUPPORTED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_MISSING_UC_PATH_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_PATH_OVERLAP_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_FUNCTION_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_ARGUMENTS_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_COMPLETION_REQUEST_EXCEPTION">, z.ZodLiteral<"INVALID_FUNCTION_CALL_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_DATASET_REFERENCES_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_STATEMENTS_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_UNKNOWN_TABLE_EXCEPTION">, z.ZodLiteral<"INVALID_TABLE_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"LOCAL_CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"MESSAGE_ATTACHMENT_TOO_LONG_ERROR">, z.ZodLiteral<"MESSAGE_CANCELLED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_DELETED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_UPDATED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MISSING_SQL_QUERY_EXCEPTION">, z.ZodLiteral<"NO_DEPLOYMENTS_AVAILABLE_TO_WORKSPACE">, z.ZodLiteral<"NO_QUERY_TO_VISUALIZE_EXCEPTION">, z.ZodLiteral<"NO_TABLES_TO_QUERY_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_GENERIC_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_SPECIFIED_WAIT_EXCEPTION">, z.ZodLiteral<"REPLY_PROCESS_TIMEOUT_EXCEPTION">, z.ZodLiteral<"RETRYABLE_PROCESSING_EXCEPTION">, z.ZodLiteral<"SQL_EXECUTION_EXCEPTION">, z.ZodLiteral<"STOP_PROCESS_DUE_TO_AUTO_REGENERATE">, z.ZodLiteral<"TABLES_MISSING_EXCEPTION">, z.ZodLiteral<"TOO_MANY_CERTIFIED_ANSWERS_EXCEPTION">, z.ZodLiteral<"TOO_MANY_TABLES_EXCEPTION">, z.ZodLiteral<"UNEXPECTED_REPLY_PROCESS_EXCEPTION">, z.ZodLiteral<"UNKNOWN_AI_MODEL">, z.ZodLiteral<"UNSUPPORTED_CONVERSATION_TYPE_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_ACCESS_MISSING_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_NOT_FOUND_EXCEPTION">]>>;
987
+ }, z.core.$strip>>;
988
+ feedback: z.ZodOptional<z.ZodObject<{
989
+ rating: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"NEGATIVE">, z.ZodLiteral<"NONE">, z.ZodLiteral<"POSITIVE">]>>;
990
+ }, z.core.$strip>>;
991
+ id: z.ZodString;
992
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
993
+ message_id: z.ZodString;
994
+ query_result: z.ZodOptional<z.ZodObject<{
995
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
996
+ row_count: z.ZodOptional<z.ZodNumber>;
997
+ statement_id: z.ZodOptional<z.ZodString>;
998
+ statement_id_signature: z.ZodOptional<z.ZodString>;
999
+ }, z.core.$strip>>;
1000
+ space_id: z.ZodString;
1001
+ status: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>>;
1002
+ user_id: z.ZodOptional<z.ZodNumber>;
1003
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1004
+ attachment_id: z.ZodOptional<z.ZodString>;
1005
+ suggested_questions: z.ZodOptional<z.ZodObject<{
1006
+ questions: z.ZodOptional<z.ZodArray<z.ZodString>>;
1007
+ }, z.core.$strip>>;
1008
+ query: z.ZodOptional<z.ZodObject<{
1009
+ description: z.ZodOptional<z.ZodString>;
1010
+ id: z.ZodOptional<z.ZodString>;
1011
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
1012
+ parameters: z.ZodOptional<z.ZodArray<z.ZodObject<{
1013
+ keyword: z.ZodOptional<z.ZodString>;
1014
+ sql_type: z.ZodOptional<z.ZodString>;
1015
+ value: z.ZodOptional<z.ZodString>;
1016
+ }, z.core.$strip>>>;
1017
+ query: z.ZodOptional<z.ZodString>;
1018
+ query_result_metadata: z.ZodOptional<z.ZodObject<{
1019
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
1020
+ row_count: z.ZodOptional<z.ZodNumber>;
1021
+ }, z.core.$strip>>;
1022
+ statement_id: z.ZodOptional<z.ZodString>;
1023
+ title: z.ZodOptional<z.ZodString>;
1024
+ thoughts: z.ZodOptional<z.ZodArray<z.ZodObject<{
1025
+ thought_type: z.ZodString;
1026
+ content: z.ZodString;
1027
+ }, z.core.$strip>>>;
1028
+ }, z.core.$strip>>;
1029
+ text: z.ZodOptional<z.ZodObject<{
1030
+ content: z.ZodOptional<z.ZodString>;
1031
+ id: z.ZodOptional<z.ZodString>;
1032
+ purpose: z.ZodOptional<z.ZodString>;
1033
+ metadata: z.ZodOptional<z.ZodUnknown>;
1034
+ }, z.core.$strip>>;
1035
+ attachment_type: z.ZodOptional<z.ZodString>;
1036
+ }, z.core.$strip>>>;
1037
+ auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
1038
+ }, z.core.$strip>;
1039
+ }, z.core.$strip>], "type">, z.ZodDiscriminatedUnion<[z.ZodObject<{
1040
+ type: z.ZodLiteral<"started">;
1041
+ spaceId: z.ZodString;
1042
+ conversationId: z.ZodOptional<z.ZodString>;
1043
+ messageId: z.ZodOptional<z.ZodString>;
1044
+ content: z.ZodString;
1045
+ }, z.core.$strip>, z.ZodObject<{
1046
+ type: z.ZodLiteral<"ask_genie_done">;
1047
+ spaceId: z.ZodString;
1048
+ conversationId: z.ZodOptional<z.ZodString>;
1049
+ messageId: z.ZodOptional<z.ZodString>;
1050
+ answer: z.ZodOptional<z.ZodString>;
1051
+ statementIds: z.ZodArray<z.ZodString>;
1052
+ status: z.ZodCustom<"ASKING_AI" | "CANCELLED" | "COMPLETED" | "EXECUTING_QUERY" | "FAILED" | "FETCHING_METADATA" | "FILTERING_CONTEXT" | "PENDING_WAREHOUSE" | "QUERY_RESULT_EXPIRED" | "SUBMITTED", "ASKING_AI" | "CANCELLED" | "COMPLETED" | "EXECUTING_QUERY" | "FAILED" | "FETCHING_METADATA" | "FILTERING_CONTEXT" | "PENDING_WAREHOUSE" | "QUERY_RESULT_EXPIRED" | "SUBMITTED">;
1053
+ }, z.core.$strip>, z.ZodObject<{
1054
+ type: z.ZodLiteral<"error">;
1055
+ spaceId: z.ZodOptional<z.ZodString>;
1056
+ conversationId: z.ZodOptional<z.ZodString>;
1057
+ messageId: z.ZodOptional<z.ZodString>;
1058
+ error: z.ZodString;
1059
+ }, z.core.$strip>, z.ZodObject<{
1060
+ type: z.ZodLiteral<"summary">;
1061
+ spaceId: z.ZodString;
1062
+ items: z.ZodNumber;
1063
+ textItems: z.ZodNumber;
1064
+ dataItems: z.ZodNumber;
1065
+ }, z.core.$strip>], "type">]>, z.ZodObject<{
1066
+ type: z.ZodLiteral<"tool_status">;
1067
+ status: z.ZodString;
1068
+ message: z.ZodString;
1069
+ url: z.ZodOptional<z.ZodString>;
1070
+ groupId: z.ZodOptional<z.ZodString>;
1071
+ detail: z.ZodOptional<z.ZodString>;
1072
+ }, z.core.$strip>]>;
1073
+ /** Complete progress event rendered by the common tool-session pill. */
1074
+ export type ToolProgressEvent = z.infer<typeof ToolProgressEventSchema>;
1075
+ /** Native AI SDK custom data-part type carrying generic tool progress. */
1076
+ export declare const TOOL_PROGRESS_PART_TYPE: "data-tool-progress";
1077
+ /** Data attached to {@link TOOL_PROGRESS_PART_TYPE}. */
1078
+ export declare const ToolProgressPartDataSchema: z.ZodObject<{
1079
+ toolCallId: z.ZodString;
1080
+ event: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
1081
+ conversation_id: z.ZodOptional<z.ZodString>;
1082
+ space_id: z.ZodString;
1083
+ message_id: z.ZodOptional<z.ZodString>;
1084
+ type: z.ZodLiteral<"question">;
1085
+ content: z.ZodString;
1086
+ }, z.core.$strip>, z.ZodObject<{
1087
+ conversation_id: z.ZodOptional<z.ZodString>;
1088
+ space_id: z.ZodString;
1089
+ message_id: z.ZodOptional<z.ZodString>;
1090
+ type: z.ZodLiteral<"message">;
1091
+ message: z.ZodObject<{
1092
+ content: z.ZodString;
1093
+ conversation_id: z.ZodString;
1094
+ created_timestamp: z.ZodOptional<z.ZodNumber>;
1095
+ error: z.ZodOptional<z.ZodObject<{
1096
+ error: z.ZodOptional<z.ZodString>;
1097
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"BLOCK_MULTIPLE_EXECUTIONS_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_TIMEOUT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_NETWORK_EXCEPTION">, z.ZodLiteral<"CONTENT_FILTER_EXCEPTION">, z.ZodLiteral<"CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_MODEL_DEPLOYMENTS_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_UC_SCHEMA_EXCEPTION">, z.ZodLiteral<"DEPLOYMENT_NOT_FOUND_EXCEPTION">, z.ZodLiteral<"DESCRIBE_QUERY_INVALID_SQL_ERROR">, z.ZodLiteral<"DESCRIBE_QUERY_TIMEOUT">, z.ZodLiteral<"DESCRIBE_QUERY_UNEXPECTED_FAILURE">, z.ZodLiteral<"EXCEEDED_MAX_TOKEN_LENGTH_EXCEPTION">, z.ZodLiteral<"FUNCTIONS_NOT_AVAILABLE_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_JSON_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_TYPE_EXCEPTION">, z.ZodLiteral<"FUNCTION_CALL_MISSING_PARAMETER_EXCEPTION">, z.ZodLiteral<"GENERATED_SQL_QUERY_TOO_LONG_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION">, z.ZodLiteral<"GENERIC_SQL_EXEC_API_CALL_EXCEPTION">, z.ZodLiteral<"ILLEGAL_PARAMETER_DEFINITION_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_FAILED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_ONGOING_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_UNSUPPORTED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_MISSING_UC_PATH_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_PATH_OVERLAP_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_FUNCTION_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_ARGUMENTS_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_COMPLETION_REQUEST_EXCEPTION">, z.ZodLiteral<"INVALID_FUNCTION_CALL_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_DATASET_REFERENCES_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_STATEMENTS_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_UNKNOWN_TABLE_EXCEPTION">, z.ZodLiteral<"INVALID_TABLE_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"LOCAL_CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"MESSAGE_ATTACHMENT_TOO_LONG_ERROR">, z.ZodLiteral<"MESSAGE_CANCELLED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_DELETED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_UPDATED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MISSING_SQL_QUERY_EXCEPTION">, z.ZodLiteral<"NO_DEPLOYMENTS_AVAILABLE_TO_WORKSPACE">, z.ZodLiteral<"NO_QUERY_TO_VISUALIZE_EXCEPTION">, z.ZodLiteral<"NO_TABLES_TO_QUERY_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_GENERIC_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_SPECIFIED_WAIT_EXCEPTION">, z.ZodLiteral<"REPLY_PROCESS_TIMEOUT_EXCEPTION">, z.ZodLiteral<"RETRYABLE_PROCESSING_EXCEPTION">, z.ZodLiteral<"SQL_EXECUTION_EXCEPTION">, z.ZodLiteral<"STOP_PROCESS_DUE_TO_AUTO_REGENERATE">, z.ZodLiteral<"TABLES_MISSING_EXCEPTION">, z.ZodLiteral<"TOO_MANY_CERTIFIED_ANSWERS_EXCEPTION">, z.ZodLiteral<"TOO_MANY_TABLES_EXCEPTION">, z.ZodLiteral<"UNEXPECTED_REPLY_PROCESS_EXCEPTION">, z.ZodLiteral<"UNKNOWN_AI_MODEL">, z.ZodLiteral<"UNSUPPORTED_CONVERSATION_TYPE_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_ACCESS_MISSING_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_NOT_FOUND_EXCEPTION">]>>;
1098
+ }, z.core.$strip>>;
1099
+ feedback: z.ZodOptional<z.ZodObject<{
1100
+ rating: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"NEGATIVE">, z.ZodLiteral<"NONE">, z.ZodLiteral<"POSITIVE">]>>;
1101
+ }, z.core.$strip>>;
1102
+ id: z.ZodString;
1103
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
1104
+ message_id: z.ZodString;
1105
+ query_result: z.ZodOptional<z.ZodObject<{
1106
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
1107
+ row_count: z.ZodOptional<z.ZodNumber>;
1108
+ statement_id: z.ZodOptional<z.ZodString>;
1109
+ statement_id_signature: z.ZodOptional<z.ZodString>;
1110
+ }, z.core.$strip>>;
1111
+ space_id: z.ZodString;
1112
+ status: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>>;
1113
+ user_id: z.ZodOptional<z.ZodNumber>;
1114
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1115
+ attachment_id: z.ZodOptional<z.ZodString>;
1116
+ suggested_questions: z.ZodOptional<z.ZodObject<{
1117
+ questions: z.ZodOptional<z.ZodArray<z.ZodString>>;
1118
+ }, z.core.$strip>>;
1119
+ query: z.ZodOptional<z.ZodObject<{
1120
+ description: z.ZodOptional<z.ZodString>;
1121
+ id: z.ZodOptional<z.ZodString>;
1122
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
1123
+ parameters: z.ZodOptional<z.ZodArray<z.ZodObject<{
1124
+ keyword: z.ZodOptional<z.ZodString>;
1125
+ sql_type: z.ZodOptional<z.ZodString>;
1126
+ value: z.ZodOptional<z.ZodString>;
1127
+ }, z.core.$strip>>>;
1128
+ query: z.ZodOptional<z.ZodString>;
1129
+ query_result_metadata: z.ZodOptional<z.ZodObject<{
1130
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
1131
+ row_count: z.ZodOptional<z.ZodNumber>;
1132
+ }, z.core.$strip>>;
1133
+ statement_id: z.ZodOptional<z.ZodString>;
1134
+ title: z.ZodOptional<z.ZodString>;
1135
+ thoughts: z.ZodOptional<z.ZodArray<z.ZodObject<{
1136
+ thought_type: z.ZodString;
1137
+ content: z.ZodString;
1138
+ }, z.core.$strip>>>;
1139
+ }, z.core.$strip>>;
1140
+ text: z.ZodOptional<z.ZodObject<{
1141
+ content: z.ZodOptional<z.ZodString>;
1142
+ id: z.ZodOptional<z.ZodString>;
1143
+ purpose: z.ZodOptional<z.ZodString>;
1144
+ metadata: z.ZodOptional<z.ZodUnknown>;
1145
+ }, z.core.$strip>>;
1146
+ attachment_type: z.ZodOptional<z.ZodString>;
1147
+ }, z.core.$strip>>>;
1148
+ auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
1149
+ }, z.core.$strip>;
1150
+ }, z.core.$strip>, z.ZodObject<{
1151
+ conversation_id: z.ZodOptional<z.ZodString>;
1152
+ space_id: z.ZodString;
1153
+ message_id: z.ZodOptional<z.ZodString>;
1154
+ type: z.ZodLiteral<"status">;
1155
+ status: z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>;
1156
+ previous_status: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>>;
1157
+ }, z.core.$strip>, z.ZodObject<{
1158
+ space_id: z.ZodString;
1159
+ conversation_id: z.ZodOptional<z.ZodString>;
1160
+ message_id: z.ZodOptional<z.ZodString>;
1161
+ attachment_id: z.ZodOptional<z.ZodString>;
1162
+ type: z.ZodLiteral<"attachment">;
1163
+ index: z.ZodNumber;
1164
+ attachment_type: z.ZodString;
1165
+ }, z.core.$strip>, z.ZodObject<{
1166
+ space_id: z.ZodString;
1167
+ conversation_id: z.ZodOptional<z.ZodString>;
1168
+ message_id: z.ZodOptional<z.ZodString>;
1169
+ attachment_id: z.ZodOptional<z.ZodString>;
1170
+ type: z.ZodLiteral<"thinking">;
1171
+ text: z.ZodString;
1172
+ thought_type: z.ZodString;
1173
+ }, z.core.$strip>, z.ZodObject<{
1174
+ space_id: z.ZodString;
1175
+ conversation_id: z.ZodOptional<z.ZodString>;
1176
+ message_id: z.ZodOptional<z.ZodString>;
1177
+ attachment_id: z.ZodOptional<z.ZodString>;
1178
+ type: z.ZodLiteral<"text">;
1179
+ text: z.ZodString;
1180
+ }, z.core.$strip>, z.ZodObject<{
1181
+ space_id: z.ZodString;
1182
+ conversation_id: z.ZodOptional<z.ZodString>;
1183
+ message_id: z.ZodOptional<z.ZodString>;
1184
+ attachment_id: z.ZodOptional<z.ZodString>;
1185
+ type: z.ZodLiteral<"query">;
1186
+ sql: z.ZodString;
1187
+ title: z.ZodOptional<z.ZodString>;
1188
+ description: z.ZodOptional<z.ZodString>;
1189
+ }, z.core.$strip>, z.ZodObject<{
1190
+ space_id: z.ZodString;
1191
+ conversation_id: z.ZodOptional<z.ZodString>;
1192
+ message_id: z.ZodOptional<z.ZodString>;
1193
+ attachment_id: z.ZodOptional<z.ZodString>;
1194
+ type: z.ZodLiteral<"statement">;
1195
+ statement_id: z.ZodString;
1196
+ }, z.core.$strip>, z.ZodObject<{
1197
+ space_id: z.ZodString;
1198
+ conversation_id: z.ZodOptional<z.ZodString>;
1199
+ message_id: z.ZodOptional<z.ZodString>;
1200
+ attachment_id: z.ZodOptional<z.ZodString>;
1201
+ type: z.ZodLiteral<"rows">;
1202
+ row_count: z.ZodNumber;
1203
+ previous_row_count: z.ZodOptional<z.ZodNumber>;
1204
+ statement_id: z.ZodOptional<z.ZodString>;
1205
+ }, z.core.$strip>, z.ZodObject<{
1206
+ space_id: z.ZodString;
1207
+ conversation_id: z.ZodOptional<z.ZodString>;
1208
+ message_id: z.ZodOptional<z.ZodString>;
1209
+ attachment_id: z.ZodOptional<z.ZodString>;
1210
+ type: z.ZodLiteral<"suggested_questions">;
1211
+ questions: z.ZodArray<z.ZodString>;
1212
+ }, z.core.$strip>, z.ZodObject<{
1213
+ conversation_id: z.ZodOptional<z.ZodString>;
1214
+ space_id: z.ZodString;
1215
+ message_id: z.ZodOptional<z.ZodString>;
1216
+ type: z.ZodLiteral<"result">;
1217
+ status: z.ZodEnum<{
1218
+ CANCELLED: "CANCELLED";
1219
+ COMPLETED: "COMPLETED";
1220
+ FAILED: "FAILED";
1221
+ }>;
1222
+ message: z.ZodObject<{
1223
+ content: z.ZodString;
1224
+ conversation_id: z.ZodString;
1225
+ created_timestamp: z.ZodOptional<z.ZodNumber>;
1226
+ error: z.ZodOptional<z.ZodObject<{
1227
+ error: z.ZodOptional<z.ZodString>;
1228
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"BLOCK_MULTIPLE_EXECUTIONS_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_TIMEOUT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_NETWORK_EXCEPTION">, z.ZodLiteral<"CONTENT_FILTER_EXCEPTION">, z.ZodLiteral<"CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_MODEL_DEPLOYMENTS_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_UC_SCHEMA_EXCEPTION">, z.ZodLiteral<"DEPLOYMENT_NOT_FOUND_EXCEPTION">, z.ZodLiteral<"DESCRIBE_QUERY_INVALID_SQL_ERROR">, z.ZodLiteral<"DESCRIBE_QUERY_TIMEOUT">, z.ZodLiteral<"DESCRIBE_QUERY_UNEXPECTED_FAILURE">, z.ZodLiteral<"EXCEEDED_MAX_TOKEN_LENGTH_EXCEPTION">, z.ZodLiteral<"FUNCTIONS_NOT_AVAILABLE_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_JSON_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_TYPE_EXCEPTION">, z.ZodLiteral<"FUNCTION_CALL_MISSING_PARAMETER_EXCEPTION">, z.ZodLiteral<"GENERATED_SQL_QUERY_TOO_LONG_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION">, z.ZodLiteral<"GENERIC_SQL_EXEC_API_CALL_EXCEPTION">, z.ZodLiteral<"ILLEGAL_PARAMETER_DEFINITION_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_FAILED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_ONGOING_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_UNSUPPORTED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_MISSING_UC_PATH_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_PATH_OVERLAP_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_FUNCTION_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_ARGUMENTS_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_COMPLETION_REQUEST_EXCEPTION">, z.ZodLiteral<"INVALID_FUNCTION_CALL_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_DATASET_REFERENCES_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_STATEMENTS_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_UNKNOWN_TABLE_EXCEPTION">, z.ZodLiteral<"INVALID_TABLE_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"LOCAL_CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"MESSAGE_ATTACHMENT_TOO_LONG_ERROR">, z.ZodLiteral<"MESSAGE_CANCELLED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_DELETED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_UPDATED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MISSING_SQL_QUERY_EXCEPTION">, z.ZodLiteral<"NO_DEPLOYMENTS_AVAILABLE_TO_WORKSPACE">, z.ZodLiteral<"NO_QUERY_TO_VISUALIZE_EXCEPTION">, z.ZodLiteral<"NO_TABLES_TO_QUERY_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_GENERIC_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_SPECIFIED_WAIT_EXCEPTION">, z.ZodLiteral<"REPLY_PROCESS_TIMEOUT_EXCEPTION">, z.ZodLiteral<"RETRYABLE_PROCESSING_EXCEPTION">, z.ZodLiteral<"SQL_EXECUTION_EXCEPTION">, z.ZodLiteral<"STOP_PROCESS_DUE_TO_AUTO_REGENERATE">, z.ZodLiteral<"TABLES_MISSING_EXCEPTION">, z.ZodLiteral<"TOO_MANY_CERTIFIED_ANSWERS_EXCEPTION">, z.ZodLiteral<"TOO_MANY_TABLES_EXCEPTION">, z.ZodLiteral<"UNEXPECTED_REPLY_PROCESS_EXCEPTION">, z.ZodLiteral<"UNKNOWN_AI_MODEL">, z.ZodLiteral<"UNSUPPORTED_CONVERSATION_TYPE_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_ACCESS_MISSING_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_NOT_FOUND_EXCEPTION">]>>;
1229
+ }, z.core.$strip>>;
1230
+ feedback: z.ZodOptional<z.ZodObject<{
1231
+ rating: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"NEGATIVE">, z.ZodLiteral<"NONE">, z.ZodLiteral<"POSITIVE">]>>;
1232
+ }, z.core.$strip>>;
1233
+ id: z.ZodString;
1234
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
1235
+ message_id: z.ZodString;
1236
+ query_result: z.ZodOptional<z.ZodObject<{
1237
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
1238
+ row_count: z.ZodOptional<z.ZodNumber>;
1239
+ statement_id: z.ZodOptional<z.ZodString>;
1240
+ statement_id_signature: z.ZodOptional<z.ZodString>;
1241
+ }, z.core.$strip>>;
1242
+ space_id: z.ZodString;
1243
+ status: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>>;
1244
+ user_id: z.ZodOptional<z.ZodNumber>;
1245
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1246
+ attachment_id: z.ZodOptional<z.ZodString>;
1247
+ suggested_questions: z.ZodOptional<z.ZodObject<{
1248
+ questions: z.ZodOptional<z.ZodArray<z.ZodString>>;
1249
+ }, z.core.$strip>>;
1250
+ query: z.ZodOptional<z.ZodObject<{
1251
+ description: z.ZodOptional<z.ZodString>;
1252
+ id: z.ZodOptional<z.ZodString>;
1253
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
1254
+ parameters: z.ZodOptional<z.ZodArray<z.ZodObject<{
1255
+ keyword: z.ZodOptional<z.ZodString>;
1256
+ sql_type: z.ZodOptional<z.ZodString>;
1257
+ value: z.ZodOptional<z.ZodString>;
1258
+ }, z.core.$strip>>>;
1259
+ query: z.ZodOptional<z.ZodString>;
1260
+ query_result_metadata: z.ZodOptional<z.ZodObject<{
1261
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
1262
+ row_count: z.ZodOptional<z.ZodNumber>;
1263
+ }, z.core.$strip>>;
1264
+ statement_id: z.ZodOptional<z.ZodString>;
1265
+ title: z.ZodOptional<z.ZodString>;
1266
+ thoughts: z.ZodOptional<z.ZodArray<z.ZodObject<{
1267
+ thought_type: z.ZodString;
1268
+ content: z.ZodString;
1269
+ }, z.core.$strip>>>;
1270
+ }, z.core.$strip>>;
1271
+ text: z.ZodOptional<z.ZodObject<{
1272
+ content: z.ZodOptional<z.ZodString>;
1273
+ id: z.ZodOptional<z.ZodString>;
1274
+ purpose: z.ZodOptional<z.ZodString>;
1275
+ metadata: z.ZodOptional<z.ZodUnknown>;
1276
+ }, z.core.$strip>>;
1277
+ attachment_type: z.ZodOptional<z.ZodString>;
1278
+ }, z.core.$strip>>>;
1279
+ auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
1280
+ }, z.core.$strip>;
1281
+ }, z.core.$strip>], "type">, z.ZodDiscriminatedUnion<[z.ZodObject<{
1282
+ type: z.ZodLiteral<"started">;
1283
+ spaceId: z.ZodString;
1284
+ conversationId: z.ZodOptional<z.ZodString>;
1285
+ messageId: z.ZodOptional<z.ZodString>;
1286
+ content: z.ZodString;
1287
+ }, z.core.$strip>, z.ZodObject<{
1288
+ type: z.ZodLiteral<"ask_genie_done">;
1289
+ spaceId: z.ZodString;
1290
+ conversationId: z.ZodOptional<z.ZodString>;
1291
+ messageId: z.ZodOptional<z.ZodString>;
1292
+ answer: z.ZodOptional<z.ZodString>;
1293
+ statementIds: z.ZodArray<z.ZodString>;
1294
+ status: z.ZodCustom<"ASKING_AI" | "CANCELLED" | "COMPLETED" | "EXECUTING_QUERY" | "FAILED" | "FETCHING_METADATA" | "FILTERING_CONTEXT" | "PENDING_WAREHOUSE" | "QUERY_RESULT_EXPIRED" | "SUBMITTED", "ASKING_AI" | "CANCELLED" | "COMPLETED" | "EXECUTING_QUERY" | "FAILED" | "FETCHING_METADATA" | "FILTERING_CONTEXT" | "PENDING_WAREHOUSE" | "QUERY_RESULT_EXPIRED" | "SUBMITTED">;
1295
+ }, z.core.$strip>, z.ZodObject<{
1296
+ type: z.ZodLiteral<"error">;
1297
+ spaceId: z.ZodOptional<z.ZodString>;
1298
+ conversationId: z.ZodOptional<z.ZodString>;
1299
+ messageId: z.ZodOptional<z.ZodString>;
1300
+ error: z.ZodString;
1301
+ }, z.core.$strip>, z.ZodObject<{
1302
+ type: z.ZodLiteral<"summary">;
1303
+ spaceId: z.ZodString;
1304
+ items: z.ZodNumber;
1305
+ textItems: z.ZodNumber;
1306
+ dataItems: z.ZodNumber;
1307
+ }, z.core.$strip>], "type">]>, z.ZodObject<{
1308
+ type: z.ZodLiteral<"tool_status">;
1309
+ status: z.ZodString;
1310
+ message: z.ZodString;
1311
+ url: z.ZodOptional<z.ZodString>;
1312
+ groupId: z.ZodOptional<z.ZodString>;
1313
+ detail: z.ZodOptional<z.ZodString>;
1314
+ }, z.core.$strip>]>;
1315
+ }, z.core.$strip>;
1316
+ /** Validated payload carried by a native generic tool progress data part. */
1317
+ export type ToolProgressPartData = z.infer<typeof ToolProgressPartDataSchema>;
826
1318
  /**
827
1319
  * Tabular payload embedded in every {@link GenieSummaryItem}
828
1320
  * `visualize` dataset. Always present: hydrated by the workflow's
package/lib/src/wire.js CHANGED
@@ -349,6 +349,31 @@ export const GenieProgressPartDataSchema = z.object({
349
349
  toolCallId: z.string(),
350
350
  event: GenieWriterEventSchema,
351
351
  });
352
+ /** Generic progress status emitted by non-Genie agent tools. */
353
+ export const ToolStatusProgressEventSchema = z
354
+ .object({
355
+ type: z.literal("tool_status").describe("Generic tool progress discriminator."),
356
+ status: z.string().describe("Machine-readable tool status."),
357
+ message: z.string().describe("Human-readable progress label."),
358
+ url: z.string().optional().describe("Related URL when the tool is reading a page."),
359
+ groupId: z.string().optional().describe("Identifier grouping one search with its result."),
360
+ detail: z.string().optional().describe("Optional secondary result detail."),
361
+ })
362
+ .describe("Generic status update for one running agent tool.");
363
+ /** Complete progress vocabulary rendered by the common tool-session pill. */
364
+ export const ToolProgressEventSchema = z.union([
365
+ GenieWriterEventSchema,
366
+ ToolStatusProgressEventSchema,
367
+ ]);
368
+ /** Native AI SDK custom data-part type carrying generic tool progress. */
369
+ export const TOOL_PROGRESS_PART_TYPE = "data-tool-progress";
370
+ /** Data attached to {@link TOOL_PROGRESS_PART_TYPE}. */
371
+ export const ToolProgressPartDataSchema = z
372
+ .object({
373
+ toolCallId: z.string().describe("Native tool-call id receiving this progress event."),
374
+ event: ToolProgressEventSchema.describe("Progress event emitted by the running tool."),
375
+ })
376
+ .describe("Generic tool progress attached to one native tool call.");
352
377
  /* ------------------------- summary + dataset ------------------------ */
353
378
  /**
354
379
  * Tabular payload embedded in every {@link GenieSummaryItem}
@@ -438,4 +463,4 @@ export const GenieAgentResultSchema = z.object({
438
463
  summary: z.array(GenieSummaryItemSchema),
439
464
  error: z.string().optional(),
440
465
  });
441
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93aXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBMkMsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4Qiw2RUFBNkU7QUFFN0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDL0MsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDcEIsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDeEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLGVBQWUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUMzQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztDQUNoRCxDQUFDLENBQUM7QUFJSDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNqRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNuQixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QixXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNuQyxDQUFDLENBQUM7QUFJSCwrRUFBK0U7QUFFL0U7Ozs7OztHQU1H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R0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzdDLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ25CLGNBQWMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3JDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDO0lBQ3hDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV2lyZS1mb3JtYXQgY29udHJhY3QgZm9yIGBAZGJ4LXRvb2xzL2FwcGtpdC1tYXN0cmFgOiB0aGVcbiAqIGRlcGVuZGVuY3ktZnJlZSB6b2Qgc2NoZW1hcyArIGluZmVycmVkIHR5cGVzIGV2ZXJ5IGNvbnN1bWVyICh0aGVcbiAqIFJlYWN0IGNsaWVudCwgYnJvd3NlciBidW5kbGVzLCB0aGUgc2VydmVyIHBsdWdpbikgc2hhcmVzLlxuICpcbiAqIEtlcHQgZnJlZSBvZiBgcGdgLCBgZmFzdGVtYmVkYCwgYW5kIHRoZSBNYXN0cmEgcnVudGltZSBzbyB0aGVcbiAqIGNsaWVudCBjYW4gaW1wb3J0IHRoZXNlIHNjaGVtYXMgd2l0aG91dCBkcmFnZ2luZyBpbiBzZXJ2ZXItb25seVxuICogZGVwZW5kZW5jaWVzLiBUaHJlZSBsYXllcnMgbGl2ZSBoZXJlOlxuICpcbiAqICAgMS4gVGhlIGRlc2NyaXB0b3IgcHVibGlzaGVkIGJ5IGBNYXN0cmFQbHVnaW4uY2xpZW50Q29uZmlnKClgXG4gKiAgICAgIHBsdXMgdGhlIFJFU1QgcGF5bG9hZHMgaXRzIHJvdXRlcyByZXR1cm4gKG1vZGVscywgaGlzdG9yeSxcbiAqICAgICAgc3VnZ2VzdGlvbnMsIGNoYXJ0IGVtYmVkcywgc3RhdGVtZW50IGRhdGEpLiBUaGUgc2VydmVyXG4gKiAgICAgIGRlcml2ZXMgZXZlcnkgcGF0aCBmcm9tIHRoZSBwbHVnaW4gbW91bnQgYW5kIHB1Ymxpc2hlcyB0aGVcbiAqICAgICAgcmVzb2x2ZWQgcGF0aHMgc28gdGhlIGNsaWVudCBjb21wb3NlcyBVUkxzIHdpdGhvdXRcbiAqICAgICAgaGFyZC1jb2RpbmcgYC9hcGkvbWFzdHJhYCAtIHJlbmFtZSB0aGUgcGx1Z2luIGFuZCB0aGUgY2xpZW50XG4gKiAgICAgIGtlZXBzIHdvcmtpbmcuXG4gKiAgIDIuIFRoZSBgY3R4LndyaXRlcmAgZXZlbnQgdm9jYWJ1bGFyeTogdGhlIHdpcmUtZGVyaXZlZFxuICogICAgICB7QGxpbmsgR2VuaWVDaGF0RXZlbnR9cyBmcm9tIGBAZGJ4LXRvb2xzL2dlbmllLXNoYXJlZGAgcGx1c1xuICogICAgICB0aGUgTWFzdHJhLW9ubHkgYWdlbnQgbGlmZWN5Y2xlIGV2ZW50cywgdW5pZmllZCBhc1xuICogICAgICB7QGxpbmsgR2VuaWVXcml0ZXJFdmVudH0gc28gc3Vic2NyaWJlcnMgbmFycm93IGJvdGggaGFsdmVzXG4gKiAgICAgIHdpdGggYSBzaW5nbGUgYHN3aXRjaCAoZXZlbnQudHlwZSlgLlxuICogICAzLiBUaGUgR2VuaWUgYWdlbnQncyB3b3JrZmxvdyBvdXRwdXQgc2hhcGVzXG4gKiAgICAgICh7QGxpbmsgR2VuaWVBZ2VudFJlc3VsdH0gYW5kIGl0cyBzdW1tYXJ5IC8gZGF0YXNldCBpdGVtcykuXG4gKlxuICogVGhlIHJvdXRlIHNlZ21lbnRzIGxpdmUgaW4gdGhlIHNpYmxpbmcgYHJvdXRlcy50c2BcbiAqICh7QGxpbmsgTUFTVFJBX1JPVVRFU30pIGFuZCB0aGUgZW1iZWQtbWFya2VyIGdyYW1tYXIgaW4gYG1hcmtlcnMudHNgLFxuICogc28gdGhpcyBmaWxlIHN0YXlzIHB1cmVseSBkZWNsYXJhdGl2ZSAoc2NoZW1hcyArIGluZmVycmVkIHR5cGVzKS5cbiAqIFRoZSBicm93c2VyIGNsaWVudCB0aGF0IGRyaXZlcyB0aGVzZSByb3V0ZXMgKGBNYXN0cmFQbHVnaW5DbGllbnRgKVxuICogc2hpcHMgZnJvbSBgQGRieC10b29scy91aS1tYXN0cmFgLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBnZW5pZU1vZGVsLCB0eXBlIEdlbmllQ2hhdEV2ZW50LCB0eXBlIE1lc3NhZ2VTdGF0dXMgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtZ2VuaWVcIjtcbmltcG9ydCB7IG1vZGVsIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLW1vZGVsXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNsaWVudCBjb25maWcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEpTT04tc2FmZSBkZXNjcmlwdG9yIHB1Ymxpc2hlZCBieSB0aGUgTWFzdHJhIHBsdWdpbidzXG4gKiBgY2xpZW50Q29uZmlnKClgLlxuICpcbiAqIE9ubHkgdGhlIGlycmVkdWNpYmxlIGRhdGEgbGl2ZXMgaGVyZTogYGJhc2VQYXRoYCAodGhlIG9uZSBwYXRoIHRoZVxuICogY2xpZW50IGNhbid0IG90aGVyd2lzZSBrbm93LCBzaW5jZSBpdCBlbmNvZGVzIHRoZSBwbHVnaW4ncyBtb3VudFxuICogbmFtZSkgcGx1cyB0aGUgcnVudGltZSBhZ2VudCByb3N0ZXIuIEV2ZXJ5IGNvbmNyZXRlIGVuZHBvaW50IFVSTCBpc1xuICogZGVyaXZlZCBmcm9tIGBiYXNlUGF0aGAgYnkgdGhlIGJyb3dzZXIgY2xpZW50XG4gKiAoYE1hc3RyYVBsdWdpbkNsaWVudGApIHVzaW5nIHRoZSBzaGFyZWQge0BsaW5rIE1BU1RSQV9ST1VURVN9XG4gKiBzZWdtZW50cywgc28gdGhlcmUncyBub3RoaW5nIHRvIHB1Ymxpc2ggcGVyLXJvdXRlLlxuICpcbiAqIEZpZWxkczpcbiAqICAgLSBgYmFzZVBhdGhgOiBwbHVnaW4gbW91bnQgcGF0aC4gQWx3YXlzIGAvYXBpLzxwbHVnaW5OYW1lPmAuIEZlZWRcbiAqICAgICBpdCB0byBgbmV3IE1hc3RyYVBsdWdpbkNsaWVudChjb25maWcpYCAoZnJvbVxuICogICAgIGBAZGJ4LXRvb2xzL3VpLW1hc3RyYWApIHRvIGdldCBhIHR5cGVkIGNsaWVudCBvdmVyIGV2ZXJ5XG4gKiAgICAgcm91dGUgcGx1cyB0aGUgc3RhbmRhcmQgYWdlbnQgc3RyZWFtLlxuICogICAtIGBkZWZhdWx0QWdlbnRgOiBhZ2VudCBpZCB0aGUgY2xpZW50IGNvbnZlcnNlcyB3aXRoIHdoZW4gaXRcbiAqICAgICBkb2Vzbid0IG5hbWUgb25lLlxuICogICAtIGBhZ2VudHNgOiBldmVyeSByZWdpc3RlcmVkIGFnZW50IGlkIGluIHJlZ2lzdHJhdGlvbiBvcmRlci5cbiAqICAgLSBgZmVlZGJhY2tFbmFibGVkYDogd2hldGhlciB0aGUgc2VydmVyIGNhbiBsb2cgdXNlciBmZWVkYmFjayB0b1xuICogICAgIE1MZmxvdyAoTUxmbG93IHRyYWNpbmcgaXMgY29uZmlndXJlZCkuIERyaXZlcyB3aGV0aGVyIHRoZSBjaGF0IFVJXG4gKiAgICAgc3VyZmFjZXMgdGh1bWJzIC8gY29tbWVudCBjb250cm9scy4gRGVmYXVsdHMgdG8gYGZhbHNlYCBzbyBhXG4gKiAgICAgY29uZmlnIHB1Ymxpc2hlZCBieSBhbiBvbGRlciBzZXJ2ZXIgKHdpdGhvdXQgdGhlIGZpZWxkKSBwYXJzZXNcbiAqICAgICBjbGVhbmx5IHRvIFwib2ZmXCIuXG4gKiAgIC0gYGNoYXRBbHdheXNBdmFpbGFibGVgOiB3aGV0aGVyIHRoZSBhZ2VudHMnIERhdGFicmlja3MgY2FsbHMgcnVuIGFzIHRoZVxuICogICAgIGFwcCBzZXJ2aWNlIHByaW5jaXBhbCByYXRoZXIgdGhhbiBvbi1iZWhhbGYtb2YgdGhlIHNpZ25lZC1pbiB1c2VyLiBXaGVuXG4gKiAgICAgYHRydWVgIHRoZSBjaGF0IHdvcmtzIGZvciBhbnkgY2FsbGVyIHdobyBjYW4gb3BlbiB0aGUgYXBwLCBzbyBhIFVJIHRoYXRcbiAqICAgICBoaWRlcyBjaGF0IHdoZW4gdGhlIE9CTyB0b2tlbiBpcyBhYnNlbnQgc2hvdWxkIHNob3cgaXQgYW55d2F5LiBEZWZhdWx0c1xuICogICAgIHRvIGBmYWxzZWAgKHRoZSBPQk8gLyBgXCJ1c2VyXCJgIGlkZW50aXR5IG1vZGUpLCBzbyBhbiBvbGRlciBzZXJ2ZXIgd2l0aG91dFxuICogICAgIHRoZSBmaWVsZCBrZWVwcyB0aGUgT0JPLWdhdGVkIGJlaGF2aW9yLlxuICovXG5leHBvcnQgY29uc3QgTWFzdHJhQ2xpZW50Q29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuICBiYXNlUGF0aDogei5zdHJpbmcoKSxcbiAgZGVmYXVsdEFnZW50OiB6LnN0cmluZygpLFxuICBhZ2VudHM6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gIGZlZWRiYWNrRW5hYmxlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGNoYXRBbHdheXNBdmFpbGFibGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxufSk7XG4vKiogQnJvd3Nlci1zYWZlIE1hc3RyYSBwbHVnaW4gZGVzY3JpcHRvciB1c2VkIHRvIGNvbnN0cnVjdCByb3V0ZSBhbmQgc3RyZWFtIGNsaWVudHMuICovXG5leHBvcnQgdHlwZSBNYXN0cmFDbGllbnRDb25maWcgPSB6LmluZmVyPHR5cGVvZiBNYXN0cmFDbGllbnRDb25maWdTY2hlbWE+O1xuXG4vKipcbiAqIEpTT04gcGF5bG9hZCByZXR1cm5lZCBieSBgR0VUICR7YmFzZVBhdGh9L2RlZmF1bHQtbW9kZWxbP2FnZW50SWQ9XWAuIFRoZVxuICogc3RhdGljIGRlZmF1bHQgbW9kZWwgdGhlIGFnZW50IHJlc29sdmVzIHRvIHdoZW4gdGhlIGNsaWVudCBwaW5zIG5vIG1vZGVsLFxuICogYXMgYm90aCB0aGUgcmF3IHNlcnZpbmctZW5kcG9pbnQgYG1vZGVsYCBpZCBhbmQgYSBgZGlzcGxheU5hbWVgICh0aGVcbiAqIGh1bWFuaXplZCBsYWJlbCB0aGUgcGlja2VyIHNob3dzKS4gQm90aCBhcmUgYG51bGxgIHdoZW4gdGhlIGFnZW50IGRlY2lkZXNcbiAqIGl0cyBtb2RlbCBkeW5hbWljYWxseSBhdCBjYWxsIHRpbWUgKG5vdGhpbmcgc3RhdGljIHRvIGFkdmVydGlzZSkuIExldHMgdGhlXG4gKiBwaWNrZXIgbGFiZWwgaXRzIGRlZmF1bHQgb3B0aW9uIFdJVEhPVVQgd2FpdGluZyBvbiB0aGUgYC9tb2RlbHNgIGNhdGFsb2d1ZSxcbiAqIHNvIGl0IG5ldmVyIGZsYXNoZXMgYSByYXcgaWQgb24gbG9hZC4gS2VwdCBvZmYgdGhlIHN0YXRpYyBib290c3RyYXBcbiAqIGBjbGllbnRDb25maWdgIG9uIHB1cnBvc2U6IGl0IGlzIHBlci1hZ2VudCBhbmQgY2FuIGJlIGR5bmFtaWMsIHNvIGl0IGlzXG4gKiBmZXRjaGVkIGxpa2UgYC9tb2RlbHNgLlxuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdE1vZGVsUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGFnZW50SWQ6IHouc3RyaW5nKCksXG4gIG1vZGVsOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGRpc3BsYXlOYW1lOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG59KTtcbi8qKiBSZXNwb25zZSBpZGVudGlmeWluZyB0aGUgbW9kZWwgY3VycmVudGx5IHNlbGVjdGVkIGFzIHRoZSBwbHVnaW4gZGVmYXVsdC4gKi9cbmV4cG9ydCB0eXBlIERlZmF1bHRNb2RlbFJlc3BvbnNlID0gei5pbmZlcjx0eXBlb2YgRGVmYXVsdE1vZGVsUmVzcG9uc2VTY2hlbWE+O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIG1vZGVsIGNhdGFsb2d1ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogSlNPTiBwYXlsb2FkIHJldHVybmVkIGJ5IGBHRVQgJHtiYXNlUGF0aH0vbW9kZWxzYC4gV3JhcHMgdGhlIHNoYXJlZFxuICoge0BsaW5rIG1vZGVsLlNlcnZpbmdFbmRwb2ludFN1bW1hcnlTY2hlbWF9IChyZS1leHBvcnRlZCBmcm9tXG4gKiBgQGRieC10b29scy9zaGFyZWQtbW9kZWxgKSBzbyB0aGUgY2F0YWxvZ3VlXG4gKiBkZXNjcmlwdG9yIGhhcyBhIHNpbmdsZSBkZWZpbml0aW9uIHRoZSBjbGllbnQsIHNlcnZlciwgYW5kIHRoZVxuICogc3RhbmRhbG9uZSBgQGRieC10b29scy9tb2RlbGAgdG9vbGtpdCBhbGwgYWdyZWUgb24uXG4gKi9cbmV4cG9ydCBjb25zdCBTZXJ2aW5nRW5kcG9pbnRzUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGVuZHBvaW50czogei5hcnJheShtb2RlbC5TZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5U2NoZW1hKSxcbn0pO1xuLyoqIEF2YWlsYWJsZSBEYXRhYnJpY2tzIHNlcnZpbmcgZW5kcG9pbnRzIHJldHVybmVkIGJ5IHRoZSBNYXN0cmEgbW9kZWwgcm91dGUuICovXG5leHBvcnQgdHlwZSBTZXJ2aW5nRW5kcG9pbnRzUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBTZXJ2aW5nRW5kcG9pbnRzUmVzcG9uc2VTY2hlbWE+O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3VnZ2VzdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogSlNPTiBwYXlsb2FkIHJldHVybmVkIGJ5IGBHRVQgJHtiYXNlUGF0aH0vc3VnZ2VzdGlvbnNgLlxuICpcbiAqIENhcnJpZXMgdGhlIGN1cmF0ZWQgc3RhcnRlciBxdWVzdGlvbnMgZm9yIGFuIGFnZW50J3MgR2VuaWUgc3BhY2UgLVxuICogdGhlIGBzYW1wbGVfcXVlc3Rpb25zYCBhbiBhdXRob3IgY29uZmlndXJlZCBvbiB0aGUgc3BhY2UsIHN1cmZhY2VkXG4gKiBhcyBvbmUtdGFwIHByb21wdHMgb24gdGhlIGNoYXQncyBlbXB0eSBzdGF0ZS4gYHF1ZXN0aW9uc2AgaXMgZW1wdHlcbiAqIHdoZW4gdGhlIGFnZW50IGhhcyBubyBHZW5pZSBzcGFjZSAob3IgdGhlIHNwYWNlIGRlZmluZXMgbm9uZSksIHNvXG4gKiB0aGUgY2xpZW50IHJlbmRlcnMgbm90aGluZyBpbiB0aGF0IGNhc2UgcmF0aGVyIHRoYW4gZmFsbGluZyBiYWNrIHRvXG4gKiBidWlsdC1pbiBleGFtcGxlIHByb21wdHMuXG4gKi9cbmV4cG9ydCBjb25zdCBNYXN0cmFTdWdnZXN0aW9uc1Jlc3BvbnNlU2NoZW1hID0gei5vYmplY3Qoe1xuICBxdWVzdGlvbnM6IHouYXJyYXkoei5zdHJpbmcoKSksXG59KTtcbi8qKiBGb2xsb3ctdXAgcHJvbXB0cyBzdWdnZXN0ZWQgZm9yIHRoZSBjdXJyZW50IGFnZW50IGFuZCB0aHJlYWQgY29udGV4dC4gKi9cbmV4cG9ydCB0eXBlIE1hc3RyYVN1Z2dlc3Rpb25zUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBNYXN0cmFTdWdnZXN0aW9uc1Jlc3BvbnNlU2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNoYXJ0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBBbGxvd2VkIGNoYXJ0IHR5cGVzIHRoZSBwbGFubmVyIGNhbiBwaWNrLiBEZWZpbmVkIGFzIGFcbiAqIGRpc2NyaW1pbmF0ZWQgbGl0ZXJhbCB1bmlvbiBzbyBlYWNoIHZhcmlhbnQgY2FycmllcyBpdHMgb3duXG4gKiBgLmRlc2NyaWJlKClgIGNsYXVzZSAtIHRoZSBzZXJ2ZXItc2lkZSBwbGFubmVyJ3MgcHJvbXB0XG4gKiBmb3JtYXR0ZXIgd2Fsa3MgYC5vcHRpb25zYCB0byBpbmxpbmUgdGhlIGRlc2NyaXB0aW9ucyBpbnRvIHRoZVxuICogbW9kZWwgaW5zdHJ1Y3Rpb25zLCBrZWVwaW5nIHRoZSBwcm9tcHQgaW4gbG9jay1zdGVwIHdpdGggdGhlXG4gKiBzY2hlbWEgYnkgY29uc3RydWN0aW9uLiBUaGUgcnVudGltZSB0eXBlIGlzIHRoZSBwbGFpbiBzdHJpbmdcbiAqIHVuaW9uIChgXCJiYXJcIiB8IFwibGluZVwiIHwgLi4uYCksIHNvIGNvbnN1bWVycyB0aGF0IGp1c3QgbmVlZCBhXG4gKiBkaXNjcmltaW5hdG9yIHZhbHVlIGJlaGF2ZSB0aGUgc2FtZSBhcyBpZiBpdCB3ZXJlIGFcbiAqIGB6LmVudW0oWy4uLl0pYC5cbiAqL1xuZXhwb3J0IGNvbnN0IENoYXJ0VHlwZVNjaGVtYSA9IHpcbiAgLnVuaW9uKFtcbiAgICB6XG4gICAgICAubGl0ZXJhbChcImJhclwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcImNvbXBhcmluZyBhIG51bWVyaWMgdmFsdWUgYWNyb3NzIGEgc21hbGwvbWVkaXVtIHNldCBvZiBkaXNjcmV0ZSBjYXRlZ29yaWVzICh0b3AtTiwgcmFua2luZywgZ3JvdXAtYnkpXCIsXG4gICAgICApLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwiaG9yaXpvbnRhbEJhclwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcInNhbWUgYXMgYmFyIGJ1dCBjYXRlZ29yaWVzIG9uIHRoZSB5LWF4aXMgLSBwcmVmZXIgd2hlbiBjYXRlZ29yeSBsYWJlbHMgYXJlIGxvbmcgb3IgdGhlcmUgYXJlIG1hbnkgY2F0ZWdvcmllc1wiLFxuICAgICAgKSxcbiAgICB6XG4gICAgICAubGl0ZXJhbChcImxpbmVcIilcbiAgICAgIC5kZXNjcmliZShcbiAgICAgICAgXCJvcmRlcmVkLWF4aXMgdHJlbmQgKHRpbWUgc2VyaWVzLCBzZXF1ZW5jZSwgcmFuaykgd2hlcmUgdGhlIHgtYXhpcyBoYXMgbmF0dXJhbCBvcmRlclwiLFxuICAgICAgKSxcbiAgICB6LmxpdGVyYWwoXCJhcmVhXCIpLmRlc2NyaWJlKFwic3RhY2tlZC10cmVuZCBlbXBoYXNpcyAtIGN1bXVsYXRpdmUgb3IgY29tcG9zaXRpb24gb3ZlciB0aW1lXCIpLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwiY29tYm9cIilcbiAgICAgIC5kZXNjcmliZShcbiAgICAgICAgXCJtaXhlZCBiYXIgKyBsaW5lIChvciBhcmVhKSBzZXJpZXMgb24gc2hhcmVkIGNhdGVnb3JpZXMgLSBlLmcuIHZvbHVtZSBiYXJzIHdpdGggYSByYXRlL3RyZW5kIGxpbmU7IHNldCBlYWNoIHNlcmllcycgYHR5cGVgXCIsXG4gICAgICApLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwid2F0ZXJmYWxsXCIpXG4gICAgICAuZGVzY3JpYmUoXG4gICAgICAgIFwiYnJpZGdlIC8gcnVubmluZy10b3RhbCBvZiBzaWduZWQgc3RlcCB2YWx1ZXMgKHN0YXJ0IC0+IGRlbHRhcyAtPiBlbmQpIGFjcm9zcyBvcmRlcmVkIGNhdGVnb3JpZXNcIixcbiAgICAgICksXG4gICAgelxuICAgICAgLmxpdGVyYWwoXCJzY2F0dGVyXCIpXG4gICAgICAuZGVzY3JpYmUoXCJ0d28tbnVtZXJpYy1heGlzIGNvcnJlbGF0aW9ucyBiZXR3ZWVuIGZpZWxkcyAoZS5nLiBwcmljZSB2cy4gcXVhbnRpdHkpXCIpLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwiaGVhdG1hcFwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcIm1hdHJpeCBpbnRlbnNpdHkgYWNyb3NzIHR3byBjYXRlZ29yeSBheGVzIC0geCBsYWJlbHMgaW4gYGNhdGVnb3JpZXNgLCBvbmUgc2VyaWVzIHBlciBtYXRyaXggcm93IGhvbGRpbmcgdGhhdCByb3cncyB2YWx1ZXNcIixcbiAgICAgICksXG4gICAgelxuICAgICAgLmxpdGVyYWwoXCJyYWRhclwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcIm11bHRpLWRpbWVuc2lvbiBjb21wYXJpc29uIGFjcm9zcyBhIGZpeGVkIHNldCBvZiBheGVzIChvbmUgaW5kaWNhdG9yIHBlciBjYXRlZ29yeSwgb25lIG9yIG1vcmUgc2VyaWVzIG9mIHZhbHVlcylcIixcbiAgICAgICksXG4gICAgei5saXRlcmFsKFwicGllXCIpLmRlc2NyaWJlKFwicGFydHMtb2YtYS13aG9sZSB3aGVuIDItNyBjYXRlZ29yaWVzIHN1bSB0byBhIG1lYW5pbmdmdWwgdG90YWxcIiksXG4gICAgelxuICAgICAgLmxpdGVyYWwoXCJmdW5uZWxcIilcbiAgICAgIC5kZXNjcmliZShcbiAgICAgICAgXCJvcmRlcmVkIHN0YWdlcyB0aGF0IHNocmluayAoY29udmVyc2lvbiwgcGlwZWxpbmUsIGF0dHJpdGlvbikgLSBge25hbWUsIHZhbHVlfWAgc2xpY2VzXCIsXG4gICAgICApLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwidHJlZW1hcFwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcInBhcnRzLW9mLWEtd2hvbGUgYXMgbmVzdGVkIHJlY3RhbmdsZXMgd2hlbiB0aGVyZSBhcmUgbW9yZSB0aGFuIH43IGNhdGVnb3JpZXMgb3IgYSBmbGF0IGhpZXJhcmNoeSBvZiBge25hbWUsIHZhbHVlfWAgc2xpY2VzXCIsXG4gICAgICApLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwiY3VzdG9tXCIpXG4gICAgICAuZGVzY3JpYmUoXG4gICAgICAgIFwiZXNjYXBlIGhhdGNoIGZvciBhIGNoYXJ0IG5vbmUgb2YgdGhlIGFib3ZlIGNhbiBleHByZXNzIChzYW5rZXksIGJveHBsb3QsIGNhbmRsZXN0aWNrLCBzdW5idXJzdCwgZ2F1Z2UsIG5ldHdvcmsgZ3JhcGgsIGNhbGVuZGFyLCBwYXJhbGxlbCwgLi4uKSAtIGhhbmQtd3JpdGUgdGhlIGNvbXBsZXRlIEVjaGFydHMgb3B0aW9uIGluc3RlYWQgb2YgYSBwbGFuXCIsXG4gICAgICApLFxuICBdKVxuICAuZGVzY3JpYmUoXCJUaGUgY2hhcnQgc2hhcGUgdGhhdCBiZXN0IG1hdGNoZXMgdGhlIGRhdGEgYW5kIGludGVudC5cIik7XG4vKiogU3VwcG9ydGVkIGNoYXJ0IGZhbWlseSBzZWxlY3RlZCBieSB0aGUgc2VydmVyLXNpZGUgY2hhcnQgcGxhbm5lci4gKi9cbmV4cG9ydCB0eXBlIENoYXJ0VHlwZSA9IHouaW5mZXI8dHlwZW9mIENoYXJ0VHlwZVNjaGVtYT47XG5cbi8qKlxuICogUmVzb2x2ZWQgY2hhcnQgcGxhbiBhIHNldHRsZWQgY2hhcnQgZW50cnkgY2FycmllcyBvbiBpdHNcbiAqIGByZXN1bHRgIGZpZWxkLiBgb3B0aW9uYCBpcyB0aGUgZnVsbCBFY2hhcnRzIHNwZWM7IHBhc3NcbiAqIHN0cmFpZ2h0IGludG8gYDxSZWFjdEVDaGFydHMgb3B0aW9uPXsuLi59PmAuXG4gKi9cbmV4cG9ydCBjb25zdCBDaGFydFJlc3VsdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgY2hhcnRUeXBlOiBDaGFydFR5cGVTY2hlbWEsXG4gIG9wdGlvbjogelxuICAgIC5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpXG4gICAgLmRlc2NyaWJlKFxuICAgICAgXCJGdWxseS1yZXNvbHZlZCBFY2hhcnRzIGBFQ2hhcnRzT3B0aW9uYCBKU09OIGZvciB0aGlzIGNoYXJ0IC0gZHJvcCBkaXJlY3RseSBpbnRvIGFuIEVjaGFydHMgaW5zdGFuY2UgKG9yIGA8UmVhY3RFQ2hhcnRzIG9wdGlvbj17Li4ufSAvPmApIHdpdGhvdXQgZnVydGhlciBwcm9jZXNzaW5nLiBJbmNsdWRlcyB0aXRsZSAvIHRvb2x0aXAgLyBsZWdlbmQgLyBncmlkIC8gYXhpcyAvIHNlcmllcyBkZWZhdWx0cyBhbHJlYWR5IG1lcmdlZCBpbi5cIixcbiAgICApLFxufSk7XG4vKiogUmVuZGVyLXJlYWR5IGNoYXJ0IHBsYW4gc3RvcmVkIGJlaGluZCBhIGNoYXJ0IGVtYmVkIGlkZW50aWZpZXIuICovXG5leHBvcnQgdHlwZSBDaGFydFJlc3VsdCA9IHouaW5mZXI8dHlwZW9mIENoYXJ0UmVzdWx0U2NoZW1hPjtcblxuLyoqXG4gKiBXaXJlLWZvcm1hdCBBTkQgc2VydmVyLXNpZGUgY2FjaGUgc2hhcGUgZm9yIGEgY2hhcnQgZW50cnkuXG4gKiBUaHJlZSBsaWZlY3ljbGUgc3RhdGVzIGluZmVycmVkIGZyb20gdGhlIHR3byBvcHRpb25hbCBmaWVsZHNcbiAqIChubyBkaXNjcmltaW5hdG9yIG5lZWRlZCk6XG4gKlxuICogICAtIGByZXN1bHRgIHNldCAgICAgICAgICAgICAgICAgICAgLT4gY2hhcnQgaXMgcmVhZHkgdG8gcmVuZGVyXG4gKiAgIC0gYGVycm9yYCBzZXQgICAgICAgICAgICAgICAgICAgICAtPiBwbGFubmVyIC8gZGF0YSBmZXRjaCBmYWlsZWRcbiAqICAgLSBib3RoIGByZXN1bHRgIGFuZCBgZXJyb3JgIHVuc2V0IC0+IHN0aWxsIHByb2Nlc3NpbmdcbiAqXG4gKiBgb3B0aW9uYCBpcyB0eXBlZCBhcyBhIGdlbmVyaWMgcmVjb3JkIHNvIHRoaXMgcGFja2FnZSBzdGF5c1xuICogZGVwZW5kZW5jeS1mcmVlIG9mIGBlY2hhcnRzYC4gVGhlIHNlcnZlciAoYGNoYXJ0LnRzYCkgaW1wb3J0c1xuICogdGhpcyBzY2hlbWEgZGlyZWN0bHk7IHRoZSBkZW1vIGNsaWVudCBwb2xscyB0aGVcbiAqIGAvZW1iZWQvY2hhcnQvOmlkYCByb3V0ZSBhbmQgcGFyc2VzIHJlc3BvbnNlcyBhZ2FpbnN0IGl0LlxuICovXG5leHBvcnQgY29uc3QgQ2hhcnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGNoYXJ0SWQ6IHpcbiAgICAuc3RyaW5nKClcbiAgICAuZGVzY3JpYmUoXG4gICAgICBcIk9wYXF1ZSBpZCBtaW50ZWQgYnkgdGhlIGNoYXJ0IHN1YnN5c3RlbS4gRW1iZWQgdmVyYmF0aW0gYXMgYFtjaGFydDo8Y2hhcnRJZD5dYCBpbiBhZ2VudCBwcm9zZTsgdGhlIGhvc3QgVUkgcmVzb2x2ZXMgaXQgYWdhaW5zdCB0aGlzIGNhY2hlIGVudHJ5LlwiLFxuICAgICksXG4gIGVycm9yOiB6XG4gICAgLnN0cmluZygpXG4gICAgLm9wdGlvbmFsKClcbiAgICAuZGVzY3JpYmUoXG4gICAgICBcIkVycm9yIG1lc3NhZ2Ugd2hlbiB0aGUgY2hhcnQgZmFpbGVkIChkYXRhIGZldGNoIGVycm9yLCBwbGFubmVyIGVycm9yLCBlbXB0eSBkYXRhc2V0KS4gTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYHJlc3VsdGA7IGFic2VudCBvbiBzdWNjZXNzIGFuZCB3aGlsZSBwcm9jZXNzaW5nLlwiLFxuICAgICksXG4gIHJlc3VsdDogQ2hhcnRSZXN1bHRTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcbiAgICBcIlJlc29sdmVkIGNoYXJ0IHBsYW4uIEFic2VudCB3aGlsZSBwcm9jZXNzaW5nIGFuZCB3aGVuIHRoZSBydW4gZXJyb3JlZC5cIixcbiAgKSxcbn0pO1xuLyoqIFBvbGxhYmxlIGNoYXJ0LWNhY2hlIGVudHJ5IHJlcHJlc2VudGluZyBwZW5kaW5nLCBzdWNjZXNzZnVsLCBvciBmYWlsZWQgcGxhbm5pbmcuICovXG5leHBvcnQgdHlwZSBDaGFydCA9IHouaW5mZXI8dHlwZW9mIENoYXJ0U2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdGF0ZW1lbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBXaXJlLWZvcm1hdCBwYXlsb2FkIHJldHVybmVkIGJ5IGBHRVQgJHtiYXNlUGF0aH0vZW1iZWQvZGF0YS86aWRgLlxuICpcbiAqIE1pcnJvcnMgdGhlIGFnZW50LXNpZGUgYGdldF9zdGF0ZW1lbnRgIHRvb2wncyBvdXRwdXQgc28gdGhlXG4gKiBob3N0IFVJIGFuZCB0aGUgTExNIHNlZSB0aGUgZXhhY3Qgc2FtZSBzaGFwZSBmb3IgdGhlIHNhbWVcbiAqIHN0YXRlbWVudDsgdGhlIHJvdXRlIGlzIHdoYXQgcmVzb2x2ZXMgYFtkYXRhOjxzdGF0ZW1lbnRfaWQ+XWBcbiAqIG1hcmtlcnMgdGhlIGFnZW50IGVtYmVkcyBpbiBwcm9zZS5cbiAqXG4gKiBGaWVsZHM6XG4gKiAgIC0gYGNvbHVtbnNgOiBjb2x1bW4gbmFtZXMgaW4gZGVjbGFyYXRpb24gb3JkZXIuXG4gKiAgIC0gYHJvd3NgOiByb3cgcmVjb3JkcyBrZXllZCBieSBjb2x1bW4gbmFtZS4gQ2VsbCB2YWx1ZXMgYXJlXG4gKiAgICAgZWl0aGVyIGNvZXJjZWQgbnVtYmVycyBvciB0aGUgb3JpZ2luYWwgc3RyaW5ncyAoR2VuaWUgL1xuICogICAgIFN0YXRlbWVudCBFeGVjdXRpb24gcmV0dXJucyBldmVyeSBjZWxsIGFzIGBzdHJpbmcgfCBudWxsYDtcbiAqICAgICBudW1lcmljLWxvb2tpbmcgY2VsbHMgYXJlIGNvZXJjZWQgc2VydmVyLXNpZGUgc28gdGhlIFVJXG4gKiAgICAgY2FuIGZvcm1hdCB3aXRoIGB0YWJ1bGFyLW51bXNgIHdpdGhvdXQgcmUtcGFyc2luZykuXG4gKiAgIC0gYHJvd0NvdW50YDogdG90YWwgcm93IGNvdW50IHVwc3RyZWFtIChpbmRlcGVuZGVudCBvZiB0aGVcbiAqICAgICBgbGltaXRgIGNhcCkuIENvbXBhcmUgYWdhaW5zdCBgcm93cy5sZW5ndGhgIHRvIGRldGVjdFxuICogICAgIHRydW5jYXRpb24gLSBgdHJ1bmNhdGVkYCBpcyB0aGUgcHJlY29tcHV0ZWQgZmxhZy5cbiAqICAgLSBgdHJ1bmNhdGVkYDogYHRydWVgIHdoZW4gdGhlIHNlcnZlciBjbGlwcGVkIHJvd3MgdG8gaG9ub3JcbiAqICAgICB0aGUgcm91dGUncyByb3cgY2FwOyB0aGUgVUkgc2hvdWxkIHN1cmZhY2UgYSBcInNob3dpbmcgTiBvZlxuICogICAgIE0gcm93c1wiIGFmZm9yZGFuY2UgaW4gdGhhdCBjYXNlLlxuICovXG5leHBvcnQgY29uc3QgU3RhdGVtZW50RGF0YVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgY29sdW1uczogei5hcnJheSh6LnN0cmluZygpKSxcbiAgcm93czogei5hcnJheSh6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkpLFxuICByb3dDb3VudDogei5udW1iZXIoKSxcbiAgdHJ1bmNhdGVkOiB6LmJvb2xlYW4oKSxcbn0pO1xuLyoqIFRhYnVsYXIgc3RhdGVtZW50IHBheWxvYWQgcmVzb2x2ZWQgZnJvbSBhIGBbZGF0YTo8c3RhdGVtZW50X2lkPl1gIGVtYmVkIG1hcmtlci4gKi9cbmV4cG9ydCB0eXBlIFN0YXRlbWVudERhdGEgPSB6LmluZmVyPHR5cGVvZiBTdGF0ZW1lbnREYXRhU2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLSBtYXN0cmEtb25seSBnZW5pZS1hZ2VudCBldmVudHMgLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIE1hc3RyYS1vbmx5IGxpZmVjeWNsZSBldmVudDogdGhlIEdlbmllIHRvb2wgaW52b2NhdGlvbiBzdGFydGVkLlxuICogRW1pdHRlZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBjYWxsaW5nIGFnZW50IGludm9rZXMgdGhlIEdlbmllXG4gKiB0b29sLCBiZWZvcmUgYW55IGlubmVyIGFnZW50IC8gd2lyZSBhY3Rpdml0eSwgc28gdGhlIFVJIGNhblxuICogcG9wIGEgXCJUaGlua2luZy4uLlwiIHBpbGwgdGhlIGluc3RhbnQgdGhlIG1vZGVsIGRlY2lkZXMgdG9cbiAqIGRlbGVnYXRlLiBgY29udmVyc2F0aW9uSWRgIC8gYG1lc3NhZ2VJZGAgYXJlIGFic2VudCBvbiB0aGlzXG4gKiBmaXJzdCBlbWl0IChubyBHZW5pZSByb3VuZC10cmlwIHlldCkuIEZpZWxkIG5hbWVzIGFyZVxuICogY2FtZWxDYXNlICh2cyB0aGUgc25ha2VfY2FzZSB3aXJlIGV2ZW50cykgdG8gbWlycm9yIHRoZVxuICogR2VuaWUgYWdlbnQncyBvd24gaW50ZXJuYWwgZGF0YSBwbHVtYmluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0YXJ0ZWRFdmVudFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwic3RhcnRlZFwiKSxcbiAgc3BhY2VJZDogei5zdHJpbmcoKSxcbiAgY29udmVyc2F0aW9uSWQ6IHpcbiAgICAuc3RyaW5nKClcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZXNjcmliZShcIkV4aXN0aW5nIEdlbmllIGNvbnZlcnNhdGlvbiBpZCBmb3IgYSBmb2xsb3ctdXAgdHVybi4gQWJzZW50IG9uIHRoZSBmaXJzdCB0dXJuLlwiKSxcbiAgbWVzc2FnZUlkOiB6XG4gICAgLnN0cmluZygpXG4gICAgLm9wdGlvbmFsKClcbiAgICAuZGVzY3JpYmUoXCJHZW5pZSBtZXNzYWdlIGlkIG9uY2UgdGhlIGZpcnN0IHdpcmUgbWVzc2FnZSBldmVudCBoYXMgYXJyaXZlZC5cIiksXG4gIGNvbnRlbnQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJRdWVzdGlvbiB0aGUgR2VuaWUgYWdlbnQgc2VudCB0byBHZW5pZS5cIiksXG59KTtcbi8qKiBJbW1lZGlhdGUgbGlmZWN5Y2xlIGV2ZW50IGVtaXR0ZWQgd2hlbiBhbiBgYXNrX2dlbmllYCBpbnZvY2F0aW9uIGJlZ2lucy4gKi9cbmV4cG9ydCB0eXBlIFN0YXJ0ZWRFdmVudCA9IHouaW5mZXI8dHlwZW9mIFN0YXJ0ZWRFdmVudFNjaGVtYT47XG5cbi8qKlxuICogTWFzdHJhLW9ubHkgbGlmZWN5Y2xlIGV2ZW50OiBvbmUgYGFza19nZW5pZWAgaW52b2NhdGlvblxuICogZmluaXNoZWQuIENhcnJpZXMgdGhlIGh5ZHJhdGVkIGBzdGF0ZW1lbnRJZHNgIChyb3dzIGFyZSBmZXRjaGVkXG4gKiB2aWEgYGdldFN0YXRlbWVudGAgc2VwYXJhdGVseSkgYW5kIEdlbmllJ3MgZmluYWwgcHJvc2UgYW5zd2VyXG4gKiBzbyB0aGUgVUkgY2FuIG1vdmUgZnJvbSBcInRoaW5raW5nXCIgdG8gXCJhbnN3ZXJlZFwiIHdpdGhvdXRcbiAqIHdhaXRpbmcgZm9yIHRoZSBHZW5pZSBhZ2VudCdzIHdob2xlIHJlYXNvbmluZyBsb29wIHRvIGVuZC5cbiAqL1xuZXhwb3J0IGNvbnN0IEFza0dlbmllRG9uZUV2ZW50U2NoZW1hID0gei5vYmplY3Qoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJhc2tfZ2VuaWVfZG9uZVwiKSxcbiAgc3BhY2VJZDogei5zdHJpbmcoKSxcbiAgY29udmVyc2F0aW9uSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbWVzc2FnZUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGFuc3dlcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiR2VuaWUncyBuYXR1cmFsLWxhbmd1YWdlIGFuc3dlciBmb3IgdGhlIHR1cm4uXCIpLFxuICBzdGF0ZW1lbnRJZHM6IHpcbiAgICAuYXJyYXkoei5zdHJpbmcoKSlcbiAgICAuZGVzY3JpYmUoXCJTdGF0ZW1lbnQgaWRzIGZvciBub24tZW1wdHkgcmVzdWx0IHNldHMgcHJvZHVjZWQgYnkgdGhpcyB0dXJuLlwiKSxcbiAgc3RhdHVzOiB6XG4gICAgLmN1c3RvbTxNZXNzYWdlU3RhdHVzPigodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIilcbiAgICAuZGVzY3JpYmUoXCJUZXJtaW5hbCBHZW5pZSB3aXJlIHN0YXR1cyBtaXJyb3JlZCBmcm9tIHRoZSBzb3VyY2UgcmVzdWx0IGV2ZW50LlwiKSxcbn0pO1xuLyoqIENvbXBsZXRpb24gZXZlbnQgZm9yIG9uZSBgYXNrX2dlbmllYCBpbnZvY2F0aW9uLCBpbmNsdWRpbmcgaXRzIHRlcm1pbmFsIHN0YXR1cy4gKi9cbmV4cG9ydCB0eXBlIEFza0dlbmllRG9uZUV2ZW50ID0gei5pbmZlcjx0eXBlb2YgQXNrR2VuaWVEb25lRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIE1hc3RyYS1vbmx5IGVycm9yIGV2ZW50OiB0ZXJtaW5hbCBHZW5pZSBhZ2VudCAvIHRyYW5zcG9ydFxuICogZXJyb3IuIEdlbmllJ3Mgb3duIGBGQUlMRURgIC8gYENBTkNFTExFRGAgY29tZSB0aHJvdWdoIHRoZVxuICogd2lyZSdzIGByZXN1bHRgIGV2ZW50IC0gdGhpcyB2YXJpYW50IGlzIGZvciBmYWlsdXJlcyB0aGUgd2lyZVxuICogY2FuJ3QgcmVwcmVzZW50IChuZXR3b3JrLCBHZW5pZSBhZ2VudCBjcmFzaCwgcGxhbm5lciBlcnJvcixcbiAqIGV0Yy4pIHBsdXMgYSBVSS1mcmllbmRseSBtaXJyb3Igb2YgYHJlc3VsdGAgd2hlbiB0aGUgc3RhdHVzIGlzXG4gKiBub24tYENPTVBMRVRFRGAuXG4gKi9cbmV4cG9ydCBjb25zdCBNYXN0cmFHZW5pZUVycm9yRXZlbnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcImVycm9yXCIpLFxuICBzcGFjZUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGNvbnZlcnNhdGlvbklkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG1lc3NhZ2VJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBlcnJvcjogei5zdHJpbmcoKSxcbn0pO1xuLyoqIE1hc3RyYS1zaWRlIGZhaWx1cmUgZXZlbnQgZm9yIGVycm9ycyBvdXRzaWRlIEdlbmllJ3Mgbm9ybWFsIHRlcm1pbmFsIHJlc3VsdC4gKi9cbmV4cG9ydCB0eXBlIE1hc3RyYUdlbmllRXJyb3JFdmVudCA9IHouaW5mZXI8dHlwZW9mIE1hc3RyYUdlbmllRXJyb3JFdmVudFNjaGVtYT47XG5cbi8qKlxuICogTWFzdHJhLW9ubHkgbGlmZWN5Y2xlIGV2ZW50OiB0aGUgaW5uZXIgR2VuaWUgYWdlbnQnc1xuICogc3RydWN0dXJlZC1vdXRwdXQgY29lcmNpb24gaGFzIGxhbmRlZC4gRmlyZXMgb25jZSBwZXIgR2VuaWVcbiAqIHRvb2wgaW52b2NhdGlvbiwgQUZURVIgYGFnZW50LmdlbmVyYXRlKC4uLilgIGNvbXBsZXRlcyAoaS5lLlxuICogdGhlIGlubmVyIGxvb3AgKyBNYXN0cmEncyBzdHJ1Y3R1cmluZyBwYXNzIGhhdmUgYm90aFxuICogZmluaXNoZWQpIGFuZCBCRUZPUkUgdGhlIHdyYXBwZXIgaHlkcmF0ZXMgZWFjaCBgZGF0YWAgaXRlbVxuICogd2l0aCBhIGNoYXJ0LiBTaWduYWxzIHRvIHRoZSBob3N0IFVJIHRoYXQgdGhlIGFnZW50IGhhc1xuICogc3RvcHBlZCByZWFzb25pbmcgYW5kIGlzIG1vdmluZyBpbnRvIGNoYXJ0IGdlbmVyYXRpb24uXG4gKlxuICogVGhlIHN0cnVjdHVyaW5nIHBhc3MgaXRzZWxmIGlzIG9wYXF1ZSAoaXQgcnVucyBpbnNpZGVcbiAqIE1hc3RyYSdzIGBhZ2VudC5nZW5lcmF0ZSguLi4pYCB0b2dldGhlciB3aXRoIHRoZSB0b29sIGxvb3ApXG4gKiBzbyB0aGlzIGlzIHRoZSBlYXJsaWVzdCBob29rIHdlIGNhbiBvZmZlcjsgd2UgY2FuJ3QgZmlyZSBhXG4gKiBcInN1bW1hcnkgc3RhcnRlZFwiIGV2ZW50IHRoZSB3YXkgd2UgZmlyZSBgc3RhcnRlZGAuXG4gKi9cbmV4cG9ydCBjb25zdCBTdW1tYXJ5RXZlbnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInN1bW1hcnlcIiksXG4gIHNwYWNlSWQ6IHouc3RyaW5nKCksXG4gIGl0ZW1zOiB6Lm51bWJlcigpLmludCgpLm5vbm5lZ2F0aXZlKCkuZGVzY3JpYmUoXCJUb3RhbCBpdGVtcyBpbiB0aGUgYWdlbnQncyBzdHJ1Y3R1cmVkIHN1bW1hcnkuXCIpLFxuICB0ZXh0SXRlbXM6IHoubnVtYmVyKCkuaW50KCkubm9ubmVnYXRpdmUoKS5kZXNjcmliZShcIlRleHQgYW5kIHByb3NlIGl0ZW1zIGluIHRoZSBzdW1tYXJ5LlwiKSxcbiAgZGF0YUl0ZW1zOiB6XG4gICAgLm51bWJlcigpXG4gICAgLmludCgpXG4gICAgLm5vbm5lZ2F0aXZlKClcbiAgICAuZGVzY3JpYmUoXCJEYXRhIGl0ZW1zIHRoZSB3cmFwcGVyIHdpbGwgaHlkcmF0ZSBpbnRvIGNoYXJ0cy5cIiksXG59KTtcbi8qKiBMaWZlY3ljbGUgZXZlbnQgZW1pdHRlZCBiZWZvcmUgc3VtbWFyeSBkYXRhIGl0ZW1zIGFyZSBoeWRyYXRlZCBpbnRvIGNoYXJ0cy4gKi9cbmV4cG9ydCB0eXBlIFN1bW1hcnlFdmVudCA9IHouaW5mZXI8dHlwZW9mIFN1bW1hcnlFdmVudFNjaGVtYT47XG5cbi8qKlxuICogTWFzdHJhLW9ubHkgZXZlbnQgdW5pb24uIEVhY2ggdmFyaWFudCB1c2VzIHRoZSBzYW1lIGZsYXRcbiAqIGB7dHlwZSwgLi4uZmllbGRzfWAgc2hhcGUgYXMge0BsaW5rIEdlbmllQ2hhdEV2ZW50fSBzb1xuICogc3Vic2NyaWJlcnMgdW5pb24gYm90aCB3aXRoIGEgc2luZ2xlIGBzd2l0Y2ggKGV2ZW50LnR5cGUpYC5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQWdlbnRFdmVudFNjaGVtYSA9IHouZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbXG4gIFN0YXJ0ZWRFdmVudFNjaGVtYSxcbiAgQXNrR2VuaWVEb25lRXZlbnRTY2hlbWEsXG4gIE1hc3RyYUdlbmllRXJyb3JFdmVudFNjaGVtYSxcbiAgU3VtbWFyeUV2ZW50U2NoZW1hLFxuXSk7XG4vKiogTWFzdHJhLW93bmVkIGxpZmVjeWNsZSBldmVudHMgbGF5ZXJlZCBvbiB0b3Agb2YgR2VuaWUncyB3aXJlIGV2ZW50IHN0cmVhbS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQWdlbnRFdmVudCA9IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRFdmVudFNjaGVtYT47XG5cbi8qKlxuICogVGhlIHVuaWZpZWQgd3JpdGVyLWV2ZW50IHZvY2FidWxhcnkgc3Vic2NyaWJlcnMgc2VlIG9uXG4gKiBgY3R4LndyaXRlcmA6IHRoZSB3aXJlLWRlcml2ZWQge0BsaW5rIEdlbmllQ2hhdEV2ZW50fSB1bmlvblxuICogKipwbHVzKiogTWFzdHJhLW9ubHkgZXZlbnRzIGZyb20ge0BsaW5rIEdlbmllQWdlbnRFdmVudH0uIEVhY2hcbiAqIHZhcmlhbnQgaXMgYSBmbGF0IGB7dHlwZSwgLi4uZmllbGRzfWAgb2JqZWN0OyBjb25zdW1lcnMgbmFycm93XG4gKiBvbiBgdHlwZWAgYW5kIHJlYWQgZmllbGRzIGlubGluZSAtIHRoZXJlIGlzIG5vIHBheWxvYWQgd3JhcHBlclxuICogYW5kIG5vIHdyaXRlci1ib3VuZGFyeSB0cmFuc2xhdG9yLlxuICpcbiAqIENvbXBvc2VkIHZpYSBgei51bmlvbmAgKG5vdCBgei5kaXNjcmltaW5hdGVkVW5pb25gKSBiZWNhdXNlXG4gKiBib3RoIGhhbHZlcyBhcmUgdGhlbXNlbHZlcyBkaXNjcmltaW5hdGVkIHVuaW9ucyBvbiB0aGUgc2FtZVxuICogYHR5cGVgIGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllV3JpdGVyRXZlbnRTY2hlbWEgPSB6LnVuaW9uKFtcbiAgZ2VuaWVNb2RlbC5HZW5pZUNoYXRFdmVudFNjaGVtYSxcbiAgR2VuaWVBZ2VudEV2ZW50U2NoZW1hLFxuXSk7XG4vKiogQ29tcGxldGUgZXZlbnQgdm9jYWJ1bGFyeSB3cml0dGVuIGJ5IHRoZSBNYXN0cmEgR2VuaWUgaW50ZWdyYXRpb24uICovXG5leHBvcnQgdHlwZSBHZW5pZVdyaXRlckV2ZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVXcml0ZXJFdmVudFNjaGVtYT47XG5cbi8qKiBEaXNjcmltaW5hdG9yIHR5cGUgZm9yIHtAbGluayBHZW5pZVdyaXRlckV2ZW50fS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllV3JpdGVyRXZlbnRUeXBlID0gR2VuaWVXcml0ZXJFdmVudFtcInR5cGVcIl07XG5cbi8qKiBOYXRpdmUgQUkgU0RLIGN1c3RvbSBkYXRhLXBhcnQgdHlwZSBjYXJyeWluZyBvbmUgR2VuaWUgcHJvZ3Jlc3MgZXZlbnQuICovXG5leHBvcnQgY29uc3QgR0VOSUVfUFJPR1JFU1NfUEFSVF9UWVBFID0gXCJkYXRhLWdlbmllLXByb2dyZXNzXCIgYXMgY29uc3Q7XG5cbi8qKlxuICogRGF0YSBhdHRhY2hlZCB0byB7QGxpbmsgR0VOSUVfUFJPR1JFU1NfUEFSVF9UWVBFfS4gYHRvb2xDYWxsSWRgIGFzc29jaWF0ZXNcbiAqIHByb2dyZXNzIHdpdGggdGhlIG5hdGl2ZSB0b29sIHBhcnQgdGhhdCBvd25zIHRoZSByZXF1ZXN0IGFuZCByZXN1bHQuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVByb2dyZXNzUGFydERhdGFTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHRvb2xDYWxsSWQ6IHouc3RyaW5nKCksXG4gIGV2ZW50OiBHZW5pZVdyaXRlckV2ZW50U2NoZW1hLFxufSk7XG4vKiogVmFsaWRhdGVkIHBheWxvYWQgY2FycmllZCBieSBhIG5hdGl2ZSBHZW5pZSBwcm9ncmVzcyBkYXRhIHBhcnQuICovXG5leHBvcnQgdHlwZSBHZW5pZVByb2dyZXNzUGFydERhdGEgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVByb2dyZXNzUGFydERhdGFTY2hlbWE+O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHN1bW1hcnkgKyBkYXRhc2V0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFRhYnVsYXIgcGF5bG9hZCBlbWJlZGRlZCBpbiBldmVyeSB7QGxpbmsgR2VuaWVTdW1tYXJ5SXRlbX1cbiAqIGB2aXN1YWxpemVgIGRhdGFzZXQuIEFsd2F5cyBwcmVzZW50OiBoeWRyYXRlZCBieSB0aGUgd29ya2Zsb3cnc1xuICogYWdlbnQgc3RlcCBiZWZvcmUgdGhlIGZpbmFsaXplIHN0ZXAgcnVucywgc28gY29uc3VtZXJzIGNhbiByZW5kZXJcbiAqIGEgdGFibGUgZmFsbGJhY2sgcmVnYXJkbGVzcyBvZiBjaGFydC1wbGFubmVyIG91dGNvbWUuXG4gKlxuICogRmllbGRzOlxuICogICAtIGBjb2x1bW5zYDogY29sdW1uIG5hbWVzIGluIGRpc3BsYXkgb3JkZXIuXG4gKiAgIC0gYHJvd3NgOiB0YWJ1bGFyIHJvd3Mga2V5ZWQgYnkgY29sdW1uIG5hbWUuXG4gKiAgIC0gYHJvd0NvdW50YDogdG90YWwgcm93IGNvdW50IEdlbmllIHJlcG9ydGVkIChtYXkgZXhjZWVkXG4gKiAgICAgYHJvd3MubGVuZ3RoYCB3aGVuIHRoZSBzdGF0ZW1lbnQgd2FzIHRydW5jYXRlZCkuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZURhdGFzZXREYXRhU2NoZW1hID0gei5vYmplY3Qoe1xuICBjb2x1bW5zOiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICByb3dzOiB6LmFycmF5KHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKSksXG4gIHJvd0NvdW50OiB6Lm51bWJlcigpLFxufSk7XG4vKiogSHlkcmF0ZWQgdGFidWxhciBkYXRhIHRoYXQgYWx3YXlzIGJhY2tzIGEgR2VuaWUgdmlzdWFsaXphdGlvbiBpdGVtLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVEYXRhc2V0RGF0YSA9IHouaW5mZXI8dHlwZW9mIEdlbmllRGF0YXNldERhdGFTY2hlbWE+O1xuXG4vKipcbiAqIFNsaW0gY2hhcnQgcmVmZXJlbmNlIGF0dGFjaGVkIHRvIGEgdmlzdWFsaXplIGRhdGFzZXQuIE9ubHlcbiAqIHByZXNlbnQgd2hlbiBwbGFubmluZyBzdWNjZWVkZWQuXG4gKlxuICogYG9wdGlvbmAgaXMgaW50ZW50aW9uYWxseSBOT1QgaW5jbHVkZWQuIFRoZSByZXNvbHZlZCBFY2hhcnRzXG4gKiBzcGVjIGxpdmVzIG9mZi1iYW5kIGluIHRoZSBjaGFydCBjYWNoZTogdGhlIGhvc3QgVUkgZmV0Y2hlcyBpdFxuICogYnkgYGNoYXJ0SWRgIGZyb20gdGhlIHBsdWdpbidzIGVtYmVkIHJvdXRlIChkZXJpdmVkIGZyb21cbiAqIGBiYXNlUGF0aGAgKyB7QGxpbmsgTUFTVFJBX1JPVVRFU30uZW1iZWQsIGkuZS4gYC9lbWJlZC9jaGFydC86aWRgO1xuICogc2VlIHtAbGluayBDaGFydH0pLiBFbWJlZGRpbmcgdGhlIGZ1bGwgc3BlYyBpbmxpbmUgd291bGRcbiAqIGluZmxhdGUgZXZlcnkgZGF0YXNldCBieSBzZXZlcmFsIEtCIHBlciBjaGFydCBhbmQgcm91bmQtdHJpcFxuICogdGhyb3VnaCB0aGUgTExNIGNvbnRleHQgZm9yIHplcm8gYmVuZWZpdCAodGhlIG1vZGVsIG9ubHkgbmVlZHNcbiAqIHRoZSBgY2hhcnRJZGAgdG8gcGxhY2UgYSBgW2NoYXJ0OjxjaGFydElkPl1gIG1hcmtlciBpbiBpdHNcbiAqIHJlcGx5KS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllRGF0YXNldENoYXJ0U2NoZW1hID0gei5vYmplY3Qoe1xuICBjaGFydElkOiB6LnN0cmluZygpLFxuICBjaGFydFR5cGU6IENoYXJ0VHlwZVNjaGVtYSxcbn0pO1xuLyoqIExpZ2h0d2VpZ2h0IHJlZmVyZW5jZSB0byBhIGNoYXJ0IHBsYW4gc3RvcmVkIGluIHRoZSBNYXN0cmEgY2hhcnQgY2FjaGUuICovXG5leHBvcnQgdHlwZSBHZW5pZURhdGFzZXRDaGFydCA9IHouaW5mZXI8dHlwZW9mIEdlbmllRGF0YXNldENoYXJ0U2NoZW1hPjtcblxuLyoqXG4gKiBEYXRhc2V0IGJ1bmRsZSBhdHRhY2hlZCB0byBhIHtAbGluayBHZW5pZVN1bW1hcnlJdGVtfSBgdmlzdWFsaXplYFxuICogaXRlbS4gYGRhdGFgIGlzIGFsd2F5cyBwb3B1bGF0ZWQ7IGBjaGFydGAgaXMgYmVzdC1lZmZvcnQgYW5kXG4gKiBhYnNlbnQgd2hlbiB0aGUgd29ya2Zsb3cncyBjaGFydC1wbGFubmVyIGZhaWxlZCAodGltZW91dCxcbiAqIG1hbGZvcm1lZCBwbGFuLCBhYm9ydCkgc28gdGhlIGhvc3QgVUkgY2FuIHN0aWxsIHJlbmRlciB0aGVcbiAqIHVuZGVybHlpbmcgdGFibGUuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZURhdGFzZXRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGRhdGE6IEdlbmllRGF0YXNldERhdGFTY2hlbWEsXG4gIGNoYXJ0OiBHZW5pZURhdGFzZXRDaGFydFNjaGVtYS5vcHRpb25hbCgpLFxufSk7XG4vKiogVmlzdWFsaXphdGlvbiBkYXRhc2V0IHdpdGggcmVxdWlyZWQgdGFibGUgZGF0YSBhbmQgYW4gb3B0aW9uYWwgcGxhbm5lZCBjaGFydC4gKi9cbmV4cG9ydCB0eXBlIEdlbmllRGF0YXNldCA9IHouaW5mZXI8dHlwZW9mIEdlbmllRGF0YXNldFNjaGVtYT47XG5cbi8qKlxuICogT25lIGl0ZW0gaW5zaWRlIHRoZSBHZW5pZSB3b3JrZmxvdydzIGZpbmFsIHN1bW1hcnkuIFRoZVxuICogd29ya2Zsb3cgcHJvZHVjZXMgYSBtaXhlZCBzZXF1ZW5jZSBvZjpcbiAqXG4gKiAgIC0gYHN0cmluZ2A6IGEgbWFya2Rvd24gcGFyYWdyYXBoIChpbnRlcnByZXRhdGlvbiwgY2FsbG91dHMsXG4gKiAgICAgdHJhbnNpdGlvbnMgYmV0d2VlbiBkYXRhIGJsb2NrcykuXG4gKiAgIC0gYHZpc3VhbGl6ZWA6IGEgcmVxdWVzdCBmcm9tIHRoZSBhZ2VudCBzdGVwIHRvIHZpc3VhbGl6ZSBhXG4gKiAgICAgc3BlY2lmaWMgR2VuaWUgc3RhdGVtZW50IGF0IHRoaXMgcG9zaXRpb24gaW4gdGhlIHByb3NlLlxuICogICAgIFRoZSBmaW5hbGl6ZSBzdGVwIGh5ZHJhdGVzIGBkYXRhc2V0LmRhdGFgIChyb3dzIGZyb20gdGhlXG4gKiAgICAgbWF0Y2hpbmcgYHN0YXRlbWVudElkYCkgYW5kIGF0dGFjaGVzIGBkYXRhc2V0LmNoYXJ0YCBhZnRlclxuICogICAgIHJ1bm5pbmcgdGhlIGNoYXJ0LXBsYW5uZXIuIFRoZSBhZ2VudCBORVZFUiBwaWNrcyB0aGUgY2hhcnRcbiAqICAgICB0eXBlIC0gaXQgb25seSBtYXJrcyB3aGVyZSBhIHZpc3VhbGl6YXRpb24gYmVsb25ncy5cbiAqXG4gKiBUaGUgaG9zdCBVSSB3YWxrcyB0aGUgYXJyYXkgaW4gZGlzcGxheSBvcmRlciB0byBjb21wb3NlIHRoZVxuICogZmluYWwgYXNzaXN0YW50IG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVN1bW1hcnlJdGVtU2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInN0cmluZ1wiKSxcbiAgICB0ZXh0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInZpc3VhbGl6ZVwiKSxcbiAgICBzdGF0ZW1lbnRJZDogei5zdHJpbmcoKSxcbiAgICB0aXRsZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZGF0YXNldDogR2VuaWVEYXRhc2V0U2NoZW1hLFxuICB9KSxcbl0pO1xuLyoqIE9yZGVyZWQgcHJvc2Ugb3IgdmlzdWFsaXphdGlvbiBpdGVtIGluIHRoZSBHZW5pZSBhZ2VudCdzIGZpbmFsIHN1bW1hcnkuICovXG5leHBvcnQgdHlwZSBHZW5pZVN1bW1hcnlJdGVtID0gei5pbmZlcjx0eXBlb2YgR2VuaWVTdW1tYXJ5SXRlbVNjaGVtYT47XG5cbi8qKiBEaXNjcmltaW5hdG9yIHR5cGUgZm9yIHtAbGluayBHZW5pZVN1bW1hcnlJdGVtfS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllU3VtbWFyeUl0ZW1UeXBlID0gR2VuaWVTdW1tYXJ5SXRlbVtcInR5cGVcIl07XG5cbi8qKlxuICogVGhlIEdlbmllIGFnZW50J3MgZmluYWwgb3V0cHV0IHNoYXBlIC0gd2hhdCB0aGUgY2FsbGluZyBhZ2VudCdzXG4gKiBHZW5pZSB0b29sIHJldHVybnMgdG8gdGhlIGNhbGxpbmcgTExNLiBUaGUgYHN1bW1hcnlgIGFycmF5IGlzXG4gKiB0aGUgdXNlci1mYWNpbmcgcmVuZGVyYWJsZTsgYGNvbnZlcnNhdGlvbklkYCBsZXRzIHRoZSBjYWxsaW5nXG4gKiBhZ2VudCAob3IgdGhlIFVJKSBmb2xsb3cgdXAgaW4gdGhlIHNhbWUgR2VuaWUgdGhyZWFkIG9uIHRoZVxuICogbmV4dCB0dXJuLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVBZ2VudFJlc3VsdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc3BhY2VJZDogei5zdHJpbmcoKSxcbiAgY29udmVyc2F0aW9uSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgc3VtbWFyeTogei5hcnJheShHZW5pZVN1bW1hcnlJdGVtU2NoZW1hKSxcbiAgZXJyb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIEZpbmFsIHJlbmRlcmFibGUgb3V0cHV0IHJldHVybmVkIGJ5IHRoZSBHZW5pZSBhZ2VudCB0b29sIHRvIGl0cyBjYWxsZXIuICovXG5leHBvcnQgdHlwZSBHZW5pZUFnZW50UmVzdWx0ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVBZ2VudFJlc3VsdFNjaGVtYT47XG4iXX0=
466
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93aXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBMkMsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4Qiw2RUFBNkU7QUFFN0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDL0MsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDcEIsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDeEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLGVBQWUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUMzQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztDQUNoRCxDQUFDLENBQUM7QUFJSDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNqRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNuQixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QixXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNuQyxDQUFDLENBQUM7QUFJSCwrRUFBK0U7QUFFL0U7Ozs7OztHQU1H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RztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0MsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDbkIsY0FBYyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDckMsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUM7SUFDeEMsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDN0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBXaXJlLWZvcm1hdCBjb250cmFjdCBmb3IgYEBkYngtdG9vbHMvYXBwa2l0LW1hc3RyYWA6IHRoZVxuICogZGVwZW5kZW5jeS1mcmVlIHpvZCBzY2hlbWFzICsgaW5mZXJyZWQgdHlwZXMgZXZlcnkgY29uc3VtZXIgKHRoZVxuICogUmVhY3QgY2xpZW50LCBicm93c2VyIGJ1bmRsZXMsIHRoZSBzZXJ2ZXIgcGx1Z2luKSBzaGFyZXMuXG4gKlxuICogS2VwdCBmcmVlIG9mIGBwZ2AsIGBmYXN0ZW1iZWRgLCBhbmQgdGhlIE1hc3RyYSBydW50aW1lIHNvIHRoZVxuICogY2xpZW50IGNhbiBpbXBvcnQgdGhlc2Ugc2NoZW1hcyB3aXRob3V0IGRyYWdnaW5nIGluIHNlcnZlci1vbmx5XG4gKiBkZXBlbmRlbmNpZXMuIFRocmVlIGxheWVycyBsaXZlIGhlcmU6XG4gKlxuICogICAxLiBUaGUgZGVzY3JpcHRvciBwdWJsaXNoZWQgYnkgYE1hc3RyYVBsdWdpbi5jbGllbnRDb25maWcoKWBcbiAqICAgICAgcGx1cyB0aGUgUkVTVCBwYXlsb2FkcyBpdHMgcm91dGVzIHJldHVybiAobW9kZWxzLCBoaXN0b3J5LFxuICogICAgICBzdWdnZXN0aW9ucywgY2hhcnQgZW1iZWRzLCBzdGF0ZW1lbnQgZGF0YSkuIFRoZSBzZXJ2ZXJcbiAqICAgICAgZGVyaXZlcyBldmVyeSBwYXRoIGZyb20gdGhlIHBsdWdpbiBtb3VudCBhbmQgcHVibGlzaGVzIHRoZVxuICogICAgICByZXNvbHZlZCBwYXRocyBzbyB0aGUgY2xpZW50IGNvbXBvc2VzIFVSTHMgd2l0aG91dFxuICogICAgICBoYXJkLWNvZGluZyBgL2FwaS9tYXN0cmFgIC0gcmVuYW1lIHRoZSBwbHVnaW4gYW5kIHRoZSBjbGllbnRcbiAqICAgICAga2VlcHMgd29ya2luZy5cbiAqICAgMi4gVGhlIGBjdHgud3JpdGVyYCBldmVudCB2b2NhYnVsYXJ5OiB0aGUgd2lyZS1kZXJpdmVkXG4gKiAgICAgIHtAbGluayBHZW5pZUNoYXRFdmVudH1zIGZyb20gYEBkYngtdG9vbHMvZ2VuaWUtc2hhcmVkYCBwbHVzXG4gKiAgICAgIHRoZSBNYXN0cmEtb25seSBhZ2VudCBsaWZlY3ljbGUgZXZlbnRzLCB1bmlmaWVkIGFzXG4gKiAgICAgIHtAbGluayBHZW5pZVdyaXRlckV2ZW50fSBzbyBzdWJzY3JpYmVycyBuYXJyb3cgYm90aCBoYWx2ZXNcbiAqICAgICAgd2l0aCBhIHNpbmdsZSBgc3dpdGNoIChldmVudC50eXBlKWAuXG4gKiAgIDMuIFRoZSBHZW5pZSBhZ2VudCdzIHdvcmtmbG93IG91dHB1dCBzaGFwZXNcbiAqICAgICAgKHtAbGluayBHZW5pZUFnZW50UmVzdWx0fSBhbmQgaXRzIHN1bW1hcnkgLyBkYXRhc2V0IGl0ZW1zKS5cbiAqXG4gKiBUaGUgcm91dGUgc2VnbWVudHMgbGl2ZSBpbiB0aGUgc2libGluZyBgcm91dGVzLnRzYFxuICogKHtAbGluayBNQVNUUkFfUk9VVEVTfSkgYW5kIHRoZSBlbWJlZC1tYXJrZXIgZ3JhbW1hciBpbiBgbWFya2Vycy50c2AsXG4gKiBzbyB0aGlzIGZpbGUgc3RheXMgcHVyZWx5IGRlY2xhcmF0aXZlIChzY2hlbWFzICsgaW5mZXJyZWQgdHlwZXMpLlxuICogVGhlIGJyb3dzZXIgY2xpZW50IHRoYXQgZHJpdmVzIHRoZXNlIHJvdXRlcyAoYE1hc3RyYVBsdWdpbkNsaWVudGApXG4gKiBzaGlwcyBmcm9tIGBAZGJ4LXRvb2xzL3VpLW1hc3RyYWAuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGdlbmllTW9kZWwsIHR5cGUgR2VuaWVDaGF0RXZlbnQsIHR5cGUgTWVzc2FnZVN0YXR1cyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1nZW5pZVwiO1xuaW1wb3J0IHsgbW9kZWwgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtbW9kZWxcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY2xpZW50IGNvbmZpZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogSlNPTi1zYWZlIGRlc2NyaXB0b3IgcHVibGlzaGVkIGJ5IHRoZSBNYXN0cmEgcGx1Z2luJ3NcbiAqIGBjbGllbnRDb25maWcoKWAuXG4gKlxuICogT25seSB0aGUgaXJyZWR1Y2libGUgZGF0YSBsaXZlcyBoZXJlOiBgYmFzZVBhdGhgICh0aGUgb25lIHBhdGggdGhlXG4gKiBjbGllbnQgY2FuJ3Qgb3RoZXJ3aXNlIGtub3csIHNpbmNlIGl0IGVuY29kZXMgdGhlIHBsdWdpbidzIG1vdW50XG4gKiBuYW1lKSBwbHVzIHRoZSBydW50aW1lIGFnZW50IHJvc3Rlci4gRXZlcnkgY29uY3JldGUgZW5kcG9pbnQgVVJMIGlzXG4gKiBkZXJpdmVkIGZyb20gYGJhc2VQYXRoYCBieSB0aGUgYnJvd3NlciBjbGllbnRcbiAqIChgTWFzdHJhUGx1Z2luQ2xpZW50YCkgdXNpbmcgdGhlIHNoYXJlZCB7QGxpbmsgTUFTVFJBX1JPVVRFU31cbiAqIHNlZ21lbnRzLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gcHVibGlzaCBwZXItcm91dGUuXG4gKlxuICogRmllbGRzOlxuICogICAtIGBiYXNlUGF0aGA6IHBsdWdpbiBtb3VudCBwYXRoLiBBbHdheXMgYC9hcGkvPHBsdWdpbk5hbWU+YC4gRmVlZFxuICogICAgIGl0IHRvIGBuZXcgTWFzdHJhUGx1Z2luQ2xpZW50KGNvbmZpZylgIChmcm9tXG4gKiAgICAgYEBkYngtdG9vbHMvdWktbWFzdHJhYCkgdG8gZ2V0IGEgdHlwZWQgY2xpZW50IG92ZXIgZXZlcnlcbiAqICAgICByb3V0ZSBwbHVzIHRoZSBzdGFuZGFyZCBhZ2VudCBzdHJlYW0uXG4gKiAgIC0gYGRlZmF1bHRBZ2VudGA6IGFnZW50IGlkIHRoZSBjbGllbnQgY29udmVyc2VzIHdpdGggd2hlbiBpdFxuICogICAgIGRvZXNuJ3QgbmFtZSBvbmUuXG4gKiAgIC0gYGFnZW50c2A6IGV2ZXJ5IHJlZ2lzdGVyZWQgYWdlbnQgaWQgaW4gcmVnaXN0cmF0aW9uIG9yZGVyLlxuICogICAtIGBmZWVkYmFja0VuYWJsZWRgOiB3aGV0aGVyIHRoZSBzZXJ2ZXIgY2FuIGxvZyB1c2VyIGZlZWRiYWNrIHRvXG4gKiAgICAgTUxmbG93IChNTGZsb3cgdHJhY2luZyBpcyBjb25maWd1cmVkKS4gRHJpdmVzIHdoZXRoZXIgdGhlIGNoYXQgVUlcbiAqICAgICBzdXJmYWNlcyB0aHVtYnMgLyBjb21tZW50IGNvbnRyb2xzLiBEZWZhdWx0cyB0byBgZmFsc2VgIHNvIGFcbiAqICAgICBjb25maWcgcHVibGlzaGVkIGJ5IGFuIG9sZGVyIHNlcnZlciAod2l0aG91dCB0aGUgZmllbGQpIHBhcnNlc1xuICogICAgIGNsZWFubHkgdG8gXCJvZmZcIi5cbiAqICAgLSBgY2hhdEFsd2F5c0F2YWlsYWJsZWA6IHdoZXRoZXIgdGhlIGFnZW50cycgRGF0YWJyaWNrcyBjYWxscyBydW4gYXMgdGhlXG4gKiAgICAgYXBwIHNlcnZpY2UgcHJpbmNpcGFsIHJhdGhlciB0aGFuIG9uLWJlaGFsZi1vZiB0aGUgc2lnbmVkLWluIHVzZXIuIFdoZW5cbiAqICAgICBgdHJ1ZWAgdGhlIGNoYXQgd29ya3MgZm9yIGFueSBjYWxsZXIgd2hvIGNhbiBvcGVuIHRoZSBhcHAsIHNvIGEgVUkgdGhhdFxuICogICAgIGhpZGVzIGNoYXQgd2hlbiB0aGUgT0JPIHRva2VuIGlzIGFic2VudCBzaG91bGQgc2hvdyBpdCBhbnl3YXkuIERlZmF1bHRzXG4gKiAgICAgdG8gYGZhbHNlYCAodGhlIE9CTyAvIGBcInVzZXJcImAgaWRlbnRpdHkgbW9kZSksIHNvIGFuIG9sZGVyIHNlcnZlciB3aXRob3V0XG4gKiAgICAgdGhlIGZpZWxkIGtlZXBzIHRoZSBPQk8tZ2F0ZWQgYmVoYXZpb3IuXG4gKi9cbmV4cG9ydCBjb25zdCBNYXN0cmFDbGllbnRDb25maWdTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGJhc2VQYXRoOiB6LnN0cmluZygpLFxuICBkZWZhdWx0QWdlbnQ6IHouc3RyaW5nKCksXG4gIGFnZW50czogei5hcnJheSh6LnN0cmluZygpKSxcbiAgZmVlZGJhY2tFbmFibGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgY2hhdEFsd2F5c0F2YWlsYWJsZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG59KTtcbi8qKiBCcm93c2VyLXNhZmUgTWFzdHJhIHBsdWdpbiBkZXNjcmlwdG9yIHVzZWQgdG8gY29uc3RydWN0IHJvdXRlIGFuZCBzdHJlYW0gY2xpZW50cy4gKi9cbmV4cG9ydCB0eXBlIE1hc3RyYUNsaWVudENvbmZpZyA9IHouaW5mZXI8dHlwZW9mIE1hc3RyYUNsaWVudENvbmZpZ1NjaGVtYT47XG5cbi8qKlxuICogSlNPTiBwYXlsb2FkIHJldHVybmVkIGJ5IGBHRVQgJHtiYXNlUGF0aH0vZGVmYXVsdC1tb2RlbFs/YWdlbnRJZD1dYC4gVGhlXG4gKiBzdGF0aWMgZGVmYXVsdCBtb2RlbCB0aGUgYWdlbnQgcmVzb2x2ZXMgdG8gd2hlbiB0aGUgY2xpZW50IHBpbnMgbm8gbW9kZWwsXG4gKiBhcyBib3RoIHRoZSByYXcgc2VydmluZy1lbmRwb2ludCBgbW9kZWxgIGlkIGFuZCBhIGBkaXNwbGF5TmFtZWAgKHRoZVxuICogaHVtYW5pemVkIGxhYmVsIHRoZSBwaWNrZXIgc2hvd3MpLiBCb3RoIGFyZSBgbnVsbGAgd2hlbiB0aGUgYWdlbnQgZGVjaWRlc1xuICogaXRzIG1vZGVsIGR5bmFtaWNhbGx5IGF0IGNhbGwgdGltZSAobm90aGluZyBzdGF0aWMgdG8gYWR2ZXJ0aXNlKS4gTGV0cyB0aGVcbiAqIHBpY2tlciBsYWJlbCBpdHMgZGVmYXVsdCBvcHRpb24gV0lUSE9VVCB3YWl0aW5nIG9uIHRoZSBgL21vZGVsc2AgY2F0YWxvZ3VlLFxuICogc28gaXQgbmV2ZXIgZmxhc2hlcyBhIHJhdyBpZCBvbiBsb2FkLiBLZXB0IG9mZiB0aGUgc3RhdGljIGJvb3RzdHJhcFxuICogYGNsaWVudENvbmZpZ2Agb24gcHVycG9zZTogaXQgaXMgcGVyLWFnZW50IGFuZCBjYW4gYmUgZHluYW1pYywgc28gaXQgaXNcbiAqIGZldGNoZWQgbGlrZSBgL21vZGVsc2AuXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0TW9kZWxSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgYWdlbnRJZDogei5zdHJpbmcoKSxcbiAgbW9kZWw6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgZGlzcGxheU5hbWU6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbn0pO1xuLyoqIFJlc3BvbnNlIGlkZW50aWZ5aW5nIHRoZSBtb2RlbCBjdXJyZW50bHkgc2VsZWN0ZWQgYXMgdGhlIHBsdWdpbiBkZWZhdWx0LiAqL1xuZXhwb3J0IHR5cGUgRGVmYXVsdE1vZGVsUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBEZWZhdWx0TW9kZWxSZXNwb25zZVNjaGVtYT47XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbW9kZWwgY2F0YWxvZ3VlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBKU09OIHBheWxvYWQgcmV0dXJuZWQgYnkgYEdFVCAke2Jhc2VQYXRofS9tb2RlbHNgLiBXcmFwcyB0aGUgc2hhcmVkXG4gKiB7QGxpbmsgbW9kZWwuU2VydmluZ0VuZHBvaW50U3VtbWFyeVNjaGVtYX0gKHJlLWV4cG9ydGVkIGZyb21cbiAqIGBAZGJ4LXRvb2xzL3NoYXJlZC1tb2RlbGApIHNvIHRoZSBjYXRhbG9ndWVcbiAqIGRlc2NyaXB0b3IgaGFzIGEgc2luZ2xlIGRlZmluaXRpb24gdGhlIGNsaWVudCwgc2VydmVyLCBhbmQgdGhlXG4gKiBzdGFuZGFsb25lIGBAZGJ4LXRvb2xzL21vZGVsYCB0b29sa2l0IGFsbCBhZ3JlZSBvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFNlcnZpbmdFbmRwb2ludHNSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgZW5kcG9pbnRzOiB6LmFycmF5KG1vZGVsLlNlcnZpbmdFbmRwb2ludFN1bW1hcnlTY2hlbWEpLFxufSk7XG4vKiogQXZhaWxhYmxlIERhdGFicmlja3Mgc2VydmluZyBlbmRwb2ludHMgcmV0dXJuZWQgYnkgdGhlIE1hc3RyYSBtb2RlbCByb3V0ZS4gKi9cbmV4cG9ydCB0eXBlIFNlcnZpbmdFbmRwb2ludHNSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIFNlcnZpbmdFbmRwb2ludHNSZXNwb25zZVNjaGVtYT47XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdWdnZXN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBKU09OIHBheWxvYWQgcmV0dXJuZWQgYnkgYEdFVCAke2Jhc2VQYXRofS9zdWdnZXN0aW9uc2AuXG4gKlxuICogQ2FycmllcyB0aGUgY3VyYXRlZCBzdGFydGVyIHF1ZXN0aW9ucyBmb3IgYW4gYWdlbnQncyBHZW5pZSBzcGFjZSAtXG4gKiB0aGUgYHNhbXBsZV9xdWVzdGlvbnNgIGFuIGF1dGhvciBjb25maWd1cmVkIG9uIHRoZSBzcGFjZSwgc3VyZmFjZWRcbiAqIGFzIG9uZS10YXAgcHJvbXB0cyBvbiB0aGUgY2hhdCdzIGVtcHR5IHN0YXRlLiBgcXVlc3Rpb25zYCBpcyBlbXB0eVxuICogd2hlbiB0aGUgYWdlbnQgaGFzIG5vIEdlbmllIHNwYWNlIChvciB0aGUgc3BhY2UgZGVmaW5lcyBub25lKSwgc29cbiAqIHRoZSBjbGllbnQgcmVuZGVycyBub3RoaW5nIGluIHRoYXQgY2FzZSByYXRoZXIgdGhhbiBmYWxsaW5nIGJhY2sgdG9cbiAqIGJ1aWx0LWluIGV4YW1wbGUgcHJvbXB0cy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1hc3RyYVN1Z2dlc3Rpb25zUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHF1ZXN0aW9uczogei5hcnJheSh6LnN0cmluZygpKSxcbn0pO1xuLyoqIEZvbGxvdy11cCBwcm9tcHRzIHN1Z2dlc3RlZCBmb3IgdGhlIGN1cnJlbnQgYWdlbnQgYW5kIHRocmVhZCBjb250ZXh0LiAqL1xuZXhwb3J0IHR5cGUgTWFzdHJhU3VnZ2VzdGlvbnNSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIE1hc3RyYVN1Z2dlc3Rpb25zUmVzcG9uc2VTY2hlbWE+O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY2hhcnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEFsbG93ZWQgY2hhcnQgdHlwZXMgdGhlIHBsYW5uZXIgY2FuIHBpY2suIERlZmluZWQgYXMgYVxuICogZGlzY3JpbWluYXRlZCBsaXRlcmFsIHVuaW9uIHNvIGVhY2ggdmFyaWFudCBjYXJyaWVzIGl0cyBvd25cbiAqIGAuZGVzY3JpYmUoKWAgY2xhdXNlIC0gdGhlIHNlcnZlci1zaWRlIHBsYW5uZXIncyBwcm9tcHRcbiAqIGZvcm1hdHRlciB3YWxrcyBgLm9wdGlvbnNgIHRvIGlubGluZSB0aGUgZGVzY3JpcHRpb25zIGludG8gdGhlXG4gKiBtb2RlbCBpbnN0cnVjdGlvbnMsIGtlZXBpbmcgdGhlIHByb21wdCBpbiBsb2NrLXN0ZXAgd2l0aCB0aGVcbiAqIHNjaGVtYSBieSBjb25zdHJ1Y3Rpb24uIFRoZSBydW50aW1lIHR5cGUgaXMgdGhlIHBsYWluIHN0cmluZ1xuICogdW5pb24gKGBcImJhclwiIHwgXCJsaW5lXCIgfCAuLi5gKSwgc28gY29uc3VtZXJzIHRoYXQganVzdCBuZWVkIGFcbiAqIGRpc2NyaW1pbmF0b3IgdmFsdWUgYmVoYXZlIHRoZSBzYW1lIGFzIGlmIGl0IHdlcmUgYVxuICogYHouZW51bShbLi4uXSlgLlxuICovXG5leHBvcnQgY29uc3QgQ2hhcnRUeXBlU2NoZW1hID0gelxuICAudW5pb24oW1xuICAgIHpcbiAgICAgIC5saXRlcmFsKFwiYmFyXCIpXG4gICAgICAuZGVzY3JpYmUoXG4gICAgICAgIFwiY29tcGFyaW5nIGEgbnVtZXJpYyB2YWx1ZSBhY3Jvc3MgYSBzbWFsbC9tZWRpdW0gc2V0IG9mIGRpc2NyZXRlIGNhdGVnb3JpZXMgKHRvcC1OLCByYW5raW5nLCBncm91cC1ieSlcIixcbiAgICAgICksXG4gICAgelxuICAgICAgLmxpdGVyYWwoXCJob3Jpem9udGFsQmFyXCIpXG4gICAgICAuZGVzY3JpYmUoXG4gICAgICAgIFwic2FtZSBhcyBiYXIgYnV0IGNhdGVnb3JpZXMgb24gdGhlIHktYXhpcyAtIHByZWZlciB3aGVuIGNhdGVnb3J5IGxhYmVscyBhcmUgbG9uZyBvciB0aGVyZSBhcmUgbWFueSBjYXRlZ29yaWVzXCIsXG4gICAgICApLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwibGluZVwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcIm9yZGVyZWQtYXhpcyB0cmVuZCAodGltZSBzZXJpZXMsIHNlcXVlbmNlLCByYW5rKSB3aGVyZSB0aGUgeC1heGlzIGhhcyBuYXR1cmFsIG9yZGVyXCIsXG4gICAgICApLFxuICAgIHoubGl0ZXJhbChcImFyZWFcIikuZGVzY3JpYmUoXCJzdGFja2VkLXRyZW5kIGVtcGhhc2lzIC0gY3VtdWxhdGl2ZSBvciBjb21wb3NpdGlvbiBvdmVyIHRpbWVcIiksXG4gICAgelxuICAgICAgLmxpdGVyYWwoXCJjb21ib1wiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcIm1peGVkIGJhciArIGxpbmUgKG9yIGFyZWEpIHNlcmllcyBvbiBzaGFyZWQgY2F0ZWdvcmllcyAtIGUuZy4gdm9sdW1lIGJhcnMgd2l0aCBhIHJhdGUvdHJlbmQgbGluZTsgc2V0IGVhY2ggc2VyaWVzJyBgdHlwZWBcIixcbiAgICAgICksXG4gICAgelxuICAgICAgLmxpdGVyYWwoXCJ3YXRlcmZhbGxcIilcbiAgICAgIC5kZXNjcmliZShcbiAgICAgICAgXCJicmlkZ2UgLyBydW5uaW5nLXRvdGFsIG9mIHNpZ25lZCBzdGVwIHZhbHVlcyAoc3RhcnQgLT4gZGVsdGFzIC0+IGVuZCkgYWNyb3NzIG9yZGVyZWQgY2F0ZWdvcmllc1wiLFxuICAgICAgKSxcbiAgICB6XG4gICAgICAubGl0ZXJhbChcInNjYXR0ZXJcIilcbiAgICAgIC5kZXNjcmliZShcInR3by1udW1lcmljLWF4aXMgY29ycmVsYXRpb25zIGJldHdlZW4gZmllbGRzIChlLmcuIHByaWNlIHZzLiBxdWFudGl0eSlcIiksXG4gICAgelxuICAgICAgLmxpdGVyYWwoXCJoZWF0bWFwXCIpXG4gICAgICAuZGVzY3JpYmUoXG4gICAgICAgIFwibWF0cml4IGludGVuc2l0eSBhY3Jvc3MgdHdvIGNhdGVnb3J5IGF4ZXMgLSB4IGxhYmVscyBpbiBgY2F0ZWdvcmllc2AsIG9uZSBzZXJpZXMgcGVyIG1hdHJpeCByb3cgaG9sZGluZyB0aGF0IHJvdydzIHZhbHVlc1wiLFxuICAgICAgKSxcbiAgICB6XG4gICAgICAubGl0ZXJhbChcInJhZGFyXCIpXG4gICAgICAuZGVzY3JpYmUoXG4gICAgICAgIFwibXVsdGktZGltZW5zaW9uIGNvbXBhcmlzb24gYWNyb3NzIGEgZml4ZWQgc2V0IG9mIGF4ZXMgKG9uZSBpbmRpY2F0b3IgcGVyIGNhdGVnb3J5LCBvbmUgb3IgbW9yZSBzZXJpZXMgb2YgdmFsdWVzKVwiLFxuICAgICAgKSxcbiAgICB6LmxpdGVyYWwoXCJwaWVcIikuZGVzY3JpYmUoXCJwYXJ0cy1vZi1hLXdob2xlIHdoZW4gMi03IGNhdGVnb3JpZXMgc3VtIHRvIGEgbWVhbmluZ2Z1bCB0b3RhbFwiKSxcbiAgICB6XG4gICAgICAubGl0ZXJhbChcImZ1bm5lbFwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcIm9yZGVyZWQgc3RhZ2VzIHRoYXQgc2hyaW5rIChjb252ZXJzaW9uLCBwaXBlbGluZSwgYXR0cml0aW9uKSAtIGB7bmFtZSwgdmFsdWV9YCBzbGljZXNcIixcbiAgICAgICksXG4gICAgelxuICAgICAgLmxpdGVyYWwoXCJ0cmVlbWFwXCIpXG4gICAgICAuZGVzY3JpYmUoXG4gICAgICAgIFwicGFydHMtb2YtYS13aG9sZSBhcyBuZXN0ZWQgcmVjdGFuZ2xlcyB3aGVuIHRoZXJlIGFyZSBtb3JlIHRoYW4gfjcgY2F0ZWdvcmllcyBvciBhIGZsYXQgaGllcmFyY2h5IG9mIGB7bmFtZSwgdmFsdWV9YCBzbGljZXNcIixcbiAgICAgICksXG4gICAgelxuICAgICAgLmxpdGVyYWwoXCJjdXN0b21cIilcbiAgICAgIC5kZXNjcmliZShcbiAgICAgICAgXCJlc2NhcGUgaGF0Y2ggZm9yIGEgY2hhcnQgbm9uZSBvZiB0aGUgYWJvdmUgY2FuIGV4cHJlc3MgKHNhbmtleSwgYm94cGxvdCwgY2FuZGxlc3RpY2ssIHN1bmJ1cnN0LCBnYXVnZSwgbmV0d29yayBncmFwaCwgY2FsZW5kYXIsIHBhcmFsbGVsLCAuLi4pIC0gaGFuZC13cml0ZSB0aGUgY29tcGxldGUgRWNoYXJ0cyBvcHRpb24gaW5zdGVhZCBvZiBhIHBsYW5cIixcbiAgICAgICksXG4gIF0pXG4gIC5kZXNjcmliZShcIlRoZSBjaGFydCBzaGFwZSB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgZGF0YSBhbmQgaW50ZW50LlwiKTtcbi8qKiBTdXBwb3J0ZWQgY2hhcnQgZmFtaWx5IHNlbGVjdGVkIGJ5IHRoZSBzZXJ2ZXItc2lkZSBjaGFydCBwbGFubmVyLiAqL1xuZXhwb3J0IHR5cGUgQ2hhcnRUeXBlID0gei5pbmZlcjx0eXBlb2YgQ2hhcnRUeXBlU2NoZW1hPjtcblxuLyoqXG4gKiBSZXNvbHZlZCBjaGFydCBwbGFuIGEgc2V0dGxlZCBjaGFydCBlbnRyeSBjYXJyaWVzIG9uIGl0c1xuICogYHJlc3VsdGAgZmllbGQuIGBvcHRpb25gIGlzIHRoZSBmdWxsIEVjaGFydHMgc3BlYzsgcGFzc1xuICogc3RyYWlnaHQgaW50byBgPFJlYWN0RUNoYXJ0cyBvcHRpb249ey4uLn0+YC5cbiAqL1xuZXhwb3J0IGNvbnN0IENoYXJ0UmVzdWx0U2NoZW1hID0gei5vYmplY3Qoe1xuICBjaGFydFR5cGU6IENoYXJ0VHlwZVNjaGVtYSxcbiAgb3B0aW9uOiB6XG4gICAgLnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSlcbiAgICAuZGVzY3JpYmUoXG4gICAgICBcIkZ1bGx5LXJlc29sdmVkIEVjaGFydHMgYEVDaGFydHNPcHRpb25gIEpTT04gZm9yIHRoaXMgY2hhcnQgLSBkcm9wIGRpcmVjdGx5IGludG8gYW4gRWNoYXJ0cyBpbnN0YW5jZSAob3IgYDxSZWFjdEVDaGFydHMgb3B0aW9uPXsuLi59IC8+YCkgd2l0aG91dCBmdXJ0aGVyIHByb2Nlc3NpbmcuIEluY2x1ZGVzIHRpdGxlIC8gdG9vbHRpcCAvIGxlZ2VuZCAvIGdyaWQgLyBheGlzIC8gc2VyaWVzIGRlZmF1bHRzIGFscmVhZHkgbWVyZ2VkIGluLlwiLFxuICAgICksXG59KTtcbi8qKiBSZW5kZXItcmVhZHkgY2hhcnQgcGxhbiBzdG9yZWQgYmVoaW5kIGEgY2hhcnQgZW1iZWQgaWRlbnRpZmllci4gKi9cbmV4cG9ydCB0eXBlIENoYXJ0UmVzdWx0ID0gei5pbmZlcjx0eXBlb2YgQ2hhcnRSZXN1bHRTY2hlbWE+O1xuXG4vKipcbiAqIFdpcmUtZm9ybWF0IEFORCBzZXJ2ZXItc2lkZSBjYWNoZSBzaGFwZSBmb3IgYSBjaGFydCBlbnRyeS5cbiAqIFRocmVlIGxpZmVjeWNsZSBzdGF0ZXMgaW5mZXJyZWQgZnJvbSB0aGUgdHdvIG9wdGlvbmFsIGZpZWxkc1xuICogKG5vIGRpc2NyaW1pbmF0b3IgbmVlZGVkKTpcbiAqXG4gKiAgIC0gYHJlc3VsdGAgc2V0ICAgICAgICAgICAgICAgICAgICAtPiBjaGFydCBpcyByZWFkeSB0byByZW5kZXJcbiAqICAgLSBgZXJyb3JgIHNldCAgICAgICAgICAgICAgICAgICAgIC0+IHBsYW5uZXIgLyBkYXRhIGZldGNoIGZhaWxlZFxuICogICAtIGJvdGggYHJlc3VsdGAgYW5kIGBlcnJvcmAgdW5zZXQgLT4gc3RpbGwgcHJvY2Vzc2luZ1xuICpcbiAqIGBvcHRpb25gIGlzIHR5cGVkIGFzIGEgZ2VuZXJpYyByZWNvcmQgc28gdGhpcyBwYWNrYWdlIHN0YXlzXG4gKiBkZXBlbmRlbmN5LWZyZWUgb2YgYGVjaGFydHNgLiBUaGUgc2VydmVyIChgY2hhcnQudHNgKSBpbXBvcnRzXG4gKiB0aGlzIHNjaGVtYSBkaXJlY3RseTsgdGhlIGRlbW8gY2xpZW50IHBvbGxzIHRoZVxuICogYC9lbWJlZC9jaGFydC86aWRgIHJvdXRlIGFuZCBwYXJzZXMgcmVzcG9uc2VzIGFnYWluc3QgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBDaGFydFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgY2hhcnRJZDogelxuICAgIC5zdHJpbmcoKVxuICAgIC5kZXNjcmliZShcbiAgICAgIFwiT3BhcXVlIGlkIG1pbnRlZCBieSB0aGUgY2hhcnQgc3Vic3lzdGVtLiBFbWJlZCB2ZXJiYXRpbSBhcyBgW2NoYXJ0OjxjaGFydElkPl1gIGluIGFnZW50IHByb3NlOyB0aGUgaG9zdCBVSSByZXNvbHZlcyBpdCBhZ2FpbnN0IHRoaXMgY2FjaGUgZW50cnkuXCIsXG4gICAgKSxcbiAgZXJyb3I6IHpcbiAgICAuc3RyaW5nKClcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZXNjcmliZShcbiAgICAgIFwiRXJyb3IgbWVzc2FnZSB3aGVuIHRoZSBjaGFydCBmYWlsZWQgKGRhdGEgZmV0Y2ggZXJyb3IsIHBsYW5uZXIgZXJyb3IsIGVtcHR5IGRhdGFzZXQpLiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgcmVzdWx0YDsgYWJzZW50IG9uIHN1Y2Nlc3MgYW5kIHdoaWxlIHByb2Nlc3NpbmcuXCIsXG4gICAgKSxcbiAgcmVzdWx0OiBDaGFydFJlc3VsdFNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFxuICAgIFwiUmVzb2x2ZWQgY2hhcnQgcGxhbi4gQWJzZW50IHdoaWxlIHByb2Nlc3NpbmcgYW5kIHdoZW4gdGhlIHJ1biBlcnJvcmVkLlwiLFxuICApLFxufSk7XG4vKiogUG9sbGFibGUgY2hhcnQtY2FjaGUgZW50cnkgcmVwcmVzZW50aW5nIHBlbmRpbmcsIHN1Y2Nlc3NmdWwsIG9yIGZhaWxlZCBwbGFubmluZy4gKi9cbmV4cG9ydCB0eXBlIENoYXJ0ID0gei5pbmZlcjx0eXBlb2YgQ2hhcnRTY2hlbWE+O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHN0YXRlbWVudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFdpcmUtZm9ybWF0IHBheWxvYWQgcmV0dXJuZWQgYnkgYEdFVCAke2Jhc2VQYXRofS9lbWJlZC9kYXRhLzppZGAuXG4gKlxuICogTWlycm9ycyB0aGUgYWdlbnQtc2lkZSBgZ2V0X3N0YXRlbWVudGAgdG9vbCdzIG91dHB1dCBzbyB0aGVcbiAqIGhvc3QgVUkgYW5kIHRoZSBMTE0gc2VlIHRoZSBleGFjdCBzYW1lIHNoYXBlIGZvciB0aGUgc2FtZVxuICogc3RhdGVtZW50OyB0aGUgcm91dGUgaXMgd2hhdCByZXNvbHZlcyBgW2RhdGE6PHN0YXRlbWVudF9pZD5dYFxuICogbWFya2VycyB0aGUgYWdlbnQgZW1iZWRzIGluIHByb3NlLlxuICpcbiAqIEZpZWxkczpcbiAqICAgLSBgY29sdW1uc2A6IGNvbHVtbiBuYW1lcyBpbiBkZWNsYXJhdGlvbiBvcmRlci5cbiAqICAgLSBgcm93c2A6IHJvdyByZWNvcmRzIGtleWVkIGJ5IGNvbHVtbiBuYW1lLiBDZWxsIHZhbHVlcyBhcmVcbiAqICAgICBlaXRoZXIgY29lcmNlZCBudW1iZXJzIG9yIHRoZSBvcmlnaW5hbCBzdHJpbmdzIChHZW5pZSAvXG4gKiAgICAgU3RhdGVtZW50IEV4ZWN1dGlvbiByZXR1cm5zIGV2ZXJ5IGNlbGwgYXMgYHN0cmluZyB8IG51bGxgO1xuICogICAgIG51bWVyaWMtbG9va2luZyBjZWxscyBhcmUgY29lcmNlZCBzZXJ2ZXItc2lkZSBzbyB0aGUgVUlcbiAqICAgICBjYW4gZm9ybWF0IHdpdGggYHRhYnVsYXItbnVtc2Agd2l0aG91dCByZS1wYXJzaW5nKS5cbiAqICAgLSBgcm93Q291bnRgOiB0b3RhbCByb3cgY291bnQgdXBzdHJlYW0gKGluZGVwZW5kZW50IG9mIHRoZVxuICogICAgIGBsaW1pdGAgY2FwKS4gQ29tcGFyZSBhZ2FpbnN0IGByb3dzLmxlbmd0aGAgdG8gZGV0ZWN0XG4gKiAgICAgdHJ1bmNhdGlvbiAtIGB0cnVuY2F0ZWRgIGlzIHRoZSBwcmVjb21wdXRlZCBmbGFnLlxuICogICAtIGB0cnVuY2F0ZWRgOiBgdHJ1ZWAgd2hlbiB0aGUgc2VydmVyIGNsaXBwZWQgcm93cyB0byBob25vclxuICogICAgIHRoZSByb3V0ZSdzIHJvdyBjYXA7IHRoZSBVSSBzaG91bGQgc3VyZmFjZSBhIFwic2hvd2luZyBOIG9mXG4gKiAgICAgTSByb3dzXCIgYWZmb3JkYW5jZSBpbiB0aGF0IGNhc2UuXG4gKi9cbmV4cG9ydCBjb25zdCBTdGF0ZW1lbnREYXRhU2NoZW1hID0gei5vYmplY3Qoe1xuICBjb2x1bW5zOiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICByb3dzOiB6LmFycmF5KHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKSksXG4gIHJvd0NvdW50OiB6Lm51bWJlcigpLFxuICB0cnVuY2F0ZWQ6IHouYm9vbGVhbigpLFxufSk7XG4vKiogVGFidWxhciBzdGF0ZW1lbnQgcGF5bG9hZCByZXNvbHZlZCBmcm9tIGEgYFtkYXRhOjxzdGF0ZW1lbnRfaWQ+XWAgZW1iZWQgbWFya2VyLiAqL1xuZXhwb3J0IHR5cGUgU3RhdGVtZW50RGF0YSA9IHouaW5mZXI8dHlwZW9mIFN0YXRlbWVudERhdGFTY2hlbWE+O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tIG1hc3RyYS1vbmx5IGdlbmllLWFnZW50IGV2ZW50cyAtLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogTWFzdHJhLW9ubHkgbGlmZWN5Y2xlIGV2ZW50OiB0aGUgR2VuaWUgdG9vbCBpbnZvY2F0aW9uIHN0YXJ0ZWQuXG4gKiBFbWl0dGVkIGltbWVkaWF0ZWx5IHdoZW4gdGhlIGNhbGxpbmcgYWdlbnQgaW52b2tlcyB0aGUgR2VuaWVcbiAqIHRvb2wsIGJlZm9yZSBhbnkgaW5uZXIgYWdlbnQgLyB3aXJlIGFjdGl2aXR5LCBzbyB0aGUgVUkgY2FuXG4gKiBwb3AgYSBcIlRoaW5raW5nLi4uXCIgcGlsbCB0aGUgaW5zdGFudCB0aGUgbW9kZWwgZGVjaWRlcyB0b1xuICogZGVsZWdhdGUuIGBjb252ZXJzYXRpb25JZGAgLyBgbWVzc2FnZUlkYCBhcmUgYWJzZW50IG9uIHRoaXNcbiAqIGZpcnN0IGVtaXQgKG5vIEdlbmllIHJvdW5kLXRyaXAgeWV0KS4gRmllbGQgbmFtZXMgYXJlXG4gKiBjYW1lbENhc2UgKHZzIHRoZSBzbmFrZV9jYXNlIHdpcmUgZXZlbnRzKSB0byBtaXJyb3IgdGhlXG4gKiBHZW5pZSBhZ2VudCdzIG93biBpbnRlcm5hbCBkYXRhIHBsdW1iaW5nLlxuICovXG5leHBvcnQgY29uc3QgU3RhcnRlZEV2ZW50U2NoZW1hID0gei5vYmplY3Qoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJzdGFydGVkXCIpLFxuICBzcGFjZUlkOiB6LnN0cmluZygpLFxuICBjb252ZXJzYXRpb25JZDogelxuICAgIC5zdHJpbmcoKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlc2NyaWJlKFwiRXhpc3RpbmcgR2VuaWUgY29udmVyc2F0aW9uIGlkIGZvciBhIGZvbGxvdy11cCB0dXJuLiBBYnNlbnQgb24gdGhlIGZpcnN0IHR1cm4uXCIpLFxuICBtZXNzYWdlSWQ6IHpcbiAgICAuc3RyaW5nKClcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZXNjcmliZShcIkdlbmllIG1lc3NhZ2UgaWQgb25jZSB0aGUgZmlyc3Qgd2lyZSBtZXNzYWdlIGV2ZW50IGhhcyBhcnJpdmVkLlwiKSxcbiAgY29udGVudDogei5zdHJpbmcoKS5kZXNjcmliZShcIlF1ZXN0aW9uIHRoZSBHZW5pZSBhZ2VudCBzZW50IHRvIEdlbmllLlwiKSxcbn0pO1xuLyoqIEltbWVkaWF0ZSBsaWZlY3ljbGUgZXZlbnQgZW1pdHRlZCB3aGVuIGFuIGBhc2tfZ2VuaWVgIGludm9jYXRpb24gYmVnaW5zLiAqL1xuZXhwb3J0IHR5cGUgU3RhcnRlZEV2ZW50ID0gei5pbmZlcjx0eXBlb2YgU3RhcnRlZEV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBNYXN0cmEtb25seSBsaWZlY3ljbGUgZXZlbnQ6IG9uZSBgYXNrX2dlbmllYCBpbnZvY2F0aW9uXG4gKiBmaW5pc2hlZC4gQ2FycmllcyB0aGUgaHlkcmF0ZWQgYHN0YXRlbWVudElkc2AgKHJvd3MgYXJlIGZldGNoZWRcbiAqIHZpYSBgZ2V0U3RhdGVtZW50YCBzZXBhcmF0ZWx5KSBhbmQgR2VuaWUncyBmaW5hbCBwcm9zZSBhbnN3ZXJcbiAqIHNvIHRoZSBVSSBjYW4gbW92ZSBmcm9tIFwidGhpbmtpbmdcIiB0byBcImFuc3dlcmVkXCIgd2l0aG91dFxuICogd2FpdGluZyBmb3IgdGhlIEdlbmllIGFnZW50J3Mgd2hvbGUgcmVhc29uaW5nIGxvb3AgdG8gZW5kLlxuICovXG5leHBvcnQgY29uc3QgQXNrR2VuaWVEb25lRXZlbnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcImFza19nZW5pZV9kb25lXCIpLFxuICBzcGFjZUlkOiB6LnN0cmluZygpLFxuICBjb252ZXJzYXRpb25JZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtZXNzYWdlSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgYW5zd2VyOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJHZW5pZSdzIG5hdHVyYWwtbGFuZ3VhZ2UgYW5zd2VyIGZvciB0aGUgdHVybi5cIiksXG4gIHN0YXRlbWVudElkczogelxuICAgIC5hcnJheSh6LnN0cmluZygpKVxuICAgIC5kZXNjcmliZShcIlN0YXRlbWVudCBpZHMgZm9yIG5vbi1lbXB0eSByZXN1bHQgc2V0cyBwcm9kdWNlZCBieSB0aGlzIHR1cm4uXCIpLFxuICBzdGF0dXM6IHpcbiAgICAuY3VzdG9tPE1lc3NhZ2VTdGF0dXM+KCh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKVxuICAgIC5kZXNjcmliZShcIlRlcm1pbmFsIEdlbmllIHdpcmUgc3RhdHVzIG1pcnJvcmVkIGZyb20gdGhlIHNvdXJjZSByZXN1bHQgZXZlbnQuXCIpLFxufSk7XG4vKiogQ29tcGxldGlvbiBldmVudCBmb3Igb25lIGBhc2tfZ2VuaWVgIGludm9jYXRpb24sIGluY2x1ZGluZyBpdHMgdGVybWluYWwgc3RhdHVzLiAqL1xuZXhwb3J0IHR5cGUgQXNrR2VuaWVEb25lRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBBc2tHZW5pZURvbmVFdmVudFNjaGVtYT47XG5cbi8qKlxuICogTWFzdHJhLW9ubHkgZXJyb3IgZXZlbnQ6IHRlcm1pbmFsIEdlbmllIGFnZW50IC8gdHJhbnNwb3J0XG4gKiBlcnJvci4gR2VuaWUncyBvd24gYEZBSUxFRGAgLyBgQ0FOQ0VMTEVEYCBjb21lIHRocm91Z2ggdGhlXG4gKiB3aXJlJ3MgYHJlc3VsdGAgZXZlbnQgLSB0aGlzIHZhcmlhbnQgaXMgZm9yIGZhaWx1cmVzIHRoZSB3aXJlXG4gKiBjYW4ndCByZXByZXNlbnQgKG5ldHdvcmssIEdlbmllIGFnZW50IGNyYXNoLCBwbGFubmVyIGVycm9yLFxuICogZXRjLikgcGx1cyBhIFVJLWZyaWVuZGx5IG1pcnJvciBvZiBgcmVzdWx0YCB3aGVuIHRoZSBzdGF0dXMgaXNcbiAqIG5vbi1gQ09NUExFVEVEYC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1hc3RyYUdlbmllRXJyb3JFdmVudFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwiZXJyb3JcIiksXG4gIHNwYWNlSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY29udmVyc2F0aW9uSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbWVzc2FnZUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGVycm9yOiB6LnN0cmluZygpLFxufSk7XG4vKiogTWFzdHJhLXNpZGUgZmFpbHVyZSBldmVudCBmb3IgZXJyb3JzIG91dHNpZGUgR2VuaWUncyBub3JtYWwgdGVybWluYWwgcmVzdWx0LiAqL1xuZXhwb3J0IHR5cGUgTWFzdHJhR2VuaWVFcnJvckV2ZW50ID0gei5pbmZlcjx0eXBlb2YgTWFzdHJhR2VuaWVFcnJvckV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBNYXN0cmEtb25seSBsaWZlY3ljbGUgZXZlbnQ6IHRoZSBpbm5lciBHZW5pZSBhZ2VudCdzXG4gKiBzdHJ1Y3R1cmVkLW91dHB1dCBjb2VyY2lvbiBoYXMgbGFuZGVkLiBGaXJlcyBvbmNlIHBlciBHZW5pZVxuICogdG9vbCBpbnZvY2F0aW9uLCBBRlRFUiBgYWdlbnQuZ2VuZXJhdGUoLi4uKWAgY29tcGxldGVzIChpLmUuXG4gKiB0aGUgaW5uZXIgbG9vcCArIE1hc3RyYSdzIHN0cnVjdHVyaW5nIHBhc3MgaGF2ZSBib3RoXG4gKiBmaW5pc2hlZCkgYW5kIEJFRk9SRSB0aGUgd3JhcHBlciBoeWRyYXRlcyBlYWNoIGBkYXRhYCBpdGVtXG4gKiB3aXRoIGEgY2hhcnQuIFNpZ25hbHMgdG8gdGhlIGhvc3QgVUkgdGhhdCB0aGUgYWdlbnQgaGFzXG4gKiBzdG9wcGVkIHJlYXNvbmluZyBhbmQgaXMgbW92aW5nIGludG8gY2hhcnQgZ2VuZXJhdGlvbi5cbiAqXG4gKiBUaGUgc3RydWN0dXJpbmcgcGFzcyBpdHNlbGYgaXMgb3BhcXVlIChpdCBydW5zIGluc2lkZVxuICogTWFzdHJhJ3MgYGFnZW50LmdlbmVyYXRlKC4uLilgIHRvZ2V0aGVyIHdpdGggdGhlIHRvb2wgbG9vcClcbiAqIHNvIHRoaXMgaXMgdGhlIGVhcmxpZXN0IGhvb2sgd2UgY2FuIG9mZmVyOyB3ZSBjYW4ndCBmaXJlIGFcbiAqIFwic3VtbWFyeSBzdGFydGVkXCIgZXZlbnQgdGhlIHdheSB3ZSBmaXJlIGBzdGFydGVkYC5cbiAqL1xuZXhwb3J0IGNvbnN0IFN1bW1hcnlFdmVudFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwic3VtbWFyeVwiKSxcbiAgc3BhY2VJZDogei5zdHJpbmcoKSxcbiAgaXRlbXM6IHoubnVtYmVyKCkuaW50KCkubm9ubmVnYXRpdmUoKS5kZXNjcmliZShcIlRvdGFsIGl0ZW1zIGluIHRoZSBhZ2VudCdzIHN0cnVjdHVyZWQgc3VtbWFyeS5cIiksXG4gIHRleHRJdGVtczogei5udW1iZXIoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLmRlc2NyaWJlKFwiVGV4dCBhbmQgcHJvc2UgaXRlbXMgaW4gdGhlIHN1bW1hcnkuXCIpLFxuICBkYXRhSXRlbXM6IHpcbiAgICAubnVtYmVyKClcbiAgICAuaW50KClcbiAgICAubm9ubmVnYXRpdmUoKVxuICAgIC5kZXNjcmliZShcIkRhdGEgaXRlbXMgdGhlIHdyYXBwZXIgd2lsbCBoeWRyYXRlIGludG8gY2hhcnRzLlwiKSxcbn0pO1xuLyoqIExpZmVjeWNsZSBldmVudCBlbWl0dGVkIGJlZm9yZSBzdW1tYXJ5IGRhdGEgaXRlbXMgYXJlIGh5ZHJhdGVkIGludG8gY2hhcnRzLiAqL1xuZXhwb3J0IHR5cGUgU3VtbWFyeUV2ZW50ID0gei5pbmZlcjx0eXBlb2YgU3VtbWFyeUV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBNYXN0cmEtb25seSBldmVudCB1bmlvbi4gRWFjaCB2YXJpYW50IHVzZXMgdGhlIHNhbWUgZmxhdFxuICogYHt0eXBlLCAuLi5maWVsZHN9YCBzaGFwZSBhcyB7QGxpbmsgR2VuaWVDaGF0RXZlbnR9IHNvXG4gKiBzdWJzY3JpYmVycyB1bmlvbiBib3RoIHdpdGggYSBzaW5nbGUgYHN3aXRjaCAoZXZlbnQudHlwZSlgLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVBZ2VudEV2ZW50U2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgU3RhcnRlZEV2ZW50U2NoZW1hLFxuICBBc2tHZW5pZURvbmVFdmVudFNjaGVtYSxcbiAgTWFzdHJhR2VuaWVFcnJvckV2ZW50U2NoZW1hLFxuICBTdW1tYXJ5RXZlbnRTY2hlbWEsXG5dKTtcbi8qKiBNYXN0cmEtb3duZWQgbGlmZWN5Y2xlIGV2ZW50cyBsYXllcmVkIG9uIHRvcCBvZiBHZW5pZSdzIHdpcmUgZXZlbnQgc3RyZWFtLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVBZ2VudEV2ZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVBZ2VudEV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBUaGUgdW5pZmllZCB3cml0ZXItZXZlbnQgdm9jYWJ1bGFyeSBzdWJzY3JpYmVycyBzZWUgb25cbiAqIGBjdHgud3JpdGVyYDogdGhlIHdpcmUtZGVyaXZlZCB7QGxpbmsgR2VuaWVDaGF0RXZlbnR9IHVuaW9uXG4gKiAqKnBsdXMqKiBNYXN0cmEtb25seSBldmVudHMgZnJvbSB7QGxpbmsgR2VuaWVBZ2VudEV2ZW50fS4gRWFjaFxuICogdmFyaWFudCBpcyBhIGZsYXQgYHt0eXBlLCAuLi5maWVsZHN9YCBvYmplY3Q7IGNvbnN1bWVycyBuYXJyb3dcbiAqIG9uIGB0eXBlYCBhbmQgcmVhZCBmaWVsZHMgaW5saW5lIC0gdGhlcmUgaXMgbm8gcGF5bG9hZCB3cmFwcGVyXG4gKiBhbmQgbm8gd3JpdGVyLWJvdW5kYXJ5IHRyYW5zbGF0b3IuXG4gKlxuICogQ29tcG9zZWQgdmlhIGB6LnVuaW9uYCAobm90IGB6LmRpc2NyaW1pbmF0ZWRVbmlvbmApIGJlY2F1c2VcbiAqIGJvdGggaGFsdmVzIGFyZSB0aGVtc2VsdmVzIGRpc2NyaW1pbmF0ZWQgdW5pb25zIG9uIHRoZSBzYW1lXG4gKiBgdHlwZWAga2V5LlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVXcml0ZXJFdmVudFNjaGVtYSA9IHoudW5pb24oW1xuICBnZW5pZU1vZGVsLkdlbmllQ2hhdEV2ZW50U2NoZW1hLFxuICBHZW5pZUFnZW50RXZlbnRTY2hlbWEsXG5dKTtcbi8qKiBDb21wbGV0ZSBldmVudCB2b2NhYnVsYXJ5IHdyaXR0ZW4gYnkgdGhlIE1hc3RyYSBHZW5pZSBpbnRlZ3JhdGlvbi4gKi9cbmV4cG9ydCB0eXBlIEdlbmllV3JpdGVyRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVdyaXRlckV2ZW50U2NoZW1hPjtcblxuLyoqIERpc2NyaW1pbmF0b3IgdHlwZSBmb3Ige0BsaW5rIEdlbmllV3JpdGVyRXZlbnR9LiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVXcml0ZXJFdmVudFR5cGUgPSBHZW5pZVdyaXRlckV2ZW50W1widHlwZVwiXTtcblxuLyoqIE5hdGl2ZSBBSSBTREsgY3VzdG9tIGRhdGEtcGFydCB0eXBlIGNhcnJ5aW5nIG9uZSBHZW5pZSBwcm9ncmVzcyBldmVudC4gKi9cbmV4cG9ydCBjb25zdCBHRU5JRV9QUk9HUkVTU19QQVJUX1RZUEUgPSBcImRhdGEtZ2VuaWUtcHJvZ3Jlc3NcIiBhcyBjb25zdDtcblxuLyoqXG4gKiBEYXRhIGF0dGFjaGVkIHRvIHtAbGluayBHRU5JRV9QUk9HUkVTU19QQVJUX1RZUEV9LiBgdG9vbENhbGxJZGAgYXNzb2NpYXRlc1xuICogcHJvZ3Jlc3Mgd2l0aCB0aGUgbmF0aXZlIHRvb2wgcGFydCB0aGF0IG93bnMgdGhlIHJlcXVlc3QgYW5kIHJlc3VsdC5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllUHJvZ3Jlc3NQYXJ0RGF0YVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgdG9vbENhbGxJZDogei5zdHJpbmcoKSxcbiAgZXZlbnQ6IEdlbmllV3JpdGVyRXZlbnRTY2hlbWEsXG59KTtcbi8qKiBWYWxpZGF0ZWQgcGF5bG9hZCBjYXJyaWVkIGJ5IGEgbmF0aXZlIEdlbmllIHByb2dyZXNzIGRhdGEgcGFydC4gKi9cbmV4cG9ydCB0eXBlIEdlbmllUHJvZ3Jlc3NQYXJ0RGF0YSA9IHouaW5mZXI8dHlwZW9mIEdlbmllUHJvZ3Jlc3NQYXJ0RGF0YVNjaGVtYT47XG5cbi8qKiBHZW5lcmljIHByb2dyZXNzIHN0YXR1cyBlbWl0dGVkIGJ5IG5vbi1HZW5pZSBhZ2VudCB0b29scy4gKi9cbmV4cG9ydCBjb25zdCBUb29sU3RhdHVzUHJvZ3Jlc3NFdmVudFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwidG9vbF9zdGF0dXNcIikuZGVzY3JpYmUoXCJHZW5lcmljIHRvb2wgcHJvZ3Jlc3MgZGlzY3JpbWluYXRvci5cIiksXG4gICAgc3RhdHVzOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiTWFjaGluZS1yZWFkYWJsZSB0b29sIHN0YXR1cy5cIiksXG4gICAgbWVzc2FnZTogei5zdHJpbmcoKS5kZXNjcmliZShcIkh1bWFuLXJlYWRhYmxlIHByb2dyZXNzIGxhYmVsLlwiKSxcbiAgICB1cmw6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlJlbGF0ZWQgVVJMIHdoZW4gdGhlIHRvb2wgaXMgcmVhZGluZyBhIHBhZ2UuXCIpLFxuICAgIGdyb3VwSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIklkZW50aWZpZXIgZ3JvdXBpbmcgb25lIHNlYXJjaCB3aXRoIGl0cyByZXN1bHQuXCIpLFxuICAgIGRldGFpbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiT3B0aW9uYWwgc2Vjb25kYXJ5IHJlc3VsdCBkZXRhaWwuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJHZW5lcmljIHN0YXR1cyB1cGRhdGUgZm9yIG9uZSBydW5uaW5nIGFnZW50IHRvb2wuXCIpO1xuXG4vKiogR2VuZXJpYyBwcm9ncmVzcyBzdGF0dXMgZW1pdHRlZCBieSBub24tR2VuaWUgYWdlbnQgdG9vbHMuICovXG5leHBvcnQgdHlwZSBUb29sU3RhdHVzUHJvZ3Jlc3NFdmVudCA9IHouaW5mZXI8dHlwZW9mIFRvb2xTdGF0dXNQcm9ncmVzc0V2ZW50U2NoZW1hPjtcblxuLyoqIENvbXBsZXRlIHByb2dyZXNzIHZvY2FidWxhcnkgcmVuZGVyZWQgYnkgdGhlIGNvbW1vbiB0b29sLXNlc3Npb24gcGlsbC4gKi9cbmV4cG9ydCBjb25zdCBUb29sUHJvZ3Jlc3NFdmVudFNjaGVtYSA9IHoudW5pb24oW1xuICBHZW5pZVdyaXRlckV2ZW50U2NoZW1hLFxuICBUb29sU3RhdHVzUHJvZ3Jlc3NFdmVudFNjaGVtYSxcbl0pO1xuXG4vKiogQ29tcGxldGUgcHJvZ3Jlc3MgZXZlbnQgcmVuZGVyZWQgYnkgdGhlIGNvbW1vbiB0b29sLXNlc3Npb24gcGlsbC4gKi9cbmV4cG9ydCB0eXBlIFRvb2xQcm9ncmVzc0V2ZW50ID0gei5pbmZlcjx0eXBlb2YgVG9vbFByb2dyZXNzRXZlbnRTY2hlbWE+O1xuXG4vKiogTmF0aXZlIEFJIFNESyBjdXN0b20gZGF0YS1wYXJ0IHR5cGUgY2FycnlpbmcgZ2VuZXJpYyB0b29sIHByb2dyZXNzLiAqL1xuZXhwb3J0IGNvbnN0IFRPT0xfUFJPR1JFU1NfUEFSVF9UWVBFID0gXCJkYXRhLXRvb2wtcHJvZ3Jlc3NcIiBhcyBjb25zdDtcblxuLyoqIERhdGEgYXR0YWNoZWQgdG8ge0BsaW5rIFRPT0xfUFJPR1JFU1NfUEFSVF9UWVBFfS4gKi9cbmV4cG9ydCBjb25zdCBUb29sUHJvZ3Jlc3NQYXJ0RGF0YVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgdG9vbENhbGxJZDogei5zdHJpbmcoKS5kZXNjcmliZShcIk5hdGl2ZSB0b29sLWNhbGwgaWQgcmVjZWl2aW5nIHRoaXMgcHJvZ3Jlc3MgZXZlbnQuXCIpLFxuICAgIGV2ZW50OiBUb29sUHJvZ3Jlc3NFdmVudFNjaGVtYS5kZXNjcmliZShcIlByb2dyZXNzIGV2ZW50IGVtaXR0ZWQgYnkgdGhlIHJ1bm5pbmcgdG9vbC5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIkdlbmVyaWMgdG9vbCBwcm9ncmVzcyBhdHRhY2hlZCB0byBvbmUgbmF0aXZlIHRvb2wgY2FsbC5cIik7XG5cbi8qKiBWYWxpZGF0ZWQgcGF5bG9hZCBjYXJyaWVkIGJ5IGEgbmF0aXZlIGdlbmVyaWMgdG9vbCBwcm9ncmVzcyBkYXRhIHBhcnQuICovXG5leHBvcnQgdHlwZSBUb29sUHJvZ3Jlc3NQYXJ0RGF0YSA9IHouaW5mZXI8dHlwZW9mIFRvb2xQcm9ncmVzc1BhcnREYXRhU2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdW1tYXJ5ICsgZGF0YXNldCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBUYWJ1bGFyIHBheWxvYWQgZW1iZWRkZWQgaW4gZXZlcnkge0BsaW5rIEdlbmllU3VtbWFyeUl0ZW19XG4gKiBgdmlzdWFsaXplYCBkYXRhc2V0LiBBbHdheXMgcHJlc2VudDogaHlkcmF0ZWQgYnkgdGhlIHdvcmtmbG93J3NcbiAqIGFnZW50IHN0ZXAgYmVmb3JlIHRoZSBmaW5hbGl6ZSBzdGVwIHJ1bnMsIHNvIGNvbnN1bWVycyBjYW4gcmVuZGVyXG4gKiBhIHRhYmxlIGZhbGxiYWNrIHJlZ2FyZGxlc3Mgb2YgY2hhcnQtcGxhbm5lciBvdXRjb21lLlxuICpcbiAqIEZpZWxkczpcbiAqICAgLSBgY29sdW1uc2A6IGNvbHVtbiBuYW1lcyBpbiBkaXNwbGF5IG9yZGVyLlxuICogICAtIGByb3dzYDogdGFidWxhciByb3dzIGtleWVkIGJ5IGNvbHVtbiBuYW1lLlxuICogICAtIGByb3dDb3VudGA6IHRvdGFsIHJvdyBjb3VudCBHZW5pZSByZXBvcnRlZCAobWF5IGV4Y2VlZFxuICogICAgIGByb3dzLmxlbmd0aGAgd2hlbiB0aGUgc3RhdGVtZW50IHdhcyB0cnVuY2F0ZWQpLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVEYXRhc2V0RGF0YVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgY29sdW1uczogei5hcnJheSh6LnN0cmluZygpKSxcbiAgcm93czogei5hcnJheSh6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkpLFxuICByb3dDb3VudDogei5udW1iZXIoKSxcbn0pO1xuLyoqIEh5ZHJhdGVkIHRhYnVsYXIgZGF0YSB0aGF0IGFsd2F5cyBiYWNrcyBhIEdlbmllIHZpc3VhbGl6YXRpb24gaXRlbS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllRGF0YXNldERhdGEgPSB6LmluZmVyPHR5cGVvZiBHZW5pZURhdGFzZXREYXRhU2NoZW1hPjtcblxuLyoqXG4gKiBTbGltIGNoYXJ0IHJlZmVyZW5jZSBhdHRhY2hlZCB0byBhIHZpc3VhbGl6ZSBkYXRhc2V0LiBPbmx5XG4gKiBwcmVzZW50IHdoZW4gcGxhbm5pbmcgc3VjY2VlZGVkLlxuICpcbiAqIGBvcHRpb25gIGlzIGludGVudGlvbmFsbHkgTk9UIGluY2x1ZGVkLiBUaGUgcmVzb2x2ZWQgRWNoYXJ0c1xuICogc3BlYyBsaXZlcyBvZmYtYmFuZCBpbiB0aGUgY2hhcnQgY2FjaGU6IHRoZSBob3N0IFVJIGZldGNoZXMgaXRcbiAqIGJ5IGBjaGFydElkYCBmcm9tIHRoZSBwbHVnaW4ncyBlbWJlZCByb3V0ZSAoZGVyaXZlZCBmcm9tXG4gKiBgYmFzZVBhdGhgICsge0BsaW5rIE1BU1RSQV9ST1VURVN9LmVtYmVkLCBpLmUuIGAvZW1iZWQvY2hhcnQvOmlkYDtcbiAqIHNlZSB7QGxpbmsgQ2hhcnR9KS4gRW1iZWRkaW5nIHRoZSBmdWxsIHNwZWMgaW5saW5lIHdvdWxkXG4gKiBpbmZsYXRlIGV2ZXJ5IGRhdGFzZXQgYnkgc2V2ZXJhbCBLQiBwZXIgY2hhcnQgYW5kIHJvdW5kLXRyaXBcbiAqIHRocm91Z2ggdGhlIExMTSBjb250ZXh0IGZvciB6ZXJvIGJlbmVmaXQgKHRoZSBtb2RlbCBvbmx5IG5lZWRzXG4gKiB0aGUgYGNoYXJ0SWRgIHRvIHBsYWNlIGEgYFtjaGFydDo8Y2hhcnRJZD5dYCBtYXJrZXIgaW4gaXRzXG4gKiByZXBseSkuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZURhdGFzZXRDaGFydFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgY2hhcnRJZDogei5zdHJpbmcoKSxcbiAgY2hhcnRUeXBlOiBDaGFydFR5cGVTY2hlbWEsXG59KTtcbi8qKiBMaWdodHdlaWdodCByZWZlcmVuY2UgdG8gYSBjaGFydCBwbGFuIHN0b3JlZCBpbiB0aGUgTWFzdHJhIGNoYXJ0IGNhY2hlLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVEYXRhc2V0Q2hhcnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZURhdGFzZXRDaGFydFNjaGVtYT47XG5cbi8qKlxuICogRGF0YXNldCBidW5kbGUgYXR0YWNoZWQgdG8gYSB7QGxpbmsgR2VuaWVTdW1tYXJ5SXRlbX0gYHZpc3VhbGl6ZWBcbiAqIGl0ZW0uIGBkYXRhYCBpcyBhbHdheXMgcG9wdWxhdGVkOyBgY2hhcnRgIGlzIGJlc3QtZWZmb3J0IGFuZFxuICogYWJzZW50IHdoZW4gdGhlIHdvcmtmbG93J3MgY2hhcnQtcGxhbm5lciBmYWlsZWQgKHRpbWVvdXQsXG4gKiBtYWxmb3JtZWQgcGxhbiwgYWJvcnQpIHNvIHRoZSBob3N0IFVJIGNhbiBzdGlsbCByZW5kZXIgdGhlXG4gKiB1bmRlcmx5aW5nIHRhYmxlLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVEYXRhc2V0U2NoZW1hID0gei5vYmplY3Qoe1xuICBkYXRhOiBHZW5pZURhdGFzZXREYXRhU2NoZW1hLFxuICBjaGFydDogR2VuaWVEYXRhc2V0Q2hhcnRTY2hlbWEub3B0aW9uYWwoKSxcbn0pO1xuLyoqIFZpc3VhbGl6YXRpb24gZGF0YXNldCB3aXRoIHJlcXVpcmVkIHRhYmxlIGRhdGEgYW5kIGFuIG9wdGlvbmFsIHBsYW5uZWQgY2hhcnQuICovXG5leHBvcnQgdHlwZSBHZW5pZURhdGFzZXQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZURhdGFzZXRTY2hlbWE+O1xuXG4vKipcbiAqIE9uZSBpdGVtIGluc2lkZSB0aGUgR2VuaWUgd29ya2Zsb3cncyBmaW5hbCBzdW1tYXJ5LiBUaGVcbiAqIHdvcmtmbG93IHByb2R1Y2VzIGEgbWl4ZWQgc2VxdWVuY2Ugb2Y6XG4gKlxuICogICAtIGBzdHJpbmdgOiBhIG1hcmtkb3duIHBhcmFncmFwaCAoaW50ZXJwcmV0YXRpb24sIGNhbGxvdXRzLFxuICogICAgIHRyYW5zaXRpb25zIGJldHdlZW4gZGF0YSBibG9ja3MpLlxuICogICAtIGB2aXN1YWxpemVgOiBhIHJlcXVlc3QgZnJvbSB0aGUgYWdlbnQgc3RlcCB0byB2aXN1YWxpemUgYVxuICogICAgIHNwZWNpZmljIEdlbmllIHN0YXRlbWVudCBhdCB0aGlzIHBvc2l0aW9uIGluIHRoZSBwcm9zZS5cbiAqICAgICBUaGUgZmluYWxpemUgc3RlcCBoeWRyYXRlcyBgZGF0YXNldC5kYXRhYCAocm93cyBmcm9tIHRoZVxuICogICAgIG1hdGNoaW5nIGBzdGF0ZW1lbnRJZGApIGFuZCBhdHRhY2hlcyBgZGF0YXNldC5jaGFydGAgYWZ0ZXJcbiAqICAgICBydW5uaW5nIHRoZSBjaGFydC1wbGFubmVyLiBUaGUgYWdlbnQgTkVWRVIgcGlja3MgdGhlIGNoYXJ0XG4gKiAgICAgdHlwZSAtIGl0IG9ubHkgbWFya3Mgd2hlcmUgYSB2aXN1YWxpemF0aW9uIGJlbG9uZ3MuXG4gKlxuICogVGhlIGhvc3QgVUkgd2Fsa3MgdGhlIGFycmF5IGluIGRpc3BsYXkgb3JkZXIgdG8gY29tcG9zZSB0aGVcbiAqIGZpbmFsIGFzc2lzdGFudCBtZXNzYWdlLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVTdW1tYXJ5SXRlbVNjaGVtYSA9IHouZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbXG4gIHoub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJzdHJpbmdcIiksXG4gICAgdGV4dDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHoub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJ2aXN1YWxpemVcIiksXG4gICAgc3RhdGVtZW50SWQ6IHouc3RyaW5nKCksXG4gICAgdGl0bGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGRhdGFzZXQ6IEdlbmllRGF0YXNldFNjaGVtYSxcbiAgfSksXG5dKTtcbi8qKiBPcmRlcmVkIHByb3NlIG9yIHZpc3VhbGl6YXRpb24gaXRlbSBpbiB0aGUgR2VuaWUgYWdlbnQncyBmaW5hbCBzdW1tYXJ5LiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVTdW1tYXJ5SXRlbSA9IHouaW5mZXI8dHlwZW9mIEdlbmllU3VtbWFyeUl0ZW1TY2hlbWE+O1xuXG4vKiogRGlzY3JpbWluYXRvciB0eXBlIGZvciB7QGxpbmsgR2VuaWVTdW1tYXJ5SXRlbX0uICovXG5leHBvcnQgdHlwZSBHZW5pZVN1bW1hcnlJdGVtVHlwZSA9IEdlbmllU3VtbWFyeUl0ZW1bXCJ0eXBlXCJdO1xuXG4vKipcbiAqIFRoZSBHZW5pZSBhZ2VudCdzIGZpbmFsIG91dHB1dCBzaGFwZSAtIHdoYXQgdGhlIGNhbGxpbmcgYWdlbnQnc1xuICogR2VuaWUgdG9vbCByZXR1cm5zIHRvIHRoZSBjYWxsaW5nIExMTS4gVGhlIGBzdW1tYXJ5YCBhcnJheSBpc1xuICogdGhlIHVzZXItZmFjaW5nIHJlbmRlcmFibGU7IGBjb252ZXJzYXRpb25JZGAgbGV0cyB0aGUgY2FsbGluZ1xuICogYWdlbnQgKG9yIHRoZSBVSSkgZm9sbG93IHVwIGluIHRoZSBzYW1lIEdlbmllIHRocmVhZCBvbiB0aGVcbiAqIG5leHQgdHVybi5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQWdlbnRSZXN1bHRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHNwYWNlSWQ6IHouc3RyaW5nKCksXG4gIGNvbnZlcnNhdGlvbklkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHN1bW1hcnk6IHouYXJyYXkoR2VuaWVTdW1tYXJ5SXRlbVNjaGVtYSksXG4gIGVycm9yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBGaW5hbCByZW5kZXJhYmxlIG91dHB1dCByZXR1cm5lZCBieSB0aGUgR2VuaWUgYWdlbnQgdG9vbCB0byBpdHMgY2FsbGVyLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVBZ2VudFJlc3VsdCA9IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRSZXN1bHRTY2hlbWE+O1xuIl19
package/package.json CHANGED
@@ -22,8 +22,8 @@
22
22
  "typescript": "^5.9.3"
23
23
  },
24
24
  "dependencies": {
25
- "@dbx-tools/shared-genie": "^0.9.70",
26
- "@dbx-tools/shared-model": "^0.9.70",
25
+ "@dbx-tools/shared-genie": "^0.9.72",
26
+ "@dbx-tools/shared-model": "^0.9.72",
27
27
  "zod": "4.3.6"
28
28
  },
29
29
  "main": "./lib/index.js",
@@ -64,7 +64,7 @@
64
64
  "./package.json": "./package.json"
65
65
  }
66
66
  },
67
- "version": "0.9.70",
67
+ "version": "0.9.72",
68
68
  "types": "./lib/index.d.ts",
69
69
  "dbxToolsConfig": {
70
70
  "tags": [
package/src/wire.ts CHANGED
@@ -434,6 +434,44 @@ export const GenieProgressPartDataSchema = z.object({
434
434
  /** Validated payload carried by a native Genie progress data part. */
435
435
  export type GenieProgressPartData = z.infer<typeof GenieProgressPartDataSchema>;
436
436
 
437
+ /** Generic progress status emitted by non-Genie agent tools. */
438
+ export const ToolStatusProgressEventSchema = z
439
+ .object({
440
+ type: z.literal("tool_status").describe("Generic tool progress discriminator."),
441
+ status: z.string().describe("Machine-readable tool status."),
442
+ message: z.string().describe("Human-readable progress label."),
443
+ url: z.string().optional().describe("Related URL when the tool is reading a page."),
444
+ groupId: z.string().optional().describe("Identifier grouping one search with its result."),
445
+ detail: z.string().optional().describe("Optional secondary result detail."),
446
+ })
447
+ .describe("Generic status update for one running agent tool.");
448
+
449
+ /** Generic progress status emitted by non-Genie agent tools. */
450
+ export type ToolStatusProgressEvent = z.infer<typeof ToolStatusProgressEventSchema>;
451
+
452
+ /** Complete progress vocabulary rendered by the common tool-session pill. */
453
+ export const ToolProgressEventSchema = z.union([
454
+ GenieWriterEventSchema,
455
+ ToolStatusProgressEventSchema,
456
+ ]);
457
+
458
+ /** Complete progress event rendered by the common tool-session pill. */
459
+ export type ToolProgressEvent = z.infer<typeof ToolProgressEventSchema>;
460
+
461
+ /** Native AI SDK custom data-part type carrying generic tool progress. */
462
+ export const TOOL_PROGRESS_PART_TYPE = "data-tool-progress" as const;
463
+
464
+ /** Data attached to {@link TOOL_PROGRESS_PART_TYPE}. */
465
+ export const ToolProgressPartDataSchema = z
466
+ .object({
467
+ toolCallId: z.string().describe("Native tool-call id receiving this progress event."),
468
+ event: ToolProgressEventSchema.describe("Progress event emitted by the running tool."),
469
+ })
470
+ .describe("Generic tool progress attached to one native tool call.");
471
+
472
+ /** Validated payload carried by a native generic tool progress data part. */
473
+ export type ToolProgressPartData = z.infer<typeof ToolProgressPartDataSchema>;
474
+
437
475
  /* ------------------------- summary + dataset ------------------------ */
438
476
 
439
477
  /**