@aws-cdk/aws-gamelift-alpha 2.114.0-alpha.0 → 2.115.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 +299 -286
- package/.jsii.tabl.json.gz +0 -0
- package/lib/alias.d.ts +28 -28
- package/lib/alias.js +3 -3
- package/lib/build-fleet.d.ts +5 -5
- package/lib/build-fleet.js +2 -2
- package/lib/build.d.ts +54 -54
- package/lib/build.js +7 -7
- package/lib/content.d.ts +11 -11
- package/lib/content.js +13 -13
- package/lib/fleet-base.d.ts +87 -87
- package/lib/fleet-base.js +2 -2
- package/lib/game-server-group.d.ts +52 -52
- package/lib/game-server-group.js +9 -9
- package/lib/game-session-queue.d.ts +34 -34
- package/lib/game-session-queue.js +5 -5
- package/lib/ingress-rule.js +2 -2
- package/lib/matchmaking-configuration.d.ts +62 -62
- package/lib/matchmaking-configuration.js +2 -2
- package/lib/matchmaking-ruleset-body.d.ts +12 -12
- package/lib/matchmaking-ruleset-body.js +7 -7
- package/lib/matchmaking-ruleset.d.ts +25 -25
- package/lib/matchmaking-ruleset.js +7 -7
- package/lib/queued-matchmaking-configuration.d.ts +9 -9
- package/lib/queued-matchmaking-configuration.js +2 -2
- package/lib/script.d.ts +37 -37
- package/lib/script.js +5 -5
- package/lib/standalone-matchmaking-configuration.d.ts +4 -4
- package/lib/standalone-matchmaking-configuration.js +6 -6
- package/package.json +8 -8
package/lib/content.js
CHANGED
|
@@ -13,26 +13,26 @@ const cdk = require("aws-cdk-lib/core");
|
|
|
13
13
|
*/
|
|
14
14
|
class Content {
|
|
15
15
|
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
* Game content as an S3 object.
|
|
17
|
+
* @param bucket The S3 bucket
|
|
18
|
+
* @param key The object key
|
|
19
|
+
* @param objectVersion Optional S3 ob ject version
|
|
20
|
+
*/
|
|
21
21
|
static fromBucket(bucket, key, objectVersion) {
|
|
22
22
|
return new S3Content(bucket, key, objectVersion);
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
* Loads the game content from a local disk path.
|
|
26
|
+
*
|
|
27
|
+
* @param path Either a directory with the game content bundle or a .zip file
|
|
28
|
+
*/
|
|
29
29
|
static fromAsset(path, options) {
|
|
30
30
|
return new AssetContent(path, options);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
exports.Content = Content;
|
|
34
34
|
_a = JSII_RTTI_SYMBOL_1;
|
|
35
|
-
Content[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.Content", version: "2.
|
|
35
|
+
Content[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.Content", version: "2.115.0-alpha.0" };
|
|
36
36
|
/**
|
|
37
37
|
* Game content from an S3 archive.
|
|
38
38
|
*/
|
|
@@ -64,7 +64,7 @@ class S3Content extends Content {
|
|
|
64
64
|
}
|
|
65
65
|
exports.S3Content = S3Content;
|
|
66
66
|
_b = JSII_RTTI_SYMBOL_1;
|
|
67
|
-
S3Content[_b] = { fqn: "@aws-cdk/aws-gamelift-alpha.S3Content", version: "2.
|
|
67
|
+
S3Content[_b] = { fqn: "@aws-cdk/aws-gamelift-alpha.S3Content", version: "2.115.0-alpha.0" };
|
|
68
68
|
/**
|
|
69
69
|
* Game content from a local directory.
|
|
70
70
|
*/
|
|
@@ -109,5 +109,5 @@ class AssetContent extends Content {
|
|
|
109
109
|
}
|
|
110
110
|
exports.AssetContent = AssetContent;
|
|
111
111
|
_c = JSII_RTTI_SYMBOL_1;
|
|
112
|
-
AssetContent[_c] = { fqn: "@aws-cdk/aws-gamelift-alpha.AssetContent", version: "2.
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
112
|
+
AssetContent[_c] = { fqn: "@aws-cdk/aws-gamelift-alpha.AssetContent", version: "2.115.0-alpha.0" };
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQ0FBMkM7QUFDM0MseUNBQXlDO0FBQ3pDLHVEQUF1RDtBQUN2RCx3Q0FBd0M7QUFHeEM7OztHQUdHO0FBQ0gsTUFBc0IsT0FBTztJQUMzQjs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBa0IsRUFBRSxHQUFXLEVBQUUsYUFBc0I7UUFDOUUsT0FBTyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0tBQ2xEO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBWSxFQUFFLE9BQWdDO1FBQ3BFLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3hDOztBQWxCSCwwQkF3QkM7OztBQVlEOztHQUVHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsT0FBTztJQUNwQyxZQUE2QixNQUFrQixFQUFVLEdBQVcsRUFBVSxhQUFzQjtRQUNsRyxLQUFLLEVBQUUsQ0FBQztRQURtQixXQUFNLEdBQU4sTUFBTSxDQUFZO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFTO1FBRWxHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztTQUNwRTtLQUNGO0lBRU0sSUFBSSxDQUFDLE1BQWlCLEVBQUUsSUFBZTtRQUM1QywrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUNoRCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ3hCLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRCxPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUscUJBQXFCLENBQUM7U0FDakQsQ0FBQyxDQUFDLENBQUM7UUFFSixPQUFPO1lBQ0wsVUFBVSxFQUFFO2dCQUNWLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVU7Z0JBQ2xDLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDbkIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO2FBQ2xDO1NBQ0YsQ0FBQztLQUNIOztBQXZCSCw4QkF3QkM7OztBQUVEOztHQUVHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsT0FBTztJQUd2Qzs7T0FFRztJQUNILFlBQTRCLElBQVksRUFBbUIsVUFBa0MsRUFBRztRQUM5RixLQUFLLEVBQUUsQ0FBQztRQURrQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQW1CLFlBQU8sR0FBUCxPQUFPLENBQThCO0tBRS9GO0lBRU0sSUFBSSxDQUFDLEtBQWdCLEVBQUUsSUFBZTtRQUMzQyx3RkFBd0Y7UUFDeEYsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUNqRCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsR0FBRyxJQUFJLENBQUMsT0FBTzthQUNoQixDQUFDLENBQUM7U0FDSjthQUFNLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNELE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEtBQUs7Z0JBQ3hHLGdEQUFnRCxDQUFDLENBQUM7U0FDckQ7UUFDRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFdkYsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDaEQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztZQUN4QixTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDekQsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLHFCQUFxQixDQUFDO1NBQ2pELENBQUMsQ0FBQyxDQUFDO1FBRUosSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQzVFO1FBRUQsT0FBTztZQUNMLFVBQVUsRUFBRTtnQkFDVixVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZO2dCQUNuQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXO2FBQ2xDO1NBQ0YsQ0FBQztLQUNIOztBQXhDSCxvQ0F5Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgczNfYXNzZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMy1hc3NldHMnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogQmVmb3JlIGRlcGxveWluZyB5b3VyIEdhbWVMaWZ0LWVuYWJsZWQgbXVsdGlwbGF5ZXIgZ2FtZSBzZXJ2ZXJzIGZvciBob3N0aW5nIHdpdGggdGhlIEdhbWVMaWZ0IHNlcnZpY2UsIHlvdSBuZWVkIHRvIHVwbG9hZCB5b3VyIGdhbWUgc2VydmVyIGZpbGVzLlxuICogVGhlIGNsYXNzIGhlbHBzIHlvdSBvbiBwcmVwYXJpbmcgYW5kIHVwbG9hZGluZyBjdXN0b20gZ2FtZSBzZXJ2ZXIgYnVpbGQgZmlsZXMgb3IgUmVhbHRpbWUgU2VydmVycyBzZXJ2ZXIgc2NyaXB0IGZpbGVzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29udGVudCB7XG4gIC8qKlxuICAgKiBHYW1lIGNvbnRlbnQgYXMgYW4gUzMgb2JqZWN0LlxuICAgKiBAcGFyYW0gYnVja2V0IFRoZSBTMyBidWNrZXRcbiAgICogQHBhcmFtIGtleSBUaGUgb2JqZWN0IGtleVxuICAgKiBAcGFyYW0gb2JqZWN0VmVyc2lvbiBPcHRpb25hbCBTMyBvYiBqZWN0IHZlcnNpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUJ1Y2tldChidWNrZXQ6IHMzLklCdWNrZXQsIGtleTogc3RyaW5nLCBvYmplY3RWZXJzaW9uPzogc3RyaW5nKTogUzNDb250ZW50IHtcbiAgICByZXR1cm4gbmV3IFMzQ29udGVudChidWNrZXQsIGtleSwgb2JqZWN0VmVyc2lvbik7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIGdhbWUgY29udGVudCBmcm9tIGEgbG9jYWwgZGlzayBwYXRoLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCBFaXRoZXIgYSBkaXJlY3Rvcnkgd2l0aCB0aGUgZ2FtZSBjb250ZW50IGJ1bmRsZSBvciBhIC56aXAgZmlsZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQXNzZXQocGF0aDogc3RyaW5nLCBvcHRpb25zPzogczNfYXNzZXRzLkFzc2V0T3B0aW9ucyk6IEFzc2V0Q29udGVudCB7XG4gICAgcmV0dXJuIG5ldyBBc3NldENvbnRlbnQocGF0aCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIEJ1aWxkIGlzIGluaXRpYWxpemVkIHRvIGFsbG93IHRoaXMgb2JqZWN0IHRvIGJpbmRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBiaW5kKHNjb3BlOiBDb25zdHJ1Y3QsIHJvbGU6IGlhbS5JUm9sZSk6IENvbnRlbnRDb25maWc7XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIGJpbmRpbmcgYENvbnRlbnRgIGludG8gYSBgQnVpbGRgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRDb25maWcge1xuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSBjb250ZW50IGluIFMzLlxuICAgKi9cbiAgcmVhZG9ubHkgczNMb2NhdGlvbjogczMuTG9jYXRpb247XG59XG5cbi8qKlxuICogR2FtZSBjb250ZW50IGZyb20gYW4gUzMgYXJjaGl2ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFMzQ29udGVudCBleHRlbmRzIENvbnRlbnQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGJ1Y2tldDogczMuSUJ1Y2tldCwgcHJpdmF0ZSBrZXk6IHN0cmluZywgcHJpdmF0ZSBvYmplY3RWZXJzaW9uPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICBpZiAoIWJ1Y2tldC5idWNrZXROYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2J1Y2tldE5hbWUgaXMgdW5kZWZpbmVkIGZvciB0aGUgcHJvdmlkZWQgYnVja2V0Jyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGJpbmQoX3Njb3BlOiBDb25zdHJ1Y3QsIHJvbGU6IGlhbS5JUm9sZSk6IENvbnRlbnRDb25maWcge1xuICAgIC8vIEFkZGluZyBwZXJtaXNzaW9uIHRvIGFjY2VzcyBzcGVjaWZpYyBjb250ZW50XG4gICAgcm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICByZXNvdXJjZXM6IFt0aGlzLmJ1Y2tldC5hcm5Gb3JPYmplY3RzKHRoaXMua2V5KV0sXG4gICAgICBhY3Rpb25zOiBbJ3MzOkdldE9iamVjdCcsICdzMzpHZXRPYmplY3RWZXJzaW9uJ10sXG4gICAgfSkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHMzTG9jYXRpb246IHtcbiAgICAgICAgYnVja2V0TmFtZTogdGhpcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgb2JqZWN0S2V5OiB0aGlzLmtleSxcbiAgICAgICAgb2JqZWN0VmVyc2lvbjogdGhpcy5vYmplY3RWZXJzaW9uLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogR2FtZSBjb250ZW50IGZyb20gYSBsb2NhbCBkaXJlY3RvcnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBBc3NldENvbnRlbnQgZXh0ZW5kcyBDb250ZW50IHtcbiAgcHJpdmF0ZSBhc3NldD86IHMzX2Fzc2V0cy5Bc3NldDtcblxuICAvKipcbiAgICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdGhlIGFzc2V0IGZpbGUgb3IgZGlyZWN0b3J5LlxuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHBhdGg6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBzM19hc3NldHMuQXNzZXRPcHRpb25zID0geyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKHNjb3BlOiBDb25zdHJ1Y3QsIHJvbGU6IGlhbS5JUm9sZSk6IENvbnRlbnRDb25maWcge1xuICAgIC8vIElmIHRoZSBzYW1lIEFzc2V0Q29udGVudCBpcyB1c2VkIG11bHRpcGxlIHRpbWVzLCByZXRhaW4gb25seSB0aGUgZmlyc3QgaW5zdGFudGlhdGlvbi5cbiAgICBpZiAoIXRoaXMuYXNzZXQpIHtcbiAgICAgIHRoaXMuYXNzZXQgPSBuZXcgczNfYXNzZXRzLkFzc2V0KHNjb3BlLCAnQ29udGVudCcsIHtcbiAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGNkay5TdGFjay5vZih0aGlzLmFzc2V0KSAhPT0gY2RrLlN0YWNrLm9mKHNjb3BlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NldCBpcyBhbHJlYWR5IGFzc29jaWF0ZWQgd2l0aCBhbm90aGVyIHN0YWNrICcke2Nkay5TdGFjay5vZih0aGlzLmFzc2V0KS5zdGFja05hbWV9Jy4gYCArXG4gICAgICAgICdDcmVhdGUgYSBuZXcgQ29udGVudCBpbnN0YW5jZSBmb3IgZXZlcnkgc3RhY2suJyk7XG4gICAgfVxuICAgIGNvbnN0IGJ1Y2tldCA9IHMzLkJ1Y2tldC5mcm9tQnVja2V0TmFtZShzY29wZSwgJ0Fzc2V0QnVja2V0JywgdGhpcy5hc3NldC5zM0J1Y2tldE5hbWUpO1xuXG4gICAgLy8gQWRkaW5nIHBlcm1pc3Npb24gdG8gYWNjZXNzIHNwZWNpZmljIGNvbnRlbnRcbiAgICByb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgIHJlc291cmNlczogW2J1Y2tldC5hcm5Gb3JPYmplY3RzKHRoaXMuYXNzZXQuczNPYmplY3RLZXkpXSxcbiAgICAgIGFjdGlvbnM6IFsnczM6R2V0T2JqZWN0JywgJ3MzOkdldE9iamVjdFZlcnNpb24nXSxcbiAgICB9KSk7XG5cbiAgICBpZiAoIXRoaXMuYXNzZXQuaXNaaXBBcmNoaXZlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2V0IG11c3QgYmUgYSAuemlwIGZpbGUgb3IgYSBkaXJlY3RvcnkgKCR7dGhpcy5wYXRofSlgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgczNMb2NhdGlvbjoge1xuICAgICAgICBidWNrZXROYW1lOiB0aGlzLmFzc2V0LnMzQnVja2V0TmFtZSxcbiAgICAgICAgb2JqZWN0S2V5OiB0aGlzLmFzc2V0LnMzT2JqZWN0S2V5LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
package/lib/fleet-base.d.ts
CHANGED
|
@@ -12,39 +12,39 @@ import { CfnFleet } from 'aws-cdk-lib/aws-gamelift';
|
|
|
12
12
|
*/
|
|
13
13
|
export interface LocationCapacity {
|
|
14
14
|
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
* The number of Amazon EC2 instances you want to maintain in the specified fleet location.
|
|
16
|
+
* This value must fall between the minimum and maximum size limits.
|
|
17
|
+
*
|
|
18
|
+
* @default the default value is 0
|
|
19
|
+
*/
|
|
20
20
|
readonly desiredCapacity?: number;
|
|
21
21
|
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
* The maximum number of instances that are allowed in the specified fleet location.
|
|
23
|
+
*
|
|
24
|
+
* @default the default value is 1
|
|
25
|
+
*/
|
|
26
26
|
readonly maxSize?: number;
|
|
27
27
|
/**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
* The minimum number of instances that are allowed in the specified fleet location.
|
|
29
|
+
*
|
|
30
|
+
* @default the default value is 0
|
|
31
|
+
*/
|
|
32
32
|
readonly minSize?: number;
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
* A remote location where a multi-location fleet can deploy EC2 instances for game hosting.
|
|
36
|
+
*/
|
|
37
37
|
export interface Location {
|
|
38
38
|
/**
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
* An AWS Region code
|
|
40
|
+
*/
|
|
41
41
|
readonly region: string;
|
|
42
42
|
/**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
* Current resource capacity settings in a specified fleet or location.
|
|
44
|
+
* The location value might refer to a fleet's remote location or its home Region.
|
|
45
|
+
*
|
|
46
|
+
* @default no capacity settings on the specified location
|
|
47
|
+
*/
|
|
48
48
|
readonly capacity?: LocationCapacity;
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
@@ -52,57 +52,57 @@ export interface Location {
|
|
|
52
52
|
*/
|
|
53
53
|
export interface ServerProcess {
|
|
54
54
|
/**
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
* The number of server processes using this configuration that run concurrently on each instance.
|
|
56
|
+
* Minimum is `1`
|
|
57
|
+
*
|
|
58
|
+
* @default 1
|
|
59
|
+
*/
|
|
60
60
|
readonly concurrentExecutions?: number;
|
|
61
61
|
/**
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
* The location of a game build executable or the Realtime script file that contains the Init() function. Game builds and Realtime scripts are installed on instances at the root:
|
|
63
|
+
* - Windows (custom game builds only): `C:\game`. Example: `C:\game\MyGame\server.exe`
|
|
64
|
+
* - Linux: `/local/game`. Examples: `/local/game/MyGame/server.exe` or `/local/game/MyRealtimeScript.js`
|
|
65
|
+
*/
|
|
66
66
|
readonly launchPath: string;
|
|
67
67
|
/**
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
* An optional list of parameters to pass to the server executable or Realtime script on launch.
|
|
69
|
+
*
|
|
70
|
+
* @default no parameters
|
|
71
|
+
*/
|
|
72
72
|
readonly parameters?: string;
|
|
73
73
|
}
|
|
74
74
|
/**
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
75
|
+
* A collection of server process configurations that describe the set of processes to run on each instance in a fleet.
|
|
76
|
+
* Server processes run either an executable in a custom game build or a Realtime Servers script.
|
|
77
|
+
* GameLift launches the configured processes, manages their life cycle, and replaces them as needed.
|
|
78
|
+
* Each instance checks regularly for an updated runtime configuration.
|
|
79
|
+
*
|
|
80
|
+
* A GameLift instance is limited to 50 processes running concurrently.
|
|
81
|
+
* To calculate the total number of processes in a runtime configuration, add the values of the `ConcurrentExecutions` parameter for each `ServerProcess`.
|
|
82
|
+
*
|
|
83
|
+
* @see https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-multiprocess.html
|
|
84
|
+
*/
|
|
85
85
|
export interface RuntimeConfiguration {
|
|
86
86
|
/**
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
87
|
+
* The maximum amount of time allowed to launch a new game session and have it report ready to host players.
|
|
88
|
+
* During this time, the game session is in status `ACTIVATING`.
|
|
89
|
+
*
|
|
90
|
+
* If the game session does not become active before the timeout, it is ended and the game session status is changed to `TERMINATED`.
|
|
91
|
+
*
|
|
92
|
+
* @default by default game session activation timeout is 300 seconds
|
|
93
|
+
*/
|
|
94
94
|
readonly gameSessionActivationTimeout?: cdk.Duration;
|
|
95
95
|
/**
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
96
|
+
* The number of game sessions in status `ACTIVATING` to allow on an instance.
|
|
97
|
+
*
|
|
98
|
+
* This setting limits the instance resources that can be used for new game activations at any one time.
|
|
99
|
+
*
|
|
100
|
+
* @default no limit
|
|
101
|
+
*/
|
|
102
102
|
readonly maxConcurrentGameSessionActivations?: number;
|
|
103
103
|
/**
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
* A collection of server process configurations that identify what server processes to run on each instance in a fleet.
|
|
105
|
+
*/
|
|
106
106
|
readonly serverProcesses: ServerProcess[];
|
|
107
107
|
}
|
|
108
108
|
/**
|
|
@@ -116,16 +116,16 @@ export interface RuntimeConfiguration {
|
|
|
116
116
|
*/
|
|
117
117
|
export interface ResourceCreationLimitPolicy {
|
|
118
118
|
/**
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
119
|
+
* The maximum number of game sessions that an individual can create during the policy period.
|
|
120
|
+
*
|
|
121
|
+
* @default no limit on the number of game sessions that an individual can create during the policy period
|
|
122
|
+
*/
|
|
123
123
|
readonly newGameSessionsPerCreator?: number;
|
|
124
124
|
/**
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
125
|
+
* The time span used in evaluating the resource creation limit policy.
|
|
126
|
+
*
|
|
127
|
+
* @default no policy period
|
|
128
|
+
*/
|
|
129
129
|
readonly policyPeriod?: cdk.Duration;
|
|
130
130
|
}
|
|
131
131
|
/**
|
|
@@ -200,8 +200,8 @@ export interface IFleet extends cdk.IResource, iam.IGrantable, IGameSessionQueue
|
|
|
200
200
|
*/
|
|
201
201
|
export interface FleetProps {
|
|
202
202
|
/**
|
|
203
|
-
|
|
204
|
-
|
|
203
|
+
* A descriptive label that is associated with a fleet. Fleet names do not need to be unique.
|
|
204
|
+
*/
|
|
205
205
|
readonly fleetName: string;
|
|
206
206
|
/**
|
|
207
207
|
* A human-readable description of the fleet.
|
|
@@ -235,17 +235,17 @@ export interface FleetProps {
|
|
|
235
235
|
*/
|
|
236
236
|
readonly useCertificate?: boolean;
|
|
237
237
|
/**
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
238
|
+
* The IAM role assumed by GameLift fleet instances to access AWS ressources.
|
|
239
|
+
* With a role set, any application that runs on an instance in this fleet can assume the role, including install scripts, server processes, and daemons (background processes).
|
|
240
|
+
* If providing a custom role, it needs to trust the GameLift service principal (gamelift.amazonaws.com).
|
|
241
|
+
* No permission is required by default.
|
|
242
|
+
*
|
|
243
|
+
* This property cannot be changed after the fleet is created.
|
|
244
|
+
*
|
|
245
|
+
* @see https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-resources.html
|
|
246
|
+
*
|
|
247
|
+
* @default - a role will be created with default trust to Gamelift service principal.
|
|
248
|
+
*/
|
|
249
249
|
readonly role?: iam.IRole;
|
|
250
250
|
/**
|
|
251
251
|
* A VPC peering connection between your GameLift-hosted game servers and your other non-GameLift resources.
|
|
@@ -337,12 +337,12 @@ export interface FleetProps {
|
|
|
337
337
|
*/
|
|
338
338
|
export interface FleetAttributes {
|
|
339
339
|
/**
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
340
|
+
* The ARN of the fleet
|
|
341
|
+
*
|
|
342
|
+
* At least one of `fleetArn` and `fleetId` must be provided.
|
|
343
|
+
*
|
|
344
|
+
* @default derived from `fleetId`.
|
|
345
|
+
*/
|
|
346
346
|
readonly fleetArn?: string;
|
|
347
347
|
/**
|
|
348
348
|
* The identifier of the fleet
|
package/lib/fleet-base.js
CHANGED
|
@@ -271,5 +271,5 @@ class FleetBase extends cdk.Resource {
|
|
|
271
271
|
}
|
|
272
272
|
exports.FleetBase = FleetBase;
|
|
273
273
|
_a = JSII_RTTI_SYMBOL_1;
|
|
274
|
-
FleetBase[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.FleetBase", version: "2.
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxlZXQtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImZsZWV0LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEseURBQXlEO0FBRXpELDJDQUEyQztBQUMzQyx3Q0FBd0M7QUFFeEMsbUNBQThDO0FBRTlDLHNIQUFpRztBQXlZakc7O0dBRUc7QUFDSCxNQUFzQixTQUFVLFNBQVEsR0FBRyxDQUFDLFFBQVE7SUFBcEQ7O1FBbURtQixjQUFTLEdBQWUsRUFBRSxDQUFDO0tBaU03QztJQWxQQzs7T0FFRztJQUNILE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjs7Ozs7Ozs7OztRQUM3RSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO1NBQ25GO1FBQ0QsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU87WUFDM0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUVoRyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7U0FDMUU7UUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUMvRCxPQUFPLEVBQUUsVUFBVTtZQUNuQixRQUFRLEVBQUUsT0FBTztZQUNqQixZQUFZLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDM0IsU0FBUyxFQUFFLEdBQUcsQ0FBQyxT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O1lBQ2xFLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBQ0QsT0FBTztZQUNMLG1DQUFtQyxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyw0QkFBNEIsRUFBRSxTQUFTLEVBQUU7WUFDekcsbUNBQW1DLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUFDLG1DQUFtQztZQUNuRyxlQUFlLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUM7U0FDcEYsQ0FBQztRQUVGLFNBQVMsa0JBQWtCLENBQUMsYUFBNEI7WUFDdEQsT0FBTztnQkFDTCxVQUFVLEVBQUUsYUFBYSxDQUFDLFVBQVU7Z0JBQ3BDLFVBQVUsRUFBRSxhQUFhLENBQUMsVUFBVTtnQkFDcEMsb0JBQW9CLEVBQUUsYUFBYSxDQUFDLG9CQUFvQixJQUFJLENBQUM7YUFDOUQsQ0FBQztRQUNKLENBQUM7S0FDRjtJQUVTLDRCQUE0QixDQUFDLEtBQWdCO1FBQ3JELEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQywrQ0FBK0MsRUFBRTtZQUN0RiwwSkFBMEo7WUFDMUosNEVBQTRFO1lBQzVFLGtGQUFrRjtTQUNuRixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ2Y7O0FBblBILDhCQW9QQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNsb3Vkd2F0Y2ggZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBbGlhcywgQWxpYXNPcHRpb25zIH0gZnJvbSAnLi9hbGlhcyc7XG5pbXBvcnQgeyBJR2FtZVNlc3Npb25RdWV1ZURlc3RpbmF0aW9uIH0gZnJvbSAnLi9nYW1lLXNlc3Npb24tcXVldWUnO1xuaW1wb3J0IHsgR2FtZUxpZnRNZXRyaWNzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWdhbWVsaWZ0L2xpYi9nYW1lbGlmdC1jYW5uZWQtbWV0cmljcy5nZW5lcmF0ZWQnO1xuaW1wb3J0IHsgQ2ZuRmxlZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2FtZWxpZnQnO1xuXG4vKipcbiAqIEN1cnJlbnQgcmVzb3VyY2UgY2FwYWNpdHkgc2V0dGluZ3MgaW4gYSBzcGVjaWZpZWQgZmxlZXQgb3IgbG9jYXRpb24uXG4gKiBUaGUgbG9jYXRpb24gdmFsdWUgbWlnaHQgcmVmZXIgdG8gYSBmbGVldCdzIHJlbW90ZSBsb2NhdGlvbiBvciBpdHMgaG9tZSBSZWdpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb25DYXBhY2l0eSB7XG4gIC8qKlxuICAgICAgICogVGhlIG51bWJlciBvZiBBbWF6b24gRUMyIGluc3RhbmNlcyB5b3Ugd2FudCB0byBtYWludGFpbiBpbiB0aGUgc3BlY2lmaWVkIGZsZWV0IGxvY2F0aW9uLlxuICAgICAgICogVGhpcyB2YWx1ZSBtdXN0IGZhbGwgYmV0d2VlbiB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBzaXplIGxpbWl0cy5cbiAgICAgICAqXG4gICAgICAgKiBAZGVmYXVsdCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyAwXG4gICAgICAgKi9cbiAgcmVhZG9ubHkgZGVzaXJlZENhcGFjaXR5PzogbnVtYmVyO1xuICAvKipcbiAgICAgICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbnN0YW5jZXMgdGhhdCBhcmUgYWxsb3dlZCBpbiB0aGUgc3BlY2lmaWVkIGZsZWV0IGxvY2F0aW9uLlxuICAgICAgICpcbiAgICAgICAqIEBkZWZhdWx0IHRoZSBkZWZhdWx0IHZhbHVlIGlzIDFcbiAgICAgICAqL1xuICByZWFkb25seSBtYXhTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICAgICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBpbnN0YW5jZXMgdGhhdCBhcmUgYWxsb3dlZCBpbiB0aGUgc3BlY2lmaWVkIGZsZWV0IGxvY2F0aW9uLlxuICAgICAgICpcbiAgICAgICAqIEBkZWZhdWx0IHRoZSBkZWZhdWx0IHZhbHVlIGlzIDBcbiAgICAgICAqL1xuICByZWFkb25seSBtaW5TaXplPzogbnVtYmVyO1xufVxuXG4vKipcbiAgICogQSByZW1vdGUgbG9jYXRpb24gd2hlcmUgYSBtdWx0aS1sb2NhdGlvbiBmbGVldCBjYW4gZGVwbG95IEVDMiBpbnN0YW5jZXMgZm9yIGdhbWUgaG9zdGluZy5cbiAgICovXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uIHtcbiAgLyoqXG4gICAgICAgKiBBbiBBV1MgUmVnaW9uIGNvZGVcbiAgICAgICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcbiAgLyoqXG4gICAgICogQ3VycmVudCByZXNvdXJjZSBjYXBhY2l0eSBzZXR0aW5ncyBpbiBhIHNwZWNpZmllZCBmbGVldCBvciBsb2NhdGlvbi5cbiAgICAgKiBUaGUgbG9jYXRpb24gdmFsdWUgbWlnaHQgcmVmZXIgdG8gYSBmbGVldCdzIHJlbW90ZSBsb2NhdGlvbiBvciBpdHMgaG9tZSBSZWdpb24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBubyBjYXBhY2l0eSBzZXR0aW5ncyBvbiB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uXG4gICAgICovXG4gIHJlYWRvbmx5IGNhcGFjaXR5PzogTG9jYXRpb25DYXBhY2l0eTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9mIGEgZmxlZXQgc2VydmVyIHByb2Nlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJQcm9jZXNzIHtcbiAgLyoqXG4gICAgICAgKiBUaGUgbnVtYmVyIG9mIHNlcnZlciBwcm9jZXNzZXMgdXNpbmcgdGhpcyBjb25maWd1cmF0aW9uIHRoYXQgcnVuIGNvbmN1cnJlbnRseSBvbiBlYWNoIGluc3RhbmNlLlxuICAgICAgICogTWluaW11bSBpcyBgMWBcbiAgICAgICAqXG4gICAgICAgKiBAZGVmYXVsdCAxXG4gICAgICAgKi9cbiAgcmVhZG9ubHkgY29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG4gIC8qKlxuICAgICAgICogVGhlIGxvY2F0aW9uIG9mIGEgZ2FtZSBidWlsZCBleGVjdXRhYmxlIG9yIHRoZSBSZWFsdGltZSBzY3JpcHQgZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSBJbml0KCkgZnVuY3Rpb24uIEdhbWUgYnVpbGRzIGFuZCBSZWFsdGltZSBzY3JpcHRzIGFyZSBpbnN0YWxsZWQgb24gaW5zdGFuY2VzIGF0IHRoZSByb290OlxuICAgICAgICogLSBXaW5kb3dzIChjdXN0b20gZ2FtZSBidWlsZHMgb25seSk6IGBDOlxcZ2FtZWAuIEV4YW1wbGU6IGBDOlxcZ2FtZVxcTXlHYW1lXFxzZXJ2ZXIuZXhlYFxuICAgICAgICogLSBMaW51eDogYC9sb2NhbC9nYW1lYC4gRXhhbXBsZXM6IGAvbG9jYWwvZ2FtZS9NeUdhbWUvc2VydmVyLmV4ZWAgb3IgYC9sb2NhbC9nYW1lL015UmVhbHRpbWVTY3JpcHQuanNgXG4gICAgICAgKi9cbiAgcmVhZG9ubHkgbGF1bmNoUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgICAgICogQW4gb3B0aW9uYWwgbGlzdCBvZiBwYXJhbWV0ZXJzIHRvIHBhc3MgdG8gdGhlIHNlcnZlciBleGVjdXRhYmxlIG9yIFJlYWx0aW1lIHNjcmlwdCBvbiBsYXVuY2guXG4gICAgICAgKlxuICAgICAgICogQGRlZmF1bHQgbm8gcGFyYW1ldGVyc1xuICAgICAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM/OiBzdHJpbmc7XG59XG5cbi8qKlxuICAgKiBBIGNvbGxlY3Rpb24gb2Ygc2VydmVyIHByb2Nlc3MgY29uZmlndXJhdGlvbnMgdGhhdCBkZXNjcmliZSB0aGUgc2V0IG9mIHByb2Nlc3NlcyB0byBydW4gb24gZWFjaCBpbnN0YW5jZSBpbiBhIGZsZWV0LlxuICAgKiBTZXJ2ZXIgcHJvY2Vzc2VzIHJ1biBlaXRoZXIgYW4gZXhlY3V0YWJsZSBpbiBhIGN1c3RvbSBnYW1lIGJ1aWxkIG9yIGEgUmVhbHRpbWUgU2VydmVycyBzY3JpcHQuXG4gICAqIEdhbWVMaWZ0IGxhdW5jaGVzIHRoZSBjb25maWd1cmVkIHByb2Nlc3NlcywgbWFuYWdlcyB0aGVpciBsaWZlIGN5Y2xlLCBhbmQgcmVwbGFjZXMgdGhlbSBhcyBuZWVkZWQuXG4gICAqIEVhY2ggaW5zdGFuY2UgY2hlY2tzIHJlZ3VsYXJseSBmb3IgYW4gdXBkYXRlZCBydW50aW1lIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEEgR2FtZUxpZnQgaW5zdGFuY2UgaXMgbGltaXRlZCB0byA1MCBwcm9jZXNzZXMgcnVubmluZyBjb25jdXJyZW50bHkuXG4gICAqIFRvIGNhbGN1bGF0ZSB0aGUgdG90YWwgbnVtYmVyIG9mIHByb2Nlc3NlcyBpbiBhIHJ1bnRpbWUgY29uZmlndXJhdGlvbiwgYWRkIHRoZSB2YWx1ZXMgb2YgdGhlIGBDb25jdXJyZW50RXhlY3V0aW9uc2AgcGFyYW1ldGVyIGZvciBlYWNoIGBTZXJ2ZXJQcm9jZXNzYC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2FtZWxpZnQvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2ZsZWV0cy1tdWx0aXByb2Nlc3MuaHRtbFxuICAgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVudGltZUNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICAgICAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIGFsbG93ZWQgdG8gbGF1bmNoIGEgbmV3IGdhbWUgc2Vzc2lvbiBhbmQgaGF2ZSBpdCByZXBvcnQgcmVhZHkgdG8gaG9zdCBwbGF5ZXJzLlxuICAgICAgICogRHVyaW5nIHRoaXMgdGltZSwgdGhlIGdhbWUgc2Vzc2lvbiBpcyBpbiBzdGF0dXMgYEFDVElWQVRJTkdgLlxuICAgICAgICpcbiAgICAgICAqIElmIHRoZSBnYW1lIHNlc3Npb24gZG9lcyBub3QgYmVjb21lIGFjdGl2ZSBiZWZvcmUgdGhlIHRpbWVvdXQsIGl0IGlzIGVuZGVkIGFuZCB0aGUgZ2FtZSBzZXNzaW9uIHN0YXR1cyBpcyBjaGFuZ2VkIHRvIGBURVJNSU5BVEVEYC5cbiAgICAgICAqXG4gICAgICAgKiBAZGVmYXVsdCBieSBkZWZhdWx0IGdhbWUgc2Vzc2lvbiBhY3RpdmF0aW9uIHRpbWVvdXQgaXMgMzAwIHNlY29uZHNcbiAgICAgICAqL1xuICByZWFkb25seSBnYW1lU2Vzc2lvbkFjdGl2YXRpb25UaW1lb3V0PzogY2RrLkR1cmF0aW9uO1xuICAvKipcbiAgICAgICAqIFRoZSBudW1iZXIgb2YgZ2FtZSBzZXNzaW9ucyBpbiBzdGF0dXMgYEFDVElWQVRJTkdgIHRvIGFsbG93IG9uIGFuIGluc3RhbmNlLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgc2V0dGluZyBsaW1pdHMgdGhlIGluc3RhbmNlIHJlc291cmNlcyB0aGF0IGNhbiBiZSB1c2VkIGZvciBuZXcgZ2FtZSBhY3RpdmF0aW9ucyBhdCBhbnkgb25lIHRpbWUuXG4gICAgICAgKlxuICAgICAgICogQGRlZmF1bHQgbm8gbGltaXRcbiAgICAgICAqL1xuICByZWFkb25seSBtYXhDb25jdXJyZW50R2FtZVNlc3Npb25BY3RpdmF0aW9ucz86IG51bWJlcjtcblxuICAvKipcbiAgICAgICAqIEEgY29sbGVjdGlvbiBvZiBzZXJ2ZXIgcHJvY2VzcyBjb25maWd1cmF0aW9ucyB0aGF0IGlkZW50aWZ5IHdoYXQgc2VydmVyIHByb2Nlc3NlcyB0byBydW4gb24gZWFjaCBpbnN0YW5jZSBpbiBhIGZsZWV0LlxuICAgICAgICovXG4gIHJlYWRvbmx5IHNlcnZlclByb2Nlc3NlczogU2VydmVyUHJvY2Vzc1tdO1xufVxuXG4vKipcbiAqIEEgcG9saWN5IHRoYXQgbGltaXRzIHRoZSBudW1iZXIgb2YgZ2FtZSBzZXNzaW9ucyBhIHBsYXllciBjYW4gY3JlYXRlIG9uIHRoZSBzYW1lIGZsZWV0LlxuICogVGhpcyBvcHRpb25hbCBwb2xpY3kgZ2l2ZXMgZ2FtZSBvd25lcnMgY29udHJvbCBvdmVyIGhvdyBwbGF5ZXJzIGNhbiBjb25zdW1lIGF2YWlsYWJsZSBnYW1lIHNlcnZlciByZXNvdXJjZXMuXG4gKiBBIHJlc291cmNlIGNyZWF0aW9uIHBvbGljeSBtYWtlcyB0aGUgZm9sbG93aW5nIHN0YXRlbWVudDogXCJBbiBpbmRpdmlkdWFsIHBsYXllciBjYW4gY3JlYXRlIGEgbWF4aW11bSBudW1iZXIgb2YgbmV3IGdhbWUgc2Vzc2lvbnMgd2l0aGluIGEgc3BlY2lmaWVkIHRpbWUgcGVyaW9kXCIuXG4gKlxuICogVGhlIHBvbGljeSBpcyBldmFsdWF0ZWQgd2hlbiBhIHBsYXllciB0cmllcyB0byBjcmVhdGUgYSBuZXcgZ2FtZSBzZXNzaW9uLlxuICogRm9yIGV4YW1wbGUsIGFzc3VtZSB5b3UgaGF2ZSBhIHBvbGljeSBvZiAxMCBuZXcgZ2FtZSBzZXNzaW9ucyBhbmQgYSB0aW1lIHBlcmlvZCBvZiA2MCBtaW51dGVzLlxuICogT24gcmVjZWl2aW5nIGEgYENyZWF0ZUdhbWVTZXNzaW9uYCByZXF1ZXN0LCBBbWF6b24gR2FtZUxpZnQgY2hlY2tzIHRoYXQgdGhlIHBsYXllciAoaWRlbnRpZmllZCBieSBDcmVhdG9ySWQpIGhhcyBjcmVhdGVkIGZld2VyIHRoYW4gMTAgZ2FtZSBzZXNzaW9ucyBpbiB0aGUgcGFzdCA2MCBtaW51dGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQ3JlYXRpb25MaW1pdFBvbGljeSB7XG4gIC8qKlxuICAgICAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGdhbWUgc2Vzc2lvbnMgdGhhdCBhbiBpbmRpdmlkdWFsIGNhbiBjcmVhdGUgZHVyaW5nIHRoZSBwb2xpY3kgcGVyaW9kLlxuICAgICAgICpcbiAgICAgICAqIEBkZWZhdWx0IG5vIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgZ2FtZSBzZXNzaW9ucyB0aGF0IGFuIGluZGl2aWR1YWwgY2FuIGNyZWF0ZSBkdXJpbmcgdGhlIHBvbGljeSBwZXJpb2RcbiAgICAgICAqL1xuICByZWFkb25seSBuZXdHYW1lU2Vzc2lvbnNQZXJDcmVhdG9yPzogbnVtYmVyO1xuICAvKipcbiAgICAgKiBUaGUgdGltZSBzcGFuIHVzZWQgaW4gZXZhbHVhdGluZyB0aGUgcmVzb3VyY2UgY3JlYXRpb24gbGltaXQgcG9saWN5LlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgbm8gcG9saWN5IHBlcmlvZFxuICAgICAqL1xuICByZWFkb25seSBwb2xpY3lQZXJpb2Q/OiBjZGsuRHVyYXRpb24sXG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIEdhbWVsaWZ0IGZsZWV0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZsZWV0IGV4dGVuZHMgY2RrLklSZXNvdXJjZSwgaWFtLklHcmFudGFibGUsIElHYW1lU2Vzc2lvblF1ZXVlRGVzdGluYXRpb24ge1xuICAvKipcbiAgICogVGhlIElkZW50aWZpZXIgb2YgdGhlIGZsZWV0LlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBmbGVldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGZsZWV0LlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBmbGVldEFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCB0aGUgYGdyYW50ZWVgIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIHBlcmZvcm0gYGFjdGlvbnNgLlxuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyBmb3IgdGhpcyBmbGVldC5cbiAgICovXG4gIG1ldHJpYyhtZXRyaWNOYW1lOiBzdHJpbmcsIHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG5cbiAgLyoqXG4gICAqIEluc3RhbmNlcyB3aXRoIGBBQ1RJVkVgIHN0YXR1cywgd2hpY2ggbWVhbnMgdGhleSBhcmUgcnVubmluZyBhY3RpdmUgc2VydmVyIHByb2Nlc3Nlcy5cbiAgICogVGhlIGNvdW50IGluY2x1ZGVzIGlkbGUgaW5zdGFuY2VzIGFuZCB0aG9zZSB0aGF0IGFyZSBob3N0aW5nIG9uZSBvciBtb3JlIGdhbWUgc2Vzc2lvbnMuXG4gICAqIFRoaXMgbWV0cmljIG1lYXN1cmVzIGN1cnJlbnQgdG90YWwgaW5zdGFuY2UgY2FwYWNpdHkuXG4gICAqXG4gICAqIFRoaXMgbWV0cmljIGNhbiBiZSB1c2VkIHdpdGggYXV0b21hdGljIHNjYWxpbmcuXG4gICAqL1xuICBtZXRyaWNBY3RpdmVJbnN0YW5jZXMocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcblxuICAvKipcbiAgICogUGVyY2VudGFnZSBvZiBhbGwgYWN0aXZlIGluc3RhbmNlcyB0aGF0IGFyZSBpZGxlIChjYWxjdWxhdGVkIGFzIElkbGVJbnN0YW5jZXMgLyBBY3RpdmVJbnN0YW5jZXMpLlxuICAgKiBUaGlzIG1ldHJpYyBjYW4gYmUgdXNlZCBmb3IgYXV0b21hdGljIHNjYWxpbmcuXG4gICAqL1xuICBtZXRyaWNQZXJjZW50SWRsZUluc3RhbmNlcyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBUYXJnZXQgbnVtYmVyIG9mIGFjdGl2ZSBpbnN0YW5jZXMgdGhhdCBHYW1lTGlmdCBpcyB3b3JraW5nIHRvIG1haW50YWluIGluIHRoZSBmbGVldC5cbiAgICogV2l0aCBhdXRvbWF0aWMgc2NhbGluZywgdGhpcyB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJhc2VkIG9uIHRoZSBzY2FsaW5nIHBvbGljaWVzIGN1cnJlbnRseSBpbiBmb3JjZS5cbiAgICogV2l0aG91dCBhdXRvbWF0aWMgc2NhbGluZywgdGhpcyB2YWx1ZSBpcyBzZXQgbWFudWFsbHkuXG4gICAqIFRoaXMgbWV0cmljIGlzIG5vdCBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIGRhdGEgZm9yIGZsZWV0IG1ldHJpYyBncm91cHMuXG4gICAqL1xuICBtZXRyaWNEZXNpcmVkSW5zdGFuY2VzKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG5cbiAgLyoqXG4gICAqIEFjdGl2ZSBpbnN0YW5jZXMgdGhhdCBhcmUgY3VycmVudGx5IGhvc3RpbmcgemVybyAoMCkgZ2FtZSBzZXNzaW9ucy5cbiAgICogVGhpcyBtZXRyaWMgbWVhc3VyZXMgY2FwYWNpdHkgdGhhdCBpcyBhdmFpbGFibGUgYnV0IHVudXNlZC5cbiAgICogVGhpcyBtZXRyaWMgY2FuIGJlIHVzZWQgd2l0aCBhdXRvbWF0aWMgc2NhbGluZy5cbiAgICovXG4gIG1ldHJpY0lkbGVJbnN0YW5jZXMocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHNwb3QgaW5zdGFuY2VzIHRoYXQgaGF2ZSBiZWVuIGludGVycnVwdGVkLlxuICAgKi9cbiAgbWV0cmljSW5zdGFuY2VJbnRlcnJ1cHRpb25zKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIGluc3RhbmNlcyB0aGF0IGFyZSBhbGxvd2VkIGZvciB0aGUgZmxlZXQuXG4gICAqIEEgZmxlZXQncyBpbnN0YW5jZSBtYXhpbXVtIGRldGVybWluZXMgdGhlIGNhcGFjaXR5IGNlaWxpbmcgZHVyaW5nIG1hbnVhbCBvciBhdXRvbWF0aWMgc2NhbGluZyB1cC5cbiAgICogVGhpcyBtZXRyaWMgaXMgbm90IGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgZGF0YSBmb3IgZmxlZXQgbWV0cmljIGdyb3Vwcy5cbiAgICovXG4gIG1ldHJpY01heEluc3RhbmNlcyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBNaW5pbXVtIG51bWJlciBvZiBpbnN0YW5jZXMgYWxsb3dlZCBmb3IgdGhlIGZsZWV0LlxuICAgKiBBIGZsZWV0J3MgaW5zdGFuY2UgbWluaW11bSBkZXRlcm1pbmVzIHRoZSBjYXBhY2l0eSBmbG9vciBkdXJpbmcgbWFudWFsIG9yIGF1dG9tYXRpYyBzY2FsaW5nIGRvd24uXG4gICAqIFRoaXMgbWV0cmljIGlzIG5vdCBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIGRhdGEgZm9yIGZsZWV0IG1ldHJpYyBncm91cHMuXG4gICAqL1xuICBtZXRyaWNNaW5JbnN0YW5jZXMocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIG5ldyBHYW1lbGlmdCBmbGVldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsZWV0UHJvcHMge1xuXG4gIC8qKlxuICAgICAqIEEgZGVzY3JpcHRpdmUgbGFiZWwgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggYSBmbGVldC4gRmxlZXQgbmFtZXMgZG8gbm90IG5lZWQgdG8gYmUgdW5pcXVlLlxuICAgICAqL1xuICByZWFkb25seSBmbGVldE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQSBodW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgZmxlZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGRlc2NyaXB0aW9uIGlzIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gdXNlIE9uLURlbWFuZCBvciBTcG90IGluc3RhbmNlcyBmb3IgdGhpcyBmbGVldC5cbiAgICogQnkgZGVmYXVsdCwgZmxlZXQgdXNlIG9uIGRlbWFuZCBjYXBhY2l0eS5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSBjYW5ub3QgYmUgY2hhbmdlZCBhZnRlciB0aGUgZmxlZXQgaXMgY3JlYXRlZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2FtZWxpZnQvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2dhbWVsaWZ0LWVjMi1pbnN0YW5jZXMuaHRtbCNnYW1lbGlmdC1lYzItaW5zdGFuY2VzLXNwb3RcbiAgICpcbiAgICogQGRlZmF1bHQgR2FtZWxpZnQgZmxlZXQgdXNlIG9uIGRlbWFuZCBjYXBhY2l0eVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlU3BvdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFByb21wdHMgR2FtZUxpZnQgdG8gZ2VuZXJhdGUgYSBUTFMvU1NMIGNlcnRpZmljYXRlIGZvciB0aGUgZmxlZXQuXG4gICAqIEdhbWVMaWZ0IHVzZXMgdGhlIGNlcnRpZmljYXRlcyB0byBlbmNyeXB0IHRyYWZmaWMgYmV0d2VlbiBnYW1lIGNsaWVudHMgYW5kIHRoZSBnYW1lIHNlcnZlcnMgcnVubmluZyBvbiBHYW1lTGlmdC5cbiAgICpcbiAgICogWW91IGNhbid0IGNoYW5nZSB0aGlzIHByb3BlcnR5IGFmdGVyIHlvdSBjcmVhdGUgdGhlIGZsZWV0LlxuICAgKlxuICAgKiBBZGRpdGlvbm5hbCBpbmZvOlxuICAgKiBBV1MgQ2VydGlmaWNhdGUgTWFuYWdlciAoQUNNKSBjZXJ0aWZpY2F0ZXMgZXhwaXJlIGFmdGVyIDEzIG1vbnRocy5cbiAgICogQ2VydGlmaWNhdGUgZXhwaXJhdGlvbiBjYW4gY2F1c2UgZmxlZXRzIHRvIGZhaWwsIHByZXZlbnRpbmcgcGxheWVycyBmcm9tIGNvbm5lY3RpbmcgdG8gaW5zdGFuY2VzIGluIHRoZSBmbGVldC5cbiAgICogV2UgcmVjb21tZW5kIHlvdSByZXBsYWNlIGZsZWV0cyBiZWZvcmUgMTMgbW9udGhzLCBjb25zaWRlciB1c2luZyBmbGVldCBhbGlhc2VzIGZvciBhIHNtb290aCB0cmFuc2l0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBUTFMvU1NMIGNlcnRpZmljYXRlIGFyZSBnZW5lcmF0ZWQgZm9yIHRoZSBmbGVldFxuICAgKi9cbiAgcmVhZG9ubHkgdXNlQ2VydGlmaWNhdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgICogVGhlIElBTSByb2xlIGFzc3VtZWQgYnkgR2FtZUxpZnQgZmxlZXQgaW5zdGFuY2VzIHRvIGFjY2VzcyBBV1MgcmVzc291cmNlcy5cbiAgICAqIFdpdGggYSByb2xlIHNldCwgYW55IGFwcGxpY2F0aW9uIHRoYXQgcnVucyBvbiBhbiBpbnN0YW5jZSBpbiB0aGlzIGZsZWV0IGNhbiBhc3N1bWUgdGhlIHJvbGUsIGluY2x1ZGluZyBpbnN0YWxsIHNjcmlwdHMsIHNlcnZlciBwcm9jZXNzZXMsIGFuZCBkYWVtb25zIChiYWNrZ3JvdW5kIHByb2Nlc3NlcykuXG4gICAgKiBJZiBwcm92aWRpbmcgYSBjdXN0b20gcm9sZSwgaXQgbmVlZHMgdG8gdHJ1c3QgdGhlIEdhbWVMaWZ0IHNlcnZpY2UgcHJpbmNpcGFsIChnYW1lbGlmdC5hbWF6b25hd3MuY29tKS5cbiAgICAqIE5vIHBlcm1pc3Npb24gaXMgcmVxdWlyZWQgYnkgZGVmYXVsdC5cbiAgICAqXG4gICAgKiBUaGlzIHByb3BlcnR5IGNhbm5vdCBiZSBjaGFuZ2VkIGFmdGVyIHRoZSBmbGVldCBpcyBjcmVhdGVkLlxuICAgICpcbiAgICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dhbWVsaWZ0L2xhdGVzdC9kZXZlbG9wZXJndWlkZS9nYW1lbGlmdC1zZGstc2VydmVyLXJlc291cmNlcy5odG1sXG4gICAgKlxuICAgICogQGRlZmF1bHQgLSBhIHJvbGUgd2lsbCBiZSBjcmVhdGVkIHdpdGggZGVmYXVsdCB0cnVzdCB0byBHYW1lbGlmdCBzZXJ2aWNlIHByaW5jaXBhbC5cbiAgICAqL1xuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBBIFZQQyBwZWVyaW5nIGNvbm5lY3Rpb24gYmV0d2VlbiB5b3VyIEdhbWVMaWZ0LWhvc3RlZCBnYW1lIHNlcnZlcnMgYW5kIHlvdXIgb3RoZXIgbm9uLUdhbWVMaWZ0IHJlc291cmNlcy5cbiAgICogVXNlIEFtYXpvbiBWaXJ0dWFsIFByaXZhdGUgQ2xvdWQgKFZQQykgcGVlcmluZyBjb25uZWN0aW9ucyB0byBlbmFibGUgeW91ciBnYW1lIHNlcnZlcnMgdG8gY29tbXVuaWNhdGUgZGlyZWN0bHkgYW5kIHByaXZhdGVseSB3aXRoIHlvdXIgb3RoZXIgQVdTIHJlc291cmNlcywgc3VjaCBhcyBhIHdlYiBzZXJ2aWNlIG9yIGEgcmVwb3NpdG9yeS5cbiAgICogWW91IGNhbiBlc3RhYmxpc2ggVlBDIHBlZXJpbmcgd2l0aCBhbnkgcmVzb3VyY2VzIHRoYXQgcnVuIG9uIEFXUyBhbmQgYXJlIG1hbmFnZWQgYnkgYW4gQVdTIGFjY291bnQgdGhhdCB5b3UgaGF2ZSBhY2Nlc3MgdG8uXG4gICAqIFRoZSBWUEMgbXVzdCBiZSBpbiB0aGUgc2FtZSBSZWdpb24gYXMgeW91ciBmbGVldC5cbiAgICpcbiAgICogV2FybmluZzpcbiAgICogQmUgc3VyZSB0byBjcmVhdGUgYSBWUEMgUGVlcmluZyBhdXRob3JpemF0aW9uIHRocm91Z2ggR2FtZWxpZnQgU2VydmljZSBBUEkuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dhbWVsaWZ0L2xhdGVzdC9kZXZlbG9wZXJndWlkZS92cGMtcGVlcmluZy5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIHZwYyBwZWVyaW5nXG4gICAqL1xuICByZWFkb25seSBwZWVyVnBjPzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIGFuIEFXUyBDbG91ZFdhdGNoIG1ldHJpYyBncm91cCB0byBhZGQgdGhpcyBmbGVldCB0by5cbiAgICogQSBtZXRyaWMgZ3JvdXAgaXMgdXNlZCB0byBhZ2dyZWdhdGUgdGhlIG1ldHJpY3MgZm9yIG11bHRpcGxlIGZsZWV0cy5cbiAgICogWW91IGNhbiBzcGVjaWZ5IGFuIGV4aXN0aW5nIG1ldHJpYyBncm91cCBuYW1lIG9yIHNldCBhIG5ldyBuYW1lIHRvIGNyZWF0ZSBhIG5ldyBtZXRyaWMgZ3JvdXAuXG4gICAqIEEgZmxlZXQgY2FuIGJlIGluY2x1ZGVkIGluIG9ubHkgb25lIG1ldHJpYyBncm91cCBhdCBhIHRpbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IEZsZWV0IG1ldHJpY3MgYXJlIGFnZ3JlZ2F0ZWQgd2l0aCBvdGhlciBmbGVldHMgaW4gdGhlIGRlZmF1bHQgbWV0cmljIGdyb3VwXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNHcm91cD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEdhbWVMaWZ0LXN1cHBvcnRlZCBBbWF6b24gRUMyIGluc3RhbmNlIHR5cGUgdG8gdXNlIGZvciBhbGwgZmxlZXQgaW5zdGFuY2VzLlxuICAgKiBJbnN0YW5jZSB0eXBlIGRldGVybWluZXMgdGhlIGNvbXB1dGluZyByZXNvdXJjZXMgdGhhdCB3aWxsIGJlIHVzZWQgdG8gaG9zdCB5b3VyIGdhbWUgc2VydmVycywgaW5jbHVkaW5nIENQVSwgbWVtb3J5LCBzdG9yYWdlLCBhbmQgbmV0d29ya2luZyBjYXBhY2l0eS5cbiAgICpcbiAgICogQHNlZSBodHRwOi8vYXdzLmFtYXpvbi5jb20vZWMyL2luc3RhbmNlLXR5cGVzLyBmb3IgZGV0YWlsZWQgZGVzY3JpcHRpb25zIG9mIEFtYXpvbiBFQzIgaW5zdGFuY2UgdHlwZXMuXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZVR5cGU6IGVjMi5JbnN0YW5jZVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgRUMyIGluc3RhbmNlcyB0aGF0IHlvdSB3YW50IHRoaXMgZmxlZXQgdG8gaG9zdC5cbiAgICogV2hlbiBjcmVhdGluZyBhIG5ldyBmbGVldCwgR2FtZUxpZnQgYXV0b21hdGljYWxseSBzZXRzIHRoaXMgdmFsdWUgdG8gXCIxXCIgYW5kIGluaXRpYXRlcyBhIHNpbmdsZSBpbnN0YW5jZS5cbiAgICogT25jZSB0aGUgZmxlZXQgaXMgYWN0aXZlLCB1cGRhdGUgdGhpcyB2YWx1ZSB0byB0cmlnZ2VyIEdhbWVMaWZ0IHRvIGFkZCBvciByZW1vdmUgaW5zdGFuY2VzIGZyb20gdGhlIGZsZWV0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBEZWZhdWx0IGNhcGFjaXR5IGlzIDBcbiAgICovXG4gIHJlYWRvbmx5IGRlc2lyZWRDYXBhY2l0eT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIGluc3RhbmNlcyB0aGF0IGFyZSBhbGxvd2VkIGluIHRoZSBzcGVjaWZpZWQgZmxlZXQgbG9jYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBkZWZhdWx0IGlzIDBcbiAgICovXG4gIHJlYWRvbmx5IG1pblNpemU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbnN0YW5jZXMgdGhhdCBhcmUgYWxsb3dlZCBpbiB0aGUgc3BlY2lmaWVkIGZsZWV0IGxvY2F0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgZGVmYXVsdCBpcyAxXG4gICAqL1xuICByZWFkb25seSBtYXhTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIG9mIHRlcm1pbmF0aW9uIHByb3RlY3Rpb24gZm9yIGFjdGl2ZSBnYW1lIHNlc3Npb25zIG9uIHRoZSBmbGVldC5cbiAgICogQnkgZGVmYXVsdCwgbmV3IGdhbWUgc2Vzc2lvbnMgYXJlIHByb3RlY3RlZCBhbmQgY2Fubm90IGJlIHRlcm1pbmF0ZWQgZHVyaW5nIGEgc2NhbGUtZG93biBldmVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZSAtIEdhbWUgc2Vzc2lvbnMgaW4gYEFDVElWRWAgc3RhdHVzIGNhbm5vdCBiZSB0ZXJtaW5hdGVkIGR1cmluZyBhIHNjYWxlLWRvd24gZXZlbnQuXG4gICAqL1xuICByZWFkb25seSBwcm90ZWN0TmV3R2FtZVNlc3Npb24/IDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBjb2xsZWN0aW9uIG9mIHNlcnZlciBwcm9jZXNzIGNvbmZpZ3VyYXRpb25zIHRoYXQgZGVzY3JpYmUgdGhlIHNldCBvZiBwcm9jZXNzZXMgdG8gcnVuIG9uIGVhY2ggaW5zdGFuY2UgaW4gYSBmbGVldC5cbiAgICogU2VydmVyIHByb2Nlc3NlcyBydW4gZWl0aGVyIGFuIGV4ZWN1dGFibGUgaW4gYSBjdXN0b20gZ2FtZSBidWlsZCBvciBhIFJlYWx0aW1lIFNlcnZlcnMgc2NyaXB0LlxuICAgKiBHYW1lTGlmdCBsYXVuY2hlcyB0aGUgY29uZmlndXJlZCBwcm9jZXNzZXMsIG1hbmFnZXMgdGhlaXIgbGlmZSBjeWNsZSwgYW5kIHJlcGxhY2VzIHRoZW0gYXMgbmVlZGVkLlxuICAgKiBFYWNoIGluc3RhbmNlIGNoZWNrcyByZWd1bGFybHkgZm9yIGFuIHVwZGF0ZWQgcnVudGltZSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBBIEdhbWVMaWZ0IGluc3RhbmNlIGlzIGxpbWl0ZWQgdG8gNTAgcHJvY2Vzc2VzIHJ1bm5pbmcgY29uY3VycmVudGx5LlxuICAgKiBUbyBjYWxjdWxhdGUgdGhlIHRvdGFsIG51bWJlciBvZiBwcm9jZXNzZXMgaW4gYSBydW50aW1lIGNvbmZpZ3VyYXRpb24sIGFkZCB0aGUgdmFsdWVzIG9mIHRoZSBDb25jdXJyZW50RXhlY3V0aW9ucyBwYXJhbWV0ZXIgZm9yIGVhY2ggU2VydmVyUHJvY2Vzcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2FtZWxpZnQvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2ZsZWV0cy1tdWx0aXByb2Nlc3MuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZUNvbmZpZ3VyYXRpb246IFJ1bnRpbWVDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBBIHNldCBvZiByZW1vdGUgbG9jYXRpb25zIHRvIGRlcGxveSBhZGRpdGlvbmFsIGluc3RhbmNlcyB0byBhbmQgbWFuYWdlIGFzIHBhcnQgb2YgdGhlIGZsZWV0LlxuICAgKiBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSB1c2VkIHdoZW4gY3JlYXRpbmcgZmxlZXRzIGluIEFXUyBSZWdpb25zIHRoYXQgc3VwcG9ydCBtdWx0aXBsZSBsb2NhdGlvbnMuXG4gICAqIFlvdSBjYW4gYWRkIGFueSBHYW1lTGlmdC1zdXBwb3J0ZWQgQVdTIFJlZ2lvbiBhcyBhIHJlbW90ZSBsb2NhdGlvbiwgaW4gdGhlIGZvcm0gb2YgYW4gQVdTIFJlZ2lvbiBjb2RlIHN1Y2ggYXMgYHVzLXdlc3QtMmAuXG4gICAqIFRvIGNyZWF0ZSBhIGZsZWV0IHdpdGggaW5zdGFuY2VzIGluIHRoZSBob21lIHJlZ2lvbiBvbmx5LCBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBDcmVhdGUgYSBmbGVldCB3aXRoIGluc3RhbmNlcyBpbiB0aGUgaG9tZSByZWdpb24gb25seVxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYXRpb25zPzogTG9jYXRpb25bXTtcblxuICAvKipcbiAgICogQSBwb2xpY3kgdGhhdCBsaW1pdHMgdGhlIG51bWJlciBvZiBnYW1lIHNlc3Npb25zIHRoYXQgYW4gaW5kaXZpZHVhbCBwbGF5ZXIgY2FuIGNyZWF0ZSBvbiBpbnN0YW5jZXMgaW4gdGhpcyBmbGVldCB3aXRoaW4gYSBzcGVjaWZpZWQgc3BhbiBvZiB0aW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyByZXNvdXJjZSBjcmVhdGlvbiBsaW1pdCBwb2xpY3lcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlQ3JlYXRpb25MaW1pdFBvbGljeT86IFJlc291cmNlQ3JlYXRpb25MaW1pdFBvbGljeTtcbn1cblxuLyoqXG4gKiBBIGZ1bGwgc3BlY2lmaWNhdGlvbiBvZiBhIGZsZWV0IHRoYXQgY2FuIGJlIHVzZWQgdG8gaW1wb3J0IGl0IGZsdWVudGx5IGludG8gdGhlIENESyBhcHBsaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbGVldEF0dHJpYnV0ZXMge1xuICAvKipcbiAgICAgKiBUaGUgQVJOIG9mIHRoZSBmbGVldFxuICAgICAqXG4gICAgICogQXQgbGVhc3Qgb25lIG9mIGBmbGVldEFybmAgYW5kIGBmbGVldElkYCBtdXN0IGJlIHByb3ZpZGVkLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZGVyaXZlZCBmcm9tIGBmbGVldElkYC5cbiAgICAgKi9cbiAgcmVhZG9ubHkgZmxlZXRBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBmbGVldFxuICAgKlxuICAgKiBBdCBsZWFzdCBvbmUgb2YgYGZsZWV0SWRgIGFuZCBgZmxlZXRBcm5gICBtdXN0IGJlIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBkZXJpdmVkIGZyb20gYGZsZWV0QXJuYC5cbiAgICovXG4gIHJlYWRvbmx5IGZsZWV0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJQU0gcm9sZSBhc3N1bWVkIGJ5IEdhbWVMaWZ0IGZsZWV0IGluc3RhbmNlcyB0byBhY2Nlc3MgQVdTIHJlc3NvdXJjZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBpbXBvcnRlZCBmbGVldCBjYW5ub3QgYmUgZ3JhbnRlZCBhY2Nlc3MgdG8gb3RoZXIgcmVzb3VyY2VzIGFzIGFuIGBpYW0uSUdyYW50YWJsZWAuXG4gICAqL1xuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIG5ldyBhbmQgaW1wb3J0ZWQgR2FtZUxpZnQgZmxlZXQuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGbGVldEJhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJRmxlZXQge1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgZmxlZXQgZnJvbSBpdHMgYXR0cmlidXRlcy5cbiAgICovXG4gIHN0YXRpYyBmcm9tRmxlZXRBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBGbGVldEF0dHJpYnV0ZXMpOiBJRmxlZXQge1xuICAgIGlmICghYXR0cnMuZmxlZXRJZCAmJiAhYXR0cnMuZmxlZXRBcm4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRWl0aGVyIGZsZWV0SWQgb3IgZmxlZXRBcm4gbXVzdCBiZSBwcm92aWRlZCBpbiBGbGVldEF0dHJpYnV0ZXMnKTtcbiAgICB9XG4gICAgY29uc3QgZmxlZXRJZCA9IGF0dHJzLmZsZWV0SWQgPz9cbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oYXR0cnMuZmxlZXRBcm4hLCBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUpLnJlc291cmNlTmFtZTtcblxuICAgIGlmICghZmxlZXRJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBmbGVldCBpZGVudGlmaWVyIGZvdW5kIGluIEFSTjogJyR7YXR0cnMuZmxlZXRBcm59J2ApO1xuICAgIH1cblxuICAgIGNvbnN0IGZsZWV0QXJuID0gYXR0cnMuZmxlZXRBcm4gPz8gY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogJ2dhbWVsaWZ0JyxcbiAgICAgIHJlc291cmNlOiAnZmxlZXQnLFxuICAgICAgcmVzb3VyY2VOYW1lOiBhdHRycy5mbGVldElkLFxuICAgICAgYXJuRm9ybWF0OiBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgRmxlZXRCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBmbGVldElkID0gZmxlZXRJZCE7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZmxlZXRBcm4gPSBmbGVldEFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBncmFudFByaW5jaXBhbCA9IGF0dHJzLnJvbGUgPz8gbmV3IGlhbS5Vbmtub3duUHJpbmNpcGFsKHsgcmVzb3VyY2U6IHRoaXMgfSk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcm9sZSA9IGF0dHJzLnJvbGU7XG5cbiAgICAgIGNvbnN0cnVjdG9yKHM6IENvbnN0cnVjdCwgaTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHMsIGksIHtcbiAgICAgICAgICBlbnZpcm9ubWVudEZyb21Bcm46IGZsZWV0QXJuLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgICogVGhlIElkZW50aWZpZXIgb2YgdGhlIGZsZWV0LlxuICAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBmbGVldElkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBmbGVldC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBmbGVldEFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpbmNpcGFsIHRoaXMgR2FtZUxpZnQgZmxlZXQgaXMgdXNpbmcuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6IGlhbS5JUHJpbmNpcGFsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb25zOiBMb2NhdGlvbltdID0gW107XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYW4gYWxpYXMgZm9yIHRoaXMgZmxlZXQuXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGRlY2xhcmUgY29uc3QgZmxlZXQ6IGdhbWVsaWZ0LkZsZWV0QmFzZTtcbiAgICpcbiAgICogZmxlZXQuYWRkQWxpYXMoJ0xpdmUnKTtcbiAgICpcbiAgICogLy8gSXMgZXF1aXZhbGVudCB0b1xuICAgKlxuICAgKiBuZXcgZ2FtZWxpZnQuQWxpYXModGhpcywgJ0FsaWFzTGl2ZScsIHtcbiAgICogICBhbGlhc05hbWU6ICdMaXZlJyxcbiAgICogICBmbGVldDogZmxlZXQsXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIGFsaWFzTmFtZSBUaGUgbmFtZSBvZiB0aGUgYWxpYXNcbiAgICogQHBhcmFtIG9wdGlvbnMgQWxpYXMgb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIGFkZEFsaWFzKGFsaWFzTmFtZTogc3RyaW5nLCBvcHRpb25zOiBBbGlhc09wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiBuZXcgQWxpYXModGhpcywgYEFsaWFzJHthbGlhc05hbWV9YCwge1xuICAgICAgYWxpYXNOYW1lLFxuICAgICAgZmxlZXQ6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLmZsZWV0QXJuXSxcbiAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICBhY3Rpb25zOiBhY3Rpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpYyhtZXRyaWNOYW1lOiBzdHJpbmcsIHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0dhbWVMaWZ0JyxcbiAgICAgIG1ldHJpY05hbWU6IG1ldHJpY05hbWUsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIEZsZWV0SWQ6IHRoaXMuZmxlZXRJZCxcbiAgICAgIH0sXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KS5hdHRhY2hUbyh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNBY3RpdmVJbnN0YW5jZXMocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMuY2FubmVkTWV0cmljKEdhbWVMaWZ0TWV0cmljcy5hY3RpdmVJbnN0YW5jZXNBdmVyYWdlLCBwcm9wcyk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljUGVyY2VudElkbGVJbnN0YW5jZXMocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMuY2FubmVkTWV0cmljKEdhbWVMaWZ0TWV0cmljcy5wZXJjZW50SWRsZUluc3RhbmNlc0F2ZXJhZ2UsIHByb3BzKTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNEZXNpcmVkSW5zdGFuY2VzKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNhbm5lZE1ldHJpYyhHYW1lTGlmdE1ldHJpY3MuZGVzaXJlZEluc3RhbmNlc0F2ZXJhZ2UsIHByb3BzKTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNJZGxlSW5zdGFuY2VzKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNhbm5lZE1ldHJpYyhHYW1lTGlmdE1ldHJpY3MuaWRsZUluc3RhbmNlc0F2ZXJhZ2UsIHByb3BzKTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNJbnN0YW5jZUludGVycnVwdGlvbnMocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMuY2FubmVkTWV0cmljKEdhbWVMaWZ0TWV0cmljcy5pbnN0YW5jZUludGVycnVwdGlvbnNTdW0sIHByb3BzKTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNNYXhJbnN0YW5jZXMocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMuY2FubmVkTWV0cmljKEdhbWVMaWZ0TWV0cmljcy5tYXhJbnN0YW5jZXNBdmVyYWdlLCBwcm9wcyk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljTWluSW5zdGFuY2VzKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNhbm5lZE1ldHJpYyhHYW1lTGlmdE1ldHJpY3MubWluSW5zdGFuY2VzQXZlcmFnZSwgcHJvcHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5uZWRNZXRyaWMoZm46IChkaW1zOiB7IEZsZWV0SWQ6IHN0cmluZyB9KSA9PiBjbG91ZHdhdGNoLk1ldHJpY1Byb3BzLCBwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgIC4uLmZuKHsgRmxlZXRJZDogdGhpcy5mbGVldElkIH0pLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSkuYXR0YWNoVG8odGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFSTiB0byBwdXQgaW50byB0aGUgZGVzdGluYXRpb24gZmllbGQgb2YgYSBnYW1lIHNlc3Npb24gcXVldWVcbiAgICovXG4gIHB1YmxpYyBnZXQgcmVzb3VyY2VBcm5Gb3JEZXN0aW5hdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5mbGVldEFybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcmVtb3RlIGxvY2F0aW9ucyB0byBkZXBsb3kgYWRkaXRpb25hbCBpbnN0YW5jZXMgdG8gYW5kIG1hbmFnZSBhcyBwYXJ0IG9mIHRoZSBmbGVldC5cbiAgICpcbiAgICogQHBhcmFtIHJlZ2lvbiBUaGUgQVdTIHJlZ2lvbiB0byBhZGRcbiAgICovXG4gIHB1YmxpYyBhZGRMb2NhdGlvbihyZWdpb246IHN0cmluZywgZGVzaXJlZENhcGFjaXR5PzogbnVtYmVyLCBtaW5TaXplPzogbnVtYmVyLCBtYXhTaXplPzogbnVtYmVyKSB7XG4gICAgdGhpcy5hZGRJbnRlcm5hbExvY2F0aW9uKHtcbiAgICAgIHJlZ2lvbjogcmVnaW9uLFxuICAgICAgY2FwYWNpdHk6IHtcbiAgICAgICAgZGVzaXJlZENhcGFjaXR5OiBkZXNpcmVkQ2FwYWNpdHksXG4gICAgICAgIG1pblNpemU6IG1pblNpemUsXG4gICAgICAgIG1heFNpemU6IG1heFNpemUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZW1vdGUgbG9jYXRpb25zIHRvIGRlcGxveSBhZGRpdGlvbmFsIGluc3RhbmNlcyB0byBhbmQgbWFuYWdlIGFzIHBhcnQgb2YgdGhlIGZsZWV0LlxuICAgKlxuICAgKiBAcGFyYW0gbG9jYXRpb24gVGhlIGxvY2F0aW9uIHRvIGFkZFxuICAgKi9cbiAgcHVibGljIGFkZEludGVybmFsTG9jYXRpb24obG9jYXRpb246IExvY2F0aW9uKSB7XG4gICAgaWYgKHRoaXMubG9jYXRpb25zLmxlbmd0aCA9PSAxMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gbW9yZSB0aGFuIDEwMCBsb2NhdGlvbnMgYXJlIGFsbG93ZWQgcGVyIGZsZWV0Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2NhdGlvbnMucHVzaChsb2NhdGlvbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VSZXNvdXJjZUNyZWF0aW9uTGltaXRQb2xpY3kocHJvcHM6IEZsZWV0UHJvcHMpOiBDZm5GbGVldC5SZXNvdXJjZUNyZWF0aW9uTGltaXRQb2xpY3lQcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwcm9wcy5yZXNvdXJjZUNyZWF0aW9uTGltaXRQb2xpY3kgfHxcbiAgICAgICAgKCFwcm9wcy5yZXNvdXJjZUNyZWF0aW9uTGltaXRQb2xpY3kubmV3R2FtZVNlc3Npb25zUGVyQ3JlYXRvclxuICAgICAgICAgICAgJiYgIXByb3BzLnJlc291cmNlQ3JlYXRpb25MaW1pdFBvbGljeS5wb2xpY3lQZXJpb2QpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuZXdHYW1lU2Vzc2lvbnNQZXJDcmVhdG9yOiBwcm9wcy5yZXNvdXJjZUNyZWF0aW9uTGltaXRQb2xpY3kubmV3R2FtZVNlc3Npb25zUGVyQ3JlYXRvcixcbiAgICAgIHBvbGljeVBlcmlvZEluTWludXRlczogcHJvcHMucmVzb3VyY2VDcmVhdGlvbkxpbWl0UG9saWN5LnBvbGljeVBlcmlvZD8udG9NaW51dGVzKCksXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUxvY2F0aW9ucygpOiBDZm5GbGVldC5Mb2NhdGlvbkNvbmZpZ3VyYXRpb25Qcm9wZXJ0eVtdIHzCoHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmxvY2F0aW9ucyB8fCB0aGlzLmxvY2F0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICByZXR1cm4gdGhpcy5sb2NhdGlvbnMubWFwKHBhcnNlTG9jYXRpb24pO1xuXG4gICAgZnVuY3Rpb24gcGFyc2VMb2NhdGlvbihsb2NhdGlvbjogTG9jYXRpb24pOiBDZm5GbGVldC5Mb2NhdGlvbkNvbmZpZ3VyYXRpb25Qcm9wZXJ0eSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24ucmVnaW9uLFxuICAgICAgICBsb2NhdGlvbkNhcGFjaXR5OiBzZWxmLnBhcnNlTG9jYXRpb25DYXBhY2l0eShsb2NhdGlvbi5jYXBhY2l0eSksXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUxvY2F0aW9uQ2FwYWNpdHkoY2FwYWNpdHk/OiBMb2NhdGlvbkNhcGFjaXR5KTogQ2ZuRmxlZXQuTG9jYXRpb25DYXBhY2l0eVByb3BlcnR5IHzCoHVuZGVmaW5lZCB7XG4gICAgaWYgKCFjYXBhY2l0eSB8fFxuICAgICAgICAoIWNhcGFjaXR5LmRlc2lyZWRDYXBhY2l0eVxuICAgICAgICAgICAgJiYgIWNhcGFjaXR5Lm1pblNpemVcbiAgICAgICAgICAgICYmICFjYXBhY2l0eS5tYXhTaXplKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGVzaXJlZEVjMkluc3RhbmNlczogY2FwYWNpdHkuZGVzaXJlZENhcGFjaXR5ID8/IDAsXG4gICAgICBtaW5TaXplOiBjYXBhY2l0eS5taW5TaXplID8/IDAsXG4gICAgICBtYXhTaXplOiBjYXBhY2l0eS5tYXhTaXplID8/IDEsXG4gICAgfTtcblxuICB9XG4gIHByb3RlY3RlZCBwYXJzZVJ1bnRpbWVDb25maWd1cmF0aW9uKHByb3BzOiBGbGVldFByb3BzKTogQ2ZuRmxlZXQuUnVudGltZUNvbmZpZ3VyYXRpb25Qcm9wZXJ0eSB8wqB1bmRlZmluZWQge1xuICAgIGlmICghcHJvcHMucnVudGltZUNvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgKCFwcm9wcy5ydW50aW1lQ29uZmlndXJhdGlvbi5nYW1lU2Vzc2lvbkFjdGl2YXRpb25UaW1lb3V0XG4gICAgICAgICAgICAmJiAhcHJvcHMucnVudGltZUNvbmZpZ3VyYXRpb24ubWF4Q29uY3VycmVudEdhbWVTZXNzaW9uQWN0aXZhdGlvbnNcbiAgICAgICAgICAgICYmIHByb3BzLnJ1bnRpbWVDb25maWd1cmF0aW9uLnNlcnZlclByb2Nlc3Nlcy5sZW5ndGggPT0gMCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBnYW1lU2Vzc2lvbkFjdGl2YXRpb25UaW1lb3V0U2Vjb25kczogcHJvcHMucnVudGltZUNvbmZpZ3VyYXRpb24uZ2FtZVNlc3Npb25BY3RpdmF0aW9uVGltZW91dD8udG9TZWNvbmRzKCksXG4gICAgICBtYXhDb25jdXJyZW50R2FtZVNlc3Npb25BY3RpdmF0aW9uczogcHJvcHMucnVudGltZUNvbmZpZ3VyYXRpb24ubWF4Q29uY3VycmVudEdhbWVTZXNzaW9uQWN0aXZhdGlvbnMsXG4gICAgICBzZXJ2ZXJQcm9jZXNzZXM6IHByb3BzLnJ1bnRpbWVDb25maWd1cmF0aW9uLnNlcnZlclByb2Nlc3Nlcy5tYXAocGFyc2VTZXJ2ZXJQcm9jZXNzKSxcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcGFyc2VTZXJ2ZXJQcm9jZXNzKHNlcnZlclByb2Nlc3M6IFNlcnZlclByb2Nlc3MpOiBDZm5GbGVldC5TZXJ2ZXJQcm9jZXNzUHJvcGVydHkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFyYW1ldGVyczogc2VydmVyUHJvY2Vzcy5wYXJhbWV0ZXJzLFxuICAgICAgICBsYXVuY2hQYXRoOiBzZXJ2ZXJQcm9jZXNzLmxhdW5jaFBhdGgsXG4gICAgICAgIGNvbmN1cnJlbnRFeGVjdXRpb25zOiBzZXJ2ZXJQcm9jZXNzLmNvbmN1cnJlbnRFeGVjdXRpb25zID8/IDEsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB3YXJuVnBjUGVlcmluZ0F1dGhvcml6YXRpb25zKHNjb3BlOiBDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICBjZGsuQW5ub3RhdGlvbnMub2Yoc2NvcGUpLmFkZFdhcm5pbmdWMignQGF3cy1jZGsvYXdzLWdhbWVsaWZ0OmZsZWV0QXV0b3JpemVWcGNQZWVyaW5nJywgW1xuICAgICAgJ1RvIGF1dGhvcml6ZSB0aGUgVlBDIHBlZXJpbmcsIGNhbGwgdGhlIEdhbWVMaWZ0IHNlcnZpY2UgQVBJIENyZWF0ZVZwY1BlZXJpbmdBdXRob3JpemF0aW9uKCkgb3IgdXNlIHRoZSBBV1MgQ0xJIGNvbW1hbmQgY3JlYXRlLXZwYy1wZWVyaW5nLWF1dGhvcml6YXRpb24uJyxcbiAgICAgICdNYWtlIHRoaXMgY2FsbCB1c2luZyB0aGUgYWNjb3VudCB0aGF0IG1hbmFnZXMgeW91ciBub24tR2FtZUxpZnQgcmVzb3VyY2VzLicsXG4gICAgICAnU2VlOiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2FtZWxpZnQvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3ZwYy1wZWVyaW5nLmh0bWwnLFxuICAgIF0uam9pbignXFxuJykpO1xuICB9XG59XG4iXX0=
|
|
274
|
+
FleetBase[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.FleetBase", version: "2.115.0-alpha.0" };
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxlZXQtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImZsZWV0LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEseURBQXlEO0FBRXpELDJDQUEyQztBQUMzQyx3Q0FBd0M7QUFFeEMsbUNBQThDO0FBRTlDLHNIQUFpRztBQThZakc7O0dBRUc7QUFDSCxNQUFzQixTQUFVLFNBQVEsR0FBRyxDQUFDLFFBQVE7SUFBcEQ7O1FBbURtQixjQUFTLEdBQWUsRUFBRSxDQUFDO0tBaU03QztJQW5QQzs7T0FFRztJQUNILE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjs7Ozs7Ozs7OztRQUM3RSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO1NBQ25GO1FBQ0QsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU87WUFDM0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUVoRyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7U0FDMUU7UUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUMvRCxPQUFPLEVBQUUsVUFBVTtZQUNuQixRQUFRLEVBQUUsT0FBTztZQUNqQixZQUFZLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDM0IsU0FBUyxFQUFFLEdBQUcsQ0FBQyxT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O1lBQ2xFLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBQ0QsT0FBTztZQUNMLG1DQUFtQyxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyw0QkFBNEIsRUFBRSxTQUFTLEVBQUU7WUFDekcsbUNBQW1DLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUFDLG1DQUFtQztZQUNuRyxlQUFlLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUM7U0FDcEYsQ0FBQztRQUVGLFNBQVMsa0JBQWtCLENBQUMsYUFBNEI7WUFDdEQsT0FBTztnQkFDTCxVQUFVLEVBQUUsYUFBYSxDQUFDLFVBQVU7Z0JBQ3BDLFVBQVUsRUFBRSxhQUFhLENBQUMsVUFBVTtnQkFDcEMsb0JBQW9CLEVBQUUsYUFBYSxDQUFDLG9CQUFvQixJQUFJLENBQUM7YUFDOUQsQ0FBQztRQUNKLENBQUM7S0FDRjtJQUVTLDRCQUE0QixDQUFDLEtBQWdCO1FBQ3JELEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQywrQ0FBK0MsRUFBRTtZQUN0RiwwSkFBMEo7WUFDMUosNEVBQTRFO1lBQzVFLGtGQUFrRjtTQUNuRixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ2Y7O0FBblBILDhCQW9QQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNsb3Vkd2F0Y2ggZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBbGlhcywgQWxpYXNPcHRpb25zIH0gZnJvbSAnLi9hbGlhcyc7XG5pbXBvcnQgeyBJR2FtZVNlc3Npb25RdWV1ZURlc3RpbmF0aW9uIH0gZnJvbSAnLi9nYW1lLXNlc3Npb24tcXVldWUnO1xuaW1wb3J0IHsgR2FtZUxpZnRNZXRyaWNzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWdhbWVsaWZ0L2xpYi9nYW1lbGlmdC1jYW5uZWQtbWV0cmljcy5nZW5lcmF0ZWQnO1xuaW1wb3J0IHsgQ2ZuRmxlZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2FtZWxpZnQnO1xuXG4vKipcbiAqIEN1cnJlbnQgcmVzb3VyY2UgY2FwYWNpdHkgc2V0dGluZ3MgaW4gYSBzcGVjaWZpZWQgZmxlZXQgb3IgbG9jYXRpb24uXG4gKiBUaGUgbG9jYXRpb24gdmFsdWUgbWlnaHQgcmVmZXIgdG8gYSBmbGVldCdzIHJlbW90ZSBsb2NhdGlvbiBvciBpdHMgaG9tZSBSZWdpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb25DYXBhY2l0eSB7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIEFtYXpvbiBFQzIgaW5zdGFuY2VzIHlvdSB3YW50IHRvIG1haW50YWluIGluIHRoZSBzcGVjaWZpZWQgZmxlZXQgbG9jYXRpb24uXG4gICAqIFRoaXMgdmFsdWUgbXVzdCBmYWxsIGJldHdlZW4gdGhlIG1pbmltdW0gYW5kIG1heGltdW0gc2l6ZSBsaW1pdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBkZWZhdWx0IHZhbHVlIGlzIDBcbiAgICovXG4gIHJlYWRvbmx5IGRlc2lyZWRDYXBhY2l0eT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGluc3RhbmNlcyB0aGF0IGFyZSBhbGxvd2VkIGluIHRoZSBzcGVjaWZpZWQgZmxlZXQgbG9jYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBkZWZhdWx0IHZhbHVlIGlzIDFcbiAgICovXG4gIHJlYWRvbmx5IG1heFNpemU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBpbnN0YW5jZXMgdGhhdCBhcmUgYWxsb3dlZCBpbiB0aGUgc3BlY2lmaWVkIGZsZWV0IGxvY2F0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyAwXG4gICAqL1xuICByZWFkb25seSBtaW5TaXplPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgcmVtb3RlIGxvY2F0aW9uIHdoZXJlIGEgbXVsdGktbG9jYXRpb24gZmxlZXQgY2FuIGRlcGxveSBFQzIgaW5zdGFuY2VzIGZvciBnYW1lIGhvc3RpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb24ge1xuICAvKipcbiAgICogQW4gQVdTIFJlZ2lvbiBjb2RlXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogQ3VycmVudCByZXNvdXJjZSBjYXBhY2l0eSBzZXR0aW5ncyBpbiBhIHNwZWNpZmllZCBmbGVldCBvciBsb2NhdGlvbi5cbiAgICogVGhlIGxvY2F0aW9uIHZhbHVlIG1pZ2h0IHJlZmVyIHRvIGEgZmxlZXQncyByZW1vdGUgbG9jYXRpb24gb3IgaXRzIGhvbWUgUmVnaW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBjYXBhY2l0eSBzZXR0aW5ncyBvbiB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uXG4gICAqL1xuICByZWFkb25seSBjYXBhY2l0eT86IExvY2F0aW9uQ2FwYWNpdHk7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvZiBhIGZsZWV0IHNlcnZlciBwcm9jZXNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyUHJvY2VzcyB7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHNlcnZlciBwcm9jZXNzZXMgdXNpbmcgdGhpcyBjb25maWd1cmF0aW9uIHRoYXQgcnVuIGNvbmN1cnJlbnRseSBvbiBlYWNoIGluc3RhbmNlLlxuICAgKiBNaW5pbXVtIGlzIGAxYFxuICAgKlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBjb25jdXJyZW50RXhlY3V0aW9ucz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIGEgZ2FtZSBidWlsZCBleGVjdXRhYmxlIG9yIHRoZSBSZWFsdGltZSBzY3JpcHQgZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSBJbml0KCkgZnVuY3Rpb24uIEdhbWUgYnVpbGRzIGFuZCBSZWFsdGltZSBzY3JpcHRzIGFyZSBpbnN0YWxsZWQgb24gaW5zdGFuY2VzIGF0IHRoZSByb290OlxuICAgKiAtIFdpbmRvd3MgKGN1c3RvbSBnYW1lIGJ1aWxkcyBvbmx5KTogYEM6XFxnYW1lYC4gRXhhbXBsZTogYEM6XFxnYW1lXFxNeUdhbWVcXHNlcnZlci5leGVgXG4gICAqIC0gTGludXg6IGAvbG9jYWwvZ2FtZWAuIEV4YW1wbGVzOiBgL2xvY2FsL2dhbWUvTXlHYW1lL3NlcnZlci5leGVgIG9yIGAvbG9jYWwvZ2FtZS9NeVJlYWx0aW1lU2NyaXB0LmpzYFxuICAgKi9cbiAgcmVhZG9ubHkgbGF1bmNoUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBsaXN0IG9mIHBhcmFtZXRlcnMgdG8gcGFzcyB0byB0aGUgc2VydmVyIGV4ZWN1dGFibGUgb3IgUmVhbHRpbWUgc2NyaXB0IG9uIGxhdW5jaC5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gcGFyYW1ldGVyc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVycz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIGNvbGxlY3Rpb24gb2Ygc2VydmVyIHByb2Nlc3MgY29uZmlndXJhdGlvbnMgdGhhdCBkZXNjcmliZSB0aGUgc2V0IG9mIHByb2Nlc3NlcyB0byBydW4gb24gZWFjaCBpbnN0YW5jZSBpbiBhIGZsZWV0LlxuICogU2VydmVyIHByb2Nlc3NlcyBydW4gZWl0aGVyIGFuIGV4ZWN1dGFibGUgaW4gYSBjdXN0b20gZ2FtZSBidWlsZCBvciBhIFJlYWx0aW1lIFNlcnZlcnMgc2NyaXB0LlxuICogR2FtZUxpZnQgbGF1bmNoZXMgdGhlIGNvbmZpZ3VyZWQgcHJvY2Vzc2VzLCBtYW5hZ2VzIHRoZWlyIGxpZmUgY3ljbGUsIGFuZCByZXBsYWNlcyB0aGVtIGFzIG5lZWRlZC5cbiAqIEVhY2ggaW5zdGFuY2UgY2hlY2tzIHJlZ3VsYXJseSBmb3IgYW4gdXBkYXRlZCBydW50aW1lIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQSBHYW1lTGlmdCBpbnN0YW5jZSBpcyBsaW1pdGVkIHRvIDUwIHByb2Nlc3NlcyBydW5uaW5nIGNvbmN1cnJlbnRseS5cbiAqIFRvIGNhbGN1bGF0ZSB0aGUgdG90YWwgbnVtYmVyIG9mIHByb2Nlc3NlcyBpbiBhIHJ1bnRpbWUgY29uZmlndXJhdGlvbiwgYWRkIHRoZSB2YWx1ZXMgb2YgdGhlIGBDb25jdXJyZW50RXhlY3V0aW9uc2AgcGFyYW1ldGVyIGZvciBlYWNoIGBTZXJ2ZXJQcm9jZXNzYC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nYW1lbGlmdC9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvZmxlZXRzLW11bHRpcHJvY2Vzcy5odG1sXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVudGltZUNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgYWxsb3dlZCB0byBsYXVuY2ggYSBuZXcgZ2FtZSBzZXNzaW9uIGFuZCBoYXZlIGl0IHJlcG9ydCByZWFkeSB0byBob3N0IHBsYXllcnMuXG4gICAqIER1cmluZyB0aGlzIHRpbWUsIHRoZSBnYW1lIHNlc3Npb24gaXMgaW4gc3RhdHVzIGBBQ1RJVkFUSU5HYC5cbiAgICpcbiAgICogSWYgdGhlIGdhbWUgc2Vzc2lvbiBkb2VzIG5vdCBiZWNvbWUgYWN0aXZlIGJlZm9yZSB0aGUgdGltZW91dCwgaXQgaXMgZW5kZWQgYW5kIHRoZSBnYW1lIHNlc3Npb24gc3RhdHVzIGlzIGNoYW5nZWQgdG8gYFRFUk1JTkFURURgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBieSBkZWZhdWx0IGdhbWUgc2Vzc2lvbiBhY3RpdmF0aW9uIHRpbWVvdXQgaXMgMzAwIHNlY29uZHNcbiAgICovXG4gIHJlYWRvbmx5IGdhbWVTZXNzaW9uQWN0aXZhdGlvblRpbWVvdXQ/OiBjZGsuRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgZ2FtZSBzZXNzaW9ucyBpbiBzdGF0dXMgYEFDVElWQVRJTkdgIHRvIGFsbG93IG9uIGFuIGluc3RhbmNlLlxuICAgKlxuICAgKiBUaGlzIHNldHRpbmcgbGltaXRzIHRoZSBpbnN0YW5jZSByZXNvdXJjZXMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgbmV3IGdhbWUgYWN0aXZhdGlvbnMgYXQgYW55IG9uZSB0aW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBsaW1pdFxuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q29uY3VycmVudEdhbWVTZXNzaW9uQWN0aXZhdGlvbnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgY29sbGVjdGlvbiBvZiBzZXJ2ZXIgcHJvY2VzcyBjb25maWd1cmF0aW9ucyB0aGF0IGlkZW50aWZ5IHdoYXQgc2VydmVyIHByb2Nlc3NlcyB0byBydW4gb24gZWFjaCBpbnN0YW5jZSBpbiBhIGZsZWV0LlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmVyUHJvY2Vzc2VzOiBTZXJ2ZXJQcm9jZXNzW107XG59XG5cbi8qKlxuICogQSBwb2xpY3kgdGhhdCBsaW1pdHMgdGhlIG51bWJlciBvZiBnYW1lIHNlc3Npb25zIGEgcGxheWVyIGNhbiBjcmVhdGUgb24gdGhlIHNhbWUgZmxlZXQuXG4gKiBUaGlzIG9wdGlvbmFsIHBvbGljeSBnaXZlcyBnYW1lIG93bmVycyBjb250cm9sIG92ZXIgaG93IHBsYXllcnMgY2FuIGNvbnN1bWUgYXZhaWxhYmxlIGdhbWUgc2VydmVyIHJlc291cmNlcy5cbiAqIEEgcmVzb3VyY2UgY3JlYXRpb24gcG9saWN5IG1ha2VzIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50OiBcIkFuIGluZGl2aWR1YWwgcGxheWVyIGNhbiBjcmVhdGUgYSBtYXhpbXVtIG51bWJlciBvZiBuZXcgZ2FtZSBzZXNzaW9ucyB3aXRoaW4gYSBzcGVjaWZpZWQgdGltZSBwZXJpb2RcIi5cbiAqXG4gKiBUaGUgcG9saWN5IGlzIGV2YWx1YXRlZCB3aGVuIGEgcGxheWVyIHRyaWVzIHRvIGNyZWF0ZSBhIG5ldyBnYW1lIHNlc3Npb24uXG4gKiBGb3IgZXhhbXBsZSwgYXNzdW1lIHlvdSBoYXZlIGEgcG9saWN5IG9mIDEwIG5ldyBnYW1lIHNlc3Npb25zIGFuZCBhIHRpbWUgcGVyaW9kIG9mIDYwIG1pbnV0ZXMuXG4gKiBPbiByZWNlaXZpbmcgYSBgQ3JlYXRlR2FtZVNlc3Npb25gIHJlcXVlc3QsIEFtYXpvbiBHYW1lTGlmdCBjaGVja3MgdGhhdCB0aGUgcGxheWVyIChpZGVudGlmaWVkIGJ5IENyZWF0b3JJZCkgaGFzIGNyZWF0ZWQgZmV3ZXIgdGhhbiAxMCBnYW1lIHNlc3Npb25zIGluIHRoZSBwYXN0IDYwIG1pbnV0ZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VDcmVhdGlvbkxpbWl0UG9saWN5IHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBnYW1lIHNlc3Npb25zIHRoYXQgYW4gaW5kaXZpZHVhbCBjYW4gY3JlYXRlIGR1cmluZyB0aGUgcG9saWN5IHBlcmlvZC5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gbGltaXQgb24gdGhlIG51bWJlciBvZiBnYW1lIHNlc3Npb25zIHRoYXQgYW4gaW5kaXZpZHVhbCBjYW4gY3JlYXRlIGR1cmluZyB0aGUgcG9saWN5IHBlcmlvZFxuICAgKi9cbiAgcmVhZG9ubHkgbmV3R2FtZVNlc3Npb25zUGVyQ3JlYXRvcj86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHRpbWUgc3BhbiB1c2VkIGluIGV2YWx1YXRpbmcgdGhlIHJlc291cmNlIGNyZWF0aW9uIGxpbWl0IHBvbGljeS5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gcG9saWN5IHBlcmlvZFxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5UGVyaW9kPzogY2RrLkR1cmF0aW9uLFxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBHYW1lbGlmdCBmbGVldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGbGVldCBleHRlbmRzIGNkay5JUmVzb3VyY2UsIGlhbS5JR3JhbnRhYmxlLCBJR2FtZVNlc3Npb25RdWV1ZURlc3RpbmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBJZGVudGlmaWVyIG9mIHRoZSBmbGVldC5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZmxlZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBmbGVldC5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZmxlZXRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgdGhlIGBncmFudGVlYCBpZGVudGl0eSBwZXJtaXNzaW9ucyB0byBwZXJmb3JtIGBhY3Rpb25zYC5cbiAgICovXG4gIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBnaXZlbiBuYW1lZCBtZXRyaWMgZm9yIHRoaXMgZmxlZXQuXG4gICAqL1xuICBtZXRyaWMobWV0cmljTmFtZTogc3RyaW5nLCBwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBJbnN0YW5jZXMgd2l0aCBgQUNUSVZFYCBzdGF0dXMsIHdoaWNoIG1lYW5zIHRoZXkgYXJlIHJ1bm5pbmcgYWN0aXZlIHNlcnZlciBwcm9jZXNzZXMuXG4gICAqIFRoZSBjb3VudCBpbmNsdWRlcyBpZGxlIGluc3RhbmNlcyBhbmQgdGhvc2UgdGhhdCBhcmUgaG9zdGluZyBvbmUgb3IgbW9yZSBnYW1lIHNlc3Npb25zLlxuICAgKiBUaGlzIG1ldHJpYyBtZWFzdXJlcyBjdXJyZW50IHRvdGFsIGluc3RhbmNlIGNhcGFjaXR5LlxuICAgKlxuICAgKiBUaGlzIG1ldHJpYyBjYW4gYmUgdXNlZCB3aXRoIGF1dG9tYXRpYyBzY2FsaW5nLlxuICAgKi9cbiAgbWV0cmljQWN0aXZlSW5zdGFuY2VzKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG5cbiAgLyoqXG4gICAqIFBlcmNlbnRhZ2Ugb2YgYWxsIGFjdGl2ZSBpbnN0YW5jZXMgdGhhdCBhcmUgaWRsZSAoY2FsY3VsYXRlZCBhcyBJZGxlSW5zdGFuY2VzIC8gQWN0aXZlSW5zdGFuY2VzKS5cbiAgICogVGhpcyBtZXRyaWMgY2FuIGJlIHVzZWQgZm9yIGF1dG9tYXRpYyBzY2FsaW5nLlxuICAgKi9cbiAgbWV0cmljUGVyY2VudElkbGVJbnN0YW5jZXMocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcblxuICAvKipcbiAgICogVGFyZ2V0IG51bWJlciBvZiBhY3RpdmUgaW5zdGFuY2VzIHRoYXQgR2FtZUxpZnQgaXMgd29ya2luZyB0byBtYWludGFpbiBpbiB0aGUgZmxlZXQuXG4gICAqIFdpdGggYXV0b21hdGljIHNjYWxpbmcsIHRoaXMgdmFsdWUgaXMgZGV0ZXJtaW5lZCBiYXNlZCBvbiB0aGUgc2NhbGluZyBwb2xpY2llcyBjdXJyZW50bHkgaW4gZm9yY2UuXG4gICAqIFdpdGhvdXQgYXV0b21hdGljIHNjYWxpbmcsIHRoaXMgdmFsdWUgaXMgc2V0IG1hbnVhbGx5LlxuICAgKiBUaGlzIG1ldHJpYyBpcyBub3QgYXZhaWxhYmxlIHdoZW4gdmlld2luZyBkYXRhIGZvciBmbGVldCBtZXRyaWMgZ3JvdXBzLlxuICAgKi9cbiAgbWV0cmljRGVzaXJlZEluc3RhbmNlcyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBBY3RpdmUgaW5zdGFuY2VzIHRoYXQgYXJlIGN1cnJlbnRseSBob3N0aW5nIHplcm8gKDApIGdhbWUgc2Vzc2lvbnMuXG4gICAqIFRoaXMgbWV0cmljIG1lYXN1cmVzIGNhcGFjaXR5IHRoYXQgaXMgYXZhaWxhYmxlIGJ1dCB1bnVzZWQuXG4gICAqIFRoaXMgbWV0cmljIGNhbiBiZSB1c2VkIHdpdGggYXV0b21hdGljIHNjYWxpbmcuXG4gICAqL1xuICBtZXRyaWNJZGxlSW5zdGFuY2VzKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBzcG90IGluc3RhbmNlcyB0aGF0IGhhdmUgYmVlbiBpbnRlcnJ1cHRlZC5cbiAgICovXG4gIG1ldHJpY0luc3RhbmNlSW50ZXJydXB0aW9ucyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIG51bWJlciBvZiBpbnN0YW5jZXMgdGhhdCBhcmUgYWxsb3dlZCBmb3IgdGhlIGZsZWV0LlxuICAgKiBBIGZsZWV0J3MgaW5zdGFuY2UgbWF4aW11bSBkZXRlcm1pbmVzIHRoZSBjYXBhY2l0eSBjZWlsaW5nIGR1cmluZyBtYW51YWwgb3IgYXV0b21hdGljIHNjYWxpbmcgdXAuXG4gICAqIFRoaXMgbWV0cmljIGlzIG5vdCBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIGRhdGEgZm9yIGZsZWV0IG1ldHJpYyBncm91cHMuXG4gICAqL1xuICBtZXRyaWNNYXhJbnN0YW5jZXMocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcblxuICAvKipcbiAgICogTWluaW11bSBudW1iZXIgb2YgaW5zdGFuY2VzIGFsbG93ZWQgZm9yIHRoZSBmbGVldC5cbiAgICogQSBmbGVldCdzIGluc3RhbmNlIG1pbmltdW0gZGV0ZXJtaW5lcyB0aGUgY2FwYWNpdHkgZmxvb3IgZHVyaW5nIG1hbnVhbCBvciBhdXRvbWF0aWMgc2NhbGluZyBkb3duLlxuICAgKiBUaGlzIG1ldHJpYyBpcyBub3QgYXZhaWxhYmxlIHdoZW4gdmlld2luZyBkYXRhIGZvciBmbGVldCBtZXRyaWMgZ3JvdXBzLlxuICAgKi9cbiAgbWV0cmljTWluSW5zdGFuY2VzKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBuZXcgR2FtZWxpZnQgZmxlZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbGVldFByb3BzIHtcbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpdmUgbGFiZWwgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggYSBmbGVldC4gRmxlZXQgbmFtZXMgZG8gbm90IG5lZWQgdG8gYmUgdW5pcXVlLlxuICAgKi9cbiAgcmVhZG9ubHkgZmxlZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIGZsZWV0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBkZXNjcmlwdGlvbiBpcyBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIHVzZSBPbi1EZW1hbmQgb3IgU3BvdCBpbnN0YW5jZXMgZm9yIHRoaXMgZmxlZXQuXG4gICAqIEJ5IGRlZmF1bHQsIGZsZWV0IHVzZSBvbiBkZW1hbmQgY2FwYWNpdHkuXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgY2Fubm90IGJlIGNoYW5nZWQgYWZ0ZXIgdGhlIGZsZWV0IGlzIGNyZWF0ZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dhbWVsaWZ0L2xhdGVzdC9kZXZlbG9wZXJndWlkZS9nYW1lbGlmdC1lYzItaW5zdGFuY2VzLmh0bWwjZ2FtZWxpZnQtZWMyLWluc3RhbmNlcy1zcG90XG4gICAqXG4gICAqIEBkZWZhdWx0IEdhbWVsaWZ0IGZsZWV0IHVzZSBvbiBkZW1hbmQgY2FwYWNpdHlcbiAgICovXG4gIHJlYWRvbmx5IHVzZVNwb3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcm9tcHRzIEdhbWVMaWZ0IHRvIGdlbmVyYXRlIGEgVExTL1NTTCBjZXJ0aWZpY2F0ZSBmb3IgdGhlIGZsZWV0LlxuICAgKiBHYW1lTGlmdCB1c2VzIHRoZSBjZXJ0aWZpY2F0ZXMgdG8gZW5jcnlwdCB0cmFmZmljIGJldHdlZW4gZ2FtZSBjbGllbnRzIGFuZCB0aGUgZ2FtZSBzZXJ2ZXJzIHJ1bm5pbmcgb24gR2FtZUxpZnQuXG4gICAqXG4gICAqIFlvdSBjYW4ndCBjaGFuZ2UgdGhpcyBwcm9wZXJ0eSBhZnRlciB5b3UgY3JlYXRlIHRoZSBmbGVldC5cbiAgICpcbiAgICogQWRkaXRpb25uYWwgaW5mbzpcbiAgICogQVdTIENlcnRpZmljYXRlIE1hbmFnZXIgKEFDTSkgY2VydGlmaWNhdGVzIGV4cGlyZSBhZnRlciAxMyBtb250aHMuXG4gICAqIENlcnRpZmljYXRlIGV4cGlyYXRpb24gY2FuIGNhdXNlIGZsZWV0cyB0byBmYWlsLCBwcmV2ZW50aW5nIHBsYXllcnMgZnJvbSBjb25uZWN0aW5nIHRvIGluc3RhbmNlcyBpbiB0aGUgZmxlZXQuXG4gICAqIFdlIHJlY29tbWVuZCB5b3UgcmVwbGFjZSBmbGVldHMgYmVmb3JlIDEzIG1vbnRocywgY29uc2lkZXIgdXNpbmcgZmxlZXQgYWxpYXNlcyBmb3IgYSBzbW9vdGggdHJhbnNpdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgVExTL1NTTCBjZXJ0aWZpY2F0ZSBhcmUgZ2VuZXJhdGVkIGZvciB0aGUgZmxlZXRcbiAgICovXG4gIHJlYWRvbmx5IHVzZUNlcnRpZmljYXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIElBTSByb2xlIGFzc3VtZWQgYnkgR2FtZUxpZnQgZmxlZXQgaW5zdGFuY2VzIHRvIGFjY2VzcyBBV1MgcmVzc291cmNlcy5cbiAgICogV2l0aCBhIHJvbGUgc2V0LCBhbnkgYXBwbGljYXRpb24gdGhhdCBydW5zIG9uIGFuIGluc3RhbmNlIGluIHRoaXMgZmxlZXQgY2FuIGFzc3VtZSB0aGUgcm9sZSwgaW5jbHVkaW5nIGluc3RhbGwgc2NyaXB0cywgc2VydmVyIHByb2Nlc3NlcywgYW5kIGRhZW1vbnMgKGJhY2tncm91bmQgcHJvY2Vzc2VzKS5cbiAgICogSWYgcHJvdmlkaW5nIGEgY3VzdG9tIHJvbGUsIGl0IG5lZWRzIHRvIHRydXN0IHRoZSBHYW1lTGlmdCBzZXJ2aWNlIHByaW5jaXBhbCAoZ2FtZWxpZnQuYW1hem9uYXdzLmNvbSkuXG4gICAqIE5vIHBlcm1pc3Npb24gaXMgcmVxdWlyZWQgYnkgZGVmYXVsdC5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSBjYW5ub3QgYmUgY2hhbmdlZCBhZnRlciB0aGUgZmxlZXQgaXMgY3JlYXRlZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2FtZWxpZnQvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2dhbWVsaWZ0LXNkay1zZXJ2ZXItcmVzb3VyY2VzLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIHJvbGUgd2lsbCBiZSBjcmVhdGVkIHdpdGggZGVmYXVsdCB0cnVzdCB0byBHYW1lbGlmdCBzZXJ2aWNlIHByaW5jaXBhbC5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIEEgVlBDIHBlZXJpbmcgY29ubmVjdGlvbiBiZXR3ZWVuIHlvdXIgR2FtZUxpZnQtaG9zdGVkIGdhbWUgc2VydmVycyBhbmQgeW91ciBvdGhlciBub24tR2FtZUxpZnQgcmVzb3VyY2VzLlxuICAgKiBVc2UgQW1hem9uIFZpcnR1YWwgUHJpdmF0ZSBDbG91ZCAoVlBDKSBwZWVyaW5nIGNvbm5lY3Rpb25zIHRvIGVuYWJsZSB5b3VyIGdhbWUgc2VydmVycyB0byBjb21tdW5pY2F0ZSBkaXJlY3RseSBhbmQgcHJpdmF0ZWx5IHdpdGggeW91ciBvdGhlciBBV1MgcmVzb3VyY2VzLCBzdWNoIGFzIGEgd2ViIHNlcnZpY2Ugb3IgYSByZXBvc2l0b3J5LlxuICAgKiBZb3UgY2FuIGVzdGFibGlzaCBWUEMgcGVlcmluZyB3aXRoIGFueSByZXNvdXJjZXMgdGhhdCBydW4gb24gQVdTIGFuZCBhcmUgbWFuYWdlZCBieSBhbiBBV1MgYWNjb3VudCB0aGF0IHlvdSBoYXZlIGFjY2VzcyB0by5cbiAgICogVGhlIFZQQyBtdXN0IGJlIGluIHRoZSBzYW1lIFJlZ2lvbiBhcyB5b3VyIGZsZWV0LlxuICAgKlxuICAgKiBXYXJuaW5nOlxuICAgKiBCZSBzdXJlIHRvIGNyZWF0ZSBhIFZQQyBQZWVyaW5nIGF1dGhvcml6YXRpb24gdGhyb3VnaCBHYW1lbGlmdCBTZXJ2aWNlIEFQSS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2FtZWxpZnQvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3ZwYy1wZWVyaW5nLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgbm8gdnBjIHBlZXJpbmdcbiAgICovXG4gIHJlYWRvbmx5IHBlZXJWcGM/OiBlYzIuSVZwYztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgYW4gQVdTIENsb3VkV2F0Y2ggbWV0cmljIGdyb3VwIHRvIGFkZCB0aGlzIGZsZWV0IHRvLlxuICAgKiBBIG1ldHJpYyBncm91cCBpcyB1c2VkIHRvIGFnZ3JlZ2F0ZSB0aGUgbWV0cmljcyBmb3IgbXVsdGlwbGUgZmxlZXRzLlxuICAgKiBZb3UgY2FuIHNwZWNpZnkgYW4gZXhpc3RpbmcgbWV0cmljIGdyb3VwIG5hbWUgb3Igc2V0IGEgbmV3IG5hbWUgdG8gY3JlYXRlIGEgbmV3IG1ldHJpYyBncm91cC5cbiAgICogQSBmbGVldCBjYW4gYmUgaW5jbHVkZWQgaW4gb25seSBvbmUgbWV0cmljIGdyb3VwIGF0IGEgdGltZS5cbiAgICpcbiAgICogQGRlZmF1bHQgRmxlZXQgbWV0cmljcyBhcmUgYWdncmVnYXRlZCB3aXRoIG90aGVyIGZsZWV0cyBpbiB0aGUgZGVmYXVsdCBtZXRyaWMgZ3JvdXBcbiAgICovXG4gIHJlYWRvbmx5IG1ldHJpY0dyb3VwPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgR2FtZUxpZnQtc3VwcG9ydGVkIEFtYXpvbiBFQzIgaW5zdGFuY2UgdHlwZSB0byB1c2UgZm9yIGFsbCBmbGVldCBpbnN0YW5jZXMuXG4gICAqIEluc3RhbmNlIHR5cGUgZGV0ZXJtaW5lcyB0aGUgY29tcHV0aW5nIHJlc291cmNlcyB0aGF0IHdpbGwgYmUgdXNlZCB0byBob3N0IHlvdXIgZ2FtZSBzZXJ2ZXJzLCBpbmNsdWRpbmcgQ1BVLCBtZW1vcnksIHN0b3JhZ2UsIGFuZCBuZXR3b3JraW5nIGNhcGFjaXR5LlxuICAgKlxuICAgKiBAc2VlIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9lYzIvaW5zdGFuY2UtdHlwZXMvIGZvciBkZXRhaWxlZCBkZXNjcmlwdGlvbnMgb2YgQW1hem9uIEVDMiBpbnN0YW5jZSB0eXBlcy5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZTtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBFQzIgaW5zdGFuY2VzIHRoYXQgeW91IHdhbnQgdGhpcyBmbGVldCB0byBob3N0LlxuICAgKiBXaGVuIGNyZWF0aW5nIGEgbmV3IGZsZWV0LCBHYW1lTGlmdCBhdXRvbWF0aWNhbGx5IHNldHMgdGhpcyB2YWx1ZSB0byBcIjFcIiBhbmQgaW5pdGlhdGVzIGEgc2luZ2xlIGluc3RhbmNlLlxuICAgKiBPbmNlIHRoZSBmbGVldCBpcyBhY3RpdmUsIHVwZGF0ZSB0aGlzIHZhbHVlIHRvIHRyaWdnZXIgR2FtZUxpZnQgdG8gYWRkIG9yIHJlbW92ZSBpbnN0YW5jZXMgZnJvbSB0aGUgZmxlZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IERlZmF1bHQgY2FwYWNpdHkgaXMgMFxuICAgKi9cbiAgcmVhZG9ubHkgZGVzaXJlZENhcGFjaXR5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgaW5zdGFuY2VzIHRoYXQgYXJlIGFsbG93ZWQgaW4gdGhlIHNwZWNpZmllZCBmbGVldCBsb2NhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIGRlZmF1bHQgaXMgMFxuICAgKi9cbiAgcmVhZG9ubHkgbWluU2l6ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGluc3RhbmNlcyB0aGF0IGFyZSBhbGxvd2VkIGluIHRoZSBzcGVjaWZpZWQgZmxlZXQgbG9jYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBkZWZhdWx0IGlzIDFcbiAgICovXG4gIHJlYWRvbmx5IG1heFNpemU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGVybWluYXRpb24gcHJvdGVjdGlvbiBmb3IgYWN0aXZlIGdhbWUgc2Vzc2lvbnMgb24gdGhlIGZsZWV0LlxuICAgKiBCeSBkZWZhdWx0LCBuZXcgZ2FtZSBzZXNzaW9ucyBhcmUgcHJvdGVjdGVkIGFuZCBjYW5ub3QgYmUgdGVybWluYXRlZCBkdXJpbmcgYSBzY2FsZS1kb3duIGV2ZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlIC0gR2FtZSBzZXNzaW9ucyBpbiBgQUNUSVZFYCBzdGF0dXMgY2Fubm90IGJlIHRlcm1pbmF0ZWQgZHVyaW5nIGEgc2NhbGUtZG93biBldmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHByb3RlY3ROZXdHYW1lU2Vzc2lvbj8gOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGNvbGxlY3Rpb24gb2Ygc2VydmVyIHByb2Nlc3MgY29uZmlndXJhdGlvbnMgdGhhdCBkZXNjcmliZSB0aGUgc2V0IG9mIHByb2Nlc3NlcyB0byBydW4gb24gZWFjaCBpbnN0YW5jZSBpbiBhIGZsZWV0LlxuICAgKiBTZXJ2ZXIgcHJvY2Vzc2VzIHJ1biBlaXRoZXIgYW4gZXhlY3V0YWJsZSBpbiBhIGN1c3RvbSBnYW1lIGJ1aWxkIG9yIGEgUmVhbHRpbWUgU2VydmVycyBzY3JpcHQuXG4gICAqIEdhbWVMaWZ0IGxhdW5jaGVzIHRoZSBjb25maWd1cmVkIHByb2Nlc3NlcywgbWFuYWdlcyB0aGVpciBsaWZlIGN5Y2xlLCBhbmQgcmVwbGFjZXMgdGhlbSBhcyBuZWVkZWQuXG4gICAqIEVhY2ggaW5zdGFuY2UgY2hlY2tzIHJlZ3VsYXJseSBmb3IgYW4gdXBkYXRlZCBydW50aW1lIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEEgR2FtZUxpZnQgaW5zdGFuY2UgaXMgbGltaXRlZCB0byA1MCBwcm9jZXNzZXMgcnVubmluZyBjb25jdXJyZW50bHkuXG4gICAqIFRvIGNhbGN1bGF0ZSB0aGUgdG90YWwgbnVtYmVyIG9mIHByb2Nlc3NlcyBpbiBhIHJ1bnRpbWUgY29uZmlndXJhdGlvbiwgYWRkIHRoZSB2YWx1ZXMgb2YgdGhlIENvbmN1cnJlbnRFeGVjdXRpb25zIHBhcmFtZXRlciBmb3IgZWFjaCBTZXJ2ZXJQcm9jZXNzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nYW1lbGlmdC9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvZmxlZXRzLW11bHRpcHJvY2Vzcy5odG1sXG4gICAqL1xuICByZWFkb25seSBydW50aW1lQ29uZmlndXJhdGlvbjogUnVudGltZUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIHJlbW90ZSBsb2NhdGlvbnMgdG8gZGVwbG95IGFkZGl0aW9uYWwgaW5zdGFuY2VzIHRvIGFuZCBtYW5hZ2UgYXMgcGFydCBvZiB0aGUgZmxlZXQuXG4gICAqIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHVzZWQgd2hlbiBjcmVhdGluZyBmbGVldHMgaW4gQVdTIFJlZ2lvbnMgdGhhdCBzdXBwb3J0IG11bHRpcGxlIGxvY2F0aW9ucy5cbiAgICogWW91IGNhbiBhZGQgYW55IEdhbWVMaWZ0LXN1cHBvcnRlZCBBV1MgUmVnaW9uIGFzIGEgcmVtb3RlIGxvY2F0aW9uLCBpbiB0aGUgZm9ybSBvZiBhbiBBV1MgUmVnaW9uIGNvZGUgc3VjaCBhcyBgdXMtd2VzdC0yYC5cbiAgICogVG8gY3JlYXRlIGEgZmxlZXQgd2l0aCBpbnN0YW5jZXMgaW4gdGhlIGhvbWUgcmVnaW9uIG9ubHksIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IENyZWF0ZSBhIGZsZWV0IHdpdGggaW5zdGFuY2VzIGluIHRoZSBob21lIHJlZ2lvbiBvbmx5XG4gICAqL1xuICByZWFkb25seSBsb2NhdGlvbnM/OiBMb2NhdGlvbltdO1xuXG4gIC8qKlxuICAgKiBBIHBvbGljeSB0aGF0IGxpbWl0cyB0aGUgbnVtYmVyIG9mIGdhbWUgc2Vzc2lvbnMgdGhhdCBhbiBpbmRpdmlkdWFsIHBsYXllciBjYW4gY3JlYXRlIG9uIGluc3RhbmNlcyBpbiB0aGlzIGZsZWV0IHdpdGhpbiBhIHNwZWNpZmllZCBzcGFuIG9mIHRpbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIHJlc291cmNlIGNyZWF0aW9uIGxpbWl0IHBvbGljeVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VDcmVhdGlvbkxpbWl0UG9saWN5PzogUmVzb3VyY2VDcmVhdGlvbkxpbWl0UG9saWN5O1xufVxuXG4vKipcbiAqIEEgZnVsbCBzcGVjaWZpY2F0aW9uIG9mIGEgZmxlZXQgdGhhdCBjYW4gYmUgdXNlZCB0byBpbXBvcnQgaXQgZmx1ZW50bHkgaW50byB0aGUgQ0RLIGFwcGxpY2F0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsZWV0QXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBmbGVldFxuICAgKlxuICAgKiBBdCBsZWFzdCBvbmUgb2YgYGZsZWV0QXJuYCBhbmQgYGZsZWV0SWRgIG11c3QgYmUgcHJvdmlkZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGRlcml2ZWQgZnJvbSBgZmxlZXRJZGAuXG4gICAqL1xuICByZWFkb25seSBmbGVldEFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGZsZWV0XG4gICAqXG4gICAqIEF0IGxlYXN0IG9uZSBvZiBgZmxlZXRJZGAgYW5kIGBmbGVldEFybmAgIG11c3QgYmUgcHJvdmlkZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGRlcml2ZWQgZnJvbSBgZmxlZXRBcm5gLlxuICAgKi9cbiAgcmVhZG9ubHkgZmxlZXRJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElBTSByb2xlIGFzc3VtZWQgYnkgR2FtZUxpZnQgZmxlZXQgaW5zdGFuY2VzIHRvIGFjY2VzcyBBV1MgcmVzc291cmNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIGltcG9ydGVkIGZsZWV0IGNhbm5vdCBiZSBncmFudGVkIGFjY2VzcyB0byBvdGhlciByZXNvdXJjZXMgYXMgYW4gYGlhbS5JR3JhbnRhYmxlYC5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGU/OiBpYW0uSVJvbGU7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgbmV3IGFuZCBpbXBvcnRlZCBHYW1lTGlmdCBmbGVldC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZsZWV0QmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElGbGVldCB7XG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgZmxlZXQgZnJvbSBpdHMgYXR0cmlidXRlcy5cbiAgICovXG4gIHN0YXRpYyBmcm9tRmxlZXRBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBGbGVldEF0dHJpYnV0ZXMpOiBJRmxlZXQge1xuICAgIGlmICghYXR0cnMuZmxlZXRJZCAmJiAhYXR0cnMuZmxlZXRBcm4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRWl0aGVyIGZsZWV0SWQgb3IgZmxlZXRBcm4gbXVzdCBiZSBwcm92aWRlZCBpbiBGbGVldEF0dHJpYnV0ZXMnKTtcbiAgICB9XG4gICAgY29uc3QgZmxlZXRJZCA9IGF0dHJzLmZsZWV0SWQgPz9cbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oYXR0cnMuZmxlZXRBcm4hLCBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUpLnJlc291cmNlTmFtZTtcblxuICAgIGlmICghZmxlZXRJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBmbGVldCBpZGVudGlmaWVyIGZvdW5kIGluIEFSTjogJyR7YXR0cnMuZmxlZXRBcm59J2ApO1xuICAgIH1cblxuICAgIGNvbnN0IGZsZWV0QXJuID0gYXR0cnMuZmxlZXRBcm4gPz8gY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogJ2dhbWVsaWZ0JyxcbiAgICAgIHJlc291cmNlOiAnZmxlZXQnLFxuICAgICAgcmVzb3VyY2VOYW1lOiBhdHRycy5mbGVldElkLFxuICAgICAgYXJuRm9ybWF0OiBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgRmxlZXRCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBmbGVldElkID0gZmxlZXRJZCE7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZmxlZXRBcm4gPSBmbGVldEFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBncmFudFByaW5jaXBhbCA9IGF0dHJzLnJvbGUgPz8gbmV3IGlhbS5Vbmtub3duUHJpbmNpcGFsKHsgcmVzb3VyY2U6IHRoaXMgfSk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcm9sZSA9IGF0dHJzLnJvbGU7XG5cbiAgICAgIGNvbnN0cnVjdG9yKHM6IENvbnN0cnVjdCwgaTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHMsIGksIHtcbiAgICAgICAgICBlbnZpcm9ubWVudEZyb21Bcm46IGZsZWV0QXJuLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgICogVGhlIElkZW50aWZpZXIgb2YgdGhlIGZsZWV0LlxuICAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBmbGVldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGZsZWV0LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGZsZWV0QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmluY2lwYWwgdGhpcyBHYW1lTGlmdCBmbGVldCBpcyB1c2luZy5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBncmFudFByaW5jaXBhbDogaWFtLklQcmluY2lwYWw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbnM6IExvY2F0aW9uW10gPSBbXTtcblxuICAvKipcbiAgICogRGVmaW5lcyBhbiBhbGlhcyBmb3IgdGhpcyBmbGVldC5cbiAgICpcbiAgICogYGBgdHNcbiAgICogZGVjbGFyZSBjb25zdCBmbGVldDogZ2FtZWxpZnQuRmxlZXRCYXNlO1xuICAgKlxuICAgKiBmbGVldC5hZGRBbGlhcygnTGl2ZScpO1xuICAgKlxuICAgKiAvLyBJcyBlcXVpdmFsZW50IHRvXG4gICAqXG4gICAqIG5ldyBnYW1lbGlmdC5BbGlhcyh0aGlzLCAnQWxpYXNMaXZlJywge1xuICAgKiAgIGFsaWFzTmFtZTogJ0xpdmUnLFxuICAgKiAgIGZsZWV0OiBmbGVldCxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gYWxpYXNOYW1lIFRoZSBuYW1lIG9mIHRoZSBhbGlhc1xuICAgKiBAcGFyYW0gb3B0aW9ucyBBbGlhcyBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgYWRkQWxpYXMoYWxpYXNOYW1lOiBzdHJpbmcsIG9wdGlvbnM6IEFsaWFzT3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBBbGlhcyh0aGlzLCBgQWxpYXMke2FsaWFzTmFtZX1gLCB7XG4gICAgICBhbGlhc05hbWUsXG4gICAgICBmbGVldDogdGhpcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuZmxlZXRBcm5dLFxuICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnM6IGFjdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljKG1ldHJpY05hbWU6IHN0cmluZywgcHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBuYW1lc3BhY2U6ICdBV1MvR2FtZUxpZnQnLFxuICAgICAgbWV0cmljTmFtZTogbWV0cmljTmFtZSxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgRmxlZXRJZDogdGhpcy5mbGVldElkLFxuICAgICAgfSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pLmF0dGFjaFRvKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0FjdGl2ZUluc3RhbmNlcyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5jYW5uZWRNZXRyaWMoR2FtZUxpZnRNZXRyaWNzLmFjdGl2ZUluc3RhbmNlc0F2ZXJhZ2UsIHByb3BzKTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNQZXJjZW50SWRsZUluc3RhbmNlcyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5jYW5uZWRNZXRyaWMoR2FtZUxpZnRNZXRyaWNzLnBlcmNlbnRJZGxlSW5zdGFuY2VzQXZlcmFnZSwgcHJvcHMpO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0Rlc2lyZWRJbnN0YW5jZXMocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMuY2FubmVkTWV0cmljKEdhbWVMaWZ0TWV0cmljcy5kZXNpcmVkSW5zdGFuY2VzQXZlcmFnZSwgcHJvcHMpO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0lkbGVJbnN0YW5jZXMocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMuY2FubmVkTWV0cmljKEdhbWVMaWZ0TWV0cmljcy5pZGxlSW5zdGFuY2VzQXZlcmFnZSwgcHJvcHMpO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY0luc3RhbmNlSW50ZXJydXB0aW9ucyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5jYW5uZWRNZXRyaWMoR2FtZUxpZnRNZXRyaWNzLmluc3RhbmNlSW50ZXJydXB0aW9uc1N1bSwgcHJvcHMpO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY01heEluc3RhbmNlcyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5jYW5uZWRNZXRyaWMoR2FtZUxpZnRNZXRyaWNzLm1heEluc3RhbmNlc0F2ZXJhZ2UsIHByb3BzKTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNNaW5JbnN0YW5jZXMocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMuY2FubmVkTWV0cmljKEdhbWVMaWZ0TWV0cmljcy5taW5JbnN0YW5jZXNBdmVyYWdlLCBwcm9wcyk7XG4gIH1cblxuICBwcml2YXRlIGNhbm5lZE1ldHJpYyhmbjogKGRpbXM6IHsgRmxlZXRJZDogc3RyaW5nIH0pID0+IGNsb3Vkd2F0Y2guTWV0cmljUHJvcHMsIHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgLi4uZm4oeyBGbGVldElkOiB0aGlzLmZsZWV0SWQgfSksXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KS5hdHRhY2hUbyh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJOIHRvIHB1dCBpbnRvIHRoZSBkZXN0aW5hdGlvbiBmaWVsZCBvZiBhIGdhbWUgc2Vzc2lvbiBxdWV1ZVxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZUFybkZvckRlc3RpbmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmZsZWV0QXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZW1vdGUgbG9jYXRpb25zIHRvIGRlcGxveSBhZGRpdGlvbmFsIGluc3RhbmNlcyB0byBhbmQgbWFuYWdlIGFzIHBhcnQgb2YgdGhlIGZsZWV0LlxuICAgKlxuICAgKiBAcGFyYW0gcmVnaW9uIFRoZSBBV1MgcmVnaW9uIHRvIGFkZFxuICAgKi9cbiAgcHVibGljIGFkZExvY2F0aW9uKHJlZ2lvbjogc3RyaW5nLCBkZXNpcmVkQ2FwYWNpdHk/OiBudW1iZXIsIG1pblNpemU/OiBudW1iZXIsIG1heFNpemU/OiBudW1iZXIpIHtcbiAgICB0aGlzLmFkZEludGVybmFsTG9jYXRpb24oe1xuICAgICAgcmVnaW9uOiByZWdpb24sXG4gICAgICBjYXBhY2l0eToge1xuICAgICAgICBkZXNpcmVkQ2FwYWNpdHk6IGRlc2lyZWRDYXBhY2l0eSxcbiAgICAgICAgbWluU2l6ZTogbWluU2l6ZSxcbiAgICAgICAgbWF4U2l6ZTogbWF4U2l6ZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHJlbW90ZSBsb2NhdGlvbnMgdG8gZGVwbG95IGFkZGl0aW9uYWwgaW5zdGFuY2VzIHRvIGFuZCBtYW5hZ2UgYXMgcGFydCBvZiB0aGUgZmxlZXQuXG4gICAqXG4gICAqIEBwYXJhbSBsb2NhdGlvbiBUaGUgbG9jYXRpb24gdG8gYWRkXG4gICAqL1xuICBwdWJsaWMgYWRkSW50ZXJuYWxMb2NhdGlvbihsb2NhdGlvbjogTG9jYXRpb24pIHtcbiAgICBpZiAodGhpcy5sb2NhdGlvbnMubGVuZ3RoID09IDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBtb3JlIHRoYW4gMTAwIGxvY2F0aW9ucyBhcmUgYWxsb3dlZCBwZXIgZmxlZXQnKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvY2F0aW9ucy5wdXNoKGxvY2F0aW9uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVJlc291cmNlQ3JlYXRpb25MaW1pdFBvbGljeShwcm9wczogRmxlZXRQcm9wcyk6IENmbkZsZWV0LlJlc291cmNlQ3JlYXRpb25MaW1pdFBvbGljeVByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXByb3BzLnJlc291cmNlQ3JlYXRpb25MaW1pdFBvbGljeSB8fFxuICAgICAgICAoIXByb3BzLnJlc291cmNlQ3JlYXRpb25MaW1pdFBvbGljeS5uZXdHYW1lU2Vzc2lvbnNQZXJDcmVhdG9yXG4gICAgICAgICAgICAmJiAhcHJvcHMucmVzb3VyY2VDcmVhdGlvbkxpbWl0UG9saWN5LnBvbGljeVBlcmlvZCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5ld0dhbWVTZXNzaW9uc1BlckNyZWF0b3I6IHByb3BzLnJlc291cmNlQ3JlYXRpb25MaW1pdFBvbGljeS5uZXdHYW1lU2Vzc2lvbnNQZXJDcmVhdG9yLFxuICAgICAgcG9saWN5UGVyaW9kSW5NaW51dGVzOiBwcm9wcy5yZXNvdXJjZUNyZWF0aW9uTGltaXRQb2xpY3kucG9saWN5UGVyaW9kPy50b01pbnV0ZXMoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlTG9jYXRpb25zKCk6IENmbkZsZWV0LkxvY2F0aW9uQ29uZmlndXJhdGlvblByb3BlcnR5W10gfMKgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMubG9jYXRpb25zIHx8IHRoaXMubG9jYXRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgIHJldHVybiB0aGlzLmxvY2F0aW9ucy5tYXAocGFyc2VMb2NhdGlvbik7XG5cbiAgICBmdW5jdGlvbiBwYXJzZUxvY2F0aW9uKGxvY2F0aW9uOiBMb2NhdGlvbik6IENmbkZsZWV0LkxvY2F0aW9uQ29uZmlndXJhdGlvblByb3BlcnR5IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbi5yZWdpb24sXG4gICAgICAgIGxvY2F0aW9uQ2FwYWNpdHk6IHNlbGYucGFyc2VMb2NhdGlvbkNhcGFjaXR5KGxvY2F0aW9uLmNhcGFjaXR5KSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlTG9jYXRpb25DYXBhY2l0eShjYXBhY2l0eT86IExvY2F0aW9uQ2FwYWNpdHkpOiBDZm5GbGVldC5Mb2NhdGlvbkNhcGFjaXR5UHJvcGVydHkgfMKgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWNhcGFjaXR5IHx8XG4gICAgICAgICghY2FwYWNpdHkuZGVzaXJlZENhcGFjaXR5XG4gICAgICAgICAgICAmJiAhY2FwYWNpdHkubWluU2l6ZVxuICAgICAgICAgICAgJiYgIWNhcGFjaXR5Lm1heFNpemUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkZXNpcmVkRWMySW5zdGFuY2VzOiBjYXBhY2l0eS5kZXNpcmVkQ2FwYWNpdHkgPz8gMCxcbiAgICAgIG1pblNpemU6IGNhcGFjaXR5Lm1pblNpemUgPz8gMCxcbiAgICAgIG1heFNpemU6IGNhcGFjaXR5Lm1heFNpemUgPz8gMSxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlUnVudGltZUNvbmZpZ3VyYXRpb24ocHJvcHM6IEZsZWV0UHJvcHMpOiBDZm5GbGVldC5SdW50aW1lQ29uZmlndXJhdGlvblByb3BlcnR5IHzCoHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwcm9wcy5ydW50aW1lQ29uZmlndXJhdGlvbiB8fFxuICAgICAgICAoIXByb3BzLnJ1bnRpbWVDb25maWd1cmF0aW9uLmdhbWVTZXNzaW9uQWN0aXZhdGlvblRpbWVvdXRcbiAgICAgICAgICAgICYmICFwcm9wcy5ydW50aW1lQ29uZmlndXJhdGlvbi5tYXhDb25jdXJyZW50R2FtZVNlc3Npb25BY3RpdmF0aW9uc1xuICAgICAgICAgICAgJiYgcHJvcHMucnVudGltZUNvbmZpZ3VyYXRpb24uc2VydmVyUHJvY2Vzc2VzLmxlbmd0aCA9PSAwKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGdhbWVTZXNzaW9uQWN0aXZhdGlvblRpbWVvdXRTZWNvbmRzOiBwcm9wcy5ydW50aW1lQ29uZmlndXJhdGlvbi5nYW1lU2Vzc2lvbkFjdGl2YXRpb25UaW1lb3V0Py50b1NlY29uZHMoKSxcbiAgICAgIG1heENvbmN1cnJlbnRHYW1lU2Vzc2lvbkFjdGl2YXRpb25zOiBwcm9wcy5ydW50aW1lQ29uZmlndXJhdGlvbi5tYXhDb25jdXJyZW50R2FtZVNlc3Npb25BY3RpdmF0aW9ucyxcbiAgICAgIHNlcnZlclByb2Nlc3NlczogcHJvcHMucnVudGltZUNvbmZpZ3VyYXRpb24uc2VydmVyUHJvY2Vzc2VzLm1hcChwYXJzZVNlcnZlclByb2Nlc3MpLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBwYXJzZVNlcnZlclByb2Nlc3Moc2VydmVyUHJvY2VzczogU2VydmVyUHJvY2Vzcyk6IENmbkZsZWV0LlNlcnZlclByb2Nlc3NQcm9wZXJ0eSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXJhbWV0ZXJzOiBzZXJ2ZXJQcm9jZXNzLnBhcmFtZXRlcnMsXG4gICAgICAgIGxhdW5jaFBhdGg6IHNlcnZlclByb2Nlc3MubGF1bmNoUGF0aCxcbiAgICAgICAgY29uY3VycmVudEV4ZWN1dGlvbnM6IHNlcnZlclByb2Nlc3MuY29uY3VycmVudEV4ZWN1dGlvbnMgPz8gMSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHdhcm5WcGNQZWVyaW5nQXV0aG9yaXphdGlvbnMoc2NvcGU6IENvbnN0cnVjdCk6IHZvaWQge1xuICAgIGNkay5Bbm5vdGF0aW9ucy5vZihzY29wZSkuYWRkV2FybmluZ1YyKCdAYXdzLWNkay9hd3MtZ2FtZWxpZnQ6ZmxlZXRBdXRvcml6ZVZwY1BlZXJpbmcnLCBbXG4gICAgICAnVG8gYXV0aG9yaXplIHRoZSBWUEMgcGVlcmluZywgY2FsbCB0aGUgR2FtZUxpZnQgc2VydmljZSBBUEkgQ3JlYXRlVnBjUGVlcmluZ0F1dGhvcml6YXRpb24oKSBvciB1c2UgdGhlIEFXUyBDTEkgY29tbWFuZCBjcmVhdGUtdnBjLXBlZXJpbmctYXV0aG9yaXphdGlvbi4nLFxuICAgICAgJ01ha2UgdGhpcyBjYWxsIHVzaW5nIHRoZSBhY2NvdW50IHRoYXQgbWFuYWdlcyB5b3VyIG5vbi1HYW1lTGlmdCByZXNvdXJjZXMuJyxcbiAgICAgICdTZWU6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nYW1lbGlmdC9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvdnBjLXBlZXJpbmcuaHRtbCcsXG4gICAgXS5qb2luKCdcXG4nKSk7XG4gIH1cbn1cbiJdfQ==
|