@dbx-tools/appkit-mastra 0.9.144 → 0.9.146
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/README.md +17 -6
- package/index.ts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -2
- package/lib/src/chat.js +4 -1
- package/lib/src/config.d.ts +3 -2
- package/lib/src/config.js +1 -1
- package/lib/src/identity.d.ts +8 -7
- package/lib/src/identity.js +9 -8
- package/lib/src/mlflow.d.ts +5 -0
- package/lib/src/mlflow.js +49 -3
- package/lib/src/plugin.d.ts +2 -2
- package/lib/src/plugin.js +8 -3
- package/lib/src/server.d.ts +7 -8
- package/lib/src/server.js +12 -11
- package/lib/src/telemetry.js +5 -4
- package/package.json +16 -16
- package/src/chat.ts +3 -0
- package/src/config.ts +3 -2
- package/src/identity.ts +8 -7
- package/src/mlflow.ts +48 -3
- package/src/plugin.ts +7 -2
- package/src/server.ts +11 -10
- package/src/telemetry.ts +4 -2
package/README.md
CHANGED
|
@@ -1064,9 +1064,14 @@ override that location. The local provider forwards only marked chat roots and
|
|
|
1064
1064
|
their descendants, so unrelated AppKit HTTP, cache, and plugin spans
|
|
1065
1065
|
do not become traces. Before export it also writes the resolved email, user
|
|
1066
1066
|
name, or resource id to MLflow's trace user field. Direct mode requires a
|
|
1067
|
-
UC-linked experiment.
|
|
1068
|
-
|
|
1069
|
-
|
|
1067
|
+
UC-linked experiment.
|
|
1068
|
+
|
|
1069
|
+
Inside a Databricks App (`environmentUtils.isDatabricksAppEnv()`), this provider
|
|
1070
|
+
stays off so AppKit remains the single global OTel provider and the platform
|
|
1071
|
+
telemetry sidecar owns export. Agent execution is explicitly parented to the
|
|
1072
|
+
chat trace, and unparented low-level HTTP calls are excluded so endpoint
|
|
1073
|
+
discovery, token refresh, and AppKit usage telemetry do not appear as standalone
|
|
1074
|
+
MLflow traces.
|
|
1070
1075
|
|
|
1071
1076
|
### Export Databricks Apps traces to Unity Catalog
|
|
1072
1077
|
|
|
@@ -1128,6 +1133,13 @@ Verify with SQL against the UC `*_trace_unified` view (the REST
|
|
|
1128
1133
|
Schema names with hyphens need backticks. `attributes` is a `VARIANT`, so use
|
|
1129
1134
|
`attributes:['key']::string` rather than `map_keys()`.
|
|
1130
1135
|
|
|
1136
|
+
Trace-info promotion reads the UC prefix from experiment tags or
|
|
1137
|
+
`trace_location`. If the app service principal cannot read experiment metadata
|
|
1138
|
+
during startup, the first OBO chat request retries resolution with the user's
|
|
1139
|
+
workspace client while retaining the service principal for trace-info writes.
|
|
1140
|
+
Service-principal-only deployments should set `MLFLOW_UC_TRACE_PREFIX`
|
|
1141
|
+
explicitly.
|
|
1142
|
+
|
|
1131
1143
|
## MCP exposure
|
|
1132
1144
|
|
|
1133
1145
|
`mcp.buildMcpServer()` exposes registered agents as MCP tools by default. The
|
|
@@ -1170,9 +1182,8 @@ const result = await mastra.getDefault().generate(prompt, { requestContext });
|
|
|
1170
1182
|
The AppKit user, the memory thread / resource pair, and a request id (so the
|
|
1171
1183
|
turn's spans join up in traces) are stamped exactly as the request middleware
|
|
1172
1184
|
stamps them. Call it inside an `asUser(req)` scope to inherit the caller's OBO
|
|
1173
|
-
identity. Outside one it resolves to the service principal.
|
|
1174
|
-
|
|
1175
|
-
reach - and therefore the same answer - as a chat turn.
|
|
1185
|
+
identity. Outside one it resolves to the service principal. Out-of-band
|
|
1186
|
+
callers use this to retain the same tool reach as an HTTP chat turn.
|
|
1176
1187
|
|
|
1177
1188
|
## API gate
|
|
1178
1189
|
|
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/appkit-mastra";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.146";
|
|
7
7
|
export * as agents from "./src/agents.ts";
|
|
8
8
|
export * as chart from "./src/chart.ts";
|
|
9
9
|
export * as chat from "./src/chat.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/appkit-mastra";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.146";
|
|
3
3
|
export * as agents from "./src/agents.ts";
|
|
4
4
|
export * as chart from "./src/chart.ts";
|
|
5
5
|
export * as chat from "./src/chat.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/appkit-mastra";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.146";
|
|
6
6
|
export * as agents from "./src/agents.js";
|
|
7
7
|
export * as chart from "./src/chart.js";
|
|
8
8
|
export * as chat from "./src/chat.js";
|
|
@@ -63,4 +63,4 @@ export { TITLE_INSTRUCTIONS } from "./src/summarize.js";
|
|
|
63
63
|
export { TRACE_IO_LIMIT, MLFLOW_SPAN_INPUTS_ATTR, MLFLOW_SPAN_OUTPUTS_ATTR, CHAT_MESSAGES_ATTR, CHAT_RESPONSE_ATTR, CHAT_IDENTITY_ATTR, CHAT_GENIE_USED_ATTR, MLFLOW_SPAN_TYPE_ATTR, GEN_AI_OPERATION_NAME_ATTR, MLFLOW_USER_ATTR, MLFLOW_SESSION_ATTR, MLFLOW_SPAN_TYPE_AGENT, MLFLOW_SPAN_TYPE_GENIE, AppMlflowTraceInfoSpanProcessor } from "./src/telemetry.js";
|
|
64
64
|
export { MLFLOW_TRACE_TAG_PREFIX, MLFLOW_AGENT_TAG, MLFLOW_GENIE_TAG, MLFLOW_OBO_AUTH_TAG, MLFLOW_SP_AUTH_TAG, MLFLOW_LOCAL_TAG, MLFLOW_AGENT_TAG_ATTR, MLFLOW_GENIE_TAG_ATTR, APPKIT_AGENT_TRACE_ROOT_ATTR, MLFLOW_OBO_AUTH_TAG_ATTR, MLFLOW_SP_AUTH_TAG_ATTR, MLFLOW_LOCAL_TAG_ATTR } from "./src/trace-attributes.js";
|
|
65
65
|
export { DEFAULT_DATABRICKS_WORKSPACE_PATHS } from "./src/workspaces.js";
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRywwQkFBMEIsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssWUFBWSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxXQUFXLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxLQUFLLG1CQUFtQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLFNBQVMsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sS0FBSyxZQUFZLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxLQUFLLGFBQWEsTUFBTSx3QkFBd0IsQ0FB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LE9BQU8sRUFBRSx5QkFBeUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcFcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLDRCQUE0QixFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFelQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0scUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL2FwcGtpdC1tYXN0cmFcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4xNDRcIjtcbmV4cG9ydCAqIGFzIGFnZW50cyBmcm9tIFwiLi9zcmMvYWdlbnRzLnRzXCI7XG5leHBvcnQgKiBhcyBjaGFydCBmcm9tIFwiLi9zcmMvY2hhcnQudHNcIjtcbmV4cG9ydCAqIGFzIGNoYXQgZnJvbSBcIi4vc3JjL2NoYXQudHNcIjtcbmV4cG9ydCAqIGFzIGNvbmZpZyBmcm9tIFwiLi9zcmMvY29uZmlnLnRzXCI7XG5leHBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tIFwiLi9zcmMvZGVmYXVsdHMudHNcIjtcbmV4cG9ydCAqIGFzIGV2YWx1YXRpb24gZnJvbSBcIi4vc3JjL2V2YWx1YXRpb24udHNcIjtcbmV4cG9ydCAqIGFzIGZlZWRiYWNrTW9kZSBmcm9tIFwiLi9zcmMvZmVlZGJhY2stbW9kZS50c1wiO1xuZXhwb3J0ICogYXMgZmlsZXN5c3RlbXMgZnJvbSBcIi4vc3JjL2ZpbGVzeXN0ZW1zLnRzXCI7XG5leHBvcnQgKiBhcyBmb2xsb3dVcFN1Z2dlc3Rpb25zIGZyb20gXCIuL3NyYy9mb2xsb3ctdXAtc3VnZ2VzdGlvbnMudHNcIjtcbmV4cG9ydCAqIGFzIGdlbmllIGZyb20gXCIuL3NyYy9nZW5pZS50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWVDaGF0IGZyb20gXCIuL3NyYy9nZW5pZS1jaGF0LnRzXCI7XG5leHBvcnQgKiBhcyBpZGVudGl0eSBmcm9tIFwiLi9zcmMvaWRlbnRpdHkudHNcIjtcbmV4cG9ydCAqIGFzIG1jcCBmcm9tIFwiLi9zcmMvbWNwLnRzXCI7XG5leHBvcnQgKiBhcyBtZW1vcnkgZnJvbSBcIi4vc3JjL21lbW9yeS50c1wiO1xuZXhwb3J0ICogYXMgbWxmbG93IGZyb20gXCIuL3NyYy9tbGZsb3cudHNcIjtcbmV4cG9ydCAqIGFzIG1vZGVsIGZyb20gXCIuL3NyYy9tb2RlbC50c1wiO1xuZXhwb3J0ICogYXMgbW9udHlTYW5kYm94IGZyb20gXCIuL3NyYy9tb250eS1zYW5kYm94LnRzXCI7XG5leHBvcnQgKiBhcyBvYnNlcnZhYmlsaXR5IGZyb20gXCIuL3NyYy9vYnNlcnZhYmlsaXR5LnRzXCI7XG5leHBvcnQgKiBhcyBwbHVnaW4gZnJvbSBcIi4vc3JjL3BsdWdpbi50c1wiO1xuZXhwb3J0ICogYXMgcHJvY2Vzc29ycyBmcm9tIFwiLi9zcmMvcHJvY2Vzc29ycy50c1wiO1xuZXhwb3J0ICogYXMgcmVtb3RlU2tpbGxzIGZyb20gXCIuL3NyYy9yZW1vdGUtc2tpbGxzLnRzXCI7XG5leHBvcnQgKiBhcyByZXF1ZXN0Q29udGV4dCBmcm9tIFwiLi9zcmMvcmVxdWVzdC1jb250ZXh0LnRzXCI7XG5leHBvcnQgKiBhcyByZXN0IGZyb20gXCIuL3NyYy9yZXN0LnRzXCI7XG5leHBvcnQgKiBhcyBzZXJ2ZXIgZnJvbSBcIi4vc3JjL3NlcnZlci50c1wiO1xuZXhwb3J0ICogYXMgc2VydmluZyBmcm9tIFwiLi9zcmMvc2VydmluZy50c1wiO1xuZXhwb3J0ICogYXMgc2tpbGxQYXRocyBmcm9tIFwiLi9zcmMvc2tpbGwtcGF0aHMudHNcIjtcbmV4cG9ydCAqIGFzIHN0YXRlbWVudCBmcm9tIFwiLi9zcmMvc3RhdGVtZW50LnRzXCI7XG5leHBvcnQgKiBhcyBzdG9yYWdlU2NoZW1hIGZyb20gXCIuL3NyYy9zdG9yYWdlLXNjaGVtYS50c1wiO1xuZXhwb3J0ICogYXMgc3R5bGUgZnJvbSBcIi4vc3JjL3N0eWxlLnRzXCI7XG5leHBvcnQgKiBhcyBzdW1tYXJpemUgZnJvbSBcIi4vc3JjL3N1bW1hcml6ZS50c1wiO1xuZXhwb3J0ICogYXMgdGVsZW1ldHJ5IGZyb20gXCIuL3NyYy90ZWxlbWV0cnkudHNcIjtcbmV4cG9ydCAqIGFzIHRyYWNlQXR0cmlidXRlcyBmcm9tIFwiLi9zcmMvdHJhY2UtYXR0cmlidXRlcy50c1wiO1xuZXhwb3J0ICogYXMgdmFsaWRhdGlvbiBmcm9tIFwiLi9zcmMvdmFsaWRhdGlvbi50c1wiO1xuZXhwb3J0ICogYXMgd29ya3NwYWNlcyBmcm9tIFwiLi9zcmMvd29ya3NwYWNlcy50c1wiO1xuZXhwb3J0ICogYXMgd3JpdGVyIGZyb20gXCIuL3NyYy93cml0ZXIudHNcIjtcbmV4cG9ydCB7IEZBTExCQUNLX0FHRU5UX0lELCBERUZBVUxUX0FHRU5UX01BWF9TVEVQUywgREVGQVVMVF9UT09MX1dPUktGTE9XX0lOU1RSVUNUSU9OUywgQ09ERV9NT0RFX1JPVVRJTkdfSU5TVFJVQ1RJT05TLCBERUZBVUxUX1NUWUxFX0lOU1RSVUNUSU9OUyB9IGZyb20gXCIuL3NyYy9hZ2VudHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFzdHJhVG9vbHMsIEFwcEtpdFRvb2xPcHRpb25zLCBUb29sa2l0T3B0aW9ucywgTWFzdHJhUGx1Z2luVG9vbGtpdFByb3ZpZGVyLCBNYXN0cmFQbHVnaW5zLCBNYXN0cmFUb29sc0ZuLCBNYXN0cmFBZ2VudFdvcmtzcGFjZVJlc29sdmVyLCBNYXN0cmFBZ2VudERlZmluaXRpb24sIEFueU1hc3RyYUFnZW50RGVmaW5pdGlvbiwgTWFzdHJhU3RvcmFnZUNvbmZpZ092ZXJyaWRlLCBNYXN0cmFNZW1vcnlDb25maWdPdmVycmlkZSwgQWdlbnREZWZhdWx0TW9kZWwsIEJ1aWx0QWdlbnRzLCBNYXN0cmFPdXRwdXRQcm9jZXNzb3JGYWN0b3J5IH0gZnJvbSBcIi4vc3JjL2FnZW50cy50c1wiO1xuZXhwb3J0IHsgY2hhcnRQbGFuU2NoZW1hLCBjaGFydFBsYW5uZXJSZXF1ZXN0U2NoZW1hLCBjaGFydFRvb2xPdXRwdXRTY2hlbWEgfSBmcm9tIFwiLi9zcmMvY2hhcnQudHNcIjtcbmV4cG9ydCB0eXBlIHsgQ2hhcnRQbGFubmVyUmVxdWVzdCwgQ2hhcnRUb29sT3V0cHV0LCBQcmVwYXJlQ2hhcnRPcHRpb25zLCBGZXRjaENoYXJ0T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9jaGFydC50c1wiO1xuZXhwb3J0IHsgTUFTVFJBX1VTRVJfS0VZLCBNQVNUUkFfVVNFUl9OQU1FX0tFWSwgTUFTVFJBX1VTRVJfRU1BSUxfS0VZLCBNQVNUUkFfQVVUSF9NT0RFX0tFWSwgTUFTVFJBX1JFUVVFU1RfSURfS0VZLCBNQVNUUkFfU0NPUEVTX0tFWSwgVFJBQ0VfUkVRVUVTVF9DT05URVhUX0tFWVMsIE1BU1RSQV9DT05GSUdfU0NIRU1BIH0gZnJvbSBcIi4vc3JjL2NvbmZpZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBVc2VyLCBNYXN0cmFNZW1vcnlDb25maWcsIE1hc3RyYVdvcmtzcGFjZVNraWxsc0NvbmZpZywgTWFzdHJhQ29kZU1vZGVUcmFuc3BvcnQsIE1hc3RyYUNvZGVNb2RlQ29uZmlnLCBNYXN0cmFNY3BDb25maWcsIEZvbGxvd1VwU3VnZ2VzdGlvbnNDb25maWcsIE1hc3RyYVBsdWdpbkNvbmZpZyB9IGZyb20gXCIuL3NyYy9jb25maWcudHNcIjtcbmV4cG9ydCB7IG1vZGVsQ2F0YWxvZ3VlRGVmYXVsdHMsIGdlbmllU3VnZ2VzdGlvbkRlZmF1bHRzLCBnZW5pZUNvbnZlcnNhdGlvblJlYWREZWZhdWx0cywgZ2VuaWVDb252ZXJzYXRpb25Xcml0ZURlZmF1bHRzLCBzdGF0ZW1lbnREYXRhRGVmYXVsdHMsIGNoYXJ0RmV0Y2hEZWZhdWx0cywgZmVlZGJhY2tXcml0ZURlZmF1bHRzIH0gZnJvbSBcIi4vc3JjL2RlZmF1bHRzLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYUV2YWxEcml2ZXJPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2V2YWx1YXRpb24udHNcIjtcbmV4cG9ydCB0eXBlIHsgRmVlZGJhY2tBdmFpbGFiaWxpdHkgfSBmcm9tIFwiLi9zcmMvZmVlZGJhY2stbW9kZS50c1wiO1xuZXhwb3J0IHsgTWFzdHJhRmlsZVN5c3RlbUFkYXB0ZXIsIE1vdW50ZWRDb21wb3NpdGVGaWxlc3lzdGVtIH0gZnJvbSBcIi4vc3JjL2ZpbGVzeXN0ZW1zLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYUZpbGVTeXN0ZW1BZGFwdGVyT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9maWxlc3lzdGVtcy50c1wiO1xuZXhwb3J0IHsgRk9MTE9XX1VQX1VTRVJfVEVYVF9LRVksIEZPTExPV19VUF9OQVRJVkVfUVVFU1RJT05TX0tFWSwgRk9MTE9XX1VQX1JVTl9JRF9LRVkgfSBmcm9tIFwiLi9zcmMvZm9sbG93LXVwLXN1Z2dlc3Rpb25zLnRzXCI7XG5leHBvcnQgdHlwZSB7IFJlc29sdmVkRm9sbG93VXBTdWdnZXN0aW9uc0NvbmZpZywgU3VnZ2VzdEZvbGxvd1Vwc09wdGlvbnMsIEZvbGxvd1VwU3VnZ2VzdGVyIH0gZnJvbSBcIi4vc3JjL2ZvbGxvdy11cC1zdWdnZXN0aW9ucy50c1wiO1xuZXhwb3J0IHsgREVGQVVMVF9HRU5JRV9BTElBUywgR0VOSUVfSU5TVFJVQ1RJT05TIH0gZnJvbSBcIi4vc3JjL2dlbmllLnRzXCI7XG5leHBvcnQgdHlwZSB7IEdlbmllU3BhY2VDb25maWcsIEdlbmllU3BhY2VzQ29uZmlnIH0gZnJvbSBcIi4vc3JjL2dlbmllLnRzXCI7XG5leHBvcnQgdHlwZSB7IEdlbmllQ2hhdFNwYWNlIH0gZnJvbSBcIi4vc3JjL2dlbmllLWNoYXQudHNcIjtcbmV4cG9ydCB7IElERU5USVRZX0VOViwgSURFTlRJVFlfTU9ERVMsIERFRkFVTFRfSURFTlRJVFlfTU9ERSwgVVNFUl9JRF9IRUFERVIsIFVTRVJfRU1BSUxfSEVBREVSLCByZXF1ZXN0VXNlcklkLCByZXF1ZXN0VXNlckVtYWlsLCB1c2VTZXJ2aWNlUHJpbmNpcGFsIH0gZnJvbSBcIi4vc3JjL2lkZW50aXR5LnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYUlkZW50aXR5TW9kZSB9IGZyb20gXCIuL3NyYy9pZGVudGl0eS50c1wiO1xuZXhwb3J0IHR5cGUgeyBSZXNvbHZlZE1jcCB9IGZyb20gXCIuL3NyYy9tY3AudHNcIjtcbmV4cG9ydCB7IE1lbW9yeUJ1aWxkZXIgfSBmcm9tIFwiLi9zcmMvbWVtb3J5LnRzXCI7XG5leHBvcnQgeyBBZ2VudFRyYWNlU3BhblByb2Nlc3NvciB9IGZyb20gXCIuL3NyYy9tbGZsb3cudHNcIjtcbmV4cG9ydCB0eXBlIHsgQXBwTWxmbG93VHJhY2VJbmZvLCBMb2dGZWVkYmFja1BhcmFtcyB9IGZyb20gXCIuL3NyYy9tbGZsb3cudHNcIjtcbmV4cG9ydCB7IFJFU1BPTlNFU19QUk9WSURFUl9PUFRJT05TIH0gZnJvbSBcIi4vc3JjL21vZGVsLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJ1aWxkTW9kZWxPdmVycmlkZXMgfSBmcm9tIFwiLi9zcmMvbW9kZWwudHNcIjtcbmV4cG9ydCB7IE1vbnR5U2FuZGJveCB9IGZyb20gXCIuL3NyYy9tb250eS1zYW5kYm94LnRzXCI7XG5leHBvcnQgdHlwZSB7IE1vbnR5U2FuZGJveE9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvbW9udHktc2FuZGJveC50c1wiO1xuZXhwb3J0IHR5cGUgeyBCdWlsZE9ic2VydmFiaWxpdHlPcHRpb25zIH0gZnJvbSBcIi4vc3JjL29ic2VydmFiaWxpdHkudHNcIjtcbmV4cG9ydCB7IE1hc3RyYVBsdWdpbiwgbWFzdHJhIH0gZnJvbSBcIi4vc3JjL3BsdWdpbi50c1wiO1xuZXhwb3J0IHsgc3RyaXBTdGFsZUNoYXJ0c1Byb2Nlc3NvciB9IGZyb20gXCIuL3NyYy9wcm9jZXNzb3JzLnRzXCI7XG5leHBvcnQgeyBBSVRPT0xTX1NLSUxMU19NT1VOVCwgUkVNT1RFX1NLSUxMU19NT1VOVCwgQUlUT09MU19SRUZSRVNIX1RUTF9NUywgQUlUT09MU19TT1VSQ0UgfSBmcm9tIFwiLi9zcmMvcmVtb3RlLXNraWxscy50c1wiO1xuZXhwb3J0IHR5cGUgeyBBaVRvb2xzU291cmNlLCBSZW1vdGVTa2lsbFNvdXJjZU9wdGlvbnMsIFJlbW90ZVNraWxsU291cmNlLCBSZW1vdGVTa2lsbHNPcHRpb24sIExvY2FsU2tpbGxEaXJlY3RvcnlNb3VudCwgTWVtb3J5U2tpbGxNb3VudCwgTG9jYWxTa2lsbE1vdW50LCBQcm92aXNpb25SZW1vdGVTa2lsbHNPcHRpb25zLCBQcm92aXNpb25lZFJlbW90ZVNraWxscywgUmVtb3RlU2tpbGxDYWNoZUVudHJ5LCBSZW1vdGVTa2lsbHNNZXRhZGF0YSB9IGZyb20gXCIuL3NyYy9yZW1vdGUtc2tpbGxzLnRzXCI7XG5leHBvcnQgeyBNQVNUUkFfT1JJR0lOX0tFWSB9IGZyb20gXCIuL3NyYy9yZXF1ZXN0LWNvbnRleHQudHNcIjtcbmV4cG9ydCB0eXBlIHsgRGF0YWJyaWNrc0ZldGNoSW5pdCB9IGZyb20gXCIuL3NyYy9yZXN0LnRzXCI7XG5leHBvcnQgeyBNYXN0cmFTZXJ2ZXIgfSBmcm9tIFwiLi9zcmMvc2VydmVyLnRzXCI7XG5leHBvcnQgdHlwZSB7IEF0dHJpYnV0ZWRJZGVudGl0eSwgTWFzdHJhQXBpR2F0ZU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvc2VydmVyLnRzXCI7XG5leHBvcnQgeyBNQVNUUkFfTU9ERUxfT1ZFUlJJREVfS0VZLCBNQVNUUkFfUkVTT0xWRURfTU9ERUxfS0VZIH0gZnJvbSBcIi4vc3JjL3NlcnZpbmcudHNcIjtcbmV4cG9ydCB0eXBlIHsgTW9kZWxPdmVycmlkZVJlcXVlc3QgfSBmcm9tIFwiLi9zcmMvc2VydmluZy50c1wiO1xuZXhwb3J0IHsgT1JHQU5JWkFUSU9OX0FTU0lTVEFOVF9QQVRILCBPUkdBTklaQVRJT05fU0tJTExTX1BBVEggfSBmcm9tIFwiLi9zcmMvc2tpbGwtcGF0aHMudHNcIjtcbmV4cG9ydCB7IFNUQVRFTUVOVF9ST1dfQ0FQIH0gZnJvbSBcIi4vc3JjL3N0YXRlbWVudC50c1wiO1xuZXhwb3J0IHR5cGUgeyBTdGF0ZW1lbnRFbWJlZERhdGEgfSBmcm9tIFwiLi9zcmMvc3RhdGVtZW50LnRzXCI7XG5leHBvcnQgeyBUWVBPR1JBUEhZX1JVTEUgfSBmcm9tIFwiLi9zcmMvc3R5bGUudHNcIjtcbmV4cG9ydCB7IFRJVExFX0lOU1RSVUNUSU9OUyB9IGZyb20gXCIuL3NyYy9zdW1tYXJpemUudHNcIjtcbmV4cG9ydCB0eXBlIHsgU3VtbWFyaXplT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9zdW1tYXJpemUudHNcIjtcbmV4cG9ydCB7IFRSQUNFX0lPX0xJTUlULCBNTEZMT1dfU1BBTl9JTlBVVFNfQVRUUiwgTUxGTE9XX1NQQU5fT1VUUFVUU19BVFRSLCBDSEFUX01FU1NBR0VTX0FUVFIsIENIQVRfUkVTUE9OU0VfQVRUUiwgQ0hBVF9JREVOVElUWV9BVFRSLCBDSEFUX0dFTklFX1VTRURfQVRUUiwgTUxGTE9XX1NQQU5fVFlQRV9BVFRSLCBHRU5fQUlfT1BFUkFUSU9OX05BTUVfQVRUUiwgTUxGTE9XX1VTRVJfQVRUUiwgTUxGTE9XX1NFU1NJT05fQVRUUiwgTUxGTE9XX1NQQU5fVFlQRV9BR0VOVCwgTUxGTE9XX1NQQU5fVFlQRV9HRU5JRSwgQXBwTWxmbG93VHJhY2VJbmZvU3BhblByb2Nlc3NvciB9IGZyb20gXCIuL3NyYy90ZWxlbWV0cnkudHNcIjtcbmV4cG9ydCB0eXBlIHsgQ2hhdFR1cm5UZWxlbWV0cnlPcHRpb25zLCBDaGF0VHJhY2VUYWdWYWx1ZSB9IGZyb20gXCIuL3NyYy90ZWxlbWV0cnkudHNcIjtcbmV4cG9ydCB7IE1MRkxPV19UUkFDRV9UQUdfUFJFRklYLCBNTEZMT1dfQUdFTlRfVEFHLCBNTEZMT1dfR0VOSUVfVEFHLCBNTEZMT1dfT0JPX0FVVEhfVEFHLCBNTEZMT1dfU1BfQVVUSF9UQUcsIE1MRkxPV19MT0NBTF9UQUcsIE1MRkxPV19BR0VOVF9UQUdfQVRUUiwgTUxGTE9XX0dFTklFX1RBR19BVFRSLCBBUFBLSVRfQUdFTlRfVFJBQ0VfUk9PVF9BVFRSLCBNTEZMT1dfT0JPX0FVVEhfVEFHX0FUVFIsIE1MRkxPV19TUF9BVVRIX1RBR19BVFRSLCBNTEZMT1dfTE9DQUxfVEFHX0FUVFIgfSBmcm9tIFwiLi9zcmMvdHJhY2UtYXR0cmlidXRlcy50c1wiO1xuZXhwb3J0IHR5cGUgeyBTY2hlbWFJc3N1ZXMgfSBmcm9tIFwiLi9zcmMvdmFsaWRhdGlvbi50c1wiO1xuZXhwb3J0IHsgREVGQVVMVF9EQVRBQlJJQ0tTX1dPUktTUEFDRV9QQVRIUyB9IGZyb20gXCIuL3NyYy93b3Jrc3BhY2VzLnRzXCI7XG5leHBvcnQgdHlwZSB7IERhdGFicmlja3NXb3Jrc3BhY2VDb250ZXh0LCBEYXRhYnJpY2tzV29ya3NwYWNlUGF0aE9wdGlvbnMsIERhdGFicmlja3NXb3Jrc3BhY2VQYXRoLCBEYXRhYnJpY2tzV29ya3NwYWNlUGF0aFZhbHVlLCBEYXRhYnJpY2tzV29ya3NwYWNlQ2FjaGVGaWx0ZXIsIERhdGFicmlja3NXb3Jrc3BhY2VDYWNoZSwgV29ya3NwYWNlU2FuZGJveFNlbGVjdGlvbiwgRGF0YWJyaWNrc1dvcmtzcGFjZU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvd29ya3NwYWNlcy50c1wiO1xuIl19
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRywwQkFBMEIsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssWUFBWSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxXQUFXLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxLQUFLLG1CQUFtQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLFNBQVMsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sS0FBSyxZQUFZLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxLQUFLLGFBQWEsTUFBTSx3QkFBd0IsQ0FB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LE9BQU8sRUFBRSx5QkFBeUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcFcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLDRCQUE0QixFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFelQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0scUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL2FwcGtpdC1tYXN0cmFcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4xNDZcIjtcbmV4cG9ydCAqIGFzIGFnZW50cyBmcm9tIFwiLi9zcmMvYWdlbnRzLnRzXCI7XG5leHBvcnQgKiBhcyBjaGFydCBmcm9tIFwiLi9zcmMvY2hhcnQudHNcIjtcbmV4cG9ydCAqIGFzIGNoYXQgZnJvbSBcIi4vc3JjL2NoYXQudHNcIjtcbmV4cG9ydCAqIGFzIGNvbmZpZyBmcm9tIFwiLi9zcmMvY29uZmlnLnRzXCI7XG5leHBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tIFwiLi9zcmMvZGVmYXVsdHMudHNcIjtcbmV4cG9ydCAqIGFzIGV2YWx1YXRpb24gZnJvbSBcIi4vc3JjL2V2YWx1YXRpb24udHNcIjtcbmV4cG9ydCAqIGFzIGZlZWRiYWNrTW9kZSBmcm9tIFwiLi9zcmMvZmVlZGJhY2stbW9kZS50c1wiO1xuZXhwb3J0ICogYXMgZmlsZXN5c3RlbXMgZnJvbSBcIi4vc3JjL2ZpbGVzeXN0ZW1zLnRzXCI7XG5leHBvcnQgKiBhcyBmb2xsb3dVcFN1Z2dlc3Rpb25zIGZyb20gXCIuL3NyYy9mb2xsb3ctdXAtc3VnZ2VzdGlvbnMudHNcIjtcbmV4cG9ydCAqIGFzIGdlbmllIGZyb20gXCIuL3NyYy9nZW5pZS50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWVDaGF0IGZyb20gXCIuL3NyYy9nZW5pZS1jaGF0LnRzXCI7XG5leHBvcnQgKiBhcyBpZGVudGl0eSBmcm9tIFwiLi9zcmMvaWRlbnRpdHkudHNcIjtcbmV4cG9ydCAqIGFzIG1jcCBmcm9tIFwiLi9zcmMvbWNwLnRzXCI7XG5leHBvcnQgKiBhcyBtZW1vcnkgZnJvbSBcIi4vc3JjL21lbW9yeS50c1wiO1xuZXhwb3J0ICogYXMgbWxmbG93IGZyb20gXCIuL3NyYy9tbGZsb3cudHNcIjtcbmV4cG9ydCAqIGFzIG1vZGVsIGZyb20gXCIuL3NyYy9tb2RlbC50c1wiO1xuZXhwb3J0ICogYXMgbW9udHlTYW5kYm94IGZyb20gXCIuL3NyYy9tb250eS1zYW5kYm94LnRzXCI7XG5leHBvcnQgKiBhcyBvYnNlcnZhYmlsaXR5IGZyb20gXCIuL3NyYy9vYnNlcnZhYmlsaXR5LnRzXCI7XG5leHBvcnQgKiBhcyBwbHVnaW4gZnJvbSBcIi4vc3JjL3BsdWdpbi50c1wiO1xuZXhwb3J0ICogYXMgcHJvY2Vzc29ycyBmcm9tIFwiLi9zcmMvcHJvY2Vzc29ycy50c1wiO1xuZXhwb3J0ICogYXMgcmVtb3RlU2tpbGxzIGZyb20gXCIuL3NyYy9yZW1vdGUtc2tpbGxzLnRzXCI7XG5leHBvcnQgKiBhcyByZXF1ZXN0Q29udGV4dCBmcm9tIFwiLi9zcmMvcmVxdWVzdC1jb250ZXh0LnRzXCI7XG5leHBvcnQgKiBhcyByZXN0IGZyb20gXCIuL3NyYy9yZXN0LnRzXCI7XG5leHBvcnQgKiBhcyBzZXJ2ZXIgZnJvbSBcIi4vc3JjL3NlcnZlci50c1wiO1xuZXhwb3J0ICogYXMgc2VydmluZyBmcm9tIFwiLi9zcmMvc2VydmluZy50c1wiO1xuZXhwb3J0ICogYXMgc2tpbGxQYXRocyBmcm9tIFwiLi9zcmMvc2tpbGwtcGF0aHMudHNcIjtcbmV4cG9ydCAqIGFzIHN0YXRlbWVudCBmcm9tIFwiLi9zcmMvc3RhdGVtZW50LnRzXCI7XG5leHBvcnQgKiBhcyBzdG9yYWdlU2NoZW1hIGZyb20gXCIuL3NyYy9zdG9yYWdlLXNjaGVtYS50c1wiO1xuZXhwb3J0ICogYXMgc3R5bGUgZnJvbSBcIi4vc3JjL3N0eWxlLnRzXCI7XG5leHBvcnQgKiBhcyBzdW1tYXJpemUgZnJvbSBcIi4vc3JjL3N1bW1hcml6ZS50c1wiO1xuZXhwb3J0ICogYXMgdGVsZW1ldHJ5IGZyb20gXCIuL3NyYy90ZWxlbWV0cnkudHNcIjtcbmV4cG9ydCAqIGFzIHRyYWNlQXR0cmlidXRlcyBmcm9tIFwiLi9zcmMvdHJhY2UtYXR0cmlidXRlcy50c1wiO1xuZXhwb3J0ICogYXMgdmFsaWRhdGlvbiBmcm9tIFwiLi9zcmMvdmFsaWRhdGlvbi50c1wiO1xuZXhwb3J0ICogYXMgd29ya3NwYWNlcyBmcm9tIFwiLi9zcmMvd29ya3NwYWNlcy50c1wiO1xuZXhwb3J0ICogYXMgd3JpdGVyIGZyb20gXCIuL3NyYy93cml0ZXIudHNcIjtcbmV4cG9ydCB7IEZBTExCQUNLX0FHRU5UX0lELCBERUZBVUxUX0FHRU5UX01BWF9TVEVQUywgREVGQVVMVF9UT09MX1dPUktGTE9XX0lOU1RSVUNUSU9OUywgQ09ERV9NT0RFX1JPVVRJTkdfSU5TVFJVQ1RJT05TLCBERUZBVUxUX1NUWUxFX0lOU1RSVUNUSU9OUyB9IGZyb20gXCIuL3NyYy9hZ2VudHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFzdHJhVG9vbHMsIEFwcEtpdFRvb2xPcHRpb25zLCBUb29sa2l0T3B0aW9ucywgTWFzdHJhUGx1Z2luVG9vbGtpdFByb3ZpZGVyLCBNYXN0cmFQbHVnaW5zLCBNYXN0cmFUb29sc0ZuLCBNYXN0cmFBZ2VudFdvcmtzcGFjZVJlc29sdmVyLCBNYXN0cmFBZ2VudERlZmluaXRpb24sIEFueU1hc3RyYUFnZW50RGVmaW5pdGlvbiwgTWFzdHJhU3RvcmFnZUNvbmZpZ092ZXJyaWRlLCBNYXN0cmFNZW1vcnlDb25maWdPdmVycmlkZSwgQWdlbnREZWZhdWx0TW9kZWwsIEJ1aWx0QWdlbnRzLCBNYXN0cmFPdXRwdXRQcm9jZXNzb3JGYWN0b3J5IH0gZnJvbSBcIi4vc3JjL2FnZW50cy50c1wiO1xuZXhwb3J0IHsgY2hhcnRQbGFuU2NoZW1hLCBjaGFydFBsYW5uZXJSZXF1ZXN0U2NoZW1hLCBjaGFydFRvb2xPdXRwdXRTY2hlbWEgfSBmcm9tIFwiLi9zcmMvY2hhcnQudHNcIjtcbmV4cG9ydCB0eXBlIHsgQ2hhcnRQbGFubmVyUmVxdWVzdCwgQ2hhcnRUb29sT3V0cHV0LCBQcmVwYXJlQ2hhcnRPcHRpb25zLCBGZXRjaENoYXJ0T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9jaGFydC50c1wiO1xuZXhwb3J0IHsgTUFTVFJBX1VTRVJfS0VZLCBNQVNUUkFfVVNFUl9OQU1FX0tFWSwgTUFTVFJBX1VTRVJfRU1BSUxfS0VZLCBNQVNUUkFfQVVUSF9NT0RFX0tFWSwgTUFTVFJBX1JFUVVFU1RfSURfS0VZLCBNQVNUUkFfU0NPUEVTX0tFWSwgVFJBQ0VfUkVRVUVTVF9DT05URVhUX0tFWVMsIE1BU1RSQV9DT05GSUdfU0NIRU1BIH0gZnJvbSBcIi4vc3JjL2NvbmZpZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBVc2VyLCBNYXN0cmFNZW1vcnlDb25maWcsIE1hc3RyYVdvcmtzcGFjZVNraWxsc0NvbmZpZywgTWFzdHJhQ29kZU1vZGVUcmFuc3BvcnQsIE1hc3RyYUNvZGVNb2RlQ29uZmlnLCBNYXN0cmFNY3BDb25maWcsIEZvbGxvd1VwU3VnZ2VzdGlvbnNDb25maWcsIE1hc3RyYVBsdWdpbkNvbmZpZyB9IGZyb20gXCIuL3NyYy9jb25maWcudHNcIjtcbmV4cG9ydCB7IG1vZGVsQ2F0YWxvZ3VlRGVmYXVsdHMsIGdlbmllU3VnZ2VzdGlvbkRlZmF1bHRzLCBnZW5pZUNvbnZlcnNhdGlvblJlYWREZWZhdWx0cywgZ2VuaWVDb252ZXJzYXRpb25Xcml0ZURlZmF1bHRzLCBzdGF0ZW1lbnREYXRhRGVmYXVsdHMsIGNoYXJ0RmV0Y2hEZWZhdWx0cywgZmVlZGJhY2tXcml0ZURlZmF1bHRzIH0gZnJvbSBcIi4vc3JjL2RlZmF1bHRzLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYUV2YWxEcml2ZXJPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2V2YWx1YXRpb24udHNcIjtcbmV4cG9ydCB0eXBlIHsgRmVlZGJhY2tBdmFpbGFiaWxpdHkgfSBmcm9tIFwiLi9zcmMvZmVlZGJhY2stbW9kZS50c1wiO1xuZXhwb3J0IHsgTWFzdHJhRmlsZVN5c3RlbUFkYXB0ZXIsIE1vdW50ZWRDb21wb3NpdGVGaWxlc3lzdGVtIH0gZnJvbSBcIi4vc3JjL2ZpbGVzeXN0ZW1zLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYUZpbGVTeXN0ZW1BZGFwdGVyT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9maWxlc3lzdGVtcy50c1wiO1xuZXhwb3J0IHsgRk9MTE9XX1VQX1VTRVJfVEVYVF9LRVksIEZPTExPV19VUF9OQVRJVkVfUVVFU1RJT05TX0tFWSwgRk9MTE9XX1VQX1JVTl9JRF9LRVkgfSBmcm9tIFwiLi9zcmMvZm9sbG93LXVwLXN1Z2dlc3Rpb25zLnRzXCI7XG5leHBvcnQgdHlwZSB7IFJlc29sdmVkRm9sbG93VXBTdWdnZXN0aW9uc0NvbmZpZywgU3VnZ2VzdEZvbGxvd1Vwc09wdGlvbnMsIEZvbGxvd1VwU3VnZ2VzdGVyIH0gZnJvbSBcIi4vc3JjL2ZvbGxvdy11cC1zdWdnZXN0aW9ucy50c1wiO1xuZXhwb3J0IHsgREVGQVVMVF9HRU5JRV9BTElBUywgR0VOSUVfSU5TVFJVQ1RJT05TIH0gZnJvbSBcIi4vc3JjL2dlbmllLnRzXCI7XG5leHBvcnQgdHlwZSB7IEdlbmllU3BhY2VDb25maWcsIEdlbmllU3BhY2VzQ29uZmlnIH0gZnJvbSBcIi4vc3JjL2dlbmllLnRzXCI7XG5leHBvcnQgdHlwZSB7IEdlbmllQ2hhdFNwYWNlIH0gZnJvbSBcIi4vc3JjL2dlbmllLWNoYXQudHNcIjtcbmV4cG9ydCB7IElERU5USVRZX0VOViwgSURFTlRJVFlfTU9ERVMsIERFRkFVTFRfSURFTlRJVFlfTU9ERSwgVVNFUl9JRF9IRUFERVIsIFVTRVJfRU1BSUxfSEVBREVSLCByZXF1ZXN0VXNlcklkLCByZXF1ZXN0VXNlckVtYWlsLCB1c2VTZXJ2aWNlUHJpbmNpcGFsIH0gZnJvbSBcIi4vc3JjL2lkZW50aXR5LnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYUlkZW50aXR5TW9kZSB9IGZyb20gXCIuL3NyYy9pZGVudGl0eS50c1wiO1xuZXhwb3J0IHR5cGUgeyBSZXNvbHZlZE1jcCB9IGZyb20gXCIuL3NyYy9tY3AudHNcIjtcbmV4cG9ydCB7IE1lbW9yeUJ1aWxkZXIgfSBmcm9tIFwiLi9zcmMvbWVtb3J5LnRzXCI7XG5leHBvcnQgeyBBZ2VudFRyYWNlU3BhblByb2Nlc3NvciB9IGZyb20gXCIuL3NyYy9tbGZsb3cudHNcIjtcbmV4cG9ydCB0eXBlIHsgQXBwTWxmbG93VHJhY2VJbmZvLCBMb2dGZWVkYmFja1BhcmFtcyB9IGZyb20gXCIuL3NyYy9tbGZsb3cudHNcIjtcbmV4cG9ydCB7IFJFU1BPTlNFU19QUk9WSURFUl9PUFRJT05TIH0gZnJvbSBcIi4vc3JjL21vZGVsLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJ1aWxkTW9kZWxPdmVycmlkZXMgfSBmcm9tIFwiLi9zcmMvbW9kZWwudHNcIjtcbmV4cG9ydCB7IE1vbnR5U2FuZGJveCB9IGZyb20gXCIuL3NyYy9tb250eS1zYW5kYm94LnRzXCI7XG5leHBvcnQgdHlwZSB7IE1vbnR5U2FuZGJveE9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvbW9udHktc2FuZGJveC50c1wiO1xuZXhwb3J0IHR5cGUgeyBCdWlsZE9ic2VydmFiaWxpdHlPcHRpb25zIH0gZnJvbSBcIi4vc3JjL29ic2VydmFiaWxpdHkudHNcIjtcbmV4cG9ydCB7IE1hc3RyYVBsdWdpbiwgbWFzdHJhIH0gZnJvbSBcIi4vc3JjL3BsdWdpbi50c1wiO1xuZXhwb3J0IHsgc3RyaXBTdGFsZUNoYXJ0c1Byb2Nlc3NvciB9IGZyb20gXCIuL3NyYy9wcm9jZXNzb3JzLnRzXCI7XG5leHBvcnQgeyBBSVRPT0xTX1NLSUxMU19NT1VOVCwgUkVNT1RFX1NLSUxMU19NT1VOVCwgQUlUT09MU19SRUZSRVNIX1RUTF9NUywgQUlUT09MU19TT1VSQ0UgfSBmcm9tIFwiLi9zcmMvcmVtb3RlLXNraWxscy50c1wiO1xuZXhwb3J0IHR5cGUgeyBBaVRvb2xzU291cmNlLCBSZW1vdGVTa2lsbFNvdXJjZU9wdGlvbnMsIFJlbW90ZVNraWxsU291cmNlLCBSZW1vdGVTa2lsbHNPcHRpb24sIExvY2FsU2tpbGxEaXJlY3RvcnlNb3VudCwgTWVtb3J5U2tpbGxNb3VudCwgTG9jYWxTa2lsbE1vdW50LCBQcm92aXNpb25SZW1vdGVTa2lsbHNPcHRpb25zLCBQcm92aXNpb25lZFJlbW90ZVNraWxscywgUmVtb3RlU2tpbGxDYWNoZUVudHJ5LCBSZW1vdGVTa2lsbHNNZXRhZGF0YSB9IGZyb20gXCIuL3NyYy9yZW1vdGUtc2tpbGxzLnRzXCI7XG5leHBvcnQgeyBNQVNUUkFfT1JJR0lOX0tFWSB9IGZyb20gXCIuL3NyYy9yZXF1ZXN0LWNvbnRleHQudHNcIjtcbmV4cG9ydCB0eXBlIHsgRGF0YWJyaWNrc0ZldGNoSW5pdCB9IGZyb20gXCIuL3NyYy9yZXN0LnRzXCI7XG5leHBvcnQgeyBNYXN0cmFTZXJ2ZXIgfSBmcm9tIFwiLi9zcmMvc2VydmVyLnRzXCI7XG5leHBvcnQgdHlwZSB7IEF0dHJpYnV0ZWRJZGVudGl0eSwgTWFzdHJhQXBpR2F0ZU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvc2VydmVyLnRzXCI7XG5leHBvcnQgeyBNQVNUUkFfTU9ERUxfT1ZFUlJJREVfS0VZLCBNQVNUUkFfUkVTT0xWRURfTU9ERUxfS0VZIH0gZnJvbSBcIi4vc3JjL3NlcnZpbmcudHNcIjtcbmV4cG9ydCB0eXBlIHsgTW9kZWxPdmVycmlkZVJlcXVlc3QgfSBmcm9tIFwiLi9zcmMvc2VydmluZy50c1wiO1xuZXhwb3J0IHsgT1JHQU5JWkFUSU9OX0FTU0lTVEFOVF9QQVRILCBPUkdBTklaQVRJT05fU0tJTExTX1BBVEggfSBmcm9tIFwiLi9zcmMvc2tpbGwtcGF0aHMudHNcIjtcbmV4cG9ydCB7IFNUQVRFTUVOVF9ST1dfQ0FQIH0gZnJvbSBcIi4vc3JjL3N0YXRlbWVudC50c1wiO1xuZXhwb3J0IHR5cGUgeyBTdGF0ZW1lbnRFbWJlZERhdGEgfSBmcm9tIFwiLi9zcmMvc3RhdGVtZW50LnRzXCI7XG5leHBvcnQgeyBUWVBPR1JBUEhZX1JVTEUgfSBmcm9tIFwiLi9zcmMvc3R5bGUudHNcIjtcbmV4cG9ydCB7IFRJVExFX0lOU1RSVUNUSU9OUyB9IGZyb20gXCIuL3NyYy9zdW1tYXJpemUudHNcIjtcbmV4cG9ydCB0eXBlIHsgU3VtbWFyaXplT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9zdW1tYXJpemUudHNcIjtcbmV4cG9ydCB7IFRSQUNFX0lPX0xJTUlULCBNTEZMT1dfU1BBTl9JTlBVVFNfQVRUUiwgTUxGTE9XX1NQQU5fT1VUUFVUU19BVFRSLCBDSEFUX01FU1NBR0VTX0FUVFIsIENIQVRfUkVTUE9OU0VfQVRUUiwgQ0hBVF9JREVOVElUWV9BVFRSLCBDSEFUX0dFTklFX1VTRURfQVRUUiwgTUxGTE9XX1NQQU5fVFlQRV9BVFRSLCBHRU5fQUlfT1BFUkFUSU9OX05BTUVfQVRUUiwgTUxGTE9XX1VTRVJfQVRUUiwgTUxGTE9XX1NFU1NJT05fQVRUUiwgTUxGTE9XX1NQQU5fVFlQRV9BR0VOVCwgTUxGTE9XX1NQQU5fVFlQRV9HRU5JRSwgQXBwTWxmbG93VHJhY2VJbmZvU3BhblByb2Nlc3NvciB9IGZyb20gXCIuL3NyYy90ZWxlbWV0cnkudHNcIjtcbmV4cG9ydCB0eXBlIHsgQ2hhdFR1cm5UZWxlbWV0cnlPcHRpb25zLCBDaGF0VHJhY2VUYWdWYWx1ZSB9IGZyb20gXCIuL3NyYy90ZWxlbWV0cnkudHNcIjtcbmV4cG9ydCB7IE1MRkxPV19UUkFDRV9UQUdfUFJFRklYLCBNTEZMT1dfQUdFTlRfVEFHLCBNTEZMT1dfR0VOSUVfVEFHLCBNTEZMT1dfT0JPX0FVVEhfVEFHLCBNTEZMT1dfU1BfQVVUSF9UQUcsIE1MRkxPV19MT0NBTF9UQUcsIE1MRkxPV19BR0VOVF9UQUdfQVRUUiwgTUxGTE9XX0dFTklFX1RBR19BVFRSLCBBUFBLSVRfQUdFTlRfVFJBQ0VfUk9PVF9BVFRSLCBNTEZMT1dfT0JPX0FVVEhfVEFHX0FUVFIsIE1MRkxPV19TUF9BVVRIX1RBR19BVFRSLCBNTEZMT1dfTE9DQUxfVEFHX0FUVFIgfSBmcm9tIFwiLi9zcmMvdHJhY2UtYXR0cmlidXRlcy50c1wiO1xuZXhwb3J0IHR5cGUgeyBTY2hlbWFJc3N1ZXMgfSBmcm9tIFwiLi9zcmMvdmFsaWRhdGlvbi50c1wiO1xuZXhwb3J0IHsgREVGQVVMVF9EQVRBQlJJQ0tTX1dPUktTUEFDRV9QQVRIUyB9IGZyb20gXCIuL3NyYy93b3Jrc3BhY2VzLnRzXCI7XG5leHBvcnQgdHlwZSB7IERhdGFicmlja3NXb3Jrc3BhY2VDb250ZXh0LCBEYXRhYnJpY2tzV29ya3NwYWNlUGF0aE9wdGlvbnMsIERhdGFicmlja3NXb3Jrc3BhY2VQYXRoLCBEYXRhYnJpY2tzV29ya3NwYWNlUGF0aFZhbHVlLCBEYXRhYnJpY2tzV29ya3NwYWNlQ2FjaGVGaWx0ZXIsIERhdGFicmlja3NXb3Jrc3BhY2VDYWNoZSwgV29ya3NwYWNlU2FuZGJveFNlbGVjdGlvbiwgRGF0YWJyaWNrc1dvcmtzcGFjZU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvd29ya3NwYWNlcy50c1wiO1xuIl19
|
package/lib/src/chat.js
CHANGED
|
@@ -12,6 +12,7 @@ import { registerApiRoute } from "@mastra/core/server";
|
|
|
12
12
|
import { createUIMessageStreamResponse } from "ai";
|
|
13
13
|
import { buildFollowUpSuggestionsTransform, FOLLOW_UP_NATIVE_QUESTIONS_KEY, FOLLOW_UP_RUN_ID_KEY, FOLLOW_UP_USER_TEXT_KEY, resolveFollowUpSuggestionsConfig, } from "./follow-up-suggestions.js";
|
|
14
14
|
import { withRequestMemoryScope } from "./memory.js";
|
|
15
|
+
import { activeChatTracingOptions } from "./telemetry.js";
|
|
15
16
|
const logger = log.logger("mastra/chat");
|
|
16
17
|
/** Client request cancellation is detached only for evented background agents. */
|
|
17
18
|
export function agentAbortSignal(agent, signal) {
|
|
@@ -78,6 +79,7 @@ export function agentChatRoutes(config = {}) {
|
|
|
78
79
|
requestContext.setRaw(FOLLOW_UP_USER_TEXT_KEY, userText);
|
|
79
80
|
requestContext.setRaw(FOLLOW_UP_NATIVE_QUESTIONS_KEY, []);
|
|
80
81
|
requestContext.setRaw(FOLLOW_UP_RUN_ID_KEY, runId);
|
|
82
|
+
const tracingOptions = activeChatTracingOptions(undefined);
|
|
81
83
|
const stream = await handleChatStream({
|
|
82
84
|
mastra,
|
|
83
85
|
agentId,
|
|
@@ -90,6 +92,7 @@ export function agentChatRoutes(config = {}) {
|
|
|
90
92
|
...params,
|
|
91
93
|
runId,
|
|
92
94
|
requestContext,
|
|
95
|
+
...(tracingOptions ? { tracingOptions } : {}),
|
|
93
96
|
...(abortSignal ? { abortSignal } : {}),
|
|
94
97
|
}, requestContext),
|
|
95
98
|
...(followUps && followUps.mode !== "genie"
|
|
@@ -160,4 +163,4 @@ function serializeChatStreamError(error) {
|
|
|
160
163
|
}
|
|
161
164
|
return errorUtils.errorMessage(error);
|
|
162
165
|
}
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jaGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUNMLHdCQUF3QixFQUN4QiwrQkFBK0IsR0FDaEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLElBQUksQ0FBQztBQUduRCxPQUFPLEVBQ0wsaUNBQWlDLEVBQ2pDLDhCQUE4QixFQUM5QixvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3ZCLGdDQUFnQyxHQUNqQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyRCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRXpDLGtGQUFrRjtBQUNsRixNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBYyxFQUFFLE1BQW1CO0lBQ2xFLE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNwRCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsS0FBYztJQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM1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QUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzdDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSztvQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7Z0JBQzVFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUNsQixFQUFFLEtBQUssRUFBRSxTQUFTLE9BQU8sb0NBQW9DLEVBQUUsRUFDL0QsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQ2hCLENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakUsQ0FBQztTQUNGLENBQUM7S0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLHdCQUF3QixDQUFDLEtBQWM7SUFDOUMsSUFBSSx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUU7WUFDekMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ2pDLENBQUMsQ0FBQztRQUNILE9BQU8sK0JBQStCLENBQUM7SUFDekMsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBPZmZpY2lhbCBNYXN0cmEgQUkgU0RLIGNoYXQgcm91dGVzIGZvciBicm93c2VyLWNvbXBhdGlibGUgVUkgc3RyZWFtcy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgZXJyb3JVdGlscywgbG9nLCBvYmplY3QgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgcm91dGVzIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLW1hc3RyYVwiO1xuaW1wb3J0IHtcbiAgaXNTdGFsZU1hc3RyYVJlc3VtZUVycm9yLFxuICBTVEFMRV9NQVNUUkFfUkVTVU1FX1NUUkVBTV9URVhULFxufSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtbWFzdHJhL3Jlc3VtZVwiO1xuaW1wb3J0IHsgaGFuZGxlQ2hhdFN0cmVhbSwgdG9BSVNka1N0cmVhbSB9IGZyb20gXCJAbWFzdHJhL2FpLXNka1wiO1xuaW1wb3J0IHsgaXNFdmVudGVkQWdlbnQgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL2FnZW50L2R1cmFibGVcIjtcbmltcG9ydCB7IHJlZ2lzdGVyQXBpUm91dGUgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3NlcnZlclwiO1xuaW1wb3J0IHsgY3JlYXRlVUlNZXNzYWdlU3RyZWFtUmVzcG9uc2UgfSBmcm9tIFwiYWlcIjtcblxuaW1wb3J0IHR5cGUgeyBNYXN0cmFQbHVnaW5Db25maWcgfSBmcm9tIFwiLi9jb25maWcudHNcIjtcbmltcG9ydCB7XG4gIGJ1aWxkRm9sbG93VXBTdWdnZXN0aW9uc1RyYW5zZm9ybSxcbiAgRk9MTE9XX1VQX05BVElWRV9RVUVTVElPTlNfS0VZLFxuICBGT0xMT1dfVVBfUlVOX0lEX0tFWSxcbiAgRk9MTE9XX1VQX1VTRVJfVEVYVF9LRVksXG4gIHJlc29sdmVGb2xsb3dVcFN1Z2dlc3Rpb25zQ29uZmlnLFxufSBmcm9tIFwiLi9mb2xsb3ctdXAtc3VnZ2VzdGlvbnMudHNcIjtcbmltcG9ydCB7IHdpdGhSZXF1ZXN0TWVtb3J5U2NvcGUgfSBmcm9tIFwiLi9tZW1vcnkudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcIm1hc3RyYS9jaGF0XCIpO1xuXG4vKiogQ2xpZW50IHJlcXVlc3QgY2FuY2VsbGF0aW9uIGlzIGRldGFjaGVkIG9ubHkgZm9yIGV2ZW50ZWQgYmFja2dyb3VuZCBhZ2VudHMuICovXG5leHBvcnQgZnVuY3Rpb24gYWdlbnRBYm9ydFNpZ25hbChhZ2VudDogdW5rbm93biwgc2lnbmFsOiBBYm9ydFNpZ25hbCk6IEFib3J0U2lnbmFsIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGlzRXZlbnRlZEFnZW50KGFnZW50KSA/IHVuZGVmaW5lZCA6IHNpZ25hbDtcbn1cblxuZnVuY3Rpb24gbGF0ZXN0VXNlclRleHQodmFsdWU6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBmb3IgKGxldCBpbmRleCA9IHZhbHVlLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4IC09IDEpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gdmFsdWVbaW5kZXhdO1xuICAgIGlmICghb2JqZWN0LmlzUmVjb3JkKG1lc3NhZ2UpIHx8IG1lc3NhZ2Uucm9sZSAhPT0gXCJ1c2VyXCIpIGNvbnRpbnVlO1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZS5jb250ZW50ID09PSBcInN0cmluZ1wiICYmIG1lc3NhZ2UuY29udGVudC50cmltKCkpIHtcbiAgICAgIHJldHVybiBtZXNzYWdlLmNvbnRlbnQudHJpbSgpO1xuICAgIH1cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobWVzc2FnZS5wYXJ0cykpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHRleHQgPSBtZXNzYWdlLnBhcnRzXG4gICAgICAuZmxhdE1hcCgocGFydCkgPT5cbiAgICAgICAgb2JqZWN0LmlzUmVjb3JkKHBhcnQpICYmIHBhcnQudHlwZSA9PT0gXCJ0ZXh0XCIgJiYgdHlwZW9mIHBhcnQudGV4dCA9PT0gXCJzdHJpbmdcIlxuICAgICAgICAgID8gW3BhcnQudGV4dF1cbiAgICAgICAgICA6IFtdLFxuICAgICAgKVxuICAgICAgLmpvaW4oXCJcXG5cIilcbiAgICAgIC50cmltKCk7XG4gICAgaWYgKHRleHQpIHJldHVybiB0ZXh0O1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiBSZWdpc3RlciBkZXRhY2hlZCBjaGF0LCBkdXJhYmxlIG9ic2VydmF0aW9uLCBhbmQgZXhwbGljaXQgYWJvcnQgcm91dGVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFnZW50Q2hhdFJvdXRlcyhjb25maWc6IE1hc3RyYVBsdWdpbkNvbmZpZyA9IHt9KSB7XG4gIGNvbnN0IGZvbGxvd1VwcyA9IHJlc29sdmVGb2xsb3dVcFN1Z2dlc3Rpb25zQ29uZmlnKGNvbmZpZy5mb2xsb3dVcFN1Z2dlc3Rpb25zKTtcbiAgY29uc3QgY2hhdFBhdGggPSBgJHtyb3V0ZXMuTUFTVFJBX1JPVVRFUy5jaGF0fS86YWdlbnRJZGAgYXMgYCR7c3RyaW5nfTphZ2VudElkYDtcbiAgY29uc3QgcnVuUGF0aCA9XG4gICAgYCR7cm91dGVzLk1BU1RSQV9ST1VURVMuY2hhdH0vOmFnZW50SWQke3JvdXRlcy5NQVNUUkFfUk9VVEVTLnJ1bnN9LzpydW5JZGAgYXMgYCR7c3RyaW5nfTphZ2VudElkJHtzdHJpbmd9OnJ1bklkYDtcbiAgY29uc3QgYWJvcnRQYXRoID1cbiAgICBgJHtydW5QYXRofSR7cm91dGVzLk1BU1RSQV9ST1VURVMuYWJvcnR9YCBhcyBgJHtzdHJpbmd9OmFnZW50SWQke3N0cmluZ306cnVuSWQke3N0cmluZ31gO1xuICByZXR1cm4gW1xuICAgIHJlZ2lzdGVyQXBpUm91dGUoY2hhdFBhdGgsIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBoYW5kbGVyOiBhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBhd2FpdCBjb250ZXh0LnJlcS5qc29uKCk7XG4gICAgICAgIGNvbnN0IG1hc3RyYSA9IGNvbnRleHQuZ2V0KFwibWFzdHJhXCIpO1xuICAgICAgICBjb25zdCBhZ2VudElkID0gY29udGV4dC5yZXEucGFyYW0oXCJhZ2VudElkXCIpO1xuICAgICAgICBpZiAoIWFnZW50SWQpIHRocm93IG5ldyBFcnJvcihcIkFnZW50IElEIGlzIHJlcXVpcmVkXCIpO1xuICAgICAgICBjb25zdCBtaWRkbGV3YXJlUmVxdWVzdENvbnRleHQgPSBjb250ZXh0LmdldChcInJlcXVlc3RDb250ZXh0XCIpO1xuICAgICAgICBjb25zdCByZXF1ZXN0Q29udGV4dCA9IG1pZGRsZXdhcmVSZXF1ZXN0Q29udGV4dCB8fCBwYXJhbXMucmVxdWVzdENvbnRleHQ7XG4gICAgICAgIGlmIChtaWRkbGV3YXJlUmVxdWVzdENvbnRleHQgJiYgcGFyYW1zLnJlcXVlc3RDb250ZXh0KSB7XG4gICAgICAgICAgbWFzdHJhXG4gICAgICAgICAgICAuZ2V0TG9nZ2VyKClcbiAgICAgICAgICAgID8ud2FybignTXVsdGlwbGUgXCJyZXF1ZXN0Q29udGV4dFwiIHNvdXJjZXMgcHJvdmlkZWQuIFVzaW5nIG1pZGRsZXdhcmUgY29udGV4dC4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2ZXJzaW9uSWQgPSBjb250ZXh0LnJlcS5xdWVyeShcInZlcnNpb25JZFwiKTtcbiAgICAgICAgY29uc3QgcmF3U3RhdHVzID0gY29udGV4dC5yZXEucXVlcnkoXCJzdGF0dXNcIik7XG4gICAgICAgIGlmICh2ZXJzaW9uSWQgJiYgcmF3U3RhdHVzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdRdWVyeSBwYXJhbWV0ZXJzIFwidmVyc2lvbklkXCIgYW5kIFwic3RhdHVzXCIgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyYXdTdGF0dXMgJiYgcmF3U3RhdHVzICE9PSBcImRyYWZ0XCIgJiYgcmF3U3RhdHVzICE9PSBcInB1Ymxpc2hlZFwiKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdRdWVyeSBwYXJhbWV0ZXIgXCJzdGF0dXNcIiBtdXN0IGJlIFwiZHJhZnRcIiBvciBcInB1Ymxpc2hlZFwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gcmF3U3RhdHVzIGFzIFwiZHJhZnRcIiB8IFwicHVibGlzaGVkXCIgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGFib3J0U2lnbmFsID0gYWdlbnRBYm9ydFNpZ25hbChtYXN0cmEuZ2V0QWdlbnRCeUlkKGFnZW50SWQpLCBjb250ZXh0LnJlcS5yYXcuc2lnbmFsKTtcbiAgICAgICAgY29uc3QgcnVuSWQgPVxuICAgICAgICAgIHR5cGVvZiBwYXJhbXMucnVuSWQgPT09IFwic3RyaW5nXCIgJiYgcGFyYW1zLnJ1bklkID8gcGFyYW1zLnJ1bklkIDogY3J5cHRvLnJhbmRvbVVVSUQoKTtcbiAgICAgICAgY29uc3QgdXNlclRleHQgPSBsYXRlc3RVc2VyVGV4dChwYXJhbXMubWVzc2FnZXMpO1xuICAgICAgICBpZiAodXNlclRleHQpIHJlcXVlc3RDb250ZXh0LnNldFJhdyhGT0xMT1dfVVBfVVNFUl9URVhUX0tFWSwgdXNlclRleHQpO1xuICAgICAgICByZXF1ZXN0Q29udGV4dC5zZXRSYXcoRk9MTE9XX1VQX05BVElWRV9RVUVTVElPTlNfS0VZLCBbXSk7XG4gICAgICAgIHJlcXVlc3RDb250ZXh0LnNldFJhdyhGT0xMT1dfVVBfUlVOX0lEX0tFWSwgcnVuSWQpO1xuICAgICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBoYW5kbGVDaGF0U3RyZWFtKHtcbiAgICAgICAgICBtYXN0cmEsXG4gICAgICAgICAgYWdlbnRJZCxcbiAgICAgICAgICAuLi4odmVyc2lvbklkXG4gICAgICAgICAgICA/IHsgYWdlbnRWZXJzaW9uOiB7IHZlcnNpb25JZCB9IH1cbiAgICAgICAgICAgIDogc3RhdHVzXG4gICAgICAgICAgICAgID8geyBhZ2VudFZlcnNpb246IHsgc3RhdHVzIH0gfVxuICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICBwYXJhbXM6IHdpdGhSZXF1ZXN0TWVtb3J5U2NvcGUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgICAgcnVuSWQsXG4gICAgICAgICAgICAgIHJlcXVlc3RDb250ZXh0LFxuICAgICAgICAgICAgICAuLi4oYWJvcnRTaWduYWwgPyB7IGFib3J0U2lnbmFsIH0gOiB7fSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWVzdENvbnRleHQsXG4gICAgICAgICAgKSxcbiAgICAgICAgICAuLi4oZm9sbG93VXBzICYmIGZvbGxvd1Vwcy5tb2RlICE9PSBcImdlbmllXCJcbiAgICAgICAgICAgID8geyBleHBlcmltZW50YWxUcmFuc2Zvcm06IGJ1aWxkRm9sbG93VXBTdWdnZXN0aW9uc1RyYW5zZm9ybShydW5JZCkgfVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgdmVyc2lvbjogXCJ2N1wiLFxuICAgICAgICAgIHNlbmRSZWFzb25pbmc6IHRydWUsXG4gICAgICAgICAgc2VuZFNvdXJjZXM6IHRydWUsXG4gICAgICAgICAgb25FcnJvcjogc2VyaWFsaXplQ2hhdFN0cmVhbUVycm9yLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVVJTWVzc2FnZVN0cmVhbVJlc3BvbnNlKHsgc3RyZWFtIH0pO1xuICAgICAgfSxcbiAgICB9KSxcbiAgICByZWdpc3RlckFwaVJvdXRlKHJ1blBhdGgsIHtcbiAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgIGhhbmRsZXI6IGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IG1hc3RyYSA9IGNvbnRleHQuZ2V0KFwibWFzdHJhXCIpO1xuICAgICAgICBjb25zdCBhZ2VudElkID0gY29udGV4dC5yZXEucGFyYW0oXCJhZ2VudElkXCIpO1xuICAgICAgICBjb25zdCBydW5JZCA9IGNvbnRleHQucmVxLnBhcmFtKFwicnVuSWRcIik7XG4gICAgICAgIGlmICghYWdlbnRJZCB8fCAhcnVuSWQpIHRocm93IG5ldyBFcnJvcihcIkFnZW50IElEIGFuZCBydW4gSUQgYXJlIHJlcXVpcmVkXCIpO1xuICAgICAgICBjb25zdCBhZ2VudCA9IG1hc3RyYS5nZXRBZ2VudEJ5SWQoYWdlbnRJZCk7XG4gICAgICAgIGlmICghaXNFdmVudGVkQWdlbnQoYWdlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIFJlc3BvbnNlLmpzb24oXG4gICAgICAgICAgICB7IGVycm9yOiBgQWdlbnQgJHthZ2VudElkfSBkb2VzIG5vdCBzdXBwb3J0IGJhY2tncm91bmQgdHVybnNgIH0sXG4gICAgICAgICAgICB7IHN0YXR1czogNDA5IH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYnNlcnZlZCA9IGF3YWl0IGFnZW50Lm9ic2VydmUocnVuSWQpO1xuICAgICAgICBjb25zdCBzdHJlYW0gPSB0b0FJU2RrU3RyZWFtKG9ic2VydmVkLm91dHB1dCwge1xuICAgICAgICAgIGZyb206IFwiYWdlbnRcIixcbiAgICAgICAgICAuLi4oZm9sbG93VXBzICYmIGZvbGxvd1Vwcy5tb2RlICE9PSBcImdlbmllXCJcbiAgICAgICAgICAgID8geyBleHBlcmltZW50YWxUcmFuc2Zvcm06IGJ1aWxkRm9sbG93VXBTdWdnZXN0aW9uc1RyYW5zZm9ybShydW5JZCkgfVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgdmVyc2lvbjogXCJ2N1wiLFxuICAgICAgICAgIHNlbmRSZWFzb25pbmc6IHRydWUsXG4gICAgICAgICAgc2VuZFNvdXJjZXM6IHRydWUsXG4gICAgICAgICAgb25FcnJvcjogc2VyaWFsaXplQ2hhdFN0cmVhbUVycm9yLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVVJTWVzc2FnZVN0cmVhbVJlc3BvbnNlKHsgc3RyZWFtIH0pO1xuICAgICAgfSxcbiAgICB9KSxcbiAgICByZWdpc3RlckFwaVJvdXRlKGFib3J0UGF0aCwge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhhbmRsZXI6IGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IG1hc3RyYSA9IGNvbnRleHQuZ2V0KFwibWFzdHJhXCIpO1xuICAgICAgICBjb25zdCBhZ2VudElkID0gY29udGV4dC5yZXEucGFyYW0oXCJhZ2VudElkXCIpO1xuICAgICAgICBjb25zdCBydW5JZCA9IGNvbnRleHQucmVxLnBhcmFtKFwicnVuSWRcIik7XG4gICAgICAgIGlmICghYWdlbnRJZCB8fCAhcnVuSWQpIHRocm93IG5ldyBFcnJvcihcIkFnZW50IElEIGFuZCBydW4gSUQgYXJlIHJlcXVpcmVkXCIpO1xuICAgICAgICBjb25zdCBhZ2VudCA9IG1hc3RyYS5nZXRBZ2VudEJ5SWQoYWdlbnRJZCk7XG4gICAgICAgIGlmICghaXNFdmVudGVkQWdlbnQoYWdlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIFJlc3BvbnNlLmpzb24oXG4gICAgICAgICAgICB7IGVycm9yOiBgQWdlbnQgJHthZ2VudElkfSBkb2VzIG5vdCBzdXBwb3J0IGJhY2tncm91bmQgdHVybnNgIH0sXG4gICAgICAgICAgICB7IHN0YXR1czogNDA5IH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUmVzcG9uc2UuanNvbih7IGFib3J0ZWQ6IGFnZW50LmFib3J0UnVuU3RyZWFtKHJ1bklkKSB9KTtcbiAgICAgIH0sXG4gICAgfSksXG4gIF07XG59XG5cbi8qKlxuICogS2VlcCBhIGxhdGUgb3IgZHVwbGljYXRlIHJlc3VtZSBmcm9tIGZhaWxpbmcgdGhlIFVJIHN0cmVhbS4gTWFzdHJhJ3NcbiAqIHJlc3VtZSBwYXRoIGNhbiBzdXJmYWNlIGEgd29ya2Zsb3cgZXJyb3IgYWZ0ZXIgYW5vdGhlciBjbGllbnQgYWxyZWFkeVxuICogcmVzb2x2ZWQgdGhlIHNhbWUgYXBwcm92YWwuXG4gKi9cbmZ1bmN0aW9uIHNlcmlhbGl6ZUNoYXRTdHJlYW1FcnJvcihlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmIChpc1N0YWxlTWFzdHJhUmVzdW1lRXJyb3IoZXJyb3IpKSB7XG4gICAgbG9nZ2VyLndhcm4oXCJpZ25vcmVkIHN0YWxlIG1hc3RyYSByZXN1bWVcIiwge1xuICAgICAgZXJyb3I6IGVycm9yVXRpbHMudG9FcnJvcihlcnJvciksXG4gICAgfSk7XG4gICAgcmV0dXJuIFNUQUxFX01BU1RSQV9SRVNVTUVfU1RSRUFNX1RFWFQ7XG4gIH1cbiAgcmV0dXJuIGVycm9yVXRpbHMuZXJyb3JNZXNzYWdlKGVycm9yKTtcbn1cbiJdfQ==
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jaGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUNMLHdCQUF3QixFQUN4QiwrQkFBK0IsR0FDaEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLElBQUksQ0FBQztBQUduRCxPQUFPLEVBQ0wsaUNBQWlDLEVBQ2pDLDhCQUE4QixFQUM5QixvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3ZCLGdDQUFnQyxHQUNqQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRXpDLGtGQUFrRjtBQUNsRixNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBYyxFQUFFLE1BQW1CO0lBQ2xFLE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNwRCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsS0FBYztJQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFD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Q2pDLENBQUMsQ0FBQztRQUNILE9BQU8sK0JBQStCLENBQUM7SUFDekMsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBPZmZpY2lhbCBNYXN0cmEgQUkgU0RLIGNoYXQgcm91dGVzIGZvciBicm93c2VyLWNvbXBhdGlibGUgVUkgc3RyZWFtcy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgZXJyb3JVdGlscywgbG9nLCBvYmplY3QgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgcm91dGVzIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLW1hc3RyYVwiO1xuaW1wb3J0IHtcbiAgaXNTdGFsZU1hc3RyYVJlc3VtZUVycm9yLFxuICBTVEFMRV9NQVNUUkFfUkVTVU1FX1NUUkVBTV9URVhULFxufSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtbWFzdHJhL3Jlc3VtZVwiO1xuaW1wb3J0IHsgaGFuZGxlQ2hhdFN0cmVhbSwgdG9BSVNka1N0cmVhbSB9IGZyb20gXCJAbWFzdHJhL2FpLXNka1wiO1xuaW1wb3J0IHsgaXNFdmVudGVkQWdlbnQgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL2FnZW50L2R1cmFibGVcIjtcbmltcG9ydCB7IHJlZ2lzdGVyQXBpUm91dGUgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3NlcnZlclwiO1xuaW1wb3J0IHsgY3JlYXRlVUlNZXNzYWdlU3RyZWFtUmVzcG9uc2UgfSBmcm9tIFwiYWlcIjtcblxuaW1wb3J0IHR5cGUgeyBNYXN0cmFQbHVnaW5Db25maWcgfSBmcm9tIFwiLi9jb25maWcudHNcIjtcbmltcG9ydCB7XG4gIGJ1aWxkRm9sbG93VXBTdWdnZXN0aW9uc1RyYW5zZm9ybSxcbiAgRk9MTE9XX1VQX05BVElWRV9RVUVTVElPTlNfS0VZLFxuICBGT0xMT1dfVVBfUlVOX0lEX0tFWSxcbiAgRk9MTE9XX1VQX1VTRVJfVEVYVF9LRVksXG4gIHJlc29sdmVGb2xsb3dVcFN1Z2dlc3Rpb25zQ29uZmlnLFxufSBmcm9tIFwiLi9mb2xsb3ctdXAtc3VnZ2VzdGlvbnMudHNcIjtcbmltcG9ydCB7IHdpdGhSZXF1ZXN0TWVtb3J5U2NvcGUgfSBmcm9tIFwiLi9tZW1vcnkudHNcIjtcbmltcG9ydCB7IGFjdGl2ZUNoYXRUcmFjaW5nT3B0aW9ucyB9IGZyb20gXCIuL3RlbGVtZXRyeS50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwibWFzdHJhL2NoYXRcIik7XG5cbi8qKiBDbGllbnQgcmVxdWVzdCBjYW5jZWxsYXRpb24gaXMgZGV0YWNoZWQgb25seSBmb3IgZXZlbnRlZCBiYWNrZ3JvdW5kIGFnZW50cy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZ2VudEFib3J0U2lnbmFsKGFnZW50OiB1bmtub3duLCBzaWduYWw6IEFib3J0U2lnbmFsKTogQWJvcnRTaWduYWwgfCB1bmRlZmluZWQge1xuICByZXR1cm4gaXNFdmVudGVkQWdlbnQoYWdlbnQpID8gdW5kZWZpbmVkIDogc2lnbmFsO1xufVxuXG5mdW5jdGlvbiBsYXRlc3RVc2VyVGV4dCh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB1bmRlZmluZWQ7XG4gIGZvciAobGV0IGluZGV4ID0gdmFsdWUubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXggLT0gMSkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB2YWx1ZVtpbmRleF07XG4gICAgaWYgKCFvYmplY3QuaXNSZWNvcmQobWVzc2FnZSkgfHwgbWVzc2FnZS5yb2xlICE9PSBcInVzZXJcIikgY29udGludWU7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlLmNvbnRlbnQgPT09IFwic3RyaW5nXCIgJiYgbWVzc2FnZS5jb250ZW50LnRyaW0oKSkge1xuICAgICAgcmV0dXJuIG1lc3NhZ2UuY29udGVudC50cmltKCk7XG4gICAgfVxuICAgIGlmICghQXJyYXkuaXNBcnJheShtZXNzYWdlLnBhcnRzKSkgY29udGludWU7XG4gICAgY29uc3QgdGV4dCA9IG1lc3NhZ2UucGFydHNcbiAgICAgIC5mbGF0TWFwKChwYXJ0KSA9PlxuICAgICAgICBvYmplY3QuaXNSZWNvcmQocGFydCkgJiYgcGFydC50eXBlID09PSBcInRleHRcIiAmJiB0eXBlb2YgcGFydC50ZXh0ID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgPyBbcGFydC50ZXh0XVxuICAgICAgICAgIDogW10sXG4gICAgICApXG4gICAgICAuam9pbihcIlxcblwiKVxuICAgICAgLnRyaW0oKTtcbiAgICBpZiAodGV4dCkgcmV0dXJuIHRleHQ7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqIFJlZ2lzdGVyIGRldGFjaGVkIGNoYXQsIGR1cmFibGUgb2JzZXJ2YXRpb24sIGFuZCBleHBsaWNpdCBhYm9ydCByb3V0ZXMuICovXG5leHBvcnQgZnVuY3Rpb24gYWdlbnRDaGF0Um91dGVzKGNvbmZpZzogTWFzdHJhUGx1Z2luQ29uZmlnID0ge30pIHtcbiAgY29uc3QgZm9sbG93VXBzID0gcmVzb2x2ZUZvbGxvd1VwU3VnZ2VzdGlvbnNDb25maWcoY29uZmlnLmZvbGxvd1VwU3VnZ2VzdGlvbnMpO1xuICBjb25zdCBjaGF0UGF0aCA9IGAke3JvdXRlcy5NQVNUUkFfUk9VVEVTLmNoYXR9LzphZ2VudElkYCBhcyBgJHtzdHJpbmd9OmFnZW50SWRgO1xuICBjb25zdCBydW5QYXRoID1cbiAgICBgJHtyb3V0ZXMuTUFTVFJBX1JPVVRFUy5jaGF0fS86YWdlbnRJZCR7cm91dGVzLk1BU1RSQV9ST1VURVMucnVuc30vOnJ1bklkYCBhcyBgJHtzdHJpbmd9OmFnZW50SWQke3N0cmluZ306cnVuSWRgO1xuICBjb25zdCBhYm9ydFBhdGggPVxuICAgIGAke3J1blBhdGh9JHtyb3V0ZXMuTUFTVFJBX1JPVVRFUy5hYm9ydH1gIGFzIGAke3N0cmluZ306YWdlbnRJZCR7c3RyaW5nfTpydW5JZCR7c3RyaW5nfWA7XG4gIHJldHVybiBbXG4gICAgcmVnaXN0ZXJBcGlSb3V0ZShjaGF0UGF0aCwge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhhbmRsZXI6IGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IGF3YWl0IGNvbnRleHQucmVxLmpzb24oKTtcbiAgICAgICAgY29uc3QgbWFzdHJhID0gY29udGV4dC5nZXQoXCJtYXN0cmFcIik7XG4gICAgICAgIGNvbnN0IGFnZW50SWQgPSBjb250ZXh0LnJlcS5wYXJhbShcImFnZW50SWRcIik7XG4gICAgICAgIGlmICghYWdlbnRJZCkgdGhyb3cgbmV3IEVycm9yKFwiQWdlbnQgSUQgaXMgcmVxdWlyZWRcIik7XG4gICAgICAgIGNvbnN0IG1pZGRsZXdhcmVSZXF1ZXN0Q29udGV4dCA9IGNvbnRleHQuZ2V0KFwicmVxdWVzdENvbnRleHRcIik7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RDb250ZXh0ID0gbWlkZGxld2FyZVJlcXVlc3RDb250ZXh0IHx8IHBhcmFtcy5yZXF1ZXN0Q29udGV4dDtcbiAgICAgICAgaWYgKG1pZGRsZXdhcmVSZXF1ZXN0Q29udGV4dCAmJiBwYXJhbXMucmVxdWVzdENvbnRleHQpIHtcbiAgICAgICAgICBtYXN0cmFcbiAgICAgICAgICAgIC5nZXRMb2dnZXIoKVxuICAgICAgICAgICAgPy53YXJuKCdNdWx0aXBsZSBcInJlcXVlc3RDb250ZXh0XCIgc291cmNlcyBwcm92aWRlZC4gVXNpbmcgbWlkZGxld2FyZSBjb250ZXh0LicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZlcnNpb25JZCA9IGNvbnRleHQucmVxLnF1ZXJ5KFwidmVyc2lvbklkXCIpO1xuICAgICAgICBjb25zdCByYXdTdGF0dXMgPSBjb250ZXh0LnJlcS5xdWVyeShcInN0YXR1c1wiKTtcbiAgICAgICAgaWYgKHZlcnNpb25JZCAmJiByYXdTdGF0dXMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1F1ZXJ5IHBhcmFtZXRlcnMgXCJ2ZXJzaW9uSWRcIiBhbmQgXCJzdGF0dXNcIiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJhd1N0YXR1cyAmJiByYXdTdGF0dXMgIT09IFwiZHJhZnRcIiAmJiByYXdTdGF0dXMgIT09IFwicHVibGlzaGVkXCIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1F1ZXJ5IHBhcmFtZXRlciBcInN0YXR1c1wiIG11c3QgYmUgXCJkcmFmdFwiIG9yIFwicHVibGlzaGVkXCInKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGF0dXMgPSByYXdTdGF0dXMgYXMgXCJkcmFmdFwiIHwgXCJwdWJsaXNoZWRcIiB8IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgYWJvcnRTaWduYWwgPSBhZ2VudEFib3J0U2lnbmFsKG1hc3RyYS5nZXRBZ2VudEJ5SWQoYWdlbnRJZCksIGNvbnRleHQucmVxLnJhdy5zaWduYWwpO1xuICAgICAgICBjb25zdCBydW5JZCA9XG4gICAgICAgICAgdHlwZW9mIHBhcmFtcy5ydW5JZCA9PT0gXCJzdHJpbmdcIiAmJiBwYXJhbXMucnVuSWQgPyBwYXJhbXMucnVuSWQgOiBjcnlwdG8ucmFuZG9tVVVJRCgpO1xuICAgICAgICBjb25zdCB1c2VyVGV4dCA9IGxhdGVzdFVzZXJUZXh0KHBhcmFtcy5tZXNzYWdlcyk7XG4gICAgICAgIGlmICh1c2VyVGV4dCkgcmVxdWVzdENvbnRleHQuc2V0UmF3KEZPTExPV19VUF9VU0VSX1RFWFRfS0VZLCB1c2VyVGV4dCk7XG4gICAgICAgIHJlcXVlc3RDb250ZXh0LnNldFJhdyhGT0xMT1dfVVBfTkFUSVZFX1FVRVNUSU9OU19LRVksIFtdKTtcbiAgICAgICAgcmVxdWVzdENvbnRleHQuc2V0UmF3KEZPTExPV19VUF9SVU5fSURfS0VZLCBydW5JZCk7XG4gICAgICAgIGNvbnN0IHRyYWNpbmdPcHRpb25zID0gYWN0aXZlQ2hhdFRyYWNpbmdPcHRpb25zKHVuZGVmaW5lZCk7XG4gICAgICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IGhhbmRsZUNoYXRTdHJlYW0oe1xuICAgICAgICAgIG1hc3RyYSxcbiAgICAgICAgICBhZ2VudElkLFxuICAgICAgICAgIC4uLih2ZXJzaW9uSWRcbiAgICAgICAgICAgID8geyBhZ2VudFZlcnNpb246IHsgdmVyc2lvbklkIH0gfVxuICAgICAgICAgICAgOiBzdGF0dXNcbiAgICAgICAgICAgICAgPyB7IGFnZW50VmVyc2lvbjogeyBzdGF0dXMgfSB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIHBhcmFtczogd2l0aFJlcXVlc3RNZW1vcnlTY29wZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgICBydW5JZCxcbiAgICAgICAgICAgICAgcmVxdWVzdENvbnRleHQsXG4gICAgICAgICAgICAgIC4uLih0cmFjaW5nT3B0aW9ucyA/IHsgdHJhY2luZ09wdGlvbnMgfSA6IHt9KSxcbiAgICAgICAgICAgICAgLi4uKGFib3J0U2lnbmFsID8geyBhYm9ydFNpZ25hbCB9IDoge30pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcXVlc3RDb250ZXh0LFxuICAgICAgICAgICksXG4gICAgICAgICAgLi4uKGZvbGxvd1VwcyAmJiBmb2xsb3dVcHMubW9kZSAhPT0gXCJnZW5pZVwiXG4gICAgICAgICAgICA/IHsgZXhwZXJpbWVudGFsVHJhbnNmb3JtOiBidWlsZEZvbGxvd1VwU3VnZ2VzdGlvbnNUcmFuc2Zvcm0ocnVuSWQpIH1cbiAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIHZlcnNpb246IFwidjdcIixcbiAgICAgICAgICBzZW5kUmVhc29uaW5nOiB0cnVlLFxuICAgICAgICAgIHNlbmRTb3VyY2VzOiB0cnVlLFxuICAgICAgICAgIG9uRXJyb3I6IHNlcmlhbGl6ZUNoYXRTdHJlYW1FcnJvcixcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjcmVhdGVVSU1lc3NhZ2VTdHJlYW1SZXNwb25zZSh7IHN0cmVhbSB9KTtcbiAgICAgIH0sXG4gICAgfSksXG4gICAgcmVnaXN0ZXJBcGlSb3V0ZShydW5QYXRoLCB7XG4gICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICBoYW5kbGVyOiBhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBtYXN0cmEgPSBjb250ZXh0LmdldChcIm1hc3RyYVwiKTtcbiAgICAgICAgY29uc3QgYWdlbnRJZCA9IGNvbnRleHQucmVxLnBhcmFtKFwiYWdlbnRJZFwiKTtcbiAgICAgICAgY29uc3QgcnVuSWQgPSBjb250ZXh0LnJlcS5wYXJhbShcInJ1bklkXCIpO1xuICAgICAgICBpZiAoIWFnZW50SWQgfHwgIXJ1bklkKSB0aHJvdyBuZXcgRXJyb3IoXCJBZ2VudCBJRCBhbmQgcnVuIElEIGFyZSByZXF1aXJlZFwiKTtcbiAgICAgICAgY29uc3QgYWdlbnQgPSBtYXN0cmEuZ2V0QWdlbnRCeUlkKGFnZW50SWQpO1xuICAgICAgICBpZiAoIWlzRXZlbnRlZEFnZW50KGFnZW50KSkge1xuICAgICAgICAgIHJldHVybiBSZXNwb25zZS5qc29uKFxuICAgICAgICAgICAgeyBlcnJvcjogYEFnZW50ICR7YWdlbnRJZH0gZG9lcyBub3Qgc3VwcG9ydCBiYWNrZ3JvdW5kIHR1cm5zYCB9LFxuICAgICAgICAgICAgeyBzdGF0dXM6IDQwOSB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb2JzZXJ2ZWQgPSBhd2FpdCBhZ2VudC5vYnNlcnZlKHJ1bklkKTtcbiAgICAgICAgY29uc3Qgc3RyZWFtID0gdG9BSVNka1N0cmVhbShvYnNlcnZlZC5vdXRwdXQsIHtcbiAgICAgICAgICBmcm9tOiBcImFnZW50XCIsXG4gICAgICAgICAgLi4uKGZvbGxvd1VwcyAmJiBmb2xsb3dVcHMubW9kZSAhPT0gXCJnZW5pZVwiXG4gICAgICAgICAgICA/IHsgZXhwZXJpbWVudGFsVHJhbnNmb3JtOiBidWlsZEZvbGxvd1VwU3VnZ2VzdGlvbnNUcmFuc2Zvcm0ocnVuSWQpIH1cbiAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIHZlcnNpb246IFwidjdcIixcbiAgICAgICAgICBzZW5kUmVhc29uaW5nOiB0cnVlLFxuICAgICAgICAgIHNlbmRTb3VyY2VzOiB0cnVlLFxuICAgICAgICAgIG9uRXJyb3I6IHNlcmlhbGl6ZUNoYXRTdHJlYW1FcnJvcixcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjcmVhdGVVSU1lc3NhZ2VTdHJlYW1SZXNwb25zZSh7IHN0cmVhbSB9KTtcbiAgICAgIH0sXG4gICAgfSksXG4gICAgcmVnaXN0ZXJBcGlSb3V0ZShhYm9ydFBhdGgsIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBoYW5kbGVyOiBhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBtYXN0cmEgPSBjb250ZXh0LmdldChcIm1hc3RyYVwiKTtcbiAgICAgICAgY29uc3QgYWdlbnRJZCA9IGNvbnRleHQucmVxLnBhcmFtKFwiYWdlbnRJZFwiKTtcbiAgICAgICAgY29uc3QgcnVuSWQgPSBjb250ZXh0LnJlcS5wYXJhbShcInJ1bklkXCIpO1xuICAgICAgICBpZiAoIWFnZW50SWQgfHwgIXJ1bklkKSB0aHJvdyBuZXcgRXJyb3IoXCJBZ2VudCBJRCBhbmQgcnVuIElEIGFyZSByZXF1aXJlZFwiKTtcbiAgICAgICAgY29uc3QgYWdlbnQgPSBtYXN0cmEuZ2V0QWdlbnRCeUlkKGFnZW50SWQpO1xuICAgICAgICBpZiAoIWlzRXZlbnRlZEFnZW50KGFnZW50KSkge1xuICAgICAgICAgIHJldHVybiBSZXNwb25zZS5qc29uKFxuICAgICAgICAgICAgeyBlcnJvcjogYEFnZW50ICR7YWdlbnRJZH0gZG9lcyBub3Qgc3VwcG9ydCBiYWNrZ3JvdW5kIHR1cm5zYCB9LFxuICAgICAgICAgICAgeyBzdGF0dXM6IDQwOSB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJlc3BvbnNlLmpzb24oeyBhYm9ydGVkOiBhZ2VudC5hYm9ydFJ1blN0cmVhbShydW5JZCkgfSk7XG4gICAgICB9LFxuICAgIH0pLFxuICBdO1xufVxuXG4vKipcbiAqIEtlZXAgYSBsYXRlIG9yIGR1cGxpY2F0ZSByZXN1bWUgZnJvbSBmYWlsaW5nIHRoZSBVSSBzdHJlYW0uIE1hc3RyYSdzXG4gKiByZXN1bWUgcGF0aCBjYW4gc3VyZmFjZSBhIHdvcmtmbG93IGVycm9yIGFmdGVyIGFub3RoZXIgY2xpZW50IGFscmVhZHlcbiAqIHJlc29sdmVkIHRoZSBzYW1lIGFwcHJvdmFsLlxuICovXG5mdW5jdGlvbiBzZXJpYWxpemVDaGF0U3RyZWFtRXJyb3IoZXJyb3I6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAoaXNTdGFsZU1hc3RyYVJlc3VtZUVycm9yKGVycm9yKSkge1xuICAgIGxvZ2dlci53YXJuKFwiaWdub3JlZCBzdGFsZSBtYXN0cmEgcmVzdW1lXCIsIHtcbiAgICAgIGVycm9yOiBlcnJvclV0aWxzLnRvRXJyb3IoZXJyb3IpLFxuICAgIH0pO1xuICAgIHJldHVybiBTVEFMRV9NQVNUUkFfUkVTVU1FX1NUUkVBTV9URVhUO1xuICB9XG4gIHJldHVybiBlcnJvclV0aWxzLmVycm9yTWVzc2FnZShlcnJvcik7XG59XG4iXX0=
|
package/lib/src/config.d.ts
CHANGED
|
@@ -572,8 +572,9 @@ export interface MastraPluginConfig extends BasePluginConfig {
|
|
|
572
572
|
* - `"auto"`: OBO when the request carries an OBO token, the service principal
|
|
573
573
|
* when it does not. For an app serving BOTH the platform front door and a
|
|
574
574
|
* door that has no token to forward - a `@dbx-tools/tunnel` gate, a
|
|
575
|
-
*
|
|
576
|
-
* `AuthenticationError` outside
|
|
575
|
+
* separately authenticated webhook or bot channel - where AppKit's `asUser`
|
|
576
|
+
* would otherwise throw `AuthenticationError` outside
|
|
577
|
+
* `NODE_ENV=development`.
|
|
577
578
|
*
|
|
578
579
|
* The service-principal path changes only the Databricks CREDENTIAL. Memory
|
|
579
580
|
* threads, the per-user cache namespace, and trace metadata still key off the
|
package/lib/src/config.js
CHANGED
|
@@ -259,4 +259,4 @@ export const MASTRA_CONFIG_SCHEMA = {
|
|
|
259
259
|
},
|
|
260
260
|
},
|
|
261
261
|
};
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBRSxtQkFBbUIsRUFBNEMsTUFBTSxvQkFBb0IsQ0FBQztBQU1uRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVc1RixPQUFPLEVBQUUsY0FBYyxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUd4RTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQztBQUU5Qzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGtCQUFrQixDQUFDO0FBQ3ZELDZFQUE2RTtBQUM3RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztBQUN6RCxrRkFBa0Y7QUFDbEYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsa0JBQWtCLENBQUM7QUFFdkQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztBQUV6RDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO0FBRWxEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBc0I7SUFDM0Qsc0JBQXNCO0lBQ3RCLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIsbUVBQW1FO0lBQ25FLGlFQUFpRTtJQUNqRSx3QkFBd0I7Q0FDekIsQ0FBQztBQVFGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxPQUFvQztJQUN6RSxPQUFPLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDdEUsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixnQkFBNkMsRUFDN0MsZUFBd0I7SUFFeEIsSUFBSSxlQUFlLElBQUksZ0JBQWdCO1FBQUUsT0FBTyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3pGLE9BQU8sZUFBZSxJQUFJLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLGNBQStCO0lBQzVELE1BQU0sSUFBSSxHQUFHLGNBQWMsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFxQixDQUFDO0lBQ3RFLE9BQU8sSUFBSSxFQUFFLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7QUFDbkUsQ0FBQztBQXloQkQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBaUI7SUFDaEQsSUFBSSxFQUFFLFFBQVE7SUFDZCxVQUFVLEVBQUU7UUFDVixlQUFlLEVBQUU7WUFDZixJQUFJLEVBQUUsU0FBUztZQUNmLFdBQVcsRUFDVCxxSkFBcUo7U0FDeEo7UUFDRCxVQUFVLEVBQUU7WUFDVixJQUFJLEVBQUUsUUFBUTtZQUNkLFdBQVcsRUFBRSwwREFBMEQ7U0FDeEU7UUFDRCxZQUFZLEVBQUU7WUFDWixJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQztZQUNuQyxXQUFXLEVBQ1QsMlVBQTJVO1NBQzlVO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQztZQUMzQixXQUFXLEVBQ1QsNk5BQTZOO1NBQ2hPO1FBQ0QsTUFBTSxFQUFFO1lBQ04sSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQztZQUMzQixXQUFXLEVBQ1QsMk5BQTJOO1NBQzlOO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7WUFDckMsT0FBTyxFQUFFLEtBQUs7WUFDZCxXQUFXLEVBQ1Qsc2FBQXNhO1NBQ3phO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7WUFDckMsV0FBVyxFQUNULG9NQUFvTTtTQUN2TTtRQUNELHNCQUFzQixFQUFFO1lBQ3RCLElBQUksRUFBRSxTQUFTO1lBQ2YsV0FBVyxFQUNULG1JQUFtSTtTQUN0STtRQUNELGVBQWUsRUFBRTtZQUNmLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUM7WUFDM0IsV0FBVyxFQUNULGtHQUFrRztTQUNyRztRQUNELGNBQWMsRUFBRTtZQUNkLElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUNULHNIQUFzSDtTQUN6SDtRQUNELFlBQVksRUFBRTtZQUNaLElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUNULGdIQUFnSDtTQUNuSDtRQUNELFlBQVksRUFBRTtZQUNaLElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUNULG1MQUFtTDtTQUN0TDtRQUNELHFCQUFxQixFQUFFO1lBQ3JCLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUN6QixXQUFXLEVBQ1QsNkdBQTZHO1NBQ2hIO1FBQ0QsZUFBZSxFQUFFO1lBQ2YsSUFBSSxFQUFFLFNBQVM7WUFDZixXQUFXLEVBQ1Qsa0ZBQWtGO1NBQ3JGO1FBQ0QsbUJBQW1CLEVBQUU7WUFDbkIsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQ1QsNEZBQTRGO1NBQy9GO1FBQ0QsZUFBZSxFQUFFO1lBQ2YsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQ1QsNEZBQTRGO1NBQy9GO1FBQ0QsYUFBYSxFQUFFO1lBQ2IsSUFBSSxFQUFFLFNBQVM7WUFDZixXQUFXLEVBQ1QsOEhBQThIO1NBQ2pJO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsSUFBSSxFQUFFLFFBQVE7WUFDZCxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRTtZQUNwRCxXQUFXLEVBQ1Qsb1BBQW9QO1NBQ3ZQO1FBQ0QsY0FBYyxFQUFFO1lBQ2QsSUFBSSxFQUFFLFNBQVM7WUFDZixXQUFXLEVBQ1Qsd1BBQXdQO1NBQzNQO1FBQ0Qsb0JBQW9CLEVBQUU7WUFDcEIsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQUUsc0VBQXNFO1NBQ3BGO1FBQ0QsYUFBYSxFQUFFO1lBQ2IsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQ1QsZ0hBQWdIO1NBQ25IO1FBQ0QsbUJBQW1CLEVBQUU7WUFDbkIsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7WUFDckMsV0FBVyxFQUNULHVMQUF1TDtTQUMxTDtRQUNELGdCQUFnQixFQUFFO1lBQ2hCLElBQUksRUFBRSxTQUFTO1lBQ2YsV0FBVyxFQUNULDZIQUE2SDtTQUNoSTtRQUNELGlCQUFpQixFQUFFO1lBQ2pCLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7WUFDM0IsV0FBVyxFQUNULHFIQUFxSDtTQUN4SDtRQUNELGFBQWEsRUFBRTtZQUNiLElBQUksRUFBRSxTQUFTO1lBQ2YsV0FBVyxFQUNULHFKQUFxSjtTQUN4SjtRQUNELFlBQVksRUFBRTtZQUNaLElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDO1lBQ3pDLFdBQVcsRUFDVCwwSkFBMEo7U0FDN0o7UUFDRCxHQUFHLEVBQUU7WUFDSCxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDO1lBQzNCLFdBQVcsRUFDVCw0SkFBNEo7U0FDL0o7UUFDRCxhQUFhLEVBQUU7WUFDYixJQUFJLEVBQUUsUUFBUTtZQUNkLDJFQUEyRTtZQUMzRSwwRUFBMEU7WUFDMUUsSUFBSSxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUM7WUFDekIsV0FBVyxFQUNULGdpQkFBZ2lCO1NBQ25pQjtRQUNELFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQztZQUN4QixXQUFXLEVBQ1QscU9BQXFPO1NBQ3hPO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQ1QsMElBQTBJO1NBQzdJO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQbHVnaW4gY29uZmlndXJhdGlvbiB0eXBlcyBhbmQgc2hhcmVkIGBSZXF1ZXN0Q29udGV4dGAga2V5cy5cbiAqXG4gKiBPd25zIHRoZSB0eXBlZCB7QGxpbmsgTWFzdHJhUGx1Z2luQ29uZmlnfSAodGhlIHBsdWdpbidzIHNsaWNlIG9mIEFwcEtpdFxuICogY29uZmlnKSBhbmQge0BsaW5rIE1BU1RSQV9DT05GSUdfU0NIRU1BfSwgdGhlIEpTT04gU2NoZW1hIHRoZSBtYW5pZmVzdFxuICogcHVibGlzaGVzIGZvciBpdCBzbyBzY2FmZm9sZGluZyB0b29scyBhbmQgYWdlbnRzIGNhbiByZWFkIHRoZSBvcHRpb24gc2V0LlxuICpcbiAqIFByZWNlZGVuY2UgcGVyIGZpZWxkIGlzIGV4cGxpY2l0IHBsdWdpbiBjb25maWcsIHRoZW4gdGhlIGVudmlyb25tZW50XG4gKiB2YXJpYWJsZSBuYW1lZCBvbiB0aGUgZmllbGQsIHRoZW4gYSBidWlsdC1pbiBkZWZhdWx0LlxuICpcbiAqIEtlcHQgaW4gYSBsZWFmIG1vZHVsZSBzbyBgcGx1Z2luLnRzYCwgYHNlcnZlci50c2AsIGBtb2RlbC50c2AsIGFuZFxuICogYG1lbW9yeS50c2AgY2FuIGltcG9ydCB0aGVtIHdpdGhvdXQgY3JlYXRpbmcgYSBjeWNsZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgZ2V0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSBCYXNlUGx1Z2luQ29uZmlnLCB0eXBlIENvbmZpZ1NjaGVtYSB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGFwcGtpdCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBCcmFuZENvbnRleHQgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBGZWVkYmFja01vZGVPcHRpb24gfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtbWFzdHJhL2ZlZWRiYWNrXCI7XG5pbXBvcnQgdHlwZSB7IEFnZW50Q29uZmlnIH0gZnJvbSBcIkBtYXN0cmEvY29yZS9hZ2VudFwiO1xuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0Q29udGV4dCB9IGZyb20gXCJAbWFzdHJhL2NvcmUvcmVxdWVzdC1jb250ZXh0XCI7XG5pbXBvcnQgeyBNQVNUUkFfUkVTT1VSQ0VfSURfS0VZLCBNQVNUUkFfVEhSRUFEX0lEX0tFWSB9IGZyb20gXCJAbWFzdHJhL2NvcmUvcmVxdWVzdC1jb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEFueVdvcmtmbG93IH0gZnJvbSBcIkBtYXN0cmEvY29yZS93b3JrZmxvd3NcIjtcbmltcG9ydCB0eXBlIHtcbiAgV29ya3NwYWNlU2FuZGJveCxcbiAgV29ya3NwYWNlU2FuZGJveFJlc29sdmVyLFxuICBXb3Jrc3BhY2VUb29sc0NvbmZpZyxcbn0gZnJvbSBcIkBtYXN0cmEvY29yZS93b3Jrc3BhY2VcIjtcbmltcG9ydCB0eXBlIHsgUGdWZWN0b3JDb25maWcsIFBvc3RncmVzU3RvcmVDb25maWcgfSBmcm9tIFwiQG1hc3RyYS9wZ1wiO1xuXG5pbXBvcnQgdHlwZSB7IEFueU1hc3RyYUFnZW50RGVmaW5pdGlvbiwgTWFzdHJhVG9vbHMgfSBmcm9tIFwiLi9hZ2VudHMudHNcIjtcbmltcG9ydCB0eXBlIHsgR2VuaWVTcGFjZXNDb25maWcgfSBmcm9tIFwiLi9nZW5pZS50c1wiO1xuaW1wb3J0IHsgSURFTlRJVFlfTU9ERVMsIHR5cGUgTWFzdHJhSWRlbnRpdHlNb2RlIH0gZnJvbSBcIi4vaWRlbnRpdHkudHNcIjtcbmltcG9ydCB0eXBlIHsgTG9jYWxTa2lsbE1vdW50LCBSZW1vdGVTa2lsbHNPcHRpb24gfSBmcm9tIFwiLi9yZW1vdGUtc2tpbGxzLnRzXCI7XG5cbi8qKlxuICogYFJlcXVlc3RDb250ZXh0YCBrZXkgdW5kZXIgd2hpY2gge0BsaW5rIE1hc3RyYVNlcnZlcn0gc3RvcmVzIHRoZVxuICogcmVzb2x2ZWQgQXBwS2l0IHVzZXIuIGBtb2RlbC50c2AgcmVhZHMgaXQgdG8gbWludCB1c2VyLXNjb3BlZFxuICogRGF0YWJyaWNrcyB0b2tlbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVNUUkFfVVNFUl9LRVkgPSBcIm1hc3RyYV9fdXNlclwiO1xuXG4vKipcbiAqIGBSZXF1ZXN0Q29udGV4dGAga2V5cyBmb3IgQXBwS2l0IHVzZXIgbWV0YWRhdGEgc3RhbXBlZCBieVxuICoge0BsaW5rIE1hc3RyYVNlcnZlcn0uIFN1cmZhY2VkIGFzIHRyYWNlIG1ldGFkYXRhIHZpYVxuICoge0BsaW5rIFRSQUNFX1JFUVVFU1RfQ09OVEVYVF9LRVlTfSBzbyB0cmFjZXMgYXJlIGZpbHRlcmFibGUgYnkgd2hvXG4gKiBpc3N1ZWQgdGhlIHJlcXVlc3Qgd2l0aG91dCBsZWFraW5nIHRoZSBmdWxsIHVzZXIgb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3QgTUFTVFJBX1VTRVJfTkFNRV9LRVkgPSBcIm1hc3RyYV9fdXNlck5hbWVcIjtcbi8qKiBSZXF1ZXN0LWNvbnRleHQga2V5IGNvbnRhaW5pbmcgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlcidzIGVtYWlsIGFkZHJlc3MuICovXG5leHBvcnQgY29uc3QgTUFTVFJBX1VTRVJfRU1BSUxfS0VZID0gXCJtYXN0cmFfX3VzZXJFbWFpbFwiO1xuLyoqIFJlcXVlc3QtY29udGV4dCBrZXkgaWRlbnRpZnlpbmcgdGhlIERhdGFicmlja3MgY3JlZGVudGlhbCB1c2VkIGJ5IHRoZSB0dXJuLiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9BVVRIX01PREVfS0VZID0gXCJtYXN0cmFfX2F1dGhNb2RlXCI7XG5cbi8qKlxuICogYFJlcXVlc3RDb250ZXh0YCBrZXkgZm9yIHRoZSBwZXItSFRUUC1yZXF1ZXN0IGlkIHN0YW1wZWQgYnlcbiAqIHtAbGluayBNYXN0cmFTZXJ2ZXJ9LiBSZWFkcyBgWC1SZXF1ZXN0LUlkYCBmcm9tIHRoZSBpbmNvbWluZ1xuICogaGVhZGVycyB3aGVuIHByZXNlbnQgKHNvIGFuIHVwc3RyZWFtIGxvYWQgYmFsYW5jZXIgLyBBUEkgZ2F0ZXdheVxuICogY2FuIGtlZXAgaXRzIHRyYWNlIGNvcnJlbGF0aW9uKSwgZmFsbHMgYmFjayB0byBhIGZyZXNobHkgbWludGVkXG4gKiBVVUlELiBFY2hvZWQgYmFjayBvbiB0aGUgcmVzcG9uc2UgYW5kIHN1cmZhY2VkIG9uIGV2ZXJ5IHNwYW4gdmlhXG4gKiB7QGxpbmsgVFJBQ0VfUkVRVUVTVF9DT05URVhUX0tFWVN9IHNvIGxvZ3MgYW5kIHRyYWNlcyBzaGFyZSBhXG4gKiBqb2luIGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9SRVFVRVNUX0lEX0tFWSA9IFwibWFzdHJhX19yZXF1ZXN0SWRcIjtcblxuLyoqXG4gKiBgUmVxdWVzdENvbnRleHRgIGtleSBmb3IgT0F1dGggc2NvcGVzIHBhcnNlZCBmcm9tIHRoZSBmb3J3YXJkZWRcbiAqIGFjY2VzcyB0b2tlbiBieSB7QGxpbmsgTWFzdHJhU2VydmVyLmNvbmZpZ3VyZVJlcXVlc3RDb250ZXh0U2NvcGVzfS5cbiAqIFdvcmtzcGFjZSBtb3VudHMgdGhhdCB0b3VjaCBEYXRhYnJpY2tzIHdvcmtzcGFjZSBmaWxlcyByZXF1aXJlXG4gKiBgd29ya3NwYWNlYCBvciBgYWxsLWFwaXNgIGluIHRoaXMgbGlzdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9TQ09QRVNfS0VZID0gXCJtYXN0cmFfX3Njb3Blc1wiO1xuXG4vKipcbiAqIENhbm9uaWNhbCBsaXN0IG9mIGBSZXF1ZXN0Q29udGV4dGAga2V5cyB3ZSB3YW50IE1hc3RyYSB0byBleHRyYWN0XG4gKiBhcyBtZXRhZGF0YSBvbiBldmVyeSBvYnNlcnZhYmlsaXR5IHNwYW4gKGFnZW50IHJ1bnMsIG1vZGVsIGNhbGxzLFxuICogdG9vbCBpbnZvY2F0aW9ucywgd29ya2Zsb3cgc3RlcHMpLlxuICpcbiAqIE1pcnJvcnMge0BsaW5rIGh0dHBzOi8vbWFzdHJhLmFpL2RvY3Mvb2JzZXJ2YWJpbGl0eS90cmFjaW5nL292ZXJ2aWV3I2F1dG9tYXRpYy1tZXRhZGF0YS1mcm9tLXJlcXVlc3Rjb250ZXh0fTpcbiAqIHBhc3NlZCB2ZXJiYXRpbSBpbnRvIGBPYnNlcnZhYmlsaXR5LmNvbmZpZ3NbKl0ucmVxdWVzdENvbnRleHRLZXlzYCxcbiAqIHNvIGFueSBrZXkgbGlzdGVkIGhlcmUgaXMgcmVhZCBmcm9tIGBSZXF1ZXN0Q29udGV4dGAgYXQgdHJhY2VcbiAqIHN0YXJ0IGFuZCBhdHRhY2hlZCBhcyBzY2FsYXIgc3BhbiBtZXRhZGF0YS4gS2VlcCB0aGUgc2V0IHRvIHBsYWluXG4gKiBzY2FsYXJzIC0gbmV2ZXIgaW5jbHVkZSB7QGxpbmsgTUFTVFJBX1VTRVJfS0VZfSAoaXQgY2FycmllcyB0aGVcbiAqIGZ1bGwgQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IHdpdGggYSBgV29ya3NwYWNlQ2xpZW50YCByZWZlcmVuY2UpLlxuICpcbiAqIE9yZGVyIGlzIHB1cmVseSBjb3NtZXRpYzsgTWFzdHJhIGRlLWR1cGVzIGludGVybmFsbHkuXG4gKi9cbmV4cG9ydCBjb25zdCBUUkFDRV9SRVFVRVNUX0NPTlRFWFRfS0VZUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbXG4gIE1BU1RSQV9SRVNPVVJDRV9JRF9LRVksXG4gIE1BU1RSQV9USFJFQURfSURfS0VZLFxuICBNQVNUUkFfUkVRVUVTVF9JRF9LRVksXG4gIE1BU1RSQV9VU0VSX05BTUVfS0VZLFxuICBNQVNUUkFfVVNFUl9FTUFJTF9LRVksXG4gIE1BU1RSQV9BVVRIX01PREVfS0VZLFxuICAvLyBNb2RlbCBvdmVycmlkZSBrZXkgaXMgb3duZWQgYnkgYHNlcnZpbmcudHNgOyBzcGVsbGVkIGlubGluZSBoZXJlXG4gIC8vIHNvIHRoaXMgbW9kdWxlIHN0YXlzIGxlYWYtbGV2ZWwgKG5vIGN5Y2xlcyB3aXRoIGBzZXJ2aW5nLnRzYCkuXG4gIFwibWFzdHJhX19tb2RlbF9vdmVycmlkZVwiLFxuXTtcblxuLyoqIEFwcEtpdCBleGVjdXRpb24gY29udGV4dCBwbHVzIHRoZSBjYW5vbmljYWwgdXNlciBpZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XG4gIGlkOiBzdHJpbmc7XG4gIGV4ZWN1dGlvbkNvbnRleHQ6IGFwcGtpdC5FeGVjdXRpb25Db250ZXh0TGlrZTtcbn1cblxuLyoqXG4gKiBDYW5vbmljYWwgaWRlbnRpdHkgZm9yIGFuIEFwcEtpdCBleGVjdXRpb24gY29udGV4dDogdGhlIE9CTyB1c2VyIGlkIG9uIGFcbiAqIHVzZXItc2NvcGVkIGNhbGwsIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCBpZCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRpb25Db250ZXh0VXNlcklkKGNvbnRleHQ6IGFwcGtpdC5FeGVjdXRpb25Db250ZXh0TGlrZSk6IHN0cmluZyB7XG4gIHJldHVybiBcInVzZXJJZFwiIGluIGNvbnRleHQgPyBjb250ZXh0LnVzZXJJZCA6IGNvbnRleHQuc2VydmljZVVzZXJJZDtcbn1cblxuLyoqXG4gKiBXaG8gYSB0dXJuIGlzIEFUVFJJQlVURUQgdG8sIHdoaWNoIGlzIG5vdCBhbHdheXMgd2hvc2UgRGF0YWJyaWNrcyBjcmVkZW50aWFsXG4gKiBydW5zIGl0LiBBbiBPQk8gY29udGV4dCdzIG93biB1c2VyIGlkIGlzIGF1dGhvcml0YXRpdmUuIFVuZGVyIHRoZSBzZXJ2aWNlXG4gKiBwcmluY2lwYWwsIGV2ZXJ5IGNhbGxlciBzaGFyZXMgb25lIGNyZWRlbnRpYWwsIHNvIHRoZSBmb3J3YXJkZWQgdXNlciBpZCBpc1xuICogd2hhdCBrZWVwcyBtZW1vcnkgdGhyZWFkcyBhbmQgcGVyLXVzZXIgY2FjaGUgbmFtZXNwYWNlcyBkaXN0aW5jdDsgdGhlIHNlcnZpY2VcbiAqIHByaW5jaXBhbCBpZCBpcyB0aGUgZmxvb3Igd2hlbiBubyB1c2VyIHdhcyBmb3J3YXJkZWQuXG4gKlxuICogVGhpcyBydWxlIGhhcyB0byBiZSBpZGVudGljYWwgZXZlcnl3aGVyZSBhIGNhY2hlIGtleSBpcyBidWlsdCwgc28gYm90aCB0aGVcbiAqIHdyaXRlIHNpZGUgKHRoZSBgUmVxdWVzdENvbnRleHRgIHVzZXIgc3RhbXBlZCBieSBgc3RhbXBSZXF1ZXN0Q29udGV4dFVzZXJgKVxuICogYW5kIHRoZSByZWFkIHNpZGUgKHRoZSBwbHVnaW4ncyBvd24gQXBwS2l0IHJvdXRlcywgd2hpY2ggaGF2ZSBhIHJlcXVlc3QgYnV0XG4gKiBubyBgUmVxdWVzdENvbnRleHRgKSBkZXJpdmUgdGhlaXIga2V5IGZyb20gdGhpcyBvbmUgZnVuY3Rpb24uIFdoZW4gdGhlIHR3b1xuICogZGlzYWdyZWVkLCBhIGNoYXJ0IHdyaXR0ZW4gdW5kZXIgdGhlIGZvcndhcmRlZCB1c2VyIGlkIHdhcyByZWFkIGJhY2sgdW5kZXJcbiAqIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCBpZCBhbmQgdGhlIGVtYmVkIHJvdXRlIGFuc3dlcmVkIDQwNCwgd2hpY2ggdGhlIGNoYXQgVUlcbiAqIHJlbmRlcnMgYXMgYW4gZXhwaXJlZCBjaGFydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF0dHJpYnV0ZWRVc2VySWQoXG4gIGV4ZWN1dGlvbkNvbnRleHQ6IGFwcGtpdC5FeGVjdXRpb25Db250ZXh0TGlrZSxcbiAgZm9yd2FyZGVkVXNlcklkPzogc3RyaW5nLFxuKTogc3RyaW5nIHtcbiAgaWYgKFwiaXNVc2VyQ29udGV4dFwiIGluIGV4ZWN1dGlvbkNvbnRleHQpIHJldHVybiBleGVjdXRpb25Db250ZXh0VXNlcklkKGV4ZWN1dGlvbkNvbnRleHQpO1xuICByZXR1cm4gZm9yd2FyZGVkVXNlcklkID8/IGV4ZWN1dGlvbkNvbnRleHRVc2VySWQoZXhlY3V0aW9uQ29udGV4dCk7XG59XG5cbi8qKlxuICogSWRlbnRpdHkgZXZlcnkgcGVyLXVzZXIgY2FjaGUgZW50cnkgaXMgbmFtZXNwYWNlZCB1bmRlciwgc28gYW4gT0JPIHJlc3VsdFxuICogY2Fubm90IGJlIHJlYWQgYmFjayBieSBhbm90aGVyIGNhbGxlci5cbiAqXG4gKiBQcmVmZXJzIHRoZSB7QGxpbmsgVXNlcn0gdGhhdCB7QGxpbmsgTWFzdHJhU2VydmVyfSBzdGFtcHMgb24gdGhlIHJlcXVlc3RcbiAqIGNvbnRleHQsIHdob3NlIGlkIGFscmVhZHkgZm9sbG93cyB7QGxpbmsgYXR0cmlidXRlZFVzZXJJZH0uIFRoZSBNQ1AgdHJhbnNwb3J0XG4gKiByb3V0ZXMgZG8gbm90IHRocmVhZCB0aGF0IGNvbnRleHQgaW50byB0b29sIGV4ZWN1dGlvbiwgc28gdGhvc2UgZmFsbCBiYWNrIHRvXG4gKiB0aGUgYW1iaWVudCBleGVjdXRpb24gY29udGV4dCAodGhlIGFjdGl2ZSBPQk8gc2NvcGUsIG9yIHRoZSBzZXJ2aWNlXG4gKiBwcmluY2lwYWwpLiBBIGNhbGxlciBob2xkaW5nIGFuIGV4cHJlc3MgcmVxdWVzdCBzaG91bGQgYnVpbGQgaXRzIGtleSBmcm9tXG4gKiB7QGxpbmsgYXR0cmlidXRlZFVzZXJJZH0gaW5zdGVhZCwgc28gdGhlIGZvcndhcmRlZCB1c2VyIGlzIG5vdCBsb3N0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVVzZXJLZXkocmVxdWVzdENvbnRleHQ/OiBSZXF1ZXN0Q29udGV4dCk6IHN0cmluZyB7XG4gIGNvbnN0IHVzZXIgPSByZXF1ZXN0Q29udGV4dD8uZ2V0KE1BU1RSQV9VU0VSX0tFWSkgYXMgVXNlciB8IHVuZGVmaW5lZDtcbiAgcmV0dXJuIHVzZXI/LmlkID8/IGV4ZWN1dGlvbkNvbnRleHRVc2VySWQoZ2V0RXhlY3V0aW9uQ29udGV4dCgpKTtcbn1cblxuLyoqIFBnVmVjdG9yIGNvbmZpZyB3aXRoIGFuIG9wdGlvbmFsIE1hc3RyYSBzdG9yZSBpZC4gKi9cbmV4cG9ydCB0eXBlIE1hc3RyYU1lbW9yeUNvbmZpZyA9IFBnVmVjdG9yQ29uZmlnICYge1xuICBpZD86IHN0cmluZztcbn07XG5cbi8qKiBNYXN0cmEgbmF0aXZlIHdvcmtzcGFjZSBza2lsbC1zZWFyY2ggY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFzdHJhV29ya3NwYWNlU2tpbGxzQ29uZmlnIHtcbiAgLyoqIE1heGltdW0gc2tpbGwgbWF0Y2hlcyByZXR1cm5lZCBieSBvbmUgc2VhcmNoLiBEZWZhdWx0cyB0byA1LiAqL1xuICB0b3BLPzogbnVtYmVyO1xuICAvKiogTWluaW11bSBCTTI1IHJlbGV2YW5jZSBzY29yZS4gRGVmYXVsdHMgdG8gMC4xLiAqL1xuICBtaW5TY29yZT86IG51bWJlcjtcbiAgLyoqIExvYWRlZC1za2lsbCB0aHJlYWQtc3RhdGUgVFRMIGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdHMgdG8gb25lIGhvdXIuICovXG4gIHR0bE1zPzogbnVtYmVyO1xufVxuXG4vKiogTmF0aXZlIE1hc3RyYSBDb2RlIE1vZGUgZXhlY3V0aW9uIHRyYW5zcG9ydC4gKi9cbmV4cG9ydCB0eXBlIE1hc3RyYUNvZGVNb2RlVHJhbnNwb3J0ID0gXCJhdXRvXCIgfCBcImlzb2xhdGVkLXZtXCIgfCBcInF1aWNranNcIjtcblxuLyoqIE5hdGl2ZSBNYXN0cmEgQ29kZSBNb2RlIHNldHRpbmdzIGZvciBzYW5kYm94ZWQgbXVsdGktdG9vbCBvcmNoZXN0cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXN0cmFDb2RlTW9kZUNvbmZpZyB7XG4gIC8qKiBDb2RlIE1vZGUgZXhlY3V0aW9uIHRyYW5zcG9ydC4gKi9cbiAgdHJhbnNwb3J0OiBNYXN0cmFDb2RlTW9kZVRyYW5zcG9ydDtcbiAgLyoqIEdlbmVyYXRlZCBvcmNoZXN0cmF0aW9uIHRvb2wgaWQuIERlZmF1bHRzIHRvIGBleGVjdXRlX3R5cGVzY3JpcHRgLiAqL1xuICBpZD86IHN0cmluZztcbiAgLyoqIE1heGltdW0gb3JjaGVzdHJhdGlvbiBwcm9ncmFtIHJ1bnRpbWUgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0cyB0byAzMCBzZWNvbmRzLiAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEZpbmUtZ3JhaW5lZCBjb250cm9sIGZvciB0aGUgb3B0aW9uYWwgTUNQIHNlcnZlciBleHBvc3VyZVxuICogKHtAbGluayBNYXN0cmFQbHVnaW5Db25maWcubWNwfSkuIEV2ZXJ5IGZpZWxkIGlzIG9wdGlvbmFsOyB0aGUgb2JqZWN0XG4gKiBmb3JtIG9ubHkgbmVlZHMgdG8gc2V0IHdoYXQgZGlmZmVycyBmcm9tIHRoZSBkZWZhdWx0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXN0cmFNY3BDb25maWcge1xuICAvKipcbiAgICogU2VydmVyIGlkIHVzZWQgaW4gdGhlIHJvdXRlIHBhdGggKGAvbWNwLzxzZXJ2ZXJJZD4vLi4uYCkgYW5kIGFzIHRoZVxuICAgKiBNQ1AgcmVnaXN0cnkgaWQuIERlZmF1bHRzIHRvIHRoZSBwbHVnaW4ncyByZWdpc3RlcmVkIG5hbWUuXG4gICAqL1xuICBzZXJ2ZXJJZD86IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbmFtZSBhZHZlcnRpc2VkIG92ZXIgTUNQLiBEZWZhdWx0cyB0byBgXCI8ZGlzcGxheU5hbWU+IE1DUFwiYC4gKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqIFNlbWFudGljIHZlcnNpb24gYWR2ZXJ0aXNlZCBvdmVyIE1DUC4gRGVmYXVsdHMgdG8gYFwiMS4wLjBcImAuICovXG4gIHZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBodW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBhZHZlcnRpc2VkIG92ZXIgTUNQLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEV4cG9zZSBldmVyeSByZWdpc3RlcmVkIGFnZW50IGFzIGFuIGBhc2tfPGFnZW50SWQ+YCBNQ1AgdG9vbC5cbiAgICogRGVmYXVsdHMgdG8gYHRydWVgIC0gdGhpcyBpcyB0aGUgXCJsZXZlcmFnZSB0aGUgTWFzdHJhIGFnZW50cyBvdmVyXG4gICAqIE1DUFwiIGJlaGF2aW9yIG1vc3QgY2FsbGVycyB3YW50LlxuICAgKi9cbiAgYWdlbnRzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsc28gZXhwb3NlIHRoZSBwbHVnaW4ncyBhbWJpZW50IHRvb2xzICh0aGUgYnVpbHQtaW4gYHJlbmRlcl9kYXRhYFxuICAgKiBwbHVzIGFueXRoaW5nIGluIGBjb25maWcudG9vbHNgKSBhcyBNQ1AgdG9vbHMuIERlZmF1bHRzIHRvIGBmYWxzZWA6XG4gICAqIHRoZSBhbWJpZW50IHRvb2xzIGFzc3VtZSBhbiBpbi1wcm9jZXNzIGNoYXQgdHVybiAodGhleSBwdWJsaXNoXG4gICAqIHdyaXRlciBldmVudHMgdGhlIGNoYXQgVUkgY29uc3VtZXMpLCBzbyB0aGV5IGFyZW4ndCB1c2VmdWwgdG8gYVxuICAgKiBzdGFuZGFsb25lIE1DUCBjbGllbnQuIFR1cm4gdGhpcyBvbiBvbmx5IHdoZW4gdGhvc2UgdG9vbHMgYXJlIHNhZmVcbiAgICogdG8gY2FsbCBvdXQtb2YtYmFuZC5cbiAgICovXG4gIHRvb2xzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEV4dHJhIHRvb2xzIHRvIGV4cG9zZSBvdmVyIE1DUCBiZXlvbmQgdGhlIGFnZW50IC8gYW1iaWVudCBzZXRzLlxuICAgKiBVc2UgdGhpcyBmb3IgdG9vbHMgd3JpdHRlbiBzcGVjaWZpY2FsbHkgZm9yIE1DUCBjb25zdW1lcnMuXG4gICAqL1xuICBleHRyYVRvb2xzPzogTWFzdHJhVG9vbHM7XG59XG5cbi8qKiBPcHRpb25hbCBwb3N0LXR1cm4gZm9sbG93LXVwIHN1Z2dlc3Rpb24gcG9saWN5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb2xsb3dVcFN1Z2dlc3Rpb25zQ29uZmlnIHtcbiAgLyoqIE5hdGl2ZSBHZW5pZSBvbmx5LCBDaGF0RmFzdCBnZW5lcmF0ZWQgb25seSwgb3IgYXV0b21hdGljIHNlbGVjdGlvbiB3aGVuIHRydWUuICovXG4gIG1vZGU6IHRydWUgfCBcImdlbmVyYXRlZFwiIHwgXCJnZW5pZVwiO1xuICAvKiogTWF4aW11bSBxdWVzdGlvbnMgZW1pdHRlZCBmb3Igb25lIHR1cm4uIERlZmF1bHRzIHRvIDMsIG1heGltdW0gMTAuICovXG4gIGxpbWl0PzogbnVtYmVyO1xuICAvKiogVGFpbC1nZW5lcmF0aW9uIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiAqL1xuICB0aW1lb3V0TXM/OiBudW1iZXI7XG4gIC8qKiBBbHNvIGV4cG9zZSB0aGUgZ2VuZXJhdG9yIGFzIGFuIGV4cGxpY2l0bHkgY2FsbGFibGUgYWdlbnQgdG9vbC4gKi9cbiAgZXhwb3NlVG9vbD86IGJvb2xlYW47XG59XG5cbi8qKiBDb25maWd1cmF0aW9uIGFjY2VwdGVkIGJ5IHRoZSBNYXN0cmEgQXBwS2l0IHBsdWdpbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFzdHJhUGx1Z2luQ29uZmlnIGV4dGVuZHMgQmFzZVBsdWdpbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBSdW4gdHVybnMgdGhyb3VnaCBNYXN0cmEncyBldmVudGVkIGR1cmFibGUgYWdlbnQgc28gZXhlY3V0aW9uIGNvbnRpbnVlc1xuICAgKiBhZnRlciBhIGJyb3dzZXIgZGlzY29ubmVjdCBhbmQgY2FuIGJlIG9ic2VydmVkIGFnYWluIGJ5IHJ1biBpZC4gRGVmYXVsdHNcbiAgICogdG8gYHRydWVgLlxuICAgKi9cbiAgYmFja2dyb3VuZFR1cm5zPzogYm9vbGVhbjtcbiAgLyoqIEFJIFNESyBwcm92aWRlci1vcHRpb25zIG5hbWVzcGFjZS4gRGVmYXVsdHMgdG8gYFwib3BlbmFpXCJgOyBubyBlbnYgZmFsbGJhY2suICovXG4gIHByb3ZpZGVySWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQb3N0Z3Jlc1N0b3JlIGZvciBNYXN0cmEgdGhyZWFkcy9tZXNzYWdlcy4gYHRydWVgIGNhcHR1cmVzIHRoZVxuICAgKiBgbGFrZWJhc2VgIHBsdWdpbidzIGV4aXN0aW5nIHNlcnZpY2UtcHJpbmNpcGFsIHBvb2w7IGFuIG9iamVjdCBvcGVucyBhXG4gICAqIHNlcGFyYXRlbHkgY29uZmlndXJlZCBzdG9yZS5cbiAgICovXG4gIHN0b3JhZ2U/OiBib29sZWFuIHwgUG9zdGdyZXNTdG9yZUNvbmZpZztcbiAgLyoqXG4gICAqIFBnVmVjdG9yIHN0b3JlIGZvciBNYXN0cmEgbWVtb3J5IHJlY2FsbC4gYHRydWVgIGNhcHR1cmVzIHRoZVxuICAgKiBgbGFrZWJhc2VgIHBsdWdpbidzIGV4aXN0aW5nIHNlcnZpY2UtcHJpbmNpcGFsIHBvb2w7IGFuIG9iamVjdCBvcGVucyBhXG4gICAqIHNlcGFyYXRlbHkgY29uZmlndXJlZCBzdG9yZS5cbiAgICovXG4gIG1lbW9yeT86IGJvb2xlYW4gfCBNYXN0cmFNZW1vcnlDb25maWc7XG4gIC8qKlxuICAgKiBFeHBvc2UgZXhlY3V0YWJsZSB0b29scyBhdmFpbGFibGUgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdCB0aHJvdWdoIG5hdGl2ZVxuICAgKiBNYXN0cmEgQ29kZSBNb2RlLiBEZWZhdWx0cyB0byBgZmFsc2VgLiBgYXV0b2Agc2VsZWN0cyBhbiBpbnN0YWxsZWQsXG4gICAqIHJ1bnRpbWUtc3VwcG9ydGVkIG9wdGlvbmFsIHRyYW5zcG9ydCBkdXJpbmcgc3RhcnR1cCBhbmQgbGVhdmVzIENvZGUgTW9kZVxuICAgKiBkaXNhYmxlZCB3aGVuIG5vbmUgaXMgYXZhaWxhYmxlLiBFeHBsaWNpdCB0cmFuc3BvcnQgdmFsdWVzIGZhaWwgc3RhcnR1cFxuICAgKiB3aGVuIHRoZWlyIG9wdGlvbmFsIGRlcGVuZGVuY3kgb3IgcnVudGltZSBzdXBwb3J0IGlzIHVuYXZhaWxhYmxlLiBUaGVzZVxuICAgKiB0cmFuc3BvcnRzIGRvIG5vdCBleGVjdXRlIHRocm91Z2ggdGhlIHdvcmtzcGFjZSBjb21tYW5kIHNhbmRib3g7IFNTSCBpc1xuICAgKiB1c2VkIG9ubHkgd2hlbiBhbiBleHBvc2VkIFNTSC1iYWNrZWQgdG9vbCBpcyBjYWxsZWQuXG4gICAqL1xuICBjb2RlTW9kZT86IGZhbHNlIHwgTWFzdHJhQ29kZU1vZGVUcmFuc3BvcnQgfCBNYXN0cmFDb2RlTW9kZUNvbmZpZztcbiAgLyoqXG4gICAqIFNhbmRib3ggZm9yIGF1dG8tY3JlYXRlZCBhZ2VudCB3b3Jrc3BhY2VzLiBEZWZhdWx0cyB0byBNb250eS4gYGZhbHNlYFxuICAgKiBkaXNhYmxlcyBjb21tYW5kIGV4ZWN1dGlvbjsgYHRydWVgIG9yIGBcIm1vbnR5XCJgIHNlbGVjdHMgTW9udHk7IGFuIGV4cGxpY2l0XG4gICAqIE1hc3RyYSBzYW5kYm94IG9yIHJlc29sdmVyIHN1cHBsaWVzIGEgcmVtb3RlIHRyYW5zcG9ydC4gQW4gYWdlbnQgd2l0aCBhblxuICAgKiBleHBsaWNpdCBjdXN0b20gYHdvcmtzcGFjZWAga2VlcHMgdGhhdCB3b3Jrc3BhY2UgYW5kIGl0cyBzYW5kYm94LlxuICAgKi9cbiAgc2FuZGJveD86IGJvb2xlYW4gfCBcIm1vbnR5XCIgfCBXb3Jrc3BhY2VTYW5kYm94IHwgV29ya3NwYWNlU2FuZGJveFJlc29sdmVyO1xuICAvKiogQWRkIHVzZXItc2NvcGVkIGAvdG1wYCBvbmx5IHdoZW4gbm8gY29uZmlndXJlZCB3b3Jrc3BhY2UgcGF0aCBtb3VudHMgd3JpdGFibGUuICovXG4gIHdvcmtzcGFjZUZhbGxiYWNrVG9UbXA/OiBib29sZWFuO1xuICAvKiogTmF0aXZlIE1hc3RyYSB3b3Jrc3BhY2UgdG9vbCBhdmFpbGFiaWxpdHksIGFwcHJvdmFsLCBhbmQgaG9vayBjb25maWd1cmF0aW9uLiAqL1xuICB3b3Jrc3BhY2VUb29scz86IFdvcmtzcGFjZVRvb2xzQ29uZmlnO1xuICAvKipcbiAgICogVXNlIE1hc3RyYSdzIG5hdGl2ZSB3b3Jrc3BhY2Ugc2tpbGwgbWFuYWdlci4gRGVmYXVsdHMgdG8gdHJ1ZS4gUGFzcyBhblxuICAgKiBvYmplY3QgdG8gdHVuZSBvbi1kZW1hbmQgZGlzY292ZXJ5IGFuZCBsb2FkZWQtc2tpbGwgc3RhdGUuXG4gICAqL1xuICB3b3Jrc3BhY2VTa2lsbHM/OiBib29sZWFuIHwgTWFzdHJhV29ya3NwYWNlU2tpbGxzQ29uZmlnO1xuICAvKipcbiAgICogQ29kZS1kZWZpbmVkIGFnZW50cy4gQWNjZXB0cyB0aHJlZSBzaGFwZXMgZm9yIGNvbnZlbmllbmNlOlxuICAgKlxuICAgKiAtICoqUmVjb3JkKio6IGB7IGFuYWx5c3Q6IGRlZiwgaGVscGVyOiBkZWYgfWAgLSBrZXlzIGJlY29tZSB0aGVcbiAgICogICByZWdpc3RlcmVkIGlkcyBhbmQgdGhlIGZpcnN0IGtleSBpcyB0aGUgZGVmYXVsdC5cbiAgICogLSAqKlNpbmdsZSBkZWZpbml0aW9uKio6IGBkZWZgIC0gcmVnaXN0ZXJlZCB1bmRlclxuICAgKiAgIGBzbHVnaWZ5KGRlZi5uYW1lKWAgKG9yIGBcImRlZmF1bHRcImAgd2hlbiBgbmFtZWAgaXMgb21pdHRlZCkgYW5kXG4gICAqICAgYXV0b21hdGljYWxseSBtYXJrZWQgYXMgdGhlIGRlZmF1bHQgYWdlbnQuXG4gICAqIC0gKipBcnJheSoqOiBgW2RlZjEsIGRlZjJdYCAtIGVhY2ggcmVnaXN0ZXJlZCB1bmRlclxuICAgKiAgIGBzbHVnaWZ5KGRlZi5uYW1lKWAgKG9yIGBhZ2VudF8ke2l9YCB3aGVuIGBuYW1lYCBpcyBvbWl0dGVkKTtcbiAgICogICB0aGUgZmlyc3QgZW50cnkgaXMgdGhlIGRlZmF1bHQuXG4gICAqXG4gICAqIEVhY2ggZW50cnkgYmVjb21lcyBhIE1hc3RyYSBgQWdlbnRgIHJlYWNoYWJsZSBhdFxuICAgKiBgL2FwaS88cGx1Z2luPi9yb3V0ZS9jaGF0LzxpZD5gICh0aGUgY2hhdCByb3V0ZSBhbHNvIG1hdGNoZXNcbiAgICogYDphZ2VudElkYCkuIFdoZW4gYGFnZW50c2AgaXMgb21pdHRlZCBlbnRpcmVseSwgdGhlIHBsdWdpblxuICAgKiByZWdpc3RlcnMgYSBzaW5nbGUgYnVpbHQtaW4gYGRlZmF1bHRgIGFuYWx5c3Qgc28gdGhlIGJhcmVcbiAgICogYG1hc3RyYSgpYCBjYWxsIHN0aWxsIG1vdW50cyBhIHdvcmtpbmcgY2hhdCBlbmRwb2ludC5cbiAgICpcbiAgICogQGV4YW1wbGUgU2luZ2xlLWFnZW50IHNob3J0aGFuZFxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoe1xuICAgKiAgIGFnZW50czogY3JlYXRlQWdlbnQoeyBpbnN0cnVjdGlvbnM6IFwiLi4uXCIgfSksXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGUgQXJyYXlcbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHtcbiAgICogICBhZ2VudHM6IFtcbiAgICogICAgIGNyZWF0ZUFnZW50KHsgbmFtZTogXCJhbmFseXN0XCIsIGluc3RydWN0aW9uczogXCIuLi5cIiB9KSxcbiAgICogICAgIGNyZWF0ZUFnZW50KHsgbmFtZTogXCJoZWxwZXJcIiwgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiIH0pLFxuICAgKiAgIF0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGUgUmVjb3JkIChleHBsaWNpdCBpZHMpXG4gICAqIGBgYHRzXG4gICAqIG1hc3RyYSh7XG4gICAqICAgYWdlbnRzOiB7XG4gICAqICAgICBhbmFseXN0OiBjcmVhdGVBZ2VudCh7IGluc3RydWN0aW9uczogXCIuLi5cIiB9KSxcbiAgICogICAgIGhlbHBlcjogY3JlYXRlQWdlbnQoeyBpbnN0cnVjdGlvbnM6IFwiLi4uXCIgfSksXG4gICAqICAgfSxcbiAgICogICBkZWZhdWx0QWdlbnQ6IFwiYW5hbHlzdFwiLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhZ2VudHM/OlxuICAgIHwgUmVjb3JkPHN0cmluZywgQW55TWFzdHJhQWdlbnREZWZpbml0aW9uPlxuICAgIHwgQW55TWFzdHJhQWdlbnREZWZpbml0aW9uXG4gICAgfCBBbnlNYXN0cmFBZ2VudERlZmluaXRpb25bXTtcbiAgLyoqXG4gICAqIEFtYmllbnQgdG9vbHMgc3ByZWFkIGludG8gZXZlcnkgcmVnaXN0ZXJlZCBhZ2VudCdzIHRvb2xzIHJlY29yZDtcbiAgICogcGVyLWFnZW50IHRvb2xzIHdpbiBvbiBrZXkgY29sbGlzaW9uLiBVc2UgZm9yIGEgc21hbGwgc2hhcmVkXG4gICAqIGxpYnJhcnk7IGZvciBwZXItYWdlbnQgdG9vbHMgc2V0IGBhZ2VudHNbaWRdLnRvb2xzYCBpbnN0ZWFkLlxuICAgKi9cbiAgdG9vbHM/OiBNYXN0cmFUb29scztcbiAgLyoqXG4gICAqIENvZGUtZGVmaW5lZCBNYXN0cmEgd29ya2Zsb3dzIHJlZ2lzdGVyZWQgb24gdGhlIGhvc3RlZCBpbnN0YW5jZS5cbiAgICogRGVmZXJyZWQgc2libGluZyBwbHVnaW5zIG1heSBhbHNvIHJlZ2lzdGVyIHRocm91Z2ggdGhlIHBsdWdpbiBleHBvcnRcbiAgICogYmVmb3JlIHRoZSBpbnN0YW5jZSBpcyBidWlsdC5cbiAgICovXG4gIHdvcmtmbG93cz86IFJlY29yZDxzdHJpbmcsIEFueVdvcmtmbG93PjtcbiAgLyoqXG4gICAqIEFnZW50IGlkIHVzZWQgd2hlbiB0aGUgY2xpZW50IGRvZXNuJ3Qgc3BlY2lmeSBvbmUgKHRoZSBiYXJlLFxuICAgKiB1bi1zdWZmaXhlZCBoaXN0b3J5IC8gc3VnZ2VzdGlvbnMgcm91dGVzIHJlc29sdmUgdG8gaXQpLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgZmlyc3Qga2V5IGluIGBhZ2VudHNgIChvciBgXCJkZWZhdWx0XCJgIHdoZW5cbiAgICogYGFnZW50c2AgaXMgb21pdHRlZCkuIE11c3QgbWF0Y2ggYW4gaWQgaW4gYGFnZW50c2Agd2hlbiBib3RoIGFyZVxuICAgKiBzZXQ7IGEgbWlzbWF0Y2ggdGhyb3dzIGF0IHNldHVwIHdpdGggdGhlIGF2YWlsYWJsZSBjYW5kaWRhdGVzLlxuICAgKi9cbiAgZGVmYXVsdEFnZW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogUGx1Z2luLWxldmVsIGRlZmF1bHQgbW9kZWwgYXBwbGllZCB0byBldmVyeSBhZ2VudCB0aGF0IG9taXRzIGl0c1xuICAgKiBvd24gYG1vZGVsYC4gTWlycm9ycyBBcHBLaXQncyBgYWdlbnRzKHsgZGVmYXVsdE1vZGVsIH0pYC5cbiAgICpcbiAgICogLSBgc3RyaW5nYDogc2hvcnRoYW5kIGZvciBcInVzZSB0aGUgT0JPIGF1dG8tcmVzb2x2ZXIgYnV0IHN3YXAgdGhlXG4gICAqICAgYG1vZGVsSWRgXCIgKGUuZy4gYFwiZGF0YWJyaWNrcy1jbGF1ZGUtc29ubmV0LTQtNlwiYCkuXG4gICAqIC0gQW55IG90aGVyIE1hc3RyYSBgRHluYW1pY0FyZ3VtZW50PE1hc3RyYU1vZGVsQ29uZmlnPmA6IHBhc3NlZFxuICAgKiAgIHRocm91Z2ggdmVyYmF0aW0uIFVzZSB0aGlzIHdoZW4geW91IG5lZWQgZnVsbCBjb250cm9sIG92ZXIgYXV0aFxuICAgKiAgIG9yIGBwcm92aWRlcklkYC5cbiAgICpcbiAgICogUmVzb2x1dGlvbiBvcmRlciBwZXIgYWdlbnQ6IGBkZWYubW9kZWxgIOKGkiBgZGVmYXVsdE1vZGVsYCDihpJcbiAgICogYERBVEFCUklDS1NfU0VSVklOR19FTkRQT0lOVF9OQU1FYCDihpIgYnVpbHQtaW4gYC9zZXJ2aW5nLWVuZHBvaW50c2BcbiAgICogcmVzb2x2ZXIuXG4gICAqL1xuICBkZWZhdWx0TW9kZWw/OiBBZ2VudENvbmZpZ1tcIm1vZGVsXCJdIHwgc3RyaW5nO1xuICAvKipcbiAgICogRnV6enktbWF0Y2ggbG9vc2UgbW9kZWwgbmFtZXMgKGBcImNsYXVkZSBzb25uZXRcImApIGFnYWluc3QgdGhlIHdvcmtzcGFjZSdzXG4gICAqIE1vZGVsIFNlcnZpbmcgZW5kcG9pbnRzLiBEZWZhdWx0cyB0byBgdHJ1ZWA7IG5vIGVudiBmYWxsYmFjay5cbiAgICpcbiAgICogU2V0IGBmYWxzZWAgdG8gcmVxdWlyZSBleGFjdCBlbmRwb2ludCBuYW1lcyBldmVyeXdoZXJlLlxuICAgKi9cbiAgbW9kZWxGdXp6eU1hdGNoPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEZ1c2UuanMgc2NvcmUgdGhyZXNob2xkIGZvciB0aGUgZnV6enkgbWF0Y2hlciwgMCAoZXhhY3QpIHRvIDEgKGFueXRoaW5nKS5cbiAgICogRGVmYXVsdHMgdG8gYDAuNGA7IG5vIGVudiBmYWxsYmFjay5cbiAgICpcbiAgICogTG93ZXIgdmFsdWVzIHJlamVjdCBsb29zZSBtYXRjaGVzOyByYWlzZSBpdCBpZiB5b3UgaGF2ZSBhIHNwcmF3bGluZ1xuICAgKiBlbmRwb2ludCBjYXRhbG9ndWUgd2l0aCBzaW1pbGFyLWxvb2tpbmcgbmFtZXMuXG4gICAqL1xuICBtb2RlbEZ1enp5VGhyZXNob2xkPzogbnVtYmVyO1xuICAvKipcbiAgICogVFRMIGZvciB0aGUgaW4tbWVtb3J5IHNlcnZpbmctZW5kcG9pbnRzIGxpc3QgY2FjaGUsIGluIG1pbGxpc2Vjb25kcy5cbiAgICogRGVmYXVsdHMgdG8gNSBtaW51dGVzOyBubyBlbnYgZmFsbGJhY2suXG4gICAqXG4gICAqIFRoZSBjYWNoZSBpcyBwZXIgd29ya3NwYWNlIGhvc3QgYW5kIHNoYXJlZCBhY3Jvc3MgdXNlcnM7IGNvbmN1cnJlbnRcbiAgICogY2FsbGVycyBjb2FsZXNjZSBvbiBhIHNpbmdsZSBpbi1mbGlnaHQgZmV0Y2guXG4gICAqL1xuICBtb2RlbENhY2hlVHRsTXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBMZXQgY2xpZW50cyBwaWNrIHRoZSBiYWNraW5nIGVuZHBvaW50IHBlciByZXF1ZXN0LiBEZWZhdWx0cyB0byBgdHJ1ZWA7XG4gICAqIG5vIGVudiBmYWxsYmFjay5cbiAgICpcbiAgICogUmVhZHMgdGhlIGBYLU1hc3RyYS1Nb2RlbGAgaGVhZGVyLCB0aGUgYD9tb2RlbD1gIHF1ZXJ5IHN0cmluZywgb3IgYVxuICAgKiBgbW9kZWxgIGJvZHkgZmllbGQsIGluIHRoYXQgb3JkZXIuIERpc2FibGUgd2hlbiBydW5uaW5nIG11bHRpLXRlbmFudFxuICAgKiB3aGVyZSB1bnRydXN0ZWQgY2xpZW50cyBzaG91bGRuJ3QgY2hvb3NlIHRoZSBlbmRwb2ludC5cbiAgICovXG4gIG1vZGVsT3ZlcnJpZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogUHJpb3JpdHktb3JkZXJlZCBsaXN0IG9mIGVuZHBvaW50IG5hbWVzIHRyaWVkICpmaXJzdCogd2hlbiBub1xuICAgKiBhZ2VudCAvIHBsdWdpbiAvIGVudiAvIHJlcXVlc3Qtb3ZlcnJpZGUgbW9kZWwgaWQgaXMgc2V0LCBhaGVhZCBvZlxuICAgKiB0aGUgZHluYW1pYyBzY29yZS1jbGFzc2lmaWVkIGNhdGFsb2d1ZS4gVGhlIHJlc29sdmVyIHBpY2tzIHRoZVxuICAgKiBmaXJzdCBpZCB0aGF0IGlzIGFjdHVhbGx5IHByZXNlbnQgaW4gdGhlIHdvcmtzcGFjZSdzXG4gICAqIGAvc2VydmluZy1lbmRwb2ludHNgIGxpc3RpbmcuXG4gICAqXG4gICAqIFdoZW4gdW5zZXQsIHJlc29sdXRpb24gaXMgZHJpdmVuIGJ5IHRoZSBsaXZlIEZvdW5kYXRpb24gTW9kZWwgQVBJXG4gICAqIGBxdWFsaXR5YCAvIGBzcGVlZGAgLyBgY29zdGAgc2NvcmVzOiBlbmRwb2ludHMgYXJlIGNsYXNzaWZpZWQgaW50b1xuICAgKiBjaGF0IGNsYXNzZXMgKGBjbGFzc2lmeUVuZHBvaW50c2ApIGFuZCB3YWxrZWQgYmVzdC1maXJzdFxuICAgKiAoQ2hhdFRoaW5raW5nIC0+IENoYXRCYWxhbmNlZCAtPiBDaGF0RmFzdCkuIFRoZSBhdXRvbWF0aWMgZGVmYXVsdCBpc1xuICAgKiBsaXZlLW9ubHkgYW5kIGZhaWxzIHdoZW4gbm8gbWF0Y2hpbmcgZW5kcG9pbnQgaXMgY3VycmVudGx5IGF2YWlsYWJsZS5cbiAgICogU2V0IHRoaXMgdG8gcGluIGEgcmVndWxhdGVkIHdvcmtzcGFjZSB0byBhbiBhcHByb3ZlZCBzdWJzZXQsIG9yIHRvIHB1dFxuICAgKiBjdXN0b20gZW5kcG9pbnRzIGluIGZyb250IG9mIHRoZSBhdXRvLWNsYXNzaWZpZWQgY2F0YWxvZ3VlLlxuICAgKi9cbiAgZGVmYXVsdE1vZGVsRmFsbGJhY2tzPzogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCAoZGVmYXVsdCksIGV2ZXJ5IGFnZW50IGdldHMgYSBidWlsdC1pbiBpbnB1dFxuICAgKiBwcm9jZXNzb3IgdGhhdCBzdHJpcHMgYGNoYXJ0SWRgIGZpZWxkcyBmcm9tIHByaW9yIGFzc2lzdGFudFxuICAgKiB0b29sLWludm9jYXRpb24gcmVzdWx0cyBiZWZvcmUgdGhleSByZWFjaCB0aGUgbW9kZWwuIFRoaXNcbiAgICogcHJldmVudHMgdGhlIG1vZGVsIGZyb20gcmV1c2luZyB0dXJuLXNjb3BlZCBjaGFydElkcyBpdCBzZWVzXG4gICAqIGluIG1lbW9yeSByZWNhbGwgKHdoaWNoIHdvdWxkIGxlYXZlIGBbY2hhcnQ6PGlkPl1gIG1hcmtlcnNcbiAgICogcG9pbnRpbmcgYXQgd3JpdGVyIGV2ZW50cyB0aGF0IG5vIGxvbmdlciBleGlzdCkuXG4gICAqXG4gICAqIFNldCB0byBgZmFsc2VgIHRvIG9wdCBvdXQgLSB1c2VmdWwgaWYgYSBub24tZGVmYXVsdCBhZ2VudFxuICAgKiBuZWVkcyBmdWxsIHZpc2liaWxpdHkgaW50byBwcmlvciBjaGFydElkcyAoZS5nLiBhbiBhdWRpdFxuICAgKiBhZ2VudCByZWFzb25pbmcgYWJvdXQgY2hhcnQgbGluZWFnZSkuXG4gICAqL1xuICBzdHJpcFN0YWxlQ2hhcnRzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFN0eWxlIGd1YXJkcmFpbHMgYXBwZW5kZWQgdG8gZXZlcnkgYWdlbnQncyBgaW5zdHJ1Y3Rpb25zYCB0byBjdXJiXG4gICAqIGNvbW1vbiBMTE0taXNtcyAoZW0gZGFzaGVzLCBlbW9qaXMsIHN5Y29waGFudGljIG9wZW5lcnMsIHRocm93YXdheVxuICAgKiBjbG9zZXJzLCBleGNlc3NpdmUgaGVkZ2luZykuXG4gICAqXG4gICAqIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQpOiB1c2UgdGhlIGJ1aWx0LWluXG4gICAqICAgYERFRkFVTFRfU1RZTEVfSU5TVFJVQ1RJT05TYCBmcm9tIGBhZ2VudHMudHNgLlxuICAgKiAtIGBzdHJpbmdgOiByZXBsYWNlIHRoZSBkZWZhdWx0IHdpdGggdGhlIHN1cHBsaWVkIGJsb2NrLlxuICAgKiAtIGBmYWxzZWA6IGRpc2FibGUgZW50aXJlbHkgKGFnZW50cyBzZWUgb25seSB0aGVpciBiZXNwb2tlXG4gICAqICAgYGluc3RydWN0aW9uc2ApLlxuICAgKlxuICAgKiBBcHBlbmRlZCAobm90IHByZXBlbmRlZCkgc28gdGhlIGFnZW50J3Mgcm9sZSBhbmQgcnVsZXMgY29tZSBmaXJzdFxuICAgKiBhbmQgdGhlIHN0eWxlIGJsb2NrIGxlYW5zIG9uIHRoZSBtb2RlbCdzIHJlY2VuY3kgYmlhcy5cbiAgICovXG4gIHN0eWxlSW5zdHJ1Y3Rpb25zPzogc3RyaW5nIHwgZmFsc2U7XG4gIC8qKlxuICAgKiBHZW5pZSBzcGFjZXMgdGhpcyBwbHVnaW4ncyBhZ2VudHMgY2FuIGRlbGVnYXRlIHRvLiBPbmUgTWFzdHJhXG4gICAqIHRvb2wgaXMgcmVnaXN0ZXJlZCBwZXIgYWxpYXMgKGBnZW5pZWAgZm9yIHRoZSB3ZWxsLWtub3duXG4gICAqIGBkZWZhdWx0YCBhbGlhcywgYGdlbmllXzxhbGlhcz5gIG90aGVyd2lzZSkuIEVhY2ggdG9vbCBzcGluc1xuICAgKiB1cCBhIHBlci1xdWVzdGlvbiBHZW5pZSBzdWItYWdlbnQgdGhhdCBydW5zIERhdGFicmlja3NcbiAgICogXCJhZ2VudCBtb2RlXCIgYWdhaW5zdCB0aGUgc3BhY2UsIGJyb2FkY2FzdHMgd2lyZSBldmVudHMgdG8gdGhlXG4gICAqIFVJLCBmZXRjaGVzIHN0YXRlbWVudCByb3dzIGZvciBub24tZW1wdHkgcmVzdWx0cywgYW5kIHJldHVybnNcbiAgICogYSBgKHN0cmluZyB8IGRhdGEgfCBjaGFydClbXWAgc3VtbWFyeSB0aGUgaG9zdCBVSSByZW5kZXJzXG4gICAqIGlubGluZS5cbiAgICpcbiAgICogRW50cmllcyBhY2NlcHQgZWl0aGVyIGEgZnVsbCB7QGxpbmsgR2VuaWVTcGFjZUNvbmZpZ30gb2JqZWN0XG4gICAqIG9yIGEgYmFyZSBgc3BhY2VfaWRgIHN0cmluZyB3aGVuIG5vIGV4dHJhcyBhcmUgbmVlZGVkOlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoe1xuICAgKiAgIGdlbmllU3BhY2VzOiB7XG4gICAqICAgICBkZWZhdWx0OiBcIjAxZWYwZDNjMGUxYjFmNGE4ZDJjM2U0ZjVhNmI3YzhkXCIsXG4gICAqICAgICBmb3JlY2FzdHM6IHsgc3BhY2VJZDogXCIwMWVmLi4uXCIsIGhpbnQ6IFwid2Vla2x5IGRlbWFuZCBmb3JlY2FzdHNcIiB9LFxuICAgKiAgIH0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogUmVhY2ggdGhlIHNwYWNlcyBmcm9tIGFuIGFnZW50J3MgYHRvb2xzKHBsdWdpbnMpYCBjYWxsYmFjayB2aWFcbiAgICogYHBsdWdpbnMuZ2VuaWU/LnRvb2xraXQoKWA7IHRoZSByZXN1bHRpbmcgdG9vbHMgYWNjZXB0XG4gICAqIGB7IGNvbnRlbnQsIGNvbnZlcnNhdGlvbklkPyB9YCBhbmQgcmV0dXJuIGEgaHlkcmF0ZWQgc3VtbWFyeS5cbiAgICpcbiAgICogKipGYWxsYmFjayBkaXNjb3ZlcnkqKiAoaGlnaGVzdCBwcmVjZWRlbmNlIGZpcnN0KTogaWYgdGhpc1xuICAgKiBmaWVsZCBpcyBvbWl0dGVkLCB0aGUgR2VuaWUgYWdlbnQgYWxzbyBwaWNrcyB1cCBzcGFjZXMgZnJvbVxuICAgKiAoMSkgdGhlIEFwcEtpdCBgZ2VuaWUoeyBzcGFjZXM6IHsgLi4uIH0gfSlgIHBsdWdpbiBpbnN0YW5jZVxuICAgKiB3aGVuIHJlZ2lzdGVyZWQsIGFuZCAoMikgdGhlIGBEQVRBQlJJQ0tTX0dFTklFX1NQQUNFX0lEYFxuICAgKiBlbnYgdmFyIChyZWdpc3RlcmVkIHVuZGVyIHRoZSBgZGVmYXVsdGAgYWxpYXMpLiBUaGlzIGtlZXBzXG4gICAqIGV4aXN0aW5nIEFwcEtpdCBkZXBsb3ltZW50cyB3b3JraW5nIHdpdGhvdXQgcmVzdGF0aW5nIHRoZVxuICAgKiBzcGFjZXMgY29uZmlnIGluIHR3byBwbGFjZXMuXG4gICAqL1xuICBnZW5pZVNwYWNlcz86IEdlbmllU3BhY2VzQ29uZmlnO1xuICAvKipcbiAgICogVXNlIHRoZSBzdHJlYW1pbmcgR2VuaWUgQWdlbnQgTW9kZSBBUEkgZm9yIGBhc2tfZ2VuaWVgLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqIFNldCBgZmFsc2VgIHRvIGZvcmNlIHRoZSBsZWdhY3kgQ29udmVyc2F0aW9uIEFQSSBwb2xsaW5nIGRyaXZlci4gQVxuICAgKiBwcmUtc3RyZWFtIGZlYXR1cmUtZGlzYWJsZWQgb3IgcHJldmlldy10b2dnbGUgcmVzcG9uc2UgZmFsbHMgYmFja1xuICAgKiBhdXRvbWF0aWNhbGx5LiBEaXJlY3QgR2VuaWUgY2hhdCBhbHdheXMgcmVxdWlyZXMgQWdlbnQgTW9kZSBhbmQgaWdub3Jlc1xuICAgKiB0aGlzIG9wdGlvbi5cbiAgICovXG4gIGdlbmllQWdlbnRNb2RlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRUTCBmb3IgdGhlIGluLW1lbW9yeSBHZW5pZSBzcGFjZSBtZXRhZGF0YSBjYWNoZSwgaW5cbiAgICogbWlsbGlzZWNvbmRzLiBEZWZhdWx0cyB0byA1IG1pbnV0ZXMuIFRoZSBHZW5pZSBhZ2VudCBjYWxsc1xuICAgKiBgY2xpZW50LmdlbmllLmdldFNwYWNlKC4uLilgIG9uIGV2ZXJ5IGNvbGQtc3RhcnQgdG8gZ2V0IHRoZVxuICAgKiB0aXRsZSAvIGRlc2NyaXB0aW9uIC8gd2FyZWhvdXNlIGlkOyBjYWNoZWQgcmVzcG9uc2VzIHNraXAgdGhlXG4gICAqIHJvdW5kLXRyaXAgYW5kIGNvbmN1cnJlbnQgY2FsbGVycyBjb2FsZXNjZSBvbiBhIHNpbmdsZVxuICAgKiBpbi1mbGlnaHQgZmV0Y2guIERyb3AgdG8gYSBzbWFsbGVyIHZhbHVlIHdoZW4gYW5hbHlzdHMgYXJlXG4gICAqIGFjdGl2ZWx5IGVkaXRpbmcgc3BhY2UgbWV0YWRhdGEgYW5kIHlvdSB3YW50IGNoYW5nZXMgdmlzaWJsZVxuICAgKiB3aXRoaW4gc2Vjb25kczsgcmFpc2UgaXQgdG8gYW1vcnRpc2UgdGhlIHJvdW5kLXRyaXAgd2hlblxuICAgKiBzcGFjZSBtZXRhZGF0YSBpcyBlZmZlY3RpdmVseSBmcm96ZW4uXG4gICAqXG4gICAqIEJhY2tlZCBieSBBcHBLaXQncyBgQ2FjaGVNYW5hZ2VyYCwgc28gdGhlIGNhY2hlIHBhcnRpY2lwYXRlc1xuICAgKiBpbiB0ZWxlbWV0cnkgc3BhbnMgKGBjYWNoZS5nZXRPckV4ZWN1dGVgKSBhbmQgYmVuZWZpdHMgZnJvbVxuICAgKiBMYWtlYmFzZSBwZXJzaXN0ZW5jZSB3aGVuIHRoZSBgbGFrZWJhc2VgIHBsdWdpbiBpcyB3aXJlZCB1cC5cbiAgICovXG4gIGdlbmllU3BhY2VDYWNoZVR0bE1zPzogbnVtYmVyO1xuICAvKipcbiAgICogTWF4aW11bSBMTE0gc3RlcHMgZWFjaCBhZ2VudCBnZXRzIHBlciB0dXJuLiBPbmUgc3RlcCA9IG9uZVxuICAgKiByb3VuZC10cmlwIHRvIHRoZSB1bmRlcmx5aW5nIG1vZGVsIChhIHRvb2wgY2FsbCBjb25zdW1lcyBhXG4gICAqIHN0ZXAsIHRoZSBmaW5hbC10ZXh0IHJlcGx5IGNvbnN1bWVzIG9uZSB0b28pLiBBcHBsaWVzIHRvXG4gICAqIGV2ZXJ5IGFnZW50IHJlZ2lzdGVyZWQgdGhyb3VnaCB7QGxpbmsgTWFzdHJhUGx1Z2luQ29uZmlnLmFnZW50c31cbiAgICogLSBwZXItYWdlbnQgb3ZlcnJpZGVzIGFyZW4ndCBzdXJmYWNlZCB5ZXQgYmVjYXVzZSB0aGUgc2FtZVxuICAgKiBjZWlsaW5nIGhhcyBiZWVuIHN1ZmZpY2llbnQgYWNyb3NzIGV2ZXJ5IHdvcmtsb2FkIHdlJ3ZlIHJ1bi5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfQUdFTlRfTUFYX1NURVBTfSAoMjUpLCBzaXplZCB0byBmaXRcbiAgICogYSBkZWNvbXBvc2VkIEdlbmllIHR1cm4gKGdyb3VuZGluZyArIHNldmVyYWwgYGFza19nZW5pZWAgY2FsbHNcbiAgICogKyBgcHJlcGFyZV9jaGFydGAgcGVyIGRhdGFzZXQgKyB0aGUgZmluYWwtdGV4dCByZXBseSkgd2l0aFxuICAgKiBoZWFkcm9vbSBmb3IgdGhlIG1vZGVsIHRvIGNoYWluIGEgY291cGxlIG9mIGZvbGxvdy11cHMgYmVmb3JlXG4gICAqIGFuc3dlcmluZy4gTWFzdHJhJ3Mgb3duIGBhZ2VudC5nZW5lcmF0ZWAgZGVmYXVsdCBvZiA1IHdvdWxkXG4gICAqIGN1dCBtdWx0aS1zdGVwIG9yY2hlc3RyYXRpb24gb2ZmIGFmdGVyIDItMyB0b29sIGNhbGxzLCBzb1xuICAgKiBleHBsaWNpdGx5IHJhaXNpbmcgdGhlIGNlaWxpbmcgaGVyZSBpcyB3aGF0IGxldHMgdGhlXG4gICAqIGFnZW50LW1vZGUgbG9vcCBwbGF5IG91dC5cbiAgICpcbiAgICogTG93ZXIgd2hlbiBhbiB1bnVzdWFsbHkgc2xvdyBvciBleHBlbnNpdmUgbW9kZWwgbWFrZXMgbG9uZ1xuICAgKiB0dXJucyB1bmFmZm9yZGFibGU7IHJhaXNlIGZvciBleHBsb3JhdG9yeSB3b3JrbG9hZHMgdGhhdCBuZWVkXG4gICAqIHRvIGRyaWxsIGRlZXAgaW50byBhIGRhdGFzZXQgd2l0aGluIGEgc2luZ2xlIHR1cm4uXG4gICAqL1xuICBhZ2VudE1heFN0ZXBzPzogbnVtYmVyO1xuICAvKipcbiAgICogT3B0aW9uYWwgcG9zdC10dXJuIGZvbGxvdy11cCBxdWVzdGlvbnMuIGB0cnVlYCBzZWxlY3RzIHNvdXJjZXNcbiAgICogYXV0b21hdGljYWxseTsgYFwiZ2VuZXJhdGVkXCJgIG9yIGBcImdlbmllXCJgIHBpbnMgb25lIHNvdXJjZTsgYGZhbHNlYCBvclxuICAgKiBvbWlzc2lvbiBkaXNhYmxlcyBmb2xsb3ctdXBzLlxuICAgKi9cbiAgZm9sbG93VXBTdWdnZXN0aW9ucz86IGZhbHNlIHwgdHJ1ZSB8IFwiZ2VuZXJhdGVkXCIgfCBcImdlbmllXCIgfCBGb2xsb3dVcFN1Z2dlc3Rpb25zQ29uZmlnO1xuICAvKipcbiAgICogV2lyZSBNYXN0cmEgc3BhbnMgaW50byBBcHBLaXQncyBnbG9iYWwgT1RlbCBwaXBlbGluZSB2aWFcbiAgICogYEBtYXN0cmEvb3RlbC1icmlkZ2VgLlxuICAgKlxuICAgKiAtIGB1bmRlZmluZWRgIChkZWZhdWx0LCBhdXRvKTogb24gb25seSB3aGVuXG4gICAqICAgYE9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVGAgb3JcbiAgICogICBgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19FTkRQT0lOVGAgaXMgc2V0LiBXaGVuIHVuc2V0LCB0aGVcbiAgICogICBicmlkZ2UgaXMgc2tpcHBlZCBzbyBNYXN0cmEgZG9lcyBub3QgbG9nXG4gICAqICAgYFtPdGVsQnJpZGdlXSBObyBPVEVMIHNwYW4gZm91bmRgIG9uIHRoZSBub29wIHRyYWNlci5cbiAgICogLSBgdHJ1ZWA6IGZvcmNlIG9uIGV2ZW4gd2l0aG91dCBhbiBPVExQIGVuZHBvaW50LlxuICAgKiAtIGBmYWxzZWA6IGZvcmNlIG9mZi5cbiAgICovXG4gIG9ic2VydmFiaWxpdHk/OiBib29sZWFuO1xuICAvKipcbiAgICogRmVlZGJhY2sgZGVzdGluYXRpb24uIGBhdXRvYCBwcmVmZXJzIEdlbmllIHdoZW4gR2VuaWUgQWdlbnQgTW9kZSBpc1xuICAgKiBhdmFpbGFibGUsIG90aGVyd2lzZSBNTGZsb3cgd2hlbiB0cmFjaW5nIGlzIGNvbmZpZ3VyZWQsIG90aGVyd2lzZSBub25lLlxuICAgKiBFeHBsaWNpdCBgZ2VuaWVgIG9yIGBtbGZsb3dgIGZhaWxzIHN0YXJ0dXAgd2hlbiB1bmF2YWlsYWJsZS5cbiAgICovXG4gIGZlZWRiYWNrTW9kZT86IEZlZWRiYWNrTW9kZU9wdGlvbjtcbiAgLyoqXG4gICAqIEV4cG9zZSB0aGUgcGx1Z2luJ3MgYWdlbnRzIChhbmQgb3B0aW9uYWxseSB0b29scykgYXMgYSBNYXN0cmEgTUNQXG4gICAqIHNlcnZlciBzbyBleHRlcm5hbCBNQ1AgY2xpZW50cyAtIENsYXVkZSBEZXNrdG9wLCBDdXJzb3IsIHRoZSBNYXN0cmFcbiAgICogcGxheWdyb3VuZCwgb3IgYW5vdGhlciBhZ2VudCAtIGNhbiBjYWxsIHRoZW0gb3ZlciB0aGUgc3RhbmRhcmQgTUNQXG4gICAqIHRyYW5zcG9ydHMuIEVuYWJsZWQgYnkgZGVmYXVsdCAoYWdlbnRzIG9ubHkpOiB3cmFwcGluZyB0aGVcbiAgICogYWxyZWFkeS1yZWdpc3RlcmVkIGFnZW50cyBjb3N0cyBub3RoaW5nIGV4dHJhLCBzbyB0aGUgZW5kcG9pbnQgaXMgb25cbiAgICogb3V0IG9mIHRoZSBib3g7IG9ubHkgdGhlIGFtYmllbnQgdG9vbHMgKHdoaWNoIGFzc3VtZSBhbiBpbi1wcm9jZXNzXG4gICAqIGNoYXQgdHVybikgc3RheSBvZmYgdW5sZXNzIGV4cGxpY2l0bHkgb3B0ZWQgaW4uXG4gICAqXG4gICAqIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQpIC8gYHRydWVgOiBleHBvc2UgZXZlcnkgcmVnaXN0ZXJlZCBhZ2VudCBhc1xuICAgKiAgIGFuIGBhc2tfPGFnZW50SWQ+YCBNQ1AgdG9vbCB1bmRlciBhIHNlcnZlciB3aG9zZSBpZCBpcyB0aGUgcGx1Z2luXG4gICAqICAgbmFtZS5cbiAgICogLSBgZmFsc2VgOiBubyBNQ1AgZW5kcG9pbnRzLlxuICAgKiAtIHtAbGluayBNYXN0cmFNY3BDb25maWd9OiBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyIHRoZSBzZXJ2ZXIgaWQsXG4gICAqICAgYWR2ZXJ0aXNlZCBtZXRhZGF0YSwgYW5kIHdoaWNoIGFnZW50cyAvIHRvb2xzIGFyZSBleHBvc2VkLlxuICAgKlxuICAgKiBXaGVuIGVuYWJsZWQsIHRoZSBzdG9jayBNYXN0cmEgTUNQIHJvdXRlcyBtb3VudCB1bmRlciB0aGUgcGx1Z2luJ3NcbiAgICogYmFzZSBwYXRoIChubyBiZXNwb2tlIHJvdXRlIGlzIGFkZGVkIC0gdGhlIHNlcnZlciBpcyBoYW5kZWQgdG8gdGhlXG4gICAqIGBNYXN0cmFgIGluc3RhbmNlIHZpYSBgbWNwU2VydmVyc2AsIHdoaWNoIGBAbWFzdHJhL2V4cHJlc3NgIHNlcnZlcyk6XG4gICAqXG4gICAqIC0gU3RyZWFtYWJsZSBIVFRQOiBgUE9TVCAvYXBpLzxwbHVnaW4+L21jcC88c2VydmVySWQ+L21jcGBcbiAgICogLSBTU0UgKGxlZ2FjeSk6ICAgIGBHRVQgIC9hcGkvPHBsdWdpbj4vbWNwLzxzZXJ2ZXJJZD4vc3NlYFxuICAgKiAgICAgICAgICAgICAgICAgICAgYFBPU1QgL2FwaS88cGx1Z2luPi9tY3AvPHNlcnZlcklkPi9tZXNzYWdlc2BcbiAgICpcbiAgICogUmVxdWVzdHMgcnVuIHVuZGVyIHRoZSBzYW1lIEFwcEtpdCBPQk8gc2NvcGUgYXMgdGhlIGNoYXQgcm91dGVzLCBzb1xuICAgKiBhbiBhZ2VudCBpbnZva2VkIG92ZXIgTUNQIHJlc29sdmVzIGl0cyBtb2RlbCBhbmQgdG9vbHMgYXMgdGhlXG4gICAqIGNhbGxpbmcgdXNlci5cbiAgICovXG4gIG1jcD86IGJvb2xlYW4gfCBNYXN0cmFNY3BDb25maWc7XG4gIC8qKlxuICAgKiBIb3cgbXVjaCBvZiB0aGUgc3RvY2sgYEBtYXN0cmEvZXhwcmVzc2AgbWFuYWdlbWVudCBBUEkgaXMgcmVhY2hhYmxlXG4gICAqIHRocm91Z2ggdGhlIHBsdWdpbiBtb3VudC4gYEBtYXN0cmEvZXhwcmVzc2AgcmVnaXN0ZXJzIGl0cyBmdWxsIHJvdXRlXG4gICAqIHRhYmxlIChhZ2VudCBpbmZlcmVuY2UgcGx1cyBhZG1pbiAvIG11dGF0aW5nIHJvdXRlczogZGlyZWN0IHRvb2xcbiAgICogZXhlY3V0aW9uLCB3b3JrZmxvdyBjb250cm9sLCByYXcgbWVtb3J5IHJlYWQvd3JpdGUsIHRlbGVtZXRyeSwgbG9ncyxcbiAgICogc2NvcmVzKS4gQXBwS2l0IGFscmVhZHkgYXV0aGVudGljYXRlcyBldmVyeSByZXF1ZXN0IGFzIHRoZSBPQk8gdXNlcixcbiAgICogYnV0IG5vdGhpbmcgdGhlcmUgcmVzdHJpY3RzICp3aGljaCogb2YgdGhvc2Ugb3BlcmF0aW9ucyB0aGUgYnJvd3NlclxuICAgKiBjbGllbnQgbWF5IGludm9rZS5cbiAgICpcbiAgICogLSBgXCJzY29wZWRcImAgKGRlZmF1bHQpOiBvbmx5IHRoZSByb3V0ZXMgdGhlIGNoYXQgY2xpZW50IGxlZ2l0aW1hdGVseVxuICAgKiAgIG5lZWRzIGFyZSBkaXNwYXRjaGVkIHRvIE1hc3RyYSAtIGFnZW50IGluZmVyZW5jZVxuICAgKiAgIChgc3RyZWFtYCAvIGBnZW5lcmF0ZWAgLyBgbmV0d29ya2ApLCByZWFkLW9ubHkgYWdlbnQgbWV0YWRhdGEsIHRoaXNcbiAgICogICBwbHVnaW4ncyBvd24gT0JPLSBhbmQgcmVzb3VyY2Utc2NvcGVkIGAvcm91dGUvKmAgcm91dGVzIChoaXN0b3J5IC9cbiAgICogICB0aHJlYWRzKSwgYW5kLCB3aGVuIHtAbGluayBtY3B9IGlzIGVuYWJsZWQsIHRoZSBNQ1AgdHJhbnNwb3J0LlxuICAgKiAgIEV2ZXJ5dGhpbmcgZWxzZSAodG9vbCBleGVjdXRpb24sIHdvcmtmbG93IGNvbnRyb2wsIHJhdyBtZW1vcnksXG4gICAqICAgdGVsZW1ldHJ5LCBsb2dzLCBzY29yZXMsIGFuZCBvdGhlciBtdXRhdGlvbnMpIGlzIHJlamVjdGVkIHdpdGhcbiAgICogICBgNDAzYCBiZWZvcmUgaXQgcmVhY2hlcyBNYXN0cmEuXG4gICAqIC0gYFwiZnVsbFwiYDogZGlzcGF0Y2ggdGhlIGVudGlyZSBzdG9jayBNYXN0cmEgQVBJLiBVc2Ugb25seSBmb3IgYVxuICAgKiAgIHRydXN0ZWQgZmlyc3QtcGFydHkgY29uc29sZSB0aGF0IGdlbnVpbmVseSBuZWVkcyB0aGUgbWFuYWdlbWVudFxuICAgKiAgIHN1cmZhY2UuXG4gICAqL1xuICBhcGlBY2Nlc3M/OiBcInNjb3BlZFwiIHwgXCJmdWxsXCI7XG4gIC8qKlxuICAgKiBXaGljaCBEYXRhYnJpY2tzIGlkZW50aXR5IHRoZSBhZ2VudHMnIHdvcmtzcGFjZSBjYWxscyBydW4gYXM6IHRoZVxuICAgKiBzZXJ2aW5nLWVuZHBvaW50IGNhdGFsb2d1ZSBiZWhpbmQgdGhlIG1vZGVsIHBpY2tlciwgR2VuaWUgc3VnZ2VzdGlvbnMsXG4gICAqIGBhc2tfZ2VuaWVgLCBhbmQgdGhlIFN0YXRlbWVudCBFeGVjdXRpb24gZmV0Y2ggYmVoaW5kIGEgYFtkYXRhOjxpZD5dYFxuICAgKiBlbWJlZC4gRmFsbHMgYmFjayB0byBgTUFTVFJBX0dFTklFX0lERU5USVRZYCwgdGhlbiBgXCJ1c2VyXCJgLlxuICAgKlxuICAgKiBPbi1iZWhhbGYtb2YgKE9CTykgYXV0aCByZXF1aXJlcyB0aGUgY2FsbGVyIHRvIGJlIGEgbWVtYmVyIG9mIHRoZVxuICAgKiBXT1JLU1BBQ0UsIG5vdCBqdXN0IG9mIHRoZSBEYXRhYnJpY2tzIGFjY291bnQuIEFuIGFwcCBzaGFyZWQgd2l0aCBhblxuICAgKiBhY2NvdW50LWxldmVsIGdyb3VwIGNhbiBiZSBvcGVuZWQgYnkgc29tZW9uZSB3aG9zZSB0b2tlbiBpcyB2YWxpZCBidXQgd2hvc2VcbiAgICogZXZlcnkgd29ya3NwYWNlIGNhbGwgZmFpbHMgd2l0aCBgVW5hdXRob3JpemVkIGFjY2VzcyB0byBPcmc6IDxpZD5gIC0gYW5kXG4gICAqIGdyYW50aW5nIHdvcmtzcGFjZSBtZW1iZXJzaGlwIGlzIG5vdCBhbHdheXMgcG9zc2libGUsIHNpbmNlIGEgd29ya3NwYWNlXG4gICAqIGNhcHMgbWVtYmVyc2hpcCB3ZWxsIGJlbG93IHRoZSBzaXplIG9mIGEgbGFyZ2UgYWNjb3VudCdzIHVzZXIgZ3JvdXAuIFRoZVxuICAgKiBhcHAncyBzZXJ2aWNlIHByaW5jaXBhbCBhbHJlYWR5IGhvbGRzIHRoZSBncmFudHMgdGhlIGFwcCB3YXMgZGVwbG95ZWQgd2l0aC5cbiAgICpcbiAgICogLSBgXCJ1c2VyXCJgIChkZWZhdWx0KTogYWx3YXlzIE9CTy4gUGVyLXVzZXIgYXR0cmlidXRpb24sIGFuZCBHZW5pZSAvIFVuaXR5XG4gICAqICAgQ2F0YWxvZyByb3cgZmlsdGVycyBhcHBseSBwZXIgdXNlci4gQ29ycmVjdCB3aGVuIGV2ZXJ5IGNhbGxlciBpcyBhXG4gICAqICAgd29ya3NwYWNlIG1lbWJlci5cbiAgICogLSBgXCJzZXJ2aWNlLXByaW5jaXBhbFwiYDogYWx3YXlzIHRoZSBhcHAgc2VydmljZSBwcmluY2lwYWwuIE5lZWRzIG5vIE9CT1xuICAgKiAgIHNjb3BlcyBhbmQgd29ya3MgZm9yIGFueSBjYWxsZXIgd2hvIGNhbiBvcGVuIHRoZSBhcHAsIGF0IHRoZSBjb3N0IG9mXG4gICAqICAgcGVyLXVzZXIgYXR0cmlidXRpb24gaW4gR2VuaWUgLyBVbml0eSBDYXRhbG9nLlxuICAgKiAtIGBcImF1dG9cImA6IE9CTyB3aGVuIHRoZSByZXF1ZXN0IGNhcnJpZXMgYW4gT0JPIHRva2VuLCB0aGUgc2VydmljZSBwcmluY2lwYWxcbiAgICogICB3aGVuIGl0IGRvZXMgbm90LiBGb3IgYW4gYXBwIHNlcnZpbmcgQk9USCB0aGUgcGxhdGZvcm0gZnJvbnQgZG9vciBhbmQgYVxuICAgKiAgIGRvb3IgdGhhdCBoYXMgbm8gdG9rZW4gdG8gZm9yd2FyZCAtIGEgYEBkYngtdG9vbHMvdHVubmVsYCBnYXRlLCBhXG4gICAqICAgVGVhbXMgY2hhbm5lbCAtIHdoZXJlIEFwcEtpdCdzIGBhc1VzZXJgIHdvdWxkIG90aGVyd2lzZSB0aHJvd1xuICAgKiAgIGBBdXRoZW50aWNhdGlvbkVycm9yYCBvdXRzaWRlIGBOT0RFX0VOVj1kZXZlbG9wbWVudGAuXG4gICAqXG4gICAqIFRoZSBzZXJ2aWNlLXByaW5jaXBhbCBwYXRoIGNoYW5nZXMgb25seSB0aGUgRGF0YWJyaWNrcyBDUkVERU5USUFMLiBNZW1vcnlcbiAgICogdGhyZWFkcywgdGhlIHBlci11c2VyIGNhY2hlIG5hbWVzcGFjZSwgYW5kIHRyYWNlIG1ldGFkYXRhIHN0aWxsIGtleSBvZmYgdGhlXG4gICAqIGZvcndhcmRlZCB1c2VyLCBzbyBjYWxsZXJzIHNoYXJpbmcgdGhlIHNlcnZpY2UgcHJpbmNpcGFsJ3MgZGF0YSBhY2Nlc3Mga2VlcFxuICAgKiBzZXBhcmF0ZSBjb252ZXJzYXRpb25zIGFuZCBjYW5ub3QgcmVhZCBlYWNoIG90aGVyJ3MgdGhyZWFkcyBvciBjaGFydHMuXG4gICAqIERpcmVjdCBHZW5pZSBjaGF0IGRvZXMgbm90IHVzZSB0aGlzIG9wdGlvbjogaXRzIGNvbnZlcnNhdGlvbnMgYW5kIG1lc3NhZ2VzXG4gICAqIGFsd2F5cyBydW4gdW5kZXIgQXBwS2l0IE9CTyBzbyBHZW5pZSByZW1haW5zIHRoZSBwZXItdXNlciBzdGF0ZSBvd25lci5cbiAgICpcbiAgICogQGV4YW1wbGUgQW4gYXBwIGFueSBhY2NvdW50IHVzZXIgY2FuIG9wZW5cbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHsgZ2VuaWVJZGVudGl0eTogXCJzZXJ2aWNlLXByaW5jaXBhbFwiLCBnZW5pZVNwYWNlczogeyBkZWZhdWx0OiBzcGFjZUlkIH0gfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAZXhhbXBsZSBPbmUgYXBwIGJlaGluZCBib3RoIHRoZSBmcm9udCBkb29yIGFuZCBhIHB1YmxpYyB0dW5uZWxcbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHsgZ2VuaWVJZGVudGl0eTogXCJhdXRvXCIsIGdlbmllU3BhY2VzOiB7IGRlZmF1bHQ6IHNwYWNlSWQgfSB9KTtcbiAgICogYGBgXG4gICAqL1xuICBnZW5pZUlkZW50aXR5PzogTWFzdHJhSWRlbnRpdHlNb2RlO1xuICAvKipcbiAgICogT3B0aW9uYWwgYnJhbmQgY29udGV4dCBhcHBsaWVkIHRvIGNoYXJ0cyBwcm9kdWNlZCBieSB0aGUgYnVpbHQtaW5cbiAgICogYHJlbmRlcl9kYXRhYCAvIGBwcmVwYXJlX2NoYXJ0YCB0b29scy4gV2hlbiBzZXQsIHRoZSBjaGFydCBwbGFubmVyJ3NcbiAgICogRWNoYXJ0cyBvdXRwdXQgaXMgdGhlbWVkIHdpdGggdGhlIGJyYW5kJ3MgcGFsZXR0ZSAoc2VyaWVzIGNvbG9ycyBkZXJpdmVkXG4gICAqIGZyb20gYGNvbG9ycy5wcmltYXJ5YCAvIGBjb2xvcnMuYWNjZW50YCkgYW5kIHNhbnMgZm9udFxuICAgKiAoYHR5cG9ncmFwaHkuc2Fuc2ApIGluc3RlYWQgb2YgRWNoYXJ0cycgZGVmYXVsdHMuIE9taXQgZm9yIHRoZSBkZWZhdWx0XG4gICAqIEVjaGFydHMgbG9vay5cbiAgICpcbiAgICogUGFzcyB0aGUgcG9ydGFibGUge0BsaW5rIEJyYW5kQ29udGV4dH0gc2hhcmVkIGFjcm9zcyB0aGUgVUkgYW5kXG4gICAqIGxpYnJhcmllcyAoZS5nLiBgYnJhbmQuZGVmYXVsdEJyYW5kQ29udGV4dGAgZnJvbSBgQGRieC10b29scy9zaGFyZWQtY29yZWAsXG4gICAqIG9yIGEgY3VzdG9tZXIgYnJhbmQpIC0gdGhlIHNhbWUgb2JqZWN0IHRoZSBlbWFpbCBhZGQtb24gYW5kIHRoZSBVSVxuICAgKiBgQnJhbmRQcm92aWRlcmAgY29uc3VtZSwgc28gYSBob3N0IHRoZW1lcyBjaGFydHMsIGVtYWlsLCBhbmQgVUkgZnJvbSBvbmVcbiAgICogc291cmNlLlxuICAgKi9cbiAgYnJhbmQ/OiBCcmFuZENvbnRleHQ7XG4gIC8qKlxuICAgKiBSZW1vdGUgQWdlbnQtU2tpbGwgc291cmNlcyBtYXRlcmlhbGl6ZWQgb25jZSBhdCBhcHAgc3RhcnR1cC4gQSBzaW5nbGVcbiAgICogc291cmNlLCBhIGxpc3QsIG9yIGEgYHsgc291cmNlcywgZmFpbE9uRXJyb3I/LCAuLi4gfWAgYmFnLlxuICAgKlxuICAgKiBFYWNoIHNvdXJjZSBpcyBhIEdpdEh1YiBgb3duZXIvcmVwb2AsIGEgZ2l0IC8gR2l0TGFiIFVSTCwgb3IgYSBkaXJlY3RcbiAgICogYFNLSUxMLm1kYCAvIGFyY2hpdmUgZG93bmxvYWQgVVJMLiBSZXNvbHV0aW9uIHByZWZlcnMgdGhlIE9QVElPTkFMIGBza2lsbHNgXG4gICAqIG5wbSBDTEkgKGEgcGVlciBkZXApIHdoaWNoIGlzIGNvcGllZCBpbnRvIGEgdGVtcCBkaXIgYW5kIHRoZW4gcGVyc2lzdGVkO1xuICAgKiB3aXRob3V0IGl0LCBhIFVSTCBzb3VyY2UgaXMgZmV0Y2hlZCBkaXJlY3RseS4gQSBzb3VyY2UgdGhhdCByZXNvbHZlc1xuICAgKiB0aHJvdWdoIG5laXRoZXIgZmFpbHMgc3RhcnR1cCB1bmxlc3MgYGZhaWxPbkVycm9yOiBmYWxzZWAuXG4gICAqXG4gICAqIEFJIFRvb2xzIGlzIGNhY2hlZCBkYWlseSB3aXRoIGBAZGJ4LXRvb2xzL2NhY2hlYCBhbmQgc2VydmVkIHRvIGV2ZXJ5XG4gICAqIGF1dG8tY3JlYXRlZCB3b3Jrc3BhY2UgZnJvbSB0aGUgc2hhcmVkIGAvLmRhdGFicmlja3Mvc2tpbGxzYCBtZW1vcnkgbW91bnQuXG4gICAqIE90aGVyIHNvdXJjZXMgYXJlIHdyaXR0ZW4gdG8gdGhlIERhdGFicmlja3MgdXNlcidzIEFzc2lzdGFudCBza2lsbHMgZm9sZGVyXG4gICAqIHdoZW4gd3JpdGFibGUsIHdpdGggYSByZWFkLW9ubHkgbG9jYWwtbWVtb3J5IGZhbGxiYWNrLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoeyByZW1vdGVTa2lsbHM6IFwidmVyY2VsLWxhYnMvYWdlbnQtc2tpbGxzXCIgfSk7XG4gICAqIG1hc3RyYSh7XG4gICAqICAgcmVtb3RlU2tpbGxzOiB7XG4gICAqICAgICBzb3VyY2VzOiBbXCJ2ZXJjZWwtbGFicy9hZ2VudC1za2lsbHNcIiwgXCJodHRwczovL2V4YW1wbGUuY29tL3NraWxsLm1kXCJdLFxuICAgKiAgICAgZmFpbE9uRXJyb3I6IGZhbHNlLFxuICAgKiAgIH0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHJlbW90ZVNraWxscz86IFJlbW90ZVNraWxsc09wdGlvbjtcbiAgLyoqIFJlYWQtb25seSBsb2NhbCBza2lsbCB0cmVlcyBtb3VudGVkIGZvciBmaWxlcywgc2VhcmNoYWJsZSBieSBwYXRoLCBhbmQgcGFzc2VkIGFzIHN0YW5kYXJkIGFnZW50LWxldmVsIHNraWxscy4gKi9cbiAgbG9jYWxTa2lsbE1vdW50cz86IExvY2FsU2tpbGxNb3VudFtdO1xufVxuXG4vKipcbiAqIEpTT04gU2NoZW1hIHB1Ymxpc2hlZCBvbiB0aGUgbWFuaWZlc3QncyBgY29uZmlnLnNjaGVtYWAsIG1pcnJvcmluZyB0aGVcbiAqIGRvY3VtZW50ZWQgZGVmYXVsdHMgYW5kIGVudmlyb25tZW50IGZhbGxiYWNrcyBvZiB7QGxpbmsgTWFzdHJhUGx1Z2luQ29uZmlnfS5cbiAqXG4gKiBDb3ZlcnMgdGhlIEpTT04tZXhwcmVzc2libGUgb3B0aW9ucyBvbmx5LiBgYWdlbnRzYCwgYHRvb2xzYCwgYW5kIGFcbiAqIGBkZWZhdWx0TW9kZWxgIHBhc3NlZCBhcyBhIE1hc3RyYSBgRHluYW1pY0FyZ3VtZW50YCBhcmUgY29kZS1kZWZpbmVkXG4gKiAoZnVuY3Rpb25zIC8gY2xhc3MgaW5zdGFuY2VzKSwgc28gdGhleSBjYXJyeSBubyBzY2hlbWEgZW50cnk7IHRoZVxuICogYGRlZmF1bHRNb2RlbGAgcHJvcGVydHkgYmVsb3cgZGVzY3JpYmVzIGl0cyBzdHJpbmcgZm9ybS5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9DT05GSUdfU0NIRU1BOiBDb25maWdTY2hlbWEgPSB7XG4gIHR5cGU6IFwib2JqZWN0XCIsXG4gIHByb3BlcnRpZXM6IHtcbiAgICBiYWNrZ3JvdW5kVHVybnM6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUnVuIHR1cm5zIHRocm91Z2ggTWFzdHJhIGV2ZW50ZWQgZHVyYWJsZSBleGVjdXRpb24gc28gdGhleSBjb250aW51ZSBhZnRlciBicm93c2VyIGRpc2Nvbm5lY3RzIGFuZCByZW1haW4gcmVjb25uZWN0YWJsZSBieSBydW4gaWQuIERlZmF1bHRzIHRvIHRydWUuXCIsXG4gICAgfSxcbiAgICBwcm92aWRlcklkOiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgZGVzY3JpcHRpb246ICdBSSBTREsgcHJvdmlkZXItb3B0aW9ucyBuYW1lc3BhY2UuIERlZmF1bHRzIHRvIFwib3BlbmFpXCIuJyxcbiAgICB9LFxuICAgIHJlbW90ZVNraWxsczoge1xuICAgICAgdHlwZTogW1wic3RyaW5nXCIsIFwiYXJyYXlcIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1JlbW90ZSBBZ2VudC1Ta2lsbCBzb3VyY2VzIHByb3Zpc2lvbmVkIGF0IHN0YXJ0dXAgYW5kIHBhc3NlZCB0aHJvdWdoIE1hc3RyYSBzdGFuZGFyZCBhZ2VudC1sZXZlbCBza2lsbCB0b29sczogXCJhaXRvb2xzXCIgZm9yIERhdGFicmlja3NcXCcgb3duIHNraWxsIHNldCwgYSBHaXRIdWIgb3duZXIvcmVwbywgYSBnaXQvR2l0TGFiIFVSTCwgb3IgYSBkaXJlY3QgU0tJTEwubWQvYXJjaGl2ZSBVUkwuIFNvdXJjZXMgcmV0YWluIGEgcHJvY2Vzcy1tZW1vcnkgY29weSBldmVuIHdoZW4gcGVyc2lzdGVkIHRvIHRoZSBEYXRhYnJpY2tzIHVzZXIgQXNzaXN0YW50IHNraWxscyBmb2xkZXIuJyxcbiAgICB9LFxuICAgIHN0b3JhZ2U6IHtcbiAgICAgIHR5cGU6IFtcImJvb2xlYW5cIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJQb3N0Z3Jlc1N0b3JlIGZvciBNYXN0cmEgdGhyZWFkcyAvIG1lc3NhZ2VzLiBgdHJ1ZWAgY2FwdHVyZXMgdGhlIGBsYWtlYmFzZWAgcGx1Z2luJ3MgZXhpc3Rpbmcgc2VydmljZS1wcmluY2lwYWwgcG9vbDsgYW4gb2JqZWN0IG9wZW5zIGEgc2VwYXJhdGVseSBjb25maWd1cmVkIHN0b3JlLiBBdXRvLWVuYWJsZWQgd2hlbiB0aGUgYGxha2ViYXNlYCBwbHVnaW4gaXMgcmVnaXN0ZXJlZC5cIixcbiAgICB9LFxuICAgIG1lbW9yeToge1xuICAgICAgdHlwZTogW1wiYm9vbGVhblwiLCBcIm9iamVjdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlBnVmVjdG9yIHN0b3JlIGZvciBNYXN0cmEgc2VtYW50aWMgcmVjYWxsLiBgdHJ1ZWAgY2FwdHVyZXMgdGhlIGBsYWtlYmFzZWAgcGx1Z2luJ3MgZXhpc3Rpbmcgc2VydmljZS1wcmluY2lwYWwgcG9vbDsgYW4gb2JqZWN0IG9wZW5zIGEgc2VwYXJhdGVseSBjb25maWd1cmVkIHN0b3JlLiBBdXRvLWVuYWJsZWQgd2hlbiB0aGUgYGxha2ViYXNlYCBwbHVnaW4gaXMgcmVnaXN0ZXJlZC5cIixcbiAgICB9LFxuICAgIGNvZGVNb2RlOiB7XG4gICAgICB0eXBlOiBbXCJib29sZWFuXCIsIFwic3RyaW5nXCIsIFwib2JqZWN0XCJdLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0V4cG9zZSBleGVjdXRhYmxlIHJlcXVlc3QgdG9vbHMgdGhyb3VnaCBuYXRpdmUgTWFzdHJhIENvZGUgTW9kZSBmb3IgVHlwZVNjcmlwdCBiYXRjaGluZywgYWdncmVnYXRpb24sIGFuZCBhcml0aG1ldGljLiBEZWZhdWx0cyB0byBmYWxzZS4gVXNlIFwiYXV0b1wiIHRvIHNlbGVjdCBhbiBpbnN0YWxsZWQgc3VwcG9ydGVkIG9wdGlvbmFsIHRyYW5zcG9ydCBvciBzdGF5IGRpc2FibGVkLCBcImlzb2xhdGVkLXZtXCIgdG8gcmVxdWlyZSB0aGUgbmF0aXZlIHRyYW5zcG9ydCwgXCJxdWlja2pzXCIgdG8gcmVxdWlyZSB0aGUgcG9ydGFibGUgdHJhbnNwb3J0LCBvciBhbiBvYmplY3Qgd2l0aCB0cmFuc3BvcnQgcGx1cyBpZCBhbmQgdGltZW91dC4gTmVpdGhlciB0cmFuc3BvcnQgcnVucyB0aHJvdWdoIHRoZSB3b3Jrc3BhY2UgY29tbWFuZCBzYW5kYm94LicsXG4gICAgfSxcbiAgICBzYW5kYm94OiB7XG4gICAgICB0eXBlOiBbXCJib29sZWFuXCIsIFwic3RyaW5nXCIsIFwib2JqZWN0XCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdDb21tYW5kIHNhbmRib3ggZm9yIGF1dG8tY3JlYXRlZCBhZ2VudCB3b3Jrc3BhY2VzLiBEZWZhdWx0cyB0byBNb250eS4gRmFsc2UgZGlzYWJsZXMgY29tbWFuZCBleGVjdXRpb247IHRydWUgb3IgXCJtb250eVwiIHNlbGVjdHMgTW9udHk7IGFuIGV4cGxpY2l0IHNhbmRib3ggb3IgcmVzb2x2ZXIgc3VwcGxpZXMgYW5vdGhlciB0cmFuc3BvcnQuJyxcbiAgICB9LFxuICAgIHdvcmtzcGFjZUZhbGxiYWNrVG9UbXA6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiQWRkIHVzZXItc2NvcGVkIC90bXAgdG8gYXV0by1jcmVhdGVkIGFnZW50IHdvcmtzcGFjZXMgb25seSB3aGVuIG5vIGNvbmZpZ3VyZWQgRGF0YWJyaWNrcyBwYXRoIG1vdW50cyB3cml0YWJsZS4gRGVmYXVsdHMgdG8gZmFsc2UuXCIsXG4gICAgfSxcbiAgICB3b3Jrc3BhY2VTa2lsbHM6IHtcbiAgICAgIHR5cGU6IFtcImJvb2xlYW5cIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJVc2UgTWFzdHJhJ3MgbmF0aXZlIG9uLWRlbWFuZCB3b3Jrc3BhY2Ugc2tpbGwgc2VhcmNoIGFuZCB3cml0YWJsZSBza2lsbCBzYXZlcy4gRGVmYXVsdHMgdG8gdHJ1ZS5cIixcbiAgICB9LFxuICAgIHdvcmtzcGFjZVRvb2xzOiB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiTmF0aXZlIE1hc3RyYSB3b3Jrc3BhY2UgdG9vbCBjb25maWd1cmF0aW9uIGZvciBhdmFpbGFiaWxpdHksIGFwcHJvdmFscywgcmVhZC1iZWZvcmUtd3JpdGUsIG91dHB1dCBsaW1pdHMsIGFuZCBob29rcy5cIixcbiAgICB9LFxuICAgIGRlZmF1bHRBZ2VudDoge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkFnZW50IGlkIHVzZWQgd2hlbiB0aGUgY2xpZW50IG5hbWVzIG5vbmUuIERlZmF1bHRzIHRvIHRoZSBmaXJzdCByZWdpc3RlcmVkIGFnZW50LCBlbHNlIHRoZSBidWlsdC1pbiBgZGVmYXVsdGAuXCIsXG4gICAgfSxcbiAgICBkZWZhdWx0TW9kZWw6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJTZXJ2aW5nIGVuZHBvaW50IGFwcGxpZWQgdG8gZXZlcnkgYWdlbnQgdGhhdCBvbWl0cyBpdHMgb3duIG1vZGVsLiBGYWxscyBiYWNrIHRvIERBVEFCUklDS1NfU0VSVklOR19FTkRQT0lOVF9OQU1FLCB0aGVuIHRoZSBoaWdoZXN0LXJhbmtlZCBjdXJyZW50bHkgYXZhaWxhYmxlIGNhdGFsb2d1ZSBlbmRwb2ludC5cIixcbiAgICB9LFxuICAgIGRlZmF1bHRNb2RlbEZhbGxiYWNrczoge1xuICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgaXRlbXM6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUHJpb3JpdHktb3JkZXJlZCBlbmRwb2ludCBuYW1lcyB0cmllZCBiZWZvcmUgdGhlIHNjb3JlLWNsYXNzaWZpZWQgY2F0YWxvZ3VlIHdoZW4gbm90aGluZyBlbHNlIHBpbnMgYSBtb2RlbC5cIixcbiAgICB9LFxuICAgIG1vZGVsRnV6enlNYXRjaDoge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJGdXp6eS1tYXRjaCBsb29zZSBtb2RlbCBuYW1lcyBhZ2FpbnN0IHRoZSB3b3Jrc3BhY2UgY2F0YWxvZ3VlLiBEZWZhdWx0cyB0byB0cnVlLlwiLFxuICAgIH0sXG4gICAgbW9kZWxGdXp6eVRocmVzaG9sZDoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkZ1c2UuanMgc2NvcmUgdGhyZXNob2xkIGZvciB0aGUgZnV6enkgbWF0Y2hlciwgMCAoZXhhY3QpIHRvIDEgKGFueXRoaW5nKS4gRGVmYXVsdHMgdG8gMC40LlwiLFxuICAgIH0sXG4gICAgbW9kZWxDYWNoZVR0bE1zOiB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiVFRMIGluIG1zIGZvciB0aGUgc2VydmluZy1lbmRwb2ludHMgbGlzdCBjYWNoZSwgcGVyIHdvcmtzcGFjZSBob3N0LiBEZWZhdWx0cyB0byA1IG1pbnV0ZXMuXCIsXG4gICAgfSxcbiAgICBtb2RlbE92ZXJyaWRlOiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkhvbm9yIGEgcGVyLXJlcXVlc3QgbW9kZWwgb3ZlcnJpZGUgZnJvbSB0aGUgWC1NYXN0cmEtTW9kZWwgaGVhZGVyLCA/bW9kZWw9IHF1ZXJ5LCBvciBhIGBtb2RlbGAgYm9keSBmaWVsZC4gRGVmYXVsdHMgdG8gdHJ1ZS5cIixcbiAgICB9LFxuICAgIGdlbmllU3BhY2VzOiB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHsgdHlwZTogW1wic3RyaW5nXCIsIFwib2JqZWN0XCJdIH0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJHZW5pZSBzcGFjZXMgdGhlIGFnZW50cyBjYW4gZGVsZWdhdGUgdG8sIGtleWVkIGJ5IGFsaWFzICh0aGUgdG9vbC1uYW1lIHN1ZmZpeCkuIEVhY2ggdmFsdWUgaXMgYSBzcGFjZSBpZCBvciBgeyBzcGFjZUlkLCBoaW50IH1gLiBGYWxscyBiYWNrIHRvIHRoZSBgZ2VuaWVgIHBsdWdpbidzIG93biBgc3BhY2VzYCBjb25maWcsIHRoZW4gREFUQUJSSUNLU19HRU5JRV9TUEFDRV9JRCB1bmRlciB0aGUgYGRlZmF1bHRgIGFsaWFzLlwiLFxuICAgIH0sXG4gICAgZ2VuaWVBZ2VudE1vZGU6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiVXNlIHRoZSBzdHJlYW1pbmcgR2VuaWUgQWdlbnQgTW9kZSBBUEkgZm9yIGFnZW50LWJhY2tlZCBhc2tfZ2VuaWUuIERlZmF1bHRzIHRvIHRydWU7IGZhbHNlIGZvcmNlcyBsZWdhY3kgcG9sbGluZy4gRmVhdHVyZS1kaXNhYmxlZCBvciBwcmV2aWV3LXRvZ2dsZSByZXNwb25zZXMgZmFsbCBiYWNrIGF1dG9tYXRpY2FsbHkgYmVmb3JlIHN0cmVhbWluZy4gRGlyZWN0IEdlbmllIGNoYXQgYWx3YXlzIHJlcXVpcmVzIEFnZW50IE1vZGUuXCIsXG4gICAgfSxcbiAgICBnZW5pZVNwYWNlQ2FjaGVUdGxNczoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRUTCBpbiBtcyBmb3IgdGhlIEdlbmllIHNwYWNlIG1ldGFkYXRhIGNhY2hlLiBEZWZhdWx0cyB0byA1IG1pbnV0ZXMuXCIsXG4gICAgfSxcbiAgICBhZ2VudE1heFN0ZXBzOiB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiTWF4aW11bSBMTE0gc3RlcHMgZWFjaCBhZ2VudCBnZXRzIHBlciB0dXJuIChhIHRvb2wgY2FsbCBhbmQgdGhlIGZpbmFsIHJlcGx5IGVhY2ggY29uc3VtZSBvbmUpLiBEZWZhdWx0cyB0byAyNS5cIixcbiAgICB9LFxuICAgIGZvbGxvd1VwU3VnZ2VzdGlvbnM6IHtcbiAgICAgIHR5cGU6IFtcImJvb2xlYW5cIiwgXCJzdHJpbmdcIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ09wdGlvbmFsIHBvc3QtdHVybiBmb2xsb3ctdXBzLiBUcnVlIHNlbGVjdHMgc291cmNlcyBhdXRvbWF0aWNhbGx5OyBcImdlbmVyYXRlZFwiIG9yIFwiZ2VuaWVcIiBwaW5zIG9uZSBzb3VyY2U7IGFuIG9iamVjdCBhZGRzIGEgbGltaXQsIHRpbWVvdXQsIGFuZCBvcHRpb25hbCB0b29sIGV4cG9zdXJlLiBEZWZhdWx0cyBvZmYuJyxcbiAgICB9LFxuICAgIHN0cmlwU3RhbGVDaGFydHM6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiU3RyaXAgY2hhcnRJZHMgZnJvbSByZWNhbGxlZCBhc3Npc3RhbnQgdG9vbCByZXN1bHRzIHNvIHRoZSBtb2RlbCBjYW5ub3QgcmV1c2UgYSB0dXJuLXNjb3BlZCBjaGFydCBtYXJrZXIuIERlZmF1bHRzIHRvIHRydWUuXCIsXG4gICAgfSxcbiAgICBzdHlsZUluc3RydWN0aW9uczoge1xuICAgICAgdHlwZTogW1wic3RyaW5nXCIsIFwiYm9vbGVhblwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlN0eWxlIGd1YXJkcmFpbHMgYXBwZW5kZWQgdG8gZXZlcnkgYWdlbnQncyBpbnN0cnVjdGlvbnMuIEEgc3RyaW5nIHJlcGxhY2VzIHRoZSBidWlsdC1pbiBibG9jaywgYGZhbHNlYCBkaXNhYmxlcyBpdC5cIixcbiAgICB9LFxuICAgIG9ic2VydmFiaWxpdHk6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiQnJpZGdlIE1hc3RyYSBzcGFucyBpbnRvIEFwcEtpdCdzIE9UZWwgcGlwZWxpbmUuIERlZmF1bHRzIHRvIG9uIG9ubHkgd2hlbiBPVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQgb3IgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19FTkRQT0lOVCBpcyBzZXQuXCIsXG4gICAgfSxcbiAgICBmZWVkYmFja01vZGU6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBlbnVtOiBbXCJhdXRvXCIsIFwiZ2VuaWVcIiwgXCJtbGZsb3dcIiwgXCJub25lXCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRmVlZGJhY2sgZGVzdGluYXRpb24uIEF1dG8gcHJlZmVycyBHZW5pZSBpbiBHZW5pZSBBZ2VudCBNb2RlLCBvdGhlcndpc2UgTUxmbG93IHdoZW4gY29uZmlndXJlZCwgb3RoZXJ3aXNlIG5vbmUuIEV4cGxpY2l0IHVuYXZhaWxhYmxlIG1vZGVzIGZhaWwgc3RhcnR1cC5cIixcbiAgICB9LFxuICAgIG1jcDoge1xuICAgICAgdHlwZTogW1wiYm9vbGVhblwiLCBcIm9iamVjdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkV4cG9zZSB0aGUgcmVnaXN0ZXJlZCBhZ2VudHMgb3ZlciBNQ1AuIERlZmF1bHRzIHRvIGFnZW50cy1vbmx5OyBhbiBvYmplY3QgdHVuZXMgdGhlIHNlcnZlciBpZCwgYWR2ZXJ0aXNlZCBtZXRhZGF0YSwgYW5kIHdoZXRoZXIgYW1iaWVudCB0b29scyBhcmUgZXhwb3NlZC5cIixcbiAgICB9LFxuICAgIGdlbmllSWRlbnRpdHk6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAvLyBEZXJpdmVkIGZyb20gdGhlIHJlc29sdmVyJ3Mgb3duIGxpc3QsIHNvIGEgbW9kZSBjYW4gbmV2ZXIgYmUgYWNjZXB0ZWQgYXRcbiAgICAgIC8vIHJ1bnRpbWUgd2hpbGUgdGhlIHB1Ymxpc2hlZCBzY2hlbWEgKGFuZCB0aGUgVUkgYnVpbHQgZnJvbSBpdCkgb21pdHMgaXQuXG4gICAgICBlbnVtOiBbLi4uSURFTlRJVFlfTU9ERVNdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdXaGljaCBEYXRhYnJpY2tzIGlkZW50aXR5IGFnZW50LWJhY2tlZCB3b3Jrc3BhY2UgY2FsbHMgKHNlcnZpbmcgY2F0YWxvZ3VlLCBHZW5pZSwgc3RhdGVtZW50IGV4ZWN1dGlvbikgcnVuIGFzLiBEaXJlY3QgR2VuaWUgY2hhdCBhbHdheXMgdXNlcyBPQk8uIFwidXNlclwiIChkZWZhdWx0KSBpcyBhbHdheXMgT0JPLCBzbyBjYWxsZXJzIG11c3QgYmUgd29ya3NwYWNlIG1lbWJlcnM7IFwic2VydmljZS1wcmluY2lwYWxcIiBhbHdheXMgdXNlcyB0aGUgYXBwIHNlcnZpY2UgcHJpbmNpcGFsLCBzbyBhbnkgY2FsbGVyIHdobyBjYW4gb3BlbiB0aGUgYXBwIHdvcmtzLCBhdCB0aGUgY29zdCBvZiBwZXItdXNlciBhdHRyaWJ1dGlvbjsgXCJhdXRvXCIgdXNlcyBPQk8gd2hlbiB0aGUgcmVxdWVzdCBjYXJyaWVzIGFuIE9CTyB0b2tlbiBhbmQgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIHdoZW4gaXQgZG9lcyBub3QsIGZvciBhbiBhcHAgdGhhdCBhbHNvIHNlcnZlcyBhIHR1bm5lbCBvciB3ZWJob29rIGRvb3IuIEZhbGxzIGJhY2sgdG8gTUFTVFJBX0dFTklFX0lERU5USVRZLicsXG4gICAgfSxcbiAgICBhcGlBY2Nlc3M6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBlbnVtOiBbXCJzY29wZWRcIiwgXCJmdWxsXCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdIb3cgbXVjaCBvZiB0aGUgc3RvY2sgQG1hc3RyYS9leHByZXNzIEFQSSBpcyByZWFjaGFibGUgdGhyb3VnaCB0aGUgbW91bnQuIFwic2NvcGVkXCIgKGRlZmF1bHQpIGFsbG93cyBhZ2VudCBpbmZlcmVuY2UsIHJlYWQtb25seSBhZ2VudCBtZXRhZGF0YSwgdGhpcyBwbHVnaW5cXCdzIG93biByb3V0ZXMsIGFuZCBNQ1A7IFwiZnVsbFwiIGRpc3BhdGNoZXMgdGhlIGVudGlyZSBtYW5hZ2VtZW50IHN1cmZhY2UuJyxcbiAgICB9LFxuICAgIGJyYW5kOiB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUG9ydGFibGUgYnJhbmQgY29udGV4dCBhcHBsaWVkIHRvIGdlbmVyYXRlZCBjaGFydHMgKHNlcmllcyBwYWxldHRlIGZyb20gY29sb3JzLnByaW1hcnkgLyBjb2xvcnMuYWNjZW50LCBiYXNlIGZvbnQgZnJvbSB0eXBvZ3JhcGh5LnNhbnMpLlwiLFxuICAgIH0sXG4gIH0sXG59O1xuIl19
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBRSxtQkFBbUIsRUFBNEMsTUFBTSxvQkFBb0IsQ0FBQztBQU1uRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVc1RixPQUFPLEVBQUUsY0FBYyxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUd4RTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQztBQUU5Qzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGtCQUFrQixDQUFDO0FBQ3ZELDZFQUE2RTtBQUM3RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztBQUN6RCxrRkFBa0Y7QUFDbEYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsa0JBQWtCLENBQUM7QUFFdkQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztBQUV6RDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO0FBRWxEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBc0I7SUFDM0Qsc0JBQXNCO0lBQ3RCLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIsbUVBQW1FO0lBQ25FLGlFQUFpRTtJQUNqRSx3QkFBd0I7Q0FDekIsQ0FBQztBQVFGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxPQUFvQztJQUN6RSxPQUFPLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FB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QUEyRTtZQUMzRSwwRUFBMEU7WUFDMUUsSUFBSSxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUM7WUFDekIsV0FBVyxFQUNULGdpQkFBZ2lCO1NBQ25pQjtRQUNELFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQztZQUN4QixXQUFXLEVBQ1QscU9BQXFPO1NBQ3hPO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQ1QsMElBQTBJO1NBQzdJO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQbHVnaW4gY29uZmlndXJhdGlvbiB0eXBlcyBhbmQgc2hhcmVkIGBSZXF1ZXN0Q29udGV4dGAga2V5cy5cbiAqXG4gKiBPd25zIHRoZSB0eXBlZCB7QGxpbmsgTWFzdHJhUGx1Z2luQ29uZmlnfSAodGhlIHBsdWdpbidzIHNsaWNlIG9mIEFwcEtpdFxuICogY29uZmlnKSBhbmQge0BsaW5rIE1BU1RSQV9DT05GSUdfU0NIRU1BfSwgdGhlIEpTT04gU2NoZW1hIHRoZSBtYW5pZmVzdFxuICogcHVibGlzaGVzIGZvciBpdCBzbyBzY2FmZm9sZGluZyB0b29scyBhbmQgYWdlbnRzIGNhbiByZWFkIHRoZSBvcHRpb24gc2V0LlxuICpcbiAqIFByZWNlZGVuY2UgcGVyIGZpZWxkIGlzIGV4cGxpY2l0IHBsdWdpbiBjb25maWcsIHRoZW4gdGhlIGVudmlyb25tZW50XG4gKiB2YXJpYWJsZSBuYW1lZCBvbiB0aGUgZmllbGQsIHRoZW4gYSBidWlsdC1pbiBkZWZhdWx0LlxuICpcbiAqIEtlcHQgaW4gYSBsZWFmIG1vZHVsZSBzbyBgcGx1Z2luLnRzYCwgYHNlcnZlci50c2AsIGBtb2RlbC50c2AsIGFuZFxuICogYG1lbW9yeS50c2AgY2FuIGltcG9ydCB0aGVtIHdpdGhvdXQgY3JlYXRpbmcgYSBjeWNsZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgZ2V0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSBCYXNlUGx1Z2luQ29uZmlnLCB0eXBlIENvbmZpZ1NjaGVtYSB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGFwcGtpdCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBCcmFuZENvbnRleHQgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBGZWVkYmFja01vZGVPcHRpb24gfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtbWFzdHJhL2ZlZWRiYWNrXCI7XG5pbXBvcnQgdHlwZSB7IEFnZW50Q29uZmlnIH0gZnJvbSBcIkBtYXN0cmEvY29yZS9hZ2VudFwiO1xuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0Q29udGV4dCB9IGZyb20gXCJAbWFzdHJhL2NvcmUvcmVxdWVzdC1jb250ZXh0XCI7XG5pbXBvcnQgeyBNQVNUUkFfUkVTT1VSQ0VfSURfS0VZLCBNQVNUUkFfVEhSRUFEX0lEX0tFWSB9IGZyb20gXCJAbWFzdHJhL2NvcmUvcmVxdWVzdC1jb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEFueVdvcmtmbG93IH0gZnJvbSBcIkBtYXN0cmEvY29yZS93b3JrZmxvd3NcIjtcbmltcG9ydCB0eXBlIHtcbiAgV29ya3NwYWNlU2FuZGJveCxcbiAgV29ya3NwYWNlU2FuZGJveFJlc29sdmVyLFxuICBXb3Jrc3BhY2VUb29sc0NvbmZpZyxcbn0gZnJvbSBcIkBtYXN0cmEvY29yZS93b3Jrc3BhY2VcIjtcbmltcG9ydCB0eXBlIHsgUGdWZWN0b3JDb25maWcsIFBvc3RncmVzU3RvcmVDb25maWcgfSBmcm9tIFwiQG1hc3RyYS9wZ1wiO1xuXG5pbXBvcnQgdHlwZSB7IEFueU1hc3RyYUFnZW50RGVmaW5pdGlvbiwgTWFzdHJhVG9vbHMgfSBmcm9tIFwiLi9hZ2VudHMudHNcIjtcbmltcG9ydCB0eXBlIHsgR2VuaWVTcGFjZXNDb25maWcgfSBmcm9tIFwiLi9nZW5pZS50c1wiO1xuaW1wb3J0IHsgSURFTlRJVFlfTU9ERVMsIHR5cGUgTWFzdHJhSWRlbnRpdHlNb2RlIH0gZnJvbSBcIi4vaWRlbnRpdHkudHNcIjtcbmltcG9ydCB0eXBlIHsgTG9jYWxTa2lsbE1vdW50LCBSZW1vdGVTa2lsbHNPcHRpb24gfSBmcm9tIFwiLi9yZW1vdGUtc2tpbGxzLnRzXCI7XG5cbi8qKlxuICogYFJlcXVlc3RDb250ZXh0YCBrZXkgdW5kZXIgd2hpY2gge0BsaW5rIE1hc3RyYVNlcnZlcn0gc3RvcmVzIHRoZVxuICogcmVzb2x2ZWQgQXBwS2l0IHVzZXIuIGBtb2RlbC50c2AgcmVhZHMgaXQgdG8gbWludCB1c2VyLXNjb3BlZFxuICogRGF0YWJyaWNrcyB0b2tlbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVNUUkFfVVNFUl9LRVkgPSBcIm1hc3RyYV9fdXNlclwiO1xuXG4vKipcbiAqIGBSZXF1ZXN0Q29udGV4dGAga2V5cyBmb3IgQXBwS2l0IHVzZXIgbWV0YWRhdGEgc3RhbXBlZCBieVxuICoge0BsaW5rIE1hc3RyYVNlcnZlcn0uIFN1cmZhY2VkIGFzIHRyYWNlIG1ldGFkYXRhIHZpYVxuICoge0BsaW5rIFRSQUNFX1JFUVVFU1RfQ09OVEVYVF9LRVlTfSBzbyB0cmFjZXMgYXJlIGZpbHRlcmFibGUgYnkgd2hvXG4gKiBpc3N1ZWQgdGhlIHJlcXVlc3Qgd2l0aG91dCBsZWFraW5nIHRoZSBmdWxsIHVzZXIgb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3QgTUFTVFJBX1VTRVJfTkFNRV9LRVkgPSBcIm1hc3RyYV9fdXNlck5hbWVcIjtcbi8qKiBSZXF1ZXN0LWNvbnRleHQga2V5IGNvbnRhaW5pbmcgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlcidzIGVtYWlsIGFkZHJlc3MuICovXG5leHBvcnQgY29uc3QgTUFTVFJBX1VTRVJfRU1BSUxfS0VZID0gXCJtYXN0cmFfX3VzZXJFbWFpbFwiO1xuLyoqIFJlcXVlc3QtY29udGV4dCBrZXkgaWRlbnRpZnlpbmcgdGhlIERhdGFicmlja3MgY3JlZGVudGlhbCB1c2VkIGJ5IHRoZSB0dXJuLiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9BVVRIX01PREVfS0VZID0gXCJtYXN0cmFfX2F1dGhNb2RlXCI7XG5cbi8qKlxuICogYFJlcXVlc3RDb250ZXh0YCBrZXkgZm9yIHRoZSBwZXItSFRUUC1yZXF1ZXN0IGlkIHN0YW1wZWQgYnlcbiAqIHtAbGluayBNYXN0cmFTZXJ2ZXJ9LiBSZWFkcyBgWC1SZXF1ZXN0LUlkYCBmcm9tIHRoZSBpbmNvbWluZ1xuICogaGVhZGVycyB3aGVuIHByZXNlbnQgKHNvIGFuIHVwc3RyZWFtIGxvYWQgYmFsYW5jZXIgLyBBUEkgZ2F0ZXdheVxuICogY2FuIGtlZXAgaXRzIHRyYWNlIGNvcnJlbGF0aW9uKSwgZmFsbHMgYmFjayB0byBhIGZyZXNobHkgbWludGVkXG4gKiBVVUlELiBFY2hvZWQgYmFjayBvbiB0aGUgcmVzcG9uc2UgYW5kIHN1cmZhY2VkIG9uIGV2ZXJ5IHNwYW4gdmlhXG4gKiB7QGxpbmsgVFJBQ0VfUkVRVUVTVF9DT05URVhUX0tFWVN9IHNvIGxvZ3MgYW5kIHRyYWNlcyBzaGFyZSBhXG4gKiBqb2luIGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9SRVFVRVNUX0lEX0tFWSA9IFwibWFzdHJhX19yZXF1ZXN0SWRcIjtcblxuLyoqXG4gKiBgUmVxdWVzdENvbnRleHRgIGtleSBmb3IgT0F1dGggc2NvcGVzIHBhcnNlZCBmcm9tIHRoZSBmb3J3YXJkZWRcbiAqIGFjY2VzcyB0b2tlbiBieSB7QGxpbmsgTWFzdHJhU2VydmVyLmNvbmZpZ3VyZVJlcXVlc3RDb250ZXh0U2NvcGVzfS5cbiAqIFdvcmtzcGFjZSBtb3VudHMgdGhhdCB0b3VjaCBEYXRhYnJpY2tzIHdvcmtzcGFjZSBmaWxlcyByZXF1aXJlXG4gKiBgd29ya3NwYWNlYCBvciBgYWxsLWFwaXNgIGluIHRoaXMgbGlzdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9TQ09QRVNfS0VZID0gXCJtYXN0cmFfX3Njb3Blc1wiO1xuXG4vKipcbiAqIENhbm9uaWNhbCBsaXN0IG9mIGBSZXF1ZXN0Q29udGV4dGAga2V5cyB3ZSB3YW50IE1hc3RyYSB0byBleHRyYWN0XG4gKiBhcyBtZXRhZGF0YSBvbiBldmVyeSBvYnNlcnZhYmlsaXR5IHNwYW4gKGFnZW50IHJ1bnMsIG1vZGVsIGNhbGxzLFxuICogdG9vbCBpbnZvY2F0aW9ucywgd29ya2Zsb3cgc3RlcHMpLlxuICpcbiAqIE1pcnJvcnMge0BsaW5rIGh0dHBzOi8vbWFzdHJhLmFpL2RvY3Mvb2JzZXJ2YWJpbGl0eS90cmFjaW5nL292ZXJ2aWV3I2F1dG9tYXRpYy1tZXRhZGF0YS1mcm9tLXJlcXVlc3Rjb250ZXh0fTpcbiAqIHBhc3NlZCB2ZXJiYXRpbSBpbnRvIGBPYnNlcnZhYmlsaXR5LmNvbmZpZ3NbKl0ucmVxdWVzdENvbnRleHRLZXlzYCxcbiAqIHNvIGFueSBrZXkgbGlzdGVkIGhlcmUgaXMgcmVhZCBmcm9tIGBSZXF1ZXN0Q29udGV4dGAgYXQgdHJhY2VcbiAqIHN0YXJ0IGFuZCBhdHRhY2hlZCBhcyBzY2FsYXIgc3BhbiBtZXRhZGF0YS4gS2VlcCB0aGUgc2V0IHRvIHBsYWluXG4gKiBzY2FsYXJzIC0gbmV2ZXIgaW5jbHVkZSB7QGxpbmsgTUFTVFJBX1VTRVJfS0VZfSAoaXQgY2FycmllcyB0aGVcbiAqIGZ1bGwgQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IHdpdGggYSBgV29ya3NwYWNlQ2xpZW50YCByZWZlcmVuY2UpLlxuICpcbiAqIE9yZGVyIGlzIHB1cmVseSBjb3NtZXRpYzsgTWFzdHJhIGRlLWR1cGVzIGludGVybmFsbHkuXG4gKi9cbmV4cG9ydCBjb25zdCBUUkFDRV9SRVFVRVNUX0NPTlRFWFRfS0VZUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbXG4gIE1BU1RSQV9SRVNPVVJDRV9JRF9LRVksXG4gIE1BU1RSQV9USFJFQURfSURfS0VZLFxuICBNQVNUUkFfUkVRVUVTVF9JRF9LRVksXG4gIE1BU1RSQV9VU0VSX05BTUVfS0VZLFxuICBNQVNUUkFfVVNFUl9FTUFJTF9LRVksXG4gIE1BU1RSQV9BVVRIX01PREVfS0VZLFxuICAvLyBNb2RlbCBvdmVycmlkZSBrZXkgaXMgb3duZWQgYnkgYHNlcnZpbmcudHNgOyBzcGVsbGVkIGlubGluZSBoZXJlXG4gIC8vIHNvIHRoaXMgbW9kdWxlIHN0YXlzIGxlYWYtbGV2ZWwgKG5vIGN5Y2xlcyB3aXRoIGBzZXJ2aW5nLnRzYCkuXG4gIFwibWFzdHJhX19tb2RlbF9vdmVycmlkZVwiLFxuXTtcblxuLyoqIEFwcEtpdCBleGVjdXRpb24gY29udGV4dCBwbHVzIHRoZSBjYW5vbmljYWwgdXNlciBpZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XG4gIGlkOiBzdHJpbmc7XG4gIGV4ZWN1dGlvbkNvbnRleHQ6IGFwcGtpdC5FeGVjdXRpb25Db250ZXh0TGlrZTtcbn1cblxuLyoqXG4gKiBDYW5vbmljYWwgaWRlbnRpdHkgZm9yIGFuIEFwcEtpdCBleGVjdXRpb24gY29udGV4dDogdGhlIE9CTyB1c2VyIGlkIG9uIGFcbiAqIHVzZXItc2NvcGVkIGNhbGwsIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCBpZCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRpb25Db250ZXh0VXNlcklkKGNvbnRleHQ6IGFwcGtpdC5FeGVjdXRpb25Db250ZXh0TGlrZSk6IHN0cmluZyB7XG4gIHJldHVybiBcInVzZXJJZFwiIGluIGNvbnRleHQgPyBjb250ZXh0LnVzZXJJZCA6IGNvbnRleHQuc2VydmljZVVzZXJJZDtcbn1cblxuLyoqXG4gKiBXaG8gYSB0dXJuIGlzIEFUVFJJQlVURUQgdG8sIHdoaWNoIGlzIG5vdCBhbHdheXMgd2hvc2UgRGF0YWJyaWNrcyBjcmVkZW50aWFsXG4gKiBydW5zIGl0LiBBbiBPQk8gY29udGV4dCdzIG93biB1c2VyIGlkIGlzIGF1dGhvcml0YXRpdmUuIFVuZGVyIHRoZSBzZXJ2aWNlXG4gKiBwcmluY2lwYWwsIGV2ZXJ5IGNhbGxlciBzaGFyZXMgb25lIGNyZWRlbnRpYWwsIHNvIHRoZSBmb3J3YXJkZWQgdXNlciBpZCBpc1xuICogd2hhdCBrZWVwcyBtZW1vcnkgdGhyZWFkcyBhbmQgcGVyLXVzZXIgY2FjaGUgbmFtZXNwYWNlcyBkaXN0aW5jdDsgdGhlIHNlcnZpY2VcbiAqIHByaW5jaXBhbCBpZCBpcyB0aGUgZmxvb3Igd2hlbiBubyB1c2VyIHdhcyBmb3J3YXJkZWQuXG4gKlxuICogVGhpcyBydWxlIGhhcyB0byBiZSBpZGVudGljYWwgZXZlcnl3aGVyZSBhIGNhY2hlIGtleSBpcyBidWlsdCwgc28gYm90aCB0aGVcbiAqIHdyaXRlIHNpZGUgKHRoZSBgUmVxdWVzdENvbnRleHRgIHVzZXIgc3RhbXBlZCBieSBgc3RhbXBSZXF1ZXN0Q29udGV4dFVzZXJgKVxuICogYW5kIHRoZSByZWFkIHNpZGUgKHRoZSBwbHVnaW4ncyBvd24gQXBwS2l0IHJvdXRlcywgd2hpY2ggaGF2ZSBhIHJlcXVlc3QgYnV0XG4gKiBubyBgUmVxdWVzdENvbnRleHRgKSBkZXJpdmUgdGhlaXIga2V5IGZyb20gdGhpcyBvbmUgZnVuY3Rpb24uIFdoZW4gdGhlIHR3b1xuICogZGlzYWdyZWVkLCBhIGNoYXJ0IHdyaXR0ZW4gdW5kZXIgdGhlIGZvcndhcmRlZCB1c2VyIGlkIHdhcyByZWFkIGJhY2sgdW5kZXJcbiAqIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCBpZCBhbmQgdGhlIGVtYmVkIHJvdXRlIGFuc3dlcmVkIDQwNCwgd2hpY2ggdGhlIGNoYXQgVUlcbiAqIHJlbmRlcnMgYXMgYW4gZXhwaXJlZCBjaGFydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF0dHJpYnV0ZWRVc2VySWQoXG4gIGV4ZWN1dGlvbkNvbnRleHQ6IGFwcGtpdC5FeGVjdXRpb25Db250ZXh0TGlrZSxcbiAgZm9yd2FyZGVkVXNlcklkPzogc3RyaW5nLFxuKTogc3RyaW5nIHtcbiAgaWYgKFwiaXNVc2VyQ29udGV4dFwiIGluIGV4ZWN1dGlvbkNvbnRleHQpIHJldHVybiBleGVjdXRpb25Db250ZXh0VXNlcklkKGV4ZWN1dGlvbkNvbnRleHQpO1xuICByZXR1cm4gZm9yd2FyZGVkVXNlcklkID8/IGV4ZWN1dGlvbkNvbnRleHRVc2VySWQoZXhlY3V0aW9uQ29udGV4dCk7XG59XG5cbi8qKlxuICogSWRlbnRpdHkgZXZlcnkgcGVyLXVzZXIgY2FjaGUgZW50cnkgaXMgbmFtZXNwYWNlZCB1bmRlciwgc28gYW4gT0JPIHJlc3VsdFxuICogY2Fubm90IGJlIHJlYWQgYmFjayBieSBhbm90aGVyIGNhbGxlci5cbiAqXG4gKiBQcmVmZXJzIHRoZSB7QGxpbmsgVXNlcn0gdGhhdCB7QGxpbmsgTWFzdHJhU2VydmVyfSBzdGFtcHMgb24gdGhlIHJlcXVlc3RcbiAqIGNvbnRleHQsIHdob3NlIGlkIGFscmVhZHkgZm9sbG93cyB7QGxpbmsgYXR0cmlidXRlZFVzZXJJZH0uIFRoZSBNQ1AgdHJhbnNwb3J0XG4gKiByb3V0ZXMgZG8gbm90IHRocmVhZCB0aGF0IGNvbnRleHQgaW50byB0b29sIGV4ZWN1dGlvbiwgc28gdGhvc2UgZmFsbCBiYWNrIHRvXG4gKiB0aGUgYW1iaWVudCBleGVjdXRpb24gY29udGV4dCAodGhlIGFjdGl2ZSBPQk8gc2NvcGUsIG9yIHRoZSBzZXJ2aWNlXG4gKiBwcmluY2lwYWwpLiBBIGNhbGxlciBob2xkaW5nIGFuIGV4cHJlc3MgcmVxdWVzdCBzaG91bGQgYnVpbGQgaXRzIGtleSBmcm9tXG4gKiB7QGxpbmsgYXR0cmlidXRlZFVzZXJJZH0gaW5zdGVhZCwgc28gdGhlIGZvcndhcmRlZCB1c2VyIGlzIG5vdCBsb3N0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVVzZXJLZXkocmVxdWVzdENvbnRleHQ/OiBSZXF1ZXN0Q29udGV4dCk6IHN0cmluZyB7XG4gIGNvbnN0IHVzZXIgPSByZXF1ZXN0Q29udGV4dD8uZ2V0KE1BU1RSQV9VU0VSX0tFWSkgYXMgVXNlciB8IHVuZGVmaW5lZDtcbiAgcmV0dXJuIHVzZXI/LmlkID8/IGV4ZWN1dGlvbkNvbnRleHRVc2VySWQoZ2V0RXhlY3V0aW9uQ29udGV4dCgpKTtcbn1cblxuLyoqIFBnVmVjdG9yIGNvbmZpZyB3aXRoIGFuIG9wdGlvbmFsIE1hc3RyYSBzdG9yZSBpZC4gKi9cbmV4cG9ydCB0eXBlIE1hc3RyYU1lbW9yeUNvbmZpZyA9IFBnVmVjdG9yQ29uZmlnICYge1xuICBpZD86IHN0cmluZztcbn07XG5cbi8qKiBNYXN0cmEgbmF0aXZlIHdvcmtzcGFjZSBza2lsbC1zZWFyY2ggY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFzdHJhV29ya3NwYWNlU2tpbGxzQ29uZmlnIHtcbiAgLyoqIE1heGltdW0gc2tpbGwgbWF0Y2hlcyByZXR1cm5lZCBieSBvbmUgc2VhcmNoLiBEZWZhdWx0cyB0byA1LiAqL1xuICB0b3BLPzogbnVtYmVyO1xuICAvKiogTWluaW11bSBCTTI1IHJlbGV2YW5jZSBzY29yZS4gRGVmYXVsdHMgdG8gMC4xLiAqL1xuICBtaW5TY29yZT86IG51bWJlcjtcbiAgLyoqIExvYWRlZC1za2lsbCB0aHJlYWQtc3RhdGUgVFRMIGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdHMgdG8gb25lIGhvdXIuICovXG4gIHR0bE1zPzogbnVtYmVyO1xufVxuXG4vKiogTmF0aXZlIE1hc3RyYSBDb2RlIE1vZGUgZXhlY3V0aW9uIHRyYW5zcG9ydC4gKi9cbmV4cG9ydCB0eXBlIE1hc3RyYUNvZGVNb2RlVHJhbnNwb3J0ID0gXCJhdXRvXCIgfCBcImlzb2xhdGVkLXZtXCIgfCBcInF1aWNranNcIjtcblxuLyoqIE5hdGl2ZSBNYXN0cmEgQ29kZSBNb2RlIHNldHRpbmdzIGZvciBzYW5kYm94ZWQgbXVsdGktdG9vbCBvcmNoZXN0cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXN0cmFDb2RlTW9kZUNvbmZpZyB7XG4gIC8qKiBDb2RlIE1vZGUgZXhlY3V0aW9uIHRyYW5zcG9ydC4gKi9cbiAgdHJhbnNwb3J0OiBNYXN0cmFDb2RlTW9kZVRyYW5zcG9ydDtcbiAgLyoqIEdlbmVyYXRlZCBvcmNoZXN0cmF0aW9uIHRvb2wgaWQuIERlZmF1bHRzIHRvIGBleGVjdXRlX3R5cGVzY3JpcHRgLiAqL1xuICBpZD86IHN0cmluZztcbiAgLyoqIE1heGltdW0gb3JjaGVzdHJhdGlvbiBwcm9ncmFtIHJ1bnRpbWUgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0cyB0byAzMCBzZWNvbmRzLiAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEZpbmUtZ3JhaW5lZCBjb250cm9sIGZvciB0aGUgb3B0aW9uYWwgTUNQIHNlcnZlciBleHBvc3VyZVxuICogKHtAbGluayBNYXN0cmFQbHVnaW5Db25maWcubWNwfSkuIEV2ZXJ5IGZpZWxkIGlzIG9wdGlvbmFsOyB0aGUgb2JqZWN0XG4gKiBmb3JtIG9ubHkgbmVlZHMgdG8gc2V0IHdoYXQgZGlmZmVycyBmcm9tIHRoZSBkZWZhdWx0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXN0cmFNY3BDb25maWcge1xuICAvKipcbiAgICogU2VydmVyIGlkIHVzZWQgaW4gdGhlIHJvdXRlIHBhdGggKGAvbWNwLzxzZXJ2ZXJJZD4vLi4uYCkgYW5kIGFzIHRoZVxuICAgKiBNQ1AgcmVnaXN0cnkgaWQuIERlZmF1bHRzIHRvIHRoZSBwbHVnaW4ncyByZWdpc3RlcmVkIG5hbWUuXG4gICAqL1xuICBzZXJ2ZXJJZD86IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbmFtZSBhZHZlcnRpc2VkIG92ZXIgTUNQLiBEZWZhdWx0cyB0byBgXCI8ZGlzcGxheU5hbWU+IE1DUFwiYC4gKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqIFNlbWFudGljIHZlcnNpb24gYWR2ZXJ0aXNlZCBvdmVyIE1DUC4gRGVmYXVsdHMgdG8gYFwiMS4wLjBcImAuICovXG4gIHZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBodW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBhZHZlcnRpc2VkIG92ZXIgTUNQLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEV4cG9zZSBldmVyeSByZWdpc3RlcmVkIGFnZW50IGFzIGFuIGBhc2tfPGFnZW50SWQ+YCBNQ1AgdG9vbC5cbiAgICogRGVmYXVsdHMgdG8gYHRydWVgIC0gdGhpcyBpcyB0aGUgXCJsZXZlcmFnZSB0aGUgTWFzdHJhIGFnZW50cyBvdmVyXG4gICAqIE1DUFwiIGJlaGF2aW9yIG1vc3QgY2FsbGVycyB3YW50LlxuICAgKi9cbiAgYWdlbnRzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsc28gZXhwb3NlIHRoZSBwbHVnaW4ncyBhbWJpZW50IHRvb2xzICh0aGUgYnVpbHQtaW4gYHJlbmRlcl9kYXRhYFxuICAgKiBwbHVzIGFueXRoaW5nIGluIGBjb25maWcudG9vbHNgKSBhcyBNQ1AgdG9vbHMuIERlZmF1bHRzIHRvIGBmYWxzZWA6XG4gICAqIHRoZSBhbWJpZW50IHRvb2xzIGFzc3VtZSBhbiBpbi1wcm9jZXNzIGNoYXQgdHVybiAodGhleSBwdWJsaXNoXG4gICAqIHdyaXRlciBldmVudHMgdGhlIGNoYXQgVUkgY29uc3VtZXMpLCBzbyB0aGV5IGFyZW4ndCB1c2VmdWwgdG8gYVxuICAgKiBzdGFuZGFsb25lIE1DUCBjbGllbnQuIFR1cm4gdGhpcyBvbiBvbmx5IHdoZW4gdGhvc2UgdG9vbHMgYXJlIHNhZmVcbiAgICogdG8gY2FsbCBvdXQtb2YtYmFuZC5cbiAgICovXG4gIHRvb2xzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEV4dHJhIHRvb2xzIHRvIGV4cG9zZSBvdmVyIE1DUCBiZXlvbmQgdGhlIGFnZW50IC8gYW1iaWVudCBzZXRzLlxuICAgKiBVc2UgdGhpcyBmb3IgdG9vbHMgd3JpdHRlbiBzcGVjaWZpY2FsbHkgZm9yIE1DUCBjb25zdW1lcnMuXG4gICAqL1xuICBleHRyYVRvb2xzPzogTWFzdHJhVG9vbHM7XG59XG5cbi8qKiBPcHRpb25hbCBwb3N0LXR1cm4gZm9sbG93LXVwIHN1Z2dlc3Rpb24gcG9saWN5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb2xsb3dVcFN1Z2dlc3Rpb25zQ29uZmlnIHtcbiAgLyoqIE5hdGl2ZSBHZW5pZSBvbmx5LCBDaGF0RmFzdCBnZW5lcmF0ZWQgb25seSwgb3IgYXV0b21hdGljIHNlbGVjdGlvbiB3aGVuIHRydWUuICovXG4gIG1vZGU6IHRydWUgfCBcImdlbmVyYXRlZFwiIHwgXCJnZW5pZVwiO1xuICAvKiogTWF4aW11bSBxdWVzdGlvbnMgZW1pdHRlZCBmb3Igb25lIHR1cm4uIERlZmF1bHRzIHRvIDMsIG1heGltdW0gMTAuICovXG4gIGxpbWl0PzogbnVtYmVyO1xuICAvKiogVGFpbC1nZW5lcmF0aW9uIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiAqL1xuICB0aW1lb3V0TXM/OiBudW1iZXI7XG4gIC8qKiBBbHNvIGV4cG9zZSB0aGUgZ2VuZXJhdG9yIGFzIGFuIGV4cGxpY2l0bHkgY2FsbGFibGUgYWdlbnQgdG9vbC4gKi9cbiAgZXhwb3NlVG9vbD86IGJvb2xlYW47XG59XG5cbi8qKiBDb25maWd1cmF0aW9uIGFjY2VwdGVkIGJ5IHRoZSBNYXN0cmEgQXBwS2l0IHBsdWdpbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFzdHJhUGx1Z2luQ29uZmlnIGV4dGVuZHMgQmFzZVBsdWdpbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBSdW4gdHVybnMgdGhyb3VnaCBNYXN0cmEncyBldmVudGVkIGR1cmFibGUgYWdlbnQgc28gZXhlY3V0aW9uIGNvbnRpbnVlc1xuICAgKiBhZnRlciBhIGJyb3dzZXIgZGlzY29ubmVjdCBhbmQgY2FuIGJlIG9ic2VydmVkIGFnYWluIGJ5IHJ1biBpZC4gRGVmYXVsdHNcbiAgICogdG8gYHRydWVgLlxuICAgKi9cbiAgYmFja2dyb3VuZFR1cm5zPzogYm9vbGVhbjtcbiAgLyoqIEFJIFNESyBwcm92aWRlci1vcHRpb25zIG5hbWVzcGFjZS4gRGVmYXVsdHMgdG8gYFwib3BlbmFpXCJgOyBubyBlbnYgZmFsbGJhY2suICovXG4gIHByb3ZpZGVySWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQb3N0Z3Jlc1N0b3JlIGZvciBNYXN0cmEgdGhyZWFkcy9tZXNzYWdlcy4gYHRydWVgIGNhcHR1cmVzIHRoZVxuICAgKiBgbGFrZWJhc2VgIHBsdWdpbidzIGV4aXN0aW5nIHNlcnZpY2UtcHJpbmNpcGFsIHBvb2w7IGFuIG9iamVjdCBvcGVucyBhXG4gICAqIHNlcGFyYXRlbHkgY29uZmlndXJlZCBzdG9yZS5cbiAgICovXG4gIHN0b3JhZ2U/OiBib29sZWFuIHwgUG9zdGdyZXNTdG9yZUNvbmZpZztcbiAgLyoqXG4gICAqIFBnVmVjdG9yIHN0b3JlIGZvciBNYXN0cmEgbWVtb3J5IHJlY2FsbC4gYHRydWVgIGNhcHR1cmVzIHRoZVxuICAgKiBgbGFrZWJhc2VgIHBsdWdpbidzIGV4aXN0aW5nIHNlcnZpY2UtcHJpbmNpcGFsIHBvb2w7IGFuIG9iamVjdCBvcGVucyBhXG4gICAqIHNlcGFyYXRlbHkgY29uZmlndXJlZCBzdG9yZS5cbiAgICovXG4gIG1lbW9yeT86IGJvb2xlYW4gfCBNYXN0cmFNZW1vcnlDb25maWc7XG4gIC8qKlxuICAgKiBFeHBvc2UgZXhlY3V0YWJsZSB0b29scyBhdmFpbGFibGUgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdCB0aHJvdWdoIG5hdGl2ZVxuICAgKiBNYXN0cmEgQ29kZSBNb2RlLiBEZWZhdWx0cyB0byBgZmFsc2VgLiBgYXV0b2Agc2VsZWN0cyBhbiBpbnN0YWxsZWQsXG4gICAqIHJ1bnRpbWUtc3VwcG9ydGVkIG9wdGlvbmFsIHRyYW5zcG9ydCBkdXJpbmcgc3RhcnR1cCBhbmQgbGVhdmVzIENvZGUgTW9kZVxuICAgKiBkaXNhYmxlZCB3aGVuIG5vbmUgaXMgYXZhaWxhYmxlLiBFeHBsaWNpdCB0cmFuc3BvcnQgdmFsdWVzIGZhaWwgc3RhcnR1cFxuICAgKiB3aGVuIHRoZWlyIG9wdGlvbmFsIGRlcGVuZGVuY3kgb3IgcnVudGltZSBzdXBwb3J0IGlzIHVuYXZhaWxhYmxlLiBUaGVzZVxuICAgKiB0cmFuc3BvcnRzIGRvIG5vdCBleGVjdXRlIHRocm91Z2ggdGhlIHdvcmtzcGFjZSBjb21tYW5kIHNhbmRib3g7IFNTSCBpc1xuICAgKiB1c2VkIG9ubHkgd2hlbiBhbiBleHBvc2VkIFNTSC1iYWNrZWQgdG9vbCBpcyBjYWxsZWQuXG4gICAqL1xuICBjb2RlTW9kZT86IGZhbHNlIHwgTWFzdHJhQ29kZU1vZGVUcmFuc3BvcnQgfCBNYXN0cmFDb2RlTW9kZUNvbmZpZztcbiAgLyoqXG4gICAqIFNhbmRib3ggZm9yIGF1dG8tY3JlYXRlZCBhZ2VudCB3b3Jrc3BhY2VzLiBEZWZhdWx0cyB0byBNb250eS4gYGZhbHNlYFxuICAgKiBkaXNhYmxlcyBjb21tYW5kIGV4ZWN1dGlvbjsgYHRydWVgIG9yIGBcIm1vbnR5XCJgIHNlbGVjdHMgTW9udHk7IGFuIGV4cGxpY2l0XG4gICAqIE1hc3RyYSBzYW5kYm94IG9yIHJlc29sdmVyIHN1cHBsaWVzIGEgcmVtb3RlIHRyYW5zcG9ydC4gQW4gYWdlbnQgd2l0aCBhblxuICAgKiBleHBsaWNpdCBjdXN0b20gYHdvcmtzcGFjZWAga2VlcHMgdGhhdCB3b3Jrc3BhY2UgYW5kIGl0cyBzYW5kYm94LlxuICAgKi9cbiAgc2FuZGJveD86IGJvb2xlYW4gfCBcIm1vbnR5XCIgfCBXb3Jrc3BhY2VTYW5kYm94IHwgV29ya3NwYWNlU2FuZGJveFJlc29sdmVyO1xuICAvKiogQWRkIHVzZXItc2NvcGVkIGAvdG1wYCBvbmx5IHdoZW4gbm8gY29uZmlndXJlZCB3b3Jrc3BhY2UgcGF0aCBtb3VudHMgd3JpdGFibGUuICovXG4gIHdvcmtzcGFjZUZhbGxiYWNrVG9UbXA/OiBib29sZWFuO1xuICAvKiogTmF0aXZlIE1hc3RyYSB3b3Jrc3BhY2UgdG9vbCBhdmFpbGFiaWxpdHksIGFwcHJvdmFsLCBhbmQgaG9vayBjb25maWd1cmF0aW9uLiAqL1xuICB3b3Jrc3BhY2VUb29scz86IFdvcmtzcGFjZVRvb2xzQ29uZmlnO1xuICAvKipcbiAgICogVXNlIE1hc3RyYSdzIG5hdGl2ZSB3b3Jrc3BhY2Ugc2tpbGwgbWFuYWdlci4gRGVmYXVsdHMgdG8gdHJ1ZS4gUGFzcyBhblxuICAgKiBvYmplY3QgdG8gdHVuZSBvbi1kZW1hbmQgZGlzY292ZXJ5IGFuZCBsb2FkZWQtc2tpbGwgc3RhdGUuXG4gICAqL1xuICB3b3Jrc3BhY2VTa2lsbHM/OiBib29sZWFuIHwgTWFzdHJhV29ya3NwYWNlU2tpbGxzQ29uZmlnO1xuICAvKipcbiAgICogQ29kZS1kZWZpbmVkIGFnZW50cy4gQWNjZXB0cyB0aHJlZSBzaGFwZXMgZm9yIGNvbnZlbmllbmNlOlxuICAgKlxuICAgKiAtICoqUmVjb3JkKio6IGB7IGFuYWx5c3Q6IGRlZiwgaGVscGVyOiBkZWYgfWAgLSBrZXlzIGJlY29tZSB0aGVcbiAgICogICByZWdpc3RlcmVkIGlkcyBhbmQgdGhlIGZpcnN0IGtleSBpcyB0aGUgZGVmYXVsdC5cbiAgICogLSAqKlNpbmdsZSBkZWZpbml0aW9uKio6IGBkZWZgIC0gcmVnaXN0ZXJlZCB1bmRlclxuICAgKiAgIGBzbHVnaWZ5KGRlZi5uYW1lKWAgKG9yIGBcImRlZmF1bHRcImAgd2hlbiBgbmFtZWAgaXMgb21pdHRlZCkgYW5kXG4gICAqICAgYXV0b21hdGljYWxseSBtYXJrZWQgYXMgdGhlIGRlZmF1bHQgYWdlbnQuXG4gICAqIC0gKipBcnJheSoqOiBgW2RlZjEsIGRlZjJdYCAtIGVhY2ggcmVnaXN0ZXJlZCB1bmRlclxuICAgKiAgIGBzbHVnaWZ5KGRlZi5uYW1lKWAgKG9yIGBhZ2VudF8ke2l9YCB3aGVuIGBuYW1lYCBpcyBvbWl0dGVkKTtcbiAgICogICB0aGUgZmlyc3QgZW50cnkgaXMgdGhlIGRlZmF1bHQuXG4gICAqXG4gICAqIEVhY2ggZW50cnkgYmVjb21lcyBhIE1hc3RyYSBgQWdlbnRgIHJlYWNoYWJsZSBhdFxuICAgKiBgL2FwaS88cGx1Z2luPi9yb3V0ZS9jaGF0LzxpZD5gICh0aGUgY2hhdCByb3V0ZSBhbHNvIG1hdGNoZXNcbiAgICogYDphZ2VudElkYCkuIFdoZW4gYGFnZW50c2AgaXMgb21pdHRlZCBlbnRpcmVseSwgdGhlIHBsdWdpblxuICAgKiByZWdpc3RlcnMgYSBzaW5nbGUgYnVpbHQtaW4gYGRlZmF1bHRgIGFuYWx5c3Qgc28gdGhlIGJhcmVcbiAgICogYG1hc3RyYSgpYCBjYWxsIHN0aWxsIG1vdW50cyBhIHdvcmtpbmcgY2hhdCBlbmRwb2ludC5cbiAgICpcbiAgICogQGV4YW1wbGUgU2luZ2xlLWFnZW50IHNob3J0aGFuZFxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoe1xuICAgKiAgIGFnZW50czogY3JlYXRlQWdlbnQoeyBpbnN0cnVjdGlvbnM6IFwiLi4uXCIgfSksXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGUgQXJyYXlcbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHtcbiAgICogICBhZ2VudHM6IFtcbiAgICogICAgIGNyZWF0ZUFnZW50KHsgbmFtZTogXCJhbmFseXN0XCIsIGluc3RydWN0aW9uczogXCIuLi5cIiB9KSxcbiAgICogICAgIGNyZWF0ZUFnZW50KHsgbmFtZTogXCJoZWxwZXJcIiwgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiIH0pLFxuICAgKiAgIF0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGUgUmVjb3JkIChleHBsaWNpdCBpZHMpXG4gICAqIGBgYHRzXG4gICAqIG1hc3RyYSh7XG4gICAqICAgYWdlbnRzOiB7XG4gICAqICAgICBhbmFseXN0OiBjcmVhdGVBZ2VudCh7IGluc3RydWN0aW9uczogXCIuLi5cIiB9KSxcbiAgICogICAgIGhlbHBlcjogY3JlYXRlQWdlbnQoeyBpbnN0cnVjdGlvbnM6IFwiLi4uXCIgfSksXG4gICAqICAgfSxcbiAgICogICBkZWZhdWx0QWdlbnQ6IFwiYW5hbHlzdFwiLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhZ2VudHM/OlxuICAgIHwgUmVjb3JkPHN0cmluZywgQW55TWFzdHJhQWdlbnREZWZpbml0aW9uPlxuICAgIHwgQW55TWFzdHJhQWdlbnREZWZpbml0aW9uXG4gICAgfCBBbnlNYXN0cmFBZ2VudERlZmluaXRpb25bXTtcbiAgLyoqXG4gICAqIEFtYmllbnQgdG9vbHMgc3ByZWFkIGludG8gZXZlcnkgcmVnaXN0ZXJlZCBhZ2VudCdzIHRvb2xzIHJlY29yZDtcbiAgICogcGVyLWFnZW50IHRvb2xzIHdpbiBvbiBrZXkgY29sbGlzaW9uLiBVc2UgZm9yIGEgc21hbGwgc2hhcmVkXG4gICAqIGxpYnJhcnk7IGZvciBwZXItYWdlbnQgdG9vbHMgc2V0IGBhZ2VudHNbaWRdLnRvb2xzYCBpbnN0ZWFkLlxuICAgKi9cbiAgdG9vbHM/OiBNYXN0cmFUb29scztcbiAgLyoqXG4gICAqIENvZGUtZGVmaW5lZCBNYXN0cmEgd29ya2Zsb3dzIHJlZ2lzdGVyZWQgb24gdGhlIGhvc3RlZCBpbnN0YW5jZS5cbiAgICogRGVmZXJyZWQgc2libGluZyBwbHVnaW5zIG1heSBhbHNvIHJlZ2lzdGVyIHRocm91Z2ggdGhlIHBsdWdpbiBleHBvcnRcbiAgICogYmVmb3JlIHRoZSBpbnN0YW5jZSBpcyBidWlsdC5cbiAgICovXG4gIHdvcmtmbG93cz86IFJlY29yZDxzdHJpbmcsIEFueVdvcmtmbG93PjtcbiAgLyoqXG4gICAqIEFnZW50IGlkIHVzZWQgd2hlbiB0aGUgY2xpZW50IGRvZXNuJ3Qgc3BlY2lmeSBvbmUgKHRoZSBiYXJlLFxuICAgKiB1bi1zdWZmaXhlZCBoaXN0b3J5IC8gc3VnZ2VzdGlvbnMgcm91dGVzIHJlc29sdmUgdG8gaXQpLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgZmlyc3Qga2V5IGluIGBhZ2VudHNgIChvciBgXCJkZWZhdWx0XCJgIHdoZW5cbiAgICogYGFnZW50c2AgaXMgb21pdHRlZCkuIE11c3QgbWF0Y2ggYW4gaWQgaW4gYGFnZW50c2Agd2hlbiBib3RoIGFyZVxuICAgKiBzZXQ7IGEgbWlzbWF0Y2ggdGhyb3dzIGF0IHNldHVwIHdpdGggdGhlIGF2YWlsYWJsZSBjYW5kaWRhdGVzLlxuICAgKi9cbiAgZGVmYXVsdEFnZW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogUGx1Z2luLWxldmVsIGRlZmF1bHQgbW9kZWwgYXBwbGllZCB0byBldmVyeSBhZ2VudCB0aGF0IG9taXRzIGl0c1xuICAgKiBvd24gYG1vZGVsYC4gTWlycm9ycyBBcHBLaXQncyBgYWdlbnRzKHsgZGVmYXVsdE1vZGVsIH0pYC5cbiAgICpcbiAgICogLSBgc3RyaW5nYDogc2hvcnRoYW5kIGZvciBcInVzZSB0aGUgT0JPIGF1dG8tcmVzb2x2ZXIgYnV0IHN3YXAgdGhlXG4gICAqICAgYG1vZGVsSWRgXCIgKGUuZy4gYFwiZGF0YWJyaWNrcy1jbGF1ZGUtc29ubmV0LTQtNlwiYCkuXG4gICAqIC0gQW55IG90aGVyIE1hc3RyYSBgRHluYW1pY0FyZ3VtZW50PE1hc3RyYU1vZGVsQ29uZmlnPmA6IHBhc3NlZFxuICAgKiAgIHRocm91Z2ggdmVyYmF0aW0uIFVzZSB0aGlzIHdoZW4geW91IG5lZWQgZnVsbCBjb250cm9sIG92ZXIgYXV0aFxuICAgKiAgIG9yIGBwcm92aWRlcklkYC5cbiAgICpcbiAgICogUmVzb2x1dGlvbiBvcmRlciBwZXIgYWdlbnQ6IGBkZWYubW9kZWxgIOKGkiBgZGVmYXVsdE1vZGVsYCDihpJcbiAgICogYERBVEFCUklDS1NfU0VSVklOR19FTkRQT0lOVF9OQU1FYCDihpIgYnVpbHQtaW4gYC9zZXJ2aW5nLWVuZHBvaW50c2BcbiAgICogcmVzb2x2ZXIuXG4gICAqL1xuICBkZWZhdWx0TW9kZWw/OiBBZ2VudENvbmZpZ1tcIm1vZGVsXCJdIHwgc3RyaW5nO1xuICAvKipcbiAgICogRnV6enktbWF0Y2ggbG9vc2UgbW9kZWwgbmFtZXMgKGBcImNsYXVkZSBzb25uZXRcImApIGFnYWluc3QgdGhlIHdvcmtzcGFjZSdzXG4gICAqIE1vZGVsIFNlcnZpbmcgZW5kcG9pbnRzLiBEZWZhdWx0cyB0byBgdHJ1ZWA7IG5vIGVudiBmYWxsYmFjay5cbiAgICpcbiAgICogU2V0IGBmYWxzZWAgdG8gcmVxdWlyZSBleGFjdCBlbmRwb2ludCBuYW1lcyBldmVyeXdoZXJlLlxuICAgKi9cbiAgbW9kZWxGdXp6eU1hdGNoPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEZ1c2UuanMgc2NvcmUgdGhyZXNob2xkIGZvciB0aGUgZnV6enkgbWF0Y2hlciwgMCAoZXhhY3QpIHRvIDEgKGFueXRoaW5nKS5cbiAgICogRGVmYXVsdHMgdG8gYDAuNGA7IG5vIGVudiBmYWxsYmFjay5cbiAgICpcbiAgICogTG93ZXIgdmFsdWVzIHJlamVjdCBsb29zZSBtYXRjaGVzOyByYWlzZSBpdCBpZiB5b3UgaGF2ZSBhIHNwcmF3bGluZ1xuICAgKiBlbmRwb2ludCBjYXRhbG9ndWUgd2l0aCBzaW1pbGFyLWxvb2tpbmcgbmFtZXMuXG4gICAqL1xuICBtb2RlbEZ1enp5VGhyZXNob2xkPzogbnVtYmVyO1xuICAvKipcbiAgICogVFRMIGZvciB0aGUgaW4tbWVtb3J5IHNlcnZpbmctZW5kcG9pbnRzIGxpc3QgY2FjaGUsIGluIG1pbGxpc2Vjb25kcy5cbiAgICogRGVmYXVsdHMgdG8gNSBtaW51dGVzOyBubyBlbnYgZmFsbGJhY2suXG4gICAqXG4gICAqIFRoZSBjYWNoZSBpcyBwZXIgd29ya3NwYWNlIGhvc3QgYW5kIHNoYXJlZCBhY3Jvc3MgdXNlcnM7IGNvbmN1cnJlbnRcbiAgICogY2FsbGVycyBjb2FsZXNjZSBvbiBhIHNpbmdsZSBpbi1mbGlnaHQgZmV0Y2guXG4gICAqL1xuICBtb2RlbENhY2hlVHRsTXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBMZXQgY2xpZW50cyBwaWNrIHRoZSBiYWNraW5nIGVuZHBvaW50IHBlciByZXF1ZXN0LiBEZWZhdWx0cyB0byBgdHJ1ZWA7XG4gICAqIG5vIGVudiBmYWxsYmFjay5cbiAgICpcbiAgICogUmVhZHMgdGhlIGBYLU1hc3RyYS1Nb2RlbGAgaGVhZGVyLCB0aGUgYD9tb2RlbD1gIHF1ZXJ5IHN0cmluZywgb3IgYVxuICAgKiBgbW9kZWxgIGJvZHkgZmllbGQsIGluIHRoYXQgb3JkZXIuIERpc2FibGUgd2hlbiBydW5uaW5nIG11bHRpLXRlbmFudFxuICAgKiB3aGVyZSB1bnRydXN0ZWQgY2xpZW50cyBzaG91bGRuJ3QgY2hvb3NlIHRoZSBlbmRwb2ludC5cbiAgICovXG4gIG1vZGVsT3ZlcnJpZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogUHJpb3JpdHktb3JkZXJlZCBsaXN0IG9mIGVuZHBvaW50IG5hbWVzIHRyaWVkICpmaXJzdCogd2hlbiBub1xuICAgKiBhZ2VudCAvIHBsdWdpbiAvIGVudiAvIHJlcXVlc3Qtb3ZlcnJpZGUgbW9kZWwgaWQgaXMgc2V0LCBhaGVhZCBvZlxuICAgKiB0aGUgZHluYW1pYyBzY29yZS1jbGFzc2lmaWVkIGNhdGFsb2d1ZS4gVGhlIHJlc29sdmVyIHBpY2tzIHRoZVxuICAgKiBmaXJzdCBpZCB0aGF0IGlzIGFjdHVhbGx5IHByZXNlbnQgaW4gdGhlIHdvcmtzcGFjZSdzXG4gICAqIGAvc2VydmluZy1lbmRwb2ludHNgIGxpc3RpbmcuXG4gICAqXG4gICAqIFdoZW4gdW5zZXQsIHJlc29sdXRpb24gaXMgZHJpdmVuIGJ5IHRoZSBsaXZlIEZvdW5kYXRpb24gTW9kZWwgQVBJXG4gICAqIGBxdWFsaXR5YCAvIGBzcGVlZGAgLyBgY29zdGAgc2NvcmVzOiBlbmRwb2ludHMgYXJlIGNsYXNzaWZpZWQgaW50b1xuICAgKiBjaGF0IGNsYXNzZXMgKGBjbGFzc2lmeUVuZHBvaW50c2ApIGFuZCB3YWxrZWQgYmVzdC1maXJzdFxuICAgKiAoQ2hhdFRoaW5raW5nIC0+IENoYXRCYWxhbmNlZCAtPiBDaGF0RmFzdCkuIFRoZSBhdXRvbWF0aWMgZGVmYXVsdCBpc1xuICAgKiBsaXZlLW9ubHkgYW5kIGZhaWxzIHdoZW4gbm8gbWF0Y2hpbmcgZW5kcG9pbnQgaXMgY3VycmVudGx5IGF2YWlsYWJsZS5cbiAgICogU2V0IHRoaXMgdG8gcGluIGEgcmVndWxhdGVkIHdvcmtzcGFjZSB0byBhbiBhcHByb3ZlZCBzdWJzZXQsIG9yIHRvIHB1dFxuICAgKiBjdXN0b20gZW5kcG9pbnRzIGluIGZyb250IG9mIHRoZSBhdXRvLWNsYXNzaWZpZWQgY2F0YWxvZ3VlLlxuICAgKi9cbiAgZGVmYXVsdE1vZGVsRmFsbGJhY2tzPzogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCAoZGVmYXVsdCksIGV2ZXJ5IGFnZW50IGdldHMgYSBidWlsdC1pbiBpbnB1dFxuICAgKiBwcm9jZXNzb3IgdGhhdCBzdHJpcHMgYGNoYXJ0SWRgIGZpZWxkcyBmcm9tIHByaW9yIGFzc2lzdGFudFxuICAgKiB0b29sLWludm9jYXRpb24gcmVzdWx0cyBiZWZvcmUgdGhleSByZWFjaCB0aGUgbW9kZWwuIFRoaXNcbiAgICogcHJldmVudHMgdGhlIG1vZGVsIGZyb20gcmV1c2luZyB0dXJuLXNjb3BlZCBjaGFydElkcyBpdCBzZWVzXG4gICAqIGluIG1lbW9yeSByZWNhbGwgKHdoaWNoIHdvdWxkIGxlYXZlIGBbY2hhcnQ6PGlkPl1gIG1hcmtlcnNcbiAgICogcG9pbnRpbmcgYXQgd3JpdGVyIGV2ZW50cyB0aGF0IG5vIGxvbmdlciBleGlzdCkuXG4gICAqXG4gICAqIFNldCB0byBgZmFsc2VgIHRvIG9wdCBvdXQgLSB1c2VmdWwgaWYgYSBub24tZGVmYXVsdCBhZ2VudFxuICAgKiBuZWVkcyBmdWxsIHZpc2liaWxpdHkgaW50byBwcmlvciBjaGFydElkcyAoZS5nLiBhbiBhdWRpdFxuICAgKiBhZ2VudCByZWFzb25pbmcgYWJvdXQgY2hhcnQgbGluZWFnZSkuXG4gICAqL1xuICBzdHJpcFN0YWxlQ2hhcnRzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFN0eWxlIGd1YXJkcmFpbHMgYXBwZW5kZWQgdG8gZXZlcnkgYWdlbnQncyBgaW5zdHJ1Y3Rpb25zYCB0byBjdXJiXG4gICAqIGNvbW1vbiBMTE0taXNtcyAoZW0gZGFzaGVzLCBlbW9qaXMsIHN5Y29waGFudGljIG9wZW5lcnMsIHRocm93YXdheVxuICAgKiBjbG9zZXJzLCBleGNlc3NpdmUgaGVkZ2luZykuXG4gICAqXG4gICAqIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQpOiB1c2UgdGhlIGJ1aWx0LWluXG4gICAqICAgYERFRkFVTFRfU1RZTEVfSU5TVFJVQ1RJT05TYCBmcm9tIGBhZ2VudHMudHNgLlxuICAgKiAtIGBzdHJpbmdgOiByZXBsYWNlIHRoZSBkZWZhdWx0IHdpdGggdGhlIHN1cHBsaWVkIGJsb2NrLlxuICAgKiAtIGBmYWxzZWA6IGRpc2FibGUgZW50aXJlbHkgKGFnZW50cyBzZWUgb25seSB0aGVpciBiZXNwb2tlXG4gICAqICAgYGluc3RydWN0aW9uc2ApLlxuICAgKlxuICAgKiBBcHBlbmRlZCAobm90IHByZXBlbmRlZCkgc28gdGhlIGFnZW50J3Mgcm9sZSBhbmQgcnVsZXMgY29tZSBmaXJzdFxuICAgKiBhbmQgdGhlIHN0eWxlIGJsb2NrIGxlYW5zIG9uIHRoZSBtb2RlbCdzIHJlY2VuY3kgYmlhcy5cbiAgICovXG4gIHN0eWxlSW5zdHJ1Y3Rpb25zPzogc3RyaW5nIHwgZmFsc2U7XG4gIC8qKlxuICAgKiBHZW5pZSBzcGFjZXMgdGhpcyBwbHVnaW4ncyBhZ2VudHMgY2FuIGRlbGVnYXRlIHRvLiBPbmUgTWFzdHJhXG4gICAqIHRvb2wgaXMgcmVnaXN0ZXJlZCBwZXIgYWxpYXMgKGBnZW5pZWAgZm9yIHRoZSB3ZWxsLWtub3duXG4gICAqIGBkZWZhdWx0YCBhbGlhcywgYGdlbmllXzxhbGlhcz5gIG90aGVyd2lzZSkuIEVhY2ggdG9vbCBzcGluc1xuICAgKiB1cCBhIHBlci1xdWVzdGlvbiBHZW5pZSBzdWItYWdlbnQgdGhhdCBydW5zIERhdGFicmlja3NcbiAgICogXCJhZ2VudCBtb2RlXCIgYWdhaW5zdCB0aGUgc3BhY2UsIGJyb2FkY2FzdHMgd2lyZSBldmVudHMgdG8gdGhlXG4gICAqIFVJLCBmZXRjaGVzIHN0YXRlbWVudCByb3dzIGZvciBub24tZW1wdHkgcmVzdWx0cywgYW5kIHJldHVybnNcbiAgICogYSBgKHN0cmluZyB8IGRhdGEgfCBjaGFydClbXWAgc3VtbWFyeSB0aGUgaG9zdCBVSSByZW5kZXJzXG4gICAqIGlubGluZS5cbiAgICpcbiAgICogRW50cmllcyBhY2NlcHQgZWl0aGVyIGEgZnVsbCB7QGxpbmsgR2VuaWVTcGFjZUNvbmZpZ30gb2JqZWN0XG4gICAqIG9yIGEgYmFyZSBgc3BhY2VfaWRgIHN0cmluZyB3aGVuIG5vIGV4dHJhcyBhcmUgbmVlZGVkOlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoe1xuICAgKiAgIGdlbmllU3BhY2VzOiB7XG4gICAqICAgICBkZWZhdWx0OiBcIjAxZWYwZDNjMGUxYjFmNGE4ZDJjM2U0ZjVhNmI3YzhkXCIsXG4gICAqICAgICBmb3JlY2FzdHM6IHsgc3BhY2VJZDogXCIwMWVmLi4uXCIsIGhpbnQ6IFwid2Vla2x5IGRlbWFuZCBmb3JlY2FzdHNcIiB9LFxuICAgKiAgIH0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogUmVhY2ggdGhlIHNwYWNlcyBmcm9tIGFuIGFnZW50J3MgYHRvb2xzKHBsdWdpbnMpYCBjYWxsYmFjayB2aWFcbiAgICogYHBsdWdpbnMuZ2VuaWU/LnRvb2xraXQoKWA7IHRoZSByZXN1bHRpbmcgdG9vbHMgYWNjZXB0XG4gICAqIGB7IGNvbnRlbnQsIGNvbnZlcnNhdGlvbklkPyB9YCBhbmQgcmV0dXJuIGEgaHlkcmF0ZWQgc3VtbWFyeS5cbiAgICpcbiAgICogKipGYWxsYmFjayBkaXNjb3ZlcnkqKiAoaGlnaGVzdCBwcmVjZWRlbmNlIGZpcnN0KTogaWYgdGhpc1xuICAgKiBmaWVsZCBpcyBvbWl0dGVkLCB0aGUgR2VuaWUgYWdlbnQgYWxzbyBwaWNrcyB1cCBzcGFjZXMgZnJvbVxuICAgKiAoMSkgdGhlIEFwcEtpdCBgZ2VuaWUoeyBzcGFjZXM6IHsgLi4uIH0gfSlgIHBsdWdpbiBpbnN0YW5jZVxuICAgKiB3aGVuIHJlZ2lzdGVyZWQsIGFuZCAoMikgdGhlIGBEQVRBQlJJQ0tTX0dFTklFX1NQQUNFX0lEYFxuICAgKiBlbnYgdmFyIChyZWdpc3RlcmVkIHVuZGVyIHRoZSBgZGVmYXVsdGAgYWxpYXMpLiBUaGlzIGtlZXBzXG4gICAqIGV4aXN0aW5nIEFwcEtpdCBkZXBsb3ltZW50cyB3b3JraW5nIHdpdGhvdXQgcmVzdGF0aW5nIHRoZVxuICAgKiBzcGFjZXMgY29uZmlnIGluIHR3byBwbGFjZXMuXG4gICAqL1xuICBnZW5pZVNwYWNlcz86IEdlbmllU3BhY2VzQ29uZmlnO1xuICAvKipcbiAgICogVXNlIHRoZSBzdHJlYW1pbmcgR2VuaWUgQWdlbnQgTW9kZSBBUEkgZm9yIGBhc2tfZ2VuaWVgLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqIFNldCBgZmFsc2VgIHRvIGZvcmNlIHRoZSBsZWdhY3kgQ29udmVyc2F0aW9uIEFQSSBwb2xsaW5nIGRyaXZlci4gQVxuICAgKiBwcmUtc3RyZWFtIGZlYXR1cmUtZGlzYWJsZWQgb3IgcHJldmlldy10b2dnbGUgcmVzcG9uc2UgZmFsbHMgYmFja1xuICAgKiBhdXRvbWF0aWNhbGx5LiBEaXJlY3QgR2VuaWUgY2hhdCBhbHdheXMgcmVxdWlyZXMgQWdlbnQgTW9kZSBhbmQgaWdub3Jlc1xuICAgKiB0aGlzIG9wdGlvbi5cbiAgICovXG4gIGdlbmllQWdlbnRNb2RlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRUTCBmb3IgdGhlIGluLW1lbW9yeSBHZW5pZSBzcGFjZSBtZXRhZGF0YSBjYWNoZSwgaW5cbiAgICogbWlsbGlzZWNvbmRzLiBEZWZhdWx0cyB0byA1IG1pbnV0ZXMuIFRoZSBHZW5pZSBhZ2VudCBjYWxsc1xuICAgKiBgY2xpZW50LmdlbmllLmdldFNwYWNlKC4uLilgIG9uIGV2ZXJ5IGNvbGQtc3RhcnQgdG8gZ2V0IHRoZVxuICAgKiB0aXRsZSAvIGRlc2NyaXB0aW9uIC8gd2FyZWhvdXNlIGlkOyBjYWNoZWQgcmVzcG9uc2VzIHNraXAgdGhlXG4gICAqIHJvdW5kLXRyaXAgYW5kIGNvbmN1cnJlbnQgY2FsbGVycyBjb2FsZXNjZSBvbiBhIHNpbmdsZVxuICAgKiBpbi1mbGlnaHQgZmV0Y2guIERyb3AgdG8gYSBzbWFsbGVyIHZhbHVlIHdoZW4gYW5hbHlzdHMgYXJlXG4gICAqIGFjdGl2ZWx5IGVkaXRpbmcgc3BhY2UgbWV0YWRhdGEgYW5kIHlvdSB3YW50IGNoYW5nZXMgdmlzaWJsZVxuICAgKiB3aXRoaW4gc2Vjb25kczsgcmFpc2UgaXQgdG8gYW1vcnRpc2UgdGhlIHJvdW5kLXRyaXAgd2hlblxuICAgKiBzcGFjZSBtZXRhZGF0YSBpcyBlZmZlY3RpdmVseSBmcm96ZW4uXG4gICAqXG4gICAqIEJhY2tlZCBieSBBcHBLaXQncyBgQ2FjaGVNYW5hZ2VyYCwgc28gdGhlIGNhY2hlIHBhcnRpY2lwYXRlc1xuICAgKiBpbiB0ZWxlbWV0cnkgc3BhbnMgKGBjYWNoZS5nZXRPckV4ZWN1dGVgKSBhbmQgYmVuZWZpdHMgZnJvbVxuICAgKiBMYWtlYmFzZSBwZXJzaXN0ZW5jZSB3aGVuIHRoZSBgbGFrZWJhc2VgIHBsdWdpbiBpcyB3aXJlZCB1cC5cbiAgICovXG4gIGdlbmllU3BhY2VDYWNoZVR0bE1zPzogbnVtYmVyO1xuICAvKipcbiAgICogTWF4aW11bSBMTE0gc3RlcHMgZWFjaCBhZ2VudCBnZXRzIHBlciB0dXJuLiBPbmUgc3RlcCA9IG9uZVxuICAgKiByb3VuZC10cmlwIHRvIHRoZSB1bmRlcmx5aW5nIG1vZGVsIChhIHRvb2wgY2FsbCBjb25zdW1lcyBhXG4gICAqIHN0ZXAsIHRoZSBmaW5hbC10ZXh0IHJlcGx5IGNvbnN1bWVzIG9uZSB0b28pLiBBcHBsaWVzIHRvXG4gICAqIGV2ZXJ5IGFnZW50IHJlZ2lzdGVyZWQgdGhyb3VnaCB7QGxpbmsgTWFzdHJhUGx1Z2luQ29uZmlnLmFnZW50c31cbiAgICogLSBwZXItYWdlbnQgb3ZlcnJpZGVzIGFyZW4ndCBzdXJmYWNlZCB5ZXQgYmVjYXVzZSB0aGUgc2FtZVxuICAgKiBjZWlsaW5nIGhhcyBiZWVuIHN1ZmZpY2llbnQgYWNyb3NzIGV2ZXJ5IHdvcmtsb2FkIHdlJ3ZlIHJ1bi5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfQUdFTlRfTUFYX1NURVBTfSAoMjUpLCBzaXplZCB0byBmaXRcbiAgICogYSBkZWNvbXBvc2VkIEdlbmllIHR1cm4gKGdyb3VuZGluZyArIHNldmVyYWwgYGFza19nZW5pZWAgY2FsbHNcbiAgICogKyBgcHJlcGFyZV9jaGFydGAgcGVyIGRhdGFzZXQgKyB0aGUgZmluYWwtdGV4dCByZXBseSkgd2l0aFxuICAgKiBoZWFkcm9vbSBmb3IgdGhlIG1vZGVsIHRvIGNoYWluIGEgY291cGxlIG9mIGZvbGxvdy11cHMgYmVmb3JlXG4gICAqIGFuc3dlcmluZy4gTWFzdHJhJ3Mgb3duIGBhZ2VudC5nZW5lcmF0ZWAgZGVmYXVsdCBvZiA1IHdvdWxkXG4gICAqIGN1dCBtdWx0aS1zdGVwIG9yY2hlc3RyYXRpb24gb2ZmIGFmdGVyIDItMyB0b29sIGNhbGxzLCBzb1xuICAgKiBleHBsaWNpdGx5IHJhaXNpbmcgdGhlIGNlaWxpbmcgaGVyZSBpcyB3aGF0IGxldHMgdGhlXG4gICAqIGFnZW50LW1vZGUgbG9vcCBwbGF5IG91dC5cbiAgICpcbiAgICogTG93ZXIgd2hlbiBhbiB1bnVzdWFsbHkgc2xvdyBvciBleHBlbnNpdmUgbW9kZWwgbWFrZXMgbG9uZ1xuICAgKiB0dXJucyB1bmFmZm9yZGFibGU7IHJhaXNlIGZvciBleHBsb3JhdG9yeSB3b3JrbG9hZHMgdGhhdCBuZWVkXG4gICAqIHRvIGRyaWxsIGRlZXAgaW50byBhIGRhdGFzZXQgd2l0aGluIGEgc2luZ2xlIHR1cm4uXG4gICAqL1xuICBhZ2VudE1heFN0ZXBzPzogbnVtYmVyO1xuICAvKipcbiAgICogT3B0aW9uYWwgcG9zdC10dXJuIGZvbGxvdy11cCBxdWVzdGlvbnMuIGB0cnVlYCBzZWxlY3RzIHNvdXJjZXNcbiAgICogYXV0b21hdGljYWxseTsgYFwiZ2VuZXJhdGVkXCJgIG9yIGBcImdlbmllXCJgIHBpbnMgb25lIHNvdXJjZTsgYGZhbHNlYCBvclxuICAgKiBvbWlzc2lvbiBkaXNhYmxlcyBmb2xsb3ctdXBzLlxuICAgKi9cbiAgZm9sbG93VXBTdWdnZXN0aW9ucz86IGZhbHNlIHwgdHJ1ZSB8IFwiZ2VuZXJhdGVkXCIgfCBcImdlbmllXCIgfCBGb2xsb3dVcFN1Z2dlc3Rpb25zQ29uZmlnO1xuICAvKipcbiAgICogV2lyZSBNYXN0cmEgc3BhbnMgaW50byBBcHBLaXQncyBnbG9iYWwgT1RlbCBwaXBlbGluZSB2aWFcbiAgICogYEBtYXN0cmEvb3RlbC1icmlkZ2VgLlxuICAgKlxuICAgKiAtIGB1bmRlZmluZWRgIChkZWZhdWx0LCBhdXRvKTogb24gb25seSB3aGVuXG4gICAqICAgYE9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVGAgb3JcbiAgICogICBgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19FTkRQT0lOVGAgaXMgc2V0LiBXaGVuIHVuc2V0LCB0aGVcbiAgICogICBicmlkZ2UgaXMgc2tpcHBlZCBzbyBNYXN0cmEgZG9lcyBub3QgbG9nXG4gICAqICAgYFtPdGVsQnJpZGdlXSBObyBPVEVMIHNwYW4gZm91bmRgIG9uIHRoZSBub29wIHRyYWNlci5cbiAgICogLSBgdHJ1ZWA6IGZvcmNlIG9uIGV2ZW4gd2l0aG91dCBhbiBPVExQIGVuZHBvaW50LlxuICAgKiAtIGBmYWxzZWA6IGZvcmNlIG9mZi5cbiAgICovXG4gIG9ic2VydmFiaWxpdHk/OiBib29sZWFuO1xuICAvKipcbiAgICogRmVlZGJhY2sgZGVzdGluYXRpb24uIGBhdXRvYCBwcmVmZXJzIEdlbmllIHdoZW4gR2VuaWUgQWdlbnQgTW9kZSBpc1xuICAgKiBhdmFpbGFibGUsIG90aGVyd2lzZSBNTGZsb3cgd2hlbiB0cmFjaW5nIGlzIGNvbmZpZ3VyZWQsIG90aGVyd2lzZSBub25lLlxuICAgKiBFeHBsaWNpdCBgZ2VuaWVgIG9yIGBtbGZsb3dgIGZhaWxzIHN0YXJ0dXAgd2hlbiB1bmF2YWlsYWJsZS5cbiAgICovXG4gIGZlZWRiYWNrTW9kZT86IEZlZWRiYWNrTW9kZU9wdGlvbjtcbiAgLyoqXG4gICAqIEV4cG9zZSB0aGUgcGx1Z2luJ3MgYWdlbnRzIChhbmQgb3B0aW9uYWxseSB0b29scykgYXMgYSBNYXN0cmEgTUNQXG4gICAqIHNlcnZlciBzbyBleHRlcm5hbCBNQ1AgY2xpZW50cyAtIENsYXVkZSBEZXNrdG9wLCBDdXJzb3IsIHRoZSBNYXN0cmFcbiAgICogcGxheWdyb3VuZCwgb3IgYW5vdGhlciBhZ2VudCAtIGNhbiBjYWxsIHRoZW0gb3ZlciB0aGUgc3RhbmRhcmQgTUNQXG4gICAqIHRyYW5zcG9ydHMuIEVuYWJsZWQgYnkgZGVmYXVsdCAoYWdlbnRzIG9ubHkpOiB3cmFwcGluZyB0aGVcbiAgICogYWxyZWFkeS1yZWdpc3RlcmVkIGFnZW50cyBjb3N0cyBub3RoaW5nIGV4dHJhLCBzbyB0aGUgZW5kcG9pbnQgaXMgb25cbiAgICogb3V0IG9mIHRoZSBib3g7IG9ubHkgdGhlIGFtYmllbnQgdG9vbHMgKHdoaWNoIGFzc3VtZSBhbiBpbi1wcm9jZXNzXG4gICAqIGNoYXQgdHVybikgc3RheSBvZmYgdW5sZXNzIGV4cGxpY2l0bHkgb3B0ZWQgaW4uXG4gICAqXG4gICAqIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQpIC8gYHRydWVgOiBleHBvc2UgZXZlcnkgcmVnaXN0ZXJlZCBhZ2VudCBhc1xuICAgKiAgIGFuIGBhc2tfPGFnZW50SWQ+YCBNQ1AgdG9vbCB1bmRlciBhIHNlcnZlciB3aG9zZSBpZCBpcyB0aGUgcGx1Z2luXG4gICAqICAgbmFtZS5cbiAgICogLSBgZmFsc2VgOiBubyBNQ1AgZW5kcG9pbnRzLlxuICAgKiAtIHtAbGluayBNYXN0cmFNY3BDb25maWd9OiBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyIHRoZSBzZXJ2ZXIgaWQsXG4gICAqICAgYWR2ZXJ0aXNlZCBtZXRhZGF0YSwgYW5kIHdoaWNoIGFnZW50cyAvIHRvb2xzIGFyZSBleHBvc2VkLlxuICAgKlxuICAgKiBXaGVuIGVuYWJsZWQsIHRoZSBzdG9jayBNYXN0cmEgTUNQIHJvdXRlcyBtb3VudCB1bmRlciB0aGUgcGx1Z2luJ3NcbiAgICogYmFzZSBwYXRoIChubyBiZXNwb2tlIHJvdXRlIGlzIGFkZGVkIC0gdGhlIHNlcnZlciBpcyBoYW5kZWQgdG8gdGhlXG4gICAqIGBNYXN0cmFgIGluc3RhbmNlIHZpYSBgbWNwU2VydmVyc2AsIHdoaWNoIGBAbWFzdHJhL2V4cHJlc3NgIHNlcnZlcyk6XG4gICAqXG4gICAqIC0gU3RyZWFtYWJsZSBIVFRQOiBgUE9TVCAvYXBpLzxwbHVnaW4+L21jcC88c2VydmVySWQ+L21jcGBcbiAgICogLSBTU0UgKGxlZ2FjeSk6ICAgIGBHRVQgIC9hcGkvPHBsdWdpbj4vbWNwLzxzZXJ2ZXJJZD4vc3NlYFxuICAgKiAgICAgICAgICAgICAgICAgICAgYFBPU1QgL2FwaS88cGx1Z2luPi9tY3AvPHNlcnZlcklkPi9tZXNzYWdlc2BcbiAgICpcbiAgICogUmVxdWVzdHMgcnVuIHVuZGVyIHRoZSBzYW1lIEFwcEtpdCBPQk8gc2NvcGUgYXMgdGhlIGNoYXQgcm91dGVzLCBzb1xuICAgKiBhbiBhZ2VudCBpbnZva2VkIG92ZXIgTUNQIHJlc29sdmVzIGl0cyBtb2RlbCBhbmQgdG9vbHMgYXMgdGhlXG4gICAqIGNhbGxpbmcgdXNlci5cbiAgICovXG4gIG1jcD86IGJvb2xlYW4gfCBNYXN0cmFNY3BDb25maWc7XG4gIC8qKlxuICAgKiBIb3cgbXVjaCBvZiB0aGUgc3RvY2sgYEBtYXN0cmEvZXhwcmVzc2AgbWFuYWdlbWVudCBBUEkgaXMgcmVhY2hhYmxlXG4gICAqIHRocm91Z2ggdGhlIHBsdWdpbiBtb3VudC4gYEBtYXN0cmEvZXhwcmVzc2AgcmVnaXN0ZXJzIGl0cyBmdWxsIHJvdXRlXG4gICAqIHRhYmxlIChhZ2VudCBpbmZlcmVuY2UgcGx1cyBhZG1pbiAvIG11dGF0aW5nIHJvdXRlczogZGlyZWN0IHRvb2xcbiAgICogZXhlY3V0aW9uLCB3b3JrZmxvdyBjb250cm9sLCByYXcgbWVtb3J5IHJlYWQvd3JpdGUsIHRlbGVtZXRyeSwgbG9ncyxcbiAgICogc2NvcmVzKS4gQXBwS2l0IGFscmVhZHkgYXV0aGVudGljYXRlcyBldmVyeSByZXF1ZXN0IGFzIHRoZSBPQk8gdXNlcixcbiAgICogYnV0IG5vdGhpbmcgdGhlcmUgcmVzdHJpY3RzICp3aGljaCogb2YgdGhvc2Ugb3BlcmF0aW9ucyB0aGUgYnJvd3NlclxuICAgKiBjbGllbnQgbWF5IGludm9rZS5cbiAgICpcbiAgICogLSBgXCJzY29wZWRcImAgKGRlZmF1bHQpOiBvbmx5IHRoZSByb3V0ZXMgdGhlIGNoYXQgY2xpZW50IGxlZ2l0aW1hdGVseVxuICAgKiAgIG5lZWRzIGFyZSBkaXNwYXRjaGVkIHRvIE1hc3RyYSAtIGFnZW50IGluZmVyZW5jZVxuICAgKiAgIChgc3RyZWFtYCAvIGBnZW5lcmF0ZWAgLyBgbmV0d29ya2ApLCByZWFkLW9ubHkgYWdlbnQgbWV0YWRhdGEsIHRoaXNcbiAgICogICBwbHVnaW4ncyBvd24gT0JPLSBhbmQgcmVzb3VyY2Utc2NvcGVkIGAvcm91dGUvKmAgcm91dGVzIChoaXN0b3J5IC9cbiAgICogICB0aHJlYWRzKSwgYW5kLCB3aGVuIHtAbGluayBtY3B9IGlzIGVuYWJsZWQsIHRoZSBNQ1AgdHJhbnNwb3J0LlxuICAgKiAgIEV2ZXJ5dGhpbmcgZWxzZSAodG9vbCBleGVjdXRpb24sIHdvcmtmbG93IGNvbnRyb2wsIHJhdyBtZW1vcnksXG4gICAqICAgdGVsZW1ldHJ5LCBsb2dzLCBzY29yZXMsIGFuZCBvdGhlciBtdXRhdGlvbnMpIGlzIHJlamVjdGVkIHdpdGhcbiAgICogICBgNDAzYCBiZWZvcmUgaXQgcmVhY2hlcyBNYXN0cmEuXG4gICAqIC0gYFwiZnVsbFwiYDogZGlzcGF0Y2ggdGhlIGVudGlyZSBzdG9jayBNYXN0cmEgQVBJLiBVc2Ugb25seSBmb3IgYVxuICAgKiAgIHRydXN0ZWQgZmlyc3QtcGFydHkgY29uc29sZSB0aGF0IGdlbnVpbmVseSBuZWVkcyB0aGUgbWFuYWdlbWVudFxuICAgKiAgIHN1cmZhY2UuXG4gICAqL1xuICBhcGlBY2Nlc3M/OiBcInNjb3BlZFwiIHwgXCJmdWxsXCI7XG4gIC8qKlxuICAgKiBXaGljaCBEYXRhYnJpY2tzIGlkZW50aXR5IHRoZSBhZ2VudHMnIHdvcmtzcGFjZSBjYWxscyBydW4gYXM6IHRoZVxuICAgKiBzZXJ2aW5nLWVuZHBvaW50IGNhdGFsb2d1ZSBiZWhpbmQgdGhlIG1vZGVsIHBpY2tlciwgR2VuaWUgc3VnZ2VzdGlvbnMsXG4gICAqIGBhc2tfZ2VuaWVgLCBhbmQgdGhlIFN0YXRlbWVudCBFeGVjdXRpb24gZmV0Y2ggYmVoaW5kIGEgYFtkYXRhOjxpZD5dYFxuICAgKiBlbWJlZC4gRmFsbHMgYmFjayB0byBgTUFTVFJBX0dFTklFX0lERU5USVRZYCwgdGhlbiBgXCJ1c2VyXCJgLlxuICAgKlxuICAgKiBPbi1iZWhhbGYtb2YgKE9CTykgYXV0aCByZXF1aXJlcyB0aGUgY2FsbGVyIHRvIGJlIGEgbWVtYmVyIG9mIHRoZVxuICAgKiBXT1JLU1BBQ0UsIG5vdCBqdXN0IG9mIHRoZSBEYXRhYnJpY2tzIGFjY291bnQuIEFuIGFwcCBzaGFyZWQgd2l0aCBhblxuICAgKiBhY2NvdW50LWxldmVsIGdyb3VwIGNhbiBiZSBvcGVuZWQgYnkgc29tZW9uZSB3aG9zZSB0b2tlbiBpcyB2YWxpZCBidXQgd2hvc2VcbiAgICogZXZlcnkgd29ya3NwYWNlIGNhbGwgZmFpbHMgd2l0aCBgVW5hdXRob3JpemVkIGFjY2VzcyB0byBPcmc6IDxpZD5gIC0gYW5kXG4gICAqIGdyYW50aW5nIHdvcmtzcGFjZSBtZW1iZXJzaGlwIGlzIG5vdCBhbHdheXMgcG9zc2libGUsIHNpbmNlIGEgd29ya3NwYWNlXG4gICAqIGNhcHMgbWVtYmVyc2hpcCB3ZWxsIGJlbG93IHRoZSBzaXplIG9mIGEgbGFyZ2UgYWNjb3VudCdzIHVzZXIgZ3JvdXAuIFRoZVxuICAgKiBhcHAncyBzZXJ2aWNlIHByaW5jaXBhbCBhbHJlYWR5IGhvbGRzIHRoZSBncmFudHMgdGhlIGFwcCB3YXMgZGVwbG95ZWQgd2l0aC5cbiAgICpcbiAgICogLSBgXCJ1c2VyXCJgIChkZWZhdWx0KTogYWx3YXlzIE9CTy4gUGVyLXVzZXIgYXR0cmlidXRpb24sIGFuZCBHZW5pZSAvIFVuaXR5XG4gICAqICAgQ2F0YWxvZyByb3cgZmlsdGVycyBhcHBseSBwZXIgdXNlci4gQ29ycmVjdCB3aGVuIGV2ZXJ5IGNhbGxlciBpcyBhXG4gICAqICAgd29ya3NwYWNlIG1lbWJlci5cbiAgICogLSBgXCJzZXJ2aWNlLXByaW5jaXBhbFwiYDogYWx3YXlzIHRoZSBhcHAgc2VydmljZSBwcmluY2lwYWwuIE5lZWRzIG5vIE9CT1xuICAgKiAgIHNjb3BlcyBhbmQgd29ya3MgZm9yIGFueSBjYWxsZXIgd2hvIGNhbiBvcGVuIHRoZSBhcHAsIGF0IHRoZSBjb3N0IG9mXG4gICAqICAgcGVyLXVzZXIgYXR0cmlidXRpb24gaW4gR2VuaWUgLyBVbml0eSBDYXRhbG9nLlxuICAgKiAtIGBcImF1dG9cImA6IE9CTyB3aGVuIHRoZSByZXF1ZXN0IGNhcnJpZXMgYW4gT0JPIHRva2VuLCB0aGUgc2VydmljZSBwcmluY2lwYWxcbiAgICogICB3aGVuIGl0IGRvZXMgbm90LiBGb3IgYW4gYXBwIHNlcnZpbmcgQk9USCB0aGUgcGxhdGZvcm0gZnJvbnQgZG9vciBhbmQgYVxuICAgKiAgIGRvb3IgdGhhdCBoYXMgbm8gdG9rZW4gdG8gZm9yd2FyZCAtIGEgYEBkYngtdG9vbHMvdHVubmVsYCBnYXRlLCBhXG4gICAqICAgc2VwYXJhdGVseSBhdXRoZW50aWNhdGVkIHdlYmhvb2sgb3IgYm90IGNoYW5uZWwgLSB3aGVyZSBBcHBLaXQncyBgYXNVc2VyYFxuICAgKiAgIHdvdWxkIG90aGVyd2lzZSB0aHJvdyBgQXV0aGVudGljYXRpb25FcnJvcmAgb3V0c2lkZVxuICAgKiAgIGBOT0RFX0VOVj1kZXZlbG9wbWVudGAuXG4gICAqXG4gICAqIFRoZSBzZXJ2aWNlLXByaW5jaXBhbCBwYXRoIGNoYW5nZXMgb25seSB0aGUgRGF0YWJyaWNrcyBDUkVERU5USUFMLiBNZW1vcnlcbiAgICogdGhyZWFkcywgdGhlIHBlci11c2VyIGNhY2hlIG5hbWVzcGFjZSwgYW5kIHRyYWNlIG1ldGFkYXRhIHN0aWxsIGtleSBvZmYgdGhlXG4gICAqIGZvcndhcmRlZCB1c2VyLCBzbyBjYWxsZXJzIHNoYXJpbmcgdGhlIHNlcnZpY2UgcHJpbmNpcGFsJ3MgZGF0YSBhY2Nlc3Mga2VlcFxuICAgKiBzZXBhcmF0ZSBjb252ZXJzYXRpb25zIGFuZCBjYW5ub3QgcmVhZCBlYWNoIG90aGVyJ3MgdGhyZWFkcyBvciBjaGFydHMuXG4gICAqIERpcmVjdCBHZW5pZSBjaGF0IGRvZXMgbm90IHVzZSB0aGlzIG9wdGlvbjogaXRzIGNvbnZlcnNhdGlvbnMgYW5kIG1lc3NhZ2VzXG4gICAqIGFsd2F5cyBydW4gdW5kZXIgQXBwS2l0IE9CTyBzbyBHZW5pZSByZW1haW5zIHRoZSBwZXItdXNlciBzdGF0ZSBvd25lci5cbiAgICpcbiAgICogQGV4YW1wbGUgQW4gYXBwIGFueSBhY2NvdW50IHVzZXIgY2FuIG9wZW5cbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHsgZ2VuaWVJZGVudGl0eTogXCJzZXJ2aWNlLXByaW5jaXBhbFwiLCBnZW5pZVNwYWNlczogeyBkZWZhdWx0OiBzcGFjZUlkIH0gfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAZXhhbXBsZSBPbmUgYXBwIGJlaGluZCBib3RoIHRoZSBmcm9udCBkb29yIGFuZCBhIHB1YmxpYyB0dW5uZWxcbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHsgZ2VuaWVJZGVudGl0eTogXCJhdXRvXCIsIGdlbmllU3BhY2VzOiB7IGRlZmF1bHQ6IHNwYWNlSWQgfSB9KTtcbiAgICogYGBgXG4gICAqL1xuICBnZW5pZUlkZW50aXR5PzogTWFzdHJhSWRlbnRpdHlNb2RlO1xuICAvKipcbiAgICogT3B0aW9uYWwgYnJhbmQgY29udGV4dCBhcHBsaWVkIHRvIGNoYXJ0cyBwcm9kdWNlZCBieSB0aGUgYnVpbHQtaW5cbiAgICogYHJlbmRlcl9kYXRhYCAvIGBwcmVwYXJlX2NoYXJ0YCB0b29scy4gV2hlbiBzZXQsIHRoZSBjaGFydCBwbGFubmVyJ3NcbiAgICogRWNoYXJ0cyBvdXRwdXQgaXMgdGhlbWVkIHdpdGggdGhlIGJyYW5kJ3MgcGFsZXR0ZSAoc2VyaWVzIGNvbG9ycyBkZXJpdmVkXG4gICAqIGZyb20gYGNvbG9ycy5wcmltYXJ5YCAvIGBjb2xvcnMuYWNjZW50YCkgYW5kIHNhbnMgZm9udFxuICAgKiAoYHR5cG9ncmFwaHkuc2Fuc2ApIGluc3RlYWQgb2YgRWNoYXJ0cycgZGVmYXVsdHMuIE9taXQgZm9yIHRoZSBkZWZhdWx0XG4gICAqIEVjaGFydHMgbG9vay5cbiAgICpcbiAgICogUGFzcyB0aGUgcG9ydGFibGUge0BsaW5rIEJyYW5kQ29udGV4dH0gc2hhcmVkIGFjcm9zcyB0aGUgVUkgYW5kXG4gICAqIGxpYnJhcmllcyAoZS5nLiBgYnJhbmQuZGVmYXVsdEJyYW5kQ29udGV4dGAgZnJvbSBgQGRieC10b29scy9zaGFyZWQtY29yZWAsXG4gICAqIG9yIGEgY3VzdG9tZXIgYnJhbmQpIC0gdGhlIHNhbWUgb2JqZWN0IHRoZSBlbWFpbCBhZGQtb24gYW5kIHRoZSBVSVxuICAgKiBgQnJhbmRQcm92aWRlcmAgY29uc3VtZSwgc28gYSBob3N0IHRoZW1lcyBjaGFydHMsIGVtYWlsLCBhbmQgVUkgZnJvbSBvbmVcbiAgICogc291cmNlLlxuICAgKi9cbiAgYnJhbmQ/OiBCcmFuZENvbnRleHQ7XG4gIC8qKlxuICAgKiBSZW1vdGUgQWdlbnQtU2tpbGwgc291cmNlcyBtYXRlcmlhbGl6ZWQgb25jZSBhdCBhcHAgc3RhcnR1cC4gQSBzaW5nbGVcbiAgICogc291cmNlLCBhIGxpc3QsIG9yIGEgYHsgc291cmNlcywgZmFpbE9uRXJyb3I/LCAuLi4gfWAgYmFnLlxuICAgKlxuICAgKiBFYWNoIHNvdXJjZSBpcyBhIEdpdEh1YiBgb3duZXIvcmVwb2AsIGEgZ2l0IC8gR2l0TGFiIFVSTCwgb3IgYSBkaXJlY3RcbiAgICogYFNLSUxMLm1kYCAvIGFyY2hpdmUgZG93bmxvYWQgVVJMLiBSZXNvbHV0aW9uIHByZWZlcnMgdGhlIE9QVElPTkFMIGBza2lsbHNgXG4gICAqIG5wbSBDTEkgKGEgcGVlciBkZXApIHdoaWNoIGlzIGNvcGllZCBpbnRvIGEgdGVtcCBkaXIgYW5kIHRoZW4gcGVyc2lzdGVkO1xuICAgKiB3aXRob3V0IGl0LCBhIFVSTCBzb3VyY2UgaXMgZmV0Y2hlZCBkaXJlY3RseS4gQSBzb3VyY2UgdGhhdCByZXNvbHZlc1xuICAgKiB0aHJvdWdoIG5laXRoZXIgZmFpbHMgc3RhcnR1cCB1bmxlc3MgYGZhaWxPbkVycm9yOiBmYWxzZWAuXG4gICAqXG4gICAqIEFJIFRvb2xzIGlzIGNhY2hlZCBkYWlseSB3aXRoIGBAZGJ4LXRvb2xzL2NhY2hlYCBhbmQgc2VydmVkIHRvIGV2ZXJ5XG4gICAqIGF1dG8tY3JlYXRlZCB3b3Jrc3BhY2UgZnJvbSB0aGUgc2hhcmVkIGAvLmRhdGFicmlja3Mvc2tpbGxzYCBtZW1vcnkgbW91bnQuXG4gICAqIE90aGVyIHNvdXJjZXMgYXJlIHdyaXR0ZW4gdG8gdGhlIERhdGFicmlja3MgdXNlcidzIEFzc2lzdGFudCBza2lsbHMgZm9sZGVyXG4gICAqIHdoZW4gd3JpdGFibGUsIHdpdGggYSByZWFkLW9ubHkgbG9jYWwtbWVtb3J5IGZhbGxiYWNrLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoeyByZW1vdGVTa2lsbHM6IFwidmVyY2VsLWxhYnMvYWdlbnQtc2tpbGxzXCIgfSk7XG4gICAqIG1hc3RyYSh7XG4gICAqICAgcmVtb3RlU2tpbGxzOiB7XG4gICAqICAgICBzb3VyY2VzOiBbXCJ2ZXJjZWwtbGFicy9hZ2VudC1za2lsbHNcIiwgXCJodHRwczovL2V4YW1wbGUuY29tL3NraWxsLm1kXCJdLFxuICAgKiAgICAgZmFpbE9uRXJyb3I6IGZhbHNlLFxuICAgKiAgIH0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHJlbW90ZVNraWxscz86IFJlbW90ZVNraWxsc09wdGlvbjtcbiAgLyoqIFJlYWQtb25seSBsb2NhbCBza2lsbCB0cmVlcyBtb3VudGVkIGZvciBmaWxlcywgc2VhcmNoYWJsZSBieSBwYXRoLCBhbmQgcGFzc2VkIGFzIHN0YW5kYXJkIGFnZW50LWxldmVsIHNraWxscy4gKi9cbiAgbG9jYWxTa2lsbE1vdW50cz86IExvY2FsU2tpbGxNb3VudFtdO1xufVxuXG4vKipcbiAqIEpTT04gU2NoZW1hIHB1Ymxpc2hlZCBvbiB0aGUgbWFuaWZlc3QncyBgY29uZmlnLnNjaGVtYWAsIG1pcnJvcmluZyB0aGVcbiAqIGRvY3VtZW50ZWQgZGVmYXVsdHMgYW5kIGVudmlyb25tZW50IGZhbGxiYWNrcyBvZiB7QGxpbmsgTWFzdHJhUGx1Z2luQ29uZmlnfS5cbiAqXG4gKiBDb3ZlcnMgdGhlIEpTT04tZXhwcmVzc2libGUgb3B0aW9ucyBvbmx5LiBgYWdlbnRzYCwgYHRvb2xzYCwgYW5kIGFcbiAqIGBkZWZhdWx0TW9kZWxgIHBhc3NlZCBhcyBhIE1hc3RyYSBgRHluYW1pY0FyZ3VtZW50YCBhcmUgY29kZS1kZWZpbmVkXG4gKiAoZnVuY3Rpb25zIC8gY2xhc3MgaW5zdGFuY2VzKSwgc28gdGhleSBjYXJyeSBubyBzY2hlbWEgZW50cnk7IHRoZVxuICogYGRlZmF1bHRNb2RlbGAgcHJvcGVydHkgYmVsb3cgZGVzY3JpYmVzIGl0cyBzdHJpbmcgZm9ybS5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9DT05GSUdfU0NIRU1BOiBDb25maWdTY2hlbWEgPSB7XG4gIHR5cGU6IFwib2JqZWN0XCIsXG4gIHByb3BlcnRpZXM6IHtcbiAgICBiYWNrZ3JvdW5kVHVybnM6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUnVuIHR1cm5zIHRocm91Z2ggTWFzdHJhIGV2ZW50ZWQgZHVyYWJsZSBleGVjdXRpb24gc28gdGhleSBjb250aW51ZSBhZnRlciBicm93c2VyIGRpc2Nvbm5lY3RzIGFuZCByZW1haW4gcmVjb25uZWN0YWJsZSBieSBydW4gaWQuIERlZmF1bHRzIHRvIHRydWUuXCIsXG4gICAgfSxcbiAgICBwcm92aWRlcklkOiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgZGVzY3JpcHRpb246ICdBSSBTREsgcHJvdmlkZXItb3B0aW9ucyBuYW1lc3BhY2UuIERlZmF1bHRzIHRvIFwib3BlbmFpXCIuJyxcbiAgICB9LFxuICAgIHJlbW90ZVNraWxsczoge1xuICAgICAgdHlwZTogW1wic3RyaW5nXCIsIFwiYXJyYXlcIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1JlbW90ZSBBZ2VudC1Ta2lsbCBzb3VyY2VzIHByb3Zpc2lvbmVkIGF0IHN0YXJ0dXAgYW5kIHBhc3NlZCB0aHJvdWdoIE1hc3RyYSBzdGFuZGFyZCBhZ2VudC1sZXZlbCBza2lsbCB0b29sczogXCJhaXRvb2xzXCIgZm9yIERhdGFicmlja3NcXCcgb3duIHNraWxsIHNldCwgYSBHaXRIdWIgb3duZXIvcmVwbywgYSBnaXQvR2l0TGFiIFVSTCwgb3IgYSBkaXJlY3QgU0tJTEwubWQvYXJjaGl2ZSBVUkwuIFNvdXJjZXMgcmV0YWluIGEgcHJvY2Vzcy1tZW1vcnkgY29weSBldmVuIHdoZW4gcGVyc2lzdGVkIHRvIHRoZSBEYXRhYnJpY2tzIHVzZXIgQXNzaXN0YW50IHNraWxscyBmb2xkZXIuJyxcbiAgICB9LFxuICAgIHN0b3JhZ2U6IHtcbiAgICAgIHR5cGU6IFtcImJvb2xlYW5cIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJQb3N0Z3Jlc1N0b3JlIGZvciBNYXN0cmEgdGhyZWFkcyAvIG1lc3NhZ2VzLiBgdHJ1ZWAgY2FwdHVyZXMgdGhlIGBsYWtlYmFzZWAgcGx1Z2luJ3MgZXhpc3Rpbmcgc2VydmljZS1wcmluY2lwYWwgcG9vbDsgYW4gb2JqZWN0IG9wZW5zIGEgc2VwYXJhdGVseSBjb25maWd1cmVkIHN0b3JlLiBBdXRvLWVuYWJsZWQgd2hlbiB0aGUgYGxha2ViYXNlYCBwbHVnaW4gaXMgcmVnaXN0ZXJlZC5cIixcbiAgICB9LFxuICAgIG1lbW9yeToge1xuICAgICAgdHlwZTogW1wiYm9vbGVhblwiLCBcIm9iamVjdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlBnVmVjdG9yIHN0b3JlIGZvciBNYXN0cmEgc2VtYW50aWMgcmVjYWxsLiBgdHJ1ZWAgY2FwdHVyZXMgdGhlIGBsYWtlYmFzZWAgcGx1Z2luJ3MgZXhpc3Rpbmcgc2VydmljZS1wcmluY2lwYWwgcG9vbDsgYW4gb2JqZWN0IG9wZW5zIGEgc2VwYXJhdGVseSBjb25maWd1cmVkIHN0b3JlLiBBdXRvLWVuYWJsZWQgd2hlbiB0aGUgYGxha2ViYXNlYCBwbHVnaW4gaXMgcmVnaXN0ZXJlZC5cIixcbiAgICB9LFxuICAgIGNvZGVNb2RlOiB7XG4gICAgICB0eXBlOiBbXCJib29sZWFuXCIsIFwic3RyaW5nXCIsIFwib2JqZWN0XCJdLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0V4cG9zZSBleGVjdXRhYmxlIHJlcXVlc3QgdG9vbHMgdGhyb3VnaCBuYXRpdmUgTWFzdHJhIENvZGUgTW9kZSBmb3IgVHlwZVNjcmlwdCBiYXRjaGluZywgYWdncmVnYXRpb24sIGFuZCBhcml0aG1ldGljLiBEZWZhdWx0cyB0byBmYWxzZS4gVXNlIFwiYXV0b1wiIHRvIHNlbGVjdCBhbiBpbnN0YWxsZWQgc3VwcG9ydGVkIG9wdGlvbmFsIHRyYW5zcG9ydCBvciBzdGF5IGRpc2FibGVkLCBcImlzb2xhdGVkLXZtXCIgdG8gcmVxdWlyZSB0aGUgbmF0aXZlIHRyYW5zcG9ydCwgXCJxdWlja2pzXCIgdG8gcmVxdWlyZSB0aGUgcG9ydGFibGUgdHJhbnNwb3J0LCBvciBhbiBvYmplY3Qgd2l0aCB0cmFuc3BvcnQgcGx1cyBpZCBhbmQgdGltZW91dC4gTmVpdGhlciB0cmFuc3BvcnQgcnVucyB0aHJvdWdoIHRoZSB3b3Jrc3BhY2UgY29tbWFuZCBzYW5kYm94LicsXG4gICAgfSxcbiAgICBzYW5kYm94OiB7XG4gICAgICB0eXBlOiBbXCJib29sZWFuXCIsIFwic3RyaW5nXCIsIFwib2JqZWN0XCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdDb21tYW5kIHNhbmRib3ggZm9yIGF1dG8tY3JlYXRlZCBhZ2VudCB3b3Jrc3BhY2VzLiBEZWZhdWx0cyB0byBNb250eS4gRmFsc2UgZGlzYWJsZXMgY29tbWFuZCBleGVjdXRpb247IHRydWUgb3IgXCJtb250eVwiIHNlbGVjdHMgTW9udHk7IGFuIGV4cGxpY2l0IHNhbmRib3ggb3IgcmVzb2x2ZXIgc3VwcGxpZXMgYW5vdGhlciB0cmFuc3BvcnQuJyxcbiAgICB9LFxuICAgIHdvcmtzcGFjZUZhbGxiYWNrVG9UbXA6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiQWRkIHVzZXItc2NvcGVkIC90bXAgdG8gYXV0by1jcmVhdGVkIGFnZW50IHdvcmtzcGFjZXMgb25seSB3aGVuIG5vIGNvbmZpZ3VyZWQgRGF0YWJyaWNrcyBwYXRoIG1vdW50cyB3cml0YWJsZS4gRGVmYXVsdHMgdG8gZmFsc2UuXCIsXG4gICAgfSxcbiAgICB3b3Jrc3BhY2VTa2lsbHM6IHtcbiAgICAgIHR5cGU6IFtcImJvb2xlYW5cIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJVc2UgTWFzdHJhJ3MgbmF0aXZlIG9uLWRlbWFuZCB3b3Jrc3BhY2Ugc2tpbGwgc2VhcmNoIGFuZCB3cml0YWJsZSBza2lsbCBzYXZlcy4gRGVmYXVsdHMgdG8gdHJ1ZS5cIixcbiAgICB9LFxuICAgIHdvcmtzcGFjZVRvb2xzOiB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiTmF0aXZlIE1hc3RyYSB3b3Jrc3BhY2UgdG9vbCBjb25maWd1cmF0aW9uIGZvciBhdmFpbGFiaWxpdHksIGFwcHJvdmFscywgcmVhZC1iZWZvcmUtd3JpdGUsIG91dHB1dCBsaW1pdHMsIGFuZCBob29rcy5cIixcbiAgICB9LFxuICAgIGRlZmF1bHRBZ2VudDoge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkFnZW50IGlkIHVzZWQgd2hlbiB0aGUgY2xpZW50IG5hbWVzIG5vbmUuIERlZmF1bHRzIHRvIHRoZSBmaXJzdCByZWdpc3RlcmVkIGFnZW50LCBlbHNlIHRoZSBidWlsdC1pbiBgZGVmYXVsdGAuXCIsXG4gICAgfSxcbiAgICBkZWZhdWx0TW9kZWw6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJTZXJ2aW5nIGVuZHBvaW50IGFwcGxpZWQgdG8gZXZlcnkgYWdlbnQgdGhhdCBvbWl0cyBpdHMgb3duIG1vZGVsLiBGYWxscyBiYWNrIHRvIERBVEFCUklDS1NfU0VSVklOR19FTkRQT0lOVF9OQU1FLCB0aGVuIHRoZSBoaWdoZXN0LXJhbmtlZCBjdXJyZW50bHkgYXZhaWxhYmxlIGNhdGFsb2d1ZSBlbmRwb2ludC5cIixcbiAgICB9LFxuICAgIGRlZmF1bHRNb2RlbEZhbGxiYWNrczoge1xuICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgaXRlbXM6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUHJpb3JpdHktb3JkZXJlZCBlbmRwb2ludCBuYW1lcyB0cmllZCBiZWZvcmUgdGhlIHNjb3JlLWNsYXNzaWZpZWQgY2F0YWxvZ3VlIHdoZW4gbm90aGluZyBlbHNlIHBpbnMgYSBtb2RlbC5cIixcbiAgICB9LFxuICAgIG1vZGVsRnV6enlNYXRjaDoge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJGdXp6eS1tYXRjaCBsb29zZSBtb2RlbCBuYW1lcyBhZ2FpbnN0IHRoZSB3b3Jrc3BhY2UgY2F0YWxvZ3VlLiBEZWZhdWx0cyB0byB0cnVlLlwiLFxuICAgIH0sXG4gICAgbW9kZWxGdXp6eVRocmVzaG9sZDoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkZ1c2UuanMgc2NvcmUgdGhyZXNob2xkIGZvciB0aGUgZnV6enkgbWF0Y2hlciwgMCAoZXhhY3QpIHRvIDEgKGFueXRoaW5nKS4gRGVmYXVsdHMgdG8gMC40LlwiLFxuICAgIH0sXG4gICAgbW9kZWxDYWNoZVR0bE1zOiB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiVFRMIGluIG1zIGZvciB0aGUgc2VydmluZy1lbmRwb2ludHMgbGlzdCBjYWNoZSwgcGVyIHdvcmtzcGFjZSBob3N0LiBEZWZhdWx0cyB0byA1IG1pbnV0ZXMuXCIsXG4gICAgfSxcbiAgICBtb2RlbE92ZXJyaWRlOiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkhvbm9yIGEgcGVyLXJlcXVlc3QgbW9kZWwgb3ZlcnJpZGUgZnJvbSB0aGUgWC1NYXN0cmEtTW9kZWwgaGVhZGVyLCA/bW9kZWw9IHF1ZXJ5LCBvciBhIGBtb2RlbGAgYm9keSBmaWVsZC4gRGVmYXVsdHMgdG8gdHJ1ZS5cIixcbiAgICB9LFxuICAgIGdlbmllU3BhY2VzOiB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHsgdHlwZTogW1wic3RyaW5nXCIsIFwib2JqZWN0XCJdIH0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJHZW5pZSBzcGFjZXMgdGhlIGFnZW50cyBjYW4gZGVsZWdhdGUgdG8sIGtleWVkIGJ5IGFsaWFzICh0aGUgdG9vbC1uYW1lIHN1ZmZpeCkuIEVhY2ggdmFsdWUgaXMgYSBzcGFjZSBpZCBvciBgeyBzcGFjZUlkLCBoaW50IH1gLiBGYWxscyBiYWNrIHRvIHRoZSBgZ2VuaWVgIHBsdWdpbidzIG93biBgc3BhY2VzYCBjb25maWcsIHRoZW4gREFUQUJSSUNLU19HRU5JRV9TUEFDRV9JRCB1bmRlciB0aGUgYGRlZmF1bHRgIGFsaWFzLlwiLFxuICAgIH0sXG4gICAgZ2VuaWVBZ2VudE1vZGU6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiVXNlIHRoZSBzdHJlYW1pbmcgR2VuaWUgQWdlbnQgTW9kZSBBUEkgZm9yIGFnZW50LWJhY2tlZCBhc2tfZ2VuaWUuIERlZmF1bHRzIHRvIHRydWU7IGZhbHNlIGZvcmNlcyBsZWdhY3kgcG9sbGluZy4gRmVhdHVyZS1kaXNhYmxlZCBvciBwcmV2aWV3LXRvZ2dsZSByZXNwb25zZXMgZmFsbCBiYWNrIGF1dG9tYXRpY2FsbHkgYmVmb3JlIHN0cmVhbWluZy4gRGlyZWN0IEdlbmllIGNoYXQgYWx3YXlzIHJlcXVpcmVzIEFnZW50IE1vZGUuXCIsXG4gICAgfSxcbiAgICBnZW5pZVNwYWNlQ2FjaGVUdGxNczoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRUTCBpbiBtcyBmb3IgdGhlIEdlbmllIHNwYWNlIG1ldGFkYXRhIGNhY2hlLiBEZWZhdWx0cyB0byA1IG1pbnV0ZXMuXCIsXG4gICAgfSxcbiAgICBhZ2VudE1heFN0ZXBzOiB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiTWF4aW11bSBMTE0gc3RlcHMgZWFjaCBhZ2VudCBnZXRzIHBlciB0dXJuIChhIHRvb2wgY2FsbCBhbmQgdGhlIGZpbmFsIHJlcGx5IGVhY2ggY29uc3VtZSBvbmUpLiBEZWZhdWx0cyB0byAyNS5cIixcbiAgICB9LFxuICAgIGZvbGxvd1VwU3VnZ2VzdGlvbnM6IHtcbiAgICAgIHR5cGU6IFtcImJvb2xlYW5cIiwgXCJzdHJpbmdcIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ09wdGlvbmFsIHBvc3QtdHVybiBmb2xsb3ctdXBzLiBUcnVlIHNlbGVjdHMgc291cmNlcyBhdXRvbWF0aWNhbGx5OyBcImdlbmVyYXRlZFwiIG9yIFwiZ2VuaWVcIiBwaW5zIG9uZSBzb3VyY2U7IGFuIG9iamVjdCBhZGRzIGEgbGltaXQsIHRpbWVvdXQsIGFuZCBvcHRpb25hbCB0b29sIGV4cG9zdXJlLiBEZWZhdWx0cyBvZmYuJyxcbiAgICB9LFxuICAgIHN0cmlwU3RhbGVDaGFydHM6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiU3RyaXAgY2hhcnRJZHMgZnJvbSByZWNhbGxlZCBhc3Npc3RhbnQgdG9vbCByZXN1bHRzIHNvIHRoZSBtb2RlbCBjYW5ub3QgcmV1c2UgYSB0dXJuLXNjb3BlZCBjaGFydCBtYXJrZXIuIERlZmF1bHRzIHRvIHRydWUuXCIsXG4gICAgfSxcbiAgICBzdHlsZUluc3RydWN0aW9uczoge1xuICAgICAgdHlwZTogW1wic3RyaW5nXCIsIFwiYm9vbGVhblwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlN0eWxlIGd1YXJkcmFpbHMgYXBwZW5kZWQgdG8gZXZlcnkgYWdlbnQncyBpbnN0cnVjdGlvbnMuIEEgc3RyaW5nIHJlcGxhY2VzIHRoZSBidWlsdC1pbiBibG9jaywgYGZhbHNlYCBkaXNhYmxlcyBpdC5cIixcbiAgICB9LFxuICAgIG9ic2VydmFiaWxpdHk6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiQnJpZGdlIE1hc3RyYSBzcGFucyBpbnRvIEFwcEtpdCdzIE9UZWwgcGlwZWxpbmUuIERlZmF1bHRzIHRvIG9uIG9ubHkgd2hlbiBPVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQgb3IgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19FTkRQT0lOVCBpcyBzZXQuXCIsXG4gICAgfSxcbiAgICBmZWVkYmFja01vZGU6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBlbnVtOiBbXCJhdXRvXCIsIFwiZ2VuaWVcIiwgXCJtbGZsb3dcIiwgXCJub25lXCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRmVlZGJhY2sgZGVzdGluYXRpb24uIEF1dG8gcHJlZmVycyBHZW5pZSBpbiBHZW5pZSBBZ2VudCBNb2RlLCBvdGhlcndpc2UgTUxmbG93IHdoZW4gY29uZmlndXJlZCwgb3RoZXJ3aXNlIG5vbmUuIEV4cGxpY2l0IHVuYXZhaWxhYmxlIG1vZGVzIGZhaWwgc3RhcnR1cC5cIixcbiAgICB9LFxuICAgIG1jcDoge1xuICAgICAgdHlwZTogW1wiYm9vbGVhblwiLCBcIm9iamVjdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkV4cG9zZSB0aGUgcmVnaXN0ZXJlZCBhZ2VudHMgb3ZlciBNQ1AuIERlZmF1bHRzIHRvIGFnZW50cy1vbmx5OyBhbiBvYmplY3QgdHVuZXMgdGhlIHNlcnZlciBpZCwgYWR2ZXJ0aXNlZCBtZXRhZGF0YSwgYW5kIHdoZXRoZXIgYW1iaWVudCB0b29scyBhcmUgZXhwb3NlZC5cIixcbiAgICB9LFxuICAgIGdlbmllSWRlbnRpdHk6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAvLyBEZXJpdmVkIGZyb20gdGhlIHJlc29sdmVyJ3Mgb3duIGxpc3QsIHNvIGEgbW9kZSBjYW4gbmV2ZXIgYmUgYWNjZXB0ZWQgYXRcbiAgICAgIC8vIHJ1bnRpbWUgd2hpbGUgdGhlIHB1Ymxpc2hlZCBzY2hlbWEgKGFuZCB0aGUgVUkgYnVpbHQgZnJvbSBpdCkgb21pdHMgaXQuXG4gICAgICBlbnVtOiBbLi4uSURFTlRJVFlfTU9ERVNdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdXaGljaCBEYXRhYnJpY2tzIGlkZW50aXR5IGFnZW50LWJhY2tlZCB3b3Jrc3BhY2UgY2FsbHMgKHNlcnZpbmcgY2F0YWxvZ3VlLCBHZW5pZSwgc3RhdGVtZW50IGV4ZWN1dGlvbikgcnVuIGFzLiBEaXJlY3QgR2VuaWUgY2hhdCBhbHdheXMgdXNlcyBPQk8uIFwidXNlclwiIChkZWZhdWx0KSBpcyBhbHdheXMgT0JPLCBzbyBjYWxsZXJzIG11c3QgYmUgd29ya3NwYWNlIG1lbWJlcnM7IFwic2VydmljZS1wcmluY2lwYWxcIiBhbHdheXMgdXNlcyB0aGUgYXBwIHNlcnZpY2UgcHJpbmNpcGFsLCBzbyBhbnkgY2FsbGVyIHdobyBjYW4gb3BlbiB0aGUgYXBwIHdvcmtzLCBhdCB0aGUgY29zdCBvZiBwZXItdXNlciBhdHRyaWJ1dGlvbjsgXCJhdXRvXCIgdXNlcyBPQk8gd2hlbiB0aGUgcmVxdWVzdCBjYXJyaWVzIGFuIE9CTyB0b2tlbiBhbmQgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIHdoZW4gaXQgZG9lcyBub3QsIGZvciBhbiBhcHAgdGhhdCBhbHNvIHNlcnZlcyBhIHR1bm5lbCBvciB3ZWJob29rIGRvb3IuIEZhbGxzIGJhY2sgdG8gTUFTVFJBX0dFTklFX0lERU5USVRZLicsXG4gICAgfSxcbiAgICBhcGlBY2Nlc3M6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBlbnVtOiBbXCJzY29wZWRcIiwgXCJmdWxsXCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdIb3cgbXVjaCBvZiB0aGUgc3RvY2sgQG1hc3RyYS9leHByZXNzIEFQSSBpcyByZWFjaGFibGUgdGhyb3VnaCB0aGUgbW91bnQuIFwic2NvcGVkXCIgKGRlZmF1bHQpIGFsbG93cyBhZ2VudCBpbmZlcmVuY2UsIHJlYWQtb25seSBhZ2VudCBtZXRhZGF0YSwgdGhpcyBwbHVnaW5cXCdzIG93biByb3V0ZXMsIGFuZCBNQ1A7IFwiZnVsbFwiIGRpc3BhdGNoZXMgdGhlIGVudGlyZSBtYW5hZ2VtZW50IHN1cmZhY2UuJyxcbiAgICB9LFxuICAgIGJyYW5kOiB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUG9ydGFibGUgYnJhbmQgY29udGV4dCBhcHBsaWVkIHRvIGdlbmVyYXRlZCBjaGFydHMgKHNlcmllcyBwYWxldHRlIGZyb20gY29sb3JzLnByaW1hcnkgLyBjb2xvcnMuYWNjZW50LCBiYXNlIGZvbnQgZnJvbSB0eXBvZ3JhcGh5LnNhbnMpLlwiLFxuICAgIH0sXG4gIH0sXG59O1xuIl19
|
package/lib/src/identity.d.ts
CHANGED
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
* otherwise, so ONE decision - do we enter that scope for this request - moves
|
|
10
10
|
* every call site together.
|
|
11
11
|
*
|
|
12
|
-
* The decision itself is NOT Mastra-specific (
|
|
13
|
-
*
|
|
14
|
-
* module - which also documents the measured AppKit behavior that makes
|
|
15
|
-
* necessary. This module is the Mastra-facing binding: the plugin's own
|
|
16
|
-
* field and env var, re-exporting the shared vocabulary so a consumer
|
|
17
|
-
* `@dbx-tools/appkit-mastra` needs no second import.
|
|
12
|
+
* The decision itself is NOT Mastra-specific (authenticated webhooks and the
|
|
13
|
+
* tunnel gate face it too), so it lives in `@dbx-tools/appkit`'s `identity`
|
|
14
|
+
* module - which also documents the measured AppKit behavior that makes
|
|
15
|
+
* `"auto"` necessary. This module is the Mastra-facing binding: the plugin's own
|
|
16
|
+
* config field and env var, re-exporting the shared vocabulary so a consumer
|
|
17
|
+
* importing `@dbx-tools/appkit-mastra` needs no second import.
|
|
18
18
|
*
|
|
19
19
|
* Why the option exists: OBO requires the caller to be a member of the
|
|
20
20
|
* WORKSPACE, not merely of the Databricks account. An app shared with an
|
|
@@ -38,7 +38,8 @@
|
|
|
38
38
|
* - `"auto"`: OBO when the request carries an OBO token, the service principal
|
|
39
39
|
* when it does not. The mode for an app that serves BOTH the platform front
|
|
40
40
|
* door and a door with no OBO token to forward (a `@dbx-tools/tunnel`
|
|
41
|
-
* gate
|
|
41
|
+
* gate or an authenticated webhook), since a single container serves both
|
|
42
|
+
* at once.
|
|
42
43
|
*
|
|
43
44
|
* What the service-principal path does NOT change is WHO the turn belongs to.
|
|
44
45
|
* The memory thread's `resourceId`, the per-user cache namespace, and the user
|