@mnaoumov/obsidian-dev-toolkit 3.1.0 → 3.2.1
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/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild-impl/dependency.cjs +3 -77
- package/dist/lib/cjs/bundlers/esbuild-impl/feature-options.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +3 -76
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild.cjs +1 -75
- package/dist/lib/cjs/bundlers/index.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-cli-reload.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-plugin-build.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-plugin-features.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-plugin-transforms.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-plugin-webpack-loader.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-plugins-folder-deployment.cjs +32 -85
- package/dist/lib/cjs/bundlers/parcel.cjs +112 -81
- package/dist/lib/cjs/bundlers/parcel.d.cts +13 -6
- package/dist/lib/cjs/bundlers/rollup-compatible-features.cjs +1 -75
- package/dist/lib/cjs/bundlers/rollup-compatible.cjs +1 -75
- package/dist/lib/cjs/bundlers/rollup.cjs +1 -75
- package/dist/lib/cjs/bundlers/vite.cjs +1 -75
- package/dist/lib/cjs/bundlers/webpack.cjs +3 -77
- package/dist/lib/cjs/demo-vault-app-json.cjs +1 -75
- package/dist/lib/cjs/demo-vault-buttons.cjs +1 -75
- package/dist/lib/cjs/demo-vault-cli.cjs +1 -75
- package/dist/lib/cjs/demo-vault-coverage.cjs +1 -75
- package/dist/lib/cjs/demo-vault.cjs +3 -77
- package/dist/lib/cjs/docs-site/index.cjs +1 -75
- package/dist/lib/cjs/docs-site/obsidian-external-type-links.cjs +1 -75
- package/dist/lib/cjs/formatters/dprint.cjs +1 -75
- package/dist/lib/cjs/formatters/index.cjs +1 -75
- package/dist/lib/cjs/index.cjs +1 -75
- package/dist/lib/cjs/integration-test-setup.cjs +1 -75
- package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +1 -75
- package/dist/lib/cjs/jest-setup.cjs +1 -75
- package/dist/lib/cjs/jest-setup.d.cts +2 -1
- package/dist/lib/cjs/linters/eslint-config.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/index.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/manifest-description.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/manifest-id.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/manifest-name.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/manifest-schema.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.cjs +2 -77
- package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-toolkit-plugin.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.cjs +1 -75
- package/dist/lib/cjs/linters/eslint.cjs +1 -75
- package/dist/lib/cjs/linters/index.cjs +1 -75
- package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +1 -75
- package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +1 -75
- package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.cjs +1 -75
- package/dist/lib/cjs/linters/markdownlint.cjs +1 -75
- package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.cjs +1 -75
- package/dist/lib/cjs/linters/plugin-names.cjs +1 -75
- package/dist/lib/cjs/obsidian-plugin-repo-paths.cjs +1 -75
- package/dist/lib/cjs/setup.cjs +1 -75
- package/dist/lib/cjs/templates.cjs +3 -77
- package/dist/lib/cjs/test-runners/coverage-badge-cli.cjs +1 -75
- package/dist/lib/cjs/test-runners/coverage-badge.cjs +1 -75
- package/dist/lib/cjs/test-runners/e2e-runner-support.cjs +1 -75
- package/dist/lib/cjs/test-runners/index.cjs +4 -75
- package/dist/lib/cjs/test-runners/index.d.cts +1 -0
- package/dist/lib/cjs/test-runners/integration-test-plugin.cjs +3 -77
- package/dist/lib/cjs/test-runners/jest-config.cjs +92 -0
- package/dist/lib/cjs/test-runners/jest-config.d.cts +50 -0
- package/dist/lib/cjs/test-runners/obsidian-test-runner.cjs +1 -75
- package/dist/lib/cjs/test-runners/performance-eval-cap.cjs +4 -75
- package/dist/lib/cjs/test-runners/performance-eval-cap.d.cts +12 -3
- package/dist/lib/cjs/test-runners/stale-build-global-setup.cjs +1 -75
- package/dist/lib/cjs/test-runners/vitest-config.cjs +4 -80
- package/dist/lib/cjs/test-runners/wdio-obsidian.cjs +1 -75
- package/dist/lib/cjs/version.cjs +1 -75
- package/dist/lib/cjs/vitest-setup.cjs +1 -75
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +3 -2
- package/dist/lib/esm/bundlers/obsidian-plugins-folder-deployment.mjs +32 -15
- package/dist/lib/esm/bundlers/parcel.d.mts +13 -6
- package/dist/lib/esm/bundlers/parcel.mjs +110 -5
- package/dist/lib/esm/jest-setup.d.mts +2 -1
- package/dist/lib/esm/jest-setup.mjs +1 -1
- package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.mjs +2 -2
- package/dist/lib/esm/test-runners/index.d.mts +1 -0
- package/dist/lib/esm/test-runners/index.mjs +3 -1
- package/dist/lib/esm/test-runners/jest-config.d.mts +50 -0
- package/dist/lib/esm/test-runners/jest-config.mjs +68 -0
- package/dist/lib/esm/test-runners/performance-eval-cap.d.mts +12 -3
- package/dist/lib/esm/test-runners/performance-eval-cap.mjs +3 -1
- package/dist/lib/esm/test-runners/vitest-config.mjs +4 -5
- package/package.json +19 -2
- package/test-runners/jest-config/package.json +6 -0
|
@@ -29,80 +29,6 @@ function ensureBrowserProcess() {
|
|
|
29
29
|
|
|
30
30
|
ensureBrowserProcess();
|
|
31
31
|
})();
|
|
32
|
-
(function patchObsidianRequire() {
|
|
33
|
-
const originalRequire = require;
|
|
34
|
-
if (!originalRequire || originalRequire.__isPatched) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
require = Object.assign(
|
|
39
|
-
(id) => requirePatched(id),
|
|
40
|
-
originalRequire,
|
|
41
|
-
{
|
|
42
|
-
__isPatched: true
|
|
43
|
-
}
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
function extractDefault(module) {
|
|
47
|
-
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
51
|
-
'@codemirror/autocomplete',
|
|
52
|
-
'@codemirror/collab',
|
|
53
|
-
'@codemirror/commands',
|
|
54
|
-
'@codemirror/language',
|
|
55
|
-
'@codemirror/lint',
|
|
56
|
-
'@codemirror/search',
|
|
57
|
-
'@codemirror/state',
|
|
58
|
-
'@codemirror/text',
|
|
59
|
-
'@codemirror/view',
|
|
60
|
-
'@lezer/common',
|
|
61
|
-
'@lezer/highlight',
|
|
62
|
-
'@lezer/lr',
|
|
63
|
-
'obsidian']
|
|
64
|
-
);
|
|
65
|
-
|
|
66
|
-
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
67
|
-
'@codemirror/closebrackets',
|
|
68
|
-
'@codemirror/comment',
|
|
69
|
-
'@codemirror/fold',
|
|
70
|
-
'@codemirror/gutter',
|
|
71
|
-
'@codemirror/highlight',
|
|
72
|
-
'@codemirror/history',
|
|
73
|
-
'@codemirror/matchbrackets',
|
|
74
|
-
'@codemirror/panel',
|
|
75
|
-
'@codemirror/rangeset',
|
|
76
|
-
'@codemirror/rectangular-selection',
|
|
77
|
-
'@codemirror/stream-parser',
|
|
78
|
-
'@codemirror/tooltip']
|
|
79
|
-
);
|
|
80
|
-
|
|
81
|
-
function requirePatched(id) {
|
|
82
|
-
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
83
|
-
return originalRequire?.(id);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
87
|
-
if (globalThis.app.isMobile) {
|
|
88
|
-
if (id === 'process' || id === 'node:process') {
|
|
89
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
90
|
-
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
91
|
-
|
|
92
|
-
return process;
|
|
93
|
-
}
|
|
94
|
-
} else {
|
|
95
|
-
const module = originalRequire?.(id);
|
|
96
|
-
if (module) {
|
|
97
|
-
return extractDefault(module);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
102
|
-
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
103
|
-
return {};
|
|
104
|
-
}
|
|
105
|
-
})();
|
|
106
32
|
|
|
107
33
|
"use strict";
|
|
108
34
|
var __defProp = Object.defineProperty;
|
|
@@ -237,4 +163,4 @@ function readKeyName(key) {
|
|
|
237
163
|
MESSAGE_ID,
|
|
238
164
|
noLocalObsidianInternals
|
|
239
165
|
});
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9uby1sb2NhbC1vYnNpZGlhbi1pbnRlcm5hbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiBuby1sb2NhbC1vYnNpZGlhbi1pbnRlcm5hbHNcbiAqXG4gKiBSZXBvcnRzIGV2ZXJ5IG1lbWJlciBhIGBkZWNsYXJlIG1vZHVsZSAnb2JzaWRpYW4nYCBhdWdtZW50YXRpb24gYWRkcyB0byBPYnNpZGlhbidzIHR5cGVzLlxuICpcbiAqIE9ic2lkaWFuJ3MgaW50ZXJuYWwgKHVuZG9jdW1lbnRlZCkgQVBJIGlzIHR5cGVkIGluIGBvYnNpZGlhbi10eXBpbmdzYCwgd2hlcmUgZWFjaCBtZW1iZXIgaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZVxuICogc2hpcHBlZCBgYXBwLmpzYCBvbiBldmVyeSByZWxlYXNlIHRoYXQgaGFzIGl0LiBBIGxvY2FsIGF1Z21lbnRhdGlvbiBpcyBhIHNlY29uZCwgdW5jaGVja2VkIGNvcHkgb2YgdGhlIHNhbWVcbiAqIGNsYWltOiBpdCBkcmlmdHMgZnJvbSB3aGF0IE9ic2lkaWFuIGFjdHVhbGx5IHNoaXBzLCBhbmQgd2hlbiBgb2JzaWRpYW4tdHlwaW5nc2AgZ2FpbnMgdGhlIG1lbWJlciB0aGUgdHdvXG4gKiBkZWNsYXJhdGlvbnMgbWVyZ2Ugc2lsZW50bHksIG9yIGNsYXNoLiBUaGUgZml4IGZvciBhIG1lbWJlciBgb2JzaWRpYW4tdHlwaW5nc2AgbGFja3Mgb3IgZGVjbGFyZXMgd3JvbmdseSBnb2VzXG4gKiBpbnRvIGBvYnNpZGlhbi10eXBpbmdzYCwgYW5kIHRoZSBjb25zdW1lciBpbXBvcnRzIGl0IGZyb20gdGhlcmUuXG4gKlxuICogT25lIHNoYXBlIGlzIGV4ZW1wdDogYW4gb3ZlcmxvYWQgb2YgYG9uYCwgYG9mZmAsIGB0cmlnZ2VyYCBvciBgdHJ5VHJpZ2dlcmAgd2hvc2UgZmlyc3QgcGFyYW1ldGVyIGlzIGFcbiAqIHN0cmluZy1saXRlcmFsIHR5cGUsIG9yIGEgdW5pb24gb2YgdGhlbS4gVGhhdCBpcyBob3cgYSBwbHVnaW4gdHlwZXMgaXRzIE9XTiBjdXN0b20gZXZlbnRzIG9uIGBXb3Jrc3BhY2VgIG9yXG4gKiBhbm90aGVyIGBFdmVudHNgIHN1YmNsYXNzLCBzbyBpdCBkZXNjcmliZXMgdGhlIHBsdWdpbidzIGNvZGUgcmF0aGVyIHRoYW4gT2JzaWRpYW4ncy4gQSBuYW1lIHR5cGVkIHRocm91Z2ggYW5cbiAqIGFsaWFzIChgbmFtZTogTXlFdmVudE5hbWVgKSBpcyByZWNvZ25pemVkIG9ubHkgd2hlbiB0aGUgZmlsZSBpcyBsaW50ZWQgd2l0aCB0eXBlIGluZm9ybWF0aW9uLCB3aGljaCB0aGUgc2hhcmVkXG4gKiBjb25maWd1cmF0aW9uIGFsd2F5cyBoYXMuXG4gKlxuICogT25seSB0aGUgbW9kdWxlIG5hbWVkIGV4YWN0bHkgYG9ic2lkaWFuYCBpcyByZWFkLiBBIGBkZWNsYXJlIG1vZHVsZSAnb2JzaWRpYW4tdHlwaW5ncydgIGF1Z21lbnRhdGlvbiBvZlxuICogYFBsdWdpbnNQbHVnaW5zUmVjb3JkYCBpcyBgb2JzaWRpYW4tdHlwaW5nc2AnIGRlc2lnbmVkIGV4dGVuc2lvbiBwb2ludCBmb3IgdGhpcmQtcGFydHkgcGx1Z2luIHR5cGVzLCBhbmQgaXNcbiAqIG5vdCByZXBvcnRlZC5cbiAqXG4gKiBOb3QgYXR0ZW1wdGVkOiBhIGxvY2FsIGludGVyZmFjZSBvciBhbiBpbmxpbmUgY2FzdCB0aGF0IHNwZWxscyBhbiBpbnRlcm5hbCBzaGFwZSBjYW5ub3QgYmUgdG9sZCBhcGFydCBmcm9tIGFcbiAqIHJlcG9zaXRvcnkncyBvd24gdHlwZXMgbWVjaGFuaWNhbGx5LCBzbyB0aG9zZSBhcmUgbGVmdCB0byByZXZpZXcuXG4gKi9cbmltcG9ydCB0eXBlIHtcbiAgUGFyc2VyU2VydmljZXMsXG4gIFRTRVNUcmVlXG59IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscyc7XG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuaW1wb3J0IHR5cGUgeyBUeXBlTm9kZSB9IGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgeyB0b1RTRVNUcmVlTm9kZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2xpbnRlcnMvZXNsaW50LXJ1bGVzL3RzLWVzdHJlZS1ub2RlJztcbmltcG9ydCB7IEFTVF9OT0RFX1RZUEVTIH0gZnJvbSAnQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzJztcblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIGZvciBhIG1lbWJlciBhIGBkZWNsYXJlIG1vZHVsZSAnb2JzaWRpYW4nYCBhdWdtZW50YXRpb24gYWRkcy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAnbm9Mb2NhbE9ic2lkaWFuSW50ZXJuYWxzJztcblxuLyoqXG5UaGUgbW9kdWxlIG5hbWUgd2hvc2UgYXVnbWVudGF0aW9ucyBhcmUgcmVwb3J0ZWQuXG4gKi9cbmNvbnN0IE9CU0lESUFOX01PRFVMRV9OQU1FID0gJ29ic2lkaWFuJztcblxuLyoqXG5UaGUgYEV2ZW50c2AgbWV0aG9kcyBhIGN1c3RvbS1ldmVudCBvdmVybG9hZCBtYXkgYmUgZGVjbGFyZWQgb24uXG4gKi9cbmNvbnN0IEVWRU5UX01FVEhPRF9OQU1FUyA9IG5ldyBTZXQoWydvZmYnLCAnb24nLCAndHJpZ2dlcicsICd0cnlUcmlnZ2VyJ10pO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgdHlwZSBpcyBhIHN0cmluZy1saXRlcmFsIHR5cGUsIG9yIGEgdW5pb24gbWFkZSBvbmx5IG9mIHRoZW0uXG4gKi9cbnR5cGUgU3RyaW5nTGl0ZXJhbFR5cGVDaGVjayA9ICh0eXBlTm9kZTogVFNFU1RyZWUuVHlwZU5vZGUpID0+IGJvb2xlYW47XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgZGlzYWxsb3dpbmcgbG9jYWxseSBkZWNsYXJlZCBPYnNpZGlhbiBpbnRlcm5hbHMgaW4gYSBgZGVjbGFyZSBtb2R1bGUgJ29ic2lkaWFuJ2AgYXVnbWVudGF0aW9uLlxuICovXG5leHBvcnQgY29uc3Qgbm9Mb2NhbE9ic2lkaWFuSW50ZXJuYWxzOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdUU01vZHVsZURlY2xhcmF0aW9uJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9kdWxlTm9kZSA9IHRvVFNFU1RyZWVOb2RlKG5vZGUpIGFzIFRTRVNUcmVlLlRTTW9kdWxlRGVjbGFyYXRpb247XG5cbiAgICAgICAgaWYgKG1vZHVsZU5vZGUuaWQudHlwZSAhPT0gQVNUX05PREVfVFlQRVMuTGl0ZXJhbCB8fCBtb2R1bGVOb2RlLmlkLnZhbHVlICE9PSBPQlNJRElBTl9NT0RVTEVfTkFNRSB8fCAhbW9kdWxlTm9kZS5ib2R5KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNTdHJpbmdMaXRlcmFsVHlwZSA9IGNyZWF0ZVN0cmluZ0xpdGVyYWxUeXBlQ2hlY2soY29udGV4dCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2YgbW9kdWxlTm9kZS5ib2R5LmJvZHkpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHJlcG9ydGVkIG9mIGNvbGxlY3RSZXBvcnRlZE5vZGVzKHN0YXRlbWVudCwgaXNTdHJpbmdMaXRlcmFsVHlwZSkpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgZGF0YTogeyBuYW1lOiBkZXNjcmliZU5vZGUocmVwb3J0ZWQpIH0sXG4gICAgICAgICAgICAgIGxvYzogcmVwb3J0ZWQubG9jLFxuICAgICAgICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0Rpc2FsbG93IGRlY2xhcmluZyBPYnNpZGlhbiBpbnRlcm5hbHMgbG9jYWxseSBpbiBhIGBkZWNsYXJlIG1vZHVsZSBcXCdvYnNpZGlhblxcJ2AgYXVnbWVudGF0aW9uJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ2B7eyBuYW1lIH19YCBkZWNsYXJlcyBPYnNpZGlhbiBBUEkgbG9jYWxseS4gSW1wb3J0IGl0IGZyb20gYG9ic2lkaWFuLXR5cGluZ3NgIGluc3RlYWQsIGFkZGluZyBpdCB0aGVyZSBmaXJzdCBpZiBpdCBpcyBtaXNzaW5nIG9yIHdyb25nLiBPbmx5IGEgY3VzdG9tLWV2ZW50IG92ZXJsb2FkIG9mIGBvbmAgLyBgb2ZmYCAvIGB0cmlnZ2VyYCAvIGB0cnlUcmlnZ2VyYCBtYXkgc3RheSBoZXJlLidcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogJ3Byb2JsZW0nXG4gIH1cbn07XG5cbi8qKlxuICogQ29sbGVjdHMgdGhlIG5vZGVzIHRvIHJlcG9ydCBmb3Igb25lIHN0YXRlbWVudCBvZiBhIGBkZWNsYXJlIG1vZHVsZSAnb2JzaWRpYW4nYCBibG9jay5cbiAqXG4gKiBBbiBpbnRlcmZhY2UgaXMgcmVwb3J0ZWQgbWVtYmVyIGJ5IG1lbWJlciwgc28gYSBjdXN0b20tZXZlbnQgb3ZlcmxvYWQgY2FuIHNpdCBiZXNpZGUgYSByZXBvcnRlZCBtZW1iZXIsIGFuZCBpdHNcbiAqIGBleHRlbmRzYCBjbGF1c2UgaXMgcmVwb3J0ZWQgdG9vLCBzaW5jZSB0aGF0IGJvbHRzIG1lbWJlcnMgb24gYXMgc3VyZWx5IGFzIGRlY2xhcmluZyB0aGVtLiBBbnkgb3RoZXIgc3RhdGVtZW50XG4gKiAoYSBjbGFzcywgYSBmdW5jdGlvbiwgYSB0eXBlIGFsaWFzLCBhIHZhcmlhYmxlKSBpcyByZXBvcnRlZCB3aG9sZS5cbiAqXG4gKiBAcGFyYW0gc3RhdGVtZW50IC0gQSBzdGF0ZW1lbnQgb2YgdGhlIG1vZHVsZSBibG9jay5cbiAqIEBwYXJhbSBpc1N0cmluZ0xpdGVyYWxUeXBlIC0gVGhlIGNoZWNrIG9mIHdoZXRoZXIgYSB0eXBlIGlzIGEgc3RyaW5nLWxpdGVyYWwgdHlwZSBvciBhIHVuaW9uIG9mIHRoZW0uXG4gKiBAcmV0dXJucyBUaGUgbm9kZXMgdG8gcmVwb3J0LlxuICovXG5mdW5jdGlvbiBjb2xsZWN0UmVwb3J0ZWROb2RlcyhzdGF0ZW1lbnQ6IFRTRVNUcmVlLlByb2dyYW1TdGF0ZW1lbnQsIGlzU3RyaW5nTGl0ZXJhbFR5cGU6IFN0cmluZ0xpdGVyYWxUeXBlQ2hlY2spOiBUU0VTVHJlZS5Ob2RlW10ge1xuICBjb25zdCBkZWNsYXJhdGlvbiA9IHN0YXRlbWVudC50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5FeHBvcnROYW1lZERlY2xhcmF0aW9uICYmIHN0YXRlbWVudC5kZWNsYXJhdGlvbiA/IHN0YXRlbWVudC5kZWNsYXJhdGlvbiA6IHN0YXRlbWVudDtcblxuICBpZiAoZGVjbGFyYXRpb24udHlwZSAhPT0gQVNUX05PREVfVFlQRVMuVFNJbnRlcmZhY2VEZWNsYXJhdGlvbikge1xuICAgIHJldHVybiBbZGVjbGFyYXRpb25dO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICAuLi5kZWNsYXJhdGlvbi5leHRlbmRzLFxuICAgIC4uLmRlY2xhcmF0aW9uLmJvZHkuYm9keS5maWx0ZXIoKG1lbWJlcikgPT4gIWlzQ3VzdG9tRXZlbnRPdmVybG9hZChtZW1iZXIsIGlzU3RyaW5nTGl0ZXJhbFR5cGUpKVxuICBdO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNoZWNrIG9mIHdoZXRoZXIgYSB0eXBlIGlzIGEgc3RyaW5nLWxpdGVyYWwgdHlwZSwgb3IgYSB1bmlvbiBtYWRlIG9ubHkgb2YgdGhlbS5cbiAqXG4gKiBBIHR5cGUgd3JpdHRlbiBvdXQgYXMgbGl0ZXJhbHMgKGAnbXktZXZlbnQnIHwgJ290aGVyLWV2ZW50J2ApIGlzIHJlY29nbml6ZWQgZnJvbSB0aGUgc3ludGF4IGFsb25lLiBBIHR5cGUgcmVhY2hlZFxuICogdGhyb3VnaCBhbiBhbGlhcyAoYG5hbWU6IE15RXZlbnROYW1lYCkgbmVlZHMgdGhlIHR5cGUgY2hlY2tlciwgc28gaXQgaXMgcmVjb2duaXplZCBvbmx5IHdoZW4gdGhlIGZpbGUgaXMgbGludGVkXG4gKiB3aXRoIHR5cGUgaW5mb3JtYXRpb24sIGFuZCByZXBvcnRlZCBvdGhlcndpc2UuXG4gKlxuICogQHBhcmFtIGNvbnRleHQgLSBUaGUgcnVsZSBjb250ZXh0LlxuICogQHJldHVybnMgVGhlIGNoZWNrLlxuICovXG5mdW5jdGlvbiBjcmVhdGVTdHJpbmdMaXRlcmFsVHlwZUNoZWNrKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBTdHJpbmdMaXRlcmFsVHlwZUNoZWNrIHtcbiAgY29uc3Qgc2VydmljZXMgPSBjb250ZXh0LnNvdXJjZUNvZGUucGFyc2VyU2VydmljZXMgYXMgUGFyc2VyU2VydmljZXM7XG4gIGNvbnN0IGNoZWNrZXIgPSBzZXJ2aWNlcy5wcm9ncmFtPy5nZXRUeXBlQ2hlY2tlcigpID8/IG51bGw7XG5cbiAgcmV0dXJuIGlzU3RyaW5nTGl0ZXJhbFR5cGU7XG5cbiAgZnVuY3Rpb24gaXNTdHJpbmdMaXRlcmFsVHlwZSh0eXBlTm9kZTogVFNFU1RyZWUuVHlwZU5vZGUpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZU5vZGUudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuVFNVbmlvblR5cGUpIHtcbiAgICAgIHJldHVybiB0eXBlTm9kZS50eXBlcy5ldmVyeSgobWVtYmVyKSA9PiBpc1N0cmluZ0xpdGVyYWxUeXBlKG1lbWJlcikpO1xuICAgIH1cblxuICAgIGlmICh0eXBlTm9kZS50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5UU0xpdGVyYWxUeXBlKSB7XG4gICAgICByZXR1cm4gdHlwZU5vZGUubGl0ZXJhbC50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5MaXRlcmFsICYmIHR5cGVvZiB0eXBlTm9kZS5saXRlcmFsLnZhbHVlID09PSAnc3RyaW5nJztcbiAgICB9XG5cbiAgICBpZiAoIWNoZWNrZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlID0gY2hlY2tlci5nZXRUeXBlRnJvbVR5cGVOb2RlKHNlcnZpY2VzLmVzVHJlZU5vZGVUb1RTTm9kZU1hcC5nZXQodHlwZU5vZGUpIGFzIFR5cGVOb2RlKTtcbiAgICByZXR1cm4gdHlwZS5pc1VuaW9uKCkgPyB0eXBlLnR5cGVzLmV2ZXJ5KChtZW1iZXIpID0+IG1lbWJlci5pc1N0cmluZ0xpdGVyYWwoKSkgOiB0eXBlLmlzU3RyaW5nTGl0ZXJhbCgpO1xuICB9XG59XG5cbi8qKlxuICogTmFtZXMgYSByZXBvcnRlZCBub2RlIGZvciB0aGUgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIFRoZSByZXBvcnRlZCBub2RlLlxuICogQHJldHVybnMgVGhlIG5hbWUgdG8gc2hvdy5cbiAqL1xuZnVuY3Rpb24gZGVzY3JpYmVOb2RlKG5vZGU6IFRTRVNUcmVlLk5vZGUpOiBzdHJpbmcge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIGNhc2UgQVNUX05PREVfVFlQRVMuQ2xhc3NEZWNsYXJhdGlvbjpcbiAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLkZ1bmN0aW9uRGVjbGFyYXRpb246XG4gICAgY2FzZSBBU1RfTk9ERV9UWVBFUy5UU0RlY2xhcmVGdW5jdGlvbjpcbiAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLlRTRW51bURlY2xhcmF0aW9uOlxuICAgIGNhc2UgQVNUX05PREVfVFlQRVMuVFNNb2R1bGVEZWNsYXJhdGlvbjpcbiAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLlRTVHlwZUFsaWFzRGVjbGFyYXRpb246IHtcbiAgICAgIHJldHVybiBub2RlLmlkPy50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5JZGVudGlmaWVyID8gbm9kZS5pZC5uYW1lIDogbm9kZS50eXBlO1xuICAgIH1cbiAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLlRTSW50ZXJmYWNlSGVyaXRhZ2U6IHtcbiAgICAgIHJldHVybiBub2RlLmV4cHJlc3Npb24udHlwZSA9PT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllciA/IGBleHRlbmRzICR7bm9kZS5leHByZXNzaW9uLm5hbWV9YCA6ICdleHRlbmRzJztcbiAgICB9XG4gICAgY2FzZSBBU1RfTk9ERV9UWVBFUy5UU01ldGhvZFNpZ25hdHVyZTpcbiAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLlRTUHJvcGVydHlTaWduYXR1cmU6IHtcbiAgICAgIHJldHVybiByZWFkS2V5TmFtZShub2RlLmtleSkgPz8gbm9kZS50eXBlO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGFuIGludGVyZmFjZSBtZW1iZXIgaXMgYSBjdXN0b20tZXZlbnQgb3ZlcmxvYWQ6IGFuIGBvbmAgLyBgb2ZmYCAvIGB0cmlnZ2VyYCAvIGB0cnlUcmlnZ2VyYCBtZXRob2RcbiAqIHdob3NlIGZpcnN0IHBhcmFtZXRlciBpcyB0eXBlZCBhcyBhIHN0cmluZy1saXRlcmFsIHR5cGUgb3IgYSB1bmlvbiBvZiB0aGVtLlxuICpcbiAqIEBwYXJhbSBtZW1iZXIgLSBUaGUgaW50ZXJmYWNlIG1lbWJlci5cbiAqIEBwYXJhbSBpc1N0cmluZ0xpdGVyYWxUeXBlIC0gVGhlIGNoZWNrIG9mIHdoZXRoZXIgYSB0eXBlIGlzIGEgc3RyaW5nLWxpdGVyYWwgdHlwZSBvciBhIHVuaW9uIG9mIHRoZW0uXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgbWVtYmVyIGlzIGV4ZW1wdC5cbiAqL1xuZnVuY3Rpb24gaXNDdXN0b21FdmVudE92ZXJsb2FkKG1lbWJlcjogVFNFU1RyZWUuVHlwZUVsZW1lbnQsIGlzU3RyaW5nTGl0ZXJhbFR5cGU6IFN0cmluZ0xpdGVyYWxUeXBlQ2hlY2spOiBib29sZWFuIHtcbiAgaWYgKG1lbWJlci50eXBlICE9PSBBU1RfTk9ERV9UWVBFUy5UU01ldGhvZFNpZ25hdHVyZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IG5hbWUgPSByZWFkS2V5TmFtZShtZW1iZXIua2V5KTtcbiAgaWYgKG5hbWUgPT09IG51bGwgfHwgIUVWRU5UX01FVEhPRF9OQU1FUy5oYXMobmFtZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBmaXJzdFBhcmFtZXRlciA9IG1lbWJlci5wYXJhbXNbMF07XG4gIHJldHVybiBmaXJzdFBhcmFtZXRlcj8udHlwZSA9PT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllciAmJiBmaXJzdFBhcmFtZXRlci50eXBlQW5ub3RhdGlvbiAhPT0gdW5kZWZpbmVkXG4gICAgJiYgaXNTdHJpbmdMaXRlcmFsVHlwZShmaXJzdFBhcmFtZXRlci50eXBlQW5ub3RhdGlvbi50eXBlQW5ub3RhdGlvbik7XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIG5hbWUgb2YgYSBtZW1iZXIga2V5IHdyaXR0ZW4gYXMgYW4gaWRlbnRpZmllciBvciBhIHN0cmluZyBsaXRlcmFsLlxuICpcbiAqIEBwYXJhbSBrZXkgLSBUaGUgbWVtYmVyIGtleS5cbiAqIEByZXR1cm5zIFRoZSBuYW1lLCBvciBgbnVsbGAgZm9yIGEgY29tcHV0ZWQga2V5LlxuICovXG5mdW5jdGlvbiByZWFkS2V5TmFtZShrZXk6IFRTRVNUcmVlLlByb3BlcnR5TmFtZSk6IG51bGwgfCBzdHJpbmcge1xuICBpZiAoa2V5LnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXIpIHtcbiAgICByZXR1cm4ga2V5Lm5hbWU7XG4gIH1cblxuICByZXR1cm4ga2V5LnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLkxpdGVyYWwgJiYgdHlwZW9mIGtleS52YWx1ZSA9PT0gJ3N0cmluZycgPyBrZXkudmFsdWUgOiBudWxsO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaUNBLDRCQUErQjtBQUMvQixtQkFBK0I7QUFLeEIsTUFBTSxhQUFhO0FBSzFCLE1BQU0sdUJBQXVCO0FBSzdCLE1BQU0scUJBQXFCLG9CQUFJLElBQUksQ0FBQyxPQUFPLE1BQU0sV0FBVyxZQUFZLENBQUM7QUFVbEUsTUFBTSwyQkFBNEM7QUFBQSxFQUN2RCxPQUFPLFNBQVM7QUFDZCxXQUFPO0FBQUEsTUFDTCxzQkFBc0IsTUFBdUI7QUFDM0MsY0FBTSxpQkFBYSxzQ0FBZSxJQUFJO0FBRXRDLFlBQUksV0FBVyxHQUFHLFNBQVMsNEJBQWUsV0FBVyxXQUFXLEdBQUcsVUFBVSx3QkFBd0IsQ0FBQyxXQUFXLE1BQU07QUFDckg7QUFBQSxRQUNGO0FBRUEsY0FBTSxzQkFBc0IsNkJBQTZCLE9BQU87QUFFaEUsbUJBQVcsYUFBYSxXQUFXLEtBQUssTUFBTTtBQUM1QyxxQkFBVyxZQUFZLHFCQUFxQixXQUFXLG1CQUFtQixHQUFHO0FBQzNFLG9CQUFRLE9BQU87QUFBQSxjQUNiLE1BQU0sRUFBRSxNQUFNLGFBQWEsUUFBUSxFQUFFO0FBQUEsY0FDckMsS0FBSyxTQUFTO0FBQUEsY0FDZCxXQUFXO0FBQUEsWUFDYixDQUFDO0FBQUEsVUFDSDtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixDQUFDLFVBQVUsR0FBRztBQUFBLElBQ2hCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxJQUNULE1BQU07QUFBQSxFQUNSO0FBQ0Y7QUFhQSxTQUFTLHFCQUFxQixXQUFzQyxxQkFBOEQ7QUFDaEksUUFBTSxjQUFjLFVBQVUsU0FBUyw0QkFBZSwwQkFBMEIsVUFBVSxjQUFjLFVBQVUsY0FBYztBQUVoSSxNQUFJLFlBQVksU0FBUyw0QkFBZSx3QkFBd0I7QUFDOUQsV0FBTyxDQUFDLFdBQVc7QUFBQSxFQUNyQjtBQUVBLFNBQU87QUFBQSxJQUNMLEdBQUcsWUFBWTtBQUFBLElBQ2YsR0FBRyxZQUFZLEtBQUssS0FBSyxPQUFPLENBQUMsV0FBVyxDQUFDLHNCQUFzQixRQUFRLG1CQUFtQixDQUFDO0FBQUEsRUFDakc7QUFDRjtBQVlBLFNBQVMsNkJBQTZCLFNBQW1EO0FBQ3ZGLFFBQU0sV0FBVyxRQUFRLFdBQVc7QUFDcEMsUUFBTSxVQUFVLFNBQVMsU0FBUyxlQUFlLEtBQUs7QUFFdEQsU0FBTztBQUVQLFdBQVMsb0JBQW9CLFVBQXNDO0FBQ2pFLFFBQUksU0FBUyxTQUFTLDRCQUFlLGFBQWE7QUFDaEQsYUFBTyxTQUFTLE1BQU0sTUFBTSxDQUFDLFdBQVcsb0JBQW9CLE1BQU0sQ0FBQztBQUFBLElBQ3JFO0FBRUEsUUFBSSxTQUFTLFNBQVMsNEJBQWUsZUFBZTtBQUNsRCxhQUFPLFNBQVMsUUFBUSxTQUFTLDRCQUFlLFdBQVcsT0FBTyxTQUFTLFFBQVEsVUFBVTtBQUFBLElBQy9GO0FBRUEsUUFBSSxDQUFDLFNBQVM7QUFDWixhQUFPO0FBQUEsSUFDVDtBQUVBLFVBQU0sT0FBTyxRQUFRLG9CQUFvQixTQUFTLHNCQUFzQixJQUFJLFFBQVEsQ0FBYTtBQUNqRyxXQUFPLEtBQUssUUFBUSxJQUFJLEtBQUssTUFBTSxNQUFNLENBQUMsV0FBVyxPQUFPLGdCQUFnQixDQUFDLElBQUksS0FBSyxnQkFBZ0I7QUFBQSxFQUN4RztBQUNGO0FBUUEsU0FBUyxhQUFhLE1BQTZCO0FBQ2pELFVBQVEsS0FBSyxNQUFNO0FBQUEsSUFDakIsS0FBSyw0QkFBZTtBQUFBLElBQ3BCLEtBQUssNEJBQWU7QUFBQSxJQUNwQixLQUFLLDRCQUFlO0FBQUEsSUFDcEIsS0FBSyw0QkFBZTtBQUFBLElBQ3BCLEtBQUssNEJBQWU7QUFBQSxJQUNwQixLQUFLLDRCQUFlLHdCQUF3QjtBQUMxQyxhQUFPLEtBQUssSUFBSSxTQUFTLDRCQUFlLGFBQWEsS0FBSyxHQUFHLE9BQU8sS0FBSztBQUFBLElBQzNFO0FBQUEsSUFDQSxLQUFLLDRCQUFlLHFCQUFxQjtBQUN2QyxhQUFPLEtBQUssV0FBVyxTQUFTLDRCQUFlLGFBQWEsV0FBVyxLQUFLLFdBQVcsSUFBSSxLQUFLO0FBQUEsSUFDbEc7QUFBQSxJQUNBLEtBQUssNEJBQWU7QUFBQSxJQUNwQixLQUFLLDRCQUFlLHFCQUFxQjtBQUN2QyxhQUFPLFlBQVksS0FBSyxHQUFHLEtBQUssS0FBSztBQUFBLElBQ3ZDO0FBQUEsSUFDQSxTQUFTO0FBQ1AsYUFBTyxLQUFLO0FBQUEsSUFDZDtBQUFBLEVBQ0Y7QUFDRjtBQVVBLFNBQVMsc0JBQXNCLFFBQThCLHFCQUFzRDtBQUNqSCxNQUFJLE9BQU8sU0FBUyw0QkFBZSxtQkFBbUI7QUFDcEQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLE9BQU8sWUFBWSxPQUFPLEdBQUc7QUFDbkMsTUFBSSxTQUFTLFFBQVEsQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLEdBQUc7QUFDbEQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLGlCQUFpQixPQUFPLE9BQU8sQ0FBQztBQUN0QyxTQUFPLGdCQUFnQixTQUFTLDRCQUFlLGNBQWMsZUFBZSxtQkFBbUIsVUFDMUYsb0JBQW9CLGVBQWUsZUFBZSxjQUFjO0FBQ3ZFO0FBUUEsU0FBUyxZQUFZLEtBQTJDO0FBQzlELE1BQUksSUFBSSxTQUFTLDRCQUFlLFlBQVk7QUFDMUMsV0FBTyxJQUFJO0FBQUEsRUFDYjtBQUVBLFNBQU8sSUFBSSxTQUFTLDRCQUFlLFdBQVcsT0FBTyxJQUFJLFVBQVUsV0FBVyxJQUFJLFFBQVE7QUFDNUY7IiwibmFtZXMiOltdfQ==
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9uby1sb2NhbC1vYnNpZGlhbi1pbnRlcm5hbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiBuby1sb2NhbC1vYnNpZGlhbi1pbnRlcm5hbHNcbiAqXG4gKiBSZXBvcnRzIGV2ZXJ5IG1lbWJlciBhIGBkZWNsYXJlIG1vZHVsZSAnb2JzaWRpYW4nYCBhdWdtZW50YXRpb24gYWRkcyB0byBPYnNpZGlhbidzIHR5cGVzLlxuICpcbiAqIE9ic2lkaWFuJ3MgaW50ZXJuYWwgKHVuZG9jdW1lbnRlZCkgQVBJIGlzIHR5cGVkIGluIGBvYnNpZGlhbi10eXBpbmdzYCwgd2hlcmUgZWFjaCBtZW1iZXIgaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZVxuICogc2hpcHBlZCBgYXBwLmpzYCBvbiBldmVyeSByZWxlYXNlIHRoYXQgaGFzIGl0LiBBIGxvY2FsIGF1Z21lbnRhdGlvbiBpcyBhIHNlY29uZCwgdW5jaGVja2VkIGNvcHkgb2YgdGhlIHNhbWVcbiAqIGNsYWltOiBpdCBkcmlmdHMgZnJvbSB3aGF0IE9ic2lkaWFuIGFjdHVhbGx5IHNoaXBzLCBhbmQgd2hlbiBgb2JzaWRpYW4tdHlwaW5nc2AgZ2FpbnMgdGhlIG1lbWJlciB0aGUgdHdvXG4gKiBkZWNsYXJhdGlvbnMgbWVyZ2Ugc2lsZW50bHksIG9yIGNsYXNoLiBUaGUgZml4IGZvciBhIG1lbWJlciBgb2JzaWRpYW4tdHlwaW5nc2AgbGFja3Mgb3IgZGVjbGFyZXMgd3JvbmdseSBnb2VzXG4gKiBpbnRvIGBvYnNpZGlhbi10eXBpbmdzYCwgYW5kIHRoZSBjb25zdW1lciBpbXBvcnRzIGl0IGZyb20gdGhlcmUuXG4gKlxuICogT25lIHNoYXBlIGlzIGV4ZW1wdDogYW4gb3ZlcmxvYWQgb2YgYG9uYCwgYG9mZmAsIGB0cmlnZ2VyYCBvciBgdHJ5VHJpZ2dlcmAgd2hvc2UgZmlyc3QgcGFyYW1ldGVyIGlzIGFcbiAqIHN0cmluZy1saXRlcmFsIHR5cGUsIG9yIGEgdW5pb24gb2YgdGhlbS4gVGhhdCBpcyBob3cgYSBwbHVnaW4gdHlwZXMgaXRzIE9XTiBjdXN0b20gZXZlbnRzIG9uIGBXb3Jrc3BhY2VgIG9yXG4gKiBhbm90aGVyIGBFdmVudHNgIHN1YmNsYXNzLCBzbyBpdCBkZXNjcmliZXMgdGhlIHBsdWdpbidzIGNvZGUgcmF0aGVyIHRoYW4gT2JzaWRpYW4ncy4gQSBuYW1lIHR5cGVkIHRocm91Z2ggYW5cbiAqIGFsaWFzIChgbmFtZTogTXlFdmVudE5hbWVgKSBpcyByZWNvZ25pemVkIG9ubHkgd2hlbiB0aGUgZmlsZSBpcyBsaW50ZWQgd2l0aCB0eXBlIGluZm9ybWF0aW9uLCB3aGljaCB0aGUgc2hhcmVkXG4gKiBjb25maWd1cmF0aW9uIGFsd2F5cyBoYXMuXG4gKlxuICogT25seSB0aGUgbW9kdWxlIG5hbWVkIGV4YWN0bHkgYG9ic2lkaWFuYCBpcyByZWFkLiBBIGBkZWNsYXJlIG1vZHVsZSAnb2JzaWRpYW4tdHlwaW5ncydgIGF1Z21lbnRhdGlvbiBvZlxuICogYFBsdWdpbnNQbHVnaW5zUmVjb3JkYCBpcyBgb2JzaWRpYW4tdHlwaW5nc2AnIGRlc2lnbmVkIGV4dGVuc2lvbiBwb2ludCBmb3IgdGhpcmQtcGFydHkgcGx1Z2luIHR5cGVzLCBhbmQgaXNcbiAqIG5vdCByZXBvcnRlZC5cbiAqXG4gKiBOb3QgYXR0ZW1wdGVkOiBhIGxvY2FsIGludGVyZmFjZSBvciBhbiBpbmxpbmUgY2FzdCB0aGF0IHNwZWxscyBhbiBpbnRlcm5hbCBzaGFwZSBjYW5ub3QgYmUgdG9sZCBhcGFydCBmcm9tIGFcbiAqIHJlcG9zaXRvcnkncyBvd24gdHlwZXMgbWVjaGFuaWNhbGx5LCBzbyB0aG9zZSBhcmUgbGVmdCB0byByZXZpZXcuXG4gKi9cbmltcG9ydCB0eXBlIHtcbiAgUGFyc2VyU2VydmljZXMsXG4gIFRTRVNUcmVlXG59IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscyc7XG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuaW1wb3J0IHR5cGUgeyBUeXBlTm9kZSB9IGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgeyB0b1RTRVNUcmVlTm9kZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2xpbnRlcnMvZXNsaW50LXJ1bGVzL3RzLWVzdHJlZS1ub2RlJztcbmltcG9ydCB7IEFTVF9OT0RFX1RZUEVTIH0gZnJvbSAnQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzJztcblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIGZvciBhIG1lbWJlciBhIGBkZWNsYXJlIG1vZHVsZSAnb2JzaWRpYW4nYCBhdWdtZW50YXRpb24gYWRkcy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAnbm9Mb2NhbE9ic2lkaWFuSW50ZXJuYWxzJztcblxuLyoqXG5UaGUgbW9kdWxlIG5hbWUgd2hvc2UgYXVnbWVudGF0aW9ucyBhcmUgcmVwb3J0ZWQuXG4gKi9cbmNvbnN0IE9CU0lESUFOX01PRFVMRV9OQU1FID0gJ29ic2lkaWFuJztcblxuLyoqXG5UaGUgYEV2ZW50c2AgbWV0aG9kcyBhIGN1c3RvbS1ldmVudCBvdmVybG9hZCBtYXkgYmUgZGVjbGFyZWQgb24uXG4gKi9cbmNvbnN0IEVWRU5UX01FVEhPRF9OQU1FUyA9IG5ldyBTZXQoWydvZmYnLCAnb24nLCAndHJpZ2dlcicsICd0cnlUcmlnZ2VyJ10pO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgdHlwZSBpcyBhIHN0cmluZy1saXRlcmFsIHR5cGUsIG9yIGEgdW5pb24gbWFkZSBvbmx5IG9mIHRoZW0uXG4gKi9cbnR5cGUgU3RyaW5nTGl0ZXJhbFR5cGVDaGVjayA9ICh0eXBlTm9kZTogVFNFU1RyZWUuVHlwZU5vZGUpID0+IGJvb2xlYW47XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgZGlzYWxsb3dpbmcgbG9jYWxseSBkZWNsYXJlZCBPYnNpZGlhbiBpbnRlcm5hbHMgaW4gYSBgZGVjbGFyZSBtb2R1bGUgJ29ic2lkaWFuJ2AgYXVnbWVudGF0aW9uLlxuICovXG5leHBvcnQgY29uc3Qgbm9Mb2NhbE9ic2lkaWFuSW50ZXJuYWxzOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdUU01vZHVsZURlY2xhcmF0aW9uJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9kdWxlTm9kZSA9IHRvVFNFU1RyZWVOb2RlKG5vZGUpIGFzIFRTRVNUcmVlLlRTTW9kdWxlRGVjbGFyYXRpb247XG5cbiAgICAgICAgaWYgKG1vZHVsZU5vZGUuaWQudHlwZSAhPT0gQVNUX05PREVfVFlQRVMuTGl0ZXJhbCB8fCBtb2R1bGVOb2RlLmlkLnZhbHVlICE9PSBPQlNJRElBTl9NT0RVTEVfTkFNRSB8fCAhbW9kdWxlTm9kZS5ib2R5KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNTdHJpbmdMaXRlcmFsVHlwZSA9IGNyZWF0ZVN0cmluZ0xpdGVyYWxUeXBlQ2hlY2soY29udGV4dCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2YgbW9kdWxlTm9kZS5ib2R5LmJvZHkpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHJlcG9ydGVkIG9mIGNvbGxlY3RSZXBvcnRlZE5vZGVzKHN0YXRlbWVudCwgaXNTdHJpbmdMaXRlcmFsVHlwZSkpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgZGF0YTogeyBuYW1lOiBkZXNjcmliZU5vZGUocmVwb3J0ZWQpIH0sXG4gICAgICAgICAgICAgIGxvYzogcmVwb3J0ZWQubG9jLFxuICAgICAgICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0Rpc2FsbG93IGRlY2xhcmluZyBPYnNpZGlhbiBpbnRlcm5hbHMgbG9jYWxseSBpbiBhIGBkZWNsYXJlIG1vZHVsZSBcXCdvYnNpZGlhblxcJ2AgYXVnbWVudGF0aW9uJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ2B7eyBuYW1lIH19YCBkZWNsYXJlcyBPYnNpZGlhbiBBUEkgbG9jYWxseS4gSW1wb3J0IGl0IGZyb20gYG9ic2lkaWFuLXR5cGluZ3NgIGluc3RlYWQsIGFkZGluZyBpdCB0aGVyZSBmaXJzdCBpZiBpdCBpcyBtaXNzaW5nIG9yIHdyb25nLiBPbmx5IGEgY3VzdG9tLWV2ZW50IG92ZXJsb2FkIG9mIGBvbmAgLyBgb2ZmYCAvIGB0cmlnZ2VyYCAvIGB0cnlUcmlnZ2VyYCBtYXkgc3RheSBoZXJlLidcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogJ3Byb2JsZW0nXG4gIH1cbn07XG5cbi8qKlxuICogQ29sbGVjdHMgdGhlIG5vZGVzIHRvIHJlcG9ydCBmb3Igb25lIHN0YXRlbWVudCBvZiBhIGBkZWNsYXJlIG1vZHVsZSAnb2JzaWRpYW4nYCBibG9jay5cbiAqXG4gKiBBbiBpbnRlcmZhY2UgaXMgcmVwb3J0ZWQgbWVtYmVyIGJ5IG1lbWJlciwgc28gYSBjdXN0b20tZXZlbnQgb3ZlcmxvYWQgY2FuIHNpdCBiZXNpZGUgYSByZXBvcnRlZCBtZW1iZXIsIGFuZCBpdHNcbiAqIGBleHRlbmRzYCBjbGF1c2UgaXMgcmVwb3J0ZWQgdG9vLCBzaW5jZSB0aGF0IGJvbHRzIG1lbWJlcnMgb24gYXMgc3VyZWx5IGFzIGRlY2xhcmluZyB0aGVtLiBBbnkgb3RoZXIgc3RhdGVtZW50XG4gKiAoYSBjbGFzcywgYSBmdW5jdGlvbiwgYSB0eXBlIGFsaWFzLCBhIHZhcmlhYmxlKSBpcyByZXBvcnRlZCB3aG9sZS5cbiAqXG4gKiBAcGFyYW0gc3RhdGVtZW50IC0gQSBzdGF0ZW1lbnQgb2YgdGhlIG1vZHVsZSBibG9jay5cbiAqIEBwYXJhbSBpc1N0cmluZ0xpdGVyYWxUeXBlIC0gVGhlIGNoZWNrIG9mIHdoZXRoZXIgYSB0eXBlIGlzIGEgc3RyaW5nLWxpdGVyYWwgdHlwZSBvciBhIHVuaW9uIG9mIHRoZW0uXG4gKiBAcmV0dXJucyBUaGUgbm9kZXMgdG8gcmVwb3J0LlxuICovXG5mdW5jdGlvbiBjb2xsZWN0UmVwb3J0ZWROb2RlcyhzdGF0ZW1lbnQ6IFRTRVNUcmVlLlByb2dyYW1TdGF0ZW1lbnQsIGlzU3RyaW5nTGl0ZXJhbFR5cGU6IFN0cmluZ0xpdGVyYWxUeXBlQ2hlY2spOiBUU0VTVHJlZS5Ob2RlW10ge1xuICBjb25zdCBkZWNsYXJhdGlvbiA9IHN0YXRlbWVudC50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5FeHBvcnROYW1lZERlY2xhcmF0aW9uICYmIHN0YXRlbWVudC5kZWNsYXJhdGlvbiA/IHN0YXRlbWVudC5kZWNsYXJhdGlvbiA6IHN0YXRlbWVudDtcblxuICBpZiAoZGVjbGFyYXRpb24udHlwZSAhPT0gQVNUX05PREVfVFlQRVMuVFNJbnRlcmZhY2VEZWNsYXJhdGlvbikge1xuICAgIHJldHVybiBbZGVjbGFyYXRpb25dO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICAuLi5kZWNsYXJhdGlvbi5leHRlbmRzLFxuICAgIC4uLmRlY2xhcmF0aW9uLmJvZHkuYm9keS5maWx0ZXIoKG1lbWJlcikgPT4gIWlzQ3VzdG9tRXZlbnRPdmVybG9hZChtZW1iZXIsIGlzU3RyaW5nTGl0ZXJhbFR5cGUpKVxuICBdO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNoZWNrIG9mIHdoZXRoZXIgYSB0eXBlIGlzIGEgc3RyaW5nLWxpdGVyYWwgdHlwZSwgb3IgYSB1bmlvbiBtYWRlIG9ubHkgb2YgdGhlbS5cbiAqXG4gKiBBIHR5cGUgd3JpdHRlbiBvdXQgYXMgbGl0ZXJhbHMgKGAnbXktZXZlbnQnIHwgJ290aGVyLWV2ZW50J2ApIGlzIHJlY29nbml6ZWQgZnJvbSB0aGUgc3ludGF4IGFsb25lLiBBIHR5cGUgcmVhY2hlZFxuICogdGhyb3VnaCBhbiBhbGlhcyAoYG5hbWU6IE15RXZlbnROYW1lYCkgbmVlZHMgdGhlIHR5cGUgY2hlY2tlciwgc28gaXQgaXMgcmVjb2duaXplZCBvbmx5IHdoZW4gdGhlIGZpbGUgaXMgbGludGVkXG4gKiB3aXRoIHR5cGUgaW5mb3JtYXRpb24sIGFuZCByZXBvcnRlZCBvdGhlcndpc2UuXG4gKlxuICogQHBhcmFtIGNvbnRleHQgLSBUaGUgcnVsZSBjb250ZXh0LlxuICogQHJldHVybnMgVGhlIGNoZWNrLlxuICovXG5mdW5jdGlvbiBjcmVhdGVTdHJpbmdMaXRlcmFsVHlwZUNoZWNrKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBTdHJpbmdMaXRlcmFsVHlwZUNoZWNrIHtcbiAgY29uc3Qgc2VydmljZXMgPSBjb250ZXh0LnNvdXJjZUNvZGUucGFyc2VyU2VydmljZXMgYXMgUGFyc2VyU2VydmljZXM7XG4gIGNvbnN0IGNoZWNrZXIgPSBzZXJ2aWNlcy5wcm9ncmFtPy5nZXRUeXBlQ2hlY2tlcigpID8/IG51bGw7XG5cbiAgcmV0dXJuIGlzU3RyaW5nTGl0ZXJhbFR5cGU7XG5cbiAgZnVuY3Rpb24gaXNTdHJpbmdMaXRlcmFsVHlwZSh0eXBlTm9kZTogVFNFU1RyZWUuVHlwZU5vZGUpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZU5vZGUudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuVFNVbmlvblR5cGUpIHtcbiAgICAgIHJldHVybiB0eXBlTm9kZS50eXBlcy5ldmVyeSgobWVtYmVyKSA9PiBpc1N0cmluZ0xpdGVyYWxUeXBlKG1lbWJlcikpO1xuICAgIH1cblxuICAgIGlmICh0eXBlTm9kZS50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5UU0xpdGVyYWxUeXBlKSB7XG4gICAgICByZXR1cm4gdHlwZU5vZGUubGl0ZXJhbC50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5MaXRlcmFsICYmIHR5cGVvZiB0eXBlTm9kZS5saXRlcmFsLnZhbHVlID09PSAnc3RyaW5nJztcbiAgICB9XG5cbiAgICBpZiAoIWNoZWNrZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlID0gY2hlY2tlci5nZXRUeXBlRnJvbVR5cGVOb2RlKHNlcnZpY2VzLmVzVHJlZU5vZGVUb1RTTm9kZU1hcC5nZXQodHlwZU5vZGUpIGFzIFR5cGVOb2RlKTtcbiAgICByZXR1cm4gdHlwZS5pc1VuaW9uKCkgPyB0eXBlLnR5cGVzLmV2ZXJ5KChtZW1iZXIpID0+IG1lbWJlci5pc1N0cmluZ0xpdGVyYWwoKSkgOiB0eXBlLmlzU3RyaW5nTGl0ZXJhbCgpO1xuICB9XG59XG5cbi8qKlxuICogTmFtZXMgYSByZXBvcnRlZCBub2RlIGZvciB0aGUgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIFRoZSByZXBvcnRlZCBub2RlLlxuICogQHJldHVybnMgVGhlIG5hbWUgdG8gc2hvdy5cbiAqL1xuZnVuY3Rpb24gZGVzY3JpYmVOb2RlKG5vZGU6IFRTRVNUcmVlLk5vZGUpOiBzdHJpbmcge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIGNhc2UgQVNUX05PREVfVFlQRVMuQ2xhc3NEZWNsYXJhdGlvbjpcbiAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLkZ1bmN0aW9uRGVjbGFyYXRpb246XG4gICAgY2FzZSBBU1RfTk9ERV9UWVBFUy5UU0RlY2xhcmVGdW5jdGlvbjpcbiAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLlRTRW51bURlY2xhcmF0aW9uOlxuICAgIGNhc2UgQVNUX05PREVfVFlQRVMuVFNNb2R1bGVEZWNsYXJhdGlvbjpcbiAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLlRTVHlwZUFsaWFzRGVjbGFyYXRpb246IHtcbiAgICAgIHJldHVybiBub2RlLmlkPy50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5JZGVudGlmaWVyID8gbm9kZS5pZC5uYW1lIDogbm9kZS50eXBlO1xuICAgIH1cbiAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLlRTSW50ZXJmYWNlSGVyaXRhZ2U6IHtcbiAgICAgIHJldHVybiBub2RlLmV4cHJlc3Npb24udHlwZSA9PT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllciA/IGBleHRlbmRzICR7bm9kZS5leHByZXNzaW9uLm5hbWV9YCA6ICdleHRlbmRzJztcbiAgICB9XG4gICAgY2FzZSBBU1RfTk9ERV9UWVBFUy5UU01ldGhvZFNpZ25hdHVyZTpcbiAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLlRTUHJvcGVydHlTaWduYXR1cmU6IHtcbiAgICAgIHJldHVybiByZWFkS2V5TmFtZShub2RlLmtleSkgPz8gbm9kZS50eXBlO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGFuIGludGVyZmFjZSBtZW1iZXIgaXMgYSBjdXN0b20tZXZlbnQgb3ZlcmxvYWQ6IGFuIGBvbmAgLyBgb2ZmYCAvIGB0cmlnZ2VyYCAvIGB0cnlUcmlnZ2VyYCBtZXRob2RcbiAqIHdob3NlIGZpcnN0IHBhcmFtZXRlciBpcyB0eXBlZCBhcyBhIHN0cmluZy1saXRlcmFsIHR5cGUgb3IgYSB1bmlvbiBvZiB0aGVtLlxuICpcbiAqIEBwYXJhbSBtZW1iZXIgLSBUaGUgaW50ZXJmYWNlIG1lbWJlci5cbiAqIEBwYXJhbSBpc1N0cmluZ0xpdGVyYWxUeXBlIC0gVGhlIGNoZWNrIG9mIHdoZXRoZXIgYSB0eXBlIGlzIGEgc3RyaW5nLWxpdGVyYWwgdHlwZSBvciBhIHVuaW9uIG9mIHRoZW0uXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgbWVtYmVyIGlzIGV4ZW1wdC5cbiAqL1xuZnVuY3Rpb24gaXNDdXN0b21FdmVudE92ZXJsb2FkKG1lbWJlcjogVFNFU1RyZWUuVHlwZUVsZW1lbnQsIGlzU3RyaW5nTGl0ZXJhbFR5cGU6IFN0cmluZ0xpdGVyYWxUeXBlQ2hlY2spOiBib29sZWFuIHtcbiAgaWYgKG1lbWJlci50eXBlICE9PSBBU1RfTk9ERV9UWVBFUy5UU01ldGhvZFNpZ25hdHVyZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IG5hbWUgPSByZWFkS2V5TmFtZShtZW1iZXIua2V5KTtcbiAgaWYgKG5hbWUgPT09IG51bGwgfHwgIUVWRU5UX01FVEhPRF9OQU1FUy5oYXMobmFtZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBmaXJzdFBhcmFtZXRlciA9IG1lbWJlci5wYXJhbXNbMF07XG4gIHJldHVybiBmaXJzdFBhcmFtZXRlcj8udHlwZSA9PT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllciAmJiBmaXJzdFBhcmFtZXRlci50eXBlQW5ub3RhdGlvbiAhPT0gdW5kZWZpbmVkXG4gICAgJiYgaXNTdHJpbmdMaXRlcmFsVHlwZShmaXJzdFBhcmFtZXRlci50eXBlQW5ub3RhdGlvbi50eXBlQW5ub3RhdGlvbik7XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIG5hbWUgb2YgYSBtZW1iZXIga2V5IHdyaXR0ZW4gYXMgYW4gaWRlbnRpZmllciBvciBhIHN0cmluZyBsaXRlcmFsLlxuICpcbiAqIEBwYXJhbSBrZXkgLSBUaGUgbWVtYmVyIGtleS5cbiAqIEByZXR1cm5zIFRoZSBuYW1lLCBvciBgbnVsbGAgZm9yIGEgY29tcHV0ZWQga2V5LlxuICovXG5mdW5jdGlvbiByZWFkS2V5TmFtZShrZXk6IFRTRVNUcmVlLlByb3BlcnR5TmFtZSk6IG51bGwgfCBzdHJpbmcge1xuICBpZiAoa2V5LnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXIpIHtcbiAgICByZXR1cm4ga2V5Lm5hbWU7XG4gIH1cblxuICByZXR1cm4ga2V5LnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLkxpdGVyYWwgJiYgdHlwZW9mIGtleS52YWx1ZSA9PT0gJ3N0cmluZycgPyBrZXkudmFsdWUgOiBudWxsO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFB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
|