@aws-cdk/aws-glue-alpha 2.265.0-alpha.0 → 2.267.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +982 -776
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +25 -91
- package/README.md +158 -72
- package/awslint.json +6 -1
- package/lib/catalog.js +3 -3
- package/lib/code.js +3 -3
- package/lib/connection.d.ts +41 -1
- package/lib/connection.js +48 -9
- package/lib/data-format.d.ts +2 -2
- package/lib/data-format.js +8 -8
- package/lib/data-quality-ruleset.d.ts +28 -3
- package/lib/data-quality-ruleset.js +37 -5
- package/lib/database.d.ts +1 -1
- package/lib/database.js +2 -2
- package/lib/external-table.js +6 -4
- package/lib/index.d.ts +0 -1
- package/lib/index.js +1 -2
- package/lib/jobs/job.d.ts +1 -24
- package/lib/jobs/job.js +3 -3
- package/lib/jobs/pyspark-etl-job.d.ts +2 -1
- package/lib/jobs/pyspark-etl-job.js +10 -5
- package/lib/jobs/pyspark-flex-etl-job.d.ts +3 -2
- package/lib/jobs/pyspark-flex-etl-job.js +7 -6
- package/lib/jobs/pyspark-streaming-job.d.ts +2 -1
- package/lib/jobs/pyspark-streaming-job.js +6 -5
- package/lib/jobs/python-shell-job.js +1 -1
- package/lib/jobs/ray-job.d.ts +8 -0
- package/lib/jobs/ray-job.js +3 -7
- package/lib/jobs/scala-spark-etl-job.js +4 -8
- package/lib/jobs/scala-spark-flex-etl-job.js +4 -4
- package/lib/jobs/scala-spark-streaming-job.js +4 -8
- package/lib/jobs/spark-job.d.ts +26 -0
- package/lib/jobs/spark-job.js +2 -2
- package/lib/partition-projection.d.ts +8 -8
- package/lib/partition-projection.js +49 -2
- package/lib/s3-table.d.ts +83 -39
- package/lib/s3-table.js +136 -86
- package/lib/schema.d.ts +26 -6
- package/lib/schema.js +74 -82
- package/lib/security-configuration.d.ts +41 -47
- package/lib/security-configuration.js +83 -25
- package/lib/storage-parameter.d.ts +14 -3
- package/lib/storage-parameter.js +16 -6
- package/lib/table-base.d.ts +34 -1
- package/lib/table-base.js +33 -2
- package/lib/triggers/trigger-options.js +1 -1
- package/lib/triggers/workflow.js +2 -2
- package/package.json +7 -7
- package/lib/table-deprecated.d.ts +0 -13
- package/lib/table-deprecated.js +0 -70
|
@@ -67,7 +67,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
67
67
|
};
|
|
68
68
|
})();
|
|
69
69
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
70
|
-
exports.SecurityConfiguration = exports.
|
|
70
|
+
exports.SecurityConfiguration = exports.JobBookmarksEncryption = exports.CloudWatchEncryption = exports.S3Encryption = exports.S3EncryptionMode = void 0;
|
|
71
71
|
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
72
72
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
73
73
|
const aws_glue_1 = require("aws-cdk-lib/aws-glue");
|
|
@@ -96,32 +96,90 @@ var S3EncryptionMode;
|
|
|
96
96
|
*/
|
|
97
97
|
S3EncryptionMode["KMS"] = "SSE-KMS";
|
|
98
98
|
})(S3EncryptionMode || (exports.S3EncryptionMode = S3EncryptionMode = {}));
|
|
99
|
+
// CloudWatch Logs support only SSE-KMS; Job Bookmarks support only CSE-KMS.
|
|
100
|
+
const CLOUD_WATCH_ENCRYPTION_MODE = 'SSE-KMS';
|
|
101
|
+
const JOB_BOOKMARKS_ENCRYPTION_MODE = 'CSE-KMS';
|
|
99
102
|
/**
|
|
100
|
-
*
|
|
101
|
-
*
|
|
103
|
+
* S3 encryption configuration for a `SecurityConfiguration`.
|
|
104
|
+
*
|
|
105
|
+
* Use {@link S3Encryption.s3Managed} for SSE-S3 or {@link S3Encryption.kms} for
|
|
106
|
+
* SSE-KMS. Because these are separate factories, a KMS key can never be paired
|
|
107
|
+
* with S3-managed encryption.
|
|
102
108
|
*/
|
|
103
|
-
|
|
104
|
-
|
|
109
|
+
class S3Encryption {
|
|
110
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.S3Encryption", version: "2.267.0-alpha.0" };
|
|
111
|
+
/**
|
|
112
|
+
* Server-side encryption (SSE) with an Amazon S3-managed key.
|
|
113
|
+
*
|
|
114
|
+
* @see https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
|
|
115
|
+
*/
|
|
116
|
+
static s3Managed() {
|
|
117
|
+
return new S3Encryption(S3EncryptionMode.S3_MANAGED, undefined);
|
|
118
|
+
}
|
|
105
119
|
/**
|
|
106
120
|
* Server-side encryption (SSE) with an AWS KMS key managed by the account owner.
|
|
107
121
|
*
|
|
122
|
+
* @param kmsKey the KMS key used to encrypt the data. A key is created if one is not provided.
|
|
108
123
|
* @see https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html
|
|
109
124
|
*/
|
|
110
|
-
|
|
111
|
-
|
|
125
|
+
static kms(kmsKey) {
|
|
126
|
+
return new S3Encryption(S3EncryptionMode.KMS, kmsKey);
|
|
127
|
+
}
|
|
128
|
+
/** @internal */
|
|
129
|
+
_mode;
|
|
130
|
+
/** @internal */
|
|
131
|
+
_kmsKey;
|
|
132
|
+
constructor(mode, kmsKey) {
|
|
133
|
+
this._mode = mode;
|
|
134
|
+
this._kmsKey = kmsKey;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.S3Encryption = S3Encryption;
|
|
138
|
+
/**
|
|
139
|
+
* CloudWatch Logs encryption configuration for a `SecurityConfiguration`.
|
|
140
|
+
*
|
|
141
|
+
* CloudWatch Logs support only server-side encryption with a KMS key.
|
|
142
|
+
*/
|
|
143
|
+
class CloudWatchEncryption {
|
|
144
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.CloudWatchEncryption", version: "2.267.0-alpha.0" };
|
|
145
|
+
/**
|
|
146
|
+
* Server-side encryption (SSE) with an AWS KMS key managed by the account owner.
|
|
147
|
+
*
|
|
148
|
+
* @param kmsKey the KMS key used to encrypt the data. A key is created if one is not provided.
|
|
149
|
+
*/
|
|
150
|
+
static kms(kmsKey) {
|
|
151
|
+
return new CloudWatchEncryption(kmsKey);
|
|
152
|
+
}
|
|
153
|
+
/** @internal */
|
|
154
|
+
_kmsKey;
|
|
155
|
+
constructor(kmsKey) {
|
|
156
|
+
this._kmsKey = kmsKey;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
exports.CloudWatchEncryption = CloudWatchEncryption;
|
|
112
160
|
/**
|
|
113
|
-
*
|
|
114
|
-
*
|
|
161
|
+
* Job bookmarks encryption configuration for a `SecurityConfiguration`.
|
|
162
|
+
*
|
|
163
|
+
* Job bookmarks support only client-side encryption with a KMS key.
|
|
115
164
|
*/
|
|
116
|
-
|
|
117
|
-
|
|
165
|
+
class JobBookmarksEncryption {
|
|
166
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.JobBookmarksEncryption", version: "2.267.0-alpha.0" };
|
|
118
167
|
/**
|
|
119
168
|
* Client-side encryption (CSE) with an AWS KMS key managed by the account owner.
|
|
120
169
|
*
|
|
170
|
+
* @param kmsKey the KMS key used to encrypt the data. A key is created if one is not provided.
|
|
121
171
|
* @see https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html
|
|
122
172
|
*/
|
|
123
|
-
|
|
124
|
-
|
|
173
|
+
static clientSideKms(kmsKey) {
|
|
174
|
+
return new JobBookmarksEncryption(kmsKey);
|
|
175
|
+
}
|
|
176
|
+
/** @internal */
|
|
177
|
+
_kmsKey;
|
|
178
|
+
constructor(kmsKey) {
|
|
179
|
+
this._kmsKey = kmsKey;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
exports.JobBookmarksEncryption = JobBookmarksEncryption;
|
|
125
183
|
/**
|
|
126
184
|
* A security configuration is a set of security properties that can be used by AWS Glue to encrypt data at rest.
|
|
127
185
|
*
|
|
@@ -149,7 +207,7 @@ let SecurityConfiguration = (() => {
|
|
|
149
207
|
SecurityConfiguration = _classThis = _classDescriptor.value;
|
|
150
208
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
151
209
|
}
|
|
152
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.SecurityConfiguration", version: "2.
|
|
210
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.SecurityConfiguration", version: "2.267.0-alpha.0" };
|
|
153
211
|
/** Uniquely identifies this class. */
|
|
154
212
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-glue-alpha.SecurityConfiguration';
|
|
155
213
|
/**
|
|
@@ -199,34 +257,34 @@ let SecurityConfiguration = (() => {
|
|
|
199
257
|
if (!props.s3Encryption && !props.cloudWatchEncryption && !props.jobBookmarksEncryption) {
|
|
200
258
|
throw new cdk.ValidationError((0, helpers_internal_1.lit) `EncryptionRequired`, 'One of cloudWatchEncryption, jobBookmarksEncryption or s3Encryption must be defined', this);
|
|
201
259
|
}
|
|
202
|
-
const kmsKeyCreationRequired = (props.s3Encryption && props.s3Encryption.
|
|
203
|
-
(props.cloudWatchEncryption && !props.cloudWatchEncryption.
|
|
204
|
-
(props.jobBookmarksEncryption && !props.jobBookmarksEncryption.
|
|
260
|
+
const kmsKeyCreationRequired = (props.s3Encryption && props.s3Encryption._mode === S3EncryptionMode.KMS && !props.s3Encryption._kmsKey) ||
|
|
261
|
+
(props.cloudWatchEncryption && !props.cloudWatchEncryption._kmsKey) ||
|
|
262
|
+
(props.jobBookmarksEncryption && !props.jobBookmarksEncryption._kmsKey);
|
|
205
263
|
const autoCreatedKmsKey = kmsKeyCreationRequired ? new kms.Key(this, 'Key', { enableKeyRotation: true }) : undefined;
|
|
206
264
|
let cloudWatchEncryption;
|
|
207
265
|
if (props.cloudWatchEncryption) {
|
|
208
|
-
this.cloudWatchEncryptionKey = props.cloudWatchEncryption.
|
|
266
|
+
this.cloudWatchEncryptionKey = props.cloudWatchEncryption._kmsKey || autoCreatedKmsKey;
|
|
209
267
|
cloudWatchEncryption = {
|
|
210
|
-
cloudWatchEncryptionMode:
|
|
268
|
+
cloudWatchEncryptionMode: CLOUD_WATCH_ENCRYPTION_MODE,
|
|
211
269
|
kmsKeyArn: this.cloudWatchEncryptionKey?.keyRef.keyArn,
|
|
212
270
|
};
|
|
213
271
|
}
|
|
214
272
|
let jobBookmarksEncryption;
|
|
215
273
|
if (props.jobBookmarksEncryption) {
|
|
216
|
-
this.jobBookmarksEncryptionKey = props.jobBookmarksEncryption.
|
|
274
|
+
this.jobBookmarksEncryptionKey = props.jobBookmarksEncryption._kmsKey || autoCreatedKmsKey;
|
|
217
275
|
jobBookmarksEncryption = {
|
|
218
|
-
jobBookmarksEncryptionMode:
|
|
276
|
+
jobBookmarksEncryptionMode: JOB_BOOKMARKS_ENCRYPTION_MODE,
|
|
219
277
|
kmsKeyArn: this.jobBookmarksEncryptionKey?.keyRef.keyArn,
|
|
220
278
|
};
|
|
221
279
|
}
|
|
222
280
|
let s3Encryptions;
|
|
223
281
|
if (props.s3Encryption) {
|
|
224
|
-
if (props.s3Encryption.
|
|
225
|
-
this.s3EncryptionKey = props.s3Encryption.
|
|
282
|
+
if (props.s3Encryption._mode === S3EncryptionMode.KMS) {
|
|
283
|
+
this.s3EncryptionKey = props.s3Encryption._kmsKey || autoCreatedKmsKey;
|
|
226
284
|
}
|
|
227
285
|
// NOTE: CloudFormations errors out if array is of length > 1. That's why the props don't expose an array
|
|
228
286
|
s3Encryptions = [{
|
|
229
|
-
s3EncryptionMode: props.s3Encryption.
|
|
287
|
+
s3EncryptionMode: props.s3Encryption._mode,
|
|
230
288
|
kmsKeyArn: this.s3EncryptionKey?.keyRef.keyArn,
|
|
231
289
|
}];
|
|
232
290
|
}
|
|
@@ -251,4 +309,4 @@ let SecurityConfiguration = (() => {
|
|
|
251
309
|
return SecurityConfiguration = _classThis;
|
|
252
310
|
})();
|
|
253
311
|
exports.SecurityConfiguration = SecurityConfiguration;
|
|
254
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBQWdFO0FBQ2hFLHlEQUEyQztBQUMzQyxzREFBd0M7QUFDeEMsMkNBQStDO0FBQy9DLDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBYzFFOzs7R0FHRztBQUNILElBQVksZ0JBY1g7QUFkRCxXQUFZLGdCQUFnQjtJQUMxQjs7OztPQUlHO0lBQ0gseUNBQXFCLENBQUE7SUFFckI7Ozs7T0FJRztJQUNILG1DQUFlLENBQUE7QUFDakIsQ0FBQyxFQWRXLGdCQUFnQixnQ0FBaEIsZ0JBQWdCLFFBYzNCO0FBRUQ7OztHQUdHO0FBQ0gsSUFBWSx3QkFPWDtBQVBELFdBQVksd0JBQXdCO0lBQ2xDOzs7O09BSUc7SUFDSCwyQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFQVyx3QkFBd0Isd0NBQXhCLHdCQUF3QixRQU9uQztBQUVEOzs7R0FHRztBQUNILElBQVksMEJBT1g7QUFQRCxXQUFZLDBCQUEwQjtJQUNwQzs7OztPQUlHO0lBQ0gseURBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQVBXLDBCQUEwQiwwQ0FBMUIsMEJBQTBCLFFBT3JDO0FBdUZEOzs7Ozs7OztHQVFHO0lBRVUscUJBQXFCOzRCQURqQyxvQ0FBa0I7Ozs7c0JBQ3dCLEdBQUcsQ0FBQyxRQUFROzs7cUNBQXBCLFNBQVEsV0FBWTs7Ozt5REFvR3BELGlDQUFjO1lBQ2Ysa09BQVcseUJBQXlCLDZEQUVuQztZQXZHSCw2S0F3R0M7Ozs7O1FBdkdDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcsK0NBQStDLENBQUM7UUFFdkc7Ozs7OztXQU1HO1FBQ0ksTUFB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SSxhQUFhLENBQUM7WUFDbEIsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ3JELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksaUJBQWlCLENBQUM7Z0JBQ3hFLENBQUM7Z0JBQ0QseUdBQXlHO2dCQUN6RyxhQUFhLEdBQUcsQ0FBQzt3QkFDZixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUk7d0JBQ3pDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxNQUFNO3FCQUMvQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxtQ0FBd0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUM5RCxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQ3ZCLHVCQUF1QixFQUFFO29CQUN2QixvQkFBb0I7b0JBQ3BCLHNCQUFzQjtvQkFDdEIsYUFBYTtpQkFDZDthQUNGLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBRXpCLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3ZEO1FBR0QsSUFBVyx5QkFBeUI7WUFDbEMsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6RDs7WUF2R1UsdURBQXFCOzs7OztBQUFyQixzREFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5TZWN1cml0eUNvbmZpZ3VyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2x1ZSc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBMYXp5LCBOYW1lcyB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgbWVtb2l6ZWRHZXR0ZXIsIGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIEludGVyZmFjZSByZXByZXNlbnRpbmcgYSBjcmVhdGVkIG9yIGFuIGltcG9ydGVkIGBTZWN1cml0eUNvbmZpZ3VyYXRpb25gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTZWN1cml0eUNvbmZpZ3VyYXRpb24gZXh0ZW5kcyBjZGsuSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzZWN1cml0eSBjb25maWd1cmF0aW9uLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUNvbmZpZ3VyYXRpb25OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5jcnlwdGlvbiBtb2RlIGZvciBTMy5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L3dlYmFwaS9BUElfUzNFbmNyeXB0aW9uLmh0bWwjR2x1ZS1UeXBlLVMzRW5jcnlwdGlvbi1TM0VuY3J5cHRpb25Nb2RlXG4gKi9cbmV4cG9ydCBlbnVtIFMzRW5jcnlwdGlvbk1vZGUge1xuICAvKipcbiAgICogU2VydmVyIHNpZGUgZW5jcnlwdGlvbiAoU1NFKSB3aXRoIGFuIEFtYXpvbiBTMy1tYW5hZ2VkIGtleS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9Vc2luZ1NlcnZlclNpZGVFbmNyeXB0aW9uLmh0bWxcbiAgICovXG4gIFMzX01BTkFHRUQgPSAnU1NFLVMzJyxcblxuICAvKipcbiAgICogU2VydmVyLXNpZGUgZW5jcnlwdGlvbiAoU1NFKSB3aXRoIGFuIEFXUyBLTVMga2V5IG1hbmFnZWQgYnkgdGhlIGFjY291bnQgb3duZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvVXNpbmdLTVNFbmNyeXB0aW9uLmh0bWxcbiAgICovXG4gIEtNUyA9ICdTU0UtS01TJyxcbn1cblxuLyoqXG4gKiBFbmNyeXB0aW9uIG1vZGUgZm9yIENsb3VkV2F0Y2ggTG9ncy5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L3dlYmFwaS9BUElfQ2xvdWRXYXRjaEVuY3J5cHRpb24uaHRtbCNHbHVlLVR5cGUtQ2xvdWRXYXRjaEVuY3J5cHRpb24tQ2xvdWRXYXRjaEVuY3J5cHRpb25Nb2RlXG4gKi9cbmV4cG9ydCBlbnVtIENsb3VkV2F0Y2hFbmNyeXB0aW9uTW9kZSB7XG4gIC8qKlxuICAgKiBTZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIChTU0UpIHdpdGggYW4gQVdTIEtNUyBrZXkgbWFuYWdlZCBieSB0aGUgYWNjb3VudCBvd25lci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9Vc2luZ0tNU0VuY3J5cHRpb24uaHRtbFxuICAgKi9cbiAgS01TID0gJ1NTRS1LTVMnLFxufVxuXG4vKipcbiAqIEVuY3J5cHRpb24gbW9kZSBmb3IgSm9iIEJvb2ttYXJrcy5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L3dlYmFwaS9BUElfSm9iQm9va21hcmtzRW5jcnlwdGlvbi5odG1sI0dsdWUtVHlwZS1Kb2JCb29rbWFya3NFbmNyeXB0aW9uLUpvYkJvb2ttYXJrc0VuY3J5cHRpb25Nb2RlXG4gKi9cbmV4cG9ydCBlbnVtIEpvYkJvb2ttYXJrc0VuY3J5cHRpb25Nb2RlIHtcbiAgLyoqXG4gICAqIENsaWVudC1zaWRlIGVuY3J5cHRpb24gKENTRSkgd2l0aCBhbiBBV1MgS01TIGtleSBtYW5hZ2VkIGJ5IHRoZSBhY2NvdW50IG93bmVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L1VzaW5nQ2xpZW50U2lkZUVuY3J5cHRpb24uaHRtbFxuICAgKi9cbiAgQ0xJRU5UX1NJREVfS01TID0gJ0NTRS1LTVMnLFxufVxuXG4vKipcbiAqIFMzIGVuY3J5cHRpb24gY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM0VuY3J5cHRpb24ge1xuICAvKipcbiAgICogRW5jcnlwdGlvbiBtb2RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZTogUzNFbmNyeXB0aW9uTW9kZTtcblxuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdG8gYmUgdXNlZCB0byBlbmNyeXB0IHRoZSBkYXRhLlxuICAgKiBAZGVmYXVsdCBubyBrbXMga2V5IGlmIG1vZGUgPSBTM19NQU5BR0VELiBBIGtleSB3aWxsIGJlIGNyZWF0ZWQgaWYgb25lIGlzIG5vdCBwcm92aWRlZCBhbmQgbW9kZSA9IEtNUy5cbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5UmVmO1xufVxuXG4vKipcbiAqIENsb3VkV2F0Y2ggTG9ncyBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRXYXRjaEVuY3J5cHRpb24ge1xuICAvKipcbiAgICogRW5jcnlwdGlvbiBtb2RlXG4gICAqL1xuICByZWFkb25seSBtb2RlOiBDbG91ZFdhdGNoRW5jcnlwdGlvbk1vZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBLTVMga2V5IHRvIGJlIHVzZWQgdG8gZW5jcnlwdCB0aGUgZGF0YS5cbiAgICogQGRlZmF1bHQgQSBrZXkgd2lsbCBiZSBjcmVhdGVkIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQuXG4gICAqL1xuICByZWFkb25seSBrbXNLZXk/OiBrbXMuSUtleVJlZjtcbn1cblxuLyoqXG4gKiBKb2IgYm9va21hcmtzIGVuY3J5cHRpb24gY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKb2JCb29rbWFya3NFbmNyeXB0aW9uIHtcbiAgLyoqXG4gICAqIEVuY3J5cHRpb24gbW9kZS5cbiAgICovXG4gIHJlYWRvbmx5IG1vZGU6IEpvYkJvb2ttYXJrc0VuY3J5cHRpb25Nb2RlO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB0byBiZSB1c2VkIHRvIGVuY3J5cHQgdGhlIGRhdGEuXG4gICAqIEBkZWZhdWx0IEEga2V5IHdpbGwgYmUgY3JlYXRlZCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXlSZWY7XG59XG5cbi8qKlxuICogQ29uc3RydWN0aW9ucyBwcm9wZXJ0aWVzIG9mIGBTZWN1cml0eUNvbmZpZ3VyYXRpb25gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5Q29uZmlndXJhdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzZWN1cml0eSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGdlbmVyYXRlZCBieSBDREsuXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUNvbmZpZ3VyYXRpb25OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciBBbWF6b24gQ2xvdWRXYXRjaCBMb2dzLlxuICAgKiBAZGVmYXVsdCBubyBjbG91ZHdhdGNoIGxvZ3MgZW5jcnlwdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkV2F0Y2hFbmNyeXB0aW9uPzogQ2xvdWRXYXRjaEVuY3J5cHRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIEdsdWUgSm9iIEJvb2ttYXJrcy5cbiAgICogQGRlZmF1bHQgbm8gam9iIGJvb2ttYXJrcyBlbmNyeXB0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgam9iQm9va21hcmtzRW5jcnlwdGlvbj86IEpvYkJvb2ttYXJrc0VuY3J5cHRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIEFtYXpvbiBTaW1wbGUgU3RvcmFnZSBTZXJ2aWNlIChBbWF6b24gUzMpIGRhdGEuXG4gICAqIEBkZWZhdWx0IG5vIHMzIGVuY3J5cHRpb24uXG4gICAqL1xuICByZWFkb25seSBzM0VuY3J5cHRpb24/OiBTM0VuY3J5cHRpb247XG5cbiAgLyoqXG4gICAqIFBvbGljeSB0byBhcHBseSB3aGVuIHRoZSBzZWN1cml0eSBjb25maWd1cmF0aW9uIGlzIHJlbW92ZWQgZnJvbSB0aGUgc3RhY2suXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcmVzb3VyY2Ugd2lsbCBiZSBkZXN0cm95ZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBjZGsuUmVtb3ZhbFBvbGljeTtcbn1cblxuLyoqXG4gKiBBIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24gaXMgYSBzZXQgb2Ygc2VjdXJpdHkgcHJvcGVydGllcyB0aGF0IGNhbiBiZSB1c2VkIGJ5IEFXUyBHbHVlIHRvIGVuY3J5cHQgZGF0YSBhdCByZXN0LlxuICpcbiAqIFRoZSBmb2xsb3dpbmcgc2NlbmFyaW9zIHNob3cgc29tZSBvZiB0aGUgd2F5cyB0aGF0IHlvdSBjYW4gdXNlIGEgc2VjdXJpdHkgY29uZmlndXJhdGlvbi5cbiAqIC0gQXR0YWNoIGEgc2VjdXJpdHkgY29uZmlndXJhdGlvbiB0byBhbiBBV1MgR2x1ZSBjcmF3bGVyIHRvIHdyaXRlIGVuY3J5cHRlZCBBbWF6b24gQ2xvdWRXYXRjaCBMb2dzLlxuICogLSBBdHRhY2ggYSBzZWN1cml0eSBjb25maWd1cmF0aW9uIHRvIGFuIGV4dHJhY3QsIHRyYW5zZm9ybSwgYW5kIGxvYWQgKEVUTCkgam9iIHRvIHdyaXRlIGVuY3J5cHRlZCBBbWF6b24gU2ltcGxlIFN0b3JhZ2UgU2VydmljZSAoQW1hem9uIFMzKSB0YXJnZXRzIGFuZCBlbmNyeXB0ZWQgQ2xvdWRXYXRjaCBMb2dzLlxuICogLSBBdHRhY2ggYSBzZWN1cml0eSBjb25maWd1cmF0aW9uIHRvIGFuIEVUTCBqb2IgdG8gd3JpdGUgaXRzIGpvYnMgYm9va21hcmtzIGFzIGVuY3J5cHRlZCBBbWF6b24gUzMgZGF0YS5cbiAqIC0gQXR0YWNoIGEgc2VjdXJpdHkgY29uZmlndXJhdGlvbiB0byBhIGRldmVsb3BtZW50IGVuZHBvaW50IHRvIHdyaXRlIGVuY3J5cHRlZCBBbWF6b24gUzMgdGFyZ2V0cy5cbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFNlY3VyaXR5Q29uZmlndXJhdGlvbiBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElTZWN1cml0eUNvbmZpZ3VyYXRpb24ge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1nbHVlLWFscGhhLlNlY3VyaXR5Q29uZmlndXJhdGlvbic7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBDb25uZWN0aW9uIGNvbnN0cnVjdCB0aGF0IHJlcHJlc2VudHMgYW4gZXh0ZXJuYWwgc2VjdXJpdHkgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBzY29wZSBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKS5cbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBpZC5cbiAgICogQHBhcmFtIHNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWUgbmFtZSBvZiBleHRlcm5hbCBzZWN1cml0eSBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZShzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsXG4gICAgc2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nKTogSVNlY3VyaXR5Q29uZmlndXJhdGlvbiB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSVNlY3VyaXR5Q29uZmlndXJhdGlvbiB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZSA9IHNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWU7XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdXNlZCBpbiBDbG91ZFdhdGNoIGVuY3J5cHRpb24gaWYgaXQgcmVxdWlyZXMgYSBrbXMga2V5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNsb3VkV2F0Y2hFbmNyeXB0aW9uS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgLyoqXG4gICAqIFRoZSBLTVMga2V5IHVzZWQgaW4gam9iIGJvb2ttYXJrcyBlbmNyeXB0aW9uIGlmIGl0IHJlcXVpcmVzIGEga21zIGtleS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBqb2JCb29rbWFya3NFbmNyeXB0aW9uS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgLyoqXG4gICAqIFRoZSBLTVMga2V5IHVzZWQgaW4gUzMgZW5jcnlwdGlvbiBpZiBpdCByZXF1aXJlcyBhIGttcyBrZXkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgczNFbmNyeXB0aW9uS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgcHJpdmF0ZSByZXNvdXJjZTogQ2ZuU2VjdXJpdHlDb25maWd1cmF0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNlY3VyaXR5Q29uZmlndXJhdGlvblByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuc2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZSA/P1xuICAgICAgICBMYXp5LnN0cmluZyh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT4gTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHt9KSxcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBpZiAoIXByb3BzLnMzRW5jcnlwdGlvbiAmJiAhcHJvcHMuY2xvdWRXYXRjaEVuY3J5cHRpb24gJiYgIXByb3BzLmpvYkJvb2ttYXJrc0VuY3J5cHRpb24pIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGxpdGBFbmNyeXB0aW9uUmVxdWlyZWRgLCAnT25lIG9mIGNsb3VkV2F0Y2hFbmNyeXB0aW9uLCBqb2JCb29rbWFya3NFbmNyeXB0aW9uIG9yIHMzRW5jcnlwdGlvbiBtdXN0IGJlIGRlZmluZWQnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCBrbXNLZXlDcmVhdGlvblJlcXVpcmVkID1cbiAgICAgIChwcm9wcy5zM0VuY3J5cHRpb24gJiYgcHJvcHMuczNFbmNyeXB0aW9uLm1vZGUgPT09IFMzRW5jcnlwdGlvbk1vZGUuS01TICYmICFwcm9wcy5zM0VuY3J5cHRpb24ua21zS2V5KSB8fFxuICAgICAgKHByb3BzLmNsb3VkV2F0Y2hFbmNyeXB0aW9uICYmICFwcm9wcy5jbG91ZFdhdGNoRW5jcnlwdGlvbi5rbXNLZXkpIHx8XG4gICAgICAocHJvcHMuam9iQm9va21hcmtzRW5jcnlwdGlvbiAmJiAhcHJvcHMuam9iQm9va21hcmtzRW5jcnlwdGlvbi5rbXNLZXkpO1xuICAgIGNvbnN0IGF1dG9DcmVhdGVkS21zS2V5ID0ga21zS2V5Q3JlYXRpb25SZXF1aXJlZCA/IG5ldyBrbXMuS2V5KHRoaXMsICdLZXknLCB7IGVuYWJsZUtleVJvdGF0aW9uOiB0cnVlIH0pIDogdW5kZWZpbmVkO1xuXG4gICAgbGV0IGNsb3VkV2F0Y2hFbmNyeXB0aW9uO1xuICAgIGlmIChwcm9wcy5jbG91ZFdhdGNoRW5jcnlwdGlvbikge1xuICAgICAgdGhpcy5jbG91ZFdhdGNoRW5jcnlwdGlvbktleSA9IHByb3BzLmNsb3VkV2F0Y2hFbmNyeXB0aW9uLmttc0tleSB8fCBhdXRvQ3JlYXRlZEttc0tleTtcbiAgICAgIGNsb3VkV2F0Y2hFbmNyeXB0aW9uID0ge1xuICAgICAgICBjbG91ZFdhdGNoRW5jcnlwdGlvbk1vZGU6IHByb3BzLmNsb3VkV2F0Y2hFbmNyeXB0aW9uLm1vZGUsXG4gICAgICAgIGttc0tleUFybjogdGhpcy5jbG91ZFdhdGNoRW5jcnlwdGlvbktleT8ua2V5UmVmLmtleUFybixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgbGV0IGpvYkJvb2ttYXJrc0VuY3J5cHRpb247XG4gICAgaWYgKHByb3BzLmpvYkJvb2ttYXJrc0VuY3J5cHRpb24pIHtcbiAgICAgIHRoaXMuam9iQm9va21hcmtzRW5jcnlwdGlvbktleSA9IHByb3BzLmpvYkJvb2ttYXJrc0VuY3J5cHRpb24ua21zS2V5IHx8IGF1dG9DcmVhdGVkS21zS2V5O1xuICAgICAgam9iQm9va21hcmtzRW5jcnlwdGlvbiA9IHtcbiAgICAgICAgam9iQm9va21hcmtzRW5jcnlwdGlvbk1vZGU6IHByb3BzLmpvYkJvb2ttYXJrc0VuY3J5cHRpb24ubW9kZSxcbiAgICAgICAga21zS2V5QXJuOiB0aGlzLmpvYkJvb2ttYXJrc0VuY3J5cHRpb25LZXk/LmtleVJlZi5rZXlBcm4sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGxldCBzM0VuY3J5cHRpb25zO1xuICAgIGlmIChwcm9wcy5zM0VuY3J5cHRpb24pIHtcbiAgICAgIGlmIChwcm9wcy5zM0VuY3J5cHRpb24ubW9kZSA9PT0gUzNFbmNyeXB0aW9uTW9kZS5LTVMpIHtcbiAgICAgICAgdGhpcy5zM0VuY3J5cHRpb25LZXkgPSBwcm9wcy5zM0VuY3J5cHRpb24ua21zS2V5IHx8IGF1dG9DcmVhdGVkS21zS2V5O1xuICAgICAgfVxuICAgICAgLy8gTk9URTogQ2xvdWRGb3JtYXRpb25zIGVycm9ycyBvdXQgaWYgYXJyYXkgaXMgb2YgbGVuZ3RoID4gMS4gVGhhdCdzIHdoeSB0aGUgcHJvcHMgZG9uJ3QgZXhwb3NlIGFuIGFycmF5XG4gICAgICBzM0VuY3J5cHRpb25zID0gW3tcbiAgICAgICAgczNFbmNyeXB0aW9uTW9kZTogcHJvcHMuczNFbmNyeXB0aW9uLm1vZGUsXG4gICAgICAgIGttc0tleUFybjogdGhpcy5zM0VuY3J5cHRpb25LZXk/LmtleVJlZi5rZXlBcm4sXG4gICAgICB9XTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBDZm5TZWN1cml0eUNvbmZpZ3VyYXRpb24odGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgICBlbmNyeXB0aW9uQ29uZmlndXJhdGlvbjoge1xuICAgICAgICBjbG91ZFdhdGNoRW5jcnlwdGlvbixcbiAgICAgICAgam9iQm9va21hcmtzRW5jcnlwdGlvbixcbiAgICAgICAgczNFbmNyeXB0aW9ucyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gcmVzb3VyY2U7XG5cbiAgICB0aGlzLnJlc291cmNlLmFwcGx5UmVtb3ZhbFBvbGljeShwcm9wcy5yZW1vdmFsUG9saWN5KTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IHNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5yZWYpO1xuICB9XG59XG4iXX0=
|
|
312
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBQWdFO0FBQ2hFLHlEQUEyQztBQUMzQyxzREFBd0M7QUFDeEMsMkNBQStDO0FBQy9DLDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBYzFFOzs7R0FHRztBQUNILElBQVksZ0JBY1g7QUFkRCxXQUFZLGdCQUFnQjtJQUMxQjs7OztPQUlHO0lBQ0gseUNBQXFCLENBQUE7SUFFckI7Ozs7T0FJRztJQUNILG1DQUFlLENBQUE7QUFDakIsQ0FBQyxFQWRXLGdCQUFnQixnQ0FBaEIsZ0JBQWdCLFFBYzNCO0FBRUQsNEVBQTRFO0FBQzVFLE1BQU0sMkJBQTJCLEdBQUcsU0FBUyxDQUFDO0FBQzlDLE1BQU0sNkJBQTZCLEdBQUcsU0FBUyxDQUFDO0FBRWhEOzs7Ozs7R0FNRztBQUNILE1BQWEsWUFBWTs7SUFDdkI7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUFTO1FBQ3JCLE9BQU8sSUFBSSxZQUFZLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQ2pFO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQW9CO1FBQ3BDLE9BQU8sSUFBSSxZQUFZLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3ZEO0lBRUQsZ0JBQWdCO0lBQ0EsS0FBSyxDQUFtQjtJQUV4QyxnQkFBZ0I7SUFDQSxPQUFPLENBQWU7SUFFdEMsWUFBb0IsSUFBc0IsRUFBRSxNQUFvQjtRQUM5RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENB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YSxHQUFHLENBQUM7d0JBQ2YsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLO3dCQUMxQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsTUFBTTtxQkFDL0MsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLElBQUksbUNBQXdCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDOUQsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUN2Qix1QkFBdUIsRUFBRTtvQkFDdkIsb0JBQW9CO29CQUNwQixzQkFBc0I7b0JBQ3RCLGFBQWE7aUJBQ2Q7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUV6QixJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN2RDtRQUdELElBQVcseUJBQXlCO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekQ7O1lBdkdVLHVEQUFxQjs7Ozs7QUFBckIsc0RBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuU2VjdXJpdHlDb25maWd1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWdsdWUnO1xuaW1wb3J0ICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgTGF6eSwgTmFtZXMgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IG1lbW9pemVkR2V0dGVyLCBsaXQgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBJbnRlcmZhY2UgcmVwcmVzZW50aW5nIGEgY3JlYXRlZCBvciBhbiBpbXBvcnRlZCBgU2VjdXJpdHlDb25maWd1cmF0aW9uYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU2VjdXJpdHlDb25maWd1cmF0aW9uIGV4dGVuZHMgY2RrLklSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc2VjdXJpdHkgY29uZmlndXJhdGlvbi5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVuY3J5cHRpb24gbW9kZSBmb3IgUzMuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC93ZWJhcGkvQVBJX1MzRW5jcnlwdGlvbi5odG1sI0dsdWUtVHlwZS1TM0VuY3J5cHRpb24tUzNFbmNyeXB0aW9uTW9kZVxuICovXG5leHBvcnQgZW51bSBTM0VuY3J5cHRpb25Nb2RlIHtcbiAgLyoqXG4gICAqIFNlcnZlciBzaWRlIGVuY3J5cHRpb24gKFNTRSkgd2l0aCBhbiBBbWF6b24gUzMtbWFuYWdlZCBrZXkuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvVXNpbmdTZXJ2ZXJTaWRlRW5jcnlwdGlvbi5odG1sXG4gICAqL1xuICBTM19NQU5BR0VEID0gJ1NTRS1TMycsXG5cbiAgLyoqXG4gICAqIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gKFNTRSkgd2l0aCBhbiBBV1MgS01TIGtleSBtYW5hZ2VkIGJ5IHRoZSBhY2NvdW50IG93bmVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L1VzaW5nS01TRW5jcnlwdGlvbi5odG1sXG4gICAqL1xuICBLTVMgPSAnU1NFLUtNUycsXG59XG5cbi8vIENsb3VkV2F0Y2ggTG9ncyBzdXBwb3J0IG9ubHkgU1NFLUtNUzsgSm9iIEJvb2ttYXJrcyBzdXBwb3J0IG9ubHkgQ1NFLUtNUy5cbmNvbnN0IENMT1VEX1dBVENIX0VOQ1JZUFRJT05fTU9ERSA9ICdTU0UtS01TJztcbmNvbnN0IEpPQl9CT09LTUFSS1NfRU5DUllQVElPTl9NT0RFID0gJ0NTRS1LTVMnO1xuXG4vKipcbiAqIFMzIGVuY3J5cHRpb24gY29uZmlndXJhdGlvbiBmb3IgYSBgU2VjdXJpdHlDb25maWd1cmF0aW9uYC5cbiAqXG4gKiBVc2Uge0BsaW5rIFMzRW5jcnlwdGlvbi5zM01hbmFnZWR9IGZvciBTU0UtUzMgb3Ige0BsaW5rIFMzRW5jcnlwdGlvbi5rbXN9IGZvclxuICogU1NFLUtNUy4gQmVjYXVzZSB0aGVzZSBhcmUgc2VwYXJhdGUgZmFjdG9yaWVzLCBhIEtNUyBrZXkgY2FuIG5ldmVyIGJlIHBhaXJlZFxuICogd2l0aCBTMy1tYW5hZ2VkIGVuY3J5cHRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBTM0VuY3J5cHRpb24ge1xuICAvKipcbiAgICogU2VydmVyLXNpZGUgZW5jcnlwdGlvbiAoU1NFKSB3aXRoIGFuIEFtYXpvbiBTMy1tYW5hZ2VkIGtleS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9Vc2luZ1NlcnZlclNpZGVFbmNyeXB0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgczNNYW5hZ2VkKCk6IFMzRW5jcnlwdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBTM0VuY3J5cHRpb24oUzNFbmNyeXB0aW9uTW9kZS5TM19NQU5BR0VELCB1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gKFNTRSkgd2l0aCBhbiBBV1MgS01TIGtleSBtYW5hZ2VkIGJ5IHRoZSBhY2NvdW50IG93bmVyLlxuICAgKlxuICAgKiBAcGFyYW0ga21zS2V5IHRoZSBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgZGF0YS4gQSBrZXkgaXMgY3JlYXRlZCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L1VzaW5nS01TRW5jcnlwdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGttcyhrbXNLZXk/OiBrbXMuSUtleVJlZik6IFMzRW5jcnlwdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBTM0VuY3J5cHRpb24oUzNFbmNyeXB0aW9uTW9kZS5LTVMsIGttc0tleSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyByZWFkb25seSBfbW9kZTogUzNFbmNyeXB0aW9uTW9kZTtcblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyByZWFkb25seSBfa21zS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihtb2RlOiBTM0VuY3J5cHRpb25Nb2RlLCBrbXNLZXk/OiBrbXMuSUtleVJlZikge1xuICAgIHRoaXMuX21vZGUgPSBtb2RlO1xuICAgIHRoaXMuX2ttc0tleSA9IGttc0tleTtcbiAgfVxufVxuXG4vKipcbiAqIENsb3VkV2F0Y2ggTG9ncyBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIGEgYFNlY3VyaXR5Q29uZmlndXJhdGlvbmAuXG4gKlxuICogQ2xvdWRXYXRjaCBMb2dzIHN1cHBvcnQgb25seSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHdpdGggYSBLTVMga2V5LlxuICovXG5leHBvcnQgY2xhc3MgQ2xvdWRXYXRjaEVuY3J5cHRpb24ge1xuICAvKipcbiAgICogU2VydmVyLXNpZGUgZW5jcnlwdGlvbiAoU1NFKSB3aXRoIGFuIEFXUyBLTVMga2V5IG1hbmFnZWQgYnkgdGhlIGFjY291bnQgb3duZXIuXG4gICAqXG4gICAqIEBwYXJhbSBrbXNLZXkgdGhlIEtNUyBrZXkgdXNlZCB0byBlbmNyeXB0IHRoZSBkYXRhLiBBIGtleSBpcyBjcmVhdGVkIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGttcyhrbXNLZXk/OiBrbXMuSUtleVJlZik6IENsb3VkV2F0Y2hFbmNyeXB0aW9uIHtcbiAgICByZXR1cm4gbmV3IENsb3VkV2F0Y2hFbmNyeXB0aW9uKGttc0tleSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyByZWFkb25seSBfa21zS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihrbXNLZXk/OiBrbXMuSUtleVJlZikge1xuICAgIHRoaXMuX2ttc0tleSA9IGttc0tleTtcbiAgfVxufVxuXG4vKipcbiAqIEpvYiBib29rbWFya3MgZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciBhIGBTZWN1cml0eUNvbmZpZ3VyYXRpb25gLlxuICpcbiAqIEpvYiBib29rbWFya3Mgc3VwcG9ydCBvbmx5IGNsaWVudC1zaWRlIGVuY3J5cHRpb24gd2l0aCBhIEtNUyBrZXkuXG4gKi9cbmV4cG9ydCBjbGFzcyBKb2JCb29rbWFya3NFbmNyeXB0aW9uIHtcbiAgLyoqXG4gICAqIENsaWVudC1zaWRlIGVuY3J5cHRpb24gKENTRSkgd2l0aCBhbiBBV1MgS01TIGtleSBtYW5hZ2VkIGJ5IHRoZSBhY2NvdW50IG93bmVyLlxuICAgKlxuICAgKiBAcGFyYW0ga21zS2V5IHRoZSBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgZGF0YS4gQSBrZXkgaXMgY3JlYXRlZCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L1VzaW5nQ2xpZW50U2lkZUVuY3J5cHRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjbGllbnRTaWRlS21zKGttc0tleT86IGttcy5JS2V5UmVmKTogSm9iQm9va21hcmtzRW5jcnlwdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBKb2JCb29rbWFya3NFbmNyeXB0aW9uKGttc0tleSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyByZWFkb25seSBfa21zS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihrbXNLZXk/OiBrbXMuSUtleVJlZikge1xuICAgIHRoaXMuX2ttc0tleSA9IGttc0tleTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbnMgcHJvcGVydGllcyBvZiBgU2VjdXJpdHlDb25maWd1cmF0aW9uYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eUNvbmZpZ3VyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc2VjdXJpdHkgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBnZW5lcmF0ZWQgYnkgQ0RLLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVuY3J5cHRpb24gY29uZmlndXJhdGlvbiBmb3IgQW1hem9uIENsb3VkV2F0Y2ggTG9ncy5cbiAgICogQGRlZmF1bHQgbm8gY2xvdWR3YXRjaCBsb2dzIGVuY3J5cHRpb24uXG4gICAqL1xuICByZWFkb25seSBjbG91ZFdhdGNoRW5jcnlwdGlvbj86IENsb3VkV2F0Y2hFbmNyeXB0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciBHbHVlIEpvYiBCb29rbWFya3MuXG4gICAqIEBkZWZhdWx0IG5vIGpvYiBib29rbWFya3MgZW5jcnlwdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGpvYkJvb2ttYXJrc0VuY3J5cHRpb24/OiBKb2JCb29rbWFya3NFbmNyeXB0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciBBbWF6b24gU2ltcGxlIFN0b3JhZ2UgU2VydmljZSAoQW1hem9uIFMzKSBkYXRhLlxuICAgKiBAZGVmYXVsdCBubyBzMyBlbmNyeXB0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgczNFbmNyeXB0aW9uPzogUzNFbmNyeXB0aW9uO1xuXG4gIC8qKlxuICAgKiBQb2xpY3kgdG8gYXBwbHkgd2hlbiB0aGUgc2VjdXJpdHkgY29uZmlndXJhdGlvbiBpcyByZW1vdmVkIGZyb20gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHJlc291cmNlIHdpbGwgYmUgZGVzdHJveWVkXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3k7XG59XG5cbi8qKlxuICogQSBzZWN1cml0eSBjb25maWd1cmF0aW9uIGlzIGEgc2V0IG9mIHNlY3VyaXR5IHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgdXNlZCBieSBBV1MgR2x1ZSB0byBlbmNyeXB0IGRhdGEgYXQgcmVzdC5cbiAqXG4gKiBUaGUgZm9sbG93aW5nIHNjZW5hcmlvcyBzaG93IHNvbWUgb2YgdGhlIHdheXMgdGhhdCB5b3UgY2FuIHVzZSBhIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24uXG4gKiAtIEF0dGFjaCBhIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24gdG8gYW4gQVdTIEdsdWUgY3Jhd2xlciB0byB3cml0ZSBlbmNyeXB0ZWQgQW1hem9uIENsb3VkV2F0Y2ggTG9ncy5cbiAqIC0gQXR0YWNoIGEgc2VjdXJpdHkgY29uZmlndXJhdGlvbiB0byBhbiBleHRyYWN0LCB0cmFuc2Zvcm0sIGFuZCBsb2FkIChFVEwpIGpvYiB0byB3cml0ZSBlbmNyeXB0ZWQgQW1hem9uIFNpbXBsZSBTdG9yYWdlIFNlcnZpY2UgKEFtYXpvbiBTMykgdGFyZ2V0cyBhbmQgZW5jcnlwdGVkIENsb3VkV2F0Y2ggTG9ncy5cbiAqIC0gQXR0YWNoIGEgc2VjdXJpdHkgY29uZmlndXJhdGlvbiB0byBhbiBFVEwgam9iIHRvIHdyaXRlIGl0cyBqb2JzIGJvb2ttYXJrcyBhcyBlbmNyeXB0ZWQgQW1hem9uIFMzIGRhdGEuXG4gKiAtIEF0dGFjaCBhIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24gdG8gYSBkZXZlbG9wbWVudCBlbmRwb2ludCB0byB3cml0ZSBlbmNyeXB0ZWQgQW1hem9uIFMzIHRhcmdldHMuXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBTZWN1cml0eUNvbmZpZ3VyYXRpb24gZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJU2VjdXJpdHlDb25maWd1cmF0aW9uIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtZ2x1ZS1hbHBoYS5TZWN1cml0eUNvbmZpZ3VyYXRpb24nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgQ29ubmVjdGlvbiBjb25zdHJ1Y3QgdGhhdCByZXByZXNlbnRzIGFuIGV4dGVybmFsIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgaWQuXG4gICAqIEBwYXJhbSBzZWN1cml0eUNvbmZpZ3VyYXRpb25OYW1lIG5hbWUgb2YgZXh0ZXJuYWwgc2VjdXJpdHkgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWUoc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLFxuICAgIHNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWU6IHN0cmluZyk6IElTZWN1cml0eUNvbmZpZ3VyYXRpb24ge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElTZWN1cml0eUNvbmZpZ3VyYXRpb24ge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWUgPSBzZWN1cml0eUNvbmZpZ3VyYXRpb25OYW1lO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBLTVMga2V5IHVzZWQgaW4gQ2xvdWRXYXRjaCBlbmNyeXB0aW9uIGlmIGl0IHJlcXVpcmVzIGEga21zIGtleS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjbG91ZFdhdGNoRW5jcnlwdGlvbktleT86IGttcy5JS2V5UmVmO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB1c2VkIGluIGpvYiBib29rbWFya3MgZW5jcnlwdGlvbiBpZiBpdCByZXF1aXJlcyBhIGttcyBrZXkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgam9iQm9va21hcmtzRW5jcnlwdGlvbktleT86IGttcy5JS2V5UmVmO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB1c2VkIGluIFMzIGVuY3J5cHRpb24gaWYgaXQgcmVxdWlyZXMgYSBrbXMga2V5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHMzRW5jcnlwdGlvbktleT86IGttcy5JS2V5UmVmO1xuXG4gIHByaXZhdGUgcmVzb3VyY2U6IENmblNlY3VyaXR5Q29uZmlndXJhdGlvbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTZWN1cml0eUNvbmZpZ3VyYXRpb25Qcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLnNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWUgPz9cbiAgICAgICAgTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7fSksXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgaWYgKCFwcm9wcy5zM0VuY3J5cHRpb24gJiYgIXByb3BzLmNsb3VkV2F0Y2hFbmNyeXB0aW9uICYmICFwcm9wcy5qb2JCb29rbWFya3NFbmNyeXB0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgRW5jcnlwdGlvblJlcXVpcmVkYCwgJ09uZSBvZiBjbG91ZFdhdGNoRW5jcnlwdGlvbiwgam9iQm9va21hcmtzRW5jcnlwdGlvbiBvciBzM0VuY3J5cHRpb24gbXVzdCBiZSBkZWZpbmVkJywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3Qga21zS2V5Q3JlYXRpb25SZXF1aXJlZCA9XG4gICAgICAocHJvcHMuczNFbmNyeXB0aW9uICYmIHByb3BzLnMzRW5jcnlwdGlvbi5fbW9kZSA9PT0gUzNFbmNyeXB0aW9uTW9kZS5LTVMgJiYgIXByb3BzLnMzRW5jcnlwdGlvbi5fa21zS2V5KSB8fFxuICAgICAgKHByb3BzLmNsb3VkV2F0Y2hFbmNyeXB0aW9uICYmICFwcm9wcy5jbG91ZFdhdGNoRW5jcnlwdGlvbi5fa21zS2V5KSB8fFxuICAgICAgKHByb3BzLmpvYkJvb2ttYXJrc0VuY3J5cHRpb24gJiYgIXByb3BzLmpvYkJvb2ttYXJrc0VuY3J5cHRpb24uX2ttc0tleSk7XG4gICAgY29uc3QgYXV0b0NyZWF0ZWRLbXNLZXkgPSBrbXNLZXlDcmVhdGlvblJlcXVpcmVkID8gbmV3IGttcy5LZXkodGhpcywgJ0tleScsIHsgZW5hYmxlS2V5Um90YXRpb246IHRydWUgfSkgOiB1bmRlZmluZWQ7XG5cbiAgICBsZXQgY2xvdWRXYXRjaEVuY3J5cHRpb247XG4gICAgaWYgKHByb3BzLmNsb3VkV2F0Y2hFbmNyeXB0aW9uKSB7XG4gICAgICB0aGlzLmNsb3VkV2F0Y2hFbmNyeXB0aW9uS2V5ID0gcHJvcHMuY2xvdWRXYXRjaEVuY3J5cHRpb24uX2ttc0tleSB8fCBhdXRvQ3JlYXRlZEttc0tleTtcbiAgICAgIGNsb3VkV2F0Y2hFbmNyeXB0aW9uID0ge1xuICAgICAgICBjbG91ZFdhdGNoRW5jcnlwdGlvbk1vZGU6IENMT1VEX1dBVENIX0VOQ1JZUFRJT05fTU9ERSxcbiAgICAgICAga21zS2V5QXJuOiB0aGlzLmNsb3VkV2F0Y2hFbmNyeXB0aW9uS2V5Py5rZXlSZWYua2V5QXJuLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBsZXQgam9iQm9va21hcmtzRW5jcnlwdGlvbjtcbiAgICBpZiAocHJvcHMuam9iQm9va21hcmtzRW5jcnlwdGlvbikge1xuICAgICAgdGhpcy5qb2JCb29rbWFya3NFbmNyeXB0aW9uS2V5ID0gcHJvcHMuam9iQm9va21hcmtzRW5jcnlwdGlvbi5fa21zS2V5IHx8IGF1dG9DcmVhdGVkS21zS2V5O1xuICAgICAgam9iQm9va21hcmtzRW5jcnlwdGlvbiA9IHtcbiAgICAgICAgam9iQm9va21hcmtzRW5jcnlwdGlvbk1vZGU6IEpPQl9CT09LTUFSS1NfRU5DUllQVElPTl9NT0RFLFxuICAgICAgICBrbXNLZXlBcm46IHRoaXMuam9iQm9va21hcmtzRW5jcnlwdGlvbktleT8ua2V5UmVmLmtleUFybixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgbGV0IHMzRW5jcnlwdGlvbnM7XG4gICAgaWYgKHByb3BzLnMzRW5jcnlwdGlvbikge1xuICAgICAgaWYgKHByb3BzLnMzRW5jcnlwdGlvbi5fbW9kZSA9PT0gUzNFbmNyeXB0aW9uTW9kZS5LTVMpIHtcbiAgICAgICAgdGhpcy5zM0VuY3J5cHRpb25LZXkgPSBwcm9wcy5zM0VuY3J5cHRpb24uX2ttc0tleSB8fCBhdXRvQ3JlYXRlZEttc0tleTtcbiAgICAgIH1cbiAgICAgIC8vIE5PVEU6IENsb3VkRm9ybWF0aW9ucyBlcnJvcnMgb3V0IGlmIGFycmF5IGlzIG9mIGxlbmd0aCA+IDEuIFRoYXQncyB3aHkgdGhlIHByb3BzIGRvbid0IGV4cG9zZSBhbiBhcnJheVxuICAgICAgczNFbmNyeXB0aW9ucyA9IFt7XG4gICAgICAgIHMzRW5jcnlwdGlvbk1vZGU6IHByb3BzLnMzRW5jcnlwdGlvbi5fbW9kZSxcbiAgICAgICAga21zS2V5QXJuOiB0aGlzLnMzRW5jcnlwdGlvbktleT8ua2V5UmVmLmtleUFybixcbiAgICAgIH1dO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IENmblNlY3VyaXR5Q29uZmlndXJhdGlvbih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGVuY3J5cHRpb25Db25maWd1cmF0aW9uOiB7XG4gICAgICAgIGNsb3VkV2F0Y2hFbmNyeXB0aW9uLFxuICAgICAgICBqb2JCb29rbWFya3NFbmNyeXB0aW9uLFxuICAgICAgICBzM0VuY3J5cHRpb25zLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSByZXNvdXJjZTtcblxuICAgIHRoaXMucmVzb3VyY2UuYXBwbHlSZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgc2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZSh0aGlzLnJlc291cmNlLnJlZik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type * as kms from 'aws-cdk-lib/aws-kms';
|
|
1
2
|
/**
|
|
2
3
|
* The compression type.
|
|
3
4
|
*
|
|
@@ -318,14 +319,24 @@ export declare class StorageParameter {
|
|
|
318
319
|
*/
|
|
319
320
|
static writeMaxFileSizeMb(value: number): StorageParameter;
|
|
320
321
|
/**
|
|
321
|
-
*
|
|
322
|
+
* Enables server-side encryption (SSE-KMS) with the given AWS KMS key on the
|
|
323
|
+
* files Redshift Spectrum writes for this table (via `CREATE EXTERNAL TABLE AS`
|
|
324
|
+
* or `INSERT`).
|
|
325
|
+
*
|
|
326
|
+
* Redshift Spectrum accepts either the key's ARN or its bare key ID for the
|
|
327
|
+
* `write.kms.key.id` property, and encrypts the written objects with that key;
|
|
328
|
+
* this renders the ARN. To use the S3 bucket's default KMS key instead, set the
|
|
329
|
+
* literal value `auto` via `StorageParameter.custom('write.kms.key.id', 'auto')` —
|
|
330
|
+
* this typed factory cannot express `auto`.
|
|
331
|
+
*
|
|
332
|
+
* @see https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_TABLE.html
|
|
322
333
|
*/
|
|
323
|
-
static writeKmsKeyId(
|
|
334
|
+
static writeKmsKeyId(key: kms.IKeyRef): StorageParameter;
|
|
324
335
|
/**
|
|
325
336
|
* A custom storage parameter.
|
|
326
337
|
* @param key - The key of the storage parameter.
|
|
327
338
|
* @param value - The value of the storage parameter.
|
|
328
339
|
*/
|
|
329
|
-
static custom(key: string, value:
|
|
340
|
+
static custom(key: string, value: string): StorageParameter;
|
|
330
341
|
protected constructor(key: string, value: string);
|
|
331
342
|
}
|
package/lib/storage-parameter.js
CHANGED
|
@@ -271,7 +271,7 @@ var StorageParameters;
|
|
|
271
271
|
class StorageParameter {
|
|
272
272
|
key;
|
|
273
273
|
value;
|
|
274
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.StorageParameter", version: "2.
|
|
274
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.StorageParameter", version: "2.267.0-alpha.0" };
|
|
275
275
|
/**
|
|
276
276
|
* The number of rows to skip at the top of a CSV file when the table is being created.
|
|
277
277
|
*/
|
|
@@ -433,10 +433,20 @@ class StorageParameter {
|
|
|
433
433
|
return new StorageParameter('write.maxfilesize.mb', value.toString());
|
|
434
434
|
}
|
|
435
435
|
/**
|
|
436
|
-
*
|
|
436
|
+
* Enables server-side encryption (SSE-KMS) with the given AWS KMS key on the
|
|
437
|
+
* files Redshift Spectrum writes for this table (via `CREATE EXTERNAL TABLE AS`
|
|
438
|
+
* or `INSERT`).
|
|
439
|
+
*
|
|
440
|
+
* Redshift Spectrum accepts either the key's ARN or its bare key ID for the
|
|
441
|
+
* `write.kms.key.id` property, and encrypts the written objects with that key;
|
|
442
|
+
* this renders the ARN. To use the S3 bucket's default KMS key instead, set the
|
|
443
|
+
* literal value `auto` via `StorageParameter.custom('write.kms.key.id', 'auto')` —
|
|
444
|
+
* this typed factory cannot express `auto`.
|
|
445
|
+
*
|
|
446
|
+
* @see https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_TABLE.html
|
|
437
447
|
*/
|
|
438
|
-
static writeKmsKeyId(
|
|
439
|
-
return new StorageParameter('write.kms.key.id',
|
|
448
|
+
static writeKmsKeyId(key) {
|
|
449
|
+
return new StorageParameter('write.kms.key.id', key.keyRef.keyArn);
|
|
440
450
|
}
|
|
441
451
|
/**
|
|
442
452
|
* A custom storage parameter.
|
|
@@ -444,7 +454,7 @@ class StorageParameter {
|
|
|
444
454
|
* @param value - The value of the storage parameter.
|
|
445
455
|
*/
|
|
446
456
|
static custom(key, value) {
|
|
447
|
-
return new StorageParameter(key, value
|
|
457
|
+
return new StorageParameter(key, value);
|
|
448
458
|
}
|
|
449
459
|
constructor(key, value) {
|
|
450
460
|
this.key = key;
|
|
@@ -452,4 +462,4 @@ class StorageParameter {
|
|
|
452
462
|
}
|
|
453
463
|
}
|
|
454
464
|
exports.StorageParameter = StorageParameter;
|
|
455
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1wYXJhbWV0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdG9yYWdlLXBhcmFtZXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7O0dBSUc7QUFDSCxJQUFZLGVBb0JYO0FBcEJELFdBQVksZUFBZTtJQUN6Qjs7T0FFRztJQUNILGdDQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILGtDQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILGdDQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILG9DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFwQlcsZUFBZSwrQkFBZixlQUFlLFFBb0IxQjtBQUVEOzs7O0dBSUc7QUFDSCxJQUFZLHlCQXlCWDtBQXpCRCxXQUFZLHlCQUF5QjtJQUNuQzs7T0FFRztJQUNILGtEQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gsMENBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gsd0RBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCxrREFBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILGdEQUFtQixDQUFBO0FBQ3JCLENBQUMsRUF6QlcseUJBQXlCLHlDQUF6Qix5QkFBeUIsUUF5QnBDO0FBRUQ7Ozs7R0FJRztBQUNILElBQVksNkJBb0JYO0FBcEJELFdBQVksNkJBQTZCO0lBQ3ZDOztPQUVHO0lBQ0gsc0RBQXFCLENBQUE7SUFFckI7O09BRUc7SUFDSCw4Q0FBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCw0REFBMkIsQ0FBQTtJQUUzQjs7T0FFRztJQUNILHNEQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFwQlcsNkJBQTZCLDZDQUE3Qiw2QkFBNkIsUUFvQnhDO0FBRUQ7Ozs7R0FJRztBQUNILElBQVksMEJBeUJYO0FBekJELFdBQVksMEJBQTBCO0lBQ3BDOztPQUVHO0lBQ0gseURBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCxtREFBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILDJDQUFhLENBQUE7SUFFYjs7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QU8sSUFBSSxnQkFBZ0IsQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUM3RDtJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQW9COzs7Ozs7Ozs7O1FBQzlDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN0RDtJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQWE7UUFDNUMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZFO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQWE7UUFDdkMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ3hEO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBVyxFQUFFLEtBQVU7UUFDMUMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztLQUNwRDtJQUVELFlBQXNDLEdBQVcsRUFBa0IsS0FBYTtRQUExQyxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQWtCLFVBQUssR0FBTCxLQUFLLENBQVE7S0FBSTs7QUF2SHRGLDRDQXdIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGNvbXByZXNzaW9uIHR5cGUuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLmh0bWwjcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUtcGFyYW1ldGVycyAtIHVuZGVyIF9cIlRBQkxFIFBST1BFUlRJRVNcIl8gPiBfXCJjb21wcmVzc2lvbl90eXBlXCJfXG4gKi9cbmV4cG9ydCBlbnVtIENvbXByZXNzaW9uVHlwZSB7XG4gIC8qKlxuICAgKiBObyBjb21wcmVzc2lvbi5cbiAgICovXG4gIE5PTkUgPSAnbm9uZScsXG5cbiAgLyoqXG4gICAqIEJ1cnJvd3MtV2hlZWxlciBjb21wcmVzc2lvbi5cbiAgICovXG4gIEJaSVAyID0gJ2J6aXAyJyxcblxuICAvKipcbiAgICogRGVmbGF0ZSBjb21wcmVzc2lvbi5cbiAgICovXG4gIEdaSVAgPSAnZ3ppcCcsXG5cbiAgLyoqXG4gICAqIENvbXByZXNzaW9uIGFsZ29yaXRobSBmb2N1c2VkIG9uIGhpZ2ggY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gc3BlZWRzLCByYXRoZXIgdGhhbiB0aGUgbWF4aW11bSBwb3NzaWJsZSBjb21wcmVzc2lvbi5cbiAgICovXG4gIFNOQVBQWSA9ICdzbmFwcHknLFxufVxuXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgYWN0aW9uIHRvIHBlcmZvcm0gd2hlbiBxdWVyeSByZXN1bHRzIGNvbnRhaW4gaW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIgdmFsdWVzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9FWFRFUk5BTF9UQUJMRS5odG1sI3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLXBhcmFtZXRlcnMgLSB1bmRlciBfXCJUQUJMRSBQUk9QRVJUSUVTXCJfID4gX1wiaW52YWxpZF9jaGFyX2hhbmRsaW5nXCJfXG4gKi9cbmV4cG9ydCBlbnVtIEludmFsaWRDaGFySGFuZGxpbmdBY3Rpb24ge1xuICAvKipcbiAgICogRG9lc24ndCBwZXJmb3JtIGludmFsaWQgY2hhcmFjdGVyIGhhbmRsaW5nLlxuICAgKi9cbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIHF1ZXJpZXMgdGhhdCByZXR1cm4gZGF0YSBjb250YWluaW5nIGludmFsaWQgVVRGLTggdmFsdWVzLlxuICAgKi9cbiAgRkFJTCA9ICdGQUlMJyxcblxuICAvKipcbiAgICogUmVwbGFjZXMgaW52YWxpZCBVVEYtOCB2YWx1ZXMgd2l0aCBudWxsLlxuICAgKi9cbiAgU0VUX1RPX05VTEwgPSAnU0VUX1RPX05VTEwnLFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBlYWNoIHZhbHVlIGluIHRoZSByb3cgd2l0aCBudWxsLlxuICAgKi9cbiAgRFJPUF9ST1cgPSAnRFJPUF9ST1cnLFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgd2l0aCB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIHlvdSBzcGVjaWZ5IHVzaW5nIGBSRVBMQUNFTUVOVF9DSEFSYC5cbiAgICovXG4gIFJFUExBQ0UgPSAnUkVQTEFDRScsXG59XG5cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBhY3Rpb24gdG8gcGVyZm9ybSB3aGVuIE9SQyBkYXRhIGNvbnRhaW5zIGFuIGludGVnZXIgKGZvciBleGFtcGxlLCBCSUdJTlQgb3IgaW50NjQpIHRoYXQgaXMgbGFyZ2VyIHRoYW4gdGhlIGNvbHVtbiBkZWZpbml0aW9uIChmb3IgZXhhbXBsZSwgU01BTExJTlQgb3IgaW50MTYpLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9FWFRFUk5BTF9UQUJMRS5odG1sI3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLXBhcmFtZXRlcnMgLSB1bmRlciBfXCJUQUJMRSBQUk9QRVJUSUVTXCJfID4gX1wibnVtZXJpY19vdmVyZmxvd19oYW5kbGluZ1wiX1xuICovXG5leHBvcnQgZW51bSBOdW1lcmljT3ZlcmZsb3dIYW5kbGluZ0FjdGlvbiB7XG4gIC8qKlxuICAgKiBJbnZhbGlkIGNoYXJhY3RlciBoYW5kbGluZyBpcyB0dXJuZWQgb2ZmLlxuICAgKi9cbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxuXG4gIC8qKlxuICAgKiBDYW5jZWwgdGhlIHF1ZXJ5IHdoZW4gdGhlIGRhdGEgaW5jbHVkZXMgaW52YWxpZCBjaGFyYWN0ZXJzLlxuICAgKi9cbiAgRkFJTCA9ICdGQUlMJyxcblxuICAvKipcbiAgICogU2V0IGludmFsaWQgY2hhcmFjdGVycyB0byBudWxsLlxuICAgKi9cbiAgU0VUX1RPX05VTEwgPSAnU0VUX1RPX05VTEwnLFxuXG4gIC8qKlxuICAgKiBTZXQgZWFjaCB2YWx1ZSBpbiB0aGUgcm93IHRvIG51bGwuXG4gICAqL1xuICBEUk9QX1JPVyA9ICdEUk9QX1JPVycsXG59XG5cbi8qKlxuICogU3BlY2lmaWVzIGhvdyB0byBoYW5kbGUgZGF0YSBiZWluZyBsb2FkZWQgdGhhdCBleGNlZWRzIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEgdHlwZSBkZWZpbmVkIGZvciBjb2x1bW5zIGNvbnRhaW5pbmcgVkFSQllURSBkYXRhLiBCeSBkZWZhdWx0LCBSZWRzaGlmdCBTcGVjdHJ1bSBzZXRzIHRoZSB2YWx1ZSB0byBudWxsIGZvciBkYXRhIHRoYXQgZXhjZWVkcyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9yZWRzaGlmdC9sYXRlc3QvZGcvcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUuaHRtbCNyX0NSRUFURV9FWFRFUk5BTF9UQUJMRS1wYXJhbWV0ZXJzIC0gdW5kZXIgX1wiVEFCTEUgUFJPUEVSVElFU1wiXyA+IF9cInN1cnBsdXNfYnl0ZXNfaGFuZGxpbmdcIl9cbiAqL1xuZXhwb3J0IGVudW0gU3VycGx1c0J5dGVzSGFuZGxpbmdBY3Rpb24ge1xuICAvKipcbiAgICogUmVwbGFjZXMgZGF0YSB0aGF0IGV4Y2VlZHMgdGhlIGNvbHVtbiB3aWR0aCB3aXRoIG51bGwuXG4gICAqL1xuICBTRVRfVE9fTlVMTCA9ICdTRVRfVE9fTlVMTCcsXG5cbiAgLyoqXG4gICAqIERvZXNuJ3QgcGVyZm9ybSBzdXJwbHVzIGJ5dGUgaGFuZGxpbmcuXG4gICAqL1xuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG5cbiAgLyoqXG4gICAqIENhbmNlbHMgcXVlcmllcyB0aGF0IHJldHVybiBkYXRhIGV4Y2VlZGluZyB0aGUgY29sdW1uIHdpZHRoLlxuICAgKi9cbiAgRkFJTCA9ICdGQUlMJyxcblxuICAvKipcbiAgICogRHJvcCBhbGwgcm93cyB0aGF0IGNvbnRhaW4gZGF0YSBleGNlZWRpbmcgY29sdW1uIHdpZHRoLlxuICAgKi9cbiAgRFJPUF9ST1cgPSAnRFJPUF9ST1cnLFxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBjaGFyYWN0ZXJzIHRoYXQgZXhjZWVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGRlZmluZWQgZm9yIHRoZSBjb2x1bW4uXG4gICAqL1xuICBUUlVOQ0FURSA9ICdUUlVOQ0FURScsXG59XG5cbi8qKlxuICogU3BlY2lmaWVzIGhvdyB0byBoYW5kbGUgZGF0YSBiZWluZyBsb2FkZWQgdGhhdCBleGNlZWRzIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEgdHlwZSBkZWZpbmVkIGZvciBjb2x1bW5zIGNvbnRhaW5pbmcgVkFSQ0hBUiwgQ0hBUiwgb3Igc3RyaW5nIGRhdGEuIEJ5IGRlZmF1bHQsIFJlZHNoaWZ0IFNwZWN0cnVtIHNldHMgdGhlIHZhbHVlIHRvIG51bGwgZm9yIGRhdGEgdGhhdCBleGNlZWRzIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9FWFRFUk5BTF9UQUJMRS5odG1sI3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLXBhcmFtZXRlcnMgLSB1bmRlciBfXCJUQUJMRSBQUk9QRVJUSUVTXCJfID4gX1wic3VycGx1c19jaGFyX2hhbmRsaW5nXCJfXG4gKi9cbmV4cG9ydCBlbnVtIFN1cnBsdXNDaGFySGFuZGxpbmdBY3Rpb24ge1xuICAvKipcbiAgICogUmVwbGFjZXMgZGF0YSB0aGF0IGV4Y2VlZHMgdGhlIGNvbHVtbiB3aWR0aCB3aXRoIG51bGwuXG4gICAqL1xuICBTRVRfVE9fTlVMTCA9ICdTRVRfVE9fTlVMTCcsXG5cbiAgLyoqXG4gICAqIERvZXNuJ3QgcGVyZm9ybSBzdXJwbHVzIGNoYXJhY3RlciBoYW5kbGluZy5cbiAgICovXG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcblxuICAvKipcbiAgICogQ2FuY2VscyBxdWVyaWVzIHRoYXQgcmV0dXJuIGRhdGEgZXhjZWVkaW5nIHRoZSBjb2x1bW4gd2lkdGguXG4gICAqL1xuICBGQUlMID0gJ0ZBSUwnLFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBlYWNoIHZhbHVlIGluIHRoZSByb3cgd2l0aCBudWxsLlxuICAgKi9cbiAgRFJPUF9ST1cgPSAnRFJPUF9ST1cnLFxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBjaGFyYWN0ZXJzIHRoYXQgZXhjZWVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGRlZmluZWQgZm9yIHRoZSBjb2x1bW4uXG4gICAqL1xuICBUUlVOQ0FURSA9ICdUUlVOQ0FURScsXG59XG5cbi8qKlxuICogSWRlbnRpZmllcyBpZiB0aGUgZmlsZSBjb250YWlucyBsZXNzIG9yIG1vcmUgdmFsdWVzIGZvciBhIHJvdyB0aGFuIHRoZSBudW1iZXIgb2YgY29sdW1ucyBzcGVjaWZpZWQgaW4gdGhlIGV4dGVybmFsIHRhYmxlIGRlZmluaXRpb24uIFRoaXMgcHJvcGVydHkgaXMgb25seSBhdmFpbGFibGUgZm9yIGFuIHVuY29tcHJlc3NlZCB0ZXh0IGZpbGUgZm9ybWF0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9FWFRFUk5BTF9UQUJMRS5odG1sI3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLXBhcmFtZXRlcnMgLSB1bmRlciBfXCJUQUJMRSBQUk9QRVJUSUVTXCJfID4gX1wiY29sdW1uX2NvdW50X21pc21hdGNoX2hhbmRsaW5nXCJfXG4gKi9cbmV4cG9ydCBlbnVtIENvbHVtbkNvdW50TWlzbWF0Y2hIYW5kbGluZ0FjdGlvbiB7XG4gIC8qKlxuICAgKiBDb2x1bW4gY291bnQgbWlzbWF0Y2ggaGFuZGxpbmcgaXMgdHVybmVkIG9mZi5cbiAgICovXG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcblxuICAvKipcbiAgICogRmFpbCB0aGUgcXVlcnkgaWYgdGhlIGNvbHVtbiBjb3VudCBtaXNtYXRjaCBpcyBkZXRlY3RlZC5cbiAgICovXG4gIEZBSUwgPSAnRkFJTCcsXG5cbiAgLyoqXG4gICAqIEZpbGwgbWlzc2luZyB2YWx1ZXMgd2l0aCBOVUxMIGFuZCBpZ25vcmUgdGhlIGFkZGl0aW9uYWwgdmFsdWVzIGluIGVhY2ggcm93LlxuICAgKi9cbiAgU0VUX1RPX05VTEwgPSAnU0VUX1RPX05VTEwnLFxuXG4gIC8qKlxuICAgKiBEcm9wIGFsbCByb3dzIHRoYXQgY29udGFpbiBjb2x1bW4gY291bnQgbWlzbWF0Y2ggZXJyb3IgZnJvbSB0aGUgc2Nhbi5cbiAgICovXG4gIERST1BfUk9XID0gJ0RST1BfUk9XJyxcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IHRvIGhhbmRsZSBkYXRhIGJlaW5nIGxvYWRlZCB0aGF0IGV4Y2VlZHMgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSB0eXBlIGRlZmluZWQgZm9yIGNvbHVtbnMgY29udGFpbmluZyBWQVJDSEFSLCBDSEFSLCBvciBzdHJpbmcgZGF0YS4gQnkgZGVmYXVsdCwgUmVkc2hpZnQgU3BlY3RydW0gc2V0cyB0aGUgdmFsdWUgdG8gbnVsbCBmb3IgZGF0YSB0aGF0IGV4Y2VlZHMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4uXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLmh0bWwjcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUtcGFyYW1ldGVycyAtIHVuZGVyIF9cIlRBQkxFIFBST1BFUlRJRVNcIl8gPiBfXCJzdXJwbHVzX2NoYXJfaGFuZGxpbmdcIl9cbiAqL1xuZXhwb3J0IGVudW0gV3JpdGVQYXJhbGxlbCB7XG4gIC8qKlxuICAgKiBXcml0ZSBkYXRhIGluIHBhcmFsbGVsLlxuICAgKi9cbiAgT04gPSAnb24nLFxuXG4gIC8qKlxuICAgKiBXcml0ZSBkYXRhIHNlcmlhbGx5LlxuICAgKi9cbiAgT0ZGID0gJ29mZicsXG59XG5cbi8qKlxuICogU3BlY2lmaWVzIGhvdyB0byBtYXAgY29sdW1ucyB3aGVuIHRoZSB0YWJsZSB1c2VzIE9SQyBkYXRhIGZvcm1hdC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9yZWRzaGlmdC9sYXRlc3QvZGcvcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUuaHRtbCNyX0NSRUFURV9FWFRFUk5BTF9UQUJMRS1wYXJhbWV0ZXJzIC0gdW5kZXIgX1wiVEFCTEUgUFJPUEVSVElFU1wiXyA+IF9cIm9yYy5zY2hlbWEucmVzb2x1dGlvblwiX1xuICovXG5leHBvcnQgZW51bSBPcmNDb2x1bW5NYXBwaW5nVHlwZSB7XG4gIC8qKlxuICAgKiBNYXAgY29sdW1ucyBieSBuYW1lLlxuICAgKi9cbiAgTkFNRSA9ICduYW1lJyxcblxuICAvKipcbiAgICogTWFwIGNvbHVtbnMgYnkgcG9zaXRpb24uXG4gICAqL1xuICBQT1NJVElPTiA9ICdwb3NpdGlvbicsXG59XG5cbi8qKlxuICogVGhlIHN0b3JhZ2UgcGFyYW1ldGVyIGtleXMgdGhhdCBhcmUgY3VycmVudGx5IGtub3duLCB0aGlzIGxpc3QgaXMgbm90IGV4aGF1c3RpdmUgYW5kIG90aGVyIGtleXMgbWF5IGJlIHVzZWQuXG4gKi9cbmV4cG9ydCBlbnVtIFN0b3JhZ2VQYXJhbWV0ZXJzIHtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2Ygcm93cyB0byBza2lwIGF0IHRoZSB0b3Agb2YgYSBDU1YgZmlsZSB3aGVuIHRoZSB0YWJsZSBpcyBiZWluZyBjcmVhdGVkLlxuICAgKi9cbiAgU0tJUF9IRUFERVJfTElORV9DT1VOVCA9ICdza2lwLmhlYWRlci5saW5lLmNvdW50JyxcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGRhdGEgaGFuZGxpbmcgaXMgb24gZm9yIHRoZSB0YWJsZS5cbiAgICovXG4gIERBVEFfQ0xFQU5TSU5HX0VOQUJMRUQgPSAnZGF0YV9jbGVhbnNpbmdfZW5hYmxlZCcsXG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGNvbXByZXNzaW9uIHVzZWQgb24gdGhlIHRhYmxlLCB3aGVuIHRoZSBmaWxlIG5hbWUgZG9lcyBub3QgY29udGFpbiBhbiBleHRlbnNpb24uIFRoaXMgdmFsdWUgb3ZlcnJpZGVzIHRoZSBjb21wcmVzc2lvbiB0eXBlIHNwZWNpZmllZCB0aHJvdWdoIHRoZSBleHRlbnNpb24uXG4gICAqL1xuICBDT01QUkVTU0lPTl9UWVBFID0gJ2NvbXByZXNzaW9uX3R5cGUnLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGFjdGlvbiB0byBwZXJmb3JtIHdoZW4gcXVlcnkgcmVzdWx0cyBjb250YWluIGludmFsaWQgVVRGLTggY2hhcmFjdGVyIHZhbHVlcy5cbiAgICovXG4gIElOVkFMSURfQ0hBUl9IQU5ETElORyA9ICdpbnZhbGlkX2NoYXJfaGFuZGxpbmcnLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHJlcGxhY2VtZW50IGNoYXJhY3RlciB0byB1c2Ugd2hlbiB5b3Ugc2V0IGBJTlZBTElEX0NIQVJfSEFORExJTkdgIHRvIGBSRVBMQUNFYC5cbiAgICovXG4gIFJFUExBQ0VNRU5UX0NIQVIgPSAncmVwbGFjZW1lbnRfY2hhcicsXG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgYWN0aW9uIHRvIHBlcmZvcm0gd2hlbiBPUkMgZGF0YSBjb250YWlucyBhbiBpbnRlZ2VyIChmb3IgZXhhbXBsZSwgQklHSU5UIG9yIGludDY0KSB0aGF0IGlzIGxhcmdlciB0aGFuIHRoZSBjb2x1bW4gZGVmaW5pdGlvbiAoZm9yIGV4YW1wbGUsIFNNQUxMSU5UIG9yIGludDE2KS5cbiAgICovXG4gIE5VTUVSSUNfT1ZFUkZMT1dfSEFORExJTkcgPSAnbnVtZXJpY19vdmVyZmxvd19oYW5kbGluZycsXG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBob3cgdG8gaGFuZGxlIGRhdGEgYmVpbmcgbG9hZGVkIHRoYXQgZXhjZWVkcyB0aGUgbGVuZ3RoIG9mIHRoZSBkYXRhIHR5cGUgZGVmaW5lZCBmb3IgY29sdW1ucyBjb250YWluaW5nIFZBUkJZVEUgZGF0YS4gQnkgZGVmYXVsdCwgUmVkc2hpZnQgU3BlY3RydW0gc2V0cyB0aGUgdmFsdWUgdG8gbnVsbCBmb3IgZGF0YSB0aGF0IGV4Y2VlZHMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4uXG4gICAqL1xuICBTVVJQTFVTX0JZVEVTX0hBTkRMSU5HID0gJ3N1cnBsdXNfYnl0ZXNfaGFuZGxpbmcnLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IHRvIGhhbmRsZSBkYXRhIGJlaW5nIGxvYWRlZCB0aGF0IGV4Y2VlZHMgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSB0eXBlIGRlZmluZWQgZm9yIGNvbHVtbnMgY29udGFpbmluZyBWQVJDSEFSLCBDSEFSLCBvciBzdHJpbmcgZGF0YS4gQnkgZGVmYXVsdCwgUmVkc2hpZnQgU3BlY3RydW0gc2V0cyB0aGUgdmFsdWUgdG8gbnVsbCBmb3IgZGF0YSB0aGF0IGV4Y2VlZHMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4uXG4gICAqL1xuICBTVVJQTFVTX0NIQVJfSEFORExJTkcgPSAnc3VycGx1c19jaGFyX2hhbmRsaW5nJyxcblxuICAvKipcbiAgICogSWRlbnRpZmllcyBpZiB0aGUgZmlsZSBjb250YWlucyBsZXNzIG9yIG1vcmUgdmFsdWVzIGZvciBhIHJvdyB0aGFuIHRoZSBudW1iZXIgb2YgY29sdW1ucyBzcGVjaWZpZWQgaW4gdGhlIGV4dGVybmFsIHRhYmxlIGRlZmluaXRpb24uIFRoaXMgcHJvcGVydHkgaXMgb25seSBhdmFpbGFibGUgZm9yIGFuIHVuY29tcHJlc3NlZCB0ZXh0IGZpbGUgZm9ybWF0LlxuICAgKi9cbiAgQ09MVU1OX0NPVU5UX01JU01BVENIX0hBTkRMSU5HID0gJ2NvbHVtbl9jb3VudF9taXNtYXRjaF9oYW5kbGluZycsXG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgdGhhdCBzZXRzIHRoZSBudW1Sb3dzIHZhbHVlIGZvciB0aGUgdGFibGUgZGVmaW5pdGlvbi4gVG8gZXhwbGljaXRseSB1cGRhdGUgYW4gZXh0ZXJuYWwgdGFibGUncyBzdGF0aXN0aWNzLCBzZXQgdGhlIG51bVJvd3MgcHJvcGVydHkgdG8gaW5kaWNhdGUgdGhlIHNpemUgb2YgdGhlIHRhYmxlLiBBbWF6b24gUmVkc2hpZnQgZG9lc24ndCBhbmFseXplIGV4dGVybmFsIHRhYmxlcyB0byBnZW5lcmF0ZSB0aGUgdGFibGUgc3RhdGlzdGljcyB0aGF0IHRoZSBxdWVyeSBvcHRpbWl6ZXIgdXNlcyB0byBnZW5lcmF0ZSBhIHF1ZXJ5IHBsYW4uIElmIHRhYmxlIHN0YXRpc3RpY3MgYXJlbid0IHNldCBmb3IgYW4gZXh0ZXJuYWwgdGFibGUsIEFtYXpvbiBSZWRzaGlmdCBnZW5lcmF0ZXMgYSBxdWVyeSBleGVjdXRpb24gcGxhbiBiYXNlZCBvbiBhbiBhc3N1bXB0aW9uIHRoYXQgZXh0ZXJuYWwgdGFibGVzIGFyZSB0aGUgbGFyZ2VyIHRhYmxlcyBhbmQgbG9jYWwgdGFibGVzIGFyZSB0aGUgc21hbGxlciB0YWJsZXMuXG4gICAqL1xuICBOVU1fUk9XUyA9ICdudW1fcm93cycsXG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgdGhhdCBzZXRzIG51bWJlciBvZiByb3dzIHRvIHNraXAgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHNvdXJjZSBmaWxlLlxuICAgKi9cbiAgU0VSSUFMSVpBVElPTl9OVUxMX0ZPUk1BVCA9ICdzZXJpYWxpemF0aW9uLm51bGwuZm9ybWF0JyxcblxuICAvKipcbiAgICogQSBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIGNvbHVtbiBtYXBwaW5nIHR5cGUgZm9yIHRhYmxlcyB0aGF0IHVzZSBPUkMgZGF0YSBmb3JtYXQuIFRoaXMgcHJvcGVydHkgaXMgaWdub3JlZCBmb3Igb3RoZXIgZGF0YSBmb3JtYXRzLlxuICAgKi9cbiAgT1JDX1NDSEVNQV9SRVNPTFVUSU9OID0gJ29yYy5zY2hlbWEucmVzb2x1dGlvbicsXG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgdGhhdCBzZXRzIHdoZXRoZXIgQ1JFQVRFIEVYVEVSTkFMIFRBQkxFIEFTIHNob3VsZCB3cml0ZSBkYXRhIGluIHBhcmFsbGVsLiBXaGVuICd3cml0ZS5wYXJhbGxlbCcgaXMgc2V0IHRvIG9mZiwgQ1JFQVRFIEVYVEVSTkFMIFRBQkxFIEFTIHdyaXRlcyB0byBvbmUgb3IgbW9yZSBkYXRhIGZpbGVzIHNlcmlhbGx5IG9udG8gQW1hem9uIFMzLiBUaGlzIHRhYmxlIHByb3BlcnR5IGFsc28gYXBwbGllcyB0byBhbnkgc3Vic2VxdWVudCBJTlNFUlQgc3RhdGVtZW50IGludG8gdGhlIHNhbWUgZXh0ZXJuYWwgdGFibGUuXG4gICAqL1xuICBXUklURV9QQVJBTExFTCA9ICd3cml0ZS5wYXJhbGxlbCcsXG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgdGhhdCBzZXRzIHRoZSBtYXhpbXVtIHNpemUgKGluIE1CKSBvZiBlYWNoIGZpbGUgd3JpdHRlbiB0byBBbWF6b24gUzMgYnkgQ1JFQVRFIEVYVEVSTkFMIFRBQkxFIEFTLiBUaGUgc2l6ZSBtdXN0IGJlIGEgdmFsaWQgaW50ZWdlciBiZXR3ZWVuIDUgYW5kIDYyMDAuIFRoZSBkZWZhdWx0IG1heGltdW0gZmlsZSBzaXplIGlzIDYsMjAwIE1CLiBUaGlzIHRhYmxlIHByb3BlcnR5IGFsc28gYXBwbGllcyB0byBhbnkgc3Vic2VxdWVudCBJTlNFUlQgc3RhdGVtZW50IGludG8gdGhlIHNhbWUgZXh0ZXJuYWwgdGFibGUuXG4gICAqL1xuICBXUklURV9NQVhfRklMRVNJWkVfTUIgPSAnd3JpdGUubWF4ZmlsZXNpemUubWInLFxuXG4gIC8qKlxuICAgKiBZb3UgY2FuIHNwZWNpZnkgYW4gQVdTIEtleSBNYW5hZ2VtZW50IFNlcnZpY2Uga2V5IHRvIGVuYWJsZSBTZXJ2ZXLigJNTaWRlIEVuY3J5cHRpb24gKFNTRSkgZm9yIEFtYXpvbiBTMyBvYmplY3RzLlxuICAgKi9cbiAgV1JJVEVfS01TX0tFWV9JRCA9ICd3cml0ZS5rbXMua2V5LmlkJyxcbn1cblxuLyoqXG4gKiBBIHN0b3JhZ2UgcGFyYW1ldGVyLiBUaGUgbGlzdCBvZiBzdG9yYWdlIHBhcmFtZXRlcnMgYXZhaWxhYmxlIGlzIG5vdCBleGhhdXN0aXZlIGFuZCBvdGhlciBrZXlzIG1heSBiZSB1c2VkLlxuICpcbiAqIElmIHlvdSB3b3VsZCBsaWtlIHRvIHNwZWNpZnkgYSBzdG9yYWdlIHBhcmFtZXRlciB0aGF0IGlzIG5vdCBhdmFpbGFibGUgYXMgYSBzdGF0aWMgbWVtYmVyIG9mIHRoaXMgY2xhc3MsIHVzZSB0aGUgYFN0b3JhZ2VQYXJhbWV0ZXIuY3VzdG9tYCBtZXRob2QuXG4gKlxuICogVGhlIGxpc3Qgb2Ygc3RvcmFnZSBwYXJhbWV0ZXJzIGN1cnJlbnRseSBrbm93biB3aXRoaW4gdGhlIENESyBpcyBsaXN0ZWQuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvdGFibGUtcHJvcGVydGllcy1jcmF3bGVyLmh0bWxcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9yZWRzaGlmdC9sYXRlc3QvZGcvcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUuaHRtbCNyX0NSRUFURV9FWFRFUk5BTF9UQUJMRS1wYXJhbWV0ZXJzIC0gdW5kZXIgX1wiVEFCTEUgUFJPUEVSVElFU1wiX1xuICovXG5leHBvcnQgY2xhc3MgU3RvcmFnZVBhcmFtZXRlciB7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHJvd3MgdG8gc2tpcCBhdCB0aGUgdG9wIG9mIGEgQ1NWIGZpbGUgd2hlbiB0aGUgdGFibGUgaXMgYmVpbmcgY3JlYXRlZC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2tpcEhlYWRlckxpbmVDb3VudCh2YWx1ZTogbnVtYmVyKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdza2lwLmhlYWRlci5saW5lLmNvdW50JywgdmFsdWUudG9TdHJpbmcoKSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGRhdGEgaGFuZGxpbmcgaXMgb24gZm9yIHRoZSB0YWJsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGF0YUNsZWFuc2luZ0VuYWJsZWQodmFsdWU6IGJvb2xlYW4pOiBTdG9yYWdlUGFyYW1ldGVyIHtcbiAgICByZXR1cm4gbmV3IFN0b3JhZ2VQYXJhbWV0ZXIoJ2RhdGFfY2xlYW5zaW5nX2VuYWJsZWQnLCB2YWx1ZS50b1N0cmluZygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBjb21wcmVzc2lvbiB1c2VkIG9uIHRoZSB0YWJsZSwgd2hlbiB0aGUgZmlsZSBuYW1lIGRvZXMgbm90IGNvbnRhaW4gYW4gZXh0ZW5zaW9uLiBUaGlzIHZhbHVlIG92ZXJyaWRlcyB0aGUgY29tcHJlc3Npb24gdHlwZSBzcGVjaWZpZWQgdGhyb3VnaCB0aGUgZXh0ZW5zaW9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb21wcmVzc2lvblR5cGUodmFsdWU6IENvbXByZXNzaW9uVHlwZSk6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignY29tcHJlc3Npb25fdHlwZScsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGFjdGlvbiB0byBwZXJmb3JtIHdoZW4gcXVlcnkgcmVzdWx0cyBjb250YWluIGludmFsaWQgVVRGLTggY2hhcmFjdGVyIHZhbHVlcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW52YWxpZENoYXJIYW5kbGluZyh2YWx1ZTogSW52YWxpZENoYXJIYW5kbGluZ0FjdGlvbik6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignaW52YWxpZF9jaGFyX2hhbmRsaW5nJywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIHRvIHVzZSB3aGVuIHlvdSBzZXQgYElOVkFMSURfQ0hBUl9IQU5ETElOR2AgdG8gYFJFUExBQ0VgLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZXBsYWNlbWVudENoYXIodmFsdWU6IHN0cmluZyk6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcigncmVwbGFjZW1lbnRfY2hhcicsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGFjdGlvbiB0byBwZXJmb3JtIHdoZW4gT1JDIGRhdGEgY29udGFpbnMgYW4gaW50ZWdlciAoZm9yIGV4YW1wbGUsIEJJR0lOVCBvciBpbnQ2NCkgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgY29sdW1uIGRlZmluaXRpb24gKGZvciBleGFtcGxlLCBTTUFMTElOVCBvciBpbnQxNikuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG51bWVyaWNPdmVyZmxvd0hhbmRsaW5nKHZhbHVlOiBOdW1lcmljT3ZlcmZsb3dIYW5kbGluZ0FjdGlvbik6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignbnVtZXJpY19vdmVyZmxvd19oYW5kbGluZycsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IHRvIGhhbmRsZSBkYXRhIGJlaW5nIGxvYWRlZCB0aGF0IGV4Y2VlZHMgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSB0eXBlIGRlZmluZWQgZm9yIGNvbHVtbnMgY29udGFpbmluZyBWQVJCWVRFIGRhdGEuIEJ5IGRlZmF1bHQsIFJlZHNoaWZ0IFNwZWN0cnVtIHNldHMgdGhlIHZhbHVlIHRvIG51bGwgZm9yIGRhdGEgdGhhdCBleGNlZWRzIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzdXJwbHVzQnl0ZXNIYW5kbGluZyh2YWx1ZTogU3VycGx1c0J5dGVzSGFuZGxpbmdBY3Rpb24pOiBTdG9yYWdlUGFyYW1ldGVyIHtcbiAgICByZXR1cm4gbmV3IFN0b3JhZ2VQYXJhbWV0ZXIoJ3N1cnBsdXNfYnl0ZXNfaGFuZGxpbmcnLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGhvdyB0byBoYW5kbGUgZGF0YSBiZWluZyBsb2FkZWQgdGhhdCBleGNlZWRzIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEgdHlwZSBkZWZpbmVkIGZvciBjb2x1bW5zIGNvbnRhaW5pbmcgVkFSQ0hBUiwgQ0hBUiwgb3Igc3RyaW5nIGRhdGEuIEJ5IGRlZmF1bHQsIFJlZHNoaWZ0IFNwZWN0cnVtIHNldHMgdGhlIHZhbHVlIHRvIG51bGwgZm9yIGRhdGEgdGhhdCBleGNlZWRzIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzdXJwbHVzQ2hhckhhbmRsaW5nKHZhbHVlOiBTdXJwbHVzQ2hhckhhbmRsaW5nQWN0aW9uKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdzdXJwbHVzX2NoYXJfaGFuZGxpbmcnLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogSWRlbnRpZmllcyBpZiB0aGUgZmlsZSBjb250YWlucyBsZXNzIG9yIG1vcmUgdmFsdWVzIGZvciBhIHJvdyB0aGFuIHRoZSBudW1iZXIgb2YgY29sdW1ucyBzcGVjaWZpZWQgaW4gdGhlIGV4dGVybmFsIHRhYmxlIGRlZmluaXRpb24uIFRoaXMgcHJvcGVydHkgaXMgb25seSBhdmFpbGFibGUgZm9yIGFuIHVuY29tcHJlc3NlZCB0ZXh0IGZpbGUgZm9ybWF0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb2x1bW5Db3VudE1pc21hdGNoSGFuZGxpbmcodmFsdWU6IENvbHVtbkNvdW50TWlzbWF0Y2hIYW5kbGluZ0FjdGlvbik6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignY29sdW1uX2NvdW50X21pc21hdGNoX2hhbmRsaW5nJywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgdGhhdCBzZXRzIHRoZSBudW1Sb3dzIHZhbHVlIGZvciB0aGUgdGFibGUgZGVmaW5pdGlvbi4gVG8gZXhwbGljaXRseSB1cGRhdGUgYW4gZXh0ZXJuYWwgdGFibGUncyBzdGF0aXN0aWNzLCBzZXQgdGhlIG51bVJvd3MgcHJvcGVydHkgdG8gaW5kaWNhdGUgdGhlIHNpemUgb2YgdGhlIHRhYmxlLiBBbWF6b24gUmVkc2hpZnQgZG9lc24ndCBhbmFseXplIGV4dGVybmFsIHRhYmxlcyB0byBnZW5lcmF0ZSB0aGUgdGFibGUgc3RhdGlzdGljcyB0aGF0IHRoZSBxdWVyeSBvcHRpbWl6ZXIgdXNlcyB0byBnZW5lcmF0ZSBhIHF1ZXJ5IHBsYW4uIElmIHRhYmxlIHN0YXRpc3RpY3MgYXJlbid0IHNldCBmb3IgYW4gZXh0ZXJuYWwgdGFibGUsIEFtYXpvbiBSZWRzaGlmdCBnZW5lcmF0ZXMgYSBxdWVyeSBleGVjdXRpb24gcGxhbiBiYXNlZCBvbiBhbiBhc3N1bXB0aW9uIHRoYXQgZXh0ZXJuYWwgdGFibGVzIGFyZSB0aGUgbGFyZ2VyIHRhYmxlcyBhbmQgbG9jYWwgdGFibGVzIGFyZSB0aGUgc21hbGxlciB0YWJsZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG51bVJvd3ModmFsdWU6IG51bWJlcik6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignbnVtX3Jvd3MnLCB2YWx1ZS50b1N0cmluZygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHByb3BlcnR5IHRoYXQgc2V0cyBudW1iZXIgb2Ygcm93cyB0byBza2lwIGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBzb3VyY2UgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2VyaWFsaXphdGlvbk51bGxGb3JtYXQodmFsdWU6IHN0cmluZyk6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignc2VyaWFsaXphdGlvbi5udWxsLmZvcm1hdCcsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHByb3BlcnR5IHRoYXQgc2V0cyB0aGUgY29sdW1uIG1hcHBpbmcgdHlwZSBmb3IgdGFibGVzIHRoYXQgdXNlIE9SQyBkYXRhIGZvcm1hdC4gVGhpcyBwcm9wZXJ0eSBpcyBpZ25vcmVkIGZvciBvdGhlciBkYXRhIGZvcm1hdHMuIElmIHRoaXMgcHJvcGVydHkgaXMgb21pdHRlZCwgY29sdW1ucyBhcmUgbWFwcGVkIGJ5IGBPcmNDb2x1bW5NYXBwaW5nVHlwZS5OQU1FYCBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBPcmNDb2x1bW5NYXBwaW5nVHlwZS5OQU1FXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9yY1NjaGVtYVJlc29sdXRpb24odmFsdWU6IE9yY0NvbHVtbk1hcHBpbmdUeXBlKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdvcmMuc2NoZW1hLnJlc29sdXRpb24nLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQSBwcm9wZXJ0eSB0aGF0IHNldHMgd2hldGhlciBDUkVBVEUgRVhURVJOQUwgVEFCTEUgQVMgc2hvdWxkIHdyaXRlIGRhdGEgaW4gcGFyYWxsZWwuIFdoZW4gJ3dyaXRlLnBhcmFsbGVsJyBpcyBzZXQgdG8gb2ZmLCBDUkVBVEUgRVhURVJOQUwgVEFCTEUgQVMgd3JpdGVzIHRvIG9uZSBvciBtb3JlIGRhdGEgZmlsZXMgc2VyaWFsbHkgb250byBBbWF6b24gUzMuIFRoaXMgdGFibGUgcHJvcGVydHkgYWxzbyBhcHBsaWVzIHRvIGFueSBzdWJzZXF1ZW50IElOU0VSVCBzdGF0ZW1lbnQgaW50byB0aGUgc2FtZSBleHRlcm5hbCB0YWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgV3JpdGVQYXJhbGxlbC5PTlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3cml0ZVBhcmFsbGVsKHZhbHVlOiBXcml0ZVBhcmFsbGVsKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCd3cml0ZS5wYXJhbGxlbCcsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHByb3BlcnR5IHRoYXQgc2V0cyB0aGUgbWF4aW11bSBzaXplIChpbiBNQikgb2YgZWFjaCBmaWxlIHdyaXR0ZW4gdG8gQW1hem9uIFMzIGJ5IENSRUFURSBFWFRFUk5BTCBUQUJMRSBBUy4gVGhlIHNpemUgbXVzdCBiZSBhIHZhbGlkIGludGVnZXIgYmV0d2VlbiA1IGFuZCA2MjAwLiBUaGUgZGVmYXVsdCBtYXhpbXVtIGZpbGUgc2l6ZSBpcyA2LDIwMCBNQi4gVGhpcyB0YWJsZSBwcm9wZXJ0eSBhbHNvIGFwcGxpZXMgdG8gYW55IHN1YnNlcXVlbnQgSU5TRVJUIHN0YXRlbWVudCBpbnRvIHRoZSBzYW1lIGV4dGVybmFsIHRhYmxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3cml0ZU1heEZpbGVTaXplTWIodmFsdWU6IG51bWJlcik6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignd3JpdGUubWF4ZmlsZXNpemUubWInLCB2YWx1ZS50b1N0cmluZygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBZb3UgY2FuIHNwZWNpZnkgYW4gQVdTIEtleSBNYW5hZ2VtZW50IFNlcnZpY2Uga2V5IHRvIGVuYWJsZSBTZXJ2ZXLigJNTaWRlIEVuY3J5cHRpb24gKFNTRSkgZm9yIEFtYXpvbiBTMyBvYmplY3RzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3cml0ZUttc0tleUlkKHZhbHVlOiBzdHJpbmcpOiBTdG9yYWdlUGFyYW1ldGVyIHtcbiAgICByZXR1cm4gbmV3IFN0b3JhZ2VQYXJhbWV0ZXIoJ3dyaXRlLmttcy5rZXkuaWQnLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQSBjdXN0b20gc3RvcmFnZSBwYXJhbWV0ZXIuXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IG9mIHRoZSBzdG9yYWdlIHBhcmFtZXRlci5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBzdG9yYWdlIHBhcmFtZXRlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3VzdG9tKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKGtleSwgdmFsdWUudG9TdHJpbmcoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGtleTogc3RyaW5nLCBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZykge31cbn1cbiJdfQ==
|
|
465
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1wYXJhbWV0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdG9yYWdlLXBhcmFtZXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBOzs7O0dBSUc7QUFDSCxJQUFZLGVBb0JYO0FBcEJELFdBQVksZUFBZTtJQUN6Qjs7T0FFRztJQUNILGdDQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILGtDQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILGdDQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILG9DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFwQlcsZUFBZSwrQkFBZixlQUFlLFFBb0IxQjtBQUVEOzs7O0dBSUc7QUFDSCxJQUFZLHlCQXlCWDtBQXpCRCxXQUFZLHlCQUF5QjtJQUNuQzs7T0FFRztJQUNILGtEQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gsMENBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gsd0RBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCxrREFBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILGdEQUFtQixDQUFBO0FBQ3JCLENBQUMsRUF6QlcseUJBQXlCLHlDQUF6Qix5QkFBeUIsUUF5QnBDO0FBRUQ7Ozs7R0FJRztBQUNILElBQVksNkJBb0JYO0FBcEJELFdBQVksNkJBQTZCO0lBQ3ZDOztPQUVHO0lBQ0gsc0RBQXFCLENBQUE7SUFFckI7O09BRUc7SUFDSCw4Q0FBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCw0REFBMkIsQ0FBQTtJQUUzQjs7T0FFRztJQUNILHNEQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFwQlcsNkJBQTZCLDZDQUE3Qiw2QkFBNkIsUUFvQnhDO0FBRUQ7Ozs7R0FJRztBQUNILElBQVksMEJBeUJYO0FBekJELFdBQVksMEJBQTBCO0lBQ3BDOztPQUVHO0lBQ0gseURBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCxtREFBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILDJDQUFhLENBQUE7SUFFYjs7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QU8sSUFBSSxnQkFBZ0IsQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUM3RDtJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQW9COzs7Ozs7Ozs7O1FBQzlDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN0RDtJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQWE7UUFDNUMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZFO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0ksTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFnQjtRQUMxQyxPQUFPLElBQUksZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNwRTtJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQzdDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDekM7SUFFRCxZQUFzQyxHQUFXLEVBQWtCLEtBQWE7UUFBMUMsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUFrQixVQUFLLEdBQUwsS0FBSyxDQUFRO0tBQUk7O0FBakl0Riw0Q0FrSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcblxuLyoqXG4gKiBUaGUgY29tcHJlc3Npb24gdHlwZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9yZWRzaGlmdC9sYXRlc3QvZGcvcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUuaHRtbCNyX0NSRUFURV9FWFRFUk5BTF9UQUJMRS1wYXJhbWV0ZXJzIC0gdW5kZXIgX1wiVEFCTEUgUFJPUEVSVElFU1wiXyA+IF9cImNvbXByZXNzaW9uX3R5cGVcIl9cbiAqL1xuZXhwb3J0IGVudW0gQ29tcHJlc3Npb25UeXBlIHtcbiAgLyoqXG4gICAqIE5vIGNvbXByZXNzaW9uLlxuICAgKi9cbiAgTk9ORSA9ICdub25lJyxcblxuICAvKipcbiAgICogQnVycm93cy1XaGVlbGVyIGNvbXByZXNzaW9uLlxuICAgKi9cbiAgQlpJUDIgPSAnYnppcDInLFxuXG4gIC8qKlxuICAgKiBEZWZsYXRlIGNvbXByZXNzaW9uLlxuICAgKi9cbiAgR1pJUCA9ICdnemlwJyxcblxuICAvKipcbiAgICogQ29tcHJlc3Npb24gYWxnb3JpdGhtIGZvY3VzZWQgb24gaGlnaCBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBzcGVlZHMsIHJhdGhlciB0aGFuIHRoZSBtYXhpbXVtIHBvc3NpYmxlIGNvbXByZXNzaW9uLlxuICAgKi9cbiAgU05BUFBZID0gJ3NuYXBweScsXG59XG5cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBhY3Rpb24gdG8gcGVyZm9ybSB3aGVuIHF1ZXJ5IHJlc3VsdHMgY29udGFpbiBpbnZhbGlkIFVURi04IGNoYXJhY3RlciB2YWx1ZXMuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLmh0bWwjcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUtcGFyYW1ldGVycyAtIHVuZGVyIF9cIlRBQkxFIFBST1BFUlRJRVNcIl8gPiBfXCJpbnZhbGlkX2NoYXJfaGFuZGxpbmdcIl9cbiAqL1xuZXhwb3J0IGVudW0gSW52YWxpZENoYXJIYW5kbGluZ0FjdGlvbiB7XG4gIC8qKlxuICAgKiBEb2Vzbid0IHBlcmZvcm0gaW52YWxpZCBjaGFyYWN0ZXIgaGFuZGxpbmcuXG4gICAqL1xuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG5cbiAgLyoqXG4gICAqIENhbmNlbHMgcXVlcmllcyB0aGF0IHJldHVybiBkYXRhIGNvbnRhaW5pbmcgaW52YWxpZCBVVEYtOCB2YWx1ZXMuXG4gICAqL1xuICBGQUlMID0gJ0ZBSUwnLFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBpbnZhbGlkIFVURi04IHZhbHVlcyB3aXRoIG51bGwuXG4gICAqL1xuICBTRVRfVE9fTlVMTCA9ICdTRVRfVE9fTlVMTCcsXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGVhY2ggdmFsdWUgaW4gdGhlIHJvdyB3aXRoIG51bGwuXG4gICAqL1xuICBEUk9QX1JPVyA9ICdEUk9QX1JPVycsXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIHRoZSBpbnZhbGlkIGNoYXJhY3RlciB3aXRoIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgeW91IHNwZWNpZnkgdXNpbmcgYFJFUExBQ0VNRU5UX0NIQVJgLlxuICAgKi9cbiAgUkVQTEFDRSA9ICdSRVBMQUNFJyxcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGFjdGlvbiB0byBwZXJmb3JtIHdoZW4gT1JDIGRhdGEgY29udGFpbnMgYW4gaW50ZWdlciAoZm9yIGV4YW1wbGUsIEJJR0lOVCBvciBpbnQ2NCkgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgY29sdW1uIGRlZmluaXRpb24gKGZvciBleGFtcGxlLCBTTUFMTElOVCBvciBpbnQxNikuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLmh0bWwjcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUtcGFyYW1ldGVycyAtIHVuZGVyIF9cIlRBQkxFIFBST1BFUlRJRVNcIl8gPiBfXCJudW1lcmljX292ZXJmbG93X2hhbmRsaW5nXCJfXG4gKi9cbmV4cG9ydCBlbnVtIE51bWVyaWNPdmVyZmxvd0hhbmRsaW5nQWN0aW9uIHtcbiAgLyoqXG4gICAqIEludmFsaWQgY2hhcmFjdGVyIGhhbmRsaW5nIGlzIHR1cm5lZCBvZmYuXG4gICAqL1xuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG5cbiAgLyoqXG4gICAqIENhbmNlbCB0aGUgcXVlcnkgd2hlbiB0aGUgZGF0YSBpbmNsdWRlcyBpbnZhbGlkIGNoYXJhY3RlcnMuXG4gICAqL1xuICBGQUlMID0gJ0ZBSUwnLFxuXG4gIC8qKlxuICAgKiBTZXQgaW52YWxpZCBjaGFyYWN0ZXJzIHRvIG51bGwuXG4gICAqL1xuICBTRVRfVE9fTlVMTCA9ICdTRVRfVE9fTlVMTCcsXG5cbiAgLyoqXG4gICAqIFNldCBlYWNoIHZhbHVlIGluIHRoZSByb3cgdG8gbnVsbC5cbiAgICovXG4gIERST1BfUk9XID0gJ0RST1BfUk9XJyxcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IHRvIGhhbmRsZSBkYXRhIGJlaW5nIGxvYWRlZCB0aGF0IGV4Y2VlZHMgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSB0eXBlIGRlZmluZWQgZm9yIGNvbHVtbnMgY29udGFpbmluZyBWQVJCWVRFIGRhdGEuIEJ5IGRlZmF1bHQsIFJlZHNoaWZ0IFNwZWN0cnVtIHNldHMgdGhlIHZhbHVlIHRvIG51bGwgZm9yIGRhdGEgdGhhdCBleGNlZWRzIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9FWFRFUk5BTF9UQUJMRS5odG1sI3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLXBhcmFtZXRlcnMgLSB1bmRlciBfXCJUQUJMRSBQUk9QRVJUSUVTXCJfID4gX1wic3VycGx1c19ieXRlc19oYW5kbGluZ1wiX1xuICovXG5leHBvcnQgZW51bSBTdXJwbHVzQnl0ZXNIYW5kbGluZ0FjdGlvbiB7XG4gIC8qKlxuICAgKiBSZXBsYWNlcyBkYXRhIHRoYXQgZXhjZWVkcyB0aGUgY29sdW1uIHdpZHRoIHdpdGggbnVsbC5cbiAgICovXG4gIFNFVF9UT19OVUxMID0gJ1NFVF9UT19OVUxMJyxcblxuICAvKipcbiAgICogRG9lc24ndCBwZXJmb3JtIHN1cnBsdXMgYnl0ZSBoYW5kbGluZy5cbiAgICovXG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcblxuICAvKipcbiAgICogQ2FuY2VscyBxdWVyaWVzIHRoYXQgcmV0dXJuIGRhdGEgZXhjZWVkaW5nIHRoZSBjb2x1bW4gd2lkdGguXG4gICAqL1xuICBGQUlMID0gJ0ZBSUwnLFxuXG4gIC8qKlxuICAgKiBEcm9wIGFsbCByb3dzIHRoYXQgY29udGFpbiBkYXRhIGV4Y2VlZGluZyBjb2x1bW4gd2lkdGguXG4gICAqL1xuICBEUk9QX1JPVyA9ICdEUk9QX1JPVycsXG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGNoYXJhY3RlcnMgdGhhdCBleGNlZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgZGVmaW5lZCBmb3IgdGhlIGNvbHVtbi5cbiAgICovXG4gIFRSVU5DQVRFID0gJ1RSVU5DQVRFJyxcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IHRvIGhhbmRsZSBkYXRhIGJlaW5nIGxvYWRlZCB0aGF0IGV4Y2VlZHMgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSB0eXBlIGRlZmluZWQgZm9yIGNvbHVtbnMgY29udGFpbmluZyBWQVJDSEFSLCBDSEFSLCBvciBzdHJpbmcgZGF0YS4gQnkgZGVmYXVsdCwgUmVkc2hpZnQgU3BlY3RydW0gc2V0cyB0aGUgdmFsdWUgdG8gbnVsbCBmb3IgZGF0YSB0aGF0IGV4Y2VlZHMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4uXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLmh0bWwjcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUtcGFyYW1ldGVycyAtIHVuZGVyIF9cIlRBQkxFIFBST1BFUlRJRVNcIl8gPiBfXCJzdXJwbHVzX2NoYXJfaGFuZGxpbmdcIl9cbiAqL1xuZXhwb3J0IGVudW0gU3VycGx1c0NoYXJIYW5kbGluZ0FjdGlvbiB7XG4gIC8qKlxuICAgKiBSZXBsYWNlcyBkYXRhIHRoYXQgZXhjZWVkcyB0aGUgY29sdW1uIHdpZHRoIHdpdGggbnVsbC5cbiAgICovXG4gIFNFVF9UT19OVUxMID0gJ1NFVF9UT19OVUxMJyxcblxuICAvKipcbiAgICogRG9lc24ndCBwZXJmb3JtIHN1cnBsdXMgY2hhcmFjdGVyIGhhbmRsaW5nLlxuICAgKi9cbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIHF1ZXJpZXMgdGhhdCByZXR1cm4gZGF0YSBleGNlZWRpbmcgdGhlIGNvbHVtbiB3aWR0aC5cbiAgICovXG4gIEZBSUwgPSAnRkFJTCcsXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGVhY2ggdmFsdWUgaW4gdGhlIHJvdyB3aXRoIG51bGwuXG4gICAqL1xuICBEUk9QX1JPVyA9ICdEUk9QX1JPVycsXG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGNoYXJhY3RlcnMgdGhhdCBleGNlZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgZGVmaW5lZCBmb3IgdGhlIGNvbHVtbi5cbiAgICovXG4gIFRSVU5DQVRFID0gJ1RSVU5DQVRFJyxcbn1cblxuLyoqXG4gKiBJZGVudGlmaWVzIGlmIHRoZSBmaWxlIGNvbnRhaW5zIGxlc3Mgb3IgbW9yZSB2YWx1ZXMgZm9yIGEgcm93IHRoYW4gdGhlIG51bWJlciBvZiBjb2x1bW5zIHNwZWNpZmllZCBpbiB0aGUgZXh0ZXJuYWwgdGFibGUgZGVmaW5pdGlvbi4gVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgYW4gdW5jb21wcmVzc2VkIHRleHQgZmlsZSBmb3JtYXQuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLmh0bWwjcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUtcGFyYW1ldGVycyAtIHVuZGVyIF9cIlRBQkxFIFBST1BFUlRJRVNcIl8gPiBfXCJjb2x1bW5fY291bnRfbWlzbWF0Y2hfaGFuZGxpbmdcIl9cbiAqL1xuZXhwb3J0IGVudW0gQ29sdW1uQ291bnRNaXNtYXRjaEhhbmRsaW5nQWN0aW9uIHtcbiAgLyoqXG4gICAqIENvbHVtbiBjb3VudCBtaXNtYXRjaCBoYW5kbGluZyBpcyB0dXJuZWQgb2ZmLlxuICAgKi9cbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxuXG4gIC8qKlxuICAgKiBGYWlsIHRoZSBxdWVyeSBpZiB0aGUgY29sdW1uIGNvdW50IG1pc21hdGNoIGlzIGRldGVjdGVkLlxuICAgKi9cbiAgRkFJTCA9ICdGQUlMJyxcblxuICAvKipcbiAgICogRmlsbCBtaXNzaW5nIHZhbHVlcyB3aXRoIE5VTEwgYW5kIGlnbm9yZSB0aGUgYWRkaXRpb25hbCB2YWx1ZXMgaW4gZWFjaCByb3cuXG4gICAqL1xuICBTRVRfVE9fTlVMTCA9ICdTRVRfVE9fTlVMTCcsXG5cbiAgLyoqXG4gICAqIERyb3AgYWxsIHJvd3MgdGhhdCBjb250YWluIGNvbHVtbiBjb3VudCBtaXNtYXRjaCBlcnJvciBmcm9tIHRoZSBzY2FuLlxuICAgKi9cbiAgRFJPUF9ST1cgPSAnRFJPUF9ST1cnLFxufVxuXG4vKipcbiAqIFNwZWNpZmllcyBob3cgdG8gaGFuZGxlIGRhdGEgYmVpbmcgbG9hZGVkIHRoYXQgZXhjZWVkcyB0aGUgbGVuZ3RoIG9mIHRoZSBkYXRhIHR5cGUgZGVmaW5lZCBmb3IgY29sdW1ucyBjb250YWluaW5nIFZBUkNIQVIsIENIQVIsIG9yIHN0cmluZyBkYXRhLiBCeSBkZWZhdWx0LCBSZWRzaGlmdCBTcGVjdHJ1bSBzZXRzIHRoZSB2YWx1ZSB0byBudWxsIGZvciBkYXRhIHRoYXQgZXhjZWVkcyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9yZWRzaGlmdC9sYXRlc3QvZGcvcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUuaHRtbCNyX0NSRUFURV9FWFRFUk5BTF9UQUJMRS1wYXJhbWV0ZXJzIC0gdW5kZXIgX1wiVEFCTEUgUFJPUEVSVElFU1wiXyA+IF9cInN1cnBsdXNfY2hhcl9oYW5kbGluZ1wiX1xuICovXG5leHBvcnQgZW51bSBXcml0ZVBhcmFsbGVsIHtcbiAgLyoqXG4gICAqIFdyaXRlIGRhdGEgaW4gcGFyYWxsZWwuXG4gICAqL1xuICBPTiA9ICdvbicsXG5cbiAgLyoqXG4gICAqIFdyaXRlIGRhdGEgc2VyaWFsbHkuXG4gICAqL1xuICBPRkYgPSAnb2ZmJyxcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IHRvIG1hcCBjb2x1bW5zIHdoZW4gdGhlIHRhYmxlIHVzZXMgT1JDIGRhdGEgZm9ybWF0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9FWFRFUk5BTF9UQUJMRS5odG1sI3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLXBhcmFtZXRlcnMgLSB1bmRlciBfXCJUQUJMRSBQUk9QRVJUSUVTXCJfID4gX1wib3JjLnNjaGVtYS5yZXNvbHV0aW9uXCJfXG4gKi9cbmV4cG9ydCBlbnVtIE9yY0NvbHVtbk1hcHBpbmdUeXBlIHtcbiAgLyoqXG4gICAqIE1hcCBjb2x1bW5zIGJ5IG5hbWUuXG4gICAqL1xuICBOQU1FID0gJ25hbWUnLFxuXG4gIC8qKlxuICAgKiBNYXAgY29sdW1ucyBieSBwb3NpdGlvbi5cbiAgICovXG4gIFBPU0lUSU9OID0gJ3Bvc2l0aW9uJyxcbn1cblxuLyoqXG4gKiBUaGUgc3RvcmFnZSBwYXJhbWV0ZXIga2V5cyB0aGF0IGFyZSBjdXJyZW50bHkga25vd24sIHRoaXMgbGlzdCBpcyBub3QgZXhoYXVzdGl2ZSBhbmQgb3RoZXIga2V5cyBtYXkgYmUgdXNlZC5cbiAqL1xuZXhwb3J0IGVudW0gU3RvcmFnZVBhcmFtZXRlcnMge1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiByb3dzIHRvIHNraXAgYXQgdGhlIHRvcCBvZiBhIENTViBmaWxlIHdoZW4gdGhlIHRhYmxlIGlzIGJlaW5nIGNyZWF0ZWQuXG4gICAqL1xuICBTS0lQX0hFQURFUl9MSU5FX0NPVU5UID0gJ3NraXAuaGVhZGVyLmxpbmUuY291bnQnLFxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgZGF0YSBoYW5kbGluZyBpcyBvbiBmb3IgdGhlIHRhYmxlLlxuICAgKi9cbiAgREFUQV9DTEVBTlNJTkdfRU5BQkxFRCA9ICdkYXRhX2NsZWFuc2luZ19lbmFibGVkJyxcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgY29tcHJlc3Npb24gdXNlZCBvbiB0aGUgdGFibGUsIHdoZW4gdGhlIGZpbGUgbmFtZSBkb2VzIG5vdCBjb250YWluIGFuIGV4dGVuc2lvbi4gVGhpcyB2YWx1ZSBvdmVycmlkZXMgdGhlIGNvbXByZXNzaW9uIHR5cGUgc3BlY2lmaWVkIHRocm91Z2ggdGhlIGV4dGVuc2lvbi5cbiAgICovXG4gIENPTVBSRVNTSU9OX1RZUEUgPSAnY29tcHJlc3Npb25fdHlwZScsXG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgYWN0aW9uIHRvIHBlcmZvcm0gd2hlbiBxdWVyeSByZXN1bHRzIGNvbnRhaW4gaW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIgdmFsdWVzLlxuICAgKi9cbiAgSU5WQUxJRF9DSEFSX0hBTkRMSU5HID0gJ2ludmFsaWRfY2hhcl9oYW5kbGluZycsXG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIHRvIHVzZSB3aGVuIHlvdSBzZXQgYElOVkFMSURfQ0hBUl9IQU5ETElOR2AgdG8gYFJFUExBQ0VgLlxuICAgKi9cbiAgUkVQTEFDRU1FTlRfQ0hBUiA9ICdyZXBsYWNlbWVudF9jaGFyJyxcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBhY3Rpb24gdG8gcGVyZm9ybSB3aGVuIE9SQyBkYXRhIGNvbnRhaW5zIGFuIGludGVnZXIgKGZvciBleGFtcGxlLCBCSUdJTlQgb3IgaW50NjQpIHRoYXQgaXMgbGFyZ2VyIHRoYW4gdGhlIGNvbHVtbiBkZWZpbml0aW9uIChmb3IgZXhhbXBsZSwgU01BTExJTlQgb3IgaW50MTYpLlxuICAgKi9cbiAgTlVNRVJJQ19PVkVSRkxPV19IQU5ETElORyA9ICdudW1lcmljX292ZXJmbG93X2hhbmRsaW5nJyxcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGhvdyB0byBoYW5kbGUgZGF0YSBiZWluZyBsb2FkZWQgdGhhdCBleGNlZWRzIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEgdHlwZSBkZWZpbmVkIGZvciBjb2x1bW5zIGNvbnRhaW5pbmcgVkFSQllURSBkYXRhLiBCeSBkZWZhdWx0LCBSZWRzaGlmdCBTcGVjdHJ1bSBzZXRzIHRoZSB2YWx1ZSB0byBudWxsIGZvciBkYXRhIHRoYXQgZXhjZWVkcyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbi5cbiAgICovXG4gIFNVUlBMVVNfQllURVNfSEFORExJTkcgPSAnc3VycGx1c19ieXRlc19oYW5kbGluZycsXG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBob3cgdG8gaGFuZGxlIGRhdGEgYmVpbmcgbG9hZGVkIHRoYXQgZXhjZWVkcyB0aGUgbGVuZ3RoIG9mIHRoZSBkYXRhIHR5cGUgZGVmaW5lZCBmb3IgY29sdW1ucyBjb250YWluaW5nIFZBUkNIQVIsIENIQVIsIG9yIHN0cmluZyBkYXRhLiBCeSBkZWZhdWx0LCBSZWRzaGlmdCBTcGVjdHJ1bSBzZXRzIHRoZSB2YWx1ZSB0byBudWxsIGZvciBkYXRhIHRoYXQgZXhjZWVkcyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbi5cbiAgICovXG4gIFNVUlBMVVNfQ0hBUl9IQU5ETElORyA9ICdzdXJwbHVzX2NoYXJfaGFuZGxpbmcnLFxuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIGlmIHRoZSBmaWxlIGNvbnRhaW5zIGxlc3Mgb3IgbW9yZSB2YWx1ZXMgZm9yIGEgcm93IHRoYW4gdGhlIG51bWJlciBvZiBjb2x1bW5zIHNwZWNpZmllZCBpbiB0aGUgZXh0ZXJuYWwgdGFibGUgZGVmaW5pdGlvbi4gVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgYW4gdW5jb21wcmVzc2VkIHRleHQgZmlsZSBmb3JtYXQuXG4gICAqL1xuICBDT0xVTU5fQ09VTlRfTUlTTUFUQ0hfSEFORExJTkcgPSAnY29sdW1uX2NvdW50X21pc21hdGNoX2hhbmRsaW5nJyxcblxuICAvKipcbiAgICogQSBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIG51bVJvd3MgdmFsdWUgZm9yIHRoZSB0YWJsZSBkZWZpbml0aW9uLiBUbyBleHBsaWNpdGx5IHVwZGF0ZSBhbiBleHRlcm5hbCB0YWJsZSdzIHN0YXRpc3RpY3MsIHNldCB0aGUgbnVtUm93cyBwcm9wZXJ0eSB0byBpbmRpY2F0ZSB0aGUgc2l6ZSBvZiB0aGUgdGFibGUuIEFtYXpvbiBSZWRzaGlmdCBkb2Vzbid0IGFuYWx5emUgZXh0ZXJuYWwgdGFibGVzIHRvIGdlbmVyYXRlIHRoZSB0YWJsZSBzdGF0aXN0aWNzIHRoYXQgdGhlIHF1ZXJ5IG9wdGltaXplciB1c2VzIHRvIGdlbmVyYXRlIGEgcXVlcnkgcGxhbi4gSWYgdGFibGUgc3RhdGlzdGljcyBhcmVuJ3Qgc2V0IGZvciBhbiBleHRlcm5hbCB0YWJsZSwgQW1hem9uIFJlZHNoaWZ0IGdlbmVyYXRlcyBhIHF1ZXJ5IGV4ZWN1dGlvbiBwbGFuIGJhc2VkIG9uIGFuIGFzc3VtcHRpb24gdGhhdCBleHRlcm5hbCB0YWJsZXMgYXJlIHRoZSBsYXJnZXIgdGFibGVzIGFuZCBsb2NhbCB0YWJsZXMgYXJlIHRoZSBzbWFsbGVyIHRhYmxlcy5cbiAgICovXG4gIE5VTV9ST1dTID0gJ251bV9yb3dzJyxcblxuICAvKipcbiAgICogQSBwcm9wZXJ0eSB0aGF0IHNldHMgbnVtYmVyIG9mIHJvd3MgdG8gc2tpcCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggc291cmNlIGZpbGUuXG4gICAqL1xuICBTRVJJQUxJWkFUSU9OX05VTExfRk9STUFUID0gJ3NlcmlhbGl6YXRpb24ubnVsbC5mb3JtYXQnLFxuXG4gIC8qKlxuICAgKiBBIHByb3BlcnR5IHRoYXQgc2V0cyB0aGUgY29sdW1uIG1hcHBpbmcgdHlwZSBmb3IgdGFibGVzIHRoYXQgdXNlIE9SQyBkYXRhIGZvcm1hdC4gVGhpcyBwcm9wZXJ0eSBpcyBpZ25vcmVkIGZvciBvdGhlciBkYXRhIGZvcm1hdHMuXG4gICAqL1xuICBPUkNfU0NIRU1BX1JFU09MVVRJT04gPSAnb3JjLnNjaGVtYS5yZXNvbHV0aW9uJyxcblxuICAvKipcbiAgICogQSBwcm9wZXJ0eSB0aGF0IHNldHMgd2hldGhlciBDUkVBVEUgRVhURVJOQUwgVEFCTEUgQVMgc2hvdWxkIHdyaXRlIGRhdGEgaW4gcGFyYWxsZWwuIFdoZW4gJ3dyaXRlLnBhcmFsbGVsJyBpcyBzZXQgdG8gb2ZmLCBDUkVBVEUgRVhURVJOQUwgVEFCTEUgQVMgd3JpdGVzIHRvIG9uZSBvciBtb3JlIGRhdGEgZmlsZXMgc2VyaWFsbHkgb250byBBbWF6b24gUzMuIFRoaXMgdGFibGUgcHJvcGVydHkgYWxzbyBhcHBsaWVzIHRvIGFueSBzdWJzZXF1ZW50IElOU0VSVCBzdGF0ZW1lbnQgaW50byB0aGUgc2FtZSBleHRlcm5hbCB0YWJsZS5cbiAgICovXG4gIFdSSVRFX1BBUkFMTEVMID0gJ3dyaXRlLnBhcmFsbGVsJyxcblxuICAvKipcbiAgICogQSBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIG1heGltdW0gc2l6ZSAoaW4gTUIpIG9mIGVhY2ggZmlsZSB3cml0dGVuIHRvIEFtYXpvbiBTMyBieSBDUkVBVEUgRVhURVJOQUwgVEFCTEUgQVMuIFRoZSBzaXplIG11c3QgYmUgYSB2YWxpZCBpbnRlZ2VyIGJldHdlZW4gNSBhbmQgNjIwMC4gVGhlIGRlZmF1bHQgbWF4aW11bSBmaWxlIHNpemUgaXMgNiwyMDAgTUIuIFRoaXMgdGFibGUgcHJvcGVydHkgYWxzbyBhcHBsaWVzIHRvIGFueSBzdWJzZXF1ZW50IElOU0VSVCBzdGF0ZW1lbnQgaW50byB0aGUgc2FtZSBleHRlcm5hbCB0YWJsZS5cbiAgICovXG4gIFdSSVRFX01BWF9GSUxFU0laRV9NQiA9ICd3cml0ZS5tYXhmaWxlc2l6ZS5tYicsXG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gc3BlY2lmeSBhbiBBV1MgS2V5IE1hbmFnZW1lbnQgU2VydmljZSBrZXkgdG8gZW5hYmxlIFNlcnZlcuKAk1NpZGUgRW5jcnlwdGlvbiAoU1NFKSBmb3IgQW1hem9uIFMzIG9iamVjdHMuXG4gICAqL1xuICBXUklURV9LTVNfS0VZX0lEID0gJ3dyaXRlLmttcy5rZXkuaWQnLFxufVxuXG4vKipcbiAqIEEgc3RvcmFnZSBwYXJhbWV0ZXIuIFRoZSBsaXN0IG9mIHN0b3JhZ2UgcGFyYW1ldGVycyBhdmFpbGFibGUgaXMgbm90IGV4aGF1c3RpdmUgYW5kIG90aGVyIGtleXMgbWF5IGJlIHVzZWQuXG4gKlxuICogSWYgeW91IHdvdWxkIGxpa2UgdG8gc3BlY2lmeSBhIHN0b3JhZ2UgcGFyYW1ldGVyIHRoYXQgaXMgbm90IGF2YWlsYWJsZSBhcyBhIHN0YXRpYyBtZW1iZXIgb2YgdGhpcyBjbGFzcywgdXNlIHRoZSBgU3RvcmFnZVBhcmFtZXRlci5jdXN0b21gIG1ldGhvZC5cbiAqXG4gKiBUaGUgbGlzdCBvZiBzdG9yYWdlIHBhcmFtZXRlcnMgY3VycmVudGx5IGtub3duIHdpdGhpbiB0aGUgQ0RLIGlzIGxpc3RlZC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy90YWJsZS1wcm9wZXJ0aWVzLWNyYXdsZXIuaHRtbFxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9FWFRFUk5BTF9UQUJMRS5odG1sI3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLXBhcmFtZXRlcnMgLSB1bmRlciBfXCJUQUJMRSBQUk9QRVJUSUVTXCJfXG4gKi9cbmV4cG9ydCBjbGFzcyBTdG9yYWdlUGFyYW1ldGVyIHtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2Ygcm93cyB0byBza2lwIGF0IHRoZSB0b3Agb2YgYSBDU1YgZmlsZSB3aGVuIHRoZSB0YWJsZSBpcyBiZWluZyBjcmVhdGVkLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBza2lwSGVhZGVyTGluZUNvdW50KHZhbHVlOiBudW1iZXIpOiBTdG9yYWdlUGFyYW1ldGVyIHtcbiAgICByZXR1cm4gbmV3IFN0b3JhZ2VQYXJhbWV0ZXIoJ3NraXAuaGVhZGVyLmxpbmUuY291bnQnLCB2YWx1ZS50b1N0cmluZygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgZGF0YSBoYW5kbGluZyBpcyBvbiBmb3IgdGhlIHRhYmxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkYXRhQ2xlYW5zaW5nRW5hYmxlZCh2YWx1ZTogYm9vbGVhbik6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignZGF0YV9jbGVhbnNpbmdfZW5hYmxlZCcsIHZhbHVlLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGNvbXByZXNzaW9uIHVzZWQgb24gdGhlIHRhYmxlLCB3aGVuIHRoZSBmaWxlIG5hbWUgZG9lcyBub3QgY29udGFpbiBhbiBleHRlbnNpb24uIFRoaXMgdmFsdWUgb3ZlcnJpZGVzIHRoZSBjb21wcmVzc2lvbiB0eXBlIHNwZWNpZmllZCB0aHJvdWdoIHRoZSBleHRlbnNpb24uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbXByZXNzaW9uVHlwZSh2YWx1ZTogQ29tcHJlc3Npb25UeXBlKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdjb21wcmVzc2lvbl90eXBlJywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgYWN0aW9uIHRvIHBlcmZvcm0gd2hlbiBxdWVyeSByZXN1bHRzIGNvbnRhaW4gaW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIgdmFsdWVzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpbnZhbGlkQ2hhckhhbmRsaW5nKHZhbHVlOiBJbnZhbGlkQ2hhckhhbmRsaW5nQWN0aW9uKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdpbnZhbGlkX2NoYXJfaGFuZGxpbmcnLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgdG8gdXNlIHdoZW4geW91IHNldCBgSU5WQUxJRF9DSEFSX0hBTkRMSU5HYCB0byBgUkVQTEFDRWAuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlcGxhY2VtZW50Q2hhcih2YWx1ZTogc3RyaW5nKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdyZXBsYWNlbWVudF9jaGFyJywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgYWN0aW9uIHRvIHBlcmZvcm0gd2hlbiBPUkMgZGF0YSBjb250YWlucyBhbiBpbnRlZ2VyIChmb3IgZXhhbXBsZSwgQklHSU5UIG9yIGludDY0KSB0aGF0IGlzIGxhcmdlciB0aGFuIHRoZSBjb2x1bW4gZGVmaW5pdGlvbiAoZm9yIGV4YW1wbGUsIFNNQUxMSU5UIG9yIGludDE2KS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbnVtZXJpY092ZXJmbG93SGFuZGxpbmcodmFsdWU6IE51bWVyaWNPdmVyZmxvd0hhbmRsaW5nQWN0aW9uKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdudW1lcmljX292ZXJmbG93X2hhbmRsaW5nJywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBob3cgdG8gaGFuZGxlIGRhdGEgYmVpbmcgbG9hZGVkIHRoYXQgZXhjZWVkcyB0aGUgbGVuZ3RoIG9mIHRoZSBkYXRhIHR5cGUgZGVmaW5lZCBmb3IgY29sdW1ucyBjb250YWluaW5nIFZBUkJZVEUgZGF0YS4gQnkgZGVmYXVsdCwgUmVkc2hpZnQgU3BlY3RydW0gc2V0cyB0aGUgdmFsdWUgdG8gbnVsbCBmb3IgZGF0YSB0aGF0IGV4Y2VlZHMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN1cnBsdXNCeXRlc0hhbmRsaW5nKHZhbHVlOiBTdXJwbHVzQnl0ZXNIYW5kbGluZ0FjdGlvbik6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignc3VycGx1c19ieXRlc19oYW5kbGluZycsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IHRvIGhhbmRsZSBkYXRhIGJlaW5nIGxvYWRlZCB0aGF0IGV4Y2VlZHMgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSB0eXBlIGRlZmluZWQgZm9yIGNvbHVtbnMgY29udGFpbmluZyBWQVJDSEFSLCBDSEFSLCBvciBzdHJpbmcgZGF0YS4gQnkgZGVmYXVsdCwgUmVkc2hpZnQgU3BlY3RydW0gc2V0cyB0aGUgdmFsdWUgdG8gbnVsbCBmb3IgZGF0YSB0aGF0IGV4Y2VlZHMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN1cnBsdXNDaGFySGFuZGxpbmcodmFsdWU6IFN1cnBsdXNDaGFySGFuZGxpbmdBY3Rpb24pOiBTdG9yYWdlUGFyYW1ldGVyIHtcbiAgICByZXR1cm4gbmV3IFN0b3JhZ2VQYXJhbWV0ZXIoJ3N1cnBsdXNfY2hhcl9oYW5kbGluZycsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIGlmIHRoZSBmaWxlIGNvbnRhaW5zIGxlc3Mgb3IgbW9yZSB2YWx1ZXMgZm9yIGEgcm93IHRoYW4gdGhlIG51bWJlciBvZiBjb2x1bW5zIHNwZWNpZmllZCBpbiB0aGUgZXh0ZXJuYWwgdGFibGUgZGVmaW5pdGlvbi4gVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgYW4gdW5jb21wcmVzc2VkIHRleHQgZmlsZSBmb3JtYXQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbHVtbkNvdW50TWlzbWF0Y2hIYW5kbGluZyh2YWx1ZTogQ29sdW1uQ291bnRNaXNtYXRjaEhhbmRsaW5nQWN0aW9uKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdjb2x1bW5fY291bnRfbWlzbWF0Y2hfaGFuZGxpbmcnLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQSBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIG51bVJvd3MgdmFsdWUgZm9yIHRoZSB0YWJsZSBkZWZpbml0aW9uLiBUbyBleHBsaWNpdGx5IHVwZGF0ZSBhbiBleHRlcm5hbCB0YWJsZSdzIHN0YXRpc3RpY3MsIHNldCB0aGUgbnVtUm93cyBwcm9wZXJ0eSB0byBpbmRpY2F0ZSB0aGUgc2l6ZSBvZiB0aGUgdGFibGUuIEFtYXpvbiBSZWRzaGlmdCBkb2Vzbid0IGFuYWx5emUgZXh0ZXJuYWwgdGFibGVzIHRvIGdlbmVyYXRlIHRoZSB0YWJsZSBzdGF0aXN0aWNzIHRoYXQgdGhlIHF1ZXJ5IG9wdGltaXplciB1c2VzIHRvIGdlbmVyYXRlIGEgcXVlcnkgcGxhbi4gSWYgdGFibGUgc3RhdGlzdGljcyBhcmVuJ3Qgc2V0IGZvciBhbiBleHRlcm5hbCB0YWJsZSwgQW1hem9uIFJlZHNoaWZ0IGdlbmVyYXRlcyBhIHF1ZXJ5IGV4ZWN1dGlvbiBwbGFuIGJhc2VkIG9uIGFuIGFzc3VtcHRpb24gdGhhdCBleHRlcm5hbCB0YWJsZXMgYXJlIHRoZSBsYXJnZXIgdGFibGVzIGFuZCBsb2NhbCB0YWJsZXMgYXJlIHRoZSBzbWFsbGVyIHRhYmxlcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbnVtUm93cyh2YWx1ZTogbnVtYmVyKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdudW1fcm93cycsIHZhbHVlLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgdGhhdCBzZXRzIG51bWJlciBvZiByb3dzIHRvIHNraXAgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHNvdXJjZSBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzZXJpYWxpemF0aW9uTnVsbEZvcm1hdCh2YWx1ZTogc3RyaW5nKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdzZXJpYWxpemF0aW9uLm51bGwuZm9ybWF0JywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgdGhhdCBzZXRzIHRoZSBjb2x1bW4gbWFwcGluZyB0eXBlIGZvciB0YWJsZXMgdGhhdCB1c2UgT1JDIGRhdGEgZm9ybWF0LiBUaGlzIHByb3BlcnR5IGlzIGlnbm9yZWQgZm9yIG90aGVyIGRhdGEgZm9ybWF0cy4gSWYgdGhpcyBwcm9wZXJ0eSBpcyBvbWl0dGVkLCBjb2x1bW5zIGFyZSBtYXBwZWQgYnkgYE9yY0NvbHVtbk1hcHBpbmdUeXBlLk5BTUVgIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIEBkZWZhdWx0IE9yY0NvbHVtbk1hcHBpbmdUeXBlLk5BTUVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb3JjU2NoZW1hUmVzb2x1dGlvbih2YWx1ZTogT3JjQ29sdW1uTWFwcGluZ1R5cGUpOiBTdG9yYWdlUGFyYW1ldGVyIHtcbiAgICByZXR1cm4gbmV3IFN0b3JhZ2VQYXJhbWV0ZXIoJ29yYy5zY2hlbWEucmVzb2x1dGlvbicsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHByb3BlcnR5IHRoYXQgc2V0cyB3aGV0aGVyIENSRUFURSBFWFRFUk5BTCBUQUJMRSBBUyBzaG91bGQgd3JpdGUgZGF0YSBpbiBwYXJhbGxlbC4gV2hlbiAnd3JpdGUucGFyYWxsZWwnIGlzIHNldCB0byBvZmYsIENSRUFURSBFWFRFUk5BTCBUQUJMRSBBUyB3cml0ZXMgdG8gb25lIG9yIG1vcmUgZGF0YSBmaWxlcyBzZXJpYWxseSBvbnRvIEFtYXpvbiBTMy4gVGhpcyB0YWJsZSBwcm9wZXJ0eSBhbHNvIGFwcGxpZXMgdG8gYW55IHN1YnNlcXVlbnQgSU5TRVJUIHN0YXRlbWVudCBpbnRvIHRoZSBzYW1lIGV4dGVybmFsIHRhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBXcml0ZVBhcmFsbGVsLk9OXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdyaXRlUGFyYWxsZWwodmFsdWU6IFdyaXRlUGFyYWxsZWwpOiBTdG9yYWdlUGFyYW1ldGVyIHtcbiAgICByZXR1cm4gbmV3IFN0b3JhZ2VQYXJhbWV0ZXIoJ3dyaXRlLnBhcmFsbGVsJywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgdGhhdCBzZXRzIHRoZSBtYXhpbXVtIHNpemUgKGluIE1CKSBvZiBlYWNoIGZpbGUgd3JpdHRlbiB0byBBbWF6b24gUzMgYnkgQ1JFQVRFIEVYVEVSTkFMIFRBQkxFIEFTLiBUaGUgc2l6ZSBtdXN0IGJlIGEgdmFsaWQgaW50ZWdlciBiZXR3ZWVuIDUgYW5kIDYyMDAuIFRoZSBkZWZhdWx0IG1heGltdW0gZmlsZSBzaXplIGlzIDYsMjAwIE1CLiBUaGlzIHRhYmxlIHByb3BlcnR5IGFsc28gYXBwbGllcyB0byBhbnkgc3Vic2VxdWVudCBJTlNFUlQgc3RhdGVtZW50IGludG8gdGhlIHNhbWUgZXh0ZXJuYWwgdGFibGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdyaXRlTWF4RmlsZVNpemVNYih2YWx1ZTogbnVtYmVyKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCd3cml0ZS5tYXhmaWxlc2l6ZS5tYicsIHZhbHVlLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiAoU1NFLUtNUykgd2l0aCB0aGUgZ2l2ZW4gQVdTIEtNUyBrZXkgb24gdGhlXG4gICAqIGZpbGVzIFJlZHNoaWZ0IFNwZWN0cnVtIHdyaXRlcyBmb3IgdGhpcyB0YWJsZSAodmlhIGBDUkVBVEUgRVhURVJOQUwgVEFCTEUgQVNgXG4gICAqIG9yIGBJTlNFUlRgKS5cbiAgICpcbiAgICogUmVkc2hpZnQgU3BlY3RydW0gYWNjZXB0cyBlaXRoZXIgdGhlIGtleSdzIEFSTiBvciBpdHMgYmFyZSBrZXkgSUQgZm9yIHRoZVxuICAgKiBgd3JpdGUua21zLmtleS5pZGAgcHJvcGVydHksIGFuZCBlbmNyeXB0cyB0aGUgd3JpdHRlbiBvYmplY3RzIHdpdGggdGhhdCBrZXk7XG4gICAqIHRoaXMgcmVuZGVycyB0aGUgQVJOLiBUbyB1c2UgdGhlIFMzIGJ1Y2tldCdzIGRlZmF1bHQgS01TIGtleSBpbnN0ZWFkLCBzZXQgdGhlXG4gICAqIGxpdGVyYWwgdmFsdWUgYGF1dG9gIHZpYSBgU3RvcmFnZVBhcmFtZXRlci5jdXN0b20oJ3dyaXRlLmttcy5rZXkuaWQnLCAnYXV0bycpYCDigJRcbiAgICogdGhpcyB0eXBlZCBmYWN0b3J5IGNhbm5vdCBleHByZXNzIGBhdXRvYC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd3JpdGVLbXNLZXlJZChrZXk6IGttcy5JS2V5UmVmKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCd3cml0ZS5rbXMua2V5LmlkJywga2V5LmtleVJlZi5rZXlBcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgY3VzdG9tIHN0b3JhZ2UgcGFyYW1ldGVyLlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBvZiB0aGUgc3RvcmFnZSBwYXJhbWV0ZXIuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgc3RvcmFnZSBwYXJhbWV0ZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGN1c3RvbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcihrZXksIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkga2V5OiBzdHJpbmcsIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nKSB7fVxufVxuIl19
|
package/lib/table-base.d.ts
CHANGED
|
@@ -112,7 +112,7 @@ export interface TableBaseProps {
|
|
|
112
112
|
* @example
|
|
113
113
|
*
|
|
114
114
|
* declare const glueDatabase: glue.IDatabase;
|
|
115
|
-
* const table = new glue.
|
|
115
|
+
* const table = new glue.S3Table(this, 'Table', {
|
|
116
116
|
* storageParameters: [
|
|
117
117
|
* glue.StorageParameter.skipHeaderLineCount(1),
|
|
118
118
|
* glue.StorageParameter.compressionType(glue.CompressionType.GZIP),
|
|
@@ -143,6 +143,22 @@ export interface TableBaseProps {
|
|
|
143
143
|
readonly parameters?: {
|
|
144
144
|
[key: string]: string;
|
|
145
145
|
};
|
|
146
|
+
/**
|
|
147
|
+
* Whether the data stored in the table is encrypted.
|
|
148
|
+
*
|
|
149
|
+
* This sets the `has_encrypted_data` table parameter. Athena reads it when
|
|
150
|
+
* querying client-side (CSE-KMS) encrypted datasets; for server-side
|
|
151
|
+
* encrypted (SSE-S3 / SSE-KMS) or unencrypted data it has no effect, since
|
|
152
|
+
* Amazon S3 decrypts server-side encrypted objects transparently.
|
|
153
|
+
*
|
|
154
|
+
* Do not also set `has_encrypted_data` through `parameters` - use this
|
|
155
|
+
* property instead. A conflicting value in `parameters` is rejected.
|
|
156
|
+
*
|
|
157
|
+
* @see https://docs.aws.amazon.com/athena/latest/ug/creating-tables-based-on-encrypted-datasets-in-s3.html
|
|
158
|
+
*
|
|
159
|
+
* @default true
|
|
160
|
+
*/
|
|
161
|
+
readonly hasEncryptedData?: boolean;
|
|
146
162
|
/**
|
|
147
163
|
* Partition projection configuration for this table.
|
|
148
164
|
*
|
|
@@ -207,6 +223,11 @@ export declare abstract class TableBase extends Resource implements ITable {
|
|
|
207
223
|
protected readonly parameters: {
|
|
208
224
|
[key: string]: string;
|
|
209
225
|
};
|
|
226
|
+
/**
|
|
227
|
+
* Whether the data stored in the table is encrypted. Emitted as the
|
|
228
|
+
* `has_encrypted_data` table parameter.
|
|
229
|
+
*/
|
|
230
|
+
protected readonly hasEncryptedData: boolean;
|
|
210
231
|
/**
|
|
211
232
|
* Partition indexes must be created one at a time. To avoid
|
|
212
233
|
* race conditions, we store the resource and add dependencies
|
|
@@ -226,6 +247,18 @@ export declare abstract class TableBase extends Resource implements ITable {
|
|
|
226
247
|
*/
|
|
227
248
|
addPartitionIndex(index: PartitionIndex): void;
|
|
228
249
|
private generateIndexName;
|
|
250
|
+
/**
|
|
251
|
+
* Reconcile a `has_encrypted_data` value supplied through the free-form
|
|
252
|
+
* `parameters` map with the typed `hasEncryptedData` property.
|
|
253
|
+
*
|
|
254
|
+
* `has_encrypted_data` is managed by this construct and emitted authoritatively
|
|
255
|
+
* from `hasEncryptedData`. Supplying it through `parameters` as well is only
|
|
256
|
+
* tolerated when the value is identical; a differing (or unresolved) value is
|
|
257
|
+
* rejected so the two inputs can never silently disagree. On success the key is
|
|
258
|
+
* removed from the free-form map so the managed value is the single source of
|
|
259
|
+
* truth.
|
|
260
|
+
*/
|
|
261
|
+
private reconcileHasEncryptedData;
|
|
229
262
|
private validatePartitionIndex;
|
|
230
263
|
/**
|
|
231
264
|
* Validate partition projection configuration and merge generated parameters into this.parameters.
|