@effect-aws/client-s3 0.6.0 → 1.0.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.
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultS3ServiceEffect = exports.S3ServiceEffect = exports.BaseS3ServiceEffect = exports.DefaultS3ServiceLayer = exports.S3ServiceLayer = exports.BaseS3ServiceLayer = exports.makeS3Service = exports.S3Service = void 0;
4
+ const client_s3_1 = require("@aws-sdk/client-s3");
5
+ const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner");
6
+ const effect_1 = require("effect");
7
+ const Errors_1 = require("./Errors");
8
+ const S3ClientInstance_1 = require("./S3ClientInstance");
9
+ const S3ClientInstanceConfig_1 = require("./S3ClientInstanceConfig");
10
+ const commands = {
11
+ AbortMultipartUploadCommand: client_s3_1.AbortMultipartUploadCommand,
12
+ CompleteMultipartUploadCommand: client_s3_1.CompleteMultipartUploadCommand,
13
+ CopyObjectCommand: client_s3_1.CopyObjectCommand,
14
+ CreateBucketCommand: client_s3_1.CreateBucketCommand,
15
+ CreateMultipartUploadCommand: client_s3_1.CreateMultipartUploadCommand,
16
+ DeleteBucketCommand: client_s3_1.DeleteBucketCommand,
17
+ DeleteBucketAnalyticsConfigurationCommand: client_s3_1.DeleteBucketAnalyticsConfigurationCommand,
18
+ DeleteBucketCorsCommand: client_s3_1.DeleteBucketCorsCommand,
19
+ DeleteBucketEncryptionCommand: client_s3_1.DeleteBucketEncryptionCommand,
20
+ DeleteBucketIntelligentTieringConfigurationCommand: client_s3_1.DeleteBucketIntelligentTieringConfigurationCommand,
21
+ DeleteBucketInventoryConfigurationCommand: client_s3_1.DeleteBucketInventoryConfigurationCommand,
22
+ DeleteBucketLifecycleCommand: client_s3_1.DeleteBucketLifecycleCommand,
23
+ DeleteBucketMetricsConfigurationCommand: client_s3_1.DeleteBucketMetricsConfigurationCommand,
24
+ DeleteBucketOwnershipControlsCommand: client_s3_1.DeleteBucketOwnershipControlsCommand,
25
+ DeleteBucketPolicyCommand: client_s3_1.DeleteBucketPolicyCommand,
26
+ DeleteBucketReplicationCommand: client_s3_1.DeleteBucketReplicationCommand,
27
+ DeleteBucketTaggingCommand: client_s3_1.DeleteBucketTaggingCommand,
28
+ DeleteBucketWebsiteCommand: client_s3_1.DeleteBucketWebsiteCommand,
29
+ DeleteObjectCommand: client_s3_1.DeleteObjectCommand,
30
+ DeleteObjectsCommand: client_s3_1.DeleteObjectsCommand,
31
+ DeleteObjectTaggingCommand: client_s3_1.DeleteObjectTaggingCommand,
32
+ DeletePublicAccessBlockCommand: client_s3_1.DeletePublicAccessBlockCommand,
33
+ GetBucketAccelerateConfigurationCommand: client_s3_1.GetBucketAccelerateConfigurationCommand,
34
+ GetBucketAclCommand: client_s3_1.GetBucketAclCommand,
35
+ GetBucketAnalyticsConfigurationCommand: client_s3_1.GetBucketAnalyticsConfigurationCommand,
36
+ GetBucketCorsCommand: client_s3_1.GetBucketCorsCommand,
37
+ GetBucketEncryptionCommand: client_s3_1.GetBucketEncryptionCommand,
38
+ GetBucketIntelligentTieringConfigurationCommand: client_s3_1.GetBucketIntelligentTieringConfigurationCommand,
39
+ GetBucketInventoryConfigurationCommand: client_s3_1.GetBucketInventoryConfigurationCommand,
40
+ GetBucketLifecycleConfigurationCommand: client_s3_1.GetBucketLifecycleConfigurationCommand,
41
+ GetBucketLocationCommand: client_s3_1.GetBucketLocationCommand,
42
+ GetBucketLoggingCommand: client_s3_1.GetBucketLoggingCommand,
43
+ GetBucketMetricsConfigurationCommand: client_s3_1.GetBucketMetricsConfigurationCommand,
44
+ GetBucketNotificationConfigurationCommand: client_s3_1.GetBucketNotificationConfigurationCommand,
45
+ GetBucketOwnershipControlsCommand: client_s3_1.GetBucketOwnershipControlsCommand,
46
+ GetBucketPolicyCommand: client_s3_1.GetBucketPolicyCommand,
47
+ GetBucketPolicyStatusCommand: client_s3_1.GetBucketPolicyStatusCommand,
48
+ GetBucketReplicationCommand: client_s3_1.GetBucketReplicationCommand,
49
+ GetBucketRequestPaymentCommand: client_s3_1.GetBucketRequestPaymentCommand,
50
+ GetBucketTaggingCommand: client_s3_1.GetBucketTaggingCommand,
51
+ GetBucketVersioningCommand: client_s3_1.GetBucketVersioningCommand,
52
+ GetBucketWebsiteCommand: client_s3_1.GetBucketWebsiteCommand,
53
+ GetObjectCommand: client_s3_1.GetObjectCommand,
54
+ GetObjectAclCommand: client_s3_1.GetObjectAclCommand,
55
+ GetObjectAttributesCommand: client_s3_1.GetObjectAttributesCommand,
56
+ GetObjectLegalHoldCommand: client_s3_1.GetObjectLegalHoldCommand,
57
+ GetObjectLockConfigurationCommand: client_s3_1.GetObjectLockConfigurationCommand,
58
+ GetObjectRetentionCommand: client_s3_1.GetObjectRetentionCommand,
59
+ GetObjectTaggingCommand: client_s3_1.GetObjectTaggingCommand,
60
+ GetObjectTorrentCommand: client_s3_1.GetObjectTorrentCommand,
61
+ GetPublicAccessBlockCommand: client_s3_1.GetPublicAccessBlockCommand,
62
+ HeadBucketCommand: client_s3_1.HeadBucketCommand,
63
+ HeadObjectCommand: client_s3_1.HeadObjectCommand,
64
+ ListBucketAnalyticsConfigurationsCommand: client_s3_1.ListBucketAnalyticsConfigurationsCommand,
65
+ ListBucketIntelligentTieringConfigurationsCommand: client_s3_1.ListBucketIntelligentTieringConfigurationsCommand,
66
+ ListBucketInventoryConfigurationsCommand: client_s3_1.ListBucketInventoryConfigurationsCommand,
67
+ ListBucketMetricsConfigurationsCommand: client_s3_1.ListBucketMetricsConfigurationsCommand,
68
+ ListBucketsCommand: client_s3_1.ListBucketsCommand,
69
+ ListMultipartUploadsCommand: client_s3_1.ListMultipartUploadsCommand,
70
+ ListObjectsCommand: client_s3_1.ListObjectsCommand,
71
+ ListObjectsV2Command: client_s3_1.ListObjectsV2Command,
72
+ ListObjectVersionsCommand: client_s3_1.ListObjectVersionsCommand,
73
+ ListPartsCommand: client_s3_1.ListPartsCommand,
74
+ PutBucketAccelerateConfigurationCommand: client_s3_1.PutBucketAccelerateConfigurationCommand,
75
+ PutBucketAclCommand: client_s3_1.PutBucketAclCommand,
76
+ PutBucketAnalyticsConfigurationCommand: client_s3_1.PutBucketAnalyticsConfigurationCommand,
77
+ PutBucketCorsCommand: client_s3_1.PutBucketCorsCommand,
78
+ PutBucketEncryptionCommand: client_s3_1.PutBucketEncryptionCommand,
79
+ PutBucketIntelligentTieringConfigurationCommand: client_s3_1.PutBucketIntelligentTieringConfigurationCommand,
80
+ PutBucketInventoryConfigurationCommand: client_s3_1.PutBucketInventoryConfigurationCommand,
81
+ PutBucketLifecycleConfigurationCommand: client_s3_1.PutBucketLifecycleConfigurationCommand,
82
+ PutBucketLoggingCommand: client_s3_1.PutBucketLoggingCommand,
83
+ PutBucketMetricsConfigurationCommand: client_s3_1.PutBucketMetricsConfigurationCommand,
84
+ PutBucketNotificationConfigurationCommand: client_s3_1.PutBucketNotificationConfigurationCommand,
85
+ PutBucketOwnershipControlsCommand: client_s3_1.PutBucketOwnershipControlsCommand,
86
+ PutBucketPolicyCommand: client_s3_1.PutBucketPolicyCommand,
87
+ PutBucketReplicationCommand: client_s3_1.PutBucketReplicationCommand,
88
+ PutBucketRequestPaymentCommand: client_s3_1.PutBucketRequestPaymentCommand,
89
+ PutBucketTaggingCommand: client_s3_1.PutBucketTaggingCommand,
90
+ PutBucketVersioningCommand: client_s3_1.PutBucketVersioningCommand,
91
+ PutBucketWebsiteCommand: client_s3_1.PutBucketWebsiteCommand,
92
+ PutObjectCommand: client_s3_1.PutObjectCommand,
93
+ PutObjectAclCommand: client_s3_1.PutObjectAclCommand,
94
+ PutObjectLegalHoldCommand: client_s3_1.PutObjectLegalHoldCommand,
95
+ PutObjectLockConfigurationCommand: client_s3_1.PutObjectLockConfigurationCommand,
96
+ PutObjectRetentionCommand: client_s3_1.PutObjectRetentionCommand,
97
+ PutObjectTaggingCommand: client_s3_1.PutObjectTaggingCommand,
98
+ PutPublicAccessBlockCommand: client_s3_1.PutPublicAccessBlockCommand,
99
+ RestoreObjectCommand: client_s3_1.RestoreObjectCommand,
100
+ SelectObjectContentCommand: client_s3_1.SelectObjectContentCommand,
101
+ UploadPartCommand: client_s3_1.UploadPartCommand,
102
+ UploadPartCopyCommand: client_s3_1.UploadPartCopyCommand,
103
+ WriteGetObjectResponseCommand: client_s3_1.WriteGetObjectResponseCommand,
104
+ };
105
+ /**
106
+ * @since 1.0.0
107
+ * @category tags
108
+ */
109
+ exports.S3Service = effect_1.Context.Tag(Symbol.for("@effect-aws/client-s3/S3Service"));
110
+ /**
111
+ * @since 1.0.0
112
+ * @category constructors
113
+ */
114
+ exports.makeS3Service = effect_1.Effect.gen(function* (_) {
115
+ const client = yield* _(S3ClientInstance_1.S3ClientInstance);
116
+ const catchErrors = (e) => {
117
+ if (e instanceof client_s3_1.S3ServiceException) {
118
+ return (0, Errors_1.S3ServiceError)({
119
+ ...e,
120
+ name: "S3ServiceError",
121
+ message: e.message,
122
+ stack: e.stack,
123
+ });
124
+ }
125
+ if (e instanceof Error) {
126
+ return (0, Errors_1.SdkError)({
127
+ ...e,
128
+ name: "SdkError",
129
+ message: e.message,
130
+ stack: e.stack,
131
+ });
132
+ }
133
+ throw e;
134
+ };
135
+ return effect_1.ReadonlyRecord.toEntries(commands).reduce((acc, [command]) => {
136
+ const CommandCtor = commands[command];
137
+ const methodImpl = (args, options) => (options === null || options === void 0 ? void 0 : options.presigned)
138
+ ? effect_1.Effect.tryPromise({
139
+ try: () => (0, s3_request_presigner_1.getSignedUrl)(client, new CommandCtor(args), options),
140
+ catch: catchErrors,
141
+ })
142
+ : effect_1.Effect.tryPromise({
143
+ try: () => client.send(new CommandCtor(args), options),
144
+ catch: catchErrors,
145
+ });
146
+ const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, "");
147
+ return { ...acc, [methodName]: methodImpl };
148
+ }, {});
149
+ });
150
+ /**
151
+ * @since 1.0.0
152
+ * @category layers
153
+ */
154
+ exports.BaseS3ServiceLayer = effect_1.Layer.effect(exports.S3Service, exports.makeS3Service);
155
+ /**
156
+ * @since 1.0.0
157
+ * @category layers
158
+ */
159
+ exports.S3ServiceLayer = exports.BaseS3ServiceLayer.pipe(effect_1.Layer.provide(S3ClientInstance_1.S3ClientInstanceLayer));
160
+ /**
161
+ * @since 1.0.0
162
+ * @category layers
163
+ */
164
+ exports.DefaultS3ServiceLayer = exports.S3ServiceLayer.pipe(effect_1.Layer.provide(S3ClientInstanceConfig_1.DefaultS3ClientConfigLayer));
165
+ // -------------------- Danger Zone --------------------
166
+ /**
167
+ * @deprecated
168
+ */
169
+ exports.BaseS3ServiceEffect = exports.makeS3Service;
170
+ /**
171
+ * @deprecated
172
+ */
173
+ exports.S3ServiceEffect = exports.BaseS3ServiceEffect.pipe(effect_1.Effect.provide(S3ClientInstance_1.S3ClientInstanceLayer));
174
+ /**
175
+ * @deprecated
176
+ */
177
+ exports.DefaultS3ServiceEffect = exports.BaseS3ServiceEffect.pipe(effect_1.Effect.provide(S3ClientInstance_1.DefaultS3ClientInstanceLayer));
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUzNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1MzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrREF5UjRCO0FBQzVCLHdFQUE2RDtBQUs3RCxtQ0FBZ0U7QUFDaEUscUNBQW9EO0FBQ3BELHlEQUk0QjtBQUM1QixxRUFBc0U7QUFFdEUsTUFBTSxRQUFRLEdBQUc7SUFDZiwyQkFBMkIsRUFBM0IsdUNBQTJCO0lBQzNCLDhCQUE4QixFQUE5QiwwQ0FBOEI7SUFDOUIsaUJBQWlCLEVBQWpCLDZCQUFpQjtJQUNqQixtQkFBbUIsRUFBbkIsK0JBQW1CO0lBQ25CLDRCQUE0QixFQUE1Qix3Q0FBNEI7SUFDNUIsbUJBQW1CLEVBQW5CLCtCQUFtQjtJQUNuQix5Q0FBeUMsRUFBekMscURBQXlDO0lBQ3pDLHVCQUF1QixFQUF2QixtQ0FBdUI7SUFDdkIsNkJBQTZCLEVBQTdCLHlDQUE2QjtJQUM3QixrREFBa0QsRUFBbEQsOERBQWtEO0lBQ2xELHlDQUF5QyxFQUF6QyxxREFBeUM7SUFDekMsNEJBQTRCLEVBQTVCLHdDQUE0QjtJQUM1Qix1Q0FBdUMsRUFBdkMsbURBQXVDO0lBQ3ZDLG9DQUFvQyxFQUFwQyxnREFBb0M7SUFDcEMseUJBQXlCLEVBQXpCLHFDQUF5QjtJQUN6Qiw4QkFBOEIsRUFBOUIsMENBQThCO0lBQzlCLDBCQUEwQixFQUExQixzQ0FBMEI7SUFDMUIsMEJBQTBCLEVBQTFCLHNDQUEwQjtJQUMxQixtQkFBbUIsRUFBbkIsK0JBQW1CO0lBQ25CLG9CQUFvQixFQUFwQixnQ0FBb0I7SUFDcEIsMEJBQTBCLEVBQTFCLHNDQUEwQjtJQUMxQiw4QkFBOEIsRUFBOUIsMENBQThCO0lBQzlCLHVDQUF1QyxFQUF2QyxtREFBdUM7SUFDdkMsbUJBQW1CLEVBQW5CLCtCQUFtQjtJQUNuQixzQ0FBc0MsRUFBdEMsa0RBQXNDO0lBQ3RDLG9CQUFvQixFQUFwQixnQ0FBb0I7SUFDcEIsMEJBQTBCLEVBQTFCLHNDQUEwQjtJQUMxQiwrQ0FBK0MsRUFBL0MsMkRBQStDO0lBQy9DLHNDQUFzQyxFQUF0QyxrREFBc0M7SUFDdEMsc0NBQXNDLEVBQXRDLGtEQUFzQztJQUN0Qyx3QkFBd0IsRUFBeEIsb0NBQXdCO0lBQ3hCLHVCQUF1QixFQUF2QixtQ0FBdUI7SUFDdkIsb0NBQW9DLEVBQXBDLGdEQUFvQztJQUNwQyx5Q0FBeUMsRUFBekMscURBQXlDO0lBQ3pDLGlDQUFpQyxFQUFqQyw2Q0FBaUM7SUFDakMsc0JBQXNCLEVBQXRCLGtDQUFzQjtJQUN0Qiw0QkFBNEIsRUFBNUIsd0NBQTRCO0lBQzVCLDJCQUEyQixFQUEzQix1Q0FBMkI7SUFDM0IsOEJBQThCLEVBQTlCLDBDQUE4QjtJQUM5Qix1QkFBdUIsRUFBdkIsbUNBQXVCO0lBQ3ZCLDBCQUEwQixFQUExQixzQ0FBMEI7SUFDMUIsdUJBQXVCLEVBQXZCLG1DQUF1QjtJQUN2QixnQkFBZ0IsRUFBaEIsNEJBQWdCO0lBQ2hCLG1CQUFtQixFQUFuQiwrQkFBbUI7SUFDbkIsMEJBQTBCLEVBQTFCLHNDQUEwQjtJQUMxQix5QkFBeUIsRUFBekIscUNBQXlCO0lBQ3pCLGlDQUFpQyxFQUFqQyw2Q0FBaUM7SUFDakMseUJBQXlCLEVBQXpCLHFDQUF5QjtJQUN6Qix1QkFBdUIsRUFBdkIsbUNBQXVCO0lBQ3ZCLHVCQUF1QixFQUF2QixtQ0FBdUI7SUFDdkIsMkJBQTJCLEVBQTNCLHVDQUEyQjtJQUMzQixpQkFBaUIsRUFBakIsNkJBQWlCO0lBQ2pCLGlCQUFpQixFQUFqQiw2QkFBaUI7SUFDakIsd0NBQXdDLEVBQXhDLG9EQUF3QztJQUN4QyxpREFBaUQsRUFBakQsNkRBQWlEO0lBQ2pELHdDQUF3QyxFQUF4QyxvREFBd0M7SUFDeEMsc0NBQXNDLEVBQXRDLGtEQUFzQztJQUN0QyxrQkFBa0IsRUFBbEIsOEJBQWtCO0lBQ2xCLDJCQUEyQixFQUEzQix1Q0FBMkI7SUFDM0Isa0JBQWtCLEVBQWxCLDhCQUFrQjtJQUNsQixvQkFBb0IsRUFBcEIsZ0NBQW9CO0lBQ3BCLHlCQUF5QixFQUF6QixxQ0FBeUI7SUFDekIsZ0JBQWdCLEVBQWhCLDRCQUFnQjtJQUNoQix1Q0FBdUMsRUFBdkMsbURBQXVDO0lBQ3ZDLG1CQUFtQixFQUFuQiwrQkFBbUI7SUFDbkIsc0NBQXNDLEVBQXRDLGtEQUFzQztJQUN0QyxvQkFBb0IsRUFBcEIsZ0NBQW9CO0lBQ3BCLDBCQUEwQixFQUExQixzQ0FBMEI7SUFDMUIsK0NBQStDLEVBQS9DLDJEQUErQztJQUMvQyxzQ0FBc0MsRUFBdEMsa0RBQXNDO0lBQ3RDLHNDQUFzQyxFQUF0QyxrREFBc0M7SUFDdEMsdUJBQXVCLEVBQXZCLG1DQUF1QjtJQUN2QixvQ0FBb0MsRUFBcEMsZ0RBQW9DO0lBQ3BDLHlDQUF5QyxFQUF6QyxxREFBeUM7SUFDekMsaUNBQWlDLEVBQWpDLDZDQUFpQztJQUNqQyxzQkFBc0IsRUFBdEIsa0NBQXNCO0lBQ3RCLDJCQUEyQixFQUEzQix1Q0FBMkI7SUFDM0IsOEJBQThCLEVBQTlCLDBDQUE4QjtJQUM5Qix1QkFBdUIsRUFBdkIsbUNBQXVCO0lBQ3ZCLDBCQUEwQixFQUExQixzQ0FBMEI7SUFDMUIsdUJBQXVCLEVBQXZCLG1DQUF1QjtJQUN2QixnQkFBZ0IsRUFBaEIsNEJBQWdCO0lBQ2hCLG1CQUFtQixFQUFuQiwrQkFBbUI7SUFDbkIseUJBQXlCLEVBQXpCLHFDQUF5QjtJQUN6QixpQ0FBaUMsRUFBakMsNkNBQWlDO0lBQ2pDLHlCQUF5QixFQUF6QixxQ0FBeUI7SUFDekIsdUJBQXVCLEVBQXZCLG1DQUF1QjtJQUN2QiwyQkFBMkIsRUFBM0IsdUNBQTJCO0lBQzNCLG9CQUFvQixFQUFwQixnQ0FBb0I7SUFDcEIsMEJBQTBCLEVBQTFCLHNDQUEwQjtJQUMxQixpQkFBaUIsRUFBakIsNkJBQWlCO0lBQ2pCLHFCQUFxQixFQUFyQixpQ0FBcUI7SUFDckIsNkJBQTZCLEVBQTdCLHlDQUE2QjtDQUM5QixDQUFDO0FBc2xDRjs7O0dBR0c7QUFDVSxRQUFBLFNBQVMsR0FBRyxnQkFBTyxDQUFDLEdBQUcsQ0FDbEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUM5QyxDQUFDO0FBRUY7OztHQUdHO0FBQ1UsUUFBQSxhQUFhLEdBQUcsZUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ2xELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQ0FBZ0IsQ0FBQyxDQUFDO0lBRTFDLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUU7UUFDakMsSUFBSSxDQUFDLFlBQVksOEJBQWtCLEVBQUU7WUFDbkMsT0FBTyxJQUFBLHVCQUFjLEVBQUM7Z0JBQ3BCLEdBQUcsQ0FBQztnQkFDSixJQUFJLEVBQUUsZ0JBQWdCO2dCQUN0QixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87Z0JBQ2xCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSzthQUNmLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFO1lBQ3RCLE9BQU8sSUFBQSxpQkFBUSxFQUFDO2dCQUNkLEdBQUcsQ0FBQztnQkFDSixJQUFJLEVBQUUsVUFBVTtnQkFDaEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO2dCQUNsQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7YUFDZixDQUFDLENBQUM7U0FDSjtRQUNELE1BQU0sQ0FBQyxDQUFDO0lBQ1YsQ0FBQyxDQUFDO0lBRUYsT0FBTyx1QkFBYyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1FBQ2xFLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQVEsQ0FBQztRQUM3QyxNQUFNLFVBQVUsR0FBRyxDQUNqQixJQUFTLEVBQ1QsT0FFK0QsRUFDL0QsRUFBRSxDQUNGLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFNBQVM7WUFDaEIsQ0FBQyxDQUFDLGVBQU0sQ0FBQyxVQUFVLENBQUM7Z0JBQ2hCLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FDUixJQUFBLG1DQUFZLEVBQUMsTUFBYSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQztnQkFDN0QsS0FBSyxFQUFFLFdBQVc7YUFDbkIsQ0FBQztZQUNKLENBQUMsQ0FBQyxlQUFNLENBQUMsVUFBVSxDQUFDO2dCQUNoQixHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUM7Z0JBQ3RELEtBQUssRUFBRSxXQUFXO2FBQ25CLENBQUMsQ0FBQztRQUNULE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3RFLFVBQVUsRUFDVixFQUFFLENBQ0gsQ0FBQztRQUNGLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQzlDLENBQUMsRUFBRSxFQUFFLENBQWMsQ0FBQztBQUN0QixDQUFDLENBQUMsQ0FBQztBQUVIOzs7R0FHRztBQUNVLFFBQUEsa0JBQWtCLEdBQUcsY0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBUyxFQUFFLHFCQUFhLENBQUMsQ0FBQztBQUV6RTs7O0dBR0c7QUFDVSxRQUFBLGNBQWMsR0FBRywwQkFBa0IsQ0FBQyxJQUFJLENBQ25ELGNBQUssQ0FBQyxPQUFPLENBQUMsd0NBQXFCLENBQUMsQ0FDckMsQ0FBQztBQUVGOzs7R0FHRztBQUNVLFFBQUEscUJBQXFCLEdBQUcsc0JBQWMsQ0FBQyxJQUFJLENBQ3RELGNBQUssQ0FBQyxPQUFPLENBQUMsbURBQTBCLENBQUMsQ0FDMUMsQ0FBQztBQUVGLHdEQUF3RDtBQUV4RDs7R0FFRztBQUNVLFFBQUEsbUJBQW1CLEdBQUcscUJBQWEsQ0FBQztBQUVqRDs7R0FFRztBQUNVLFFBQUEsZUFBZSxHQUFHLDJCQUFtQixDQUFDLElBQUksQ0FDckQsZUFBTSxDQUFDLE9BQU8sQ0FBQyx3Q0FBcUIsQ0FBQyxDQUN0QyxDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLHNCQUFzQixHQUFHLDJCQUFtQixDQUFDLElBQUksQ0FDNUQsZUFBTSxDQUFDLE9BQU8sQ0FBQywrQ0FBNEIsQ0FBQyxDQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kLFxuICBBYm9ydE11bHRpcGFydFVwbG9hZENvbW1hbmRJbnB1dCxcbiAgQWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0LFxuICBDb21wbGV0ZU11bHRpcGFydFVwbG9hZENvbW1hbmQsXG4gIENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZElucHV0LFxuICBDb21wbGV0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRPdXRwdXQsXG4gIENvcHlPYmplY3RDb21tYW5kLFxuICBDb3B5T2JqZWN0Q29tbWFuZElucHV0LFxuICBDb3B5T2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlQnVja2V0Q29tbWFuZCxcbiAgQ3JlYXRlQnVja2V0Q29tbWFuZElucHV0LFxuICBDcmVhdGVCdWNrZXRDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kLFxuICBDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kSW5wdXQsXG4gIENyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBEZWxldGVCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICBEZWxldGVCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0Q29tbWFuZCxcbiAgRGVsZXRlQnVja2V0Q29tbWFuZElucHV0LFxuICBEZWxldGVCdWNrZXRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVCdWNrZXRDb3JzQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0Q29yc0NvbW1hbmRJbnB1dCxcbiAgRGVsZXRlQnVja2V0Q29yc0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUJ1Y2tldEVuY3J5cHRpb25Db21tYW5kLFxuICBEZWxldGVCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZElucHV0LFxuICBEZWxldGVCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIERlbGV0ZUJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgRGVsZXRlQnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUJ1Y2tldExpZmVjeWNsZUNvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldExpZmVjeWNsZUNvbW1hbmRJbnB1dCxcbiAgRGVsZXRlQnVja2V0TGlmZWN5Y2xlQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBEZWxldGVCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgRGVsZXRlQnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZElucHV0LFxuICBEZWxldGVCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUJ1Y2tldFBvbGljeUNvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldFBvbGljeUNvbW1hbmRJbnB1dCxcbiAgRGVsZXRlQnVja2V0UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0UmVwbGljYXRpb25Db21tYW5kLFxuICBEZWxldGVCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgRGVsZXRlQnVja2V0UmVwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVCdWNrZXRUYWdnaW5nQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0VGFnZ2luZ0NvbW1hbmRJbnB1dCxcbiAgRGVsZXRlQnVja2V0VGFnZ2luZ0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUJ1Y2tldFdlYnNpdGVDb21tYW5kLFxuICBEZWxldGVCdWNrZXRXZWJzaXRlQ29tbWFuZElucHV0LFxuICBEZWxldGVCdWNrZXRXZWJzaXRlQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlT2JqZWN0Q29tbWFuZCxcbiAgRGVsZXRlT2JqZWN0Q29tbWFuZElucHV0LFxuICBEZWxldGVPYmplY3RDb21tYW5kT3V0cHV0LFxuICBEZWxldGVPYmplY3RzQ29tbWFuZCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmRJbnB1dCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZU9iamVjdFRhZ2dpbmdDb21tYW5kLFxuICBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0LFxuICBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlUHVibGljQWNjZXNzQmxvY2tDb21tYW5kLFxuICBEZWxldGVQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmRJbnB1dCxcbiAgRGVsZXRlUHVibGljQWNjZXNzQmxvY2tDb21tYW5kT3V0cHV0LFxuICBHZXRCdWNrZXRBY2NlbGVyYXRlQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldEFjY2VsZXJhdGVDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICBHZXRCdWNrZXRBY2NlbGVyYXRlQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIEdldEJ1Y2tldEFjbENvbW1hbmQsXG4gIEdldEJ1Y2tldEFjbENvbW1hbmRJbnB1dCxcbiAgR2V0QnVja2V0QWNsQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIEdldEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRCdWNrZXRDb3JzQ29tbWFuZCxcbiAgR2V0QnVja2V0Q29yc0NvbW1hbmRJbnB1dCxcbiAgR2V0QnVja2V0Q29yc0NvbW1hbmRPdXRwdXQsXG4gIEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZElucHV0LFxuICBHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIEdldEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgR2V0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIEdldEJ1Y2tldExpZmVjeWNsZUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRMaWZlY3ljbGVDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICBHZXRCdWNrZXRMaWZlY3ljbGVDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0TG9jYXRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmRJbnB1dCxcbiAgR2V0QnVja2V0TG9jYXRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRCdWNrZXRMb2dnaW5nQ29tbWFuZCxcbiAgR2V0QnVja2V0TG9nZ2luZ0NvbW1hbmRJbnB1dCxcbiAgR2V0QnVja2V0TG9nZ2luZ0NvbW1hbmRPdXRwdXQsXG4gIEdldEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIEdldEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIEdldEJ1Y2tldE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmQsXG4gIEdldEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZElucHV0LFxuICBHZXRCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmRPdXRwdXQsXG4gIEdldEJ1Y2tldFBvbGljeUNvbW1hbmQsXG4gIEdldEJ1Y2tldFBvbGljeUNvbW1hbmRJbnB1dCxcbiAgR2V0QnVja2V0UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0UG9saWN5U3RhdHVzQ29tbWFuZCxcbiAgR2V0QnVja2V0UG9saWN5U3RhdHVzQ29tbWFuZElucHV0LFxuICBHZXRCdWNrZXRQb2xpY3lTdGF0dXNDb21tYW5kT3V0cHV0LFxuICBHZXRCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICBHZXRCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIEdldEJ1Y2tldFJlcXVlc3RQYXltZW50Q29tbWFuZCxcbiAgR2V0QnVja2V0UmVxdWVzdFBheW1lbnRDb21tYW5kSW5wdXQsXG4gIEdldEJ1Y2tldFJlcXVlc3RQYXltZW50Q29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0VGFnZ2luZ0NvbW1hbmQsXG4gIEdldEJ1Y2tldFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gIEdldEJ1Y2tldFRhZ2dpbmdDb21tYW5kT3V0cHV0LFxuICBHZXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZCxcbiAgR2V0QnVja2V0VmVyc2lvbmluZ0NvbW1hbmRJbnB1dCxcbiAgR2V0QnVja2V0VmVyc2lvbmluZ0NvbW1hbmRPdXRwdXQsXG4gIEdldEJ1Y2tldFdlYnNpdGVDb21tYW5kLFxuICBHZXRCdWNrZXRXZWJzaXRlQ29tbWFuZElucHV0LFxuICBHZXRCdWNrZXRXZWJzaXRlQ29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0QWNsQ29tbWFuZCxcbiAgR2V0T2JqZWN0QWNsQ29tbWFuZElucHV0LFxuICBHZXRPYmplY3RBY2xDb21tYW5kT3V0cHV0LFxuICBHZXRPYmplY3RBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgR2V0T2JqZWN0QXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgR2V0T2JqZWN0QXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gIEdldE9iamVjdENvbW1hbmQsXG4gIEdldE9iamVjdENvbW1hbmRJbnB1dCxcbiAgR2V0T2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0TGVnYWxIb2xkQ29tbWFuZCxcbiAgR2V0T2JqZWN0TGVnYWxIb2xkQ29tbWFuZElucHV0LFxuICBHZXRPYmplY3RMZWdhbEhvbGRDb21tYW5kT3V0cHV0LFxuICBHZXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldE9iamVjdExvY2tDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICBHZXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIEdldE9iamVjdFJldGVudGlvbkNvbW1hbmQsXG4gIEdldE9iamVjdFJldGVudGlvbkNvbW1hbmRJbnB1dCxcbiAgR2V0T2JqZWN0UmV0ZW50aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0VGFnZ2luZ0NvbW1hbmQsXG4gIEdldE9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gIEdldE9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0LFxuICBHZXRPYmplY3RUb3JyZW50Q29tbWFuZCxcbiAgR2V0T2JqZWN0VG9ycmVudENvbW1hbmRJbnB1dCxcbiAgR2V0T2JqZWN0VG9ycmVudENvbW1hbmRPdXRwdXQsXG4gIEdldFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZCxcbiAgR2V0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kSW5wdXQsXG4gIEdldFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZE91dHB1dCxcbiAgSGVhZEJ1Y2tldENvbW1hbmQsXG4gIEhlYWRCdWNrZXRDb21tYW5kSW5wdXQsXG4gIEhlYWRCdWNrZXRDb21tYW5kT3V0cHV0LFxuICBIZWFkT2JqZWN0Q29tbWFuZCxcbiAgSGVhZE9iamVjdENvbW1hbmRJbnB1dCxcbiAgSGVhZE9iamVjdENvbW1hbmRPdXRwdXQsXG4gIExpc3RCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uc0NvbW1hbmQsXG4gIExpc3RCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uc0NvbW1hbmRJbnB1dCxcbiAgTGlzdEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25zQ29tbWFuZCxcbiAgTGlzdEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25zQ29tbWFuZElucHV0LFxuICBMaXN0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbnNDb21tYW5kLFxuICBMaXN0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbnNDb21tYW5kSW5wdXQsXG4gIExpc3RCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbnNDb21tYW5kLFxuICBMaXN0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25zQ29tbWFuZElucHV0LFxuICBMaXN0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdEJ1Y2tldHNDb21tYW5kLFxuICBMaXN0QnVja2V0c0NvbW1hbmRJbnB1dCxcbiAgTGlzdEJ1Y2tldHNDb21tYW5kT3V0cHV0LFxuICBMaXN0TXVsdGlwYXJ0VXBsb2Fkc0NvbW1hbmQsXG4gIExpc3RNdWx0aXBhcnRVcGxvYWRzQ29tbWFuZElucHV0LFxuICBMaXN0TXVsdGlwYXJ0VXBsb2Fkc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RPYmplY3RzQ29tbWFuZCxcbiAgTGlzdE9iamVjdHNDb21tYW5kSW5wdXQsXG4gIExpc3RPYmplY3RzQ29tbWFuZE91dHB1dCxcbiAgTGlzdE9iamVjdHNWMkNvbW1hbmQsXG4gIExpc3RPYmplY3RzVjJDb21tYW5kSW5wdXQsXG4gIExpc3RPYmplY3RzVjJDb21tYW5kT3V0cHV0LFxuICBMaXN0T2JqZWN0VmVyc2lvbnNDb21tYW5kLFxuICBMaXN0T2JqZWN0VmVyc2lvbnNDb21tYW5kSW5wdXQsXG4gIExpc3RPYmplY3RWZXJzaW9uc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RQYXJ0c0NvbW1hbmQsXG4gIExpc3RQYXJ0c0NvbW1hbmRJbnB1dCxcbiAgTGlzdFBhcnRzQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBQdXRCdWNrZXRBY2NlbGVyYXRlQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgUHV0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBQdXRCdWNrZXRBY2xDb21tYW5kLFxuICBQdXRCdWNrZXRBY2xDb21tYW5kSW5wdXQsXG4gIFB1dEJ1Y2tldEFjbENvbW1hbmRPdXRwdXQsXG4gIFB1dEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBQdXRCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICBQdXRCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0Q29yc0NvbW1hbmQsXG4gIFB1dEJ1Y2tldENvcnNDb21tYW5kSW5wdXQsXG4gIFB1dEJ1Y2tldENvcnNDb21tYW5kT3V0cHV0LFxuICBQdXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZCxcbiAgUHV0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgUHV0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFB1dEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBQdXRCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICBQdXRCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFB1dEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIFB1dEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBQdXRCdWNrZXRMaWZlY3ljbGVDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgUHV0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgUHV0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFB1dEJ1Y2tldExvZ2dpbmdDb21tYW5kLFxuICBQdXRCdWNrZXRMb2dnaW5nQ29tbWFuZElucHV0LFxuICBQdXRCdWNrZXRMb2dnaW5nQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBQdXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgUHV0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBQdXRCdWNrZXROb3RpZmljYXRpb25Db25maWd1cmF0aW9uQ29tbWFuZCxcbiAgUHV0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgUHV0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFB1dEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZCxcbiAgUHV0QnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kSW5wdXQsXG4gIFB1dEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0UG9saWN5Q29tbWFuZCxcbiAgUHV0QnVja2V0UG9saWN5Q29tbWFuZElucHV0LFxuICBQdXRCdWNrZXRQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBQdXRCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmQsXG4gIFB1dEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICBQdXRCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFB1dEJ1Y2tldFJlcXVlc3RQYXltZW50Q29tbWFuZCxcbiAgUHV0QnVja2V0UmVxdWVzdFBheW1lbnRDb21tYW5kSW5wdXQsXG4gIFB1dEJ1Y2tldFJlcXVlc3RQYXltZW50Q29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0VGFnZ2luZ0NvbW1hbmQsXG4gIFB1dEJ1Y2tldFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gIFB1dEJ1Y2tldFRhZ2dpbmdDb21tYW5kT3V0cHV0LFxuICBQdXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZCxcbiAgUHV0QnVja2V0VmVyc2lvbmluZ0NvbW1hbmRJbnB1dCxcbiAgUHV0QnVja2V0VmVyc2lvbmluZ0NvbW1hbmRPdXRwdXQsXG4gIFB1dEJ1Y2tldFdlYnNpdGVDb21tYW5kLFxuICBQdXRCdWNrZXRXZWJzaXRlQ29tbWFuZElucHV0LFxuICBQdXRCdWNrZXRXZWJzaXRlQ29tbWFuZE91dHB1dCxcbiAgUHV0T2JqZWN0QWNsQ29tbWFuZCxcbiAgUHV0T2JqZWN0QWNsQ29tbWFuZElucHV0LFxuICBQdXRPYmplY3RBY2xDb21tYW5kT3V0cHV0LFxuICBQdXRPYmplY3RDb21tYW5kLFxuICBQdXRPYmplY3RDb21tYW5kSW5wdXQsXG4gIFB1dE9iamVjdENvbW1hbmRPdXRwdXQsXG4gIFB1dE9iamVjdExlZ2FsSG9sZENvbW1hbmQsXG4gIFB1dE9iamVjdExlZ2FsSG9sZENvbW1hbmRJbnB1dCxcbiAgUHV0T2JqZWN0TGVnYWxIb2xkQ29tbWFuZE91dHB1dCxcbiAgUHV0T2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBQdXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgUHV0T2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBQdXRPYmplY3RSZXRlbnRpb25Db21tYW5kLFxuICBQdXRPYmplY3RSZXRlbnRpb25Db21tYW5kSW5wdXQsXG4gIFB1dE9iamVjdFJldGVudGlvbkNvbW1hbmRPdXRwdXQsXG4gIFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kLFxuICBQdXRPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0LFxuICBQdXRPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dCxcbiAgUHV0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kLFxuICBQdXRQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmRJbnB1dCxcbiAgUHV0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kT3V0cHV0LFxuICBSZXN0b3JlT2JqZWN0Q29tbWFuZCxcbiAgUmVzdG9yZU9iamVjdENvbW1hbmRJbnB1dCxcbiAgUmVzdG9yZU9iamVjdENvbW1hbmRPdXRwdXQsXG4gIFMzU2VydmljZUV4Y2VwdGlvbixcbiAgU2VsZWN0T2JqZWN0Q29udGVudENvbW1hbmQsXG4gIFNlbGVjdE9iamVjdENvbnRlbnRDb21tYW5kSW5wdXQsXG4gIFNlbGVjdE9iamVjdENvbnRlbnRDb21tYW5kT3V0cHV0LFxuICBVcGxvYWRQYXJ0Q29tbWFuZCxcbiAgVXBsb2FkUGFydENvbW1hbmRJbnB1dCxcbiAgVXBsb2FkUGFydENvbW1hbmRPdXRwdXQsXG4gIFVwbG9hZFBhcnRDb3B5Q29tbWFuZCxcbiAgVXBsb2FkUGFydENvcHlDb21tYW5kSW5wdXQsXG4gIFVwbG9hZFBhcnRDb3B5Q29tbWFuZE91dHB1dCxcbiAgV3JpdGVHZXRPYmplY3RSZXNwb25zZUNvbW1hbmQsXG4gIFdyaXRlR2V0T2JqZWN0UmVzcG9uc2VDb21tYW5kSW5wdXQsXG4gIFdyaXRlR2V0T2JqZWN0UmVzcG9uc2VDb21tYW5kT3V0cHV0LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXMzXCI7XG5pbXBvcnQgeyBnZXRTaWduZWRVcmwgfSBmcm9tIFwiQGF3cy1zZGsvczMtcmVxdWVzdC1wcmVzaWduZXJcIjtcbmltcG9ydCB7XG4gIEh0dHBIYW5kbGVyT3B0aW9ucyBhcyBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgUmVxdWVzdFByZXNpZ25pbmdBcmd1bWVudHMsXG59IGZyb20gXCJAYXdzLXNkay90eXBlc1wiO1xuaW1wb3J0IHsgQ29udGV4dCwgRWZmZWN0LCBMYXllciwgUmVhZG9ubHlSZWNvcmQgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgeyBTM1NlcnZpY2VFcnJvciwgU2RrRXJyb3IgfSBmcm9tIFwiLi9FcnJvcnNcIjtcbmltcG9ydCB7XG4gIERlZmF1bHRTM0NsaWVudEluc3RhbmNlTGF5ZXIsXG4gIFMzQ2xpZW50SW5zdGFuY2UsXG4gIFMzQ2xpZW50SW5zdGFuY2VMYXllcixcbn0gZnJvbSBcIi4vUzNDbGllbnRJbnN0YW5jZVwiO1xuaW1wb3J0IHsgRGVmYXVsdFMzQ2xpZW50Q29uZmlnTGF5ZXIgfSBmcm9tIFwiLi9TM0NsaWVudEluc3RhbmNlQ29uZmlnXCI7XG5cbmNvbnN0IGNvbW1hbmRzID0ge1xuICBBYm9ydE11bHRpcGFydFVwbG9hZENvbW1hbmQsXG4gIENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZCxcbiAgQ29weU9iamVjdENvbW1hbmQsXG4gIENyZWF0ZUJ1Y2tldENvbW1hbmQsXG4gIENyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldENvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBEZWxldGVCdWNrZXRDb3JzQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0RW5jcnlwdGlvbkNvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBEZWxldGVCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0TGlmZWN5Y2xlQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBEZWxldGVCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldFBvbGljeUNvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0VGFnZ2luZ0NvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldFdlYnNpdGVDb21tYW5kLFxuICBEZWxldGVPYmplY3RDb21tYW5kLFxuICBEZWxldGVPYmplY3RzQ29tbWFuZCxcbiAgRGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmQsXG4gIERlbGV0ZVB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZCxcbiAgR2V0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRBY2xDb21tYW5kLFxuICBHZXRCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0Q29yc0NvbW1hbmQsXG4gIEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldExpZmVjeWNsZUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldExvZ2dpbmdDb21tYW5kLFxuICBHZXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmQsXG4gIEdldEJ1Y2tldFBvbGljeUNvbW1hbmQsXG4gIEdldEJ1Y2tldFBvbGljeVN0YXR1c0NvbW1hbmQsXG4gIEdldEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0UmVxdWVzdFBheW1lbnRDb21tYW5kLFxuICBHZXRCdWNrZXRUYWdnaW5nQ29tbWFuZCxcbiAgR2V0QnVja2V0VmVyc2lvbmluZ0NvbW1hbmQsXG4gIEdldEJ1Y2tldFdlYnNpdGVDb21tYW5kLFxuICBHZXRPYmplY3RDb21tYW5kLFxuICBHZXRPYmplY3RBY2xDb21tYW5kLFxuICBHZXRPYmplY3RBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgR2V0T2JqZWN0TGVnYWxIb2xkQ29tbWFuZCxcbiAgR2V0T2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBHZXRPYmplY3RSZXRlbnRpb25Db21tYW5kLFxuICBHZXRPYmplY3RUYWdnaW5nQ29tbWFuZCxcbiAgR2V0T2JqZWN0VG9ycmVudENvbW1hbmQsXG4gIEdldFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZCxcbiAgSGVhZEJ1Y2tldENvbW1hbmQsXG4gIEhlYWRPYmplY3RDb21tYW5kLFxuICBMaXN0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbnNDb21tYW5kLFxuICBMaXN0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbnNDb21tYW5kLFxuICBMaXN0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbnNDb21tYW5kLFxuICBMaXN0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25zQ29tbWFuZCxcbiAgTGlzdEJ1Y2tldHNDb21tYW5kLFxuICBMaXN0TXVsdGlwYXJ0VXBsb2Fkc0NvbW1hbmQsXG4gIExpc3RPYmplY3RzQ29tbWFuZCxcbiAgTGlzdE9iamVjdHNWMkNvbW1hbmQsXG4gIExpc3RPYmplY3RWZXJzaW9uc0NvbW1hbmQsXG4gIExpc3RQYXJ0c0NvbW1hbmQsXG4gIFB1dEJ1Y2tldEFjY2VsZXJhdGVDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgUHV0QnVja2V0QWNsQ29tbWFuZCxcbiAgUHV0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFB1dEJ1Y2tldENvcnNDb21tYW5kLFxuICBQdXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZCxcbiAgUHV0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFB1dEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBQdXRCdWNrZXRMaWZlY3ljbGVDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgUHV0QnVja2V0TG9nZ2luZ0NvbW1hbmQsXG4gIFB1dEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgUHV0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFB1dEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZCxcbiAgUHV0QnVja2V0UG9saWN5Q29tbWFuZCxcbiAgUHV0QnVja2V0UmVwbGljYXRpb25Db21tYW5kLFxuICBQdXRCdWNrZXRSZXF1ZXN0UGF5bWVudENvbW1hbmQsXG4gIFB1dEJ1Y2tldFRhZ2dpbmdDb21tYW5kLFxuICBQdXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZCxcbiAgUHV0QnVja2V0V2Vic2l0ZUNvbW1hbmQsXG4gIFB1dE9iamVjdENvbW1hbmQsXG4gIFB1dE9iamVjdEFjbENvbW1hbmQsXG4gIFB1dE9iamVjdExlZ2FsSG9sZENvbW1hbmQsXG4gIFB1dE9iamVjdExvY2tDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgUHV0T2JqZWN0UmV0ZW50aW9uQ29tbWFuZCxcbiAgUHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmQsXG4gIFB1dFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZCxcbiAgUmVzdG9yZU9iamVjdENvbW1hbmQsXG4gIFNlbGVjdE9iamVjdENvbnRlbnRDb21tYW5kLFxuICBVcGxvYWRQYXJ0Q29tbWFuZCxcbiAgVXBsb2FkUGFydENvcHlDb21tYW5kLFxuICBXcml0ZUdldE9iamVjdFJlc3BvbnNlQ29tbWFuZCxcbn07XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbW9kZWxzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUzNTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgXzogdW5pcXVlIHN5bWJvbDtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgYWJvcnRNdWx0aXBhcnRVcGxvYWQ6IChcbiAgICBhcmdzOiBBYm9ydE11bHRpcGFydFVwbG9hZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDb21wbGV0ZU11bHRpcGFydFVwbG9hZENvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBjb21wbGV0ZU11bHRpcGFydFVwbG9hZDogKFxuICAgIGFyZ3M6IENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENvcHlPYmplY3RDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgY29weU9iamVjdDogKFxuICAgIGFyZ3M6IENvcHlPYmplY3RDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8bmV2ZXIsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsIENvcHlPYmplY3RDb21tYW5kT3V0cHV0PjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQnVja2V0Q29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZUJ1Y2tldDogKFxuICAgIGFyZ3M6IENyZWF0ZUJ1Y2tldENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIENyZWF0ZUJ1Y2tldENvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZU11bHRpcGFydFVwbG9hZDogKFxuICAgIGFyZ3M6IENyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIENyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQnVja2V0Q29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZUJ1Y2tldDogKFxuICAgIGFyZ3M6IERlbGV0ZUJ1Y2tldENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIERlbGV0ZUJ1Y2tldENvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBkZWxldGVCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogRGVsZXRlQnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIERlbGV0ZUJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUJ1Y2tldENvcnNDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlQnVja2V0Q29yczogKFxuICAgIGFyZ3M6IERlbGV0ZUJ1Y2tldENvcnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBEZWxldGVCdWNrZXRDb3JzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZUJ1Y2tldEVuY3J5cHRpb246IChcbiAgICBhcmdzOiBEZWxldGVCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgRGVsZXRlQnVja2V0RW5jcnlwdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBkZWxldGVCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogRGVsZXRlQnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIERlbGV0ZUJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlQnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbjogKFxuICAgIGFyZ3M6IERlbGV0ZUJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBEZWxldGVCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVCdWNrZXRMaWZlY3ljbGVDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlQnVja2V0TGlmZWN5Y2xlOiAoXG4gICAgYXJnczogRGVsZXRlQnVja2V0TGlmZWN5Y2xlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgRGVsZXRlQnVja2V0TGlmZWN5Y2xlQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBkZWxldGVCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbjogKFxuICAgIGFyZ3M6IERlbGV0ZUJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgRGVsZXRlQnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZUJ1Y2tldE93bmVyc2hpcENvbnRyb2xzOiAoXG4gICAgYXJnczogRGVsZXRlQnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBEZWxldGVCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQnVja2V0UG9saWN5Q29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZUJ1Y2tldFBvbGljeTogKFxuICAgIGFyZ3M6IERlbGV0ZUJ1Y2tldFBvbGljeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIERlbGV0ZUJ1Y2tldFBvbGljeUNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQnVja2V0UmVwbGljYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlQnVja2V0UmVwbGljYXRpb246IChcbiAgICBhcmdzOiBEZWxldGVCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIERlbGV0ZUJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVCdWNrZXRUYWdnaW5nQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZUJ1Y2tldFRhZ2dpbmc6IChcbiAgICBhcmdzOiBEZWxldGVCdWNrZXRUYWdnaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgRGVsZXRlQnVja2V0VGFnZ2luZ0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQnVja2V0V2Vic2l0ZUNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBkZWxldGVCdWNrZXRXZWJzaXRlOiAoXG4gICAgYXJnczogRGVsZXRlQnVja2V0V2Vic2l0ZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIERlbGV0ZUJ1Y2tldFdlYnNpdGVDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZU9iamVjdENvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBkZWxldGVPYmplY3Q6IChcbiAgICBhcmdzOiBEZWxldGVPYmplY3RDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBEZWxldGVPYmplY3RDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZU9iamVjdHNDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlT2JqZWN0czogKFxuICAgIGFyZ3M6IERlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBEZWxldGVPYmplY3RzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZU9iamVjdFRhZ2dpbmc6IChcbiAgICBhcmdzOiBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgRGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlUHVibGljQWNjZXNzQmxvY2tDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlUHVibGljQWNjZXNzQmxvY2s6IChcbiAgICBhcmdzOiBEZWxldGVQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIERlbGV0ZVB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRBY2NlbGVyYXRlQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRCdWNrZXRBY2NlbGVyYXRlQ29uZmlndXJhdGlvbjogKFxuICAgIGFyZ3M6IEdldEJ1Y2tldEFjY2VsZXJhdGVDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldEFjbENvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRCdWNrZXRBY2w6IChcbiAgICBhcmdzOiBHZXRCdWNrZXRBY2xDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRCdWNrZXRBY2xDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbjogKFxuICAgIGFyZ3M6IEdldEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRDb3JzQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1Y2tldENvcnM6IChcbiAgICBhcmdzOiBHZXRCdWNrZXRDb3JzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0QnVja2V0Q29yc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRCdWNrZXRFbmNyeXB0aW9uOiAoXG4gICAgYXJnczogR2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbjogKFxuICAgIGFyZ3M6IEdldEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb246IChcbiAgICBhcmdzOiBHZXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRCdWNrZXRMaWZlY3ljbGVDb25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogR2V0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldEJ1Y2tldExpZmVjeWNsZUNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1Y2tldExvY2F0aW9uOiAoXG4gICAgYXJnczogR2V0QnVja2V0TG9jYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0TG9nZ2luZ0NvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRCdWNrZXRMb2dnaW5nOiAoXG4gICAgYXJnczogR2V0QnVja2V0TG9nZ2luZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldEJ1Y2tldExvZ2dpbmdDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogR2V0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRCdWNrZXROb3RpZmljYXRpb25Db25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogR2V0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldEJ1Y2tldE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzOiAoXG4gICAgYXJnczogR2V0QnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0UG9saWN5Q29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1Y2tldFBvbGljeTogKFxuICAgIGFyZ3M6IEdldEJ1Y2tldFBvbGljeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldEJ1Y2tldFBvbGljeUNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0UG9saWN5U3RhdHVzQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1Y2tldFBvbGljeVN0YXR1czogKFxuICAgIGFyZ3M6IEdldEJ1Y2tldFBvbGljeVN0YXR1c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldEJ1Y2tldFBvbGljeVN0YXR1c0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0UmVwbGljYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0QnVja2V0UmVwbGljYXRpb246IChcbiAgICBhcmdzOiBHZXRCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRSZXF1ZXN0UGF5bWVudENvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRCdWNrZXRSZXF1ZXN0UGF5bWVudDogKFxuICAgIGFyZ3M6IEdldEJ1Y2tldFJlcXVlc3RQYXltZW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0QnVja2V0UmVxdWVzdFBheW1lbnRDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldFRhZ2dpbmdDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0QnVja2V0VGFnZ2luZzogKFxuICAgIGFyZ3M6IEdldEJ1Y2tldFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRCdWNrZXRUYWdnaW5nQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1Y2tldFZlcnNpb25pbmc6IChcbiAgICBhcmdzOiBHZXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0QnVja2V0VmVyc2lvbmluZ0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0V2Vic2l0ZUNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRCdWNrZXRXZWJzaXRlOiAoXG4gICAgYXJnczogR2V0QnVja2V0V2Vic2l0ZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldEJ1Y2tldFdlYnNpdGVDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldE9iamVjdENvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRPYmplY3Q6IHtcbiAgICAoXG4gICAgICBhcmdzOiBHZXRPYmplY3RDb21tYW5kSW5wdXQsXG4gICAgICBvcHRpb25zPzogeyByZWFkb25seSBwcmVzaWduZWQ/OiBmYWxzZSB9ICYgX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICAgKTogRWZmZWN0LkVmZmVjdDxuZXZlciwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvciwgR2V0T2JqZWN0Q29tbWFuZE91dHB1dD47XG4gICAgKFxuICAgICAgYXJnczogR2V0T2JqZWN0Q29tbWFuZElucHV0LFxuICAgICAgb3B0aW9ucz86IHsgcmVhZG9ubHkgcHJlc2lnbmVkOiB0cnVlIH0gJiBSZXF1ZXN0UHJlc2lnbmluZ0FyZ3VtZW50cyxcbiAgICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLCBzdHJpbmc+O1xuICB9O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRPYmplY3RBY2xDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0T2JqZWN0QWNsOiAoXG4gICAgYXJnczogR2V0T2JqZWN0QWNsQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0T2JqZWN0QWNsQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRPYmplY3RBdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldE9iamVjdEF0dHJpYnV0ZXM6IChcbiAgICBhcmdzOiBHZXRPYmplY3RBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0T2JqZWN0QXR0cmlidXRlc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0T2JqZWN0TGVnYWxIb2xkQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldE9iamVjdExlZ2FsSG9sZDogKFxuICAgIGFyZ3M6IEdldE9iamVjdExlZ2FsSG9sZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldE9iamVjdExlZ2FsSG9sZENvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0T2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0T2JqZWN0TG9ja0NvbmZpZ3VyYXRpb246IChcbiAgICBhcmdzOiBHZXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldE9iamVjdExvY2tDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRPYmplY3RSZXRlbnRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0T2JqZWN0UmV0ZW50aW9uOiAoXG4gICAgYXJnczogR2V0T2JqZWN0UmV0ZW50aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0T2JqZWN0UmV0ZW50aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRPYmplY3RUYWdnaW5nQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldE9iamVjdFRhZ2dpbmc6IChcbiAgICBhcmdzOiBHZXRPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0T2JqZWN0VGFnZ2luZ0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0T2JqZWN0VG9ycmVudENvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRPYmplY3RUb3JyZW50OiAoXG4gICAgYXJnczogR2V0T2JqZWN0VG9ycmVudENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldE9iamVjdFRvcnJlbnRDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldFB1YmxpY0FjY2Vzc0Jsb2NrOiAoXG4gICAgYXJnczogR2V0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgSGVhZEJ1Y2tldENvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBoZWFkQnVja2V0OiAoXG4gICAgYXJnczogSGVhZEJ1Y2tldENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxuZXZlciwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvciwgSGVhZEJ1Y2tldENvbW1hbmRPdXRwdXQ+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBIZWFkT2JqZWN0Q29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGhlYWRPYmplY3Q6IChcbiAgICBhcmdzOiBIZWFkT2JqZWN0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLCBIZWFkT2JqZWN0Q29tbWFuZE91dHB1dD47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uc0NvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBsaXN0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbnM6IChcbiAgICBhcmdzOiBMaXN0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBMaXN0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbnNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uc0NvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBsaXN0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbnM6IChcbiAgICBhcmdzOiBMaXN0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBMaXN0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbnNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uc0NvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBsaXN0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbnM6IChcbiAgICBhcmdzOiBMaXN0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBMaXN0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbnNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uczogKFxuICAgIGFyZ3M6IExpc3RCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBMaXN0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25zQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0QnVja2V0c0NvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBsaXN0QnVja2V0czogKFxuICAgIGFyZ3M6IExpc3RCdWNrZXRzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgTGlzdEJ1Y2tldHNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RNdWx0aXBhcnRVcGxvYWRzQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGxpc3RNdWx0aXBhcnRVcGxvYWRzOiAoXG4gICAgYXJnczogTGlzdE11bHRpcGFydFVwbG9hZHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBMaXN0TXVsdGlwYXJ0VXBsb2Fkc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdE9iamVjdHNDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdE9iamVjdHM6IChcbiAgICBhcmdzOiBMaXN0T2JqZWN0c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIExpc3RPYmplY3RzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0T2JqZWN0c1YyQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGxpc3RPYmplY3RzVjI6IChcbiAgICBhcmdzOiBMaXN0T2JqZWN0c1YyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgTGlzdE9iamVjdHNWMkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdE9iamVjdFZlcnNpb25zQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGxpc3RPYmplY3RWZXJzaW9uczogKFxuICAgIGFyZ3M6IExpc3RPYmplY3RWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIExpc3RPYmplY3RWZXJzaW9uc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFBhcnRzQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGxpc3RQYXJ0czogKFxuICAgIGFyZ3M6IExpc3RQYXJ0c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxuZXZlciwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvciwgTGlzdFBhcnRzQ29tbWFuZE91dHB1dD47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEJ1Y2tldEFjY2VsZXJhdGVDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dEJ1Y2tldEFjY2VsZXJhdGVDb25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogUHV0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBQdXRCdWNrZXRBY2NlbGVyYXRlQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0QWNsQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dEJ1Y2tldEFjbDogKFxuICAgIGFyZ3M6IFB1dEJ1Y2tldEFjbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFB1dEJ1Y2tldEFjbENvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogUHV0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFB1dEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEJ1Y2tldENvcnNDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgcHV0QnVja2V0Q29yczogKFxuICAgIGFyZ3M6IFB1dEJ1Y2tldENvcnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBQdXRCdWNrZXRDb3JzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dEJ1Y2tldEVuY3J5cHRpb246IChcbiAgICBhcmdzOiBQdXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgUHV0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogUHV0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFB1dEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgcHV0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbjogKFxuICAgIGFyZ3M6IFB1dEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBQdXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRMaWZlY3ljbGVDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dEJ1Y2tldExpZmVjeWNsZUNvbmZpZ3VyYXRpb246IChcbiAgICBhcmdzOiBQdXRCdWNrZXRMaWZlY3ljbGVDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgUHV0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0TG9nZ2luZ0NvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRCdWNrZXRMb2dnaW5nOiAoXG4gICAgYXJnczogUHV0QnVja2V0TG9nZ2luZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFB1dEJ1Y2tldExvZ2dpbmdDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogUHV0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBQdXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRCdWNrZXROb3RpZmljYXRpb25Db25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogUHV0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFB1dEJ1Y2tldE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzOiAoXG4gICAgYXJnczogUHV0QnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBQdXRCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0UG9saWN5Q29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dEJ1Y2tldFBvbGljeTogKFxuICAgIGFyZ3M6IFB1dEJ1Y2tldFBvbGljeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFB1dEJ1Y2tldFBvbGljeUNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0UmVwbGljYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgcHV0QnVja2V0UmVwbGljYXRpb246IChcbiAgICBhcmdzOiBQdXRCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFB1dEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRSZXF1ZXN0UGF5bWVudENvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRCdWNrZXRSZXF1ZXN0UGF5bWVudDogKFxuICAgIGFyZ3M6IFB1dEJ1Y2tldFJlcXVlc3RQYXltZW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgUHV0QnVja2V0UmVxdWVzdFBheW1lbnRDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEJ1Y2tldFRhZ2dpbmdDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgcHV0QnVja2V0VGFnZ2luZzogKFxuICAgIGFyZ3M6IFB1dEJ1Y2tldFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBQdXRCdWNrZXRUYWdnaW5nQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dEJ1Y2tldFZlcnNpb25pbmc6IChcbiAgICBhcmdzOiBQdXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgUHV0QnVja2V0VmVyc2lvbmluZ0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0V2Vic2l0ZUNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRCdWNrZXRXZWJzaXRlOiAoXG4gICAgYXJnczogUHV0QnVja2V0V2Vic2l0ZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFB1dEJ1Y2tldFdlYnNpdGVDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dE9iamVjdENvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRPYmplY3Q6IHtcbiAgICAoXG4gICAgICBhcmdzOiBQdXRPYmplY3RDb21tYW5kSW5wdXQsXG4gICAgICBvcHRpb25zPzogeyByZWFkb25seSBwcmVzaWduZWQ/OiBmYWxzZSB9ICYgX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICAgKTogRWZmZWN0LkVmZmVjdDxuZXZlciwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvciwgUHV0T2JqZWN0Q29tbWFuZE91dHB1dD47XG4gICAgKFxuICAgICAgYXJnczogUHV0T2JqZWN0Q29tbWFuZElucHV0LFxuICAgICAgb3B0aW9ucz86IHsgcmVhZG9ubHkgcHJlc2lnbmVkOiB0cnVlIH0gJiBSZXF1ZXN0UHJlc2lnbmluZ0FyZ3VtZW50cyxcbiAgICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLCBzdHJpbmc+O1xuICB9O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRPYmplY3RBY2xDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgcHV0T2JqZWN0QWNsOiAoXG4gICAgYXJnczogUHV0T2JqZWN0QWNsQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgUHV0T2JqZWN0QWNsQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRPYmplY3RMZWdhbEhvbGRDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgcHV0T2JqZWN0TGVnYWxIb2xkOiAoXG4gICAgYXJnczogUHV0T2JqZWN0TGVnYWxIb2xkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgUHV0T2JqZWN0TGVnYWxIb2xkQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbjogKFxuICAgIGFyZ3M6IFB1dE9iamVjdExvY2tDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgUHV0T2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dE9iamVjdFJldGVudGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRPYmplY3RSZXRlbnRpb246IChcbiAgICBhcmdzOiBQdXRPYmplY3RSZXRlbnRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBQdXRPYmplY3RSZXRlbnRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgcHV0T2JqZWN0VGFnZ2luZzogKFxuICAgIGFyZ3M6IFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBQdXRPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRQdWJsaWNBY2Nlc3NCbG9jazogKFxuICAgIGFyZ3M6IFB1dFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgUHV0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlc3RvcmVPYmplY3RDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzdG9yZU9iamVjdDogKFxuICAgIGFyZ3M6IFJlc3RvcmVPYmplY3RDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBSZXN0b3JlT2JqZWN0Q29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZWxlY3RPYmplY3RDb250ZW50Q29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHNlbGVjdE9iamVjdENvbnRlbnQ6IChcbiAgICBhcmdzOiBTZWxlY3RPYmplY3RDb250ZW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgU2VsZWN0T2JqZWN0Q29udGVudENvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBsb2FkUGFydENvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSB1cGxvYWRQYXJ0OiAoXG4gICAgYXJnczogVXBsb2FkUGFydENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxuZXZlciwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvciwgVXBsb2FkUGFydENvbW1hbmRPdXRwdXQ+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGxvYWRQYXJ0Q29weUNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSB1cGxvYWRQYXJ0Q29weTogKFxuICAgIGFyZ3M6IFVwbG9hZFBhcnRDb3B5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgVXBsb2FkUGFydENvcHlDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFdyaXRlR2V0T2JqZWN0UmVzcG9uc2VDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgd3JpdGVHZXRPYmplY3RSZXNwb25zZTogKFxuICAgIGFyZ3M6IFdyaXRlR2V0T2JqZWN0UmVzcG9uc2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBXcml0ZUdldE9iamVjdFJlc3BvbnNlQ29tbWFuZE91dHB1dFxuICA+O1xufVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IHRhZ3NcbiAqL1xuZXhwb3J0IGNvbnN0IFMzU2VydmljZSA9IENvbnRleHQuVGFnPFMzU2VydmljZT4oXG4gIFN5bWJvbC5mb3IoXCJAZWZmZWN0LWF3cy9jbGllbnQtczMvUzNTZXJ2aWNlXCIpLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBjb25zdHJ1Y3RvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IG1ha2VTM1NlcnZpY2UgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICBjb25zdCBjbGllbnQgPSB5aWVsZCogXyhTM0NsaWVudEluc3RhbmNlKTtcblxuICBjb25zdCBjYXRjaEVycm9ycyA9IChlOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBTM1NlcnZpY2VFeGNlcHRpb24pIHtcbiAgICAgIHJldHVybiBTM1NlcnZpY2VFcnJvcih7XG4gICAgICAgIC4uLmUsXG4gICAgICAgIG5hbWU6IFwiUzNTZXJ2aWNlRXJyb3JcIixcbiAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICByZXR1cm4gU2RrRXJyb3Ioe1xuICAgICAgICAuLi5lLFxuICAgICAgICBuYW1lOiBcIlNka0Vycm9yXCIsXG4gICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfTtcblxuICByZXR1cm4gUmVhZG9ubHlSZWNvcmQudG9FbnRyaWVzKGNvbW1hbmRzKS5yZWR1Y2UoKGFjYywgW2NvbW1hbmRdKSA9PiB7XG4gICAgY29uc3QgQ29tbWFuZEN0b3IgPSBjb21tYW5kc1tjb21tYW5kXSBhcyBhbnk7XG4gICAgY29uc3QgbWV0aG9kSW1wbCA9IChcbiAgICAgIGFyZ3M6IGFueSxcbiAgICAgIG9wdGlvbnM/OlxuICAgICAgICB8ICh7IHJlYWRvbmx5IHByZXNpZ25lZD86IGZhbHNlIH0gJiBfX0h0dHBIYW5kbGVyT3B0aW9ucylcbiAgICAgICAgfCAoeyByZWFkb25seSBwcmVzaWduZWQ6IHRydWUgfSAmIFJlcXVlc3RQcmVzaWduaW5nQXJndW1lbnRzKSxcbiAgICApID0+XG4gICAgICBvcHRpb25zPy5wcmVzaWduZWRcbiAgICAgICAgPyBFZmZlY3QudHJ5UHJvbWlzZSh7XG4gICAgICAgICAgICB0cnk6ICgpID0+XG4gICAgICAgICAgICAgIGdldFNpZ25lZFVybChjbGllbnQgYXMgYW55LCBuZXcgQ29tbWFuZEN0b3IoYXJncyksIG9wdGlvbnMpLFxuICAgICAgICAgICAgY2F0Y2g6IGNhdGNoRXJyb3JzLFxuICAgICAgICAgIH0pXG4gICAgICAgIDogRWZmZWN0LnRyeVByb21pc2Uoe1xuICAgICAgICAgICAgdHJ5OiAoKSA9PiBjbGllbnQuc2VuZChuZXcgQ29tbWFuZEN0b3IoYXJncyksIG9wdGlvbnMpLFxuICAgICAgICAgICAgY2F0Y2g6IGNhdGNoRXJyb3JzLFxuICAgICAgICAgIH0pO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAoY29tbWFuZFswXS50b0xvd2VyQ2FzZSgpICsgY29tbWFuZC5zbGljZSgxKSkucmVwbGFjZShcbiAgICAgIC9Db21tYW5kJC8sXG4gICAgICBcIlwiLFxuICAgICk7XG4gICAgcmV0dXJuIHsgLi4uYWNjLCBbbWV0aG9kTmFtZV06IG1ldGhvZEltcGwgfTtcbiAgfSwge30pIGFzIFMzU2VydmljZTtcbn0pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgQmFzZVMzU2VydmljZUxheWVyID0gTGF5ZXIuZWZmZWN0KFMzU2VydmljZSwgbWFrZVMzU2VydmljZSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBTM1NlcnZpY2VMYXllciA9IEJhc2VTM1NlcnZpY2VMYXllci5waXBlKFxuICBMYXllci5wcm92aWRlKFMzQ2xpZW50SW5zdGFuY2VMYXllciksXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdFMzU2VydmljZUxheWVyID0gUzNTZXJ2aWNlTGF5ZXIucGlwZShcbiAgTGF5ZXIucHJvdmlkZShEZWZhdWx0UzNDbGllbnRDb25maWdMYXllciksXG4pO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSBEYW5nZXIgWm9uZSAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBCYXNlUzNTZXJ2aWNlRWZmZWN0ID0gbWFrZVMzU2VydmljZTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgUzNTZXJ2aWNlRWZmZWN0ID0gQmFzZVMzU2VydmljZUVmZmVjdC5waXBlKFxuICBFZmZlY3QucHJvdmlkZShTM0NsaWVudEluc3RhbmNlTGF5ZXIpLFxuKTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdFMzU2VydmljZUVmZmVjdCA9IEJhc2VTM1NlcnZpY2VFZmZlY3QucGlwZShcbiAgRWZmZWN0LnByb3ZpZGUoRGVmYXVsdFMzQ2xpZW50SW5zdGFuY2VMYXllciksXG4pO1xuIl19
@@ -0,0 +1,26 @@
1
+ import { S3Client } from "@aws-sdk/client-s3";
2
+ import * as Context from "effect/Context";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Layer from "effect/Layer";
5
+ import { DefaultS3ClientConfigLayer, S3ClientInstanceConfig, } from "./S3ClientInstanceConfig";
6
+ /**
7
+ * @since 1.0.0
8
+ * @category tags
9
+ */
10
+ export const S3ClientInstance = Context.Tag(Symbol.for("@effect-aws/client-s3/S3ClientInstance"));
11
+ /**
12
+ * @since 1.0.0
13
+ * @category constructors
14
+ */
15
+ export const makeS3ClientInstance = Effect.map(S3ClientInstanceConfig, (config) => new S3Client(config));
16
+ /**
17
+ * @since 1.0.0
18
+ * @category layers
19
+ */
20
+ export const S3ClientInstanceLayer = Layer.effect(S3ClientInstance, makeS3ClientInstance);
21
+ /**
22
+ * @since 1.0.0
23
+ * @category layers
24
+ */
25
+ export const DefaultS3ClientInstanceLayer = S3ClientInstanceLayer.pipe(Layer.provide(DefaultS3ClientConfigLayer));
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUzNDbGllbnRJbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TM0NsaWVudEluc3RhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEtBQUssT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsc0JBQXNCLEdBQ3ZCLE1BQU0sMEJBQTBCLENBQUM7QUFVbEM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FDekMsTUFBTSxDQUFDLEdBQUcsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUNyRCxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FDNUMsc0JBQXNCLEVBQ3RCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FDakMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQy9DLGdCQUFnQixFQUNoQixvQkFBb0IsQ0FDckIsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FDcEUsS0FBSyxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUzNDbGllbnQgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXMzXCI7XG5pbXBvcnQgKiBhcyBDb250ZXh0IGZyb20gXCJlZmZlY3QvQ29udGV4dFwiO1xuaW1wb3J0ICogYXMgRWZmZWN0IGZyb20gXCJlZmZlY3QvRWZmZWN0XCI7XG5pbXBvcnQgKiBhcyBMYXllciBmcm9tIFwiZWZmZWN0L0xheWVyXCI7XG5pbXBvcnQge1xuICBEZWZhdWx0UzNDbGllbnRDb25maWdMYXllcixcbiAgUzNDbGllbnRJbnN0YW5jZUNvbmZpZyxcbn0gZnJvbSBcIi4vUzNDbGllbnRJbnN0YW5jZUNvbmZpZ1wiO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IHRhZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM0NsaWVudEluc3RhbmNlIHtcbiAgcmVhZG9ubHkgXzogdW5pcXVlIHN5bWJvbDtcbn1cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSB0YWdzXG4gKi9cbmV4cG9ydCBjb25zdCBTM0NsaWVudEluc3RhbmNlID0gQ29udGV4dC5UYWc8UzNDbGllbnRJbnN0YW5jZSwgUzNDbGllbnQ+KFxuICBTeW1ib2wuZm9yKFwiQGVmZmVjdC1hd3MvY2xpZW50LXMzL1MzQ2xpZW50SW5zdGFuY2VcIiksXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZVMzQ2xpZW50SW5zdGFuY2UgPSBFZmZlY3QubWFwKFxuICBTM0NsaWVudEluc3RhbmNlQ29uZmlnLFxuICAoY29uZmlnKSA9PiBuZXcgUzNDbGllbnQoY29uZmlnKSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBTM0NsaWVudEluc3RhbmNlTGF5ZXIgPSBMYXllci5lZmZlY3QoXG4gIFMzQ2xpZW50SW5zdGFuY2UsXG4gIG1ha2VTM0NsaWVudEluc3RhbmNlLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRTM0NsaWVudEluc3RhbmNlTGF5ZXIgPSBTM0NsaWVudEluc3RhbmNlTGF5ZXIucGlwZShcbiAgTGF5ZXIucHJvdmlkZShEZWZhdWx0UzNDbGllbnRDb25maWdMYXllciksXG4pO1xuIl19
@@ -0,0 +1,32 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Layer from "effect/Layer";
4
+ import * as Runtime from "effect/Runtime";
5
+ /**
6
+ * @since 1.0.0
7
+ * @category tags
8
+ */
9
+ export const S3ClientInstanceConfig = Context.Tag(Symbol.for("@effect-aws/client-s3/S3ClientInstanceConfig"));
10
+ /**
11
+ * @since 1.0.0
12
+ * @category constructors
13
+ */
14
+ export const makeDefaultS3ClientInstanceConfig = Effect.gen(function* (_) {
15
+ const runtime = yield* _(Effect.runtime());
16
+ const runSync = Runtime.runSync(runtime);
17
+ return {
18
+ logger: {
19
+ info: (m) => Effect.logInfo(m).pipe(runSync),
20
+ warn: (m) => Effect.logWarning(m).pipe(runSync),
21
+ error: (m) => Effect.logError(m).pipe(runSync),
22
+ debug: (m) => Effect.logDebug(m).pipe(runSync),
23
+ trace: (m) => Effect.logTrace(m).pipe(runSync),
24
+ },
25
+ };
26
+ });
27
+ /**
28
+ * @since 1.0.0
29
+ * @category layers
30
+ */
31
+ export const DefaultS3ClientConfigLayer = Layer.effect(S3ClientInstanceConfig, makeDefaultS3ClientInstanceConfig);
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUzNDbGllbnRJbnN0YW5jZUNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TM0NsaWVudEluc3RhbmNlQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQVUxQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUcvQyxNQUFNLENBQUMsR0FBRyxDQUFDLDhDQUE4QyxDQUFDLENBQUMsQ0FBQztBQUU5RDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FJMUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFTLENBQUMsQ0FBQztJQUNsRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXpDLE9BQU87UUFDTCxNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM1QyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUMvQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM5QyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM5QyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUMvQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVIOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQ3BELHNCQUFzQixFQUN0QixpQ0FBaUMsQ0FDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUzNDbGllbnRDb25maWcgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXMzXCI7XG5pbXBvcnQgKiBhcyBDb250ZXh0IGZyb20gXCJlZmZlY3QvQ29udGV4dFwiO1xuaW1wb3J0ICogYXMgRWZmZWN0IGZyb20gXCJlZmZlY3QvRWZmZWN0XCI7XG5pbXBvcnQgKiBhcyBMYXllciBmcm9tIFwiZWZmZWN0L0xheWVyXCI7XG5pbXBvcnQgKiBhcyBSdW50aW1lIGZyb20gXCJlZmZlY3QvUnVudGltZVwiO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IHRhZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM0NsaWVudEluc3RhbmNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgXzogdW5pcXVlIHN5bWJvbDtcbn1cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSB0YWdzXG4gKi9cbmV4cG9ydCBjb25zdCBTM0NsaWVudEluc3RhbmNlQ29uZmlnID0gQ29udGV4dC5UYWc8XG4gIFMzQ2xpZW50SW5zdGFuY2VDb25maWcsXG4gIFMzQ2xpZW50Q29uZmlnXG4+KFN5bWJvbC5mb3IoXCJAZWZmZWN0LWF3cy9jbGllbnQtczMvUzNDbGllbnRJbnN0YW5jZUNvbmZpZ1wiKSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgY29uc3RydWN0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlRGVmYXVsdFMzQ2xpZW50SW5zdGFuY2VDb25maWc6IEVmZmVjdC5FZmZlY3Q8XG4gIG5ldmVyLFxuICBuZXZlcixcbiAgUzNDbGllbnRDb25maWdcbj4gPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICBjb25zdCBydW50aW1lID0geWllbGQqIF8oRWZmZWN0LnJ1bnRpbWU8bmV2ZXI+KCkpO1xuICBjb25zdCBydW5TeW5jID0gUnVudGltZS5ydW5TeW5jKHJ1bnRpbWUpO1xuXG4gIHJldHVybiB7XG4gICAgbG9nZ2VyOiB7XG4gICAgICBpbmZvOiAobSkgPT4gRWZmZWN0LmxvZ0luZm8obSkucGlwZShydW5TeW5jKSxcbiAgICAgIHdhcm46IChtKSA9PiBFZmZlY3QubG9nV2FybmluZyhtKS5waXBlKHJ1blN5bmMpLFxuICAgICAgZXJyb3I6IChtKSA9PiBFZmZlY3QubG9nRXJyb3IobSkucGlwZShydW5TeW5jKSxcbiAgICAgIGRlYnVnOiAobSkgPT4gRWZmZWN0LmxvZ0RlYnVnKG0pLnBpcGUocnVuU3luYyksXG4gICAgICB0cmFjZTogKG0pID0+IEVmZmVjdC5sb2dUcmFjZShtKS5waXBlKHJ1blN5bmMpLFxuICAgIH0sXG4gIH07XG59KTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRTM0NsaWVudENvbmZpZ0xheWVyID0gTGF5ZXIuZWZmZWN0KFxuICBTM0NsaWVudEluc3RhbmNlQ29uZmlnLFxuICBtYWtlRGVmYXVsdFMzQ2xpZW50SW5zdGFuY2VDb25maWcsXG4pO1xuIl19