@dbx-tools/appkit-mastra 0.9.60 → 0.9.64

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 CHANGED
@@ -273,6 +273,19 @@ Every `agents.createAgent()` gets a default Mastra `Workspace` from
273
273
  current OBO user's `WorkspaceClient`, so Mastra can discover Assistant-style
274
274
  `SKILL.md` files at request time.
275
275
 
276
+ Path-backed mounts reuse one stable Mastra filesystem per resolved user,
277
+ workspace host, and root. Reads use AppKit's `CacheManager`, keyed by the
278
+ existing Mastra resolved user id. Concurrent misses coalesce, Lakebase-backed
279
+ AppKit caches survive process restarts, and no access token or client enters a
280
+ cache key or value. The default TTL is five minutes; set
281
+ `workspaceSkillRefreshTtlMs` on the plugin or `createWorkspace()` to change it.
282
+
283
+ The plugin uses Mastra's `SkillSearchProcessor` by default. The model searches
284
+ the cached catalogue and loads relevant instructions instead of receiving every
285
+ skill description on every turn. Set `workspaceSkillSearch: false` to retain
286
+ Mastra's eager catalogue, or pass `{ topK, minScore, ttlMs }` to tune on-demand
287
+ search.
288
+
276
289
  Locations are a named map (`skillFolders`), so an app refers to a tree by name
277
290
  rather than repeating a path. Each name mounts at `/<name>` in the workspace
278
291
  namespace (override with `mount`) and carries its own policy: `readable`
@@ -310,6 +323,8 @@ const agent = agents.createAgent({
310
323
  async () => ({
311
324
  mounts: { "/reference": myFilesystem },
312
325
  skillPaths: ["/reference/skills"],
326
+ // Stable custom mounts can opt into cross-request source reuse.
327
+ cacheKey: "reference-v1",
313
328
  }),
314
329
  ],
315
330
  }),
@@ -771,8 +786,12 @@ Mastra's own `mastra.agent_run.*` attributes sit on a child span that the view
771
786
  never reads. Text-only turns use raw prompt and answer previews, while
772
787
  `appkit.mastra.chat.messages` and `appkit.mastra.chat.response` retain the
773
788
  serialized envelopes. `appkit.mastra.identity.mode` records `obo` versus
774
- `service-principal`; `appkit.mastra.genie.used` records Genie activity. These
775
- custom values are searchable span attributes, not MLflow trace tags.
789
+ `service-principal`. The experiment UI's User and Tags columns read the OTel
790
+ attributes Databricks documents for inbound traces: `user.id` (forwarded email
791
+ or user id), `session.id` (Mastra thread id), `mlflow.spanType` (`AGENT` on the
792
+ root, `GENIE` on `ask_genie`), and `mlflow.trace.tag.genie=true` when the turn
793
+ called Genie. `appkit.mastra.genie.used` remains as a searchable custom
794
+ attribute.
776
795
 
777
796
  ```ts
778
797
  mastra({
@@ -782,7 +801,10 @@ mastra({
782
801
  ```
783
802
 
784
803
  `mlflow.logFeedback()` logs a human assessment against the active MLflow trace.
785
- The response header name and request/response schemas live in
804
+ On Apps UC traces it reads the experiment's
805
+ `mlflow.experiment.databricksTraceDestinationPath` tag (or the spans-table tag)
806
+ so the assessment URI matches the row the experiment UI shows. The response
807
+ header name and request/response schemas live in
786
808
  [`@dbx-tools/shared-mastra`](../../shared/mastra).
787
809
 
788
810
  ### Databricks Apps -> Unity Catalog (the supported path)
@@ -937,7 +959,8 @@ needs no extra wiring.
937
959
  | `MASTRA_GENIE_IDENTITY` | `user` (default, OBO), `service-principal`, or `auto` for the agents' Databricks calls. |
938
960
  | `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | Presence of either turns Mastra tracing on when `observability` is unset. On Apps, the telemetry sidecar injects these. |
939
961
  | `OTEL_PROPAGATORS` | Set to `none` on Databricks Apps. The plugin disables extraction and injection before serving requests while retaining local async span parenting. |
940
- | `MLFLOW_EXPERIMENT_ID`, `MLFLOW_EXPERIMENT_NAME` | With an OTLP endpoint, turns MLflow feedback on when `feedback` is unset. |
962
+ | `MLFLOW_EXPERIMENT_ID`, `MLFLOW_EXPERIMENT_NAME` | With an OTLP endpoint, turns MLflow feedback on when `feedback` is unset. Assessments read the experiment's UC trace destination tag. |
963
+ | `MLFLOW_UC_TRACE_PREFIX` | Optional override for the UC table prefix. Omit to use the experiment tag. |
941
964
 
942
965
  ## Configuration Reference
943
966
 
@@ -954,6 +977,12 @@ requiring callers to assemble a Mastra server by hand.
954
977
  auto-created workspaces. `false` disables command execution, `"monty"`
955
978
  selects Monty directly, and `true` or an object selects/configures
956
979
  Databricks.
980
+ - `workspaceSkillRefreshTtlMs` controls AppKit-cached workspace skill reads.
981
+ Entries are isolated by the Mastra resolved user id and default to five
982
+ minutes.
983
+ - `workspaceSkillSearch` defaults to Mastra's on-demand
984
+ `SkillSearchProcessor`. Pass `false` for the eager catalogue or an object with
985
+ `topK`, `minScore`, and `ttlMs` overrides.
957
986
  - `remoteSkills` provisions `SKILL.md` sources from outside the workspace at
958
987
  startup (see [Remote Skills](#remote-skills)). Accepts a single source, a
959
988
  list, or an options bag with `failOnError`, `userEmail`,
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.60";
6
+ export const PACKAGE_VERSION = "0.9.64";
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";
@@ -27,6 +27,7 @@ export * as sandbox from "./src/sandbox.ts";
27
27
  export * as server from "./src/server.ts";
28
28
  export * as serving from "./src/serving.ts";
29
29
  export * as servingSanitize from "./src/serving-sanitize.ts";
30
+ export * as skillCache from "./src/skill-cache.ts";
30
31
  export * as skillPaths from "./src/skill-paths.ts";
31
32
  export * as statement from "./src/statement.ts";
32
33
  export * as storageSchema from "./src/storage-schema.ts";
@@ -41,7 +42,7 @@ export type { MastraTools, AppKitToolOptions, ToolkitOptions, MastraPluginToolki
41
42
  export { chartPlanSchema, chartPlannerRequestSchema, chartToolOutputSchema } from "./src/chart.ts";
42
43
  export type { ChartPlannerRequest, ChartToolOutput, PrepareChartOptions, FetchChartOptions } from "./src/chart.ts";
43
44
  export { MASTRA_USER_KEY, MASTRA_USER_NAME_KEY, MASTRA_USER_EMAIL_KEY, MASTRA_REQUEST_ID_KEY, MASTRA_SCOPES_KEY, TRACE_REQUEST_CONTEXT_KEYS, MASTRA_CONFIG_SCHEMA } from "./src/config.ts";
44
- export type { User, MastraMemoryConfig, MastraMcpConfig, MastraPluginConfig } from "./src/config.ts";
45
+ export type { User, MastraMemoryConfig, MastraSkillSearchConfig, MastraMcpConfig, MastraPluginConfig } from "./src/config.ts";
45
46
  export { modelCatalogueDefaults, genieSuggestionDefaults, statementDataDefaults, chartFetchDefaults, feedbackWriteDefaults } from "./src/defaults.ts";
46
47
  export type { MastraEvalDriverOptions } from "./src/evaluation.ts";
47
48
  export { MastraFileSystemAdapter } from "./src/filesystems.ts";
@@ -69,12 +70,14 @@ export { MastraServer } from "./src/server.ts";
69
70
  export type { AttributedIdentity, MastraApiGateOptions } from "./src/server.ts";
70
71
  export { MASTRA_MODEL_OVERRIDE_KEY } from "./src/serving.ts";
71
72
  export type { ModelOverrideRequest } from "./src/serving.ts";
73
+ export { DEFAULT_WORKSPACE_SKILL_CACHE_TTL_MS, AppKitCachedFileSystem } from "./src/skill-cache.ts";
74
+ export type { AppKitCachedFileSystemOptions, CachedWorkspaceSkillMount } from "./src/skill-cache.ts";
72
75
  export { ASSISTANT_SHARED_SKILLS_PATH } from "./src/skill-paths.ts";
73
76
  export { STATEMENT_ROW_CAP } from "./src/statement.ts";
74
77
  export { TYPOGRAPHY_RULE } from "./src/style.ts";
75
78
  export { TITLE_INSTRUCTIONS } from "./src/summarize.ts";
76
79
  export type { SummarizeOptions } from "./src/summarize.ts";
77
- 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 } from "./src/telemetry.ts";
80
+ 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_TRACE_TAG_PREFIX, MLFLOW_GENIE_TAG, MLFLOW_SPAN_TYPE_AGENT, MLFLOW_SPAN_TYPE_GENIE, MLFLOW_GENIE_TAG_ATTR } from "./src/telemetry.ts";
78
81
  export type { ChatTurnTelemetryOptions } from "./src/telemetry.ts";
79
82
  export type { SchemaIssues } from "./src/validation.ts";
80
83
  export { DEFAULT_SKILL_FOLDERS } from "./src/workspaces.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.60";
2
+ export declare const PACKAGE_VERSION = "0.9.64";
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";
@@ -23,6 +23,7 @@ export * as sandbox from "./src/sandbox.ts";
23
23
  export * as server from "./src/server.ts";
24
24
  export * as serving from "./src/serving.ts";
25
25
  export * as servingSanitize from "./src/serving-sanitize.ts";
26
+ export * as skillCache from "./src/skill-cache.ts";
26
27
  export * as skillPaths from "./src/skill-paths.ts";
27
28
  export * as statement from "./src/statement.ts";
28
29
  export * as storageSchema from "./src/storage-schema.ts";
@@ -37,7 +38,7 @@ export type { MastraTools, AppKitToolOptions, ToolkitOptions, MastraPluginToolki
37
38
  export { chartPlanSchema, chartPlannerRequestSchema, chartToolOutputSchema } from "./src/chart.ts";
38
39
  export type { ChartPlannerRequest, ChartToolOutput, PrepareChartOptions, FetchChartOptions } from "./src/chart.ts";
39
40
  export { MASTRA_USER_KEY, MASTRA_USER_NAME_KEY, MASTRA_USER_EMAIL_KEY, MASTRA_REQUEST_ID_KEY, MASTRA_SCOPES_KEY, TRACE_REQUEST_CONTEXT_KEYS, MASTRA_CONFIG_SCHEMA } from "./src/config.ts";
40
- export type { User, MastraMemoryConfig, MastraMcpConfig, MastraPluginConfig } from "./src/config.ts";
41
+ export type { User, MastraMemoryConfig, MastraSkillSearchConfig, MastraMcpConfig, MastraPluginConfig } from "./src/config.ts";
41
42
  export { modelCatalogueDefaults, genieSuggestionDefaults, statementDataDefaults, chartFetchDefaults, feedbackWriteDefaults } from "./src/defaults.ts";
42
43
  export type { MastraEvalDriverOptions } from "./src/evaluation.ts";
43
44
  export { MastraFileSystemAdapter } from "./src/filesystems.ts";
@@ -65,12 +66,14 @@ export { MastraServer } from "./src/server.ts";
65
66
  export type { AttributedIdentity, MastraApiGateOptions } from "./src/server.ts";
66
67
  export { MASTRA_MODEL_OVERRIDE_KEY } from "./src/serving.ts";
67
68
  export type { ModelOverrideRequest } from "./src/serving.ts";
69
+ export { DEFAULT_WORKSPACE_SKILL_CACHE_TTL_MS, AppKitCachedFileSystem } from "./src/skill-cache.ts";
70
+ export type { AppKitCachedFileSystemOptions, CachedWorkspaceSkillMount } from "./src/skill-cache.ts";
68
71
  export { ASSISTANT_SHARED_SKILLS_PATH } from "./src/skill-paths.ts";
69
72
  export { STATEMENT_ROW_CAP } from "./src/statement.ts";
70
73
  export { TYPOGRAPHY_RULE } from "./src/style.ts";
71
74
  export { TITLE_INSTRUCTIONS } from "./src/summarize.ts";
72
75
  export type { SummarizeOptions } from "./src/summarize.ts";
73
- 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 } from "./src/telemetry.ts";
76
+ 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_TRACE_TAG_PREFIX, MLFLOW_GENIE_TAG, MLFLOW_SPAN_TYPE_AGENT, MLFLOW_SPAN_TYPE_GENIE, MLFLOW_GENIE_TAG_ATTR } from "./src/telemetry.ts";
74
77
  export type { ChatTurnTelemetryOptions } from "./src/telemetry.ts";
75
78
  export type { SchemaIssues } from "./src/validation.ts";
76
79
  export { DEFAULT_SKILL_FOLDERS } from "./src/workspaces.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.60";
5
+ export const PACKAGE_VERSION = "0.9.64";
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";
@@ -26,6 +26,7 @@ export * as sandbox from "./src/sandbox.js";
26
26
  export * as server from "./src/server.js";
27
27
  export * as serving from "./src/serving.js";
28
28
  export * as servingSanitize from "./src/serving-sanitize.js";
29
+ export * as skillCache from "./src/skill-cache.js";
29
30
  export * as skillPaths from "./src/skill-paths.js";
30
31
  export * as statement from "./src/statement.js";
31
32
  export * as storageSchema from "./src/storage-schema.js";
@@ -51,10 +52,11 @@ export { AITOOLS_SOURCE } from "./src/remote-skills.js";
51
52
  export { DatabricksSandbox } from "./src/sandbox.js";
52
53
  export { MastraServer } from "./src/server.js";
53
54
  export { MASTRA_MODEL_OVERRIDE_KEY } from "./src/serving.js";
55
+ export { DEFAULT_WORKSPACE_SKILL_CACHE_TTL_MS, AppKitCachedFileSystem } from "./src/skill-cache.js";
54
56
  export { ASSISTANT_SHARED_SKILLS_PATH } from "./src/skill-paths.js";
55
57
  export { STATEMENT_ROW_CAP } from "./src/statement.js";
56
58
  export { TYPOGRAPHY_RULE } from "./src/style.js";
57
59
  export { TITLE_INSTRUCTIONS } from "./src/summarize.js";
58
- 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 } from "./src/telemetry.js";
60
+ 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_TRACE_TAG_PREFIX, MLFLOW_GENIE_TAG, MLFLOW_SPAN_TYPE_AGENT, MLFLOW_SPAN_TYPE_GENIE, MLFLOW_GENIE_TAG_ATTR } from "./src/telemetry.js";
59
61
  export { DEFAULT_SKILL_FOLDERS } from "./src/workspaces.js";
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRywwQkFBMEIsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssV0FBVyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEtBQUssWUFBWSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxhQUFhLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssVUFBVSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxZQUFZLE1BQU0sd0JBQXdCLENBQUM7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LE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9hcHBraXQtbWFzdHJhXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuNjBcIjtcbmV4cG9ydCAqIGFzIGFnZW50cyBmcm9tIFwiLi9zcmMvYWdlbnRzLnRzXCI7XG5leHBvcnQgKiBhcyBjaGFydCBmcm9tIFwiLi9zcmMvY2hhcnQudHNcIjtcbmV4cG9ydCAqIGFzIGNoYXQgZnJvbSBcIi4vc3JjL2NoYXQudHNcIjtcbmV4cG9ydCAqIGFzIGNvbmZpZyBmcm9tIFwiLi9zcmMvY29uZmlnLnRzXCI7XG5leHBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tIFwiLi9zcmMvZGVmYXVsdHMudHNcIjtcbmV4cG9ydCAqIGFzIGV2YWx1YXRpb24gZnJvbSBcIi4vc3JjL2V2YWx1YXRpb24udHNcIjtcbmV4cG9ydCAqIGFzIGZpbGVzeXN0ZW1zIGZyb20gXCIuL3NyYy9maWxlc3lzdGVtcy50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWUgZnJvbSBcIi4vc3JjL2dlbmllLnRzXCI7XG5leHBvcnQgKiBhcyBpZGVudGl0eSBmcm9tIFwiLi9zcmMvaWRlbnRpdHkudHNcIjtcbmV4cG9ydCAqIGFzIG1jcCBmcm9tIFwiLi9zcmMvbWNwLnRzXCI7XG5leHBvcnQgKiBhcyBtZW1vcnkgZnJvbSBcIi4vc3JjL21lbW9yeS50c1wiO1xuZXhwb3J0ICogYXMgbWxmbG93IGZyb20gXCIuL3NyYy9tbGZsb3cudHNcIjtcbmV4cG9ydCAqIGFzIG1vZGVsIGZyb20gXCIuL3NyYy9tb2RlbC50c1wiO1xuZXhwb3J0ICogYXMgbW9udHlTYW5kYm94IGZyb20gXCIuL3NyYy9tb250eS1zYW5kYm94LnRzXCI7XG5leHBvcnQgKiBhcyBvYnNlcnZhYmlsaXR5IGZyb20gXCIuL3NyYy9vYnNlcnZhYmlsaXR5LnRzXCI7XG5leHBvcnQgKiBhcyBwbHVnaW4gZnJvbSBcIi4vc3JjL3BsdWdpbi50c1wiO1xuZXhwb3J0ICogYXMgcHJvY2Vzc29ycyBmcm9tIFwiLi9zcmMvcHJvY2Vzc29ycy50c1wiO1xuZXhwb3J0ICogYXMgcmVtb3RlU2tpbGxzIGZyb20gXCIuL3NyYy9yZW1vdGUtc2tpbGxzLnRzXCI7XG5leHBvcnQgKiBhcyByZXN0IGZyb20gXCIuL3NyYy9yZXN0LnRzXCI7XG5leHBvcnQgKiBhcyBzYW5kYm94IGZyb20gXCIuL3NyYy9zYW5kYm94LnRzXCI7XG5leHBvcnQgKiBhcyBzZXJ2ZXIgZnJvbSBcIi4vc3JjL3NlcnZlci50c1wiO1xuZXhwb3J0ICogYXMgc2VydmluZyBmcm9tIFwiLi9zcmMvc2VydmluZy50c1wiO1xuZXhwb3J0ICogYXMgc2VydmluZ1Nhbml0aXplIGZyb20gXCIuL3NyYy9zZXJ2aW5nLXNhbml0aXplLnRzXCI7XG5leHBvcnQgKiBhcyBza2lsbFBhdGhzIGZyb20gXCIuL3NyYy9za2lsbC1wYXRocy50c1wiO1xuZXhwb3J0ICogYXMgc3RhdGVtZW50IGZyb20gXCIuL3NyYy9zdGF0ZW1lbnQudHNcIjtcbmV4cG9ydCAqIGFzIHN0b3JhZ2VTY2hlbWEgZnJvbSBcIi4vc3JjL3N0b3JhZ2Utc2NoZW1hLnRzXCI7XG5leHBvcnQgKiBhcyBzdHlsZSBmcm9tIFwiLi9zcmMvc3R5bGUudHNcIjtcbmV4cG9ydCAqIGFzIHN1bW1hcml6ZSBmcm9tIFwiLi9zcmMvc3VtbWFyaXplLnRzXCI7XG5leHBvcnQgKiBhcyB0ZWxlbWV0cnkgZnJvbSBcIi4vc3JjL3RlbGVtZXRyeS50c1wiO1xuZXhwb3J0ICogYXMgdmFsaWRhdGlvbiBmcm9tIFwiLi9zcmMvdmFsaWRhdGlvbi50c1wiO1xuZXhwb3J0ICogYXMgd29ya3NwYWNlcyBmcm9tIFwiLi9zcmMvd29ya3NwYWNlcy50c1wiO1xuZXhwb3J0ICogYXMgd3JpdGVyIGZyb20gXCIuL3NyYy93cml0ZXIudHNcIjtcbmV4cG9ydCB7IEZBTExCQUNLX0FHRU5UX0lELCBERUZBVUxUX0FHRU5UX01BWF9TVEVQUywgREVGQVVMVF9TVFlMRV9JTlNUUlVDVElPTlMgfSBmcm9tIFwiLi9zcmMvYWdlbnRzLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYVRvb2xzLCBBcHBLaXRUb29sT3B0aW9ucywgVG9vbGtpdE9wdGlvbnMsIE1hc3RyYVBsdWdpblRvb2xraXRQcm92aWRlciwgTWFzdHJhUGx1Z2lucywgTWFzdHJhVG9vbHNGbiwgTWFzdHJhQWdlbnRXb3Jrc3BhY2VSZXNvbHZlciwgTWFzdHJhQWdlbnREZWZpbml0aW9uLCBBbnlNYXN0cmFBZ2VudERlZmluaXRpb24sIE1hc3RyYVN0b3JhZ2VDb25maWdPdmVycmlkZSwgTWFzdHJhTWVtb3J5Q29uZmlnT3ZlcnJpZGUsIEFnZW50RGVmYXVsdE1vZGVsLCBCdWlsdEFnZW50cyB9IGZyb20gXCIuL3NyYy9hZ2VudHMudHNcIjtcbmV4cG9ydCB7IGNoYXJ0UGxhblNjaGVtYSwgY2hhcnRQbGFubmVyUmVxdWVzdFNjaGVtYSwgY2hhcnRUb29sT3V0cHV0U2NoZW1hIH0gZnJvbSBcIi4vc3JjL2NoYXJ0LnRzXCI7XG5leHBvcnQgdHlwZSB7IENoYXJ0UGxhbm5lclJlcXVlc3QsIENoYXJ0VG9vbE91dHB1dCwgUHJlcGFyZUNoYXJ0T3B0aW9ucywgRmV0Y2hDaGFydE9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvY2hhcnQudHNcIjtcbmV4cG9ydCB7IE1BU1RSQV9VU0VSX0tFWSwgTUFTVFJBX1VTRVJfTkFNRV9LRVksIE1BU1RSQV9VU0VSX0VNQUlMX0tFWSwgTUFTVFJBX1JFUVVFU1RfSURfS0VZLCBNQVNUUkFfU0NPUEVTX0tFWSwgVFJBQ0VfUkVRVUVTVF9DT05URVhUX0tFWVMsIE1BU1RSQV9DT05GSUdfU0NIRU1BIH0gZnJvbSBcIi4vc3JjL2NvbmZpZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBVc2VyLCBNYXN0cmFNZW1vcnlDb25maWcsIE1hc3RyYU1jcENvbmZpZywgTWFzdHJhUGx1Z2luQ29uZmlnIH0gZnJvbSBcIi4vc3JjL2NvbmZpZy50c1wiO1xuZXhwb3J0IHsgbW9kZWxDYXRhbG9ndWVEZWZhdWx0cywgZ2VuaWVTdWdnZXN0aW9uRGVmYXVsdHMsIHN0YXRlbWVudERhdGFEZWZhdWx0cywgY2hhcnRGZXRjaERlZmF1bHRzLCBmZWVkYmFja1dyaXRlRGVmYXVsdHMgfSBmcm9tIFwiLi9zcmMvZGVmYXVsdHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFzdHJhRXZhbERyaXZlck9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvZXZhbHVhdGlvbi50c1wiO1xuZXhwb3J0IHsgTWFzdHJhRmlsZVN5c3RlbUFkYXB0ZXIgfSBmcm9tIFwiLi9zcmMvZmlsZXN5c3RlbXMudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFzdHJhRmlsZVN5c3RlbUFkYXB0ZXJPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2ZpbGVzeXN0ZW1zLnRzXCI7XG5leHBvcnQgeyBERUZBVUxUX0dFTklFX0FMSUFTLCBHRU5JRV9JTlNUUlVDVElPTlMgfSBmcm9tIFwiLi9zcmMvZ2VuaWUudHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVTcGFjZUNvbmZpZywgR2VuaWVTcGFjZXNDb25maWcgfSBmcm9tIFwiLi9zcmMvZ2VuaWUudHNcIjtcbmV4cG9ydCB7IElERU5USVRZX0VOViwgSURFTlRJVFlfTU9ERVMsIERFRkFVTFRfSURFTlRJVFlfTU9ERSwgVVNFUl9JRF9IRUFERVIsIFVTRVJfRU1BSUxfSEVBREVSLCByZXF1ZXN0VXNlcklkLCByZXF1ZXN0VXNlckVtYWlsLCB1c2VTZXJ2aWNlUHJpbmNpcGFsIH0gZnJvbSBcIi4vc3JjL2lkZW50aXR5LnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYUlkZW50aXR5TW9kZSB9IGZyb20gXCIuL3NyYy9pZGVudGl0eS50c1wiO1xuZXhwb3J0IHR5cGUgeyBSZXNvbHZlZE1jcCB9IGZyb20gXCIuL3NyYy9tY3AudHNcIjtcbmV4cG9ydCB7IE1lbW9yeUJ1aWxkZXIgfSBmcm9tIFwiLi9zcmMvbWVtb3J5LnRzXCI7XG5leHBvcnQgdHlwZSB7IExvZ0ZlZWRiYWNrUGFyYW1zIH0gZnJvbSBcIi4vc3JjL21sZmxvdy50c1wiO1xuZXhwb3J0IHsgUkVTUE9OU0VTX1BST1ZJREVSX09QVElPTlMgfSBmcm9tIFwiLi9zcmMvbW9kZWwudHNcIjtcbmV4cG9ydCB0eXBlIHsgQnVpbGRNb2RlbE92ZXJyaWRlcyB9IGZyb20gXCIuL3NyYy9tb2RlbC50c1wiO1xuZXhwb3J0IHsgTW9udHlTYW5kYm94IH0gZnJvbSBcIi4vc3JjL21vbnR5LXNhbmRib3gudHNcIjtcbmV4cG9ydCB0eXBlIHsgTW9udHlTYW5kYm94T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9tb250eS1zYW5kYm94LnRzXCI7XG5leHBvcnQgdHlwZSB7IEJ1aWxkT2JzZXJ2YWJpbGl0eU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvb2JzZXJ2YWJpbGl0eS50c1wiO1xuZXhwb3J0IHsgTWFzdHJhUGx1Z2luLCBtYXN0cmEgfSBmcm9tIFwiLi9zcmMvcGx1Z2luLnRzXCI7XG5leHBvcnQgeyBzdHJpcFN0YWxlQ2hhcnRzUHJvY2Vzc29yIH0gZnJvbSBcIi4vc3JjL3Byb2Nlc3NvcnMudHNcIjtcbmV4cG9ydCB7IEFJVE9PTFNfU09VUkNFIH0gZnJvbSBcIi4vc3JjL3JlbW90ZS1za2lsbHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgQWlUb29sc1NvdXJjZSwgUmVtb3RlU2tpbGxTb3VyY2VPcHRpb25zLCBSZW1vdGVTa2lsbFNvdXJjZSwgUmVtb3RlU2tpbGxzT3B0aW9uLCBQcm92aXNpb25SZW1vdGVTa2lsbHNPcHRpb25zLCBQcm92aXNpb25lZFJlbW90ZVNraWxscywgUmVtb3RlU2tpbGxDYWNoZUVudHJ5LCBSZW1vdGVTa2lsbHNNZXRhZGF0YSB9IGZyb20gXCIuL3NyYy9yZW1vdGUtc2tpbGxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IERhdGFicmlja3NGZXRjaEluaXQgfSBmcm9tIFwiLi9zcmMvcmVzdC50c1wiO1xuZXhwb3J0IHsgRGF0YWJyaWNrc1NhbmRib3ggfSBmcm9tIFwiLi9zcmMvc2FuZGJveC50c1wiO1xuZXhwb3J0IHR5cGUgeyBEYXRhYnJpY2tzU2FuZGJveE9wdGlvbnMsIERhdGFicmlja3NXb3Jrc3BhY2VTYW5kYm94T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9zYW5kYm94LnRzXCI7XG5leHBvcnQgeyBNYXN0cmFTZXJ2ZXIgfSBmcm9tIFwiLi9zcmMvc2VydmVyLnRzXCI7XG5leHBvcnQgdHlwZSB7IEF0dHJpYnV0ZWRJZGVudGl0eSwgTWFzdHJhQXBpR2F0ZU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvc2VydmVyLnRzXCI7XG5leHBvcnQgeyBNQVNUUkFfTU9ERUxfT1ZFUlJJREVfS0VZIH0gZnJvbSBcIi4vc3JjL3NlcnZpbmcudHNcIjtcbmV4cG9ydCB0eXBlIHsgTW9kZWxPdmVycmlkZVJlcXVlc3QgfSBmcm9tIFwiLi9zcmMvc2VydmluZy50c1wiO1xuZXhwb3J0IHsgQVNTSVNUQU5UX1NIQVJFRF9TS0lMTFNfUEFUSCB9IGZyb20gXCIuL3NyYy9za2lsbC1wYXRocy50c1wiO1xuZXhwb3J0IHsgU1RBVEVNRU5UX1JPV19DQVAgfSBmcm9tIFwiLi9zcmMvc3RhdGVtZW50LnRzXCI7XG5leHBvcnQgeyBUWVBPR1JBUEhZX1JVTEUgfSBmcm9tIFwiLi9zcmMvc3R5bGUudHNcIjtcbmV4cG9ydCB7IFRJVExFX0lOU1RSVUNUSU9OUyB9IGZyb20gXCIuL3NyYy9zdW1tYXJpemUudHNcIjtcbmV4cG9ydCB0eXBlIHsgU3VtbWFyaXplT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9zdW1tYXJpemUudHNcIjtcbmV4cG9ydCB7IFRSQUNFX0lPX0xJTUlULCBNTEZMT1dfU1BBTl9JTlBVVFNfQVRUUiwgTUxGTE9XX1NQQU5fT1VUUFVUU19BVFRSLCBDSEFUX01FU1NBR0VTX0FUVFIsIENIQVRfUkVTUE9OU0VfQVRUUiwgQ0hBVF9JREVOVElUWV9BVFRSLCBDSEFUX0dFTklFX1VTRURfQVRUUiB9IGZyb20gXCIuL3NyYy90ZWxlbWV0cnkudHNcIjtcbmV4cG9ydCB0eXBlIHsgQ2hhdFR1cm5UZWxlbWV0cnlPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3RlbGVtZXRyeS50c1wiO1xuZXhwb3J0IHR5cGUgeyBTY2hlbWFJc3N1ZXMgfSBmcm9tIFwiLi9zcmMvdmFsaWRhdGlvbi50c1wiO1xuZXhwb3J0IHsgREVGQVVMVF9TS0lMTF9GT0xERVJTIH0gZnJvbSBcIi4vc3JjL3dvcmtzcGFjZXMudHNcIjtcbmV4cG9ydCB0eXBlIHsgV29ya3NwYWNlTW91bnRDb250ZXh0LCBTa2lsbEZvbGRlclZhbHVlLCBTa2lsbEZvbGRlck9wdGlvbnMsIFdvcmtzcGFjZU1vdW50Q29udHJpYnV0aW9uLCBXb3Jrc3BhY2VNb3VudFJlc29sdmVyLCBEZWZhdWx0U2tpbGxGb2xkZXJOYW1lLCBXb3Jrc3BhY2VTYW5kYm94U2VsZWN0aW9uLCBDcmVhdGVXb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3dvcmtzcGFjZXMudHNcIjtcbiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRywwQkFBMEIsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssV0FBVyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEtBQUssWUFBWSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxhQUFhLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssVUFBVSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxZQUFZLE1BQU0sd0JBQXdCLENBQUM7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LHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHclksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL2FwcGtpdC1tYXN0cmFcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS42NFwiO1xuZXhwb3J0ICogYXMgYWdlbnRzIGZyb20gXCIuL3NyYy9hZ2VudHMudHNcIjtcbmV4cG9ydCAqIGFzIGNoYXJ0IGZyb20gXCIuL3NyYy9jaGFydC50c1wiO1xuZXhwb3J0ICogYXMgY2hhdCBmcm9tIFwiLi9zcmMvY2hhdC50c1wiO1xuZXhwb3J0ICogYXMgY29uZmlnIGZyb20gXCIuL3NyYy9jb25maWcudHNcIjtcbmV4cG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gXCIuL3NyYy9kZWZhdWx0cy50c1wiO1xuZXhwb3J0ICogYXMgZXZhbHVhdGlvbiBmcm9tIFwiLi9zcmMvZXZhbHVhdGlvbi50c1wiO1xuZXhwb3J0ICogYXMgZmlsZXN5c3RlbXMgZnJvbSBcIi4vc3JjL2ZpbGVzeXN0ZW1zLnRzXCI7XG5leHBvcnQgKiBhcyBnZW5pZSBmcm9tIFwiLi9zcmMvZ2VuaWUudHNcIjtcbmV4cG9ydCAqIGFzIGlkZW50aXR5IGZyb20gXCIuL3NyYy9pZGVudGl0eS50c1wiO1xuZXhwb3J0ICogYXMgbWNwIGZyb20gXCIuL3NyYy9tY3AudHNcIjtcbmV4cG9ydCAqIGFzIG1lbW9yeSBmcm9tIFwiLi9zcmMvbWVtb3J5LnRzXCI7XG5leHBvcnQgKiBhcyBtbGZsb3cgZnJvbSBcIi4vc3JjL21sZmxvdy50c1wiO1xuZXhwb3J0ICogYXMgbW9kZWwgZnJvbSBcIi4vc3JjL21vZGVsLnRzXCI7XG5leHBvcnQgKiBhcyBtb250eVNhbmRib3ggZnJvbSBcIi4vc3JjL21vbnR5LXNhbmRib3gudHNcIjtcbmV4cG9ydCAqIGFzIG9ic2VydmFiaWxpdHkgZnJvbSBcIi4vc3JjL29ic2VydmFiaWxpdHkudHNcIjtcbmV4cG9ydCAqIGFzIHBsdWdpbiBmcm9tIFwiLi9zcmMvcGx1Z2luLnRzXCI7XG5leHBvcnQgKiBhcyBwcm9jZXNzb3JzIGZyb20gXCIuL3NyYy9wcm9jZXNzb3JzLnRzXCI7XG5leHBvcnQgKiBhcyByZW1vdGVTa2lsbHMgZnJvbSBcIi4vc3JjL3JlbW90ZS1za2lsbHMudHNcIjtcbmV4cG9ydCAqIGFzIHJlc3QgZnJvbSBcIi4vc3JjL3Jlc3QudHNcIjtcbmV4cG9ydCAqIGFzIHNhbmRib3ggZnJvbSBcIi4vc3JjL3NhbmRib3gudHNcIjtcbmV4cG9ydCAqIGFzIHNlcnZlciBmcm9tIFwiLi9zcmMvc2VydmVyLnRzXCI7XG5leHBvcnQgKiBhcyBzZXJ2aW5nIGZyb20gXCIuL3NyYy9zZXJ2aW5nLnRzXCI7XG5leHBvcnQgKiBhcyBzZXJ2aW5nU2FuaXRpemUgZnJvbSBcIi4vc3JjL3NlcnZpbmctc2FuaXRpemUudHNcIjtcbmV4cG9ydCAqIGFzIHNraWxsQ2FjaGUgZnJvbSBcIi4vc3JjL3NraWxsLWNhY2hlLnRzXCI7XG5leHBvcnQgKiBhcyBza2lsbFBhdGhzIGZyb20gXCIuL3NyYy9za2lsbC1wYXRocy50c1wiO1xuZXhwb3J0ICogYXMgc3RhdGVtZW50IGZyb20gXCIuL3NyYy9zdGF0ZW1lbnQudHNcIjtcbmV4cG9ydCAqIGFzIHN0b3JhZ2VTY2hlbWEgZnJvbSBcIi4vc3JjL3N0b3JhZ2Utc2NoZW1hLnRzXCI7XG5leHBvcnQgKiBhcyBzdHlsZSBmcm9tIFwiLi9zcmMvc3R5bGUudHNcIjtcbmV4cG9ydCAqIGFzIHN1bW1hcml6ZSBmcm9tIFwiLi9zcmMvc3VtbWFyaXplLnRzXCI7XG5leHBvcnQgKiBhcyB0ZWxlbWV0cnkgZnJvbSBcIi4vc3JjL3RlbGVtZXRyeS50c1wiO1xuZXhwb3J0ICogYXMgdmFsaWRhdGlvbiBmcm9tIFwiLi9zcmMvdmFsaWRhdGlvbi50c1wiO1xuZXhwb3J0ICogYXMgd29ya3NwYWNlcyBmcm9tIFwiLi9zcmMvd29ya3NwYWNlcy50c1wiO1xuZXhwb3J0ICogYXMgd3JpdGVyIGZyb20gXCIuL3NyYy93cml0ZXIudHNcIjtcbmV4cG9ydCB7IEZBTExCQUNLX0FHRU5UX0lELCBERUZBVUxUX0FHRU5UX01BWF9TVEVQUywgREVGQVVMVF9TVFlMRV9JTlNUUlVDVElPTlMgfSBmcm9tIFwiLi9zcmMvYWdlbnRzLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYVRvb2xzLCBBcHBLaXRUb29sT3B0aW9ucywgVG9vbGtpdE9wdGlvbnMsIE1hc3RyYVBsdWdpblRvb2xraXRQcm92aWRlciwgTWFzdHJhUGx1Z2lucywgTWFzdHJhVG9vbHNGbiwgTWFzdHJhQWdlbnRXb3Jrc3BhY2VSZXNvbHZlciwgTWFzdHJhQWdlbnREZWZpbml0aW9uLCBBbnlNYXN0cmFBZ2VudERlZmluaXRpb24sIE1hc3RyYVN0b3JhZ2VDb25maWdPdmVycmlkZSwgTWFzdHJhTWVtb3J5Q29uZmlnT3ZlcnJpZGUsIEFnZW50RGVmYXVsdE1vZGVsLCBCdWlsdEFnZW50cyB9IGZyb20gXCIuL3NyYy9hZ2VudHMudHNcIjtcbmV4cG9ydCB7IGNoYXJ0UGxhblNjaGVtYSwgY2hhcnRQbGFubmVyUmVxdWVzdFNjaGVtYSwgY2hhcnRUb29sT3V0cHV0U2NoZW1hIH0gZnJvbSBcIi4vc3JjL2NoYXJ0LnRzXCI7XG5leHBvcnQgdHlwZSB7IENoYXJ0UGxhbm5lclJlcXVlc3QsIENoYXJ0VG9vbE91dHB1dCwgUHJlcGFyZUNoYXJ0T3B0aW9ucywgRmV0Y2hDaGFydE9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvY2hhcnQudHNcIjtcbmV4cG9ydCB7IE1BU1RSQV9VU0VSX0tFWSwgTUFTVFJBX1VTRVJfTkFNRV9LRVksIE1BU1RSQV9VU0VSX0VNQUlMX0tFWSwgTUFTVFJBX1JFUVVFU1RfSURfS0VZLCBNQVNUUkFfU0NPUEVTX0tFWSwgVFJBQ0VfUkVRVUVTVF9DT05URVhUX0tFWVMsIE1BU1RSQV9DT05GSUdfU0NIRU1BIH0gZnJvbSBcIi4vc3JjL2NvbmZpZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBVc2VyLCBNYXN0cmFNZW1vcnlDb25maWcsIE1hc3RyYVNraWxsU2VhcmNoQ29uZmlnLCBNYXN0cmFNY3BDb25maWcsIE1hc3RyYVBsdWdpbkNvbmZpZyB9IGZyb20gXCIuL3NyYy9jb25maWcudHNcIjtcbmV4cG9ydCB7IG1vZGVsQ2F0YWxvZ3VlRGVmYXVsdHMsIGdlbmllU3VnZ2VzdGlvbkRlZmF1bHRzLCBzdGF0ZW1lbnREYXRhRGVmYXVsdHMsIGNoYXJ0RmV0Y2hEZWZhdWx0cywgZmVlZGJhY2tXcml0ZURlZmF1bHRzIH0gZnJvbSBcIi4vc3JjL2RlZmF1bHRzLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYUV2YWxEcml2ZXJPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2V2YWx1YXRpb24udHNcIjtcbmV4cG9ydCB7IE1hc3RyYUZpbGVTeXN0ZW1BZGFwdGVyIH0gZnJvbSBcIi4vc3JjL2ZpbGVzeXN0ZW1zLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYUZpbGVTeXN0ZW1BZGFwdGVyT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9maWxlc3lzdGVtcy50c1wiO1xuZXhwb3J0IHsgREVGQVVMVF9HRU5JRV9BTElBUywgR0VOSUVfSU5TVFJVQ1RJT05TIH0gZnJvbSBcIi4vc3JjL2dlbmllLnRzXCI7XG5leHBvcnQgdHlwZSB7IEdlbmllU3BhY2VDb25maWcsIEdlbmllU3BhY2VzQ29uZmlnIH0gZnJvbSBcIi4vc3JjL2dlbmllLnRzXCI7XG5leHBvcnQgeyBJREVOVElUWV9FTlYsIElERU5USVRZX01PREVTLCBERUZBVUxUX0lERU5USVRZX01PREUsIFVTRVJfSURfSEVBREVSLCBVU0VSX0VNQUlMX0hFQURFUiwgcmVxdWVzdFVzZXJJZCwgcmVxdWVzdFVzZXJFbWFpbCwgdXNlU2VydmljZVByaW5jaXBhbCB9IGZyb20gXCIuL3NyYy9pZGVudGl0eS50c1wiO1xuZXhwb3J0IHR5cGUgeyBNYXN0cmFJZGVudGl0eU1vZGUgfSBmcm9tIFwiLi9zcmMvaWRlbnRpdHkudHNcIjtcbmV4cG9ydCB0eXBlIHsgUmVzb2x2ZWRNY3AgfSBmcm9tIFwiLi9zcmMvbWNwLnRzXCI7XG5leHBvcnQgeyBNZW1vcnlCdWlsZGVyIH0gZnJvbSBcIi4vc3JjL21lbW9yeS50c1wiO1xuZXhwb3J0IHR5cGUgeyBMb2dGZWVkYmFja1BhcmFtcyB9IGZyb20gXCIuL3NyYy9tbGZsb3cudHNcIjtcbmV4cG9ydCB7IFJFU1BPTlNFU19QUk9WSURFUl9PUFRJT05TIH0gZnJvbSBcIi4vc3JjL21vZGVsLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJ1aWxkTW9kZWxPdmVycmlkZXMgfSBmcm9tIFwiLi9zcmMvbW9kZWwudHNcIjtcbmV4cG9ydCB7IE1vbnR5U2FuZGJveCB9IGZyb20gXCIuL3NyYy9tb250eS1zYW5kYm94LnRzXCI7XG5leHBvcnQgdHlwZSB7IE1vbnR5U2FuZGJveE9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvbW9udHktc2FuZGJveC50c1wiO1xuZXhwb3J0IHR5cGUgeyBCdWlsZE9ic2VydmFiaWxpdHlPcHRpb25zIH0gZnJvbSBcIi4vc3JjL29ic2VydmFiaWxpdHkudHNcIjtcbmV4cG9ydCB7IE1hc3RyYVBsdWdpbiwgbWFzdHJhIH0gZnJvbSBcIi4vc3JjL3BsdWdpbi50c1wiO1xuZXhwb3J0IHsgc3RyaXBTdGFsZUNoYXJ0c1Byb2Nlc3NvciB9IGZyb20gXCIuL3NyYy9wcm9jZXNzb3JzLnRzXCI7XG5leHBvcnQgeyBBSVRPT0xTX1NPVVJDRSB9IGZyb20gXCIuL3NyYy9yZW1vdGUtc2tpbGxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEFpVG9vbHNTb3VyY2UsIFJlbW90ZVNraWxsU291cmNlT3B0aW9ucywgUmVtb3RlU2tpbGxTb3VyY2UsIFJlbW90ZVNraWxsc09wdGlvbiwgUHJvdmlzaW9uUmVtb3RlU2tpbGxzT3B0aW9ucywgUHJvdmlzaW9uZWRSZW1vdGVTa2lsbHMsIFJlbW90ZVNraWxsQ2FjaGVFbnRyeSwgUmVtb3RlU2tpbGxzTWV0YWRhdGEgfSBmcm9tIFwiLi9zcmMvcmVtb3RlLXNraWxscy50c1wiO1xuZXhwb3J0IHR5cGUgeyBEYXRhYnJpY2tzRmV0Y2hJbml0IH0gZnJvbSBcIi4vc3JjL3Jlc3QudHNcIjtcbmV4cG9ydCB7IERhdGFicmlja3NTYW5kYm94IH0gZnJvbSBcIi4vc3JjL3NhbmRib3gudHNcIjtcbmV4cG9ydCB0eXBlIHsgRGF0YWJyaWNrc1NhbmRib3hPcHRpb25zLCBEYXRhYnJpY2tzV29ya3NwYWNlU2FuZGJveE9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvc2FuZGJveC50c1wiO1xuZXhwb3J0IHsgTWFzdHJhU2VydmVyIH0gZnJvbSBcIi4vc3JjL3NlcnZlci50c1wiO1xuZXhwb3J0IHR5cGUgeyBBdHRyaWJ1dGVkSWRlbnRpdHksIE1hc3RyYUFwaUdhdGVPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3NlcnZlci50c1wiO1xuZXhwb3J0IHsgTUFTVFJBX01PREVMX09WRVJSSURFX0tFWSB9IGZyb20gXCIuL3NyYy9zZXJ2aW5nLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1vZGVsT3ZlcnJpZGVSZXF1ZXN0IH0gZnJvbSBcIi4vc3JjL3NlcnZpbmcudHNcIjtcbmV4cG9ydCB7IERFRkFVTFRfV09SS1NQQUNFX1NLSUxMX0NBQ0hFX1RUTF9NUywgQXBwS2l0Q2FjaGVkRmlsZVN5c3RlbSB9IGZyb20gXCIuL3NyYy9za2lsbC1jYWNoZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBBcHBLaXRDYWNoZWRGaWxlU3lzdGVtT3B0aW9ucywgQ2FjaGVkV29ya3NwYWNlU2tpbGxNb3VudCB9IGZyb20gXCIuL3NyYy9za2lsbC1jYWNoZS50c1wiO1xuZXhwb3J0IHsgQVNTSVNUQU5UX1NIQVJFRF9TS0lMTFNfUEFUSCB9IGZyb20gXCIuL3NyYy9za2lsbC1wYXRocy50c1wiO1xuZXhwb3J0IHsgU1RBVEVNRU5UX1JPV19DQVAgfSBmcm9tIFwiLi9zcmMvc3RhdGVtZW50LnRzXCI7XG5leHBvcnQgeyBUWVBPR1JBUEhZX1JVTEUgfSBmcm9tIFwiLi9zcmMvc3R5bGUudHNcIjtcbmV4cG9ydCB7IFRJVExFX0lOU1RSVUNUSU9OUyB9IGZyb20gXCIuL3NyYy9zdW1tYXJpemUudHNcIjtcbmV4cG9ydCB0eXBlIHsgU3VtbWFyaXplT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9zdW1tYXJpemUudHNcIjtcbmV4cG9ydCB7IFRSQUNFX0lPX0xJTUlULCBNTEZMT1dfU1BBTl9JTlBVVFNfQVRUUiwgTUxGTE9XX1NQQU5fT1VUUFVUU19BVFRSLCBDSEFUX01FU1NBR0VTX0FUVFIsIENIQVRfUkVTUE9OU0VfQVRUUiwgQ0hBVF9JREVOVElUWV9BVFRSLCBDSEFUX0dFTklFX1VTRURfQVRUUiwgTUxGTE9XX1NQQU5fVFlQRV9BVFRSLCBHRU5fQUlfT1BFUkFUSU9OX05BTUVfQVRUUiwgTUxGTE9XX1VTRVJfQVRUUiwgTUxGTE9XX1NFU1NJT05fQVRUUiwgTUxGTE9XX1RSQUNFX1RBR19QUkVGSVgsIE1MRkxPV19HRU5JRV9UQUcsIE1MRkxPV19TUEFOX1RZUEVfQUdFTlQsIE1MRkxPV19TUEFOX1RZUEVfR0VOSUUsIE1MRkxPV19HRU5JRV9UQUdfQVRUUiB9IGZyb20gXCIuL3NyYy90ZWxlbWV0cnkudHNcIjtcbmV4cG9ydCB0eXBlIHsgQ2hhdFR1cm5UZWxlbWV0cnlPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3RlbGVtZXRyeS50c1wiO1xuZXhwb3J0IHR5cGUgeyBTY2hlbWFJc3N1ZXMgfSBmcm9tIFwiLi9zcmMvdmFsaWRhdGlvbi50c1wiO1xuZXhwb3J0IHsgREVGQVVMVF9TS0lMTF9GT0xERVJTIH0gZnJvbSBcIi4vc3JjL3dvcmtzcGFjZXMudHNcIjtcbmV4cG9ydCB0eXBlIHsgV29ya3NwYWNlTW91bnRDb250ZXh0LCBTa2lsbEZvbGRlclZhbHVlLCBTa2lsbEZvbGRlck9wdGlvbnMsIFdvcmtzcGFjZU1vdW50Q29udHJpYnV0aW9uLCBXb3Jrc3BhY2VNb3VudFJlc29sdmVyLCBEZWZhdWx0U2tpbGxGb2xkZXJOYW1lLCBXb3Jrc3BhY2VTYW5kYm94U2VsZWN0aW9uLCBDcmVhdGVXb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3dvcmtzcGFjZXMudHNcIjtcbiJdfQ==