truemark-cdk-lib 1.18.2 → 1.18.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -35,3 +35,9 @@ This project follows a [semantic versioning](https://semver.org/) pattern.
35
35
  [npm-image]: https://img.shields.io/npm/v/truemark-cdk-lib.svg
36
36
  [gts-image]: https://img.shields.io/badge/code%20style-google-blueviolet.svg
37
37
  [gts-url]: https://github.com/google/gts
38
+
39
+ ## Library supported features
40
+
41
+ Among other features, this library supports the following features:
42
+
43
+ 1. [CDK Open Telemetry Support](README_otel.md)
@@ -10,6 +10,7 @@ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
10
10
  const aws_cdk_1 = require("../../aws-cdk");
11
11
  const truemark_1 = require("../../truemark");
12
12
  const path = require("node:path");
13
+ const fs = require("fs");
13
14
  /**
14
15
  * Standard class for creating a FargateService. It's recommended to use the StandardApplicationFargateService or
15
16
  * StandardNetworkFargateService instead of this class.
@@ -123,15 +124,11 @@ class StandardFargateService extends aws_cdk_1.ExtendedConstruct {
123
124
  streamPrefix: otelContainerName,
124
125
  logGroup: logGroup,
125
126
  }),
126
- ...(otel.ssmConfigContentParam
127
- ? {
128
- secrets: {
129
- AOT_CONFIG_CONTENT: aws_ecs_1.Secret.fromSsmParameter(aws_ssm_1.StringParameter.fromStringParameterName(this, 'OtelSSMConfigParam', otel.ssmConfigContentParam)),
130
- },
131
- }
132
- : {
133
- command: [`--config=${otelConfigPathLocal}`],
134
- }),
127
+ ...(otel.ssmConfigContentParam && {
128
+ secrets: {
129
+ AOT_CONFIG_CONTENT: aws_ecs_1.Secret.fromSsmParameter(aws_ssm_1.StringParameter.fromStringParameterName(this, 'OtelSSMConfigParam', otel.ssmConfigContentParam)),
130
+ },
131
+ }),
135
132
  environment: {
136
133
  ...((_k = otel.environmentVariables) !== null && _k !== void 0 ? _k : {}),
137
134
  ...(((_l = props.otel) === null || _l === void 0 ? void 0 : _l.applicationMetricsNamespace) &&
@@ -139,6 +136,10 @@ class StandardFargateService extends aws_cdk_1.ExtendedConstruct {
139
136
  ECS_APPLICATION_METRICS_NAMESPACE: (_o = props.otel) === null || _o === void 0 ? void 0 : _o.applicationMetricsNamespace,
140
137
  ECS_APPLICATION_METRICS_LOG_GROUP: (_p = props.otel) === null || _p === void 0 ? void 0 : _p.applicationMetricsLogGroup,
141
138
  }),
139
+ ...(!otel.ssmConfigContentParam &&
140
+ otelConfigPathLocal && {
141
+ AOT_CONFIG_CONTENT: fs.readFileSync(otelConfigPathLocal, 'utf8'),
142
+ }),
142
143
  },
143
144
  healthCheck: {
144
145
  command: ['CMD', '/healthcheck'],
@@ -287,4 +288,4 @@ class StandardFargateService extends aws_cdk_1.ExtendedConstruct {
287
288
  }
288
289
  }
289
290
  exports.StandardFargateService = StandardFargateService;
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtZmFyZ2F0ZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhbmRhcmQtZmFyZ2F0ZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGlEQWM2QjtBQUM3QixpREFBb0Q7QUFFcEQsaURBQStFO0FBQy9FLG1EQUE2RDtBQUM3RCw2Q0FBMkQ7QUFDM0QsaURBQW9EO0FBSXBELDJDQUl1QjtBQUN2Qiw2Q0FBK0M7QUFDL0Msa0NBQWtDO0FBdVFsQzs7O0dBR0c7QUFDSCxNQUFhLHNCQUF1QixTQUFRLDJCQUFpQjtJQVVqRCxlQUFlLENBQ3ZCLEtBQWdCLEVBQ2hCLEtBQWtDOztRQUVsQyxJQUFJLE1BQUEsTUFBQSxLQUFLLENBQUMsZ0JBQWdCLDBDQUFFLE9BQU8sbUNBQUksSUFBSSxFQUFFLENBQUM7WUFDNUMsT0FBTyxJQUFJLG1CQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtnQkFDckMsU0FBUyxFQUFFLE1BQUEsTUFBQSxLQUFLLENBQUMsZ0JBQWdCLDBDQUFFLFNBQVMsbUNBQUksd0JBQWEsQ0FBQyxTQUFTO2dCQUN2RSxZQUFZLEVBQUUsTUFBQSxLQUFLLENBQUMsZ0JBQWdCLDBDQUFFLFlBQVk7Z0JBQ2xELGFBQWEsRUFBRSxNQUFBLEtBQUssQ0FBQyxnQkFBZ0IsMENBQUUsYUFBYTtnQkFDcEQsYUFBYSxFQUNYLE1BQUEsTUFBQSxLQUFLLENBQUMsZ0JBQWdCLDBDQUFFLGFBQWEsbUNBQUksMkJBQWEsQ0FBQyxPQUFPO2FBQ2pFLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRVMsZ0JBQWdCLENBQ3hCLEtBQWdCLEVBQ2hCLEtBQWtDLEVBQ2xDLFFBQThCOztRQUU5QixJQUFJLE1BQUEsTUFBQSxLQUFLLENBQUMsZ0JBQWdCLDBDQUFFLE9BQU8sbUNBQUksSUFBSSxFQUFFLENBQUM7WUFDNUMsT0FBTyxtQkFBUyxDQUFDLE9B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LGVBQWUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBNVZELHdEQTRWQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uc3RydWN0fSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7XG4gIENhcGFjaXR5UHJvdmlkZXJTdHJhdGVneSxcbiAgQ29udGFpbmVySW1hZ2UsXG4gIENwdUFyY2hpdGVjdHVyZSxcbiAgRGVwbG95bWVudENvbnRyb2xsZXJUeXBlLFxuICBGYXJnYXRlUGxhdGZvcm1WZXJzaW9uLFxuICBGYXJnYXRlU2VydmljZSxcbiAgRmFyZ2F0ZVRhc2tEZWZpbml0aW9uLFxuICBJQ2x1c3RlcixcbiAgTG9nRHJpdmVyLFxuICBPcGVyYXRpbmdTeXN0ZW1GYW1pbHksXG4gIFByb3RvY29sLFxuICBTY2FsYWJsZVRhc2tDb3VudCxcbiAgU2VjcmV0LFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCB7U3RyaW5nUGFyYW1ldGVyfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCB7TG9nQ29uZmlndXJhdGlvbn0gZnJvbSAnLi9sb2ctY29uZmlndXJhdGlvbic7XG5pbXBvcnQge1NlY3VyaXR5R3JvdXAsIFN1Ym5ldFNlbGVjdGlvbiwgU3VibmV0VHlwZX0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQge0xvZ0dyb3VwLCBSZXRlbnRpb25EYXlzfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQge0R1cmF0aW9uLCBSZW1vdmFsUG9saWN5LCBTdGFja30gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtQb2xpY3lTdGF0ZW1lbnR9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHtCYXNpY1N0ZXBTY2FsaW5nUG9saWN5UHJvcHN9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1hdXRvc2NhbGluZyc7XG5pbXBvcnQge0lNZXRyaWN9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7U2NhbGluZ1NjaGVkdWxlfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBwbGljYXRpb25hdXRvc2NhbGluZyc7XG5pbXBvcnQge1xuICBFeHRlbmRlZENvbnN0cnVjdCxcbiAgRXh0ZW5kZWRDb25zdHJ1Y3RQcm9wcyxcbiAgU3RhbmRhcmRUYWdzLFxufSBmcm9tICcuLi8uLi9hd3MtY2RrJztcbmltcG9ydCB7TGliU3RhbmRhcmRUYWdzfSBmcm9tICcuLi8uLi90cnVlbWFyayc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQge090ZWxDb25maWd9IGZyb20gJy4vb3RlbC1jb25maWd1cmF0aW9uJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBTdGFuZGFyZEZhcmdhdGVTZXJ2aWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkRmFyZ2F0ZVNlcnZpY2VQcm9wcyBleHRlbmRzIEV4dGVuZGVkQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIENQVSBhbGxvY2F0ZWQgdG8gdGhlIHRhc2suXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gMjA0OFxuICAgKi9cbiAgcmVhZG9ubHkgY3B1PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWVtb3J5IGFsbG9jYXRlZCB0byB0aGUgdGFzay5cbiAgICpcbiAgICogQGRlZmF1bHQgLSA0MDk2XG4gICAqL1xuICByZWFkb25seSBtZW1vcnlMaW1pdE1pQj86IG51bWJlcjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZXBoZW1lcmFsIHN0b3JhZ2UgYWxsb2NhdGVkIHRvIHRoZSB0YXNrLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDIwXG4gICAqL1xuICByZWFkb25seSBlcGhlbWVyYWxTdG9yYWdlR2lCPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDUFUgYXJjaGl0ZWN0dXJlIHRvIHVzZSBmb3IgdGhlIHRhc2tcbiAgICpcbiAgICogQGRlZmF1bHQgLSBDcHVBcmNoaXRlY3R1cmUuQVJNNjRcbiAgICovXG4gIHJlYWRvbmx5IGNwdUFyY2hpdGVjdHVyZT86IENwdUFyY2hpdGVjdHVyZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgYXMgaXQgYXBwZWFycyBpbiB0aGUgY29uc29sZSBvciBpbiB0aGUgQVdTIENMSS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBDbG91ZEZvcm1hdGlvbi1nZW5lcmF0ZWQgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMb2cgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nQ29uZmlndXJhdGlvbj86IExvZ0NvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIERpc2FibGVzIFgtUmF5IGZvciB0aGlzIHNlcnZpY2UuIERlZmF1bHQgaXMgZmFsc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVYcmF5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlcyB0aGUgYWJpbGl0eSB0byBwdXNoIGN1c3RvbSBtZXRyaWNzIHRvIENsb3VkV2F0Y2ggZnJvbSB0aGUgc2VydmljZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQdWJsaXNoTWV0cmljcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBjbHVzdGVyIHRvIHBsYWNlIHNlcnZpY2VzIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3RlcjogSUNsdXN0ZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgcG9ydC5cbiAgICpcbiAgICogQGRlZmF1bHQgODA4MFxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcG9ydCBpcyBUQ1Agb3IgVURQLlxuICAgKlxuICAgKiBAZGVmYXVsdCBQcm90b2NvbC5UQ1BcbiAgICovXG4gIHJlYWRvbmx5IHByb3RvY29sPzogUHJvdG9jb2w7XG5cbiAgLyoqXG4gICAqIENvbnRhaW5lciBpbWFnZSB0byBkZXBsb3kgaW4gdGhpcyBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2U6IENvbnRhaW5lckltYWdlO1xuXG4gIC8qKlxuICAgKiBTdWJuZXRzIHRvIHB1dCB0aGUgc2VydmljZSBpbi4gSWYgdGhpcyBpcyBsZWZ0IGVtcHR5LCBzdWJuZXQgdHlwZSBQUklWQVRFX1dJVEhfRUdSRVNTIGlzIHVzZWQuXG4gICAqL1xuICByZWFkb25seSB2cGNTdWJuZXRzPzogU3VibmV0U2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gcGFzcyB0byB0aGlzIHNlcnZpY2UuXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEga2V5L3ZhbHVlIG1hcCBvZiBsYWJlbHMgdG8gYWRkIHRvIHRoZSBjb250YWluZXIuXG4gICAqL1xuICByZWFkb25seSBkb2NrZXJMYWJlbHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjcmV0IGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBwYXNzIHRvIHRoZSBjb250YWluZXIuXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzPzogUmVjb3JkPHN0cmluZywgU2VjcmV0PjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHRhc2tzLCBzcGVjaWZpZWQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBBbWF6b24gRUNTXG4gICAqIHNlcnZpY2UncyBEZXNpcmVkQ291bnQgdmFsdWUsIHRoYXQgY2FuIHJ1biBpbiBhIHNlcnZpY2UgZHVyaW5nIGFcbiAgICogZGVwbG95bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAyMDBcbiAgICovXG4gIHJlYWRvbmx5IG1heEhlYWx0aHlQZXJjZW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgdGFza3MsIHNwZWNpZmllZCBhcyBhIHBlcmNlbnRhZ2Ugb2ZcbiAgICogdGhlIEFtYXpvbiBFQ1Mgc2VydmljZSdzIERlc2lyZWRDb3VudCB2YWx1ZSwgdGhhdCBtdXN0XG4gICAqIGNvbnRpbnVlIHRvIHJ1biBhbmQgcmVtYWluIGhlYWx0aHkgZHVyaW5nIGEgZGVwbG95bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAxMDBcbiAgICovXG4gIHJlYWRvbmx5IG1pbkhlYWx0aHlQZXJjZW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgcm9sbGJhY2sgb24gZGVwbG95bWVudCBmYWlsdXJlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlUm9sbGJhY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hpY2ggZGVwbG95bWVudCBjb250cm9sbGVyIHRvIHVzZSBmb3IgdGhlIHNlcnZpY2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZXBsb3ltZW50Q29udHJvbGxlclR5cGUuRUNTXG4gICAqL1xuICByZWFkb25seSBkZXBsb3ltZW50Q29udHJvbGxlclR5cGU/OiBEZXBsb3ltZW50Q29udHJvbGxlclR5cGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgaW50byBhIGNvbnRhaW5lclxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUV4ZWN1dGVDb21tYW5kPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBsYXRmb3JtIHZlcnNpb24gb24gd2hpY2ggdG8gcnVuIHlvdXIgc2VydmljZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBGYXJnYXRlUGxhdGZvcm1WZXJzaW9uLkxBVEVTVFxuICAgKi9cbiAgcmVhZG9ubHkgcGxhdGZvcm1WZXJzaW9uPzogRmFyZ2F0ZVBsYXRmb3JtVmVyc2lvbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhc3NpZ24gYSBwdWJsaWMgSVAgYWRkcmVzcyB0byB0aGUgY29udGFpbmVycy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzaWduUHVibGljSXA/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBlbmFibGUgQW1hem9uIEVDUyBtYW5hZ2VkIHRhZ3MgZm9yIHRoZSB0YXNrcyB3aXRoaW4gdGhlIHNlcnZpY2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVFQ1NNYW5hZ2VkVGFncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlc2lyZWQgY291bnQgZm9yIHRoaXMgc2VydmljZS4gSWYgbm90IHNldCwgZGVmYXVsdHMgdG8gbWluQ2FwYWNpdHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbWluQ2FwYWNpdHlcbiAgICovXG4gIHJlYWRvbmx5IGRlc2lyZWRDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogTWluaW11bSBjYXBhY2l0eSB0byBzY2FsZSB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAxXG4gICAqL1xuICByZWFkb25seSBtaW5DYXBhY2l0eT86IG51bWJlcjtcblxuICAvKipcbiAgICogTWF4aW11bSBjYXBhY2l0eSB0byBzY2FsZSB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAyXG4gICAqL1xuICByZWFkb25seSBtYXhDYXBhY2l0eT86IG51bWJlcjtcblxuICAvKipcbiAgICogUGVyaW9kIGFmdGVyIGEgc2NhbGUgaW4gYWN0aXZpdHkgY29tcGxldGVzIGJlZm9yZSBhbm90aGVyIHNjYWxlIGluIGFjdGl2aXR5IGNhbiBzdGFydC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEdXJhdGlvbi5zZWNvbmRzKDEwKVxuICAgKi9cbiAgcmVhZG9ubHkgc2NhbGVJbkNvb2xkb3duPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFBlcmlvZCBhZnRlciBhIHNjYWxlIG91dCBhY3Rpdml0eSBjb21wbGV0ZXMgYmVmb3JlIGFub3RoZXIgc2NhbGUgb3V0IGFjdGl2aXR5IGNhbiBzdGFydC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEdXJhdGlvbi5zZWNvbmRzKDYwKVxuICAgKi9cbiAgcmVhZG9ubHkgc2NhbGVPdXRDb29sZG93bj86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IHZhbHVlIGZvciBDUFUgdXRpbGl6YXRpb24gYWNyb3NzIGFsbCB0YXNrcyBpbiB0aGUgc2VydmljZS5cbiAgICogU2V0IHRoaXMgdG8gMCB0byBkaXNhYmxlIENQVSBzY2FsaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDYwXG4gICAqL1xuICByZWFkb25seSBzY2FsZUNwdVRhcmdldFV0aWxpemF0aW9uUGVyY2VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHRhcmdldCB2YWx1ZSBmb3IgbWVtb3J5IHV0aWxpemF0aW9uIGFjcm9zcyBhbGwgdGFza3MgaW4gdGhlIHNlcnZpY2UuXG4gICAqIERpc2FibGVkIGJ5IGRlZmF1bHQuXG4gICAqL1xuICByZWFkb25seSBzY2FsZU1lbW9yeVRhcmdldFV0aWxpemF0aW9uUGVyY2VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2FwYWNpdHkgd2VpZ2h0IGZvciB0aGUgRkFSR0FURSBjYXBhY2l0eSBwcm92aWRlci4gRGVmYXVsdCBpcyB0byBub3QgdXNlIGNhcGFjaXR5IHByb3ZpZGVycy5cbiAgICovXG4gIHJlYWRvbmx5IGNhcGFjaXR5V2VpZ2h0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgdGFza3MgdG8gcnVuIG9uIHRoZSBGQVJHQVRFIGNhcGFjaXR5IHByb3ZpZGVyLiBEZWZhdWx0IGlzIHRvIG5vdCB1c2UgY2FwYWNpdHkgcHJvdmlkZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwYWNpdHlCYXNlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDYXBhY2l0eSB3ZWlnaHQgZm9yIHRoZSBGQVJHQVRFX1NQT1QgY2FwYWNpdHkgcHJvdmlkZXIuIERlZmF1bHQgaXMgdG8gbm90IHVzZSBjYXBhY2l0eSBwcm92aWRlcnMuXG4gICAqL1xuICByZWFkb25seSBzcG90Q2FwYWNpdHlXZWlnaHQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiB0YXNrcyB0byBydW4gb24gdGhlIEZBUkdBVEVfU1BPVCBjYXBhY2l0eSBwcm92aWRlci4gRGVmYXVsdCBpcyB0byBub3QgdXNlIGNhcGFjaXR5IHByb3ZpZGVycy5cbiAgICovXG4gIHJlYWRvbmx5IHNwb3RDYXBhY2l0eUJhc2U/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNldHRpbmcgdGhpcyB0byB0cnVlIHdpbGwgc3VwcHJlc3MgdGhlIGNyZWF0aW9uIG9mIGRlZmF1bHQgdGFncyBvbiByZXNvdXJjZXNcbiAgICogY3JlYXRlZCBieSB0aGlzIGNvbnN0cnVjdC4gRGVmYXVsdCBpcyBmYWxzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcHJlc3NUYWdnaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0dGluZyB0aGlzIHRvIHRydWUgd2lsbCBlbmFibGUgb3V0Ym91bmQgSVB2NiBmb3IgdGhlIHNlcnZpY2UuIERlZmF1bHQgaXMgZmFsc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93QWxsSXB2Nk91dGJvdW5kPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBlcmlvZCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB0aGF0IHRoZSBBbWF6b24gRUNTIHNlcnZpY2Ugc2NoZWR1bGVyIGlnbm9yZXMgdW5oZWFsdGh5XG4gICAqIEVsYXN0aWMgTG9hZCBCYWxhbmNpbmcgdGFyZ2V0IGhlYWx0aCBjaGVja3MgYWZ0ZXIgYSB0YXNrIGhhcyBmaXJzdCBzdGFydGVkLiBEbyBub3QgdXNlIHRoaXNcbiAgICogcHJvcGVydHkgdW5sZXNzIHlvdSBhcmUgd29ya2luZyB3aXRoIGFuIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXIuIERlZmF1bHQgaXMgdW5kZWZpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZD86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBTZXR0aW5nIHRoZSBTdGFuZGFyZCBPcGVuVGVsZW1ldHJ5IChPVEVMKSBjb25maWd1cmF0aW9uIGZvciBFQ1Mgc2VydmljZXMuXG4gICAqXG4gICAqL1xuICByZWFkb25seSBvdGVsPzogT3RlbENvbmZpZztcbn1cblxuLyoqXG4gKiBTdGFuZGFyZCBjbGFzcyBmb3IgY3JlYXRpbmcgYSBGYXJnYXRlU2VydmljZS4gSXQncyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIFN0YW5kYXJkQXBwbGljYXRpb25GYXJnYXRlU2VydmljZSBvclxuICogU3RhbmRhcmROZXR3b3JrRmFyZ2F0ZVNlcnZpY2UgaW5zdGVhZCBvZiB0aGlzIGNsYXNzLlxuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhcmRGYXJnYXRlU2VydmljZSBleHRlbmRzIEV4dGVuZGVkQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IEZhcmdhdGVUYXNrRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgbG9nR3JvdXA/OiBMb2dHcm91cDtcbiAgcmVhZG9ubHkgc2VydmljZTogRmFyZ2F0ZVNlcnZpY2U7XG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgc2NhbGluZzogU2NhbGFibGVUYXNrQ291bnQ7XG4gIHJlYWRvbmx5IHNjYWxlSW5Db29sZG93bjogRHVyYXRpb247XG4gIHJlYWRvbmx5IHNjYWxlT3V0Q29vbGRvd246IER1cmF0aW9uO1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwOiBTZWN1cml0eUdyb3VwO1xuXG4gIHByb3RlY3RlZCByZXNvbHZlTG9nR3JvdXAoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBwcm9wczogU3RhbmRhcmRGYXJnYXRlU2VydmljZVByb3BzLFxuICApOiBMb2dHcm91cCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHByb3BzLmxvZ0NvbmZpZ3VyYXRpb24/LmVuYWJsZWQgPz8gdHJ1ZSkge1xuICAgICAgcmV0dXJuIG5ldyBMb2dHcm91cChzY29wZSwgJ0xvZ0dyb3VwJywge1xuICAgICAgICByZXRlbnRpb246IHByb3BzLmxvZ0NvbmZpZ3VyYXRpb24/LnJldGVudGlvbiA/PyBSZXRlbnRpb25EYXlzLkZJVkVfREFZUyxcbiAgICAgICAgbG9nR3JvdXBOYW1lOiBwcm9wcy5sb2dDb25maWd1cmF0aW9uPy5sb2dHcm91cE5hbWUsXG4gICAgICAgIGVuY3J5cHRpb25LZXk6IHByb3BzLmxvZ0NvbmZpZ3VyYXRpb24/LmVuY3J5cHRpb25LZXksXG4gICAgICAgIHJlbW92YWxQb2xpY3k6XG4gICAgICAgICAgcHJvcHMubG9nQ29uZmlndXJhdGlvbj8ucmVtb3ZhbFBvbGljeSA/PyBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNvbHZlTG9nRHJpdmVyKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgcHJvcHM6IFN0YW5kYXJkRmFyZ2F0ZVNlcnZpY2VQcm9wcyxcbiAgICBsb2dHcm91cDogTG9nR3JvdXAgfCB1bmRlZmluZWQsXG4gICk6IExvZ0RyaXZlciB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHByb3BzLmxvZ0NvbmZpZ3VyYXRpb24/LmVuYWJsZWQgPz8gdHJ1ZSkge1xuICAgICAgcmV0dXJuIExvZ0RyaXZlci5hd3NMb2dzKHtcbiAgICAgICAgc3RyZWFtUHJlZml4OiBzY29wZS5ub2RlLmlkLFxuICAgICAgICBsb2dHcm91cCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVWcGNTdWJuZXRzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgcHJvcHM6IFN0YW5kYXJkRmFyZ2F0ZVNlcnZpY2VQcm9wcyxcbiAgKTogU3VibmV0U2VsZWN0aW9uIHtcbiAgICBpZiAocHJvcHMudnBjU3VibmV0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcHJvcHMudnBjU3VibmV0cztcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNvbHZlZENhcGFjaXR5UHJvdmlkZXJTdHJhdGVnaWVzKFxuICAgIHByb3BzOiBTdGFuZGFyZEZhcmdhdGVTZXJ2aWNlUHJvcHMsXG4gICk6IENhcGFjaXR5UHJvdmlkZXJTdHJhdGVneVtdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzdHJhdGVnaWVzOiBDYXBhY2l0eVByb3ZpZGVyU3RyYXRlZ3lbXSA9IFtdO1xuICAgIGlmIChcbiAgICAgIHByb3BzLmNhcGFjaXR5V2VpZ2h0ICE9PSB1bmRlZmluZWQgfHxcbiAgICAgIHByb3BzLmNhcGFjaXR5QmFzZSAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBzdHJhdGVnaWVzLnB1c2goe1xuICAgICAgICBjYXBhY2l0eVByb3ZpZGVyOiAnRkFSR0FURScsXG4gICAgICAgIGJhc2U6IHByb3BzLmNhcGFjaXR5QmFzZSxcbiAgICAgICAgd2VpZ2h0OiBwcm9wcy5jYXBhY2l0eVdlaWdodCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBwcm9wcy5zcG90Q2FwYWNpdHlXZWlnaHQgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgcHJvcHMuc3BvdENhcGFjaXR5QmFzZSAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBzdHJhdGVnaWVzLnB1c2goe1xuICAgICAgICBjYXBhY2l0eVByb3ZpZGVyOiAnRkFSR0FURV9TUE9UJyxcbiAgICAgICAgYmFzZTogcHJvcHMuc3BvdENhcGFjaXR5QmFzZSxcbiAgICAgICAgd2VpZ2h0OiBwcm9wcy5zcG90Q2FwYWNpdHlXZWlnaHQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cmF0ZWdpZXMubGVuZ3RoID4gMCA/IHN0cmF0ZWdpZXMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFN0YW5kYXJkRmFyZ2F0ZVNlcnZpY2VQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBzdGFuZGFyZFRhZ3M6IFN0YW5kYXJkVGFncy5tZXJnZShwcm9wcy5zdGFuZGFyZFRhZ3MsIExpYlN0YW5kYXJkVGFncyksXG4gICAgfSk7XG5cbiAgICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IG5ldyBGYXJnYXRlVGFza0RlZmluaXRpb24odGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgY3B1OiBwcm9wcy5jcHUgPz8gMjA0OCxcbiAgICAgIG1lbW9yeUxpbWl0TWlCOiBwcm9wcy5tZW1vcnlMaW1pdE1pQiA/PyA0MDk2LFxuICAgICAgZXBoZW1lcmFsU3RvcmFnZUdpQjogcHJvcHMuZXBoZW1lcmFsU3RvcmFnZUdpQixcbiAgICAgIHJ1bnRpbWVQbGF0Zm9ybToge1xuICAgICAgICBvcGVyYXRpbmdTeXN0ZW1GYW1pbHk6IE9wZXJhdGluZ1N5c3RlbUZhbWlseS5MSU5VWCxcbiAgICAgICAgY3B1QXJjaGl0ZWN0dXJlOiBwcm9wcy5jcHVBcmNoaXRlY3R1cmUgPz8gQ3B1QXJjaGl0ZWN0dXJlLkFSTTY0LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmICghcHJvcHMuZGlzYWJsZVhyYXkpIHtcbiAgICAgIHRhc2tEZWZpbml0aW9uLmFkZFRvVGFza1JvbGVQb2xpY3koXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgYWN0aW9uczogWydjbG91ZHdhdGNoOlB1dE1ldHJpY0RhdGEnXSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGxvZ0dyb3VwID0gdGhpcy5yZXNvbHZlTG9nR3JvdXAodGhpcywgcHJvcHMpO1xuICAgIGNvbnN0IGxvZ2dpbmcgPSB0aGlzLnJlc29sdmVMb2dEcml2ZXIodGhpcywgcHJvcHMsIGxvZ0dyb3VwKTtcbiAgICBjb25zdCBwb3J0ID0gcHJvcHMucG9ydCA/PyA4MDgwO1xuICAgIGNvbnN0IHByb3RvY29sID0gcHJvcHMucHJvdG9jb2wgPz8gUHJvdG9jb2wuVENQO1xuXG4gICAgdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKCdDb250YWluZXInLCB7XG4gICAgICBpbWFnZTogcHJvcHMuaW1hZ2UsXG4gICAgICBwb3J0TWFwcGluZ3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IHBvcnQsXG4gICAgICAgICAgaG9zdFBvcnQ6IHBvcnQsXG4gICAgICAgICAgcHJvdG9jb2wsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgbG9nZ2luZyxcbiAgICAgIGVudmlyb25tZW50OiBwcm9wcy5lbnZpcm9ubWVudCxcbiAgICAgIGRvY2tlckxhYmVsczogcHJvcHMuZG9ja2VyTGFiZWxzLFxuICAgICAgc2VjcmV0czogcHJvcHMuc2VjcmV0cyxcbiAgICB9KTtcblxuICAgIC8vIEFkZCBPdGVsIGNvbnRhaW5lciBpZiBlbmFibGVkXG4gICAgY29uc3Qgb3RlbCA9IHByb3BzLm90ZWw7XG4gICAgaWYgKG90ZWwgJiYgb3RlbC5lbmFibGVkKSB7XG4gICAgICBsZXQgb3RlbENvbmZpZ1BhdGhMb2NhbDogc3RyaW5nO1xuICAgICAgaWYgKG90ZWwuY29uZmlnUGF0aCkge1xuICAgICAgICBvdGVsQ29uZmlnUGF0aExvY2FsID0gb3RlbC5jb25maWdQYXRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3RlbENvbmZpZ1BhdGhMb2NhbCA9IHBhdGgucmVzb2x2ZShcbiAgICAgICAgICBfX2Rpcm5hbWUsXG4gICAgICAgICAgJy4uLy4uL3Jlc291cmNlcy9lY3Mtb3RlbC10YXNrLW1ldHJpY3MtY29uZmlnLnlhbWwnLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvdGVsQ29udGFpbmVyTmFtZSA9IG90ZWwuY29udGFpbmVyTmFtZSA/PyAnb3RlbC1jb2xsZWN0b3InO1xuICAgICAgdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKCdPdGVsJywge1xuICAgICAgICBjb250YWluZXJOYW1lOiBvdGVsQ29udGFpbmVyTmFtZSxcbiAgICAgICAgaW1hZ2U6IENvbnRhaW5lckltYWdlLmZyb21SZWdpc3RyeShcbiAgICAgICAgICBvdGVsLmNvbGxlY3RvckltYWdlID8/XG4gICAgICAgICAgICAncHVibGljLmVjci5hd3MvYXdzLW9ic2VydmFiaWxpdHkvYXdzLW90ZWwtY29sbGVjdG9yOmxhdGVzdCcsXG4gICAgICAgICksXG4gICAgICAgIGNwdTogb3RlbC5jb250YWluZXJDcHUgPz8gMjU2LFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogb3RlbC5jb250YWluZXJNZW1vcnlMaW1pdE1pQiA/PyA1MTIsXG4gICAgICAgIGxvZ2dpbmc6IExvZ0RyaXZlci5hd3NMb2dzKHtcbiAgICAgICAgICBzdHJlYW1QcmVmaXg6IG90ZWxDb250YWluZXJOYW1lLFxuICAgICAgICAgIGxvZ0dyb3VwOiBsb2dHcm91cCxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihvdGVsLnNzbUNvbmZpZ0NvbnRlbnRQYXJhbVxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBzZWNyZXRzOiB7XG4gICAgICAgICAgICAgICAgQU9UX0NPTkZJR19DT05URU5UOiBTZWNyZXQuZnJvbVNzbVBhcmFtZXRlcihcbiAgICAgICAgICAgICAgICAgIFN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgJ090ZWxTU01Db25maWdQYXJhbScsXG4gICAgICAgICAgICAgICAgICAgIG90ZWwuc3NtQ29uZmlnQ29udGVudFBhcmFtLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBjb21tYW5kOiBbYC0tY29uZmlnPSR7b3RlbENvbmZpZ1BhdGhMb2NhbH1gXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIC4uLihvdGVsLmVudmlyb25tZW50VmFyaWFibGVzID8/IHt9KSxcbiAgICAgICAgICAuLi4ocHJvcHMub3RlbD8uYXBwbGljYXRpb25NZXRyaWNzTmFtZXNwYWNlICYmXG4gICAgICAgICAgICBwcm9wcy5vdGVsPy5hcHBsaWNhdGlvbk1ldHJpY3NMb2dHcm91cCAmJiB7XG4gICAgICAgICAgICAgIEVDU19BUFBMSUNBVElPTl9NRVRSSUNTX05BTUVTUEFDRTpcbiAgICAgICAgICAgICAgICBwcm9wcy5vdGVsPy5hcHBsaWNhdGlvbk1ldHJpY3NOYW1lc3BhY2UsXG4gICAgICAgICAgICAgIEVDU19BUFBMSUNBVElPTl9NRVRSSUNTX0xPR19HUk9VUDpcbiAgICAgICAgICAgICAgICBwcm9wcy5vdGVsPy5hcHBsaWNhdGlvbk1ldHJpY3NMb2dHcm91cCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgICBoZWFsdGhDaGVjazoge1xuICAgICAgICAgIGNvbW1hbmQ6IFsnQ01EJywgJy9oZWFsdGhjaGVjayddLFxuICAgICAgICAgIGludGVydmFsOiBEdXJhdGlvbi5zZWNvbmRzKDEwKSxcbiAgICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgICAgIHJldHJpZXM6IDUsXG4gICAgICAgICAgc3RhcnRQZXJpb2Q6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEFkZCBTU00gcGVybWlzc2lvbnMgdG8gcmVhZCBwYXJhbWV0ZXJzXG4gICAgICBpZiAob3RlbC5zc21Db25maWdDb250ZW50UGFyYW0pIHtcbiAgICAgICAgdGFza0RlZmluaXRpb24uYWRkVG9UYXNrUm9sZVBvbGljeShcbiAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICBgYXJuOmF3czpzc206JHtTdGFjay5vZih0aGlzKS5yZWdpb259OiR7XG4gICAgICAgICAgICAgICAgU3RhY2sub2YodGhpcykuYWNjb3VudFxuICAgICAgICAgICAgICB9OnBhcmFtZXRlciR7b3RlbC5zc21Db25maWdDb250ZW50UGFyYW19YCxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBhY3Rpb25zOiBbJ3NzbTpHZXRQYXJhbWV0ZXJzJywgJ3NzbTpHZXRQYXJhbWV0ZXJzQnlQYXRoJ10sXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBBTVAgcGVybWlzc2lvbnMgZm9yIHJlbW90ZSB3cml0ZSB0byBQcm9tZXRoZXVzXG4gICAgICBpZiAob3RlbC5hbXBXb3JrU3BhY2VJZCkge1xuICAgICAgICB0YXNrRGVmaW5pdGlvbi5hZGRUb1Rhc2tSb2xlUG9saWN5KFxuICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgIGBhcm46YXdzOmFwczoke1N0YWNrLm9mKHRoaXMpLnJlZ2lvbn06JHtcbiAgICAgICAgICAgICAgICBTdGFjay5vZih0aGlzKS5hY2NvdW50XG4gICAgICAgICAgICAgIH06d29ya3NwYWNlLyR7b3RlbC5hbXBXb3JrU3BhY2VJZH1gLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGFjdGlvbnM6IFsnYXBzOlJlbW90ZVdyaXRlJ10sXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXNrRGVmaW5pdGlvbi5hZGRUb1Rhc2tSb2xlUG9saWN5KFxuICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICAgIGFjdGlvbnM6IFsnYXBzOlJlbW90ZVdyaXRlJ10sXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBwZXJtaXNzaW9uIHRvIHBlcm1pdCBvdGVsIGV2ZW50c1xuICAgICAgdGFza0RlZmluaXRpb24uYWRkVG9UYXNrUm9sZVBvbGljeShcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAnbG9nczpQdXRMb2dFdmVudHMnLFxuICAgICAgICAgICAgJ2xvZ3M6Q3JlYXRlTG9nR3JvdXAnLFxuICAgICAgICAgICAgJ2xvZ3M6Q3JlYXRlTG9nU3RyZWFtJyxcbiAgICAgICAgICAgICdsb2dzOkRlc2NyaWJlTG9nU3RyZWFtcycsXG4gICAgICAgICAgICAnbG9nczpEZXNjcmliZUxvZ0dyb3VwcycsXG4gICAgICAgICAgICAnbG9nczpQdXRSZXRlbnRpb25Qb2xpY3knLFxuICAgICAgICAgICAgJ3hyYXk6UHV0VHJhY2VTZWdtZW50cycsXG4gICAgICAgICAgICAneHJheTpQdXRUZWxlbWV0cnlSZWNvcmRzJyxcbiAgICAgICAgICAgICd4cmF5OkdldFNhbXBsaW5nUnVsZXMnLFxuICAgICAgICAgICAgJ3hyYXk6R2V0U2FtcGxpbmdUYXJnZXRzJyxcbiAgICAgICAgICAgICd4cmF5OkdldFNhbXBsaW5nU3RhdGlzdGljU3VtbWFyaWVzJyxcbiAgICAgICAgICAgICdhcHM6UHV0TWV0cmljRGF0YScsXG4gICAgICAgICAgICAnYXBzOkdldFNlcmllcycsXG4gICAgICAgICAgICAnYXBzOkdldExhYmVscycsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHZwY1N1Ym5ldHMgPSB0aGlzLnJlc29sdmVWcGNTdWJuZXRzKHRoaXMsIHByb3BzKTtcbiAgICBjb25zdCBkZXNpcmVkQ291bnQgPSBwcm9wcy5kZXNpcmVkQ291bnQgPz8gcHJvcHMubWluQ2FwYWNpdHkgPz8gMTtcbiAgICBjb25zdCBjYXBhY2l0eVByb3ZpZGVyU3RyYXRlZ2llcyA9XG4gICAgICB0aGlzLnJlc29sdmVkQ2FwYWNpdHlQcm92aWRlclN0cmF0ZWdpZXMocHJvcHMpO1xuXG4gICAgY29uc3Qgc2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKHRoaXMsICdTZWN1cml0eUdyb3VwJywge1xuICAgICAgdnBjOiBwcm9wcy5jbHVzdGVyLnZwYyxcbiAgICAgIGFsbG93QWxsSXB2Nk91dGJvdW5kOiBwcm9wcy5hbGxvd0FsbElwdjZPdXRib3VuZCA/PyBmYWxzZSxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzZXJ2aWNlID0gbmV3IEZhcmdhdGVTZXJ2aWNlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgY2x1c3RlcjogcHJvcHMuY2x1c3RlcixcbiAgICAgIHRhc2tEZWZpbml0aW9uLFxuICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgbWF4SGVhbHRoeVBlcmNlbnQ6IHByb3BzLm1heEhlYWx0aHlQZXJjZW50ID8/IDIwMCxcbiAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiBwcm9wcy5taW5IZWFsdGh5UGVyY2VudCA/PyAxMDAsXG4gICAgICBkZXNpcmVkQ291bnQsXG4gICAgICBjaXJjdWl0QnJlYWtlcjoge1xuICAgICAgICByb2xsYmFjazogcHJvcHMuZW5hYmxlUm9sbGJhY2sgPz8gdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBkZXBsb3ltZW50Q29udHJvbGxlcjoge1xuICAgICAgICB0eXBlOiBwcm9wcy5kZXBsb3ltZW50Q29udHJvbGxlclR5cGUgPz8gRGVwbG95bWVudENvbnRyb2xsZXJUeXBlLkVDUyxcbiAgICAgIH0sXG4gICAgICB2cGNTdWJuZXRzLFxuICAgICAgcGxhdGZvcm1WZXJzaW9uOiBwcm9wcy5wbGF0Zm9ybVZlcnNpb24gPz8gRmFyZ2F0ZVBsYXRmb3JtVmVyc2lvbi5MQVRFU1QsXG4gICAgICBlbmFibGVFeGVjdXRlQ29tbWFuZDogcHJvcHMuZW5hYmxlRXhlY3V0ZUNvbW1hbmQgPz8gdHJ1ZSxcbiAgICAgIGFzc2lnblB1YmxpY0lwOiBwcm9wcy5hc3NpZ25QdWJsaWNJcCA/PyBmYWxzZSxcbiAgICAgIGVuYWJsZUVDU01hbmFnZWRUYWdzOiBwcm9wcy5lbmFibGVFQ1NNYW5hZ2VkVGFncyA/PyB0cnVlLFxuICAgICAgaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZDogcHJvcHMuaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZCxcbiAgICAgIGNhcGFjaXR5UHJvdmlkZXJTdHJhdGVnaWVzLFxuICAgICAgc2VjdXJpdHlHcm91cHM6IFtzZWN1cml0eUdyb3VwXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHNjYWxpbmcgPSBzZXJ2aWNlLmF1dG9TY2FsZVRhc2tDb3VudCh7XG4gICAgICBtaW5DYXBhY2l0eTogcHJvcHMubWluQ2FwYWNpdHkgPz8gMSxcbiAgICAgIG1heENhcGFjaXR5OiBwcm9wcy5tYXhDYXBhY2l0eSA/PyAyLFxuICAgIH0pO1xuICAgIGNvbnN0IHNjYWxlSW5Db29sZG93biA9IHByb3BzLnNjYWxlSW5Db29sZG93biA/PyBEdXJhdGlvbi5zZWNvbmRzKDEwKTtcbiAgICBjb25zdCBzY2FsZU91dENvb2xkb3duID0gcHJvcHMuc2NhbGVPdXRDb29sZG93biA/PyBEdXJhdGlvbi5zZWNvbmRzKDYwKTtcblxuICAgIGlmIChwcm9wcy5zY2FsZUNwdVRhcmdldFV0aWxpemF0aW9uUGVyY2VudCAhPT0gMCkge1xuICAgICAgc2NhbGluZy5zY2FsZU9uQ3B1VXRpbGl6YXRpb24oJ0NwdVNjYWxpbmcnLCB7XG4gICAgICAgIHNjYWxlSW5Db29sZG93bixcbiAgICAgICAgc2NhbGVPdXRDb29sZG93bixcbiAgICAgICAgdGFyZ2V0VXRpbGl6YXRpb25QZXJjZW50OiBwcm9wcy5zY2FsZUNwdVRhcmdldFV0aWxpemF0aW9uUGVyY2VudCA/PyA2MCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5zY2FsZU1lbW9yeVRhcmdldFV0aWxpemF0aW9uUGVyY2VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzY2FsaW5nLnNjYWxlT25NZW1vcnlVdGlsaXphdGlvbignTWVtb3J5U2NhbGluZycsIHtcbiAgICAgICAgc2NhbGVJbkNvb2xkb3duLFxuICAgICAgICBzY2FsZU91dENvb2xkb3duLFxuICAgICAgICB0YXJnZXRVdGlsaXphdGlvblBlcmNlbnQ6IHByb3BzLnNjYWxlTWVtb3J5VGFyZ2V0VXRpbGl6YXRpb25QZXJjZW50LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5wb3J0ID0gcG9ydDtcbiAgICB0aGlzLnRhc2tEZWZpbml0aW9uID0gdGFza0RlZmluaXRpb247XG4gICAgdGhpcy5sb2dHcm91cCA9IGxvZ0dyb3VwO1xuICAgIHRoaXMuc2VydmljZSA9IHNlcnZpY2U7XG4gICAgdGhpcy5zY2FsaW5nID0gc2NhbGluZztcbiAgICB0aGlzLnNjYWxlSW5Db29sZG93biA9IHNjYWxlSW5Db29sZG93bjtcbiAgICB0aGlzLnNjYWxlT3V0Q29vbGRvd24gPSBzY2FsZU91dENvb2xkb3duO1xuICAgIHRoaXMuc2VjdXJpdHlHcm91cCA9IHNlY3VyaXR5R3JvdXA7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBjb25kdWN0IHNjYWxpbmcgYmFzZWQgb24gdHJhY2tpbmcgY3VzdG9tIG1ldHJpY3MuXG4gICAqXG4gICAqIEBwYXJhbSBpZCB0aGUgaWQgdG8gZ2l2ZSB0aGUgc2NhbGluZ1xuICAgKiBAcGFyYW0gbWV0cmljIHRoZSBtZXRyaWMgdG8gdHJhY2tcbiAgICogQHBhcmFtIHRhcmdldFZhbHVlIHRoZSB0YXJnZXQgdmFsdWVcbiAgICovXG4gIHNjYWxlVG9UcmFja0N1c3RvbU1ldHJpYyhpZDogc3RyaW5nLCBtZXRyaWM6IElNZXRyaWMsIHRhcmdldFZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLnNjYWxpbmcuc2NhbGVUb1RyYWNrQ3VzdG9tTWV0cmljKGlkLCB7XG4gICAgICBzY2FsZUluQ29vbGRvd246IHRoaXMuc2NhbGVJbkNvb2xkb3duLFxuICAgICAgc2NhbGVPdXRDb29sZG93bjogdGhpcy5zY2FsZU91dENvb2xkb3duLFxuICAgICAgbWV0cmljLFxuICAgICAgdGFyZ2V0VmFsdWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVuaWVuY2UgbWV0aG9kIHRvIHNjYWxlIGJhc2VkIG9uIGEgbWV0cmljLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgdGhlIGlkIHRvIGdpdmUgdGhlIHNjYWxpbmcgcG9saWN5XG4gICAqIEBwYXJhbSBwcm9wcyBzY2FsaW5nIHByb3BlcnRpZXNcbiAgICovXG4gIHNjYWxlT25NZXRyaWMoaWQ6IHN0cmluZywgcHJvcHM6IEJhc2ljU3RlcFNjYWxpbmdQb2xpY3lQcm9wcykge1xuICAgIHRoaXMuc2NhbGluZy5zY2FsZU9uTWV0cmljKGlkLCBwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVuaWVuY2UgbWV0aG9kIHRvIHNjYWxlIGJhc2VkIG9uIGEgc2NoZWR1bGUuXG4gICAqXG4gICAqIEBwYXJhbSBpZCB0aGUgaWQgdG8gZ2l2ZSB0aGUgc2NhbGluZyBwb2xpY3lcbiAgICogQHBhcmFtIHByb3BzIHNjYWxpbmcgcHJvcGVydGllc1xuICAgKi9cbiAgc2NhbGVPblNjaGVkdWxlKGlkOiBzdHJpbmcsIHByb3BzOiBTY2FsaW5nU2NoZWR1bGUpIHtcbiAgICB0aGlzLnNjYWxpbmcuc2NhbGVPblNjaGVkdWxlKGlkLCBwcm9wcyk7XG4gIH1cbn1cbiJdfQ==
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtZmFyZ2F0ZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhbmRhcmQtZmFyZ2F0ZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGlEQWM2QjtBQUM3QixpREFBb0Q7QUFFcEQsaURBQStFO0FBQy9FLG1EQUE2RDtBQUM3RCw2Q0FBMkQ7QUFDM0QsaURBQW9EO0FBSXBELDJDQUl1QjtBQUN2Qiw2Q0FBK0M7QUFDL0Msa0NBQWtDO0FBQ2xDLHlCQUF5QjtBQXVRekI7OztHQUdHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSwyQkFBaUI7SUFVakQsZUFBZSxDQUN2QixLQUFnQixFQUNoQixLQUFrQzs7UUFFbEMsSUFBSSxNQUFBLE1BQUEsS0FBSyxDQUFDLGdCQUFnQiwwQ0FBRSxPQUFPLG1DQUFJLElBQUksRUFBRSxDQUFDO1lBQzVDLE9BQU8sSUFBSSxtQkFBUSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBQ3JDLFNBQVMsRUFBRSxNQUFBLE1BQUEsS0FBSyxDQUFDLGdCQUFnQiwwQ0FBRSxTQUFTLG1DQUFJLHdCQUFhLENBQUMsU0FBUztnQkFDdkUsWUFBWSxFQUFFLE1BQUEsS0FBSyxDQUFDLGdCQUFnQiwwQ0FBRSxZQUFZO2dCQUNsRCxhQUFhLEVBQUUsTUFBQSxLQUFLLENBQUMsZ0JBQWdCLDBDQUFFLGFBQWE7Z0JBQ3BELGFBQWEsRUFDWCxNQUFBLE1BQUEsS0FBSyxDQUFDLGdCQUFnQiwwQ0FBRSxhQUFhLG1DQUFJLDJCQUFhLENBQUMsT0FBTzthQUNqRSxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVTLGdCQUFnQixDQUN4QixLQUFnQixFQUNoQixLQUFrQyxFQUNsQyxRQUE4Qjs7UUFFOUIsSUFBSSxNQUFBLE1BQUEsS0FBSyxDQUFDLGdCQUFnQiwwQ0FBRSxPQUFPLG1DQUFJLElBQUksRUFBRSxDQUFDO1lBQzVDLE9BQU8sbUJBQVMsQ0FBQyxPQUFPLENBQUM7Z0JBQ3ZCLFlBQVksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzNCLFFBQVE7YUFDVCxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVTLGlCQUFpQixDQUN6QixLQUFnQixFQUNoQixLQUFrQztRQUVsQyxJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbkMsT0FBTztnQkFDTCxVQUFVLEVBQUUsb0JBQVUsQ0FBQyxtQkFBbUI7YUFDM0MsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDMUIsQ0FBQztJQUVTLGtDQUFrQyxDQUMxQyxLQUFrQztRQUVsQyxNQUFNLFVBQVUsR0FBK0IsRUFBRSxDQUFDO1FBQ2xELElBQ0UsS0FBSyxDQUFDLGNBQWMsS0FBSyxTQUFTO1lBQ2xDLEtBQUssQ0FBQyxZQUFZLEtBQUssU0FBUyxFQUNoQyxDQUFDO1lBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDZCxnQkFBZ0IsRUFBRSxTQUFTO2dCQUMzQixJQUFJLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQ3hCLE1BQU0sRUFBRSxLQUFLLENBQUMsY0FBYzthQUM3QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFDRSxLQUFLLENBQUMsa0JBQWtCLEtBQUssU0FBUztZQUN0QyxLQUFLLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUNwQyxDQUFDO1lBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDZCxnQkFBZ0IsRUFBRSxjQUFjO2dCQUNoQyxJQUFJLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtnQkFDNUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxrQkFBa0I7YUFDakMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3hELENBQUM7SUFFRCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFrQzs7UUFFbEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixZQUFZLEVBQUUsc0JBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSwwQkFBZSxDQUFDO1NBQ3RFLENBQUMsQ0FBQztRQUVILE1BQU0sY0FBYyxHQUFHLElBQUksK0JBQXFCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNqRSxHQUFHLEVBQUUsTUFBQSxLQUFLLENBQUMsR0FBRyxtQ0FBSSxJQUFJO1lBQ3RCLGNBQWMsRUFBRSxNQUFBLEtBQUssQ0FBQyxjQUFjLG1DQUFJLElBQUk7WUFDNUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtZQUM5QyxlQUFlLEVBQUU7Z0JBQ2YscUJBQXFCLEVBQUUsK0JBQXFCLENBQUMsS0FBSztnQkFDbEQsZUFBZSxFQUFFLE1BQUEsS0FBSyxDQUFDLGVBQWUsbUNBQUkseUJBQWUsQ0FBQyxLQUFLO2FBQ2hFO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixjQUFjLENBQUMsbUJBQW1CLENBQ2hDLElBQUkseUJBQWUsQ0FBQztnQkFDbEIsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2dCQUNoQixPQUFPLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQzthQUN0QyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM3RCxNQUFNLElBQUksR0FBRyxNQUFBLEtBQUssQ0FBQyxJQUFJLG1DQUFJLElBQUksQ0FBQztRQUNoQyxNQUFNLFFBQVEsR0FBRyxNQUFBLEtBQUssQ0FBQyxRQUFRLG1DQUFJLGtCQUFRLENBQUMsR0FBRyxDQUFDO1FBRWhELGNBQWMsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFO1lBQ3ZDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztZQUNsQixZQUFZLEVBQUU7Z0JBQ1o7b0JBQ0UsYUFBYSxFQUFFLElBQUk7b0JBQ25CLFFBQVEsRUFBRSxJQUFJO29CQUNkLFFBQVE7aUJBQ1Q7YUFDRjtZQUNELE9BQU87WUFDUCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztTQUN2QixDQUFDLENBQUM7UUFFSCxnQ0FBZ0M7UUFDaEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN4QixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekIsSUFBSSxtQkFBMkIsQ0FBQztZQUNoQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDcEIsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUN4QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FDaEMsU0FBUyxFQUNULG1EQUFtRCxDQUNwRCxDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0saUJBQWlCLEdBQUcsTUFBQSxJQUFJLENBQUMsYUFBYSxtQ0FBSSxnQkFBZ0IsQ0FBQztZQUNqRSxjQUFjLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtnQkFDbEMsYUFBYSxFQUFFLGlCQUFpQjtnQkFDaEMsS0FBSyxFQUFFLHdCQUFjLENBQUMsWUFBWSxDQUNoQyxNQUFBLElBQUksQ0FBQyxjQUFjLG1DQUNqQiw0REFBNEQsQ0FDL0Q7Z0JBQ0QsR0FBRyxFQUFFLE1BQUEsSUFBSSxDQUFDLFlBQVksbUNBQUksR0FBRztnQkFDN0IsY0FBYyxFQUFFLE1BQUEsSUFBSSxDQUFDLHVCQUF1QixtQ0FBSSxHQUFHO2dCQUNuRCxPQUFPLEVBQUUsbUJBQVMsQ0FBQyxPQUFPLENBQUM7b0JBQ3pCLFlBQVksRUFBRSxpQkFBaUI7b0JBQy9CLFFBQVEsRUFBRSxRQUFRO2lCQUNuQixDQUFDO2dCQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUk7b0JBQ2hDLE9BQU8sRUFBRTt3QkFDUCxrQkFBa0IsRUFBRSxnQkFBTSxDQUFDLGdCQUFnQixDQUN6Qyx5QkFBZSxDQUFDLHVCQUF1QixDQUNyQyxJQUFJLEVBQ0osb0JBQW9CLEVBQ3BCLElBQUksQ0FBQyxxQkFBcUIsQ0FDM0IsQ0FDRjtxQkFDRjtpQkFDRixDQUFDO2dCQUNGLFdBQVcsRUFBRTtvQkFDWCxHQUFHLENBQUMsTUFBQSxJQUFJLENBQUMsb0JBQW9CLG1DQUFJLEVBQUUsQ0FBQztvQkFDcEMsR0FBRyxDQUFDLENBQUEsTUFBQSxLQUFLLENBQUMsSUFBSSwwQ0FBRSwyQkFBMkI7eUJBQ3pDLE1BQUEsS0FBSyxDQUFDLElBQUksMENBQUUsMEJBQTBCLENBQUEsSUFBSTt3QkFDeEMsaUNBQWlDLEVBQy9CLE1BQUEsS0FBSyxDQUFDLElBQUksMENBQUUsMkJBQTJCO3dCQUN6QyxpQ0FBaUMsRUFDL0IsTUFBQSxLQUFLLENBQUMsSUFBSSwwQ0FBRSwwQkFBMEI7cUJBQ3pDLENBQUM7b0JBQ0osR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQjt3QkFDN0IsbUJBQW1CLElBQUk7d0JBQ3JCLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDO3FCQUNqRSxDQUFDO2lCQUNMO2dCQUNELFdBQVcsRUFBRTtvQkFDWCxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDO29CQUNoQyxRQUFRLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUM5QixPQUFPLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO29CQUM1QixPQUFPLEVBQUUsQ0FBQztvQkFDVixXQUFXLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2lCQUNsQzthQUNGLENBQUMsQ0FBQztZQUVILHlDQUF5QztZQUN6QyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUMvQixjQUFjLENBQUMsbUJBQW1CLENBQ2hDLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsU0FBUyxFQUFFO3dCQUNULGVBQWUsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUNsQyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUNqQixhQUFhLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtxQkFDMUM7b0JBQ0QsT0FBTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUseUJBQXlCLENBQUM7aUJBQzFELENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQztZQUVELHFEQUFxRDtZQUNyRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDeEIsY0FBYyxDQUFDLG1CQUFtQixDQUNoQyxJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLFNBQVMsRUFBRTt3QkFDVCxlQUFlLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFDbEMsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FDakIsY0FBYyxJQUFJLENBQUMsY0FBYyxFQUFFO3FCQUNwQztvQkFDRCxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztpQkFDN0IsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sY0FBYyxDQUFDLG1CQUFtQixDQUNoQyxJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztvQkFDaEIsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQzdCLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQztZQUVELHVDQUF1QztZQUN2QyxjQUFjLENBQUMsbUJBQW1CLENBQ2hDLElBQUkseUJBQWUsQ0FBQztnQkFDbEIsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2dCQUNoQixPQUFPLEVBQUU7b0JBQ1AsbUJBQW1CO29CQUNuQixxQkFBcUI7b0JBQ3JCLHNCQUFzQjtvQkFDdEIseUJBQXlCO29CQUN6Qix3QkFBd0I7b0JBQ3hCLHlCQUF5QjtvQkFDekIsdUJBQXVCO29CQUN2QiwwQkFBMEI7b0JBQzFCLHVCQUF1QjtvQkFDdkIseUJBQXlCO29CQUN6QixvQ0FBb0M7b0JBQ3BDLG1CQUFtQjtvQkFDbkIsZUFBZTtvQkFDZixlQUFlO2lCQUNoQjthQUNGLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsTUFBTSxZQUFZLEdBQUcsTUFBQSxNQUFBLEtBQUssQ0FBQyxZQUFZLG1DQUFJLEtBQUssQ0FBQyxXQUFXLG1DQUFJLENBQUMsQ0FBQztRQUNsRSxNQUFNLDBCQUEwQixHQUM5QixJQUFJLENBQUMsa0NBQWtDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakQsTUFBTSxhQUFhLEdBQUcsSUFBSSx1QkFBYSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDN0QsR0FBRyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRztZQUN0QixvQkFBb0IsRUFBRSxNQUFBLEtBQUssQ0FBQyxvQkFBb0IsbUNBQUksS0FBSztZQUN6RCxnQkFBZ0IsRUFBRSxJQUFJO1NBQ3ZCLENBQUMsQ0FBQztRQUVILE1BQU0sT0FBTyxHQUFHLElBQUksd0JBQWMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ2xELE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixjQUFjO1lBQ2QsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLGlCQUFpQixFQUFFLE1BQUEsS0FBSyxDQUFDLGlCQUFpQixtQ0FBSSxHQUFHO1lBQ2pELGlCQUFpQixFQUFFLE1BQUEsS0FBSyxDQUFDLGlCQUFpQixtQ0FBSSxHQUFHO1lBQ2pELFlBQVk7WUFDWixjQUFjLEVBQUU7Z0JBQ2QsUUFBUSxFQUFFLE1BQUEsS0FBSyxDQUFDLGNBQWMsbUNBQUksSUFBSTthQUN2QztZQUNELG9CQUFvQixFQUFFO2dCQUNwQixJQUFJLEVBQUUsTUFBQSxLQUFLLENBQUMsd0JBQXdCLG1DQUFJLGtDQUF3QixDQUFDLEdBQUc7YUFDckU7WUFDRCxVQUFVO1lBQ1YsZUFBZSxFQUFFLE1BQUEsS0FBSyxDQUFDLGVBQWUsbUNBQUksZ0NBQXNCLENBQUMsTUFBTTtZQUN2RSxvQkFBb0IsRUFBRSxNQUFBLEtBQUssQ0FBQyxvQkFBb0IsbUNBQUksSUFBSTtZQUN4RCxjQUFjLEVBQUUsTUFBQSxLQUFLLENBQUMsY0FBYyxtQ0FBSSxLQUFLO1lBQzdDLG9CQUFvQixFQUFFLE1BQUEsS0FBSyxDQUFDLG9CQUFvQixtQ0FBSSxJQUFJO1lBQ3hELHNCQUFzQixFQUFFLEtBQUssQ0FBQyxzQkFBc0I7WUFDcEQsMEJBQTBCO1lBQzFCLGNBQWMsRUFBRSxDQUFDLGFBQWEsQ0FBQztTQUNoQyxDQUFDLENBQUM7UUFFSCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUM7WUFDekMsV0FBVyxFQUFFLE1BQUEsS0FBSyxDQUFDLFdBQVcsbUNBQUksQ0FBQztZQUNuQyxXQUFXLEVBQUUsTUFBQSxLQUFLLENBQUMsV0FBVyxtQ0FBSSxDQUFDO1NBQ3BDLENBQUMsQ0FBQztRQUNILE1BQU0sZUFBZSxHQUFHLE1BQUEsS0FBSyxDQUFDLGVBQWUsbUNBQUksc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEUsTUFBTSxnQkFBZ0IsR0FBRyxNQUFBLEtBQUssQ0FBQyxnQkFBZ0IsbUNBQUksc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFeEUsSUFBSSxLQUFLLENBQUMsZ0NBQWdDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakQsT0FBTyxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRTtnQkFDMUMsZUFBZTtnQkFDZixnQkFBZ0I7Z0JBQ2hCLHdCQUF3QixFQUFFLE1BQUEsS0FBSyxDQUFDLGdDQUFnQyxtQ0FBSSxFQUFFO2FBQ3ZFLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM1RCxPQUFPLENBQUMsd0JBQXdCLENBQUMsZUFBZSxFQUFFO2dCQUNoRCxlQUFlO2dCQUNmLGdCQUFnQjtnQkFDaEIsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLG1DQUFtQzthQUNwRSxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCx3QkFBd0IsQ0FBQyxFQUFVLEVBQUUsTUFBZSxFQUFFLFdBQW1CO1FBQ3ZFLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsRUFBRSxFQUFFO1lBQ3hDLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ3ZDLE1BQU07WUFDTixXQUFXO1NBQ1osQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUFDLEVBQVUsRUFBRSxLQUFrQztRQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUFDLEVBQVUsRUFBRSxLQUFzQjtRQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBNVZELHdEQTRWQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uc3RydWN0fSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7XG4gIENhcGFjaXR5UHJvdmlkZXJTdHJhdGVneSxcbiAgQ29udGFpbmVySW1hZ2UsXG4gIENwdUFyY2hpdGVjdHVyZSxcbiAgRGVwbG95bWVudENvbnRyb2xsZXJUeXBlLFxuICBGYXJnYXRlUGxhdGZvcm1WZXJzaW9uLFxuICBGYXJnYXRlU2VydmljZSxcbiAgRmFyZ2F0ZVRhc2tEZWZpbml0aW9uLFxuICBJQ2x1c3RlcixcbiAgTG9nRHJpdmVyLFxuICBPcGVyYXRpbmdTeXN0ZW1GYW1pbHksXG4gIFByb3RvY29sLFxuICBTY2FsYWJsZVRhc2tDb3VudCxcbiAgU2VjcmV0LFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCB7U3RyaW5nUGFyYW1ldGVyfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCB7TG9nQ29uZmlndXJhdGlvbn0gZnJvbSAnLi9sb2ctY29uZmlndXJhdGlvbic7XG5pbXBvcnQge1NlY3VyaXR5R3JvdXAsIFN1Ym5ldFNlbGVjdGlvbiwgU3VibmV0VHlwZX0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQge0xvZ0dyb3VwLCBSZXRlbnRpb25EYXlzfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQge0R1cmF0aW9uLCBSZW1vdmFsUG9saWN5LCBTdGFja30gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtQb2xpY3lTdGF0ZW1lbnR9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHtCYXNpY1N0ZXBTY2FsaW5nUG9saWN5UHJvcHN9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1hdXRvc2NhbGluZyc7XG5pbXBvcnQge0lNZXRyaWN9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7U2NhbGluZ1NjaGVkdWxlfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBwbGljYXRpb25hdXRvc2NhbGluZyc7XG5pbXBvcnQge1xuICBFeHRlbmRlZENvbnN0cnVjdCxcbiAgRXh0ZW5kZWRDb25zdHJ1Y3RQcm9wcyxcbiAgU3RhbmRhcmRUYWdzLFxufSBmcm9tICcuLi8uLi9hd3MtY2RrJztcbmltcG9ydCB7TGliU3RhbmRhcmRUYWdzfSBmcm9tICcuLi8uLi90cnVlbWFyayc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQge090ZWxDb25maWd9IGZyb20gJy4vb3RlbC1jb25maWd1cmF0aW9uJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBTdGFuZGFyZEZhcmdhdGVTZXJ2aWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkRmFyZ2F0ZVNlcnZpY2VQcm9wcyBleHRlbmRzIEV4dGVuZGVkQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIENQVSBhbGxvY2F0ZWQgdG8gdGhlIHRhc2suXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gMjA0OFxuICAgKi9cbiAgcmVhZG9ubHkgY3B1PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWVtb3J5IGFsbG9jYXRlZCB0byB0aGUgdGFzay5cbiAgICpcbiAgICogQGRlZmF1bHQgLSA0MDk2XG4gICAqL1xuICByZWFkb25seSBtZW1vcnlMaW1pdE1pQj86IG51bWJlcjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZXBoZW1lcmFsIHN0b3JhZ2UgYWxsb2NhdGVkIHRvIHRoZSB0YXNrLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDIwXG4gICAqL1xuICByZWFkb25seSBlcGhlbWVyYWxTdG9yYWdlR2lCPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDUFUgYXJjaGl0ZWN0dXJlIHRvIHVzZSBmb3IgdGhlIHRhc2tcbiAgICpcbiAgICogQGRlZmF1bHQgLSBDcHVBcmNoaXRlY3R1cmUuQVJNNjRcbiAgICovXG4gIHJlYWRvbmx5IGNwdUFyY2hpdGVjdHVyZT86IENwdUFyY2hpdGVjdHVyZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgYXMgaXQgYXBwZWFycyBpbiB0aGUgY29uc29sZSBvciBpbiB0aGUgQVdTIENMSS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBDbG91ZEZvcm1hdGlvbi1nZW5lcmF0ZWQgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMb2cgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nQ29uZmlndXJhdGlvbj86IExvZ0NvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIERpc2FibGVzIFgtUmF5IGZvciB0aGlzIHNlcnZpY2UuIERlZmF1bHQgaXMgZmFsc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVYcmF5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlcyB0aGUgYWJpbGl0eSB0byBwdXNoIGN1c3RvbSBtZXRyaWNzIHRvIENsb3VkV2F0Y2ggZnJvbSB0aGUgc2VydmljZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQdWJsaXNoTWV0cmljcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBjbHVzdGVyIHRvIHBsYWNlIHNlcnZpY2VzIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3RlcjogSUNsdXN0ZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgcG9ydC5cbiAgICpcbiAgICogQGRlZmF1bHQgODA4MFxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcG9ydCBpcyBUQ1Agb3IgVURQLlxuICAgKlxuICAgKiBAZGVmYXVsdCBQcm90b2NvbC5UQ1BcbiAgICovXG4gIHJlYWRvbmx5IHByb3RvY29sPzogUHJvdG9jb2w7XG5cbiAgLyoqXG4gICAqIENvbnRhaW5lciBpbWFnZSB0byBkZXBsb3kgaW4gdGhpcyBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2U6IENvbnRhaW5lckltYWdlO1xuXG4gIC8qKlxuICAgKiBTdWJuZXRzIHRvIHB1dCB0aGUgc2VydmljZSBpbi4gSWYgdGhpcyBpcyBsZWZ0IGVtcHR5LCBzdWJuZXQgdHlwZSBQUklWQVRFX1dJVEhfRUdSRVNTIGlzIHVzZWQuXG4gICAqL1xuICByZWFkb25seSB2cGNTdWJuZXRzPzogU3VibmV0U2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gcGFzcyB0byB0aGlzIHNlcnZpY2UuXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEga2V5L3ZhbHVlIG1hcCBvZiBsYWJlbHMgdG8gYWRkIHRvIHRoZSBjb250YWluZXIuXG4gICAqL1xuICByZWFkb25seSBkb2NrZXJMYWJlbHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjcmV0IGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBwYXNzIHRvIHRoZSBjb250YWluZXIuXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzPzogUmVjb3JkPHN0cmluZywgU2VjcmV0PjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHRhc2tzLCBzcGVjaWZpZWQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBBbWF6b24gRUNTXG4gICAqIHNlcnZpY2UncyBEZXNpcmVkQ291bnQgdmFsdWUsIHRoYXQgY2FuIHJ1biBpbiBhIHNlcnZpY2UgZHVyaW5nIGFcbiAgICogZGVwbG95bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAyMDBcbiAgICovXG4gIHJlYWRvbmx5IG1heEhlYWx0aHlQZXJjZW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgdGFza3MsIHNwZWNpZmllZCBhcyBhIHBlcmNlbnRhZ2Ugb2ZcbiAgICogdGhlIEFtYXpvbiBFQ1Mgc2VydmljZSdzIERlc2lyZWRDb3VudCB2YWx1ZSwgdGhhdCBtdXN0XG4gICAqIGNvbnRpbnVlIHRvIHJ1biBhbmQgcmVtYWluIGhlYWx0aHkgZHVyaW5nIGEgZGVwbG95bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAxMDBcbiAgICovXG4gIHJlYWRvbmx5IG1pbkhlYWx0aHlQZXJjZW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgcm9sbGJhY2sgb24gZGVwbG95bWVudCBmYWlsdXJlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlUm9sbGJhY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hpY2ggZGVwbG95bWVudCBjb250cm9sbGVyIHRvIHVzZSBmb3IgdGhlIHNlcnZpY2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZXBsb3ltZW50Q29udHJvbGxlclR5cGUuRUNTXG4gICAqL1xuICByZWFkb25seSBkZXBsb3ltZW50Q29udHJvbGxlclR5cGU/OiBEZXBsb3ltZW50Q29udHJvbGxlclR5cGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgaW50byBhIGNvbnRhaW5lclxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUV4ZWN1dGVDb21tYW5kPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBsYXRmb3JtIHZlcnNpb24gb24gd2hpY2ggdG8gcnVuIHlvdXIgc2VydmljZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBGYXJnYXRlUGxhdGZvcm1WZXJzaW9uLkxBVEVTVFxuICAgKi9cbiAgcmVhZG9ubHkgcGxhdGZvcm1WZXJzaW9uPzogRmFyZ2F0ZVBsYXRmb3JtVmVyc2lvbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhc3NpZ24gYSBwdWJsaWMgSVAgYWRkcmVzcyB0byB0aGUgY29udGFpbmVycy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzaWduUHVibGljSXA/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBlbmFibGUgQW1hem9uIEVDUyBtYW5hZ2VkIHRhZ3MgZm9yIHRoZSB0YXNrcyB3aXRoaW4gdGhlIHNlcnZpY2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVFQ1NNYW5hZ2VkVGFncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlc2lyZWQgY291bnQgZm9yIHRoaXMgc2VydmljZS4gSWYgbm90IHNldCwgZGVmYXVsdHMgdG8gbWluQ2FwYWNpdHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbWluQ2FwYWNpdHlcbiAgICovXG4gIHJlYWRvbmx5IGRlc2lyZWRDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogTWluaW11bSBjYXBhY2l0eSB0byBzY2FsZSB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAxXG4gICAqL1xuICByZWFkb25seSBtaW5DYXBhY2l0eT86IG51bWJlcjtcblxuICAvKipcbiAgICogTWF4aW11bSBjYXBhY2l0eSB0byBzY2FsZSB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAyXG4gICAqL1xuICByZWFkb25seSBtYXhDYXBhY2l0eT86IG51bWJlcjtcblxuICAvKipcbiAgICogUGVyaW9kIGFmdGVyIGEgc2NhbGUgaW4gYWN0aXZpdHkgY29tcGxldGVzIGJlZm9yZSBhbm90aGVyIHNjYWxlIGluIGFjdGl2aXR5IGNhbiBzdGFydC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEdXJhdGlvbi5zZWNvbmRzKDEwKVxuICAgKi9cbiAgcmVhZG9ubHkgc2NhbGVJbkNvb2xkb3duPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFBlcmlvZCBhZnRlciBhIHNjYWxlIG91dCBhY3Rpdml0eSBjb21wbGV0ZXMgYmVmb3JlIGFub3RoZXIgc2NhbGUgb3V0IGFjdGl2aXR5IGNhbiBzdGFydC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEdXJhdGlvbi5zZWNvbmRzKDYwKVxuICAgKi9cbiAgcmVhZG9ubHkgc2NhbGVPdXRDb29sZG93bj86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IHZhbHVlIGZvciBDUFUgdXRpbGl6YXRpb24gYWNyb3NzIGFsbCB0YXNrcyBpbiB0aGUgc2VydmljZS5cbiAgICogU2V0IHRoaXMgdG8gMCB0byBkaXNhYmxlIENQVSBzY2FsaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDYwXG4gICAqL1xuICByZWFkb25seSBzY2FsZUNwdVRhcmdldFV0aWxpemF0aW9uUGVyY2VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHRhcmdldCB2YWx1ZSBmb3IgbWVtb3J5IHV0aWxpemF0aW9uIGFjcm9zcyBhbGwgdGFza3MgaW4gdGhlIHNlcnZpY2UuXG4gICAqIERpc2FibGVkIGJ5IGRlZmF1bHQuXG4gICAqL1xuICByZWFkb25seSBzY2FsZU1lbW9yeVRhcmdldFV0aWxpemF0aW9uUGVyY2VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2FwYWNpdHkgd2VpZ2h0IGZvciB0aGUgRkFSR0FURSBjYXBhY2l0eSBwcm92aWRlci4gRGVmYXVsdCBpcyB0byBub3QgdXNlIGNhcGFjaXR5IHByb3ZpZGVycy5cbiAgICovXG4gIHJlYWRvbmx5IGNhcGFjaXR5V2VpZ2h0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgdGFza3MgdG8gcnVuIG9uIHRoZSBGQVJHQVRFIGNhcGFjaXR5IHByb3ZpZGVyLiBEZWZhdWx0IGlzIHRvIG5vdCB1c2UgY2FwYWNpdHkgcHJvdmlkZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwYWNpdHlCYXNlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDYXBhY2l0eSB3ZWlnaHQgZm9yIHRoZSBGQVJHQVRFX1NQT1QgY2FwYWNpdHkgcHJvdmlkZXIuIERlZmF1bHQgaXMgdG8gbm90IHVzZSBjYXBhY2l0eSBwcm92aWRlcnMuXG4gICAqL1xuICByZWFkb25seSBzcG90Q2FwYWNpdHlXZWlnaHQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiB0YXNrcyB0byBydW4gb24gdGhlIEZBUkdBVEVfU1BPVCBjYXBhY2l0eSBwcm92aWRlci4gRGVmYXVsdCBpcyB0byBub3QgdXNlIGNhcGFjaXR5IHByb3ZpZGVycy5cbiAgICovXG4gIHJlYWRvbmx5IHNwb3RDYXBhY2l0eUJhc2U/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNldHRpbmcgdGhpcyB0byB0cnVlIHdpbGwgc3VwcHJlc3MgdGhlIGNyZWF0aW9uIG9mIGRlZmF1bHQgdGFncyBvbiByZXNvdXJjZXNcbiAgICogY3JlYXRlZCBieSB0aGlzIGNvbnN0cnVjdC4gRGVmYXVsdCBpcyBmYWxzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcHJlc3NUYWdnaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0dGluZyB0aGlzIHRvIHRydWUgd2lsbCBlbmFibGUgb3V0Ym91bmQgSVB2NiBmb3IgdGhlIHNlcnZpY2UuIERlZmF1bHQgaXMgZmFsc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93QWxsSXB2Nk91dGJvdW5kPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBlcmlvZCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB0aGF0IHRoZSBBbWF6b24gRUNTIHNlcnZpY2Ugc2NoZWR1bGVyIGlnbm9yZXMgdW5oZWFsdGh5XG4gICAqIEVsYXN0aWMgTG9hZCBCYWxhbmNpbmcgdGFyZ2V0IGhlYWx0aCBjaGVja3MgYWZ0ZXIgYSB0YXNrIGhhcyBmaXJzdCBzdGFydGVkLiBEbyBub3QgdXNlIHRoaXNcbiAgICogcHJvcGVydHkgdW5sZXNzIHlvdSBhcmUgd29ya2luZyB3aXRoIGFuIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXIuIERlZmF1bHQgaXMgdW5kZWZpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZD86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBTZXR0aW5nIHRoZSBTdGFuZGFyZCBPcGVuVGVsZW1ldHJ5IChPVEVMKSBjb25maWd1cmF0aW9uIGZvciBFQ1Mgc2VydmljZXMuXG4gICAqXG4gICAqL1xuICByZWFkb25seSBvdGVsPzogT3RlbENvbmZpZztcbn1cblxuLyoqXG4gKiBTdGFuZGFyZCBjbGFzcyBmb3IgY3JlYXRpbmcgYSBGYXJnYXRlU2VydmljZS4gSXQncyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIFN0YW5kYXJkQXBwbGljYXRpb25GYXJnYXRlU2VydmljZSBvclxuICogU3RhbmRhcmROZXR3b3JrRmFyZ2F0ZVNlcnZpY2UgaW5zdGVhZCBvZiB0aGlzIGNsYXNzLlxuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhcmRGYXJnYXRlU2VydmljZSBleHRlbmRzIEV4dGVuZGVkQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IEZhcmdhdGVUYXNrRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgbG9nR3JvdXA/OiBMb2dHcm91cDtcbiAgcmVhZG9ubHkgc2VydmljZTogRmFyZ2F0ZVNlcnZpY2U7XG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgc2NhbGluZzogU2NhbGFibGVUYXNrQ291bnQ7XG4gIHJlYWRvbmx5IHNjYWxlSW5Db29sZG93bjogRHVyYXRpb247XG4gIHJlYWRvbmx5IHNjYWxlT3V0Q29vbGRvd246IER1cmF0aW9uO1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwOiBTZWN1cml0eUdyb3VwO1xuXG4gIHByb3RlY3RlZCByZXNvbHZlTG9nR3JvdXAoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBwcm9wczogU3RhbmRhcmRGYXJnYXRlU2VydmljZVByb3BzLFxuICApOiBMb2dHcm91cCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHByb3BzLmxvZ0NvbmZpZ3VyYXRpb24/LmVuYWJsZWQgPz8gdHJ1ZSkge1xuICAgICAgcmV0dXJuIG5ldyBMb2dHcm91cChzY29wZSwgJ0xvZ0dyb3VwJywge1xuICAgICAgICByZXRlbnRpb246IHByb3BzLmxvZ0NvbmZpZ3VyYXRpb24/LnJldGVudGlvbiA/PyBSZXRlbnRpb25EYXlzLkZJVkVfREFZUyxcbiAgICAgICAgbG9nR3JvdXBOYW1lOiBwcm9wcy5sb2dDb25maWd1cmF0aW9uPy5sb2dHcm91cE5hbWUsXG4gICAgICAgIGVuY3J5cHRpb25LZXk6IHByb3BzLmxvZ0NvbmZpZ3VyYXRpb24/LmVuY3J5cHRpb25LZXksXG4gICAgICAgIHJlbW92YWxQb2xpY3k6XG4gICAgICAgICAgcHJvcHMubG9nQ29uZmlndXJhdGlvbj8ucmVtb3ZhbFBvbGljeSA/PyBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNvbHZlTG9nRHJpdmVyKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgcHJvcHM6IFN0YW5kYXJkRmFyZ2F0ZVNlcnZpY2VQcm9wcyxcbiAgICBsb2dHcm91cDogTG9nR3JvdXAgfCB1bmRlZmluZWQsXG4gICk6IExvZ0RyaXZlciB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHByb3BzLmxvZ0NvbmZpZ3VyYXRpb24/LmVuYWJsZWQgPz8gdHJ1ZSkge1xuICAgICAgcmV0dXJuIExvZ0RyaXZlci5hd3NMb2dzKHtcbiAgICAgICAgc3RyZWFtUHJlZml4OiBzY29wZS5ub2RlLmlkLFxuICAgICAgICBsb2dHcm91cCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVWcGNTdWJuZXRzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgcHJvcHM6IFN0YW5kYXJkRmFyZ2F0ZVNlcnZpY2VQcm9wcyxcbiAgKTogU3VibmV0U2VsZWN0aW9uIHtcbiAgICBpZiAocHJvcHMudnBjU3VibmV0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcHJvcHMudnBjU3VibmV0cztcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNvbHZlZENhcGFjaXR5UHJvdmlkZXJTdHJhdGVnaWVzKFxuICAgIHByb3BzOiBTdGFuZGFyZEZhcmdhdGVTZXJ2aWNlUHJvcHMsXG4gICk6IENhcGFjaXR5UHJvdmlkZXJTdHJhdGVneVtdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzdHJhdGVnaWVzOiBDYXBhY2l0eVByb3ZpZGVyU3RyYXRlZ3lbXSA9IFtdO1xuICAgIGlmIChcbiAgICAgIHByb3BzLmNhcGFjaXR5V2VpZ2h0ICE9PSB1bmRlZmluZWQgfHxcbiAgICAgIHByb3BzLmNhcGFjaXR5QmFzZSAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBzdHJhdGVnaWVzLnB1c2goe1xuICAgICAgICBjYXBhY2l0eVByb3ZpZGVyOiAnRkFSR0FURScsXG4gICAgICAgIGJhc2U6IHByb3BzLmNhcGFjaXR5QmFzZSxcbiAgICAgICAgd2VpZ2h0OiBwcm9wcy5jYXBhY2l0eVdlaWdodCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBwcm9wcy5zcG90Q2FwYWNpdHlXZWlnaHQgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgcHJvcHMuc3BvdENhcGFjaXR5QmFzZSAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBzdHJhdGVnaWVzLnB1c2goe1xuICAgICAgICBjYXBhY2l0eVByb3ZpZGVyOiAnRkFSR0FURV9TUE9UJyxcbiAgICAgICAgYmFzZTogcHJvcHMuc3BvdENhcGFjaXR5QmFzZSxcbiAgICAgICAgd2VpZ2h0OiBwcm9wcy5zcG90Q2FwYWNpdHlXZWlnaHQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cmF0ZWdpZXMubGVuZ3RoID4gMCA/IHN0cmF0ZWdpZXMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFN0YW5kYXJkRmFyZ2F0ZVNlcnZpY2VQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBzdGFuZGFyZFRhZ3M6IFN0YW5kYXJkVGFncy5tZXJnZShwcm9wcy5zdGFuZGFyZFRhZ3MsIExpYlN0YW5kYXJkVGFncyksXG4gICAgfSk7XG5cbiAgICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IG5ldyBGYXJnYXRlVGFza0RlZmluaXRpb24odGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgY3B1OiBwcm9wcy5jcHUgPz8gMjA0OCxcbiAgICAgIG1lbW9yeUxpbWl0TWlCOiBwcm9wcy5tZW1vcnlMaW1pdE1pQiA/PyA0MDk2LFxuICAgICAgZXBoZW1lcmFsU3RvcmFnZUdpQjogcHJvcHMuZXBoZW1lcmFsU3RvcmFnZUdpQixcbiAgICAgIHJ1bnRpbWVQbGF0Zm9ybToge1xuICAgICAgICBvcGVyYXRpbmdTeXN0ZW1GYW1pbHk6IE9wZXJhdGluZ1N5c3RlbUZhbWlseS5MSU5VWCxcbiAgICAgICAgY3B1QXJjaGl0ZWN0dXJlOiBwcm9wcy5jcHVBcmNoaXRlY3R1cmUgPz8gQ3B1QXJjaGl0ZWN0dXJlLkFSTTY0LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmICghcHJvcHMuZGlzYWJsZVhyYXkpIHtcbiAgICAgIHRhc2tEZWZpbml0aW9uLmFkZFRvVGFza1JvbGVQb2xpY3koXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgYWN0aW9uczogWydjbG91ZHdhdGNoOlB1dE1ldHJpY0RhdGEnXSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGxvZ0dyb3VwID0gdGhpcy5yZXNvbHZlTG9nR3JvdXAodGhpcywgcHJvcHMpO1xuICAgIGNvbnN0IGxvZ2dpbmcgPSB0aGlzLnJlc29sdmVMb2dEcml2ZXIodGhpcywgcHJvcHMsIGxvZ0dyb3VwKTtcbiAgICBjb25zdCBwb3J0ID0gcHJvcHMucG9ydCA/PyA4MDgwO1xuICAgIGNvbnN0IHByb3RvY29sID0gcHJvcHMucHJvdG9jb2wgPz8gUHJvdG9jb2wuVENQO1xuXG4gICAgdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKCdDb250YWluZXInLCB7XG4gICAgICBpbWFnZTogcHJvcHMuaW1hZ2UsXG4gICAgICBwb3J0TWFwcGluZ3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IHBvcnQsXG4gICAgICAgICAgaG9zdFBvcnQ6IHBvcnQsXG4gICAgICAgICAgcHJvdG9jb2wsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgbG9nZ2luZyxcbiAgICAgIGVudmlyb25tZW50OiBwcm9wcy5lbnZpcm9ubWVudCxcbiAgICAgIGRvY2tlckxhYmVsczogcHJvcHMuZG9ja2VyTGFiZWxzLFxuICAgICAgc2VjcmV0czogcHJvcHMuc2VjcmV0cyxcbiAgICB9KTtcblxuICAgIC8vIEFkZCBPdGVsIGNvbnRhaW5lciBpZiBlbmFibGVkXG4gICAgY29uc3Qgb3RlbCA9IHByb3BzLm90ZWw7XG4gICAgaWYgKG90ZWwgJiYgb3RlbC5lbmFibGVkKSB7XG4gICAgICBsZXQgb3RlbENvbmZpZ1BhdGhMb2NhbDogc3RyaW5nO1xuICAgICAgaWYgKG90ZWwuY29uZmlnUGF0aCkge1xuICAgICAgICBvdGVsQ29uZmlnUGF0aExvY2FsID0gb3RlbC5jb25maWdQYXRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3RlbENvbmZpZ1BhdGhMb2NhbCA9IHBhdGgucmVzb2x2ZShcbiAgICAgICAgICBfX2Rpcm5hbWUsXG4gICAgICAgICAgJy4uLy4uL3Jlc291cmNlcy9lY3Mtb3RlbC10YXNrLW1ldHJpY3MtY29uZmlnLnlhbWwnLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvdGVsQ29udGFpbmVyTmFtZSA9IG90ZWwuY29udGFpbmVyTmFtZSA/PyAnb3RlbC1jb2xsZWN0b3InO1xuICAgICAgdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKCdPdGVsJywge1xuICAgICAgICBjb250YWluZXJOYW1lOiBvdGVsQ29udGFpbmVyTmFtZSxcbiAgICAgICAgaW1hZ2U6IENvbnRhaW5lckltYWdlLmZyb21SZWdpc3RyeShcbiAgICAgICAgICBvdGVsLmNvbGxlY3RvckltYWdlID8/XG4gICAgICAgICAgICAncHVibGljLmVjci5hd3MvYXdzLW9ic2VydmFiaWxpdHkvYXdzLW90ZWwtY29sbGVjdG9yOmxhdGVzdCcsXG4gICAgICAgICksXG4gICAgICAgIGNwdTogb3RlbC5jb250YWluZXJDcHUgPz8gMjU2LFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogb3RlbC5jb250YWluZXJNZW1vcnlMaW1pdE1pQiA/PyA1MTIsXG4gICAgICAgIGxvZ2dpbmc6IExvZ0RyaXZlci5hd3NMb2dzKHtcbiAgICAgICAgICBzdHJlYW1QcmVmaXg6IG90ZWxDb250YWluZXJOYW1lLFxuICAgICAgICAgIGxvZ0dyb3VwOiBsb2dHcm91cCxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihvdGVsLnNzbUNvbmZpZ0NvbnRlbnRQYXJhbSAmJiB7XG4gICAgICAgICAgc2VjcmV0czoge1xuICAgICAgICAgICAgQU9UX0NPTkZJR19DT05URU5UOiBTZWNyZXQuZnJvbVNzbVBhcmFtZXRlcihcbiAgICAgICAgICAgICAgU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgJ090ZWxTU01Db25maWdQYXJhbScsXG4gICAgICAgICAgICAgICAgb3RlbC5zc21Db25maWdDb250ZW50UGFyYW0sXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIC4uLihvdGVsLmVudmlyb25tZW50VmFyaWFibGVzID8/IHt9KSxcbiAgICAgICAgICAuLi4ocHJvcHMub3RlbD8uYXBwbGljYXRpb25NZXRyaWNzTmFtZXNwYWNlICYmXG4gICAgICAgICAgICBwcm9wcy5vdGVsPy5hcHBsaWNhdGlvbk1ldHJpY3NMb2dHcm91cCAmJiB7XG4gICAgICAgICAgICAgIEVDU19BUFBMSUNBVElPTl9NRVRSSUNTX05BTUVTUEFDRTpcbiAgICAgICAgICAgICAgICBwcm9wcy5vdGVsPy5hcHBsaWNhdGlvbk1ldHJpY3NOYW1lc3BhY2UsXG4gICAgICAgICAgICAgIEVDU19BUFBMSUNBVElPTl9NRVRSSUNTX0xPR19HUk9VUDpcbiAgICAgICAgICAgICAgICBwcm9wcy5vdGVsPy5hcHBsaWNhdGlvbk1ldHJpY3NMb2dHcm91cCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLighb3RlbC5zc21Db25maWdDb250ZW50UGFyYW0gJiZcbiAgICAgICAgICAgIG90ZWxDb25maWdQYXRoTG9jYWwgJiYge1xuICAgICAgICAgICAgICBBT1RfQ09ORklHX0NPTlRFTlQ6IGZzLnJlYWRGaWxlU3luYyhvdGVsQ29uZmlnUGF0aExvY2FsLCAndXRmOCcpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWx0aENoZWNrOiB7XG4gICAgICAgICAgY29tbWFuZDogWydDTUQnLCAnL2hlYWx0aGNoZWNrJ10sXG4gICAgICAgICAgaW50ZXJ2YWw6IER1cmF0aW9uLnNlY29uZHMoMTApLFxuICAgICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICAgICAgcmV0cmllczogNSxcbiAgICAgICAgICBzdGFydFBlcmlvZDogRHVyYXRpb24uc2Vjb25kcygzMCksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIFNTTSBwZXJtaXNzaW9ucyB0byByZWFkIHBhcmFtZXRlcnNcbiAgICAgIGlmIChvdGVsLnNzbUNvbmZpZ0NvbnRlbnRQYXJhbSkge1xuICAgICAgICB0YXNrRGVmaW5pdGlvbi5hZGRUb1Rhc2tSb2xlUG9saWN5KFxuICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgIGBhcm46YXdzOnNzbToke1N0YWNrLm9mKHRoaXMpLnJlZ2lvbn06JHtcbiAgICAgICAgICAgICAgICBTdGFjay5vZih0aGlzKS5hY2NvdW50XG4gICAgICAgICAgICAgIH06cGFyYW1ldGVyJHtvdGVsLnNzbUNvbmZpZ0NvbnRlbnRQYXJhbX1gLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGFjdGlvbnM6IFsnc3NtOkdldFBhcmFtZXRlcnMnLCAnc3NtOkdldFBhcmFtZXRlcnNCeVBhdGgnXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIEFNUCBwZXJtaXNzaW9ucyBmb3IgcmVtb3RlIHdyaXRlIHRvIFByb21ldGhldXNcbiAgICAgIGlmIChvdGVsLmFtcFdvcmtTcGFjZUlkKSB7XG4gICAgICAgIHRhc2tEZWZpbml0aW9uLmFkZFRvVGFza1JvbGVQb2xpY3koXG4gICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgYGFybjphd3M6YXBzOiR7U3RhY2sub2YodGhpcykucmVnaW9ufToke1xuICAgICAgICAgICAgICAgIFN0YWNrLm9mKHRoaXMpLmFjY291bnRcbiAgICAgICAgICAgICAgfTp3b3Jrc3BhY2UvJHtvdGVsLmFtcFdvcmtTcGFjZUlkfWAsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgYWN0aW9uczogWydhcHM6UmVtb3RlV3JpdGUnXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhc2tEZWZpbml0aW9uLmFkZFRvVGFza1JvbGVQb2xpY3koXG4gICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgICAgYWN0aW9uczogWydhcHM6UmVtb3RlV3JpdGUnXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIHBlcm1pc3Npb24gdG8gcGVybWl0IG90ZWwgZXZlbnRzXG4gICAgICB0YXNrRGVmaW5pdGlvbi5hZGRUb1Rhc2tSb2xlUG9saWN5KFxuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICdsb2dzOlB1dExvZ0V2ZW50cycsXG4gICAgICAgICAgICAnbG9nczpDcmVhdGVMb2dHcm91cCcsXG4gICAgICAgICAgICAnbG9nczpDcmVhdGVMb2dTdHJlYW0nLFxuICAgICAgICAgICAgJ2xvZ3M6RGVzY3JpYmVMb2dTdHJlYW1zJyxcbiAgICAgICAgICAgICdsb2dzOkRlc2NyaWJlTG9nR3JvdXBzJyxcbiAgICAgICAgICAgICdsb2dzOlB1dFJldGVudGlvblBvbGljeScsXG4gICAgICAgICAgICAneHJheTpQdXRUcmFjZVNlZ21lbnRzJyxcbiAgICAgICAgICAgICd4cmF5OlB1dFRlbGVtZXRyeVJlY29yZHMnLFxuICAgICAgICAgICAgJ3hyYXk6R2V0U2FtcGxpbmdSdWxlcycsXG4gICAgICAgICAgICAneHJheTpHZXRTYW1wbGluZ1RhcmdldHMnLFxuICAgICAgICAgICAgJ3hyYXk6R2V0U2FtcGxpbmdTdGF0aXN0aWNTdW1tYXJpZXMnLFxuICAgICAgICAgICAgJ2FwczpQdXRNZXRyaWNEYXRhJyxcbiAgICAgICAgICAgICdhcHM6R2V0U2VyaWVzJyxcbiAgICAgICAgICAgICdhcHM6R2V0TGFiZWxzJyxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgdnBjU3VibmV0cyA9IHRoaXMucmVzb2x2ZVZwY1N1Ym5ldHModGhpcywgcHJvcHMpO1xuICAgIGNvbnN0IGRlc2lyZWRDb3VudCA9IHByb3BzLmRlc2lyZWRDb3VudCA/PyBwcm9wcy5taW5DYXBhY2l0eSA/PyAxO1xuICAgIGNvbnN0IGNhcGFjaXR5UHJvdmlkZXJTdHJhdGVnaWVzID1cbiAgICAgIHRoaXMucmVzb2x2ZWRDYXBhY2l0eVByb3ZpZGVyU3RyYXRlZ2llcyhwcm9wcyk7XG5cbiAgICBjb25zdCBzZWN1cml0eUdyb3VwID0gbmV3IFNlY3VyaXR5R3JvdXAodGhpcywgJ1NlY3VyaXR5R3JvdXAnLCB7XG4gICAgICB2cGM6IHByb3BzLmNsdXN0ZXIudnBjLFxuICAgICAgYWxsb3dBbGxJcHY2T3V0Ym91bmQ6IHByb3BzLmFsbG93QWxsSXB2Nk91dGJvdW5kID8/IGZhbHNlLFxuICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHNlcnZpY2UgPSBuZXcgRmFyZ2F0ZVNlcnZpY2UodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBjbHVzdGVyOiBwcm9wcy5jbHVzdGVyLFxuICAgICAgdGFza0RlZmluaXRpb24sXG4gICAgICBzZXJ2aWNlTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICBtYXhIZWFsdGh5UGVyY2VudDogcHJvcHMubWF4SGVhbHRoeVBlcmNlbnQgPz8gMjAwLFxuICAgICAgbWluSGVhbHRoeVBlcmNlbnQ6IHByb3BzLm1pbkhlYWx0aHlQZXJjZW50ID8/IDEwMCxcbiAgICAgIGRlc2lyZWRDb3VudCxcbiAgICAgIGNpcmN1aXRCcmVha2VyOiB7XG4gICAgICAgIHJvbGxiYWNrOiBwcm9wcy5lbmFibGVSb2xsYmFjayA/PyB0cnVlLFxuICAgICAgfSxcbiAgICAgIGRlcGxveW1lbnRDb250cm9sbGVyOiB7XG4gICAgICAgIHR5cGU6IHByb3BzLmRlcGxveW1lbnRDb250cm9sbGVyVHlwZSA/PyBEZXBsb3ltZW50Q29udHJvbGxlclR5cGUuRUNTLFxuICAgICAgfSxcbiAgICAgIHZwY1N1Ym5ldHMsXG4gICAgICBwbGF0Zm9ybVZlcnNpb246IHByb3BzLnBsYXRmb3JtVmVyc2lvbiA/PyBGYXJnYXRlUGxhdGZvcm1WZXJzaW9uLkxBVEVTVCxcbiAgICAgIGVuYWJsZUV4ZWN1dGVDb21tYW5kOiBwcm9wcy5lbmFibGVFeGVjdXRlQ29tbWFuZCA/PyB0cnVlLFxuICAgICAgYXNzaWduUHVibGljSXA6IHByb3BzLmFzc2lnblB1YmxpY0lwID8/IGZhbHNlLFxuICAgICAgZW5hYmxlRUNTTWFuYWdlZFRhZ3M6IHByb3BzLmVuYWJsZUVDU01hbmFnZWRUYWdzID8/IHRydWUsXG4gICAgICBoZWFsdGhDaGVja0dyYWNlUGVyaW9kOiBwcm9wcy5oZWFsdGhDaGVja0dyYWNlUGVyaW9kLFxuICAgICAgY2FwYWNpdHlQcm92aWRlclN0cmF0ZWdpZXMsXG4gICAgICBzZWN1cml0eUdyb3VwczogW3NlY3VyaXR5R3JvdXBdLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2NhbGluZyA9IHNlcnZpY2UuYXV0b1NjYWxlVGFza0NvdW50KHtcbiAgICAgIG1pbkNhcGFjaXR5OiBwcm9wcy5taW5DYXBhY2l0eSA/PyAxLFxuICAgICAgbWF4Q2FwYWNpdHk6IHByb3BzLm1heENhcGFjaXR5ID8/IDIsXG4gICAgfSk7XG4gICAgY29uc3Qgc2NhbGVJbkNvb2xkb3duID0gcHJvcHMuc2NhbGVJbkNvb2xkb3duID8/IER1cmF0aW9uLnNlY29uZHMoMTApO1xuICAgIGNvbnN0IHNjYWxlT3V0Q29vbGRvd24gPSBwcm9wcy5zY2FsZU91dENvb2xkb3duID8/IER1cmF0aW9uLnNlY29uZHMoNjApO1xuXG4gICAgaWYgKHByb3BzLnNjYWxlQ3B1VGFyZ2V0VXRpbGl6YXRpb25QZXJjZW50ICE9PSAwKSB7XG4gICAgICBzY2FsaW5nLnNjYWxlT25DcHVVdGlsaXphdGlvbignQ3B1U2NhbGluZycsIHtcbiAgICAgICAgc2NhbGVJbkNvb2xkb3duLFxuICAgICAgICBzY2FsZU91dENvb2xkb3duLFxuICAgICAgICB0YXJnZXRVdGlsaXphdGlvblBlcmNlbnQ6IHByb3BzLnNjYWxlQ3B1VGFyZ2V0VXRpbGl6YXRpb25QZXJjZW50ID8/IDYwLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnNjYWxlTWVtb3J5VGFyZ2V0VXRpbGl6YXRpb25QZXJjZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNjYWxpbmcuc2NhbGVPbk1lbW9yeVV0aWxpemF0aW9uKCdNZW1vcnlTY2FsaW5nJywge1xuICAgICAgICBzY2FsZUluQ29vbGRvd24sXG4gICAgICAgIHNjYWxlT3V0Q29vbGRvd24sXG4gICAgICAgIHRhcmdldFV0aWxpemF0aW9uUGVyY2VudDogcHJvcHMuc2NhbGVNZW1vcnlUYXJnZXRVdGlsaXphdGlvblBlcmNlbnQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgIHRoaXMudGFza0RlZmluaXRpb24gPSB0YXNrRGVmaW5pdGlvbjtcbiAgICB0aGlzLmxvZ0dyb3VwID0gbG9nR3JvdXA7XG4gICAgdGhpcy5zZXJ2aWNlID0gc2VydmljZTtcbiAgICB0aGlzLnNjYWxpbmcgPSBzY2FsaW5nO1xuICAgIHRoaXMuc2NhbGVJbkNvb2xkb3duID0gc2NhbGVJbkNvb2xkb3duO1xuICAgIHRoaXMuc2NhbGVPdXRDb29sZG93biA9IHNjYWxlT3V0Q29vbGRvd247XG4gICAgdGhpcy5zZWN1cml0eUdyb3VwID0gc2VjdXJpdHlHcm91cDtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGNvbmR1Y3Qgc2NhbGluZyBiYXNlZCBvbiB0cmFja2luZyBjdXN0b20gbWV0cmljcy5cbiAgICpcbiAgICogQHBhcmFtIGlkIHRoZSBpZCB0byBnaXZlIHRoZSBzY2FsaW5nXG4gICAqIEBwYXJhbSBtZXRyaWMgdGhlIG1ldHJpYyB0byB0cmFja1xuICAgKiBAcGFyYW0gdGFyZ2V0VmFsdWUgdGhlIHRhcmdldCB2YWx1ZVxuICAgKi9cbiAgc2NhbGVUb1RyYWNrQ3VzdG9tTWV0cmljKGlkOiBzdHJpbmcsIG1ldHJpYzogSU1ldHJpYywgdGFyZ2V0VmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuc2NhbGluZy5zY2FsZVRvVHJhY2tDdXN0b21NZXRyaWMoaWQsIHtcbiAgICAgIHNjYWxlSW5Db29sZG93bjogdGhpcy5zY2FsZUluQ29vbGRvd24sXG4gICAgICBzY2FsZU91dENvb2xkb3duOiB0aGlzLnNjYWxlT3V0Q29vbGRvd24sXG4gICAgICBtZXRyaWMsXG4gICAgICB0YXJnZXRWYWx1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgdG8gc2NhbGUgYmFzZWQgb24gYSBtZXRyaWMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCB0aGUgaWQgdG8gZ2l2ZSB0aGUgc2NhbGluZyBwb2xpY3lcbiAgICogQHBhcmFtIHByb3BzIHNjYWxpbmcgcHJvcGVydGllc1xuICAgKi9cbiAgc2NhbGVPbk1ldHJpYyhpZDogc3RyaW5nLCBwcm9wczogQmFzaWNTdGVwU2NhbGluZ1BvbGljeVByb3BzKSB7XG4gICAgdGhpcy5zY2FsaW5nLnNjYWxlT25NZXRyaWMoaWQsIHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgdG8gc2NhbGUgYmFzZWQgb24gYSBzY2hlZHVsZS5cbiAgICpcbiAgICogQHBhcmFtIGlkIHRoZSBpZCB0byBnaXZlIHRoZSBzY2FsaW5nIHBvbGljeVxuICAgKiBAcGFyYW0gcHJvcHMgc2NhbGluZyBwcm9wZXJ0aWVzXG4gICAqL1xuICBzY2FsZU9uU2NoZWR1bGUoaWQ6IHN0cmluZywgcHJvcHM6IFNjYWxpbmdTY2hlZHVsZSkge1xuICAgIHRoaXMuc2NhbGluZy5zY2FsZU9uU2NoZWR1bGUoaWQsIHByb3BzKTtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "truemark-cdk-lib",
3
3
  "description": "AWS CDK constructs created by TrueMark",
4
- "version": "1.18.2",
4
+ "version": "1.18.3",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
7
7
  "author": "TrueMark Technologies, Inc.",