aws-delivlib 15.0.10 → 15.0.12
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/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/package-integrity/handler/validate.bundle.js +2512 -825
- package/lib/publishing.js +5 -2
- package/package.json +6 -6
package/lib/publishing.js
CHANGED
@@ -52,6 +52,9 @@ class PublishToMavenProject extends constructs_1.Construct {
|
|
52
52
|
constructor(parent, id, props) {
|
53
53
|
super(parent, id);
|
54
54
|
const forReal = props.dryRun === undefined ? 'false' : (!props.dryRun).toString();
|
55
|
+
// When using `serverId`, we shouldn't try to guess a MAVEN_ENDPOINT; but keep the old
|
56
|
+
// behavior for backwards compatibility.
|
57
|
+
const mavenEndpointDefault = props.serverId === undefined ? 'https://oss.sonatype.org' : undefined;
|
55
58
|
const shellable = new shellable_1.Shellable(this, 'Default', {
|
56
59
|
description: props.description,
|
57
60
|
platform: new shellable_1.LinuxPlatform(props.buildImage ?? aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry(constants_1.DEFAULT_SUPERCHAIN_IMAGE)),
|
@@ -62,7 +65,7 @@ class PublishToMavenProject extends constructs_1.Construct {
|
|
62
65
|
SIGNING_KEY_ARN: props.signingKey.credential.secretArn,
|
63
66
|
FOR_REAL: forReal,
|
64
67
|
MAVEN_LOGIN_SECRET: props.mavenLoginSecret.secretArn,
|
65
|
-
MAVEN_ENDPOINT: props.mavenEndpoint
|
68
|
+
MAVEN_ENDPOINT: props.mavenEndpoint ?? mavenEndpointDefault,
|
66
69
|
MAVEN_SERVER_ID: props.serverId,
|
67
70
|
SSM_PREFIX: props.ssmPrefix,
|
68
71
|
}),
|
@@ -393,4 +396,4 @@ function grantSsmPrefix(role, ssmPrefix) {
|
|
393
396
|
}));
|
394
397
|
}
|
395
398
|
}
|
396
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInB1Ymxpc2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsNkNBT3FCO0FBQ3JCLDJDQUF1QztBQUV2QywyQ0FBdUQ7QUFFdkQsMkRBQTZDO0FBRzdDLDJDQUF1RDtBQUN2RCxpQ0FBcUM7QUFFckM7O0dBRUc7QUFDSCxJQUFZLFNBVVg7QUFWRCxXQUFZLFNBQVM7SUFDbkI7O09BRUc7SUFDSCw4QkFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILHNDQUF5QixDQUFBO0FBQzNCLENBQUMsRUFWVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQVVwQjtBQXdFRDs7R0FFRztBQUNILE1BQWEscUJBQXNCLFNBQVEsc0JBQVM7SUFJbEQsWUFBWSxNQUFpQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUMxRSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFbEYsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQkFBUyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDL0MsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFFBQVEsRUFBRSxJQUFJLHlCQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSwyQkFBTSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxvQ0FBd0IsQ0FBQyxDQUFDO1lBQ3BILGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDO1lBQzVELFVBQVUsRUFBRSxZQUFZO1lBQ3hC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LGVBQWUsQ0FBQztZQUNqRCxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQztZQUNqRCxTQUFTLEVBQUUsQ0FBQyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxLQUFLO29CQUNkLFFBQVEsRUFBRSxXQUFXO29CQUNyQixZQUFZLEVBQUUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO2lCQUN4QyxDQUFDLENBQUM7U0FDSixDQUFDLENBQUMsQ0FBQztLQUNMO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBTdGFjayxcbiAgYXdzX2NvZGVidWlsZCBhcyBjYnVpbGQsXG4gIGF3c19jb2RlcGlwZWxpbmUgYXMgY3BpcGVsaW5lLFxuICBhd3NfY29kZXBpcGVsaW5lX2FjdGlvbnMgYXMgY3BpcGVsaW5lX2FjdGlvbnMsXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3NfczMgYXMgczMsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSUNvZGVTaWduaW5nQ2VydGlmaWNhdGUgfSBmcm9tICcuL2NvZGUtc2lnbmluZyc7XG5pbXBvcnQgeyBERUZBVUxUX1NVUEVSQ0hBSU5fSU1BR0UgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBPcGVuUEdQS2V5UGFpciB9IGZyb20gJy4vb3Blbi1wZ3Ata2V5LXBhaXInO1xuaW1wb3J0ICogYXMgcGVybWlzc2lvbnMgZnJvbSAnLi9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgeyBBZGRUb1BpcGVsaW5lT3B0aW9ucywgSVB1Ymxpc2hlciB9IGZyb20gJy4vcGlwZWxpbmUnO1xuaW1wb3J0IHsgV3JpdGFibGVHaXRIdWJSZXBvIH0gZnJvbSAnLi9yZXBvJztcbmltcG9ydCB7IExpbnV4UGxhdGZvcm0sIFNoZWxsYWJsZSB9IGZyb20gJy4vc2hlbGxhYmxlJztcbmltcG9ydCB7IG5vVW5kZWZpbmVkIH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBUeXBlIG9mIGFjY2VzcyBwZXJtaXNzaW9ucyB0byByZXF1ZXN0IGZyb20gbnBtanMuXG4gKi9cbmV4cG9ydCBlbnVtIE5wbUFjY2VzcyB7XG4gIC8qKlxuICAgKiBObyBhY2Nlc3MgcmVzdHJpY3Rpb24uIE5vdGUgdGhhdCB1bnNjb3BlZCBwYWNrYWdlcyBtdXN0IGFsd2F5cyBiZSBwdWJsaWMuXG4gICAqL1xuICBQVUJMSUMgPSAncHVibGljJyxcblxuICAvKipcbiAgICogTGltaXQgYWNjZXNzIHRvIHdoaXRlbGlzdGVkIG5wbWpzIHVzZXJzLlxuICAgKi9cbiAgUkVTVFJJQ1RFRCA9ICdyZXN0cmljdGVkJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9NYXZlblByb2plY3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgc2lnbmluZyBrZXkgaXRzZWxmXG4gICAqL1xuICBzaWduaW5nS2V5OiBPcGVuUEdQS2V5UGFpcjtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBzb25hdHlwZSBzdGFnaW5nIHByb2ZpbGUgKGUuZy4gXCI2OGEwNTM2MzA4MzE3NFwiKS5cbiAgICovXG4gIHN0YWdpbmdQcm9maWxlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogSWRlbnRpZmllciBvZiB0aGUgc2VjcmV0IHRoYXQgY29udGFpbnMgdGhlIE1hdmVuIGxvZ2luXG4gICAqL1xuICBtYXZlbkxvZ2luU2VjcmV0OiBwZXJtaXNzaW9ucy5FeHRlcm5hbFNlY3JldDtcblxuICAvKipcbiAgICogSWYgdHJ1ZSAoZGVmYXVsdCkgcGVyZm9ybXMgYSBkcnktcnVuIG9ubHkgaW5zdGVhZCBvZiBhY3R1YWxseSBwdWJsaXNoaW5nLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgTWF2ZW4gcHVibGlzaGluZyBlbmRwb2ludCB0byBiZSB1c2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImh0dHBzOi8vb3NzLnNvbmF0eXBlLm9yZ1wiXG4gICAqL1xuICBtYXZlbkVuZHBvaW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmVyIElEXG4gICAqXG4gICAqIFRoZSBvbmx5IHNlbnNpYmxlIHZhbHVlIGhlcmUgaXMgYGNlbnRyYWwtb3NzcmhgLCB3aGljaCB3aWxsIHVzZSB0aGUgbmV3XG4gICAqIHB1Ymxpc2hpbmcgZW5kcG9pbnQgdGhhdCBpcyBtYW5kYXRvcnkgc3RhcnRpbmcgSnVuZSAzMHRoLlxuICAgKlxuICAgKiBBbnkgb3RoZXIgdmFsdWUgY2FuIGBjZW50cmFsLW9zc3JoYCB3aWxsIGNhdXNlIHRoZSB1bmRlcmx5aW5nIHB1Ymxpc2hpbmdcbiAgICogbGlicmFyeSBgcHVibGliYCB0byBhc3N1bWUgcHVibGlzaGluZyB0byBhIGN1c3RvbSBOZXh1cyBzZXJ2ZXIsIGJ1dCB0aGlzXG4gICAqIGFjdGlvbiBjdXJyZW50bHkgZG9lc24ndCBoYXZlIGEgd2F5IG9mIHNwZWNpZnlpbmcgdGhhdCBOZXh1cyBzZXJ2ZXInc1xuICAgKiBlbmRwb2ludC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBVc2UgbGVnYWN5IE9TU1JIIHNlcnZlclxuICAgKi9cbiAgc2VydmVySWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBidWlsZCBpbWFnZSB0byBkbyB0aGUgcHVibGlzaGluZyBpblxuICAgKlxuICAgKiBOZWVkcyB0byBoYXZlIE1hdmVuIHByZWluc3RhbGxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgTGF0ZXN0IHN1cGVyY2hhaW5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkSW1hZ2U/OiBjYnVpbGQuSUJ1aWxkSW1hZ2U7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdW5kZXIgd2hpY2ggdG8gcmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhlIHB1Ymxpc2ggc3RlcCBleGVjdXRlZFxuICAgKlxuICAgKiBUaGlzIHdpbGwgd3JpdGUgYDxwcmVmaXg+L3ZlcnNpb25gIGFuZCBgPHByZWZpeD4vdGltZXN0YW1wYCB2YXJpYWJsZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBTU00gcGFyYW1ldGVyc1xuICAgKi9cbiAgc3NtUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgd2lsbCBwdWJsaXNoIGFsbCBwYWNrYWdlcyBpbiBhIHJlbGVhc2UgYnVuZGxlIHRvIE1hdmVuXG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9NYXZlblByb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvTWF2ZW5Qcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0ocHJvcHMuYnVpbGRJbWFnZSA/PyBjYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeShERUZBVUxUX1NVUEVSQ0hBSU5fSU1BR0UpKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnbWF2ZW4nKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiBub1VuZGVmaW5lZCh7XG4gICAgICAgIFNUQUdJTkdfUFJPRklMRV9JRDogcHJvcHMuc3RhZ2luZ1Byb2ZpbGVJZCxcbiAgICAgICAgU0lHTklOR19LRVlfQVJOOiBwcm9wcy5zaWduaW5nS2V5LmNyZWRlbnRpYWwuc2VjcmV0QXJuLFxuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgTUFWRU5fTE9HSU5fU0VDUkVUOiBwcm9wcy5tYXZlbkxvZ2luU2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgTUFWRU5fRU5EUE9JTlQ6IHByb3BzLm1hdmVuRW5kcG9pbnQgfHwgJ2h0dHBzOi8vb3NzLnNvbmF0eXBlLm9yZycsXG4gICAgICAgIE1BVkVOX1NFUlZFUl9JRDogcHJvcHMuc2VydmVySWQsXG4gICAgICAgIFNTTV9QUkVGSVg6IHByb3BzLnNzbVByZWZpeCxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMubWF2ZW5Mb2dpblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgICAgcHJvcHMuc2lnbmluZ0tleS5ncmFudFJlYWQoc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cbiAgICBncmFudFNzbVByZWZpeChzaGVsbGFibGUucm9sZSwgcHJvcHMuc3NtUHJlZml4KTtcblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb05wbVByb2plY3RQcm9wcyB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSBzZWNyZXQgdGhhdCBjb250YWlucyB0aGUgTlBNIHRva2VuXG4gICAqL1xuICBucG1Ub2tlblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoZGVmYXVsdCkgd2lsbCBvbmx5IHBlcmZvcm0gYSBkcnktcnVuIGJ1dCB3aWxsIG5vdCBhY3R1YWxseSBwdWJsaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBucG0gZGlzdC10YWcgdG8gdXNlIHdoZW4gcHVibGlzaGluZyBhcnRpZmFjdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbnBtIGRlZmF1bHQgYmVoYXZpb3IgKFwibGF0ZXN0XCIgdW5sZXNzIGRpc3QgdGFnIGlzIHNwZWNpZmllZCBpbiBwYWNrYWdlLmpzb24pXG4gICAqL1xuICBkaXN0VGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBucG0gLS1hY2Nlc3MgcHVibGljfHJlc3RyaWN0ZWRcbiAgICpcbiAgICogU2VlIGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vY2xpLWNvbW1hbmRzL3B1Ymxpc2gjOn46dGV4dD1UZWxscyUyMHRoZVxuICAgKlxuICAgKiBUZWxscyB0aGUgcmVnaXN0cnkgd2hldGhlciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHB1Ymxpc2hlZCBhcyBwdWJsaWMgb3IgcmVzdHJpY3RlZC5cbiAgICogT25seSBhcHBsaWVzIHRvIHNjb3BlZCBwYWNrYWdlcywgd2hpY2ggZGVmYXVsdCB0byByZXN0cmljdGVkLlxuICAgKiBJZiB5b3UgZG9u4oCZdCBoYXZlIGEgcGFpZCBhY2NvdW50LCB5b3UgbXVzdCBwdWJsaXNoIHdpdGggLS1hY2Nlc3MgcHVibGljIHRvIHB1Ymxpc2ggc2NvcGVkIHBhY2thZ2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOcG1BY2Nlc3MuUFVCTElDXG4gICAqL1xuICBhY2Nlc3M/OiBOcG1BY2Nlc3M7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdW5kZXIgd2hpY2ggdG8gcmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhlIHB1Ymxpc2ggc3RlcCBleGVjdXRlZFxuICAgKlxuICAgKiBUaGlzIHdpbGwgd3JpdGUgYDxwcmVmaXg+L3ZlcnNpb25gIGFuZCBgPHByZWZpeD4vdGltZXN0YW1wYCB2YXJpYWJsZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBTU00gcGFyYW1ldGVyc1xuICAgKi9cbiAgc3NtUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgd2lsbCBwdWJsaXNoIGFsbCBwYWNrYWdlcyBpbiBhIHJlbGVhc2UgYnVuZGxlIHRvIE5QTVxuICovXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvTnBtUHJvamVjdCBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElQdWJsaXNoZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvTnBtUHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG5cbiAgICBjb25zdCBhY2Nlc3MgPSBwcm9wcy5hY2Nlc3MgPz8gTnBtQWNjZXNzLlBVQkxJQztcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICducG0nKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiBub1VuZGVmaW5lZCh7XG4gICAgICAgIEZPUl9SRUFMOiBmb3JSZWFsLFxuICAgICAgICBOUE1fVE9LRU5fU0VDUkVUOiBwcm9wcy5ucG1Ub2tlblNlY3JldC5zZWNyZXRBcm4sXG4gICAgICAgIERJU1RUQUc6IHByb3BzLmRpc3RUYWcgfHwgJycsXG4gICAgICAgIEFDQ0VTUzogYWNjZXNzLFxuICAgICAgICBTU01fUFJFRklYOiBwcm9wcy5zc21QcmVmaXgsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgcGVybWlzc2lvbnMuZ3JhbnRTZWNyZXRSZWFkKHByb3BzLm5wbVRva2VuU2VjcmV0LCBzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuXG4gICAgZ3JhbnRTc21QcmVmaXgoc2hlbGxhYmxlLnJvbGUsIHByb3BzLnNzbVByZWZpeCk7XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9OdUdldFByb2plY3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgU2VjcmV0c01hbmFnZXIgc2VjcmV0IHdoaWNoIHN0b3JlcyB0aGUgTnVnZXQgQVBJIGtleS5cbiAgICovXG4gIG51Z2V0QXBpS2V5U2VjcmV0OiBwZXJtaXNzaW9ucy5FeHRlcm5hbFNlY3JldDtcblxuICAvKipcbiAgICogSWYgYHRydWVgIChkZWZhdWx0KSB3aWxsIG9ubHkgcGVyZm9ybSBhIGRyeS1ydW4gYnV0IHdpbGwgbm90IGFjdHVhbGx5IHB1Ymxpc2guXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgY29kZSBzaWduaW5nIGNlcnRpZmljYXRlIHRvIHVzZSB0byBzaWduIGFzc2VtYmxpZXMuXG4gICAqIEBkZWZhdWx0IE5vIHNpZ25pbmdcbiAgICovXG4gIGNvZGVTaWduPzogSUNvZGVTaWduaW5nQ2VydGlmaWNhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBidWlsZCBpbWFnZSB0byBkbyB0aGUgcHVibGlzaGluZyBpblxuICAgKlxuICAgKiBOZWVkcyB0byBoYXZlIE51R2V0IHByZWluc3RhbGxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgTGF0ZXN0IHN1cGVyY2hhaW5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkSW1hZ2U/OiBjYnVpbGQuSUJ1aWxkSW1hZ2U7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdW5kZXIgd2hpY2ggdG8gcmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhlIHB1Ymxpc2ggc3RlcCBleGVjdXRlZFxuICAgKlxuICAgKiBUaGlzIHdpbGwgd3JpdGUgYDxwcmVmaXg+L3ZlcnNpb25gIGFuZCBgPHByZWZpeD4vdGltZXN0YW1wYCB2YXJpYWJsZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBTU00gcGFyYW1ldGVyc1xuICAgKi9cbiAgc3NtUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgd2lsbCBwdWJsaXNoIGFsbCBwYWNrYWdlcyBpbiBhIHJlbGVhc2UgYnVuZGxlIHRvIE51R2V0XG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9OdUdldFByb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvTnVHZXRQcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGVudmlyb25tZW50OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICBlbnZpcm9ubWVudC5GT1JfUkVBTCA9IHByb3BzLmRyeVJ1biA9PT0gdW5kZWZpbmVkID8gJ2ZhbHNlJyA6ICghcHJvcHMuZHJ5UnVuKS50b1N0cmluZygpO1xuXG4gICAgaWYgKHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LmFzc3VtZVJvbGVBcm4pIHtcbiAgICAgIGVudmlyb25tZW50Lk5VR0VUX1JPTEVfQVJOID0gcHJvcHMubnVnZXRBcGlLZXlTZWNyZXQuYXNzdW1lUm9sZUFybjtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMubnVnZXRBcGlLZXlTZWNyZXQucmVnaW9uKSB7XG4gICAgICBlbnZpcm9ubWVudC5OVUdFVF9TRUNSRVRfUkVHSU9OID0gcHJvcHMubnVnZXRBcGlLZXlTZWNyZXQucmVnaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbnZpcm9ubWVudC5OVUdFVF9TRUNSRVRfUkVHSU9OID0gU3RhY2sub2YodGhpcykucmVnaW9uO1xuICAgIH1cblxuICAgIGVudmlyb25tZW50Lk5VR0VUX1NFQ1JFVF9JRCA9IHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LnNlY3JldEFybjtcbiAgICBpZiAocHJvcHMuc3NtUHJlZml4KSB7XG4gICAgICBlbnZpcm9ubWVudC5TU01fUFJFRklYID0gcHJvcHMuc3NtUHJlZml4O1xuICAgIH1cblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0ocHJvcHMuYnVpbGRJbWFnZSA/PyBjYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeShERUZBVUxUX1NVUEVSQ0hBSU5fSU1BR0UpKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnbnVnZXQnKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50LFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmNvZGVTaWduKSB7XG4gICAgICBlbnZpcm9ubWVudC5DT0RFX1NJR05JTkdfU0VDUkVUX0lEID0gcHJvcHMuY29kZVNpZ24uY3JlZGVudGlhbC5zZWNyZXRBcm47XG4gICAgICBlbnZpcm9ubWVudC5DT0RFX1NJR05JTkdfUEFSQU1FVEVSX05BTUUgPSBwcm9wcy5jb2RlU2lnbi5wcmluY2lwYWwucGFyYW1ldGVyTmFtZTtcbiAgICB9XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIGlmIChwcm9wcy5udWdldEFwaUtleVNlY3JldC5hc3N1bWVSb2xlQXJuKSB7XG4gICAgICAgIHBlcm1pc3Npb25zLmdyYW50QXNzdW1lUm9sZShwcm9wcy5udWdldEFwaUtleVNlY3JldC5hc3N1bWVSb2xlQXJuLCBzaGVsbGFibGUucm9sZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMubnVnZXRBcGlLZXlTZWNyZXQsIHNoZWxsYWJsZS5yb2xlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BzLmNvZGVTaWduKSB7XG4gICAgICAgIHByb3BzLmNvZGVTaWduLmdyYW50RGVjcnlwdChzaGVsbGFibGUucm9sZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ3JhbnRTc21QcmVmaXgoc2hlbGxhYmxlLnJvbGUsIHByb3BzLnNzbVByZWZpeCk7XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoRG9jc1RvR2l0SHViUHJvamVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5IHRvIHB1Ymxpc2ggdG9cbiAgICovXG4gIGdpdGh1YlJlcG86IFdyaXRhYmxlR2l0SHViUmVwbztcblxuICAvKipcbiAgICogSWYgYHRydWVgIChkZWZhdWx0KSB3aWxsIG9ubHkgcGVyZm9ybSBhIGRyeS1ydW4gYnV0IHdpbGwgbm90IGFjdHVhbGx5IHB1Ymxpc2guXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBidWlsZCBtYW5pZmVzdCBKU09OIGZpbGUgKG11c3QgaW5jbHVkZSBcIm5hbWVcIiBhbmQgXCJ2ZXJzaW9uXCIgZmllbGRzKS5cbiAgICogUmVsYXRpdmUgdG8gdGhlIGFydGlmYWN0cyByb290LlxuICAgKiBAZGVmYXVsdCBcIi4vYnVpbGQuanNvblwiXG4gICAqL1xuICBidWlsZE1hbmlmZXN0RmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdpdEh1YiBQYWdlcyBicmFuY2ggdG8gcHVzaCB0by5cbiAgICogQGRlZmF1bHQgZ2gtcGFnZXNcbiAgICovXG4gIGJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByZWZpeCB1bmRlciB3aGljaCB0byByZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGUgcHVibGlzaCBzdGVwIGV4ZWN1dGVkXG4gICAqXG4gICAqIFRoaXMgd2lsbCB3cml0ZSBgPHByZWZpeD4vdmVyc2lvbmAgYW5kIGA8cHJlZml4Pi90aW1lc3RhbXBgIHZhcmlhYmxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIFNTTSBwYXJhbWV0ZXJzXG4gICAqL1xuICBzc21QcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHByb2plY3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29kZUJ1aWxkIHByb2plY3QgdGhhdCB3aWxsIHB1Ymxpc2ggYWxsIHBhY2thZ2VzIGluIGEgcmVsZWFzZSBidW5kbGUgdG8gTnVHZXRcbiAqL1xuZXhwb3J0IGNsYXNzIFB1Ymxpc2hEb2NzVG9HaXRIdWJQcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hEb2NzVG9HaXRIdWJQcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdkb2NzJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDogbm9VbmRlZmluZWQoe1xuICAgICAgICAvLyBNdXN0IGJlIFNTSCBiZWNhdXNlIHdlIHVzZSBhbiBTU0gga2V5IHRvIGF1dGhlbnRpY2F0ZVxuICAgICAgICBHSVRIVUJfUkVQTzogcHJvcHMuZ2l0aHViUmVwby5yZXBvc2l0b3J5VXJsU3NoLFxuICAgICAgICBHSVRIVUJfUEFHRVNfQlJBTkNIOiBwcm9wcy5icmFuY2ggfHwgJ2doLXBhZ2VzJyxcbiAgICAgICAgU1NIX0tFWV9TRUNSRVQ6IHByb3BzLmdpdGh1YlJlcG8uc3NoS2V5U2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgRk9SX1JFQUw6IGZvclJlYWwsXG4gICAgICAgIENPTU1JVF9VU0VSTkFNRTogcHJvcHMuZ2l0aHViUmVwby5jb21taXRVc2VybmFtZSxcbiAgICAgICAgQ09NTUlUX0VNQUlMOiBwcm9wcy5naXRodWJSZXBvLmNvbW1pdEVtYWlsLFxuICAgICAgICBCVUlMRF9NQU5JRkVTVDogcHJvcHMuYnVpbGRNYW5pZmVzdEZpbGVOYW1lIHx8ICcuL2J1aWxkLmpzb24nLFxuICAgICAgICBTU01fUFJFRklYOiBwcm9wcy5zc21QcmVmaXgsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgcGVybWlzc2lvbnMuZ3JhbnRTZWNyZXRSZWFkKHByb3BzLmdpdGh1YlJlcG8uc3NoS2V5U2VjcmV0LCBzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuXG4gICAgZ3JhbnRTc21QcmVmaXgoc2hlbGxhYmxlLnJvbGUsIHByb3BzLnNzbVByZWZpeCk7XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9HaXRIdWJQcm9wcyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgdG8gY3JlYXRlIGEgcmVsZWFzZSBpbi5cbiAgICovXG4gIGdpdGh1YlJlcG86IFdyaXRhYmxlR2l0SHViUmVwbztcblxuICAvKipcbiAgICogVGhlIHNpZ25pZ24ga2V5IHRvIHVzZSB0byBjcmVhdGUgYSBHUEcgc2lnbmF0dXJlIG9mIHRoZSBhcnRpZmFjdC5cbiAgICovXG4gIHNpZ25pbmdLZXk6IE9wZW5QR1BLZXlQYWlyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYnVpbGQgbWFuaWZlc3QgSlNPTiBmaWxlIChtdXN0IGluY2x1ZGUgXCJuYW1lXCIgYW5kIFwidmVyc2lvblwiIGZpZWxkcykuXG4gICAqIFJlbGF0aXZlIHRvIHRoZSBhcnRpZmFjdHMgcm9vdC5cbiAgICogQGRlZmF1bHQgXCIuL2J1aWxkLmpzb25cIlxuICAgKi9cbiAgYnVpbGRNYW5pZmVzdEZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2hhbmdlbG9nIG1hcmtkb3duIGZpbGUsIHVzZWQgdG8gY3JlYXRlIHJlbGVhc2Ugbm90ZXMuXG4gICAqIFJlbGF0aXZlIHRvIHRoZSBhcnRpZmFjdHMgcm9vdC5cbiAgICogQGRlZmF1bHQgXCIuL0NIQU5HRUxPRy5tZFwiXG4gICAqL1xuICBjaGFuZ2Vsb2dGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHJlbGVhc2Ugbm90ZXMgZmlsZSwgY29udGFpbmluZyB0aGUgY29tcGxldGVkIHJlbGVhc2Ugbm90ZXNcbiAgICogZm9yIHRoZSBjdXJyZW50IHJlbGVhc2UuXG4gICAqIFJlbGF0aXZlIHRvIHRoZSBhcnRpZmFjdHMgcm9vdC5cbiAgICogTk9URSAtIElmIHRoaXMgdmFsdWUgaXMgc2V0IGFuZCBwb2ludHMgdG8gYSB2YWxpZCBmaWxlLCB0aGUgZmlsZSBpbiBpdHMgZW50aXJldHlcbiAgICogd2lsbCBiZSByZWFkIGFuZCB1c2VkIGZvciB0aGUgcmVsZWFzZSBub3Rlcy4gVGhlIHZhbHVlIG9mIGBjaGFuZ2Vsb2dGaWxlTmFtZWAgd2lsbFxuICAgKiBiZSBpZ25vcmVkLlxuICAgKiBAZGVmYXVsdCBcIi4vUkVMRUFTRV9OT1RFUy5tZFwiXG4gICAqL1xuICByZWxlYXNlTm90ZXNGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBpbnB1dCBhcnRpZmFjdHMgdG8gcHVibGlzaCBiaW5hcmllcyBmcm9tIHRvIEdpdEh1YiByZWxlYXNlXG4gICAqL1xuICBhZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHM/OiBjcGlwZWxpbmUuQXJ0aWZhY3RbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBzaWduIHRoZSBhZGRpdGlvbmFsIGFydGlmYWN0c1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBzaWduQWRkaXRpb25hbEFydGlmYWN0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdW5kZXIgd2hpY2ggdG8gcmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhlIHB1Ymxpc2ggc3RlcCBleGVjdXRlZFxuICAgKlxuICAgKiBUaGlzIHdpbGwgd3JpdGUgYDxwcmVmaXg+L3ZlcnNpb25gIGFuZCBgPHByZWZpeD4vdGltZXN0YW1wYCB2YXJpYWJsZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBTU00gcGFyYW1ldGVyc1xuICAgKi9cbiAgc3NtUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvR2l0SHViIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcbiAgcHJpdmF0ZSByZWFkb25seSBhZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHM/OiBjcGlwZWxpbmUuQXJ0aWZhY3RbXTtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb0dpdEh1YlByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG4gICAgdGhpcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMgPSBwcm9wcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHM7XG5cbiAgICAvLyBUaGUgcmVsZWFzZSBub3RlcywgaWYgc2V0IGFuZCBhIHZhbGlkIGZpbGUsIG92ZXJyaWRlcyBhbnkgdXNhZ2VzIG9mIHRoZSBjaGFuZ2Vsb2cuXG4gICAgaWYgKHByb3BzLmNoYW5nZWxvZ0ZpbGVOYW1lICYmIHByb3BzLnJlbGVhc2VOb3Rlc0ZpbGVOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JvdGggYHJlbGVhc2VOb3Rlc0ZpbGVOYW1lYCBhbmQgYGNoYW5nZWxvZ0ZpbGVOYW1lYCBjYW5ub3QgYmUgc3BlY2lmaWVkOyB1c2Ugb25lIG9yIHRoZSBvdGhlcicpO1xuICAgIH1cblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdnaXRodWInKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiBub1VuZGVmaW5lZCh7XG4gICAgICAgIEJVSUxEX01BTklGRVNUOiBwcm9wcy5idWlsZE1hbmlmZXN0RmlsZU5hbWUgfHwgJy4vYnVpbGQuanNvbicsXG4gICAgICAgIENIQU5HRUxPRzogcHJvcHMuY2hhbmdlbG9nRmlsZU5hbWUgfHwgJy4vQ0hBTkdFTE9HLm1kJyxcbiAgICAgICAgUkVMRUFTRV9OT1RFUzogcHJvcHMucmVsZWFzZU5vdGVzRmlsZU5hbWUgfHwgJy4vUkVMRUFTRV9OT1RFUy5tZCcsXG4gICAgICAgIFNJR05JTkdfS0VZX0FSTjogcHJvcHMuc2lnbmluZ0tleS5jcmVkZW50aWFsLnNlY3JldEFybixcbiAgICAgICAgR0lUSFVCX09XTkVSOiBwcm9wcy5naXRodWJSZXBvLm93bmVyLFxuICAgICAgICBHSVRIVUJfUkVQTzogcHJvcHMuZ2l0aHViUmVwby5yZXBvLFxuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgLy8gVHJhbnNtaXQgdGhlIG5hbWVzIG9mIHRoZSBzZWNvbmRhcnkgc291cmNlcyB0byB0aGUgc2hlbGwgc2NyaXB0IChmb3IgZWFzaWVyIGl0ZXJhdGlvbilcbiAgICAgICAgU0VDT05EQVJZX1NPVVJDRV9OQU1FUzogcHJvcHMuYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzID8gcHJvcHMuYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzLm1hcChhID0+IGEuYXJ0aWZhY3ROYW1lKS5qb2luKCcgJykgOiB1bmRlZmluZWQsXG4gICAgICAgIFNJR05fQURESVRJT05BTF9BUlRJRkFDVFM6IHByb3BzLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cyAmJiBwcm9wcy5zaWduQWRkaXRpb25hbEFydGlmYWN0cyAhPT0gZmFsc2UgPyAndHJ1ZScgOiB1bmRlZmluZWQsXG4gICAgICAgIFNTTV9QUkVGSVg6IHByb3BzLnNzbVByZWZpeCxcbiAgICAgIH0pLFxuICAgICAgZW52aXJvbm1lbnRTZWNyZXRzOiB7XG4gICAgICAgIEdJVEhVQl9UT0tFTjogcHJvcHMuZ2l0aHViUmVwby50b2tlblNlY3JldEFybixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBhbGxvdyBzY3JpcHQgdG8gcmVhZCB0aGUgc2lnbmluZyBrZXlcbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHByb3BzLnNpZ25pbmdLZXkuZ3JhbnRSZWFkKHNoZWxsYWJsZS5yb2xlKTtcbiAgICB9XG5cbiAgICBncmFudFNzbVByZWZpeChzaGVsbGFibGUucm9sZSwgcHJvcHMuc3NtUHJlZml4KTtcbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBleHRyYUlucHV0czogdGhpcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMsXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9TM1Byb3BzIHtcbiAgYnVja2V0OiBzMy5JQnVja2V0O1xuXG4gIC8qKlxuICAgKiBNYWtlIGZpbGVzIHB1YmxpY2x5IHJlYWRhYmxlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwdWJsaWM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVzY3JpcHRpb24gZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb1MzIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb1MzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgZm9yUmVhbCA9IHByb3BzLmRyeVJ1biA9PT0gdW5kZWZpbmVkID8gJ2ZhbHNlJyA6ICghcHJvcHMuZHJ5UnVuKS50b1N0cmluZygpO1xuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzdfMCksXG4gICAgICBzY3JpcHREaXJlY3Rvcnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdwdWJsaXNoaW5nJywgJ3MzJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDogbm9VbmRlZmluZWQoe1xuICAgICAgICBCVUNLRVRfVVJMOiBgczM6Ly8ke3Byb3BzLmJ1Y2tldC5idWNrZXROYW1lfWAsXG4gICAgICAgIENIQU5HRUxPRzogcHJvcHMucHVibGljID8gJ3RydWUnIDogJ2ZhbHNlJyxcbiAgICAgICAgRk9SX1JFQUw6IGZvclJlYWwsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIC8vIEFsbG93IHNjcmlwdCB0byB3cml0ZSB0byBidWNrZXRcbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHByb3BzLmJ1Y2tldC5ncmFudFJlYWRXcml0ZShzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuXG4gICAgdGhpcy5yb2xlID0gc2hlbGxhYmxlLnJvbGU7XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBpZCxcbiAgICAgIGlucHV0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpLFxuICAgICAgcnVuT3JkZXI6IG9wdGlvbnMucnVuT3JkZXIsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvUHlQaVByb3BzIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBQeVBJIGNyZWRlbnRpYWxzIHVuZGVyXG4gICAqIFwidXNlcm5hbWVcIiBhbmQgXCJwYXNzd29yZFwiIGtleXMuXG4gICAqL1xuICBsb2dpblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoZGVmYXVsdCkgd2lsbCBvbmx5IHBlcmZvcm0gYSBkcnktcnVuIGJ1dCB3aWxsIG5vdCBhY3R1YWxseSBwdWJsaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHVuZGVyIHdoaWNoIHRvIHJlY29yZCB0aGUgZmFjdCB0aGF0IHRoZSBwdWJsaXNoIHN0ZXAgZXhlY3V0ZWRcbiAgICpcbiAgICogVGhpcyB3aWxsIHdyaXRlIGA8cHJlZml4Pi92ZXJzaW9uYCBhbmQgYDxwcmVmaXg+L3RpbWVzdGFtcGAgdmFyaWFibGVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gU1NNIHBhcmFtZXRlcnNcbiAgICovXG4gIHNzbVByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogRGVzY3JpcHRpb24gZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb1B5UGkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvUHlQaVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdweXBpJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDogbm9VbmRlZmluZWQoe1xuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgUFlQSV9DUkVERU5USUFMU19TRUNSRVRfSUQ6IHByb3BzLmxvZ2luU2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgU1NNX1BSRUZJWDogcHJvcHMuc3NtUHJlZml4LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5sb2dpblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIGdyYW50U3NtUHJlZml4KHNoZWxsYWJsZS5yb2xlLCBwcm9wcy5zc21QcmVmaXgpO1xuXG4gICAgdGhpcy5yb2xlID0gc2hlbGxhYmxlLnJvbGU7XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBpZCxcbiAgICAgIGlucHV0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpLFxuICAgICAgcnVuT3JkZXI6IG9wdGlvbnMucnVuT3JkZXIsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfSkpO1xuICB9XG59XG5cbi8qKlxuICogUHJvcHMgZm9yIEdvIHB1Ymxpc2hpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvR29sYW5nUHJvcHMge1xuICAvKipcbiAgICogSWRlbnRpZmllciBvZiB0aGUgc2VjcmV0IHRoYXQgY29udGFpbnMgdGhlIEdpdEh1YiBwZXJzb25hbCBhY2Nlc3MgdG9rZW5cbiAgICogdXNlZCB0byBwdXNoIHRoZSBnbyBjb2RlIHRvIHRoZSBnaXRodWIgcmVwb3NpdG9yeSBkZWZpbmVkIGJ5IGl0J3MgbmFtZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9naXRodWIvYXV0aGVudGljYXRpbmctdG8tZ2l0aHViL2NyZWF0aW5nLWEtcGVyc29uYWwtYWNjZXNzLXRva2VuXG4gICAqL1xuICByZWFkb25seSBnaXRodWJUb2tlblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIFVzZXJuYW1lIHRvIHBlcmZvcm0gdGhlIGNvbW1pdCB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0VXNlck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRW1haWwgdG8gcGVyZm9ybSB0aGUgY29tbWl0IHdpdGguXG4gICAqL1xuICByZWFkb25seSBnaXRVc2VyRW1haWw6IHN0cmluZztcblxuICAvKipcbiAgICogU2V0IHRvIFwidHJ1ZVwiIGZvciBhIGRyeSBydW4uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNb2R1bGUgdmVyc2lvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0cyB0byB0aGUgdmFsdWUgaW4gdGhlICd2ZXJzaW9uJyBmaWxlIG9mIHRoZSBtb2R1bGVcbiAgICogZGlyZWN0b3J5LiBGYWlscyBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQnJhbmNoIHRvIHB1c2ggdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibWFpblwiXG4gICAqL1xuICByZWFkb25seSBnaXRCcmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb21taXQgbWVzc2FnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJjaG9yZShyZWxlYXNlKTogJFZFUlNJT05cIlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0Q29tbWl0TWVzc2FnZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByZWZpeCB1bmRlciB3aGljaCB0byByZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGUgcHVibGlzaCBzdGVwIGV4ZWN1dGVkXG4gICAqXG4gICAqIFRoaXMgd2lsbCB3cml0ZSBgPHByZWZpeD4vdmVyc2lvbmAgYW5kIGA8cHJlZml4Pi90aW1lc3RhbXBgIHZhcmlhYmxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIFNTTSBwYXJhbWV0ZXJzXG4gICAqL1xuICBzc21QcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHByb2plY3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHVzaGVzIGEgZGlyZWN0b3J5IG9mIGdvbGFuZyBtb2R1bGVzIHRvIGEgR2l0SHViIHJlcG9zaXRvcnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9Hb2xhbmcgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb0dvbGFuZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGRyeVJ1biA9IHByb3BzLmRyeVJ1biA/PyBmYWxzZTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdnb2xhbmcnKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiBub1VuZGVmaW5lZCh7XG4gICAgICAgIERSWVJVTjogZHJ5UnVuID8gJ3RydWUnIDogdW5kZWZpbmVkLFxuICAgICAgICBHSVRIVUJfVE9LRU5fU0VDUkVUOiBwcm9wcy5naXRodWJUb2tlblNlY3JldC5zZWNyZXRBcm4sXG4gICAgICAgIFZFUlNJT046IHByb3BzLnZlcnNpb24sXG4gICAgICAgIEdJVF9CUkFOQ0g6IHByb3BzLmdpdEJyYW5jaCxcbiAgICAgICAgR0lUX1VTRVJfTkFNRTogcHJvcHMuZ2l0VXNlck5hbWUsXG4gICAgICAgIEdJVF9VU0VSX0VNQUlMOiBwcm9wcy5naXRVc2VyRW1haWwsXG4gICAgICAgIEdJVF9DT01NSVRfTUVTU0FHRTogcHJvcHMuZ2l0Q29tbWl0TWVzc2FnZSxcbiAgICAgICAgU1NNX1BSRUZJWDogcHJvcHMuc3NtUHJlZml4LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5naXRodWJUb2tlblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIGdyYW50U3NtUHJlZml4KHNoZWxsYWJsZS5yb2xlLCBwcm9wcy5zc21QcmVmaXgpO1xuXG4gICAgdGhpcy5yb2xlID0gc2hlbGxhYmxlLnJvbGU7XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBpZCxcbiAgICAgIGlucHV0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpLFxuICAgICAgcnVuT3JkZXI6IG9wdGlvbnMucnVuT3JkZXIsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdyYW50U3NtUHJlZml4KHJvbGU6IGlhbS5JUm9sZSwgc3NtUHJlZml4Pzogc3RyaW5nKSB7XG4gIGlmIChzc21QcmVmaXgpIHtcbiAgICBpZiAoIXNzbVByZWZpeC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU1NNIHByZWZpeCBzaG91bGQgc3RhcnQgd2l0aCAnLycsIGdvdDogJHtzc21QcmVmaXh9YCk7XG4gICAgfVxuICAgIGlmIChzc21QcmVmaXguZW5kc1dpdGgoJy8nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTU00gcHJlZml4IG11c3Qgbm90IGVuZCB3aXRoICcvJywgZ290OiAke3NzbVByZWZpeH1gKTtcbiAgICB9XG5cbiAgICByb2xlPy5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ3NzbTpQdXRQYXJhbWV0ZXInLCAnc3NtOkdldFBhcmFtZXRlciddLFxuICAgICAgcmVzb3VyY2VzOiBbU3RhY2sub2Yocm9sZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ3NzbScsXG4gICAgICAgIHJlc291cmNlOiAncGFyYW1ldGVyJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBgJHtzc21QcmVmaXguc2xpY2UoMSl9LypgLFxuICAgICAgfSldLFxuICAgIH0pKTtcbiAgfVxufSJdfQ==
|
399
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInB1Ymxpc2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsNkNBT3FCO0FBQ3JCLDJDQUF1QztBQUV2QywyQ0FBdUQ7QUFFdkQsMkRBQTZDO0FBRzdDLDJDQUF1RDtBQUN2RCxpQ0FBcUM7QUFFckM7O0dBRUc7QUFDSCxJQUFZLFNBVVg7QUFWRCxXQUFZLFNBQVM7SUFDbkI7O09BRUc7SUFDSCw4QkFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILHNDQUF5QixDQUFBO0FBQzNCLENBQUMsRUFWVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQVVwQjtBQXdFRDs7R0FFRztBQUNILE1BQWEscUJBQXNCLFNBQVEsc0JBQVM7SUFJbEQsWUFBWSxNQUFpQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUMxRSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFbEYsc0ZBQXNGO1FBQ3RGLHdDQUF3QztRQUN4QyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRW5HLE1BQU0sU0FBUyxHQUFHLElBQUkscUJBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQy9DLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixRQUFRLEVBQUUsSUFBSSx5QkFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksMkJBQU0sQ0FBQyxlQUFlLENBQUMs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Q0FBQyxHQUFHLENBQUMsRUFBRTtZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQ3hFO1FBRUQsSUFBSSxFQUFFLG9CQUFvQixDQUFDLElBQUkscUJBQUcsQ0FBQyxlQUFlLENBQUM7WUFDakQsT0FBTyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUM7WUFDakQsU0FBUyxFQUFFLENBQUMsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO29CQUNuQyxPQUFPLEVBQUUsS0FBSztvQkFDZCxRQUFRLEVBQUUsV0FBVztvQkFDckIsWUFBWSxFQUFFLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtpQkFDeEMsQ0FBQyxDQUFDO1NBQ0osQ0FBQyxDQUFDLENBQUM7S0FDTDtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgU3RhY2ssXG4gIGF3c19jb2RlYnVpbGQgYXMgY2J1aWxkLFxuICBhd3NfY29kZXBpcGVsaW5lIGFzIGNwaXBlbGluZSxcbiAgYXdzX2NvZGVwaXBlbGluZV9hY3Rpb25zIGFzIGNwaXBlbGluZV9hY3Rpb25zLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX3MzIGFzIHMzLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElDb2RlU2lnbmluZ0NlcnRpZmljYXRlIH0gZnJvbSAnLi9jb2RlLXNpZ25pbmcnO1xuaW1wb3J0IHsgREVGQVVMVF9TVVBFUkNIQUlOX0lNQUdFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT3BlblBHUEtleVBhaXIgfSBmcm9tICcuL29wZW4tcGdwLWtleS1wYWlyJztcbmltcG9ydCAqIGFzIHBlcm1pc3Npb25zIGZyb20gJy4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgQWRkVG9QaXBlbGluZU9wdGlvbnMsIElQdWJsaXNoZXIgfSBmcm9tICcuL3BpcGVsaW5lJztcbmltcG9ydCB7IFdyaXRhYmxlR2l0SHViUmVwbyB9IGZyb20gJy4vcmVwbyc7XG5pbXBvcnQgeyBMaW51eFBsYXRmb3JtLCBTaGVsbGFibGUgfSBmcm9tICcuL3NoZWxsYWJsZSc7XG5pbXBvcnQgeyBub1VuZGVmaW5lZCB9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogVHlwZSBvZiBhY2Nlc3MgcGVybWlzc2lvbnMgdG8gcmVxdWVzdCBmcm9tIG5wbWpzLlxuICovXG5leHBvcnQgZW51bSBOcG1BY2Nlc3Mge1xuICAvKipcbiAgICogTm8gYWNjZXNzIHJlc3RyaWN0aW9uLiBOb3RlIHRoYXQgdW5zY29wZWQgcGFja2FnZXMgbXVzdCBhbHdheXMgYmUgcHVibGljLlxuICAgKi9cbiAgUFVCTElDID0gJ3B1YmxpYycsXG5cbiAgLyoqXG4gICAqIExpbWl0IGFjY2VzcyB0byB3aGl0ZWxpc3RlZCBucG1qcyB1c2Vycy5cbiAgICovXG4gIFJFU1RSSUNURUQgPSAncmVzdHJpY3RlZCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvTWF2ZW5Qcm9qZWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHNpZ25pbmcga2V5IGl0c2VsZlxuICAgKi9cbiAgc2lnbmluZ0tleTogT3BlblBHUEtleVBhaXI7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgc29uYXR5cGUgc3RhZ2luZyBwcm9maWxlIChlLmcuIFwiNjhhMDUzNjMwODMxNzRcIikuXG4gICAqL1xuICBzdGFnaW5nUHJvZmlsZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBNYXZlbiBsb2dpblxuICAgKi9cbiAgbWF2ZW5Mb2dpblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIElmIHRydWUgKGRlZmF1bHQpIHBlcmZvcm1zIGEgZHJ5LXJ1biBvbmx5IGluc3RlYWQgb2YgYWN0dWFsbHkgcHVibGlzaGluZy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIE1hdmVuIHB1Ymxpc2hpbmcgZW5kcG9pbnQgdG8gYmUgdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJodHRwczovL29zcy5zb25hdHlwZS5vcmdcIlxuICAgKi9cbiAgbWF2ZW5FbmRwb2ludD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNlcnZlciBJRFxuICAgKlxuICAgKiBUaGUgb25seSBzZW5zaWJsZSB2YWx1ZSBoZXJlIGlzIGBjZW50cmFsLW9zc3JoYCwgd2hpY2ggd2lsbCB1c2UgdGhlIG5ld1xuICAgKiBwdWJsaXNoaW5nIGVuZHBvaW50IHRoYXQgaXMgbWFuZGF0b3J5IHN0YXJ0aW5nIEp1bmUgMzB0aC5cbiAgICpcbiAgICogQW55IG90aGVyIHZhbHVlIGNhbiBgY2VudHJhbC1vc3NyaGAgd2lsbCBjYXVzZSB0aGUgdW5kZXJseWluZyBwdWJsaXNoaW5nXG4gICAqIGxpYnJhcnkgYHB1YmxpYmAgdG8gYXNzdW1lIHB1Ymxpc2hpbmcgdG8gYSBjdXN0b20gTmV4dXMgc2VydmVyLCBidXQgdGhpc1xuICAgKiBhY3Rpb24gY3VycmVudGx5IGRvZXNuJ3QgaGF2ZSBhIHdheSBvZiBzcGVjaWZ5aW5nIHRoYXQgTmV4dXMgc2VydmVyJ3NcbiAgICogZW5kcG9pbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVXNlIGxlZ2FjeSBPU1NSSCBzZXJ2ZXJcbiAgICovXG4gIHNlcnZlcklkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYnVpbGQgaW1hZ2UgdG8gZG8gdGhlIHB1Ymxpc2hpbmcgaW5cbiAgICpcbiAgICogTmVlZHMgdG8gaGF2ZSBNYXZlbiBwcmVpbnN0YWxsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IExhdGVzdCBzdXBlcmNoYWluXG4gICAqL1xuICByZWFkb25seSBidWlsZEltYWdlPzogY2J1aWxkLklCdWlsZEltYWdlO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHVuZGVyIHdoaWNoIHRvIHJlY29yZCB0aGUgZmFjdCB0aGF0IHRoZSBwdWJsaXNoIHN0ZXAgZXhlY3V0ZWRcbiAgICpcbiAgICogVGhpcyB3aWxsIHdyaXRlIGA8cHJlZml4Pi92ZXJzaW9uYCBhbmQgYDxwcmVmaXg+L3RpbWVzdGFtcGAgdmFyaWFibGVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gU1NNIHBhcmFtZXRlcnNcbiAgICovXG4gIHNzbVByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogRGVzY3JpcHRpb24gZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb2RlQnVpbGQgcHJvamVjdCB0aGF0IHdpbGwgcHVibGlzaCBhbGwgcGFja2FnZXMgaW4gYSByZWxlYXNlIGJ1bmRsZSB0byBNYXZlblxuICovXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvTWF2ZW5Qcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb01hdmVuUHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG5cbiAgICAvLyBXaGVuIHVzaW5nIGBzZXJ2ZXJJZGAsIHdlIHNob3VsZG4ndCB0cnkgdG8gZ3Vlc3MgYSBNQVZFTl9FTkRQT0lOVDsgYnV0IGtlZXAgdGhlIG9sZFxuICAgIC8vIGJlaGF2aW9yIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICBjb25zdCBtYXZlbkVuZHBvaW50RGVmYXVsdCA9IHByb3BzLnNlcnZlcklkID09PSB1bmRlZmluZWQgPyAnaHR0cHM6Ly9vc3Muc29uYXR5cGUub3JnJyA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0ocHJvcHMuYnVpbGRJbWFnZSA/PyBjYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeShERUZBVUxUX1NVUEVSQ0hBSU5fSU1BR0UpKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnbWF2ZW4nKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiBub1VuZGVmaW5lZCh7XG4gICAgICAgIFNUQUdJTkdfUFJPRklMRV9JRDogcHJvcHMuc3RhZ2luZ1Byb2ZpbGVJZCxcbiAgICAgICAgU0lHTklOR19LRVlfQVJOOiBwcm9wcy5zaWduaW5nS2V5LmNyZWRlbnRpYWwuc2VjcmV0QXJuLFxuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgTUFWRU5fTE9HSU5fU0VDUkVUOiBwcm9wcy5tYXZlbkxvZ2luU2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgTUFWRU5fRU5EUE9JTlQ6IHByb3BzLm1hdmVuRW5kcG9pbnQgPz8gbWF2ZW5FbmRwb2ludERlZmF1bHQsXG4gICAgICAgIE1BVkVOX1NFUlZFUl9JRDogcHJvcHMuc2VydmVySWQsXG4gICAgICAgIFNTTV9QUkVGSVg6IHByb3BzLnNzbVByZWZpeCxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMubWF2ZW5Mb2dpblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgICAgcHJvcHMuc2lnbmluZ0tleS5ncmFudFJlYWQoc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cbiAgICBncmFudFNzbVByZWZpeChzaGVsbGFibGUucm9sZSwgcHJvcHMuc3NtUHJlZml4KTtcblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb05wbVByb2plY3RQcm9wcyB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSBzZWNyZXQgdGhhdCBjb250YWlucyB0aGUgTlBNIHRva2VuXG4gICAqL1xuICBucG1Ub2tlblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoZGVmYXVsdCkgd2lsbCBvbmx5IHBlcmZvcm0gYSBkcnktcnVuIGJ1dCB3aWxsIG5vdCBhY3R1YWxseSBwdWJsaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBucG0gZGlzdC10YWcgdG8gdXNlIHdoZW4gcHVibGlzaGluZyBhcnRpZmFjdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbnBtIGRlZmF1bHQgYmVoYXZpb3IgKFwibGF0ZXN0XCIgdW5sZXNzIGRpc3QgdGFnIGlzIHNwZWNpZmllZCBpbiBwYWNrYWdlLmpzb24pXG4gICAqL1xuICBkaXN0VGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBucG0gLS1hY2Nlc3MgcHVibGljfHJlc3RyaWN0ZWRcbiAgICpcbiAgICogU2VlIGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vY2xpLWNvbW1hbmRzL3B1Ymxpc2gjOn46dGV4dD1UZWxscyUyMHRoZVxuICAgKlxuICAgKiBUZWxscyB0aGUgcmVnaXN0cnkgd2hldGhlciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHB1Ymxpc2hlZCBhcyBwdWJsaWMgb3IgcmVzdHJpY3RlZC5cbiAgICogT25seSBhcHBsaWVzIHRvIHNjb3BlZCBwYWNrYWdlcywgd2hpY2ggZGVmYXVsdCB0byByZXN0cmljdGVkLlxuICAgKiBJZiB5b3UgZG9u4oCZdCBoYXZlIGEgcGFpZCBhY2NvdW50LCB5b3UgbXVzdCBwdWJsaXNoIHdpdGggLS1hY2Nlc3MgcHVibGljIHRvIHB1Ymxpc2ggc2NvcGVkIHBhY2thZ2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOcG1BY2Nlc3MuUFVCTElDXG4gICAqL1xuICBhY2Nlc3M/OiBOcG1BY2Nlc3M7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdW5kZXIgd2hpY2ggdG8gcmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhlIHB1Ymxpc2ggc3RlcCBleGVjdXRlZFxuICAgKlxuICAgKiBUaGlzIHdpbGwgd3JpdGUgYDxwcmVmaXg+L3ZlcnNpb25gIGFuZCBgPHByZWZpeD4vdGltZXN0YW1wYCB2YXJpYWJsZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBTU00gcGFyYW1ldGVyc1xuICAgKi9cbiAgc3NtUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgd2lsbCBwdWJsaXNoIGFsbCBwYWNrYWdlcyBpbiBhIHJlbGVhc2UgYnVuZGxlIHRvIE5QTVxuICovXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvTnBtUHJvamVjdCBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElQdWJsaXNoZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvTnBtUHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG5cbiAgICBjb25zdCBhY2Nlc3MgPSBwcm9wcy5hY2Nlc3MgPz8gTnBtQWNjZXNzLlBVQkxJQztcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICducG0nKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiBub1VuZGVmaW5lZCh7XG4gICAgICAgIEZPUl9SRUFMOiBmb3JSZWFsLFxuICAgICAgICBOUE1fVE9LRU5fU0VDUkVUOiBwcm9wcy5ucG1Ub2tlblNlY3JldC5zZWNyZXRBcm4sXG4gICAgICAgIERJU1RUQUc6IHByb3BzLmRpc3RUYWcgfHwgJycsXG4gICAgICAgIEFDQ0VTUzogYWNjZXNzLFxuICAgICAgICBTU01fUFJFRklYOiBwcm9wcy5zc21QcmVmaXgsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgcGVybWlzc2lvbnMuZ3JhbnRTZWNyZXRSZWFkKHByb3BzLm5wbVRva2VuU2VjcmV0LCBzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuXG4gICAgZ3JhbnRTc21QcmVmaXgoc2hlbGxhYmxlLnJvbGUsIHByb3BzLnNzbVByZWZpeCk7XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9OdUdldFByb2plY3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgU2VjcmV0c01hbmFnZXIgc2VjcmV0IHdoaWNoIHN0b3JlcyB0aGUgTnVnZXQgQVBJIGtleS5cbiAgICovXG4gIG51Z2V0QXBpS2V5U2VjcmV0OiBwZXJtaXNzaW9ucy5FeHRlcm5hbFNlY3JldDtcblxuICAvKipcbiAgICogSWYgYHRydWVgIChkZWZhdWx0KSB3aWxsIG9ubHkgcGVyZm9ybSBhIGRyeS1ydW4gYnV0IHdpbGwgbm90IGFjdHVhbGx5IHB1Ymxpc2guXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgY29kZSBzaWduaW5nIGNlcnRpZmljYXRlIHRvIHVzZSB0byBzaWduIGFzc2VtYmxpZXMuXG4gICAqIEBkZWZhdWx0IE5vIHNpZ25pbmdcbiAgICovXG4gIGNvZGVTaWduPzogSUNvZGVTaWduaW5nQ2VydGlmaWNhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBidWlsZCBpbWFnZSB0byBkbyB0aGUgcHVibGlzaGluZyBpblxuICAgKlxuICAgKiBOZWVkcyB0byBoYXZlIE51R2V0IHByZWluc3RhbGxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgTGF0ZXN0IHN1cGVyY2hhaW5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkSW1hZ2U/OiBjYnVpbGQuSUJ1aWxkSW1hZ2U7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdW5kZXIgd2hpY2ggdG8gcmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhlIHB1Ymxpc2ggc3RlcCBleGVjdXRlZFxuICAgKlxuICAgKiBUaGlzIHdpbGwgd3JpdGUgYDxwcmVmaXg+L3ZlcnNpb25gIGFuZCBgPHByZWZpeD4vdGltZXN0YW1wYCB2YXJpYWJsZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBTU00gcGFyYW1ldGVyc1xuICAgKi9cbiAgc3NtUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgd2lsbCBwdWJsaXNoIGFsbCBwYWNrYWdlcyBpbiBhIHJlbGVhc2UgYnVuZGxlIHRvIE51R2V0XG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9OdUdldFByb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvTnVHZXRQcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGVudmlyb25tZW50OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICBlbnZpcm9ubWVudC5GT1JfUkVBTCA9IHByb3BzLmRyeVJ1biA9PT0gdW5kZWZpbmVkID8gJ2ZhbHNlJyA6ICghcHJvcHMuZHJ5UnVuKS50b1N0cmluZygpO1xuXG4gICAgaWYgKHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LmFzc3VtZVJvbGVBcm4pIHtcbiAgICAgIGVudmlyb25tZW50Lk5VR0VUX1JPTEVfQVJOID0gcHJvcHMubnVnZXRBcGlLZXlTZWNyZXQuYXNzdW1lUm9sZUFybjtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMubnVnZXRBcGlLZXlTZWNyZXQucmVnaW9uKSB7XG4gICAgICBlbnZpcm9ubWVudC5OVUdFVF9TRUNSRVRfUkVHSU9OID0gcHJvcHMubnVnZXRBcGlLZXlTZWNyZXQucmVnaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbnZpcm9ubWVudC5OVUdFVF9TRUNSRVRfUkVHSU9OID0gU3RhY2sub2YodGhpcykucmVnaW9uO1xuICAgIH1cblxuICAgIGVudmlyb25tZW50Lk5VR0VUX1NFQ1JFVF9JRCA9IHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LnNlY3JldEFybjtcbiAgICBpZiAocHJvcHMuc3NtUHJlZml4KSB7XG4gICAgICBlbnZpcm9ubWVudC5TU01fUFJFRklYID0gcHJvcHMuc3NtUHJlZml4O1xuICAgIH1cblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0ocHJvcHMuYnVpbGRJbWFnZSA/PyBjYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeShERUZBVUxUX1NVUEVSQ0hBSU5fSU1BR0UpKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnbnVnZXQnKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50LFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmNvZGVTaWduKSB7XG4gICAgICBlbnZpcm9ubWVudC5DT0RFX1NJR05JTkdfU0VDUkVUX0lEID0gcHJvcHMuY29kZVNpZ24uY3JlZGVudGlhbC5zZWNyZXRBcm47XG4gICAgICBlbnZpcm9ubWVudC5DT0RFX1NJR05JTkdfUEFSQU1FVEVSX05BTUUgPSBwcm9wcy5jb2RlU2lnbi5wcmluY2lwYWwucGFyYW1ldGVyTmFtZTtcbiAgICB9XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIGlmIChwcm9wcy5udWdldEFwaUtleVNlY3JldC5hc3N1bWVSb2xlQXJuKSB7XG4gICAgICAgIHBlcm1pc3Npb25zLmdyYW50QXNzdW1lUm9sZShwcm9wcy5udWdldEFwaUtleVNlY3JldC5hc3N1bWVSb2xlQXJuLCBzaGVsbGFibGUucm9sZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMubnVnZXRBcGlLZXlTZWNyZXQsIHNoZWxsYWJsZS5yb2xlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BzLmNvZGVTaWduKSB7XG4gICAgICAgIHByb3BzLmNvZGVTaWduLmdyYW50RGVjcnlwdChzaGVsbGFibGUucm9sZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ3JhbnRTc21QcmVmaXgoc2hlbGxhYmxlLnJvbGUsIHByb3BzLnNzbVByZWZpeCk7XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoRG9jc1RvR2l0SHViUHJvamVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5IHRvIHB1Ymxpc2ggdG9cbiAgICovXG4gIGdpdGh1YlJlcG86IFdyaXRhYmxlR2l0SHViUmVwbztcblxuICAvKipcbiAgICogSWYgYHRydWVgIChkZWZhdWx0KSB3aWxsIG9ubHkgcGVyZm9ybSBhIGRyeS1ydW4gYnV0IHdpbGwgbm90IGFjdHVhbGx5IHB1Ymxpc2guXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBidWlsZCBtYW5pZmVzdCBKU09OIGZpbGUgKG11c3QgaW5jbHVkZSBcIm5hbWVcIiBhbmQgXCJ2ZXJzaW9uXCIgZmllbGRzKS5cbiAgICogUmVsYXRpdmUgdG8gdGhlIGFydGlmYWN0cyByb290LlxuICAgKiBAZGVmYXVsdCBcIi4vYnVpbGQuanNvblwiXG4gICAqL1xuICBidWlsZE1hbmlmZXN0RmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdpdEh1YiBQYWdlcyBicmFuY2ggdG8gcHVzaCB0by5cbiAgICogQGRlZmF1bHQgZ2gtcGFnZXNcbiAgICovXG4gIGJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByZWZpeCB1bmRlciB3aGljaCB0byByZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGUgcHVibGlzaCBzdGVwIGV4ZWN1dGVkXG4gICAqXG4gICAqIFRoaXMgd2lsbCB3cml0ZSBgPHByZWZpeD4vdmVyc2lvbmAgYW5kIGA8cHJlZml4Pi90aW1lc3RhbXBgIHZhcmlhYmxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIFNTTSBwYXJhbWV0ZXJzXG4gICAqL1xuICBzc21QcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHByb2plY3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29kZUJ1aWxkIHByb2plY3QgdGhhdCB3aWxsIHB1Ymxpc2ggYWxsIHBhY2thZ2VzIGluIGEgcmVsZWFzZSBidW5kbGUgdG8gTnVHZXRcbiAqL1xuZXhwb3J0IGNsYXNzIFB1Ymxpc2hEb2NzVG9HaXRIdWJQcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hEb2NzVG9HaXRIdWJQcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdkb2NzJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDogbm9VbmRlZmluZWQoe1xuICAgICAgICAvLyBNdXN0IGJlIFNTSCBiZWNhdXNlIHdlIHVzZSBhbiBTU0gga2V5IHRvIGF1dGhlbnRpY2F0ZVxuICAgICAgICBHSVRIVUJfUkVQTzogcHJvcHMuZ2l0aHViUmVwby5yZXBvc2l0b3J5VXJsU3NoLFxuICAgICAgICBHSVRIVUJfUEFHRVNfQlJBTkNIOiBwcm9wcy5icmFuY2ggfHwgJ2doLXBhZ2VzJyxcbiAgICAgICAgU1NIX0tFWV9TRUNSRVQ6IHByb3BzLmdpdGh1YlJlcG8uc3NoS2V5U2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgRk9SX1JFQUw6IGZvclJlYWwsXG4gICAgICAgIENPTU1JVF9VU0VSTkFNRTogcHJvcHMuZ2l0aHViUmVwby5jb21taXRVc2VybmFtZSxcbiAgICAgICAgQ09NTUlUX0VNQUlMOiBwcm9wcy5naXRodWJSZXBvLmNvbW1pdEVtYWlsLFxuICAgICAgICBCVUlMRF9NQU5JRkVTVDogcHJvcHMuYnVpbGRNYW5pZmVzdEZpbGVOYW1lIHx8ICcuL2J1aWxkLmpzb24nLFxuICAgICAgICBTU01fUFJFRklYOiBwcm9wcy5zc21QcmVmaXgsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgcGVybWlzc2lvbnMuZ3JhbnRTZWNyZXRSZWFkKHByb3BzLmdpdGh1YlJlcG8uc3NoS2V5U2VjcmV0LCBzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuXG4gICAgZ3JhbnRTc21QcmVmaXgoc2hlbGxhYmxlLnJvbGUsIHByb3BzLnNzbVByZWZpeCk7XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9HaXRIdWJQcm9wcyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgdG8gY3JlYXRlIGEgcmVsZWFzZSBpbi5cbiAgICovXG4gIGdpdGh1YlJlcG86IFdyaXRhYmxlR2l0SHViUmVwbztcblxuICAvKipcbiAgICogVGhlIHNpZ25pZ24ga2V5IHRvIHVzZSB0byBjcmVhdGUgYSBHUEcgc2lnbmF0dXJlIG9mIHRoZSBhcnRpZmFjdC5cbiAgICovXG4gIHNpZ25pbmdLZXk6IE9wZW5QR1BLZXlQYWlyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYnVpbGQgbWFuaWZlc3QgSlNPTiBmaWxlIChtdXN0IGluY2x1ZGUgXCJuYW1lXCIgYW5kIFwidmVyc2lvblwiIGZpZWxkcykuXG4gICAqIFJlbGF0aXZlIHRvIHRoZSBhcnRpZmFjdHMgcm9vdC5cbiAgICogQGRlZmF1bHQgXCIuL2J1aWxkLmpzb25cIlxuICAgKi9cbiAgYnVpbGRNYW5pZmVzdEZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2hhbmdlbG9nIG1hcmtkb3duIGZpbGUsIHVzZWQgdG8gY3JlYXRlIHJlbGVhc2Ugbm90ZXMuXG4gICAqIFJlbGF0aXZlIHRvIHRoZSBhcnRpZmFjdHMgcm9vdC5cbiAgICogQGRlZmF1bHQgXCIuL0NIQU5HRUxPRy5tZFwiXG4gICAqL1xuICBjaGFuZ2Vsb2dGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHJlbGVhc2Ugbm90ZXMgZmlsZSwgY29udGFpbmluZyB0aGUgY29tcGxldGVkIHJlbGVhc2Ugbm90ZXNcbiAgICogZm9yIHRoZSBjdXJyZW50IHJlbGVhc2UuXG4gICAqIFJlbGF0aXZlIHRvIHRoZSBhcnRpZmFjdHMgcm9vdC5cbiAgICogTk9URSAtIElmIHRoaXMgdmFsdWUgaXMgc2V0IGFuZCBwb2ludHMgdG8gYSB2YWxpZCBmaWxlLCB0aGUgZmlsZSBpbiBpdHMgZW50aXJldHlcbiAgICogd2lsbCBiZSByZWFkIGFuZCB1c2VkIGZvciB0aGUgcmVsZWFzZSBub3Rlcy4gVGhlIHZhbHVlIG9mIGBjaGFuZ2Vsb2dGaWxlTmFtZWAgd2lsbFxuICAgKiBiZSBpZ25vcmVkLlxuICAgKiBAZGVmYXVsdCBcIi4vUkVMRUFTRV9OT1RFUy5tZFwiXG4gICAqL1xuICByZWxlYXNlTm90ZXNGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBpbnB1dCBhcnRpZmFjdHMgdG8gcHVibGlzaCBiaW5hcmllcyBmcm9tIHRvIEdpdEh1YiByZWxlYXNlXG4gICAqL1xuICBhZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHM/OiBjcGlwZWxpbmUuQXJ0aWZhY3RbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBzaWduIHRoZSBhZGRpdGlvbmFsIGFydGlmYWN0c1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBzaWduQWRkaXRpb25hbEFydGlmYWN0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdW5kZXIgd2hpY2ggdG8gcmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhlIHB1Ymxpc2ggc3RlcCBleGVjdXRlZFxuICAgKlxuICAgKiBUaGlzIHdpbGwgd3JpdGUgYDxwcmVmaXg+L3ZlcnNpb25gIGFuZCBgPHByZWZpeD4vdGltZXN0YW1wYCB2YXJpYWJsZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBTU00gcGFyYW1ldGVyc1xuICAgKi9cbiAgc3NtUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvR2l0SHViIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcbiAgcHJpdmF0ZSByZWFkb25seSBhZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHM/OiBjcGlwZWxpbmUuQXJ0aWZhY3RbXTtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb0dpdEh1YlByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG4gICAgdGhpcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMgPSBwcm9wcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHM7XG5cbiAgICAvLyBUaGUgcmVsZWFzZSBub3RlcywgaWYgc2V0IGFuZCBhIHZhbGlkIGZpbGUsIG92ZXJyaWRlcyBhbnkgdXNhZ2VzIG9mIHRoZSBjaGFuZ2Vsb2cuXG4gICAgaWYgKHByb3BzLmNoYW5nZWxvZ0ZpbGVOYW1lICYmIHByb3BzLnJlbGVhc2VOb3Rlc0ZpbGVOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JvdGggYHJlbGVhc2VOb3Rlc0ZpbGVOYW1lYCBhbmQgYGNoYW5nZWxvZ0ZpbGVOYW1lYCBjYW5ub3QgYmUgc3BlY2lmaWVkOyB1c2Ugb25lIG9yIHRoZSBvdGhlcicpO1xuICAgIH1cblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdnaXRodWInKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiBub1VuZGVmaW5lZCh7XG4gICAgICAgIEJVSUxEX01BTklGRVNUOiBwcm9wcy5idWlsZE1hbmlmZXN0RmlsZU5hbWUgfHwgJy4vYnVpbGQuanNvbicsXG4gICAgICAgIENIQU5HRUxPRzogcHJvcHMuY2hhbmdlbG9nRmlsZU5hbWUgfHwgJy4vQ0hBTkdFTE9HLm1kJyxcbiAgICAgICAgUkVMRUFTRV9OT1RFUzogcHJvcHMucmVsZWFzZU5vdGVzRmlsZU5hbWUgfHwgJy4vUkVMRUFTRV9OT1RFUy5tZCcsXG4gICAgICAgIFNJR05JTkdfS0VZX0FSTjogcHJvcHMuc2lnbmluZ0tleS5jcmVkZW50aWFsLnNlY3JldEFybixcbiAgICAgICAgR0lUSFVCX09XTkVSOiBwcm9wcy5naXRodWJSZXBvLm93bmVyLFxuICAgICAgICBHSVRIVUJfUkVQTzogcHJvcHMuZ2l0aHViUmVwby5yZXBvLFxuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgLy8gVHJhbnNtaXQgdGhlIG5hbWVzIG9mIHRoZSBzZWNvbmRhcnkgc291cmNlcyB0byB0aGUgc2hlbGwgc2NyaXB0IChmb3IgZWFzaWVyIGl0ZXJhdGlvbilcbiAgICAgICAgU0VDT05EQVJZX1NPVVJDRV9OQU1FUzogcHJvcHMuYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzID8gcHJvcHMuYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzLm1hcChhID0+IGEuYXJ0aWZhY3ROYW1lKS5qb2luKCcgJykgOiB1bmRlZmluZWQsXG4gICAgICAgIFNJR05fQURESVRJT05BTF9BUlRJRkFDVFM6IHByb3BzLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cyAmJiBwcm9wcy5zaWduQWRkaXRpb25hbEFydGlmYWN0cyAhPT0gZmFsc2UgPyAndHJ1ZScgOiB1bmRlZmluZWQsXG4gICAgICAgIFNTTV9QUkVGSVg6IHByb3BzLnNzbVByZWZpeCxcbiAgICAgIH0pLFxuICAgICAgZW52aXJvbm1lbnRTZWNyZXRzOiB7XG4gICAgICAgIEdJVEhVQl9UT0tFTjogcHJvcHMuZ2l0aHViUmVwby50b2tlblNlY3JldEFybixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBhbGxvdyBzY3JpcHQgdG8gcmVhZCB0aGUgc2lnbmluZyBrZXlcbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHByb3BzLnNpZ25pbmdLZXkuZ3JhbnRSZWFkKHNoZWxsYWJsZS5yb2xlKTtcbiAgICB9XG5cbiAgICBncmFudFNzbVByZWZpeChzaGVsbGFibGUucm9sZSwgcHJvcHMuc3NtUHJlZml4KTtcbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBleHRyYUlucHV0czogdGhpcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMsXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9TM1Byb3BzIHtcbiAgYnVja2V0OiBzMy5JQnVja2V0O1xuXG4gIC8qKlxuICAgKiBNYWtlIGZpbGVzIHB1YmxpY2x5IHJlYWRhYmxlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwdWJsaWM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVzY3JpcHRpb24gZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb1MzIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb1MzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgZm9yUmVhbCA9IHByb3BzLmRyeVJ1biA9PT0gdW5kZWZpbmVkID8gJ2ZhbHNlJyA6ICghcHJvcHMuZHJ5UnVuKS50b1N0cmluZygpO1xuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzdfMCksXG4gICAgICBzY3JpcHREaXJlY3Rvcnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdwdWJsaXNoaW5nJywgJ3MzJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDogbm9VbmRlZmluZWQoe1xuICAgICAgICBCVUNLRVRfVVJMOiBgczM6Ly8ke3Byb3BzLmJ1Y2tldC5idWNrZXROYW1lfWAsXG4gICAgICAgIENIQU5HRUxPRzogcHJvcHMucHVibGljID8gJ3RydWUnIDogJ2ZhbHNlJyxcbiAgICAgICAgRk9SX1JFQUw6IGZvclJlYWwsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIC8vIEFsbG93IHNjcmlwdCB0byB3cml0ZSB0byBidWNrZXRcbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHByb3BzLmJ1Y2tldC5ncmFudFJlYWRXcml0ZShzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuXG4gICAgdGhpcy5yb2xlID0gc2hlbGxhYmxlLnJvbGU7XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBpZCxcbiAgICAgIGlucHV0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpLFxuICAgICAgcnVuT3JkZXI6IG9wdGlvbnMucnVuT3JkZXIsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvUHlQaVByb3BzIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBQeVBJIGNyZWRlbnRpYWxzIHVuZGVyXG4gICAqIFwidXNlcm5hbWVcIiBhbmQgXCJwYXNzd29yZFwiIGtleXMuXG4gICAqL1xuICBsb2dpblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoZGVmYXVsdCkgd2lsbCBvbmx5IHBlcmZvcm0gYSBkcnktcnVuIGJ1dCB3aWxsIG5vdCBhY3R1YWxseSBwdWJsaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHVuZGVyIHdoaWNoIHRvIHJlY29yZCB0aGUgZmFjdCB0aGF0IHRoZSBwdWJsaXNoIHN0ZXAgZXhlY3V0ZWRcbiAgICpcbiAgICogVGhpcyB3aWxsIHdyaXRlIGA8cHJlZml4Pi92ZXJzaW9uYCBhbmQgYDxwcmVmaXg+L3RpbWVzdGFtcGAgdmFyaWFibGVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gU1NNIHBhcmFtZXRlcnNcbiAgICovXG4gIHNzbVByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogRGVzY3JpcHRpb24gZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb1B5UGkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvUHlQaVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdweXBpJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDogbm9VbmRlZmluZWQoe1xuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgUFlQSV9DUkVERU5USUFMU19TRUNSRVRfSUQ6IHByb3BzLmxvZ2luU2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgU1NNX1BSRUZJWDogcHJvcHMuc3NtUHJlZml4LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5sb2dpblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIGdyYW50U3NtUHJlZml4KHNoZWxsYWJsZS5yb2xlLCBwcm9wcy5zc21QcmVmaXgpO1xuXG4gICAgdGhpcy5yb2xlID0gc2hlbGxhYmxlLnJvbGU7XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBpZCxcbiAgICAgIGlucHV0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpLFxuICAgICAgcnVuT3JkZXI6IG9wdGlvbnMucnVuT3JkZXIsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfSkpO1xuICB9XG59XG5cbi8qKlxuICogUHJvcHMgZm9yIEdvIHB1Ymxpc2hpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvR29sYW5nUHJvcHMge1xuICAvKipcbiAgICogSWRlbnRpZmllciBvZiB0aGUgc2VjcmV0IHRoYXQgY29udGFpbnMgdGhlIEdpdEh1YiBwZXJzb25hbCBhY2Nlc3MgdG9rZW5cbiAgICogdXNlZCB0byBwdXNoIHRoZSBnbyBjb2RlIHRvIHRoZSBnaXRodWIgcmVwb3NpdG9yeSBkZWZpbmVkIGJ5IGl0J3MgbmFtZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9naXRodWIvYXV0aGVudGljYXRpbmctdG8tZ2l0aHViL2NyZWF0aW5nLWEtcGVyc29uYWwtYWNjZXNzLXRva2VuXG4gICAqL1xuICByZWFkb25seSBnaXRodWJUb2tlblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIFVzZXJuYW1lIHRvIHBlcmZvcm0gdGhlIGNvbW1pdCB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0VXNlck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRW1haWwgdG8gcGVyZm9ybSB0aGUgY29tbWl0IHdpdGguXG4gICAqL1xuICByZWFkb25seSBnaXRVc2VyRW1haWw6IHN0cmluZztcblxuICAvKipcbiAgICogU2V0IHRvIFwidHJ1ZVwiIGZvciBhIGRyeSBydW4uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNb2R1bGUgdmVyc2lvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0cyB0byB0aGUgdmFsdWUgaW4gdGhlICd2ZXJzaW9uJyBmaWxlIG9mIHRoZSBtb2R1bGVcbiAgICogZGlyZWN0b3J5LiBGYWlscyBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQnJhbmNoIHRvIHB1c2ggdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibWFpblwiXG4gICAqL1xuICByZWFkb25seSBnaXRCcmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb21taXQgbWVzc2FnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJjaG9yZShyZWxlYXNlKTogJFZFUlNJT05cIlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0Q29tbWl0TWVzc2FnZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByZWZpeCB1bmRlciB3aGljaCB0byByZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGUgcHVibGlzaCBzdGVwIGV4ZWN1dGVkXG4gICAqXG4gICAqIFRoaXMgd2lsbCB3cml0ZSBgPHByZWZpeD4vdmVyc2lvbmAgYW5kIGA8cHJlZml4Pi90aW1lc3RhbXBgIHZhcmlhYmxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIFNTTSBwYXJhbWV0ZXJzXG4gICAqL1xuICBzc21QcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHByb2plY3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHVzaGVzIGEgZGlyZWN0b3J5IG9mIGdvbGFuZyBtb2R1bGVzIHRvIGEgR2l0SHViIHJlcG9zaXRvcnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9Hb2xhbmcgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb0dvbGFuZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGRyeVJ1biA9IHByb3BzLmRyeVJ1biA/PyBmYWxzZTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdnb2xhbmcnKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiBub1VuZGVmaW5lZCh7XG4gICAgICAgIERSWVJVTjogZHJ5UnVuID8gJ3RydWUnIDogdW5kZWZpbmVkLFxuICAgICAgICBHSVRIVUJfVE9LRU5fU0VDUkVUOiBwcm9wcy5naXRodWJUb2tlblNlY3JldC5zZWNyZXRBcm4sXG4gICAgICAgIFZFUlNJT046IHByb3BzLnZlcnNpb24sXG4gICAgICAgIEdJVF9CUkFOQ0g6IHByb3BzLmdpdEJyYW5jaCxcbiAgICAgICAgR0lUX1VTRVJfTkFNRTogcHJvcHMuZ2l0VXNlck5hbWUsXG4gICAgICAgIEdJVF9VU0VSX0VNQUlMOiBwcm9wcy5naXRVc2VyRW1haWwsXG4gICAgICAgIEdJVF9DT01NSVRfTUVTU0FHRTogcHJvcHMuZ2l0Q29tbWl0TWVzc2FnZSxcbiAgICAgICAgU1NNX1BSRUZJWDogcHJvcHMuc3NtUHJlZml4LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5naXRodWJUb2tlblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIGdyYW50U3NtUHJlZml4KHNoZWxsYWJsZS5yb2xlLCBwcm9wcy5zc21QcmVmaXgpO1xuXG4gICAgdGhpcy5yb2xlID0gc2hlbGxhYmxlLnJvbGU7XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBpZCxcbiAgICAgIGlucHV0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpLFxuICAgICAgcnVuT3JkZXI6IG9wdGlvbnMucnVuT3JkZXIsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdyYW50U3NtUHJlZml4KHJvbGU6IGlhbS5JUm9sZSwgc3NtUHJlZml4Pzogc3RyaW5nKSB7XG4gIGlmIChzc21QcmVmaXgpIHtcbiAgICBpZiAoIXNzbVByZWZpeC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU1NNIHByZWZpeCBzaG91bGQgc3RhcnQgd2l0aCAnLycsIGdvdDogJHtzc21QcmVmaXh9YCk7XG4gICAgfVxuICAgIGlmIChzc21QcmVmaXguZW5kc1dpdGgoJy8nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTU00gcHJlZml4IG11c3Qgbm90IGVuZCB3aXRoICcvJywgZ290OiAke3NzbVByZWZpeH1gKTtcbiAgICB9XG5cbiAgICByb2xlPy5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ3NzbTpQdXRQYXJhbWV0ZXInLCAnc3NtOkdldFBhcmFtZXRlciddLFxuICAgICAgcmVzb3VyY2VzOiBbU3RhY2sub2Yocm9sZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ3NzbScsXG4gICAgICAgIHJlc291cmNlOiAncGFyYW1ldGVyJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBgJHtzc21QcmVmaXguc2xpY2UoMSl9LypgLFxuICAgICAgfSldLFxuICAgIH0pKTtcbiAgfVxufSJdfQ==
|
package/package.json
CHANGED
@@ -37,11 +37,11 @@
|
|
37
37
|
"organization": false
|
38
38
|
},
|
39
39
|
"devDependencies": {
|
40
|
-
"@aws-sdk/client-cloudwatch": "^3.
|
41
|
-
"@aws-sdk/client-codepipeline": "^3.
|
42
|
-
"@aws-sdk/client-s3": "^3.
|
43
|
-
"@aws-sdk/client-secrets-manager": "^3.
|
44
|
-
"@aws-sdk/client-ssm": "^3.
|
40
|
+
"@aws-sdk/client-cloudwatch": "^3.823.0",
|
41
|
+
"@aws-sdk/client-codepipeline": "^3.823.0",
|
42
|
+
"@aws-sdk/client-s3": "^3.823.0",
|
43
|
+
"@aws-sdk/client-secrets-manager": "^3.823.0",
|
44
|
+
"@aws-sdk/client-ssm": "^3.823.0",
|
45
45
|
"@stylistic/eslint-plugin": "^2",
|
46
46
|
"@types/adm-zip": "^0.5.7",
|
47
47
|
"@types/aws-lambda": "^8.10.149",
|
@@ -97,7 +97,7 @@
|
|
97
97
|
"publishConfig": {
|
98
98
|
"access": "public"
|
99
99
|
},
|
100
|
-
"version": "15.0.
|
100
|
+
"version": "15.0.12",
|
101
101
|
"jest": {
|
102
102
|
"coverageProvider": "v8",
|
103
103
|
"testMatch": [
|