aws-delivlib 14.15.96 → 14.15.98
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/lib/build-spec.d.ts +12 -12
- package/lib/build-spec.js +1 -1
- package/lib/custom-resource-handlers/src/certificate-signing-request.tsbuildinfo +1 -1
- package/lib/custom-resource-handlers/src/pgp-secret.tsbuildinfo +1 -1
- package/lib/custom-resource-handlers/src/private-key.tsbuildinfo +1 -1
- package/lib/open-pgp-key-pair.js +1 -1
- package/lib/package-integrity/handler/validate.bundle.js +158 -112
- package/lib/pipeline.js +1 -1
- package/lib/publishing/github/node_modules/.yarn-integrity +4 -4
- package/lib/publishing/github/node_modules/@types/jsonwebtoken/node_modules/@types/node/README.md +1 -1
- package/lib/publishing/github/node_modules/@types/jsonwebtoken/node_modules/@types/node/cluster.d.ts +1 -1
- package/lib/publishing/github/node_modules/@types/jsonwebtoken/node_modules/@types/node/diagnostics_channel.d.ts +20 -1
- package/lib/publishing/github/node_modules/@types/jsonwebtoken/node_modules/@types/node/fs/promises.d.ts +13 -0
- package/lib/publishing/github/node_modules/@types/jsonwebtoken/node_modules/@types/node/fs.d.ts +86 -2
- package/lib/publishing/github/node_modules/@types/jsonwebtoken/node_modules/@types/node/http.d.ts +2 -1
- package/lib/publishing/github/node_modules/@types/jsonwebtoken/node_modules/@types/node/net.d.ts +12 -6
- package/lib/publishing/github/node_modules/@types/jsonwebtoken/node_modules/@types/node/package.json +2 -2
- package/lib/publishing/github/node_modules/@types/jsonwebtoken/node_modules/@types/node/vm.d.ts +20 -5
- package/lib/publishing/github/node_modules/jwa/index.js +16 -2
- package/lib/publishing/github/node_modules/jwa/package.json +2 -2
- package/lib/publishing/github/node_modules/semver/bin/semver.js +2 -0
- package/lib/publishing/github/node_modules/semver/classes/comparator.js +2 -0
- package/lib/publishing/github/node_modules/semver/classes/index.js +2 -0
- package/lib/publishing/github/node_modules/semver/classes/range.js +2 -0
- package/lib/publishing/github/node_modules/semver/classes/semver.js +4 -3
- package/lib/publishing/github/node_modules/semver/functions/clean.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/cmp.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/coerce.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/compare-build.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/compare-loose.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/compare.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/diff.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/eq.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/gt.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/gte.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/inc.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/lt.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/lte.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/major.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/minor.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/neq.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/parse.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/patch.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/prerelease.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/rcompare.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/rsort.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/satisfies.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/sort.js +2 -0
- package/lib/publishing/github/node_modules/semver/functions/valid.js +2 -0
- package/lib/publishing/github/node_modules/semver/index.js +2 -0
- package/lib/publishing/github/node_modules/semver/internal/constants.js +2 -0
- package/lib/publishing/github/node_modules/semver/internal/debug.js +2 -0
- package/lib/publishing/github/node_modules/semver/internal/identifiers.js +2 -0
- package/lib/publishing/github/node_modules/semver/internal/lrucache.js +2 -0
- package/lib/publishing/github/node_modules/semver/internal/parse-options.js +2 -0
- package/lib/publishing/github/node_modules/semver/internal/re.js +8 -4
- package/lib/publishing/github/node_modules/semver/package.json +3 -3
- package/lib/publishing/github/node_modules/semver/preload.js +2 -0
- package/lib/publishing/github/node_modules/semver/ranges/gtr.js +2 -0
- package/lib/publishing/github/node_modules/semver/ranges/intersects.js +2 -0
- package/lib/publishing/github/node_modules/semver/ranges/ltr.js +2 -0
- package/lib/publishing/github/node_modules/semver/ranges/max-satisfying.js +2 -0
- package/lib/publishing/github/node_modules/semver/ranges/min-satisfying.js +2 -0
- package/lib/publishing/github/node_modules/semver/ranges/min-version.js +2 -0
- package/lib/publishing/github/node_modules/semver/ranges/outside.js +2 -0
- package/lib/publishing/github/node_modules/semver/ranges/simplify.js +2 -0
- package/lib/publishing/github/node_modules/semver/ranges/subset.js +2 -0
- package/lib/publishing/github/node_modules/semver/ranges/to-comparators.js +2 -0
- package/lib/publishing/github/node_modules/semver/ranges/valid.js +2 -0
- package/lib/shellable.js +1 -1
- package/lib/util.js +1 -1
- package/package.json +9 -9
package/lib/build-spec.d.ts
CHANGED
@@ -47,20 +47,20 @@ export interface SimpleBuildSpecProps {
|
|
47
47
|
};
|
48
48
|
}
|
49
49
|
export interface BuildSpecStruct {
|
50
|
-
version: '0.2';
|
50
|
+
'version': '0.2';
|
51
51
|
'run-as'?: string;
|
52
|
-
env?: EnvStruct;
|
53
|
-
phases?: {
|
52
|
+
'env'?: EnvStruct;
|
53
|
+
'phases'?: {
|
54
54
|
[key: string]: PhaseStruct;
|
55
55
|
};
|
56
|
-
artifacts?: PrimaryArtifactStruct;
|
57
|
-
cache?: CacheStruct;
|
58
|
-
reports?: {
|
56
|
+
'artifacts'?: PrimaryArtifactStruct;
|
57
|
+
'cache'?: CacheStruct;
|
58
|
+
'reports'?: {
|
59
59
|
[key: string]: ReportStruct;
|
60
60
|
};
|
61
61
|
}
|
62
62
|
export interface EnvStruct {
|
63
|
-
variables?: {
|
63
|
+
'variables'?: {
|
64
64
|
[key: string]: string;
|
65
65
|
};
|
66
66
|
'parameter-store'?: {
|
@@ -70,18 +70,18 @@ export interface EnvStruct {
|
|
70
70
|
}
|
71
71
|
export interface PhaseStruct {
|
72
72
|
'run-as'?: string;
|
73
|
-
commands: string[];
|
74
|
-
finally?: string[];
|
73
|
+
'commands': string[];
|
74
|
+
'finally'?: string[];
|
75
75
|
}
|
76
76
|
export interface ReportStruct {
|
77
|
-
files?: string[];
|
77
|
+
'files'?: string[];
|
78
78
|
'base-directory'?: string;
|
79
79
|
'discard-paths'?: 'yes' | 'no';
|
80
80
|
'file-format'?: 'CucumberJson' | 'JunitXml' | 'NunitXml' | 'TestNGXml' | 'VisualStudioTrx';
|
81
81
|
}
|
82
82
|
export interface ArtifactStruct {
|
83
|
-
files?: string[];
|
84
|
-
name?: string;
|
83
|
+
'files'?: string[];
|
84
|
+
'name'?: string;
|
85
85
|
'base-directory'?: string;
|
86
86
|
'discard-paths'?: 'yes' | 'no';
|
87
87
|
}
|
package/lib/build-spec.js
CHANGED
@@ -167,4 +167,4 @@ function renameKey(xs, orig, rename) {
|
|
167
167
|
}
|
168
168
|
return ret;
|
169
169
|
}
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkLXNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWdEO0FBR2hELE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFhLFNBQVM7SUFDYixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQXVCO1FBQzNDLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBMkI7UUFDOUMsaUZBQWlGO1FBQ2pGLHlEQUF5RDtRQUN6RCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUMxQyxLQUFLLENBQUMsNkJBQTZCLElBQUksRUFBRSxFQUN6QyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2xGLENBQUM7UUFFRixJQUFJLFNBQTRDLENBQUM7UUFDakQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckQsU0FBUyxHQUFHO2dCQUNWLHFCQUFxQixFQUFFLElBQUEsZ0JBQVMsRUFBQyxtQkFBb0IsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzNELGdCQUFnQixFQUFFLENBQUM7b0JBQ25CLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztpQkFDbEIsQ0FBQyxDQUFDO2FBQ0osQ0FBQztTQUNIO1FBRUQsT0FBTyxJQUFJLFNBQVMsQ0FBQztZQUNuQixPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxJQUFBLGtCQUFXLEVBQUM7Z0JBQ2xCLE9BQU8sRUFB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U0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztTQUMzSTtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBMUlELDhCQTBJQztBQXlFRDs7R0FFRztBQUNILFNBQVMsa0JBQWtCLENBQUksRUFBc0I7SUFDbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3BCO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFJLEVBQXNCLEVBQUUsSUFBWSxFQUFFLE1BQWM7SUFDeEUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEMsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFO1FBQ2YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsQjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcFZhbHVlcywgbm9VbmRlZmluZWQgfSBmcm9tICcuL3V0aWwnO1xuXG5cbmNvbnN0IE1BR0lDX0FSVElGQUNUX05BTUUgPSAnUFJJTUFSWSc7XG5cbi8qKlxuICogQ2xhc3MgdG8gbW9kZWwgYSBidWlsZHNwZWMgdmVyc2lvbiAwLjJcbiAqXG4gKiBBcnRpZmFjdCBoYW5kbGluZyBpcyBhIGxpdHRsZSBzcGVjaWFsOiBDb2RlQnVpbGQgd2lsbCBpbnRlcnByZXQgdGhlXG4gKiAnYXJ0aWZhY3RzJyBzZWN0aW9uIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZXJlIGFyZSBzZWNvbmRhcnlcbiAqIGFydGlmYWN0cyBvciBub3QuXG4gKlxuICogSWYgdGhlcmUgaXMgb25seSBvbmUgYXJ0aWZhY3QsIHRoZSBzaW5nbGUgYXJ0aWZhY3QgbXVzdCBnbyBpbnRvIHRoZSB0b3AtbGV2ZWxcbiAqICdhcnRpZmFjdHMnIHNlY3Rpb24uIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBhcnRpZmFjdHMsIGFsbCBvZiB0aGVtIG11c3QgZ29cbiAqIGludG8gdGhlICdzZWNvbmRhcnktYXJ0aWZhY3RzJyBzZWN0aW9uLiBVcG9uIHJlbmRlcmluZyB0byBKU09OLCB0aGUgY2FsbGVyXG4gKiBtdXN0IHN1cHBseSB0aGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBhcnRpZmFjdCAoaXQncyBkZXRlcm1pbmVkIGJ5XG4gKiB0aGUgQ29kZVBpcGVsaW5lIEFjdGlvbiB0aGF0IGludm9rZXMgdGhlIENvZGVCdWlsZCBQcm9qZWN0IHRoYXQgdXNlcyB0aGlzXG4gKiBidWlsZHNwZWMpLlxuICpcbiAqIElOVkFSSUFOVDogaW4tbWVtb3J5LCB0aGUgQnVpbGRTcGVjIHdpbGwgdHJlYXQgYWxsIGFydGlmYWN0cyB0aGUgc2FtZSAoYXNcbiAqIGEgYmFnIG9mIHNlY29uZGFyeSBhcnRpZmFjdHMpLiBBdCB0aGUgZWRnZXMgKGNvbnN0cnVjdGlvbiBvciByZW5kZXJpbmcpLFxuICogaWYgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGFydGlmYWN0IGl0IHdpbGwgYmUgcmVuZGVyZWQgdG8gdGhlIHByaW1hcnlcbiAqIGFydGlmYWN0LlxuICovXG5leHBvcnQgY2xhc3MgQnVpbGRTcGVjIHtcbiAgcHVibGljIHN0YXRpYyBsaXRlcmFsKHN0cnVjdDogQnVpbGRTcGVjU3RydWN0KSB7XG4gICAgcmV0dXJuIG5ldyBCdWlsZFNwZWMoc3RydWN0KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2ltcGxlKHByb3BzOiBTaW1wbGVCdWlsZFNwZWNQcm9wcykge1xuICAgIC8vIFdlIG1lcmdlIHRoZSBwcmltYXJ5IGFydGlmYWN0IGludG8gdGhlIHNlY29uZGFyeSBhcnRpZmFjdHMgdW5kZXIgYSBzcGVjaWFsIGtleVxuICAgIC8vIFRoZXkgd2lsbCBiZSBjb21wYWN0ZWQgYmFjayB0b2dldGhlciBkdXJpbmcgcmVuZGVyaW5nLlxuICAgIGNvbnN0IGFydGlmYWN0RGlyZWN0b3JpZXMgPSBPYmplY3QuYXNzaWduKHt9LFxuICAgICAgcHJvcHMuYWRkaXRpb25hbEFydGlmYWN0RGlyZWN0b3JpZXMgfHwge30sXG4gICAgICBwcm9wcy5hcnRpZmFjdERpcmVjdG9yeSA/IHsgW01BR0lDX0FSVElGQUNUX05BTUVdOiBwcm9wcy5hcnRpZmFjdERpcmVjdG9yeSB9IDoge30sXG4gICAgKTtcblxuICAgIGxldCBhcnRpZmFjdHM6IFByaW1hcnlBcnRpZmFjdFN0cnVjdCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoT2JqZWN0LmtleXMoYXJ0aWZhY3REaXJlY3RvcmllcyB8fCB7fSkubGVuZ3RoID4gMCkge1xuICAgICAgYXJ0aWZhY3RzID0ge1xuICAgICAgICAnc2Vjb25kYXJ5LWFydGlmYWN0cyc6IG1hcFZhbHVlcyhhcnRpZmFjdERpcmVjdG9yaWVzISwgZCA9PiAoe1xuICAgICAgICAgICdiYXNlLWRpcmVjdG9yeSc6IGQsXG4gICAgICAgICAgJ2ZpbGVzJzogWycqKi8qJ10sXG4gICAgICAgIH0pKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBCdWlsZFNwZWMoe1xuICAgICAgdmVyc2lvbjogJzAuMicsXG4gICAgICBwaGFzZXM6IG5vVW5kZWZpbmVkKHtcbiAgICAgICAgaW5zdGFsbDogcHJvcHMuaW5zdGFsbCAhPT0gdW5kZWZpbmVkID8geyBjb21tYW5kczogcHJvcHMuaW5zdGFsbCB9IDogdW5kZWZpbmVkLFxuICAgICAgICBwcmVfYnVpbGQ6IHByb3BzLnByZUJ1aWxkICE9PSB1bmRlZmluZWQgPyB7IGNvbW1hbmRzOiBwcm9wcy5wcmVCdWlsZCB9IDogdW5kZWZpbmVkLFxuICAgICAgICBidWlsZDogcHJvcHMuYnVpbGQgIT09IHVuZGVmaW5lZCA/IHsgY29tbWFuZHM6IHByb3BzLmJ1aWxkIH0gOiB1bmRlZmluZWQsXG4gICAgICB9KSxcbiAgICAgIGFydGlmYWN0cyxcbiAgICAgIHJlcG9ydHM6IHByb3BzLnJlcG9ydHMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVtcHR5KCkge1xuICAgIHJldHVybiBuZXcgQnVpbGRTcGVjKHsgdmVyc2lvbjogJzAuMicgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3BlYzogQnVpbGRTcGVjU3RydWN0KSB7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFkZGl0aW9uYWxBcnRpZmFjdE5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5zcGVjLmFydGlmYWN0cyAmJiB0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10gfHwge30pLmZpbHRlcihuID0+IG4gIT09IE1BR0lDX0FSVElGQUNUX05BTUUpO1xuICB9XG5cbiAgcHVibGljIG1lcmdlKG90aGVyOiBCdWlsZFNwZWMpOiBCdWlsZFNwZWMge1xuICAgIHJldHVybiBuZXcgQnVpbGRTcGVjKHtcbiAgICAgICd2ZXJzaW9uJzogJzAuMicsXG4gICAgICAncnVuLWFzJzogbWVyZ2VPYmoodGhpcy5zcGVjWydydW4tYXMnXSwgb3RoZXIuc3BlY1sncnVuLWFzJ10sIGVxdWFsT2JqZWN0cyksXG4gICAgICAnZW52JzogbWVyZ2VPYmoodGhpcy5zcGVjLmVudiwgb3RoZXIuc3BlYy5lbnYsIChhLCBiKSA9PiAoe1xuICAgICAgICAncGFyYW1ldGVyLXN0b3JlJzogbWVyZ2VEaWN0KGFbJ3BhcmFtZXRlci1zdG9yZSddLCBiWydwYXJhbWV0ZXItc3RvcmUnXSwgZXF1YWxPYmplY3RzKSxcbiAgICAgICAgJ3ZhcmlhYmxlcyc6IG1lcmdlRGljdChhLnZhcmlhYmxlcywgYi52YXJpYWJsZXMsIGVxdWFsT2JqZWN0cyksXG4gICAgICB9KSksXG4gICAgICAncGhhc2VzJzogbWVyZ2VEaWN0KHRoaXMuc3BlYy5waGFzZXMsIG90aGVyLnNwZWMucGhhc2VzLCAoYSwgYikgPT4gKHtcbiAgICAgICAgJ3J1bi1hcyc6IG1lcmdlT2JqKHRoaXMuc3BlY1sncnVuLWFzJ10sIG90aGVyLnNwZWNbJ3J1bi1hcyddLCBlcXVhbE9iamVjdHMpLFxuICAgICAgICAnY29tbWFuZHMnOiBtZXJnZUxpc3QoYS5jb21tYW5kcywgYi5jb21tYW5kcykhLFxuICAgICAgICAnZmluYWxseSc6IG1lcmdlTGlzdChhLmZpbmFsbHksIGIuZmluYWxseSksXG4gICAgICB9KSksXG4gICAgICAnYXJ0aWZhY3RzJzogbWVyZ2VPYmoodGhpcy5zcGVjLmFydGlmYWN0cywgb3RoZXIuc3BlYy5hcnRpZmFjdHMsIG1lcmdlQXJ0aWZhY3RzKSxcbiAgICAgICdjYWNoZSc6IG1lcmdlT2JqKHRoaXMuc3BlYy5jYWNoZSwgb3RoZXIuc3BlYy5jYWNoZSwgKGEsIGIpID0+ICh7XG4gICAgICAgIHBhdGhzOiBtZXJnZUxpc3QoYS5wYXRocywgYi5wYXRocykhLFxuICAgICAgfSkpLFxuICAgICAgJ3JlcG9ydHMnOiBtZXJnZURpY3QodGhpcy5zcGVjLnJlcG9ydHMsIG90aGVyLnNwZWMucmVwb3J0cywgKGEsIGIpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXBvcnRzIG11c3QgaGF2ZSB1bmlxdWUgbmFtZXMsIGdvdCAke2F9IGFuZCAke2J9YCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIG1lcmdlQXJ0aWZhY3RzKGE6IFByaW1hcnlBcnRpZmFjdFN0cnVjdCwgYjogUHJpbWFyeUFydGlmYWN0U3RydWN0KTogUHJpbWFyeUFydGlmYWN0U3RydWN0IHtcbiAgICAgIGlmIChhLmZpbGVzIHx8IGIuZmlsZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb25lIG9mIHRoZSBCdWlsZFNwZWNzIG1heSBoYXZlIGEgcHJpbWFyeSBhcnRpZmFjdC4nKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJ0aWZhY3RzID0gT2JqZWN0LmFzc2lnbih7fSwgYVsnc2Vjb25kYXJ5LWFydGlmYWN0cyddIHx8IHt9KTtcbiAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGJbJ3NlY29uZGFyeS1hcnRpZmFjdHMnXSB8fCB7fSkpIHtcbiAgICAgICAgaWYgKGsgaW4gYXJ0aWZhY3RzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFydGlmYWN0IHdpdGggbmFtZSAke2t9YCk7XG4gICAgICAgIH1cbiAgICAgICAgYXJ0aWZhY3RzW2tdID0gdjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBhLCB7ICdzZWNvbmRhcnktYXJ0aWZhY3RzJzogYXJ0aWZhY3RzIH0pO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gZXF1YWxPYmplY3RzKGE6IHN0cmluZywgYjogc3RyaW5nKSB7XG4gICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbid0IG1lcmdlIHR3byBkaWZmZXJlbnQgdmFsdWVzIGZvciB0aGUgc2FtZSBrZXk6ICR7SlNPTi5zdHJpbmdpZnkoYSl9LCAke0pTT04uc3RyaW5naWZ5KGIpfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VPYmo8VD4oYTogVCB8IHVuZGVmaW5lZCwgYjogVCB8IHVuZGVmaW5lZCwgZm46IChhOiBULCBiOiBUKSA9PiBUKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAoYSA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBiOyB9XG4gICAgICBpZiAoYiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBhOyB9XG4gICAgICByZXR1cm4gZm4oYSwgYik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VEaWN0PFQ+KGFzOiB7W2s6IHN0cmluZ106IFR9IHwgdW5kZWZpbmVkLCBiczoge1trOiBzdHJpbmddOiBUfSB8IHVuZGVmaW5lZCwgZm46IChhOiBULCBiOiBUKSA9PiBUKSB7XG4gICAgICByZXR1cm4gbWVyZ2VPYmooYXMsIGJzLCAoYSwgYikgPT4ge1xuICAgICAgICBjb25zdCByZXQgPSBPYmplY3QuYXNzaWduKHt9LCBhKTtcbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoYikpIHtcbiAgICAgICAgICBpZiAocmV0W2tdKSB7XG4gICAgICAgICAgICByZXRba10gPSBmbihyZXRba10sIHYpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRba10gPSB2O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VMaXN0PFQ+KGFzOiBUW10gfCB1bmRlZmluZWQsIGJzOiBUW10gfCB1bmRlZmluZWQpOiBUW10gfCB1bmRlZmluZWQge1xuICAgICAgcmV0dXJuIG1lcmdlT2JqKGFzLCBicywgKGEsIGIpID0+IGEuY29uY2F0KGIpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVuZGVyKG9wdGlvbnM6IEJ1aWxkU3BlY1JlbmRlck9wdGlvbnMgPSB7fSk6IEJ1aWxkU3BlY1N0cnVjdCB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc3BlYywgeyBhcnRpZmFjdHM6IHRoaXMucmVuZGVyQXJ0aWZhY3RzKG9wdGlvbnMpIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJBcnRpZmFjdHMob3B0aW9uczogQnVpbGRTcGVjUmVuZGVyT3B0aW9ucyk6IFByaW1hcnlBcnRpZmFjdFN0cnVjdCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnNwZWMuYXJ0aWZhY3RzIHx8ICF0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10pIHsgcmV0dXJuIHRoaXMuc3BlYy5hcnRpZmFjdHM7IH1cblxuICAgIC8vIFNpbXBsaWZ5IGEgc2luZ2xlIFwic2Vjb25kYXJ5LWFydGlmYWN0c1wiIHRvIGEgc2luZ2xlIHByaW1hcnkgYXJ0aWZhY3QgKHJlZ2FyZGxlc3Mgb2YgdGhlIG5hbWUpXG4gICAgY29uc3Qgc2luZ2xlQXJ0ID0gZGljdFNpbmdsZXRvblZhbHVlKHRoaXMuc3BlYy5hcnRpZmFjdHNbJ3NlY29uZGFyeS1hcnRpZmFjdHMnXSk7XG4gICAgaWYgKHNpbmdsZUFydCkgeyByZXR1cm4gc2luZ2xlQXJ0OyB9XG5cbiAgICAvLyBPdGhlcndpc2UgcmVuYW1lIGEgJ1BSSU1BUlknIGtleSBpZiBpdCBleGlzdHNcbiAgICBpZiAoTUFHSUNfQVJUSUZBQ1RfTkFNRSBpbiB0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10pIHtcbiAgICAgIGlmICghb3B0aW9ucy5wcmltYXJ5QXJ0aWZhY3ROYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUmVwbGFjZW1lbnQgbmFtZSBmb3IgJHtNQUdJQ19BUlRJRkFDVF9OQU1FfSBhcnRpZmFjdCBub3Qgc3VwcGxpZWRgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgJ3NlY29uZGFyeS1hcnRpZmFjdHMnOiByZW5hbWVLZXkodGhpcy5zcGVjLmFydGlmYWN0c1snc2Vjb25kYXJ5LWFydGlmYWN0cyddLCBNQUdJQ19BUlRJRkFDVF9OQU1FLCBvcHRpb25zLnByaW1hcnlBcnRpZmFjdE5hbWUpIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3BlYy5hcnRpZmFjdHM7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaW1wbGVCdWlsZFNwZWNQcm9wcyB7XG4gIGluc3RhbGw/OiBzdHJpbmdbXTtcbiAgcHJlQnVpbGQ/OiBzdHJpbmdbXTtcbiAgYnVpbGQ/OiBzdHJpbmdbXTtcbiAgcmVwb3J0cz86IHtba2V5OiBzdHJpbmddOiBSZXBvcnRTdHJ1Y3R9O1xuICBhcnRpZmFjdERpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlcmUgdGhlIGRpcmVjdG9yaWVzIGZvciBlYWNoIGFydGlmYWN0IGFyZVxuICAgKlxuICAgKiBVc2Ugc3BlY2lhbCBuYW1lIFBSSU1BUlkgdG8gcmVmZXIgdG8gdGhlIHByaW1hcnkgYXJ0aWZhY3QuIFdpbGwgYmVcbiAgICogcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIGFydGlmYWN0IG5hbWUgd2hlbiB0aGUgYnVpbGQgc3BlYyBpcyBzeW50aGVzaXplZC5cbiAgICovXG4gIGFkZGl0aW9uYWxBcnRpZmFjdERpcmVjdG9yaWVzPzoge1tpZDogc3RyaW5nXTogc3RyaW5nfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFNwZWNTdHJ1Y3Qge1xuICB2ZXJzaW9uOiAnMC4yJztcbiAgJ3J1bi1hcyc/OiBzdHJpbmc7XG4gIGVudj86IEVudlN0cnVjdDtcbiAgcGhhc2VzPzoge1trZXk6IHN0cmluZ106IFBoYXNlU3RydWN0fTtcbiAgYXJ0aWZhY3RzPzogUHJpbWFyeUFydGlmYWN0U3RydWN0O1xuICBjYWNoZT86IENhY2hlU3RydWN0O1xuICByZXBvcnRzPzoge1trZXk6IHN0cmluZ106IFJlcG9ydFN0cnVjdH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52U3RydWN0IHtcbiAgdmFyaWFibGVzPzoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG4gICdwYXJhbWV0ZXItc3RvcmUnPzoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG4gICdleHBvcnRlZC12YXJpYWJsZXMnPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGhhc2VTdHJ1Y3Qge1xuICAncnVuLWFzJz86IHN0cmluZztcbiAgY29tbWFuZHM6IHN0cmluZ1tdO1xuICBmaW5hbGx5Pzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U3RydWN0IHtcbiAgZmlsZXM/OiBzdHJpbmdbXTtcbiAgJ2Jhc2UtZGlyZWN0b3J5Jz86IHN0cmluZztcbiAgJ2Rpc2NhcmQtcGF0aHMnPzogJ3llcycgfCAnbm8nO1xuICAnZmlsZS1mb3JtYXQnPzogJ0N1Y3VtYmVySnNvbicgfCAnSnVuaXRYbWwnIHwgJ051bml0WG1sJyB8ICdUZXN0TkdYbWwnIHwgJ1Zpc3VhbFN0dWRpb1RyeCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWZhY3RTdHJ1Y3Qge1xuICBmaWxlcz86IHN0cmluZ1tdO1xuICBuYW1lPzogc3RyaW5nO1xuICAnYmFzZS1kaXJlY3RvcnknPzogc3RyaW5nO1xuICAnZGlzY2FyZC1wYXRocyc/OiAneWVzJyB8ICdubyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpbWFyeUFydGlmYWN0U3RydWN0IGV4dGVuZHMgQXJ0aWZhY3RTdHJ1Y3Qge1xuICAnc2Vjb25kYXJ5LWFydGlmYWN0cyc/OiB7W2tleTogc3RyaW5nXTogQXJ0aWZhY3RTdHJ1Y3R9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlU3RydWN0IHtcbiAgcGF0aHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU3BlY1JlbmRlck9wdGlvbnMge1xuICAvKipcbiAgICogUmVwbGFjZSBQUklNQVJZIGFydGlmYWN0IG5hbWUgd2l0aCB0aGlzXG4gICAqXG4gICAqIENhbm5vdCB1c2UgdGhlIHNwZWNpYWwgdGVybSBQUklNQVJZIGlmIHRoaXMgaXMgbm90IHN1cHBsaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAgQ2Fubm90IHVzZSBQUklNQVJZXG4gICAqL1xuICBwcmltYXJ5QXJ0aWZhY3ROYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIElmIHRoZSBkaWN0IGlzIGEgc2luZ2xldG9uIGRpY3QsIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGtleSwgb3RoZXJ3aXNlIHJldHVybiB1bmRlZmluZWRcbiAqL1xuZnVuY3Rpb24gZGljdFNpbmdsZXRvblZhbHVlPFQ+KHhzOiB7W2tleTogc3RyaW5nXTogVH0pOiBUIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHhzKTtcbiAgaWYgKGtleXMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIHhzW2tleXNbMF1dO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHJlbmFtZUtleTxUPih4czoge1trZXk6IHN0cmluZ106IFR9LCBvcmlnOiBzdHJpbmcsIHJlbmFtZTogc3RyaW5nKToge1trZXk6IHN0cmluZ106IFR9IHtcbiAgY29uc3QgcmV0ID0gT2JqZWN0LmFzc2lnbih7fSwgeHMpO1xuICBpZiAob3JpZyBpbiByZXQpIHtcbiAgICByZXRbcmVuYW1lXSA9IHJldFtvcmlnXTtcbiAgICBkZWxldGUgcmV0W29yaWddO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkLXNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWdEO0FBR2hELE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFhLFNBQVM7SUFDYixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQXVCO1FBQzNDLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBMkI7UUFDOUMsaUZBQWlGO1FBQ2pGLHlEQUF5RDtRQUN6RCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUMxQyxLQUFLLENBQUMsNkJBQTZCLElBQUksRUFBRSxFQUN6QyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2xGLENBQUM7UUFFRixJQUFJLFNBQTRDLENBQUM7UUFDakQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckQsU0FBUyxHQUFHO2dCQUNWLHFCQUFxQixFQUFFLElBQUEsZ0JBQVMsRUFBQyxtQkFBb0IsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzNELGdCQUFnQixFQUFFLENBQUM7b0JBQ25CLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztpQkFDbEIsQ0FBQyxDQUFDO2FBQ0osQ0FBQztTQUNIO1FBRUQsT0FBTyxJQUFJLFNBQVMsQ0FBQztZQUNuQixPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxJQUFBLGtCQUFXLEVBQUM7Z0JBQ2xCLE9BQU8sRUFB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U0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztTQUMzSTtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBMUlELDhCQTBJQztBQXlFRDs7R0FFRztBQUNILFNBQVMsa0JBQWtCLENBQUksRUFBd0I7SUFDckQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3BCO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFJLEVBQXdCLEVBQUUsSUFBWSxFQUFFLE1BQWM7SUFDMUUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEMsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFO1FBQ2YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsQjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcFZhbHVlcywgbm9VbmRlZmluZWQgfSBmcm9tICcuL3V0aWwnO1xuXG5cbmNvbnN0IE1BR0lDX0FSVElGQUNUX05BTUUgPSAnUFJJTUFSWSc7XG5cbi8qKlxuICogQ2xhc3MgdG8gbW9kZWwgYSBidWlsZHNwZWMgdmVyc2lvbiAwLjJcbiAqXG4gKiBBcnRpZmFjdCBoYW5kbGluZyBpcyBhIGxpdHRsZSBzcGVjaWFsOiBDb2RlQnVpbGQgd2lsbCBpbnRlcnByZXQgdGhlXG4gKiAnYXJ0aWZhY3RzJyBzZWN0aW9uIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZXJlIGFyZSBzZWNvbmRhcnlcbiAqIGFydGlmYWN0cyBvciBub3QuXG4gKlxuICogSWYgdGhlcmUgaXMgb25seSBvbmUgYXJ0aWZhY3QsIHRoZSBzaW5nbGUgYXJ0aWZhY3QgbXVzdCBnbyBpbnRvIHRoZSB0b3AtbGV2ZWxcbiAqICdhcnRpZmFjdHMnIHNlY3Rpb24uIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBhcnRpZmFjdHMsIGFsbCBvZiB0aGVtIG11c3QgZ29cbiAqIGludG8gdGhlICdzZWNvbmRhcnktYXJ0aWZhY3RzJyBzZWN0aW9uLiBVcG9uIHJlbmRlcmluZyB0byBKU09OLCB0aGUgY2FsbGVyXG4gKiBtdXN0IHN1cHBseSB0aGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBhcnRpZmFjdCAoaXQncyBkZXRlcm1pbmVkIGJ5XG4gKiB0aGUgQ29kZVBpcGVsaW5lIEFjdGlvbiB0aGF0IGludm9rZXMgdGhlIENvZGVCdWlsZCBQcm9qZWN0IHRoYXQgdXNlcyB0aGlzXG4gKiBidWlsZHNwZWMpLlxuICpcbiAqIElOVkFSSUFOVDogaW4tbWVtb3J5LCB0aGUgQnVpbGRTcGVjIHdpbGwgdHJlYXQgYWxsIGFydGlmYWN0cyB0aGUgc2FtZSAoYXNcbiAqIGEgYmFnIG9mIHNlY29uZGFyeSBhcnRpZmFjdHMpLiBBdCB0aGUgZWRnZXMgKGNvbnN0cnVjdGlvbiBvciByZW5kZXJpbmcpLFxuICogaWYgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGFydGlmYWN0IGl0IHdpbGwgYmUgcmVuZGVyZWQgdG8gdGhlIHByaW1hcnlcbiAqIGFydGlmYWN0LlxuICovXG5leHBvcnQgY2xhc3MgQnVpbGRTcGVjIHtcbiAgcHVibGljIHN0YXRpYyBsaXRlcmFsKHN0cnVjdDogQnVpbGRTcGVjU3RydWN0KSB7XG4gICAgcmV0dXJuIG5ldyBCdWlsZFNwZWMoc3RydWN0KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2ltcGxlKHByb3BzOiBTaW1wbGVCdWlsZFNwZWNQcm9wcykge1xuICAgIC8vIFdlIG1lcmdlIHRoZSBwcmltYXJ5IGFydGlmYWN0IGludG8gdGhlIHNlY29uZGFyeSBhcnRpZmFjdHMgdW5kZXIgYSBzcGVjaWFsIGtleVxuICAgIC8vIFRoZXkgd2lsbCBiZSBjb21wYWN0ZWQgYmFjayB0b2dldGhlciBkdXJpbmcgcmVuZGVyaW5nLlxuICAgIGNvbnN0IGFydGlmYWN0RGlyZWN0b3JpZXMgPSBPYmplY3QuYXNzaWduKHt9LFxuICAgICAgcHJvcHMuYWRkaXRpb25hbEFydGlmYWN0RGlyZWN0b3JpZXMgfHwge30sXG4gICAgICBwcm9wcy5hcnRpZmFjdERpcmVjdG9yeSA/IHsgW01BR0lDX0FSVElGQUNUX05BTUVdOiBwcm9wcy5hcnRpZmFjdERpcmVjdG9yeSB9IDoge30sXG4gICAgKTtcblxuICAgIGxldCBhcnRpZmFjdHM6IFByaW1hcnlBcnRpZmFjdFN0cnVjdCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoT2JqZWN0LmtleXMoYXJ0aWZhY3REaXJlY3RvcmllcyB8fCB7fSkubGVuZ3RoID4gMCkge1xuICAgICAgYXJ0aWZhY3RzID0ge1xuICAgICAgICAnc2Vjb25kYXJ5LWFydGlmYWN0cyc6IG1hcFZhbHVlcyhhcnRpZmFjdERpcmVjdG9yaWVzISwgZCA9PiAoe1xuICAgICAgICAgICdiYXNlLWRpcmVjdG9yeSc6IGQsXG4gICAgICAgICAgJ2ZpbGVzJzogWycqKi8qJ10sXG4gICAgICAgIH0pKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBCdWlsZFNwZWMoe1xuICAgICAgdmVyc2lvbjogJzAuMicsXG4gICAgICBwaGFzZXM6IG5vVW5kZWZpbmVkKHtcbiAgICAgICAgaW5zdGFsbDogcHJvcHMuaW5zdGFsbCAhPT0gdW5kZWZpbmVkID8geyBjb21tYW5kczogcHJvcHMuaW5zdGFsbCB9IDogdW5kZWZpbmVkLFxuICAgICAgICBwcmVfYnVpbGQ6IHByb3BzLnByZUJ1aWxkICE9PSB1bmRlZmluZWQgPyB7IGNvbW1hbmRzOiBwcm9wcy5wcmVCdWlsZCB9IDogdW5kZWZpbmVkLFxuICAgICAgICBidWlsZDogcHJvcHMuYnVpbGQgIT09IHVuZGVmaW5lZCA/IHsgY29tbWFuZHM6IHByb3BzLmJ1aWxkIH0gOiB1bmRlZmluZWQsXG4gICAgICB9KSxcbiAgICAgIGFydGlmYWN0cyxcbiAgICAgIHJlcG9ydHM6IHByb3BzLnJlcG9ydHMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVtcHR5KCkge1xuICAgIHJldHVybiBuZXcgQnVpbGRTcGVjKHsgdmVyc2lvbjogJzAuMicgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3BlYzogQnVpbGRTcGVjU3RydWN0KSB7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFkZGl0aW9uYWxBcnRpZmFjdE5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5zcGVjLmFydGlmYWN0cyAmJiB0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10gfHwge30pLmZpbHRlcihuID0+IG4gIT09IE1BR0lDX0FSVElGQUNUX05BTUUpO1xuICB9XG5cbiAgcHVibGljIG1lcmdlKG90aGVyOiBCdWlsZFNwZWMpOiBCdWlsZFNwZWMge1xuICAgIHJldHVybiBuZXcgQnVpbGRTcGVjKHtcbiAgICAgICd2ZXJzaW9uJzogJzAuMicsXG4gICAgICAncnVuLWFzJzogbWVyZ2VPYmoodGhpcy5zcGVjWydydW4tYXMnXSwgb3RoZXIuc3BlY1sncnVuLWFzJ10sIGVxdWFsT2JqZWN0cyksXG4gICAgICAnZW52JzogbWVyZ2VPYmoodGhpcy5zcGVjLmVudiwgb3RoZXIuc3BlYy5lbnYsIChhLCBiKSA9PiAoe1xuICAgICAgICAncGFyYW1ldGVyLXN0b3JlJzogbWVyZ2VEaWN0KGFbJ3BhcmFtZXRlci1zdG9yZSddLCBiWydwYXJhbWV0ZXItc3RvcmUnXSwgZXF1YWxPYmplY3RzKSxcbiAgICAgICAgJ3ZhcmlhYmxlcyc6IG1lcmdlRGljdChhLnZhcmlhYmxlcywgYi52YXJpYWJsZXMsIGVxdWFsT2JqZWN0cyksXG4gICAgICB9KSksXG4gICAgICAncGhhc2VzJzogbWVyZ2VEaWN0KHRoaXMuc3BlYy5waGFzZXMsIG90aGVyLnNwZWMucGhhc2VzLCAoYSwgYikgPT4gKHtcbiAgICAgICAgJ3J1bi1hcyc6IG1lcmdlT2JqKHRoaXMuc3BlY1sncnVuLWFzJ10sIG90aGVyLnNwZWNbJ3J1bi1hcyddLCBlcXVhbE9iamVjdHMpLFxuICAgICAgICAnY29tbWFuZHMnOiBtZXJnZUxpc3QoYS5jb21tYW5kcywgYi5jb21tYW5kcykhLFxuICAgICAgICAnZmluYWxseSc6IG1lcmdlTGlzdChhLmZpbmFsbHksIGIuZmluYWxseSksXG4gICAgICB9KSksXG4gICAgICAnYXJ0aWZhY3RzJzogbWVyZ2VPYmoodGhpcy5zcGVjLmFydGlmYWN0cywgb3RoZXIuc3BlYy5hcnRpZmFjdHMsIG1lcmdlQXJ0aWZhY3RzKSxcbiAgICAgICdjYWNoZSc6IG1lcmdlT2JqKHRoaXMuc3BlYy5jYWNoZSwgb3RoZXIuc3BlYy5jYWNoZSwgKGEsIGIpID0+ICh7XG4gICAgICAgIHBhdGhzOiBtZXJnZUxpc3QoYS5wYXRocywgYi5wYXRocykhLFxuICAgICAgfSkpLFxuICAgICAgJ3JlcG9ydHMnOiBtZXJnZURpY3QodGhpcy5zcGVjLnJlcG9ydHMsIG90aGVyLnNwZWMucmVwb3J0cywgKGEsIGIpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXBvcnRzIG11c3QgaGF2ZSB1bmlxdWUgbmFtZXMsIGdvdCAke2F9IGFuZCAke2J9YCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIG1lcmdlQXJ0aWZhY3RzKGE6IFByaW1hcnlBcnRpZmFjdFN0cnVjdCwgYjogUHJpbWFyeUFydGlmYWN0U3RydWN0KTogUHJpbWFyeUFydGlmYWN0U3RydWN0IHtcbiAgICAgIGlmIChhLmZpbGVzIHx8IGIuZmlsZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb25lIG9mIHRoZSBCdWlsZFNwZWNzIG1heSBoYXZlIGEgcHJpbWFyeSBhcnRpZmFjdC4nKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJ0aWZhY3RzID0gT2JqZWN0LmFzc2lnbih7fSwgYVsnc2Vjb25kYXJ5LWFydGlmYWN0cyddIHx8IHt9KTtcbiAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGJbJ3NlY29uZGFyeS1hcnRpZmFjdHMnXSB8fCB7fSkpIHtcbiAgICAgICAgaWYgKGsgaW4gYXJ0aWZhY3RzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFydGlmYWN0IHdpdGggbmFtZSAke2t9YCk7XG4gICAgICAgIH1cbiAgICAgICAgYXJ0aWZhY3RzW2tdID0gdjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBhLCB7ICdzZWNvbmRhcnktYXJ0aWZhY3RzJzogYXJ0aWZhY3RzIH0pO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gZXF1YWxPYmplY3RzKGE6IHN0cmluZywgYjogc3RyaW5nKSB7XG4gICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbid0IG1lcmdlIHR3byBkaWZmZXJlbnQgdmFsdWVzIGZvciB0aGUgc2FtZSBrZXk6ICR7SlNPTi5zdHJpbmdpZnkoYSl9LCAke0pTT04uc3RyaW5naWZ5KGIpfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VPYmo8VD4oYTogVCB8IHVuZGVmaW5lZCwgYjogVCB8IHVuZGVmaW5lZCwgZm46IChhOiBULCBiOiBUKSA9PiBUKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAoYSA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBiOyB9XG4gICAgICBpZiAoYiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBhOyB9XG4gICAgICByZXR1cm4gZm4oYSwgYik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VEaWN0PFQ+KGFzOiB7IFtrOiBzdHJpbmddOiBUIH0gfCB1bmRlZmluZWQsIGJzOiB7IFtrOiBzdHJpbmddOiBUIH0gfCB1bmRlZmluZWQsIGZuOiAoYTogVCwgYjogVCkgPT4gVCkge1xuICAgICAgcmV0dXJuIG1lcmdlT2JqKGFzLCBicywgKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgcmV0ID0gT2JqZWN0LmFzc2lnbih7fSwgYSk7XG4gICAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGIpKSB7XG4gICAgICAgICAgaWYgKHJldFtrXSkge1xuICAgICAgICAgICAgcmV0W2tdID0gZm4ocmV0W2tdLCB2KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0W2tdID0gdjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlTGlzdDxUPihhczogVFtdIHwgdW5kZWZpbmVkLCBiczogVFtdIHwgdW5kZWZpbmVkKTogVFtdIHwgdW5kZWZpbmVkIHtcbiAgICAgIHJldHVybiBtZXJnZU9iaihhcywgYnMsIChhLCBiKSA9PiBhLmNvbmNhdChiKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbmRlcihvcHRpb25zOiBCdWlsZFNwZWNSZW5kZXJPcHRpb25zID0ge30pOiBCdWlsZFNwZWNTdHJ1Y3Qge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnNwZWMsIHsgYXJ0aWZhY3RzOiB0aGlzLnJlbmRlckFydGlmYWN0cyhvcHRpb25zKSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyQXJ0aWZhY3RzKG9wdGlvbnM6IEJ1aWxkU3BlY1JlbmRlck9wdGlvbnMpOiBQcmltYXJ5QXJ0aWZhY3RTdHJ1Y3QgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5zcGVjLmFydGlmYWN0cyB8fCAhdGhpcy5zcGVjLmFydGlmYWN0c1snc2Vjb25kYXJ5LWFydGlmYWN0cyddKSB7IHJldHVybiB0aGlzLnNwZWMuYXJ0aWZhY3RzOyB9XG5cbiAgICAvLyBTaW1wbGlmeSBhIHNpbmdsZSBcInNlY29uZGFyeS1hcnRpZmFjdHNcIiB0byBhIHNpbmdsZSBwcmltYXJ5IGFydGlmYWN0IChyZWdhcmRsZXNzIG9mIHRoZSBuYW1lKVxuICAgIGNvbnN0IHNpbmdsZUFydCA9IGRpY3RTaW5nbGV0b25WYWx1ZSh0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10pO1xuICAgIGlmIChzaW5nbGVBcnQpIHsgcmV0dXJuIHNpbmdsZUFydDsgfVxuXG4gICAgLy8gT3RoZXJ3aXNlIHJlbmFtZSBhICdQUklNQVJZJyBrZXkgaWYgaXQgZXhpc3RzXG4gICAgaWYgKE1BR0lDX0FSVElGQUNUX05BTUUgaW4gdGhpcy5zcGVjLmFydGlmYWN0c1snc2Vjb25kYXJ5LWFydGlmYWN0cyddKSB7XG4gICAgICBpZiAoIW9wdGlvbnMucHJpbWFyeUFydGlmYWN0TmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcGxhY2VtZW50IG5hbWUgZm9yICR7TUFHSUNfQVJUSUZBQ1RfTkFNRX0gYXJ0aWZhY3Qgbm90IHN1cHBsaWVkYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7ICdzZWNvbmRhcnktYXJ0aWZhY3RzJzogcmVuYW1lS2V5KHRoaXMuc3BlYy5hcnRpZmFjdHNbJ3NlY29uZGFyeS1hcnRpZmFjdHMnXSwgTUFHSUNfQVJUSUZBQ1RfTkFNRSwgb3B0aW9ucy5wcmltYXJ5QXJ0aWZhY3ROYW1lKSB9O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNwZWMuYXJ0aWZhY3RzO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlQnVpbGRTcGVjUHJvcHMge1xuICBpbnN0YWxsPzogc3RyaW5nW107XG4gIHByZUJ1aWxkPzogc3RyaW5nW107XG4gIGJ1aWxkPzogc3RyaW5nW107XG4gIHJlcG9ydHM/OiB7IFtrZXk6IHN0cmluZ106IFJlcG9ydFN0cnVjdCB9O1xuICBhcnRpZmFjdERpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlcmUgdGhlIGRpcmVjdG9yaWVzIGZvciBlYWNoIGFydGlmYWN0IGFyZVxuICAgKlxuICAgKiBVc2Ugc3BlY2lhbCBuYW1lIFBSSU1BUlkgdG8gcmVmZXIgdG8gdGhlIHByaW1hcnkgYXJ0aWZhY3QuIFdpbGwgYmVcbiAgICogcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIGFydGlmYWN0IG5hbWUgd2hlbiB0aGUgYnVpbGQgc3BlYyBpcyBzeW50aGVzaXplZC5cbiAgICovXG4gIGFkZGl0aW9uYWxBcnRpZmFjdERpcmVjdG9yaWVzPzogeyBbaWQ6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU3BlY1N0cnVjdCB7XG4gICd2ZXJzaW9uJzogJzAuMic7XG4gICdydW4tYXMnPzogc3RyaW5nO1xuICAnZW52Jz86IEVudlN0cnVjdDtcbiAgJ3BoYXNlcyc/OiB7IFtrZXk6IHN0cmluZ106IFBoYXNlU3RydWN0IH07XG4gICdhcnRpZmFjdHMnPzogUHJpbWFyeUFydGlmYWN0U3RydWN0O1xuICAnY2FjaGUnPzogQ2FjaGVTdHJ1Y3Q7XG4gICdyZXBvcnRzJz86IHsgW2tleTogc3RyaW5nXTogUmVwb3J0U3RydWN0IH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52U3RydWN0IHtcbiAgJ3ZhcmlhYmxlcyc/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAncGFyYW1ldGVyLXN0b3JlJz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gICdleHBvcnRlZC12YXJpYWJsZXMnPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGhhc2VTdHJ1Y3Qge1xuICAncnVuLWFzJz86IHN0cmluZztcbiAgJ2NvbW1hbmRzJzogc3RyaW5nW107XG4gICdmaW5hbGx5Jz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFN0cnVjdCB7XG4gICdmaWxlcyc/OiBzdHJpbmdbXTtcbiAgJ2Jhc2UtZGlyZWN0b3J5Jz86IHN0cmluZztcbiAgJ2Rpc2NhcmQtcGF0aHMnPzogJ3llcycgfCAnbm8nO1xuICAnZmlsZS1mb3JtYXQnPzogJ0N1Y3VtYmVySnNvbicgfCAnSnVuaXRYbWwnIHwgJ051bml0WG1sJyB8ICdUZXN0TkdYbWwnIHwgJ1Zpc3VhbFN0dWRpb1RyeCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWZhY3RTdHJ1Y3Qge1xuICAnZmlsZXMnPzogc3RyaW5nW107XG4gICduYW1lJz86IHN0cmluZztcbiAgJ2Jhc2UtZGlyZWN0b3J5Jz86IHN0cmluZztcbiAgJ2Rpc2NhcmQtcGF0aHMnPzogJ3llcycgfCAnbm8nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByaW1hcnlBcnRpZmFjdFN0cnVjdCBleHRlbmRzIEFydGlmYWN0U3RydWN0IHtcbiAgJ3NlY29uZGFyeS1hcnRpZmFjdHMnPzogeyBba2V5OiBzdHJpbmddOiBBcnRpZmFjdFN0cnVjdCB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlU3RydWN0IHtcbiAgcGF0aHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU3BlY1JlbmRlck9wdGlvbnMge1xuICAvKipcbiAgICogUmVwbGFjZSBQUklNQVJZIGFydGlmYWN0IG5hbWUgd2l0aCB0aGlzXG4gICAqXG4gICAqIENhbm5vdCB1c2UgdGhlIHNwZWNpYWwgdGVybSBQUklNQVJZIGlmIHRoaXMgaXMgbm90IHN1cHBsaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAgQ2Fubm90IHVzZSBQUklNQVJZXG4gICAqL1xuICBwcmltYXJ5QXJ0aWZhY3ROYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIElmIHRoZSBkaWN0IGlzIGEgc2luZ2xldG9uIGRpY3QsIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGtleSwgb3RoZXJ3aXNlIHJldHVybiB1bmRlZmluZWRcbiAqL1xuZnVuY3Rpb24gZGljdFNpbmdsZXRvblZhbHVlPFQ+KHhzOiB7IFtrZXk6IHN0cmluZ106IFQgfSk6IFQgfCB1bmRlZmluZWQge1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoeHMpO1xuICBpZiAoa2V5cy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4geHNba2V5c1swXV07XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gcmVuYW1lS2V5PFQ+KHhzOiB7IFtrZXk6IHN0cmluZ106IFQgfSwgb3JpZzogc3RyaW5nLCByZW5hbWU6IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogVCB9IHtcbiAgY29uc3QgcmV0ID0gT2JqZWN0LmFzc2lnbih7fSwgeHMpO1xuICBpZiAob3JpZyBpbiByZXQpIHtcbiAgICByZXRbcmVuYW1lXSA9IHJldFtvcmlnXTtcbiAgICBkZWxldGUgcmV0W29yaWddO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=
|