@decaf-ts/integrations 0.3.12 → 0.4.1-0
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 +11 -3
- package/dist/integrations.cjs +445 -7
- package/dist/integrations.js +479 -8
- package/jest.config.cjs +1 -1
- package/lib/cjs/feature-flags/constants.cjs +16 -0
- package/lib/cjs/feature-flags/decorators.cjs +65 -0
- package/lib/cjs/feature-flags/environment.cjs +26 -0
- package/lib/cjs/feature-flags/index.cjs +31 -0
- package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +81 -0
- package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +78 -0
- package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs +25 -0
- package/lib/cjs/feature-flags/readers/index.cjs +19 -0
- package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs +259 -0
- package/lib/cjs/feature-flags/types.cjs +4 -0
- package/lib/cjs/feature-flags/utils.cjs +141 -0
- package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +9 -9
- package/lib/cjs/graph/shared/nodes/flow-control.cjs +4 -3
- package/lib/cjs/graph/shared/types.cjs +2 -2
- package/lib/cjs/index.cjs +6 -5
- package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs +329 -0
- package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs +37 -0
- package/lib/cjs/kibana/builders/index.cjs +20 -0
- package/lib/cjs/kibana/helpers.cjs +20 -16
- package/lib/cjs/kibana/index.cjs +3 -2
- package/lib/cjs/kibana/types.cjs +11 -2
- package/lib/cjs/loader/ObjectLoader.cjs +154 -0
- package/lib/cjs/loader/families.cjs +78 -0
- package/lib/cjs/loader/index.cjs +28 -0
- package/lib/cjs/loader/types.cjs +4 -0
- package/lib/cjs/nest/decorators.cjs +17 -0
- package/lib/cjs/nest/index.cjs +3 -3
- package/lib/cjs/nest/keycloakAuthHandler.cjs +74 -35
- package/lib/cjs/nest/keycloakModule.cjs +7 -10
- package/lib/cjs/nest/types.cjs +2 -2
- package/lib/cjs/nest/utils.cjs +58 -50
- package/lib/cjs/plugins/contract.cjs +76 -0
- package/lib/cjs/plugins/index.cjs +35 -0
- package/lib/cjs/plugins/kibana/host.cjs +24 -0
- package/lib/cjs/plugins/kibana/index.cjs +38 -0
- package/lib/cjs/plugins/kibana/installer.cjs +180 -0
- package/lib/cjs/plugins/kibana/manifest.cjs +33 -0
- package/lib/cjs/plugins/kibana/templates.cjs +503 -0
- package/lib/cjs/plugins/kibana/types.cjs +33 -0
- package/lib/cjs/plugins/superset/host.cjs +26 -0
- package/lib/cjs/plugins/superset/index.cjs +40 -0
- package/lib/cjs/plugins/superset/installer.cjs +232 -0
- package/lib/cjs/plugins/superset/manifest.cjs +35 -0
- package/lib/cjs/plugins/superset/templates.cjs +844 -0
- package/lib/cjs/plugins/superset/types.cjs +39 -0
- package/lib/esm/feature-flags/constants.js +12 -0
- package/lib/esm/feature-flags/decorators.js +49 -0
- package/lib/esm/feature-flags/environment.js +18 -0
- package/lib/esm/feature-flags/index.js +14 -0
- package/lib/esm/feature-flags/models/FeatureFlag.model.js +72 -0
- package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +69 -0
- package/lib/esm/feature-flags/readers/FeatureFlagReader.js +19 -0
- package/lib/esm/feature-flags/readers/index.js +2 -0
- package/lib/esm/feature-flags/services/FeatureFlag.service.js +250 -0
- package/lib/esm/feature-flags/types.js +2 -0
- package/lib/esm/feature-flags/utils.js +126 -0
- package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +8 -8
- package/lib/esm/graph/shared/nodes/flow-control.js +3 -2
- package/lib/esm/graph/shared/types.js +1 -1
- package/lib/esm/index.js +5 -4
- package/lib/esm/kibana/builders/KibanaIndexBuilder.js +319 -0
- package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js +32 -0
- package/lib/esm/kibana/builders/index.js +3 -0
- package/lib/esm/kibana/helpers.js +19 -15
- package/lib/esm/kibana/index.js +2 -1
- package/lib/esm/kibana/types.js +13 -2
- package/lib/esm/loader/ObjectLoader.js +115 -0
- package/lib/esm/loader/families.js +66 -0
- package/lib/esm/loader/index.js +11 -0
- package/lib/esm/loader/types.js +2 -0
- package/lib/esm/nest/decorators.js +12 -0
- package/lib/esm/nest/index.js +2 -2
- package/lib/esm/nest/keycloakAuthHandler.js +67 -35
- package/lib/esm/nest/keycloakModule.js +7 -10
- package/lib/esm/nest/types.js +1 -1
- package/lib/esm/nest/utils.js +55 -46
- package/lib/esm/plugins/contract.js +68 -0
- package/lib/esm/plugins/index.js +18 -0
- package/lib/esm/plugins/kibana/host.js +19 -0
- package/lib/esm/plugins/kibana/index.js +14 -0
- package/lib/esm/plugins/kibana/installer.js +140 -0
- package/lib/esm/plugins/kibana/manifest.js +32 -0
- package/lib/esm/plugins/kibana/templates.js +499 -0
- package/lib/esm/plugins/kibana/types.js +10 -0
- package/lib/esm/plugins/superset/host.js +21 -0
- package/lib/esm/plugins/superset/index.js +16 -0
- package/lib/esm/plugins/superset/installer.js +192 -0
- package/lib/esm/plugins/superset/manifest.js +30 -0
- package/lib/esm/plugins/superset/templates.js +840 -0
- package/lib/esm/plugins/superset/types.js +11 -0
- package/lib/types/feature-flags/constants.d.cts +11 -0
- package/lib/types/feature-flags/constants.d.mts +11 -0
- package/lib/types/feature-flags/decorators.d.cts +11 -0
- package/lib/types/feature-flags/decorators.d.mts +11 -0
- package/lib/types/feature-flags/environment.d.cts +11 -0
- package/lib/types/feature-flags/environment.d.mts +11 -0
- package/lib/types/feature-flags/index.d.cts +13 -0
- package/lib/types/feature-flags/index.d.mts +13 -0
- package/lib/types/feature-flags/models/FeatureFlag.model.d.cts +16 -0
- package/lib/types/feature-flags/models/FeatureFlag.model.d.mts +16 -0
- package/lib/types/feature-flags/models/FeatureFlagAccess.model.d.cts +15 -0
- package/lib/types/feature-flags/models/FeatureFlagAccess.model.d.mts +15 -0
- package/lib/types/feature-flags/readers/FeatureFlagReader.d.cts +10 -0
- package/lib/types/feature-flags/readers/FeatureFlagReader.d.mts +10 -0
- package/lib/types/feature-flags/readers/index.d.cts +1 -0
- package/lib/types/feature-flags/readers/index.d.mts +1 -0
- package/lib/types/feature-flags/services/FeatureFlag.service.d.cts +43 -0
- package/lib/types/feature-flags/services/FeatureFlag.service.d.mts +43 -0
- package/lib/types/feature-flags/types.d.cts +39 -0
- package/lib/types/feature-flags/types.d.mts +39 -0
- package/lib/types/feature-flags/utils.d.cts +13 -0
- package/lib/types/feature-flags/utils.d.mts +13 -0
- package/lib/types/graph/engine/execution/SwitchGraphNodeExecutor.d.cts +2 -2
- package/lib/types/graph/engine/execution/SwitchGraphNodeExecutor.d.mts +2 -2
- package/lib/types/graph/shared/types.d.cts +3 -3
- package/lib/types/graph/shared/types.d.mts +3 -3
- package/lib/types/index.d.cts +3 -2
- package/lib/types/index.d.mts +3 -2
- package/lib/types/kibana/builders/KibanaIndexBuilder.d.cts +67 -0
- package/lib/types/kibana/builders/KibanaIndexBuilder.d.mts +67 -0
- package/lib/types/kibana/builders/KibanaIndexBuilderCollection.d.cts +17 -0
- package/lib/types/kibana/builders/KibanaIndexBuilderCollection.d.mts +17 -0
- package/lib/types/kibana/builders/index.d.cts +2 -0
- package/lib/types/kibana/builders/index.d.mts +2 -0
- package/lib/types/kibana/index.d.cts +1 -0
- package/lib/types/kibana/index.d.mts +1 -0
- package/lib/types/kibana/types.d.cts +11 -0
- package/lib/types/kibana/types.d.mts +11 -0
- package/lib/types/loader/ObjectLoader.d.cts +27 -0
- package/lib/types/loader/ObjectLoader.d.mts +27 -0
- package/lib/types/loader/families.d.cts +34 -0
- package/lib/types/loader/families.d.mts +34 -0
- package/lib/types/loader/index.d.cts +10 -0
- package/lib/types/loader/index.d.mts +10 -0
- package/lib/types/loader/types.d.cts +24 -0
- package/lib/types/loader/types.d.mts +24 -0
- package/lib/types/nest/decorators.d.cts +8 -0
- package/lib/types/nest/decorators.d.mts +8 -0
- package/lib/types/nest/index.d.cts +1 -1
- package/lib/types/nest/index.d.mts +1 -1
- package/lib/types/nest/keycloakAuthHandler.d.cts +19 -42
- package/lib/types/nest/keycloakAuthHandler.d.mts +19 -42
- package/lib/types/nest/keycloakModule.d.cts +3 -5
- package/lib/types/nest/keycloakModule.d.mts +3 -5
- package/lib/types/nest/types.d.cts +2 -0
- package/lib/types/nest/types.d.mts +2 -0
- package/lib/types/nest/utils.d.cts +3 -4
- package/lib/types/nest/utils.d.mts +3 -4
- package/lib/types/plugins/contract.d.cts +180 -0
- package/lib/types/plugins/contract.d.mts +180 -0
- package/lib/types/plugins/index.d.cts +17 -0
- package/lib/types/plugins/index.d.mts +17 -0
- package/lib/types/plugins/kibana/host.d.cts +18 -0
- package/lib/types/plugins/kibana/host.d.mts +18 -0
- package/lib/types/plugins/kibana/index.d.cts +13 -0
- package/lib/types/plugins/kibana/index.d.mts +13 -0
- package/lib/types/plugins/kibana/installer.d.cts +45 -0
- package/lib/types/plugins/kibana/installer.d.mts +45 -0
- package/lib/types/plugins/kibana/manifest.d.cts +31 -0
- package/lib/types/plugins/kibana/manifest.d.mts +31 -0
- package/lib/types/plugins/kibana/templates.d.cts +12 -0
- package/lib/types/plugins/kibana/templates.d.mts +12 -0
- package/lib/types/plugins/kibana/types.d.cts +9 -0
- package/lib/types/plugins/kibana/types.d.mts +9 -0
- package/lib/types/plugins/superset/host.d.cts +20 -0
- package/lib/types/plugins/superset/host.d.mts +20 -0
- package/lib/types/plugins/superset/index.d.cts +15 -0
- package/lib/types/plugins/superset/index.d.mts +15 -0
- package/lib/types/plugins/superset/installer.d.cts +70 -0
- package/lib/types/plugins/superset/installer.d.mts +70 -0
- package/lib/types/plugins/superset/manifest.d.cts +28 -0
- package/lib/types/plugins/superset/manifest.d.mts +28 -0
- package/lib/types/plugins/superset/templates.d.cts +12 -0
- package/lib/types/plugins/superset/templates.d.mts +12 -0
- package/lib/types/plugins/superset/types.d.cts +10 -0
- package/lib/types/plugins/superset/types.d.mts +10 -0
- package/package.json +62 -3
- package/plugins/kibana/.gitignore +16 -0
- package/plugins/kibana/Dockerfile +19 -0
- package/plugins/kibana/docker-compose.yml +50 -0
- package/plugins/kibana/host/index.html +101 -0
- package/plugins/kibana/setup-dashboards.sh +84 -0
- package/plugins/superset/.gitignore +17 -0
- package/plugins/superset/Dockerfile +79 -0
- package/plugins/superset/docker-compose.yml +62 -0
- package/plugins/superset/host/index.html +168 -0
- package/plugins/superset/setup-dashboards.sh +106 -0
- package/plugins/superset/superset_config.py +49 -0
- package/lib/cjs/nest/authService.cjs +0 -91
- package/lib/esm/nest/authService.js +0 -86
- package/lib/types/nest/authService.d.cts +0 -63
- package/lib/types/nest/authService.d.mts +0 -63
package/lib/cjs/nest/utils.cjs
CHANGED
|
@@ -1,36 +1,78 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DECAF_ADAPTER_OPTIONS = void 0;
|
|
4
|
-
exports.getTokenPayload = getTokenPayload;
|
|
5
4
|
exports.extractKeycloakRoles = extractKeycloakRoles;
|
|
6
|
-
exports.
|
|
7
|
-
exports.getUser = getUser;
|
|
5
|
+
exports.extractKeycloakNamespaces = extractKeycloakNamespaces;
|
|
8
6
|
exports.getRealmFromIssuer = getRealmFromIssuer;
|
|
7
|
+
exports.getClientRoles = getClientRoles;
|
|
9
8
|
const core_1 = require("@decaf-ts/core");
|
|
9
|
+
const jwt_1 = require("@decaf-ts/crypto/integration/services/jwt");
|
|
10
10
|
exports.DECAF_ADAPTER_OPTIONS = Symbol("DecafAdapterForOptions");
|
|
11
|
-
function getTokenPayload(jwt) {
|
|
12
|
-
try {
|
|
13
|
-
return JSON.parse(Buffer.from(jwt.split(".")[1] ?? "", "base64url").toString("utf8"));
|
|
14
|
-
}
|
|
15
|
-
catch {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
11
|
function extractKeycloakRoles(payload) {
|
|
20
12
|
const roles = new Set();
|
|
21
13
|
if (Array.isArray(payload?.realm_access?.roles)) {
|
|
22
|
-
for (const role of payload.realm_access.roles)
|
|
23
|
-
|
|
14
|
+
for (const role of payload.realm_access.roles) {
|
|
15
|
+
if (!role?.startsWith("namespace:"))
|
|
16
|
+
roles.add(role);
|
|
17
|
+
}
|
|
24
18
|
}
|
|
25
19
|
if (payload?.resource_access && typeof payload.resource_access === "object") {
|
|
26
20
|
for (const client of Object.keys(payload.resource_access)) {
|
|
27
21
|
for (const role of payload.resource_access[client]?.roles ?? []) {
|
|
28
|
-
|
|
22
|
+
if (!role?.startsWith("namespace:"))
|
|
23
|
+
roles.add(role);
|
|
29
24
|
}
|
|
30
25
|
}
|
|
31
26
|
}
|
|
32
27
|
return [...roles];
|
|
33
28
|
}
|
|
29
|
+
function extractKeycloakNamespaces(payload) {
|
|
30
|
+
const namespaces = new Set();
|
|
31
|
+
const rawNamespaces = payload?.namespaces ?? payload?.namespace;
|
|
32
|
+
if (Array.isArray(rawNamespaces)) {
|
|
33
|
+
for (const namespace of rawNamespaces) {
|
|
34
|
+
if (namespace)
|
|
35
|
+
namespaces.add(namespace);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else if (typeof rawNamespaces === "string" && rawNamespaces) {
|
|
39
|
+
namespaces.add(rawNamespaces);
|
|
40
|
+
}
|
|
41
|
+
const rawRoles = [
|
|
42
|
+
...(Array.isArray(payload?.realm_access?.roles)
|
|
43
|
+
? payload.realm_access.roles
|
|
44
|
+
: []),
|
|
45
|
+
...(payload?.resource_access && typeof payload.resource_access === "object"
|
|
46
|
+
? Object.values(payload.resource_access).flatMap((client) => client?.roles ?? [])
|
|
47
|
+
: []),
|
|
48
|
+
];
|
|
49
|
+
for (const role of rawRoles) {
|
|
50
|
+
if (role?.startsWith("namespace:")) {
|
|
51
|
+
namespaces.add(role.slice("namespace:".length));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return [...namespaces];
|
|
55
|
+
}
|
|
56
|
+
function getRealmFromIssuer(jwt) {
|
|
57
|
+
const payload = (0, jwt_1.getTokenPayload)(jwt);
|
|
58
|
+
const iss = payload?.iss;
|
|
59
|
+
if (!iss) {
|
|
60
|
+
throw new core_1.AuthorizationError("Issuer (iss) is missing");
|
|
61
|
+
}
|
|
62
|
+
let url;
|
|
63
|
+
try {
|
|
64
|
+
url = new URL(iss);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
throw new core_1.AuthorizationError(`Invalid issuer URL: ${iss}`);
|
|
68
|
+
}
|
|
69
|
+
const parts = url.pathname.split("/").filter(Boolean);
|
|
70
|
+
const realmsIndex = parts.indexOf("realms");
|
|
71
|
+
if (realmsIndex === -1 || !parts[realmsIndex + 1]) {
|
|
72
|
+
throw new core_1.AuthorizationError(`Cannot extract realm from issuer: ${iss}`);
|
|
73
|
+
}
|
|
74
|
+
return parts[realmsIndex + 1];
|
|
75
|
+
}
|
|
34
76
|
/**
|
|
35
77
|
* Extracts roles from the `resource_access` claim only, optionally excluding
|
|
36
78
|
* specified client IDs (e.g. `"account"`). Unlike {@link extractKeycloakRoles}
|
|
@@ -54,39 +96,5 @@ function getClientRoles(payload, excluded = ["account"]) {
|
|
|
54
96
|
}
|
|
55
97
|
return [...roles];
|
|
56
98
|
}
|
|
57
|
-
|
|
58
|
-
const payload = getTokenPayload(jwt);
|
|
59
|
-
if (!payload)
|
|
60
|
-
return undefined;
|
|
61
|
-
return {
|
|
62
|
-
preferred_username: payload.preferred_username,
|
|
63
|
-
email: payload.email,
|
|
64
|
-
email_verified: payload.email_verified,
|
|
65
|
-
name: payload.name,
|
|
66
|
-
given_name: payload.given_name,
|
|
67
|
-
family_name: payload.family_name,
|
|
68
|
-
realm: getRealmFromIssuer(jwt),
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
function getRealmFromIssuer(jwt) {
|
|
72
|
-
const payload = getTokenPayload(jwt);
|
|
73
|
-
const iss = payload?.iss;
|
|
74
|
-
if (!iss) {
|
|
75
|
-
throw new core_1.AuthorizationError("Issuer (iss) is missing");
|
|
76
|
-
}
|
|
77
|
-
let url;
|
|
78
|
-
try {
|
|
79
|
-
url = new URL(iss);
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
throw new core_1.AuthorizationError(`Invalid issuer URL: ${iss}`);
|
|
83
|
-
}
|
|
84
|
-
const parts = url.pathname.split("/").filter(Boolean);
|
|
85
|
-
const realmsIndex = parts.indexOf("realms");
|
|
86
|
-
if (realmsIndex === -1 || !parts[realmsIndex + 1]) {
|
|
87
|
-
throw new core_1.AuthorizationError(`Cannot extract realm from issuer: ${iss}`);
|
|
88
|
-
}
|
|
89
|
-
return parts[realmsIndex + 1];
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmVzdC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUV0RSxNQUFNLFVBQVUsZUFBZSxDQUFDLEdBQVc7SUFDekMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUErQixDQUFDO0lBQ3RILENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQTBDO0lBQzdFLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDaEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoRCxLQUFLLE1BQU0sSUFBSSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSztZQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUNELElBQUksT0FBTyxFQUFFLGVBQWUsSUFBSSxPQUFPLE9BQU8sQ0FBQyxlQUFlLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUUsS0FBSyxNQUFNLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQzFELEtBQUssTUFBTSxJQUFJLElB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RCxPQUFPLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvbmVzdC91dGlsc1xuICogQHN1bW1hcnkgTmVzdCBpbnRlZ3JhdGlvbiB1dGlsaXRpZXMuXG4gKiBAZGVzY3JpcHRpb24gSGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBOZXN0IGF1dGggYW5kIHJlcXVlc3QtY29udGV4dCBhZGFwdGVycy5cbiAqL1xuaW1wb3J0IHR5cGUgeyBLZXljbG9ha0FjY2Vzc1Rva2VuUGF5bG9hZCwgS2V5Y2xvYWtVc2VyIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IEF1dGhvcml6YXRpb25FcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuXG5leHBvcnQgY29uc3QgREVDQUZfQURBUFRFUl9PUFRJT05TID0gU3ltYm9sKFwiRGVjYWZBZGFwdGVyRm9yT3B0aW9uc1wiKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRva2VuUGF5bG9hZChqd3Q6IHN0cmluZyk6IEtleWNsb2FrQWNjZXNzVG9rZW5QYXlsb2FkIHwgbnVsbCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoQnVmZmVyLmZyb20oand0LnNwbGl0KFwiLlwiKVsxXSA/PyBcIlwiLCBcImJhc2U2NHVybFwiKS50b1N0cmluZyhcInV0ZjhcIikpIGFzIEtleWNsb2FrQWNjZXNzVG9rZW5QYXlsb2FkO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEtleWNsb2FrUm9sZXMocGF5bG9hZDogS2V5Y2xvYWtBY2Nlc3NUb2tlblBheWxvYWQgfCBudWxsKTogc3RyaW5nW10ge1xuICBjb25zdCByb2xlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkPy5yZWFsbV9hY2Nlc3M/LnJvbGVzKSkge1xuICAgIGZvciAoY29uc3Qgcm9sZSBvZiBwYXlsb2FkLnJlYWxtX2FjY2Vzcy5yb2xlcykgcm9sZXMuYWRkKHJvbGUpO1xuICB9XG4gIGlmIChwYXlsb2FkPy5yZXNvdXJjZV9hY2Nlc3MgJiYgdHlwZW9mIHBheWxvYWQucmVzb3VyY2VfYWNjZXNzID09PSBcIm9iamVjdFwiKSB7XG4gICAgZm9yIChjb25zdCBjbGllbnQgb2YgT2JqZWN0LmtleXMocGF5bG9hZC5yZXNvdXJjZV9hY2Nlc3MpKSB7XG4gICAgICBmb3IgKGNvbnN0IHJvbGUgb2YgcGF5bG9hZC5yZXNvdXJjZV9hY2Nlc3NbY2xpZW50XT8ucm9sZXMgPz8gW10pIHtcbiAgICAgICAgcm9sZXMuYWRkKHJvbGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gWy4uLnJvbGVzXTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyByb2xlcyBmcm9tIHRoZSBgcmVzb3VyY2VfYWNjZXNzYCBjbGFpbSBvbmx5LCBvcHRpb25hbGx5IGV4Y2x1ZGluZ1xuICogc3BlY2lmaWVkIGNsaWVudCBJRHMgKGUuZy4gYFwiYWNjb3VudFwiYCkuICBVbmxpa2Uge0BsaW5rIGV4dHJhY3RLZXljbG9ha1JvbGVzfVxuICogdGhpcyBkb2VzIE5PVCBpbmNsdWRlIGByZWFsbV9hY2Nlc3Mucm9sZXNgLlxuICpcbiAqIEBwYXJhbSBwYXlsb2FkICAgVGhlIGRlY29kZWQgSldUIHBheWxvYWQuXG4gKiBAcGFyYW0gZXhjbHVkZWQgIENsaWVudCBJRHMgdG8gc2tpcC4gIEBkZWZhdWx0IFtcImFjY291bnRcIl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENsaWVudFJvbGVzKFxuICBwYXlsb2FkOiBLZXljbG9ha0FjY2Vzc1Rva2VuUGF5bG9hZCB8IG51bGwsXG4gIGV4Y2x1ZGVkOiBzdHJpbmdbXSA9IFtcImFjY291bnRcIl1cbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgcmVzb3VyY2VBY2Nlc3MgPSBwYXlsb2FkPy5yZXNvdXJjZV9hY2Nlc3M7XG4gIGlmICghcmVzb3VyY2VBY2Nlc3MgfHwgdHlwZW9mIHJlc291cmNlQWNjZXNzICE9PSBcIm9iamVjdFwiKSByZXR1cm4gW107XG4gIGNvbnN0IHJvbGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgW2NsaWVudElkLCBkYXRhXSBvZiBPYmplY3QuZW50cmllcyhyZXNvdXJjZUFjY2VzcykpIHtcbiAgICBpZiAoZXhjbHVkZWQuaW5jbHVkZXMoY2xpZW50SWQpKSBjb250aW51ZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhPy5yb2xlcykpIHtcbiAgICAgIGZvciAoY29uc3Qgcm9sZSBvZiBkYXRhLnJvbGVzKSByb2xlcy5hZGQocm9sZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbLi4ucm9sZXNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlcihqd3Q6IHN0cmluZyk6IEtleWNsb2FrVXNlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHBheWxvYWQgPSBnZXRUb2tlblBheWxvYWQoand0KTtcbiAgaWYgKCFwYXlsb2FkKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4ge1xuICAgIHByZWZlcnJlZF91c2VybmFtZTogcGF5bG9hZC5wcmVmZXJyZWRfdXNlcm5hbWUsXG4gICAgZW1haWw6IHBheWxvYWQuZW1haWwsXG4gICAgZW1haWxfdmVyaWZpZWQ6IHBheWxvYWQuZW1haWxfdmVyaWZpZWQsXG4gICAgbmFtZTogcGF5bG9hZC5uYW1lLFxuICAgIGdpdmVuX25hbWU6IHBheWxvYWQuZ2l2ZW5fbmFtZSxcbiAgICBmYW1pbHlfbmFtZTogcGF5bG9hZC5mYW1pbHlfbmFtZSxcbiAgICByZWFsbTogZ2V0UmVhbG1Gcm9tSXNzdWVyKGp3dCksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWFsbUZyb21Jc3N1ZXIoand0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwYXlsb2FkID0gZ2V0VG9rZW5QYXlsb2FkKGp3dCk7XG4gIGNvbnN0IGlzcyA9IHBheWxvYWQ/LmlzcztcbiAgaWYgKCFpc3MpIHtcbiAgICB0aHJvdyBuZXcgQXV0aG9yaXphdGlvbkVycm9yKFwiSXNzdWVyIChpc3MpIGlzIG1pc3NpbmdcIik7XG4gIH1cbiAgbGV0IHVybDogVVJMO1xuICB0cnkge1xuICAgIHVybCA9IG5ldyBVUkwoaXNzKTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEF1dGhvcml6YXRpb25FcnJvcihgSW52YWxpZCBpc3N1ZXIgVVJMOiAke2lzc31gKTtcbiAgfVxuICBjb25zdCBwYXJ0cyA9IHVybC5wYXRobmFtZS5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCByZWFsbXNJbmRleCA9IHBhcnRzLmluZGV4T2YoXCJyZWFsbXNcIik7XG4gIGlmIChyZWFsbXNJbmRleCA9PT0gLTEgfHwgIXBhcnRzW3JlYWxtc0luZGV4ICsgMV0pIHtcbiAgICB0aHJvdyBuZXcgQXV0aG9yaXphdGlvbkVycm9yKGBDYW5ub3QgZXh0cmFjdCByZWFsbSBmcm9tIGlzc3VlcjogJHtpc3N9YCk7XG4gIH1cbiAgcmV0dXJuIHBhcnRzW3JlYWxtc0luZGV4ICsgMV07XG59XG4iXX0=
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1dGlscy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSwwQ0FPQztBQUNELG9EQWNDO0FBU0Qsd0NBY0M7QUFDRCwwQkFhQztBQUNELGdEQW1CQztBQWpGRCx5Q0FBb0Q7QUFDdkMsUUFBQSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUN0RSxTQUFnQixlQUFlLENBQUMsR0FBRztJQUMvQixJQUFJLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBQ0QsTUFBTSxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUM7QUFDRCxTQUFnQixvQkFBb0IsQ0FBQyxPQUFPO0lBQ3hDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDeEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5QyxLQUFLLE1BQU0sSUFBSSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSztZQUN6QyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLE9BQU8sRUFBRSxlQUFlLElBQUksT0FBTyxPQUFPLENBQUMsZUFBZSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFFLEtBQUssTUFBTSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUN4RCxLQUFLLE1BQU0sSUFBSSxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUM5RCxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUFDRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLE9BQU8sRUFBRSxRQUFRLEdBQUcsQ0FBQyxTQUFTLENBQUM7SUFDMUQsTUFBTSxjQUFjLEdBQUcsT0FBTyxFQUFFLGVBQWUsQ0FBQztJQUNoRCxJQUFJLENBQUMsY0FBYyxJQUFJLE9BQU8sY0FBYyxLQUFLLFFBQVE7UUFDckQsT0FBTyxFQUFFLENBQUM7SUFDZCxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDNUQsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUMzQixTQUFTO1FBQ2IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUs7Z0JBQ3pCLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUN0QixDQUFDO0FBQ0QsU0FBZ0IsT0FBTyxDQUFDLEdBQUc7SUFDdkIsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLElBQUksQ0FBQyxPQUFPO1FBQ1IsT0FBTyxTQUFTLENBQUM7SUFDckIsT0FBTztRQUNILGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7UUFDOUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztRQUN0QyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7UUFDbEIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQzlCLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztRQUNoQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsR0FBRyxDQUFDO0tBQ2pDLENBQUM7QUFDTixDQUFDO0FBQ0QsU0FBZ0Isa0JBQWtCLENBQUMsR0FBRztJQUNsQyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsTUFBTSxHQUFHLEdBQUcsT0FBTyxFQUFFLEdBQUcsQ0FBQztJQUN6QixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDUCxNQUFNLElBQUkseUJBQWtCLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsSUFBSSxHQUFHLENBQUM7SUFDUixJQUFJLENBQUM7UUFDRCxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUNELE1BQU0sQ0FBQztRQUNILE1BQU0sSUFBSSx5QkFBa0IsQ0FBQyx1QkFBdUIsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsSUFBSSxXQUFXLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEQsTUFBTSxJQUFJLHlCQUFrQixDQUFDLHFDQUFxQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUNELDB3UEFBMHdQIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aG9yaXphdGlvbkVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5leHBvcnQgY29uc3QgREVDQUZfQURBUFRFUl9PUFRJT05TID0gU3ltYm9sKFwiRGVjYWZBZGFwdGVyRm9yT3B0aW9uc1wiKTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRUb2tlblBheWxvYWQoand0KSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoQnVmZmVyLmZyb20oand0LnNwbGl0KFwiLlwiKVsxXSA/PyBcIlwiLCBcImJhc2U2NHVybFwiKS50b1N0cmluZyhcInV0ZjhcIikpO1xuICAgIH1cbiAgICBjYXRjaCB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0S2V5Y2xvYWtSb2xlcyhwYXlsb2FkKSB7XG4gICAgY29uc3Qgcm9sZXMgPSBuZXcgU2V0KCk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZD8ucmVhbG1fYWNjZXNzPy5yb2xlcykpIHtcbiAgICAgICAgZm9yIChjb25zdCByb2xlIG9mIHBheWxvYWQucmVhbG1fYWNjZXNzLnJvbGVzKVxuICAgICAgICAgICAgcm9sZXMuYWRkKHJvbGUpO1xuICAgIH1cbiAgICBpZiAocGF5bG9hZD8ucmVzb3VyY2VfYWNjZXNzICYmIHR5cGVvZiBwYXlsb2FkLnJlc291cmNlX2FjY2VzcyA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiBPYmplY3Qua2V5cyhwYXlsb2FkLnJlc291cmNlX2FjY2VzcykpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm9sZSBvZiBwYXlsb2FkLnJlc291cmNlX2FjY2Vzc1tjbGllbnRdPy5yb2xlcyA/PyBbXSkge1xuICAgICAgICAgICAgICAgIHJvbGVzLmFkZChyb2xlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWy4uLnJvbGVzXTtcbn1cbi8qKlxuICogRXh0cmFjdHMgcm9sZXMgZnJvbSB0aGUgYHJlc291cmNlX2FjY2Vzc2AgY2xhaW0gb25seSwgb3B0aW9uYWxseSBleGNsdWRpbmdcbiAqIHNwZWNpZmllZCBjbGllbnQgSURzIChlLmcuIGBcImFjY291bnRcImApLiAgVW5saWtlIHtAbGluayBleHRyYWN0S2V5Y2xvYWtSb2xlc31cbiAqIHRoaXMgZG9lcyBOT1QgaW5jbHVkZSBgcmVhbG1fYWNjZXNzLnJvbGVzYC5cbiAqXG4gKiBAcGFyYW0gcGF5bG9hZCAgIFRoZSBkZWNvZGVkIEpXVCBwYXlsb2FkLlxuICogQHBhcmFtIGV4Y2x1ZGVkICBDbGllbnQgSURzIHRvIHNraXAuICBAZGVmYXVsdCBbXCJhY2NvdW50XCJdXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGllbnRSb2xlcyhwYXlsb2FkLCBleGNsdWRlZCA9IFtcImFjY291bnRcIl0pIHtcbiAgICBjb25zdCByZXNvdXJjZUFjY2VzcyA9IHBheWxvYWQ/LnJlc291cmNlX2FjY2VzcztcbiAgICBpZiAoIXJlc291cmNlQWNjZXNzIHx8IHR5cGVvZiByZXNvdXJjZUFjY2VzcyAhPT0gXCJvYmplY3RcIilcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIGNvbnN0IHJvbGVzID0gbmV3IFNldCgpO1xuICAgIGZvciAoY29uc3QgW2NsaWVudElkLCBkYXRhXSBvZiBPYmplY3QuZW50cmllcyhyZXNvdXJjZUFjY2VzcykpIHtcbiAgICAgICAgaWYgKGV4Y2x1ZGVkLmluY2x1ZGVzKGNsaWVudElkKSlcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhPy5yb2xlcykpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm9sZSBvZiBkYXRhLnJvbGVzKVxuICAgICAgICAgICAgICAgIHJvbGVzLmFkZChyb2xlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWy4uLnJvbGVzXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRVc2VyKGp3dCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBnZXRUb2tlblBheWxvYWQoand0KTtcbiAgICBpZiAoIXBheWxvYWQpXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJlZmVycmVkX3VzZXJuYW1lOiBwYXlsb2FkLnByZWZlcnJlZF91c2VybmFtZSxcbiAgICAgICAgZW1haWw6IHBheWxvYWQuZW1haWwsXG4gICAgICAgIGVtYWlsX3ZlcmlmaWVkOiBwYXlsb2FkLmVtYWlsX3ZlcmlmaWVkLFxuICAgICAgICBuYW1lOiBwYXlsb2FkLm5hbWUsXG4gICAgICAgIGdpdmVuX25hbWU6IHBheWxvYWQuZ2l2ZW5fbmFtZSxcbiAgICAgICAgZmFtaWx5X25hbWU6IHBheWxvYWQuZmFtaWx5X25hbWUsXG4gICAgICAgIHJlYWxtOiBnZXRSZWFsbUZyb21Jc3N1ZXIoand0KSxcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlYWxtRnJvbUlzc3Vlcihqd3QpIHtcbiAgICBjb25zdCBwYXlsb2FkID0gZ2V0VG9rZW5QYXlsb2FkKGp3dCk7XG4gICAgY29uc3QgaXNzID0gcGF5bG9hZD8uaXNzO1xuICAgIGlmICghaXNzKSB7XG4gICAgICAgIHRocm93IG5ldyBBdXRob3JpemF0aW9uRXJyb3IoXCJJc3N1ZXIgKGlzcykgaXMgbWlzc2luZ1wiKTtcbiAgICB9XG4gICAgbGV0IHVybDtcbiAgICB0cnkge1xuICAgICAgICB1cmwgPSBuZXcgVVJMKGlzcyk7XG4gICAgfVxuICAgIGNhdGNoIHtcbiAgICAgICAgdGhyb3cgbmV3IEF1dGhvcml6YXRpb25FcnJvcihgSW52YWxpZCBpc3N1ZXIgVVJMOiAke2lzc31gKTtcbiAgICB9XG4gICAgY29uc3QgcGFydHMgPSB1cmwucGF0aG5hbWUuc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKTtcbiAgICBjb25zdCByZWFsbXNJbmRleCA9IHBhcnRzLmluZGV4T2YoXCJyZWFsbXNcIik7XG4gICAgaWYgKHJlYWxtc0luZGV4ID09PSAtMSB8fCAhcGFydHNbcmVhbG1zSW5kZXggKyAxXSkge1xuICAgICAgICB0aHJvdyBuZXcgQXV0aG9yaXphdGlvbkVycm9yKGBDYW5ub3QgZXh0cmFjdCByZWFsbSBmcm9tIGlzc3VlcjogJHtpc3N9YCk7XG4gICAgfVxuICAgIHJldHVybiBwYXJ0c1tyZWFsbXNJbmRleCArIDFdO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFhScGJITXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk5emNtTXZibVZ6ZEM5MWRHbHNjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGTlFTeFBRVUZQTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzVFVGQlRTeG5Ra0ZCWjBJc1EwRkJRenRCUVVWd1JDeE5RVUZOTEVOQlFVTXNUVUZCVFN4eFFrRkJjVUlzUjBGQlJ5eE5RVUZOTEVOQlFVTXNkMEpCUVhkQ0xFTkJRVU1zUTBGQlF6dEJRVVYwUlN4TlFVRk5MRlZCUVZVc1pVRkJaU3hEUVVGRExFZEJRVmM3U1VGRGVrTXNTVUZCU1N4RFFVRkRPMUZCUTBnc1QwRkJUeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVFclFpeERRVUZETzBsQlEzUklMRU5CUVVNN1NVRkJReXhOUVVGTkxFTkJRVU03VVVGRFVDeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTmtMRU5CUVVNN1FVRkRTQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEc5Q1FVRnZRaXhEUVVGRExFOUJRVEJETzBsQlF6ZEZMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzUjBGQlJ5eEZRVUZWTEVOQlFVTTdTVUZEYUVNc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNSVUZCUlN4WlFVRlpMRVZCUVVVc1MwRkJTeXhEUVVGRExFVkJRVVVzUTBGQlF6dFJRVU5vUkN4TFFVRkxMRTFCUVUwc1NVRkJTU3hKUVVGSkxFOUJRVThzUTBGQlF5eFpRVUZaTEVOQlFVTXNTMEZCU3p0WlFVRkZMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTVUZEYWtVc1EwRkJRenRKUVVORUxFbEJRVWtzVDBGQlR5eEZRVUZGTEdWQlFXVXNTVUZCU1N4UFFVRlBMRTlCUVU4c1EwRkJReXhsUVVGbExFdEJRVXNzVVVGQlVTeEZRVUZGTEVOQlFVTTdVVUZETlVVc1MwRkJTeXhOUVVGTkxFMUJRVTBzU1VGQlNTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhsUVVGbExFTkJRVU1zUlVGQlJTeERRVUZETzFsQlF6RkVMRXRCUVVzc1RVRkJUU3hKUVVGSkxFbEJRVWtzVDBGQlR5eERRVUZETEdWQlFXVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hMUVVGTExFbEJRVWtzUlVGQlJTeEZRVUZGTEVOQlFVTTdaMEpCUTJoRkxFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkRiRUlzUTBGQlF6dFJRVU5JTEVOQlFVTTdTVUZEU0N4RFFVRkRPMGxCUTBRc1QwRkJUeXhEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTTdRVUZEY0VJc1EwRkJRenRCUVVWRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1kwRkJZeXhEUVVNMVFpeFBRVUV3UXl4RlFVTXhReXhYUVVGeFFpeERRVUZETEZOQlFWTXNRMEZCUXp0SlFVVm9ReXhOUVVGTkxHTkJRV01zUjBGQlJ5eFBRVUZQTEVWQlFVVXNaVUZCWlN4RFFVRkRPMGxCUTJoRUxFbEJRVWtzUTBGQlF5eGpRVUZqTEVsQlFVa3NUMEZCVHl4alFVRmpMRXRCUVVzc1VVRkJVVHRSUVVGRkxFOUJRVThzUlVGQlJTeERRVUZETzBsQlEzSkZMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzUjBGQlJ5eEZRVUZWTEVOQlFVTTdTVUZEYUVNc1MwRkJTeXhOUVVGTkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVsQlFVa3NRMEZCUXl4SlFVRkpMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zWTBGQll5eERRVUZETEVWQlFVVXNRMEZCUXp0UlFVTTVSQ3hKUVVGSkxGRkJRVkVzUTBGQlF5eFJRVUZSTEVOQlFVTXNVVUZCVVN4RFFVRkRPMWxCUVVVc1UwRkJVenRSUVVNeFF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUTBGQlF5eEZRVUZGTEVOQlFVTTdXVUZETDBJc1MwRkJTeXhOUVVGTkxFbEJRVWtzU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3p0blFrRkJSU3hMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTJwRUxFTkJRVU03U1VGRFNDeERRVUZETzBsQlEwUXNUMEZCVHl4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRGNFSXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3hQUVVGUExFTkJRVU1zUjBGQlZ6dEpRVU5xUXl4TlFVRk5MRTlCUVU4c1IwRkJSeXhsUVVGbExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEY2tNc1NVRkJTU3hEUVVGRExFOUJRVTg3VVVGQlJTeFBRVUZQTEZOQlFWTXNRMEZCUXp0SlFVTXZRaXhQUVVGUE8xRkJRMHdzYTBKQlFXdENMRVZCUVVVc1QwRkJUeXhEUVVGRExHdENRVUZyUWp0UlFVTTVReXhMUVVGTExFVkJRVVVzVDBGQlR5eERRVUZETEV0QlFVczdVVUZEY0VJc1kwRkJZeXhGUVVGRkxFOUJRVThzUTBGQlF5eGpRVUZqTzFGQlEzUkRMRWxCUVVrc1JVRkJSU3hQUVVGUExFTkJRVU1zU1VGQlNUdFJRVU5zUWl4VlFVRlZMRVZCUVVVc1QwRkJUeXhEUVVGRExGVkJRVlU3VVVGRE9VSXNWMEZCVnl4RlFVRkZMRTlCUVU4c1EwRkJReXhYUVVGWE8xRkJRMmhETEV0QlFVc3NSVUZCUlN4clFrRkJhMElzUTBGQlF5eEhRVUZITEVOQlFVTTdTMEZETDBJc1EwRkJRenRCUVVOS0xFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNhMEpCUVd0Q0xFTkJRVU1zUjBGQlZ6dEpRVU0xUXl4TlFVRk5MRTlCUVU4c1IwRkJSeXhsUVVGbExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEY2tNc1RVRkJUU3hIUVVGSExFZEJRVWNzVDBGQlR5eEZRVUZGTEVkQlFVY3NRMEZCUXp0SlFVTjZRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEVkN4TlFVRk5MRWxCUVVrc2EwSkJRV3RDTEVOQlFVTXNlVUpCUVhsQ0xFTkJRVU1zUTBGQlF6dEpRVU14UkN4RFFVRkRPMGxCUTBRc1NVRkJTU3hIUVVGUkxFTkJRVU03U1VGRFlpeEpRVUZKTEVOQlFVTTdVVUZEU0N4SFFVRkhMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEY2tJc1EwRkJRenRKUVVGRExFMUJRVTBzUTBGQlF6dFJRVU5RTEUxQlFVMHNTVUZCU1N4clFrRkJhMElzUTBGQlF5eDFRa0ZCZFVJc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF6dEpRVU0zUkN4RFFVRkRPMGxCUTBRc1RVRkJUU3hMUVVGTExFZEJRVWNzUjBGQlJ5eERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTNSRUxFMUJRVTBzVjBGQlZ5eEhRVUZITEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03U1VGRE5VTXNTVUZCU1N4WFFVRlhMRXRCUVVzc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03VVVGRGJFUXNUVUZCVFN4SlFVRkpMR3RDUVVGclFpeERRVUZETEhGRFFVRnhReXhIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETzBsQlF6TkZMRU5CUVVNN1NVRkRSQ3hQUVVGUExFdEJRVXNzUTBGQlF5eFhRVUZYTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRhRU1zUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRRzF2WkhWc1pTQnBiblJsWjNKaGRHbHZibk12Ym1WemRDOTFkR2xzYzF4dUlDb2dRSE4xYlcxaGNua2dUbVZ6ZENCcGJuUmxaM0poZEdsdmJpQjFkR2xzYVhScFpYTXVYRzRnS2lCQVpHVnpZM0pwY0hScGIyNGdTR1ZzY0dWeUlHWjFibU4wYVc5dWN5QjFjMlZrSUdKNUlIUm9aU0JPWlhOMElHRjFkR2dnWVc1a0lISmxjWFZsYzNRdFkyOXVkR1Y0ZENCaFpHRndkR1Z5Y3k1Y2JpQXFMMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5QkxaWGxqYkc5aGEwRmpZMlZ6YzFSdmEyVnVVR0Y1Ykc5aFpDd2dTMlY1WTJ4dllXdFZjMlZ5SUgwZ1puSnZiU0JjSWk0dmRIbHdaWE5jSWp0Y2JtbHRjRzl5ZENCN0lFRjFkR2h2Y21sNllYUnBiMjVGY25KdmNpQjlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZZMjl5WlZ3aU8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ1JFVkRRVVpmUVVSQlVGUkZVbDlQVUZSSlQwNVRJRDBnVTNsdFltOXNLRndpUkdWallXWkJaR0Z3ZEdWeVJtOXlUM0IwYVc5dWMxd2lLVHRjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRGUnZhMlZ1VUdGNWJHOWhaQ2hxZDNRNklITjBjbWx1WnlrNklFdGxlV05zYjJGclFXTmpaWE56Vkc5clpXNVFZWGxzYjJGa0lId2diblZzYkNCN1hHNGdJSFJ5ZVNCN1hHNGdJQ0FnY21WMGRYSnVJRXBUVDA0dWNHRnljMlVvUW5WbVptVnlMbVp5YjIwb2FuZDBMbk53YkdsMEtGd2lMbHdpS1ZzeFhTQS9QeUJjSWx3aUxDQmNJbUpoYzJVMk5IVnliRndpS1M1MGIxTjBjbWx1WnloY0luVjBaamhjSWlrcElHRnpJRXRsZVdOc2IyRnJRV05qWlhOelZHOXJaVzVRWVhsc2IyRmtPMXh1SUNCOUlHTmhkR05vSUh0Y2JpQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdmVnh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1pYaDBjbUZqZEV0bGVXTnNiMkZyVW05c1pYTW9jR0Y1Ykc5aFpEb2dTMlY1WTJ4dllXdEJZMk5sYzNOVWIydGxibEJoZVd4dllXUWdmQ0J1ZFd4c0tUb2djM1J5YVc1blcxMGdlMXh1SUNCamIyNXpkQ0J5YjJ4bGN5QTlJRzVsZHlCVFpYUThjM1J5YVc1blBpZ3BPMXh1SUNCcFppQW9RWEp5WVhrdWFYTkJjbkpoZVNod1lYbHNiMkZrUHk1eVpXRnNiVjloWTJObGMzTS9Mbkp2YkdWektTa2dlMXh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdjbTlzWlNCdlppQndZWGxzYjJGa0xuSmxZV3h0WDJGalkyVnpjeTV5YjJ4bGN5a2djbTlzWlhNdVlXUmtLSEp2YkdVcE8xeHVJQ0I5WEc0Z0lHbG1JQ2h3WVhsc2IyRmtQeTV5WlhOdmRYSmpaVjloWTJObGMzTWdKaVlnZEhsd1pXOW1JSEJoZVd4dllXUXVjbVZ6YjNWeVkyVmZZV05qWlhOeklEMDlQU0JjSW05aWFtVmpkRndpS1NCN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCamJHbGxiblFnYjJZZ1QySnFaV04wTG10bGVYTW9jR0Y1Ykc5aFpDNXlaWE52ZFhKalpWOWhZMk5sYzNNcEtTQjdYRzRnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJSEp2YkdVZ2IyWWdjR0Y1Ykc5aFpDNXlaWE52ZFhKalpWOWhZMk5sYzNOYlkyeHBaVzUwWFQ4dWNtOXNaWE1nUHo4Z1cxMHBJSHRjYmlBZ0lDQWdJQ0FnY205c1pYTXVZV1JrS0hKdmJHVXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z1d5NHVMbkp2YkdWelhUdGNibjFjYmx4dUx5b3FYRzRnS2lCRmVIUnlZV04wY3lCeWIyeGxjeUJtY205dElIUm9aU0JnY21WemIzVnlZMlZmWVdOalpYTnpZQ0JqYkdGcGJTQnZibXg1TENCdmNIUnBiMjVoYkd4NUlHVjRZMngxWkdsdVoxeHVJQ29nYzNCbFkybG1hV1ZrSUdOc2FXVnVkQ0JKUkhNZ0tHVXVaeTRnWUZ3aVlXTmpiM1Z1ZEZ3aVlDa3VJQ0JWYm14cGEyVWdlMEJzYVc1cklHVjRkSEpoWTNSTFpYbGpiRzloYTFKdmJHVnpmVnh1SUNvZ2RHaHBjeUJrYjJWeklFNVBWQ0JwYm1Oc2RXUmxJR0J5WldGc2JWOWhZMk5sYzNNdWNtOXNaWE5nTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0J3WVhsc2IyRmtJQ0FnVkdobElHUmxZMjlrWldRZ1NsZFVJSEJoZVd4dllXUXVYRzRnS2lCQWNHRnlZVzBnWlhoamJIVmtaV1FnSUVOc2FXVnVkQ0JKUkhNZ2RHOGdjMnRwY0M0Z0lFQmtaV1poZFd4MElGdGNJbUZqWTI5MWJuUmNJbDFjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRU5zYVdWdWRGSnZiR1Z6S0Z4dUlDQndZWGxzYjJGa09pQkxaWGxqYkc5aGEwRmpZMlZ6YzFSdmEyVnVVR0Y1Ykc5aFpDQjhJRzUxYkd3c1hHNGdJR1Y0WTJ4MVpHVmtPaUJ6ZEhKcGJtZGJYU0E5SUZ0Y0ltRmpZMjkxYm5SY0lsMWNiaWs2SUhOMGNtbHVaMXRkSUh0Y2JpQWdZMjl1YzNRZ2NtVnpiM1Z5WTJWQlkyTmxjM01nUFNCd1lYbHNiMkZrUHk1eVpYTnZkWEpqWlY5aFkyTmxjM003WEc0Z0lHbG1JQ2doY21WemIzVnlZMlZCWTJObGMzTWdmSHdnZEhsd1pXOW1JSEpsYzI5MWNtTmxRV05qWlhOeklDRTlQU0JjSW05aWFtVmpkRndpS1NCeVpYUjFjbTRnVzEwN1hHNGdJR052Ym5OMElISnZiR1Z6SUQwZ2JtVjNJRk5sZER4emRISnBibWMrS0NrN1hHNGdJR1p2Y2lBb1kyOXVjM1FnVzJOc2FXVnVkRWxrTENCa1lYUmhYU0J2WmlCUFltcGxZM1F1Wlc1MGNtbGxjeWh5WlhOdmRYSmpaVUZqWTJWemN5a3BJSHRjYmlBZ0lDQnBaaUFvWlhoamJIVmtaV1F1YVc1amJIVmtaWE1vWTJ4cFpXNTBTV1FwS1NCamIyNTBhVzUxWlR0Y2JpQWdJQ0JwWmlBb1FYSnlZWGt1YVhOQmNuSmhlU2hrWVhSaFB5NXliMnhsY3lrcElIdGNiaUFnSUNBZ0lHWnZjaUFvWTI5dWMzUWdjbTlzWlNCdlppQmtZWFJoTG5KdmJHVnpLU0J5YjJ4bGN5NWhaR1FvY205c1pTazdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCYkxpNHVjbTlzWlhOZE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWjJWMFZYTmxjaWhxZDNRNklITjBjbWx1WnlrNklFdGxlV05zYjJGclZYTmxjaUI4SUhWdVpHVm1hVzVsWkNCN1hHNGdJR052Ym5OMElIQmhlV3h2WVdRZ1BTQm5aWFJVYjJ0bGJsQmhlV3h2WVdRb2FuZDBLVHRjYmlBZ2FXWWdLQ0Z3WVhsc2IyRmtLU0J5WlhSMWNtNGdkVzVrWldacGJtVmtPMXh1SUNCeVpYUjFjbTRnZTF4dUlDQWdJSEJ5WldabGNuSmxaRjkxYzJWeWJtRnRaVG9nY0dGNWJHOWhaQzV3Y21WbVpYSnlaV1JmZFhObGNtNWhiV1VzWEc0Z0lDQWdaVzFoYVd3NklIQmhlV3h2WVdRdVpXMWhhV3dzWEc0Z0lDQWdaVzFoYVd4ZmRtVnlhV1pwWldRNklIQmhlV3h2WVdRdVpXMWhhV3hmZG1WeWFXWnBaV1FzWEc0Z0lDQWdibUZ0WlRvZ2NHRjViRzloWkM1dVlXMWxMRnh1SUNBZ0lHZHBkbVZ1WDI1aGJXVTZJSEJoZVd4dllXUXVaMmwyWlc1ZmJtRnRaU3hjYmlBZ0lDQm1ZVzFwYkhsZmJtRnRaVG9nY0dGNWJHOWhaQzVtWVcxcGJIbGZibUZ0WlN4Y2JpQWdJQ0J5WldGc2JUb2daMlYwVW1WaGJHMUdjbTl0U1hOemRXVnlLR3AzZENrc1hHNGdJSDA3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aWFJTWldGc2JVWnliMjFKYzNOMVpYSW9hbmQwT2lCemRISnBibWNwT2lCemRISnBibWNnZTF4dUlDQmpiMjV6ZENCd1lYbHNiMkZrSUQwZ1oyVjBWRzlyWlc1UVlYbHNiMkZrS0dwM2RDazdYRzRnSUdOdmJuTjBJR2x6Y3lBOUlIQmhlV3h2WVdRL0xtbHpjenRjYmlBZ2FXWWdLQ0ZwYzNNcElIdGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1FYVjBhRzl5YVhwaGRHbHZia1Z5Y205eUtGd2lTWE56ZFdWeUlDaHBjM01wSUdseklHMXBjM05wYm1kY0lpazdYRzRnSUgxY2JpQWdiR1YwSUhWeWJEb2dWVkpNTzF4dUlDQjBjbmtnZTF4dUlDQWdJSFZ5YkNBOUlHNWxkeUJWVWt3b2FYTnpLVHRjYmlBZ2ZTQmpZWFJqYUNCN1hHNGdJQ0FnZEdoeWIzY2dibVYzSUVGMWRHaHZjbWw2WVhScGIyNUZjbkp2Y2loZ1NXNTJZV3hwWkNCcGMzTjFaWElnVlZKTU9pQWtlMmx6YzMxZ0tUdGNiaUFnZlZ4dUlDQmpiMjV6ZENCd1lYSjBjeUE5SUhWeWJDNXdZWFJvYm1GdFpTNXpjR3hwZENoY0lpOWNJaWt1Wm1sc2RHVnlLRUp2YjJ4bFlXNHBPMXh1SUNCamIyNXpkQ0J5WldGc2JYTkpibVJsZUNBOUlIQmhjblJ6TG1sdVpHVjRUMllvWENKeVpXRnNiWE5jSWlrN1hHNGdJR2xtSUNoeVpXRnNiWE5KYm1SbGVDQTlQVDBnTFRFZ2ZId2dJWEJoY25SelczSmxZV3h0YzBsdVpHVjRJQ3NnTVYwcElIdGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1FYVjBhRzl5YVhwaGRHbHZia1Z5Y205eUtHQkRZVzV1YjNRZ1pYaDBjbUZqZENCeVpXRnNiU0JtY205dElHbHpjM1ZsY2pvZ0pIdHBjM045WUNrN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUhCaGNuUnpXM0psWVd4dGMwbHVaR1Y0SUNzZ01WMDdYRzU5WEc0aVhYMD0iXX0=
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmVzdC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFNUUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFFdEUsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQTBDO0lBQzdFLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDaEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoRCxLQUFLLE1BQU0sSUFBSSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDO2dCQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLE9BQU8sRUFBRSxlQUFlLElBQUksT0FBTyxPQUFPLENBQUMsZUFBZSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVFLEtBQUssTUFBTSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUMxRCxLQUFLLE1BQU0sSUFBSSxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNoRSxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUM7b0JBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RCxD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QyxDQUFDO0FBQ2hDLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsT0FBMEMsRUFDMUMsV0FBcUIsQ0FBQyxTQUFTLENBQUM7SUFFaEMsTUFBTSxjQUFjLEdBQUcsT0FBTyxFQUFFLGVBQWUsQ0FBQztJQUNoRCxJQUFJLENBQUMsY0FBYyxJQUFJLE9BQU8sY0FBYyxLQUFLLFFBQVE7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNyRSxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ2hDLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDOUQsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUFFLFNBQVM7UUFDMUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUs7Z0JBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL25lc3QvdXRpbHNcbiAqIEBzdW1tYXJ5IE5lc3QgaW50ZWdyYXRpb24gdXRpbGl0aWVzLlxuICogQGRlc2NyaXB0aW9uIEhlbHBlciBmdW5jdGlvbnMgdXNlZCBieSB0aGUgTmVzdCBhdXRoIGFuZCByZXF1ZXN0LWNvbnRleHQgYWRhcHRlcnMuXG4gKi9cbmltcG9ydCB0eXBlIHsgS2V5Y2xvYWtBY2Nlc3NUb2tlblBheWxvYWQgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgQXV0aG9yaXphdGlvbkVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBnZXRUb2tlblBheWxvYWQgfSBmcm9tIFwiQGRlY2FmLXRzL2NyeXB0by9pbnRlZ3JhdGlvbi9zZXJ2aWNlcy9qd3RcIjtcblxuZXhwb3J0IGNvbnN0IERFQ0FGX0FEQVBURVJfT1BUSU9OUyA9IFN5bWJvbChcIkRlY2FmQWRhcHRlckZvck9wdGlvbnNcIik7XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0S2V5Y2xvYWtSb2xlcyhwYXlsb2FkOiBLZXljbG9ha0FjY2Vzc1Rva2VuUGF5bG9hZCB8IG51bGwpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJvbGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQ/LnJlYWxtX2FjY2Vzcz8ucm9sZXMpKSB7XG4gICAgZm9yIChjb25zdCByb2xlIG9mIHBheWxvYWQucmVhbG1fYWNjZXNzLnJvbGVzKSB7XG4gICAgICBpZiAoIXJvbGU/LnN0YXJ0c1dpdGgoXCJuYW1lc3BhY2U6XCIpKSByb2xlcy5hZGQocm9sZSk7XG4gICAgfVxuICB9XG4gIGlmIChwYXlsb2FkPy5yZXNvdXJjZV9hY2Nlc3MgJiYgdHlwZW9mIHBheWxvYWQucmVzb3VyY2VfYWNjZXNzID09PSBcIm9iamVjdFwiKSB7XG4gICAgZm9yIChjb25zdCBjbGllbnQgb2YgT2JqZWN0LmtleXMocGF5bG9hZC5yZXNvdXJjZV9hY2Nlc3MpKSB7XG4gICAgICBmb3IgKGNvbnN0IHJvbGUgb2YgcGF5bG9hZC5yZXNvdXJjZV9hY2Nlc3NbY2xpZW50XT8ucm9sZXMgPz8gW10pIHtcbiAgICAgICAgaWYgKCFyb2xlPy5zdGFydHNXaXRoKFwibmFtZXNwYWNlOlwiKSkgcm9sZXMuYWRkKHJvbGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gWy4uLnJvbGVzXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RLZXljbG9ha05hbWVzcGFjZXMoXG4gIHBheWxvYWQ6IEtleWNsb2FrQWNjZXNzVG9rZW5QYXlsb2FkIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogc3RyaW5nW10ge1xuICBjb25zdCBuYW1lc3BhY2VzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IHJhd05hbWVzcGFjZXMgPSBwYXlsb2FkPy5uYW1lc3BhY2VzID8/IHBheWxvYWQ/Lm5hbWVzcGFjZTtcbiAgaWYgKEFycmF5LmlzQXJyYXkocmF3TmFtZXNwYWNlcykpIHtcbiAgICBmb3IgKGNvbnN0IG5hbWVzcGFjZSBvZiByYXdOYW1lc3BhY2VzKSB7XG4gICAgICBpZiAobmFtZXNwYWNlKSBuYW1lc3BhY2VzLmFkZChuYW1lc3BhY2UpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgcmF3TmFtZXNwYWNlcyA9PT0gXCJzdHJpbmdcIiAmJiByYXdOYW1lc3BhY2VzKSB7XG4gICAgbmFtZXNwYWNlcy5hZGQocmF3TmFtZXNwYWNlcyk7XG4gIH1cblxuICBjb25zdCByYXdSb2xlcyA9IFtcbiAgICAuLi4oQXJyYXkuaXNBcnJheShwYXlsb2FkPy5yZWFsbV9hY2Nlc3M/LnJvbGVzKVxuICAgICAgPyBwYXlsb2FkLnJlYWxtX2FjY2Vzcy5yb2xlc1xuICAgICAgOiBbXSksXG4gICAgLi4uKHBheWxvYWQ/LnJlc291cmNlX2FjY2VzcyAmJiB0eXBlb2YgcGF5bG9hZC5yZXNvdXJjZV9hY2Nlc3MgPT09IFwib2JqZWN0XCJcbiAgICAgID8gT2JqZWN0LnZhbHVlcyhwYXlsb2FkLnJlc291cmNlX2FjY2VzcykuZmxhdE1hcChcbiAgICAgICAgICAoY2xpZW50KSA9PiBjbGllbnQ/LnJvbGVzID8/IFtdXG4gICAgICAgIClcbiAgICAgIDogW10pLFxuICBdO1xuICBmb3IgKGNvbnN0IHJvbGUgb2YgcmF3Um9sZXMpIHtcbiAgICBpZiAocm9sZT8uc3RhcnRzV2l0aChcIm5hbWVzcGFjZTpcIikpIHtcbiAgICAgIG5hbWVzcGFjZXMuYWRkKHJvbGUuc2xpY2UoXCJuYW1lc3BhY2U6XCIubGVuZ3RoKSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFsuLi5uYW1lc3BhY2VzXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlYWxtRnJvbUlzc3Vlcihqd3Q6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHBheWxvYWQgPSBnZXRUb2tlblBheWxvYWQ8eyBpc3M/OiBzdHJpbmcgfT4oand0KTtcbiAgY29uc3QgaXNzID0gcGF5bG9hZD8uaXNzO1xuICBpZiAoIWlzcykge1xuICAgIHRocm93IG5ldyBBdXRob3JpemF0aW9uRXJyb3IoXCJJc3N1ZXIgKGlzcykgaXMgbWlzc2luZ1wiKTtcbiAgfVxuICBsZXQgdXJsOiBVUkw7XG4gIHRyeSB7XG4gICAgdXJsID0gbmV3IFVSTChpc3MpO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgQXV0aG9yaXphdGlvbkVycm9yKGBJbnZhbGlkIGlzc3VlciBVUkw6ICR7aXNzfWApO1xuICB9XG4gIGNvbnN0IHBhcnRzID0gdXJsLnBhdGhuYW1lLnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHJlYWxtc0luZGV4ID0gcGFydHMuaW5kZXhPZihcInJlYWxtc1wiKTtcbiAgaWYgKHJlYWxtc0luZGV4ID09PSAtMSB8fCAhcGFydHNbcmVhbG1zSW5kZXggKyAxXSkge1xuICAgIHRocm93IG5ldyBBdXRob3JpemF0aW9uRXJyb3IoYENhbm5vdCBleHRyYWN0IHJlYWxtIGZyb20gaXNzdWVyOiAke2lzc31gKTtcbiAgfVxuICByZXR1cm4gcGFydHNbcmVhbG1zSW5kZXggKyAxXTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyByb2xlcyBmcm9tIHRoZSBgcmVzb3VyY2VfYWNjZXNzYCBjbGFpbSBvbmx5LCBvcHRpb25hbGx5IGV4Y2x1ZGluZ1xuICogc3BlY2lmaWVkIGNsaWVudCBJRHMgKGUuZy4gYFwiYWNjb3VudFwiYCkuICBVbmxpa2Uge0BsaW5rIGV4dHJhY3RLZXljbG9ha1JvbGVzfVxuICogdGhpcyBkb2VzIE5PVCBpbmNsdWRlIGByZWFsbV9hY2Nlc3Mucm9sZXNgLlxuICpcbiAqIEBwYXJhbSBwYXlsb2FkICAgVGhlIGRlY29kZWQgSldUIHBheWxvYWQuXG4gKiBAcGFyYW0gZXhjbHVkZWQgIENsaWVudCBJRHMgdG8gc2tpcC4gIEBkZWZhdWx0IFtcImFjY291bnRcIl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENsaWVudFJvbGVzKFxuICBwYXlsb2FkOiBLZXljbG9ha0FjY2Vzc1Rva2VuUGF5bG9hZCB8IG51bGwsXG4gIGV4Y2x1ZGVkOiBzdHJpbmdbXSA9IFtcImFjY291bnRcIl1cbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgcmVzb3VyY2VBY2Nlc3MgPSBwYXlsb2FkPy5yZXNvdXJjZV9hY2Nlc3M7XG4gIGlmICghcmVzb3VyY2VBY2Nlc3MgfHwgdHlwZW9mIHJlc291cmNlQWNjZXNzICE9PSBcIm9iamVjdFwiKSByZXR1cm4gW107XG4gIGNvbnN0IHJvbGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgW2NsaWVudElkLCBkYXRhXSBvZiBPYmplY3QuZW50cmllcyhyZXNvdXJjZUFjY2VzcykpIHtcbiAgICBpZiAoZXhjbHVkZWQuaW5jbHVkZXMoY2xpZW50SWQpKSBjb250aW51ZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhPy5yb2xlcykpIHtcbiAgICAgIGZvciAoY29uc3Qgcm9sZSBvZiBkYXRhLnJvbGVzKSByb2xlcy5hZGQocm9sZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbLi4ucm9sZXNdO1xufVxuIl19
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1dGlscy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxvREFpQkM7QUFDRCw4REEwQkM7QUFDRCxnREFtQkM7QUFTRCx3Q0FjQztBQTFGRCx5Q0FBb0Q7QUFDcEQsbUVBQTRFO0FBQy9ELFFBQUEscUJBQXFCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDdEUsU0FBZ0Isb0JBQW9CLENBQUMsT0FBTztJQUN4QyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDOUMsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFlBQVksQ0FBQztnQkFDL0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixDQUFDO0lBQ0wsQ0FBQztJQUNELElBQUksT0FBTyxFQUFFLGVBQWUsSUFBSSxPQUFPLE9BQU8sQ0FBQyxlQUFlLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUUsS0FBSyxNQUFNLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ3hELEtBQUssTUFBTSxJQUFJLElBQUksT0FBTyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQzlELElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFlBQVksQ0FBQztvQkFDL0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLENBQUMsR0FB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YyxDQUFDLE9BQU8sRUFBRSxRQUFRLEdBQUcsQ0FBQyxTQUFTLENBQUM7SUFDMUQsTUFBTSxjQUFjLEdBQUcsT0FBTyxFQUFFLGVBQWUsQ0FBQztJQUNoRCxJQUFJLENBQUMsY0FBYyxJQUFJLE9BQU8sY0FBYyxLQUFLLFFBQVE7UUFDckQsT0FBTyxFQUFFLENBQUM7SUFDZCxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDNUQsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUMzQixTQUFTO1FBQ2IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUs7Z0JBQ3pCLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUN0QixDQUFDO0FBQ0QsOGxTQUE4bFMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRob3JpemF0aW9uRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IGdldFRva2VuUGF5bG9hZCB9IGZyb20gXCJAZGVjYWYtdHMvY3J5cHRvL2ludGVncmF0aW9uL3NlcnZpY2VzL2p3dFwiO1xuZXhwb3J0IGNvbnN0IERFQ0FGX0FEQVBURVJfT1BUSU9OUyA9IFN5bWJvbChcIkRlY2FmQWRhcHRlckZvck9wdGlvbnNcIik7XG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEtleWNsb2FrUm9sZXMocGF5bG9hZCkge1xuICAgIGNvbnN0IHJvbGVzID0gbmV3IFNldCgpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQ/LnJlYWxtX2FjY2Vzcz8ucm9sZXMpKSB7XG4gICAgICAgIGZvciAoY29uc3Qgcm9sZSBvZiBwYXlsb2FkLnJlYWxtX2FjY2Vzcy5yb2xlcykge1xuICAgICAgICAgICAgaWYgKCFyb2xlPy5zdGFydHNXaXRoKFwibmFtZXNwYWNlOlwiKSlcbiAgICAgICAgICAgICAgICByb2xlcy5hZGQocm9sZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBheWxvYWQ/LnJlc291cmNlX2FjY2VzcyAmJiB0eXBlb2YgcGF5bG9hZC5yZXNvdXJjZV9hY2Nlc3MgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgZm9yIChjb25zdCBjbGllbnQgb2YgT2JqZWN0LmtleXMocGF5bG9hZC5yZXNvdXJjZV9hY2Nlc3MpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJvbGUgb2YgcGF5bG9hZC5yZXNvdXJjZV9hY2Nlc3NbY2xpZW50XT8ucm9sZXMgPz8gW10pIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJvbGU/LnN0YXJ0c1dpdGgoXCJuYW1lc3BhY2U6XCIpKVxuICAgICAgICAgICAgICAgICAgICByb2xlcy5hZGQocm9sZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFsuLi5yb2xlc107XG59XG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEtleWNsb2FrTmFtZXNwYWNlcyhwYXlsb2FkKSB7XG4gICAgY29uc3QgbmFtZXNwYWNlcyA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCByYXdOYW1lc3BhY2VzID0gcGF5bG9hZD8ubmFtZXNwYWNlcyA/PyBwYXlsb2FkPy5uYW1lc3BhY2U7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmF3TmFtZXNwYWNlcykpIHtcbiAgICAgICAgZm9yIChjb25zdCBuYW1lc3BhY2Ugb2YgcmF3TmFtZXNwYWNlcykge1xuICAgICAgICAgICAgaWYgKG5hbWVzcGFjZSlcbiAgICAgICAgICAgICAgICBuYW1lc3BhY2VzLmFkZChuYW1lc3BhY2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiByYXdOYW1lc3BhY2VzID09PSBcInN0cmluZ1wiICYmIHJhd05hbWVzcGFjZXMpIHtcbiAgICAgICAgbmFtZXNwYWNlcy5hZGQocmF3TmFtZXNwYWNlcyk7XG4gICAgfVxuICAgIGNvbnN0IHJhd1JvbGVzID0gW1xuICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShwYXlsb2FkPy5yZWFsbV9hY2Nlc3M/LnJvbGVzKVxuICAgICAgICAgICAgPyBwYXlsb2FkLnJlYWxtX2FjY2Vzcy5yb2xlc1xuICAgICAgICAgICAgOiBbXSksXG4gICAgICAgIC4uLihwYXlsb2FkPy5yZXNvdXJjZV9hY2Nlc3MgJiYgdHlwZW9mIHBheWxvYWQucmVzb3VyY2VfYWNjZXNzID09PSBcIm9iamVjdFwiXG4gICAgICAgICAgICA/IE9iamVjdC52YWx1ZXMocGF5bG9hZC5yZXNvdXJjZV9hY2Nlc3MpLmZsYXRNYXAoKGNsaWVudCkgPT4gY2xpZW50Py5yb2xlcyA/PyBbXSlcbiAgICAgICAgICAgIDogW10pLFxuICAgIF07XG4gICAgZm9yIChjb25zdCByb2xlIG9mIHJhd1JvbGVzKSB7XG4gICAgICAgIGlmIChyb2xlPy5zdGFydHNXaXRoKFwibmFtZXNwYWNlOlwiKSkge1xuICAgICAgICAgICAgbmFtZXNwYWNlcy5hZGQocm9sZS5zbGljZShcIm5hbWVzcGFjZTpcIi5sZW5ndGgpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWy4uLm5hbWVzcGFjZXNdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlYWxtRnJvbUlzc3Vlcihqd3QpIHtcbiAgICBjb25zdCBwYXlsb2FkID0gZ2V0VG9rZW5QYXlsb2FkKGp3dCk7XG4gICAgY29uc3QgaXNzID0gcGF5bG9hZD8uaXNzO1xuICAgIGlmICghaXNzKSB7XG4gICAgICAgIHRocm93IG5ldyBBdXRob3JpemF0aW9uRXJyb3IoXCJJc3N1ZXIgKGlzcykgaXMgbWlzc2luZ1wiKTtcbiAgICB9XG4gICAgbGV0IHVybDtcbiAgICB0cnkge1xuICAgICAgICB1cmwgPSBuZXcgVVJMKGlzcyk7XG4gICAgfVxuICAgIGNhdGNoIHtcbiAgICAgICAgdGhyb3cgbmV3IEF1dGhvcml6YXRpb25FcnJvcihgSW52YWxpZCBpc3N1ZXIgVVJMOiAke2lzc31gKTtcbiAgICB9XG4gICAgY29uc3QgcGFydHMgPSB1cmwucGF0aG5hbWUuc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKTtcbiAgICBjb25zdCByZWFsbXNJbmRleCA9IHBhcnRzLmluZGV4T2YoXCJyZWFsbXNcIik7XG4gICAgaWYgKHJlYWxtc0luZGV4ID09PSAtMSB8fCAhcGFydHNbcmVhbG1zSW5kZXggKyAxXSkge1xuICAgICAgICB0aHJvdyBuZXcgQXV0aG9yaXphdGlvbkVycm9yKGBDYW5ub3QgZXh0cmFjdCByZWFsbSBmcm9tIGlzc3VlcjogJHtpc3N9YCk7XG4gICAgfVxuICAgIHJldHVybiBwYXJ0c1tyZWFsbXNJbmRleCArIDFdO1xufVxuLyoqXG4gKiBFeHRyYWN0cyByb2xlcyBmcm9tIHRoZSBgcmVzb3VyY2VfYWNjZXNzYCBjbGFpbSBvbmx5LCBvcHRpb25hbGx5IGV4Y2x1ZGluZ1xuICogc3BlY2lmaWVkIGNsaWVudCBJRHMgKGUuZy4gYFwiYWNjb3VudFwiYCkuICBVbmxpa2Uge0BsaW5rIGV4dHJhY3RLZXljbG9ha1JvbGVzfVxuICogdGhpcyBkb2VzIE5PVCBpbmNsdWRlIGByZWFsbV9hY2Nlc3Mucm9sZXNgLlxuICpcbiAqIEBwYXJhbSBwYXlsb2FkICAgVGhlIGRlY29kZWQgSldUIHBheWxvYWQuXG4gKiBAcGFyYW0gZXhjbHVkZWQgIENsaWVudCBJRHMgdG8gc2tpcC4gIEBkZWZhdWx0IFtcImFjY291bnRcIl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENsaWVudFJvbGVzKHBheWxvYWQsIGV4Y2x1ZGVkID0gW1wiYWNjb3VudFwiXSkge1xuICAgIGNvbnN0IHJlc291cmNlQWNjZXNzID0gcGF5bG9hZD8ucmVzb3VyY2VfYWNjZXNzO1xuICAgIGlmICghcmVzb3VyY2VBY2Nlc3MgfHwgdHlwZW9mIHJlc291cmNlQWNjZXNzICE9PSBcIm9iamVjdFwiKVxuICAgICAgICByZXR1cm4gW107XG4gICAgY29uc3Qgcm9sZXMgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChjb25zdCBbY2xpZW50SWQsIGRhdGFdIG9mIE9iamVjdC5lbnRyaWVzKHJlc291cmNlQWNjZXNzKSkge1xuICAgICAgICBpZiAoZXhjbHVkZWQuaW5jbHVkZXMoY2xpZW50SWQpKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGE/LnJvbGVzKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCByb2xlIG9mIGRhdGEucm9sZXMpXG4gICAgICAgICAgICAgICAgcm9sZXMuYWRkKHJvbGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbLi4ucm9sZXNdO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFhScGJITXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk5emNtTXZibVZ6ZEM5MWRHbHNjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGTlFTeFBRVUZQTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzVFVGQlRTeG5Ra0ZCWjBJc1EwRkJRenRCUVVOd1JDeFBRVUZQTEVWQlFVVXNaVUZCWlN4RlFVRkZMRTFCUVUwc01rTkJRVEpETEVOQlFVTTdRVUZGTlVVc1RVRkJUU3hEUVVGRExFMUJRVTBzY1VKQlFYRkNMRWRCUVVjc1RVRkJUU3hEUVVGRExIZENRVUYzUWl4RFFVRkRMRU5CUVVNN1FVRkZkRVVzVFVGQlRTeFZRVUZWTEc5Q1FVRnZRaXhEUVVGRExFOUJRVEJETzBsQlF6ZEZMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzUjBGQlJ5eEZRVUZWTEVOQlFVTTdTVUZEYUVNc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNSVUZCUlN4WlFVRlpMRVZCUVVVc1MwRkJTeXhEUVVGRExFVkJRVVVzUTBGQlF6dFJRVU5vUkN4TFFVRkxMRTFCUVUwc1NVRkJTU3hKUVVGSkxFOUJRVThzUTBGQlF5eFpRVUZaTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1dVRkRPVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4VlFVRlZMRU5CUVVNc1dVRkJXU3hEUVVGRE8yZENRVUZGTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGRrUXNRMEZCUXp0SlFVTklMRU5CUVVNN1NVRkRSQ3hKUVVGSkxFOUJRVThzUlVGQlJTeGxRVUZsTEVsQlFVa3NUMEZCVHl4UFFVRlBMRU5CUVVNc1pVRkJaU3hMUVVGTExGRkJRVkVzUlVGQlJTeERRVUZETzFGQlF6VkZMRXRCUVVzc1RVRkJUU3hOUVVGTkxFbEJRVWtzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1pVRkJaU3hEUVVGRExFVkJRVVVzUTBGQlF6dFpRVU14UkN4TFFVRkxMRTFCUVUwc1NVRkJTU3hKUVVGSkxFOUJRVThzUTBGQlF5eGxRVUZsTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1MwRkJTeXhKUVVGSkxFVkJRVVVzUlVGQlJTeERRVUZETzJkQ1FVTm9SU3hKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEZWQlFWVXNRMEZCUXl4WlFVRlpMRU5CUVVNN2IwSkJRVVVzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVOMlJDeERRVUZETzFGQlEwZ3NRMEZCUXp0SlFVTklMRU5CUVVNN1NVRkRSQ3hQUVVGUExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTndRaXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhsQ1FVRjVRaXhEUVVOMlF5eFBRVUZ6UkR0SlFVVjBSQ3hOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCVlN4RFFVRkRPMGxCUTNKRExFMUJRVTBzWVVGQllTeEhRVUZITEU5QlFVOHNSVUZCUlN4VlFVRlZMRWxCUVVrc1QwRkJUeXhGUVVGRkxGTkJRVk1zUTBGQlF6dEpRVU5vUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVXNRMEZCUXp0UlFVTnFReXhMUVVGTExFMUJRVTBzVTBGQlV5eEpRVUZKTEdGQlFXRXNSVUZCUlN4RFFVRkRPMWxCUTNSRExFbEJRVWtzVTBGQlV6dG5Ra0ZCUlN4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzFGQlF6TkRMRU5CUVVNN1NVRkRTQ3hEUVVGRE8xTkJRVTBzU1VGQlNTeFBRVUZQTEdGQlFXRXNTMEZCU3l4UlFVRlJMRWxCUVVrc1lVRkJZU3hGUVVGRkxFTkJRVU03VVVGRE9VUXNWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dEpRVU5vUXl4RFFVRkRPMGxCUlVRc1RVRkJUU3hSUVVGUkxFZEJRVWM3VVVGRFppeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFVkJRVVVzV1VGQldTeEZRVUZGTEV0QlFVc3NRMEZCUXp0WlFVTTNReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEZsQlFWa3NRMEZCUXl4TFFVRkxPMWxCUXpWQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdVVUZEVUN4SFFVRkhMRU5CUVVNc1QwRkJUeXhGUVVGRkxHVkJRV1VzU1VGQlNTeFBRVUZQTEU5QlFVOHNRMEZCUXl4bFFVRmxMRXRCUVVzc1VVRkJVVHRaUVVONlJTeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTXNUMEZCVHl4RFFVTTFReXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNUVUZCVFN4RlFVRkZMRXRCUVVzc1NVRkJTU3hGUVVGRkxFTkJRMmhETzFsQlEwZ3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRMUVVOU0xFTkJRVU03U1VGRFJpeExRVUZMTEUxQlFVMHNTVUZCU1N4SlFVRkpMRkZCUVZFc1JVRkJSU3hEUVVGRE8xRkJRelZDTEVsQlFVa3NTVUZCU1N4RlFVRkZMRlZCUVZVc1EwRkJReXhaUVVGWkxFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEyNURMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4WlFVRlpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5zUkN4RFFVRkRPMGxCUTBnc1EwRkJRenRKUVVWRUxFOUJRVThzUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4RFFVRkRPMEZCUTNwQ0xFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNhMEpCUVd0Q0xFTkJRVU1zUjBGQlZ6dEpRVU0xUXl4TlFVRk5MRTlCUVU4c1IwRkJSeXhsUVVGbExFTkJRVzFDTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTNaRUxFMUJRVTBzUjBGQlJ5eEhRVUZITEU5QlFVOHNSVUZCUlN4SFFVRkhMRU5CUVVNN1NVRkRla0lzU1VGQlNTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTFRc1RVRkJUU3hKUVVGSkxHdENRVUZyUWl4RFFVRkRMSGxDUVVGNVFpeERRVUZETEVOQlFVTTdTVUZETVVRc1EwRkJRenRKUVVORUxFbEJRVWtzUjBGQlVTeERRVUZETzBsQlEySXNTVUZCU1N4RFFVRkRPMUZCUTBnc1IwRkJSeXhIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTNKQ0xFTkJRVU03U1VGQlF5eE5RVUZOTEVOQlFVTTdVVUZEVUN4TlFVRk5MRWxCUVVrc2EwSkJRV3RDTEVOQlFVTXNkVUpCUVhWQ0xFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZETjBRc1EwRkJRenRKUVVORUxFMUJRVTBzUzBGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOMFJDeE5RVUZOTEZkQlFWY3NSMEZCUnl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBsQlF6VkRMRWxCUVVrc1YwRkJWeXhMUVVGTExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzFGQlEyeEVMRTFCUVUwc1NVRkJTU3hyUWtGQmEwSXNRMEZCUXl4eFEwRkJjVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVTXpSU3hEUVVGRE8wbEJRMFFzVDBGQlR5eExRVUZMTEVOQlFVTXNWMEZCVnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMmhETEVOQlFVTTdRVUZGUkRzN096czdPenRIUVU5SE8wRkJRMGdzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZETlVJc1QwRkJNRU1zUlVGRE1VTXNWMEZCY1VJc1EwRkJReXhUUVVGVExFTkJRVU03U1VGRmFFTXNUVUZCVFN4alFVRmpMRWRCUVVjc1QwRkJUeXhGUVVGRkxHVkJRV1VzUTBGQlF6dEpRVU5vUkN4SlFVRkpMRU5CUVVNc1kwRkJZeXhKUVVGSkxFOUJRVThzWTBGQll5eExRVUZMTEZGQlFWRTdVVUZCUlN4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVOeVJTeE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJWU3hEUVVGRE8wbEJRMmhETEV0QlFVc3NUVUZCVFN4RFFVRkRMRkZCUVZFc1JVRkJSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMR05CUVdNc1EwRkJReXhGUVVGRkxFTkJRVU03VVVGRE9VUXNTVUZCU1N4UlFVRlJMRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUTBGQlF6dFpRVUZGTEZOQlFWTTdVVUZETVVNc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRE8xbEJReTlDTEV0QlFVc3NUVUZCVFN4SlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXM3WjBKQlFVVXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU5xUkN4RFFVRkRPMGxCUTBnc1EwRkJRenRKUVVORUxFOUJRVThzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTNCQ0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVCdGIyUjFiR1VnYVc1MFpXZHlZWFJwYjI1ekwyNWxjM1F2ZFhScGJITmNiaUFxSUVCemRXMXRZWEo1SUU1bGMzUWdhVzUwWldkeVlYUnBiMjRnZFhScGJHbDBhV1Z6TGx4dUlDb2dRR1JsYzJOeWFYQjBhVzl1SUVobGJIQmxjaUJtZFc1amRHbHZibk1nZFhObFpDQmllU0IwYUdVZ1RtVnpkQ0JoZFhSb0lHRnVaQ0J5WlhGMVpYTjBMV052Ym5SbGVIUWdZV1JoY0hSbGNuTXVYRzRnS2k5Y2JtbHRjRzl5ZENCMGVYQmxJSHNnUzJWNVkyeHZZV3RCWTJObGMzTlViMnRsYmxCaGVXeHZZV1FnZlNCbWNtOXRJRndpTGk5MGVYQmxjMXdpTzF4dWFXMXdiM0owSUhzZ1FYVjBhRzl5YVhwaGRHbHZia1Z5Y205eUlIMGdabkp2YlNCY0lrQmtaV05oWmkxMGN5OWpiM0psWENJN1hHNXBiWEJ2Y25RZ2V5Qm5aWFJVYjJ0bGJsQmhlV3h2WVdRZ2ZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyTnllWEIwYnk5cGJuUmxaM0poZEdsdmJpOXpaWEoyYVdObGN5OXFkM1JjSWp0Y2JseHVaWGh3YjNKMElHTnZibk4wSUVSRlEwRkdYMEZFUVZCVVJWSmZUMUJVU1U5T1V5QTlJRk41YldKdmJDaGNJa1JsWTJGbVFXUmhjSFJsY2tadmNrOXdkR2x2Ym5OY0lpazdYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJsZUhSeVlXTjBTMlY1WTJ4dllXdFNiMnhsY3lod1lYbHNiMkZrT2lCTFpYbGpiRzloYTBGalkyVnpjMVJ2YTJWdVVHRjViRzloWkNCOElHNTFiR3dwT2lCemRISnBibWRiWFNCN1hHNGdJR052Ym5OMElISnZiR1Z6SUQwZ2JtVjNJRk5sZER4emRISnBibWMrS0NrN1hHNGdJR2xtSUNoQmNuSmhlUzVwYzBGeWNtRjVLSEJoZVd4dllXUS9MbkpsWVd4dFgyRmpZMlZ6Y3o4dWNtOXNaWE1wS1NCN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCeWIyeGxJRzltSUhCaGVXeHZZV1F1Y21WaGJHMWZZV05qWlhOekxuSnZiR1Z6S1NCN1hHNGdJQ0FnSUNCcFppQW9JWEp2YkdVL0xuTjBZWEowYzFkcGRHZ29YQ0p1WVcxbGMzQmhZMlU2WENJcEtTQnliMnhsY3k1aFpHUW9jbTlzWlNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzRnSUdsbUlDaHdZWGxzYjJGa1B5NXlaWE52ZFhKalpWOWhZMk5sYzNNZ0ppWWdkSGx3Wlc5bUlIQmhlV3h2WVdRdWNtVnpiM1Z5WTJWZllXTmpaWE56SUQwOVBTQmNJbTlpYW1WamRGd2lLU0I3WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0JqYkdsbGJuUWdiMllnVDJKcVpXTjBMbXRsZVhNb2NHRjViRzloWkM1eVpYTnZkWEpqWlY5aFkyTmxjM01wS1NCN1hHNGdJQ0FnSUNCbWIzSWdLR052Ym5OMElISnZiR1VnYjJZZ2NHRjViRzloWkM1eVpYTnZkWEpqWlY5aFkyTmxjM05iWTJ4cFpXNTBYVDh1Y205c1pYTWdQejhnVzEwcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0NGeWIyeGxQeTV6ZEdGeWRITlhhWFJvS0Z3aWJtRnRaWE53WVdObE9sd2lLU2tnY205c1pYTXVZV1JrS0hKdmJHVXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z1d5NHVMbkp2YkdWelhUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdWNGRISmhZM1JMWlhsamJHOWhhMDVoYldWemNHRmpaWE1vWEc0Z0lIQmhlV3h2WVdRNklFdGxlV05zYjJGclFXTmpaWE56Vkc5clpXNVFZWGxzYjJGa0lId2diblZzYkNCOElIVnVaR1ZtYVc1bFpGeHVLVG9nYzNSeWFXNW5XMTBnZTF4dUlDQmpiMjV6ZENCdVlXMWxjM0JoWTJWeklEMGdibVYzSUZObGREeHpkSEpwYm1jK0tDazdYRzRnSUdOdmJuTjBJSEpoZDA1aGJXVnpjR0ZqWlhNZ1BTQndZWGxzYjJGa1B5NXVZVzFsYzNCaFkyVnpJRDgvSUhCaGVXeHZZV1EvTG01aGJXVnpjR0ZqWlR0Y2JpQWdhV1lnS0VGeWNtRjVMbWx6UVhKeVlYa29jbUYzVG1GdFpYTndZV05sY3lrcElIdGNiaUFnSUNCbWIzSWdLR052Ym5OMElHNWhiV1Z6Y0dGalpTQnZaaUJ5WVhkT1lXMWxjM0JoWTJWektTQjdYRzRnSUNBZ0lDQnBaaUFvYm1GdFpYTndZV05sS1NCdVlXMWxjM0JoWTJWekxtRmtaQ2h1WVcxbGMzQmhZMlVwTzF4dUlDQWdJSDFjYmlBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsYjJZZ2NtRjNUbUZ0WlhOd1lXTmxjeUE5UFQwZ1hDSnpkSEpwYm1kY0lpQW1KaUJ5WVhkT1lXMWxjM0JoWTJWektTQjdYRzRnSUNBZ2JtRnRaWE53WVdObGN5NWhaR1FvY21GM1RtRnRaWE53WVdObGN5azdYRzRnSUgxY2JseHVJQ0JqYjI1emRDQnlZWGRTYjJ4bGN5QTlJRnRjYmlBZ0lDQXVMaTRvUVhKeVlYa3VhWE5CY25KaGVTaHdZWGxzYjJGa1B5NXlaV0ZzYlY5aFkyTmxjM00vTG5KdmJHVnpLVnh1SUNBZ0lDQWdQeUJ3WVhsc2IyRmtMbkpsWVd4dFgyRmpZMlZ6Y3k1eWIyeGxjMXh1SUNBZ0lDQWdPaUJiWFNrc1hHNGdJQ0FnTGk0dUtIQmhlV3h2WVdRL0xuSmxjMjkxY21ObFgyRmpZMlZ6Y3lBbUppQjBlWEJsYjJZZ2NHRjViRzloWkM1eVpYTnZkWEpqWlY5aFkyTmxjM01nUFQwOUlGd2liMkpxWldOMFhDSmNiaUFnSUNBZ0lEOGdUMkpxWldOMExuWmhiSFZsY3lod1lYbHNiMkZrTG5KbGMyOTFjbU5sWDJGalkyVnpjeWt1Wm14aGRFMWhjQ2hjYmlBZ0lDQWdJQ0FnSUNBb1kyeHBaVzUwS1NBOVBpQmpiR2xsYm5RL0xuSnZiR1Z6SUQ4L0lGdGRYRzRnSUNBZ0lDQWdJQ2xjYmlBZ0lDQWdJRG9nVzEwcExGeHVJQ0JkTzF4dUlDQm1iM0lnS0dOdmJuTjBJSEp2YkdVZ2IyWWdjbUYzVW05c1pYTXBJSHRjYmlBZ0lDQnBaaUFvY205c1pUOHVjM1JoY25SelYybDBhQ2hjSW01aGJXVnpjR0ZqWlRwY0lpa3BJSHRjYmlBZ0lDQWdJRzVoYldWemNHRmpaWE11WVdSa0tISnZiR1V1YzJ4cFkyVW9YQ0p1WVcxbGMzQmhZMlU2WENJdWJHVnVaM1JvS1NrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUZzdUxpNXVZVzFsYzNCaFkyVnpYVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRkpsWVd4dFJuSnZiVWx6YzNWbGNpaHFkM1E2SUhOMGNtbHVaeWs2SUhOMGNtbHVaeUI3WEc0Z0lHTnZibk4wSUhCaGVXeHZZV1FnUFNCblpYUlViMnRsYmxCaGVXeHZZV1E4ZXlCcGMzTS9PaUJ6ZEhKcGJtY2dmVDRvYW5kMEtUdGNiaUFnWTI5dWMzUWdhWE56SUQwZ2NHRjViRzloWkQ4dWFYTnpPMXh1SUNCcFppQW9JV2x6Y3lrZ2UxeHVJQ0FnSUhSb2NtOTNJRzVsZHlCQmRYUm9iM0pwZW1GMGFXOXVSWEp5YjNJb1hDSkpjM04xWlhJZ0tHbHpjeWtnYVhNZ2JXbHpjMmx1WjF3aUtUdGNiaUFnZlZ4dUlDQnNaWFFnZFhKc09pQlZVa3c3WEc0Z0lIUnllU0I3WEc0Z0lDQWdkWEpzSUQwZ2JtVjNJRlZTVENocGMzTXBPMXh1SUNCOUlHTmhkR05vSUh0Y2JpQWdJQ0IwYUhKdmR5QnVaWGNnUVhWMGFHOXlhWHBoZEdsdmJrVnljbTl5S0dCSmJuWmhiR2xrSUdsemMzVmxjaUJWVWt3NklDUjdhWE56ZldBcE8xeHVJQ0I5WEc0Z0lHTnZibk4wSUhCaGNuUnpJRDBnZFhKc0xuQmhkR2h1WVcxbExuTndiR2wwS0Z3aUwxd2lLUzVtYVd4MFpYSW9RbTl2YkdWaGJpazdYRzRnSUdOdmJuTjBJSEpsWVd4dGMwbHVaR1Y0SUQwZ2NHRnlkSE11YVc1a1pYaFBaaWhjSW5KbFlXeHRjMXdpS1R0Y2JpQWdhV1lnS0hKbFlXeHRjMGx1WkdWNElEMDlQU0F0TVNCOGZDQWhjR0Z5ZEhOYmNtVmhiRzF6U1c1a1pYZ2dLeUF4WFNrZ2UxeHVJQ0FnSUhSb2NtOTNJRzVsZHlCQmRYUm9iM0pwZW1GMGFXOXVSWEp5YjNJb1lFTmhibTV2ZENCbGVIUnlZV04wSUhKbFlXeHRJR1p5YjIwZ2FYTnpkV1Z5T2lBa2UybHpjMzFnS1R0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnY0dGeWRITmJjbVZoYkcxelNXNWtaWGdnS3lBeFhUdGNibjFjYmx4dUx5b3FYRzRnS2lCRmVIUnlZV04wY3lCeWIyeGxjeUJtY205dElIUm9aU0JnY21WemIzVnlZMlZmWVdOalpYTnpZQ0JqYkdGcGJTQnZibXg1TENCdmNIUnBiMjVoYkd4NUlHVjRZMngxWkdsdVoxeHVJQ29nYzNCbFkybG1hV1ZrSUdOc2FXVnVkQ0JKUkhNZ0tHVXVaeTRnWUZ3aVlXTmpiM1Z1ZEZ3aVlDa3VJQ0JWYm14cGEyVWdlMEJzYVc1cklHVjRkSEpoWTNSTFpYbGpiRzloYTFKdmJHVnpmVnh1SUNvZ2RHaHBjeUJrYjJWeklFNVBWQ0JwYm1Oc2RXUmxJR0J5WldGc2JWOWhZMk5sYzNNdWNtOXNaWE5nTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0J3WVhsc2IyRmtJQ0FnVkdobElHUmxZMjlrWldRZ1NsZFVJSEJoZVd4dllXUXVYRzRnS2lCQWNHRnlZVzBnWlhoamJIVmtaV1FnSUVOc2FXVnVkQ0JKUkhNZ2RHOGdjMnRwY0M0Z0lFQmtaV1poZFd4MElGdGNJbUZqWTI5MWJuUmNJbDFjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRU5zYVdWdWRGSnZiR1Z6S0Z4dUlDQndZWGxzYjJGa09pQkxaWGxqYkc5aGEwRmpZMlZ6YzFSdmEyVnVVR0Y1Ykc5aFpDQjhJRzUxYkd3c1hHNGdJR1Y0WTJ4MVpHVmtPaUJ6ZEhKcGJtZGJYU0E5SUZ0Y0ltRmpZMjkxYm5SY0lsMWNiaWs2SUhOMGNtbHVaMXRkSUh0Y2JpQWdZMjl1YzNRZ2NtVnpiM1Z5WTJWQlkyTmxjM01nUFNCd1lYbHNiMkZrUHk1eVpYTnZkWEpqWlY5aFkyTmxjM003WEc0Z0lHbG1JQ2doY21WemIzVnlZMlZCWTJObGMzTWdmSHdnZEhsd1pXOW1JSEpsYzI5MWNtTmxRV05qWlhOeklDRTlQU0JjSW05aWFtVmpkRndpS1NCeVpYUjFjbTRnVzEwN1hHNGdJR052Ym5OMElISnZiR1Z6SUQwZ2JtVjNJRk5sZER4emRISnBibWMrS0NrN1hHNGdJR1p2Y2lBb1kyOXVjM1FnVzJOc2FXVnVkRWxrTENCa1lYUmhYU0J2WmlCUFltcGxZM1F1Wlc1MGNtbGxjeWh5WlhOdmRYSmpaVUZqWTJWemN5a3BJSHRjYmlBZ0lDQnBaaUFvWlhoamJIVmtaV1F1YVc1amJIVmtaWE1vWTJ4cFpXNTBTV1FwS1NCamIyNTBhVzUxWlR0Y2JpQWdJQ0JwWmlBb1FYSnlZWGt1YVhOQmNuSmhlU2hrWVhSaFB5NXliMnhsY3lrcElIdGNiaUFnSUNBZ0lHWnZjaUFvWTI5dWMzUWdjbTlzWlNCdlppQmtZWFJoTG5KdmJHVnpLU0J5YjJ4bGN5NWhaR1FvY205c1pTazdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCYkxpNHVjbTlzWlhOZE8xeHVmVnh1SWwxOSJdfQ==
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EMBED_MESSAGE_TYPE = void 0;
|
|
4
|
+
exports.isSwitchDashboardMessage = isSwitchDashboardMessage;
|
|
5
|
+
exports.isEmbedParentMessage = isEmbedParentMessage;
|
|
6
|
+
exports.createSwitchDashboardMessage = createSwitchDashboardMessage;
|
|
7
|
+
exports.sendSwitchDashboardMessage = sendSwitchDashboardMessage;
|
|
8
|
+
const core_1 = require("@decaf-ts/core");
|
|
9
|
+
/**
|
|
10
|
+
* Message type constants shared between the embedded plugin and the host.
|
|
11
|
+
* The plugin is org-agnostic: there is never space switching; the current
|
|
12
|
+
* Kibana space comes from the request/session/proxy context.
|
|
13
|
+
*/
|
|
14
|
+
exports.EMBED_MESSAGE_TYPE = {
|
|
15
|
+
SWITCH: "ORG_DASHBOARD_EMBED_SWITCH_DASHBOARD",
|
|
16
|
+
READY: "ORG_DASHBOARD_EMBED_READY",
|
|
17
|
+
RENDERED: "ORG_DASHBOARD_EMBED_RENDERED",
|
|
18
|
+
ERROR: "ORG_DASHBOARD_EMBED_ERROR",
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Type guard for the switch-dashboard message received by the embedded plugin.
|
|
22
|
+
*/
|
|
23
|
+
function isSwitchDashboardMessage(data) {
|
|
24
|
+
if (!data || typeof data !== "object") {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const msg = data;
|
|
28
|
+
return (msg.type === exports.EMBED_MESSAGE_TYPE.SWITCH &&
|
|
29
|
+
typeof msg.dashboardId === "string" &&
|
|
30
|
+
msg.dashboardId.length > 0);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Type guard for parent-bound messages emitted by the embedded plugin.
|
|
34
|
+
*/
|
|
35
|
+
function isEmbedParentMessage(data) {
|
|
36
|
+
if (!data || typeof data !== "object") {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
const msg = data;
|
|
40
|
+
return (msg.type === exports.EMBED_MESSAGE_TYPE.READY ||
|
|
41
|
+
msg.type === exports.EMBED_MESSAGE_TYPE.RENDERED ||
|
|
42
|
+
msg.type === exports.EMBED_MESSAGE_TYPE.ERROR);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Build a switch-dashboard message from a payload (shared by both plugins).
|
|
46
|
+
*/
|
|
47
|
+
function createSwitchDashboardMessage(payload) {
|
|
48
|
+
return {
|
|
49
|
+
type: exports.EMBED_MESSAGE_TYPE.SWITCH,
|
|
50
|
+
dashboardId: payload.dashboardId,
|
|
51
|
+
timeRange: payload.timeRange,
|
|
52
|
+
query: payload.query,
|
|
53
|
+
filters: payload.filters,
|
|
54
|
+
guestToken: payload.guestToken,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Send a switch-dashboard message to a DOM-free target.
|
|
59
|
+
*
|
|
60
|
+
* If the target supports `postMessage` (Kibana), the message is posted
|
|
61
|
+
* directly. If the target supports `switchDashboard` (Superset SDK handle),
|
|
62
|
+
* the SDK method is invoked instead. Both paths use the same payload shape.
|
|
63
|
+
*/
|
|
64
|
+
function sendSwitchDashboardMessage(target, payload, targetOrigin) {
|
|
65
|
+
if (typeof target.switchDashboard === "function") {
|
|
66
|
+
void target.switchDashboard(payload.dashboardId, payload.guestToken);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (typeof target.postMessage === "function") {
|
|
70
|
+
target.postMessage(createSwitchDashboardMessage(payload), targetOrigin);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
throw new core_1.UnsupportedError("EmbedMessageTarget must provide either postMessage or switchDashboard");
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGx1Z2lucy9jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsTUFBTSxFQUFFLHNDQUFzQztJQUM5QyxLQUFLLEVBQUUsMkJBQTJCO0lBQ2xDLFFBQVEsRUFBRSw4QkFBOEI7SUFDeEMsS0FBSyxFQUFFLDJCQUEyQjtDQUMxQixDQUFDO0FBd0tYOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxJQUFhO0lBRWIsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxJQUF1QyxDQUFDO0lBQ3BELE9BQU8sQ0FDTCxHQUFHLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLE1BQU07UUFDdEMsT0FBTyxHQUFHLENBQUMsV0FBVyxLQUFLLFFBQVE7UUFDbkMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUMzQixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxJQUFhO0lBRWIsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxJQUF5QixDQUFDO0lBQ3RDLE9BQU8sQ0FDTCxHQUFHLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLEtBQUs7UUFDckMsR0FBRyxDQUFDLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxRQUFRO1FBQ3hDLEdBQUcsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsS0FBSyxDQUN0QyxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLDRCQUE0QixDQUMxQyxPQUErQjtJQUUvQixPQUFPO1FBQ0wsSUFBSSxFQUFFLGtCQUFrQixDQUFDLE1BQU07UUFDL0IsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1FBQ2hDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztRQUM1QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDcEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1FBQ3hCLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtLQUMvQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FDeEMsTUFBMEIsRUFDMUIsT0FBK0IsRUFDL0IsWUFBb0I7SUFFcEIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxlQUFlLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDakQsS0FBSyxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JFLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxPQUFPLE1BQU0sQ0FBQyxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDN0MsTUFBTSxDQUFDLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN4RSxPQUFPO0lBQ1QsQ0FBQztJQUNELE1BQU0sSUFBSSxnQkFBZ0IsQ0FDeEIsdUVBQXVFLENBQ3hFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9wbHVnaW5zL2NvbnRyYWN0XG4gKiBAc3VtbWFyeSBTaGFyZWQsIERPTS1mcmVlIGNvbnRyYWN0IGZvciBCSSBkYXNoYm9hcmQgZW1iZWQgcGx1Z2lucy5cbiAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIHRoZSBtZXNzYWdlIHByb3RvY29sLCBlbWJlZCBVUkwgb3B0aW9ucywgaW5zdGFsbFxuICogb3B0aW9ucy9yZXN1bHQsIHBsdWdpbiBkZXNjcmlwdG9yLCBhbmQgdGhlIGBEYXNoYm9hcmRFbWJlZFBsdWdpbmAgaW50ZXJmYWNlXG4gKiB0aGF0IGJvdGggdGhlIEtpYmFuYSBhbmQgU3VwZXJzZXQgcGx1Z2lucyBpbXBsZW1lbnQgd2l0aCB0aGUgZXhhY3Qgc2FtZSBBUEkuXG4gKlxuICogVGhpcyBjb250cmFjdCBpcyBpbnRlbnRpb25hbGx5IERPTS1mcmVlIChubyBgd2luZG93YCAvIGBIVE1MSUZyYW1lRWxlbWVudGApXG4gKiBzbyBpdCBidWlsZHMgdW5kZXIgdGhlIE5vZGUgYGxpYjogW1wiZXMyMDIyXCJdYCB0c2NvbmZpZyBhbmQgaXMgY29uc3VtYWJsZSBmcm9tXG4gKiBib3RoIE5vZGUgYW5kIHRoZSBicm93c2VyLiBUaGUgQW5ndWxhciBob3N0IHN1cHBsaWVzIGEgRE9NLWZyZWVcbiAqIGBFbWJlZE1lc3NhZ2VUYXJnZXRgICh0eXBpY2FsbHkgYGlmcmFtZS5jb250ZW50V2luZG93YCkuXG4gKi9cbmltcG9ydCB0eXBlIHsgTWF5YmVDb250ZXh0dWFsQXJnIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBVbnN1cHBvcnRlZEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5cbi8qKlxuICogTWVzc2FnZSB0eXBlIGNvbnN0YW50cyBzaGFyZWQgYmV0d2VlbiB0aGUgZW1iZWRkZWQgcGx1Z2luIGFuZCB0aGUgaG9zdC5cbiAqIFRoZSBwbHVnaW4gaXMgb3JnLWFnbm9zdGljOiB0aGVyZSBpcyBuZXZlciBzcGFjZSBzd2l0Y2hpbmc7IHRoZSBjdXJyZW50XG4gKiBLaWJhbmEgc3BhY2UgY29tZXMgZnJvbSB0aGUgcmVxdWVzdC9zZXNzaW9uL3Byb3h5IGNvbnRleHQuXG4gKi9cbmV4cG9ydCBjb25zdCBFTUJFRF9NRVNTQUdFX1RZUEUgPSB7XG4gIFNXSVRDSDogXCJPUkdfREFTSEJPQVJEX0VNQkVEX1NXSVRDSF9EQVNIQk9BUkRcIixcbiAgUkVBRFk6IFwiT1JHX0RBU0hCT0FSRF9FTUJFRF9SRUFEWVwiLFxuICBSRU5ERVJFRDogXCJPUkdfREFTSEJPQVJEX0VNQkVEX1JFTkRFUkVEXCIsXG4gIEVSUk9SOiBcIk9SR19EQVNIQk9BUkRfRU1CRURfRVJST1JcIixcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEVtYmVkTWVzc2FnZVR5cGUgPVxuICAodHlwZW9mIEVNQkVEX01FU1NBR0VfVFlQRSlba2V5b2YgdHlwZW9mIEVNQkVEX01FU1NBR0VfVFlQRV07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGFzaGJvYXJkUXVlcnkge1xuICBsYW5ndWFnZTogXCJrdWVyeVwiIHwgXCJsdWNlbmVcIjtcbiAgcXVlcnk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXNoYm9hcmRUaW1lUmFuZ2Uge1xuICBmcm9tOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGF5bG9hZCB1c2VkIHRvIHN3aXRjaCBkYXNoYm9hcmRzIGF0IHJ1bnRpbWUuXG4gKlxuICogYGd1ZXN0VG9rZW5gIGlzIHVzZWQgYnkgU3VwZXJzZXQgKHdoaWNoIHJlcXVpcmVzIGEgZGFzaGJvYXJkLXNjb3BlZCBndWVzdFxuICogdG9rZW4gZm9yIGVhY2ggc3dpdGNoKSBhbmQgaWdub3JlZCBieSBLaWJhbmEgKHdoaWNoIHJlbGllcyBvbiB0aGUgc2Vzc2lvblxuICogc3BhY2UgY29udGV4dCkuIFRoaXMga2VlcHMgdGhlIHBheWxvYWQgc2hhcGUgaWRlbnRpY2FsIGFjcm9zcyBib3RoIHBsdWdpbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3dpdGNoRGFzaGJvYXJkUGF5bG9hZCB7XG4gIGRhc2hib2FyZElkOiBzdHJpbmc7XG4gIHRpbWVSYW5nZT86IERhc2hib2FyZFRpbWVSYW5nZTtcbiAgcXVlcnk/OiBEYXNoYm9hcmRRdWVyeTtcbiAgZmlsdGVycz86IHVua25vd25bXTtcbiAgLyoqIFN1cGVyc2V0LW9ubHk6IGRhc2hib2FyZC1zY29wZWQgZ3Vlc3QgdG9rZW4uIEtpYmFuYSBpZ25vcmVzIHRoaXMuICovXG4gIGd1ZXN0VG9rZW4/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3dpdGNoRGFzaGJvYXJkTWVzc2FnZSBleHRlbmRzIFN3aXRjaERhc2hib2FyZFBheWxvYWQge1xuICB0eXBlOiB0eXBlb2YgRU1CRURfTUVTU0FHRV9UWVBFLlNXSVRDSDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbWJlZFJlYWR5TWVzc2FnZSB7XG4gIHR5cGU6IHR5cGVvZiBFTUJFRF9NRVNTQUdFX1RZUEUuUkVBRFk7XG4gIGRhc2hib2FyZElkOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVtYmVkUmVuZGVyZWRNZXNzYWdlIHtcbiAgdHlwZTogdHlwZW9mIEVNQkVEX01FU1NBR0VfVFlQRS5SRU5ERVJFRDtcbiAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbWJlZEVycm9yTWVzc2FnZSB7XG4gIHR5cGU6IHR5cGVvZiBFTUJFRF9NRVNTQUdFX1RZUEUuRVJST1I7XG4gIGRhc2hib2FyZElkOiBzdHJpbmcgfCBudWxsO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVW5pb24gb2YgbWVzc2FnZXMgdGhlIGVtYmVkZGVkIHBsdWdpbiBwb3N0cyBiYWNrIHRvIHRoZSBwYXJlbnQgaG9zdC5cbiAqL1xuZXhwb3J0IHR5cGUgRW1iZWRQYXJlbnRNZXNzYWdlID1cbiAgfCBFbWJlZFJlYWR5TWVzc2FnZVxuICB8IEVtYmVkUmVuZGVyZWRNZXNzYWdlXG4gIHwgRW1iZWRFcnJvck1lc3NhZ2U7XG5cbi8qKlxuICogRE9NLWZyZWUgbWVzc2FnZSB0YXJnZXQuIEJvdGggS2liYW5hIGFuZCBTdXBlcnNldCB1c2UgdGhlIHNhbWUgaW50ZXJmYWNlO1xuICogZWFjaCB0b29sIHVzZXMgYSBkaWZmZXJlbnQgbWVjaGFuaXNtOlxuICpcbiAqIC0gKipLaWJhbmE6KiogdGhlIEFuZ3VsYXIgaG9zdCBwYXNzZXMgYGlmcmFtZS5jb250ZW50V2luZG93YCwgd2hpY2ggcHJvdmlkZXNcbiAqICAgYHBvc3RNZXNzYWdlYC4gYHN3aXRjaERhc2hib2FyZGAgaXMgdW51c2VkLlxuICogLSAqKlN1cGVyc2V0OioqIHRoZSBBbmd1bGFyIGhvc3QgcGFzc2VzIHRoZSBlbWJlZGRlZCBTREsnc1xuICogICBgRW1iZWRkZWREYXNoYm9hcmRgIGhhbmRsZSAod3JhcHBlZCksIHdoaWNoIHByb3ZpZGVzIGBzd2l0Y2hEYXNoYm9hcmRgLlxuICogICBgcG9zdE1lc3NhZ2VgIGlzIHVudXNlZC5cbiAqXG4gKiBBdCBsZWFzdCBvbmUgb2YgdGhlIHR3byBtZXRob2RzIG11c3QgYmUgcHJlc2VudDsgZWFjaCBwbHVnaW4gY2hlY2tzIGZvciB0aGVcbiAqIG1lY2hhbmlzbSBpdCBuZWVkcyBhbmQgdGhyb3dzIGFuIGBVbnN1cHBvcnRlZEVycm9yYCBpZiBhYnNlbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1iZWRNZXNzYWdlVGFyZ2V0IHtcbiAgLyoqIEtpYmFuYSBtZWNoYW5pc206IHBvc3QgYSBtZXNzYWdlIHRvIHRoZSBpZnJhbWUgd2luZG93LiAqL1xuICBwb3N0TWVzc2FnZT8obWVzc2FnZTogdW5rbm93biwgdGFyZ2V0T3JpZ2luOiBzdHJpbmcpOiB2b2lkO1xuICAvKiogU3VwZXJzZXQgbWVjaGFuaXNtOiBjYWxsIHRoZSBTREsncyBzd2l0Y2hEYXNoYm9hcmQgbWV0aG9kLiAqL1xuICBzd2l0Y2hEYXNoYm9hcmQ/KFxuICAgIGRhc2hib2FyZElkOiBzdHJpbmcsXG4gICAgZ3Vlc3RUb2tlbj86IHN0cmluZ1xuICApOiBQcm9taXNlPHVua25vd24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVtYmVkVmlld09wdGlvbnMge1xuICBzaG93VGltZUZpbHRlcj86IGJvb2xlYW47XG4gIHNob3dRdWVyeUlucHV0PzogYm9vbGVhbjtcbiAgc2hvd0ZpbHRlckJhcj86IGJvb2xlYW47XG4gIGhpZGVQYW5lbFRpdGxlcz86IGJvb2xlYW47XG4gIHRpbWVSYW5nZT86IERhc2hib2FyZFRpbWVSYW5nZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbWJlZFVybE9wdGlvbnMge1xuICAvKiogSG9zdCB3aXRob3V0IHByb3RvY29sLCBlLmcuIFwicHRwLmhvc3RcIi4gKi9cbiAgaG9zdDogc3RyaW5nO1xuICAvKiogQmFzZSBwYXRoLCBlLmcuIFwia2liYW5hXCIuIERlZmF1bHRzIHRvIHRoZSB0b29sIGRlZmF1bHQuICovXG4gIGJhc2VQYXRoPzogc3RyaW5nO1xuICAvKiogSW5pdGlhbCBkYXNoYm9hcmQgaWQgdG8gcmVuZGVyLiAqL1xuICBkYXNoYm9hcmRJZDogc3RyaW5nO1xuICAvKiogUGFyZW50IG9yaWdpbiBhbGxvd2xpc3QgKGNvbW1hLXNlcGFyYXRlZCkgcGFzc2VkIHRvIHRoZSBwbHVnaW4uICovXG4gIHBhcmVudE9yaWdpbjogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgdmlldyBvdmVycmlkZXMuICovXG4gIHZpZXc/OiBFbWJlZFZpZXdPcHRpb25zO1xufVxuXG5leHBvcnQgdHlwZSBCaVRvb2wgPSBcImtpYmFuYVwiIHwgXCJzdXBlcnNldFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZEVtYmVkUGx1Z2luRGVzY3JpcHRvciB7XG4gIC8qKiBQbHVnaW4gaWQgKGUuZy4gXCJvcmdEYXNoYm9hcmRFbWJlZFwiKS4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIEtpYmFuYSBhcHBsaWNhdGlvbiBpZCAoZS5nLiBcIm9yZ19kYXNoYm9hcmRfZW1iZWRcIikuICovXG4gIGFwcElkOiBzdHJpbmc7XG4gIC8qKiBQbHVnaW4gdmVyc2lvbi4gKi9cbiAgdmVyc2lvbjogc3RyaW5nO1xuICAvKiogVGFyZ2V0IEJJIHRvb2wgdmVyc2lvbiB0aGlzIHBsdWdpbiBpcyBidWlsdCBhZ2FpbnN0LiAqL1xuICB0YXJnZXRWZXJzaW9uOiBzdHJpbmc7XG4gIC8qKiBCSSB0b29sIHRoaXMgcGx1Z2luIHRhcmdldHMuICovXG4gIHRvb2w6IEJpVG9vbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5JbnN0YWxsT3B0aW9ucyB7XG4gIC8qKiBEaXJlY3RvcnkgdG8gbWF0ZXJpYWxpemUgdGhlIHBsdWdpbiBpbnRvLiAqL1xuICB0YXJnZXRQYXRoOiBzdHJpbmc7XG4gIC8qKiBPdmVycmlkZXMgYGRlc2NyaXB0b3IudGFyZ2V0VmVyc2lvbmAgd2hlbiBwcm92aWRlZC4gKi9cbiAgdGFyZ2V0VmVyc2lvbj86IHN0cmluZztcbiAgLyoqIEF0dGVtcHQgdG8gYnVpbGQgdGhlIHBsdWdpbiBhZnRlciB3cml0aW5nIGZpbGVzIChiZXN0LWVmZm9ydCkuICovXG4gIGJ1aWxkPzogYm9vbGVhbjtcbiAgLyoqIE92ZXJ3cml0ZSBhbiBleGlzdGluZyBwbHVnaW4gZGlyZWN0b3J5LiAqL1xuICBvdmVyd3JpdGU/OiBib29sZWFuO1xuICAvKiogT3B0aW9uYWwgY29udGV4dCBmb3IgdHJhY2luZy9sb2dnaW5nLiAqL1xuICBjb250ZXh0PzogTWF5YmVDb250ZXh0dWFsQXJnPGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luSW5zdGFsbFJlc3VsdCB7XG4gIC8qKiBBYnNvbHV0ZSBwYXRoIHRvIHRoZSBtYXRlcmlhbGl6ZWQgcGx1Z2luIGRpcmVjdG9yeS4gKi9cbiAgcGx1Z2luUGF0aDogc3RyaW5nO1xuICAvKiogRGVzY3JpcHRvciB1c2VkIGZvciB0aGlzIGluc3RhbGwuICovXG4gIGRlc2NyaXB0b3I6IERhc2hib2FyZEVtYmVkUGx1Z2luRGVzY3JpcHRvcjtcbiAgLyoqIFJlbGF0aXZlIGZpbGUgcGF0aHMgd3JpdHRlbi4gKi9cbiAgZmlsZXM6IHN0cmluZ1tdO1xuICAvKiogV2hldGhlciBhIGJ1aWxkIHdhcyBhdHRlbXB0ZWQgYW5kIHJlcG9ydGVkIHN1Y2Nlc3MuICovXG4gIGJ1aWx0OiBib29sZWFuO1xuICAvKiogQ2FwdHVyZWQgYnVpbGQgb3V0cHV0IChzdGRvdXQvc3RkZXJyKSB3aGVuIGBidWlsZGAgd2FzIHJlcXVlc3RlZC4gKi9cbiAgYnVpbGRPdXRwdXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udHJhY3QgYm90aCBCSSBkYXNoYm9hcmQgZW1iZWQgcGx1Z2lucyBpbXBsZW1lbnQuIEJvdGggS2liYW5hIGFuZFxuICogU3VwZXJzZXQgcGx1Z2lucyBleHBvc2UgdGhlIGV4YWN0IHNhbWUgQVBJIHN1cmZhY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGFzaGJvYXJkRW1iZWRQbHVnaW4ge1xuICByZWFkb25seSBkZXNjcmlwdG9yOiBEYXNoYm9hcmRFbWJlZFBsdWdpbkRlc2NyaXB0b3I7XG4gIC8qKiBCdWlsZCB0aGUgQkktdG9vbCBtYW5pZmVzdCAoZS5nLiBraWJhbmEuanNvbikgZm9yIGEgdGFyZ2V0IHZlcnNpb24uICovXG4gIG1hbmlmZXN0KHRhcmdldFZlcnNpb24/OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIEJ1aWxkIHRoZSBzdGFibGUgaWZyYW1lIGVtYmVkIFVSTC4gKi9cbiAgYnVpbGRFbWJlZFVybChvcHRpb25zOiBFbWJlZFVybE9wdGlvbnMpOiBzdHJpbmc7XG4gIC8qKiBDcmVhdGUgYSBzd2l0Y2gtZGFzaGJvYXJkIG1lc3NhZ2Ugb2JqZWN0LiAqL1xuICBjcmVhdGVTd2l0Y2hEYXNoYm9hcmRNZXNzYWdlKFxuICAgIHBheWxvYWQ6IFN3aXRjaERhc2hib2FyZFBheWxvYWRcbiAgKTogU3dpdGNoRGFzaGJvYXJkTWVzc2FnZTtcbiAgLyoqIFNlbmQgYSBzd2l0Y2gtZGFzaGJvYXJkIG1lc3NhZ2UgdG8gdGhlIGVtYmVkZGVkIHBsdWdpbiB2aWEgYHBvc3RNZXNzYWdlYC4gKi9cbiAgc2VuZFN3aXRjaERhc2hib2FyZE1lc3NhZ2UoXG4gICAgdGFyZ2V0OiBFbWJlZE1lc3NhZ2VUYXJnZXQsXG4gICAgcGF5bG9hZDogU3dpdGNoRGFzaGJvYXJkUGF5bG9hZCxcbiAgICB0YXJnZXRPcmlnaW46IHN0cmluZ1xuICApOiB2b2lkO1xuICAvKiogTWF0ZXJpYWxpemUgKGFuZCBvcHRpb25hbGx5IGJ1aWxkKSB0aGUgcGx1Z2luIGludG8gYSB0YXJnZXQgZGlyZWN0b3J5LiAqL1xuICBpbnN0YWxsKG9wdGlvbnM6IFBsdWdpbkluc3RhbGxPcHRpb25zKTogUHJvbWlzZTxQbHVnaW5JbnN0YWxsUmVzdWx0Pjtcbn1cblxuLyoqXG4gKiBUeXBlIGd1YXJkIGZvciB0aGUgc3dpdGNoLWRhc2hib2FyZCBtZXNzYWdlIHJlY2VpdmVkIGJ5IHRoZSBlbWJlZGRlZCBwbHVnaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N3aXRjaERhc2hib2FyZE1lc3NhZ2UoXG4gIGRhdGE6IHVua25vd25cbik6IGRhdGEgaXMgU3dpdGNoRGFzaGJvYXJkTWVzc2FnZSB7XG4gIGlmICghZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBtc2cgPSBkYXRhIGFzIFBhcnRpYWw8U3dpdGNoRGFzaGJvYXJkTWVzc2FnZT47XG4gIHJldHVybiAoXG4gICAgbXNnLnR5cGUgPT09IEVNQkVEX01FU1NBR0VfVFlQRS5TV0lUQ0ggJiZcbiAgICB0eXBlb2YgbXNnLmRhc2hib2FyZElkID09PSBcInN0cmluZ1wiICYmXG4gICAgbXNnLmRhc2hib2FyZElkLmxlbmd0aCA+IDBcbiAgKTtcbn1cblxuLyoqXG4gKiBUeXBlIGd1YXJkIGZvciBwYXJlbnQtYm91bmQgbWVzc2FnZXMgZW1pdHRlZCBieSB0aGUgZW1iZWRkZWQgcGx1Z2luLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbWJlZFBhcmVudE1lc3NhZ2UoXG4gIGRhdGE6IHVua25vd25cbik6IGRhdGEgaXMgRW1iZWRQYXJlbnRNZXNzYWdlIHtcbiAgaWYgKCFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IG1zZyA9IGRhdGEgYXMgeyB0eXBlPzogc3RyaW5nIH07XG4gIHJldHVybiAoXG4gICAgbXNnLnR5cGUgPT09IEVNQkVEX01FU1NBR0VfVFlQRS5SRUFEWSB8fFxuICAgIG1zZy50eXBlID09PSBFTUJFRF9NRVNTQUdFX1RZUEUuUkVOREVSRUQgfHxcbiAgICBtc2cudHlwZSA9PT0gRU1CRURfTUVTU0FHRV9UWVBFLkVSUk9SXG4gICk7XG59XG5cbi8qKlxuICogQnVpbGQgYSBzd2l0Y2gtZGFzaGJvYXJkIG1lc3NhZ2UgZnJvbSBhIHBheWxvYWQgKHNoYXJlZCBieSBib3RoIHBsdWdpbnMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3dpdGNoRGFzaGJvYXJkTWVzc2FnZShcbiAgcGF5bG9hZDogU3dpdGNoRGFzaGJvYXJkUGF5bG9hZFxuKTogU3dpdGNoRGFzaGJvYXJkTWVzc2FnZSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogRU1CRURfTUVTU0FHRV9UWVBFLlNXSVRDSCxcbiAgICBkYXNoYm9hcmRJZDogcGF5bG9hZC5kYXNoYm9hcmRJZCxcbiAgICB0aW1lUmFuZ2U6IHBheWxvYWQudGltZVJhbmdlLFxuICAgIHF1ZXJ5OiBwYXlsb2FkLnF1ZXJ5LFxuICAgIGZpbHRlcnM6IHBheWxvYWQuZmlsdGVycyxcbiAgICBndWVzdFRva2VuOiBwYXlsb2FkLmd1ZXN0VG9rZW4sXG4gIH07XG59XG5cbi8qKlxuICogU2VuZCBhIHN3aXRjaC1kYXNoYm9hcmQgbWVzc2FnZSB0byBhIERPTS1mcmVlIHRhcmdldC5cbiAqXG4gKiBJZiB0aGUgdGFyZ2V0IHN1cHBvcnRzIGBwb3N0TWVzc2FnZWAgKEtpYmFuYSksIHRoZSBtZXNzYWdlIGlzIHBvc3RlZFxuICogZGlyZWN0bHkuIElmIHRoZSB0YXJnZXQgc3VwcG9ydHMgYHN3aXRjaERhc2hib2FyZGAgKFN1cGVyc2V0IFNESyBoYW5kbGUpLFxuICogdGhlIFNESyBtZXRob2QgaXMgaW52b2tlZCBpbnN0ZWFkLiBCb3RoIHBhdGhzIHVzZSB0aGUgc2FtZSBwYXlsb2FkIHNoYXBlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VuZFN3aXRjaERhc2hib2FyZE1lc3NhZ2UoXG4gIHRhcmdldDogRW1iZWRNZXNzYWdlVGFyZ2V0LFxuICBwYXlsb2FkOiBTd2l0Y2hEYXNoYm9hcmRQYXlsb2FkLFxuICB0YXJnZXRPcmlnaW46IHN0cmluZ1xuKTogdm9pZCB7XG4gIGlmICh0eXBlb2YgdGFyZ2V0LnN3aXRjaERhc2hib2FyZCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdm9pZCB0YXJnZXQuc3dpdGNoRGFzaGJvYXJkKHBheWxvYWQuZGFzaGJvYXJkSWQsIHBheWxvYWQuZ3Vlc3RUb2tlbik7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh0eXBlb2YgdGFyZ2V0LnBvc3RNZXNzYWdlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB0YXJnZXQucG9zdE1lc3NhZ2UoY3JlYXRlU3dpdGNoRGFzaGJvYXJkTWVzc2FnZShwYXlsb2FkKSwgdGFyZ2V0T3JpZ2luKTtcbiAgICByZXR1cm47XG4gIH1cbiAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkRXJyb3IoXG4gICAgXCJFbWJlZE1lc3NhZ2VUYXJnZXQgbXVzdCBwcm92aWRlIGVpdGhlciBwb3N0TWVzc2FnZSBvciBzd2l0Y2hEYXNoYm9hcmRcIlxuICApO1xufVxuIl19
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb250cmFjdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFlQSw0REFRQztBQUlELG9EQVFDO0FBSUQsb0VBU0M7QUFRRCxnRUFVQztBQWxFRCx5Q0FBa0Q7QUFDbEQ7Ozs7R0FJRztBQUNVLFFBQUEsa0JBQWtCLEdBQUc7SUFDOUIsTUFBTSxFQUFFLHNDQUFzQztJQUM5QyxLQUFLLEVBQUUsMkJBQTJCO0lBQ2xDLFFBQVEsRUFBRSw4QkFBOEI7SUFDeEMsS0FBSyxFQUFFLDJCQUEyQjtDQUNyQyxDQUFDO0FBQ0Y7O0dBRUc7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxJQUFJO0lBQ3pDLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDcEMsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQztJQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSywwQkFBa0IsQ0FBQyxNQUFNO1FBQzFDLE9BQU8sR0FBRyxDQUFDLFdBQVcsS0FBSyxRQUFRO1FBQ25DLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFDRDs7R0FFRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLElBQUk7SUFDckMsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNwQyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLDBCQUFrQixDQUFDLEtBQUs7UUFDekMsR0FBRyxDQUFDLElBQUksS0FBSywwQkFBa0IsQ0FBQyxRQUFRO1FBQ3hDLEdBQUcsQ0FBQyxJQUFJLEtBQUssMEJBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUNEOztHQUVHO0FBQ0gsU0FBZ0IsNEJBQTRCLENBQUMsT0FBTztJQUNoRCxPQUFPO1FBQ0gsSUFBSSxFQUFFLDBCQUFrQixDQUFDLE1BQU07UUFDL0IsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1FBQ2hDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztRQUM1QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDcEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1FBQ3hCLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtLQUNqQyxDQUFDO0FBQ04sQ0FBQztBQUNEOzs7Ozs7R0FNRztBQUNILFNBQWdCLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWTtJQUNwRSxJQUFJLE9BQU8sTUFBTSxDQUFDLGVBQWUsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUMvQyxLQUFLLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckUsT0FBTztJQUNYLENBQUM7SUFDRCxJQUFJLE9BQU8sTUFBTSxDQUFDLFdBQVcsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUMzQyxNQUFNLENBQUMsV0FBVyxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3hFLE9BQU87SUFDWCxDQUFDO0lBQ0QsTUFBTSxJQUFJLHVCQUFnQixDQUFDLHVFQUF1RSxDQUFDLENBQUM7QUFDeEcsQ0FBQztBQUNELHN2YkFBc3ZiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW5zdXBwb3J0ZWRFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuLyoqXG4gKiBNZXNzYWdlIHR5cGUgY29uc3RhbnRzIHNoYXJlZCBiZXR3ZWVuIHRoZSBlbWJlZGRlZCBwbHVnaW4gYW5kIHRoZSBob3N0LlxuICogVGhlIHBsdWdpbiBpcyBvcmctYWdub3N0aWM6IHRoZXJlIGlzIG5ldmVyIHNwYWNlIHN3aXRjaGluZzsgdGhlIGN1cnJlbnRcbiAqIEtpYmFuYSBzcGFjZSBjb21lcyBmcm9tIHRoZSByZXF1ZXN0L3Nlc3Npb24vcHJveHkgY29udGV4dC5cbiAqL1xuZXhwb3J0IGNvbnN0IEVNQkVEX01FU1NBR0VfVFlQRSA9IHtcbiAgICBTV0lUQ0g6IFwiT1JHX0RBU0hCT0FSRF9FTUJFRF9TV0lUQ0hfREFTSEJPQVJEXCIsXG4gICAgUkVBRFk6IFwiT1JHX0RBU0hCT0FSRF9FTUJFRF9SRUFEWVwiLFxuICAgIFJFTkRFUkVEOiBcIk9SR19EQVNIQk9BUkRfRU1CRURfUkVOREVSRURcIixcbiAgICBFUlJPUjogXCJPUkdfREFTSEJPQVJEX0VNQkVEX0VSUk9SXCIsXG59O1xuLyoqXG4gKiBUeXBlIGd1YXJkIGZvciB0aGUgc3dpdGNoLWRhc2hib2FyZCBtZXNzYWdlIHJlY2VpdmVkIGJ5IHRoZSBlbWJlZGRlZCBwbHVnaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N3aXRjaERhc2hib2FyZE1lc3NhZ2UoZGF0YSkge1xuICAgIGlmICghZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IG1zZyA9IGRhdGE7XG4gICAgcmV0dXJuIChtc2cudHlwZSA9PT0gRU1CRURfTUVTU0FHRV9UWVBFLlNXSVRDSCAmJlxuICAgICAgICB0eXBlb2YgbXNnLmRhc2hib2FyZElkID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgIG1zZy5kYXNoYm9hcmRJZC5sZW5ndGggPiAwKTtcbn1cbi8qKlxuICogVHlwZSBndWFyZCBmb3IgcGFyZW50LWJvdW5kIG1lc3NhZ2VzIGVtaXR0ZWQgYnkgdGhlIGVtYmVkZGVkIHBsdWdpbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW1iZWRQYXJlbnRNZXNzYWdlKGRhdGEpIHtcbiAgICBpZiAoIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBtc2cgPSBkYXRhO1xuICAgIHJldHVybiAobXNnLnR5cGUgPT09IEVNQkVEX01FU1NBR0VfVFlQRS5SRUFEWSB8fFxuICAgICAgICBtc2cudHlwZSA9PT0gRU1CRURfTUVTU0FHRV9UWVBFLlJFTkRFUkVEIHx8XG4gICAgICAgIG1zZy50eXBlID09PSBFTUJFRF9NRVNTQUdFX1RZUEUuRVJST1IpO1xufVxuLyoqXG4gKiBCdWlsZCBhIHN3aXRjaC1kYXNoYm9hcmQgbWVzc2FnZSBmcm9tIGEgcGF5bG9hZCAoc2hhcmVkIGJ5IGJvdGggcGx1Z2lucykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTd2l0Y2hEYXNoYm9hcmRNZXNzYWdlKHBheWxvYWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBFTUJFRF9NRVNTQUdFX1RZUEUuU1dJVENILFxuICAgICAgICBkYXNoYm9hcmRJZDogcGF5bG9hZC5kYXNoYm9hcmRJZCxcbiAgICAgICAgdGltZVJhbmdlOiBwYXlsb2FkLnRpbWVSYW5nZSxcbiAgICAgICAgcXVlcnk6IHBheWxvYWQucXVlcnksXG4gICAgICAgIGZpbHRlcnM6IHBheWxvYWQuZmlsdGVycyxcbiAgICAgICAgZ3Vlc3RUb2tlbjogcGF5bG9hZC5ndWVzdFRva2VuLFxuICAgIH07XG59XG4vKipcbiAqIFNlbmQgYSBzd2l0Y2gtZGFzaGJvYXJkIG1lc3NhZ2UgdG8gYSBET00tZnJlZSB0YXJnZXQuXG4gKlxuICogSWYgdGhlIHRhcmdldCBzdXBwb3J0cyBgcG9zdE1lc3NhZ2VgIChLaWJhbmEpLCB0aGUgbWVzc2FnZSBpcyBwb3N0ZWRcbiAqIGRpcmVjdGx5LiBJZiB0aGUgdGFyZ2V0IHN1cHBvcnRzIGBzd2l0Y2hEYXNoYm9hcmRgIChTdXBlcnNldCBTREsgaGFuZGxlKSxcbiAqIHRoZSBTREsgbWV0aG9kIGlzIGludm9rZWQgaW5zdGVhZC4gQm90aCBwYXRocyB1c2UgdGhlIHNhbWUgcGF5bG9hZCBzaGFwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbmRTd2l0Y2hEYXNoYm9hcmRNZXNzYWdlKHRhcmdldCwgcGF5bG9hZCwgdGFyZ2V0T3JpZ2luKSB7XG4gICAgaWYgKHR5cGVvZiB0YXJnZXQuc3dpdGNoRGFzaGJvYXJkID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdm9pZCB0YXJnZXQuc3dpdGNoRGFzaGJvYXJkKHBheWxvYWQuZGFzaGJvYXJkSWQsIHBheWxvYWQuZ3Vlc3RUb2tlbik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0YXJnZXQucG9zdE1lc3NhZ2UgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0YXJnZXQucG9zdE1lc3NhZ2UoY3JlYXRlU3dpdGNoRGFzaGJvYXJkTWVzc2FnZShwYXlsb2FkKSwgdGFyZ2V0T3JpZ2luKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcIkVtYmVkTWVzc2FnZVRhcmdldCBtdXN0IHByb3ZpZGUgZWl0aGVyIHBvc3RNZXNzYWdlIG9yIHN3aXRjaERhc2hib2FyZFwiKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVkyOXVkSEpoWTNRdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOHVMaTl6Y21NdmNHeDFaMmx1Y3k5amIyNTBjbUZqZEM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRmhRU3hQUVVGUExFVkJRVVVzWjBKQlFXZENMRVZCUVVVc1RVRkJUU3huUWtGQlowSXNRMEZCUXp0QlFVVnNSRHM3T3p0SFFVbEhPMEZCUTBnc1RVRkJUU3hEUVVGRExFMUJRVTBzYTBKQlFXdENMRWRCUVVjN1NVRkRhRU1zVFVGQlRTeEZRVUZGTEhORFFVRnpRenRKUVVNNVF5eExRVUZMTEVWQlFVVXNNa0pCUVRKQ08wbEJRMnhETEZGQlFWRXNSVUZCUlN3NFFrRkJPRUk3U1VGRGVFTXNTMEZCU3l4RlFVRkZMREpDUVVFeVFqdERRVU14UWl4RFFVRkRPMEZCZDB0WU96dEhRVVZITzBGQlEwZ3NUVUZCVFN4VlFVRlZMSGRDUVVGM1FpeERRVU4wUXl4SlFVRmhPMGxCUldJc1NVRkJTU3hEUVVGRExFbEJRVWtzU1VGQlNTeFBRVUZQTEVsQlFVa3NTMEZCU3l4UlFVRlJMRVZCUVVVc1EwRkJRenRSUVVOMFF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0SlFVTm1MRU5CUVVNN1NVRkRSQ3hOUVVGTkxFZEJRVWNzUjBGQlJ5eEpRVUYxUXl4RFFVRkRPMGxCUTNCRUxFOUJRVThzUTBGRFRDeEhRVUZITEVOQlFVTXNTVUZCU1N4TFFVRkxMR3RDUVVGclFpeERRVUZETEUxQlFVMDdVVUZEZEVNc1QwRkJUeXhIUVVGSExFTkJRVU1zVjBGQlZ5eExRVUZMTEZGQlFWRTdVVUZEYmtNc1IwRkJSeXhEUVVGRExGZEJRVmNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVTXpRaXhEUVVGRE8wRkJRMG9zUTBGQlF6dEJRVVZFT3p0SFFVVkhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHOUNRVUZ2UWl4RFFVTnNReXhKUVVGaE8wbEJSV0lzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4UFFVRlBMRWxCUVVrc1MwRkJTeXhSUVVGUkxFVkJRVVVzUTBGQlF6dFJRVU4wUXl4UFFVRlBMRXRCUVVzc1EwRkJRenRKUVVObUxFTkJRVU03U1VGRFJDeE5RVUZOTEVkQlFVY3NSMEZCUnl4SlFVRjVRaXhEUVVGRE8wbEJRM1JETEU5QlFVOHNRMEZEVEN4SFFVRkhMRU5CUVVNc1NVRkJTU3hMUVVGTExHdENRVUZyUWl4RFFVRkRMRXRCUVVzN1VVRkRja01zUjBGQlJ5eERRVUZETEVsQlFVa3NTMEZCU3l4clFrRkJhMElzUTBGQlF5eFJRVUZSTzFGQlEzaERMRWRCUVVjc1EwRkJReXhKUVVGSkxFdEJRVXNzYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhEUVVOMFF5eERRVUZETzBGQlEwb3NRMEZCUXp0QlFVVkVPenRIUVVWSE8wRkJRMGdzVFVGQlRTeFZRVUZWTERSQ1FVRTBRaXhEUVVNeFF5eFBRVUVyUWp0SlFVVXZRaXhQUVVGUE8xRkJRMHdzU1VGQlNTeEZRVUZGTEd0Q1FVRnJRaXhEUVVGRExFMUJRVTA3VVVGREwwSXNWMEZCVnl4RlFVRkZMRTlCUVU4c1EwRkJReXhYUVVGWE8xRkJRMmhETEZOQlFWTXNSVUZCUlN4UFFVRlBMRU5CUVVNc1UwRkJVenRSUVVNMVFpeExRVUZMTEVWQlFVVXNUMEZCVHl4RFFVRkRMRXRCUVVzN1VVRkRjRUlzVDBGQlR5eEZRVUZGTEU5QlFVOHNRMEZCUXl4UFFVRlBPMUZCUTNoQ0xGVkJRVlVzUlVGQlJTeFBRVUZQTEVOQlFVTXNWVUZCVlR0TFFVTXZRaXhEUVVGRE8wRkJRMG9zUTBGQlF6dEJRVVZFT3pzN096czdSMEZOUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3d3UWtGQk1FSXNRMEZEZUVNc1RVRkJNRUlzUlVGRE1VSXNUMEZCSzBJc1JVRkRMMElzV1VGQmIwSTdTVUZGY0VJc1NVRkJTU3hQUVVGUExFMUJRVTBzUTBGQlF5eGxRVUZsTEV0QlFVc3NWVUZCVlN4RlFVRkZMRU5CUVVNN1VVRkRha1FzUzBGQlN5eE5RVUZOTEVOQlFVTXNaVUZCWlN4RFFVRkRMRTlCUVU4c1EwRkJReXhYUVVGWExFVkJRVVVzVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPMUZCUTNKRkxFOUJRVTg3U1VGRFZDeERRVUZETzBsQlEwUXNTVUZCU1N4UFFVRlBMRTFCUVUwc1EwRkJReXhYUVVGWExFdEJRVXNzVlVGQlZTeEZRVUZGTEVOQlFVTTdVVUZETjBNc1RVRkJUU3hEUVVGRExGZEJRVmNzUTBGQlF5dzBRa0ZCTkVJc1EwRkJReXhQUVVGUExFTkJRVU1zUlVGQlJTeFpRVUZaTEVOQlFVTXNRMEZCUXp0UlFVTjRSU3hQUVVGUE8wbEJRMVFzUTBGQlF6dEpRVU5FTEUxQlFVMHNTVUZCU1N4blFrRkJaMElzUTBGRGVFSXNkVVZCUVhWRkxFTkJRM2hGTEVOQlFVTTdRVUZEU2l4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJBYlc5a2RXeGxJR2x1ZEdWbmNtRjBhVzl1Y3k5d2JIVm5hVzV6TDJOdmJuUnlZV04wWEc0Z0tpQkFjM1Z0YldGeWVTQlRhR0Z5WldRc0lFUlBUUzFtY21WbElHTnZiblJ5WVdOMElHWnZjaUJDU1NCa1lYTm9ZbTloY21RZ1pXMWlaV1FnY0d4MVoybHVjeTVjYmlBcUlFQmtaWE5qY21sd2RHbHZiaUJFWldacGJtVnpJSFJvWlNCdFpYTnpZV2RsSUhCeWIzUnZZMjlzTENCbGJXSmxaQ0JWVWt3Z2IzQjBhVzl1Y3l3Z2FXNXpkR0ZzYkZ4dUlDb2diM0IwYVc5dWN5OXlaWE4xYkhRc0lIQnNkV2RwYmlCa1pYTmpjbWx3ZEc5eUxDQmhibVFnZEdobElHQkVZWE5vWW05aGNtUkZiV0psWkZCc2RXZHBibUFnYVc1MFpYSm1ZV05sWEc0Z0tpQjBhR0YwSUdKdmRHZ2dkR2hsSUV0cFltRnVZU0JoYm1RZ1UzVndaWEp6WlhRZ2NHeDFaMmx1Y3lCcGJYQnNaVzFsYm5RZ2QybDBhQ0IwYUdVZ1pYaGhZM1FnYzJGdFpTQkJVRWt1WEc0Z0tseHVJQ29nVkdocGN5QmpiMjUwY21GamRDQnBjeUJwYm5SbGJuUnBiMjVoYkd4NUlFUlBUUzFtY21WbElDaHVieUJnZDJsdVpHOTNZQ0F2SUdCSVZFMU1TVVp5WVcxbFJXeGxiV1Z1ZEdBcFhHNGdLaUJ6YnlCcGRDQmlkV2xzWkhNZ2RXNWtaWElnZEdobElFNXZaR1VnWUd4cFlqb2dXMXdpWlhNeU1ESXlYQ0pkWUNCMGMyTnZibVpwWnlCaGJtUWdhWE1nWTI5dWMzVnRZV0pzWlNCbWNtOXRYRzRnS2lCaWIzUm9JRTV2WkdVZ1lXNWtJSFJvWlNCaWNtOTNjMlZ5TGlCVWFHVWdRVzVuZFd4aGNpQm9iM04wSUhOMWNIQnNhV1Z6SUdFZ1JFOU5MV1p5WldWY2JpQXFJR0JGYldKbFpFMWxjM05oWjJWVVlYSm5aWFJnSUNoMGVYQnBZMkZzYkhrZ1lHbG1jbUZ0WlM1amIyNTBaVzUwVjJsdVpHOTNZQ2t1WEc0Z0tpOWNibWx0Y0c5eWRDQjBlWEJsSUhzZ1RXRjVZbVZEYjI1MFpYaDBkV0ZzUVhKbklIMGdabkp2YlNCY0lrQmtaV05oWmkxMGN5OWpiM0psWENJN1hHNXBiWEJ2Y25RZ2V5QlZibk4xY0hCdmNuUmxaRVZ5Y205eUlIMGdabkp2YlNCY0lrQmtaV05oWmkxMGN5OWpiM0psWENJN1hHNWNiaThxS2x4dUlDb2dUV1Z6YzJGblpTQjBlWEJsSUdOdmJuTjBZVzUwY3lCemFHRnlaV1FnWW1WMGQyVmxiaUIwYUdVZ1pXMWlaV1JrWldRZ2NHeDFaMmx1SUdGdVpDQjBhR1VnYUc5emRDNWNiaUFxSUZSb1pTQndiSFZuYVc0Z2FYTWdiM0puTFdGbmJtOXpkR2xqT2lCMGFHVnlaU0JwY3lCdVpYWmxjaUJ6Y0dGalpTQnpkMmwwWTJocGJtYzdJSFJvWlNCamRYSnlaVzUwWEc0Z0tpQkxhV0poYm1FZ2MzQmhZMlVnWTI5dFpYTWdabkp2YlNCMGFHVWdjbVZ4ZFdWemRDOXpaWE56YVc5dUwzQnliM2g1SUdOdmJuUmxlSFF1WEc0Z0tpOWNibVY0Y0c5eWRDQmpiMjV6ZENCRlRVSkZSRjlOUlZOVFFVZEZYMVJaVUVVZ1BTQjdYRzRnSUZOWFNWUkRTRG9nWENKUFVrZGZSRUZUU0VKUFFWSkVYMFZOUWtWRVgxTlhTVlJEU0Y5RVFWTklRazlCVWtSY0lpeGNiaUFnVWtWQlJGazZJRndpVDFKSFgwUkJVMGhDVDBGU1JGOUZUVUpGUkY5U1JVRkVXVndpTEZ4dUlDQlNSVTVFUlZKRlJEb2dYQ0pQVWtkZlJFRlRTRUpQUVZKRVgwVk5Ra1ZFWDFKRlRrUkZVa1ZFWENJc1hHNGdJRVZTVWs5U09pQmNJazlTUjE5RVFWTklRazlCVWtSZlJVMUNSVVJmUlZKU1QxSmNJaXhjYm4wZ1lYTWdZMjl1YzNRN1hHNWNibVY0Y0c5eWRDQjBlWEJsSUVWdFltVmtUV1Z6YzJGblpWUjVjR1VnUFZ4dUlDQW9kSGx3Wlc5bUlFVk5Ra1ZFWDAxRlUxTkJSMFZmVkZsUVJTbGJhMlY1YjJZZ2RIbHdaVzltSUVWTlFrVkVYMDFGVTFOQlIwVmZWRmxRUlYwN1hHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdSR0Z6YUdKdllYSmtVWFZsY25rZ2UxeHVJQ0JzWVc1bmRXRm5aVG9nWENKcmRXVnllVndpSUh3Z1hDSnNkV05sYm1WY0lqdGNiaUFnY1hWbGNuazZJSE4wY21sdVp6dGNibjFjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCRVlYTm9ZbTloY21SVWFXMWxVbUZ1WjJVZ2UxeHVJQ0JtY205dE9pQnpkSEpwYm1jN1hHNGdJSFJ2T2lCemRISnBibWM3WEc1OVhHNWNiaThxS2x4dUlDb2dVR0Y1Ykc5aFpDQjFjMlZrSUhSdklITjNhWFJqYUNCa1lYTm9ZbTloY21SeklHRjBJSEoxYm5ScGJXVXVYRzRnS2x4dUlDb2dZR2QxWlhOMFZHOXJaVzVnSUdseklIVnpaV1FnWW5rZ1UzVndaWEp6WlhRZ0tIZG9hV05vSUhKbGNYVnBjbVZ6SUdFZ1pHRnphR0p2WVhKa0xYTmpiM0JsWkNCbmRXVnpkRnh1SUNvZ2RHOXJaVzRnWm05eUlHVmhZMmdnYzNkcGRHTm9LU0JoYm1RZ2FXZHViM0psWkNCaWVTQkxhV0poYm1FZ0tIZG9hV05vSUhKbGJHbGxjeUJ2YmlCMGFHVWdjMlZ6YzJsdmJseHVJQ29nYzNCaFkyVWdZMjl1ZEdWNGRDa3VJRlJvYVhNZ2EyVmxjSE1nZEdobElIQmhlV3h2WVdRZ2MyaGhjR1VnYVdSbGJuUnBZMkZzSUdGamNtOXpjeUJpYjNSb0lIQnNkV2RwYm5NdVhHNGdLaTljYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnVTNkcGRHTm9SR0Z6YUdKdllYSmtVR0Y1Ykc5aFpDQjdYRzRnSUdSaGMyaGliMkZ5WkVsa09pQnpkSEpwYm1jN1hHNGdJSFJwYldWU1lXNW5aVDg2SUVSaGMyaGliMkZ5WkZScGJXVlNZVzVuWlR0Y2JpQWdjWFZsY25rL09pQkVZWE5vWW05aGNtUlJkV1Z5ZVR0Y2JpQWdabWxzZEdWeWN6ODZJSFZ1YTI1dmQyNWJYVHRjYmlBZ0x5b3FJRk4xY0dWeWMyVjBMVzl1YkhrNklHUmhjMmhpYjJGeVpDMXpZMjl3WldRZ1ozVmxjM1FnZEc5clpXNHVJRXRwWW1GdVlTQnBaMjV2Y21WeklIUm9hWE11SUNvdlhHNGdJR2QxWlhOMFZHOXJaVzQvT2lCemRISnBibWM3WEc1OVhHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdVM2RwZEdOb1JHRnphR0p2WVhKa1RXVnpjMkZuWlNCbGVIUmxibVJ6SUZOM2FYUmphRVJoYzJoaWIyRnlaRkJoZVd4dllXUWdlMXh1SUNCMGVYQmxPaUIwZVhCbGIyWWdSVTFDUlVSZlRVVlRVMEZIUlY5VVdWQkZMbE5YU1ZSRFNEdGNibjFjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCRmJXSmxaRkpsWVdSNVRXVnpjMkZuWlNCN1hHNGdJSFI1Y0dVNklIUjVjR1Z2WmlCRlRVSkZSRjlOUlZOVFFVZEZYMVJaVUVVdVVrVkJSRms3WEc0Z0lHUmhjMmhpYjJGeVpFbGtPaUJ6ZEhKcGJtY2dmQ0J1ZFd4c08xeHVmVnh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVWdFltVmtVbVZ1WkdWeVpXUk5aWE56WVdkbElIdGNiaUFnZEhsd1pUb2dkSGx3Wlc5bUlFVk5Ra1ZFWDAxRlUxTkJSMFZmVkZsUVJTNVNSVTVFUlZKRlJEdGNiaUFnWkdGemFHSnZZWEprU1dRNklITjBjbWx1Wnp0Y2JuMWNibHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JGYldKbFpFVnljbTl5VFdWemMyRm5aU0I3WEc0Z0lIUjVjR1U2SUhSNWNHVnZaaUJGVFVKRlJGOU5SVk5UUVVkRlgxUlpVRVV1UlZKU1QxSTdYRzRnSUdSaGMyaGliMkZ5WkVsa09pQnpkSEpwYm1jZ2ZDQnVkV3hzTzF4dUlDQnRaWE56WVdkbE9pQnpkSEpwYm1jN1hHNTlYRzVjYmk4cUtseHVJQ29nVlc1cGIyNGdiMllnYldWemMyRm5aWE1nZEdobElHVnRZbVZrWkdWa0lIQnNkV2RwYmlCd2IzTjBjeUJpWVdOcklIUnZJSFJvWlNCd1lYSmxiblFnYUc5emRDNWNiaUFxTDF4dVpYaHdiM0owSUhSNWNHVWdSVzFpWldSUVlYSmxiblJOWlhOellXZGxJRDFjYmlBZ2ZDQkZiV0psWkZKbFlXUjVUV1Z6YzJGblpWeHVJQ0I4SUVWdFltVmtVbVZ1WkdWeVpXUk5aWE56WVdkbFhHNGdJSHdnUlcxaVpXUkZjbkp2Y2sxbGMzTmhaMlU3WEc1Y2JpOHFLbHh1SUNvZ1JFOU5MV1p5WldVZ2JXVnpjMkZuWlNCMFlYSm5aWFF1SUVKdmRHZ2dTMmxpWVc1aElHRnVaQ0JUZFhCbGNuTmxkQ0IxYzJVZ2RHaGxJSE5oYldVZ2FXNTBaWEptWVdObE8xeHVJQ29nWldGamFDQjBiMjlzSUhWelpYTWdZU0JrYVdabVpYSmxiblFnYldWamFHRnVhWE50T2x4dUlDcGNiaUFxSUMwZ0tpcExhV0poYm1FNktpb2dkR2hsSUVGdVozVnNZWElnYUc5emRDQndZWE56WlhNZ1lHbG1jbUZ0WlM1amIyNTBaVzUwVjJsdVpHOTNZQ3dnZDJocFkyZ2djSEp2ZG1sa1pYTmNiaUFxSUNBZ1lIQnZjM1JOWlhOellXZGxZQzRnWUhOM2FYUmphRVJoYzJoaWIyRnlaR0FnYVhNZ2RXNTFjMlZrTGx4dUlDb2dMU0FxS2xOMWNHVnljMlYwT2lvcUlIUm9aU0JCYm1kMWJHRnlJR2h2YzNRZ2NHRnpjMlZ6SUhSb1pTQmxiV0psWkdSbFpDQlRSRXNuYzF4dUlDb2dJQ0JnUlcxaVpXUmtaV1JFWVhOb1ltOWhjbVJnSUdoaGJtUnNaU0FvZDNKaGNIQmxaQ2tzSUhkb2FXTm9JSEJ5YjNacFpHVnpJR0J6ZDJsMFkyaEVZWE5vWW05aGNtUmdMbHh1SUNvZ0lDQmdjRzl6ZEUxbGMzTmhaMlZnSUdseklIVnVkWE5sWkM1Y2JpQXFYRzRnS2lCQmRDQnNaV0Z6ZENCdmJtVWdiMllnZEdobElIUjNieUJ0WlhSb2IyUnpJRzExYzNRZ1ltVWdjSEpsYzJWdWREc2daV0ZqYUNCd2JIVm5hVzRnWTJobFkydHpJR1p2Y2lCMGFHVmNiaUFxSUcxbFkyaGhibWx6YlNCcGRDQnVaV1ZrY3lCaGJtUWdkR2h5YjNkeklHRnVJR0JWYm5OMWNIQnZjblJsWkVWeWNtOXlZQ0JwWmlCaFluTmxiblF1WEc0Z0tpOWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdSVzFpWldSTlpYTnpZV2RsVkdGeVoyVjBJSHRjYmlBZ0x5b3FJRXRwWW1GdVlTQnRaV05vWVc1cGMyMDZJSEJ2YzNRZ1lTQnRaWE56WVdkbElIUnZJSFJvWlNCcFpuSmhiV1VnZDJsdVpHOTNMaUFxTDF4dUlDQndiM04wVFdWemMyRm5aVDhvYldWemMyRm5aVG9nZFc1cmJtOTNiaXdnZEdGeVoyVjBUM0pwWjJsdU9pQnpkSEpwYm1jcE9pQjJiMmxrTzF4dUlDQXZLaW9nVTNWd1pYSnpaWFFnYldWamFHRnVhWE50T2lCallXeHNJSFJvWlNCVFJFc25jeUJ6ZDJsMFkyaEVZWE5vWW05aGNtUWdiV1YwYUc5a0xpQXFMMXh1SUNCemQybDBZMmhFWVhOb1ltOWhjbVEvS0Z4dUlDQWdJR1JoYzJoaWIyRnlaRWxrT2lCemRISnBibWNzWEc0Z0lDQWdaM1ZsYzNSVWIydGxiajg2SUhOMGNtbHVaMXh1SUNBcE9pQlFjbTl0YVhObFBIVnVhMjV2ZDI0K08xeHVmVnh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVWdFltVmtWbWxsZDA5d2RHbHZibk1nZTF4dUlDQnphRzkzVkdsdFpVWnBiSFJsY2o4NklHSnZiMnhsWVc0N1hHNGdJSE5vYjNkUmRXVnllVWx1Y0hWMFB6b2dZbTl2YkdWaGJqdGNiaUFnYzJodmQwWnBiSFJsY2tKaGNqODZJR0p2YjJ4bFlXNDdYRzRnSUdocFpHVlFZVzVsYkZScGRHeGxjejg2SUdKdmIyeGxZVzQ3WEc0Z0lIUnBiV1ZTWVc1blpUODZJRVJoYzJoaWIyRnlaRlJwYldWU1lXNW5aVHRjYm4xY2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkZiV0psWkZWeWJFOXdkR2x2Ym5NZ2UxeHVJQ0F2S2lvZ1NHOXpkQ0IzYVhSb2IzVjBJSEJ5YjNSdlkyOXNMQ0JsTG1jdUlGd2ljSFJ3TG1odmMzUmNJaTRnS2k5Y2JpQWdhRzl6ZERvZ2MzUnlhVzVuTzF4dUlDQXZLaW9nUW1GelpTQndZWFJvTENCbExtY3VJRndpYTJsaVlXNWhYQ0l1SUVSbFptRjFiSFJ6SUhSdklIUm9aU0IwYjI5c0lHUmxabUYxYkhRdUlDb3ZYRzRnSUdKaGMyVlFZWFJvUHpvZ2MzUnlhVzVuTzF4dUlDQXZLaW9nU1c1cGRHbGhiQ0JrWVhOb1ltOWhjbVFnYVdRZ2RHOGdjbVZ1WkdWeUxpQXFMMXh1SUNCa1lYTm9ZbTloY21SSlpEb2djM1J5YVc1bk8xeHVJQ0F2S2lvZ1VHRnlaVzUwSUc5eWFXZHBiaUJoYkd4dmQyeHBjM1FnS0dOdmJXMWhMWE5sY0dGeVlYUmxaQ2tnY0dGemMyVmtJSFJ2SUhSb1pTQndiSFZuYVc0dUlDb3ZYRzRnSUhCaGNtVnVkRTl5YVdkcGJqb2djM1J5YVc1bk8xeHVJQ0F2S2lvZ1QzQjBhVzl1WVd3Z2RtbGxkeUJ2ZG1WeWNtbGtaWE11SUNvdlhHNGdJSFpwWlhjL09pQkZiV0psWkZacFpYZFBjSFJwYjI1ek8xeHVmVnh1WEc1bGVIQnZjblFnZEhsd1pTQkNhVlJ2YjJ3Z1BTQmNJbXRwWW1GdVlWd2lJSHdnWENKemRYQmxjbk5sZEZ3aU8xeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRVJoYzJoaWIyRnlaRVZ0WW1Wa1VHeDFaMmx1UkdWelkzSnBjSFJ2Y2lCN1hHNGdJQzhxS2lCUWJIVm5hVzRnYVdRZ0tHVXVaeTRnWENKdmNtZEVZWE5vWW05aGNtUkZiV0psWkZ3aUtTNGdLaTljYmlBZ2FXUTZJSE4wY21sdVp6dGNiaUFnTHlvcUlFdHBZbUZ1WVNCaGNIQnNhV05oZEdsdmJpQnBaQ0FvWlM1bkxpQmNJbTl5WjE5a1lYTm9ZbTloY21SZlpXMWlaV1JjSWlrdUlDb3ZYRzRnSUdGd2NFbGtPaUJ6ZEhKcGJtYzdYRzRnSUM4cUtpQlFiSFZuYVc0Z2RtVnljMmx2Ymk0Z0tpOWNiaUFnZG1WeWMybHZiam9nYzNSeWFXNW5PMXh1SUNBdktpb2dWR0Z5WjJWMElFSkpJSFJ2YjJ3Z2RtVnljMmx2YmlCMGFHbHpJSEJzZFdkcGJpQnBjeUJpZFdsc2RDQmhaMkZwYm5OMExpQXFMMXh1SUNCMFlYSm5aWFJXWlhKemFXOXVPaUJ6ZEhKcGJtYzdYRzRnSUM4cUtpQkNTU0IwYjI5c0lIUm9hWE1nY0d4MVoybHVJSFJoY21kbGRITXVJQ292WEc0Z0lIUnZiMnc2SUVKcFZHOXZiRHRjYm4xY2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQlFiSFZuYVc1SmJuTjBZV3hzVDNCMGFXOXVjeUI3WEc0Z0lDOHFLaUJFYVhKbFkzUnZjbmtnZEc4Z2JXRjBaWEpwWVd4cGVtVWdkR2hsSUhCc2RXZHBiaUJwYm5SdkxpQXFMMXh1SUNCMFlYSm5aWFJRWVhSb09pQnpkSEpwYm1jN1hHNGdJQzhxS2lCUGRtVnljbWxrWlhNZ1lHUmxjMk55YVhCMGIzSXVkR0Z5WjJWMFZtVnljMmx2Ym1BZ2QyaGxiaUJ3Y205MmFXUmxaQzRnS2k5Y2JpQWdkR0Z5WjJWMFZtVnljMmx2Ymo4NklITjBjbWx1Wnp0Y2JpQWdMeW9xSUVGMGRHVnRjSFFnZEc4Z1luVnBiR1FnZEdobElIQnNkV2RwYmlCaFpuUmxjaUIzY21sMGFXNW5JR1pwYkdWeklDaGlaWE4wTFdWbVptOXlkQ2t1SUNvdlhHNGdJR0oxYVd4a1B6b2dZbTl2YkdWaGJqdGNiaUFnTHlvcUlFOTJaWEozY21sMFpTQmhiaUJsZUdsemRHbHVaeUJ3YkhWbmFXNGdaR2x5WldOMGIzSjVMaUFxTDF4dUlDQnZkbVZ5ZDNKcGRHVS9PaUJpYjI5c1pXRnVPMXh1SUNBdktpb2dUM0IwYVc5dVlXd2dZMjl1ZEdWNGRDQm1iM0lnZEhKaFkybHVaeTlzYjJkbmFXNW5MaUFxTDF4dUlDQmpiMjUwWlhoMFB6b2dUV0Y1WW1WRGIyNTBaWGgwZFdGc1FYSm5QR0Z1ZVQ0N1hHNTlYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnVUd4MVoybHVTVzV6ZEdGc2JGSmxjM1ZzZENCN1hHNGdJQzhxS2lCQlluTnZiSFYwWlNCd1lYUm9JSFJ2SUhSb1pTQnRZWFJsY21saGJHbDZaV1FnY0d4MVoybHVJR1JwY21WamRHOXllUzRnS2k5Y2JpQWdjR3gxWjJsdVVHRjBhRG9nYzNSeWFXNW5PMXh1SUNBdktpb2dSR1Z6WTNKcGNIUnZjaUIxYzJWa0lHWnZjaUIwYUdseklHbHVjM1JoYkd3dUlDb3ZYRzRnSUdSbGMyTnlhWEIwYjNJNklFUmhjMmhpYjJGeVpFVnRZbVZrVUd4MVoybHVSR1Z6WTNKcGNIUnZjanRjYmlBZ0x5b3FJRkpsYkdGMGFYWmxJR1pwYkdVZ2NHRjBhSE1nZDNKcGRIUmxiaTRnS2k5Y2JpQWdabWxzWlhNNklITjBjbWx1WjF0ZE8xeHVJQ0F2S2lvZ1YyaGxkR2hsY2lCaElHSjFhV3hrSUhkaGN5QmhkSFJsYlhCMFpXUWdZVzVrSUhKbGNHOXlkR1ZrSUhOMVkyTmxjM011SUNvdlhHNGdJR0oxYVd4ME9pQmliMjlzWldGdU8xeHVJQ0F2S2lvZ1EyRndkSFZ5WldRZ1luVnBiR1FnYjNWMGNIVjBJQ2h6ZEdSdmRYUXZjM1JrWlhKeUtTQjNhR1Z1SUdCaWRXbHNaR0FnZDJGeklISmxjWFZsYzNSbFpDNGdLaTljYmlBZ1luVnBiR1JQZFhSd2RYUS9PaUJ6ZEhKcGJtYzdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EyOXVkSEpoWTNRZ1ltOTBhQ0JDU1NCa1lYTm9ZbTloY21RZ1pXMWlaV1FnY0d4MVoybHVjeUJwYlhCc1pXMWxiblF1SUVKdmRHZ2dTMmxpWVc1aElHRnVaRnh1SUNvZ1UzVndaWEp6WlhRZ2NHeDFaMmx1Y3lCbGVIQnZjMlVnZEdobElHVjRZV04wSUhOaGJXVWdRVkJKSUhOMWNtWmhZMlV1WEc0Z0tpOWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdSR0Z6YUdKdllYSmtSVzFpWldSUWJIVm5hVzRnZTF4dUlDQnlaV0ZrYjI1c2VTQmtaWE5qY21sd2RHOXlPaUJFWVhOb1ltOWhjbVJGYldKbFpGQnNkV2RwYmtSbGMyTnlhWEIwYjNJN1hHNGdJQzhxS2lCQ2RXbHNaQ0IwYUdVZ1Fra3RkRzl2YkNCdFlXNXBabVZ6ZENBb1pTNW5MaUJyYVdKaGJtRXVhbk52YmlrZ1ptOXlJR0VnZEdGeVoyVjBJSFpsY25OcGIyNHVJQ292WEc0Z0lHMWhibWxtWlhOMEtIUmhjbWRsZEZabGNuTnBiMjQvT2lCemRISnBibWNwT2lCU1pXTnZjbVE4YzNSeWFXNW5MQ0IxYm10dWIzZHVQanRjYmlBZ0x5b3FJRUoxYVd4a0lIUm9aU0J6ZEdGaWJHVWdhV1p5WVcxbElHVnRZbVZrSUZWU1RDNGdLaTljYmlBZ1luVnBiR1JGYldKbFpGVnliQ2h2Y0hScGIyNXpPaUJGYldKbFpGVnliRTl3ZEdsdmJuTXBPaUJ6ZEhKcGJtYzdYRzRnSUM4cUtpQkRjbVZoZEdVZ1lTQnpkMmwwWTJndFpHRnphR0p2WVhKa0lHMWxjM05oWjJVZ2IySnFaV04wTGlBcUwxeHVJQ0JqY21WaGRHVlRkMmwwWTJoRVlYTm9ZbTloY21STlpYTnpZV2RsS0Z4dUlDQWdJSEJoZVd4dllXUTZJRk4zYVhSamFFUmhjMmhpYjJGeVpGQmhlV3h2WVdSY2JpQWdLVG9nVTNkcGRHTm9SR0Z6YUdKdllYSmtUV1Z6YzJGblpUdGNiaUFnTHlvcUlGTmxibVFnWVNCemQybDBZMmd0WkdGemFHSnZZWEprSUcxbGMzTmhaMlVnZEc4Z2RHaGxJR1Z0WW1Wa1pHVmtJSEJzZFdkcGJpQjJhV0VnWUhCdmMzUk5aWE56WVdkbFlDNGdLaTljYmlBZ2MyVnVaRk4zYVhSamFFUmhjMmhpYjJGeVpFMWxjM05oWjJVb1hHNGdJQ0FnZEdGeVoyVjBPaUJGYldKbFpFMWxjM05oWjJWVVlYSm5aWFFzWEc0Z0lDQWdjR0Y1Ykc5aFpEb2dVM2RwZEdOb1JHRnphR0p2WVhKa1VHRjViRzloWkN4Y2JpQWdJQ0IwWVhKblpYUlBjbWxuYVc0NklITjBjbWx1WjF4dUlDQXBPaUIyYjJsa08xeHVJQ0F2S2lvZ1RXRjBaWEpwWVd4cGVtVWdLR0Z1WkNCdmNIUnBiMjVoYkd4NUlHSjFhV3hrS1NCMGFHVWdjR3gxWjJsdUlHbHVkRzhnWVNCMFlYSm5aWFFnWkdseVpXTjBiM0o1TGlBcUwxeHVJQ0JwYm5OMFlXeHNLRzl3ZEdsdmJuTTZJRkJzZFdkcGJrbHVjM1JoYkd4UGNIUnBiMjV6S1RvZ1VISnZiV2x6WlR4UWJIVm5hVzVKYm5OMFlXeHNVbVZ6ZFd4MFBqdGNibjFjYmx4dUx5b3FYRzRnS2lCVWVYQmxJR2QxWVhKa0lHWnZjaUIwYUdVZ2MzZHBkR05vTFdSaGMyaGliMkZ5WkNCdFpYTnpZV2RsSUhKbFkyVnBkbVZrSUdKNUlIUm9aU0JsYldKbFpHUmxaQ0J3YkhWbmFXNHVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMxTjNhWFJqYUVSaGMyaGliMkZ5WkUxbGMzTmhaMlVvWEc0Z0lHUmhkR0U2SUhWdWEyNXZkMjVjYmlrNklHUmhkR0VnYVhNZ1UzZHBkR05vUkdGemFHSnZZWEprVFdWemMyRm5aU0I3WEc0Z0lHbG1JQ2doWkdGMFlTQjhmQ0IwZVhCbGIyWWdaR0YwWVNBaFBUMGdYQ0p2WW1wbFkzUmNJaWtnZTF4dUlDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdmVnh1SUNCamIyNXpkQ0J0YzJjZ1BTQmtZWFJoSUdGeklGQmhjblJwWVd3OFUzZHBkR05vUkdGemFHSnZZWEprVFdWemMyRm5aVDQ3WEc0Z0lISmxkSFZ5YmlBb1hHNGdJQ0FnYlhObkxuUjVjR1VnUFQwOUlFVk5Ra1ZFWDAxRlUxTkJSMFZmVkZsUVJTNVRWMGxVUTBnZ0ppWmNiaUFnSUNCMGVYQmxiMllnYlhObkxtUmhjMmhpYjJGeVpFbGtJRDA5UFNCY0luTjBjbWx1WjF3aUlDWW1YRzRnSUNBZ2JYTm5MbVJoYzJoaWIyRnlaRWxrTG14bGJtZDBhQ0ErSURCY2JpQWdLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlVlWEJsSUdkMVlYSmtJR1p2Y2lCd1lYSmxiblF0WW05MWJtUWdiV1Z6YzJGblpYTWdaVzFwZEhSbFpDQmllU0IwYUdVZ1pXMWlaV1JrWldRZ2NHeDFaMmx1TGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhWE5GYldKbFpGQmhjbVZ1ZEUxbGMzTmhaMlVvWEc0Z0lHUmhkR0U2SUhWdWEyNXZkMjVjYmlrNklHUmhkR0VnYVhNZ1JXMWlaV1JRWVhKbGJuUk5aWE56WVdkbElIdGNiaUFnYVdZZ0tDRmtZWFJoSUh4OElIUjVjR1Z2WmlCa1lYUmhJQ0U5UFNCY0ltOWlhbVZqZEZ3aUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNCOVhHNGdJR052Ym5OMElHMXpaeUE5SUdSaGRHRWdZWE1nZXlCMGVYQmxQem9nYzNSeWFXNW5JSDA3WEc0Z0lISmxkSFZ5YmlBb1hHNGdJQ0FnYlhObkxuUjVjR1VnUFQwOUlFVk5Ra1ZFWDAxRlUxTkJSMFZmVkZsUVJTNVNSVUZFV1NCOGZGeHVJQ0FnSUcxelp5NTBlWEJsSUQwOVBTQkZUVUpGUkY5TlJWTlRRVWRGWDFSWlVFVXVVa1ZPUkVWU1JVUWdmSHhjYmlBZ0lDQnRjMmN1ZEhsd1pTQTlQVDBnUlUxQ1JVUmZUVVZUVTBGSFJWOVVXVkJGTGtWU1VrOVNYRzRnSUNrN1hHNTlYRzVjYmk4cUtseHVJQ29nUW5WcGJHUWdZU0J6ZDJsMFkyZ3RaR0Z6YUdKdllYSmtJRzFsYzNOaFoyVWdabkp2YlNCaElIQmhlV3h2WVdRZ0tITm9ZWEpsWkNCaWVTQmliM1JvSUhCc2RXZHBibk1wTGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZM0psWVhSbFUzZHBkR05vUkdGemFHSnZZWEprVFdWemMyRm5aU2hjYmlBZ2NHRjViRzloWkRvZ1UzZHBkR05vUkdGemFHSnZZWEprVUdGNWJHOWhaRnh1S1RvZ1UzZHBkR05vUkdGemFHSnZZWEprVFdWemMyRm5aU0I3WEc0Z0lISmxkSFZ5YmlCN1hHNGdJQ0FnZEhsd1pUb2dSVTFDUlVSZlRVVlRVMEZIUlY5VVdWQkZMbE5YU1ZSRFNDeGNiaUFnSUNCa1lYTm9ZbTloY21SSlpEb2djR0Y1Ykc5aFpDNWtZWE5vWW05aGNtUkpaQ3hjYmlBZ0lDQjBhVzFsVW1GdVoyVTZJSEJoZVd4dllXUXVkR2x0WlZKaGJtZGxMRnh1SUNBZ0lIRjFaWEo1T2lCd1lYbHNiMkZrTG5GMVpYSjVMRnh1SUNBZ0lHWnBiSFJsY25NNklIQmhlV3h2WVdRdVptbHNkR1Z5Y3l4Y2JpQWdJQ0JuZFdWemRGUnZhMlZ1T2lCd1lYbHNiMkZrTG1kMVpYTjBWRzlyWlc0c1hHNGdJSDA3WEc1OVhHNWNiaThxS2x4dUlDb2dVMlZ1WkNCaElITjNhWFJqYUMxa1lYTm9ZbTloY21RZ2JXVnpjMkZuWlNCMGJ5QmhJRVJQVFMxbWNtVmxJSFJoY21kbGRDNWNiaUFxWEc0Z0tpQkpaaUIwYUdVZ2RHRnlaMlYwSUhOMWNIQnZjblJ6SUdCd2IzTjBUV1Z6YzJGblpXQWdLRXRwWW1GdVlTa3NJSFJvWlNCdFpYTnpZV2RsSUdseklIQnZjM1JsWkZ4dUlDb2daR2x5WldOMGJIa3VJRWxtSUhSb1pTQjBZWEpuWlhRZ2MzVndjRzl5ZEhNZ1lITjNhWFJqYUVSaGMyaGliMkZ5WkdBZ0tGTjFjR1Z5YzJWMElGTkVTeUJvWVc1a2JHVXBMRnh1SUNvZ2RHaGxJRk5FU3lCdFpYUm9iMlFnYVhNZ2FXNTJiMnRsWkNCcGJuTjBaV0ZrTGlCQ2IzUm9JSEJoZEdoeklIVnpaU0IwYUdVZ2MyRnRaU0J3WVhsc2IyRmtJSE5vWVhCbExseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYzJWdVpGTjNhWFJqYUVSaGMyaGliMkZ5WkUxbGMzTmhaMlVvWEc0Z0lIUmhjbWRsZERvZ1JXMWlaV1JOWlhOellXZGxWR0Z5WjJWMExGeHVJQ0J3WVhsc2IyRmtPaUJUZDJsMFkyaEVZWE5vWW05aGNtUlFZWGxzYjJGa0xGeHVJQ0IwWVhKblpYUlBjbWxuYVc0NklITjBjbWx1WjF4dUtUb2dkbTlwWkNCN1hHNGdJR2xtSUNoMGVYQmxiMllnZEdGeVoyVjBMbk4zYVhSamFFUmhjMmhpYjJGeVpDQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQjdYRzRnSUNBZ2RtOXBaQ0IwWVhKblpYUXVjM2RwZEdOb1JHRnphR0p2WVhKa0tIQmhlV3h2WVdRdVpHRnphR0p2WVhKa1NXUXNJSEJoZVd4dllXUXVaM1ZsYzNSVWIydGxiaWs3WEc0Z0lDQWdjbVYwZFhKdU8xeHVJQ0I5WEc0Z0lHbG1JQ2gwZVhCbGIyWWdkR0Z5WjJWMExuQnZjM1JOWlhOellXZGxJRDA5UFNCY0ltWjFibU4wYVc5dVhDSXBJSHRjYmlBZ0lDQjBZWEpuWlhRdWNHOXpkRTFsYzNOaFoyVW9ZM0psWVhSbFUzZHBkR05vUkdGemFHSnZZWEprVFdWemMyRm5aU2h3WVhsc2IyRmtLU3dnZEdGeVoyVjBUM0pwWjJsdUtUdGNiaUFnSUNCeVpYUjFjbTQ3WEc0Z0lIMWNiaUFnZEdoeWIzY2dibVYzSUZWdWMzVndjRzl5ZEdWa1JYSnliM0lvWEc0Z0lDQWdYQ0pGYldKbFpFMWxjM05oWjJWVVlYSm5aWFFnYlhWemRDQndjbTkyYVdSbElHVnBkR2hsY2lCd2IzTjBUV1Z6YzJGblpTQnZjaUJ6ZDJsMFkyaEVZWE5vWW05aGNtUmNJbHh1SUNBcE8xeHVmVnh1SWwxOSJdfQ==
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
/**
|
|
18
|
+
* @module integrations/plugins
|
|
19
|
+
* @summary BI dashboard embed plugin surface.
|
|
20
|
+
* @description Aggregates the shared DOM-free contract and both BI tool
|
|
21
|
+
* plugins (Kibana + Superset). Both plugins implement the exact same
|
|
22
|
+
* `DashboardEmbedPlugin` API.
|
|
23
|
+
*
|
|
24
|
+
* - **Kibana:** generated plugin source + installer (writes files, optional build).
|
|
25
|
+
* - **Superset:** patch-and-build strategy (patches Superset's internal source,
|
|
26
|
+
* builds SDK + frontend + optionally Docker image).
|
|
27
|
+
*
|
|
28
|
+
* Both are org-agnostic: there is never space switching. The current BI space
|
|
29
|
+
* comes from the request/session/proxy context, not from the plugin.
|
|
30
|
+
*/
|
|
31
|
+
__exportStar(require("./contract.cjs"), exports);
|
|
32
|
+
__exportStar(require("./kibana/index.cjs"), exports);
|
|
33
|
+
__exportStar(require("./superset/index.cjs"), exports);
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGx1Z2lucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsOEJBQTJCO0FBQzNCLGtDQUF5QjtBQUN6QixvQ0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL3BsdWdpbnNcbiAqIEBzdW1tYXJ5IEJJIGRhc2hib2FyZCBlbWJlZCBwbHVnaW4gc3VyZmFjZS5cbiAqIEBkZXNjcmlwdGlvbiBBZ2dyZWdhdGVzIHRoZSBzaGFyZWQgRE9NLWZyZWUgY29udHJhY3QgYW5kIGJvdGggQkkgdG9vbFxuICogcGx1Z2lucyAoS2liYW5hICsgU3VwZXJzZXQpLiBCb3RoIHBsdWdpbnMgaW1wbGVtZW50IHRoZSBleGFjdCBzYW1lXG4gKiBgRGFzaGJvYXJkRW1iZWRQbHVnaW5gIEFQSS5cbiAqXG4gKiAtICoqS2liYW5hOioqIGdlbmVyYXRlZCBwbHVnaW4gc291cmNlICsgaW5zdGFsbGVyICh3cml0ZXMgZmlsZXMsIG9wdGlvbmFsIGJ1aWxkKS5cbiAqIC0gKipTdXBlcnNldDoqKiBwYXRjaC1hbmQtYnVpbGQgc3RyYXRlZ3kgKHBhdGNoZXMgU3VwZXJzZXQncyBpbnRlcm5hbCBzb3VyY2UsXG4gKiAgIGJ1aWxkcyBTREsgKyBmcm9udGVuZCArIG9wdGlvbmFsbHkgRG9ja2VyIGltYWdlKS5cbiAqXG4gKiBCb3RoIGFyZSBvcmctYWdub3N0aWM6IHRoZXJlIGlzIG5ldmVyIHNwYWNlIHN3aXRjaGluZy4gVGhlIGN1cnJlbnQgQkkgc3BhY2VcbiAqIGNvbWVzIGZyb20gdGhlIHJlcXVlc3Qvc2Vzc2lvbi9wcm94eSBjb250ZXh0LCBub3QgZnJvbSB0aGUgcGx1Z2luLlxuICovXG5leHBvcnQgKiBmcm9tIFwiLi9jb250cmFjdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4va2liYW5hXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdXBlcnNldFwiO1xuIl19
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILGdEQUE4QjtBQUM5QixvREFBa0M7QUFDbEMsc0RBQW9DO0FBQ3BDLHN4Q0FBc3hDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9wbHVnaW5zXG4gKiBAc3VtbWFyeSBCSSBkYXNoYm9hcmQgZW1iZWQgcGx1Z2luIHN1cmZhY2UuXG4gKiBAZGVzY3JpcHRpb24gQWdncmVnYXRlcyB0aGUgc2hhcmVkIERPTS1mcmVlIGNvbnRyYWN0IGFuZCBib3RoIEJJIHRvb2xcbiAqIHBsdWdpbnMgKEtpYmFuYSArIFN1cGVyc2V0KS4gQm90aCBwbHVnaW5zIGltcGxlbWVudCB0aGUgZXhhY3Qgc2FtZVxuICogYERhc2hib2FyZEVtYmVkUGx1Z2luYCBBUEkuXG4gKlxuICogLSAqKktpYmFuYToqKiBnZW5lcmF0ZWQgcGx1Z2luIHNvdXJjZSArIGluc3RhbGxlciAod3JpdGVzIGZpbGVzLCBvcHRpb25hbCBidWlsZCkuXG4gKiAtICoqU3VwZXJzZXQ6KiogcGF0Y2gtYW5kLWJ1aWxkIHN0cmF0ZWd5IChwYXRjaGVzIFN1cGVyc2V0J3MgaW50ZXJuYWwgc291cmNlLFxuICogICBidWlsZHMgU0RLICsgZnJvbnRlbmQgKyBvcHRpb25hbGx5IERvY2tlciBpbWFnZSkuXG4gKlxuICogQm90aCBhcmUgb3JnLWFnbm9zdGljOiB0aGVyZSBpcyBuZXZlciBzcGFjZSBzd2l0Y2hpbmcuIFRoZSBjdXJyZW50IEJJIHNwYWNlXG4gKiBjb21lcyBmcm9tIHRoZSByZXF1ZXN0L3Nlc3Npb24vcHJveHkgY29udGV4dCwgbm90IGZyb20gdGhlIHBsdWdpbi5cbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vY29udHJhY3QuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2tpYmFuYS9pbmRleC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3VwZXJzZXQvaW5kZXguanNcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNWtaWGd1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOXpjbU12Y0d4MVoybHVjeTlwYm1SbGVDNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVRzN096czdPenM3T3pzN096dEhRV0ZITzBGQlEwZ3NPRUpCUVRKQ08wRkJRek5DTEd0RFFVRjVRanRCUVVONlFpeHZRMEZCTWtJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFQnRiMlIxYkdVZ2FXNTBaV2R5WVhScGIyNXpMM0JzZFdkcGJuTmNiaUFxSUVCemRXMXRZWEo1SUVKSklHUmhjMmhpYjJGeVpDQmxiV0psWkNCd2JIVm5hVzRnYzNWeVptRmpaUzVjYmlBcUlFQmtaWE5qY21sd2RHbHZiaUJCWjJkeVpXZGhkR1Z6SUhSb1pTQnphR0Z5WldRZ1JFOU5MV1p5WldVZ1kyOXVkSEpoWTNRZ1lXNWtJR0p2ZEdnZ1Fra2dkRzl2YkZ4dUlDb2djR3gxWjJsdWN5QW9TMmxpWVc1aElDc2dVM1Z3WlhKelpYUXBMaUJDYjNSb0lIQnNkV2RwYm5NZ2FXMXdiR1Z0Wlc1MElIUm9aU0JsZUdGamRDQnpZVzFsWEc0Z0tpQmdSR0Z6YUdKdllYSmtSVzFpWldSUWJIVm5hVzVnSUVGUVNTNWNiaUFxWEc0Z0tpQXRJQ29xUzJsaVlXNWhPaW9xSUdkbGJtVnlZWFJsWkNCd2JIVm5hVzRnYzI5MWNtTmxJQ3NnYVc1emRHRnNiR1Z5SUNoM2NtbDBaWE1nWm1sc1pYTXNJRzl3ZEdsdmJtRnNJR0oxYVd4a0tTNWNiaUFxSUMwZ0tpcFRkWEJsY25ObGREb3FLaUJ3WVhSamFDMWhibVF0WW5WcGJHUWdjM1J5WVhSbFoza2dLSEJoZEdOb1pYTWdVM1Z3WlhKelpYUW5jeUJwYm5SbGNtNWhiQ0J6YjNWeVkyVXNYRzRnS2lBZ0lHSjFhV3hrY3lCVFJFc2dLeUJtY205dWRHVnVaQ0FySUc5d2RHbHZibUZzYkhrZ1JHOWphMlZ5SUdsdFlXZGxLUzVjYmlBcVhHNGdLaUJDYjNSb0lHRnlaU0J2Y21jdFlXZHViM04wYVdNNklIUm9aWEpsSUdseklHNWxkbVZ5SUhOd1lXTmxJSE4zYVhSamFHbHVaeTRnVkdobElHTjFjbkpsYm5RZ1Fra2djM0JoWTJWY2JpQXFJR052YldWeklHWnliMjBnZEdobElISmxjWFZsYzNRdmMyVnpjMmx2Ymk5d2NtOTRlU0JqYjI1MFpYaDBMQ0J1YjNRZ1puSnZiU0IwYUdVZ2NHeDFaMmx1TGx4dUlDb3ZYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTlqYjI1MGNtRmpkRndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmEybGlZVzVoWENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOXpkWEJsY25ObGRGd2lPMXh1SWwxOSJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildKibanaEmbedUrl = void 0;
|
|
4
|
+
exports.sendKibanaSwitchDashboardMessage = sendKibanaSwitchDashboardMessage;
|
|
5
|
+
/**
|
|
6
|
+
* @module integrations/plugins/kibana/host
|
|
7
|
+
* @summary Angular host-side helpers for the Kibana embed plugin.
|
|
8
|
+
* @description DOM-free convenience helpers the Angular host uses to build the
|
|
9
|
+
* stable iframe URL and send switch-dashboard messages to the embedded plugin.
|
|
10
|
+
*/
|
|
11
|
+
const contract_js_1 = require("./../contract.cjs");
|
|
12
|
+
const installer_js_1 = require("./installer.cjs");
|
|
13
|
+
Object.defineProperty(exports, "buildKibanaEmbedUrl", { enumerable: true, get: function () { return installer_js_1.buildKibanaEmbedUrl; } });
|
|
14
|
+
/**
|
|
15
|
+
* Send a switch-dashboard message to the embedded Kibana plugin.
|
|
16
|
+
*
|
|
17
|
+
* The Angular host passes `iframe.contentWindow` (which satisfies
|
|
18
|
+
* `EmbedMessageTarget`) and the Kibana origin as `targetOrigin`.
|
|
19
|
+
*/
|
|
20
|
+
function sendKibanaSwitchDashboardMessage(target, payload, targetOrigin) {
|
|
21
|
+
(0, contract_js_1.sendSwitchDashboardMessage)(target, payload, targetOrigin);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW5zL2tpYmFuYS9ob3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBQ0gsT0FBTyxFQUNMLDBCQUEwQixJQUFJLFVBQVUsR0FJekMseUJBQW9CO0FBQ3JCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx1QkFBb0I7QUFFbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUM7QUFFL0I7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLE1BQTBCLEVBQzFCLE9BQStCLEVBQy9CLFlBQW9CO0lBRXBCLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL3BsdWdpbnMva2liYW5hL2hvc3RcbiAqIEBzdW1tYXJ5IEFuZ3VsYXIgaG9zdC1zaWRlIGhlbHBlcnMgZm9yIHRoZSBLaWJhbmEgZW1iZWQgcGx1Z2luLlxuICogQGRlc2NyaXB0aW9uIERPTS1mcmVlIGNvbnZlbmllbmNlIGhlbHBlcnMgdGhlIEFuZ3VsYXIgaG9zdCB1c2VzIHRvIGJ1aWxkIHRoZVxuICogc3RhYmxlIGlmcmFtZSBVUkwgYW5kIHNlbmQgc3dpdGNoLWRhc2hib2FyZCBtZXNzYWdlcyB0byB0aGUgZW1iZWRkZWQgcGx1Z2luLlxuICovXG5pbXBvcnQge1xuICBzZW5kU3dpdGNoRGFzaGJvYXJkTWVzc2FnZSBhcyBzZW5kU2hhcmVkLFxuICB0eXBlIEVtYmVkTWVzc2FnZVRhcmdldCxcbiAgdHlwZSBFbWJlZFVybE9wdGlvbnMsXG4gIHR5cGUgU3dpdGNoRGFzaGJvYXJkUGF5bG9hZCxcbn0gZnJvbSBcIi4uL2NvbnRyYWN0XCI7XG5pbXBvcnQgeyBidWlsZEtpYmFuYUVtYmVkVXJsIH0gZnJvbSBcIi4vaW5zdGFsbGVyXCI7XG5cbmV4cG9ydCB7IGJ1aWxkS2liYW5hRW1iZWRVcmwgfTtcblxuLyoqXG4gKiBTZW5kIGEgc3dpdGNoLWRhc2hib2FyZCBtZXNzYWdlIHRvIHRoZSBlbWJlZGRlZCBLaWJhbmEgcGx1Z2luLlxuICpcbiAqIFRoZSBBbmd1bGFyIGhvc3QgcGFzc2VzIGBpZnJhbWUuY29udGVudFdpbmRvd2AgKHdoaWNoIHNhdGlzZmllc1xuICogYEVtYmVkTWVzc2FnZVRhcmdldGApIGFuZCB0aGUgS2liYW5hIG9yaWdpbiBhcyBgdGFyZ2V0T3JpZ2luYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbmRLaWJhbmFTd2l0Y2hEYXNoYm9hcmRNZXNzYWdlKFxuICB0YXJnZXQ6IEVtYmVkTWVzc2FnZVRhcmdldCxcbiAgcGF5bG9hZDogU3dpdGNoRGFzaGJvYXJkUGF5bG9hZCxcbiAgdGFyZ2V0T3JpZ2luOiBzdHJpbmdcbik6IHZvaWQge1xuICBzZW5kU2hhcmVkKHRhcmdldCwgcGF5bG9hZCwgdGFyZ2V0T3JpZ2luKTtcbn1cblxuLyoqIFJlLWV4cG9ydCB0aGUgVVJMIG9wdGlvbnMgdHlwZSBmb3IgaG9zdCBjb252ZW5pZW5jZS4gKi9cbmV4cG9ydCB0eXBlIHsgRW1iZWRVcmxPcHRpb25zIH07XG4iXX0=
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhvc3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZUEsNEVBRUM7QUFqQkQ7Ozs7O0dBS0c7QUFDSCxrREFBNkU7QUFDN0UsaURBQXFEO0FBQzVDLG9HQURBLGtDQUFtQixPQUNBO0FBQzVCOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZ0NBQWdDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZO0lBQzFFLElBQUEsd0NBQVUsRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFDRCxrOURBQWs5RCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvcGx1Z2lucy9raWJhbmEvaG9zdFxuICogQHN1bW1hcnkgQW5ndWxhciBob3N0LXNpZGUgaGVscGVycyBmb3IgdGhlIEtpYmFuYSBlbWJlZCBwbHVnaW4uXG4gKiBAZGVzY3JpcHRpb24gRE9NLWZyZWUgY29udmVuaWVuY2UgaGVscGVycyB0aGUgQW5ndWxhciBob3N0IHVzZXMgdG8gYnVpbGQgdGhlXG4gKiBzdGFibGUgaWZyYW1lIFVSTCBhbmQgc2VuZCBzd2l0Y2gtZGFzaGJvYXJkIG1lc3NhZ2VzIHRvIHRoZSBlbWJlZGRlZCBwbHVnaW4uXG4gKi9cbmltcG9ydCB7IHNlbmRTd2l0Y2hEYXNoYm9hcmRNZXNzYWdlIGFzIHNlbmRTaGFyZWQsIH0gZnJvbSBcIi4vLi4vY29udHJhY3QuanNcIjtcbmltcG9ydCB7IGJ1aWxkS2liYW5hRW1iZWRVcmwgfSBmcm9tIFwiLi9pbnN0YWxsZXIuanNcIjtcbmV4cG9ydCB7IGJ1aWxkS2liYW5hRW1iZWRVcmwgfTtcbi8qKlxuICogU2VuZCBhIHN3aXRjaC1kYXNoYm9hcmQgbWVzc2FnZSB0byB0aGUgZW1iZWRkZWQgS2liYW5hIHBsdWdpbi5cbiAqXG4gKiBUaGUgQW5ndWxhciBob3N0IHBhc3NlcyBgaWZyYW1lLmNvbnRlbnRXaW5kb3dgICh3aGljaCBzYXRpc2ZpZXNcbiAqIGBFbWJlZE1lc3NhZ2VUYXJnZXRgKSBhbmQgdGhlIEtpYmFuYSBvcmlnaW4gYXMgYHRhcmdldE9yaWdpbmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kS2liYW5hU3dpdGNoRGFzaGJvYXJkTWVzc2FnZSh0YXJnZXQsIHBheWxvYWQsIHRhcmdldE9yaWdpbikge1xuICAgIHNlbmRTaGFyZWQodGFyZ2V0LCBwYXlsb2FkLCB0YXJnZXRPcmlnaW4pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYUc5emRDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwzTnlZeTl3YkhWbmFXNXpMMnRwWW1GdVlTOW9iM04wTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJPenM3T3p0SFFVdEhPMEZCUTBnc1QwRkJUeXhGUVVOTUxEQkNRVUV3UWl4SlFVRkpMRlZCUVZVc1IwRkpla01zZVVKQlFXOUNPMEZCUTNKQ0xFOUJRVThzUlVGQlJTeHRRa0ZCYlVJc1JVRkJSU3gxUWtGQmIwSTdRVUZGYkVRc1QwRkJUeXhGUVVGRkxHMUNRVUZ0UWl4RlFVRkZMRU5CUVVNN1FVRkZMMEk3T3pzN08wZEJTMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNaME5CUVdkRExFTkJRemxETEUxQlFUQkNMRVZCUXpGQ0xFOUJRU3RDTEVWQlF5OUNMRmxCUVc5Q08wbEJSWEJDTEZWQlFWVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1QwRkJUeXhGUVVGRkxGbEJRVmtzUTBGQlF5eERRVUZETzBGQlF6VkRMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFQnRiMlIxYkdVZ2FXNTBaV2R5WVhScGIyNXpMM0JzZFdkcGJuTXZhMmxpWVc1aEwyaHZjM1JjYmlBcUlFQnpkVzF0WVhKNUlFRnVaM1ZzWVhJZ2FHOXpkQzF6YVdSbElHaGxiSEJsY25NZ1ptOXlJSFJvWlNCTGFXSmhibUVnWlcxaVpXUWdjR3gxWjJsdUxseHVJQ29nUUdSbGMyTnlhWEIwYVc5dUlFUlBUUzFtY21WbElHTnZiblpsYm1sbGJtTmxJR2hsYkhCbGNuTWdkR2hsSUVGdVozVnNZWElnYUc5emRDQjFjMlZ6SUhSdklHSjFhV3hrSUhSb1pWeHVJQ29nYzNSaFlteGxJR2xtY21GdFpTQlZVa3dnWVc1a0lITmxibVFnYzNkcGRHTm9MV1JoYzJoaWIyRnlaQ0J0WlhOellXZGxjeUIwYnlCMGFHVWdaVzFpWldSa1pXUWdjR3gxWjJsdUxseHVJQ292WEc1cGJYQnZjblFnZTF4dUlDQnpaVzVrVTNkcGRHTm9SR0Z6YUdKdllYSmtUV1Z6YzJGblpTQmhjeUJ6Wlc1a1UyaGhjbVZrTEZ4dUlDQjBlWEJsSUVWdFltVmtUV1Z6YzJGblpWUmhjbWRsZEN4Y2JpQWdkSGx3WlNCRmJXSmxaRlZ5YkU5d2RHbHZibk1zWEc0Z0lIUjVjR1VnVTNkcGRHTm9SR0Z6YUdKdllYSmtVR0Y1Ykc5aFpDeGNibjBnWm5KdmJTQmNJaTR1TDJOdmJuUnlZV04wWENJN1hHNXBiWEJ2Y25RZ2V5QmlkV2xzWkV0cFltRnVZVVZ0WW1Wa1ZYSnNJSDBnWm5KdmJTQmNJaTR2YVc1emRHRnNiR1Z5WENJN1hHNWNibVY0Y0c5eWRDQjdJR0oxYVd4a1MybGlZVzVoUlcxaVpXUlZjbXdnZlR0Y2JseHVMeW9xWEc0Z0tpQlRaVzVrSUdFZ2MzZHBkR05vTFdSaGMyaGliMkZ5WkNCdFpYTnpZV2RsSUhSdklIUm9aU0JsYldKbFpHUmxaQ0JMYVdKaGJtRWdjR3gxWjJsdUxseHVJQ3BjYmlBcUlGUm9aU0JCYm1kMWJHRnlJR2h2YzNRZ2NHRnpjMlZ6SUdCcFpuSmhiV1V1WTI5dWRHVnVkRmRwYm1SdmQyQWdLSGRvYVdOb0lITmhkR2x6Wm1sbGMxeHVJQ29nWUVWdFltVmtUV1Z6YzJGblpWUmhjbWRsZEdBcElHRnVaQ0IwYUdVZ1MybGlZVzVoSUc5eWFXZHBiaUJoY3lCZ2RHRnlaMlYwVDNKcFoybHVZQzVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlITmxibVJMYVdKaGJtRlRkMmwwWTJoRVlYTm9ZbTloY21STlpYTnpZV2RsS0Z4dUlDQjBZWEpuWlhRNklFVnRZbVZrVFdWemMyRm5aVlJoY21kbGRDeGNiaUFnY0dGNWJHOWhaRG9nVTNkcGRHTm9SR0Z6YUdKdllYSmtVR0Y1Ykc5aFpDeGNiaUFnZEdGeVoyVjBUM0pwWjJsdU9pQnpkSEpwYm1kY2JpazZJSFp2YVdRZ2UxeHVJQ0J6Wlc1a1UyaGhjbVZrS0hSaGNtZGxkQ3dnY0dGNWJHOWhaQ3dnZEdGeVoyVjBUM0pwWjJsdUtUdGNibjFjYmx4dUx5b3FJRkpsTFdWNGNHOXlkQ0IwYUdVZ1ZWSk1JRzl3ZEdsdmJuTWdkSGx3WlNCbWIzSWdhRzl6ZENCamIyNTJaVzVwWlc1alpTNGdLaTljYm1WNGNHOXlkQ0IwZVhCbElIc2dSVzFpWldSVmNteFBjSFJwYjI1eklIMDdYRzRpWFgwPSJdfQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.sendKibanaSwitchDashboardMessage = exports.KIBANA_DEFAULT_BASE_PATH = exports.buildKibanaEmbedUrl = exports.createKibanaDashboardEmbedPlugin = exports.kibanaDashboardEmbedPlugin = exports.KibanaDashboardEmbedPlugin = void 0;
|
|
18
|
+
/**
|
|
19
|
+
* @module integrations/plugins/kibana
|
|
20
|
+
* @summary Kibana dashboard embed plugin surface.
|
|
21
|
+
* @description Org-agnostic multi-tenant Kibana dashboard embed plugin,
|
|
22
|
+
* installer, and host helpers. There is never space switching; the current
|
|
23
|
+
* Kibana space comes from the request/session/proxy context.
|
|
24
|
+
*/
|
|
25
|
+
__exportStar(require("./../contract.cjs"), exports);
|
|
26
|
+
__exportStar(require("./types.cjs"), exports);
|
|
27
|
+
__exportStar(require("./manifest.cjs"), exports);
|
|
28
|
+
__exportStar(require("./templates.cjs"), exports);
|
|
29
|
+
var installer_js_1 = require("./installer.cjs");
|
|
30
|
+
Object.defineProperty(exports, "KibanaDashboardEmbedPlugin", { enumerable: true, get: function () { return installer_js_1.KibanaDashboardEmbedPlugin; } });
|
|
31
|
+
Object.defineProperty(exports, "kibanaDashboardEmbedPlugin", { enumerable: true, get: function () { return installer_js_1.kibanaDashboardEmbedPlugin; } });
|
|
32
|
+
Object.defineProperty(exports, "createKibanaDashboardEmbedPlugin", { enumerable: true, get: function () { return installer_js_1.createKibanaDashboardEmbedPlugin; } });
|
|
33
|
+
Object.defineProperty(exports, "buildKibanaEmbedUrl", { enumerable: true, get: function () { return installer_js_1.buildKibanaEmbedUrl; } });
|
|
34
|
+
Object.defineProperty(exports, "KIBANA_DEFAULT_BASE_PATH", { enumerable: true, get: function () { return installer_js_1.KIBANA_DEFAULT_BASE_PATH; } });
|
|
35
|
+
var host_js_1 = require("./host.cjs");
|
|
36
|
+
Object.defineProperty(exports, "sendKibanaSwitchDashboardMessage", { enumerable: true, get: function () { return host_js_1.sendKibanaSwitchDashboardMessage; } });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGx1Z2lucy9raWJhbmEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsaUNBQTRCO0FBQzVCLDJCQUF3QjtBQUN4Qiw4QkFBMkI7QUFDM0IsK0JBQTRCO0FBQzVCLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzFCLGdDQUFnQyxFQUNoQyxtQkFBbUIsRUFDbkIsd0JBQXdCLEdBQ3pCLHVCQUFvQjtBQUNyQixPQUFPLEVBQ0wsZ0NBQWdDLEdBQ2pDLGtCQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9wbHVnaW5zL2tpYmFuYVxuICogQHN1bW1hcnkgS2liYW5hIGRhc2hib2FyZCBlbWJlZCBwbHVnaW4gc3VyZmFjZS5cbiAqIEBkZXNjcmlwdGlvbiBPcmctYWdub3N0aWMgbXVsdGktdGVuYW50IEtpYmFuYSBkYXNoYm9hcmQgZW1iZWQgcGx1Z2luLFxuICogaW5zdGFsbGVyLCBhbmQgaG9zdCBoZWxwZXJzLiBUaGVyZSBpcyBuZXZlciBzcGFjZSBzd2l0Y2hpbmc7IHRoZSBjdXJyZW50XG4gKiBLaWJhbmEgc3BhY2UgY29tZXMgZnJvbSB0aGUgcmVxdWVzdC9zZXNzaW9uL3Byb3h5IGNvbnRleHQuXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuLi9jb250cmFjdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21hbmlmZXN0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZW1wbGF0ZXNcIjtcbmV4cG9ydCB7XG4gIEtpYmFuYURhc2hib2FyZEVtYmVkUGx1Z2luLFxuICBraWJhbmFEYXNoYm9hcmRFbWJlZFBsdWdpbixcbiAgY3JlYXRlS2liYW5hRGFzaGJvYXJkRW1iZWRQbHVnaW4sXG4gIGJ1aWxkS2liYW5hRW1iZWRVcmwsXG4gIEtJQkFOQV9ERUZBVUxUX0JBU0VfUEFUSCxcbn0gZnJvbSBcIi4vaW5zdGFsbGVyXCI7XG5leHBvcnQge1xuICBzZW5kS2liYW5hU3dpdGNoRGFzaGJvYXJkTWVzc2FnZSxcbn0gZnJvbSBcIi4vaG9zdFwiO1xuIl19
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7R0FNRztBQUNILG1EQUFpQztBQUNqQyw2Q0FBMkI7QUFDM0IsZ0RBQThCO0FBQzlCLGlEQUErQjtBQUMvQiwrQ0FBMEs7QUFBakssMEhBQUEsMEJBQTBCLE9BQUE7QUFBRSwwSEFBQSwwQkFBMEIsT0FBQTtBQUFFLGdJQUFBLGdDQUFnQyxPQUFBO0FBQUUsbUhBQUEsbUJBQW1CLE9BQUE7QUFBRSx3SEFBQSx3QkFBd0IsT0FBQTtBQUNoSixxQ0FBOEQ7QUFBckQsMkhBQUEsZ0NBQWdDLE9BQUE7QUFDekMsODRDQUE4NEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL3BsdWdpbnMva2liYW5hXG4gKiBAc3VtbWFyeSBLaWJhbmEgZGFzaGJvYXJkIGVtYmVkIHBsdWdpbiBzdXJmYWNlLlxuICogQGRlc2NyaXB0aW9uIE9yZy1hZ25vc3RpYyBtdWx0aS10ZW5hbnQgS2liYW5hIGRhc2hib2FyZCBlbWJlZCBwbHVnaW4sXG4gKiBpbnN0YWxsZXIsIGFuZCBob3N0IGhlbHBlcnMuIFRoZXJlIGlzIG5ldmVyIHNwYWNlIHN3aXRjaGluZzsgdGhlIGN1cnJlbnRcbiAqIEtpYmFuYSBzcGFjZSBjb21lcyBmcm9tIHRoZSByZXF1ZXN0L3Nlc3Npb24vcHJveHkgY29udGV4dC5cbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vLi4vY29udHJhY3QuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tYW5pZmVzdC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVtcGxhdGVzLmpzXCI7XG5leHBvcnQgeyBLaWJhbmFEYXNoYm9hcmRFbWJlZFBsdWdpbiwga2liYW5hRGFzaGJvYXJkRW1iZWRQbHVnaW4sIGNyZWF0ZUtpYmFuYURhc2hib2FyZEVtYmVkUGx1Z2luLCBidWlsZEtpYmFuYUVtYmVkVXJsLCBLSUJBTkFfREVGQVVMVF9CQVNFX1BBVEgsIH0gZnJvbSBcIi4vaW5zdGFsbGVyLmpzXCI7XG5leHBvcnQgeyBzZW5kS2liYW5hU3dpdGNoRGFzaGJvYXJkTWVzc2FnZSwgfSBmcm9tIFwiLi9ob3N0LmpzXCI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lhVzVrWlhndWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOHVMaTh1TGk5emNtTXZjR3gxWjJsdWN5OXJhV0poYm1FdmFXNWtaWGd1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRTdPenM3T3p0SFFVMUhPMEZCUTBnc2FVTkJRVFJDTzBGQlF6VkNMREpDUVVGM1FqdEJRVU40UWl3NFFrRkJNa0k3UVVGRE0wSXNLMEpCUVRSQ08wRkJRelZDTEU5QlFVOHNSVUZEVEN3d1FrRkJNRUlzUlVGRE1VSXNNRUpCUVRCQ0xFVkJRekZDTEdkRFFVRm5ReXhGUVVOb1F5eHRRa0ZCYlVJc1JVRkRia0lzZDBKQlFYZENMRWRCUTNwQ0xIVkNRVUZ2UWp0QlFVTnlRaXhQUVVGUExFVkJRMHdzWjBOQlFXZERMRWRCUTJwRExHdENRVUZsSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCQWJXOWtkV3hsSUdsdWRHVm5jbUYwYVc5dWN5OXdiSFZuYVc1ekwydHBZbUZ1WVZ4dUlDb2dRSE4xYlcxaGNua2dTMmxpWVc1aElHUmhjMmhpYjJGeVpDQmxiV0psWkNCd2JIVm5hVzRnYzNWeVptRmpaUzVjYmlBcUlFQmtaWE5qY21sd2RHbHZiaUJQY21jdFlXZHViM04wYVdNZ2JYVnNkR2t0ZEdWdVlXNTBJRXRwWW1GdVlTQmtZWE5vWW05aGNtUWdaVzFpWldRZ2NHeDFaMmx1TEZ4dUlDb2dhVzV6ZEdGc2JHVnlMQ0JoYm1RZ2FHOXpkQ0JvWld4d1pYSnpMaUJVYUdWeVpTQnBjeUJ1WlhabGNpQnpjR0ZqWlNCemQybDBZMmhwYm1jN0lIUm9aU0JqZFhKeVpXNTBYRzRnS2lCTGFXSmhibUVnYzNCaFkyVWdZMjl0WlhNZ1puSnZiU0IwYUdVZ2NtVnhkV1Z6ZEM5elpYTnphVzl1TDNCeWIzaDVJR052Ym5SbGVIUXVYRzRnS2k5Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUxpOWpiMjUwY21GamRGd2lPMXh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2ZEhsd1pYTmNJanRjYm1WNGNHOXlkQ0FxSUdaeWIyMGdYQ0l1TDIxaGJtbG1aWE4wWENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOTBaVzF3YkdGMFpYTmNJanRjYm1WNGNHOXlkQ0I3WEc0Z0lFdHBZbUZ1WVVSaGMyaGliMkZ5WkVWdFltVmtVR3gxWjJsdUxGeHVJQ0JyYVdKaGJtRkVZWE5vWW05aGNtUkZiV0psWkZCc2RXZHBiaXhjYmlBZ1kzSmxZWFJsUzJsaVlXNWhSR0Z6YUdKdllYSmtSVzFpWldSUWJIVm5hVzRzWEc0Z0lHSjFhV3hrUzJsaVlXNWhSVzFpWldSVmNtd3NYRzRnSUV0SlFrRk9RVjlFUlVaQlZVeFVYMEpCVTBWZlVFRlVTQ3hjYm4wZ1puSnZiU0JjSWk0dmFXNXpkR0ZzYkdWeVhDSTdYRzVsZUhCdmNuUWdlMXh1SUNCelpXNWtTMmxpWVc1aFUzZHBkR05vUkdGemFHSnZZWEprVFdWemMyRm5aU3hjYm4wZ1puSnZiU0JjSWk0dmFHOXpkRndpTzF4dUlsMTkiXX0=
|