cdk-nextjs 0.7.12 → 0.7.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +237 -81
- package/.jsii.tabl.json +1 -1
- package/API.md +152 -0
- package/README.md +115 -100
- package/docs/breaking-changes.md +4 -2
- package/docs/development-guide.md +10 -0
- package/lib/adapter/adapter.mjs +4 -1
- package/lib/generated-structs/OptionalNextjsDistributionProps.d.ts +21 -0
- package/lib/generated-structs/OptionalNextjsDistributionProps.js +1 -1
- package/lib/nextjs-api.js +1 -1
- package/lib/nextjs-build/nextjs-build.js +1 -1
- package/lib/nextjs-cache.js +1 -1
- package/lib/nextjs-compute/nextjs-containers.js +1 -1
- package/lib/nextjs-compute/nextjs-functions.js +1 -1
- package/lib/nextjs-distribution.d.ts +71 -2
- package/lib/nextjs-distribution.js +156 -107
- package/lib/nextjs-distribution.test.js +361 -12
- package/lib/nextjs-post-deploy.js +1 -1
- package/lib/nextjs-static-assets.js +1 -1
- package/lib/nextjs-static-assets.test.js +19 -7
- package/lib/root-constructs/nextjs-base-construct.js +1 -1
- package/lib/root-constructs/nextjs-global-containers.d.ts +16 -1
- package/lib/root-constructs/nextjs-global-containers.js +4 -2
- package/lib/root-constructs/nextjs-global-functions.d.ts +16 -1
- package/lib/root-constructs/nextjs-global-functions.js +4 -2
- package/lib/root-constructs/nextjs-regional-containers.js +1 -1
- package/lib/root-constructs/nextjs-regional-functions.js +1 -1
- package/lib/runtime/lambda.mjs +4 -1
- package/lib/runtime/server.mjs +4 -1
- package/lib/utils/viewer-request-functions.d.ts +53 -0
- package/lib/utils/viewer-request-functions.js +172 -0
- package/lib/utils/viewer-request-functions.test.d.ts +1 -0
- package/lib/utils/viewer-request-functions.test.js +43 -0
- package/package.json +4 -1
- package/scripts/e2e-harness/app.js +7 -2
- package/scripts/render-diagrams.mjs +121 -0
|
@@ -18,7 +18,7 @@ const base_path_1 = require("./utils/base-path");
|
|
|
18
18
|
* current build id AND are older than `msTtl`
|
|
19
19
|
*/
|
|
20
20
|
class NextjsPostDeploy extends constructs_1.Construct {
|
|
21
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsPostDeploy", version: "0.7.
|
|
21
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsPostDeploy", version: "0.7.13" };
|
|
22
22
|
customResource;
|
|
23
23
|
lambdaFunction;
|
|
24
24
|
props;
|
|
@@ -112,7 +112,7 @@ function isWithin(path, dir) {
|
|
|
112
112
|
* Creates S3 Bucket for public and _next/static assets and deploys them using S3Deployment.
|
|
113
113
|
*/
|
|
114
114
|
class NextjsStaticAssets extends constructs_1.Construct {
|
|
115
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsStaticAssets", version: "0.7.
|
|
115
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsStaticAssets", version: "0.7.13" };
|
|
116
116
|
bucket;
|
|
117
117
|
/**
|
|
118
118
|
* The first of `staticDeployment`, `serviceWorkerDeployment` and
|
|
@@ -273,12 +273,23 @@ describe("NextjsStaticAssets", () => {
|
|
|
273
273
|
writePublicFile();
|
|
274
274
|
expect(() => createStaticAssets({})).not.toThrow(/ELOOP/);
|
|
275
275
|
});
|
|
276
|
+
// Checks the directories this construct staged, not a before/after listing
|
|
277
|
+
// of `os.tmpdir()`: jest runs other files in parallel workers, and any of
|
|
278
|
+
// them that builds a `NextjsStaticAssets` (`test/root-constructs.test.ts`,
|
|
279
|
+
// for one) stages `nextjs-assets-*` directories into the same temp
|
|
280
|
+
// directory while this runs, which the listing counted as leaked.
|
|
276
281
|
it("removes the staging directories when a deployment fails", () => {
|
|
277
282
|
writePublicFile();
|
|
278
|
-
const
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
283
|
+
const proto = nextjs_static_assets_1.NextjsStaticAssets.prototype;
|
|
284
|
+
const stageDirectory = proto.stageDirectory;
|
|
285
|
+
const staged = [];
|
|
286
|
+
jest.spyOn(proto, "stageDirectory").mockImplementation(function (...args) {
|
|
287
|
+
const dir = stageDirectory.apply(this, args);
|
|
288
|
+
if (dir)
|
|
289
|
+
staged.push(dir);
|
|
290
|
+
return dir;
|
|
291
|
+
});
|
|
292
|
+
jest.spyOn(proto, "createDeployment").mockImplementation(() => {
|
|
282
293
|
throw new Error("deployment failed");
|
|
283
294
|
});
|
|
284
295
|
try {
|
|
@@ -287,8 +298,9 @@ describe("NextjsStaticAssets", () => {
|
|
|
287
298
|
finally {
|
|
288
299
|
jest.restoreAllMocks();
|
|
289
300
|
}
|
|
290
|
-
|
|
291
|
-
expect(
|
|
301
|
+
// `.next/static` and `public`, both staged before the first deployment.
|
|
302
|
+
expect(staged).toHaveLength(2);
|
|
303
|
+
expect(staged.filter((dir) => (0, node_fs_1.existsSync)(dir))).toEqual([]);
|
|
292
304
|
});
|
|
293
305
|
it("removes its staging directories once CDK has copied them", () => {
|
|
294
306
|
writePublicFile();
|
|
@@ -359,4 +371,4 @@ describe("NextjsStaticAssets", () => {
|
|
|
359
371
|
});
|
|
360
372
|
});
|
|
361
373
|
});
|
|
362
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLXN0YXRpYy1hc3NldHMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9uZXh0anMtc3RhdGljLWFzc2V0cy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0RBQXNEO0FBQ3RELHFDQVNpQjtBQUNqQixxQ0FBaUM7QUFDakMseUNBQWlDO0FBQ2pDLDZDQUF1RDtBQUN2RCx1REFBa0Q7QUFDbEQsK0NBQTRDO0FBQzVDLHFFQUErRTtBQUMvRSwrQ0FBbUU7QUFDbkUsaUVBQTREO0FBRTVELFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUU7SUFDbEMsSUFBSSxLQUFZLENBQUM7SUFDakIsSUFBSSxjQUFzQixDQUFDO0lBRTNCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLElBQUksaUJBQUcsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzFDLGNBQWMsR0FBRyxJQUFBLHFCQUFXLEVBQUMsSUFBQSxnQkFBSSxFQUFDLElBQUEsZ0JBQU0sR0FBRSxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQztRQUN0RSxNQUFNLFNBQVMsR0FBRyxJQUFBLGdCQUFJLEVBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxRCxJQUFBLG1CQUFTLEVBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUMsSUFBQSx1QkFBYSxFQUFDLElBQUEsZ0JBQUksRUFBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsSUFBQSxnQkFBTSxFQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFD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Q0FBQyw2QkFBNkIsQ0FBQyxDQUN2RSxDQUFDO1lBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0QsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUN2RSwwQkFBMEIsQ0FDM0IsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsMEVBQTBFO1FBQzFFLEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxHQUFHLEVBQUU7WUFDOUQsTUFBTSxDQUNKLGFBQWEsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQ3hELENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLHFFQUFxRTtZQUNyRSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDNUIscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDLDZCQUE2QixDQUFDLENBQ3ZFLENBQUM7WUFDRixNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQge1xuICBleGlzdHNTeW5jLFxuICBta2RpclN5bmMsXG4gIG1rZHRlbXBTeW5jLFxuICByZWFkZGlyU3luYyxcbiAgcmVuYW1lU3luYyxcbiAgcm1TeW5jLFxuICBzeW1saW5rU3luYyxcbiAgd3JpdGVGaWxlU3luYyxcbn0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IHRtcGRpciB9IGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgQXBwLCBBc3NldFN0YWdpbmcsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hc3NlcnRpb25zXCI7XG5pbXBvcnQgeyBCdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBCdWNrZXREZXBsb3ltZW50LCBDYWNoZUNvbnRyb2wgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzLWRlcGxveW1lbnRcIjtcbmltcG9ydCB7IERJU0FCTEVfQVNTRVRfU1RBR0lOR19DT05URVhUIH0gZnJvbSBcImF3cy1jZGstbGliL2N4LWFwaVwiO1xuaW1wb3J0IHsgTmV4dGpzU3RhdGljQXNzZXRzIH0gZnJvbSBcIi4vbmV4dGpzLXN0YXRpYy1hc3NldHNcIjtcblxuZGVzY3JpYmUoXCJOZXh0anNTdGF0aWNBc3NldHNcIiwgKCkgPT4ge1xuICBsZXQgc3RhY2s6IFN0YWNrO1xuICBsZXQgYnVpbGREaXJlY3Rvcnk6IHN0cmluZztcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBzdGFjayA9IG5ldyBTdGFjayhuZXcgQXBwKCksIFwiVGVzdFN0YWNrXCIpO1xuICAgIGJ1aWxkRGlyZWN0b3J5ID0gbWtkdGVtcFN5bmMoam9pbih0bXBkaXIoKSwgXCJuZXh0anMtc3RhdGljLWFzc2V0cy1cIikpO1xuICAgIGNvbnN0IHN0YXRpY0RpciA9IGpvaW4oYnVpbGREaXJlY3RvcnksIFwiLm5leHRcIiwgXCJzdGF0aWNcIik7XG4gICAgbWtkaXJTeW5jKHN0YXRpY0RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgd3JpdGVGaWxlU3luYyhqb2luKHN0YXRpY0RpciwgXCJjaHVuay5qc1wiKSwgXCIvLyBjaHVua1wiKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBybVN5bmMoYnVpbGREaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gY3JlYXRlU3RhdGljQXNzZXRzKHByb3BzOiB7XG4gICAgYmFzZVBhdGg/OiBzdHJpbmc7XG4gICAgZGVzdGluYXRpb25LZXlQcmVmaXg/OiBzdHJpbmc7XG4gIH0pIHtcbiAgICByZXR1cm4gbmV3IE5leHRqc1N0YXRpY0Fzc2V0cyhzdGFjaywgXCJOZXh0anNTdGF0aWNBc3NldHNcIiwge1xuICAgICAgYnVpbGREaXJlY3RvcnksXG4gICAgICBidWlsZElkOiBcInRlc3QtYnVpbGQtaWRcIixcbiAgICAgIGJhc2VQYXRoOiBwcm9wcy5iYXNlUGF0aCxcbiAgICAgIG92ZXJyaWRlczpcbiAgICAgICAgcHJvcHMuZGVzdGluYXRpb25LZXlQcmVmaXggPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIGJ1Y2tldERlcGxveW1lbnRQcm9wczoge1xuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uS2V5UHJlZml4OiBwcm9wcy5kZXN0aW5hdGlvbktleVByZWZpeCxcbiAgICAgICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZGVzY3JpYmUoXCJrZXlQcmVmaXhcIiwgKCkgPT4ge1xuICAgIGl0KFwiaXMgZW1wdHkgd2hlbiBubyBiYXNlUGF0aCBpcyBzZXRcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KGNyZWF0ZVN0YXRpY0Fzc2V0cyh7fSkua2V5UHJlZml4KS50b0JlKFwiXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzdHJpcHMgc3Vycm91bmRpbmcgc2xhc2hlcyBmcm9tIGJhc2VQYXRoXCIsICgpID0+IHtcbiAgICAgIGV4cGVjdChjcmVhdGVTdGF0aWNBc3NldHMoeyBiYXNlUGF0aDogXCIvYmFzZS9cIiB9KS5rZXlQcmVmaXgpLnRvQmUoXCJiYXNlXCIpO1xuICAgIH0pO1xuXG4gICAgLy8gVGhlIG92ZXJyaWRlIGlzIHNwcmVhZCBsYXN0IGludG8gQnVja2V0RGVwbG95bWVudCwgc28gaXQgZGVjaWRlcyB3aGVyZVxuICAgIC8vIHRoZSBvYmplY3RzIGFjdHVhbGx5IGxhbmQuIENvbnN1bWVycyByZWFkaW5nIGFzc2V0cyBiYWNrIG91dCBvZiB0aGVcbiAgICAvLyBidWNrZXQgaGF2ZSB0byBzZWUgdGhhdCwgbm90IHRoZSBiYXNlUGF0aCBwcm9wLlxuICAgIGl0KFwicmVmbGVjdHMgYSBkZXN0aW5hdGlvbktleVByZWZpeCBvdmVycmlkZSByYXRoZXIgdGhhbiBiYXNlUGF0aFwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoXG4gICAgICAgIGNyZWF0ZVN0YXRpY0Fzc2V0cyh7XG4gICAgICAgICAgYmFzZVBhdGg6IFwiL2Jhc2VcIixcbiAgICAgICAgICBkZXN0aW5hdGlvbktleVByZWZpeDogXCJicmFuY2gteFwiLFxuICAgICAgICB9KS5rZXlQcmVmaXgsXG4gICAgICApLnRvQmUoXCJicmFuY2gteFwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwiaXMgZW1wdHkgd2hlbiBhbiBvdmVycmlkZSBjbGVhcnMgdGhlIHByZWZpeFwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoXG4gICAgICAgIGNyZWF0ZVN0YXRpY0Fzc2V0cyh7IGJhc2VQYXRoOiBcIi9iYXNlXCIsIGRlc3RpbmF0aW9uS2V5UHJlZml4OiBcIlwiIH0pXG4gICAgICAgICAgLmtleVByZWZpeCxcbiAgICAgICkudG9CZShcIlwiKTtcbiAgICB9KTtcblxuICAgIC8vIEEgSlNJSSBsYW5ndWFnZSBiaW5kaW5nLCBvciBhIHByb2dyYW1tYXRpY2FsbHkgYnVpbHQgcHJvcHMgb2JqZWN0LCBjYW5cbiAgICAvLyBtYXRlcmlhbGl6ZSBhbiB1bnNldCBvcHRpb25hbCBmaWVsZCBhcyBhbiBleHBsaWNpdCBgdW5kZWZpbmVkYC4gVHJlYXRpbmdcbiAgICAvLyB0aGF0IGFzIGFuIGludGVudGlvbmFsIFwibW92ZSB0aGUgYXNzZXRzIHRvIHRoZSBidWNrZXQgcm9vdFwiIG92ZXJyaWRlIHdvdWxkXG4gICAgLy8gdXBsb2FkIHRoZW0gdGhlcmUgd2hpbGUgQ2xvdWRGcm9udCBzdGlsbCByZXF1ZXN0ZWQgdGhlbSB1bmRlciBiYXNlUGF0aCxcbiAgICAvLyBmYWlsaW5nIHN5bnRoIHdpdGggYSBrZXkgcHJlZml4IG1pc21hdGNoIHRoYXQgbmFtZXMgbmVpdGhlciB0aGUgb3ZlcnJpZGVcbiAgICAvLyBub3IgdGhlIGNhdXNlLlxuICAgIGl0KFwiZmFsbHMgYmFjayB0byBiYXNlUGF0aCB3aGVuIHRoZSBvdmVycmlkZSBrZXkgaXMgcHJlc2VudCBidXQgdW5kZWZpbmVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRpY0Fzc2V0cyA9IG5ldyBOZXh0anNTdGF0aWNBc3NldHMoc3RhY2ssIFwiTmV4dGpzU3RhdGljQXNzZXRzXCIsIHtcbiAgICAgICAgYnVpbGREaXJlY3RvcnksXG4gICAgICAgIGJ1aWxkSWQ6IFwidGVzdC1idWlsZC1pZFwiLFxuICAgICAgICBiYXNlUGF0aDogXCIvYmFzZVwiLFxuICAgICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgICBidWNrZXREZXBsb3ltZW50UHJvcHM6IHtcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uS2V5UHJlZml4OiB1bmRlZmluZWQsXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHN0YXRpY0Fzc2V0cy5rZXlQcmVmaXgpLnRvQmUoXCJiYXNlXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNhY2hlLUNvbnRyb2xcIiwgKCkgPT4ge1xuICAgIGNvbnN0IElNTVVUQUJMRSA9IFwicHVibGljLCBtYXgtYWdlPTMxNTM2MDAwLCBpbW11dGFibGVcIjtcblxuICAgIC8qKiBUaGUgZGVwbG95bWVudCByZXNvdXJjZXMnIHByb3BlcnRpZXMsIGJ5IGNvbnN0cnVjdCBJRC4gKi9cbiAgICBmdW5jdGlvbiBkZXBsb3ltZW50cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlcyA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjaykuZmluZFJlc291cmNlcyhcbiAgICAgICAgXCJDdXN0b206OkNES0J1Y2tldERlcGxveW1lbnRcIixcbiAgICAgICk7XG4gICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhyZXNvdXJjZXMpLm1hcCgoW2xvZ2ljYWxJZCwgcmVzb3VyY2VdKSA9PiBbXG4gICAgICAgICAgbG9naWNhbElkLm1hdGNoKC9OZXh0anNTdGF0aWNBc3NldHMoXFx3Kz8pQ3VzdG9tUmVzb3VyY2UvKSFbMV0sXG4gICAgICAgICAgcmVzb3VyY2UuUHJvcGVydGllcyxcbiAgICAgICAgXSksXG4gICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdyaXRlUHVibGljRmlsZSgpIHtcbiAgICAgIGNvbnN0IHB1YmxpY0RpciA9IGpvaW4oYnVpbGREaXJlY3RvcnksIFwicHVibGljXCIpO1xuICAgICAgbWtkaXJTeW5jKHB1YmxpY0RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICB3cml0ZUZpbGVTeW5jKGpvaW4ocHVibGljRGlyLCBcImxvZ28ucG5nXCIpLCBcInBuZ1wiKTtcbiAgICB9XG5cbiAgICAvLyBDbG91ZEZyb250IGFuZCBBUEkgR2F0ZXdheSBzZXJ2ZSB0aGVzZSBzdHJhaWdodCBmcm9tIFMzLCBzbyB0aGVcbiAgICAvLyBvYmplY3QncyBtZXRhZGF0YSBpcyB0aGUgb25seSBDYWNoZS1Db250cm9sIGEgYnJvd3NlciBnZXRzLlxuICAgIGl0KFwidXBsb2FkcyBfbmV4dC9zdGF0aWMgaW1tdXRhYmxlIGFuZCBwdWJsaWMvIHdpdGhvdXQgYSBoZWFkZXJcIiwgKCkgPT4ge1xuICAgICAgd3JpdGVQdWJsaWNGaWxlKCk7XG4gICAgICBjb25zdCBzdGF0aWNBc3NldHMgPSBjcmVhdGVTdGF0aWNBc3NldHMoe30pO1xuXG4gICAgICBleHBlY3Qoc3RhdGljQXNzZXRzLnN0YXRpY0RlcGxveW1lbnQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qoc3RhdGljQXNzZXRzLnB1YmxpY0RlcGxveW1lbnQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBjb25zdCB7IERlcGxveW1lbnQ6IHN0YXRpY1VwbG9hZCwgUHVibGljRGVwbG95bWVudDogcHVibGljVXBsb2FkIH0gPVxuICAgICAgICBkZXBsb3ltZW50cygpO1xuICAgICAgZXhwZWN0KHN0YXRpY1VwbG9hZC5TeXN0ZW1NZXRhZGF0YSkudG9FcXVhbCh7XG4gICAgICAgIFwiY2FjaGUtY29udHJvbFwiOiBJTU1VVEFCTEUsXG4gICAgICB9KTtcbiAgICAgIGV4cGVjdChwdWJsaWNVcGxvYWQuU3lzdGVtTWV0YWRhdGEpLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGZvciAoY29uc3QgdXBsb2FkIG9mIFtzdGF0aWNVcGxvYWQsIHB1YmxpY1VwbG9hZF0pIHtcbiAgICAgICAgZXhwZWN0KHVwbG9hZC5Vc2VyTWV0YWRhdGEpLnRvRXF1YWwoeyBidWlsZF9pZDogXCJ0ZXN0LWJ1aWxkLWlkXCIgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdChcImFwcGxpZXMgYW4gb3ZlcnJpZGRlbiBjYWNoZUNvbnRyb2wgdG8gcHVibGljLyBmaWxlcyBvbmx5XCIsICgpID0+IHtcbiAgICAgIHdyaXRlUHVibGljRmlsZSgpO1xuICAgICAgbmV3IE5leHRqc1N0YXRpY0Fzc2V0cyhzdGFjaywgXCJOZXh0anNTdGF0aWNBc3NldHNcIiwge1xuICAgICAgICBidWlsZERpcmVjdG9yeSxcbiAgICAgICAgYnVpbGRJZDogXCJ0ZXN0LWJ1aWxkLWlkXCIsXG4gICAgICAgIG92ZXJyaWRlczoge1xuICAgICAgICAgIGJ1Y2tldERlcGxveW1lbnRQcm9wczoge1xuICAgICAgICAgICAgY2FjaGVDb250cm9sOiBbQ2FjaGVDb250cm9sLmZyb21TdHJpbmcoXCJwdWJsaWMsIG1heC1hZ2U9MzYwMFwiKV0sXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgeyBEZXBsb3ltZW50OiBzdGF0aWNVcGxvYWQsIFB1YmxpY0RlcGxveW1lbnQ6IHB1YmxpY1VwbG9hZCB9ID1cbiAgICAgICAgZGVwbG95bWVudHMoKTtcbiAgICAgIGV4cGVjdChzdGF0aWNVcGxvYWQuU3lzdGVtTWV0YWRhdGEpLnRvRXF1YWwoe1xuICAgICAgICBcImNhY2hlLWNvbnRyb2xcIjogSU1NVVRBQkxFLFxuICAgICAgfSk7XG4gICAgICBleHBlY3QocHVibGljVXBsb2FkLlN5c3RlbU1ldGFkYXRhKS50b0VxdWFsKHtcbiAgICAgICAgXCJjYWNoZS1jb250cm9sXCI6IFwicHVibGljLCBtYXgtYWdlPTM2MDBcIixcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJjcmVhdGVzIG9ubHkgdGhlIF9uZXh0L3N0YXRpYyB1cGxvYWQgd2l0aG91dCBhIHB1YmxpYy8gZGlyZWN0b3J5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRpY0Fzc2V0cyA9IGNyZWF0ZVN0YXRpY0Fzc2V0cyh7IGJhc2VQYXRoOiBcIi9iYXNlXCIgfSk7XG5cbiAgICAgIGV4cGVjdChzdGF0aWNBc3NldHMucHVibGljRGVwbG95bWVudCkudG9CZVVuZGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHN0YXRpY0Fzc2V0cy5kZXBsb3ltZW50KS50b0JlKHN0YXRpY0Fzc2V0cy5zdGF0aWNEZXBsb3ltZW50KTtcbiAgICAgIGNvbnN0IHVwbG9hZHMgPSBkZXBsb3ltZW50cygpO1xuICAgICAgZXhwZWN0KE9iamVjdC5rZXlzKHVwbG9hZHMpKS50b0VxdWFsKFtcIkRlcGxveW1lbnRcIl0pO1xuICAgICAgZXhwZWN0KHVwbG9hZHMuRGVwbG95bWVudC5EZXN0aW5hdGlvbkJ1Y2tldEtleVByZWZpeCkudG9CZShcImJhc2VcIik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBLZWVwcyB0aGUgc3RhZ2luZyBkaXJlY3Rvcmllcywgd2hpY2ggYXJlIG90aGVyd2lzZSByZW1vdmVkIG9uY2UgQ0RLIGhhc1xuICAgICAqIGNvcGllZCB0aGVtIGludG8gYGNkay5vdXRgLCBzbyBgc3RhZ2VkRGlyYCBjYW4gbG9vayBpbnNpZGUgdGhlbS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBrZWVwU3RhZ2luZygpIHtcbiAgICAgIHN0YWNrID0gbmV3IFN0YWNrKFxuICAgICAgICBuZXcgQXBwKHsgY29udGV4dDogeyBbRElTQUJMRV9BU1NFVF9TVEFHSU5HX0NPTlRFWFRdOiB0cnVlIH0gfSksXG4gICAgICAgIFwiVGVzdFN0YWNrXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8qKiBUaGUgZGlyZWN0b3J5IGEgZGVwbG95bWVudCB1cGxvYWRzLCBmb3IgY2hlY2tpbmcgd2hhdCB3YXMgc3RhZ2VkLiAqL1xuICAgIGZ1bmN0aW9uIHN0YWdlZERpcihkZXBsb3ltZW50OiBCdWNrZXREZXBsb3ltZW50KTogc3RyaW5nIHtcbiAgICAgIC8vIFRoZSBkZXBsb3ltZW50J3Mgb3duIHNvdXJjZSBhc3NldCwgbm90IHRoZSBBV1MgQ0xJIGxheWVyJ3MuXG4gICAgICByZXR1cm4gZGVwbG95bWVudC5ub2RlXG4gICAgICAgIC5maW5kQWxsKClcbiAgICAgICAgLmZpbHRlcigoYyk6IGMgaXMgQXNzZXRTdGFnaW5nID0+IGMgaW5zdGFuY2VvZiBBc3NldFN0YWdpbmcpXG4gICAgICAgIC5tYXAoKGMpID0+IGMuc291cmNlUGF0aClcbiAgICAgICAgLmZpbmQoKHBhdGgpID0+IHBhdGguaW5jbHVkZXMoXCJuZXh0anMtYXNzZXRzLVwiKSkhO1xuICAgIH1cblxuICAgIC8vIGBuZXh0IHN0YXJ0YCBzZXJ2ZXMgdGhlIGJ1aWx0IGZpbGUgb3ZlciBhIHB1YmxpYy8gb25lIGF0IHRoZSBzYW1lIHBhdGgsXG4gICAgLy8gYW5kIHRoZSBwdWJsaWMvIG9uZSBldmVyeXdoZXJlIGVsc2UuXG4gICAgaXQoXCJsZWF2ZXMgb3V0IG9ubHkgdGhlIHB1YmxpYy9fbmV4dC9zdGF0aWMgZmlsZXMgYSBidWlsdCBmaWxlIHNoYWRvd3NcIiwgKCkgPT4ge1xuICAgICAga2VlcFN0YWdpbmcoKTtcbiAgICAgIHdyaXRlUHVibGljRmlsZSgpO1xuICAgICAgY29uc3Qgc2hhZG93RGlyID0gam9pbihidWlsZERpcmVjdG9yeSwgXCJwdWJsaWNcIiwgXCJfbmV4dFwiLCBcInN0YXRpY1wiKTtcbiAgICAgIG1rZGlyU3luYyhzaGFkb3dEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgd3JpdGVGaWxlU3luYyhqb2luKHNoYWRvd0RpciwgXCJjaHVuay5qc1wiKSwgXCIvLyBzaGFkb3dlZFwiKTtcbiAgICAgIHdyaXRlRmlsZVN5bmMoam9pbihzaGFkb3dEaXIsIFwibGVnYWN5LmpzXCIpLCBcIi8vIHB1YmxpYyBvbmx5XCIpO1xuICAgICAgY29uc3Qgc3RhdGljQXNzZXRzID0gY3JlYXRlU3RhdGljQXNzZXRzKHt9KTtcblxuICAgICAgY29uc3Qgc3RhZ2VkID0gc3RhZ2VkRGlyKHN0YXRpY0Fzc2V0cy5wdWJsaWNEZXBsb3ltZW50ISk7XG4gICAgICBleHBlY3QoZXhpc3RzU3luYyhqb2luKHN0YWdlZCwgXCJsb2dvLnBuZ1wiKSkpLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3QoZXhpc3RzU3luYyhqb2luKHN0YWdlZCwgXCJfbmV4dFwiLCBcInN0YXRpY1wiLCBcImNodW5rLmpzXCIpKSkudG9CZShcbiAgICAgICAgZmFsc2UsXG4gICAgICApO1xuICAgICAgZXhwZWN0KGV4aXN0c1N5bmMoam9pbihzdGFnZWQsIFwiX25leHRcIiwgXCJzdGF0aWNcIiwgXCJsZWdhY3kuanNcIikpKS50b0JlKFxuICAgICAgICB0cnVlLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIC8vIE5leHQuanMgYW5kIFMzIGtleXMgYXJlIGNhc2Utc2Vuc2l0aXZlLCBldmVuIHdoZXJlIHRoZSBmaWxlc3lzdGVtIGlzbid0LlxuICAgIGl0KFwiZG9lc24ndCB0cmVhdCBhIHB1YmxpYy9fbmV4dC9zdGF0aWMgZmlsZSBhcyBzaGFkb3dlZCBieSBhbm90aGVyIGNhc2VcIiwgKCkgPT4ge1xuICAgICAga2VlcFN0YWdpbmcoKTtcbiAgICAgIGNvbnN0IHNoYWRvd0RpciA9IGpvaW4oYnVpbGREaXJlY3RvcnksIFwicHVibGljXCIsIFwiX25leHRcIiwgXCJzdGF0aWNcIik7XG4gICAgICBta2RpclN5bmMoc2hhZG93RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIHdyaXRlRmlsZVN5bmMoam9pbihzaGFkb3dEaXIsIFwiQ2h1bmsuanNcIiksIFwiLy8gcHVibGljIG9ubHlcIik7XG4gICAgICBjb25zdCBzdGF0aWNBc3NldHMgPSBjcmVhdGVTdGF0aWNBc3NldHMoe30pO1xuXG4gICAgICBjb25zdCBzdGFnZWQgPSBzdGFnZWREaXIoc3RhdGljQXNzZXRzLnB1YmxpY0RlcGxveW1lbnQhKTtcbiAgICAgIGV4cGVjdChyZWFkZGlyU3luYyhqb2luKHN0YWdlZCwgXCJfbmV4dFwiLCBcInN0YXRpY1wiKSkpLnRvRXF1YWwoW1xuICAgICAgICBcIkNodW5rLmpzXCIsXG4gICAgICBdKTtcbiAgICB9KTtcblxuICAgIGl0KFwidXBsb2FkcyBhIC5uZXh0L3N0YXRpYy9zZXJ2aWNlLXdvcmtlciBmaWxlIHdpdGggdGhlIG90aGVyIGFzc2V0c1wiLCAoKSA9PiB7XG4gICAgICBrZWVwU3RhZ2luZygpO1xuICAgICAgd3JpdGVGaWxlU3luYyhcbiAgICAgICAgam9pbihidWlsZERpcmVjdG9yeSwgXCIubmV4dFwiLCBcInN0YXRpY1wiLCBcInNlcnZpY2Utd29ya2VyXCIpLFxuICAgICAgICBcIi8vIG5vdCBhIGRpcmVjdG9yeVwiLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHN0YXRpY0Fzc2V0cyA9IGNyZWF0ZVN0YXRpY0Fzc2V0cyh7fSk7XG5cbiAgICAgIGV4cGVjdChzdGF0aWNBc3NldHMuc2VydmljZVdvcmtlckRlcGxveW1lbnQpLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGNvbnN0IHN0YWdlZCA9IHN0YWdlZERpcihzdGF0aWNBc3NldHMuc3RhdGljRGVwbG95bWVudCEpO1xuICAgICAgZXhwZWN0KFxuICAgICAgICBleGlzdHNTeW5jKGpvaW4oc3RhZ2VkLCBcIl9uZXh0XCIsIFwic3RhdGljXCIsIFwic2VydmljZS13b3JrZXJcIikpLFxuICAgICAgKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJ1cGxvYWRzIGEgcHVibGljLyBtYWRlIG9ubHkgb2Ygc3ltbGlua3NcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gam9pbihidWlsZERpcmVjdG9yeSwgXCJsb2dvLnBuZ1wiKTtcbiAgICAgIHdyaXRlRmlsZVN5bmModGFyZ2V0LCBcInBuZ1wiKTtcbiAgICAgIG1rZGlyU3luYyhqb2luKGJ1aWxkRGlyZWN0b3J5LCBcInB1YmxpY1wiKSk7XG4gICAgICBzeW1saW5rU3luYyh0YXJnZXQsIGpvaW4oYnVpbGREaXJlY3RvcnksIFwicHVibGljXCIsIFwibG9nby5wbmdcIikpO1xuICAgICAgY29uc3Qgc3RhdGljQXNzZXRzID0gY3JlYXRlU3RhdGljQXNzZXRzKHt9KTtcblxuICAgICAgZXhwZWN0KHN0YXRpY0Fzc2V0cy5wdWJsaWNEZXBsb3ltZW50KS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgLy8gQSBzZXJ2aWNlIHdvcmtlciBrZWVwcyBpdHMgVVJMIGFjcm9zcyBidWlsZHMsIHNvIE5leHQuanMgc2VydmVzIGl0XG4gICAgLy8gcmV2YWxpZGF0ZWQgcmF0aGVyIHRoYW4gaW1tdXRhYmxlLlxuICAgIGl0KFwidXBsb2FkcyBzZXJ2aWNlIHdvcmtlcnMgd2l0aCBtYXgtYWdlPTAsIG11c3QtcmV2YWxpZGF0ZVwiLCAoKSA9PiB7XG4gICAgICBrZWVwU3RhZ2luZygpO1xuICAgICAgY29uc3Qgc3dEaXIgPSBqb2luKGJ1aWxkRGlyZWN0b3J5LCBcIi5uZXh0XCIsIFwic3RhdGljXCIsIFwic2VydmljZS13b3JrZXJcIik7XG4gICAgICBta2RpclN5bmMoc3dEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgd3JpdGVGaWxlU3luYyhqb2luKHN3RGlyLCBcInN3LmpzXCIpLCBcIi8vIHN3XCIpO1xuICAgICAgY29uc3Qgc3RhdGljQXNzZXRzID0gY3JlYXRlU3RhdGljQXNzZXRzKHt9KTtcblxuICAgICAgY29uc3QgeyBEZXBsb3ltZW50OiBzdGF0aWNVcGxvYWQsIFNlcnZpY2VXb3JrZXJEZXBsb3ltZW50OiBzd1VwbG9hZCB9ID1cbiAgICAgICAgZGVwbG95bWVudHMoKTtcbiAgICAgIGV4cGVjdChzd1VwbG9hZC5TeXN0ZW1NZXRhZGF0YSkudG9FcXVhbCh7XG4gICAgICAgIFwiY2FjaGUtY29udHJvbFwiOiBcInB1YmxpYywgbWF4LWFnZT0wLCBtdXN0LXJldmFsaWRhdGVcIixcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KHN0YXRpY1VwbG9hZC5TeXN0ZW1NZXRhZGF0YSkudG9FcXVhbCh7XG4gICAgICAgIFwiY2FjaGUtY29udHJvbFwiOiBJTU1VVEFCTEUsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHN3U3RhZ2VkID0gc3RhZ2VkRGlyKHN0YXRpY0Fzc2V0cy5zZXJ2aWNlV29ya2VyRGVwbG95bWVudCEpO1xuICAgICAgZXhwZWN0KFxuICAgICAgICBleGlzdHNTeW5jKFxuICAgICAgICAgIGpvaW4oc3dTdGFnZWQsIFwiX25leHRcIiwgXCJzdGF0aWNcIiwgXCJzZXJ2aWNlLXdvcmtlclwiLCBcInN3LmpzXCIpLFxuICAgICAgICApLFxuICAgICAgKS50b0JlKHRydWUpO1xuICAgICAgY29uc3Qgc3RhdGljU3RhZ2VkID0gc3RhZ2VkRGlyKHN0YXRpY0Fzc2V0cy5zdGF0aWNEZXBsb3ltZW50ISk7XG4gICAgICBleHBlY3QoXG4gICAgICAgIGV4aXN0c1N5bmMoam9pbihzdGF0aWNTdGFnZWQsIFwiX25leHRcIiwgXCJzdGF0aWNcIiwgXCJjaHVuay5qc1wiKSksXG4gICAgICApLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3QoXG4gICAgICAgIGV4aXN0c1N5bmMoam9pbihzdGF0aWNTdGFnZWQsIFwiX25leHRcIiwgXCJzdGF0aWNcIiwgXCJzZXJ2aWNlLXdvcmtlclwiKSksXG4gICAgICApLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzdGFnZXMgYSBzeW1saW5rZWQgLm5leHQvc3RhdGljXCIsICgpID0+IHtcbiAgICAgIGtlZXBTdGFnaW5nKCk7XG4gICAgICBjb25zdCByZWFsU3RhdGljID0gam9pbihidWlsZERpcmVjdG9yeSwgXCJyZWFsLXN0YXRpY1wiKTtcbiAgICAgIHJlbmFtZVN5bmMoam9pbihidWlsZERpcmVjdG9yeSwgXCIubmV4dFwiLCBcInN0YXRpY1wiKSwgcmVhbFN0YXRpYyk7XG4gICAgICBzeW1saW5rU3luYyhyZWFsU3RhdGljLCBqb2luKGJ1aWxkRGlyZWN0b3J5LCBcIi5uZXh0XCIsIFwic3RhdGljXCIpKTtcbiAgICAgIGNvbnN0IHN0YXRpY0Fzc2V0cyA9IGNyZWF0ZVN0YXRpY0Fzc2V0cyh7fSk7XG5cbiAgICAgIGNvbnN0IHN0YWdlZCA9IHN0YWdlZERpcihzdGF0aWNBc3NldHMuc3RhdGljRGVwbG95bWVudCEpO1xuICAgICAgZXhwZWN0KGV4aXN0c1N5bmMoam9pbihzdGFnZWQsIFwiX25leHRcIiwgXCJzdGF0aWNcIiwgXCJjaHVuay5qc1wiKSkpLnRvQmUoXG4gICAgICAgIHRydWUsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgLy8gQ0RLIHVwbG9hZHMgdGhlIGZpbGVzIGEgbGlua2VkIGRpcmVjdG9yeSBob2xkcywgc28gdGhleSBzaGFkb3cgdG9vLlxuICAgIGl0KFwidHJlYXRzIGZpbGVzIHVuZGVyIGEgc3ltbGlua2VkIC5uZXh0L3N0YXRpYyBkaXJlY3RvcnkgYXMgc2hhZG93aW5nXCIsICgpID0+IHtcbiAgICAgIGtlZXBTdGFnaW5nKCk7XG4gICAgICBjb25zdCByZWFsQ2h1bmtzID0gam9pbihidWlsZERpcmVjdG9yeSwgXCJyZWFsLWNodW5rc1wiKTtcbiAgICAgIG1rZGlyU3luYyhyZWFsQ2h1bmtzKTtcbiAgICAgIHdyaXRlRmlsZVN5bmMoam9pbihyZWFsQ2h1bmtzLCBcImEuanNcIiksIFwiLy8gYnVpbHRcIik7XG4gICAgICBzeW1saW5rU3luYyhcbiAgICAgICAgcmVhbENodW5rcyxcbiAgICAgICAgam9pbihidWlsZERpcmVjdG9yeSwgXCIubmV4dFwiLCBcInN0YXRpY1wiLCBcImNodW5rc1wiKSxcbiAgICAgICk7XG4gICAgICBjb25zdCBzaGFkb3dEaXIgPSBqb2luKGJ1aWxkRGlyZWN0b3J5LCBcInB1YmxpY1wiLCBcIl9uZXh0XCIsIFwic3RhdGljXCIpO1xuICAgICAgbWtkaXJTeW5jKGpvaW4oc2hhZG93RGlyLCBcImNodW5rc1wiKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICB3cml0ZUZpbGVTeW5jKGpvaW4oc2hhZG93RGlyLCBcImNodW5rc1wiLCBcImEuanNcIiksIFwiLy8gc2hhZG93ZWRcIik7XG4gICAgICB3cml0ZUZpbGVTeW5jKGpvaW4oYnVpbGREaXJlY3RvcnksIFwicHVibGljXCIsIFwibG9nby5wbmdcIiksIFwicG5nXCIpO1xuICAgICAgY29uc3Qgc3RhdGljQXNzZXRzID0gY3JlYXRlU3RhdGljQXNzZXRzKHt9KTtcblxuICAgICAgY29uc3Qgc3RhZ2VkID0gc3RhZ2VkRGlyKHN0YXRpY0Fzc2V0cy5wdWJsaWNEZXBsb3ltZW50ISk7XG4gICAgICBleHBlY3QoXG4gICAgICAgIGV4aXN0c1N5bmMoam9pbihzdGFnZWQsIFwiX25leHRcIiwgXCJzdGF0aWNcIiwgXCJjaHVua3NcIiwgXCJhLmpzXCIpKSxcbiAgICAgICkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBDREsgdXBsb2FkcyBhIGRpcmVjdG9yeSB1bmRlciBldmVyeSBuYW1lIGEgbGluayBnaXZlcyBpdC5cbiAgICBpdChcInRyZWF0cyBmaWxlcyByZWFjaGVkIHRocm91Z2ggYSBzZWNvbmQgbmFtZSBhcyBzaGFkb3dpbmdcIiwgKCkgPT4ge1xuICAgICAga2VlcFN0YWdpbmcoKTtcbiAgICAgIGNvbnN0IGJ1aWx0U3RhdGljID0gam9pbihidWlsZERpcmVjdG9yeSwgXCIubmV4dFwiLCBcInN0YXRpY1wiKTtcbiAgICAgIG1rZGlyU3luYyhqb2luKGJ1aWx0U3RhdGljLCBcImNodW5rc1wiKSk7XG4gICAgICB3cml0ZUZpbGVTeW5jKGpvaW4oYnVpbHRTdGF0aWMsIFwiY2h1bmtzXCIsIFwiYS5qc1wiKSwgXCIvLyBidWlsdFwiKTtcbiAgICAgIHN5bWxpbmtTeW5jKGpvaW4oYnVpbHRTdGF0aWMsIFwiY2h1bmtzXCIpLCBqb2luKGJ1aWx0U3RhdGljLCBcImFsaWFzXCIpKTtcbiAgICAgIGNvbnN0IHNoYWRvd0RpciA9IGpvaW4oYnVpbGREaXJlY3RvcnksIFwicHVibGljXCIsIFwiX25leHRcIiwgXCJzdGF0aWNcIik7XG4gICAgICBta2RpclN5bmMoam9pbihzaGFkb3dEaXIsIFwiYWxpYXNcIiksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgd3JpdGVGaWxlU3luYyhqb2luKHNoYWRvd0RpciwgXCJhbGlhc1wiLCBcImEuanNcIiksIFwiLy8gc2hhZG93ZWRcIik7XG4gICAgICB3cml0ZUZpbGVTeW5jKGpvaW4oYnVpbGREaXJlY3RvcnksIFwicHVibGljXCIsIFwibG9nby5wbmdcIiksIFwicG5nXCIpO1xuICAgICAgY29uc3Qgc3RhdGljQXNzZXRzID0gY3JlYXRlU3RhdGljQXNzZXRzKHt9KTtcblxuICAgICAgY29uc3Qgc3RhZ2VkID0gc3RhZ2VkRGlyKHN0YXRpY0Fzc2V0cy5wdWJsaWNEZXBsb3ltZW50ISk7XG4gICAgICBleHBlY3QoZXhpc3RzU3luYyhqb2luKHN0YWdlZCwgXCJfbmV4dFwiLCBcInN0YXRpY1wiLCBcImFsaWFzXCIsIFwiYS5qc1wiKSkpLnRvQmUoXG4gICAgICAgIGZhbHNlLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwibGVhdmVzIG91dCBhIHNoYWRvd2VkIGZpbGUgdW5kZXIgYSBzeW1saW5rZWQgcHVibGljLyBkaXJlY3RvcnlcIiwgKCkgPT4ge1xuICAgICAga2VlcFN0YWdpbmcoKTtcbiAgICAgIGNvbnN0IGxpbmtlZCA9IGpvaW4oYnVpbGREaXJlY3RvcnksIFwibGlua2VkLXN0YXRpY1wiKTtcbiAgICAgIG1rZGlyU3luYyhsaW5rZWQpO1xuICAgICAgd3JpdGVGaWxlU3luYyhqb2luKGxpbmtlZCwgXCJjaHVuay5qc1wiKSwgXCIvLyBzaGFkb3dlZFwiKTtcbiAgICAgIHdyaXRlRmlsZVN5bmMoam9pbihsaW5rZWQsIFwibGVnYWN5LmpzXCIpLCBcIi8vIHB1YmxpYyBvbmx5XCIpO1xuICAgICAgbWtkaXJTeW5jKGpvaW4oYnVpbGREaXJlY3RvcnksIFwicHVibGljXCIsIFwiX25leHRcIiksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgc3ltbGlua1N5bmMobGlua2VkLCBqb2luKGJ1aWxkRGlyZWN0b3J5LCBcInB1YmxpY1wiLCBcIl9uZXh0XCIsIFwic3RhdGljXCIpKTtcbiAgICAgIGNvbnN0IHN0YXRpY0Fzc2V0cyA9IGNyZWF0ZVN0YXRpY0Fzc2V0cyh7fSk7XG5cbiAgICAgIGNvbnN0IHN0YWdlZCA9IHN0YWdlZERpcihzdGF0aWNBc3NldHMucHVibGljRGVwbG95bWVudCEpO1xuICAgICAgZXhwZWN0KGV4aXN0c1N5bmMoam9pbihzdGFnZWQsIFwiX25leHRcIiwgXCJzdGF0aWNcIiwgXCJjaHVuay5qc1wiKSkpLnRvQmUoXG4gICAgICAgIGZhbHNlLFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChleGlzdHNTeW5jKGpvaW4oc3RhZ2VkLCBcIl9uZXh0XCIsIFwic3RhdGljXCIsIFwibGVnYWN5LmpzXCIpKSkudG9CZShcbiAgICAgICAgdHJ1ZSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcImxpc3RzIGEgLm5leHQvc3RhdGljIGhvbGRpbmcgYSBsaW5rIGxvb3BcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbHRTdGF0aWMgPSBqb2luKGJ1aWxkRGlyZWN0b3J5LCBcIi5uZXh0XCIsIFwic3RhdGljXCIpO1xuICAgICAgc3ltbGlua1N5bmMoam9pbihidWlsdFN0YXRpYywgXCJsb29wXCIpLCBqb2luKGJ1aWx0U3RhdGljLCBcImxvb3BcIikpO1xuICAgICAgd3JpdGVQdWJsaWNGaWxlKCk7XG5cbiAgICAgIGV4cGVjdCgoKSA9PiBjcmVhdGVTdGF0aWNBc3NldHMoe30pKS5ub3QudG9UaHJvdygvRUxPT1AvKTtcbiAgICB9KTtcblxuICAgIGl0KFwicmVtb3ZlcyB0aGUgc3RhZ2luZyBkaXJlY3RvcmllcyB3aGVuIGEgZGVwbG95bWVudCBmYWlsc1wiLCAoKSA9PiB7XG4gICAgICB3cml0ZVB1YmxpY0ZpbGUoKTtcbiAgICAgIGNvbnN0IGJlZm9yZSA9IG5ldyBTZXQocmVhZGRpclN5bmModG1wZGlyKCkpKTtcbiAgICAgIGplc3RcbiAgICAgICAgLnNweU9uKE5leHRqc1N0YXRpY0Fzc2V0cy5wcm90b3R5cGUgYXMgYW55LCBcImNyZWF0ZURlcGxveW1lbnRcIilcbiAgICAgICAgLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZGVwbG95bWVudCBmYWlsZWRcIik7XG4gICAgICAgIH0pO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZXhwZWN0KCgpID0+IGNyZWF0ZVN0YXRpY0Fzc2V0cyh7fSkpLnRvVGhyb3coXCJkZXBsb3ltZW50IGZhaWxlZFwiKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGplc3QucmVzdG9yZUFsbE1vY2tzKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxlYWtlZCA9IHJlYWRkaXJTeW5jKHRtcGRpcigpKS5maWx0ZXIoXG4gICAgICAgIChuYW1lKSA9PiBuYW1lLnN0YXJ0c1dpdGgoXCJuZXh0anMtYXNzZXRzLVwiKSAmJiAhYmVmb3JlLmhhcyhuYW1lKSxcbiAgICAgICk7XG4gICAgICBleHBlY3QobGVha2VkKS50b0VxdWFsKFtdKTtcbiAgICB9KTtcblxuICAgIGl0KFwicmVtb3ZlcyBpdHMgc3RhZ2luZyBkaXJlY3RvcmllcyBvbmNlIENESyBoYXMgY29waWVkIHRoZW1cIiwgKCkgPT4ge1xuICAgICAgd3JpdGVQdWJsaWNGaWxlKCk7XG4gICAgICBjb25zdCBzdGF0aWNBc3NldHMgPSBjcmVhdGVTdGF0aWNBc3NldHMoe30pO1xuXG4gICAgICBmb3IgKGNvbnN0IHVwbG9hZCBvZiBbXG4gICAgICAgIHN0YXRpY0Fzc2V0cy5zdGF0aWNEZXBsb3ltZW50ISxcbiAgICAgICAgc3RhdGljQXNzZXRzLnB1YmxpY0RlcGxveW1lbnQhLFxuICAgICAgXSkge1xuICAgICAgICBleHBlY3QoZXhpc3RzU3luYyhzdGFnZWREaXIodXBsb2FkKSkpLnRvQmUoZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gVGhlIGFzc2V0IG1hbmlmZXN0IHRoZW4gcG9pbnRzIGF0IHRoZSBzdGFnaW5nIGRpcmVjdG9yeSBpdHNlbGYuXG4gICAgaXQoXCJrZWVwcyB0aGVtIHdoZW4gYXNzZXQgc3RhZ2luZyBpcyBkaXNhYmxlZFwiLCAoKSA9PiB7XG4gICAgICBrZWVwU3RhZ2luZygpO1xuICAgICAgY29uc3Qgc3RhdGljQXNzZXRzID0gY3JlYXRlU3RhdGljQXNzZXRzKHt9KTtcblxuICAgICAgZXhwZWN0KGV4aXN0c1N5bmMoc3RhZ2VkRGlyKHN0YXRpY0Fzc2V0cy5zdGF0aWNEZXBsb3ltZW50ISkpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJmYWxscyBiYWNrIHRvIHRoZSBwdWJsaWMvIHVwbG9hZCBmb3IgYSBidWlsZCB3aXRob3V0IC5uZXh0L3N0YXRpY1wiLCAoKSA9PiB7XG4gICAgICBybVN5bmMoam9pbihidWlsZERpcmVjdG9yeSwgXCIubmV4dFwiKSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgICAgd3JpdGVQdWJsaWNGaWxlKCk7XG4gICAgICBjb25zdCBzdGF0aWNBc3NldHMgPSBjcmVhdGVTdGF0aWNBc3NldHMoe30pO1xuXG4gICAgICBleHBlY3Qoc3RhdGljQXNzZXRzLnN0YXRpY0RlcGxveW1lbnQpLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGV4cGVjdChzdGF0aWNBc3NldHMuZGVwbG95bWVudCkudG9CZShzdGF0aWNBc3NldHMucHVibGljRGVwbG95bWVudCk7XG4gICAgICBleHBlY3QoT2JqZWN0LmtleXMoZGVwbG95bWVudHMoKSkpLnRvRXF1YWwoW1wiUHVibGljRGVwbG95bWVudFwiXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiYnVja2V0RGVwbG95bWVudFByb3BzIHRoYXQgd291bGQgYnJlYWsgdGhlIG90aGVyIHVwbG9hZHNcIiwgKCkgPT4ge1xuICAgIGZ1bmN0aW9uIHdpdGhPdmVycmlkZXMoYnVja2V0RGVwbG95bWVudFByb3BzOiBvYmplY3QpIHtcbiAgICAgIHJldHVybiAoKSA9PlxuICAgICAgICBuZXcgTmV4dGpzU3RhdGljQXNzZXRzKHN0YWNrLCBcIk5leHRqc1N0YXRpY0Fzc2V0c1wiLCB7XG4gICAgICAgICAgYnVpbGREaXJlY3RvcnksXG4gICAgICAgICAgYnVpbGRJZDogXCJ0ZXN0LWJ1aWxkLWlkXCIsXG4gICAgICAgICAgb3ZlcnJpZGVzOiB7IGJ1Y2tldERlcGxveW1lbnRQcm9wczogYnVja2V0RGVwbG95bWVudFByb3BzIGFzIGFueSB9LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpdChcInJlamVjdHMgcHJ1bmU6IHRydWVcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdpdGhPdmVycmlkZXMoeyBwcnVuZTogdHJ1ZSB9KSkudG9UaHJvdygvYHBydW5lOiB0cnVlYC8pO1xuICAgIH0pO1xuXG4gICAgLy8gQ0RLJ3MgVXBkYXRlIHBhdGggZGVsZXRlcyB0aGUgb2xkIHByZWZpeCB3aXRob3V0IGNoZWNraW5nIHRoZSBidWNrZXQnc1xuICAgIC8vIG93bmVyLCByYWNpbmcgdGhlIG90aGVyIHVwbG9hZHMsIHNvIG5vIGJ1Y2tldCBpcyBzYWZlLlxuICAgIGl0KFwicmVqZWN0cyByZXRhaW5PbkRlbGV0ZTogZmFsc2VcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdpdGhPdmVycmlkZXMoeyByZXRhaW5PbkRlbGV0ZTogZmFsc2UgfSkpLnRvVGhyb3coXG4gICAgICAgIC9gcmV0YWluT25EZWxldGU6IGZhbHNlYC8sXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgLy8gVGhlIHR5cGUgcmVxdWlyZXMgYm90aCwgc28gYSB0eXBlZCBjYWxsZXIgYWx3YXlzIHBhc3NlcyB0aGVtLlxuICAgIGl0KFwiaWdub3JlcyBzb3VyY2VzIGFuZCBkZXN0aW5hdGlvbkJ1Y2tldFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBvdGhlciA9IEJ1Y2tldC5mcm9tQnVja2V0TmFtZShzdGFjaywgXCJPdGhlclwiLCBcIm90aGVyXCIpO1xuICAgICAgbmV3IE5leHRqc1N0YXRpY0Fzc2V0cyhzdGFjaywgXCJOZXh0anNTdGF0aWNBc3NldHNcIiwge1xuICAgICAgICBidWlsZERpcmVjdG9yeSxcbiAgICAgICAgYnVpbGRJZDogXCJ0ZXN0LWJ1aWxkLWlkXCIsXG4gICAgICAgIG92ZXJyaWRlczoge1xuICAgICAgICAgIGJ1Y2tldERlcGxveW1lbnRQcm9wczoge1xuICAgICAgICAgICAgc291cmNlczogW10sXG4gICAgICAgICAgICBkZXN0aW5hdGlvbkJ1Y2tldDogb3RoZXIsXG4gICAgICAgICAgICBjYWNoZUNvbnRyb2w6IFtDYWNoZUNvbnRyb2wuZnJvbVN0cmluZyhcInB1YmxpYywgbWF4LWFnZT02MFwiKV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBbdXBsb2FkXSA9IE9iamVjdC52YWx1ZXMoXG4gICAgICAgIFRlbXBsYXRlLmZyb21TdGFjayhzdGFjaykuZmluZFJlc291cmNlcyhcIkN1c3RvbTo6Q0RLQnVja2V0RGVwbG95bWVudFwiKSxcbiAgICAgICk7XG4gICAgICBleHBlY3QodXBsb2FkLlByb3BlcnRpZXMuU291cmNlT2JqZWN0S2V5cykudG9IYXZlTGVuZ3RoKDEpO1xuICAgICAgZXhwZWN0KEpTT04uc3RyaW5naWZ5KHVwbG9hZC5Qcm9wZXJ0aWVzLkRlc3RpbmF0aW9uQnVja2V0TmFtZSkpLnRvQ29udGFpbihcbiAgICAgICAgXCJOZXh0anNTdGF0aWNBc3NldHNCdWNrZXRcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICAvLyBBIEpTSUkgYmluZGluZyBjYW4gbWF0ZXJpYWxpemUgYW4gdW5zZXQgZmllbGQgYXMgYW4gZXhwbGljaXQgdW5kZWZpbmVkLlxuICAgIGl0KFwiYWxsb3dzIHRoZSBmaWVsZHMgd2hlbiB0aGV5IGFyZSBleHBsaWNpdGx5IHVuZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoXG4gICAgICAgIHdpdGhPdmVycmlkZXMoeyBwcnVuZTogdW5kZWZpbmVkLCBzb3VyY2VzOiB1bmRlZmluZWQgfSksXG4gICAgICApLm5vdC50b1Rocm93KCk7XG4gICAgICAvLyBOb3QgQ0RLJ3MgZGVmYXVsdCBgcHJ1bmU6IHRydWVgLCBub3IgYSBkZXBsb3ltZW50IHdpdGggbm8gc291cmNlcy5cbiAgICAgIGNvbnN0IFt1cGxvYWRdID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgICAgVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKS5maW5kUmVzb3VyY2VzKFwiQ3VzdG9tOjpDREtCdWNrZXREZXBsb3ltZW50XCIpLFxuICAgICAgKTtcbiAgICAgIGV4cGVjdCh1cGxvYWQuUHJvcGVydGllcy5QcnVuZSkudG9CZShmYWxzZSk7XG4gICAgICBleHBlY3QodXBsb2FkLlByb3BlcnRpZXMuU291cmNlT2JqZWN0S2V5cykudG9IYXZlTGVuZ3RoKDEpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
374
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLXN0YXRpYy1hc3NldHMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9uZXh0anMtc3RhdGljLWFzc2V0cy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0RBQXNEO0FBQ3RELHFDQVNpQjtBQUNqQixxQ0FBaUM7QUFDakMseUNBQWlDO0FBQ2pDLDZDQUF1RDtBQUN2RCx1REFBa0Q7QUFDbEQsK0NBQTRDO0FBQzVDLHFFQUErRTtBQUMvRSwrQ0FBbUU7QUFDbkUsaUVBQTREO0FBRTVELFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUU7SUFDbEMsSUFBSSxLQUFZLENBQUM7SUFDakIsSUFBSSxjQUFzQixDQUFDO0lBRTNCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLElBQUksaUJBQUcsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzFDLGNBQWMsR0FBRyxJQUFBLHFCQUFXLEVBQUMsSUFBQSxnQkFBSSxFQUFDLElBQUEsZ0JBQU0sR0FBRSxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQztRQUN0RSxNQUFNLFNBQVMsR0FBRyxJQUFBLGdCQUFJLEVBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxRCxJQUFBLG1CQUFTLEVBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUMsSUFBQSx1QkFBYSxFQUFDLElBQUEsZ0JBQUksRUFBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsSUFBQSxnQkFBTSxFQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFD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TSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQge1xuICBleGlzdHNTeW5jLFxuICBta2RpclN5bmMsXG4gIG1rZHRlbXBTeW5jLFxuICByZWFkZGlyU3luYyxcbiAgcmVuYW1lU3luYyxcbiAgcm1TeW5jLFxuICBzeW1saW5rU3luYyxcbiAgd3JpdGVGaWxlU3luYyxcbn0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IHRtcGRpciB9IGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgQXBwLCBBc3NldFN0YWdpbmcsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hc3NlcnRpb25zXCI7XG5pbXBvcnQgeyBCdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBCdWNrZXREZXBsb3ltZW50LCBDYWNoZUNvbnRyb2wgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzLWRlcGxveW1lbnRcIjtcbmltcG9ydCB7IERJU0FCTEVfQVNTRVRfU1RBR0lOR19DT05URVhUIH0gZnJvbSBcImF3cy1jZGstbGliL2N4LWFwaVwiO1xuaW1wb3J0IHsgTmV4dGpzU3RhdGljQXNzZXRzIH0gZnJvbSBcIi4vbmV4dGpzLXN0YXRpYy1hc3NldHNcIjtcblxuZGVzY3JpYmUoXCJOZXh0anNTdGF0aWNBc3NldHNcIiwgKCkgPT4ge1xuICBsZXQgc3RhY2s6IFN0YWNrO1xuICBsZXQgYnVpbGREaXJlY3Rvcnk6IHN0cmluZztcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBzdGFjayA9IG5ldyBTdGFjayhuZXcgQXBwKCksIFwiVGVzdFN0YWNrXCIpO1xuICAgIGJ1aWxkRGlyZWN0b3J5ID0gbWtkdGVtcFN5bmMoam9pbih0bXBkaXIoKSwgXCJuZXh0anMtc3RhdGljLWFzc2V0cy1cIikpO1xuICAgIGNvbnN0IHN0YXRpY0RpciA9IGpvaW4oYnVpbGREaXJlY3RvcnksIFwiLm5leHRcIiwgXCJzdGF0aWNcIik7XG4gICAgbWtkaXJTeW5jKHN0YXRpY0RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgd3JpdGVGaWxlU3luYyhqb2luKHN0YXRpY0RpciwgXCJjaHVuay5qc1wiKSwgXCIvLyBjaHVua1wiKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBybVN5bmMoYnVpbGREaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gY3JlYXRlU3RhdGljQXNzZXRzKHByb3BzOiB7XG4gICAgYmFzZVBhdGg/OiBzdHJpbmc7XG4gICAgZGVzdGluYXRpb25LZXlQcmVmaXg/OiBzdHJpbmc7XG4gIH0pIHtcbiAgICByZXR1cm4gbmV3IE5leHRqc1N0YXRpY0Fzc2V0cyhzdGFjaywgXCJOZXh0anNTdGF0aWNBc3NldHNcIiwge1xuICAgICAgYnVpbGREaXJlY3RvcnksXG4gICAgICBidWlsZElkOiBcInRlc3QtYnVpbGQtaWRcIixcbiAgICAgIGJhc2VQYXRoOiBwcm9wcy5iYXNlUGF0aCxcbiAgICAgIG92ZXJyaWRlczpcbiAgICAgICAgcHJvcHMuZGVzdGluYXRpb25LZXlQcmVmaXggPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIGJ1Y2tldERlcGxveW1lbnRQcm9wczoge1xuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uS2V5UHJlZml4OiBwcm9wcy5kZXN0aW5hdGlvbktleVByZWZpeCxcbiAgICAgICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZGVzY3JpYmUoXCJrZXlQcmVmaXhcIiwgKCkgPT4ge1xuICAgIGl0KFwiaXMgZW1wdHkgd2hlbiBubyBiYXNlUGF0aCBpcyBzZXRcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KGNyZWF0ZVN0YXRpY0Fzc2V0cyh7fSkua2V5UHJlZml4KS50b0JlKFwiXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzdHJpcHMgc3Vycm91bmRpbmcgc2xhc2hlcyBmcm9tIGJhc2VQYXRoXCIsICgpID0+IHtcbiAgICAgIGV4cGVjdChjcmVhdGVTdGF0aWNBc3NldHMoeyBiYXNlUGF0aDogXCIvYmFzZS9cIiB9KS5rZXlQcmVmaXgpLnRvQmUoXCJiYXNlXCIpO1xuICAgIH0pO1xuXG4gICAgLy8gVGhlIG92ZXJyaWRlIGlzIHNwcmVhZCBsYXN0IGludG8gQnVja2V0RGVwbG95bWVudCwgc28gaXQgZGVjaWRlcyB3aGVyZVxuICAgIC8vIHRoZSBvYmplY3RzIGFjdHVhbGx5IGxhbmQuIENvbnN1bWVycyByZWFkaW5nIGFzc2V0cyBiYWNrIG91dCBvZiB0aGVcbiAgICAvLyBidWNrZXQgaGF2ZSB0byBzZWUgdGhhdCwgbm90IHRoZSBiYXNlUGF0aCBwcm9wLlxuICAgIGl0KFwicmVmbGVjdHMgYSBkZXN0aW5hdGlvbktleVByZWZpeCBvdmVycmlkZSByYXRoZXIgdGhhbiBiYXNlUGF0aFwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoXG4gICAgICAgIGNyZWF0ZVN0YXRpY0Fzc2V0cyh7XG4gICAgICAgICAgYmFzZVBhdGg6IFwiL2Jhc2VcIixcbiAgICAgICAgICBkZXN0aW5hdGlvbktleVByZWZpeDogXCJicmFuY2gteFwiLFxuICAgICAgICB9KS5rZXlQcmVmaXgsXG4gICAgICApLnRvQmUoXCJicmFuY2gteFwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwiaXMgZW1wdHkgd2hlbiBhbiBvdmVycmlkZSBjbGVhcnMgdGhlIHByZWZpeFwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoXG4gICAgICAgIGNyZWF0ZVN0YXRpY0Fzc2V0cyh7IGJhc2VQYXRoOiBcIi9iYXNlXCIsIGRlc3RpbmF0aW9uS2V5UHJlZml4OiBcIlwiIH0pXG4gICAgICAgICAgLmtleVByZWZpeCxcbiAgICAgICkudG9CZShcIlwiKTtcbiAgICB9KTtcblxuICAgIC8vIEEgSlNJSSBsYW5ndWFnZSBiaW5kaW5nLCBvciBhIHByb2dyYW1tYXRpY2FsbHkgYnVpbHQgcHJvcHMgb2JqZWN0LCBjYW5cbiAgICAvLyBtYXRlcmlhbGl6ZSBhbiB1bnNldCBvcHRpb25hbCBmaWVsZCBhcyBhbiBleHBsaWNpdCBgdW5kZWZpbmVkYC4gVHJlYXRpbmdcbiAgICAvLyB0aGF0IGFzIGFuIGludGVudGlvbmFsIFwibW92ZSB0aGUgYXNzZXRzIHRvIHRoZSBidWNrZXQgcm9vdFwiIG92ZXJyaWRlIHdvdWxkXG4gICAgLy8gdXBsb2FkIHRoZW0gdGhlcmUgd2hpbGUgQ2xvdWRGcm9udCBzdGlsbCByZXF1ZXN0ZWQgdGhlbSB1bmRlciBiYXNlUGF0aCxcbiAgICAvLyBmYWlsaW5nIHN5bnRoIHdpdGggYSBrZXkgcHJlZml4IG1pc21hdGNoIHRoYXQgbmFtZXMgbmVpdGhlciB0aGUgb3ZlcnJpZGVcbiAgICAvLyBub3IgdGhlIGNhdXNlLlxuICAgIGl0KFwiZmFsbHMgYmFjayB0byBiYXNlUGF0aCB3aGVuIHRoZSBvdmVycmlkZSBrZXkgaXMgcHJlc2VudCBidXQgdW5kZWZpbmVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRpY0Fzc2V0cyA9IG5ldyBOZXh0anNTdGF0aWNBc3NldHMoc3RhY2ssIFwiTmV4dGpzU3RhdGljQXNzZXRzXCIsIHtcbiAgICAgICAgYnVpbGREaXJlY3RvcnksXG4gICAgICAgIGJ1aWxkSWQ6IFwidGVzdC1idWlsZC1pZFwiLFxuICAgICAgICBiYXNlUGF0aDogXCIvYmFzZVwiLFxuICAgICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgICBidWNrZXREZXBsb3ltZW50UHJvcHM6IHtcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uS2V5UHJlZml4OiB1bmRlZmluZWQsXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHN0YXRpY0Fzc2V0cy5rZXlQcmVmaXgpLnRvQmUoXCJiYXNlXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNhY2hlLUNvbnRyb2xcIiwgKCkgPT4ge1xuICAgIGNvbnN0IElNTVVUQUJMRSA9IFwicHVibGljLCBtYXgtYWdlPTMxNTM2MDAwLCBpbW11dGFibGVcIjtcblxuICAgIC8qKiBUaGUgZGVwbG95bWVudCByZXNvdXJjZXMnIHByb3BlcnRpZXMsIGJ5IGNvbnN0cnVjdCBJRC4gKi9cbiAgICBmdW5jdGlvbiBkZXBsb3ltZW50cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlcyA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjaykuZmluZFJlc291cmNlcyhcbiAgICAgICAgXCJDdXN0b206OkNES0J1Y2tldERlcGxveW1lbnRcIixcbiAgICAgICk7XG4gICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhyZXNvdXJjZXMpLm1hcCgoW2xvZ2ljYWxJZCwgcmVzb3VyY2VdKSA9PiBbXG4gICAgICAgICAgbG9naWNhbElkLm1hdGNoKC9OZXh0anNTdGF0aWNBc3NldHMoXFx3Kz8pQ3VzdG9tUmVzb3VyY2UvKSFbMV0sXG4gICAgICAgICAgcmVzb3VyY2UuUHJvcGVydGllcyxcbiAgICAgICAgXSksXG4gICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdyaXRlUHVibGljRmlsZSgpIHtcbiAgICAgIGNvbnN0IHB1YmxpY0RpciA9IGpvaW4oYnVpbGREaXJlY3RvcnksIFwicHVibGljXCIpO1xuICAgICAgbWtkaXJTeW5jKHB1YmxpY0RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICB3cml0ZUZpbGVTeW5jKGpvaW4ocHVibGljRGlyLCBcImxvZ28ucG5nXCIpLCBcInBuZ1wiKTtcbiAgICB9XG5cbiAgICAvLyBDbG91ZEZyb250IGFuZCBBUEkgR2F0ZXdheSBzZXJ2ZSB0aGVzZSBzdHJhaWdodCBmcm9tIFMzLCBzbyB0aGVcbiAgICAvLyBvYmplY3QncyBtZXRhZGF0YSBpcyB0aGUgb25seSBDYWNoZS1Db250cm9sIGEgYnJvd3NlciBnZXRzLlxuICAgIGl0KFwidXBsb2FkcyBfbmV4dC9zdGF0aWMgaW1tdXRhYmxlIGFuZCBwdWJsaWMvIHdpdGhvdXQgYSBoZWFkZXJcIiwgKCkgPT4ge1xuICAgICAgd3JpdGVQdWJsaWNGaWxlKCk7XG4gICAgICBjb25zdCBzdGF0aWNBc3NldHMgPSBjcmVhdGVTdGF0aWNBc3NldHMoe30pO1xuXG4gICAgICBleHBlY3Qoc3RhdGljQXNzZXRzLnN0YXRpY0RlcGxveW1lbnQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qoc3RhdGljQXNzZXRzLnB1YmxpY0RlcGxveW1lbnQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBjb25zdCB7IERlcGxveW1lbnQ6IHN0YXRpY1VwbG9hZCwgUHVibGljRGVwbG95bWVudDogcHVibGljVXBsb2FkIH0gPVxuICAgICAgICBkZXBsb3ltZW50cygpO1xuICAgICAgZXhwZWN0KHN0YXRpY1VwbG9hZC5TeXN0ZW1NZXRhZGF0YSkudG9FcXVhbCh7XG4gICAgICAgIFwiY2FjaGUtY29udHJvbFwiOiBJTU1VVEFCTEUsXG4gICAgICB9KTtcbiAgICAgIGV4cGVjdChwdWJsaWNVcGxvYWQuU3lzdGVtTWV0YWRhdGEpLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGZvciAoY29uc3QgdXBsb2FkIG9mIFtzdGF0aWNVcGxvYWQsIHB1YmxpY1VwbG9hZF0pIHtcbiAgICAgICAgZXhwZWN0KHVwbG9hZC5Vc2VyTWV0YWRhdGEpLnRvRXF1YWwoeyBidWlsZF9pZDogXCJ0ZXN0LWJ1aWxkLWlkXCIgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdChcImFwcGxpZXMgYW4gb3ZlcnJpZGRlbiBjYWNoZUNvbnRyb2wgdG8gcHVibGljLyBmaWxlcyBvbmx5XCIsICgpID0+IHtcbiAgICAgIHdyaXRlUHVibGljRmlsZSgpO1xuICAgICAgbmV3IE5leHRqc1N0YXRpY0Fzc2V0cyhzdGFjaywgXCJOZXh0anNTdGF0aWNBc3NldHNcIiwge1xuICAgICAgICBidWlsZERpcmVjdG9yeSxcbiAgICAgICAgYnVpbGRJZDogXCJ0ZXN0LWJ1aWxkLWlkXCIsXG4gICAgICAgIG92ZXJyaWRlczoge1xuICAgICAgICAgIGJ1Y2tldERlcGxveW1lbnRQcm9wczoge1xuICAgICAgICAgICAgY2FjaGVDb250cm9sOiBbQ2FjaGVDb250cm9sLmZyb21TdHJpbmcoXCJwdWJsaWMsIG1heC1hZ2U9MzYwMFwiKV0sXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgeyBEZXBsb3ltZW50OiBzdGF0aWNVcGxvYWQsIFB1YmxpY0RlcGxveW1lbnQ6IHB1YmxpY1VwbG9hZCB9ID1cbiAgICAgICAgZGVwbG95bWVudHMoKTtcbiAgICAgIGV4cGVjdChzdGF0aWNVcGxvYWQuU3lzdGVtTWV0YWRhdGEpLnRvRXF1YWwoe1xuICAgICAgICBcImNhY2hlLWNvbnRyb2xcIjogSU1NVVRBQkxFLFxuICAgICAgfSk7XG4gICAgICBleHBlY3QocHVibGljVXBsb2FkLlN5c3RlbU1ldGFkYXRhKS50b0VxdWFsKHtcbiAgICAgICAgXCJjYWNoZS1jb250cm9sXCI6IFwicHVibGljLCBtYXgtYWdlPTM2MDBcIixcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJjcmVhdGVzIG9ubHkgdGhlIF9uZXh0L3N0YXRpYyB1cGxvYWQgd2l0aG91dCBhIHB1YmxpYy8gZGlyZWN0b3J5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRpY0Fzc2V0cyA9IGNyZWF0ZVN0YXRpY0Fzc2V0cyh7IGJhc2VQYXRoOiBcIi9iYXNlXCIgfSk7XG5cbiAgICAgIGV4cGVjdChzdGF0aWNBc3NldHMucHVibGljRGVwbG95bWVudCkudG9CZVVuZGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHN0YXRpY0Fzc2V0cy5kZXBsb3ltZW50KS50b0JlKHN0YXRpY0Fzc2V0cy5zdGF0aWNEZXBsb3ltZW50KTtcbiAgICAgIGNvbnN0IHVwbG9hZHMgPSBkZXBsb3ltZW50cygpO1xuICAgICAgZXhwZWN0KE9iamVjdC5rZXlzKHVwbG9hZHMpKS50b0VxdWFsKFtcIkRlcGxveW1lbnRcIl0pO1xuICAgICAgZXhwZWN0KHVwbG9hZHMuRGVwbG95bWVudC5EZXN0aW5hdGlvbkJ1Y2tldEtleVByZWZpeCkudG9CZShcImJhc2VcIik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBLZWVwcyB0aGUgc3RhZ2luZyBkaXJlY3Rvcmllcywgd2hpY2ggYXJlIG90aGVyd2lzZSByZW1vdmVkIG9uY2UgQ0RLIGhhc1xuICAgICAqIGNvcGllZCB0aGVtIGludG8gYGNkay5vdXRgLCBzbyBgc3RhZ2VkRGlyYCBjYW4gbG9vayBpbnNpZGUgdGhlbS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBrZWVwU3RhZ2luZygpIHtcbiAgICAgIHN0YWNrID0gbmV3IFN0YWNrKFxuICAgICAgICBuZXcgQXBwKHsgY29udGV4dDogeyBbRElTQUJMRV9BU1NFVF9TVEFHSU5HX0NPTlRFWFRdOiB0cnVlIH0gfSksXG4gICAgICAgIFwiVGVzdFN0YWNrXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8qKiBUaGUgZGlyZWN0b3J5IGEgZGVwbG95bWVudCB1cGxvYWRzLCBmb3IgY2hlY2tpbmcgd2hhdCB3YXMgc3RhZ2VkLiAqL1xuICAgIGZ1bmN0aW9uIHN0YWdlZERpcihkZXBsb3ltZW50OiBCdWNrZXREZXBsb3ltZW50KTogc3RyaW5nIHtcbiAgICAgIC8vIFRoZSBkZXBsb3ltZW50J3Mgb3duIHNvdXJjZSBhc3NldCwgbm90IHRoZSBBV1MgQ0xJIGxheWVyJ3MuXG4gICAgICByZXR1cm4gZGVwbG95bWVudC5ub2RlXG4gICAgICAgIC5maW5kQWxsKClcbiAgICAgICAgLmZpbHRlcigoYyk6IGMgaXMgQXNzZXRTdGFnaW5nID0+IGMgaW5zdGFuY2VvZiBBc3NldFN0YWdpbmcpXG4gICAgICAgIC5tYXAoKGMpID0+IGMuc291cmNlUGF0aClcbiAgICAgICAgLmZpbmQoKHBhdGgpID0+IHBhdGguaW5jbHVkZXMoXCJuZXh0anMtYXNzZXRzLVwiKSkhO1xuICAgIH1cblxuICAgIC8vIGBuZXh0IHN0YXJ0YCBzZXJ2ZXMgdGhlIGJ1aWx0IGZpbGUgb3ZlciBhIHB1YmxpYy8gb25lIGF0IHRoZSBzYW1lIHBhdGgsXG4gICAgLy8gYW5kIHRoZSBwdWJsaWMvIG9uZSBldmVyeXdoZXJlIGVsc2UuXG4gICAgaXQoXCJsZWF2ZXMgb3V0IG9ubHkgdGhlIHB1YmxpYy9fbmV4dC9zdGF0aWMgZmlsZXMgYSBidWlsdCBmaWxlIHNoYWRvd3NcIiwgKCkgPT4ge1xuICAgICAga2VlcFN0YWdpbmcoKTtcbiAgICAgIHdyaXRlUHVibGljRmlsZSgpO1xuICAgICAgY29uc3Qgc2hhZG93RGlyID0gam9pbihidWlsZERpcmVjdG9yeSwgXCJwdWJsaWNcIiwgXCJfbmV4dFwiLCBcInN0YXRpY1wiKTtcbiAgICAgIG1rZGlyU3luYyhzaGFkb3dEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgd3JpdGVGaWxlU3luYyhqb2luKHNoYWRvd0RpciwgXCJjaHVuay5qc1wiKSwgXCIvLyBzaGFkb3dlZFwiKTtcbiAgICAgIHdyaXRlRmlsZVN5bmMoam9pbihzaGFkb3dEaXIsIFwibGVnYWN5LmpzXCIpLCBcIi8vIHB1YmxpYyBvbmx5XCIpO1xuICAgICAgY29uc3Qgc3RhdGljQXNzZXRzID0gY3JlYXRlU3RhdGljQXNzZXRzKHt9KTtcblxuICAgICAgY29uc3Qgc3RhZ2VkID0gc3RhZ2VkRGlyKHN0YXRpY0Fzc2V0cy5wdWJsaWNEZXBsb3ltZW50ISk7XG4gICAgICBleHBlY3QoZXhpc3RzU3luYyhqb2luKHN0YWdlZCwgXCJsb2dvLnBuZ1wiKSkpLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3QoZXhpc3RzU3luYyhqb2luKHN0YWdlZCwgXCJfbmV4dFwiLCBcInN0YXRpY1wiLCBcImNodW5rLmpzXCIpKSkudG9CZShcbiAgICAgICAgZmFsc2UsXG4gICAgICApO1xuICAgICAgZXhwZWN0KGV4aXN0c1N5bmMoam9pbihzdGFnZWQsIFwiX25leHRcIiwgXCJzdGF0aWNcIiwgXCJsZWdhY3kuanNcIikpKS50b0JlKFxuICAgICAgICB0cnVlLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIC8vIE5leHQuanMgYW5kIFMzIGtleXMgYXJlIGNhc2Utc2Vuc2l0aXZlLCBldmVuIHdoZXJlIHRoZSBmaWxlc3lzdGVtIGlzbid0LlxuICAgIGl0KFwiZG9lc24ndCB0cmVhdCBhIHB1YmxpYy9fbmV4dC9zdGF0aWMgZmlsZSBhcyBzaGFkb3dlZCBieSBhbm90aGVyIGNhc2VcIiwgKCkgPT4ge1xuICAgICAga2VlcFN0YWdpbmcoKTtcbiAgICAgIGNvbnN0IHNoYWRvd0RpciA9IGpvaW4oYnVpbGREaXJlY3RvcnksIFwicHVibGljXCIsIFwiX25leHRcIiwgXCJzdGF0aWNcIik7XG4gICAgICBta2RpclN5bmMoc2hhZG93RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIHdyaXRlRmlsZVN5bmMoam9pbihzaGFkb3dEaXIsIFwiQ2h1bmsuanNcIiksIFwiLy8gcHVibGljIG9ubHlcIik7XG4gICAgICBjb25zdCBzdGF0aWNBc3NldHMgPSBjcmVhdGVTdGF0aWNBc3NldHMoe30pO1xuXG4gICAgICBjb25zdCBzdGFnZWQgPSBzdGFnZWREaXIoc3RhdGljQXNzZXRzLnB1YmxpY0RlcGxveW1lbnQhKTtcbiAgICAgIGV4cGVjdChyZWFkZGlyU3luYyhqb2luKHN0YWdlZCwgXCJfbmV4dFwiLCBcInN0YXRpY1wiKSkpLnRvRXF1YWwoW1xuICAgICAgICBcIkNodW5rLmpzXCIsXG4gICAgICBdKTtcbiAgICB9KTtcblxuICAgIGl0KFwidXBsb2FkcyBhIC5uZXh0L3N0YXRpYy9zZXJ2aWNlLXdvcmtlciBmaWxlIHdpdGggdGhlIG90aGVyIGFzc2V0c1wiLCAoKSA9PiB7XG4gICAgICBrZWVwU3RhZ2luZygpO1xuICAgICAgd3JpdGVGaWxlU3luYyhcbiAgICAgICAgam9pbihidWlsZERpcmVjdG9yeSwgXCIubmV4dFwiLCBcInN0YXRpY1wiLCBcInNlcnZpY2Utd29ya2VyXCIpLFxuICAgICAgICBcIi8vIG5vdCBhIGRpcmVjdG9yeVwiLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHN0YXRpY0Fzc2V0cyA9IGNyZWF0ZVN0YXRpY0Fzc2V0cyh7fSk7XG5cbiAgICAgIGV4cGVjdChzdGF0aWNBc3NldHMuc2VydmljZVdvcmtlckRlcGxveW1lbnQpLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGNvbnN0IHN0YWdlZCA9IHN0YWdlZERpcihzdGF0aWNBc3NldHMuc3RhdGljRGVwbG95bWVudCEpO1xuICAgICAgZXhwZWN0KFxuICAgICAgICBleGlzdHNTeW5jKGpvaW4oc3RhZ2VkLCBcIl9uZXh0XCIsIFwic3RhdGljXCIsIFwic2VydmljZS13b3JrZXJcIikpLFxuICAgICAgKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJ1cGxvYWRzIGEgcHVibGljLyBtYWRlIG9ubHkgb2Ygc3ltbGlua3NcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gam9pbihidWlsZERpcmVjdG9yeSwgXCJsb2dvLnBuZ1wiKTtcbiAgICAgIHdyaXRlRmlsZVN5bmModGFyZ2V0LCBcInBuZ1wiKTtcbiAgICAgIG1rZGlyU3luYyhqb2luKGJ1aWxkRGlyZWN0b3J5LCBcInB1YmxpY1wiKSk7XG4gICAgICBzeW1saW5rU3luYyh0YXJnZXQsIGpvaW4oYnVpbGREaXJlY3RvcnksIFwicHVibGljXCIsIFwibG9nby5wbmdcIikpO1xuICAgICAgY29uc3Qgc3RhdGljQXNzZXRzID0gY3JlYXRlU3RhdGljQXNzZXRzKHt9KTtcblxuICAgICAgZXhwZWN0KHN0YXRpY0Fzc2V0cy5wdWJsaWNEZXBsb3ltZW50KS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgLy8gQSBzZXJ2aWNlIHdvcmtlciBrZWVwcyBpdHMgVVJMIGFjcm9zcyBidWlsZHMsIHNvIE5leHQuanMgc2VydmVzIGl0XG4gICAgLy8gcmV2YWxpZGF0ZWQgcmF0aGVyIHRoYW4gaW1tdXRhYmxlLlxuICAgIGl0KFwidXBsb2FkcyBzZXJ2aWNlIHdvcmtlcnMgd2l0aCBtYXgtYWdlPTAsIG11c3QtcmV2YWxpZGF0ZVwiLCAoKSA9PiB7XG4gICAgICBrZWVwU3RhZ2luZygpO1xuICAgICAgY29uc3Qgc3dEaXIgPSBqb2luKGJ1aWxkRGlyZWN0b3J5LCBcIi5uZXh0XCIsIFwic3RhdGljXCIsIFwic2VydmljZS13b3JrZXJcIik7XG4gICAgICBta2RpclN5bmMoc3dEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgd3JpdGVGaWxlU3luYyhqb2luKHN3RGlyLCBcInN3LmpzXCIpLCBcIi8vIHN3XCIpO1xuICAgICAgY29uc3Qgc3RhdGljQXNzZXRzID0gY3JlYXRlU3RhdGljQXNzZXRzKHt9KTtcblxuICAgICAgY29uc3QgeyBEZXBsb3ltZW50OiBzdGF0aWNVcGxvYWQsIFNlcnZpY2VXb3JrZXJEZXBsb3ltZW50OiBzd1VwbG9hZCB9ID1cbiAgICAgICAgZGVwbG95bWVudHMoKTtcbiAgICAgIGV4cGVjdChzd1VwbG9hZC5TeXN0ZW1NZXRhZGF0YSkudG9FcXVhbCh7XG4gICAgICAgIFwiY2FjaGUtY29udHJvbFwiOiBcInB1YmxpYywgbWF4LWFnZT0wLCBtdXN0LXJldmFsaWRhdGVcIixcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KHN0YXRpY1VwbG9hZC5TeXN0ZW1NZXRhZGF0YSkudG9FcXVhbCh7XG4gICAgICAgIFwiY2FjaGUtY29udHJvbFwiOiBJTU1VVEFCTEUsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHN3U3RhZ2VkID0gc3RhZ2VkRGlyKHN0YXRpY0Fzc2V0cy5zZXJ2aWNlV29ya2VyRGVwbG95bWVudCEpO1xuICAgICAgZXhwZWN0KFxuICAgICAgICBleGlzdHNTeW5jKFxuICAgICAgICAgIGpvaW4oc3dTdGFnZWQsIFwiX25leHRcIiwgXCJzdGF0aWNcIiwgXCJzZXJ2aWNlLXdvcmtlclwiLCBcInN3LmpzXCIpLFxuICAgICAgICApLFxuICAgICAgKS50b0JlKHRydWUpO1xuICAgICAgY29uc3Qgc3RhdGljU3RhZ2VkID0gc3RhZ2VkRGlyKHN0YXRpY0Fzc2V0cy5zdGF0aWNEZXBsb3ltZW50ISk7XG4gICAgICBleHBlY3QoXG4gICAgICAgIGV4aXN0c1N5bmMoam9pbihzdGF0aWNTdGFnZWQsIFwiX25leHRcIiwgXCJzdGF0aWNcIiwgXCJjaHVuay5qc1wiKSksXG4gICAgICApLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3QoXG4gICAgICAgIGV4aXN0c1N5bmMoam9pbihzdGF0aWNTdGFnZWQsIFwiX25leHRcIiwgXCJzdGF0aWNcIiwgXCJzZXJ2aWNlLXdvcmtlclwiKSksXG4gICAgICApLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzdGFnZXMgYSBzeW1saW5rZWQgLm5leHQvc3RhdGljXCIsICgpID0+IHtcbiAgICAgIGtlZXBTdGFnaW5nKCk7XG4gICAgICBjb25zdCByZWFsU3RhdGljID0gam9pbihidWlsZERpcmVjdG9yeSwgXCJyZWFsLXN0YXRpY1wiKTtcbiAgICAgIHJlbmFtZVN5bmMoam9pbihidWlsZERpcmVjdG9yeSwgXCIubmV4dFwiLCBcInN0YXRpY1wiKSwgcmVhbFN0YXRpYyk7XG4gICAgICBzeW1saW5rU3luYyhyZWFsU3RhdGljLCBqb2luKGJ1aWxkRGlyZWN0b3J5LCBcIi5uZXh0XCIsIFwic3RhdGljXCIpKTtcbiAgICAgIGNvbnN0IHN0YXRpY0Fzc2V0cyA9IGNyZWF0ZVN0YXRpY0Fzc2V0cyh7fSk7XG5cbiAgICAgIGNvbnN0IHN0YWdlZCA9IHN0YWdlZERpcihzdGF0aWNBc3NldHMuc3RhdGljRGVwbG95bWVudCEpO1xuICAgICAgZXhwZWN0KGV4aXN0c1N5bmMoam9pbihzdGFnZWQsIFwiX25leHRcIiwgXCJzdGF0aWNcIiwgXCJjaHVuay5qc1wiKSkpLnRvQmUoXG4gICAgICAgIHRydWUsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgLy8gQ0RLIHVwbG9hZHMgdGhlIGZpbGVzIGEgbGlua2VkIGRpcmVjdG9yeSBob2xkcywgc28gdGhleSBzaGFkb3cgdG9vLlxuICAgIGl0KFwidHJlYXRzIGZpbGVzIHVuZGVyIGEgc3ltbGlua2VkIC5uZXh0L3N0YXRpYyBkaXJlY3RvcnkgYXMgc2hhZG93aW5nXCIsICgpID0+IHtcbiAgICAgIGtlZXBTdGFnaW5nKCk7XG4gICAgICBjb25zdCByZWFsQ2h1bmtzID0gam9pbihidWlsZERpcmVjdG9yeSwgXCJyZWFsLWNodW5rc1wiKTtcbiAgICAgIG1rZGlyU3luYyhyZWFsQ2h1bmtzKTtcbiAgICAgIHdyaXRlRmlsZVN5bmMoam9pbihyZWFsQ2h1bmtzLCBcImEuanNcIiksIFwiLy8gYnVpbHRcIik7XG4gICAgICBzeW1saW5rU3luYyhcbiAgICAgICAgcmVhbENodW5rcyxcbiAgICAgICAgam9pbihidWlsZERpcmVjdG9yeSwgXCIubmV4dFwiLCBcInN0YXRpY1wiLCBcImNodW5rc1wiKSxcbiAgICAgICk7XG4gICAgICBjb25zdCBzaGFkb3dEaXIgPSBqb2luKGJ1aWxkRGlyZWN0b3J5LCBcInB1YmxpY1wiLCBcIl9uZXh0XCIsIFwic3RhdGljXCIpO1xuICAgICAgbWtkaXJTeW5jKGpvaW4oc2hhZG93RGlyLCBcImNodW5rc1wiKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICB3cml0ZUZpbGVTeW5jKGpvaW4oc2hhZG93RGlyLCBcImNodW5rc1wiLCBcImEuanNcIiksIFwiLy8gc2hhZG93ZWRcIik7XG4gICAgICB3cml0ZUZpbGVTeW5jKGpvaW4oYnVpbGREaXJlY3RvcnksIFwicHVibGljXCIsIFwibG9nby5wbmdcIiksIFwicG5nXCIpO1xuICAgICAgY29uc3Qgc3RhdGljQXNzZXRzID0gY3JlYXRlU3RhdGljQXNzZXRzKHt9KTtcblxuICAgICAgY29uc3Qgc3RhZ2VkID0gc3RhZ2VkRGlyKHN0YXRpY0Fzc2V0cy5wdWJsaWNEZXBsb3ltZW50ISk7XG4gICAgICBleHBlY3QoXG4gICAgICAgIGV4aXN0c1N5bmMoam9pbihzdGFnZWQsIFwiX25leHRcIiwgXCJzdGF0aWNcIiwgXCJjaHVua3NcIiwgXCJhLmpzXCIpKSxcbiAgICAgICkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBDREsgdXBsb2FkcyBhIGRpcmVjdG9yeSB1bmRlciBldmVyeSBuYW1lIGEgbGluayBnaXZlcyBpdC5cbiAgICBpdChcInRyZWF0cyBmaWxlcyByZWFjaGVkIHRocm91Z2ggYSBzZWNvbmQgbmFtZSBhcyBzaGFkb3dpbmdcIiwgKCkgPT4ge1xuICAgICAga2VlcFN0YWdpbmcoKTtcbiAgICAgIGNvbnN0IGJ1aWx0U3RhdGljID0gam9pbihidWlsZERpcmVjdG9yeSwgXCIubmV4dFwiLCBcInN0YXRpY1wiKTtcbiAgICAgIG1rZGlyU3luYyhqb2luKGJ1aWx0U3RhdGljLCBcImNodW5rc1wiKSk7XG4gICAgICB3cml0ZUZpbGVTeW5jKGpvaW4oYnVpbHRTdGF0aWMsIFwiY2h1bmtzXCIsIFwiYS5qc1wiKSwgXCIvLyBidWlsdFwiKTtcbiAgICAgIHN5bWxpbmtTeW5jKGpvaW4oYnVpbHRTdGF0aWMsIFwiY2h1bmtzXCIpLCBqb2luKGJ1aWx0U3RhdGljLCBcImFsaWFzXCIpKTtcbiAgICAgIGNvbnN0IHNoYWRvd0RpciA9IGpvaW4oYnVpbGREaXJlY3RvcnksIFwicHVibGljXCIsIFwiX25leHRcIiwgXCJzdGF0aWNcIik7XG4gICAgICBta2RpclN5bmMoam9pbihzaGFkb3dEaXIsIFwiYWxpYXNcIiksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgd3JpdGVGaWxlU3luYyhqb2luKHNoYWRvd0RpciwgXCJhbGlhc1wiLCBcImEuanNcIiksIFwiLy8gc2hhZG93ZWRcIik7XG4gICAgICB3cml0ZUZpbGVTeW5jKGpvaW4oYnVpbGREaXJlY3RvcnksIFwicHVibGljXCIsIFwibG9nby5wbmdcIiksIFwicG5nXCIpO1xuICAgICAgY29uc3Qgc3RhdGljQXNzZXRzID0gY3JlYXRlU3RhdGljQXNzZXRzKHt9KTtcblxuICAgICAgY29uc3Qgc3RhZ2VkID0gc3RhZ2VkRGlyKHN0YXRpY0Fzc2V0cy5wdWJsaWNEZXBsb3ltZW50ISk7XG4gICAgICBleHBlY3QoZXhpc3RzU3luYyhqb2luKHN0YWdlZCwgXCJfbmV4dFwiLCBcInN0YXRpY1wiLCBcImFsaWFzXCIsIFwiYS5qc1wiKSkpLnRvQmUoXG4gICAgICAgIGZhbHNlLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwibGVhdmVzIG91dCBhIHNoYWRvd2VkIGZpbGUgdW5kZXIgYSBzeW1saW5rZWQgcHVibGljLyBkaXJlY3RvcnlcIiwgKCkgPT4ge1xuICAgICAga2VlcFN0YWdpbmcoKTtcbiAgICAgIGNvbnN0IGxpbmtlZCA9IGpvaW4oYnVpbGREaXJlY3RvcnksIFwibGlua2VkLXN0YXRpY1wiKTtcbiAgICAgIG1rZGlyU3luYyhsaW5rZWQpO1xuICAgICAgd3JpdGVGaWxlU3luYyhqb2luKGxpbmtlZCwgXCJjaHVuay5qc1wiKSwgXCIvLyBzaGFkb3dlZFwiKTtcbiAgICAgIHdyaXRlRmlsZVN5bmMoam9pbihsaW5rZWQsIFwibGVnYWN5LmpzXCIpLCBcIi8vIHB1YmxpYyBvbmx5XCIpO1xuICAgICAgbWtkaXJTeW5jKGpvaW4oYnVpbGREaXJlY3RvcnksIFwicHVibGljXCIsIFwiX25leHRcIiksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgc3ltbGlua1N5bmMobGlua2VkLCBqb2luKGJ1aWxkRGlyZWN0b3J5LCBcInB1YmxpY1wiLCBcIl9uZXh0XCIsIFwic3RhdGljXCIpKTtcbiAgICAgIGNvbnN0IHN0YXRpY0Fzc2V0cyA9IGNyZWF0ZVN0YXRpY0Fzc2V0cyh7fSk7XG5cbiAgICAgIGNvbnN0IHN0YWdlZCA9IHN0YWdlZERpcihzdGF0aWNBc3NldHMucHVibGljRGVwbG95bWVudCEpO1xuICAgICAgZXhwZWN0KGV4aXN0c1N5bmMoam9pbihzdGFnZWQsIFwiX25leHRcIiwgXCJzdGF0aWNcIiwgXCJjaHVuay5qc1wiKSkpLnRvQmUoXG4gICAgICAgIGZhbHNlLFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChleGlzdHNTeW5jKGpvaW4oc3RhZ2VkLCBcIl9uZXh0XCIsIFwic3RhdGljXCIsIFwibGVnYWN5LmpzXCIpKSkudG9CZShcbiAgICAgICAgdHJ1ZSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcImxpc3RzIGEgLm5leHQvc3RhdGljIGhvbGRpbmcgYSBsaW5rIGxvb3BcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbHRTdGF0aWMgPSBqb2luKGJ1aWxkRGlyZWN0b3J5LCBcIi5uZXh0XCIsIFwic3RhdGljXCIpO1xuICAgICAgc3ltbGlua1N5bmMoam9pbihidWlsdFN0YXRpYywgXCJsb29wXCIpLCBqb2luKGJ1aWx0U3RhdGljLCBcImxvb3BcIikpO1xuICAgICAgd3JpdGVQdWJsaWNGaWxlKCk7XG5cbiAgICAgIGV4cGVjdCgoKSA9PiBjcmVhdGVTdGF0aWNBc3NldHMoe30pKS5ub3QudG9UaHJvdygvRUxPT1AvKTtcbiAgICB9KTtcblxuICAgIC8vIENoZWNrcyB0aGUgZGlyZWN0b3JpZXMgdGhpcyBjb25zdHJ1Y3Qgc3RhZ2VkLCBub3QgYSBiZWZvcmUvYWZ0ZXIgbGlzdGluZ1xuICAgIC8vIG9mIGBvcy50bXBkaXIoKWA6IGplc3QgcnVucyBvdGhlciBmaWxlcyBpbiBwYXJhbGxlbCB3b3JrZXJzLCBhbmQgYW55IG9mXG4gICAgLy8gdGhlbSB0aGF0IGJ1aWxkcyBhIGBOZXh0anNTdGF0aWNBc3NldHNgIChgdGVzdC9yb290LWNvbnN0cnVjdHMudGVzdC50c2AsXG4gICAgLy8gZm9yIG9uZSkgc3RhZ2VzIGBuZXh0anMtYXNzZXRzLSpgIGRpcmVjdG9yaWVzIGludG8gdGhlIHNhbWUgdGVtcFxuICAgIC8vIGRpcmVjdG9yeSB3aGlsZSB0aGlzIHJ1bnMsIHdoaWNoIHRoZSBsaXN0aW5nIGNvdW50ZWQgYXMgbGVha2VkLlxuICAgIGl0KFwicmVtb3ZlcyB0aGUgc3RhZ2luZyBkaXJlY3RvcmllcyB3aGVuIGEgZGVwbG95bWVudCBmYWlsc1wiLCAoKSA9PiB7XG4gICAgICB3cml0ZVB1YmxpY0ZpbGUoKTtcbiAgICAgIGNvbnN0IHByb3RvID0gTmV4dGpzU3RhdGljQXNzZXRzLnByb3RvdHlwZSBhcyBhbnk7XG4gICAgICBjb25zdCBzdGFnZURpcmVjdG9yeSA9IHByb3RvLnN0YWdlRGlyZWN0b3J5O1xuICAgICAgY29uc3Qgc3RhZ2VkOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgamVzdC5zcHlPbihwcm90bywgXCJzdGFnZURpcmVjdG9yeVwiKS5tb2NrSW1wbGVtZW50YXRpb24oZnVuY3Rpb24gKFxuICAgICAgICB0aGlzOiB1bmtub3duLFxuICAgICAgICAuLi5hcmdzOiB1bmtub3duW11cbiAgICAgICkge1xuICAgICAgICBjb25zdCBkaXIgPSBzdGFnZURpcmVjdG9yeS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgaWYgKGRpcikgc3RhZ2VkLnB1c2goZGlyKTtcbiAgICAgICAgcmV0dXJuIGRpcjtcbiAgICAgIH0pO1xuICAgICAgamVzdC5zcHlPbihwcm90bywgXCJjcmVhdGVEZXBsb3ltZW50XCIpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImRlcGxveW1lbnQgZmFpbGVkXCIpO1xuICAgICAgfSk7XG4gICAgICB0cnkge1xuICAgICAgICBleHBlY3QoKCkgPT4gY3JlYXRlU3RhdGljQXNzZXRzKHt9KSkudG9UaHJvdyhcImRlcGxveW1lbnQgZmFpbGVkXCIpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgamVzdC5yZXN0b3JlQWxsTW9ja3MoKTtcbiAgICAgIH1cblxuICAgICAgLy8gYC5uZXh0L3N0YXRpY2AgYW5kIGBwdWJsaWNgLCBib3RoIHN0YWdlZCBiZWZvcmUgdGhlIGZpcnN0IGRlcGxveW1lbnQuXG4gICAgICBleHBlY3Qoc3RhZ2VkKS50b0hhdmVMZW5ndGgoMik7XG4gICAgICBleHBlY3Qoc3RhZ2VkLmZpbHRlcigoZGlyKSA9PiBleGlzdHNTeW5jKGRpcikpKS50b0VxdWFsKFtdKTtcbiAgICB9KTtcblxuICAgIGl0KFwicmVtb3ZlcyBpdHMgc3RhZ2luZyBkaXJlY3RvcmllcyBvbmNlIENESyBoYXMgY29waWVkIHRoZW1cIiwgKCkgPT4ge1xuICAgICAgd3JpdGVQdWJsaWNGaWxlKCk7XG4gICAgICBjb25zdCBzdGF0aWNBc3NldHMgPSBjcmVhdGVTdGF0aWNBc3NldHMoe30pO1xuXG4gICAgICBmb3IgKGNvbnN0IHVwbG9hZCBvZiBbXG4gICAgICAgIHN0YXRpY0Fzc2V0cy5zdGF0aWNEZXBsb3ltZW50ISxcbiAgICAgICAgc3RhdGljQXNzZXRzLnB1YmxpY0RlcGxveW1lbnQhLFxuICAgICAgXSkge1xuICAgICAgICBleHBlY3QoZXhpc3RzU3luYyhzdGFnZWREaXIodXBsb2FkKSkpLnRvQmUoZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gVGhlIGFzc2V0IG1hbmlmZXN0IHRoZW4gcG9pbnRzIGF0IHRoZSBzdGFnaW5nIGRpcmVjdG9yeSBpdHNlbGYuXG4gICAgaXQoXCJrZWVwcyB0aGVtIHdoZW4gYXNzZXQgc3RhZ2luZyBpcyBkaXNhYmxlZFwiLCAoKSA9PiB7XG4gICAgICBrZWVwU3RhZ2luZygpO1xuICAgICAgY29uc3Qgc3RhdGljQXNzZXRzID0gY3JlYXRlU3RhdGljQXNzZXRzKHt9KTtcblxuICAgICAgZXhwZWN0KGV4aXN0c1N5bmMoc3RhZ2VkRGlyKHN0YXRpY0Fzc2V0cy5zdGF0aWNEZXBsb3ltZW50ISkpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJmYWxscyBiYWNrIHRvIHRoZSBwdWJsaWMvIHVwbG9hZCBmb3IgYSBidWlsZCB3aXRob3V0IC5uZXh0L3N0YXRpY1wiLCAoKSA9PiB7XG4gICAgICBybVN5bmMoam9pbihidWlsZERpcmVjdG9yeSwgXCIubmV4dFwiKSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgICAgd3JpdGVQdWJsaWNGaWxlKCk7XG4gICAgICBjb25zdCBzdGF0aWNBc3NldHMgPSBjcmVhdGVTdGF0aWNBc3NldHMoe30pO1xuXG4gICAgICBleHBlY3Qoc3RhdGljQXNzZXRzLnN0YXRpY0RlcGxveW1lbnQpLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGV4cGVjdChzdGF0aWNBc3NldHMuZGVwbG95bWVudCkudG9CZShzdGF0aWNBc3NldHMucHVibGljRGVwbG95bWVudCk7XG4gICAgICBleHBlY3QoT2JqZWN0LmtleXMoZGVwbG95bWVudHMoKSkpLnRvRXF1YWwoW1wiUHVibGljRGVwbG95bWVudFwiXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiYnVja2V0RGVwbG95bWVudFByb3BzIHRoYXQgd291bGQgYnJlYWsgdGhlIG90aGVyIHVwbG9hZHNcIiwgKCkgPT4ge1xuICAgIGZ1bmN0aW9uIHdpdGhPdmVycmlkZXMoYnVja2V0RGVwbG95bWVudFByb3BzOiBvYmplY3QpIHtcbiAgICAgIHJldHVybiAoKSA9PlxuICAgICAgICBuZXcgTmV4dGpzU3RhdGljQXNzZXRzKHN0YWNrLCBcIk5leHRqc1N0YXRpY0Fzc2V0c1wiLCB7XG4gICAgICAgICAgYnVpbGREaXJlY3RvcnksXG4gICAgICAgICAgYnVpbGRJZDogXCJ0ZXN0LWJ1aWxkLWlkXCIsXG4gICAgICAgICAgb3ZlcnJpZGVzOiB7IGJ1Y2tldERlcGxveW1lbnRQcm9wczogYnVja2V0RGVwbG95bWVudFByb3BzIGFzIGFueSB9LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpdChcInJlamVjdHMgcHJ1bmU6IHRydWVcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdpdGhPdmVycmlkZXMoeyBwcnVuZTogdHJ1ZSB9KSkudG9UaHJvdygvYHBydW5lOiB0cnVlYC8pO1xuICAgIH0pO1xuXG4gICAgLy8gQ0RLJ3MgVXBkYXRlIHBhdGggZGVsZXRlcyB0aGUgb2xkIHByZWZpeCB3aXRob3V0IGNoZWNraW5nIHRoZSBidWNrZXQnc1xuICAgIC8vIG93bmVyLCByYWNpbmcgdGhlIG90aGVyIHVwbG9hZHMsIHNvIG5vIGJ1Y2tldCBpcyBzYWZlLlxuICAgIGl0KFwicmVqZWN0cyByZXRhaW5PbkRlbGV0ZTogZmFsc2VcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdpdGhPdmVycmlkZXMoeyByZXRhaW5PbkRlbGV0ZTogZmFsc2UgfSkpLnRvVGhyb3coXG4gICAgICAgIC9gcmV0YWluT25EZWxldGU6IGZhbHNlYC8sXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgLy8gVGhlIHR5cGUgcmVxdWlyZXMgYm90aCwgc28gYSB0eXBlZCBjYWxsZXIgYWx3YXlzIHBhc3NlcyB0aGVtLlxuICAgIGl0KFwiaWdub3JlcyBzb3VyY2VzIGFuZCBkZXN0aW5hdGlvbkJ1Y2tldFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBvdGhlciA9IEJ1Y2tldC5mcm9tQnVja2V0TmFtZShzdGFjaywgXCJPdGhlclwiLCBcIm90aGVyXCIpO1xuICAgICAgbmV3IE5leHRqc1N0YXRpY0Fzc2V0cyhzdGFjaywgXCJOZXh0anNTdGF0aWNBc3NldHNcIiwge1xuICAgICAgICBidWlsZERpcmVjdG9yeSxcbiAgICAgICAgYnVpbGRJZDogXCJ0ZXN0LWJ1aWxkLWlkXCIsXG4gICAgICAgIG92ZXJyaWRlczoge1xuICAgICAgICAgIGJ1Y2tldERlcGxveW1lbnRQcm9wczoge1xuICAgICAgICAgICAgc291cmNlczogW10sXG4gICAgICAgICAgICBkZXN0aW5hdGlvbkJ1Y2tldDogb3RoZXIsXG4gICAgICAgICAgICBjYWNoZUNvbnRyb2w6IFtDYWNoZUNvbnRyb2wuZnJvbVN0cmluZyhcInB1YmxpYywgbWF4LWFnZT02MFwiKV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBbdXBsb2FkXSA9IE9iamVjdC52YWx1ZXMoXG4gICAgICAgIFRlbXBsYXRlLmZyb21TdGFjayhzdGFjaykuZmluZFJlc291cmNlcyhcIkN1c3RvbTo6Q0RLQnVja2V0RGVwbG95bWVudFwiKSxcbiAgICAgICk7XG4gICAgICBleHBlY3QodXBsb2FkLlByb3BlcnRpZXMuU291cmNlT2JqZWN0S2V5cykudG9IYXZlTGVuZ3RoKDEpO1xuICAgICAgZXhwZWN0KEpTT04uc3RyaW5naWZ5KHVwbG9hZC5Qcm9wZXJ0aWVzLkRlc3RpbmF0aW9uQnVja2V0TmFtZSkpLnRvQ29udGFpbihcbiAgICAgICAgXCJOZXh0anNTdGF0aWNBc3NldHNCdWNrZXRcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICAvLyBBIEpTSUkgYmluZGluZyBjYW4gbWF0ZXJpYWxpemUgYW4gdW5zZXQgZmllbGQgYXMgYW4gZXhwbGljaXQgdW5kZWZpbmVkLlxuICAgIGl0KFwiYWxsb3dzIHRoZSBmaWVsZHMgd2hlbiB0aGV5IGFyZSBleHBsaWNpdGx5IHVuZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoXG4gICAgICAgIHdpdGhPdmVycmlkZXMoeyBwcnVuZTogdW5kZWZpbmVkLCBzb3VyY2VzOiB1bmRlZmluZWQgfSksXG4gICAgICApLm5vdC50b1Rocm93KCk7XG4gICAgICAvLyBOb3QgQ0RLJ3MgZGVmYXVsdCBgcHJ1bmU6IHRydWVgLCBub3IgYSBkZXBsb3ltZW50IHdpdGggbm8gc291cmNlcy5cbiAgICAgIGNvbnN0IFt1cGxvYWRdID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgICAgVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKS5maW5kUmVzb3VyY2VzKFwiQ3VzdG9tOjpDREtCdWNrZXREZXBsb3ltZW50XCIpLFxuICAgICAgKTtcbiAgICAgIGV4cGVjdCh1cGxvYWQuUHJvcGVydGllcy5QcnVuZSkudG9CZShmYWxzZSk7XG4gICAgICBleHBlY3QodXBsb2FkLlByb3BlcnRpZXMuU291cmNlT2JqZWN0S2V5cykudG9IYXZlTGVuZ3RoKDEpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -15,7 +15,7 @@ const base_path_1 = require("../utils/base-path");
|
|
|
15
15
|
* Base class for all Next.js root constructs
|
|
16
16
|
*/
|
|
17
17
|
class NextjsBaseConstruct extends constructs_1.Construct {
|
|
18
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsBaseConstruct", version: "0.7.
|
|
18
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsBaseConstruct", version: "0.7.13" };
|
|
19
19
|
nextjsBuild;
|
|
20
20
|
nextjsStaticAssets;
|
|
21
21
|
nextjsCache;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Distribution } from "aws-cdk-lib/aws-cloudfront";
|
|
1
|
+
import { Distribution, FunctionCode, IKeyValueStore } from "aws-cdk-lib/aws-cloudfront";
|
|
2
2
|
import { ICluster } from "aws-cdk-lib/aws-ecs";
|
|
3
3
|
import { IApplicationLoadBalancer } from "aws-cdk-lib/aws-elasticloadbalancingv2";
|
|
4
4
|
import { Construct } from "constructs";
|
|
@@ -61,6 +61,21 @@ export interface NextjsGlobalContainersProps extends NextjsBaseProps {
|
|
|
61
61
|
* Override props of any construct.
|
|
62
62
|
*/
|
|
63
63
|
readonly overrides?: NextjsGlobalContainersOverrides;
|
|
64
|
+
/**
|
|
65
|
+
* CloudFront Function code run first on every viewer request, static assets
|
|
66
|
+
* included — HTTP Basic auth on a pre-launch site, say. It must define
|
|
67
|
+
* `viewerRequest(event)`, as a function or a `var`/`let`/`const`.
|
|
68
|
+
* @see NextjsDistributionProps.viewerRequestFunctionCode
|
|
69
|
+
* @default - none
|
|
70
|
+
*/
|
|
71
|
+
readonly viewerRequestFunctionCode?: FunctionCode;
|
|
72
|
+
/**
|
|
73
|
+
* A CloudFront KeyValueStore `viewerRequestFunctionCode` can read with
|
|
74
|
+
* `cf.kvs()`, so credentials stay out of the template.
|
|
75
|
+
* @see NextjsDistributionProps.viewerRequestKeyValueStore
|
|
76
|
+
* @default - none
|
|
77
|
+
*/
|
|
78
|
+
readonly viewerRequestKeyValueStore?: IKeyValueStore;
|
|
64
79
|
}
|
|
65
80
|
/**
|
|
66
81
|
* Deploy Next.js globally distributed with containers. Uses [CloudFront
|
|
@@ -14,7 +14,7 @@ const base_path_1 = require("../utils/base-path");
|
|
|
14
14
|
* for containers.
|
|
15
15
|
*/
|
|
16
16
|
class NextjsGlobalContainers extends nextjs_base_construct_1.NextjsBaseConstruct {
|
|
17
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsGlobalContainers", version: "0.7.
|
|
17
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsGlobalContainers", version: "0.7.13" };
|
|
18
18
|
nextjsContainers;
|
|
19
19
|
nextjsDistribution;
|
|
20
20
|
nextjsPostDeploy;
|
|
@@ -78,9 +78,11 @@ class NextjsGlobalContainers extends nextjs_base_construct_1.NextjsBaseConstruct
|
|
|
78
78
|
nextjsType: this.nextjsType,
|
|
79
79
|
overrides: this.props.overrides?.nextjsDistribution,
|
|
80
80
|
publicDirEntries: this.nextjsBuild.publicDirEntries,
|
|
81
|
+
viewerRequestFunctionCode: this.props.viewerRequestFunctionCode,
|
|
82
|
+
viewerRequestKeyValueStore: this.props.viewerRequestKeyValueStore,
|
|
81
83
|
...this.props.overrides?.nextjsGlobalContainers?.nextjsDistributionProps,
|
|
82
84
|
});
|
|
83
85
|
}
|
|
84
86
|
}
|
|
85
87
|
exports.NextjsGlobalContainers = NextjsGlobalContainers;
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWdsb2JhbC1jb250YWluZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtZ2xvYmFsLWNvbnRhaW5lcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUlBLDRDQUEwQztBQUMxQyxtRUFLaUM7QUFHakMsMkVBRzZDO0FBQzdDLGdFQUdnQztBQUVoQyxrREFBOEM7QUEyRDlDOzs7OztHQUtHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSwyQ0FBbUI7O0lBQzdELGdCQUFnQixDQUFtQjtJQUNuQyxrQkFBa0IsQ0FBcUI7SUFDdkMsZ0JBQWdCLENBQW1CO0lBQ25DOzs7O09BSUc7SUFDSCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUEsb0JBQVEsRUFDYixXQUFXLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEVBQzVELElBQUksQ0FBQyxnQkFBZ0IsQ0FDdEIsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLLENBQThCO0lBRTNDLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQWtDO1FBRWxDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxzQkFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUMxRCxNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDO1FBQ25FLDJFQUEyRTtRQUMzRSx5RUFBeUU7UUFDekUsd0VBQXdFO1FBQ3hFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDakQsWUFBWSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUM3Qyw0QkFBNEIsRUFDNUIsWUFBWSxDQUFDLGNBQWMsQ0FDNUIsQ0FBQztRQUNGLHVFQUF1RTtRQUN2RSwrREFBK0Q7UUFDL0Qsc0RBQXNEO1FBQ3RELGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQzdDLG1DQUFtQyxFQUNuQyxHQUFHLENBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQ2pELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQ3JDLENBQUM7SUFDSixDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLDRDQUE0QztRQUM1QyxPQUFPLElBQUksb0NBQWdCLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ3BELEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQzFCLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUc7WUFDbkIsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYztZQUN6QyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVO1lBQ2pDLGVBQWUsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDekUsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0I7WUFDakUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0I7WUFDdkQsU0FBUyxFQUFFO2dCQUNULEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCO2dCQUN6QyxlQUFlLEVBQUU7b0JBQ2YsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlO29CQUMxRCxvRUFBb0U7b0JBQ3BFLG1FQUFtRTtvQkFDbkUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQzNEO2FBQ0Y7WUFDRCxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQjtTQUN2RSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLE9BQU8sSUFBSSx3Q0FBa0IsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDeEQsWUFBWSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNO1lBQzVDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QjtZQUN2RCxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUMvQixXQUFXLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFdBQVc7WUFDaEUsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTtZQUNyQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFlBQVk7WUFDbEUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxrQkFBa0I7WUFDbkQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0I7WUFDbkQsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUI7U0FDekUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF0Rkgsd0RBdUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlzdHJpYnV0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCI7XG5pbXBvcnQgeyBJQ2x1c3RlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNzXCI7XG5pbXBvcnQgeyBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBOZXh0anNUeXBlIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZU92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdCxcbiAgTmV4dGpzQmFzZVByb3BzLFxufSBmcm9tIFwiLi9uZXh0anMtYmFzZS1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IE9wdGlvbmFsTmV4dGpzQ29udGFpbmVyc1Byb3BzIH0gZnJvbSBcIi4uL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzQ29udGFpbmVyc1Byb3BzXCI7XG5pbXBvcnQgeyBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzIH0gZnJvbSBcIi4uL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHNcIjtcbmltcG9ydCB7XG4gIE5leHRqc0NvbnRhaW5lcnMsXG4gIE5leHRqc0NvbnRhaW5lcnNPdmVycmlkZXMsXG59IGZyb20gXCIuLi9uZXh0anMtY29tcHV0ZS9uZXh0anMtY29udGFpbmVyc1wiO1xuaW1wb3J0IHtcbiAgTmV4dGpzRGlzdHJpYnV0aW9uLFxuICBOZXh0anNEaXN0cmlidXRpb25PdmVycmlkZXMsXG59IGZyb20gXCIuLi9uZXh0anMtZGlzdHJpYnV0aW9uXCI7XG5pbXBvcnQgeyBOZXh0anNQb3N0RGVwbG95IH0gZnJvbSBcIi4uL25leHRqcy1wb3N0LWRlcGxveVwiO1xuaW1wb3J0IHsgam9pblBhdGggfSBmcm9tIFwiLi4vdXRpbHMvYmFzZS1wYXRoXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzR2xvYmFsQ29udGFpbmVyc0NvbnN0cnVjdE92ZXJyaWRlcyBleHRlbmRzIE5leHRqc0Jhc2VDb25zdHJ1Y3RPdmVycmlkZXMge1xuICByZWFkb25seSBuZXh0anNDb250YWluZXJzUHJvcHM/OiBPcHRpb25hbE5leHRqc0NvbnRhaW5lcnNQcm9wcztcbiAgcmVhZG9ubHkgbmV4dGpzRGlzdHJpYnV0aW9uUHJvcHM/OiBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzO1xufVxuXG4vKipcbiAqIE92ZXJyaWRlcyBmb3IgYE5leHRqc0dsb2JhbENvbnRhaW5lcnNgLiBPdmVycmlkZXMgYXJlIGxvd2VyIGxldmVsIHRoYW5cbiAqIHByb3BzIGFuZCBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIENESyBDb25zdHJ1Y3RzIGdpdmluZyB5b3UgbW9yZSBjb250cm9sLiBJdCdzXG4gKiByZWNvbW1lbmRlZCB0byB1c2UgY2F1dGlvbiBhbmQgcmV2aWV3IHNvdXJjZSBjb2RlIHNvIHlvdSBrbm93IGhvdyB0aGV5J3JlIHVzZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzR2xvYmFsQ29udGFpbmVyc092ZXJyaWRlcyBleHRlbmRzIE5leHRqc0Jhc2VPdmVycmlkZXMge1xuICByZWFkb25seSBuZXh0anNHbG9iYWxDb250YWluZXJzPzogTmV4dGpzR2xvYmFsQ29udGFpbmVyc0NvbnN0cnVjdE92ZXJyaWRlcztcbiAgcmVhZG9ubHkgbmV4dGpzQ29udGFpbmVycz86IE5leHRqc0NvbnRhaW5lcnNPdmVycmlkZXM7XG4gIHJlYWRvbmx5IG5leHRqc0Rpc3RyaWJ1dGlvbj86IE5leHRqc0Rpc3RyaWJ1dGlvbk92ZXJyaWRlcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNHbG9iYWxDb250YWluZXJzUHJvcHMgZXh0ZW5kcyBOZXh0anNCYXNlUHJvcHMge1xuICAvKipcbiAgICogQnJpbmcgeW91ciBvd24gQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlci4gV2hlbiBwcm92aWRlZCwgaXQgaXMgcGFzc2VkXG4gICAqIGRpcmVjdGx5IHRvIGBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZEZhcmdhdGVTZXJ2aWNlYC4gSWYgdGhlIEFMQiBhbHJlYWR5XG4gICAqIGhhcyBhIGxpc3RlbmVyIG9uIHBvcnQgODAsIGNhbGwgYHJlbW92ZUF1dG9DcmVhdGVkTGlzdGVuZXIoKWAgYWZ0ZXJcbiAgICogY29uc3RydWN0aW9uIHRvIGF2b2lkIGRlcGxveW1lbnQgZmFpbHVyZXMuXG4gICAqL1xuICByZWFkb25seSBhbGI/OiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXI7XG4gIC8qKlxuICAgKiBCcmluZyB5b3VyIG93biBkaXN0cmlidXRpb24uIENhbiBiZSB1c2VkIHdpdGggYGJhc2VQYXRoYCB0byBob3N0IG11bHRpcGxlXG4gICAqIGFwcHMgb24gdGhlIHNhbWUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24uXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb24/OiBEaXN0cmlidXRpb247XG4gIC8qKlxuICAgKiBCcmluZyB5b3VyIG93biBFQ1MgY2x1c3Rlci4gV2hlbiBwcm92aWRlZCwgY2RrLW5leHRqcyB3aWxsIHNraXAgY3JlYXRpbmdcbiAgICogYSBuZXcgY2x1c3RlciBhbmQgVlBDIGdhdGV3YXkgZW5kcG9pbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgZWNzQ2x1c3Rlcj86IElDbHVzdGVyO1xuICAvKipcbiAgICogUGF0aCB0byBBUEkgUm91dGUgSGFuZGxlciB0aGF0IHJldHVybnMgSFRUUCAyMDAgdG8gZW5zdXJlIGNvbXB1dGUgaGVhbHRoLlxuICAgKiBVc2VkIGJ5IHRoZSBBTEIgdGFyZ2V0IGdyb3VwIGFuZCB0aGUgRUNTIGNvbnRhaW5lciBoZWFsdGggY2hlY2ssIGJvdGggb2ZcbiAgICogd2hpY2ggaGF2ZSB0byBiZSBhYmxlIHRvIHRlbGwgYSBydW5uaW5nIHRhc2sgZnJvbSBhIHdlZGdlZCBvbmUuXG4gICAqXG4gICAqIEdpdmUgdGhlIHBhdGggYXMgeW91ciBhcHAgcm91dGVzIGl0LCB3aXRob3V0IHlvdXIgYXBwJ3MgYGJhc2VQYXRoYCDigJRcbiAgICogY2RrLW5leHRqcyBhZGRzIHRoYXQgcHJlZml4LCBzaW5jZSBib3RoIGNoZWNrcyBoaXQgdGhlIGFwcCBkaXJlY3RseS5cbiAgICogQGV4YW1wbGUgXCIvYXBpL2hlYWx0aFwiXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIGFwaS9oZWFsdGgvcm91dGUudHNcbiAgICogaW1wb3J0IHsgTmV4dFJlc3BvbnNlIH0gZnJvbSBcIm5leHQvc2VydmVyXCI7XG4gICAqXG4gICAqIGV4cG9ydCBmdW5jdGlvbiBHRVQoKSB7XG4gICAqICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKFwiXCIpO1xuICAgKiB9XG4gICAqL1xuICByZWFkb25seSBoZWFsdGhDaGVja1BhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHByb3BzIG9mIGFueSBjb25zdHJ1Y3QuXG4gICAqL1xuICByZWFkb25seSBvdmVycmlkZXM/OiBOZXh0anNHbG9iYWxDb250YWluZXJzT3ZlcnJpZGVzO1xufVxuXG4vKipcbiAqIERlcGxveSBOZXh0LmpzIGdsb2JhbGx5IGRpc3RyaWJ1dGVkIHdpdGggY29udGFpbmVycy4gVXNlcyBbQ2xvdWRGcm9udFxuICogRGlzdHJpYnV0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRGcm9udC9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvZGlzdHJpYnV0aW9uLXdvcmtpbmctd2l0aC5odG1sKVxuICogYXMgQ29udGVudCBEZWxpdmVyeSBOZXR3b3JrIChDRE4pIGZvciBnbG9iYWwgZGlzdHJpYnV0aW9uIGFuZCBbQVdTIEZhcmdhdGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL0FXU19GYXJnYXRlLmh0bWwpXG4gKiBmb3IgY29udGFpbmVycy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5leHRqc0dsb2JhbENvbnRhaW5lcnMgZXh0ZW5kcyBOZXh0anNCYXNlQ29uc3RydWN0IHtcbiAgbmV4dGpzQ29udGFpbmVyczogTmV4dGpzQ29udGFpbmVycztcbiAgbmV4dGpzRGlzdHJpYnV0aW9uOiBOZXh0anNEaXN0cmlidXRpb247XG4gIG5leHRqc1Bvc3REZXBsb3k6IE5leHRqc1Bvc3REZXBsb3k7XG4gIC8qKlxuICAgKiBQdWJsaWMgVVJMIG9mIHRoZSBhcHAsIGluY2x1ZGluZyBgYmFzZVBhdGhgIOKAlCB0aGUgYXBwIG9ubHkgYW5zd2VycyB1bmRlclxuICAgKiB0aGF0IHByZWZpeCwgYW5kIGl0J3MgZGVyaXZlZCBmcm9tIHRoZSBhcHAncyBvd24gYGJhc2VQYXRoYCB3aGVuIHRoZSBwcm9wIGlzXG4gICAqIGxlZnQgdW5zZXQsIHNvIGl0J3MgdGhlcmUgd2hldGhlciBvciBub3QgeW91IGFza2VkIGZvciBpdC5cbiAgICovXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gam9pblBhdGgoXG4gICAgICBgaHR0cHM6Ly8ke3RoaXMubmV4dGpzRGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbi5kb21haW5OYW1lfWAsXG4gICAgICB0aGlzLnJlc29sdmVkQmFzZVBhdGgsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvcHM6IE5leHRqc0dsb2JhbENvbnRhaW5lcnNQcm9wcztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IE5leHRqc0dsb2JhbENvbnRhaW5lcnNQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcywgTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSUyk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5uZXh0anNDb250YWluZXJzID0gdGhpcy5jcmVhdGVOZXh0anNDb250YWluZXJzKCk7XG4gICAgdGhpcy5uZXh0anNEaXN0cmlidXRpb24gPSB0aGlzLmNyZWF0ZU5leHRqc0Rpc3RyaWJ1dGlvbigpO1xuICAgIGNvbnN0IHsgdGFza0RlZmluaXRpb24gfSA9IHRoaXMubmV4dGpzQ29udGFpbmVycy5hbGJGYXJnYXRlU2VydmljZTtcbiAgICAvLyBMZXRzIG9uLWRlbWFuZCByZXZhbGlkYXRpb24gZXZpY3Qgc3RhbGUgcmVzcG9uc2VzIGZyb20gdGhlIENETiBlZGdlLCBub3RcbiAgICAvLyBqdXN0IHRoZSBvcmlnaW4ncyBjYWNoZS4gVGhlIG9yaWdpbiBpcyB0aGUgQUxCLCB3aGljaCB0aGUgdGFzayBkb2Vzbid0XG4gICAgLy8gZGVwZW5kIG9uLCBzbyBuYW1pbmcgdGhlIGRpc3RyaWJ1dGlvbiBoZXJlIG1ha2VzIG5vIGRlcGVuZGVuY3kgY3ljbGUuXG4gICAgY29uc3QgeyBkaXN0cmlidXRpb24gfSA9IHRoaXMubmV4dGpzRGlzdHJpYnV0aW9uO1xuICAgIGRpc3RyaWJ1dGlvbi5ncmFudENyZWF0ZUludmFsaWRhdGlvbih0YXNrRGVmaW5pdGlvbi50YXNrUm9sZSk7XG4gICAgdGFza0RlZmluaXRpb24uZGVmYXVsdENvbnRhaW5lcj8uYWRkRW52aXJvbm1lbnQoXG4gICAgICBcIkNES19ORVhUSlNfRElTVFJJQlVUSU9OX0lEXCIsXG4gICAgICBkaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uSWQsXG4gICAgKTtcbiAgICAvLyBUaGUgQUxCIGlzIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBkaXN0cmlidXRpb24ncyBWUEMgb3JpZ2luIGFsb25lLCBzb1xuICAgIC8vIGBDbG91ZEZyb250LUZvcndhcmRlZC1Qcm90b2AgaXMgYWx3YXlzIENsb3VkRnJvbnQncyBvd247IHNlZVxuICAgIC8vIGB2aWV3ZXJIZWFkZXJzYCBpbiBzcmMvcnVudGltZS9odHRwL25vZGUtc2VydmVyLnRzLlxuICAgIHRhc2tEZWZpbml0aW9uLmRlZmF1bHRDb250YWluZXI/LmFkZEVudmlyb25tZW50KFxuICAgICAgXCJDREtfTkVYVEpTX1RSVVNUX0NMT1VERlJPTlRfUFJPVE9cIixcbiAgICAgIFwiMVwiLFxuICAgICk7XG4gICAgdGhpcy5uZXh0anNQb3N0RGVwbG95ID0gdGhpcy5jcmVhdGVOZXh0anNQb3N0RGVwbG95KFxuICAgICAgdGhpcy5uZXh0anNEaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5leHRqc0NvbnRhaW5lcnMoKTogTmV4dGpzQ29udGFpbmVycyB7XG4gICAgLy8gQ3JlYXRlIGNvbnRhaW5lcnMgd2l0aCBsb2NhbCBidWlsZCBvdXRwdXRcbiAgICByZXR1cm4gbmV3IE5leHRqc0NvbnRhaW5lcnModGhpcywgXCJOZXh0anNDb250YWluZXJzXCIsIHtcbiAgICAgIC4uLnRoaXMuY29tcHV0ZUJhc2VQcm9wcygpLFxuICAgICAgYWxiOiB0aGlzLnByb3BzLmFsYixcbiAgICAgIGJ1aWxkRGlyZWN0b3J5OiB0aGlzLnByb3BzLmJ1aWxkRGlyZWN0b3J5LFxuICAgICAgZWNzQ2x1c3RlcjogdGhpcy5wcm9wcy5lY3NDbHVzdGVyLFxuICAgICAgaGVhbHRoQ2hlY2tQYXRoOiB0aGlzLnJlc29sdmVkSGVhbHRoQ2hlY2tQYXRoKHRoaXMucHJvcHMuaGVhbHRoQ2hlY2tQYXRoKSxcbiAgICAgIHJlbGF0aXZlRW50cnlwb2ludFBhdGg6IHRoaXMubmV4dGpzQnVpbGQucmVsYXRpdmVQYXRoVG9FbnRyeXBvaW50LFxuICAgICAgcmVsYXRpdmVQcm9qZWN0RGlyOiB0aGlzLm5leHRqc0J1aWxkLnJlbGF0aXZlUHJvamVjdERpcixcbiAgICAgIG92ZXJyaWRlczoge1xuICAgICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8ubmV4dGpzQ29udGFpbmVycyxcbiAgICAgICAgZWNzQ2x1c3RlclByb3BzOiB7XG4gICAgICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc0NvbnRhaW5lcnM/LmVjc0NsdXN0ZXJQcm9wcyxcbiAgICAgICAgICAvLyBDb25kaXRpb25hbCBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIHRoZSBGdW5jdGlvbnMnIGB2cGNgOiBhc3NpZ25lZFxuICAgICAgICAgIC8vIHVuY29uZGl0aW9uYWxseSwgYW4gdW5zZXQgYHZwY2AgcHJvcCB3b3VsZCBlcmFzZSB0aGUgb3ZlcnJpZGUncy5cbiAgICAgICAgICAuLi4odGhpcy5iYXNlUHJvcHMudnBjID8geyB2cGM6IHRoaXMuYmFzZVByb3BzLnZwYyB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5uZXh0anNHbG9iYWxDb250YWluZXJzPy5uZXh0anNDb250YWluZXJzUHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5leHRqc0Rpc3RyaWJ1dGlvbigpIHtcbiAgICByZXR1cm4gbmV3IE5leHRqc0Rpc3RyaWJ1dGlvbih0aGlzLCBcIk5leHRqc0Rpc3RyaWJ1dGlvblwiLCB7XG4gICAgICBhc3NldHNCdWNrZXQ6IHRoaXMubmV4dGpzU3RhdGljQXNzZXRzLmJ1Y2tldCxcbiAgICAgIGFzc2V0UHJlZml4OiB0aGlzLm5leHRqc0J1aWxkLm5leHRDb25maWdBc3NldFByZWZpeFBhdGgsXG4gICAgICBiYXNlUGF0aDogdGhpcy5yZXNvbHZlZEJhc2VQYXRoLFxuICAgICAgY2VydGlmaWNhdGU6IHRoaXMubmV4dGpzQ29udGFpbmVycy5hbGJGYXJnYXRlU2VydmljZS5jZXJ0aWZpY2F0ZSxcbiAgICAgIGRpc3RyaWJ1dGlvbjogdGhpcy5wcm9wcy5kaXN0cmlidXRpb24sXG4gICAgICBsb2FkQmFsYW5jZXI6IHRoaXMubmV4dGpzQ29udGFpbmVycy5hbGJGYXJnYXRlU2VydmljZS5sb2FkQmFsYW5jZXIsXG4gICAgICBuZXh0anNUeXBlOiB0aGlzLm5leHRqc1R5cGUsXG4gICAgICBvdmVycmlkZXM6IHRoaXMucHJvcHMub3ZlcnJpZGVzPy5uZXh0anNEaXN0cmlidXRpb24sXG4gICAgICBwdWJsaWNEaXJFbnRyaWVzOiB0aGlzLm5leHRqc0J1aWxkLnB1YmxpY0RpckVudHJpZXMsXG4gICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8ubmV4dGpzR2xvYmFsQ29udGFpbmVycz8ubmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWdsb2JhbC1jb250YWluZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtZ2xvYmFsLWNvbnRhaW5lcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQVFBLDRDQUEwQztBQUMxQyxtRUFLaUM7QUFHakMsMkVBRzZDO0FBQzdDLGdFQUdnQztBQUVoQyxrREFBOEM7QUEwRTlDOzs7OztHQUtHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSwyQ0FBbUI7O0lBQzdELGdCQUFnQixDQUFtQjtJQUNuQyxrQkFBa0IsQ0FBcUI7SUFDdkMsZ0JBQWdCLENBQW1CO0lBQ25DOzs7O09BSUc7SUFDSCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUEsb0JBQVEsRUFDYixXQUFXLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEVBQzVELElBQUksQ0FBQyxnQkFBZ0IsQ0FDdEIsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLLENBQThCO0lBRTNDLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQWtDO1FBRWxDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxzQkFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUMxRCxNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDO1FBQ25FLDJFQUEyRTtRQUMzRSx5RUFBeUU7UUFDekUsd0VBQXdFO1FBQ3hFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDakQsWUFBWSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUM3Qyw0QkFBNEIsRUFDNUIsWUFBWSxDQUFDLGNBQWMsQ0FDNUIsQ0FBQztRQUNGLHVFQUF1RTtRQUN2RSwrREFBK0Q7UUFDL0Qsc0RBQXNEO1FBQ3RELGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQzdDLG1DQUFtQyxFQUNuQyxHQUFHLENBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQ2pELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQ3JDLENBQUM7SUFDSixDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLDRDQUE0QztRQUM1QyxPQUFPLElBQUksb0NBQWdCLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ3BELEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQzFCLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUc7WUFDbkIsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYztZQUN6QyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVO1lBQ2pDLGVBQWUsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDekUsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0I7WUFDakUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0I7WUFDdkQsU0FBUyxFQUFFO2dCQUNULEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCO2dCQUN6QyxlQUFlLEVBQUU7b0JBQ2YsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlO29CQUMxRCxvRUFBb0U7b0JBQ3BFLG1FQUFtRTtvQkFDbkUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQzNEO2FBQ0Y7WUFDRCxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQjtTQUN2RSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLE9BQU8sSUFBSSx3Q0FBa0IsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDeEQsWUFBWSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNO1lBQzVDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QjtZQUN2RCxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUMvQixXQUFXLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFdBQVc7WUFDaEUsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTtZQUNyQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFlBQVk7WUFDbEUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxrQkFBa0I7WUFDbkQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0I7WUFDbkQseUJBQXlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyx5QkFBeUI7WUFDL0QsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQywwQkFBMEI7WUFDakUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUI7U0FDekUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF4Rkgsd0RBeUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlzdHJpYnV0aW9uLFxuICBGdW5jdGlvbkNvZGUsXG4gIElLZXlWYWx1ZVN0b3JlLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcbmltcG9ydCB7IElDbHVzdGVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCB7IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2MlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IE5leHRqc1R5cGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBOZXh0anNCYXNlQ29uc3RydWN0T3ZlcnJpZGVzLFxuICBOZXh0anNCYXNlT3ZlcnJpZGVzLFxuICBOZXh0anNCYXNlQ29uc3RydWN0LFxuICBOZXh0anNCYXNlUHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1iYXNlLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHMgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHNcIjtcbmltcG9ydCB7IE9wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wc1wiO1xuaW1wb3J0IHtcbiAgTmV4dGpzQ29udGFpbmVycyxcbiAgTmV4dGpzQ29udGFpbmVyc092ZXJyaWRlcyxcbn0gZnJvbSBcIi4uL25leHRqcy1jb21wdXRlL25leHRqcy1jb250YWluZXJzXCI7XG5pbXBvcnQge1xuICBOZXh0anNEaXN0cmlidXRpb24sXG4gIE5leHRqc0Rpc3RyaWJ1dGlvbk92ZXJyaWRlcyxcbn0gZnJvbSBcIi4uL25leHRqcy1kaXN0cmlidXRpb25cIjtcbmltcG9ydCB7IE5leHRqc1Bvc3REZXBsb3kgfSBmcm9tIFwiLi4vbmV4dGpzLXBvc3QtZGVwbG95XCI7XG5pbXBvcnQgeyBqb2luUGF0aCB9IGZyb20gXCIuLi91dGlscy9iYXNlLXBhdGhcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNHbG9iYWxDb250YWluZXJzQ29uc3RydWN0T3ZlcnJpZGVzIGV4dGVuZHMgTmV4dGpzQmFzZUNvbnN0cnVjdE92ZXJyaWRlcyB7XG4gIHJlYWRvbmx5IG5leHRqc0NvbnRhaW5lcnNQcm9wcz86IE9wdGlvbmFsTmV4dGpzQ29udGFpbmVyc1Byb3BzO1xuICByZWFkb25seSBuZXh0anNEaXN0cmlidXRpb25Qcm9wcz86IE9wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHM7XG59XG5cbi8qKlxuICogT3ZlcnJpZGVzIGZvciBgTmV4dGpzR2xvYmFsQ29udGFpbmVyc2AuIE92ZXJyaWRlcyBhcmUgbG93ZXIgbGV2ZWwgdGhhblxuICogcHJvcHMgYW5kIGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gQ0RLIENvbnN0cnVjdHMgZ2l2aW5nIHlvdSBtb3JlIGNvbnRyb2wuIEl0J3NcbiAqIHJlY29tbWVuZGVkIHRvIHVzZSBjYXV0aW9uIGFuZCByZXZpZXcgc291cmNlIGNvZGUgc28geW91IGtub3cgaG93IHRoZXkncmUgdXNlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXh0anNHbG9iYWxDb250YWluZXJzT3ZlcnJpZGVzIGV4dGVuZHMgTmV4dGpzQmFzZU92ZXJyaWRlcyB7XG4gIHJlYWRvbmx5IG5leHRqc0dsb2JhbENvbnRhaW5lcnM/OiBOZXh0anNHbG9iYWxDb250YWluZXJzQ29uc3RydWN0T3ZlcnJpZGVzO1xuICByZWFkb25seSBuZXh0anNDb250YWluZXJzPzogTmV4dGpzQ29udGFpbmVyc092ZXJyaWRlcztcbiAgcmVhZG9ubHkgbmV4dGpzRGlzdHJpYnV0aW9uPzogTmV4dGpzRGlzdHJpYnV0aW9uT3ZlcnJpZGVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc0dsb2JhbENvbnRhaW5lcnNQcm9wcyBleHRlbmRzIE5leHRqc0Jhc2VQcm9wcyB7XG4gIC8qKlxuICAgKiBCcmluZyB5b3VyIG93biBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyLiBXaGVuIHByb3ZpZGVkLCBpdCBpcyBwYXNzZWRcbiAgICogZGlyZWN0bHkgdG8gYEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkRmFyZ2F0ZVNlcnZpY2VgLiBJZiB0aGUgQUxCIGFscmVhZHlcbiAgICogaGFzIGEgbGlzdGVuZXIgb24gcG9ydCA4MCwgY2FsbCBgcmVtb3ZlQXV0b0NyZWF0ZWRMaXN0ZW5lcigpYCBhZnRlclxuICAgKiBjb25zdHJ1Y3Rpb24gdG8gYXZvaWQgZGVwbG95bWVudCBmYWlsdXJlcy5cbiAgICovXG4gIHJlYWRvbmx5IGFsYj86IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcjtcbiAgLyoqXG4gICAqIEJyaW5nIHlvdXIgb3duIGRpc3RyaWJ1dGlvbi4gQ2FuIGJlIHVzZWQgd2l0aCBgYmFzZVBhdGhgIHRvIGhvc3QgbXVsdGlwbGVcbiAgICogYXBwcyBvbiB0aGUgc2FtZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbj86IERpc3RyaWJ1dGlvbjtcbiAgLyoqXG4gICAqIEJyaW5nIHlvdXIgb3duIEVDUyBjbHVzdGVyLiBXaGVuIHByb3ZpZGVkLCBjZGstbmV4dGpzIHdpbGwgc2tpcCBjcmVhdGluZ1xuICAgKiBhIG5ldyBjbHVzdGVyIGFuZCBWUEMgZ2F0ZXdheSBlbmRwb2ludHMuXG4gICAqL1xuICByZWFkb25seSBlY3NDbHVzdGVyPzogSUNsdXN0ZXI7XG4gIC8qKlxuICAgKiBQYXRoIHRvIEFQSSBSb3V0ZSBIYW5kbGVyIHRoYXQgcmV0dXJucyBIVFRQIDIwMCB0byBlbnN1cmUgY29tcHV0ZSBoZWFsdGguXG4gICAqIFVzZWQgYnkgdGhlIEFMQiB0YXJnZXQgZ3JvdXAgYW5kIHRoZSBFQ1MgY29udGFpbmVyIGhlYWx0aCBjaGVjaywgYm90aCBvZlxuICAgKiB3aGljaCBoYXZlIHRvIGJlIGFibGUgdG8gdGVsbCBhIHJ1bm5pbmcgdGFzayBmcm9tIGEgd2VkZ2VkIG9uZS5cbiAgICpcbiAgICogR2l2ZSB0aGUgcGF0aCBhcyB5b3VyIGFwcCByb3V0ZXMgaXQsIHdpdGhvdXQgeW91ciBhcHAncyBgYmFzZVBhdGhgIOKAlFxuICAgKiBjZGstbmV4dGpzIGFkZHMgdGhhdCBwcmVmaXgsIHNpbmNlIGJvdGggY2hlY2tzIGhpdCB0aGUgYXBwIGRpcmVjdGx5LlxuICAgKiBAZXhhbXBsZSBcIi9hcGkvaGVhbHRoXCJcbiAgICogQGV4YW1wbGVcbiAgICogLy8gYXBpL2hlYWx0aC9yb3V0ZS50c1xuICAgKiBpbXBvcnQgeyBOZXh0UmVzcG9uc2UgfSBmcm9tIFwibmV4dC9zZXJ2ZXJcIjtcbiAgICpcbiAgICogZXhwb3J0IGZ1bmN0aW9uIEdFVCgpIHtcbiAgICogICByZXR1cm4gTmV4dFJlc3BvbnNlLmpzb24oXCJcIik7XG4gICAqIH1cbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aENoZWNrUGF0aDogc3RyaW5nO1xuICAvKipcbiAgICogT3ZlcnJpZGUgcHJvcHMgb2YgYW55IGNvbnN0cnVjdC5cbiAgICovXG4gIHJlYWRvbmx5IG92ZXJyaWRlcz86IE5leHRqc0dsb2JhbENvbnRhaW5lcnNPdmVycmlkZXM7XG4gIC8qKlxuICAgKiBDbG91ZEZyb250IEZ1bmN0aW9uIGNvZGUgcnVuIGZpcnN0IG9uIGV2ZXJ5IHZpZXdlciByZXF1ZXN0LCBzdGF0aWMgYXNzZXRzXG4gICAqIGluY2x1ZGVkIOKAlCBIVFRQIEJhc2ljIGF1dGggb24gYSBwcmUtbGF1bmNoIHNpdGUsIHNheS4gSXQgbXVzdCBkZWZpbmVcbiAgICogYHZpZXdlclJlcXVlc3QoZXZlbnQpYCwgYXMgYSBmdW5jdGlvbiBvciBhIGB2YXJgL2BsZXRgL2Bjb25zdGAuXG4gICAqIEBzZWUgTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMudmlld2VyUmVxdWVzdEZ1bmN0aW9uQ29kZVxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHZpZXdlclJlcXVlc3RGdW5jdGlvbkNvZGU/OiBGdW5jdGlvbkNvZGU7XG4gIC8qKlxuICAgKiBBIENsb3VkRnJvbnQgS2V5VmFsdWVTdG9yZSBgdmlld2VyUmVxdWVzdEZ1bmN0aW9uQ29kZWAgY2FuIHJlYWQgd2l0aFxuICAgKiBgY2Yua3ZzKClgLCBzbyBjcmVkZW50aWFscyBzdGF5IG91dCBvZiB0aGUgdGVtcGxhdGUuXG4gICAqIEBzZWUgTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMudmlld2VyUmVxdWVzdEtleVZhbHVlU3RvcmVcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSB2aWV3ZXJSZXF1ZXN0S2V5VmFsdWVTdG9yZT86IElLZXlWYWx1ZVN0b3JlO1xufVxuXG4vKipcbiAqIERlcGxveSBOZXh0LmpzIGdsb2JhbGx5IGRpc3RyaWJ1dGVkIHdpdGggY29udGFpbmVycy4gVXNlcyBbQ2xvdWRGcm9udFxuICogRGlzdHJpYnV0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRGcm9udC9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvZGlzdHJpYnV0aW9uLXdvcmtpbmctd2l0aC5odG1sKVxuICogYXMgQ29udGVudCBEZWxpdmVyeSBOZXR3b3JrIChDRE4pIGZvciBnbG9iYWwgZGlzdHJpYnV0aW9uIGFuZCBbQVdTIEZhcmdhdGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL0FXU19GYXJnYXRlLmh0bWwpXG4gKiBmb3IgY29udGFpbmVycy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5leHRqc0dsb2JhbENvbnRhaW5lcnMgZXh0ZW5kcyBOZXh0anNCYXNlQ29uc3RydWN0IHtcbiAgbmV4dGpzQ29udGFpbmVyczogTmV4dGpzQ29udGFpbmVycztcbiAgbmV4dGpzRGlzdHJpYnV0aW9uOiBOZXh0anNEaXN0cmlidXRpb247XG4gIG5leHRqc1Bvc3REZXBsb3k6IE5leHRqc1Bvc3REZXBsb3k7XG4gIC8qKlxuICAgKiBQdWJsaWMgVVJMIG9mIHRoZSBhcHAsIGluY2x1ZGluZyBgYmFzZVBhdGhgIOKAlCB0aGUgYXBwIG9ubHkgYW5zd2VycyB1bmRlclxuICAgKiB0aGF0IHByZWZpeCwgYW5kIGl0J3MgZGVyaXZlZCBmcm9tIHRoZSBhcHAncyBvd24gYGJhc2VQYXRoYCB3aGVuIHRoZSBwcm9wIGlzXG4gICAqIGxlZnQgdW5zZXQsIHNvIGl0J3MgdGhlcmUgd2hldGhlciBvciBub3QgeW91IGFza2VkIGZvciBpdC5cbiAgICovXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gam9pblBhdGgoXG4gICAgICBgaHR0cHM6Ly8ke3RoaXMubmV4dGpzRGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbi5kb21haW5OYW1lfWAsXG4gICAgICB0aGlzLnJlc29sdmVkQmFzZVBhdGgsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvcHM6IE5leHRqc0dsb2JhbENvbnRhaW5lcnNQcm9wcztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IE5leHRqc0dsb2JhbENvbnRhaW5lcnNQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcywgTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSUyk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5uZXh0anNDb250YWluZXJzID0gdGhpcy5jcmVhdGVOZXh0anNDb250YWluZXJzKCk7XG4gICAgdGhpcy5uZXh0anNEaXN0cmlidXRpb24gPSB0aGlzLmNyZWF0ZU5leHRqc0Rpc3RyaWJ1dGlvbigpO1xuICAgIGNvbnN0IHsgdGFza0RlZmluaXRpb24gfSA9IHRoaXMubmV4dGpzQ29udGFpbmVycy5hbGJGYXJnYXRlU2VydmljZTtcbiAgICAvLyBMZXRzIG9uLWRlbWFuZCByZXZhbGlkYXRpb24gZXZpY3Qgc3RhbGUgcmVzcG9uc2VzIGZyb20gdGhlIENETiBlZGdlLCBub3RcbiAgICAvLyBqdXN0IHRoZSBvcmlnaW4ncyBjYWNoZS4gVGhlIG9yaWdpbiBpcyB0aGUgQUxCLCB3aGljaCB0aGUgdGFzayBkb2Vzbid0XG4gICAgLy8gZGVwZW5kIG9uLCBzbyBuYW1pbmcgdGhlIGRpc3RyaWJ1dGlvbiBoZXJlIG1ha2VzIG5vIGRlcGVuZGVuY3kgY3ljbGUuXG4gICAgY29uc3QgeyBkaXN0cmlidXRpb24gfSA9IHRoaXMubmV4dGpzRGlzdHJpYnV0aW9uO1xuICAgIGRpc3RyaWJ1dGlvbi5ncmFudENyZWF0ZUludmFsaWRhdGlvbih0YXNrRGVmaW5pdGlvbi50YXNrUm9sZSk7XG4gICAgdGFza0RlZmluaXRpb24uZGVmYXVsdENvbnRhaW5lcj8uYWRkRW52aXJvbm1lbnQoXG4gICAgICBcIkNES19ORVhUSlNfRElTVFJJQlVUSU9OX0lEXCIsXG4gICAgICBkaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uSWQsXG4gICAgKTtcbiAgICAvLyBUaGUgQUxCIGlzIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBkaXN0cmlidXRpb24ncyBWUEMgb3JpZ2luIGFsb25lLCBzb1xuICAgIC8vIGBDbG91ZEZyb250LUZvcndhcmRlZC1Qcm90b2AgaXMgYWx3YXlzIENsb3VkRnJvbnQncyBvd247IHNlZVxuICAgIC8vIGB2aWV3ZXJIZWFkZXJzYCBpbiBzcmMvcnVudGltZS9odHRwL25vZGUtc2VydmVyLnRzLlxuICAgIHRhc2tEZWZpbml0aW9uLmRlZmF1bHRDb250YWluZXI/LmFkZEVudmlyb25tZW50KFxuICAgICAgXCJDREtfTkVYVEpTX1RSVVNUX0NMT1VERlJPTlRfUFJPVE9cIixcbiAgICAgIFwiMVwiLFxuICAgICk7XG4gICAgdGhpcy5uZXh0anNQb3N0RGVwbG95ID0gdGhpcy5jcmVhdGVOZXh0anNQb3N0RGVwbG95KFxuICAgICAgdGhpcy5uZXh0anNEaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5leHRqc0NvbnRhaW5lcnMoKTogTmV4dGpzQ29udGFpbmVycyB7XG4gICAgLy8gQ3JlYXRlIGNvbnRhaW5lcnMgd2l0aCBsb2NhbCBidWlsZCBvdXRwdXRcbiAgICByZXR1cm4gbmV3IE5leHRqc0NvbnRhaW5lcnModGhpcywgXCJOZXh0anNDb250YWluZXJzXCIsIHtcbiAgICAgIC4uLnRoaXMuY29tcHV0ZUJhc2VQcm9wcygpLFxuICAgICAgYWxiOiB0aGlzLnByb3BzLmFsYixcbiAgICAgIGJ1aWxkRGlyZWN0b3J5OiB0aGlzLnByb3BzLmJ1aWxkRGlyZWN0b3J5LFxuICAgICAgZWNzQ2x1c3RlcjogdGhpcy5wcm9wcy5lY3NDbHVzdGVyLFxuICAgICAgaGVhbHRoQ2hlY2tQYXRoOiB0aGlzLnJlc29sdmVkSGVhbHRoQ2hlY2tQYXRoKHRoaXMucHJvcHMuaGVhbHRoQ2hlY2tQYXRoKSxcbiAgICAgIHJlbGF0aXZlRW50cnlwb2ludFBhdGg6IHRoaXMubmV4dGpzQnVpbGQucmVsYXRpdmVQYXRoVG9FbnRyeXBvaW50LFxuICAgICAgcmVsYXRpdmVQcm9qZWN0RGlyOiB0aGlzLm5leHRqc0J1aWxkLnJlbGF0aXZlUHJvamVjdERpcixcbiAgICAgIG92ZXJyaWRlczoge1xuICAgICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8ubmV4dGpzQ29udGFpbmVycyxcbiAgICAgICAgZWNzQ2x1c3RlclByb3BzOiB7XG4gICAgICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc0NvbnRhaW5lcnM/LmVjc0NsdXN0ZXJQcm9wcyxcbiAgICAgICAgICAvLyBDb25kaXRpb25hbCBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIHRoZSBGdW5jdGlvbnMnIGB2cGNgOiBhc3NpZ25lZFxuICAgICAgICAgIC8vIHVuY29uZGl0aW9uYWxseSwgYW4gdW5zZXQgYHZwY2AgcHJvcCB3b3VsZCBlcmFzZSB0aGUgb3ZlcnJpZGUncy5cbiAgICAgICAgICAuLi4odGhpcy5iYXNlUHJvcHMudnBjID8geyB2cGM6IHRoaXMuYmFzZVByb3BzLnZwYyB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5uZXh0anNHbG9iYWxDb250YWluZXJzPy5uZXh0anNDb250YWluZXJzUHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5leHRqc0Rpc3RyaWJ1dGlvbigpIHtcbiAgICByZXR1cm4gbmV3IE5leHRqc0Rpc3RyaWJ1dGlvbih0aGlzLCBcIk5leHRqc0Rpc3RyaWJ1dGlvblwiLCB7XG4gICAgICBhc3NldHNCdWNrZXQ6IHRoaXMubmV4dGpzU3RhdGljQXNzZXRzLmJ1Y2tldCxcbiAgICAgIGFzc2V0UHJlZml4OiB0aGlzLm5leHRqc0J1aWxkLm5leHRDb25maWdBc3NldFByZWZpeFBhdGgsXG4gICAgICBiYXNlUGF0aDogdGhpcy5yZXNvbHZlZEJhc2VQYXRoLFxuICAgICAgY2VydGlmaWNhdGU6IHRoaXMubmV4dGpzQ29udGFpbmVycy5hbGJGYXJnYXRlU2VydmljZS5jZXJ0aWZpY2F0ZSxcbiAgICAgIGRpc3RyaWJ1dGlvbjogdGhpcy5wcm9wcy5kaXN0cmlidXRpb24sXG4gICAgICBsb2FkQmFsYW5jZXI6IHRoaXMubmV4dGpzQ29udGFpbmVycy5hbGJGYXJnYXRlU2VydmljZS5sb2FkQmFsYW5jZXIsXG4gICAgICBuZXh0anNUeXBlOiB0aGlzLm5leHRqc1R5cGUsXG4gICAgICBvdmVycmlkZXM6IHRoaXMucHJvcHMub3ZlcnJpZGVzPy5uZXh0anNEaXN0cmlidXRpb24sXG4gICAgICBwdWJsaWNEaXJFbnRyaWVzOiB0aGlzLm5leHRqc0J1aWxkLnB1YmxpY0RpckVudHJpZXMsXG4gICAgICB2aWV3ZXJSZXF1ZXN0RnVuY3Rpb25Db2RlOiB0aGlzLnByb3BzLnZpZXdlclJlcXVlc3RGdW5jdGlvbkNvZGUsXG4gICAgICB2aWV3ZXJSZXF1ZXN0S2V5VmFsdWVTdG9yZTogdGhpcy5wcm9wcy52aWV3ZXJSZXF1ZXN0S2V5VmFsdWVTdG9yZSxcbiAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5uZXh0anNHbG9iYWxDb250YWluZXJzPy5uZXh0anNEaXN0cmlidXRpb25Qcm9wcyxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Distribution } from "aws-cdk-lib/aws-cloudfront";
|
|
1
|
+
import { Distribution, FunctionCode, IKeyValueStore } from "aws-cdk-lib/aws-cloudfront";
|
|
2
2
|
import { Construct } from "constructs";
|
|
3
3
|
import { NextjsBaseConstructOverrides, NextjsBaseOverrides, NextjsBaseConstruct, NextjsBaseProps } from "./nextjs-base-construct";
|
|
4
4
|
import { OptionalNextjsDistributionProps } from "../generated-structs/OptionalNextjsDistributionProps";
|
|
@@ -41,6 +41,21 @@ export interface NextjsGlobalFunctionsProps extends NextjsBaseProps {
|
|
|
41
41
|
* Override props of any construct.
|
|
42
42
|
*/
|
|
43
43
|
readonly overrides?: NextjsGlobalFunctionsOverrides;
|
|
44
|
+
/**
|
|
45
|
+
* CloudFront Function code run first on every viewer request, static assets
|
|
46
|
+
* included — HTTP Basic auth on a pre-launch site, say. It must define
|
|
47
|
+
* `viewerRequest(event)`, as a function or a `var`/`let`/`const`.
|
|
48
|
+
* @see NextjsDistributionProps.viewerRequestFunctionCode
|
|
49
|
+
* @default - none
|
|
50
|
+
*/
|
|
51
|
+
readonly viewerRequestFunctionCode?: FunctionCode;
|
|
52
|
+
/**
|
|
53
|
+
* A CloudFront KeyValueStore `viewerRequestFunctionCode` can read with
|
|
54
|
+
* `cf.kvs()`, so credentials stay out of the template.
|
|
55
|
+
* @see NextjsDistributionProps.viewerRequestKeyValueStore
|
|
56
|
+
* @default - none
|
|
57
|
+
*/
|
|
58
|
+
readonly viewerRequestKeyValueStore?: IKeyValueStore;
|
|
44
59
|
}
|
|
45
60
|
/**
|
|
46
61
|
* Deploy Next.js globally distributed with functions. Uses [CloudFront
|
|
@@ -17,7 +17,7 @@ const base_path_1 = require("../utils/base-path");
|
|
|
17
17
|
* for functions.
|
|
18
18
|
*/
|
|
19
19
|
class NextjsGlobalFunctions extends nextjs_base_construct_1.NextjsBaseConstruct {
|
|
20
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsGlobalFunctions", version: "0.7.
|
|
20
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsGlobalFunctions", version: "0.7.13" };
|
|
21
21
|
nextjsFunctions;
|
|
22
22
|
nextjsDistribution;
|
|
23
23
|
nextjsPostDeploy;
|
|
@@ -101,9 +101,11 @@ class NextjsGlobalFunctions extends nextjs_base_construct_1.NextjsBaseConstruct
|
|
|
101
101
|
functionUrl: group.functionUrl,
|
|
102
102
|
})),
|
|
103
103
|
functionGroupBehaviors: this.nextjsBuild.functionGroupBehaviors,
|
|
104
|
+
viewerRequestFunctionCode: this.props.viewerRequestFunctionCode,
|
|
105
|
+
viewerRequestKeyValueStore: this.props.viewerRequestKeyValueStore,
|
|
104
106
|
...this.props.overrides?.nextjsGlobalFunctions?.nextjsDistributionProps,
|
|
105
107
|
});
|
|
106
108
|
}
|
|
107
109
|
}
|
|
108
110
|
exports.NextjsGlobalFunctions = NextjsGlobalFunctions;
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWdsb2JhbC1mdW5jdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1nbG9iYWwtZnVuY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2Q0FBb0M7QUFFcEMsaURBQThEO0FBRTlELGlEQUFzRDtBQUV0RCxnRUFBb0U7QUFDcEUsNENBQTBDO0FBQzFDLG1FQUtpQztBQU9qQyxnRUFHZ0M7QUFFaEMsa0RBQThDO0FBMEM5Qzs7Ozs7R0FLRztBQUNILE1BQWEscUJBQXNCLFNBQVEsMkNBQW1COztJQUM1RCxlQUFlLENBQWtCO0lBQ2pDLGtCQUFrQixDQUFxQjtJQUN2QyxnQkFBZ0IsQ0FBbUI7SUFDbkM7Ozs7T0FJRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBQSxvQkFBUSxFQUNiLFdBQVcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFDNUQsSUFBSSxDQUFDLGdCQUFnQixDQUN0QixDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBNkI7SUFFMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsc0JBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzFELDhFQUE4RTtRQUM5RSw0RUFBNEU7UUFDNUUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUN2RCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxD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U0FDeEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFwR0gsc0RBcUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IERpc3RyaWJ1dGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udFwiO1xuaW1wb3J0IHsgUG9saWN5LCBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgRnVuY3Rpb24gYXMgTGFtYmRhRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgU3RyaW5nUGFyYW1ldGVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zc21cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0ZVTkNUSU9OX0dST1VQIH0gZnJvbSBcIi4uL2FkYXB0ZXIvZnVuY3Rpb24tZ3JvdXBzXCI7XG5pbXBvcnQgeyBOZXh0anNUeXBlIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZU92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdCxcbiAgTmV4dGpzQmFzZVByb3BzLFxufSBmcm9tIFwiLi9uZXh0anMtYmFzZS1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IE9wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wc1wiO1xuaW1wb3J0IHtcbiAgTmV4dGpzRnVuY3Rpb25Hcm91cCxcbiAgTmV4dGpzRnVuY3Rpb25zLFxuICBOZXh0anNGdW5jdGlvbnNPdmVycmlkZXMsXG59IGZyb20gXCIuLi9uZXh0anMtY29tcHV0ZS9uZXh0anMtZnVuY3Rpb25zXCI7XG5pbXBvcnQge1xuICBOZXh0anNEaXN0cmlidXRpb24sXG4gIE5leHRqc0Rpc3RyaWJ1dGlvbk92ZXJyaWRlcyxcbn0gZnJvbSBcIi4uL25leHRqcy1kaXN0cmlidXRpb25cIjtcbmltcG9ydCB7IE5leHRqc1Bvc3REZXBsb3kgfSBmcm9tIFwiLi4vbmV4dGpzLXBvc3QtZGVwbG95XCI7XG5pbXBvcnQgeyBqb2luUGF0aCB9IGZyb20gXCIuLi91dGlscy9iYXNlLXBhdGhcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNHbG9iYWxGdW5jdGlvbnNDb25zdHJ1Y3RPdmVycmlkZXMgZXh0ZW5kcyBOZXh0anNCYXNlQ29uc3RydWN0T3ZlcnJpZGVzIHtcbiAgcmVhZG9ubHkgbmV4dGpzRGlzdHJpYnV0aW9uUHJvcHM/OiBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzO1xufVxuXG4vKipcbiAqIE92ZXJyaWRlcyBmb3IgYE5leHRqc0dsb2JhbEZ1bmN0aW9uc2AuIE92ZXJyaWRlcyBhcmUgbG93ZXIgbGV2ZWwgdGhhblxuICogcHJvcHMgYW5kIGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gQ0RLIENvbnN0cnVjdHMgZ2l2aW5nIHlvdSBtb3JlIGNvbnRyb2wuIEl0J3NcbiAqIHJlY29tbWVuZGVkIHRvIHVzZSBjYXV0aW9uIGFuZCByZXZpZXcgc291cmNlIGNvZGUgc28geW91IGtub3cgaG93IHRoZXkncmUgdXNlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXh0anNHbG9iYWxGdW5jdGlvbnNPdmVycmlkZXMgZXh0ZW5kcyBOZXh0anNCYXNlT3ZlcnJpZGVzIHtcbiAgcmVhZG9ubHkgbmV4dGpzR2xvYmFsRnVuY3Rpb25zPzogTmV4dGpzR2xvYmFsRnVuY3Rpb25zQ29uc3RydWN0T3ZlcnJpZGVzO1xuICByZWFkb25seSBuZXh0anNGdW5jdGlvbnM/OiBOZXh0anNGdW5jdGlvbnNPdmVycmlkZXM7XG4gIHJlYWRvbmx5IG5leHRqc0Rpc3RyaWJ1dGlvbj86IE5leHRqc0Rpc3RyaWJ1dGlvbk92ZXJyaWRlcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNHbG9iYWxGdW5jdGlvbnNQcm9wcyBleHRlbmRzIE5leHRqc0Jhc2VQcm9wcyB7XG4gIC8qKlxuICAgKiBCcmluZyB5b3VyIG93biBkaXN0cmlidXRpb24uIENhbiBiZSB1c2VkIHdpdGggYGJhc2VQYXRoYCB0byBob3N0IG11bHRpcGxlXG4gICAqIGFwcHMgb24gdGhlIHNhbWUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24uXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb24/OiBEaXN0cmlidXRpb247XG4gIC8qKlxuICAgKiBQYWNrYWdlIHNldHMgb2Ygcm91dGVzIGludG8gc2VwYXJhdGUgTGFtYmRhIGZ1bmN0aW9ucywgZWFjaCBmcm9udGVkIGJ5IGl0c1xuICAgKiBvd24gQ2xvdWRGcm9udCBiZWhhdmlvcnMuXG4gICAqXG4gICAqIFJlYWNoIGZvciB0aGlzIHdoZW4gYSBzaW5nbGUgZnVuY3Rpb24gZXhjZWVkcyBMYW1iZGEncyAyNTAgTUIgdW56aXBwZWRcbiAgICogbGltaXQg4oCUIGNkay1uZXh0anMgdGhyb3dzIGF0IHN5bnRoIHdpdGggdGhlIG1lYXN1cmVkIHNpemUgd2hlbiBpdCBkb2VzLiBJdCBpc1xuICAgKiBub3QgYSBwZXJmb3JtYW5jZSBvciBpc29sYXRpb24gZmVhdHVyZTogZXZlcnkgZ3JvdXAgc2hpcHMgdGhlIHNhbWUgTmV4dC5qc1xuICAgKiBydW50aW1lLCBzbyBzcGxpdHRpbmcgb25seSBtb3ZlcyByb3V0ZS1sb2NhbCBjb2RlLlxuICAgKlxuICAgKiBAc2VlIE5leHRqc0Z1bmN0aW9uR3JvdXAgZm9yIHRoZSBwYXR0ZXJuIGdyYW1tYXIgYW5kIGl0cyBsaW1pdHMuXG4gICAqIEBkZWZhdWx0IC0gb25lIGZ1bmN0aW9uIHNlcnZlcyBldmVyeSByb3V0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25Hcm91cHM/OiBOZXh0anNGdW5jdGlvbkdyb3VwW107XG4gIC8qKlxuICAgKiBPdmVycmlkZSBwcm9wcyBvZiBhbnkgY29uc3RydWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgb3ZlcnJpZGVzPzogTmV4dGpzR2xvYmFsRnVuY3Rpb25zT3ZlcnJpZGVzO1xufVxuXG4vKipcbiAqIERlcGxveSBOZXh0LmpzIGdsb2JhbGx5IGRpc3RyaWJ1dGVkIHdpdGggZnVuY3Rpb25zLiBVc2VzIFtDbG91ZEZyb250XG4gKiBEaXN0cmlidXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZEZyb250L2xhdGVzdC9EZXZlbG9wZXJHdWlkZS9kaXN0cmlidXRpb24td29ya2luZy13aXRoLmh0bWwpXG4gKiBhcyBDb250ZW50IERlbGl2ZXJ5IE5ldHdvcmsgKENETikgZm9yIGdsb2JhbCBkaXN0cmlidXRpb24gYW5kIFtBV1MgTGFtYmRhIEZ1bmN0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvd2VsY29tZS5odG1sKVxuICogZm9yIGZ1bmN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5leHRqc0dsb2JhbEZ1bmN0aW9ucyBleHRlbmRzIE5leHRqc0Jhc2VDb25zdHJ1Y3Qge1xuICBuZXh0anNGdW5jdGlvbnM6IE5leHRqc0Z1bmN0aW9ucztcbiAgbmV4dGpzRGlzdHJpYnV0aW9uOiBOZXh0anNEaXN0cmlidXRpb247XG4gIG5leHRqc1Bvc3REZXBsb3k6IE5leHRqc1Bvc3REZXBsb3k7XG4gIC8qKlxuICAgKiBQdWJsaWMgVVJMIG9mIHRoZSBhcHAsIGluY2x1ZGluZyBgYmFzZVBhdGhgIOKAlCB0aGUgYXBwIG9ubHkgYW5zd2VycyB1bmRlclxuICAgKiB0aGF0IHByZWZpeCwgYW5kIGl0J3MgZGVyaXZlZCBmcm9tIHRoZSBhcHAncyBvd24gYGJhc2VQYXRoYCB3aGVuIHRoZSBwcm9wIGlzXG4gICAqIGxlZnQgdW5zZXQsIHNvIGl0J3MgdGhlcmUgd2hldGhlciBvciBub3QgeW91IGFza2VkIGZvciBpdC5cbiAgICovXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gam9pblBhdGgoXG4gICAgICBgaHR0cHM6Ly8ke3RoaXMubmV4dGpzRGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbi5kb21haW5OYW1lfWAsXG4gICAgICB0aGlzLnJlc29sdmVkQmFzZVBhdGgsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvcHM6IE5leHRqc0dsb2JhbEZ1bmN0aW9uc1Byb3BzO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOZXh0anNHbG9iYWxGdW5jdGlvbnNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMsIE5leHRqc1R5cGUuR0xPQkFMX0ZVTkNUSU9OUyk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5uZXh0anNGdW5jdGlvbnMgPSB0aGlzLmNyZWF0ZU5leHRqc0Z1bmN0aW9ucygpO1xuICAgIHRoaXMubmV4dGpzRGlzdHJpYnV0aW9uID0gdGhpcy5jcmVhdGVOZXh0anNEaXN0cmlidXRpb24oKTtcbiAgICAvLyBFdmVyeSBncm91cCwgbm90IGp1c3QgdGhlIGRlZmF1bHQgb25lOiBgcmV2YWxpZGF0ZVRhZ2AvYHJldmFsaWRhdGVQYXRoYCBjYW5cbiAgICAvLyBiZSBjYWxsZWQgZnJvbSBhbnkgcm91dGUgaGFuZGxlciwgc28gYW55IGZ1bmN0aW9uIG1heSBuZWVkIHRvIGludmFsaWRhdGUuXG4gICAgY29uc3QgZnVuY3Rpb25zID0gdGhpcy5uZXh0anNGdW5jdGlvbnMuZnVuY3Rpb25Hcm91cHMubWFwKFxuICAgICAgKGdyb3VwKSA9PiBncm91cC5mdW5jdGlvbixcbiAgICApO1xuICAgIHRoaXMud2lyZUNsb3VkRnJvbnRJbnZhbGlkYXRpb24oZnVuY3Rpb25zKTtcbiAgICB0aGlzLm5leHRqc1Bvc3REZXBsb3kgPSB0aGlzLmNyZWF0ZU5leHRqc1Bvc3REZXBsb3koXG4gICAgICB0aGlzLm5leHRqc0Rpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb24sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMZXRzIGBmdW5jdGlvbnNgIGludmFsaWRhdGUgdGhlIGRpc3RyaWJ1dGlvbiwgc28gb24tZGVtYW5kIHJldmFsaWRhdGlvblxuICAgKiAocmV2YWxpZGF0ZVRhZy9yZXZhbGlkYXRlUGF0aCkgY2FuIGV2aWN0IHN0YWxlIHJlc3BvbnNlcyBmcm9tIHRoZSBDRE4gZWRnZVxuICAgKiBjYWNoZSwgbm90IGp1c3QgdGhlIG9yaWdpbidzIFMzL0R5bmFtb0RCIGNhY2hlLlxuICAgKlxuICAgKiBUaGUgZGlzdHJpYnV0aW9uJ3Mgb3JpZ2luIGlzIHRoZSBmdW5jdGlvbnMnIFVSTCwgc28gYSBmdW5jdGlvbiBuYW1pbmcgdGhlXG4gICAqIGRpc3RyaWJ1dGlvbiBiYWNrIOKAlCBpbiBpdHMgZW52aXJvbm1lbnQsIG9yIGluIGl0cyByb2xlJ3MgZGVmYXVsdCBwb2xpY3ksXG4gICAqIHdoaWNoIGEgZnVuY3Rpb24gZGVwZW5kcyBvbiDigJQgd291bGQgYmUgYSBjaXJjdWxhciBDbG91ZEZvcm1hdGlvblxuICAgKiBkZXBlbmRlbmN5LiBTbyB0aGUgSUQgaXMgcHVibGlzaGVkIHRvIGFuIFNTTSBQYXJhbWV0ZXIgd2hvc2UgKm5hbWUqIGlzXG4gICAqIHN0YXRpYywgYW5kIHRoZSBncmFudHMgZ28gaW4gYSBzZXBhcmF0ZSBwb2xpY3kgdGhhdCBkZXBlbmRzIG9uIHRoZVxuICAgKiBkaXN0cmlidXRpb24gd2hpbGUgbm8gZnVuY3Rpb24gZGVwZW5kcyBvbiBpdC5cbiAgICovXG4gIHByaXZhdGUgd2lyZUNsb3VkRnJvbnRJbnZhbGlkYXRpb24oZnVuY3Rpb25zOiBMYW1iZGFGdW5jdGlvbltdKSB7XG4gICAgY29uc3QgeyBkaXN0cmlidXRpb24gfSA9IHRoaXMubmV4dGpzRGlzdHJpYnV0aW9uO1xuICAgIGNvbnN0IHBhcmFtZXRlck5hbWUgPSBgY2RrLW5leHRqcy1kaXN0cmlidXRpb24taWQtJHt0aGlzLm5vZGUuYWRkcn1gO1xuICAgIG5ldyBTdHJpbmdQYXJhbWV0ZXIodGhpcywgXCJEaXN0cmlidXRpb25JZFBhcmFtZXRlclwiLCB7XG4gICAgICBwYXJhbWV0ZXJOYW1lLFxuICAgICAgc3RyaW5nVmFsdWU6IGRpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb25JZCxcbiAgICB9KTtcbiAgICBuZXcgUG9saWN5KHRoaXMsIFwiSW52YWxpZGF0aW9uUG9saWN5XCIsIHtcbiAgICAgIC8vIEEgYG5ldyBGdW5jdGlvbmAgYWx3YXlzIGhhcyBhIHJvbGU7IG9ubHkgaW1wb3J0ZWQgb25lcyBsYWNrIGl0LlxuICAgICAgcm9sZXM6IGZ1bmN0aW9ucy5tYXAoKGZuKSA9PiBmbi5yb2xlISksXG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcInNzbTpHZXRQYXJhbWV0ZXJcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICBTdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgICAgICAgICBzZXJ2aWNlOiBcInNzbVwiLFxuICAgICAgICAgICAgICByZXNvdXJjZTogXCJwYXJhbWV0ZXJcIixcbiAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiBwYXJhbWV0ZXJOYW1lLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcImNsb3VkZnJvbnQ6Q3JlYXRlSW52YWxpZGF0aW9uXCJdLFxuICAgICAgICAgIHJlc291cmNlczogW2Rpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb25Bcm5dLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgZnVuY3Rpb25zLmZvckVhY2goKGZuKSA9PlxuICAgICAgZm4uYWRkRW52aXJvbm1lbnQoXCJDREtfTkVYVEpTX0RJU1RSSUJVVElPTl9JRF9QQVJBTV9OQU1FXCIsIHBhcmFtZXRlck5hbWUpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5leHRqc0Rpc3RyaWJ1dGlvbigpIHtcbiAgICByZXR1cm4gbmV3IE5leHRqc0Rpc3RyaWJ1dGlvbih0aGlzLCBcIk5leHRqc0Rpc3RyaWJ1dGlvblwiLCB7XG4gICAgICBhc3NldHNCdWNrZXQ6IHRoaXMubmV4dGpzU3RhdGljQXNzZXRzLmJ1Y2tldCxcbiAgICAgIGFzc2V0UHJlZml4OiB0aGlzLm5leHRqc0J1aWxkLm5leHRDb25maWdBc3NldFByZWZpeFBhdGgsXG4gICAgICBiYXNlUGF0aDogdGhpcy5yZXNvbHZlZEJhc2VQYXRoLFxuICAgICAgZGlzdHJpYnV0aW9uOiB0aGlzLnByb3BzLmRpc3RyaWJ1dGlvbixcbiAgICAgIGZ1bmN0aW9uVXJsOiB0aGlzLm5leHRqc0Z1bmN0aW9ucy5mdW5jdGlvblVybCxcbiAgICAgIG5leHRqc1R5cGU6IHRoaXMubmV4dGpzVHlwZSxcbiAgICAgIG92ZXJyaWRlczogdGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc0Rpc3RyaWJ1dGlvbixcbiAgICAgIHB1YmxpY0RpckVudHJpZXM6IHRoaXMubmV4dGpzQnVpbGQucHVibGljRGlyRW50cmllcyxcbiAgICAgIC8vIFRoZSBkZWZhdWx0IGdyb3VwIGJhY2tzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLCBzbyBvbmx5IHRoZSByZXN0IG5lZWRcbiAgICAgIC8vIGJlaGF2aW9ycyBvZiB0aGVpciBvd24uXG4gICAgICBmdW5jdGlvbkdyb3VwczogdGhpcy5uZXh0anNGdW5jdGlvbnMuZnVuY3Rpb25Hcm91cHNcbiAgICAgICAgLmZpbHRlcigoZ3JvdXApID0+IGdyb3VwLm5hbWUgIT09IERFRkFVTFRfRlVOQ1RJT05fR1JPVVApXG4gICAgICAgIC5tYXAoKGdyb3VwKSA9PiAoe1xuICAgICAgICAgIG5hbWU6IGdyb3VwLm5hbWUsXG4gICAgICAgICAgZnVuY3Rpb25Vcmw6IGdyb3VwLmZ1bmN0aW9uVXJsISxcbiAgICAgICAgfSkpLFxuICAgICAgZnVuY3Rpb25Hcm91cEJlaGF2aW9yczogdGhpcy5uZXh0anNCdWlsZC5mdW5jdGlvbkdyb3VwQmVoYXZpb3JzLFxuICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc0dsb2JhbEZ1bmN0aW9ucz8ubmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWdsb2JhbC1mdW5jdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1nbG9iYWwtZnVuY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2Q0FBb0M7QUFNcEMsaURBQThEO0FBRTlELGlEQUFzRDtBQUV0RCxnRUFBb0U7QUFDcEUsNENBQTBDO0FBQzFDLG1FQUtpQztBQU9qQyxnRUFHZ0M7QUFFaEMsa0RBQThDO0FBeUQ5Qzs7Ozs7R0FLRztBQUNILE1BQWEscUJBQXNCLFNBQVEsMkNBQW1COztJQUM1RCxlQUFlLENBQWtCO0lBQ2pDLGtCQUFrQixDQUFxQjtJQUN2QyxnQkFBZ0IsQ0FBbUI7SUFDbkM7Ozs7T0FJRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBQSxvQkFBUSxFQUNiLFdBQVcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFDNUQsSUFBSSxDQUFDLGdCQUFnQixDQUN0QixDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBNkI7SUFFMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsc0JBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzFELDhFQUE4RTtRQUM5RSw0RUFBNEU7UUFDNUUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUN2RCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxD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QUUsSUFBSSxDQUFDLEtBQUssQ0FBQywwQkFBMEI7WUFDakUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUI7U0FDeEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF0R0gsc0RBdUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIERpc3RyaWJ1dGlvbixcbiAgRnVuY3Rpb25Db2RlLFxuICBJS2V5VmFsdWVTdG9yZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCI7XG5pbXBvcnQgeyBQb2xpY3ksIFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBGdW5jdGlvbiBhcyBMYW1iZGFGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBTdHJpbmdQYXJhbWV0ZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNzbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IERFRkFVTFRfRlVOQ1RJT05fR1JPVVAgfSBmcm9tIFwiLi4vYWRhcHRlci9mdW5jdGlvbi1ncm91cHNcIjtcbmltcG9ydCB7IE5leHRqc1R5cGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBOZXh0anNCYXNlQ29uc3RydWN0T3ZlcnJpZGVzLFxuICBOZXh0anNCYXNlT3ZlcnJpZGVzLFxuICBOZXh0anNCYXNlQ29uc3RydWN0LFxuICBOZXh0anNCYXNlUHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1iYXNlLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcyB9IGZyb20gXCIuLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzXCI7XG5pbXBvcnQge1xuICBOZXh0anNGdW5jdGlvbkdyb3VwLFxuICBOZXh0anNGdW5jdGlvbnMsXG4gIE5leHRqc0Z1bmN0aW9uc092ZXJyaWRlcyxcbn0gZnJvbSBcIi4uL25leHRqcy1jb21wdXRlL25leHRqcy1mdW5jdGlvbnNcIjtcbmltcG9ydCB7XG4gIE5leHRqc0Rpc3RyaWJ1dGlvbixcbiAgTmV4dGpzRGlzdHJpYnV0aW9uT3ZlcnJpZGVzLFxufSBmcm9tIFwiLi4vbmV4dGpzLWRpc3RyaWJ1dGlvblwiO1xuaW1wb3J0IHsgTmV4dGpzUG9zdERlcGxveSB9IGZyb20gXCIuLi9uZXh0anMtcG9zdC1kZXBsb3lcIjtcbmltcG9ydCB7IGpvaW5QYXRoIH0gZnJvbSBcIi4uL3V0aWxzL2Jhc2UtcGF0aFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc0dsb2JhbEZ1bmN0aW9uc0NvbnN0cnVjdE92ZXJyaWRlcyBleHRlbmRzIE5leHRqc0Jhc2VDb25zdHJ1Y3RPdmVycmlkZXMge1xuICByZWFkb25seSBuZXh0anNEaXN0cmlidXRpb25Qcm9wcz86IE9wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHM7XG59XG5cbi8qKlxuICogT3ZlcnJpZGVzIGZvciBgTmV4dGpzR2xvYmFsRnVuY3Rpb25zYC4gT3ZlcnJpZGVzIGFyZSBsb3dlciBsZXZlbCB0aGFuXG4gKiBwcm9wcyBhbmQgYXJlIHBhc3NlZCBkaXJlY3RseSB0byBDREsgQ29uc3RydWN0cyBnaXZpbmcgeW91IG1vcmUgY29udHJvbC4gSXQnc1xuICogcmVjb21tZW5kZWQgdG8gdXNlIGNhdXRpb24gYW5kIHJldmlldyBzb3VyY2UgY29kZSBzbyB5b3Uga25vdyBob3cgdGhleSdyZSB1c2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc0dsb2JhbEZ1bmN0aW9uc092ZXJyaWRlcyBleHRlbmRzIE5leHRqc0Jhc2VPdmVycmlkZXMge1xuICByZWFkb25seSBuZXh0anNHbG9iYWxGdW5jdGlvbnM/OiBOZXh0anNHbG9iYWxGdW5jdGlvbnNDb25zdHJ1Y3RPdmVycmlkZXM7XG4gIHJlYWRvbmx5IG5leHRqc0Z1bmN0aW9ucz86IE5leHRqc0Z1bmN0aW9uc092ZXJyaWRlcztcbiAgcmVhZG9ubHkgbmV4dGpzRGlzdHJpYnV0aW9uPzogTmV4dGpzRGlzdHJpYnV0aW9uT3ZlcnJpZGVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc0dsb2JhbEZ1bmN0aW9uc1Byb3BzIGV4dGVuZHMgTmV4dGpzQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIEJyaW5nIHlvdXIgb3duIGRpc3RyaWJ1dGlvbi4gQ2FuIGJlIHVzZWQgd2l0aCBgYmFzZVBhdGhgIHRvIGhvc3QgbXVsdGlwbGVcbiAgICogYXBwcyBvbiB0aGUgc2FtZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbj86IERpc3RyaWJ1dGlvbjtcbiAgLyoqXG4gICAqIFBhY2thZ2Ugc2V0cyBvZiByb3V0ZXMgaW50byBzZXBhcmF0ZSBMYW1iZGEgZnVuY3Rpb25zLCBlYWNoIGZyb250ZWQgYnkgaXRzXG4gICAqIG93biBDbG91ZEZyb250IGJlaGF2aW9ycy5cbiAgICpcbiAgICogUmVhY2ggZm9yIHRoaXMgd2hlbiBhIHNpbmdsZSBmdW5jdGlvbiBleGNlZWRzIExhbWJkYSdzIDI1MCBNQiB1bnppcHBlZFxuICAgKiBsaW1pdCDigJQgY2RrLW5leHRqcyB0aHJvd3MgYXQgc3ludGggd2l0aCB0aGUgbWVhc3VyZWQgc2l6ZSB3aGVuIGl0IGRvZXMuIEl0IGlzXG4gICAqIG5vdCBhIHBlcmZvcm1hbmNlIG9yIGlzb2xhdGlvbiBmZWF0dXJlOiBldmVyeSBncm91cCBzaGlwcyB0aGUgc2FtZSBOZXh0LmpzXG4gICAqIHJ1bnRpbWUsIHNvIHNwbGl0dGluZyBvbmx5IG1vdmVzIHJvdXRlLWxvY2FsIGNvZGUuXG4gICAqXG4gICAqIEBzZWUgTmV4dGpzRnVuY3Rpb25Hcm91cCBmb3IgdGhlIHBhdHRlcm4gZ3JhbW1hciBhbmQgaXRzIGxpbWl0cy5cbiAgICogQGRlZmF1bHQgLSBvbmUgZnVuY3Rpb24gc2VydmVzIGV2ZXJ5IHJvdXRlXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbkdyb3Vwcz86IE5leHRqc0Z1bmN0aW9uR3JvdXBbXTtcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHByb3BzIG9mIGFueSBjb25zdHJ1Y3QuXG4gICAqL1xuICByZWFkb25seSBvdmVycmlkZXM/OiBOZXh0anNHbG9iYWxGdW5jdGlvbnNPdmVycmlkZXM7XG4gIC8qKlxuICAgKiBDbG91ZEZyb250IEZ1bmN0aW9uIGNvZGUgcnVuIGZpcnN0IG9uIGV2ZXJ5IHZpZXdlciByZXF1ZXN0LCBzdGF0aWMgYXNzZXRzXG4gICAqIGluY2x1ZGVkIOKAlCBIVFRQIEJhc2ljIGF1dGggb24gYSBwcmUtbGF1bmNoIHNpdGUsIHNheS4gSXQgbXVzdCBkZWZpbmVcbiAgICogYHZpZXdlclJlcXVlc3QoZXZlbnQpYCwgYXMgYSBmdW5jdGlvbiBvciBhIGB2YXJgL2BsZXRgL2Bjb25zdGAuXG4gICAqIEBzZWUgTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMudmlld2VyUmVxdWVzdEZ1bmN0aW9uQ29kZVxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHZpZXdlclJlcXVlc3RGdW5jdGlvbkNvZGU/OiBGdW5jdGlvbkNvZGU7XG4gIC8qKlxuICAgKiBBIENsb3VkRnJvbnQgS2V5VmFsdWVTdG9yZSBgdmlld2VyUmVxdWVzdEZ1bmN0aW9uQ29kZWAgY2FuIHJlYWQgd2l0aFxuICAgKiBgY2Yua3ZzKClgLCBzbyBjcmVkZW50aWFscyBzdGF5IG91dCBvZiB0aGUgdGVtcGxhdGUuXG4gICAqIEBzZWUgTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMudmlld2VyUmVxdWVzdEtleVZhbHVlU3RvcmVcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSB2aWV3ZXJSZXF1ZXN0S2V5VmFsdWVTdG9yZT86IElLZXlWYWx1ZVN0b3JlO1xufVxuXG4vKipcbiAqIERlcGxveSBOZXh0LmpzIGdsb2JhbGx5IGRpc3RyaWJ1dGVkIHdpdGggZnVuY3Rpb25zLiBVc2VzIFtDbG91ZEZyb250XG4gKiBEaXN0cmlidXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZEZyb250L2xhdGVzdC9EZXZlbG9wZXJHdWlkZS9kaXN0cmlidXRpb24td29ya2luZy13aXRoLmh0bWwpXG4gKiBhcyBDb250ZW50IERlbGl2ZXJ5IE5ldHdvcmsgKENETikgZm9yIGdsb2JhbCBkaXN0cmlidXRpb24gYW5kIFtBV1MgTGFtYmRhIEZ1bmN0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvd2VsY29tZS5odG1sKVxuICogZm9yIGZ1bmN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5leHRqc0dsb2JhbEZ1bmN0aW9ucyBleHRlbmRzIE5leHRqc0Jhc2VDb25zdHJ1Y3Qge1xuICBuZXh0anNGdW5jdGlvbnM6IE5leHRqc0Z1bmN0aW9ucztcbiAgbmV4dGpzRGlzdHJpYnV0aW9uOiBOZXh0anNEaXN0cmlidXRpb247XG4gIG5leHRqc1Bvc3REZXBsb3k6IE5leHRqc1Bvc3REZXBsb3k7XG4gIC8qKlxuICAgKiBQdWJsaWMgVVJMIG9mIHRoZSBhcHAsIGluY2x1ZGluZyBgYmFzZVBhdGhgIOKAlCB0aGUgYXBwIG9ubHkgYW5zd2VycyB1bmRlclxuICAgKiB0aGF0IHByZWZpeCwgYW5kIGl0J3MgZGVyaXZlZCBmcm9tIHRoZSBhcHAncyBvd24gYGJhc2VQYXRoYCB3aGVuIHRoZSBwcm9wIGlzXG4gICAqIGxlZnQgdW5zZXQsIHNvIGl0J3MgdGhlcmUgd2hldGhlciBvciBub3QgeW91IGFza2VkIGZvciBpdC5cbiAgICovXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gam9pblBhdGgoXG4gICAgICBgaHR0cHM6Ly8ke3RoaXMubmV4dGpzRGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbi5kb21haW5OYW1lfWAsXG4gICAgICB0aGlzLnJlc29sdmVkQmFzZVBhdGgsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvcHM6IE5leHRqc0dsb2JhbEZ1bmN0aW9uc1Byb3BzO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOZXh0anNHbG9iYWxGdW5jdGlvbnNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMsIE5leHRqc1R5cGUuR0xPQkFMX0ZVTkNUSU9OUyk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5uZXh0anNGdW5jdGlvbnMgPSB0aGlzLmNyZWF0ZU5leHRqc0Z1bmN0aW9ucygpO1xuICAgIHRoaXMubmV4dGpzRGlzdHJpYnV0aW9uID0gdGhpcy5jcmVhdGVOZXh0anNEaXN0cmlidXRpb24oKTtcbiAgICAvLyBFdmVyeSBncm91cCwgbm90IGp1c3QgdGhlIGRlZmF1bHQgb25lOiBgcmV2YWxpZGF0ZVRhZ2AvYHJldmFsaWRhdGVQYXRoYCBjYW5cbiAgICAvLyBiZSBjYWxsZWQgZnJvbSBhbnkgcm91dGUgaGFuZGxlciwgc28gYW55IGZ1bmN0aW9uIG1heSBuZWVkIHRvIGludmFsaWRhdGUuXG4gICAgY29uc3QgZnVuY3Rpb25zID0gdGhpcy5uZXh0anNGdW5jdGlvbnMuZnVuY3Rpb25Hcm91cHMubWFwKFxuICAgICAgKGdyb3VwKSA9PiBncm91cC5mdW5jdGlvbixcbiAgICApO1xuICAgIHRoaXMud2lyZUNsb3VkRnJvbnRJbnZhbGlkYXRpb24oZnVuY3Rpb25zKTtcbiAgICB0aGlzLm5leHRqc1Bvc3REZXBsb3kgPSB0aGlzLmNyZWF0ZU5leHRqc1Bvc3REZXBsb3koXG4gICAgICB0aGlzLm5leHRqc0Rpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb24sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMZXRzIGBmdW5jdGlvbnNgIGludmFsaWRhdGUgdGhlIGRpc3RyaWJ1dGlvbiwgc28gb24tZGVtYW5kIHJldmFsaWRhdGlvblxuICAgKiAocmV2YWxpZGF0ZVRhZy9yZXZhbGlkYXRlUGF0aCkgY2FuIGV2aWN0IHN0YWxlIHJlc3BvbnNlcyBmcm9tIHRoZSBDRE4gZWRnZVxuICAgKiBjYWNoZSwgbm90IGp1c3QgdGhlIG9yaWdpbidzIFMzL0R5bmFtb0RCIGNhY2hlLlxuICAgKlxuICAgKiBUaGUgZGlzdHJpYnV0aW9uJ3Mgb3JpZ2luIGlzIHRoZSBmdW5jdGlvbnMnIFVSTCwgc28gYSBmdW5jdGlvbiBuYW1pbmcgdGhlXG4gICAqIGRpc3RyaWJ1dGlvbiBiYWNrIOKAlCBpbiBpdHMgZW52aXJvbm1lbnQsIG9yIGluIGl0cyByb2xlJ3MgZGVmYXVsdCBwb2xpY3ksXG4gICAqIHdoaWNoIGEgZnVuY3Rpb24gZGVwZW5kcyBvbiDigJQgd291bGQgYmUgYSBjaXJjdWxhciBDbG91ZEZvcm1hdGlvblxuICAgKiBkZXBlbmRlbmN5LiBTbyB0aGUgSUQgaXMgcHVibGlzaGVkIHRvIGFuIFNTTSBQYXJhbWV0ZXIgd2hvc2UgKm5hbWUqIGlzXG4gICAqIHN0YXRpYywgYW5kIHRoZSBncmFudHMgZ28gaW4gYSBzZXBhcmF0ZSBwb2xpY3kgdGhhdCBkZXBlbmRzIG9uIHRoZVxuICAgKiBkaXN0cmlidXRpb24gd2hpbGUgbm8gZnVuY3Rpb24gZGVwZW5kcyBvbiBpdC5cbiAgICovXG4gIHByaXZhdGUgd2lyZUNsb3VkRnJvbnRJbnZhbGlkYXRpb24oZnVuY3Rpb25zOiBMYW1iZGFGdW5jdGlvbltdKSB7XG4gICAgY29uc3QgeyBkaXN0cmlidXRpb24gfSA9IHRoaXMubmV4dGpzRGlzdHJpYnV0aW9uO1xuICAgIGNvbnN0IHBhcmFtZXRlck5hbWUgPSBgY2RrLW5leHRqcy1kaXN0cmlidXRpb24taWQtJHt0aGlzLm5vZGUuYWRkcn1gO1xuICAgIG5ldyBTdHJpbmdQYXJhbWV0ZXIodGhpcywgXCJEaXN0cmlidXRpb25JZFBhcmFtZXRlclwiLCB7XG4gICAgICBwYXJhbWV0ZXJOYW1lLFxuICAgICAgc3RyaW5nVmFsdWU6IGRpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb25JZCxcbiAgICB9KTtcbiAgICBuZXcgUG9saWN5KHRoaXMsIFwiSW52YWxpZGF0aW9uUG9saWN5XCIsIHtcbiAgICAgIC8vIEEgYG5ldyBGdW5jdGlvbmAgYWx3YXlzIGhhcyBhIHJvbGU7IG9ubHkgaW1wb3J0ZWQgb25lcyBsYWNrIGl0LlxuICAgICAgcm9sZXM6IGZ1bmN0aW9ucy5tYXAoKGZuKSA9PiBmbi5yb2xlISksXG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcInNzbTpHZXRQYXJhbWV0ZXJcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICBTdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgICAgICAgICBzZXJ2aWNlOiBcInNzbVwiLFxuICAgICAgICAgICAgICByZXNvdXJjZTogXCJwYXJhbWV0ZXJcIixcbiAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiBwYXJhbWV0ZXJOYW1lLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcImNsb3VkZnJvbnQ6Q3JlYXRlSW52YWxpZGF0aW9uXCJdLFxuICAgICAgICAgIHJlc291cmNlczogW2Rpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb25Bcm5dLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgZnVuY3Rpb25zLmZvckVhY2goKGZuKSA9PlxuICAgICAgZm4uYWRkRW52aXJvbm1lbnQoXCJDREtfTkVYVEpTX0RJU1RSSUJVVElPTl9JRF9QQVJBTV9OQU1FXCIsIHBhcmFtZXRlck5hbWUpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5leHRqc0Rpc3RyaWJ1dGlvbigpIHtcbiAgICByZXR1cm4gbmV3IE5leHRqc0Rpc3RyaWJ1dGlvbih0aGlzLCBcIk5leHRqc0Rpc3RyaWJ1dGlvblwiLCB7XG4gICAgICBhc3NldHNCdWNrZXQ6IHRoaXMubmV4dGpzU3RhdGljQXNzZXRzLmJ1Y2tldCxcbiAgICAgIGFzc2V0UHJlZml4OiB0aGlzLm5leHRqc0J1aWxkLm5leHRDb25maWdBc3NldFByZWZpeFBhdGgsXG4gICAgICBiYXNlUGF0aDogdGhpcy5yZXNvbHZlZEJhc2VQYXRoLFxuICAgICAgZGlzdHJpYnV0aW9uOiB0aGlzLnByb3BzLmRpc3RyaWJ1dGlvbixcbiAgICAgIGZ1bmN0aW9uVXJsOiB0aGlzLm5leHRqc0Z1bmN0aW9ucy5mdW5jdGlvblVybCxcbiAgICAgIG5leHRqc1R5cGU6IHRoaXMubmV4dGpzVHlwZSxcbiAgICAgIG92ZXJyaWRlczogdGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc0Rpc3RyaWJ1dGlvbixcbiAgICAgIHB1YmxpY0RpckVudHJpZXM6IHRoaXMubmV4dGpzQnVpbGQucHVibGljRGlyRW50cmllcyxcbiAgICAgIC8vIFRoZSBkZWZhdWx0IGdyb3VwIGJhY2tzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLCBzbyBvbmx5IHRoZSByZXN0IG5lZWRcbiAgICAgIC8vIGJlaGF2aW9ycyBvZiB0aGVpciBvd24uXG4gICAgICBmdW5jdGlvbkdyb3VwczogdGhpcy5uZXh0anNGdW5jdGlvbnMuZnVuY3Rpb25Hcm91cHNcbiAgICAgICAgLmZpbHRlcigoZ3JvdXApID0+IGdyb3VwLm5hbWUgIT09IERFRkFVTFRfRlVOQ1RJT05fR1JPVVApXG4gICAgICAgIC5tYXAoKGdyb3VwKSA9PiAoe1xuICAgICAgICAgIG5hbWU6IGdyb3VwLm5hbWUsXG4gICAgICAgICAgZnVuY3Rpb25Vcmw6IGdyb3VwLmZ1bmN0aW9uVXJsISxcbiAgICAgICAgfSkpLFxuICAgICAgZnVuY3Rpb25Hcm91cEJlaGF2aW9yczogdGhpcy5uZXh0anNCdWlsZC5mdW5jdGlvbkdyb3VwQmVoYXZpb3JzLFxuICAgICAgdmlld2VyUmVxdWVzdEZ1bmN0aW9uQ29kZTogdGhpcy5wcm9wcy52aWV3ZXJSZXF1ZXN0RnVuY3Rpb25Db2RlLFxuICAgICAgdmlld2VyUmVxdWVzdEtleVZhbHVlU3RvcmU6IHRoaXMucHJvcHMudmlld2VyUmVxdWVzdEtleVZhbHVlU3RvcmUsXG4gICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8ubmV4dGpzR2xvYmFsRnVuY3Rpb25zPy5uZXh0anNEaXN0cmlidXRpb25Qcm9wcyxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -13,7 +13,7 @@ const base_path_1 = require("../utils/base-path");
|
|
|
13
13
|
* for containers.
|
|
14
14
|
*/
|
|
15
15
|
class NextjsRegionalContainers extends nextjs_base_construct_1.NextjsBaseConstruct {
|
|
16
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsRegionalContainers", version: "0.7.
|
|
16
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsRegionalContainers", version: "0.7.13" };
|
|
17
17
|
nextjsContainers;
|
|
18
18
|
nextjsPostDeploy;
|
|
19
19
|
/**
|
|
@@ -11,7 +11,7 @@ const nextjs_base_construct_1 = require("./nextjs-base-construct");
|
|
|
11
11
|
* for routing requests and AWS Lambda Functions for server-side rendering.
|
|
12
12
|
*/
|
|
13
13
|
class NextjsRegionalFunctions extends nextjs_base_construct_1.NextjsBaseConstruct {
|
|
14
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsRegionalFunctions", version: "0.7.
|
|
14
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsRegionalFunctions", version: "0.7.13" };
|
|
15
15
|
nextjsFunctions;
|
|
16
16
|
nextjsApi;
|
|
17
17
|
nextjsPostDeploy;
|
package/lib/runtime/lambda.mjs
CHANGED
|
@@ -36914,6 +36914,8 @@ var require_package = __commonJS({
|
|
|
36914
36914
|
compat: "pnpm dlx projen compat",
|
|
36915
36915
|
compile: "pnpm dlx projen compile",
|
|
36916
36916
|
default: "pnpm dlx projen default",
|
|
36917
|
+
diagrams: "pnpm dlx projen diagrams",
|
|
36918
|
+
"diagrams:check": "pnpm dlx projen diagrams:check",
|
|
36917
36919
|
docgen: "pnpm dlx projen docgen",
|
|
36918
36920
|
eject: "pnpm dlx projen eject",
|
|
36919
36921
|
eslint: "pnpm dlx projen eslint",
|
|
@@ -36951,6 +36953,7 @@ var require_package = __commonJS({
|
|
|
36951
36953
|
"@aws-sdk/client-s3": "^3.1141.0",
|
|
36952
36954
|
"@aws-sdk/client-ssm": "^3.1141.0",
|
|
36953
36955
|
"@aws-sdk/lib-storage": "^3.1141.0",
|
|
36956
|
+
"@iconify-json/logos": "1.2.16",
|
|
36954
36957
|
"@mrgrain/jsii-struct-builder": "^0.7.64",
|
|
36955
36958
|
"@next/routing": "16.4.0",
|
|
36956
36959
|
"@smithy/signature-v4": "^2.3.0",
|
|
@@ -37033,7 +37036,7 @@ var require_package = __commonJS({
|
|
|
37033
37036
|
publishConfig: {
|
|
37034
37037
|
access: "public"
|
|
37035
37038
|
},
|
|
37036
|
-
version: "0.7.
|
|
37039
|
+
version: "0.7.13",
|
|
37037
37040
|
packageManager: "pnpm@10.32.1",
|
|
37038
37041
|
jest: {
|
|
37039
37042
|
coverageProvider: "v8",
|
package/lib/runtime/server.mjs
CHANGED
|
@@ -36914,6 +36914,8 @@ var require_package = __commonJS({
|
|
|
36914
36914
|
compat: "pnpm dlx projen compat",
|
|
36915
36915
|
compile: "pnpm dlx projen compile",
|
|
36916
36916
|
default: "pnpm dlx projen default",
|
|
36917
|
+
diagrams: "pnpm dlx projen diagrams",
|
|
36918
|
+
"diagrams:check": "pnpm dlx projen diagrams:check",
|
|
36917
36919
|
docgen: "pnpm dlx projen docgen",
|
|
36918
36920
|
eject: "pnpm dlx projen eject",
|
|
36919
36921
|
eslint: "pnpm dlx projen eslint",
|
|
@@ -36951,6 +36953,7 @@ var require_package = __commonJS({
|
|
|
36951
36953
|
"@aws-sdk/client-s3": "^3.1141.0",
|
|
36952
36954
|
"@aws-sdk/client-ssm": "^3.1141.0",
|
|
36953
36955
|
"@aws-sdk/lib-storage": "^3.1141.0",
|
|
36956
|
+
"@iconify-json/logos": "1.2.16",
|
|
36954
36957
|
"@mrgrain/jsii-struct-builder": "^0.7.64",
|
|
36955
36958
|
"@next/routing": "16.4.0",
|
|
36956
36959
|
"@smithy/signature-v4": "^2.3.0",
|
|
@@ -37033,7 +37036,7 @@ var require_package = __commonJS({
|
|
|
37033
37036
|
publishConfig: {
|
|
37034
37037
|
access: "public"
|
|
37035
37038
|
},
|
|
37036
|
-
version: "0.7.
|
|
37039
|
+
version: "0.7.13",
|
|
37037
37040
|
packageManager: "pnpm@10.32.1",
|
|
37038
37041
|
jest: {
|
|
37039
37042
|
coverageProvider: "v8",
|