@liflig/cdk 2.21.1 → 2.21.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -2
- package/lib/cdk-deploy/cdk-deploy.js +10 -11
- package/lib/cdk-deploy/start-deploy-handler.d.ts +1 -1
- package/lib/cdk-deploy/start-deploy-handler.js +19 -26
- package/lib/cdk-deploy/status-handler.d.ts +1 -1
- package/lib/cdk-deploy/status-handler.js +17 -20
- package/lib/cdk-pipelines/cloud-assembly-lookup-handler.d.ts +1 -1
- package/lib/cdk-pipelines/cloud-assembly-lookup-handler.js +46 -35
- package/lib/cdk-pipelines/liflig-cdk-pipeline.js +6 -6
- package/lib/ecs-update-image/ecs-update-image.js +10 -11
- package/lib/ecs-update-image/start-deploy-handler.d.ts +1 -1
- package/lib/ecs-update-image/start-deploy-handler.js +16 -25
- package/lib/ecs-update-image/status-handler.d.ts +1 -1
- package/lib/ecs-update-image/status-handler.js +10 -17
- package/lib/pipelines/pipeline.js +34 -29
- package/lib/ses/configurationsetsnsdestination/handler.d.ts +1 -1
- package/lib/ses/configurationsetsnsdestination/handler.js +15 -25
- package/lib/ses/configurationsetsnsdestination/index.js +7 -7
- package/lib/ses/sesdomain/handler.d.ts +1 -1
- package/lib/ses/sesdomain/handler.js +31 -31
- package/lib/ses/sesdomain/index.js +6 -6
- package/lib/ses/sesverifyemail/handler.d.ts +1 -1
- package/lib/ses/sesverifyemail/handler.js +12 -10
- package/lib/ses/sesverifyemail/index.js +6 -6
- package/package.json +19 -8
|
@@ -52,7 +52,7 @@ class Pipeline extends constructs.Construct {
|
|
|
52
52
|
const checkCanRunFn = new lambda.SingletonFunction(this, "CheckCanRunFn", {
|
|
53
53
|
uuid: "30ad3abb-f774-4804-a6ef-2c2f4a247362",
|
|
54
54
|
code: new lambda.InlineCode(`exports.handler = ${checkCanRunHandler.toString()};`),
|
|
55
|
-
runtime: lambda.Runtime.
|
|
55
|
+
runtime: lambda.Runtime.NODEJS_18_X,
|
|
56
56
|
handler: "index.handler",
|
|
57
57
|
timeout: cdk.Duration.seconds(10),
|
|
58
58
|
});
|
|
@@ -71,7 +71,7 @@ class Pipeline extends constructs.Construct {
|
|
|
71
71
|
const collectFilesFn = new lambda.SingletonFunction(this, "CollectFilesFn", {
|
|
72
72
|
uuid: "c49cbfe1-50e0-4721-8964-fb20f4e5a7ad",
|
|
73
73
|
code: new lambda.InlineCode(`exports.handler = ${collectFilesHandler.toString()};`),
|
|
74
|
-
runtime: lambda.Runtime.
|
|
74
|
+
runtime: lambda.Runtime.NODEJS_18_X,
|
|
75
75
|
handler: "index.handler",
|
|
76
76
|
timeout: cdk.Duration.seconds(30),
|
|
77
77
|
});
|
|
@@ -132,11 +132,10 @@ exports.Pipeline = Pipeline;
|
|
|
132
132
|
// This is a self-contained function that will be serialized as a lambda.
|
|
133
133
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
134
134
|
const collectFilesHandler = async (event) => {
|
|
135
|
-
var _a;
|
|
136
135
|
// eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-unsafe-assignment
|
|
137
|
-
const
|
|
136
|
+
const { S3Client, ListObjectsV2Command, GetObjectCommand } = await Promise.resolve().then(() => require("@aws-sdk/client-s3"));
|
|
138
137
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
139
|
-
const
|
|
138
|
+
const s3Client = new S3Client();
|
|
140
139
|
console.log("Event received: ", event);
|
|
141
140
|
const bucketName = event.bucketName;
|
|
142
141
|
const bucketPrefix = event.bucketPrefix;
|
|
@@ -144,37 +143,37 @@ const collectFilesHandler = async (event) => {
|
|
|
144
143
|
if (bucketPrefix.slice(-1) !== "/") {
|
|
145
144
|
throw new Error(`Expected bucket prefix to end with '/' but its value is '${bucketPrefix}'`);
|
|
146
145
|
}
|
|
147
|
-
|
|
148
|
-
.
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
146
|
+
async function listObjects() {
|
|
147
|
+
const { Contents } = await s3Client.send(new ListObjectsV2Command({
|
|
148
|
+
Bucket: bucketName,
|
|
149
|
+
Prefix: bucketPrefix,
|
|
150
|
+
}));
|
|
151
|
+
return Contents;
|
|
152
|
+
}
|
|
153
|
+
async function getObject(key) {
|
|
154
|
+
const { Body } = await s3Client.send(new GetObjectCommand({
|
|
156
155
|
Bucket: bucketName,
|
|
157
156
|
Key: key,
|
|
158
|
-
})
|
|
159
|
-
|
|
160
|
-
return result.Body.toString();
|
|
157
|
+
}));
|
|
158
|
+
return Body.toString();
|
|
161
159
|
}
|
|
162
160
|
let cloudAssembly = null;
|
|
163
161
|
let variables = {};
|
|
164
|
-
|
|
162
|
+
const files = await listObjects();
|
|
163
|
+
for (const file of files !== null && files !== void 0 ? files : []) {
|
|
165
164
|
const key = file.Key;
|
|
166
165
|
const filename = key.slice(bucketPrefix.length);
|
|
167
166
|
console.log(`File: ${filename}`);
|
|
168
167
|
if (filename === "cloud-assembly.json") {
|
|
169
168
|
console.log("Found Cloud Assembly");
|
|
170
169
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
171
|
-
cloudAssembly = JSON.parse(await
|
|
170
|
+
cloudAssembly = JSON.parse(await getObject(key));
|
|
172
171
|
}
|
|
173
172
|
else if (/^variables.*\.json$/.test(filename)) {
|
|
174
173
|
console.log("Found variables file");
|
|
175
174
|
variables = {
|
|
176
175
|
...variables,
|
|
177
|
-
...JSON.parse(await
|
|
176
|
+
...JSON.parse(await getObject(key)),
|
|
178
177
|
};
|
|
179
178
|
}
|
|
180
179
|
else {
|
|
@@ -199,26 +198,32 @@ const collectFilesHandler = async (event) => {
|
|
|
199
198
|
// This is a self-contained function that will be serialized as a lambda.
|
|
200
199
|
const checkCanRunHandler = async (event) => {
|
|
201
200
|
// eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-unsafe-assignment
|
|
202
|
-
const AWS = require("aws-sdk");
|
|
203
201
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
204
|
-
const
|
|
202
|
+
const { SFNClient, ListExecutionsCommand, ExecutionStatus } = await Promise.resolve().then(() => require("@aws-sdk/client-sfn"));
|
|
203
|
+
const sfnClient = new SFNClient();
|
|
205
204
|
console.log("Event received: ", event);
|
|
206
205
|
const stateMachineArn = event["stateMachineId"];
|
|
207
206
|
const currentExecutionArn = event["executionId"];
|
|
208
|
-
const executions =
|
|
209
|
-
.listExecutions({
|
|
207
|
+
const { executions } = await sfnClient.send(new ListExecutionsCommand({
|
|
210
208
|
stateMachineArn,
|
|
211
|
-
statusFilter:
|
|
212
|
-
})
|
|
213
|
-
|
|
209
|
+
statusFilter: ExecutionStatus.RUNNING,
|
|
210
|
+
}));
|
|
211
|
+
if (!executions) {
|
|
212
|
+
throw new Error("Could not list executions");
|
|
213
|
+
}
|
|
214
214
|
console.log("Executions: ", executions);
|
|
215
215
|
const currentExecution = executions.find((it) => it.executionArn == currentExecutionArn);
|
|
216
216
|
if (!currentExecution) {
|
|
217
217
|
throw new Error("Could not find current execution");
|
|
218
218
|
}
|
|
219
|
-
const newer = executions.filter((it) =>
|
|
219
|
+
const newer = executions.filter((it) => {
|
|
220
|
+
if (!it.startDate || !currentExecution.startDate) {
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
return it.startDate > currentExecution.startDate;
|
|
224
|
+
}).length;
|
|
220
225
|
return {
|
|
221
226
|
CanRunState: newer > 0 ? "SKIP" : executions.length == 1 ? "CONTINUE" : "WAIT",
|
|
222
227
|
};
|
|
223
228
|
};
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGlwZWxpbmVzL3BpcGVsaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUF3QztBQUV4QyxpREFBZ0Q7QUFDaEQsZ0VBQStEO0FBQy9ELDJDQUEwQztBQUMxQyxpREFBZ0Q7QUFFaEQscURBQW9EO0FBQ3BELHFFQUF5RDtBQUN6RCw2REFBNEQ7QUFDNUQsbUNBQWtDO0FBR2xDLG9DQUFpRDtBQUNqRCwrQ0FBc0U7QUFDdEUsNkNBQXdDO0FBOEN4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRztBQUNILE1BQWEsUUFBUyxTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBQ2hELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBb0I7O1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsTUFBTSxRQUFRLEdBQUcsSUFBQSw4QkFBZ0IsRUFBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDckQsTUFBTSxZQUFZLEdBQUcsSUFBQSxrQ0FBb0IsRUFBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7UUFFN0QsTUFBTSxlQUFlLEdBQ25CLE1BQUEsS0FBSyxDQUFDLGVBQWUsbUNBQUksSUFBQSw4QkFBc0IsRUFBQyxJQUFJLENBQUMsQ0FBQTtRQUV2RCxNQUFNLGFBQWEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO1lBQ3hFLElBQUksRUFBRSxzQ0FBc0M7WUFDNUMsSUFBSSxFQUFFLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FDekIscUJBQXFCLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxHQUFHLENBQ3REO1lBQ0QsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztZQUNuQyxPQUFPLEVBQUUsZUFBZTtZQUN4QixPQUFPLEVBQUUsR0FBRyxDQUFDLFFB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QyxNQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUVoRCxNQUFNLFVBQVUsR0FBRyxDQUNqQixNQUFNLEVBQUU7U0FDTCxjQUFjLENBQUM7UUFDZCxlQUFlO1FBQ2YsWUFBWSxFQUFFLFNBQVM7S0FDeEIsQ0FBQztTQUNELE9BQU8sRUFBRSxDQUNiLENBQUMsVUFBVSxDQUFBO0lBRVosT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFFdkMsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUN0QyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksSUFBSSxtQkFBbUIsQ0FDL0MsQ0FBQTtJQUVELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FDN0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUNsRCxDQUFDLE1BQU0sQ0FBQTtJQUVSLE9BQU87UUFDTCxXQUFXLEVBQ1QsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNO0tBQ3BFLENBQUE7QUFDSCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiXG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1ldmVudHNcIlxuaW1wb3J0ICogYXMgZXZlbnRzVGFyZ2V0cyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzXCJcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiXG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIlxuaW1wb3J0ICogYXMgczMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiXG5pbXBvcnQgKiBhcyBzZm4gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zXCJcbmltcG9ydCB7IENvbmRpdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9uc1wiXG5pbXBvcnQgKiBhcyB0YXNrcyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMtdGFza3NcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgdHlwZSB7IEhhbmRsZXIgfSBmcm9tIFwiYXdzLWxhbWJkYVwiXG5pbXBvcnQgdHlwZSAqIGFzIF9BV1MgZnJvbSBcImF3cy1zZGtcIlxuaW1wb3J0IHsgZ2V0R3JpaWRBcnRlZmFjdEJ1Y2tldCB9IGZyb20gXCIuLi9ncmlpZFwiXG5pbXBvcnQgeyBwaXBlbGluZVMzUHJlZml4LCBwaXBlbGluZVMzVHJpZ2dlcktleSB9IGZyb20gXCIuL2NvbnZlbnRpb25zXCJcbmltcG9ydCB7IERlcGxveUVudiB9IGZyb20gXCIuL2RlcGxveS1lbnZcIlxuXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lUHJvcHMge1xuICAvKipcbiAgICogQnVja2V0IGhvbGRpbmcgcGlwZWxpbmUgY29uZmlndXJhdGlvbiBhbmQgdHJpZ2dlciBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZSBleGlzdGluZyBidWNrZXQgYmFzZWQgb24gR3JpaWQgY29udmVudGlvbnNcbiAgICovXG4gIGFydGlmYWN0c0J1Y2tldD86IHMzLklCdWNrZXRcbiAgLyoqXG4gICAqIEVudmlyb25tZW50cyBmb3IgdGhpcyBwaXBlbGluZS4gRWFjaCBlbnZpcm9ubWVudCBpcyBkZXBsb3llZCBzZXF1ZW50aWFsbHlcbiAgICogaW4gdGhlIG9yZGVyIGdpdmVuLlxuICAgKi9cbiAgZW52aXJvbm1lbnRzOiBQaXBlbGluZUVudmlyb25tZW50W11cbiAgLyoqXG4gICAqIE5hbWUgb2YgcGlwZWxpbmUuIFRoaXMgaXMgdXNlZCBmb3IgdGhlIHBhdGggd2hlcmUgY29uZmlndXJhdGlvblxuICAgKiBpcyBzdG9yZWQgaW4gUzMuXG4gICAqL1xuICBwaXBlbGluZU5hbWU6IHN0cmluZ1xuICAvKipcbiAgICogVHJpZ2dlciB0aGUgcGlwZWxpbmUgd2hlbiB0aGUgdHJpZ2dlciBmaWxlIGlzIHdyaXR0ZW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZVxuICAgKi9cbiAgdHJpZ2dlckVuYWJsZWQ/OiBib29sZWFuXG4gIC8qKlxuICAgKiBWUEMgdXNlZCBmb3IgRmFyZ2F0ZSByZXNvdXJjZXMuXG4gICAqL1xuICB2cGM6IGVjMi5JVnBjXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVFbnZpcm9ubWVudCB7XG4gIC8qKlxuICAgKiBBY2NvdW50IG51bWJlciBob3N0aW5nIHRoZSBlbnZpcm9ubWVudC5cbiAgICovXG4gIGFjY291bnRJZDogc3RyaW5nXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHRhc2tzIHRvIHJ1biBhZnRlciB0aGUgZW52aXJvbm1lbnQgaGFzIGJlZW4gZGVwbG95ZWQuXG4gICAqL1xuICBhZnRlclN1Y2Nlc3NmdWxEZXBsb3k/OiBzZm4uQ2hhaW5cbiAgLyoqXG4gICAqIE5hbWUgb2YgZW52aXJvbm1lbnQuXG4gICAqL1xuICBuYW1lOiBzdHJpbmdcbn1cblxuLyoqXG4gKiBQaXBlbGluZSBmb3IgZG9pbmcgYSBtdWx0aS1hY2NvdW50IENESyBkZXBsb3ltZW50IGJhc2VkXG4gKiBvbiBhIGJ1aWx0IENESyBDbG91ZCBBc3NlbWJseSBhbmQgcGFyYW1ldGVycyBzdG9yZWQgaW4gUzMuXG4gKlxuICogVGhlIGFjY291bnRzIGJlaW5nIGRlcGxveWVkIHRvIG11c3QgYmUgcHJvdmlzaW9uZWQgd2l0aFxuICogdGhlIExpZmxpZ0Nka0RlcGxveWVyRGVwcyBjb25zdHJ1Y3Qgc28gZXhwZWN0ZWQgSUFNXG4gKiByb2xlcyBpcyBwcmVzZW50LlxuICpcbiAqIFRoZSBwaXBlbGluZSBzdGFydHMgYnkgd3JpdGluZyBhbiBlbXB0eSBmaWxlIHRvXG4gKiBzMzovLzxhcnRpZmFjdHMtYnVja2V0Pi9waXBlbGluZXMvPHBpcGVsaW5lLW5hbWU+L3RyaWdnZXJcbiAqXG4gKiBUaGUgQ0RLIGRlcGxveSBwcm9jZXNzIGlzIGhhbmRsZWQgYnkgbGlmbGlnLWNkay1kZXBsb3llci5cbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vY2FwcmFsaWZlY3ljbGUvbGlmbGlnLWNkay1kZXBsb3llclxuICpcbiAqIENvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHJlYWQgZnJvbSBTMyBhdCB0aGUgcGF0aFxuICogczM6Ly88YXJ0aWZhY3RzLWJ1Y2tldD4vcGlwZWxpbmVzLzxwaXBlbGluZS1uYW1lPi9cbiAqXG4gKiAgLSBjbG91ZC1hc3NlbWJseS5qc29uIHdoaWNoIGhhcyB0aGUgZm9ybWF0IGRlc2NyaWJlZCBhc1xuICogICAgQ0RLX0NMT1VEX0FTU0VNQkxZIGluIGxpZmxpZy1jZGstZGVwbG95ZXJcbiAqXG4gKiAgLSB2YXJpYWJsZXMqLmpzb24gd2hpY2ggY2FuIGJlIHplcm8gb3IgbW9yZSBmaWxlc1xuICogICAgd2l0aCBzdHJpbmctc3RyaW5nIG1hcCB0aGF0IHdpbGwgYmUgY29uY2F0ZW5hdGVkIHRvXG4gKiAgICBmb3JtIHRoZSBmb3JtYXQgZGVzY3JpYmVkIGFzIENES19WQVJJQUJMRVMgaW5cbiAqICAgIGxpZmxpZy1jZGstZGVwbG95ZXJcbiAqXG4gKiBUaGUgc2VwYXJhdGlvbiBvZiBDbG91ZCBBc3NlbWJseSBkZXRhaWxzIGFuZCB2YXJpYWJsZXMgZW5hYmxlc1xuICogc2VwYXJhdGlvbiBvZiBJYUMgY29kZSBhbmQgYXBwbGljYXRpb24gY29kZSBpZiB0aGV5IGFyZSBub3RcbiAqIGNvbG9jYXRlZCBpbiB0aGUgc2FtZSByZXBvc2l0b3J5LlxuICovXG5leHBvcnQgY2xhc3MgUGlwZWxpbmUgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBpcGVsaW5lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBjb25zdCBzM1ByZWZpeCA9IHBpcGVsaW5lUzNQcmVmaXgocHJvcHMucGlwZWxpbmVOYW1lKVxuICAgIGNvbnN0IHMzVHJpZ2dlcktleSA9IHBpcGVsaW5lUzNUcmlnZ2VyS2V5KHByb3BzLnBpcGVsaW5lTmFtZSlcblxuICAgIGNvbnN0IGFydGlmYWN0c0J1Y2tldCA9XG4gICAgICBwcm9wcy5hcnRpZmFjdHNCdWNrZXQgPz8gZ2V0R3JpaWRBcnRlZmFjdEJ1Y2tldCh0aGlzKVxuXG4gICAgY29uc3QgY2hlY2tDYW5SdW5GbiA9IG5ldyBsYW1iZGEuU2luZ2xldG9uRnVuY3Rpb24odGhpcywgXCJDaGVja0NhblJ1bkZuXCIsIHtcbiAgICAgIHV1aWQ6IFwiMzBhZDNhYmItZjc3NC00ODA0LWE2ZWYtMmMyZjRhMjQ3MzYyXCIsXG4gICAgICBjb2RlOiBuZXcgbGFtYmRhLklubGluZUNvZGUoXG4gICAgICAgIGBleHBvcnRzLmhhbmRsZXIgPSAke2NoZWNrQ2FuUnVuSGFuZGxlci50b1N0cmluZygpfTtgLFxuICAgICAgKSxcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xNl9YLFxuICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcygxMCksXG4gICAgfSlcblxuICAgIGNvbnN0IGNoZWNrQ2FuUnVuVGFzayA9IG5ldyB0YXNrcy5MYW1iZGFJbnZva2UoXG4gICAgICB0aGlzLFxuICAgICAgXCJDaGVjayBpZiB0aGUgcHJvY2VzcyBjYW4gcnVuXCIsXG4gICAgICB7XG4gICAgICAgIGxhbWJkYUZ1bmN0aW9uOiBjaGVja0NhblJ1bkZuLFxuICAgICAgICBvdXRwdXRQYXRoOiBcIiQuUGF5bG9hZFwiLFxuICAgICAgICBwYXlsb2FkOiBzZm4uVGFza0lucHV0LmZyb21PYmplY3Qoe1xuICAgICAgICAgIFwic3RhdGVNYWNoaW5lSWQuJFwiOiBcIiQkLlN0YXRlTWFjaGluZS5JZFwiLFxuICAgICAgICAgIFwiZXhlY3V0aW9uSWQuJFwiOiBcIiQkLkV4ZWN1dGlvbi5JZFwiLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgY29uc3Qgd2FpdCA9IG5ldyBzZm4uV2FpdCh0aGlzLCBcIldhaXQgYmVmb3JlIHJlY2hlY2tpbmcgc3RhdHVzXCIsIHtcbiAgICAgIHRpbWU6IHNmbi5XYWl0VGltZS5kdXJhdGlvbihjZGsuRHVyYXRpb24uc2Vjb25kcygxNSkpLFxuICAgIH0pXG5cbiAgICBjb25zdCBza2lwID0gbmV3IHNmbi5TdWNjZWVkKHRoaXMsIFwiU2tpcFwiKVxuXG4gICAgY29uc3QgY29sbGVjdEZpbGVzRm4gPSBuZXcgbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIFwiQ29sbGVjdEZpbGVzRm5cIixcbiAgICAgIHtcbiAgICAgICAgdXVpZDogXCJjNDljYmZlMS01MGUwLTQ3MjEtODk2NC1mYjIwZjRlNWE3YWRcIixcbiAgICAgICAgY29kZTogbmV3IGxhbWJkYS5JbmxpbmVDb2RlKFxuICAgICAgICAgIGBleHBvcnRzLmhhbmRsZXIgPSAke2NvbGxlY3RGaWxlc0hhbmRsZXIudG9TdHJpbmcoKX07YCxcbiAgICAgICAgKSxcbiAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcygzMCksXG4gICAgICB9LFxuICAgIClcblxuICAgIGFydGlmYWN0c0J1Y2tldC5ncmFudFJlYWQoY29sbGVjdEZpbGVzRm4pXG5cbiAgICBjb25zdCBjb2xsZWN0RmlsZXNUYXNrID0gbmV3IHRhc2tzLkxhbWJkYUludm9rZShcbiAgICAgIHRoaXMsXG4gICAgICBcIkNvbGxlY3QgZmlsZXMgZnJvbSBTM1wiLFxuICAgICAge1xuICAgICAgICBsYW1iZGFGdW5jdGlvbjogY29sbGVjdEZpbGVzRm4sXG4gICAgICAgIG91dHB1dFBhdGg6IFwiJC5QYXlsb2FkXCIsXG4gICAgICAgIHBheWxvYWQ6IHNmbi5UYXNrSW5wdXQuZnJvbU9iamVjdCh7XG4gICAgICAgICAgYnVja2V0TmFtZTogYXJ0aWZhY3RzQnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgICAgYnVja2V0UHJlZml4OiBzM1ByZWZpeCxcbiAgICAgICAgICBlbnZOYW1lczogcHJvcHMuZW52aXJvbm1lbnRzLm1hcCgoaXQpID0+IGl0Lm5hbWUpLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgbGV0IHJ1bjogc2ZuLkNoYWluID0gc2ZuLkNoYWluLnN0YXJ0KGNvbGxlY3RGaWxlc1Rhc2spXG5cbiAgICBjb25zdCBpZkhhdmluZ1N0YWNrcyA9IChuYW1lOiBzdHJpbmcsIHdvcms6IHNmbi5DaGFpbikgPT5cbiAgICAgIG5ldyBzZm4uQ2hvaWNlKHRoaXMsIGBDaGVjayBpZiAke25hbWV9IGhhcyBzdGFja3NgKVxuICAgICAgICAud2hlbihcbiAgICAgICAgICBDb25kaXRpb24ub3IoXG4gICAgICAgICAgICBDb25kaXRpb24uaXNOdWxsKGAkLlN0YWNrQ291bnRQZXJFbnYuJHtuYW1lfWApLFxuICAgICAgICAgICAgQ29uZGl0aW9uLm51bWJlckVxdWFscyhgJC5TdGFja0NvdW50UGVyRW52LiR7bmFtZX1gLCAwKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIG5ldyBzZm4uUGFzcyh0aGlzLCBgU2tpcCAke25hbWV9YCksXG4gICAgICAgIClcbiAgICAgICAgLm90aGVyd2lzZSh3b3JrKVxuICAgICAgICAuYWZ0ZXJ3YXJkcygpXG5cbiAgICBmb3IgKGNvbnN0IGVudiBvZiBwcm9wcy5lbnZpcm9ubWVudHMpIHtcbiAgICAgIGNvbnN0IGl0ID0gbmV3IERlcGxveUVudih0aGlzLCBlbnYubmFtZSwge1xuICAgICAgICBhY2NvdW50SWQ6IGVudi5hY2NvdW50SWQsXG4gICAgICAgIGFmdGVyU3VjY2Vzc2Z1bERlcGxveTogZW52LmFmdGVyU3VjY2Vzc2Z1bERlcGxveSxcbiAgICAgICAgYXJ0ZWZhY3RCdWNrZXQ6IGFydGlmYWN0c0J1Y2tldCxcbiAgICAgICAgZW52TmFtZTogZW52Lm5hbWUsXG4gICAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgfSlcblxuICAgICAgcnVuID0gcnVuLm5leHQoaWZIYXZpbmdTdGFja3MoZW52Lm5hbWUsIGl0LmNoYWluKSlcbiAgICB9XG5cbiAgICBjb25zdCBkZWZpbml0aW9uOiBzZm4uQ2hhaW4gPSBzZm4uQ2hhaW4uc3RhcnQoY2hlY2tDYW5SdW5UYXNrKS5uZXh0KFxuICAgICAgbmV3IHNmbi5DaG9pY2UodGhpcywgXCJDYW4gcnVuP1wiKVxuICAgICAgICAud2hlbihDb25kaXRpb24uc3RyaW5nRXF1YWxzKFwiJC5DYW5SdW5TdGF0ZVwiLCBcIkNPTlRJTlVFXCIpLCBydW4pXG4gICAgICAgIC53aGVuKENvbmRpdGlvbi5zdHJpbmdFcXVhbHMoXCIkLkNhblJ1blN0YXRlXCIsIFwiU0tJUFwiKSwgc2tpcClcbiAgICAgICAgLm90aGVyd2lzZSh3YWl0Lm5leHQoY2hlY2tDYW5SdW5UYXNrKSksXG4gICAgKVxuXG4gICAgY29uc3QgbWFjaGluZSA9IG5ldyBzZm4uU3RhdGVNYWNoaW5lKHRoaXMsIFwiU3RhdGVNYWNoaW5lXCIsIHtcbiAgICAgIGRlZmluaXRpb24sXG4gICAgICAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL3Nmbi1zdHVjay1leGVjdXRpb24uaHRtbFxuICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLmhvdXJzKDMpLFxuICAgIH0pXG5cbiAgICBuZXcgaWFtLlBvbGljeSh0aGlzLCBcIkNoZWNrQ2FuUnVuUG9saWN5XCIsIHtcbiAgICAgIHJvbGVzOiBbY2hlY2tDYW5SdW5Gbi5yb2xlIV0sXG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXCJzdGF0ZXM6TGlzdEV4ZWN1dGlvbnNcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbbWFjaGluZS5zdGF0ZU1hY2hpbmVBcm5dLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSlcblxuICAgIGlmIChwcm9wcy50cmlnZ2VyRW5hYmxlZCA/PyB0cnVlKSB7XG4gICAgICBhcnRpZmFjdHNCdWNrZXQub25DbG91ZFRyYWlsV3JpdGVPYmplY3QoXCJUcmlnZ2VyXCIsIHtcbiAgICAgICAgcGF0aHM6IFtzM1RyaWdnZXJLZXldLFxuICAgICAgICB0YXJnZXQ6IG5ldyBldmVudHNUYXJnZXRzLlNmblN0YXRlTWFjaGluZShtYWNoaW5lLCB7XG4gICAgICAgICAgaW5wdXQ6IGV2ZW50cy5SdWxlVGFyZ2V0SW5wdXQuZnJvbU9iamVjdCh7fSksXG4gICAgICAgIH0pLFxuICAgICAgfSlcbiAgICB9XG4gIH1cbn1cblxuaW50ZXJmYWNlIENsb3VkQXNzZW1ibHkge1xuICBjbG91ZEFzc2VtYmx5QnVja2V0TmFtZTogc3RyaW5nXG4gIGNsb3VkQXNzZW1ibHlCdWNrZXRLZXk6IHN0cmluZ1xuICBlbnZpcm9ubWVudHM6IHtcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBzdGFja05hbWVzOiBzdHJpbmdbXVxuICB9W11cbiAgcGFyYW1ldGVyczoge1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIHZhbHVlOiB1bmtub3duIHwgeyB0eXBlOiBcInZhcmlhYmxlXCI7IHZhcmlhYmxlOiBzdHJpbmcgfVxuICB9W11cbn1cblxuLy8gVGhpcyBpcyBhIHNlbGYtY29udGFpbmVkIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBzZXJpYWxpemVkIGFzIGEgbGFtYmRhLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmNvbnN0IGNvbGxlY3RGaWxlc0hhbmRsZXI6IEhhbmRsZXIgPSBhc3luYyAoZXZlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXMsQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gIGNvbnN0IEFXUyA9IHJlcXVpcmUoXCJhd3Mtc2RrXCIpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGwsQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzXG4gIGNvbnN0IHMzID0gbmV3IEFXUy5TMygpIGFzIF9BV1MuUzNcblxuICBjb25zb2xlLmxvZyhcIkV2ZW50IHJlY2VpdmVkOiBcIiwgZXZlbnQpXG5cbiAgY29uc3QgYnVja2V0TmFtZSA9IGV2ZW50LmJ1Y2tldE5hbWUgYXMgc3RyaW5nXG4gIGNvbnN0IGJ1Y2tldFByZWZpeCA9IGV2ZW50LmJ1Y2tldFByZWZpeCBhcyBzdHJpbmdcbiAgY29uc3QgZW52TmFtZXMgPSBldmVudC5lbnZOYW1lcyBhcyBzdHJpbmdbXVxuXG4gIGlmIChidWNrZXRQcmVmaXguc2xpY2UoLTEpICE9PSBcIi9cIikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBFeHBlY3RlZCBidWNrZXQgcHJlZml4IHRvIGVuZCB3aXRoICcvJyBidXQgaXRzIHZhbHVlIGlzICcke2J1Y2tldFByZWZpeH0nYCxcbiAgICApXG4gIH1cblxuICBjb25zdCBmaWxlcyA9IGF3YWl0IHMzXG4gICAgLmxpc3RPYmplY3RzVjIoe1xuICAgICAgQnVja2V0OiBidWNrZXROYW1lLFxuICAgICAgUHJlZml4OiBidWNrZXRQcmVmaXgsXG4gICAgfSlcbiAgICAucHJvbWlzZSgpXG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0RGF0YShrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgczNcbiAgICAgIC5nZXRPYmplY3Qoe1xuICAgICAgICBCdWNrZXQ6IGJ1Y2tldE5hbWUsXG4gICAgICAgIEtleToga2V5LFxuICAgICAgfSlcbiAgICAgIC5wcm9taXNlKClcbiAgICByZXR1cm4gcmVzdWx0LkJvZHkhLnRvU3RyaW5nKClcbiAgfVxuXG4gIGxldCBjbG91ZEFzc2VtYmx5OiBDbG91ZEFzc2VtYmx5IHwgbnVsbCA9IG51bGxcbiAgbGV0IHZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9XG5cbiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzLkNvbnRlbnRzID8/IFtdKSB7XG4gICAgY29uc3Qga2V5ID0gZmlsZS5LZXkhXG4gICAgY29uc3QgZmlsZW5hbWUgPSBrZXkuc2xpY2UoYnVja2V0UHJlZml4Lmxlbmd0aClcblxuICAgIGNvbnNvbGUubG9nKGBGaWxlOiAke2ZpbGVuYW1lfWApXG5cbiAgICBpZiAoZmlsZW5hbWUgPT09IFwiY2xvdWQtYXNzZW1ibHkuanNvblwiKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkZvdW5kIENsb3VkIEFzc2VtYmx5XCIpXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgICBjbG91ZEFzc2VtYmx5ID0gSlNPTi5wYXJzZShhd2FpdCBnZXREYXRhKGtleSkpXG4gICAgfSBlbHNlIGlmICgvXnZhcmlhYmxlcy4qXFwuanNvbiQvLnRlc3QoZmlsZW5hbWUpKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkZvdW5kIHZhcmlhYmxlcyBmaWxlXCIpXG4gICAgICB2YXJpYWJsZXMgPSB7XG4gICAgICAgIC4uLnZhcmlhYmxlcyxcbiAgICAgICAgLi4uKEpTT04ucGFyc2UoYXdhaXQgZ2V0RGF0YShrZXkpKSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSxcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coXCJJZ25vcmluZyB1bmtub3duIGZpbGVcIilcbiAgICB9XG4gIH1cblxuICBpZiAoY2xvdWRBc3NlbWJseSA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImNsb3VkLWFzc2VtYmx5Lmpzb24gbm90IGZvdW5kXCIpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIENsb3VkQXNzZW1ibHk6IEpTT04uc3RyaW5naWZ5KGNsb3VkQXNzZW1ibHkpLFxuICAgIFZhcmlhYmxlczogSlNPTi5zdHJpbmdpZnkodmFyaWFibGVzKSxcbiAgICBTdGFja0NvdW50UGVyRW52OiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBlbnZOYW1lcy5tYXAoKG5hbWUpID0+IFtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgY2xvdWRBc3NlbWJseS5lbnZpcm9ubWVudHMuZmluZCgoaXQpID0+IGl0Lm5hbWUgPT09IG5hbWUpPy5zdGFja05hbWVzXG4gICAgICAgICAgLmxlbmd0aCA/PyAwLFxuICAgICAgXSksXG4gICAgKSxcbiAgfVxufVxuXG4vLyBUaGlzIGlzIGEgc2VsZi1jb250YWluZWQgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIHNlcmlhbGl6ZWQgYXMgYSBsYW1iZGEuXG5jb25zdCBjaGVja0NhblJ1bkhhbmRsZXI6IEhhbmRsZXIgPSBhc3luYyAoZXZlbnQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXMsQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gIGNvbnN0IEFXUyA9IHJlcXVpcmUoXCJhd3Mtc2RrXCIpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGwsQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzXG4gIGNvbnN0IHNmID0gbmV3IEFXUy5TdGVwRnVuY3Rpb25zKCkgYXMgX0FXUy5TdGVwRnVuY3Rpb25zXG5cbiAgY29uc29sZS5sb2coXCJFdmVudCByZWNlaXZlZDogXCIsIGV2ZW50KVxuXG4gIGNvbnN0IHN0YXRlTWFjaGluZUFybiA9IGV2ZW50W1wic3RhdGVNYWNoaW5lSWRcIl1cbiAgY29uc3QgY3VycmVudEV4ZWN1dGlvbkFybiA9IGV2ZW50W1wiZXhlY3V0aW9uSWRcIl1cblxuICBjb25zdCBleGVjdXRpb25zID0gKFxuICAgIGF3YWl0IHNmXG4gICAgICAubGlzdEV4ZWN1dGlvbnMoe1xuICAgICAgICBzdGF0ZU1hY2hpbmVBcm4sXG4gICAgICAgIHN0YXR1c0ZpbHRlcjogXCJSVU5OSU5HXCIsXG4gICAgICB9KVxuICAgICAgLnByb21pc2UoKVxuICApLmV4ZWN1dGlvbnNcblxuICBjb25zb2xlLmxvZyhcIkV4ZWN1dGlvbnM6IFwiLCBleGVjdXRpb25zKVxuXG4gIGNvbnN0IGN1cnJlbnRFeGVjdXRpb24gPSBleGVjdXRpb25zLmZpbmQoXG4gICAgKGl0KSA9PiBpdC5leGVjdXRpb25Bcm4gPT0gY3VycmVudEV4ZWN1dGlvbkFybixcbiAgKVxuXG4gIGlmICghY3VycmVudEV4ZWN1dGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBmaW5kIGN1cnJlbnQgZXhlY3V0aW9uXCIpXG4gIH1cblxuICBjb25zdCBuZXdlciA9IGV4ZWN1dGlvbnMuZmlsdGVyKFxuICAgIChpdCkgPT4gaXQuc3RhcnREYXRlID4gY3VycmVudEV4ZWN1dGlvbi5zdGFydERhdGUsXG4gICkubGVuZ3RoXG5cbiAgcmV0dXJuIHtcbiAgICBDYW5SdW5TdGF0ZTpcbiAgICAgIG5ld2VyID4gMCA/IFwiU0tJUFwiIDogZXhlY3V0aW9ucy5sZW5ndGggPT0gMSA/IFwiQ09OVElOVUVcIiA6IFwiV0FJVFwiLFxuICB9XG59XG4iXX0=
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGlwZWxpbmVzL3BpcGVsaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUF3QztBQUV4QyxpREFBZ0Q7QUFDaEQsZ0VBQStEO0FBQy9ELDJDQUEwQztBQUMxQyxpREFBZ0Q7QUFFaEQscURBQW9EO0FBQ3BELHFFQUF5RDtBQUN6RCw2REFBNEQ7QUFDNUQsbUNBQWtDO0FBRWxDLG9DQUFpRDtBQUNqRCwrQ0FBc0U7QUFDdEUsNkNBQXdDO0FBOEN4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRztBQUNILE1BQWEsUUFBUyxTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBQ2hELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBb0I7O1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsTUFBTSxRQUFRLEdBQUcsSUFBQSw4QkFBZ0IsRUFBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDckQsTUFBTSxZQUFZLEdBQUcsSUFBQSxrQ0FBb0IsRUFBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7UUFFN0QsTUFBTSxlQUFlLEdBQ25CLE1BQUEsS0FBSyxDQUFDLGVBQWUsbUNBQUksSUFBQSw4QkFBc0IsRUFBQyxJQUFJLENBQUMsQ0FBQTtRQUV2RCxNQUFNLGFBQWEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO1lBQ3hFLElBQUksRUFBRSxzQ0FBc0M7WUFDNUMsSUFBSSxFQUFFLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FDekIscUJBQXFCLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxHQUFHLENBQ3REO1lBQ0QsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztZQUNuQyxPQUFPLEVBQUUsZUFBZTtZQUN4QixPQUFPLEVBQUUsR0FBRyxDQUFDLFFB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QUFDLE1BQU0sQ0FBQTtJQUVULE9BQU87UUFDTCxXQUFXLEVBQ1QsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNO0tBQ3BFLENBQUE7QUFDSCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiXG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1ldmVudHNcIlxuaW1wb3J0ICogYXMgZXZlbnRzVGFyZ2V0cyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzXCJcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiXG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIlxuaW1wb3J0ICogYXMgczMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiXG5pbXBvcnQgKiBhcyBzZm4gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zXCJcbmltcG9ydCB7IENvbmRpdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9uc1wiXG5pbXBvcnQgKiBhcyB0YXNrcyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMtdGFza3NcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgdHlwZSB7IEhhbmRsZXIgfSBmcm9tIFwiYXdzLWxhbWJkYVwiXG5pbXBvcnQgeyBnZXRHcmlpZEFydGVmYWN0QnVja2V0IH0gZnJvbSBcIi4uL2dyaWlkXCJcbmltcG9ydCB7IHBpcGVsaW5lUzNQcmVmaXgsIHBpcGVsaW5lUzNUcmlnZ2VyS2V5IH0gZnJvbSBcIi4vY29udmVudGlvbnNcIlxuaW1wb3J0IHsgRGVwbG95RW52IH0gZnJvbSBcIi4vZGVwbG95LWVudlwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBCdWNrZXQgaG9sZGluZyBwaXBlbGluZSBjb25maWd1cmF0aW9uIGFuZCB0cmlnZ2VyIGZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdXNlIGV4aXN0aW5nIGJ1Y2tldCBiYXNlZCBvbiBHcmlpZCBjb252ZW50aW9uc1xuICAgKi9cbiAgYXJ0aWZhY3RzQnVja2V0PzogczMuSUJ1Y2tldFxuICAvKipcbiAgICogRW52aXJvbm1lbnRzIGZvciB0aGlzIHBpcGVsaW5lLiBFYWNoIGVudmlyb25tZW50IGlzIGRlcGxveWVkIHNlcXVlbnRpYWxseVxuICAgKiBpbiB0aGUgb3JkZXIgZ2l2ZW4uXG4gICAqL1xuICBlbnZpcm9ubWVudHM6IFBpcGVsaW5lRW52aXJvbm1lbnRbXVxuICAvKipcbiAgICogTmFtZSBvZiBwaXBlbGluZS4gVGhpcyBpcyB1c2VkIGZvciB0aGUgcGF0aCB3aGVyZSBjb25maWd1cmF0aW9uXG4gICAqIGlzIHN0b3JlZCBpbiBTMy5cbiAgICovXG4gIHBpcGVsaW5lTmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBUcmlnZ2VyIHRoZSBwaXBlbGluZSB3aGVuIHRoZSB0cmlnZ2VyIGZpbGUgaXMgd3JpdHRlbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICB0cmlnZ2VyRW5hYmxlZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFZQQyB1c2VkIGZvciBGYXJnYXRlIHJlc291cmNlcy5cbiAgICovXG4gIHZwYzogZWMyLklWcGNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZUVudmlyb25tZW50IHtcbiAgLyoqXG4gICAqIEFjY291bnQgbnVtYmVyIGhvc3RpbmcgdGhlIGVudmlyb25tZW50LlxuICAgKi9cbiAgYWNjb3VudElkOiBzdHJpbmdcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgdGFza3MgdG8gcnVuIGFmdGVyIHRoZSBlbnZpcm9ubWVudCBoYXMgYmVlbiBkZXBsb3llZC5cbiAgICovXG4gIGFmdGVyU3VjY2Vzc2Z1bERlcGxveT86IHNmbi5DaGFpblxuICAvKipcbiAgICogTmFtZSBvZiBlbnZpcm9ubWVudC5cbiAgICovXG4gIG5hbWU6IHN0cmluZ1xufVxuXG4vKipcbiAqIFBpcGVsaW5lIGZvciBkb2luZyBhIG11bHRpLWFjY291bnQgQ0RLIGRlcGxveW1lbnQgYmFzZWRcbiAqIG9uIGEgYnVpbHQgQ0RLIENsb3VkIEFzc2VtYmx5IGFuZCBwYXJhbWV0ZXJzIHN0b3JlZCBpbiBTMy5cbiAqXG4gKiBUaGUgYWNjb3VudHMgYmVpbmcgZGVwbG95ZWQgdG8gbXVzdCBiZSBwcm92aXNpb25lZCB3aXRoXG4gKiB0aGUgTGlmbGlnQ2RrRGVwbG95ZXJEZXBzIGNvbnN0cnVjdCBzbyBleHBlY3RlZCBJQU1cbiAqIHJvbGVzIGlzIHByZXNlbnQuXG4gKlxuICogVGhlIHBpcGVsaW5lIHN0YXJ0cyBieSB3cml0aW5nIGFuIGVtcHR5IGZpbGUgdG9cbiAqIHMzOi8vPGFydGlmYWN0cy1idWNrZXQ+L3BpcGVsaW5lcy88cGlwZWxpbmUtbmFtZT4vdHJpZ2dlclxuICpcbiAqIFRoZSBDREsgZGVwbG95IHByb2Nlc3MgaXMgaGFuZGxlZCBieSBsaWZsaWctY2RrLWRlcGxveWVyLlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jYXByYWxpZmVjeWNsZS9saWZsaWctY2RrLWRlcGxveWVyXG4gKlxuICogQ29uZmlndXJhdGlvbiBmaWxlcyBhcmUgcmVhZCBmcm9tIFMzIGF0IHRoZSBwYXRoXG4gKiBzMzovLzxhcnRpZmFjdHMtYnVja2V0Pi9waXBlbGluZXMvPHBpcGVsaW5lLW5hbWU+L1xuICpcbiAqICAtIGNsb3VkLWFzc2VtYmx5Lmpzb24gd2hpY2ggaGFzIHRoZSBmb3JtYXQgZGVzY3JpYmVkIGFzXG4gKiAgICBDREtfQ0xPVURfQVNTRU1CTFkgaW4gbGlmbGlnLWNkay1kZXBsb3llclxuICpcbiAqICAtIHZhcmlhYmxlcyouanNvbiB3aGljaCBjYW4gYmUgemVybyBvciBtb3JlIGZpbGVzXG4gKiAgICB3aXRoIHN0cmluZy1zdHJpbmcgbWFwIHRoYXQgd2lsbCBiZSBjb25jYXRlbmF0ZWQgdG9cbiAqICAgIGZvcm0gdGhlIGZvcm1hdCBkZXNjcmliZWQgYXMgQ0RLX1ZBUklBQkxFUyBpblxuICogICAgbGlmbGlnLWNkay1kZXBsb3llclxuICpcbiAqIFRoZSBzZXBhcmF0aW9uIG9mIENsb3VkIEFzc2VtYmx5IGRldGFpbHMgYW5kIHZhcmlhYmxlcyBlbmFibGVzXG4gKiBzZXBhcmF0aW9uIG9mIElhQyBjb2RlIGFuZCBhcHBsaWNhdGlvbiBjb2RlIGlmIHRoZXkgYXJlIG5vdFxuICogY29sb2NhdGVkIGluIHRoZSBzYW1lIHJlcG9zaXRvcnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBQaXBlbGluZSBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIGNvbnN0IHMzUHJlZml4ID0gcGlwZWxpbmVTM1ByZWZpeChwcm9wcy5waXBlbGluZU5hbWUpXG4gICAgY29uc3QgczNUcmlnZ2VyS2V5ID0gcGlwZWxpbmVTM1RyaWdnZXJLZXkocHJvcHMucGlwZWxpbmVOYW1lKVxuXG4gICAgY29uc3QgYXJ0aWZhY3RzQnVja2V0ID1cbiAgICAgIHByb3BzLmFydGlmYWN0c0J1Y2tldCA/PyBnZXRHcmlpZEFydGVmYWN0QnVja2V0KHRoaXMpXG5cbiAgICBjb25zdCBjaGVja0NhblJ1bkZuID0gbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbih0aGlzLCBcIkNoZWNrQ2FuUnVuRm5cIiwge1xuICAgICAgdXVpZDogXCIzMGFkM2FiYi1mNzc0LTQ4MDQtYTZlZi0yYzJmNGEyNDczNjJcIixcbiAgICAgIGNvZGU6IG5ldyBsYW1iZGEuSW5saW5lQ29kZShcbiAgICAgICAgYGV4cG9ydHMuaGFuZGxlciA9ICR7Y2hlY2tDYW5SdW5IYW5kbGVyLnRvU3RyaW5nKCl9O2AsXG4gICAgICApLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDEwKSxcbiAgICB9KVxuXG4gICAgY29uc3QgY2hlY2tDYW5SdW5UYXNrID0gbmV3IHRhc2tzLkxhbWJkYUludm9rZShcbiAgICAgIHRoaXMsXG4gICAgICBcIkNoZWNrIGlmIHRoZSBwcm9jZXNzIGNhbiBydW5cIixcbiAgICAgIHtcbiAgICAgICAgbGFtYmRhRnVuY3Rpb246IGNoZWNrQ2FuUnVuRm4sXG4gICAgICAgIG91dHB1dFBhdGg6IFwiJC5QYXlsb2FkXCIsXG4gICAgICAgIHBheWxvYWQ6IHNmbi5UYXNrSW5wdXQuZnJvbU9iamVjdCh7XG4gICAgICAgICAgXCJzdGF0ZU1hY2hpbmVJZC4kXCI6IFwiJCQuU3RhdGVNYWNoaW5lLklkXCIsXG4gICAgICAgICAgXCJleGVjdXRpb25JZC4kXCI6IFwiJCQuRXhlY3V0aW9uLklkXCIsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBjb25zdCB3YWl0ID0gbmV3IHNmbi5XYWl0KHRoaXMsIFwiV2FpdCBiZWZvcmUgcmVjaGVja2luZyBzdGF0dXNcIiwge1xuICAgICAgdGltZTogc2ZuLldhaXRUaW1lLmR1cmF0aW9uKGNkay5EdXJhdGlvbi5zZWNvbmRzKDE1KSksXG4gICAgfSlcblxuICAgIGNvbnN0IHNraXAgPSBuZXcgc2ZuLlN1Y2NlZWQodGhpcywgXCJTa2lwXCIpXG5cbiAgICBjb25zdCBjb2xsZWN0RmlsZXNGbiA9IG5ldyBsYW1iZGEuU2luZ2xldG9uRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJDb2xsZWN0RmlsZXNGblwiLFxuICAgICAge1xuICAgICAgICB1dWlkOiBcImM0OWNiZmUxLTUwZTAtNDcyMS04OTY0LWZiMjBmNGU1YTdhZFwiLFxuICAgICAgICBjb2RlOiBuZXcgbGFtYmRhLklubGluZUNvZGUoXG4gICAgICAgICAgYGV4cG9ydHMuaGFuZGxlciA9ICR7Y29sbGVjdEZpbGVzSGFuZGxlci50b1N0cmluZygpfTtgLFxuICAgICAgICApLFxuICAgICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMThfWCxcbiAgICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDMwKSxcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgYXJ0aWZhY3RzQnVja2V0LmdyYW50UmVhZChjb2xsZWN0RmlsZXNGbilcblxuICAgIGNvbnN0IGNvbGxlY3RGaWxlc1Rhc2sgPSBuZXcgdGFza3MuTGFtYmRhSW52b2tlKFxuICAgICAgdGhpcyxcbiAgICAgIFwiQ29sbGVjdCBmaWxlcyBmcm9tIFMzXCIsXG4gICAgICB7XG4gICAgICAgIGxhbWJkYUZ1bmN0aW9uOiBjb2xsZWN0RmlsZXNGbixcbiAgICAgICAgb3V0cHV0UGF0aDogXCIkLlBheWxvYWRcIixcbiAgICAgICAgcGF5bG9hZDogc2ZuLlRhc2tJbnB1dC5mcm9tT2JqZWN0KHtcbiAgICAgICAgICBidWNrZXROYW1lOiBhcnRpZmFjdHNCdWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICBidWNrZXRQcmVmaXg6IHMzUHJlZml4LFxuICAgICAgICAgIGVudk5hbWVzOiBwcm9wcy5lbnZpcm9ubWVudHMubWFwKChpdCkgPT4gaXQubmFtZSksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBsZXQgcnVuOiBzZm4uQ2hhaW4gPSBzZm4uQ2hhaW4uc3RhcnQoY29sbGVjdEZpbGVzVGFzaylcblxuICAgIGNvbnN0IGlmSGF2aW5nU3RhY2tzID0gKG5hbWU6IHN0cmluZywgd29yazogc2ZuLkNoYWluKSA9PlxuICAgICAgbmV3IHNmbi5DaG9pY2UodGhpcywgYENoZWNrIGlmICR7bmFtZX0gaGFzIHN0YWNrc2ApXG4gICAgICAgIC53aGVuKFxuICAgICAgICAgIENvbmRpdGlvbi5vcihcbiAgICAgICAgICAgIENvbmRpdGlvbi5pc051bGwoYCQuU3RhY2tDb3VudFBlckVudi4ke25hbWV9YCksXG4gICAgICAgICAgICBDb25kaXRpb24ubnVtYmVyRXF1YWxzKGAkLlN0YWNrQ291bnRQZXJFbnYuJHtuYW1lfWAsIDApLFxuICAgICAgICAgICksXG4gICAgICAgICAgbmV3IHNmbi5QYXNzKHRoaXMsIGBTa2lwICR7bmFtZX1gKSxcbiAgICAgICAgKVxuICAgICAgICAub3RoZXJ3aXNlKHdvcmspXG4gICAgICAgIC5hZnRlcndhcmRzKClcblxuICAgIGZvciAoY29uc3QgZW52IG9mIHByb3BzLmVudmlyb25tZW50cykge1xuICAgICAgY29uc3QgaXQgPSBuZXcgRGVwbG95RW52KHRoaXMsIGVudi5uYW1lLCB7XG4gICAgICAgIGFjY291bnRJZDogZW52LmFjY291bnRJZCxcbiAgICAgICAgYWZ0ZXJTdWNjZXNzZnVsRGVwbG95OiBlbnYuYWZ0ZXJTdWNjZXNzZnVsRGVwbG95LFxuICAgICAgICBhcnRlZmFjdEJ1Y2tldDogYXJ0aWZhY3RzQnVja2V0LFxuICAgICAgICBlbnZOYW1lOiBlbnYubmFtZSxcbiAgICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICB9KVxuXG4gICAgICBydW4gPSBydW4ubmV4dChpZkhhdmluZ1N0YWNrcyhlbnYubmFtZSwgaXQuY2hhaW4pKVxuICAgIH1cblxuICAgIGNvbnN0IGRlZmluaXRpb246IHNmbi5DaGFpbiA9IHNmbi5DaGFpbi5zdGFydChjaGVja0NhblJ1blRhc2spLm5leHQoXG4gICAgICBuZXcgc2ZuLkNob2ljZSh0aGlzLCBcIkNhbiBydW4/XCIpXG4gICAgICAgIC53aGVuKENvbmRpdGlvbi5zdHJpbmdFcXVhbHMoXCIkLkNhblJ1blN0YXRlXCIsIFwiQ09OVElOVUVcIiksIHJ1bilcbiAgICAgICAgLndoZW4oQ29uZGl0aW9uLnN0cmluZ0VxdWFscyhcIiQuQ2FuUnVuU3RhdGVcIiwgXCJTS0lQXCIpLCBza2lwKVxuICAgICAgICAub3RoZXJ3aXNlKHdhaXQubmV4dChjaGVja0NhblJ1blRhc2spKSxcbiAgICApXG5cbiAgICBjb25zdCBtYWNoaW5lID0gbmV3IHNmbi5TdGF0ZU1hY2hpbmUodGhpcywgXCJTdGF0ZU1hY2hpbmVcIiwge1xuICAgICAgZGVmaW5pdGlvbixcbiAgICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvc2ZuLXN0dWNrLWV4ZWN1dGlvbi5odG1sXG4gICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24uaG91cnMoMyksXG4gICAgfSlcblxuICAgIG5ldyBpYW0uUG9saWN5KHRoaXMsIFwiQ2hlY2tDYW5SdW5Qb2xpY3lcIiwge1xuICAgICAgcm9sZXM6IFtjaGVja0NhblJ1bkZuLnJvbGUhXSxcbiAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcInN0YXRlczpMaXN0RXhlY3V0aW9uc1wiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFttYWNoaW5lLnN0YXRlTWFjaGluZUFybl0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KVxuXG4gICAgaWYgKHByb3BzLnRyaWdnZXJFbmFibGVkID8/IHRydWUpIHtcbiAgICAgIGFydGlmYWN0c0J1Y2tldC5vbkNsb3VkVHJhaWxXcml0ZU9iamVjdChcIlRyaWdnZXJcIiwge1xuICAgICAgICBwYXRoczogW3MzVHJpZ2dlcktleV0sXG4gICAgICAgIHRhcmdldDogbmV3IGV2ZW50c1RhcmdldHMuU2ZuU3RhdGVNYWNoaW5lKG1hY2hpbmUsIHtcbiAgICAgICAgICBpbnB1dDogZXZlbnRzLlJ1bGVUYXJnZXRJbnB1dC5mcm9tT2JqZWN0KHt9KSxcbiAgICAgICAgfSksXG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuXG5pbnRlcmZhY2UgQ2xvdWRBc3NlbWJseSB7XG4gIGNsb3VkQXNzZW1ibHlCdWNrZXROYW1lOiBzdHJpbmdcbiAgY2xvdWRBc3NlbWJseUJ1Y2tldEtleTogc3RyaW5nXG4gIGVudmlyb25tZW50czoge1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIHN0YWNrTmFtZXM6IHN0cmluZ1tdXG4gIH1bXVxuICBwYXJhbWV0ZXJzOiB7XG4gICAgbmFtZTogc3RyaW5nXG4gICAgdmFsdWU6IHVua25vd24gfCB7IHR5cGU6IFwidmFyaWFibGVcIjsgdmFyaWFibGU6IHN0cmluZyB9XG4gIH1bXVxufVxuXG4vLyBUaGlzIGlzIGEgc2VsZi1jb250YWluZWQgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIHNlcmlhbGl6ZWQgYXMgYSBsYW1iZGEuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuY29uc3QgY29sbGVjdEZpbGVzSGFuZGxlcjogSGFuZGxlciA9IGFzeW5jIChldmVudDogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlcyxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcbiAgY29uc3QgeyBTM0NsaWVudCwgTGlzdE9iamVjdHNWMkNvbW1hbmQsIEdldE9iamVjdENvbW1hbmQgfSA9IGF3YWl0IGltcG9ydChcbiAgICBcIkBhd3Mtc2RrL2NsaWVudC1zM1wiXG4gIClcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbCxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3NcblxuICBjb25zdCBzM0NsaWVudCA9IG5ldyBTM0NsaWVudCgpXG5cbiAgY29uc29sZS5sb2coXCJFdmVudCByZWNlaXZlZDogXCIsIGV2ZW50KVxuXG4gIGNvbnN0IGJ1Y2tldE5hbWUgPSBldmVudC5idWNrZXROYW1lIGFzIHN0cmluZ1xuICBjb25zdCBidWNrZXRQcmVmaXggPSBldmVudC5idWNrZXRQcmVmaXggYXMgc3RyaW5nXG4gIGNvbnN0IGVudk5hbWVzID0gZXZlbnQuZW52TmFtZXMgYXMgc3RyaW5nW11cblxuICBpZiAoYnVja2V0UHJlZml4LnNsaWNlKC0xKSAhPT0gXCIvXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgRXhwZWN0ZWQgYnVja2V0IHByZWZpeCB0byBlbmQgd2l0aCAnLycgYnV0IGl0cyB2YWx1ZSBpcyAnJHtidWNrZXRQcmVmaXh9J2AsXG4gICAgKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gbGlzdE9iamVjdHMoKSB7XG4gICAgY29uc3QgeyBDb250ZW50cyB9ID0gYXdhaXQgczNDbGllbnQuc2VuZChcbiAgICAgIG5ldyBMaXN0T2JqZWN0c1YyQ29tbWFuZCh7XG4gICAgICAgIEJ1Y2tldDogYnVja2V0TmFtZSxcbiAgICAgICAgUHJlZml4OiBidWNrZXRQcmVmaXgsXG4gICAgICB9KSxcbiAgICApXG4gICAgcmV0dXJuIENvbnRlbnRzXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBnZXRPYmplY3Qoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHsgQm9keSB9ID0gYXdhaXQgczNDbGllbnQuc2VuZChcbiAgICAgIG5ldyBHZXRPYmplY3RDb21tYW5kKHtcbiAgICAgICAgQnVja2V0OiBidWNrZXROYW1lLFxuICAgICAgICBLZXk6IGtleSxcbiAgICAgIH0pLFxuICAgIClcbiAgICByZXR1cm4gQm9keSEudG9TdHJpbmcoKVxuICB9XG5cbiAgbGV0IGNsb3VkQXNzZW1ibHk6IENsb3VkQXNzZW1ibHkgfCBudWxsID0gbnVsbFxuICBsZXQgdmFyaWFibGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge31cblxuICBjb25zdCBmaWxlcyA9IGF3YWl0IGxpc3RPYmplY3RzKClcbiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzID8/IFtdKSB7XG4gICAgY29uc3Qga2V5ID0gZmlsZS5LZXkhXG4gICAgY29uc3QgZmlsZW5hbWUgPSBrZXkuc2xpY2UoYnVja2V0UHJlZml4Lmxlbmd0aClcblxuICAgIGNvbnNvbGUubG9nKGBGaWxlOiAke2ZpbGVuYW1lfWApXG5cbiAgICBpZiAoZmlsZW5hbWUgPT09IFwiY2xvdWQtYXNzZW1ibHkuanNvblwiKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkZvdW5kIENsb3VkIEFzc2VtYmx5XCIpXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgICBjbG91ZEFzc2VtYmx5ID0gSlNPTi5wYXJzZShhd2FpdCBnZXRPYmplY3Qoa2V5KSlcbiAgICB9IGVsc2UgaWYgKC9edmFyaWFibGVzLipcXC5qc29uJC8udGVzdChmaWxlbmFtZSkpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiRm91bmQgdmFyaWFibGVzIGZpbGVcIilcbiAgICAgIHZhcmlhYmxlcyA9IHtcbiAgICAgICAgLi4udmFyaWFibGVzLFxuICAgICAgICAuLi4oSlNPTi5wYXJzZShhd2FpdCBnZXRPYmplY3Qoa2V5KSkgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPiksXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiSWdub3JpbmcgdW5rbm93biBmaWxlXCIpXG4gICAgfVxuICB9XG5cbiAgaWYgKGNsb3VkQXNzZW1ibHkgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJjbG91ZC1hc3NlbWJseS5qc29uIG5vdCBmb3VuZFwiKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBDbG91ZEFzc2VtYmx5OiBKU09OLnN0cmluZ2lmeShjbG91ZEFzc2VtYmx5KSxcbiAgICBWYXJpYWJsZXM6IEpTT04uc3RyaW5naWZ5KHZhcmlhYmxlcyksXG4gICAgU3RhY2tDb3VudFBlckVudjogT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgZW52TmFtZXMubWFwKChuYW1lKSA9PiBbXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGNsb3VkQXNzZW1ibHkuZW52aXJvbm1lbnRzLmZpbmQoKGl0KSA9PiBpdC5uYW1lID09PSBuYW1lKT8uc3RhY2tOYW1lc1xuICAgICAgICAgIC5sZW5ndGggPz8gMCxcbiAgICAgIF0pLFxuICAgICksXG4gIH1cbn1cblxuLy8gVGhpcyBpcyBhIHNlbGYtY29udGFpbmVkIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBzZXJpYWxpemVkIGFzIGEgbGFtYmRhLlxuY29uc3QgY2hlY2tDYW5SdW5IYW5kbGVyOiBIYW5kbGVyID0gYXN5bmMgKGV2ZW50OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSA9PiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzLEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1jYWxsLEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuXG4gIGNvbnN0IHsgU0ZOQ2xpZW50LCBMaXN0RXhlY3V0aW9uc0NvbW1hbmQsIEV4ZWN1dGlvblN0YXR1cyB9ID0gYXdhaXQgaW1wb3J0KFxuICAgIFwiQGF3cy1zZGsvY2xpZW50LXNmblwiXG4gIClcbiAgY29uc3Qgc2ZuQ2xpZW50ID0gbmV3IFNGTkNsaWVudCgpXG5cbiAgY29uc29sZS5sb2coXCJFdmVudCByZWNlaXZlZDogXCIsIGV2ZW50KVxuXG4gIGNvbnN0IHN0YXRlTWFjaGluZUFybiA9IGV2ZW50W1wic3RhdGVNYWNoaW5lSWRcIl1cbiAgY29uc3QgY3VycmVudEV4ZWN1dGlvbkFybiA9IGV2ZW50W1wiZXhlY3V0aW9uSWRcIl1cblxuICBjb25zdCB7IGV4ZWN1dGlvbnMgfSA9IGF3YWl0IHNmbkNsaWVudC5zZW5kKFxuICAgIG5ldyBMaXN0RXhlY3V0aW9uc0NvbW1hbmQoe1xuICAgICAgc3RhdGVNYWNoaW5lQXJuLFxuICAgICAgc3RhdHVzRmlsdGVyOiBFeGVjdXRpb25TdGF0dXMuUlVOTklORyxcbiAgICB9KSxcbiAgKVxuXG4gIGlmICghZXhlY3V0aW9ucykge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBsaXN0IGV4ZWN1dGlvbnNcIilcbiAgfVxuXG4gIGNvbnNvbGUubG9nKFwiRXhlY3V0aW9uczogXCIsIGV4ZWN1dGlvbnMpXG5cbiAgY29uc3QgY3VycmVudEV4ZWN1dGlvbiA9IGV4ZWN1dGlvbnMuZmluZChcbiAgICAoaXQpID0+IGl0LmV4ZWN1dGlvbkFybiA9PSBjdXJyZW50RXhlY3V0aW9uQXJuLFxuICApXG5cbiAgaWYgKCFjdXJyZW50RXhlY3V0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGQgbm90IGZpbmQgY3VycmVudCBleGVjdXRpb25cIilcbiAgfVxuXG4gIGNvbnN0IG5ld2VyID0gZXhlY3V0aW9ucy5maWx0ZXIoKGl0KSA9PiB7XG4gICAgaWYgKCFpdC5zdGFydERhdGUgfHwgIWN1cnJlbnRFeGVjdXRpb24uc3RhcnREYXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgcmV0dXJuIGl0LnN0YXJ0RGF0ZSA+IGN1cnJlbnRFeGVjdXRpb24uc3RhcnREYXRlXG4gIH0pLmxlbmd0aFxuXG4gIHJldHVybiB7XG4gICAgQ2FuUnVuU3RhdGU6XG4gICAgICBuZXdlciA+IDAgPyBcIlNLSVBcIiA6IGV4ZWN1dGlvbnMubGVuZ3RoID09IDEgPyBcIkNPTlRJTlVFXCIgOiBcIldBSVRcIixcbiAgfVxufVxuIl19
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const AWS = require("aws-sdk");
|
|
8
|
-
const ses = new AWS.SESV2();
|
|
3
|
+
exports.handler = void 0;
|
|
4
|
+
const client_sesv2_1 = require("@aws-sdk/client-sesv2");
|
|
5
|
+
const handler = async (event) => {
|
|
6
|
+
const sesv2Client = new client_sesv2_1.SESv2Client();
|
|
9
7
|
const configurationSetName = event.ResourceProperties.ConfigurationSetName;
|
|
10
8
|
const eventDestinationName = event.ResourceProperties.EventDestinationName;
|
|
11
9
|
const snsTopicArn = event.ResourceProperties.SnsTopicArn;
|
|
12
|
-
const matchingEventTypes = event.ResourceProperties.MatchingEventTypes;
|
|
10
|
+
const matchingEventTypes = event.ResourceProperties.MatchingEventTypes.map((eventType) => eventType);
|
|
13
11
|
const eventDestination = {
|
|
14
12
|
MatchingEventTypes: matchingEventTypes,
|
|
15
13
|
Enabled: true,
|
|
@@ -20,24 +18,20 @@ const configurationSetSnsDestinationHandler = async (event) => {
|
|
|
20
18
|
console.log(`EventDestination ${JSON.stringify(eventDestination)}`);
|
|
21
19
|
switch (event.RequestType) {
|
|
22
20
|
case "Delete":
|
|
23
|
-
const deleteResponse = await
|
|
24
|
-
.deleteConfigurationSetEventDestination({
|
|
21
|
+
const deleteResponse = await sesv2Client.send(new client_sesv2_1.DeleteConfigurationSetEventDestinationCommand({
|
|
25
22
|
ConfigurationSetName: configurationSetName,
|
|
26
23
|
EventDestinationName: eventDestinationName,
|
|
27
|
-
})
|
|
28
|
-
.promise();
|
|
24
|
+
}));
|
|
29
25
|
console.log(`ses.deleteConfigurationSetEventDestination: ${JSON.stringify(deleteResponse)}`);
|
|
30
26
|
return {
|
|
31
27
|
PhysicalResourceId: event.PhysicalResourceId,
|
|
32
28
|
};
|
|
33
29
|
case "Create":
|
|
34
|
-
const createResponse = await
|
|
35
|
-
.createConfigurationSetEventDestination({
|
|
30
|
+
const createResponse = await sesv2Client.send(new client_sesv2_1.CreateConfigurationSetEventDestinationCommand({
|
|
36
31
|
ConfigurationSetName: configurationSetName,
|
|
37
32
|
EventDestinationName: eventDestinationName,
|
|
38
33
|
EventDestination: eventDestination,
|
|
39
|
-
})
|
|
40
|
-
.promise();
|
|
34
|
+
}));
|
|
41
35
|
console.log(`ses.createConfigurationSetEventDestination: ${JSON.stringify(createResponse)}`);
|
|
42
36
|
return {
|
|
43
37
|
PhysicalResourceId: `ConfigurationSetSnsDestination-${configurationSetName}-${eventDestinationName}`,
|
|
@@ -47,23 +41,19 @@ const configurationSetSnsDestinationHandler = async (event) => {
|
|
|
47
41
|
const previousConfigurationSetName = event.OldResourceProperties.ConfigurationSetName;
|
|
48
42
|
if (configurationSetName !== previousConfigurationSetName ||
|
|
49
43
|
eventDestinationName !== previousEventDestinationName) {
|
|
50
|
-
const createResponse = await
|
|
51
|
-
.createConfigurationSetEventDestination({
|
|
44
|
+
const createResponse = await sesv2Client.send(new client_sesv2_1.CreateConfigurationSetEventDestinationCommand({
|
|
52
45
|
ConfigurationSetName: configurationSetName,
|
|
53
46
|
EventDestinationName: eventDestinationName,
|
|
54
47
|
EventDestination: eventDestination,
|
|
55
|
-
})
|
|
56
|
-
.promise();
|
|
48
|
+
}));
|
|
57
49
|
console.log(`ses.createConfigurationSetEventDestination: ${JSON.stringify(createResponse)}`);
|
|
58
50
|
}
|
|
59
51
|
else {
|
|
60
|
-
const updateResponse = await
|
|
61
|
-
.updateConfigurationSetEventDestination({
|
|
52
|
+
const updateResponse = await sesv2Client.send(new client_sesv2_1.UpdateConfigurationSetEventDestinationCommand({
|
|
62
53
|
ConfigurationSetName: configurationSetName,
|
|
63
54
|
EventDestinationName: eventDestinationName,
|
|
64
55
|
EventDestination: eventDestination,
|
|
65
|
-
})
|
|
66
|
-
.promise();
|
|
56
|
+
}));
|
|
67
57
|
console.log(`ses.UpdateConfigurationSetEventDestination: ${JSON.stringify(updateResponse)}`);
|
|
68
58
|
}
|
|
69
59
|
return {
|
|
@@ -71,5 +61,5 @@ const configurationSetSnsDestinationHandler = async (event) => {
|
|
|
71
61
|
};
|
|
72
62
|
}
|
|
73
63
|
};
|
|
74
|
-
exports.
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
exports.handler = handler;
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXMvY29uZmlndXJhdGlvbnNldHNuc2Rlc3RpbmF0aW9uL2hhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0RBTzhCO0FBb0J2QixNQUFNLE9BQU8sR0FBbUIsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO0lBQ3JELE1BQU0sV0FBVyxHQUFHLElBQUksMEJBQVcsRUFBRSxDQUFBO0lBQ3JDLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFBO0lBQzFFLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFBO0lBQzFFLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUE7SUFDeEQsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUN4RSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBc0IsQ0FDdEMsQ0FBQTtJQUVELE1BQU0sZ0JBQWdCLEdBQStCO1FBQ25ELGtCQUFrQixFQUFFLGtCQUFrQjtRQUN0QyxPQUFPLEVBQUUsSUFBSTtRQUNiLGNBQWMsRUFBRTtZQUNkLFFBQVEsRUFBRSxXQUFXO1NBQ3RCO0tBQ0YsQ0FBQTtJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFbkUsUUFBUSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUIsS0FBSyxRQUFRO1lBQ1gsTUFBTSxjQUFjLEdBQUcsTUFBTSxXQUFXLENBQUMsSUFBSSxDQUMzQyxJQUFJLDREQUE2QyxDQUFDO2dCQUNoRCxvQkFBb0IsRUFBRSxvQkFBb0I7Z0JBQzFDLG9CQUFvQixFQUFFLG9CQUFvQjthQUMzQyxDQUFDLENBQ0gsQ0FBQTtZQUNELE9BQU8sQ0FBQyxHQUFHLENBQ1QsK0NBQStDLElBQUksQ0FBQyxTQUFTLENBQzNELGNBQWMsQ0FDZixFQUFFLENBQ0osQ0FBQTtZQUVELE9BQU87Z0JBQ0wsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjthQUM3QyxDQUFBO1FBRUgsS0FBSyxRQUFRO1lBQ1gsTUFBTSxjQUFjLEdBQUcsTUFBTSxXQUFXLENBQUMsSUFBSSxDQUMzQyxJQUFJLDREQUE2QyxDQUFDO2dCQUNoRCxvQkFBb0IsRUFBRSxvQkFBb0I7Z0JBQzFDLG9CQUFvQixFQUFFLG9CQUFvQjtnQkFDMUMsZ0JBQWdCLEVBQUUsZ0JBQWdCO2FBQ25DLENBQUMsQ0FDSCxDQUFBO1lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FDVCwrQ0FBK0MsSUFBSSxDQUFDLFNBQVMsQ0FDM0QsY0FBYyxDQUNmLEVBQUUsQ0FDSixDQUFBO1lBQ0QsT0FBTztnQkFDTCxrQkFBa0IsRUFBRSxrQ0FBa0Msb0JBQW9CLElBQUksb0JBQW9CLEVBQUU7YUFDckcsQ0FBQTtRQUVILEtBQUssUUFBUTtZQUNYLE1BQU0sNEJBQTRCLEdBQ2hDLEtBQUssQ0FBQyxxQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQTtZQUNuRCxNQUFNLDRCQUE0QixHQUNoQyxLQUFLLENBQUMscUJBQXNCLENBQUMsb0JBQW9CLENBQUE7WUFFbkQsSUFDRSxvQkFBb0IsS0FBSyw0QkFBNEI7Z0JBQ3JELG9CQUFvQixLQUFLLDRCQUE0QixFQUNyRCxDQUFDO2dCQUNELE1BQU0sY0FBYyxHQUFHLE1BQU0sV0FBVyxDQUFDLElBQUksQ0FDM0MsSUFBSSw0REFBNkMsQ0FBQztvQkFDaEQsb0JBQW9CLEVBQUUsb0JBQW9CO29CQUMxQyxvQkFBb0IsRUFBRSxvQkFBb0I7b0JBQzFDLGdCQUFnQixFQUFFLGdCQUFnQjtpQkFDbkMsQ0FBQyxDQUNILENBQUE7Z0JBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FDVCwrQ0FBK0MsSUFBSSxDQUFDLFNBQVMsQ0FDM0QsY0FBYyxDQUNmLEVBQUUsQ0FDSixDQUFBO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sY0FBYyxHQUFHLE1BQU0sV0FBVyxDQUFDLElBQUksQ0FDM0MsSUFBSSw0REFBNkMsQ0FBQztvQkFDaEQsb0JBQW9CLEVBQUUsb0JBQW9CO29CQUMxQyxvQkFBb0IsRUFBRSxvQkFBb0I7b0JBQzFDLGdCQUFnQixFQUFFLGdCQUFnQjtpQkFDbkMsQ0FBQyxDQUNILENBQUE7Z0JBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FDVCwrQ0FBK0MsSUFBSSxDQUFDLFNBQVMsQ0FDM0QsY0FBYyxDQUNmLEVBQUUsQ0FDSixDQUFBO1lBQ0gsQ0FBQztZQUVELE9BQU87Z0JBQ0wsa0JBQWtCLEVBQUUsa0NBQWtDLG9CQUFvQixJQUFJLG9CQUFvQixFQUFFO2FBQ3JHLENBQUE7SUFDTCxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBL0ZZLFFBQUEsT0FBTyxXQStGbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTRVN2MkNsaWVudCxcbiAgQ3JlYXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25Db21tYW5kLFxuICBVcGRhdGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbkNvbW1hbmQsXG4gIERlbGV0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZCxcbiAgRXZlbnRUeXBlLFxuICBFdmVudERlc3RpbmF0aW9uRGVmaW5pdGlvbixcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zZXN2MlwiXG5cbmludGVyZmFjZSBSZXNvdXJjZVByb3BzIHtcbiAgQ29uZmlndXJhdGlvblNldE5hbWU6IHN0cmluZ1xuICBFdmVudERlc3RpbmF0aW9uTmFtZTogc3RyaW5nXG4gIFNuc1RvcGljQXJuOiBzdHJpbmdcbiAgTWF0Y2hpbmdFdmVudFR5cGVzOiBzdHJpbmdbXVxufVxuXG50eXBlIE9uRXZlbnRIYW5kbGVyID0gKGV2ZW50OiB7XG4gIFBoeXNpY2FsUmVzb3VyY2VJZD86IHN0cmluZ1xuICBSZXF1ZXN0VHlwZTogXCJDcmVhdGVcIiB8IFwiVXBkYXRlXCIgfCBcIkRlbGV0ZVwiXG4gIFJlc291cmNlUHJvcGVydGllczogUmVzb3VyY2VQcm9wc1xuICBPbGRSZXNvdXJjZVByb3BlcnRpZXM/OiBSZXNvdXJjZVByb3BzXG59KSA9PiBQcm9taXNlPHtcbiAgUGh5c2ljYWxSZXNvdXJjZUlkPzogc3RyaW5nXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIERhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG59PlxuXG5leHBvcnQgY29uc3QgaGFuZGxlcjogT25FdmVudEhhbmRsZXIgPSBhc3luYyAoZXZlbnQpID0+IHtcbiAgY29uc3Qgc2VzdjJDbGllbnQgPSBuZXcgU0VTdjJDbGllbnQoKVxuICBjb25zdCBjb25maWd1cmF0aW9uU2V0TmFtZSA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5Db25maWd1cmF0aW9uU2V0TmFtZVxuICBjb25zdCBldmVudERlc3RpbmF0aW9uTmFtZSA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5FdmVudERlc3RpbmF0aW9uTmFtZVxuICBjb25zdCBzbnNUb3BpY0FybiA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5TbnNUb3BpY0FyblxuICBjb25zdCBtYXRjaGluZ0V2ZW50VHlwZXMgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuTWF0Y2hpbmdFdmVudFR5cGVzLm1hcChcbiAgICAoZXZlbnRUeXBlKSA9PiBldmVudFR5cGUgYXMgRXZlbnRUeXBlLFxuICApXG5cbiAgY29uc3QgZXZlbnREZXN0aW5hdGlvbjogRXZlbnREZXN0aW5hdGlvbkRlZmluaXRpb24gPSB7XG4gICAgTWF0Y2hpbmdFdmVudFR5cGVzOiBtYXRjaGluZ0V2ZW50VHlwZXMsXG4gICAgRW5hYmxlZDogdHJ1ZSxcbiAgICBTbnNEZXN0aW5hdGlvbjoge1xuICAgICAgVG9waWNBcm46IHNuc1RvcGljQXJuLFxuICAgIH0sXG4gIH1cblxuICBjb25zb2xlLmxvZyhgRXZlbnREZXN0aW5hdGlvbiAke0pTT04uc3RyaW5naWZ5KGV2ZW50RGVzdGluYXRpb24pfWApXG5cbiAgc3dpdGNoIChldmVudC5SZXF1ZXN0VHlwZSkge1xuICAgIGNhc2UgXCJEZWxldGVcIjpcbiAgICAgIGNvbnN0IGRlbGV0ZVJlc3BvbnNlID0gYXdhaXQgc2VzdjJDbGllbnQuc2VuZChcbiAgICAgICAgbmV3IERlbGV0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZCh7XG4gICAgICAgICAgQ29uZmlndXJhdGlvblNldE5hbWU6IGNvbmZpZ3VyYXRpb25TZXROYW1lLFxuICAgICAgICAgIEV2ZW50RGVzdGluYXRpb25OYW1lOiBldmVudERlc3RpbmF0aW9uTmFtZSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYHNlcy5kZWxldGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbjogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICBkZWxldGVSZXNwb25zZSxcbiAgICAgICAgKX1gLFxuICAgICAgKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICAgIH1cblxuICAgIGNhc2UgXCJDcmVhdGVcIjpcbiAgICAgIGNvbnN0IGNyZWF0ZVJlc3BvbnNlID0gYXdhaXQgc2VzdjJDbGllbnQuc2VuZChcbiAgICAgICAgbmV3IENyZWF0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZCh7XG4gICAgICAgICAgQ29uZmlndXJhdGlvblNldE5hbWU6IGNvbmZpZ3VyYXRpb25TZXROYW1lLFxuICAgICAgICAgIEV2ZW50RGVzdGluYXRpb25OYW1lOiBldmVudERlc3RpbmF0aW9uTmFtZSxcbiAgICAgICAgICBFdmVudERlc3RpbmF0aW9uOiBldmVudERlc3RpbmF0aW9uLFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgc2VzLmNyZWF0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIGNyZWF0ZVJlc3BvbnNlLFxuICAgICAgICApfWAsXG4gICAgICApXG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGBDb25maWd1cmF0aW9uU2V0U25zRGVzdGluYXRpb24tJHtjb25maWd1cmF0aW9uU2V0TmFtZX0tJHtldmVudERlc3RpbmF0aW9uTmFtZX1gLFxuICAgICAgfVxuXG4gICAgY2FzZSBcIlVwZGF0ZVwiOlxuICAgICAgY29uc3QgcHJldmlvdXNFdmVudERlc3RpbmF0aW9uTmFtZSA9XG4gICAgICAgIGV2ZW50Lk9sZFJlc291cmNlUHJvcGVydGllcyEuRXZlbnREZXN0aW5hdGlvbk5hbWVcbiAgICAgIGNvbnN0IHByZXZpb3VzQ29uZmlndXJhdGlvblNldE5hbWUgPVxuICAgICAgICBldmVudC5PbGRSZXNvdXJjZVByb3BlcnRpZXMhLkNvbmZpZ3VyYXRpb25TZXROYW1lXG5cbiAgICAgIGlmIChcbiAgICAgICAgY29uZmlndXJhdGlvblNldE5hbWUgIT09IHByZXZpb3VzQ29uZmlndXJhdGlvblNldE5hbWUgfHxcbiAgICAgICAgZXZlbnREZXN0aW5hdGlvbk5hbWUgIT09IHByZXZpb3VzRXZlbnREZXN0aW5hdGlvbk5hbWVcbiAgICAgICkge1xuICAgICAgICBjb25zdCBjcmVhdGVSZXNwb25zZSA9IGF3YWl0IHNlc3YyQ2xpZW50LnNlbmQoXG4gICAgICAgICAgbmV3IENyZWF0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZCh7XG4gICAgICAgICAgICBDb25maWd1cmF0aW9uU2V0TmFtZTogY29uZmlndXJhdGlvblNldE5hbWUsXG4gICAgICAgICAgICBFdmVudERlc3RpbmF0aW9uTmFtZTogZXZlbnREZXN0aW5hdGlvbk5hbWUsXG4gICAgICAgICAgICBFdmVudERlc3RpbmF0aW9uOiBldmVudERlc3RpbmF0aW9uLFxuICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGBzZXMuY3JlYXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb246ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICBjcmVhdGVSZXNwb25zZSxcbiAgICAgICAgICApfWAsXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZVJlc3BvbnNlID0gYXdhaXQgc2VzdjJDbGllbnQuc2VuZChcbiAgICAgICAgICBuZXcgVXBkYXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25Db21tYW5kKHtcbiAgICAgICAgICAgIENvbmZpZ3VyYXRpb25TZXROYW1lOiBjb25maWd1cmF0aW9uU2V0TmFtZSxcbiAgICAgICAgICAgIEV2ZW50RGVzdGluYXRpb25OYW1lOiBldmVudERlc3RpbmF0aW9uTmFtZSxcbiAgICAgICAgICAgIEV2ZW50RGVzdGluYXRpb246IGV2ZW50RGVzdGluYXRpb24sXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYHNlcy5VcGRhdGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbjogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHVwZGF0ZVJlc3BvbnNlLFxuICAgICAgICAgICl9YCxcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGBDb25maWd1cmF0aW9uU2V0U25zRGVzdGluYXRpb24tJHtjb25maWd1cmF0aW9uU2V0TmFtZX0tJHtldmVudERlc3RpbmF0aW9uTmFtZX1gLFxuICAgICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -6,9 +6,9 @@ const iam = require("aws-cdk-lib/aws-iam");
|
|
|
6
6
|
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
7
7
|
const cdk = require("aws-cdk-lib");
|
|
8
8
|
const cr = require("aws-cdk-lib/custom-resources");
|
|
9
|
-
const handler_1 = require("./handler");
|
|
10
9
|
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
|
11
10
|
const snsSubscriptions = require("aws-cdk-lib/aws-sns-subscriptions");
|
|
11
|
+
const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
|
|
12
12
|
class ConfigurationSetSnsDestination extends constructs.Construct {
|
|
13
13
|
constructor(scope, id, props) {
|
|
14
14
|
var _a;
|
|
@@ -26,7 +26,7 @@ class ConfigurationSetSnsDestination extends constructs.Construct {
|
|
|
26
26
|
const sesEventLoggerFunction = new lambda.Function(this, "EventsHandler", {
|
|
27
27
|
code: new lambda.InlineCode(`exports.handler = ${sesEventLoggerHandler.toString()};`),
|
|
28
28
|
handler: "index.handler",
|
|
29
|
-
runtime: lambda.Runtime.
|
|
29
|
+
runtime: lambda.Runtime.NODEJS_18_X,
|
|
30
30
|
logRetention: aws_logs_1.RetentionDays.THREE_MONTHS,
|
|
31
31
|
});
|
|
32
32
|
if ((_a = props.logEvents) !== null && _a !== void 0 ? _a : true) {
|
|
@@ -51,11 +51,11 @@ class ConfigurationSetSnsDestinationProvider extends constructs.Construct {
|
|
|
51
51
|
constructor(scope, id) {
|
|
52
52
|
super(scope, id);
|
|
53
53
|
this.provider = new cr.Provider(this, "Provider", {
|
|
54
|
-
onEventHandler: new
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
runtime: lambda.Runtime.NODEJS_16_X,
|
|
54
|
+
onEventHandler: new aws_lambda_nodejs_1.NodejsFunction(this, "Function", {
|
|
55
|
+
entry: require.resolve("./handler"),
|
|
56
|
+
runtime: lambda.Runtime.NODEJS_18_X,
|
|
58
57
|
timeout: cdk.Duration.minutes(5),
|
|
58
|
+
awsSdkConnectionReuse: false,
|
|
59
59
|
initialPolicy: [
|
|
60
60
|
new iam.PolicyStatement({
|
|
61
61
|
actions: [
|
|
@@ -72,4 +72,4 @@ class ConfigurationSetSnsDestinationProvider extends constructs.Construct {
|
|
|
72
72
|
this.serviceToken = this.provider.serviceToken;
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VzL2NvbmZpZ3VyYXRpb25zZXRzbnNkZXN0aW5hdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBd0M7QUFDeEMsMkNBQTBDO0FBQzFDLGlEQUFnRDtBQUVoRCxtQ0FBa0M7QUFDbEMsbURBQWtEO0FBQ2xELG1EQUFvRDtBQUNwRCxzRUFBcUU7QUFFckUscUVBQThEO0FBc0M5RCxNQUFhLDhCQUErQixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBQ3RFLFlBQ0UsS0FBMkIsRUFDM0IsRUFBVSxFQUNWLEtBQTBDOztRQUUxQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3ZDLFlBQVksRUFDVixzQ0FBc0MsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWTtZQUN2RSxVQUFVLEVBQUU7Z0JBQ1Ysb0JBQW9CLEVBQUUsS0FBSyxDQUFDLG9CQUFvQjtnQkFDaEQsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLG9CQUFvQjtnQkFDaEQsV0FBVyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUTtnQkFDcEMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtnQkFDNUMsTUFBTSxFQUFFLENBQUM7YUFDVjtTQUNGLENBQUMsQ0FBQTtRQUVGLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDeEUsSUFBSSxFQUFFLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FDekIscUJBQXFCLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLENBQ3pEO1lBQ0QsT0FBTyxFQUFFLGVBQWU7WUFDeEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztZQUNuQyxZQUFZLEVBQUUsd0JBQWEsQ0FBQyxZQUFZO1NBQ3pDLENBQUMsQ0FBQTtRQUVGLElBQUksTUFBQSxLQUFLLENBQUMsU0FBUyxtQ0FBSSxJQUFJLEVBQUUsQ0FBQztZQUM1QixLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FDNUIsSUFBSSxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUNoRSxDQUFBO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQW5DRCx3RUFtQ0M7QUFFRCxNQUFNLHFCQUFxQixHQUFlLENBQUMsS0FBSyxFQUFFLEVBQUU7SUFDbEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQ2pFLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRCxNQUFNLHNDQUF1QyxTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBQ3ZFOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUEyQjtRQUNuRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNqQyxNQUFNLEVBQUUsR0FBRyw4Q0FBOEMsQ0FBQTtRQUN6RCxPQUFPLENBQ0osS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUE0QztZQUN2RSxJQUFJLHNDQUFzQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDdEQsQ0FBQTtJQUNILENBQUM7SUFLRCxZQUFZLEtBQTJCLEVBQUUsRUFBVTtRQUNqRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDaEQsY0FBYyxFQUFFLElBQUksa0NBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNuRCxLQUFLLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7Z0JBQ25DLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7Z0JBQ25DLE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLHFCQUFxQixFQUFFLEtBQUs7Z0JBQzVCLGFBQWEsRUFBRTtvQkFDYixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7d0JBQ3RCLE9BQU8sRUFBRTs0QkFDUCw0Q0FBNEM7NEJBQzVDLDRDQUE0Qzs0QkFDNUMsNENBQTRDOzRCQUM1QywwQ0FBMEM7eUJBQzNDO3dCQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztxQkFDakIsQ0FBQztpQkFDSDthQUNGLENBQUM7U0FDSCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFBO0lBQ2hELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSBcImNvbnN0cnVjdHNcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgKiBhcyBzbnMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zbnNcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgKiBhcyBjciBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiXG5pbXBvcnQgeyBSZXRlbnRpb25EYXlzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCJcbmltcG9ydCAqIGFzIHNuc1N1YnNjcmlwdGlvbnMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zbnMtc3Vic2NyaXB0aW9uc1wiXG5pbXBvcnQgeyBTTlNIYW5kbGVyIH0gZnJvbSBcImF3cy1sYW1iZGFcIlxuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIlxuXG5leHBvcnQgdHlwZSBDb25maWd1cmF0aW9uU2V0U25zRGVzdGluYXRpb25FdmVudFR5cGUgPVxuICB8IFwiU0VORFwiXG4gIHwgXCJSRUpFQ1RcIlxuICB8IFwiQk9VTkNFXCJcbiAgfCBcIkNPTVBMQUlOVFwiXG4gIHwgXCJERUxJVkVSWVwiXG4gIHwgXCJPUEVOXCJcbiAgfCBcIkNMSUNLXCJcbiAgfCBcIlJFTkRFUklOR19GQUlMVVJFXCJcbiAgfCBcIkRFTElWRVJZX0RFTEFZXCJcbiAgfCBcIlNVQlNDUklQVElPTlwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlndXJhdGlvblNldFNuc0Rlc3RpbmF0aW9uUHJvcHMge1xuICAvKipcbiAgICogV2hldGhlciBTRVMgZXZlbnRzIHdpbGwgYmUgbG9nZ2VkIHRvIENsb3VkV2F0Y2hcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgbG9nRXZlbnRzPzogYm9vbGVhblxuICAvKipcbiAgICogVGhlIFNFUyBjb25maWd1cmF0aW9uIHNldCBuYW1lXG4gICAqL1xuICBjb25maWd1cmF0aW9uU2V0TmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgU0VTIGNvbmZpZ3VyYXRpb24gc2V0IGV2ZW50IGRlc3RpbmF0aW9uIG5hbWVcbiAgICovXG4gIGV2ZW50RGVzdGluYXRpb25OYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFNOUyB0b3BpYyB0byBzZW5kIGJvdW5jZXMgdG9cbiAgICovXG4gIHNuc1RvcGljOiBzbnMuSVRvcGljXG4gIC8qKlxuICAgKiBFdmVudCB0eXBlcyB0byBtYXRjaFxuICAgKi9cbiAgbWF0Y2hpbmdFdmVudFR5cGVzOiBDb25maWd1cmF0aW9uU2V0U25zRGVzdGluYXRpb25FdmVudFR5cGVbXVxufVxuXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvblNldFNuc0Rlc3RpbmF0aW9uIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQ29uZmlndXJhdGlvblNldFNuc0Rlc3RpbmF0aW9uUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46XG4gICAgICAgIENvbmZpZ3VyYXRpb25TZXRTbnNEZXN0aW5hdGlvblByb3ZpZGVyLmdldE9yQ3JlYXRlKHRoaXMpLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgQ29uZmlndXJhdGlvblNldE5hbWU6IHByb3BzLmNvbmZpZ3VyYXRpb25TZXROYW1lLFxuICAgICAgICBFdmVudERlc3RpbmF0aW9uTmFtZTogcHJvcHMuZXZlbnREZXN0aW5hdGlvbk5hbWUsXG4gICAgICAgIFNuc1RvcGljQXJuOiBwcm9wcy5zbnNUb3BpYy50b3BpY0FybixcbiAgICAgICAgTWF0Y2hpbmdFdmVudFR5cGVzOiBwcm9wcy5tYXRjaGluZ0V2ZW50VHlwZXMsXG4gICAgICAgIFNlcmlhbDogMSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIGNvbnN0IHNlc0V2ZW50TG9nZ2VyRnVuY3Rpb24gPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIFwiRXZlbnRzSGFuZGxlclwiLCB7XG4gICAgICBjb2RlOiBuZXcgbGFtYmRhLklubGluZUNvZGUoXG4gICAgICAgIGBleHBvcnRzLmhhbmRsZXIgPSAke3Nlc0V2ZW50TG9nZ2VySGFuZGxlci50b1N0cmluZygpfTtgLFxuICAgICAgKSxcbiAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICBsb2dSZXRlbnRpb246IFJldGVudGlvbkRheXMuVEhSRUVfTU9OVEhTLFxuICAgIH0pXG5cbiAgICBpZiAocHJvcHMubG9nRXZlbnRzID8/IHRydWUpIHtcbiAgICAgIHByb3BzLnNuc1RvcGljLmFkZFN1YnNjcmlwdGlvbihcbiAgICAgICAgbmV3IHNuc1N1YnNjcmlwdGlvbnMuTGFtYmRhU3Vic2NyaXB0aW9uKHNlc0V2ZW50TG9nZ2VyRnVuY3Rpb24pLFxuICAgICAgKVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBzZXNFdmVudExvZ2dlckhhbmRsZXI6IFNOU0hhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgZXZlbnQuUmVjb3Jkcy5mb3JFYWNoKChyZWNvcmQpID0+XG4gICAgY29uc29sZS5sb2coYFNFUyBldmVudCBtZXNzYWdlIGZyb20gU05TOiAke3JlY29yZC5TbnMuTWVzc2FnZX1gKSxcbiAgKVxufVxuXG5jbGFzcyBDb25maWd1cmF0aW9uU2V0U25zRGVzdGluYXRpb25Qcm92aWRlciBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBwcm92aWRlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0T3JDcmVhdGUoc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0KSB7XG4gICAgY29uc3Qgc3RhY2sgPSBjZGsuU3RhY2sub2Yoc2NvcGUpXG4gICAgY29uc3QgaWQgPSBcImxpZmxpZy1jZGsuY29uZmlndXJhdGlvbi1zZXQtc25zLWRlc3RpbmF0aW9uXCJcbiAgICByZXR1cm4gKFxuICAgICAgKHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKGlkKSBhcyBDb25maWd1cmF0aW9uU2V0U25zRGVzdGluYXRpb25Qcm92aWRlcikgfHxcbiAgICAgIG5ldyBDb25maWd1cmF0aW9uU2V0U25zRGVzdGluYXRpb25Qcm92aWRlcihzdGFjaywgaWQpXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aWRlcjogY3IuUHJvdmlkZXJcbiAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2VUb2tlbjogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgdGhpcy5wcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCBcIlByb3ZpZGVyXCIsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBuZXcgTm9kZWpzRnVuY3Rpb24odGhpcywgXCJGdW5jdGlvblwiLCB7XG4gICAgICAgIGVudHJ5OiByZXF1aXJlLnJlc29sdmUoXCIuL2hhbmRsZXJcIiksXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgYXdzU2RrQ29ubmVjdGlvblJldXNlOiBmYWxzZSxcbiAgICAgICAgaW5pdGlhbFBvbGljeTogW1xuICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgXCJzZXM6Q3JlYXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25cIixcbiAgICAgICAgICAgICAgXCJzZXM6VXBkYXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25cIixcbiAgICAgICAgICAgICAgXCJzZXM6RGVsZXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25cIixcbiAgICAgICAgICAgICAgXCJzZXM6R2V0Q29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25zXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgfSlcblxuICAgIHRoaXMuc2VydmljZVRva2VuID0gdGhpcy5wcm92aWRlci5zZXJ2aWNlVG9rZW5cbiAgfVxufVxuIl19
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
|
|
3
|
+
exports.handler = void 0;
|
|
4
|
+
const client_ses_1 = require("@aws-sdk/client-ses");
|
|
5
|
+
const client_sesv2_1 = require("@aws-sdk/client-sesv2");
|
|
6
|
+
const handler = async (event) => {
|
|
7
|
+
var _a;
|
|
8
|
+
const sesClient = new client_ses_1.SESClient();
|
|
9
|
+
const sesv2Client = new client_sesv2_1.SESv2Client();
|
|
8
10
|
const ttl = "1800";
|
|
9
|
-
const ses = new AWS.SES();
|
|
10
|
-
const sesv2 = new AWS.SESV2();
|
|
11
11
|
const domainName = event.ResourceProperties["DomainName"];
|
|
12
12
|
const includeVerificationRecord = event.ResourceProperties["IncludeVerificationRecord"] == "true";
|
|
13
13
|
const defaultConfigurationSetName = event.ResourceProperties["DefaultConfigurationSetName"];
|
|
@@ -36,39 +36,39 @@ const sesDomainHandler = async (event) => {
|
|
|
36
36
|
}
|
|
37
37
|
switch (event.RequestType) {
|
|
38
38
|
case "Delete":
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
console.log(`ses.deleteIdentity: ${JSON.stringify(
|
|
39
|
+
const deleteIdentityResp = await sesClient.send(new client_ses_1.DeleteIdentityCommand({
|
|
40
|
+
Identity: domainName,
|
|
41
|
+
}));
|
|
42
|
+
console.log(`ses.deleteIdentity: ${JSON.stringify(deleteIdentityResp)}`);
|
|
43
43
|
return {
|
|
44
44
|
PhysicalResourceId: event.PhysicalResourceId,
|
|
45
45
|
};
|
|
46
46
|
case "Create":
|
|
47
47
|
case "Update":
|
|
48
48
|
// Idempotent.
|
|
49
|
-
const
|
|
50
|
-
.verifyDomainIdentity({
|
|
49
|
+
const verifyDomainIdentityResp = await sesClient.send(new client_ses_1.VerifyDomainIdentityCommand({
|
|
51
50
|
Domain: domainName,
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
}));
|
|
52
|
+
console.log(`ses.verifyDomainIdentity: ${JSON.stringify(verifyDomainIdentityResp)}`);
|
|
53
|
+
const verificationToken = verifyDomainIdentityResp.VerificationToken;
|
|
54
|
+
if (!verificationToken) {
|
|
55
|
+
throw new Error("Verification token not returned");
|
|
56
|
+
}
|
|
56
57
|
// Idempotent.
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
console.log(`ses.verifyDomainDkim: ${JSON.stringify(
|
|
61
|
-
const dkimTokens =
|
|
58
|
+
const verifyDomainDkimResp = await sesClient.send(new client_ses_1.VerifyDomainDkimCommand({
|
|
59
|
+
Domain: domainName,
|
|
60
|
+
}));
|
|
61
|
+
console.log(`ses.verifyDomainDkim: ${JSON.stringify(verifyDomainDkimResp)}`);
|
|
62
|
+
const dkimTokens = (_a = verifyDomainDkimResp.DkimTokens) !== null && _a !== void 0 ? _a : [];
|
|
63
|
+
if (!dkimTokens) {
|
|
64
|
+
throw new Error("DKIM tokens not returned");
|
|
65
|
+
}
|
|
62
66
|
// Idempotent.
|
|
63
|
-
const
|
|
64
|
-
.putEmailIdentityConfigurationSetAttributes({
|
|
67
|
+
const putEmailIdentityConfigResp = await sesv2Client.send(new client_sesv2_1.PutEmailIdentityConfigurationSetAttributesCommand({
|
|
65
68
|
EmailIdentity: domainName,
|
|
66
|
-
// ConfigurationSetName can be set to undefined to remove
|
|
67
|
-
// the default configuration set from the identity.
|
|
68
69
|
ConfigurationSetName: defaultConfigurationSetName,
|
|
69
|
-
})
|
|
70
|
-
|
|
71
|
-
console.log(`sesv2.putEmailIdentityConfigurationSetAttributes ${JSON.stringify(response3)}`);
|
|
70
|
+
}));
|
|
71
|
+
console.log(`sesv2.putEmailIdentityConfigurationSetAttributes ${JSON.stringify(putEmailIdentityConfigResp)}`);
|
|
72
72
|
return {
|
|
73
73
|
PhysicalResourceId: `SesDomain${domainName}`,
|
|
74
74
|
Data: {
|
|
@@ -78,5 +78,5 @@ const sesDomainHandler = async (event) => {
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
};
|
|
81
|
-
exports.
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
exports.handler = handler;
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXMvc2VzZG9tYWluL2hhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0RBSzRCO0FBRTVCLHdEQUc4QjtBQW9CdkIsTUFBTSxPQUFPLEdBQW1CLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTs7SUFDckQsTUFBTSxTQUFTLEdBQUcsSUFBSSxzQkFBUyxFQUFFLENBQUE7SUFDakMsTUFBTSxXQUFXLEdBQUcsSUFBSSwwQkFBVyxFQUFFLENBQUE7SUFFckMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFBO0lBRWxCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUN6RCxNQUFNLHlCQUF5QixHQUM3QixLQUFLLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCLENBQUMsSUFBSSxNQUFNLENBQUE7SUFFakUsTUFBTSwyQkFBMkIsR0FDL0IsS0FBSyxDQUFDLGtCQUFrQixDQUFDLDZCQUE2QixDQUFDLENBQUE7SUFFekQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO0lBQ2xELENBQUM7SUFFRCxTQUFTLHVCQUF1QixDQUM5QixpQkFBeUIsRUFDekIsVUFBb0I7UUFFcEIsTUFBTSxPQUFPLEdBQXdCLEVBQUUsQ0FBQTtRQUV2QyxJQUFJLHlCQUF5QixFQUFFLENBQUM7WUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDWCxJQUFJLEVBQUUsY0FBYyxVQUFVLEdBQUc7Z0JBQ2pDLElBQUksRUFBRSxLQUFLO2dCQUNYLGVBQWUsRUFBRSxDQUFDLElBQUksaUJBQWlCLEdBQUcsQ0FBQztnQkFDM0MsR0FBRyxFQUFFLEdBQUc7YUFDVCxDQUFDLENBQUE7UUFDSixDQUFDO1FBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUMvQixPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNYLElBQUksRUFBRSxHQUFHLEtBQUssZUFBZSxVQUFVLEdBQUc7Z0JBQzFDLElBQUksRUFBRSxPQUFPO2dCQUNiLGVBQWUsRUFBRSxDQUFDLEdBQUcsS0FBSyxzQkFBc0IsQ0FBQztnQkFDakQsR0FBRyxFQUFFLEdBQUc7YUFDVCxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUVELFFBQVEsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFCLEtBQUssUUFBUTtZQUNYLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUM3QyxJQUFJLGtDQUFxQixDQUFDO2dCQUN4QixRQUFRLEVBQUUsVUFBVTthQUNyQixDQUFDLENBQ0gsQ0FBQTtZQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUE7WUFFeEUsT0FBTztnQkFDTCxrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCO2FBQzdDLENBQUE7UUFFSCxLQUFLLFFBQVEsQ0FBQztRQUNkLEtBQUssUUFBUTtZQUNYLGNBQWM7WUFDZCxNQUFNLHdCQUF3QixHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FDbkQsSUFBSSx3Q0FBMkIsQ0FBQztnQkFDOUIsTUFBTSxFQUFFLFVBQVU7YUFDbkIsQ0FBQyxDQUNILENBQUE7WUFDRCxPQUFPLENBQUMsR0FBRyxDQUNULDZCQUE2QixJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FDeEUsQ0FBQTtZQUNELE1BQU0saUJBQWlCLEdBQUcsd0JBQXdCLENBQUMsaUJBQWlCLENBQUE7WUFDcEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtZQUNwRCxDQUFDO1lBRUQsY0FBYztZQUNkLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUMvQyxJQUFJLG9DQUF1QixDQUFDO2dCQUMxQixNQUFNLEVBQUUsVUFBVTthQUNuQixDQUFDLENBQ0gsQ0FBQTtZQUNELE9BQU8sQ0FBQyxHQUFHLENBQ1QseUJBQXlCLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUNoRSxDQUFBO1lBQ0QsTUFBTSxVQUFVLEdBQUcsTUFBQSxvQkFBb0IsQ0FBQyxVQUFVLG1DQUFJLEVBQUUsQ0FBQTtZQUN4RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtZQUM3QyxDQUFDO1lBRUQsY0FBYztZQUNkLE1BQU0sMEJBQTBCLEdBQUcsTUFBTSxXQUFXLENBQUMsSUFBSSxDQUN2RCxJQUFJLGdFQUFpRCxDQUFDO2dCQUNwRCxhQUFhLEVBQUUsVUFBVTtnQkFDekIsb0JBQW9CLEVBQUUsMkJBQTJCO2FBQ2xELENBQUMsQ0FDSCxDQUFBO1lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FDVCxvREFBb0QsSUFBSSxDQUFDLFNBQVMsQ0FDaEUsMEJBQTBCLENBQzNCLEVBQUUsQ0FDSixDQUFBO1lBRUQsT0FBTztnQkFDTCxrQkFBa0IsRUFBRSxZQUFZLFVBQVUsRUFBRTtnQkFDNUMsSUFBSSxFQUFFO29CQUNKLGlCQUFpQixFQUFFLHVCQUF1QixDQUN4QyxpQkFBaUIsRUFDakIsVUFBVSxDQUNYO29CQUNELGlCQUFpQixFQUFFLGlCQUFpQjtpQkFDckM7YUFDRixDQUFBO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FBQTtBQTlHWSxRQUFBLE9BQU8sV0E4R25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU0VTQ2xpZW50LFxuICBWZXJpZnlEb21haW5JZGVudGl0eUNvbW1hbmQsXG4gIFZlcmlmeURvbWFpbkRraW1Db21tYW5kLFxuICBEZWxldGVJZGVudGl0eUNvbW1hbmQsXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc2VzXCJcblxuaW1wb3J0IHtcbiAgU0VTdjJDbGllbnQsXG4gIFB1dEVtYWlsSWRlbnRpdHlDb25maWd1cmF0aW9uU2V0QXR0cmlidXRlc0NvbW1hbmQsXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc2VzdjJcIlxuXG50eXBlIE9uRXZlbnRIYW5kbGVyID0gKGV2ZW50OiB7XG4gIFBoeXNpY2FsUmVzb3VyY2VJZD86IHN0cmluZ1xuICBSZXF1ZXN0VHlwZTogXCJDcmVhdGVcIiB8IFwiVXBkYXRlXCIgfCBcIkRlbGV0ZVwiXG4gIFJlc291cmNlUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxufSkgPT4gUHJvbWlzZTx7XG4gIFBoeXNpY2FsUmVzb3VyY2VJZD86IHN0cmluZ1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBEYXRhPzogUmVjb3JkPHN0cmluZywgYW55PlxufT5cblxuLy8gVHlwZSB0byBtYWNoIENsb3VkRm9ybWF0aW9uIEFXUzo6Um91dGU1Mzo6UmVjb3JkU2V0R3JvdXAgUmVjb3JkU2V0XG5pbnRlcmZhY2UgUmVjb3JkU2V0UHJvcGVydHkge1xuICBOYW1lOiBzdHJpbmdcbiAgVHlwZTogc3RyaW5nXG4gIFJlc291cmNlUmVjb3Jkczogc3RyaW5nW11cbiAgVFRMOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IGhhbmRsZXI6IE9uRXZlbnRIYW5kbGVyID0gYXN5bmMgKGV2ZW50KSA9PiB7XG4gIGNvbnN0IHNlc0NsaWVudCA9IG5ldyBTRVNDbGllbnQoKVxuICBjb25zdCBzZXN2MkNsaWVudCA9IG5ldyBTRVN2MkNsaWVudCgpXG5cbiAgY29uc3QgdHRsID0gXCIxODAwXCJcblxuICBjb25zdCBkb21haW5OYW1lID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzW1wiRG9tYWluTmFtZVwiXVxuICBjb25zdCBpbmNsdWRlVmVyaWZpY2F0aW9uUmVjb3JkID1cbiAgICBldmVudC5SZXNvdXJjZVByb3BlcnRpZXNbXCJJbmNsdWRlVmVyaWZpY2F0aW9uUmVjb3JkXCJdID09IFwidHJ1ZVwiXG5cbiAgY29uc3QgZGVmYXVsdENvbmZpZ3VyYXRpb25TZXROYW1lID1cbiAgICBldmVudC5SZXNvdXJjZVByb3BlcnRpZXNbXCJEZWZhdWx0Q29uZmlndXJhdGlvblNldE5hbWVcIl1cblxuICBpZiAoIWluY2x1ZGVWZXJpZmljYXRpb25SZWNvcmQpIHtcbiAgICBjb25zb2xlLmxvZyhcIkV4Y2x1ZGluZyB2ZXJpZmljYXRpb24gVFhUIHJlY29yZFwiKVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlUm91dGU1M1JlY29yZFNldHMoXG4gICAgdmVyaWZpY2F0aW9uVG9rZW46IHN0cmluZyxcbiAgICBka2ltVG9rZW5zOiBzdHJpbmdbXSxcbiAgKSB7XG4gICAgY29uc3QgcmVjb3JkczogUmVjb3JkU2V0UHJvcGVydHlbXSA9IFtdXG5cbiAgICBpZiAoaW5jbHVkZVZlcmlmaWNhdGlvblJlY29yZCkge1xuICAgICAgcmVjb3Jkcy5wdXNoKHtcbiAgICAgICAgTmFtZTogYF9hbWF6b25zZXMuJHtkb21haW5OYW1lfS5gLFxuICAgICAgICBUeXBlOiBcIlRYVFwiLFxuICAgICAgICBSZXNvdXJjZVJlY29yZHM6IFtgXCIke3ZlcmlmaWNhdGlvblRva2VufVwiYF0sXG4gICAgICAgIFRUTDogdHRsLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIGRraW1Ub2tlbnMpIHtcbiAgICAgIHJlY29yZHMucHVzaCh7XG4gICAgICAgIE5hbWU6IGAke3Rva2VufS5fZG9tYWlua2V5LiR7ZG9tYWluTmFtZX0uYCxcbiAgICAgICAgVHlwZTogXCJDTkFNRVwiLFxuICAgICAgICBSZXNvdXJjZVJlY29yZHM6IFtgJHt0b2tlbn0uZGtpbS5hbWF6b25zZXMuY29tLmBdLFxuICAgICAgICBUVEw6IHR0bCxcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiByZWNvcmRzXG4gIH1cblxuICBzd2l0Y2ggKGV2ZW50LlJlcXVlc3RUeXBlKSB7XG4gICAgY2FzZSBcIkRlbGV0ZVwiOlxuICAgICAgY29uc3QgZGVsZXRlSWRlbnRpdHlSZXNwID0gYXdhaXQgc2VzQ2xpZW50LnNlbmQoXG4gICAgICAgIG5ldyBEZWxldGVJZGVudGl0eUNvbW1hbmQoe1xuICAgICAgICAgIElkZW50aXR5OiBkb21haW5OYW1lLFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIGNvbnNvbGUubG9nKGBzZXMuZGVsZXRlSWRlbnRpdHk6ICR7SlNPTi5zdHJpbmdpZnkoZGVsZXRlSWRlbnRpdHlSZXNwKX1gKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICAgIH1cblxuICAgIGNhc2UgXCJDcmVhdGVcIjpcbiAgICBjYXNlIFwiVXBkYXRlXCI6XG4gICAgICAvLyBJZGVtcG90ZW50LlxuICAgICAgY29uc3QgdmVyaWZ5RG9tYWluSWRlbnRpdHlSZXNwID0gYXdhaXQgc2VzQ2xpZW50LnNlbmQoXG4gICAgICAgIG5ldyBWZXJpZnlEb21haW5JZGVudGl0eUNvbW1hbmQoe1xuICAgICAgICAgIERvbWFpbjogZG9tYWluTmFtZSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYHNlcy52ZXJpZnlEb21haW5JZGVudGl0eTogJHtKU09OLnN0cmluZ2lmeSh2ZXJpZnlEb21haW5JZGVudGl0eVJlc3ApfWAsXG4gICAgICApXG4gICAgICBjb25zdCB2ZXJpZmljYXRpb25Ub2tlbiA9IHZlcmlmeURvbWFpbklkZW50aXR5UmVzcC5WZXJpZmljYXRpb25Ub2tlblxuICAgICAgaWYgKCF2ZXJpZmljYXRpb25Ub2tlbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJWZXJpZmljYXRpb24gdG9rZW4gbm90IHJldHVybmVkXCIpXG4gICAgICB9XG5cbiAgICAgIC8vIElkZW1wb3RlbnQuXG4gICAgICBjb25zdCB2ZXJpZnlEb21haW5Ea2ltUmVzcCA9IGF3YWl0IHNlc0NsaWVudC5zZW5kKFxuICAgICAgICBuZXcgVmVyaWZ5RG9tYWluRGtpbUNvbW1hbmQoe1xuICAgICAgICAgIERvbWFpbjogZG9tYWluTmFtZSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYHNlcy52ZXJpZnlEb21haW5Ea2ltOiAke0pTT04uc3RyaW5naWZ5KHZlcmlmeURvbWFpbkRraW1SZXNwKX1gLFxuICAgICAgKVxuICAgICAgY29uc3QgZGtpbVRva2VucyA9IHZlcmlmeURvbWFpbkRraW1SZXNwLkRraW1Ub2tlbnMgPz8gW11cbiAgICAgIGlmICghZGtpbVRva2Vucykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJES0lNIHRva2VucyBub3QgcmV0dXJuZWRcIilcbiAgICAgIH1cblxuICAgICAgLy8gSWRlbXBvdGVudC5cbiAgICAgIGNvbnN0IHB1dEVtYWlsSWRlbnRpdHlDb25maWdSZXNwID0gYXdhaXQgc2VzdjJDbGllbnQuc2VuZChcbiAgICAgICAgbmV3IFB1dEVtYWlsSWRlbnRpdHlDb25maWd1cmF0aW9uU2V0QXR0cmlidXRlc0NvbW1hbmQoe1xuICAgICAgICAgIEVtYWlsSWRlbnRpdHk6IGRvbWFpbk5hbWUsXG4gICAgICAgICAgQ29uZmlndXJhdGlvblNldE5hbWU6IGRlZmF1bHRDb25maWd1cmF0aW9uU2V0TmFtZSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYHNlc3YyLnB1dEVtYWlsSWRlbnRpdHlDb25maWd1cmF0aW9uU2V0QXR0cmlidXRlcyAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHB1dEVtYWlsSWRlbnRpdHlDb25maWdSZXNwLFxuICAgICAgICApfWAsXG4gICAgICApXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogYFNlc0RvbWFpbiR7ZG9tYWluTmFtZX1gLFxuICAgICAgICBEYXRhOiB7XG4gICAgICAgICAgUm91dGU1M1JlY29yZFNldHM6IGNyZWF0ZVJvdXRlNTNSZWNvcmRTZXRzKFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uVG9rZW4sXG4gICAgICAgICAgICBka2ltVG9rZW5zLFxuICAgICAgICAgICksXG4gICAgICAgICAgVmVyaWZpY2F0aW9uVG9rZW46IHZlcmlmaWNhdGlvblRva2VuLFxuICAgICAgICB9LFxuICAgICAgfVxuICB9XG59XG4iXX0=
|