cdk-nextjs 0.7.11 → 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 +310 -100
- package/.jsii.tabl.json +1 -1
- package/API.md +211 -3
- package/README.md +116 -101
- package/docs/breaking-changes.md +36 -2
- package/docs/development-guide.md +10 -0
- package/docs/next-build-output-guide.md +1 -1
- 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.d.ts +74 -5
- package/lib/nextjs-static-assets.js +276 -41
- package/lib/nextjs-static-assets.test.js +298 -1
- package/lib/root-constructs/nextjs-base-construct.d.ts +5 -4
- package/lib/root-constructs/nextjs-base-construct.js +17 -8
- 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/image-utils.d.ts +1 -0
- package/lib/runtime/image-utils.js +2 -1
- package/lib/runtime/image-utils.test.js +17 -1
- package/lib/runtime/image.js +5 -2
- package/lib/runtime/image.test.js +21 -1
- package/lib/runtime/lambda.mjs +9 -2
- package/lib/runtime/server.mjs +9 -2
- 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
|
@@ -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;
|
|
@@ -191,10 +191,11 @@ class NextjsBaseConstruct extends constructs_1.Construct {
|
|
|
191
191
|
};
|
|
192
192
|
}
|
|
193
193
|
/**
|
|
194
|
-
* Runs after the init cache
|
|
195
|
-
*
|
|
196
|
-
* meant to drop, and
|
|
197
|
-
*
|
|
194
|
+
* Runs after the init cache and static asset uploads: invalidating the CDN
|
|
195
|
+
* before the new files are in place would only re-cache the responses the
|
|
196
|
+
* invalidation was meant to drop, and pruning before them could delete an
|
|
197
|
+
* object the upload is about to re-tag with this build's ID. CloudFormation
|
|
198
|
+
* infers no ordering between these custom resources on its own.
|
|
198
199
|
*/
|
|
199
200
|
createNextjsPostDeploy(distribution) {
|
|
200
201
|
const postDeploy = new nextjs_post_deploy_1.NextjsPostDeploy(this, "NextjsPostDeploy", {
|
|
@@ -208,8 +209,16 @@ class NextjsBaseConstruct extends constructs_1.Construct {
|
|
|
208
209
|
overrides: this.baseProps.overrides?.nextjsPostDeploy,
|
|
209
210
|
...this.constructOverrides?.nextjsPostDeployProps,
|
|
210
211
|
});
|
|
211
|
-
|
|
212
|
-
|
|
212
|
+
const { staticDeployment, serviceWorkerDeployment, publicDeployment } = this.nextjsStaticAssets;
|
|
213
|
+
for (const upload of [
|
|
214
|
+
this.nextjsCache.bucketDeployment,
|
|
215
|
+
staticDeployment,
|
|
216
|
+
serviceWorkerDeployment,
|
|
217
|
+
publicDeployment,
|
|
218
|
+
]) {
|
|
219
|
+
if (upload) {
|
|
220
|
+
postDeploy.node.addDependency(upload);
|
|
221
|
+
}
|
|
213
222
|
}
|
|
214
223
|
return postDeploy;
|
|
215
224
|
}
|
|
@@ -278,4 +287,4 @@ class NextjsBaseConstruct extends constructs_1.Construct {
|
|
|
278
287
|
}
|
|
279
288
|
}
|
|
280
289
|
exports.NextjsBaseConstruct = NextjsBaseConstruct;
|
|
281
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWJhc2UtY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtYmFzZS1jb25zdHJ1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZDQUFvQztBQUtwQywyQ0FBdUM7QUFDdkMsNENBQXNEO0FBS3RELCtEQUEyRDtBQUMzRCxrREFBb0U7QUFFcEUseUVBSTRDO0FBQzVDLDhEQUcrQjtBQUMvQixrRUFJaUM7QUFDakMsa0RBSzRCO0FBOEg1Qjs7R0FFRztBQUNILE1BQXNCLG1CQUFvQixTQUFRLHNCQUFTOztJQUN6RCxXQUFXLENBQWM7SUFDekIsa0JBQWtCLENBQXFCO0lBQ3ZDLFdBQVcsQ0FBYztJQUlOLFVBQVUsQ0FBYTtJQUMxQyxxRUFBcUU7SUFDbEQsU0FBUyxDQUEyQjtJQUN2RCw0RUFBNEU7SUFDNUUseUVBQXlFO0lBQ3RELGtCQUFrQixDQUFnQztJQUNyRTs7Ozs7T0FLRztJQUNnQixnQkFBZ0IsQ0FBVTtJQUU3QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUErQixFQUMvQixVQUFzQjtRQUV0QixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFakUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM1Qyx5RUFBeUU7UUFDekUsMkVBQTJFO1FBQzNFLG9DQUFvQztRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBQSwyQkFBZSxFQUNyQyxVQUFVLEVBQ1YsS0FBSyxDQUFDLFFBQVEsRUFDZCxJQUFJLENBQUMsV0FBVyxD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Q0FBQyxPQUFPO1lBQ2pDLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQy9CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxrQkFBa0I7WUFDdkQsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsdUJBQXVCO1NBQ3BELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNPLHFCQUFxQjtRQUM3Qix1RUFBdUU7UUFDdkUsdUJBQXVCO1FBQ3ZCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUMxQyxPQUFPLElBQUksa0NBQWUsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDbEQsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsZUFBZSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZTtZQUNqRCxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZO1lBQzNDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxTQUFTLEVBQUU7Z0JBQ1QsR0FBRyxTQUFTO2dCQUNaLGFBQWEsRUFBRTtvQkFDYixHQUFHLFNBQVMsRUFBRSxhQUFhO29CQUMzQiw4REFBOEQ7b0JBQzlELHVEQUF1RDtvQkFDdkQsdUVBQXVFO29CQUN2RSxtRUFBbUU7b0JBQ25FLGtFQUFrRTtvQkFDbEUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQzNEO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQXJUSCxrREFzVEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb2tlbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgSURpc3RyaWJ1dGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udFwiO1xuaW1wb3J0IHsgSVRhYmxlVjIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiXCI7XG5pbXBvcnQgeyBJVnBjIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IElCdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgTE9HX1BSRUZJWCwgTmV4dGpzVHlwZSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IE9wdGlvbmFsTmV4dGpzQnVpbGRQcm9wcyB9IGZyb20gXCIuLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0J1aWxkUHJvcHNcIjtcbmltcG9ydCB7IE9wdGlvbmFsTmV4dGpzQ2FjaGVQcm9wcyB9IGZyb20gXCIuLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0NhY2hlUHJvcHNcIjtcbmltcG9ydCB7IE9wdGlvbmFsTmV4dGpzUG9zdERlcGxveVByb3BzIH0gZnJvbSBcIi4uL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzUG9zdERlcGxveVByb3BzXCI7XG5pbXBvcnQgeyBOZXh0anNBcGlPdmVycmlkZXMgfSBmcm9tIFwiLi4vbmV4dGpzLWFwaVwiO1xuaW1wb3J0IHsgTmV4dGpzQnVpbGQgfSBmcm9tIFwiLi4vbmV4dGpzLWJ1aWxkL25leHRqcy1idWlsZFwiO1xuaW1wb3J0IHsgTmV4dGpzQ2FjaGUsIE5leHRqc0NhY2hlT3ZlcnJpZGVzIH0gZnJvbSBcIi4uL25leHRqcy1jYWNoZVwiO1xuaW1wb3J0IHsgTmV4dGpzQ29tcHV0ZUJhc2VQcm9wcyB9IGZyb20gXCIuLi9uZXh0anMtY29tcHV0ZS9uZXh0anMtY29tcHV0ZS1iYXNlLXByb3BzXCI7XG5pbXBvcnQge1xuICBOZXh0anNGdW5jdGlvbkdyb3VwLFxuICBOZXh0anNGdW5jdGlvbnMsXG4gIE5leHRqc0Z1bmN0aW9uc092ZXJyaWRlcyxcbn0gZnJvbSBcIi4uL25leHRqcy1jb21wdXRlL25leHRqcy1mdW5jdGlvbnNcIjtcbmltcG9ydCB7XG4gIE5leHRqc1Bvc3REZXBsb3ksXG4gIE5leHRqc1Bvc3REZXBsb3lPdmVycmlkZXMsXG59IGZyb20gXCIuLi9uZXh0anMtcG9zdC1kZXBsb3lcIjtcbmltcG9ydCB7XG4gIE5leHRqc1N0YXRpY0Fzc2V0cyxcbiAgTmV4dGpzU3RhdGljQXNzZXRzT3ZlcnJpZGVzLFxuICBOZXh0anNTdGF0aWNBc3NldHNQcm9wcyxcbn0gZnJvbSBcIi4uL25leHRqcy1zdGF0aWMtYXNzZXRzXCI7XG5pbXBvcnQge1xuICBBcGlHYXRld2F5UHJlZml4LFxuICBpc0Fzc2V0UHJlZml4VW5zZXJ2ZWQsXG4gIHByZWZpeFdpdGhCYXNlUGF0aCxcbiAgcmVzb2x2ZUJhc2VQYXRoLFxufSBmcm9tIFwiLi4vdXRpbHMvYmFzZS1wYXRoXCI7XG5cbi8qKlxuICogQmFzZSBvdmVycmlkZXMgZm9yIHRoZSBwcm9wcyBwYXNzZWQgdG8gY29uc3RydWN0cyB3aXRoaW4gcm9vdC90b3AtbGV2ZWwgTmV4dC5qcyBjb25zdHJ1Y3RzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzQmFzZUNvbnN0cnVjdE92ZXJyaWRlcyB7XG4gIHJlYWRvbmx5IG5leHRqc0J1aWxkUHJvcHM/OiBPcHRpb25hbE5leHRqc0J1aWxkUHJvcHM7XG4gIHJlYWRvbmx5IG5leHRqc0NhY2hlUHJvcHM/OiBPcHRpb25hbE5leHRqc0NhY2hlUHJvcHM7XG4gIHJlYWRvbmx5IG5leHRqc1Bvc3REZXBsb3lQcm9wcz86IE9wdGlvbmFsTmV4dGpzUG9zdERlcGxveVByb3BzO1xuICByZWFkb25seSBuZXh0anNTdGF0aWNBc3NldHNQcm9wcz86IE5leHRqc1N0YXRpY0Fzc2V0c1Byb3BzO1xufVxuXG4vKipcbiAqIEJhc2Ugb3ZlcnJpZGVzIGZvciBjb25zdHJ1Y3RzIHNoYXJlZCBiZXR3ZWVuIGFsbCByb290L3RvcC1sZXZlbCBOZXh0LmpzIGNvbnN0cnVjdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzQmFzZU92ZXJyaWRlcyB7XG4gIHJlYWRvbmx5IG5leHRqc0NhY2hlPzogTmV4dGpzQ2FjaGVPdmVycmlkZXM7XG4gIHJlYWRvbmx5IG5leHRqc1Bvc3REZXBsb3k/OiBOZXh0anNQb3N0RGVwbG95T3ZlcnJpZGVzO1xuICByZWFkb25seSBuZXh0anNTdGF0aWNBc3NldHM/OiBOZXh0anNTdGF0aWNBc3NldHNPdmVycmlkZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIFByZWZpeCB0byB0aGUgVVJJIHBhdGggdGhlIGFwcCB3aWxsIGJlIHNlcnZlZCBhdC4gQWxzbyBuYW1lc3BhY2VzIHRoZVxuICAgKiBzdGF0aWMgYXNzZXRzIGluIFMzLCBzbyBpdCBkb3VibGVzIGFzIGEgd2F5IHRvIGhvc3QgbXVsdGlwbGUgYXBwcyBvclxuICAgKiBicmFuY2hlcyBvdXQgb2Ygb25lIGJ1Y2tldC5cbiAgICpcbiAgICogSG93IHRoaXMgcmVsYXRlcyB0byB0aGUgYGJhc2VQYXRoYCBpbiB5b3VyIGFwcCdzIGBuZXh0LmNvbmZpZy5qc2AgZGVwZW5kc1xuICAgKiBvbiB0aGUgY29uc3RydWN0LCBhbmQgc3ludGggZmFpbHMgb24gYSBjb21iaW5hdGlvbiB0aGF0IGNhbid0IHNlcnZlIHRoZVxuICAgKiBhcHA6XG4gICAqXG4gICAqIC0gYE5leHRqc0dsb2JhbEZ1bmN0aW9uc2AvYE5leHRqc0dsb2JhbENvbnRhaW5lcnNgOiBsZWF2ZSB0aGlzIHVuc2V0IGFuZCBpdFxuICAgKiAgIGZvbGxvd3MgeW91ciBhcHAncyBgYmFzZVBhdGhgLCB3aGljaCBpcyB3aGF0IHlvdSB3YW50IOKAlCBDbG91ZEZyb250IHNlcnZlc1xuICAgKiAgIHN0YXRpYyBhc3NldHMgZnJvbSBTMyB1c2luZyB0aGUgcmVxdWVzdCBwYXRoIGFzIHRoZSBvYmplY3Qga2V5LCBzbyB0aGUgdHdvXG4gICAqICAgaGF2ZSB0byBiZSBpZGVudGljYWwgYW5kIGEgbWlzbWF0Y2ggNDA0cyBhbGwgb2YgdGhlbS4gU2V0dGluZyBhIGRpZmZlcmVudFxuICAgKiAgIHZhbHVlIHRocm93cy5cbiAgICogLSBgTmV4dGpzUmVnaW9uYWxGdW5jdGlvbnNgOiBsZWF2ZSB0aGlzIHVuc2V0IGFuZCBpdCBmb2xsb3dzIHlvdXIgYXBwJ3NcbiAgICogICBgYmFzZVBhdGhgIG1pbnVzIHRoZSBwcmVmaXggQVBJIEdhdGV3YXkgc3RyaXBzIGJlZm9yZSBtYXRjaGluZyByZXNvdXJjZXMg4oCUXG4gICAqICAgdGhlIHN0YWdlIChgZGVwbG95T3B0aW9ucy5zdGFnZU5hbWVgLCBkZWZhdWx0IGBwcm9kYCksIG9yIHRoZSBiYXNlIHBhdGhcbiAgICogICBtYXBwaW5nIG9mIGEgY3VzdG9tIGRvbWFpbiBzZXQgaW4gYHJlc3RBcGlQcm9wcy5kb21haW5OYW1lYC4gU29cbiAgICogICBgYmFzZVBhdGg6IFwiL3Byb2RcImAgbW91bnRzIGF0IHRoZSByb290LCBgXCIvcHJvZC9iYXNlXCJgIHVuZGVyIGBiYXNlYCwgYW5kXG4gICAqICAgYFwiL2RvY3NcImAgYmVoaW5kIGEgY3VzdG9tIGRvbWFpbiBtYXBwZWQgYXQgdGhlIHJvb3QgdW5kZXIgYGRvY3NgLiBPbiB0aGVcbiAgICogICBleGVjdXRlLWFwaSBlbmRwb2ludCBhbiBhcHAgYGJhc2VQYXRoYCB0aGF0IGRvZXNuJ3Qgc3RhcnQgd2l0aCB0aGUgc3RhZ2VcbiAgICogICB3YXJucywgc2luY2UgaXRzIGxpbmtzIHdpbGwgbWlzcyB0aGUgc3RhZ2UuIElmIHlvdSBzZXQgdGhpcywgdGhlIGFwcCdzXG4gICAqICAgYGJhc2VQYXRoYCBtdXN0IGVuZCB3aXRoIGl0LiBBIGRvbWFpbiBhdHRhY2hlZCBsYXRlciB3aXRoXG4gICAqICAgYGFkZERvbWFpbk5hbWUoKWAgaXMgbm90IHNlZW4gYXQgc3ludGg7IHNldCB0aGlzIGV4cGxpY2l0bHkgdGhlbiDigJQgdG9cbiAgICogICBgXCIvXCJgIHdoZW4gdGhhdCBkb21haW4ncyBiYXNlIHBhdGggbWFwcGluZyBzdHJpcHMgeW91ciBhcHAncyB3aG9sZVxuICAgKiAgIGBiYXNlUGF0aGAsIHdoaWNoIG1vdW50cyBldmVyeSByZXNvdXJjZSBhdCB0aGUgcm9vdC5cbiAgICogLSBgTmV4dGpzUmVnaW9uYWxDb250YWluZXJzYDogb25seSBuYW1lc3BhY2VzIHRoZSBTMyBidWNrZXQuIFRoZSBBTEIgc2VuZHNcbiAgICogICBldmVyeSBwYXRoIHRvIHRoZSBjb250YWluZXIsIHdoaWNoIHNlcnZlcyBpdHMgb3duIHN0YXRpYyBhc3NldHMsIHNvIHRoaXNcbiAgICogICBpcyB1bmNvbnN0cmFpbmVkLlxuICAgKiBAZXhhbXBsZSBcIi9teS1iYXNlLXBhdGhcIlxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZVBhdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDb21tYW5kIHRvIGdlbmVyYXRlIG9wdGltaXplZCB2ZXJzaW9uIG9mIHlvdXIgTmV4dC5qcyBhcHAgaW4gY29udGFpbmVyO1xuICAgKiBAZGVmYXVsdCBcIm5wbSBydW4gYnVpbGRcIlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRDb21tYW5kPzogc3RyaW5nO1xuICAvKipcbiAgICogRGlyZWN0b3J5IHdoZXJlIHRoZSBOZXh0LmpzIGFwcGxpY2F0aW9uIGlzIGxvY2F0ZWQgZm9yIGxvY2FsIGJ1aWxkcy5cbiAgICogVGhpcyBzaG91bGQgY29udGFpbiB0aGUgcGFja2FnZS5qc29uIGFuZCBOZXh0LmpzIGFwcGxpY2F0aW9uIGZpbGVzLlxuICAgKiBUaGlzIGlzIHdoZXJlIHtAbGluayBOZXh0anNCYXNlUHJvcHMuYnVpbGRDb21tYW5kfSBpcyBydW4uXG4gICAqIEBleGFtcGxlIGpvaW4oaW1wb3J0Lm1ldGEuZGlybmFtZSwgXCIuLlwiLCBcIndlYlwiKSBvciBcIi9wYXRoL3RvL25leHRqcy9hcHBcIlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGREaXJlY3Rvcnk6IHN0cmluZztcbiAgLyoqXG4gICAqIEJyaW5nIHlvdXIgb3duIFMzIGJ1Y2tldCBmb3IgY2FjaGUgc3RvcmFnZS4gV2hlbiBwcm92aWRlZCwgY2RrLW5leHRqc1xuICAgKiB3aWxsIHVzZSB0aGlzIGJ1Y2tldCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9uZS5cbiAgICpcbiAgICogVGhlIGJ1Y2tldCBtdXN0IGJlIGRlZGljYXRlZCB0byB0aGlzIG9uZSBkZXBsb3ltZW50LiBEb24ndCBzaGFyZSBpdCB3aXRoXG4gICAqIGFub3RoZXIgZGVwbG95bWVudCAoYW5vdGhlciBicmFuY2gsIHN0YWdlLCBvciBhcHApOiBldmVyeSBkZXBsb3knc1xuICAgKiBwb3N0LWRlcGxveSBzdGVwIGRlbGV0ZXMgZXZlcnkgb2JqZWN0IHVuZGVyIGEgdG9wLWxldmVsIHByZWZpeCBvdGhlciB0aGFuXG4gICAqIHRoZSBjdXJyZW50IGBidWlsZElkL2AsIHdoaWNoIGluY2x1ZGVzIGV2ZXJ5IG90aGVyIGRlcGxveW1lbnQncyBjYWNoZS5cbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlQnVja2V0PzogSUJ1Y2tldDtcbiAgLyoqXG4gICAqIEJyaW5nIHlvdXIgb3duIER5bmFtb0RCIHRhYmxlIGZvciByZXZhbGlkYXRpb24gbWV0YWRhdGEuIFdoZW4gcHJvdmlkZWQsXG4gICAqIGNkay1uZXh0anMgd2lsbCB1c2UgdGhpcyB0YWJsZSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9uZS4gVGhlIHRhYmxlXG4gICAqIG11c3QgaGF2ZSBgcGtgIChTdHJpbmcpIGFzIHBhcnRpdGlvbiBrZXkgYW5kIGBza2AgKFN0cmluZykgYXMgc29ydCBrZXkuXG4gICAqIEVuYWJsZSBUVEwgb24gaXRzIGB0dGxgIGF0dHJpYnV0ZSB0b286IGVhY2ggdGFnIHJldmFsaWRhdGlvbiB3cml0ZXMgYVxuICAgKiByZXZhbGlkYXRpb24gbG9nIHJvdyB0aGF0IGV4cGlyZXMgdGhyb3VnaCBpdCwgYW5kIHdpdGhvdXQgVFRMIHRob3NlIHJvd3NcbiAgICogYWNjdW11bGF0ZS5cbiAgICpcbiAgICogVGhlIHRhYmxlIG11c3QgYmUgZGVkaWNhdGVkIHRvIHRoaXMgb25lIGRlcGxveW1lbnQuIERvbid0IHNoYXJlIGl0IHdpdGhcbiAgICogYW5vdGhlciBkZXBsb3ltZW50IChhbm90aGVyIGJyYW5jaCwgc3RhZ2UsIG9yIGFwcCk6IGV2ZXJ5IGRlcGxveSdzXG4gICAqIHBvc3QtZGVwbG95IHN0ZXAgZGVsZXRlcyB0aGUgZW50cmllcyBvZiB0aGUgYnVpbGQgaXQgbGFzdCByZWNvcmRlZCBpbiB0aGVcbiAgICogdGFibGUsIHdoaWNoIHdpdGggYSBzaGFyZWQgdGFibGUgaXMgYW5vdGhlciBkZXBsb3ltZW50J3MgbGl2ZSBidWlsZC5cbiAgICovXG4gIHJlYWRvbmx5IHJldmFsaWRhdGlvblRhYmxlPzogSVRhYmxlVjI7XG4gIC8qKlxuICAgKiBTa2lwcyBydW5uaW5nIGBuZXh0IGJ1aWxkYC4gSWYgYHRydWVgLCB5b3UgYXJlIHJlc3BvbnNpYmxlIGZvciBydW5uaW5nXG4gICAqIGBuZXh0IGJ1aWxkYCBiZWZvcmUgdGhpcyBjb25zdHJ1Y3QgaXMgc3ludGhlc2l6ZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwQnVpbGQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQnJpbmcgeW91ciBvd24gUzMgYnVja2V0IGZvciBzdGF0aWMgYXNzZXRzLiBXaGVuIHByb3ZpZGVkLCBjZGstbmV4dGpzXG4gICAqIHdpbGwgZGVwbG95IHN0YXRpYyBhc3NldHMgdG8gdGhpcyBidWNrZXQgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUuXG4gICAqXG4gICAqIFVubGlrZSBgY2FjaGVCdWNrZXRgLCB0aGlzIG9uZSBjYW4gYmUgc2hhcmVkLCBidXQgb25seSBiZXR3ZWVuIGRlcGxveW1lbnRzXG4gICAqIHdpdGggZGlmZmVyZW50IGBiYXNlUGF0aGBzIChzbyBkaWZmZXJlbnQgUzMga2V5IHByZWZpeGVzKS4gUHJ1bmluZyBvbmx5XG4gICAqIHRvdWNoZXMgYDxiYXNlUGF0aD4vX25leHQvYCwgc28gaXQgbGVhdmVzIHRoZSBvdGhlcnMnIGFzc2V0cyBhbG9uZS4gVHdvXG4gICAqIGRlcGxveW1lbnRzIHVuZGVyIHRoZSBzYW1lIHByZWZpeCBvdmVyd3JpdGUgZWFjaCBvdGhlcidzIGBwdWJsaWMvYCBmaWxlc1xuICAgKiBhbmQgcHJ1bmUgZWFjaCBvdGhlcidzIGBfbmV4dC9gIGFzc2V0cyBvbmNlIHRoZXkgYXJlIHBhc3QgdGhlIHBydW5lXG4gICAqIFRUTCAoMzAgZGF5cyBieSBkZWZhdWx0KS5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXRpY0Fzc2V0c0J1Y2tldD86IElCdWNrZXQ7XG4gIC8qKlxuICAgKiBCcmluZyB5b3VyIG93biBWUEMuXG4gICAqIElmIHByb3ZpZGVkLCB3aWxsIGJlIHBhc3NlZCB2aWEgb3ZlcnJpZGVzIHRvIHRoZSBFQ1MgQ2x1c3RlciAoZm9yIGNvbnRhaW5lci1iYXNlZCBjb25zdHJ1Y3RzKVxuICAgKiBvciB0byB0aGUgTGFtYmRhIGZ1bmN0aW9uIChmb3IgZnVuY3Rpb24tYmFzZWQgY29uc3RydWN0cykuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgRUNTIENsdXN0ZXIgd2lsbCBjcmVhdGUgYSBWUEMgYXV0b21hdGljYWxseSBmb3IgY29udGFpbmVycyxcbiAgICogYW5kIExhbWJkYSBmdW5jdGlvbnMgd2lsbCBydW4gb3V0c2lkZSBhIFZQQy5cbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IElWcGM7XG59XG5cbi8qKlxuICogUmVxdWlyZWQgYmVjYXVzZSBpZiB3ZSBhZGQgYG92ZXJyaWRlc2Agb250byBgTmV4dGpzQmFzZVByb3BzYCB3ZSBnZXQganNpaVxuICogZXJyb3I6IGBJbnRlcmZhY2UgLi4uIHJlLWRlY2xhcmVzIG1lbWJlciBcIm92ZXJyaWRlc1wiYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc0Jhc2VDb25zdHJ1Y3RQcm9wcyBleHRlbmRzIE5leHRqc0Jhc2VQcm9wcyB7XG4gIHJlYWRvbmx5IG92ZXJyaWRlcz86IE5leHRqc0Jhc2VPdmVycmlkZXM7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYWxsIE5leHQuanMgcm9vdCBjb25zdHJ1Y3RzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZXh0anNCYXNlQ29uc3RydWN0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgbmV4dGpzQnVpbGQ6IE5leHRqc0J1aWxkO1xuICBuZXh0anNTdGF0aWNBc3NldHM6IE5leHRqc1N0YXRpY0Fzc2V0cztcbiAgbmV4dGpzQ2FjaGU6IE5leHRqc0NhY2hlO1xuXG4gIGFic3RyYWN0IGdldCB1cmwoKTogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBuZXh0anNUeXBlOiBOZXh0anNUeXBlO1xuICAvLyB1c2UgYmFzZVByb3BzIGluc3RlYWQgb2YgcHJvcHMgc28gdGhhdCBjaGlsZCBjbGFzc2VzIGNhbiB1c2UgcHJvcHNcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGJhc2VQcm9wczogTmV4dGpzQmFzZUNvbnN0cnVjdFByb3BzO1xuICAvLyBXaWRlc3Qgc2hhcGUgb2YgdGhlIHBlci1gTmV4dGpzVHlwZWAgb3ZlcnJpZGVzLiBUaGUgcHVibGljIGludGVyZmFjZSBlYWNoXG4gIC8vIHJvb3QgY29uc3RydWN0IGFjY2VwdHMgaXMgd2hhdCBhY3R1YWxseSBnYXRlcyB3aGljaCBrZXlzIGFyZSBzZXR0YWJsZS5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnN0cnVjdE92ZXJyaWRlcz86IE5leHRqc0Jhc2VDb25zdHJ1Y3RPdmVycmlkZXM7XG4gIC8qKlxuICAgKiBUaGUgYGJhc2VQYXRoYCBldmVyeXRoaW5nIGRvd25zdHJlYW0gaXMgYnVpbHQgZnJvbTogdGhlIGBiYXNlUGF0aGAgcHJvcCB3aGVuXG4gICAqIHNldCwgb3RoZXJ3aXNlIHRoZSBhcHAncyBvd24gYGJhc2VQYXRoYCBmb3IgdGhlIGBOZXh0anNUeXBlYHMgd2hlcmUgdGhlIHR3b1xuICAgKiBhcmUgbmVjZXNzYXJpbHkgdGhlIHNhbWUuIE5vcm1hbGl6ZWQgdG8gYSBiYXJlIHBhdGggc2VnbWVudCwgYHVuZGVmaW5lZGAgZm9yXG4gICAqIG5vIGBiYXNlUGF0aGAuIFVzZSB0aGlzIGluc3RlYWQgb2YgYGJhc2VQcm9wcy5iYXNlUGF0aGAuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVzb2x2ZWRCYXNlUGF0aD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IE5leHRqc0Jhc2VDb25zdHJ1Y3RQcm9wcyxcbiAgICBuZXh0anNUeXBlOiBOZXh0anNUeXBlLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuYmFzZVByb3BzID0gcHJvcHM7XG4gICAgdGhpcy5uZXh0anNUeXBlID0gbmV4dGpzVHlwZTtcbiAgICB0aGlzLmNvbnN0cnVjdE92ZXJyaWRlcyA9IHRoaXMuZ2V0Q29uc3RydWN0T3ZlcnJpZGVzKG5leHRqc1R5cGUpO1xuXG4gICAgdGhpcy5uZXh0anNCdWlsZCA9IHRoaXMuY3JlYXRlTmV4dGpzQnVpbGQoKTtcbiAgICAvLyBBIGJhc2VQYXRoIHRoYXQgZG9lc24ndCBsaW5lIHVwIHdpdGggdGhlIGFwcCdzIG93biBkZXBsb3lzIGNsZWFubHkgYW5kXG4gICAgLy8gdGhlbiA0MDRzIHN0YXRpYyBhc3NldHMsIHNvIHJlY29uY2lsZSB0aGUgdHdvIHVwIGZyb250IGFuZCBmYWlsIGF0IHN5bnRoXG4gICAgLy8gb24gYSBjb21iaW5hdGlvbiB0aGF0IGNhbid0IHdvcmsuXG4gICAgdGhpcy5yZXNvbHZlZEJhc2VQYXRoID0gcmVzb2x2ZUJhc2VQYXRoKFxuICAgICAgbmV4dGpzVHlwZSxcbiAgICAgIHByb3BzLmJhc2VQYXRoLFxuICAgICAgdGhpcy5uZXh0anNCdWlsZC5uZXh0Q29uZmlnQmFzZVBhdGgsXG4gICAgICB0aGlzLmFwaUdhdGV3YXlQcmVmaXgoKSxcbiAgICApO1xuICAgIHRoaXMubmV4dGpzQ2FjaGUgPSB0aGlzLmNyZWF0ZU5leHRqc0NhY2hlKCk7XG4gICAgdGhpcy5uZXh0anNTdGF0aWNBc3NldHMgPSB0aGlzLmNyZWF0ZU5leHRqc1N0YXRpY0Fzc2V0cygpO1xuICAgIHRoaXMudmFsaWRhdGVTdGF0aWNBc3NldHNLZXlQcmVmaXgoKTtcbiAgICB0aGlzLndhcm5VbnNlcnZlZEFzc2V0UHJlZml4KCk7XG4gIH1cblxuICAvKipcbiAgICogV2FybnMgd2hlbiBhIHBhdGgtc3R5bGUgYGFzc2V0UHJlZml4YCB3b3VsZCA0MDQgZXZlcnkgYnVuZGxlIG9uIHRoaXNcbiAgICogYE5leHRqc1R5cGVgIOKAlCBzZWUge0BsaW5rIGlzQXNzZXRQcmVmaXhVbnNlcnZlZH0gZm9yIHdoaWNoIGNvbWJpbmF0aW9ucyB0aG9zZVxuICAgKiBhcmUgYW5kIHdoeSBhIHByZWZpeCBlcXVhbCB0byB0aGUgYXBwJ3MgYGJhc2VQYXRoYCBpcyBub3Qgb25lIG9mIHRoZW0uXG4gICAqXG4gICAqIFdhcm4gcmF0aGVyIHRoYW4gdGhyb3c6IGl0IGlzIHRoZSBhcHAncyBjb25maWcsIHRoZSBkZXBsb3ltZW50IG90aGVyd2lzZVxuICAgKiB3b3JrcywgYW5kIGFuIGFic29sdXRlIGBhc3NldFByZWZpeGAgKGFscmVhZHkgcmVkdWNlZCB0byBgXCJcImAgYnlcbiAgICogYHJlbGF0aXZlQXNzZXRQcmVmaXhgKSBpcyB0aGUgc3VwcG9ydGVkIHdheSB0byBzZXJ2ZSBhc3NldHMgZnJvbVxuICAgKiBlbHNld2hlcmUuXG4gICAqL1xuICBwcml2YXRlIHdhcm5VbnNlcnZlZEFzc2V0UHJlZml4KCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgICFpc0Fzc2V0UHJlZml4VW5zZXJ2ZWQoXG4gICAgICAgIHRoaXMubmV4dGpzVHlwZSxcbiAgICAgICAgdGhpcy5uZXh0anNCdWlsZC5uZXh0Q29uZmlnQXNzZXRQcmVmaXgsXG4gICAgICAgIHRoaXMubmV4dGpzQnVpbGQubmV4dENvbmZpZ0Jhc2VQYXRoLFxuICAgICAgKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBgJHtMT0dfUFJFRklYfSB5b3VyIE5leHQuanMgYXBwIHNldHMgXFxgYXNzZXRQcmVmaXg6IFwiJHt0aGlzLm5leHRqc0J1aWxkLm5leHRDb25maWdBc3NldFByZWZpeH1cIlxcYCwgYCArXG4gICAgICAgIGB3aGljaCBOZXh0anNUeXBlLiR7dGhpcy5uZXh0anNUeXBlfSBjYW5ub3Qgc2VydmU6IHlvdXIgYnVuZGxlcyB3aWxsIGJlIHJlcXVlc3RlZCBhdCBgICtcbiAgICAgICAgYFwiJHt0aGlzLm5leHRqc0J1aWxkLm5leHRDb25maWdBc3NldFByZWZpeH0vX25leHQvc3RhdGljLy4uLlwiIGFuZCBub3RoaW5nIGFuc3dlcnMgdGhlcmUsIHNvIHRoZXkgd2lsbCA0MDQuIGAgK1xuICAgICAgICBcIkRyb3AgYGFzc2V0UHJlZml4YCwgdXNlIGFuIGFic29sdXRlIG9uZSBwb2ludGluZyBhdCBhIENETiB5b3UgZnJvbnQgdGhlIGFzc2V0cyBidWNrZXQgd2l0aCwgXCIgK1xuICAgICAgICBcIm9yIGRlcGxveSB3aXRoIE5leHRqc0dsb2JhbEZ1bmN0aW9ucy9OZXh0anNHbG9iYWxDb250YWluZXJzLlwiLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRm9yIHRoZSBHbG9iYWwgYE5leHRqc1R5cGVgcyB0aGUga2V5IHByZWZpeCBpc24ndCBhIGZyZWUgY2hvaWNlOiBpdCBoYXMgdG8gYmVcbiAgICogYGJhc2VQYXRoYCAoc2VlIGByZXNvbHZlQmFzZVBhdGhgKS4gQSBgZGVzdGluYXRpb25LZXlQcmVmaXhgIG92ZXJyaWRlIHRoYXRcbiAgICogbW92ZXMgdGhlIG9iamVjdHMgZWxzZXdoZXJlIGhhcyBubyB3YXkgdG8gdGVsbCB0aGUgZGlzdHJpYnV0aW9uIGFib3V0IGl0IOKAlFxuICAgKiB1bmxpa2UgdGhlIGZ1bmN0aW9ucycgaW1hZ2Ugb3B0aW1pemVyIGFuZCBgTmV4dGpzQXBpYCwgd2hpY2ggcmVhZFxuICAgKiBgTmV4dGpzU3RhdGljQXNzZXRzLmtleVByZWZpeGAg4oCUIHNvIGZhaWwgYXQgc3ludGggcmF0aGVyIHRoYW4gNDA0IGV2ZXJ5XG4gICAqIHN0YXRpYyByZXF1ZXN0LlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVN0YXRpY0Fzc2V0c0tleVByZWZpeCgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLm5leHRqc1R5cGUgIT09IE5leHRqc1R5cGUuR0xPQkFMX0ZVTkNUSU9OUyAmJlxuICAgICAgdGhpcy5uZXh0anNUeXBlICE9PSBOZXh0anNUeXBlLkdMT0JBTF9DT05UQUlORVJTXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGV4cGVjdGVkID0gdGhpcy5yZXNvbHZlZEJhc2VQYXRoID8/IFwiXCI7XG4gICAgY29uc3QgYWN0dWFsID0gdGhpcy5uZXh0anNTdGF0aWNBc3NldHMua2V5UHJlZml4O1xuICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGAke0xPR19QUkVGSVh9IHN0YXRpYyBhc3NldHMga2V5IHByZWZpeCBtaXNtYXRjaCBmb3IgTmV4dGpzVHlwZS4ke3RoaXMubmV4dGpzVHlwZX06IGAgK1xuICAgICAgICAgIGB0aGUgYXNzZXRzIGFyZSB1cGxvYWRlZCB1bmRlciAke2FjdHVhbCA/IGBcIiR7YWN0dWFsfVwiYCA6IFwidGhlIGJ1Y2tldCByb290XCJ9IGAgK1xuICAgICAgICAgIGBidXQgQ2xvdWRGcm9udCB3aWxsIHJlcXVlc3QgdGhlbSB1bmRlciAke2V4cGVjdGVkID8gYFwiJHtleHBlY3RlZH1cImAgOiBcInRoZSBidWNrZXQgcm9vdFwifSwgYCArXG4gICAgICAgICAgXCJ1c2luZyB0aGUgcmVxdWVzdCBwYXRoIGFzIHRoZSBTMyBvYmplY3Qga2V5LCBzbyBldmVyeSBgX25leHQvc3RhdGljYCBhbmQgYHB1YmxpYy9gIHJlcXVlc3Qgd291bGQgNDA0LiBcIiArXG4gICAgICAgICAgXCJEcm9wIHRoZSBgZGVzdGluYXRpb25LZXlQcmVmaXhgIG92ZXJyaWRlLCBvciBzZXQgaXQgdG8gdGhlIHNhbWUgdmFsdWUgYXMgYGJhc2VQYXRoYC4gXCIgK1xuICAgICAgICAgIFwiVG8gbmFtZXNwYWNlIGEgc2hhcmVkIGJ1Y2tldCwgdXNlIGBiYXNlUGF0aGAg4oCUIGl0IHByZWZpeGVzIHRoZSBrZXlzIGFuZCB0aGUgVVJMcyB0b2dldGhlci5cIixcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggQVBJIEdhdGV3YXkgd2lsbCBzdHJpcCwgcmVhZCBmcm9tIHRoZSBzYW1lIGByZXN0QXBpUHJvcHNgXG4gICAqIG92ZXJyaWRlIGBOZXh0anNBcGlgIGJ1aWxkcyBpdHMgYFJlc3RBcGlgIGZyb20uIE9ubHkgbWVhbmluZ2Z1bCBmb3JcbiAgICogYFJFR0lPTkFMX0ZVTkNUSU9OU2AsIGFuZCByZWFkIGJlZm9yZSBgTmV4dGpzQXBpYCBleGlzdHMgYmVjYXVzZSB0aGVcbiAgICogcmVzb2x2ZWQgYGJhc2VQYXRoYCBhbHNvIGRlY2lkZXMgdGhlIHN0YXRpYyBhc3NldHMnIFMzIGtleSBwcmVmaXguXG4gICAqXG4gICAqIEEgZG9tYWluIGF0dGFjaGVkIGxhdGVyIHdpdGggYGFwaS5hZGREb21haW5OYW1lKClgIGlzIGludmlzaWJsZSBoZXJlLCB0aGVcbiAgICogc2FtZSBsaW1pdGF0aW9uIGBOZXh0anNBcGkudXJsYCBkb2N1bWVudHMuXG4gICAqL1xuICBwcml2YXRlIGFwaUdhdGV3YXlQcmVmaXgoKTogQXBpR2F0ZXdheVByZWZpeCB7XG4gICAgLy8gYG92ZXJyaWRlcy5uZXh0anNBcGlgIGlzIHRoZSBvbmx5IHR5cGVkIHdheSB0byByZWFjaCB0aGUgYFJlc3RBcGlgJ3NcbiAgICAvLyBwcm9wczogYG5leHRqc1JlZ2lvbmFsRnVuY3Rpb25zLm5leHRqc0FwaVByb3BzYCBpc1xuICAgIC8vIGBPcHRpb25hbE5leHRqc0FwaVByb3BzYCwgd2hpY2ggaGFzIG5vIGBvdmVycmlkZXNgLlxuICAgIGNvbnN0IGFwaU92ZXJyaWRlcyA9IChcbiAgICAgIHRoaXMuYmFzZVByb3BzLm92ZXJyaWRlcyBhcyB7IG5leHRqc0FwaT86IE5leHRqc0FwaU92ZXJyaWRlcyB9IHwgdW5kZWZpbmVkXG4gICAgKT8ubmV4dGpzQXBpO1xuICAgIGNvbnN0IHJlc3RBcGlQcm9wcyA9IGFwaU92ZXJyaWRlcz8ucmVzdEFwaVByb3BzO1xuICAgIGNvbnN0IGRvbWFpbk5hbWUgPSByZXN0QXBpUHJvcHM/LmRvbWFpbk5hbWU7XG4gICAgY29uc3Qgc3RyaXBwZWRQcmVmaXggPSBkb21haW5OYW1lXG4gICAgICA/IChkb21haW5OYW1lLmJhc2VQYXRoID8/IFwiXCIpXG4gICAgICA6IChyZXN0QXBpUHJvcHM/LmRlcGxveU9wdGlvbnM/LnN0YWdlTmFtZSA/PyBcInByb2RcIik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0cmlwcGVkUHJlZml4OiBUb2tlbi5pc1VucmVzb2x2ZWQoc3RyaXBwZWRQcmVmaXgpXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDogc3RyaXBwZWRQcmVmaXgsXG4gICAgICBjdXN0b21Eb21haW46IGRvbWFpbk5hbWUgIT09IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGNvbnN0cnVjdCBvdmVycmlkZXMgKGlmIHByZXNlbnQpIG9uIHByb3BzIGZvciBhbnkgYE5leHRqc1R5cGVgXG4gICAqL1xuICBwcml2YXRlIGdldENvbnN0cnVjdE92ZXJyaWRlcyhuZXh0anNUeXBlOiBOZXh0anNUeXBlKSB7XG4gICAgY29uc3QgbmV4dGpzVHlwZVRvS2V5OiBSZWNvcmQ8TmV4dGpzVHlwZSwgc3RyaW5nPiA9IHtcbiAgICAgIFtOZXh0anNUeXBlLkdMT0JBTF9DT05UQUlORVJTXTogXCJuZXh0anNHbG9iYWxDb250YWluZXJzXCIsXG4gICAgICBbTmV4dGpzVHlwZS5HTE9CQUxfRlVOQ1RJT05TXTogXCJuZXh0anNHbG9iYWxGdW5jdGlvbnNcIixcbiAgICAgIFtOZXh0anNUeXBlLlJFR0lPTkFMX0NPTlRBSU5FUlNdOiBcIm5leHRqc1JlZ2lvbmFsQ29udGFpbmVyc1wiLFxuICAgICAgW05leHRqc1R5cGUuUkVHSU9OQUxfRlVOQ1RJT05TXTogXCJuZXh0anNSZWdpb25hbEZ1bmN0aW9uc1wiLFxuICAgIH07XG4gICAgY29uc3Qga2V5ID0gbmV4dGpzVHlwZVRvS2V5W25leHRqc1R5cGVdO1xuICAgIGNvbnN0IG92ZXJyaWRlcyA9IHRoaXMuYmFzZVByb3BzLm92ZXJyaWRlcyBhc1xuICAgICAgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gICAgaWYgKG92ZXJyaWRlcyAmJiBrZXkgaW4gb3ZlcnJpZGVzKSB7XG4gICAgICByZXR1cm4gb3ZlcnJpZGVzW2tleV0gYXMgTmV4dGpzQmFzZUNvbnN0cnVjdE92ZXJyaWRlcztcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIGBvdmVycmlkZXMubmV4dGpzRnVuY3Rpb25zYCwgd2hpY2ggb25seSB0aGUgdHdvIEZ1bmN0aW9ucyByb290IGNvbnN0cnVjdHNcbiAgICogZGVjbGFyZS4gQ2FzdCBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIHtAbGluayBmdW5jdGlvbkdyb3Vwc30uXG4gICAqL1xuICBwcml2YXRlIGdldCBmdW5jdGlvbnNPdmVycmlkZXMoKTogTmV4dGpzRnVuY3Rpb25zT3ZlcnJpZGVzIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBvdmVycmlkZXMgPSB0aGlzLmJhc2VQcm9wcy5vdmVycmlkZXMgYXNcbiAgICAgIHsgbmV4dGpzRnVuY3Rpb25zPzogTmV4dGpzRnVuY3Rpb25zT3ZlcnJpZGVzIH0gfCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIG92ZXJyaWRlcz8ubmV4dGpzRnVuY3Rpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIGBmdW5jdGlvbkdyb3Vwc2AsIHdoaWNoIG9ubHkgdGhlIHR3byBGdW5jdGlvbnMgcm9vdCBjb25zdHJ1Y3RzIGFjY2VwdCDigJRcbiAgICogQ29udGFpbmVycyBkZXBsb3kgb25lIHRhc2sgZGVmaW5pdGlvbiBhbmQgaGF2ZSBubyAyNTAgTUIgcGFja2FnZSBsaW1pdCB0b1xuICAgKiBzcGxpdCBhcm91bmQuXG4gICAqXG4gICAqIFJlYWQgb2ZmIGBiYXNlUHJvcHNgIHdpdGggYSBjYXN0IGZvciB0aGUgc2FtZSByZWFzb24gYXNcbiAgICoge0BsaW5rIGdldENvbnN0cnVjdE92ZXJyaWRlc306IGBjcmVhdGVOZXh0anNCdWlsZGAgYW5kXG4gICAqIGBjcmVhdGVOZXh0anNGdW5jdGlvbnNgIGFyZSBzaGFyZWQgaGVyZSwgYnV0IHRoZSBwcm9wIGlzIGRlY2xhcmVkIG9uIHRoZVxuICAgKiBzdWJjbGFzc2VzLCBzbyBub3RoaW5nIHdlYWtlciB0aGFuIGEgY2FzdCBjYW4gc2VlIGl0LiBBZGRpbmcgaXQgdG9cbiAgICogYE5leHRqc0Jhc2VQcm9wc2Agd291bGQgb2ZmZXIgaXQgdG8gQ29udGFpbmVycywgd2hlcmUgaXQgZG9lcyBub3RoaW5nLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBmdW5jdGlvbkdyb3VwcygpOiBOZXh0anNGdW5jdGlvbkdyb3VwW10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHByb3BzID0gdGhpcy5iYXNlUHJvcHMgYXMgeyBmdW5jdGlvbkdyb3Vwcz86IE5leHRqc0Z1bmN0aW9uR3JvdXBbXSB9O1xuICAgIHJldHVybiBwcm9wcy5mdW5jdGlvbkdyb3VwcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaGVhbHRoIGNoZWNrIHBhdGggYXMgdGhlIHJ1bm5pbmcgYXBwIGFjdHVhbGx5IHNlcnZlcyBpdC5cbiAgICpcbiAgICogQm90aCBjb25zdW1lcnMgb2YgdGhpcyBoaXQgdGhlIGFwcCBkaXJlY3RseSDigJQgdGhlIEFMQiB0YXJnZXQgZ3JvdXAgZm9yd2FyZHNcbiAgICogdGhlIHBhdGggdG8gdGhlIGNvbnRhaW5lciB1bmNoYW5nZWQsIGFuZCB0aGUgY29udGFpbmVyJ3MgYHdnZXRgIHByb2JlIHRhcmdldHNcbiAgICogdGhlIGxvY2FsIHNlcnZlciDigJQgc28gdGhlIHByZWZpeCB0aGF0IG1hdHRlcnMgaXMgdGhlIGFwcCdzIG93biBgYmFzZVBhdGhgLFxuICAgKiBub3QgYHJlc29sdmVkQmFzZVBhdGhgICh3aGljaCBmb3IgYFJFR0lPTkFMX0NPTlRBSU5FUlNgIGlzIG9ubHkgYW4gUzNcbiAgICogbmFtZXNwYWNlKS4gTGVmdCB1bnByZWZpeGVkLCBhbiBhcHAgd2l0aCBhIGBiYXNlUGF0aGAgNDA0cyBldmVyeSBoZWFsdGhcbiAgICogY2hlY2ssIHNvIHRoZSB0YXJnZXQgbmV2ZXIgdHVybnMgaGVhbHRoeSBhbmQgdGhlIGRlcGxveW1lbnQgcm9sbHMgYmFjay5cbiAgICogYGhlYWx0aENoZWNrUGF0aGAgaXMgdGhlcmVmb3JlIHRoZSBwYXRoIGFzIHRoZSBhcHAgcm91dGVzIGl0LCB3aXRob3V0XG4gICAqIGBiYXNlUGF0aGA7IG9uZSB0aGF0IGNhcnJpZXMgdGhlIHByZWZpeCBhbHJlYWR5IGdldHMgaXQgdHdpY2UsIHdoaWNoIGlzIHRoZVxuICAgKiAwLjYuMiBicmVha2luZyBjaGFuZ2UgZm9yIGFueW9uZSB3aG8gcHJlZml4ZWQgYnkgaGFuZCB0byB3b3JrIGFyb3VuZCB0aGlzLlxuICAgKlxuICAgKiBUYWtlcyB0aGUgcGF0aCBhcyBhbiBhcmd1bWVudCByYXRoZXIgdGhhbiByZWFkaW5nIGl0IG9mZiBgYmFzZVByb3BzYDogb25seVxuICAgKiB0aGUgdHdvIENvbnRhaW5lcnMgcm9vdCBjb25zdHJ1Y3RzIGRlY2xhcmUgYGhlYWx0aENoZWNrUGF0aGAsIHNpbmNlIHRoZXkncmVcbiAgICogdGhlIG9ubHkgb25lcyB3aXRoIHNvbWV0aGluZyB0byBoZWFsdGgtY2hlY2suXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb2x2ZWRIZWFsdGhDaGVja1BhdGgoaGVhbHRoQ2hlY2tQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwcmVmaXhXaXRoQmFzZVBhdGgoXG4gICAgICB0aGlzLm5leHRqc0J1aWxkLm5leHRDb25maWdCYXNlUGF0aCxcbiAgICAgIGhlYWx0aENoZWNrUGF0aCxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb21wdXRlIGJhc2UgcHJvcHMgZm9yIGJvdGggTGFtYmRhIGZ1bmN0aW9ucyBhbmQgY29udGFpbmVyc1xuICAgKi9cbiAgcHJvdGVjdGVkIGNvbXB1dGVCYXNlUHJvcHMoKTogTmV4dGpzQ29tcHV0ZUJhc2VQcm9wcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNhY2hlQnVja2V0OiB0aGlzLm5leHRqc0NhY2hlLmNhY2hlQnVja2V0LFxuICAgICAgcmV2YWxpZGF0aW9uVGFibGU6IHRoaXMubmV4dGpzQ2FjaGUucmV2YWxpZGF0aW9uVGFibGUsXG4gICAgICBidWlsZElkOiB0aGlzLm5leHRqc0J1aWxkLmJ1aWxkSWQsXG4gICAgICBuZXh0anNUeXBlOiB0aGlzLm5leHRqc1R5cGUsXG4gICAgICBzdGF0aWNBc3NldHNCdWNrZXQ6IHRoaXMubmV4dGpzU3RhdGljQXNzZXRzLmJ1Y2tldCxcbiAgICAgIHN0YXRpY0Fzc2V0c0tleVByZWZpeDogdGhpcy5uZXh0anNTdGF0aWNBc3NldHMua2V5UHJlZml4LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUnVucyBhZnRlciB0aGUgaW5pdCBjYWNoZSB1cGxvYWQ6IGludmFsaWRhdGluZyB0aGUgQ0ROIGJlZm9yZSB0aGUgbmV3XG4gICAqIGNhY2hlIGlzIGluIHBsYWNlIHdvdWxkIG9ubHkgcmUtY2FjaGUgdGhlIHJlc3BvbnNlcyB0aGUgaW52YWxpZGF0aW9uIHdhc1xuICAgKiBtZWFudCB0byBkcm9wLCBhbmQgQ2xvdWRGb3JtYXRpb24gaW5mZXJzIG5vIG9yZGVyaW5nIGJldHdlZW4gdGhlIHR3b1xuICAgKiBjdXN0b20gcmVzb3VyY2VzIG9uIGl0cyBvd24uXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlTmV4dGpzUG9zdERlcGxveShcbiAgICBkaXN0cmlidXRpb24/OiBJRGlzdHJpYnV0aW9uLFxuICApOiBOZXh0anNQb3N0RGVwbG95IHtcbiAgICBjb25zdCBwb3N0RGVwbG95ID0gbmV3IE5leHRqc1Bvc3REZXBsb3kodGhpcywgXCJOZXh0anNQb3N0RGVwbG95XCIsIHtcbiAgICAgIGJhc2VQYXRoOiB0aGlzLnJlc29sdmVkQmFzZVBhdGgsXG4gICAgICBidWlsZElkOiB0aGlzLm5leHRqc0J1aWxkLmJ1aWxkSWQsXG4gICAgICBkaXN0cmlidXRpb24sXG4gICAgICBjYWNoZUJ1Y2tldDogdGhpcy5uZXh0anNDYWNoZS5jYWNoZUJ1Y2tldCxcbiAgICAgIHJldmFsaWRhdGlvblRhYmxlOiB0aGlzLm5leHRqc0NhY2hlLnJldmFsaWRhdGlvblRhYmxlLFxuICAgICAgc3RhdGljQXNzZXRzQnVja2V0OiB0aGlzLm5leHRqc1N0YXRpY0Fzc2V0cy5idWNrZXQsXG4gICAgICBzdGF0aWNBc3NldHNLZXlQcmVmaXg6IHRoaXMubmV4dGpzU3RhdGljQXNzZXRzLmtleVByZWZpeCxcbiAgICAgIG92ZXJyaWRlczogdGhpcy5iYXNlUHJvcHMub3ZlcnJpZGVzPy5uZXh0anNQb3N0RGVwbG95LFxuICAgICAgLi4udGhpcy5jb25zdHJ1Y3RPdmVycmlkZXM/Lm5leHRqc1Bvc3REZXBsb3lQcm9wcyxcbiAgICB9KTtcbiAgICBpZiAodGhpcy5uZXh0anNDYWNoZS5idWNrZXREZXBsb3ltZW50KSB7XG4gICAgICBwb3N0RGVwbG95Lm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLm5leHRqc0NhY2hlLmJ1Y2tldERlcGxveW1lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gcG9zdERlcGxveTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmV4dGpzQnVpbGQoKTogTmV4dGpzQnVpbGQge1xuICAgIHJldHVybiBuZXcgTmV4dGpzQnVpbGQodGhpcywgXCJOZXh0anNCdWlsZFwiLCB7XG4gICAgICBidWlsZENvbW1hbmQ6IHRoaXMuYmFzZVByb3BzLmJ1aWxkQ29tbWFuZCxcbiAgICAgIGJ1aWxkRGlyZWN0b3J5OiB0aGlzLmJhc2VQcm9wcy5idWlsZERpcmVjdG9yeSxcbiAgICAgIG5leHRqc1R5cGU6IHRoaXMubmV4dGpzVHlwZSxcbiAgICAgIHNraXBCdWlsZDogdGhpcy5iYXNlUHJvcHMuc2tpcEJ1aWxkLFxuICAgICAgLy8gVGhlIGJ1aWxkIHJlc29sdmVzIHRoZSBzcGxpdCwgc2luY2Ugb25seSBpdCBrbm93cyB0aGUgcm91dGUgdGVtcGxhdGVzO1xuICAgICAgLy8gdGhlIGNvbnN0cnVjdHMgcmVhZCB0aGUgcmVzdWx0IGJhY2sgb2ZmIHRoZSBtYW5pZmVzdC5cbiAgICAgIGZ1bmN0aW9uR3JvdXBzOiB0aGlzLmZ1bmN0aW9uR3JvdXBzPy5tYXAoKHsgbmFtZSwgcm91dGVzIH0pID0+ICh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIHJvdXRlcyxcbiAgICAgIH0pKSxcbiAgICAgIC8vIFdoYXQgdGhlIExhbWJkYXMgd2lsbCBydW4gZGVjaWRlcyB0aGUgYHNoYXJwYCBiaW5hcmllcyBzdGFnZWQgZm9yIHRoZW0uXG4gICAgICBhcmNoaXRlY3R1cmU6IHRoaXMuZnVuY3Rpb25zT3ZlcnJpZGVzPy5mdW5jdGlvblByb3BzPy5hcmNoaXRlY3R1cmUsXG4gICAgICAuLi50aGlzLmNvbnN0cnVjdE92ZXJyaWRlcz8ubmV4dGpzQnVpbGRQcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmV4dGpzQ2FjaGUoKTogTmV4dGpzQ2FjaGUge1xuICAgIHJldHVybiBuZXcgTmV4dGpzQ2FjaGUodGhpcywgXCJOZXh0anNDYWNoZVwiLCB7XG4gICAgICBidWlsZElkOiB0aGlzLm5leHRqc0J1aWxkLmJ1aWxkSWQsXG4gICAgICBjYWNoZUJ1Y2tldDogdGhpcy5iYXNlUHJvcHMuY2FjaGVCdWNrZXQsXG4gICAgICBpbml0Q2FjaGVEaXI6IHRoaXMubmV4dGpzQnVpbGQuaW5pdENhY2hlRGlyLFxuICAgICAgb3ZlcnJpZGVzOiB0aGlzLmJhc2VQcm9wcy5vdmVycmlkZXM/Lm5leHRqc0NhY2hlLFxuICAgICAgcmV2YWxpZGF0aW9uVGFibGU6IHRoaXMuYmFzZVByb3BzLnJldmFsaWRhdGlvblRhYmxlLFxuICAgICAgLi4udGhpcy5jb25zdHJ1Y3RPdmVycmlkZXM/Lm5leHRqc0NhY2hlUHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5leHRqc1N0YXRpY0Fzc2V0cygpOiBOZXh0anNTdGF0aWNBc3NldHMge1xuICAgIHJldHVybiBuZXcgTmV4dGpzU3RhdGljQXNzZXRzKHRoaXMsIFwiTmV4dGpzU3RhdGljQXNzZXRzXCIsIHtcbiAgICAgIGJ1Y2tldDogdGhpcy5iYXNlUHJvcHMuc3RhdGljQXNzZXRzQnVja2V0LFxuICAgICAgYnVpbGREaXJlY3Rvcnk6IHRoaXMuYmFzZVByb3BzLmJ1aWxkRGlyZWN0b3J5LFxuICAgICAgYnVpbGRJZDogdGhpcy5uZXh0anNCdWlsZC5idWlsZElkLFxuICAgICAgYmFzZVBhdGg6IHRoaXMucmVzb2x2ZWRCYXNlUGF0aCxcbiAgICAgIG92ZXJyaWRlczogdGhpcy5iYXNlUHJvcHMub3ZlcnJpZGVzPy5uZXh0anNTdGF0aWNBc3NldHMsXG4gICAgICAuLi50aGlzLmNvbnN0cnVjdE92ZXJyaWRlcz8ubmV4dGpzU3RhdGljQXNzZXRzUHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2hhcmVkIGJ5IGBOZXh0anNHbG9iYWxGdW5jdGlvbnNgIGFuZCBgTmV4dGpzUmVnaW9uYWxGdW5jdGlvbnNgLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZU5leHRqc0Z1bmN0aW9ucygpOiBOZXh0anNGdW5jdGlvbnMge1xuICAgIC8vIFRoZSBnZXR0ZXIsIG5vdCBhIHBhcmFtZXRlciwgc28gdGhlIGJ1aWxkIGFuZCB0aGUgZnVuY3Rpb25zIHJlYWQgdGhlXG4gICAgLy8gc2FtZSBgYXJjaGl0ZWN0dXJlYC5cbiAgICBjb25zdCBvdmVycmlkZXMgPSB0aGlzLmZ1bmN0aW9uc092ZXJyaWRlcztcbiAgICByZXR1cm4gbmV3IE5leHRqc0Z1bmN0aW9ucyh0aGlzLCBcIk5leHRqc0Z1bmN0aW9uc1wiLCB7XG4gICAgICAuLi50aGlzLmNvbXB1dGVCYXNlUHJvcHMoKSxcbiAgICAgIGRlcGxveW1lbnRSb290czogdGhpcy5uZXh0anNCdWlsZC5kZXBsb3ltZW50Um9vdHMsXG4gICAgICBhcmNoaXRlY3R1cmU6IHRoaXMubmV4dGpzQnVpbGQuYXJjaGl0ZWN0dXJlLFxuICAgICAgZnVuY3Rpb25Hcm91cHM6IHRoaXMuZnVuY3Rpb25Hcm91cHMsXG4gICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgLi4ub3ZlcnJpZGVzLFxuICAgICAgICBmdW5jdGlvblByb3BzOiB7XG4gICAgICAgICAgLi4ub3ZlcnJpZGVzPy5mdW5jdGlvblByb3BzLFxuICAgICAgICAgIC8vIFNwcmVhZCBjb25kaXRpb25hbGx5IHJhdGhlciB0aGFuIGFzc2lnbmVkOiBhbiB1bmNvbmRpdGlvbmFsXG4gICAgICAgICAgLy8gYHZwYzogdGhpcy5iYXNlUHJvcHMudnBjYCB3cml0ZXMgYHVuZGVmaW5lZGAgb3ZlciBhblxuICAgICAgICAgIC8vIGBvdmVycmlkZXMubmV4dGpzRnVuY3Rpb25zLmZ1bmN0aW9uUHJvcHMudnBjYCB0aGUgY29uc3VtZXIgc3VwcGxpZWQsXG4gICAgICAgICAgLy8gc28gdGhlIExhbWJkYXMgZGVwbG95IG91dHNpZGUgdGhlIFZQQyBhbmQgY2Fubm90IHJlYWNoIGEgcHJpdmF0ZVxuICAgICAgICAgIC8vIFJEUywgRWxhc3RpQ2FjaGUsIG9yIFZQQyBlbmRwb2ludCAtIHdpdGggbm90aGluZyBzYWlkIGF0IHN5bnRoLlxuICAgICAgICAgIC4uLih0aGlzLmJhc2VQcm9wcy52cGMgPyB7IHZwYzogdGhpcy5iYXNlUHJvcHMudnBjIH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWJhc2UtY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtYmFzZS1jb25zdHJ1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZDQUFvQztBQUtwQywyQ0FBdUM7QUFDdkMsNENBQXNEO0FBS3RELCtEQUEyRDtBQUMzRCxrREFBb0U7QUFFcEUseUVBSTRDO0FBQzVDLDhEQUcrQjtBQUMvQixrRUFJaUM7QUFDakMsa0RBSzRCO0FBOEg1Qjs7R0FFRztBQUNILE1BQXNCLG1CQUFvQixTQUFRLHNCQUFTOztJQUN6RCxXQUFXLENBQWM7SUFDekIsa0JBQWtCLENBQXFCO0lBQ3ZDLFdBQVcsQ0FBYztJQUlOLFVBQVUsQ0FBYTtJQUMxQyxxRUFBcUU7SUFDbEQsU0FBUyxDQUEyQjtJQUN2RCw0RUFBNEU7SUFDNUUseUVBQXlFO0lBQ3RELGtCQUFrQixDQUFnQztJQUNyRTs7Ozs7T0FLRztJQUNnQixnQkFBZ0IsQ0FBVTtJQUU3QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUErQixFQUMvQixVQUFzQjtRQUV0QixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFakUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM1Qyx5RUFBeUU7UUFDekUsMkVBQTJFO1FBQzNFLG9DQUFvQztRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBQSwyQkFBZSxFQUNyQyxVQUFVLEVBQ1YsS0FBSyxDQUFDLFFBQVEsRUFDZCxJQUFJLENBQUMsV0FBVyxD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QyxDQUFDO0lBQ0wsQ0FBQzs7QUEvVEgsa0RBZ1VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IElEaXN0cmlidXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcbmltcG9ydCB7IElUYWJsZVYyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1keW5hbW9kYlwiO1xuaW1wb3J0IHsgSVZwYyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyBJQnVja2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IExPR19QUkVGSVgsIE5leHRqc1R5cGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBPcHRpb25hbE5leHRqc0J1aWxkUHJvcHMgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNCdWlsZFByb3BzXCI7XG5pbXBvcnQgeyBPcHRpb25hbE5leHRqc0NhY2hlUHJvcHMgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNDYWNoZVByb3BzXCI7XG5pbXBvcnQgeyBPcHRpb25hbE5leHRqc1Bvc3REZXBsb3lQcm9wcyB9IGZyb20gXCIuLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc1Bvc3REZXBsb3lQcm9wc1wiO1xuaW1wb3J0IHsgTmV4dGpzQXBpT3ZlcnJpZGVzIH0gZnJvbSBcIi4uL25leHRqcy1hcGlcIjtcbmltcG9ydCB7IE5leHRqc0J1aWxkIH0gZnJvbSBcIi4uL25leHRqcy1idWlsZC9uZXh0anMtYnVpbGRcIjtcbmltcG9ydCB7IE5leHRqc0NhY2hlLCBOZXh0anNDYWNoZU92ZXJyaWRlcyB9IGZyb20gXCIuLi9uZXh0anMtY2FjaGVcIjtcbmltcG9ydCB7IE5leHRqc0NvbXB1dGVCYXNlUHJvcHMgfSBmcm9tIFwiLi4vbmV4dGpzLWNvbXB1dGUvbmV4dGpzLWNvbXB1dGUtYmFzZS1wcm9wc1wiO1xuaW1wb3J0IHtcbiAgTmV4dGpzRnVuY3Rpb25Hcm91cCxcbiAgTmV4dGpzRnVuY3Rpb25zLFxuICBOZXh0anNGdW5jdGlvbnNPdmVycmlkZXMsXG59IGZyb20gXCIuLi9uZXh0anMtY29tcHV0ZS9uZXh0anMtZnVuY3Rpb25zXCI7XG5pbXBvcnQge1xuICBOZXh0anNQb3N0RGVwbG95LFxuICBOZXh0anNQb3N0RGVwbG95T3ZlcnJpZGVzLFxufSBmcm9tIFwiLi4vbmV4dGpzLXBvc3QtZGVwbG95XCI7XG5pbXBvcnQge1xuICBOZXh0anNTdGF0aWNBc3NldHMsXG4gIE5leHRqc1N0YXRpY0Fzc2V0c092ZXJyaWRlcyxcbiAgTmV4dGpzU3RhdGljQXNzZXRzUHJvcHMsXG59IGZyb20gXCIuLi9uZXh0anMtc3RhdGljLWFzc2V0c1wiO1xuaW1wb3J0IHtcbiAgQXBpR2F0ZXdheVByZWZpeCxcbiAgaXNBc3NldFByZWZpeFVuc2VydmVkLFxuICBwcmVmaXhXaXRoQmFzZVBhdGgsXG4gIHJlc29sdmVCYXNlUGF0aCxcbn0gZnJvbSBcIi4uL3V0aWxzL2Jhc2UtcGF0aFwiO1xuXG4vKipcbiAqIEJhc2Ugb3ZlcnJpZGVzIGZvciB0aGUgcHJvcHMgcGFzc2VkIHRvIGNvbnN0cnVjdHMgd2l0aGluIHJvb3QvdG9wLWxldmVsIE5leHQuanMgY29uc3RydWN0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc0Jhc2VDb25zdHJ1Y3RPdmVycmlkZXMge1xuICByZWFkb25seSBuZXh0anNCdWlsZFByb3BzPzogT3B0aW9uYWxOZXh0anNCdWlsZFByb3BzO1xuICByZWFkb25seSBuZXh0anNDYWNoZVByb3BzPzogT3B0aW9uYWxOZXh0anNDYWNoZVByb3BzO1xuICByZWFkb25seSBuZXh0anNQb3N0RGVwbG95UHJvcHM/OiBPcHRpb25hbE5leHRqc1Bvc3REZXBsb3lQcm9wcztcbiAgcmVhZG9ubHkgbmV4dGpzU3RhdGljQXNzZXRzUHJvcHM/OiBOZXh0anNTdGF0aWNBc3NldHNQcm9wcztcbn1cblxuLyoqXG4gKiBCYXNlIG92ZXJyaWRlcyBmb3IgY29uc3RydWN0cyBzaGFyZWQgYmV0d2VlbiBhbGwgcm9vdC90b3AtbGV2ZWwgTmV4dC5qcyBjb25zdHJ1Y3RzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc0Jhc2VPdmVycmlkZXMge1xuICByZWFkb25seSBuZXh0anNDYWNoZT86IE5leHRqc0NhY2hlT3ZlcnJpZGVzO1xuICByZWFkb25seSBuZXh0anNQb3N0RGVwbG95PzogTmV4dGpzUG9zdERlcGxveU92ZXJyaWRlcztcbiAgcmVhZG9ubHkgbmV4dGpzU3RhdGljQXNzZXRzPzogTmV4dGpzU3RhdGljQXNzZXRzT3ZlcnJpZGVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc0Jhc2VQcm9wcyB7XG4gIC8qKlxuICAgKiBQcmVmaXggdG8gdGhlIFVSSSBwYXRoIHRoZSBhcHAgd2lsbCBiZSBzZXJ2ZWQgYXQuIEFsc28gbmFtZXNwYWNlcyB0aGVcbiAgICogc3RhdGljIGFzc2V0cyBpbiBTMywgc28gaXQgZG91YmxlcyBhcyBhIHdheSB0byBob3N0IG11bHRpcGxlIGFwcHMgb3JcbiAgICogYnJhbmNoZXMgb3V0IG9mIG9uZSBidWNrZXQuXG4gICAqXG4gICAqIEhvdyB0aGlzIHJlbGF0ZXMgdG8gdGhlIGBiYXNlUGF0aGAgaW4geW91ciBhcHAncyBgbmV4dC5jb25maWcuanNgIGRlcGVuZHNcbiAgICogb24gdGhlIGNvbnN0cnVjdCwgYW5kIHN5bnRoIGZhaWxzIG9uIGEgY29tYmluYXRpb24gdGhhdCBjYW4ndCBzZXJ2ZSB0aGVcbiAgICogYXBwOlxuICAgKlxuICAgKiAtIGBOZXh0anNHbG9iYWxGdW5jdGlvbnNgL2BOZXh0anNHbG9iYWxDb250YWluZXJzYDogbGVhdmUgdGhpcyB1bnNldCBhbmQgaXRcbiAgICogICBmb2xsb3dzIHlvdXIgYXBwJ3MgYGJhc2VQYXRoYCwgd2hpY2ggaXMgd2hhdCB5b3Ugd2FudCDigJQgQ2xvdWRGcm9udCBzZXJ2ZXNcbiAgICogICBzdGF0aWMgYXNzZXRzIGZyb20gUzMgdXNpbmcgdGhlIHJlcXVlc3QgcGF0aCBhcyB0aGUgb2JqZWN0IGtleSwgc28gdGhlIHR3b1xuICAgKiAgIGhhdmUgdG8gYmUgaWRlbnRpY2FsIGFuZCBhIG1pc21hdGNoIDQwNHMgYWxsIG9mIHRoZW0uIFNldHRpbmcgYSBkaWZmZXJlbnRcbiAgICogICB2YWx1ZSB0aHJvd3MuXG4gICAqIC0gYE5leHRqc1JlZ2lvbmFsRnVuY3Rpb25zYDogbGVhdmUgdGhpcyB1bnNldCBhbmQgaXQgZm9sbG93cyB5b3VyIGFwcCdzXG4gICAqICAgYGJhc2VQYXRoYCBtaW51cyB0aGUgcHJlZml4IEFQSSBHYXRld2F5IHN0cmlwcyBiZWZvcmUgbWF0Y2hpbmcgcmVzb3VyY2VzIOKAlFxuICAgKiAgIHRoZSBzdGFnZSAoYGRlcGxveU9wdGlvbnMuc3RhZ2VOYW1lYCwgZGVmYXVsdCBgcHJvZGApLCBvciB0aGUgYmFzZSBwYXRoXG4gICAqICAgbWFwcGluZyBvZiBhIGN1c3RvbSBkb21haW4gc2V0IGluIGByZXN0QXBpUHJvcHMuZG9tYWluTmFtZWAuIFNvXG4gICAqICAgYGJhc2VQYXRoOiBcIi9wcm9kXCJgIG1vdW50cyBhdCB0aGUgcm9vdCwgYFwiL3Byb2QvYmFzZVwiYCB1bmRlciBgYmFzZWAsIGFuZFxuICAgKiAgIGBcIi9kb2NzXCJgIGJlaGluZCBhIGN1c3RvbSBkb21haW4gbWFwcGVkIGF0IHRoZSByb290IHVuZGVyIGBkb2NzYC4gT24gdGhlXG4gICAqICAgZXhlY3V0ZS1hcGkgZW5kcG9pbnQgYW4gYXBwIGBiYXNlUGF0aGAgdGhhdCBkb2Vzbid0IHN0YXJ0IHdpdGggdGhlIHN0YWdlXG4gICAqICAgd2FybnMsIHNpbmNlIGl0cyBsaW5rcyB3aWxsIG1pc3MgdGhlIHN0YWdlLiBJZiB5b3Ugc2V0IHRoaXMsIHRoZSBhcHAnc1xuICAgKiAgIGBiYXNlUGF0aGAgbXVzdCBlbmQgd2l0aCBpdC4gQSBkb21haW4gYXR0YWNoZWQgbGF0ZXIgd2l0aFxuICAgKiAgIGBhZGREb21haW5OYW1lKClgIGlzIG5vdCBzZWVuIGF0IHN5bnRoOyBzZXQgdGhpcyBleHBsaWNpdGx5IHRoZW4g4oCUIHRvXG4gICAqICAgYFwiL1wiYCB3aGVuIHRoYXQgZG9tYWluJ3MgYmFzZSBwYXRoIG1hcHBpbmcgc3RyaXBzIHlvdXIgYXBwJ3Mgd2hvbGVcbiAgICogICBgYmFzZVBhdGhgLCB3aGljaCBtb3VudHMgZXZlcnkgcmVzb3VyY2UgYXQgdGhlIHJvb3QuXG4gICAqIC0gYE5leHRqc1JlZ2lvbmFsQ29udGFpbmVyc2A6IG9ubHkgbmFtZXNwYWNlcyB0aGUgUzMgYnVja2V0LiBUaGUgQUxCIHNlbmRzXG4gICAqICAgZXZlcnkgcGF0aCB0byB0aGUgY29udGFpbmVyLCB3aGljaCBzZXJ2ZXMgaXRzIG93biBzdGF0aWMgYXNzZXRzLCBzbyB0aGlzXG4gICAqICAgaXMgdW5jb25zdHJhaW5lZC5cbiAgICogQGV4YW1wbGUgXCIvbXktYmFzZS1wYXRoXCJcbiAgICovXG4gIHJlYWRvbmx5IGJhc2VQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogQ29tbWFuZCB0byBnZW5lcmF0ZSBvcHRpbWl6ZWQgdmVyc2lvbiBvZiB5b3VyIE5leHQuanMgYXBwIGluIGNvbnRhaW5lcjtcbiAgICogQGRlZmF1bHQgXCJucG0gcnVuIGJ1aWxkXCJcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQ29tbWFuZD86IHN0cmluZztcbiAgLyoqXG4gICAqIERpcmVjdG9yeSB3aGVyZSB0aGUgTmV4dC5qcyBhcHBsaWNhdGlvbiBpcyBsb2NhdGVkIGZvciBsb2NhbCBidWlsZHMuXG4gICAqIFRoaXMgc2hvdWxkIGNvbnRhaW4gdGhlIHBhY2thZ2UuanNvbiBhbmQgTmV4dC5qcyBhcHBsaWNhdGlvbiBmaWxlcy5cbiAgICogVGhpcyBpcyB3aGVyZSB7QGxpbmsgTmV4dGpzQmFzZVByb3BzLmJ1aWxkQ29tbWFuZH0gaXMgcnVuLlxuICAgKiBAZXhhbXBsZSBqb2luKGltcG9ydC5tZXRhLmRpcm5hbWUsIFwiLi5cIiwgXCJ3ZWJcIikgb3IgXCIvcGF0aC90by9uZXh0anMvYXBwXCJcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkRGlyZWN0b3J5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBCcmluZyB5b3VyIG93biBTMyBidWNrZXQgZm9yIGNhY2hlIHN0b3JhZ2UuIFdoZW4gcHJvdmlkZWQsIGNkay1uZXh0anNcbiAgICogd2lsbCB1c2UgdGhpcyBidWNrZXQgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUuXG4gICAqXG4gICAqIFRoZSBidWNrZXQgbXVzdCBiZSBkZWRpY2F0ZWQgdG8gdGhpcyBvbmUgZGVwbG95bWVudC4gRG9uJ3Qgc2hhcmUgaXQgd2l0aFxuICAgKiBhbm90aGVyIGRlcGxveW1lbnQgKGFub3RoZXIgYnJhbmNoLCBzdGFnZSwgb3IgYXBwKTogZXZlcnkgZGVwbG95J3NcbiAgICogcG9zdC1kZXBsb3kgc3RlcCBkZWxldGVzIGV2ZXJ5IG9iamVjdCB1bmRlciBhIHRvcC1sZXZlbCBwcmVmaXggb3RoZXIgdGhhblxuICAgKiB0aGUgY3VycmVudCBgYnVpbGRJZC9gLCB3aGljaCBpbmNsdWRlcyBldmVyeSBvdGhlciBkZXBsb3ltZW50J3MgY2FjaGUuXG4gICAqL1xuICByZWFkb25seSBjYWNoZUJ1Y2tldD86IElCdWNrZXQ7XG4gIC8qKlxuICAgKiBCcmluZyB5b3VyIG93biBEeW5hbW9EQiB0YWJsZSBmb3IgcmV2YWxpZGF0aW9uIG1ldGFkYXRhLiBXaGVuIHByb3ZpZGVkLFxuICAgKiBjZGstbmV4dGpzIHdpbGwgdXNlIHRoaXMgdGFibGUgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUuIFRoZSB0YWJsZVxuICAgKiBtdXN0IGhhdmUgYHBrYCAoU3RyaW5nKSBhcyBwYXJ0aXRpb24ga2V5IGFuZCBgc2tgIChTdHJpbmcpIGFzIHNvcnQga2V5LlxuICAgKiBFbmFibGUgVFRMIG9uIGl0cyBgdHRsYCBhdHRyaWJ1dGUgdG9vOiBlYWNoIHRhZyByZXZhbGlkYXRpb24gd3JpdGVzIGFcbiAgICogcmV2YWxpZGF0aW9uIGxvZyByb3cgdGhhdCBleHBpcmVzIHRocm91Z2ggaXQsIGFuZCB3aXRob3V0IFRUTCB0aG9zZSByb3dzXG4gICAqIGFjY3VtdWxhdGUuXG4gICAqXG4gICAqIFRoZSB0YWJsZSBtdXN0IGJlIGRlZGljYXRlZCB0byB0aGlzIG9uZSBkZXBsb3ltZW50LiBEb24ndCBzaGFyZSBpdCB3aXRoXG4gICAqIGFub3RoZXIgZGVwbG95bWVudCAoYW5vdGhlciBicmFuY2gsIHN0YWdlLCBvciBhcHApOiBldmVyeSBkZXBsb3knc1xuICAgKiBwb3N0LWRlcGxveSBzdGVwIGRlbGV0ZXMgdGhlIGVudHJpZXMgb2YgdGhlIGJ1aWxkIGl0IGxhc3QgcmVjb3JkZWQgaW4gdGhlXG4gICAqIHRhYmxlLCB3aGljaCB3aXRoIGEgc2hhcmVkIHRhYmxlIGlzIGFub3RoZXIgZGVwbG95bWVudCdzIGxpdmUgYnVpbGQuXG4gICAqL1xuICByZWFkb25seSByZXZhbGlkYXRpb25UYWJsZT86IElUYWJsZVYyO1xuICAvKipcbiAgICogU2tpcHMgcnVubmluZyBgbmV4dCBidWlsZGAuIElmIGB0cnVlYCwgeW91IGFyZSByZXNwb25zaWJsZSBmb3IgcnVubmluZ1xuICAgKiBgbmV4dCBidWlsZGAgYmVmb3JlIHRoaXMgY29uc3RydWN0IGlzIHN5bnRoZXNpemVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcEJ1aWxkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEJyaW5nIHlvdXIgb3duIFMzIGJ1Y2tldCBmb3Igc3RhdGljIGFzc2V0cy4gV2hlbiBwcm92aWRlZCwgY2RrLW5leHRqc1xuICAgKiB3aWxsIGRlcGxveSBzdGF0aWMgYXNzZXRzIHRvIHRoaXMgYnVja2V0IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lLlxuICAgKlxuICAgKiBVbmxpa2UgYGNhY2hlQnVja2V0YCwgdGhpcyBvbmUgY2FuIGJlIHNoYXJlZCwgYnV0IG9ubHkgYmV0d2VlbiBkZXBsb3ltZW50c1xuICAgKiB3aXRoIGRpZmZlcmVudCBgYmFzZVBhdGhgcyAoc28gZGlmZmVyZW50IFMzIGtleSBwcmVmaXhlcykuIFBydW5pbmcgb25seVxuICAgKiB0b3VjaGVzIGA8YmFzZVBhdGg+L19uZXh0L2AsIHNvIGl0IGxlYXZlcyB0aGUgb3RoZXJzJyBhc3NldHMgYWxvbmUuIFR3b1xuICAgKiBkZXBsb3ltZW50cyB1bmRlciB0aGUgc2FtZSBwcmVmaXggb3ZlcndyaXRlIGVhY2ggb3RoZXIncyBgcHVibGljL2AgZmlsZXNcbiAgICogYW5kIHBydW5lIGVhY2ggb3RoZXIncyBgX25leHQvYCBhc3NldHMgb25jZSB0aGV5IGFyZSBwYXN0IHRoZSBwcnVuZVxuICAgKiBUVEwgKDMwIGRheXMgYnkgZGVmYXVsdCkuXG4gICAqL1xuICByZWFkb25seSBzdGF0aWNBc3NldHNCdWNrZXQ/OiBJQnVja2V0O1xuICAvKipcbiAgICogQnJpbmcgeW91ciBvd24gVlBDLlxuICAgKiBJZiBwcm92aWRlZCwgd2lsbCBiZSBwYXNzZWQgdmlhIG92ZXJyaWRlcyB0byB0aGUgRUNTIENsdXN0ZXIgKGZvciBjb250YWluZXItYmFzZWQgY29uc3RydWN0cylcbiAgICogb3IgdG8gdGhlIExhbWJkYSBmdW5jdGlvbiAoZm9yIGZ1bmN0aW9uLWJhc2VkIGNvbnN0cnVjdHMpLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIEVDUyBDbHVzdGVyIHdpbGwgY3JlYXRlIGEgVlBDIGF1dG9tYXRpY2FsbHkgZm9yIGNvbnRhaW5lcnMsXG4gICAqIGFuZCBMYW1iZGEgZnVuY3Rpb25zIHdpbGwgcnVuIG91dHNpZGUgYSBWUEMuXG4gICAqL1xuICByZWFkb25seSB2cGM/OiBJVnBjO1xufVxuXG4vKipcbiAqIFJlcXVpcmVkIGJlY2F1c2UgaWYgd2UgYWRkIGBvdmVycmlkZXNgIG9udG8gYE5leHRqc0Jhc2VQcm9wc2Agd2UgZ2V0IGpzaWlcbiAqIGVycm9yOiBgSW50ZXJmYWNlIC4uLiByZS1kZWNsYXJlcyBtZW1iZXIgXCJvdmVycmlkZXNcImBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXh0anNCYXNlQ29uc3RydWN0UHJvcHMgZXh0ZW5kcyBOZXh0anNCYXNlUHJvcHMge1xuICByZWFkb25seSBvdmVycmlkZXM/OiBOZXh0anNCYXNlT3ZlcnJpZGVzO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGFsbCBOZXh0LmpzIHJvb3QgY29uc3RydWN0c1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmV4dGpzQmFzZUNvbnN0cnVjdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIG5leHRqc0J1aWxkOiBOZXh0anNCdWlsZDtcbiAgbmV4dGpzU3RhdGljQXNzZXRzOiBOZXh0anNTdGF0aWNBc3NldHM7XG4gIG5leHRqc0NhY2hlOiBOZXh0anNDYWNoZTtcblxuICBhYnN0cmFjdCBnZXQgdXJsKCk6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmV4dGpzVHlwZTogTmV4dGpzVHlwZTtcbiAgLy8gdXNlIGJhc2VQcm9wcyBpbnN0ZWFkIG9mIHByb3BzIHNvIHRoYXQgY2hpbGQgY2xhc3NlcyBjYW4gdXNlIHByb3BzXG4gIHByb3RlY3RlZCByZWFkb25seSBiYXNlUHJvcHM6IE5leHRqc0Jhc2VDb25zdHJ1Y3RQcm9wcztcbiAgLy8gV2lkZXN0IHNoYXBlIG9mIHRoZSBwZXItYE5leHRqc1R5cGVgIG92ZXJyaWRlcy4gVGhlIHB1YmxpYyBpbnRlcmZhY2UgZWFjaFxuICAvLyByb290IGNvbnN0cnVjdCBhY2NlcHRzIGlzIHdoYXQgYWN0dWFsbHkgZ2F0ZXMgd2hpY2gga2V5cyBhcmUgc2V0dGFibGUuXG4gIHByb3RlY3RlZCByZWFkb25seSBjb25zdHJ1Y3RPdmVycmlkZXM/OiBOZXh0anNCYXNlQ29uc3RydWN0T3ZlcnJpZGVzO1xuICAvKipcbiAgICogVGhlIGBiYXNlUGF0aGAgZXZlcnl0aGluZyBkb3duc3RyZWFtIGlzIGJ1aWx0IGZyb206IHRoZSBgYmFzZVBhdGhgIHByb3Agd2hlblxuICAgKiBzZXQsIG90aGVyd2lzZSB0aGUgYXBwJ3Mgb3duIGBiYXNlUGF0aGAgZm9yIHRoZSBgTmV4dGpzVHlwZWBzIHdoZXJlIHRoZSB0d29cbiAgICogYXJlIG5lY2Vzc2FyaWx5IHRoZSBzYW1lLiBOb3JtYWxpemVkIHRvIGEgYmFyZSBwYXRoIHNlZ21lbnQsIGB1bmRlZmluZWRgIGZvclxuICAgKiBubyBgYmFzZVBhdGhgLiBVc2UgdGhpcyBpbnN0ZWFkIG9mIGBiYXNlUHJvcHMuYmFzZVBhdGhgLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlc29sdmVkQmFzZVBhdGg/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBOZXh0anNCYXNlQ29uc3RydWN0UHJvcHMsXG4gICAgbmV4dGpzVHlwZTogTmV4dGpzVHlwZSxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmJhc2VQcm9wcyA9IHByb3BzO1xuICAgIHRoaXMubmV4dGpzVHlwZSA9IG5leHRqc1R5cGU7XG4gICAgdGhpcy5jb25zdHJ1Y3RPdmVycmlkZXMgPSB0aGlzLmdldENvbnN0cnVjdE92ZXJyaWRlcyhuZXh0anNUeXBlKTtcblxuICAgIHRoaXMubmV4dGpzQnVpbGQgPSB0aGlzLmNyZWF0ZU5leHRqc0J1aWxkKCk7XG4gICAgLy8gQSBiYXNlUGF0aCB0aGF0IGRvZXNuJ3QgbGluZSB1cCB3aXRoIHRoZSBhcHAncyBvd24gZGVwbG95cyBjbGVhbmx5IGFuZFxuICAgIC8vIHRoZW4gNDA0cyBzdGF0aWMgYXNzZXRzLCBzbyByZWNvbmNpbGUgdGhlIHR3byB1cCBmcm9udCBhbmQgZmFpbCBhdCBzeW50aFxuICAgIC8vIG9uIGEgY29tYmluYXRpb24gdGhhdCBjYW4ndCB3b3JrLlxuICAgIHRoaXMucmVzb2x2ZWRCYXNlUGF0aCA9IHJlc29sdmVCYXNlUGF0aChcbiAgICAgIG5leHRqc1R5cGUsXG4gICAgICBwcm9wcy5iYXNlUGF0aCxcbiAgICAgIHRoaXMubmV4dGpzQnVpbGQubmV4dENvbmZpZ0Jhc2VQYXRoLFxuICAgICAgdGhpcy5hcGlHYXRld2F5UHJlZml4KCksXG4gICAgKTtcbiAgICB0aGlzLm5leHRqc0NhY2hlID0gdGhpcy5jcmVhdGVOZXh0anNDYWNoZSgpO1xuICAgIHRoaXMubmV4dGpzU3RhdGljQXNzZXRzID0gdGhpcy5jcmVhdGVOZXh0anNTdGF0aWNBc3NldHMoKTtcbiAgICB0aGlzLnZhbGlkYXRlU3RhdGljQXNzZXRzS2V5UHJlZml4KCk7XG4gICAgdGhpcy53YXJuVW5zZXJ2ZWRBc3NldFByZWZpeCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhcm5zIHdoZW4gYSBwYXRoLXN0eWxlIGBhc3NldFByZWZpeGAgd291bGQgNDA0IGV2ZXJ5IGJ1bmRsZSBvbiB0aGlzXG4gICAqIGBOZXh0anNUeXBlYCDigJQgc2VlIHtAbGluayBpc0Fzc2V0UHJlZml4VW5zZXJ2ZWR9IGZvciB3aGljaCBjb21iaW5hdGlvbnMgdGhvc2VcbiAgICogYXJlIGFuZCB3aHkgYSBwcmVmaXggZXF1YWwgdG8gdGhlIGFwcCdzIGBiYXNlUGF0aGAgaXMgbm90IG9uZSBvZiB0aGVtLlxuICAgKlxuICAgKiBXYXJuIHJhdGhlciB0aGFuIHRocm93OiBpdCBpcyB0aGUgYXBwJ3MgY29uZmlnLCB0aGUgZGVwbG95bWVudCBvdGhlcndpc2VcbiAgICogd29ya3MsIGFuZCBhbiBhYnNvbHV0ZSBgYXNzZXRQcmVmaXhgIChhbHJlYWR5IHJlZHVjZWQgdG8gYFwiXCJgIGJ5XG4gICAqIGByZWxhdGl2ZUFzc2V0UHJlZml4YCkgaXMgdGhlIHN1cHBvcnRlZCB3YXkgdG8gc2VydmUgYXNzZXRzIGZyb21cbiAgICogZWxzZXdoZXJlLlxuICAgKi9cbiAgcHJpdmF0ZSB3YXJuVW5zZXJ2ZWRBc3NldFByZWZpeCgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAhaXNBc3NldFByZWZpeFVuc2VydmVkKFxuICAgICAgICB0aGlzLm5leHRqc1R5cGUsXG4gICAgICAgIHRoaXMubmV4dGpzQnVpbGQubmV4dENvbmZpZ0Fzc2V0UHJlZml4LFxuICAgICAgICB0aGlzLm5leHRqc0J1aWxkLm5leHRDb25maWdCYXNlUGF0aCxcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgYCR7TE9HX1BSRUZJWH0geW91ciBOZXh0LmpzIGFwcCBzZXRzIFxcYGFzc2V0UHJlZml4OiBcIiR7dGhpcy5uZXh0anNCdWlsZC5uZXh0Q29uZmlnQXNzZXRQcmVmaXh9XCJcXGAsIGAgK1xuICAgICAgICBgd2hpY2ggTmV4dGpzVHlwZS4ke3RoaXMubmV4dGpzVHlwZX0gY2Fubm90IHNlcnZlOiB5b3VyIGJ1bmRsZXMgd2lsbCBiZSByZXF1ZXN0ZWQgYXQgYCArXG4gICAgICAgIGBcIiR7dGhpcy5uZXh0anNCdWlsZC5uZXh0Q29uZmlnQXNzZXRQcmVmaXh9L19uZXh0L3N0YXRpYy8uLi5cIiBhbmQgbm90aGluZyBhbnN3ZXJzIHRoZXJlLCBzbyB0aGV5IHdpbGwgNDA0LiBgICtcbiAgICAgICAgXCJEcm9wIGBhc3NldFByZWZpeGAsIHVzZSBhbiBhYnNvbHV0ZSBvbmUgcG9pbnRpbmcgYXQgYSBDRE4geW91IGZyb250IHRoZSBhc3NldHMgYnVja2V0IHdpdGgsIFwiICtcbiAgICAgICAgXCJvciBkZXBsb3kgd2l0aCBOZXh0anNHbG9iYWxGdW5jdGlvbnMvTmV4dGpzR2xvYmFsQ29udGFpbmVycy5cIixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciB0aGUgR2xvYmFsIGBOZXh0anNUeXBlYHMgdGhlIGtleSBwcmVmaXggaXNuJ3QgYSBmcmVlIGNob2ljZTogaXQgaGFzIHRvIGJlXG4gICAqIGBiYXNlUGF0aGAgKHNlZSBgcmVzb2x2ZUJhc2VQYXRoYCkuIEEgYGRlc3RpbmF0aW9uS2V5UHJlZml4YCBvdmVycmlkZSB0aGF0XG4gICAqIG1vdmVzIHRoZSBvYmplY3RzIGVsc2V3aGVyZSBoYXMgbm8gd2F5IHRvIHRlbGwgdGhlIGRpc3RyaWJ1dGlvbiBhYm91dCBpdCDigJRcbiAgICogdW5saWtlIHRoZSBmdW5jdGlvbnMnIGltYWdlIG9wdGltaXplciBhbmQgYE5leHRqc0FwaWAsIHdoaWNoIHJlYWRcbiAgICogYE5leHRqc1N0YXRpY0Fzc2V0cy5rZXlQcmVmaXhgIOKAlCBzbyBmYWlsIGF0IHN5bnRoIHJhdGhlciB0aGFuIDQwNCBldmVyeVxuICAgKiBzdGF0aWMgcmVxdWVzdC5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVTdGF0aWNBc3NldHNLZXlQcmVmaXgoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5uZXh0anNUeXBlICE9PSBOZXh0anNUeXBlLkdMT0JBTF9GVU5DVElPTlMgJiZcbiAgICAgIHRoaXMubmV4dGpzVHlwZSAhPT0gTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSU1xuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBleHBlY3RlZCA9IHRoaXMucmVzb2x2ZWRCYXNlUGF0aCA/PyBcIlwiO1xuICAgIGNvbnN0IGFjdHVhbCA9IHRoaXMubmV4dGpzU3RhdGljQXNzZXRzLmtleVByZWZpeDtcbiAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJHtMT0dfUFJFRklYfSBzdGF0aWMgYXNzZXRzIGtleSBwcmVmaXggbWlzbWF0Y2ggZm9yIE5leHRqc1R5cGUuJHt0aGlzLm5leHRqc1R5cGV9OiBgICtcbiAgICAgICAgICBgdGhlIGFzc2V0cyBhcmUgdXBsb2FkZWQgdW5kZXIgJHthY3R1YWwgPyBgXCIke2FjdHVhbH1cImAgOiBcInRoZSBidWNrZXQgcm9vdFwifSBgICtcbiAgICAgICAgICBgYnV0IENsb3VkRnJvbnQgd2lsbCByZXF1ZXN0IHRoZW0gdW5kZXIgJHtleHBlY3RlZCA/IGBcIiR7ZXhwZWN0ZWR9XCJgIDogXCJ0aGUgYnVja2V0IHJvb3RcIn0sIGAgK1xuICAgICAgICAgIFwidXNpbmcgdGhlIHJlcXVlc3QgcGF0aCBhcyB0aGUgUzMgb2JqZWN0IGtleSwgc28gZXZlcnkgYF9uZXh0L3N0YXRpY2AgYW5kIGBwdWJsaWMvYCByZXF1ZXN0IHdvdWxkIDQwNC4gXCIgK1xuICAgICAgICAgIFwiRHJvcCB0aGUgYGRlc3RpbmF0aW9uS2V5UHJlZml4YCBvdmVycmlkZSwgb3Igc2V0IGl0IHRvIHRoZSBzYW1lIHZhbHVlIGFzIGBiYXNlUGF0aGAuIFwiICtcbiAgICAgICAgICBcIlRvIG5hbWVzcGFjZSBhIHNoYXJlZCBidWNrZXQsIHVzZSBgYmFzZVBhdGhgIOKAlCBpdCBwcmVmaXhlcyB0aGUga2V5cyBhbmQgdGhlIFVSTHMgdG9nZXRoZXIuXCIsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IEFQSSBHYXRld2F5IHdpbGwgc3RyaXAsIHJlYWQgZnJvbSB0aGUgc2FtZSBgcmVzdEFwaVByb3BzYFxuICAgKiBvdmVycmlkZSBgTmV4dGpzQXBpYCBidWlsZHMgaXRzIGBSZXN0QXBpYCBmcm9tLiBPbmx5IG1lYW5pbmdmdWwgZm9yXG4gICAqIGBSRUdJT05BTF9GVU5DVElPTlNgLCBhbmQgcmVhZCBiZWZvcmUgYE5leHRqc0FwaWAgZXhpc3RzIGJlY2F1c2UgdGhlXG4gICAqIHJlc29sdmVkIGBiYXNlUGF0aGAgYWxzbyBkZWNpZGVzIHRoZSBzdGF0aWMgYXNzZXRzJyBTMyBrZXkgcHJlZml4LlxuICAgKlxuICAgKiBBIGRvbWFpbiBhdHRhY2hlZCBsYXRlciB3aXRoIGBhcGkuYWRkRG9tYWluTmFtZSgpYCBpcyBpbnZpc2libGUgaGVyZSwgdGhlXG4gICAqIHNhbWUgbGltaXRhdGlvbiBgTmV4dGpzQXBpLnVybGAgZG9jdW1lbnRzLlxuICAgKi9cbiAgcHJpdmF0ZSBhcGlHYXRld2F5UHJlZml4KCk6IEFwaUdhdGV3YXlQcmVmaXgge1xuICAgIC8vIGBvdmVycmlkZXMubmV4dGpzQXBpYCBpcyB0aGUgb25seSB0eXBlZCB3YXkgdG8gcmVhY2ggdGhlIGBSZXN0QXBpYCdzXG4gICAgLy8gcHJvcHM6IGBuZXh0anNSZWdpb25hbEZ1bmN0aW9ucy5uZXh0anNBcGlQcm9wc2AgaXNcbiAgICAvLyBgT3B0aW9uYWxOZXh0anNBcGlQcm9wc2AsIHdoaWNoIGhhcyBubyBgb3ZlcnJpZGVzYC5cbiAgICBjb25zdCBhcGlPdmVycmlkZXMgPSAoXG4gICAgICB0aGlzLmJhc2VQcm9wcy5vdmVycmlkZXMgYXMgeyBuZXh0anNBcGk/OiBOZXh0anNBcGlPdmVycmlkZXMgfSB8IHVuZGVmaW5lZFxuICAgICk/Lm5leHRqc0FwaTtcbiAgICBjb25zdCByZXN0QXBpUHJvcHMgPSBhcGlPdmVycmlkZXM/LnJlc3RBcGlQcm9wcztcbiAgICBjb25zdCBkb21haW5OYW1lID0gcmVzdEFwaVByb3BzPy5kb21haW5OYW1lO1xuICAgIGNvbnN0IHN0cmlwcGVkUHJlZml4ID0gZG9tYWluTmFtZVxuICAgICAgPyAoZG9tYWluTmFtZS5iYXNlUGF0aCA/PyBcIlwiKVxuICAgICAgOiAocmVzdEFwaVByb3BzPy5kZXBsb3lPcHRpb25zPy5zdGFnZU5hbWUgPz8gXCJwcm9kXCIpO1xuICAgIHJldHVybiB7XG4gICAgICBzdHJpcHBlZFByZWZpeDogVG9rZW4uaXNVbnJlc29sdmVkKHN0cmlwcGVkUHJlZml4KVxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IHN0cmlwcGVkUHJlZml4LFxuICAgICAgY3VzdG9tRG9tYWluOiBkb21haW5OYW1lICE9PSB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBjb25zdHJ1Y3Qgb3ZlcnJpZGVzIChpZiBwcmVzZW50KSBvbiBwcm9wcyBmb3IgYW55IGBOZXh0anNUeXBlYFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRDb25zdHJ1Y3RPdmVycmlkZXMobmV4dGpzVHlwZTogTmV4dGpzVHlwZSkge1xuICAgIGNvbnN0IG5leHRqc1R5cGVUb0tleTogUmVjb3JkPE5leHRqc1R5cGUsIHN0cmluZz4gPSB7XG4gICAgICBbTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSU106IFwibmV4dGpzR2xvYmFsQ29udGFpbmVyc1wiLFxuICAgICAgW05leHRqc1R5cGUuR0xPQkFMX0ZVTkNUSU9OU106IFwibmV4dGpzR2xvYmFsRnVuY3Rpb25zXCIsXG4gICAgICBbTmV4dGpzVHlwZS5SRUdJT05BTF9DT05UQUlORVJTXTogXCJuZXh0anNSZWdpb25hbENvbnRhaW5lcnNcIixcbiAgICAgIFtOZXh0anNUeXBlLlJFR0lPTkFMX0ZVTkNUSU9OU106IFwibmV4dGpzUmVnaW9uYWxGdW5jdGlvbnNcIixcbiAgICB9O1xuICAgIGNvbnN0IGtleSA9IG5leHRqc1R5cGVUb0tleVtuZXh0anNUeXBlXTtcbiAgICBjb25zdCBvdmVycmlkZXMgPSB0aGlzLmJhc2VQcm9wcy5vdmVycmlkZXMgYXNcbiAgICAgIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIGlmIChvdmVycmlkZXMgJiYga2V5IGluIG92ZXJyaWRlcykge1xuICAgICAgcmV0dXJuIG92ZXJyaWRlc1trZXldIGFzIE5leHRqc0Jhc2VDb25zdHJ1Y3RPdmVycmlkZXM7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBgb3ZlcnJpZGVzLm5leHRqc0Z1bmN0aW9uc2AsIHdoaWNoIG9ubHkgdGhlIHR3byBGdW5jdGlvbnMgcm9vdCBjb25zdHJ1Y3RzXG4gICAqIGRlY2xhcmUuIENhc3QgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyB7QGxpbmsgZnVuY3Rpb25Hcm91cHN9LlxuICAgKi9cbiAgcHJpdmF0ZSBnZXQgZnVuY3Rpb25zT3ZlcnJpZGVzKCk6IE5leHRqc0Z1bmN0aW9uc092ZXJyaWRlcyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgb3ZlcnJpZGVzID0gdGhpcy5iYXNlUHJvcHMub3ZlcnJpZGVzIGFzXG4gICAgICB7IG5leHRqc0Z1bmN0aW9ucz86IE5leHRqc0Z1bmN0aW9uc092ZXJyaWRlcyB9IHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiBvdmVycmlkZXM/Lm5leHRqc0Z1bmN0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBgZnVuY3Rpb25Hcm91cHNgLCB3aGljaCBvbmx5IHRoZSB0d28gRnVuY3Rpb25zIHJvb3QgY29uc3RydWN0cyBhY2NlcHQg4oCUXG4gICAqIENvbnRhaW5lcnMgZGVwbG95IG9uZSB0YXNrIGRlZmluaXRpb24gYW5kIGhhdmUgbm8gMjUwIE1CIHBhY2thZ2UgbGltaXQgdG9cbiAgICogc3BsaXQgYXJvdW5kLlxuICAgKlxuICAgKiBSZWFkIG9mZiBgYmFzZVByb3BzYCB3aXRoIGEgY2FzdCBmb3IgdGhlIHNhbWUgcmVhc29uIGFzXG4gICAqIHtAbGluayBnZXRDb25zdHJ1Y3RPdmVycmlkZXN9OiBgY3JlYXRlTmV4dGpzQnVpbGRgIGFuZFxuICAgKiBgY3JlYXRlTmV4dGpzRnVuY3Rpb25zYCBhcmUgc2hhcmVkIGhlcmUsIGJ1dCB0aGUgcHJvcCBpcyBkZWNsYXJlZCBvbiB0aGVcbiAgICogc3ViY2xhc3Nlcywgc28gbm90aGluZyB3ZWFrZXIgdGhhbiBhIGNhc3QgY2FuIHNlZSBpdC4gQWRkaW5nIGl0IHRvXG4gICAqIGBOZXh0anNCYXNlUHJvcHNgIHdvdWxkIG9mZmVyIGl0IHRvIENvbnRhaW5lcnMsIHdoZXJlIGl0IGRvZXMgbm90aGluZy5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZnVuY3Rpb25Hcm91cHMoKTogTmV4dGpzRnVuY3Rpb25Hcm91cFtdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwcm9wcyA9IHRoaXMuYmFzZVByb3BzIGFzIHsgZnVuY3Rpb25Hcm91cHM/OiBOZXh0anNGdW5jdGlvbkdyb3VwW10gfTtcbiAgICByZXR1cm4gcHJvcHMuZnVuY3Rpb25Hcm91cHM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGhlYWx0aCBjaGVjayBwYXRoIGFzIHRoZSBydW5uaW5nIGFwcCBhY3R1YWxseSBzZXJ2ZXMgaXQuXG4gICAqXG4gICAqIEJvdGggY29uc3VtZXJzIG9mIHRoaXMgaGl0IHRoZSBhcHAgZGlyZWN0bHkg4oCUIHRoZSBBTEIgdGFyZ2V0IGdyb3VwIGZvcndhcmRzXG4gICAqIHRoZSBwYXRoIHRvIHRoZSBjb250YWluZXIgdW5jaGFuZ2VkLCBhbmQgdGhlIGNvbnRhaW5lcidzIGB3Z2V0YCBwcm9iZSB0YXJnZXRzXG4gICAqIHRoZSBsb2NhbCBzZXJ2ZXIg4oCUIHNvIHRoZSBwcmVmaXggdGhhdCBtYXR0ZXJzIGlzIHRoZSBhcHAncyBvd24gYGJhc2VQYXRoYCxcbiAgICogbm90IGByZXNvbHZlZEJhc2VQYXRoYCAod2hpY2ggZm9yIGBSRUdJT05BTF9DT05UQUlORVJTYCBpcyBvbmx5IGFuIFMzXG4gICAqIG5hbWVzcGFjZSkuIExlZnQgdW5wcmVmaXhlZCwgYW4gYXBwIHdpdGggYSBgYmFzZVBhdGhgIDQwNHMgZXZlcnkgaGVhbHRoXG4gICAqIGNoZWNrLCBzbyB0aGUgdGFyZ2V0IG5ldmVyIHR1cm5zIGhlYWx0aHkgYW5kIHRoZSBkZXBsb3ltZW50IHJvbGxzIGJhY2suXG4gICAqIGBoZWFsdGhDaGVja1BhdGhgIGlzIHRoZXJlZm9yZSB0aGUgcGF0aCBhcyB0aGUgYXBwIHJvdXRlcyBpdCwgd2l0aG91dFxuICAgKiBgYmFzZVBhdGhgOyBvbmUgdGhhdCBjYXJyaWVzIHRoZSBwcmVmaXggYWxyZWFkeSBnZXRzIGl0IHR3aWNlLCB3aGljaCBpcyB0aGVcbiAgICogMC42LjIgYnJlYWtpbmcgY2hhbmdlIGZvciBhbnlvbmUgd2hvIHByZWZpeGVkIGJ5IGhhbmQgdG8gd29yayBhcm91bmQgdGhpcy5cbiAgICpcbiAgICogVGFrZXMgdGhlIHBhdGggYXMgYW4gYXJndW1lbnQgcmF0aGVyIHRoYW4gcmVhZGluZyBpdCBvZmYgYGJhc2VQcm9wc2A6IG9ubHlcbiAgICogdGhlIHR3byBDb250YWluZXJzIHJvb3QgY29uc3RydWN0cyBkZWNsYXJlIGBoZWFsdGhDaGVja1BhdGhgLCBzaW5jZSB0aGV5J3JlXG4gICAqIHRoZSBvbmx5IG9uZXMgd2l0aCBzb21ldGhpbmcgdG8gaGVhbHRoLWNoZWNrLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlc29sdmVkSGVhbHRoQ2hlY2tQYXRoKGhlYWx0aENoZWNrUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcHJlZml4V2l0aEJhc2VQYXRoKFxuICAgICAgdGhpcy5uZXh0anNCdWlsZC5uZXh0Q29uZmlnQmFzZVBhdGgsXG4gICAgICBoZWFsdGhDaGVja1BhdGgsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY29tcHV0ZSBiYXNlIHByb3BzIGZvciBib3RoIExhbWJkYSBmdW5jdGlvbnMgYW5kIGNvbnRhaW5lcnNcbiAgICovXG4gIHByb3RlY3RlZCBjb21wdXRlQmFzZVByb3BzKCk6IE5leHRqc0NvbXB1dGVCYXNlUHJvcHMge1xuICAgIHJldHVybiB7XG4gICAgICBjYWNoZUJ1Y2tldDogdGhpcy5uZXh0anNDYWNoZS5jYWNoZUJ1Y2tldCxcbiAgICAgIHJldmFsaWRhdGlvblRhYmxlOiB0aGlzLm5leHRqc0NhY2hlLnJldmFsaWRhdGlvblRhYmxlLFxuICAgICAgYnVpbGRJZDogdGhpcy5uZXh0anNCdWlsZC5idWlsZElkLFxuICAgICAgbmV4dGpzVHlwZTogdGhpcy5uZXh0anNUeXBlLFxuICAgICAgc3RhdGljQXNzZXRzQnVja2V0OiB0aGlzLm5leHRqc1N0YXRpY0Fzc2V0cy5idWNrZXQsXG4gICAgICBzdGF0aWNBc3NldHNLZXlQcmVmaXg6IHRoaXMubmV4dGpzU3RhdGljQXNzZXRzLmtleVByZWZpeCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYWZ0ZXIgdGhlIGluaXQgY2FjaGUgYW5kIHN0YXRpYyBhc3NldCB1cGxvYWRzOiBpbnZhbGlkYXRpbmcgdGhlIENETlxuICAgKiBiZWZvcmUgdGhlIG5ldyBmaWxlcyBhcmUgaW4gcGxhY2Ugd291bGQgb25seSByZS1jYWNoZSB0aGUgcmVzcG9uc2VzIHRoZVxuICAgKiBpbnZhbGlkYXRpb24gd2FzIG1lYW50IHRvIGRyb3AsIGFuZCBwcnVuaW5nIGJlZm9yZSB0aGVtIGNvdWxkIGRlbGV0ZSBhblxuICAgKiBvYmplY3QgdGhlIHVwbG9hZCBpcyBhYm91dCB0byByZS10YWcgd2l0aCB0aGlzIGJ1aWxkJ3MgSUQuIENsb3VkRm9ybWF0aW9uXG4gICAqIGluZmVycyBubyBvcmRlcmluZyBiZXR3ZWVuIHRoZXNlIGN1c3RvbSByZXNvdXJjZXMgb24gaXRzIG93bi5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVOZXh0anNQb3N0RGVwbG95KFxuICAgIGRpc3RyaWJ1dGlvbj86IElEaXN0cmlidXRpb24sXG4gICk6IE5leHRqc1Bvc3REZXBsb3kge1xuICAgIGNvbnN0IHBvc3REZXBsb3kgPSBuZXcgTmV4dGpzUG9zdERlcGxveSh0aGlzLCBcIk5leHRqc1Bvc3REZXBsb3lcIiwge1xuICAgICAgYmFzZVBhdGg6IHRoaXMucmVzb2x2ZWRCYXNlUGF0aCxcbiAgICAgIGJ1aWxkSWQ6IHRoaXMubmV4dGpzQnVpbGQuYnVpbGRJZCxcbiAgICAgIGRpc3RyaWJ1dGlvbixcbiAgICAgIGNhY2hlQnVja2V0OiB0aGlzLm5leHRqc0NhY2hlLmNhY2hlQnVja2V0LFxuICAgICAgcmV2YWxpZGF0aW9uVGFibGU6IHRoaXMubmV4dGpzQ2FjaGUucmV2YWxpZGF0aW9uVGFibGUsXG4gICAgICBzdGF0aWNBc3NldHNCdWNrZXQ6IHRoaXMubmV4dGpzU3RhdGljQXNzZXRzLmJ1Y2tldCxcbiAgICAgIHN0YXRpY0Fzc2V0c0tleVByZWZpeDogdGhpcy5uZXh0anNTdGF0aWNBc3NldHMua2V5UHJlZml4LFxuICAgICAgb3ZlcnJpZGVzOiB0aGlzLmJhc2VQcm9wcy5vdmVycmlkZXM/Lm5leHRqc1Bvc3REZXBsb3ksXG4gICAgICAuLi50aGlzLmNvbnN0cnVjdE92ZXJyaWRlcz8ubmV4dGpzUG9zdERlcGxveVByb3BzLFxuICAgIH0pO1xuICAgIGNvbnN0IHsgc3RhdGljRGVwbG95bWVudCwgc2VydmljZVdvcmtlckRlcGxveW1lbnQsIHB1YmxpY0RlcGxveW1lbnQgfSA9XG4gICAgICB0aGlzLm5leHRqc1N0YXRpY0Fzc2V0cztcbiAgICBmb3IgKGNvbnN0IHVwbG9hZCBvZiBbXG4gICAgICB0aGlzLm5leHRqc0NhY2hlLmJ1Y2tldERlcGxveW1lbnQsXG4gICAgICBzdGF0aWNEZXBsb3ltZW50LFxuICAgICAgc2VydmljZVdvcmtlckRlcGxveW1lbnQsXG4gICAgICBwdWJsaWNEZXBsb3ltZW50LFxuICAgIF0pIHtcbiAgICAgIGlmICh1cGxvYWQpIHtcbiAgICAgICAgcG9zdERlcGxveS5ub2RlLmFkZERlcGVuZGVuY3kodXBsb2FkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBvc3REZXBsb3k7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5leHRqc0J1aWxkKCk6IE5leHRqc0J1aWxkIHtcbiAgICByZXR1cm4gbmV3IE5leHRqc0J1aWxkKHRoaXMsIFwiTmV4dGpzQnVpbGRcIiwge1xuICAgICAgYnVpbGRDb21tYW5kOiB0aGlzLmJhc2VQcm9wcy5idWlsZENvbW1hbmQsXG4gICAgICBidWlsZERpcmVjdG9yeTogdGhpcy5iYXNlUHJvcHMuYnVpbGREaXJlY3RvcnksXG4gICAgICBuZXh0anNUeXBlOiB0aGlzLm5leHRqc1R5cGUsXG4gICAgICBza2lwQnVpbGQ6IHRoaXMuYmFzZVByb3BzLnNraXBCdWlsZCxcbiAgICAgIC8vIFRoZSBidWlsZCByZXNvbHZlcyB0aGUgc3BsaXQsIHNpbmNlIG9ubHkgaXQga25vd3MgdGhlIHJvdXRlIHRlbXBsYXRlcztcbiAgICAgIC8vIHRoZSBjb25zdHJ1Y3RzIHJlYWQgdGhlIHJlc3VsdCBiYWNrIG9mZiB0aGUgbWFuaWZlc3QuXG4gICAgICBmdW5jdGlvbkdyb3VwczogdGhpcy5mdW5jdGlvbkdyb3Vwcz8ubWFwKCh7IG5hbWUsIHJvdXRlcyB9KSA9PiAoe1xuICAgICAgICBuYW1lLFxuICAgICAgICByb3V0ZXMsXG4gICAgICB9KSksXG4gICAgICAvLyBXaGF0IHRoZSBMYW1iZGFzIHdpbGwgcnVuIGRlY2lkZXMgdGhlIGBzaGFycGAgYmluYXJpZXMgc3RhZ2VkIGZvciB0aGVtLlxuICAgICAgYXJjaGl0ZWN0dXJlOiB0aGlzLmZ1bmN0aW9uc092ZXJyaWRlcz8uZnVuY3Rpb25Qcm9wcz8uYXJjaGl0ZWN0dXJlLFxuICAgICAgLi4udGhpcy5jb25zdHJ1Y3RPdmVycmlkZXM/Lm5leHRqc0J1aWxkUHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5leHRqc0NhY2hlKCk6IE5leHRqc0NhY2hlIHtcbiAgICByZXR1cm4gbmV3IE5leHRqc0NhY2hlKHRoaXMsIFwiTmV4dGpzQ2FjaGVcIiwge1xuICAgICAgYnVpbGRJZDogdGhpcy5uZXh0anNCdWlsZC5idWlsZElkLFxuICAgICAgY2FjaGVCdWNrZXQ6IHRoaXMuYmFzZVByb3BzLmNhY2hlQnVja2V0LFxuICAgICAgaW5pdENhY2hlRGlyOiB0aGlzLm5leHRqc0J1aWxkLmluaXRDYWNoZURpcixcbiAgICAgIG92ZXJyaWRlczogdGhpcy5iYXNlUHJvcHMub3ZlcnJpZGVzPy5uZXh0anNDYWNoZSxcbiAgICAgIHJldmFsaWRhdGlvblRhYmxlOiB0aGlzLmJhc2VQcm9wcy5yZXZhbGlkYXRpb25UYWJsZSxcbiAgICAgIC4uLnRoaXMuY29uc3RydWN0T3ZlcnJpZGVzPy5uZXh0anNDYWNoZVByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVOZXh0anNTdGF0aWNBc3NldHMoKTogTmV4dGpzU3RhdGljQXNzZXRzIHtcbiAgICByZXR1cm4gbmV3IE5leHRqc1N0YXRpY0Fzc2V0cyh0aGlzLCBcIk5leHRqc1N0YXRpY0Fzc2V0c1wiLCB7XG4gICAgICBidWNrZXQ6IHRoaXMuYmFzZVByb3BzLnN0YXRpY0Fzc2V0c0J1Y2tldCxcbiAgICAgIGJ1aWxkRGlyZWN0b3J5OiB0aGlzLmJhc2VQcm9wcy5idWlsZERpcmVjdG9yeSxcbiAgICAgIGJ1aWxkSWQ6IHRoaXMubmV4dGpzQnVpbGQuYnVpbGRJZCxcbiAgICAgIGJhc2VQYXRoOiB0aGlzLnJlc29sdmVkQmFzZVBhdGgsXG4gICAgICBvdmVycmlkZXM6IHRoaXMuYmFzZVByb3BzLm92ZXJyaWRlcz8ubmV4dGpzU3RhdGljQXNzZXRzLFxuICAgICAgLi4udGhpcy5jb25zdHJ1Y3RPdmVycmlkZXM/Lm5leHRqc1N0YXRpY0Fzc2V0c1Byb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNoYXJlZCBieSBgTmV4dGpzR2xvYmFsRnVuY3Rpb25zYCBhbmQgYE5leHRqc1JlZ2lvbmFsRnVuY3Rpb25zYC5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVOZXh0anNGdW5jdGlvbnMoKTogTmV4dGpzRnVuY3Rpb25zIHtcbiAgICAvLyBUaGUgZ2V0dGVyLCBub3QgYSBwYXJhbWV0ZXIsIHNvIHRoZSBidWlsZCBhbmQgdGhlIGZ1bmN0aW9ucyByZWFkIHRoZVxuICAgIC8vIHNhbWUgYGFyY2hpdGVjdHVyZWAuXG4gICAgY29uc3Qgb3ZlcnJpZGVzID0gdGhpcy5mdW5jdGlvbnNPdmVycmlkZXM7XG4gICAgcmV0dXJuIG5ldyBOZXh0anNGdW5jdGlvbnModGhpcywgXCJOZXh0anNGdW5jdGlvbnNcIiwge1xuICAgICAgLi4udGhpcy5jb21wdXRlQmFzZVByb3BzKCksXG4gICAgICBkZXBsb3ltZW50Um9vdHM6IHRoaXMubmV4dGpzQnVpbGQuZGVwbG95bWVudFJvb3RzLFxuICAgICAgYXJjaGl0ZWN0dXJlOiB0aGlzLm5leHRqc0J1aWxkLmFyY2hpdGVjdHVyZSxcbiAgICAgIGZ1bmN0aW9uR3JvdXBzOiB0aGlzLmZ1bmN0aW9uR3JvdXBzLFxuICAgICAgb3ZlcnJpZGVzOiB7XG4gICAgICAgIC4uLm92ZXJyaWRlcyxcbiAgICAgICAgZnVuY3Rpb25Qcm9wczoge1xuICAgICAgICAgIC4uLm92ZXJyaWRlcz8uZnVuY3Rpb25Qcm9wcyxcbiAgICAgICAgICAvLyBTcHJlYWQgY29uZGl0aW9uYWxseSByYXRoZXIgdGhhbiBhc3NpZ25lZDogYW4gdW5jb25kaXRpb25hbFxuICAgICAgICAgIC8vIGB2cGM6IHRoaXMuYmFzZVByb3BzLnZwY2Agd3JpdGVzIGB1bmRlZmluZWRgIG92ZXIgYW5cbiAgICAgICAgICAvLyBgb3ZlcnJpZGVzLm5leHRqc0Z1bmN0aW9ucy5mdW5jdGlvblByb3BzLnZwY2AgdGhlIGNvbnN1bWVyIHN1cHBsaWVkLFxuICAgICAgICAgIC8vIHNvIHRoZSBMYW1iZGFzIGRlcGxveSBvdXRzaWRlIHRoZSBWUEMgYW5kIGNhbm5vdCByZWFjaCBhIHByaXZhdGVcbiAgICAgICAgICAvLyBSRFMsIEVsYXN0aUNhY2hlLCBvciBWUEMgZW5kcG9pbnQgLSB3aXRoIG5vdGhpbmcgc2FpZCBhdCBzeW50aC5cbiAgICAgICAgICAuLi4odGhpcy5iYXNlUHJvcHMudnBjID8geyB2cGM6IHRoaXMuYmFzZVByb3BzLnZwYyB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWdsb2JhbC1jb250YWluZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtZ2xvYmFsLWNvbnRhaW5lcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQVFBLDRDQUEwQztBQUMxQyxtRUFLaUM7QUFHakMsMkVBRzZDO0FBQzdDLGdFQUdnQztBQUVoQyxrREFBOEM7QUEwRTlDOzs7OztHQUtHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSwyQ0FBbUI7O0lBQzdELGdCQUFnQixDQUFtQjtJQUNuQyxrQkFBa0IsQ0FBcUI7SUFDdkMsZ0JBQWdCLENBQW1CO0lBQ25DOzs7O09BSUc7SUFDSCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUEsb0JBQVEsRUFDYixXQUFXLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEVBQzVELElBQUksQ0FBQyxnQkFBZ0IsQ0FDdEIsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLLENBQThCO0lBRTNDLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQWtDO1FBRWxDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxzQkFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUMxRCxNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDO1FBQ25FLDJFQUEyRTtRQUMzRSx5RUFBeUU7UUFDekUsd0VBQXdFO1FBQ3hFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtC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biAgRGlzdHJpYnV0aW9uLFxuICBGdW5jdGlvbkNvZGUsXG4gIElLZXlWYWx1ZVN0b3JlLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcbmltcG9ydCB7IElDbHVzdGVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCB7IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2MlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IE5leHRqc1R5cGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBOZXh0anNCYXNlQ29uc3RydWN0T3ZlcnJpZGVzLFxuICBOZXh0anNCYXNlT3ZlcnJpZGVzLFxuICBOZXh0anNCYXNlQ29uc3RydWN0LFxuICBOZXh0anNCYXNlUHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1iYXNlLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHMgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHNcIjtcbmltcG9ydCB7IE9wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wc1wiO1xuaW1wb3J0IHtcbiAgTmV4dGpzQ29udGFpbmVycyxcbiAgTmV4dGpzQ29udGFpbmVyc092ZXJyaWRlcyxcbn0gZnJvbSBcIi4uL25leHRqcy1jb21wdXRlL25leHRqcy1jb250YWluZXJzXCI7XG5pbXBvcnQge1xuICBOZXh0anNEaXN0cmlidXRpb24sXG4gIE5leHRqc0Rpc3RyaWJ1dGlvbk92ZXJyaWRlcyxcbn0gZnJvbSBcIi4uL25leHRqcy1kaXN0cmlidXRpb25cIjtcbmltcG9ydCB7IE5leHRqc1Bvc3REZXBsb3kgfSBmcm9tIFwiLi4vbmV4dGpzLXBvc3QtZGVwbG95XCI7XG5pbXBvcnQgeyBqb2luUGF0aCB9IGZyb20gXCIuLi91dGlscy9iYXNlLXBhdGhcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNHbG9iYWxDb250YWluZXJzQ29uc3RydWN0T3ZlcnJpZGVzIGV4dGVuZHMgTmV4dGpzQmFzZUNvbnN0cnVjdE92ZXJyaWRlcyB7XG4gIHJlYWRvbmx5IG5leHRqc0NvbnRhaW5lcnNQcm9wcz86IE9wdGlvbmFsTmV4dGpzQ29udGFpbmVyc1Byb3BzO1xuICByZWFkb25seSBuZXh0anNEaXN0cmlidXRpb25Qcm9wcz86IE9wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHM7XG59XG5cbi8qKlxuICogT3ZlcnJpZGVzIGZvciBgTmV4dGpzR2xvYmFsQ29udGFpbmVyc2AuIE92ZXJyaWRlcyBhcmUgbG93ZXIgbGV2ZWwgdGhhblxuICogcHJvcHMgYW5kIGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gQ0RLIENvbnN0cnVjdHMgZ2l2aW5nIHlvdSBtb3JlIGNvbnRyb2wuIEl0J3NcbiAqIHJlY29tbWVuZGVkIHRvIHVzZSBjYXV0aW9uIGFuZCByZXZpZXcgc291cmNlIGNvZGUgc28geW91IGtub3cgaG93IHRoZXkncmUgdXNlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXh0anNHbG9iYWxDb250YWluZXJzT3ZlcnJpZGVzIGV4dGVuZHMgTmV4dGpzQmFzZU92ZXJyaWRlcyB7XG4gIHJlYWRvbmx5IG5leHRqc0dsb2JhbENvbnRhaW5lcnM/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWdsb2JhbC1mdW5jdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1nbG9iYWwtZnVuY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2Q0FBb0M7QUFFcEMsaURBQThEO0FBRTlELGlEQUFzRDtBQUV0RCxnRUFBb0U7QUFDcEUsNENBQTBDO0FBQzFDLG1FQUtpQztBQU9qQyxnRUFHZ0M7QUFFaEMsa0RBQThDO0FBMEM5Qzs7Ozs7R0FLRztBQUNILE1BQWEscUJBQXNCLFNBQVEsMkNBQW1COztJQUM1RCxlQUFlLENBQWtCO0lBQ2pDLGtCQUFrQixDQUFxQjtJQUN2QyxnQkFBZ0IsQ0FBbUI7SUFDbkM7Ozs7T0FJRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBQSxvQkFBUSxFQUNiLFdBQVcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFDNUQsSUFBSSxDQUFDLGdCQUFnQixDQUN0QixDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBNkI7SUFFMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsc0JBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzFELDhFQUE4RTtRQUM5RSw0RUFBNEU7UUFDNUUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUN2RCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FDMUIsQ0FBQztRQUNGLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUNqRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUNyQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ssMEJBQTBCLENBQUMsU0FBMkI7UUFDNUQsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNqRCxNQUFNLGFBQWEsR0FBRyw4QkFBOEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyRSxJQUFJLHlCQUFlLENBQUMsSUFBSSxFQUFFLHlCQUF5QixFQUFFO1lBQ25ELGFBQWE7WUFDYixXQUFXLEVBQUUsWUFBWSxDQUFDLGNBQWM7U0FDekMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxnQkFBTSxDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtZQUNyQyxrRUFBa0U7WUFDbEUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFLLENBQUM7WUFDdEMsVUFBVSxFQUFFO2dCQUNWLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQzdCLFNBQVMsRUFBRTt3QkFDVCxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7NEJBQ3ZCLE9BQU8sRUFBRSxLQUFLOzRCQUNkLFFBQVEsRUFBRSxXQUFXOzRCQUNyQixZQUFZLEVBQUUsYUFBYTt5QkFDNUIsQ0FBQztxQkFDSDtpQkFDRixDQUFDO2dCQUNGLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsK0JBQStCLENBQUM7b0JBQzFDLFNBQVMsRUFBRSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7aUJBQzFDLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUN2QixFQUFFLENBQUMsY0FBYyxDQUFDLHVDQUF1QyxFQUFFLGFBQWEsQ0FBQyxDQUMxRSxDQUFDO0lBQ0osQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixPQUFPLElBQUksd0NBQWtCLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFO1lBQ3hELFlBQVksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTTtZQUM1QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyx5QkFBeUI7WUFDdkQsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDL0IsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTtZQUNyQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXO1lBQzdDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsa0JBQWtCO1lBQ25ELGdCQUFnQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCO1lBQ25ELHNFQUFzRTtZQUN0RSwwQkFBMEI7WUFDMUIsY0FBYyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYztpQkFDaEQsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLHdDQUFzQixDQUFDO2lCQUN4RCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNoQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVk7YUFDaEMsQ0FBQyxDQUFDO1lBQ0wsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0I7WUFDL0QsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUI7U0FDeEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFwR0gsc0RBcUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IERpc3RyaWJ1dGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udFwiO1xuaW1wb3J0IHsgUG9saWN5LCBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgRnVuY3Rpb24gYXMgTGFtYmRhRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgU3RyaW5nUGFyYW1ldGVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zc21cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0ZVTkNUSU9OX0dST1VQIH0gZnJvbSBcIi4uL2FkYXB0ZXIvZnVuY3Rpb24tZ3JvdXBzXCI7XG5pbXBvcnQgeyBOZXh0anNUeXBlIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZU92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdCxcbiAgTmV4dGpzQmFzZVByb3BzLFxufSBmcm9tIFwiLi9uZXh0anMtYmFzZS1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IE9wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wc1wiO1xuaW1wb3J0IHtcbiAgTmV4dGpzRnVuY3Rpb25Hcm91cCxcbiAgTmV4dGpzRnVuY3Rpb25zLFxuICBOZXh0anNGdW5jdGlvbnNPdmVycmlkZXMsXG59IGZyb20gXCIuLi9uZXh0anMtY29tcHV0ZS9uZXh0anMtZnVuY3Rpb25zXCI7XG5pbXBvcnQge1xuICBOZXh0anNEaXN0cmlidXRpb24sXG4gIE5leHRqc0Rpc3RyaWJ1dGlvbk92ZXJyaWRlcyxcbn0gZnJvbSBcIi4uL25leHRqcy1kaXN0cmlidXRpb25cIjtcbmltcG9ydCB7IE5leHRqc1Bvc3REZXBsb3kgfSBmcm9tIFwiLi4vbmV4dGpzLXBvc3QtZGVwbG95XCI7XG5pbXBvcnQgeyBqb2luUGF0aCB9IGZyb20gXCIuLi91dGlscy9iYXNlLXBhdGhcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNHbG9iYWxGdW5jdGlvbnNDb25zdHJ1Y3RPdmVycmlkZXMgZXh0ZW5kcyBOZXh0anNCYXNlQ29uc3RydWN0T3ZlcnJpZGVzIHtcbiAgcmVhZG9ubHkgbmV4dGpzRGlzdHJpYnV0aW9uUHJvcHM/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;
|
|
@@ -49,6 +49,7 @@ export interface S3AssetLocation {
|
|
|
49
49
|
export declare function fetchFromS3(s3: S3Client, bucket: string, url: string, location: S3AssetLocation, maximumBody: number): Promise<{
|
|
50
50
|
buffer: Buffer;
|
|
51
51
|
contentType: string | null;
|
|
52
|
+
cacheControl: string | null;
|
|
52
53
|
etag: string;
|
|
53
54
|
}>;
|
|
54
55
|
/** A source over `images.maximumResponseBody`; see {@link fetchFromS3}. */
|
|
@@ -86,6 +86,7 @@ async function fetchFromS3(s3, bucket, url, location, maximumBody) {
|
|
|
86
86
|
return {
|
|
87
87
|
buffer: Buffer.concat(chunks),
|
|
88
88
|
contentType: response.ContentType || null,
|
|
89
|
+
cacheControl: response.CacheControl || null,
|
|
89
90
|
etag: response.ETag || "",
|
|
90
91
|
};
|
|
91
92
|
}
|
|
@@ -141,4 +142,4 @@ function resolveErrorResponse(error, ImageError) {
|
|
|
141
142
|
}
|
|
142
143
|
return { statusCode: 500, message: "Internal Server Error" };
|
|
143
144
|
}
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS9pbWFnZS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE4REEsa0NBMkRDO0FBOEJELGtDQVFDO0FBWUQsb0RBaUJDO0FBNUxELHNEQUFzRDtBQUN0RDs7Ozs7Ozs7R0FRRztBQUNILDZDQUF5QztBQUN6QyxrREFBZ0U7QUFDaEUsaUNBQXVEO0FBMEJ2RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSSxLQUFLLFVBQVUsV0FBVyxDQUMvQixFQUFZLEVBQ1osTUFBYyxFQUNkLEdBQVcsRUFDWCxRQUF5QixFQUN6QixXQUFtQjtJQUVuQixNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLFFBQVEsQ0FBQztJQUM1Qyx5RUFBeUU7SUFDekUsNEVBQTRFO0lBQzVFLHlFQUF5RTtJQUN6RSwwRUFBMEU7SUFDMUUsMkVBQTJFO0lBQzNFLE1BQU0sSUFBSSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25FLDZFQUE2RTtJQUM3RSxxRUFBcUU7SUFDckUsOEVBQThFO0lBQzlFLDRFQUE0RTtJQUM1RSx1RUFBdUU7SUFDdkUsTUFBTSxTQUFTLEdBQUcsSUFBQSx3QkFBaUIsRUFBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRCw2RUFBNkU7SUFDN0UsK0JBQStCO0lBQy9CLE1BQU0sT0FBTyxHQUFHLElBQUEsaUJBQVUsRUFBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENB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QUEyQjtJQUszQixJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUUsQ0FBQztRQUNoQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsSUFBSSxLQUFLLFlBQVksa0JBQWtCLEVBQUUsQ0FBQztRQUN4QyxPQUFPO1lBQ0wsVUFBVSxFQUFFLEdBQUc7WUFDZixPQUFPLEVBQUUsMkRBQTJEO1NBQ3JFLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLENBQUM7QUFDL0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuLyoqXG4gKiBTMyBmZXRjaGluZyBhbmQgZXJyb3IgbWFwcGluZyBmb3IgYC9fbmV4dC9pbWFnZWAsIHNwbGl0IG91dCBmcm9tXG4gKiB7QGxpbmsgLi9pbWFnZS50c30gc28gaXQgaXMgdW5pdC10ZXN0YWJsZSB3aXRob3V0IGBuZXh0YCBwcmVzZW50LlxuICpcbiAqIFRoZSBvbmUgdmFsdWUgZnJvbSBgbmV4dGAgdGhhdCB0aGlzIGZpbGUgbmVlZHMgaXMgcGFzc2VkIGluIHJhdGhlciB0aGFuXG4gKiBpbXBvcnRlZDogYG5leHRgIGlzIGV4dGVybmFsIHRvIHRoZSBzaGVsbCBidW5kbGVzLCBzbyBhIHN0YXRpYyBgaW1wb3J0YCBoZXJlXG4gKiB3b3VsZCBiZSBob2lzdGVkIGludG8gdGhlIGJ1bmRsZSB3aGVyZSBpdCBjYW5ub3QgcmVzb2x2ZS4gYGltYWdlLnRzYCByZXF1aXJlc1xuICogaXQgdGhyb3VnaCBgLi9uZXh0LW1vZHVsZXNgIGluc3RlYWQuXG4gKi9cbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCB7IEdldE9iamVjdENvbW1hbmQsIFMzQ2xpZW50IH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zM1wiO1xuaW1wb3J0IHsgc2FmZURlY29kZSwgd2l0aG91dFBhdGhQcmVmaXggfSBmcm9tIFwiLi91dGlsXCI7XG5cbi8qKiBXaGVyZSB0aGUgYXBwIGlzIHNlcnZlZCB2ZXJzdXMgd2hlcmUgaXRzIGFzc2V0cyB3ZXJlIHVwbG9hZGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM0Fzc2V0TG9jYXRpb24ge1xuICAvKipcbiAgICogVGhlIGFwcCdzIG93biBgYmFzZVBhdGhgIOKAlCB0aGUgcHJlZml4IG9mIHRoZSAqVVJMKiBpdCBpcyBzZXJ2ZWQgYXQuIE9ubHlcbiAgICogc3RyaXBwZWQgZnJvbSB0aGUgaHJlZiwgbmV2ZXIgdXNlZCB0byBidWlsZCBhIGtleTogb24gdGhlIEFQSSBHYXRld2F5XG4gICAqIGRlcGxveW1lbnQgdHlwZXMgdGhpcyBpcyB0aGUgc3RhZ2UgbmFtZSwgd2hpY2ggbmV2ZXIgYXBwZWFycyBpbiBTMy5cbiAgICovXG4gIHJlYWRvbmx5IHVybEJhc2VQYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBgTmV4dGpzU3RhdGljQXNzZXRzLmtleVByZWZpeGA6IHRoZSBTMyBrZXkgcHJlZml4IHRoZSBhc3NldHMgd2VyZSB1cGxvYWRlZFxuICAgKiB1bmRlciwgd2l0aG91dCBhIGxlYWRpbmcgc2xhc2guIEVtcHR5IGZvciBhIGJ1Y2tldC1yb290IGRlcGxveW1lbnQuXG4gICAqL1xuICByZWFkb25seSBrZXlQcmVmaXg6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBhcHAncyBgYXNzZXRQcmVmaXhgLCB3aGVuIGl0IGlzIGEgcGF0aCAoYC9jZG5gKS4gTmV4dC5qcyBwdXRzIGl0IGluXG4gICAqIGZyb250IG9mIGAvX25leHQvYCBpbiBwbGFjZSBvZiBgYmFzZVBhdGhgLCBzbyBhIHN0YXRpY2FsbHkgaW1wb3J0ZWQgaW1hZ2Unc1xuICAgKiBocmVmIGlzIGAvY2RuL19uZXh0L3N0YXRpYy9tZWRpYS/igKZgLCBhbmQgYG5leHQgc3RhcnRgIHN0cmlwcyBpdCBhZ2FpbiB3aGVuXG4gICAqIGl0IHNlcnZlcyB0aGUgZmlsZS4gQW4gYWJzb2x1dGUgYGFzc2V0UHJlZml4YCBtYWtlcyB0aGUgaHJlZiBhYnNvbHV0ZSwgd2hpY2hcbiAgICogbmV2ZXIgcmVhY2hlcyBoZXJlLlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0UHJlZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEZldGNoZXMgYSBub24tYWJzb2x1dGUgKGxvY2FsKSBpbWFnZSByZWZlcmVuY2VkIGJ5IGFuIGA8SW1hZ2U+YCBmcm9tIFMzLlxuICpcbiAqIGB1cmxgIGlzIGluY29uc2lzdGVudCBhYm91dCB0aGUgYXBwJ3MgYGJhc2VQYXRoYDogbmV4dC1pbWFnZS1sb2FkZXIgYmFrZXMgaXRcbiAqIGludG8gdGhlIGhyZWYgZm9yIHN0YXRpY2FsbHkgaW1wb3J0ZWQgaW1hZ2VzLCB3aGlsZSBwbGFpbiBzdHJpbmcgcGF0aHMgYXJlXG4gKiBwYXNzZWQgdGhyb3VnaCBhcyBsaXRlcmFsbHkgd3JpdHRlbiBieSB0aGUgYXBwLiBTbyBpdCBpcyBzdHJpcHBlZCB3aGVuIHByZXNlbnQsXG4gKiBsZWF2aW5nIGEgcGF0aCByZWxhdGl2ZSB0byB0aGUgYXNzZXQgcm9vdCwgYW5kIHRoZSBidWNrZXQncyBvd24ga2V5IHByZWZpeCBpc1xuICogYXBwbGllZCB0byB0aGF0LiBEZXJpdmluZyB0aGUga2V5IGZyb20gYGJhc2VQYXRoYCBpbnN0ZWFkIGlzIHdyb25nIHdoZW5ldmVyIHRoZVxuICogdHdvIGRpZmZlciwgd2hpY2ggdGhleSBkbyBmb3IgZXZlcnkgQVBJIEdhdGV3YXkgZGVwbG95bWVudC5cbiAqXG4gKiBUaGUga2V5IGlzIHBlcmNlbnQtZGVjb2RlZCwgYmVjYXVzZSBhbiBTMyBrZXkgaXMgdGhlIGZpbGUncyByZWFsIG5hbWUgd2hpbGVcbiAqIGB1cmxgIGlzIGEgVVJMIHBhdGguIGBwdWJsaWMvaGVsbG8gd29ybGQuanBnYCBhcnJpdmVzIGhlcmUgYXNcbiAqIGAvaGVsbG8lMjB3b3JsZC5qcGdgIOKAlCB0aGUgYHVybGAgcXVlcnkgdmFsdWUgaXMgZG91YmxlLWVuY29kZWQsIHNvIGRlY29kaW5nIHRoZVxuICogcXVlcnkgc3RyaW5nIGxlYXZlcyBvbmUgbGF5ZXIg4oCUIGFuZCBpdHMgb2JqZWN0IGtleSBpcyBgaGVsbG8gd29ybGQuanBnYC5cbiAqIE5leHQuanMncyBvd24gYGZldGNoSW50ZXJuYWxJbWFnZWAgZ2V0cyB0aGUgZGVjb2RlIGZvciBmcmVlLCBzaW5jZSBpdCBtYWtlcyBhblxuICogSFRUUCBzdWJyZXF1ZXN0IGFuZCBpdHMgc3RhdGljIGZpbGUgc2VydmVyIHJlc29sdmVzIHRoZSBwYXRoIGFnYWluc3QgdGhlXG4gKiBmaWxlc3lzdGVtOyBza2lwcGluZyBpdCBoZXJlIDQwMCdkIHRoYXQgZmlsZVxuICogKGBuZXh0LWltYWdlLWxlZ2FjeS91bmljb2RlYCkuIFVuaWNvZGUgbmVlZHMgbm90aGluZzogYMOkw7bDvMWhxI3FmcOtLnBuZ2Agc3Vydml2ZXNcbiAqIHRoZSBxdWVyeSBkZWNvZGUgYXMgaXRzZWxmIGFuZCBpcyBhbHJlYWR5IHRoZSBvYmplY3QncyBuYW1lLlxuICpcbiAqIFRocm93cyB7QGxpbmsgSW1hZ2VUb29MYXJnZUVycm9yfSByYXRoZXIgdGhhbiByZWFkIHBhc3QgYG1heGltdW1Cb2R5YFxuICogKGBpbWFnZXMubWF4aW11bVJlc3BvbnNlQm9keWApLCB3aGljaCBgbmV4dCBzdGFydGAgZW5mb3JjZXMgb24gbG9jYWwgc291cmNlc1xuICogdG9vOiBhIGxhcmdlIGBwdWJsaWMvYCBmaWxlIHdvdWxkIG90aGVyd2lzZSBiZSByZWFkIGludG8gbWVtb3J5IHdob2xlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hGcm9tUzMoXG4gIHMzOiBTM0NsaWVudCxcbiAgYnVja2V0OiBzdHJpbmcsXG4gIHVybDogc3RyaW5nLFxuICBsb2NhdGlvbjogUzNBc3NldExvY2F0aW9uLFxuICBtYXhpbXVtQm9keTogbnVtYmVyLFxuKTogUHJvbWlzZTx7IGJ1ZmZlcjogQnVmZmVyOyBjb250ZW50VHlwZTogc3RyaW5nIHwgbnVsbDsgZXRhZzogc3RyaW5nIH0+IHtcbiAgY29uc3QgeyB1cmxCYXNlUGF0aCwga2V5UHJlZml4IH0gPSBsb2NhdGlvbjtcbiAgLy8gVGhlIGtleSBpcyB0aGUgcGF0aCBhbG9uZS4gYC9sb2dvLnBuZz92PTJgIGlzIGEgY2FjaGUtYnVzdGVyIG9uIGEgZmlsZVxuICAvLyBuYW1lZCBgbG9nby5wbmdgLCBhbmQgYG5leHQgc3RhcnRgIHRyZWF0cyBpdCBhcyBvbmU6IGBmZXRjaEludGVybmFsSW1hZ2VgXG4gIC8vIHJvdXRlcyB0aGUgaHJlZiBhcyBhIHJlcXVlc3QsIHdob3NlIHF1ZXJ5IGFuZCBmcmFnbWVudCBuZXZlciByZWFjaCB0aGVcbiAgLy8gc3RhdGljIGZpbGUgbG9va3VwLiBMZWZ0IG9uLCB0aGV5IGJlY2FtZSBwYXJ0IG9mIHRoZSBrZXksIHdoaWNoIG1pc3NlZC5cbiAgLy8gQ3V0IGJlZm9yZSBkZWNvZGluZywgc28gYSBgP2AgdGhhdCBpcyBwYXJ0IG9mIHRoZSBuYW1lIChgJTNGYCkgc3Vydml2ZXMuXG4gIGNvbnN0IHBhdGggPSB3aXRob3V0QXNzZXRQcmVmaXgodXJsLnNwbGl0KC9bPyNdLywgMSlbMF0sIGxvY2F0aW9uKTtcbiAgLy8gTWF0Y2hpbmcgb24gYSBwYXRoIGJvdW5kYXJ5IGtlZXBzIGEgc2libGluZyBsaWtlIFwiL2Jhc2VtZW50L2xvZ28ucG5nXCIgZnJvbVxuICAvLyBiZWluZyB0cmVhdGVkIGFzIGJhc2VQYXRoIFwiL2Jhc2VcIiBwbHVzIFwibWVudC9sb2dvLnBuZ1wiLiBJdCdzIHN0aWxsXG4gIC8vIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gYSByZWFsIGBwdWJsaWMvYmFzZS9gIGRpcmVjdG9yeSwgd2hpY2ggbG9zZXM7IHRoYXQnc1xuICAvLyB0aGUgcmlnaHQgdHJhZGUsIHNpbmNlIGV2ZXJ5IHN0YXRpY2FsbHkgaW1wb3J0ZWQgaW1hZ2UgY2FycmllcyB0aGUgcHJlZml4XG4gIC8vIGFuZCB0aGUgYWx0ZXJuYXRpdmUgY29zdHMgYW4gUzMgcm91bmQgdHJpcCBwZXIgcmVxdWVzdCB0byBkZXRlY3QgaXQuXG4gIGNvbnN0IGFzc2V0UGF0aCA9IHdpdGhvdXRQYXRoUHJlZml4KHBhdGgsIHVybEJhc2VQYXRoKS5yZXBsYWNlKC9eXFwvKy8sIFwiXCIpO1xuICBjb25zdCBwcmVmaXggPSBrZXlQcmVmaXgucmVwbGFjZSgvXlxcLyt8XFwvKyQvZywgXCJcIik7XG4gIC8vIEEgbWFsZm9ybWVkIGVuY29kaW5nIHRoYXQgaXNuJ3QgYSBsaXRlcmFsIGAlYCBqdXN0IG1pc3NlcyB0aGUga2V5IGFuZCBnZXRzXG4gIC8vIHRoZSA0MDAgYW4gYWJzZW50IGZpbGUgZ2V0cy5cbiAgY29uc3QgZGVjb2RlZCA9IHNhZmVEZWNvZGUoYXNzZXRQYXRoKTtcbiAgY29uc3Qga2V5ID0gcHJlZml4ID8gYCR7cHJlZml4fS8ke2RlY29kZWR9YCA6IGRlY29kZWQ7XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzMy5zZW5kKFxuICAgIG5ldyBHZXRPYmplY3RDb21tYW5kKHtcbiAgICAgIEJ1Y2tldDogYnVja2V0LFxuICAgICAgS2V5OiBrZXksXG4gICAgfSksXG4gICk7XG5cbiAgY29uc3QgYm9keSA9IHJlc3BvbnNlLkJvZHk7XG4gIGlmICghYm9keSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRW1wdHkgcmVzcG9uc2UgZnJvbSBTMyBmb3Iga2V5OiAke2tleX1gKTtcbiAgfVxuXG4gIGlmICgocmVzcG9uc2UuQ29udGVudExlbmd0aCA/PyAwKSA+IG1heGltdW1Cb2R5KSB7XG4gICAgKGJvZHkgYXMgeyBkZXN0cm95PzogKCkgPT4gdm9pZCB9KS5kZXN0cm95Py4oKTtcbiAgICB0aHJvdyBuZXcgSW1hZ2VUb29MYXJnZUVycm9yKGtleSk7XG4gIH1cbiAgY29uc3QgY2h1bmtzOiBCdWZmZXJbXSA9IFtdO1xuICBsZXQgc2l6ZSA9IDA7XG4gIC8vIENvdW50ZWQgYXMgd2VsbCwgZm9yIGFuIG9iamVjdCB3aXRob3V0IGEgYENvbnRlbnRMZW5ndGhgLiBUaHJvd2luZyBvdXQgb2ZcbiAgLy8gdGhlIGxvb3AgZGVzdHJveXMgdGhlIHN0cmVhbS5cbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBib2R5IGFzIEFzeW5jSXRlcmFibGU8VWludDhBcnJheT4pIHtcbiAgICBzaXplICs9IGNodW5rLmJ5dGVMZW5ndGg7XG4gICAgaWYgKHNpemUgPiBtYXhpbXVtQm9keSkge1xuICAgICAgdGhyb3cgbmV3IEltYWdlVG9vTGFyZ2VFcnJvcihrZXkpO1xuICAgIH1cbiAgICBjaHVua3MucHVzaChCdWZmZXIuZnJvbShjaHVuaykpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBidWZmZXI6IEJ1ZmZlci5jb25jYXQoY2h1bmtzKSxcbiAgICBjb250ZW50VHlwZTogcmVzcG9uc2UuQ29udGVudFR5cGUgfHwgbnVsbCxcbiAgICBldGFnOiByZXNwb25zZS5FVGFnIHx8IFwiXCIsXG4gIH07XG59XG5cbi8qKlxuICogYC9jZG4vX25leHQvc3RhdGljL21lZGlhL2xvZ28ucG5nYCDihpIgYC9fbmV4dC9zdGF0aWMvbWVkaWEvbG9nby5wbmdgLCBmb3IgYVxuICogcGF0aCBgYXNzZXRQcmVmaXhgIG9mIGAvY2RuYDogb25seSBpbiBmcm9udCBvZiBgL19uZXh0L2AsIHRoZSBvbmUgcGxhY2VcbiAqIE5leHQuanMgcHV0cyBpdC5cbiAqL1xuZnVuY3Rpb24gd2l0aG91dEFzc2V0UHJlZml4KHBhdGg6IHN0cmluZywgbG9jYXRpb246IFMzQXNzZXRMb2NhdGlvbik6IHN0cmluZyB7XG4gIGNvbnN0IGFzc2V0UHJlZml4ID0gbG9jYXRpb24uYXNzZXRQcmVmaXg/LnJlcGxhY2UoL1xcLyskLywgXCJcIikgPz8gXCJcIjtcbiAgaWYgKCFhc3NldFByZWZpeC5zdGFydHNXaXRoKFwiL1wiKSkgcmV0dXJuIHBhdGg7XG4gIHJldHVybiBwYXRoLnN0YXJ0c1dpdGgoYCR7YXNzZXRQcmVmaXh9L19uZXh0L2ApXG4gICAgPyBwYXRoLnNsaWNlKGFzc2V0UHJlZml4Lmxlbmd0aClcbiAgICA6IHBhdGg7XG59XG5cbi8qKiBBIHNvdXJjZSBvdmVyIGBpbWFnZXMubWF4aW11bVJlc3BvbnNlQm9keWA7IHNlZSB7QGxpbmsgZmV0Y2hGcm9tUzN9LiAqL1xuZXhwb3J0IGNsYXNzIEltYWdlVG9vTGFyZ2VFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGtleTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYFMzIG9iamVjdCAke2tleX0gaXMgb3ZlciBpbWFnZXMubWF4aW11bVJlc3BvbnNlQm9keWApO1xuICAgIHRoaXMubmFtZSA9IFwiSW1hZ2VUb29MYXJnZUVycm9yXCI7XG4gIH1cbn1cblxuLyoqXG4gKiBgZXh0cmFjdEV0YWdgIGZyb20gbmV4dCdzIGltYWdlIG9wdGltaXplciwgcmVzdGF0ZWQ6IG5leHQgMTYuNCBtb3ZlZCBpdCBvdXRcbiAqIG9mIGBuZXh0L2Rpc3Qvc2VydmVyL2ltYWdlLW9wdGltaXplci5qc2AgKGludG8gYGltYWdlLW9wdGltaXplci9leHRyYWN0LWV0YWdgKSxcbiAqIHNvIHRoZSBvbGQgZXhwb3J0IGlzIGB1bmRlZmluZWRgIHRoZXJlIGFuZCB0aGUgbmV3IHBhdGggaXMgYWJzZW50IGJlZm9yZSBpdC5cbiAqIFRoZSB1cHN0cmVhbSBldGFnIGlzIGJhc2U2NHVybC1lbmNvZGVkLCBiZWNhdXNlIGl0IGlzIHdlYWstc2lnbmVkIGFuZCBlbmRzIHVwXG4gKiBpbiBhIGNhY2hlIGVudHJ5J3MgbmFtZTsgd2l0aG91dCBvbmUgdGhlIGV0YWcgaXMgdGhlIGltYWdlJ3Mgb3duIGhhc2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RXRhZyhcbiAgZXRhZzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgaW1hZ2VCdWZmZXI6IEJ1ZmZlcixcbik6IHN0cmluZyB7XG4gIGlmIChldGFnKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGV0YWcpLnRvU3RyaW5nKFwiYmFzZTY0dXJsXCIpO1xuICB9XG4gIHJldHVybiBjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShpbWFnZUJ1ZmZlcikuZGlnZXN0KFwiYmFzZTY0dXJsXCIpO1xufVxuXG4vKiogYEltYWdlRXJyb3JgIGZyb20gYG5leHQvZGlzdC9zZXJ2ZXIvaW1hZ2Utb3B0aW1pemVyLmpzYC4gKi9cbmV4cG9ydCB0eXBlIEltYWdlRXJyb3JDbGFzcyA9XG4gICh0eXBlb2YgaW1wb3J0KFwibmV4dC9kaXN0L3NlcnZlci9pbWFnZS1vcHRpbWl6ZXIuanNcIikpW1wiSW1hZ2VFcnJvclwiXTtcblxuLyoqXG4gKiBNYXBzIGFuIGVycm9yIHRocm93biB3aGlsZSBwcm9jZXNzaW5nIGFuIGltYWdlIHJlcXVlc3QgdG8gdGhlIEhUVFBcbiAqIHN0YXR1cy9tZXNzYWdlIGl0IHNob3VsZCBwcm9kdWNlLCBwcmVzZXJ2aW5nIHRoZSBzdGF0dXMgTmV4dC5qcydzIG93blxuICogYEltYWdlRXJyb3JgL2BmZXRjaEV4dGVybmFsSW1hZ2VgIGF0dGFjaC4gQSBzb3VyY2Ugb3ZlclxuICogYGltYWdlcy5tYXhpbXVtUmVzcG9uc2VCb2R5YCBpcyB0aGUgNDEzIGBmZXRjaEludGVybmFsSW1hZ2VgIGFuc3dlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRXJyb3JSZXNwb25zZShcbiAgZXJyb3I6IHVua25vd24sXG4gIEltYWdlRXJyb3I6IEltYWdlRXJyb3JDbGFzcyxcbik6IHtcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59IHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgSW1hZ2VFcnJvcikge1xuICAgIHJldHVybiB7IHN0YXR1c0NvZGU6IGVycm9yLnN0YXR1c0NvZGUsIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UgfTtcbiAgfVxuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBJbWFnZVRvb0xhcmdlRXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzQ29kZTogNDEzLFxuICAgICAgbWVzc2FnZTogJ1widXJsXCIgcGFyYW1ldGVyIGlzIHZhbGlkIGJ1dCBpbnRlcm5hbCByZXNwb25zZSBpcyBpbnZhbGlkJyxcbiAgICB9O1xuICB9XG4gIHJldHVybiB7IHN0YXR1c0NvZGU6IDUwMCwgbWVzc2FnZTogXCJJbnRlcm5hbCBTZXJ2ZXIgRXJyb3JcIiB9O1xufVxuIl19
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS9pbWFnZS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE4REEsa0NBaUVDO0FBOEJELGtDQVFDO0FBWUQsb0RBaUJDO0FBbE1ELHNEQUFzRDtBQUN0RDs7Ozs7Ozs7R0FRRztBQUNILDZDQUF5QztBQUN6QyxrREFBZ0U7QUFDaEUsaUNBQXVEO0FBMEJ2RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSSxLQUFLLFVBQVUsV0FBVyxDQUMvQixFQUFZLEVBQ1osTUFBYyxFQUNkLEdBQVcsRUFDWCxRQUF5QixFQUN6QixXQUFtQjtJQU9uQixNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLFFBQVEsQ0FBQztJQUM1Qyx5RUFBeUU7SUFDekUsNEVBQTRFO0lBQzVFLHlFQUF5RTtJQUN6RSwwRUFBMEU7SUFDMUUsMkVBQTJFO0lBQzNFLE1BQU0sSUFBSSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25FLDZFQUE2RTtJQUM3RSxxRUFBcUU7SUFDckUsOEVBQThFO0lBQzlFLDRFQUE0RTtJQUM1RSx1RUFBdUU7SUFDdkUsTUFBTSxTQUFTLEdBQUcsSUFBQSx3QkFBaUIsRUFBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRCw2RUFBNkU7SUFDN0UsK0JBQStCO0lBQy9CLE1BQU0sT0FBTyxHQUFHLElBQUEsaUJBQVUsRUFBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENB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O0dBS0c7QUFDSCxTQUFnQixvQkFBb0IsQ0FDbEMsS0FBYyxFQUNkLFVBQTJCO0lBSzNCLElBQUksS0FBSyxZQUFZLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xFLENBQUM7SUFDRCxJQUFJLEtBQUssWUFBWSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3hDLE9BQU87WUFDTCxVQUFVLEVBQUUsR0FBRztZQUNmLE9BQU8sRUFBRSwyREFBMkQ7U0FDckUsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQztBQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG4vKipcbiAqIFMzIGZldGNoaW5nIGFuZCBlcnJvciBtYXBwaW5nIGZvciBgL19uZXh0L2ltYWdlYCwgc3BsaXQgb3V0IGZyb21cbiAqIHtAbGluayAuL2ltYWdlLnRzfSBzbyBpdCBpcyB1bml0LXRlc3RhYmxlIHdpdGhvdXQgYG5leHRgIHByZXNlbnQuXG4gKlxuICogVGhlIG9uZSB2YWx1ZSBmcm9tIGBuZXh0YCB0aGF0IHRoaXMgZmlsZSBuZWVkcyBpcyBwYXNzZWQgaW4gcmF0aGVyIHRoYW5cbiAqIGltcG9ydGVkOiBgbmV4dGAgaXMgZXh0ZXJuYWwgdG8gdGhlIHNoZWxsIGJ1bmRsZXMsIHNvIGEgc3RhdGljIGBpbXBvcnRgIGhlcmVcbiAqIHdvdWxkIGJlIGhvaXN0ZWQgaW50byB0aGUgYnVuZGxlIHdoZXJlIGl0IGNhbm5vdCByZXNvbHZlLiBgaW1hZ2UudHNgIHJlcXVpcmVzXG4gKiBpdCB0aHJvdWdoIGAuL25leHQtbW9kdWxlc2AgaW5zdGVhZC5cbiAqL1xuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuaW1wb3J0IHsgR2V0T2JqZWN0Q29tbWFuZCwgUzNDbGllbnQgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXMzXCI7XG5pbXBvcnQgeyBzYWZlRGVjb2RlLCB3aXRob3V0UGF0aFByZWZpeCB9IGZyb20gXCIuL3V0aWxcIjtcblxuLyoqIFdoZXJlIHRoZSBhcHAgaXMgc2VydmVkIHZlcnN1cyB3aGVyZSBpdHMgYXNzZXRzIHdlcmUgdXBsb2FkZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIFMzQXNzZXRMb2NhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgYXBwJ3Mgb3duIGBiYXNlUGF0aGAg4oCUIHRoZSBwcmVmaXggb2YgdGhlICpVUkwqIGl0IGlzIHNlcnZlZCBhdC4gT25seVxuICAgKiBzdHJpcHBlZCBmcm9tIHRoZSBocmVmLCBuZXZlciB1c2VkIHRvIGJ1aWxkIGEga2V5OiBvbiB0aGUgQVBJIEdhdGV3YXlcbiAgICogZGVwbG95bWVudCB0eXBlcyB0aGlzIGlzIHRoZSBzdGFnZSBuYW1lLCB3aGljaCBuZXZlciBhcHBlYXJzIGluIFMzLlxuICAgKi9cbiAgcmVhZG9ubHkgdXJsQmFzZVBhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIGBOZXh0anNTdGF0aWNBc3NldHMua2V5UHJlZml4YDogdGhlIFMzIGtleSBwcmVmaXggdGhlIGFzc2V0cyB3ZXJlIHVwbG9hZGVkXG4gICAqIHVuZGVyLCB3aXRob3V0IGEgbGVhZGluZyBzbGFzaC4gRW1wdHkgZm9yIGEgYnVja2V0LXJvb3QgZGVwbG95bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGtleVByZWZpeDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGFwcCdzIGBhc3NldFByZWZpeGAsIHdoZW4gaXQgaXMgYSBwYXRoIChgL2NkbmApLiBOZXh0LmpzIHB1dHMgaXQgaW5cbiAgICogZnJvbnQgb2YgYC9fbmV4dC9gIGluIHBsYWNlIG9mIGBiYXNlUGF0aGAsIHNvIGEgc3RhdGljYWxseSBpbXBvcnRlZCBpbWFnZSdzXG4gICAqIGhyZWYgaXMgYC9jZG4vX25leHQvc3RhdGljL21lZGlhL+KApmAsIGFuZCBgbmV4dCBzdGFydGAgc3RyaXBzIGl0IGFnYWluIHdoZW5cbiAgICogaXQgc2VydmVzIHRoZSBmaWxlLiBBbiBhYnNvbHV0ZSBgYXNzZXRQcmVmaXhgIG1ha2VzIHRoZSBocmVmIGFic29sdXRlLCB3aGljaFxuICAgKiBuZXZlciByZWFjaGVzIGhlcmUuXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRQcmVmaXg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRmV0Y2hlcyBhIG5vbi1hYnNvbHV0ZSAobG9jYWwpIGltYWdlIHJlZmVyZW5jZWQgYnkgYW4gYDxJbWFnZT5gIGZyb20gUzMuXG4gKlxuICogYHVybGAgaXMgaW5jb25zaXN0ZW50IGFib3V0IHRoZSBhcHAncyBgYmFzZVBhdGhgOiBuZXh0LWltYWdlLWxvYWRlciBiYWtlcyBpdFxuICogaW50byB0aGUgaHJlZiBmb3Igc3RhdGljYWxseSBpbXBvcnRlZCBpbWFnZXMsIHdoaWxlIHBsYWluIHN0cmluZyBwYXRocyBhcmVcbiAqIHBhc3NlZCB0aHJvdWdoIGFzIGxpdGVyYWxseSB3cml0dGVuIGJ5IHRoZSBhcHAuIFNvIGl0IGlzIHN0cmlwcGVkIHdoZW4gcHJlc2VudCxcbiAqIGxlYXZpbmcgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBhc3NldCByb290LCBhbmQgdGhlIGJ1Y2tldCdzIG93biBrZXkgcHJlZml4IGlzXG4gKiBhcHBsaWVkIHRvIHRoYXQuIERlcml2aW5nIHRoZSBrZXkgZnJvbSBgYmFzZVBhdGhgIGluc3RlYWQgaXMgd3Jvbmcgd2hlbmV2ZXIgdGhlXG4gKiB0d28gZGlmZmVyLCB3aGljaCB0aGV5IGRvIGZvciBldmVyeSBBUEkgR2F0ZXdheSBkZXBsb3ltZW50LlxuICpcbiAqIFRoZSBrZXkgaXMgcGVyY2VudC1kZWNvZGVkLCBiZWNhdXNlIGFuIFMzIGtleSBpcyB0aGUgZmlsZSdzIHJlYWwgbmFtZSB3aGlsZVxuICogYHVybGAgaXMgYSBVUkwgcGF0aC4gYHB1YmxpYy9oZWxsbyB3b3JsZC5qcGdgIGFycml2ZXMgaGVyZSBhc1xuICogYC9oZWxsbyUyMHdvcmxkLmpwZ2Ag4oCUIHRoZSBgdXJsYCBxdWVyeSB2YWx1ZSBpcyBkb3VibGUtZW5jb2RlZCwgc28gZGVjb2RpbmcgdGhlXG4gKiBxdWVyeSBzdHJpbmcgbGVhdmVzIG9uZSBsYXllciDigJQgYW5kIGl0cyBvYmplY3Qga2V5IGlzIGBoZWxsbyB3b3JsZC5qcGdgLlxuICogTmV4dC5qcydzIG93biBgZmV0Y2hJbnRlcm5hbEltYWdlYCBnZXRzIHRoZSBkZWNvZGUgZm9yIGZyZWUsIHNpbmNlIGl0IG1ha2VzIGFuXG4gKiBIVFRQIHN1YnJlcXVlc3QgYW5kIGl0cyBzdGF0aWMgZmlsZSBzZXJ2ZXIgcmVzb2x2ZXMgdGhlIHBhdGggYWdhaW5zdCB0aGVcbiAqIGZpbGVzeXN0ZW07IHNraXBwaW5nIGl0IGhlcmUgNDAwJ2QgdGhhdCBmaWxlXG4gKiAoYG5leHQtaW1hZ2UtbGVnYWN5L3VuaWNvZGVgKS4gVW5pY29kZSBuZWVkcyBub3RoaW5nOiBgw6TDtsO8xaHEjcWZw60ucG5nYCBzdXJ2aXZlc1xuICogdGhlIHF1ZXJ5IGRlY29kZSBhcyBpdHNlbGYgYW5kIGlzIGFscmVhZHkgdGhlIG9iamVjdCdzIG5hbWUuXG4gKlxuICogVGhyb3dzIHtAbGluayBJbWFnZVRvb0xhcmdlRXJyb3J9IHJhdGhlciB0aGFuIHJlYWQgcGFzdCBgbWF4aW11bUJvZHlgXG4gKiAoYGltYWdlcy5tYXhpbXVtUmVzcG9uc2VCb2R5YCksIHdoaWNoIGBuZXh0IHN0YXJ0YCBlbmZvcmNlcyBvbiBsb2NhbCBzb3VyY2VzXG4gKiB0b286IGEgbGFyZ2UgYHB1YmxpYy9gIGZpbGUgd291bGQgb3RoZXJ3aXNlIGJlIHJlYWQgaW50byBtZW1vcnkgd2hvbGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaEZyb21TMyhcbiAgczM6IFMzQ2xpZW50LFxuICBidWNrZXQ6IHN0cmluZyxcbiAgdXJsOiBzdHJpbmcsXG4gIGxvY2F0aW9uOiBTM0Fzc2V0TG9jYXRpb24sXG4gIG1heGltdW1Cb2R5OiBudW1iZXIsXG4pOiBQcm9taXNlPHtcbiAgYnVmZmVyOiBCdWZmZXI7XG4gIGNvbnRlbnRUeXBlOiBzdHJpbmcgfCBudWxsO1xuICBjYWNoZUNvbnRyb2w6IHN0cmluZyB8IG51bGw7XG4gIGV0YWc6IHN0cmluZztcbn0+IHtcbiAgY29uc3QgeyB1cmxCYXNlUGF0aCwga2V5UHJlZml4IH0gPSBsb2NhdGlvbjtcbiAgLy8gVGhlIGtleSBpcyB0aGUgcGF0aCBhbG9uZS4gYC9sb2dvLnBuZz92PTJgIGlzIGEgY2FjaGUtYnVzdGVyIG9uIGEgZmlsZVxuICAvLyBuYW1lZCBgbG9nby5wbmdgLCBhbmQgYG5leHQgc3RhcnRgIHRyZWF0cyBpdCBhcyBvbmU6IGBmZXRjaEludGVybmFsSW1hZ2VgXG4gIC8vIHJvdXRlcyB0aGUgaHJlZiBhcyBhIHJlcXVlc3QsIHdob3NlIHF1ZXJ5IGFuZCBmcmFnbWVudCBuZXZlciByZWFjaCB0aGVcbiAgLy8gc3RhdGljIGZpbGUgbG9va3VwLiBMZWZ0IG9uLCB0aGV5IGJlY2FtZSBwYXJ0IG9mIHRoZSBrZXksIHdoaWNoIG1pc3NlZC5cbiAgLy8gQ3V0IGJlZm9yZSBkZWNvZGluZywgc28gYSBgP2AgdGhhdCBpcyBwYXJ0IG9mIHRoZSBuYW1lIChgJTNGYCkgc3Vydml2ZXMuXG4gIGNvbnN0IHBhdGggPSB3aXRob3V0QXNzZXRQcmVmaXgodXJsLnNwbGl0KC9bPyNdLywgMSlbMF0sIGxvY2F0aW9uKTtcbiAgLy8gTWF0Y2hpbmcgb24gYSBwYXRoIGJvdW5kYXJ5IGtlZXBzIGEgc2libGluZyBsaWtlIFwiL2Jhc2VtZW50L2xvZ28ucG5nXCIgZnJvbVxuICAvLyBiZWluZyB0cmVhdGVkIGFzIGJhc2VQYXRoIFwiL2Jhc2VcIiBwbHVzIFwibWVudC9sb2dvLnBuZ1wiLiBJdCdzIHN0aWxsXG4gIC8vIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gYSByZWFsIGBwdWJsaWMvYmFzZS9gIGRpcmVjdG9yeSwgd2hpY2ggbG9zZXM7IHRoYXQnc1xuICAvLyB0aGUgcmlnaHQgdHJhZGUsIHNpbmNlIGV2ZXJ5IHN0YXRpY2FsbHkgaW1wb3J0ZWQgaW1hZ2UgY2FycmllcyB0aGUgcHJlZml4XG4gIC8vIGFuZCB0aGUgYWx0ZXJuYXRpdmUgY29zdHMgYW4gUzMgcm91bmQgdHJpcCBwZXIgcmVxdWVzdCB0byBkZXRlY3QgaXQuXG4gIGNvbnN0IGFzc2V0UGF0aCA9IHdpdGhvdXRQYXRoUHJlZml4KHBhdGgsIHVybEJhc2VQYXRoKS5yZXBsYWNlKC9eXFwvKy8sIFwiXCIpO1xuICBjb25zdCBwcmVmaXggPSBrZXlQcmVmaXgucmVwbGFjZSgvXlxcLyt8XFwvKyQvZywgXCJcIik7XG4gIC8vIEEgbWFsZm9ybWVkIGVuY29kaW5nIHRoYXQgaXNuJ3QgYSBsaXRlcmFsIGAlYCBqdXN0IG1pc3NlcyB0aGUga2V5IGFuZCBnZXRzXG4gIC8vIHRoZSA0MDAgYW4gYWJzZW50IGZpbGUgZ2V0cy5cbiAgY29uc3QgZGVjb2RlZCA9IHNhZmVEZWNvZGUoYXNzZXRQYXRoKTtcbiAgY29uc3Qga2V5ID0gcHJlZml4ID8gYCR7cHJlZml4fS8ke2RlY29kZWR9YCA6IGRlY29kZWQ7XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzMy5zZW5kKFxuICAgIG5ldyBHZXRPYmplY3RDb21tYW5kKHtcbiAgICAgIEJ1Y2tldDogYnVja2V0LFxuICAgICAgS2V5OiBrZXksXG4gICAgfSksXG4gICk7XG5cbiAgY29uc3QgYm9keSA9IHJlc3BvbnNlLkJvZHk7XG4gIGlmICghYm9keSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRW1wdHkgcmVzcG9uc2UgZnJvbSBTMyBmb3Iga2V5OiAke2tleX1gKTtcbiAgfVxuXG4gIGlmICgocmVzcG9uc2UuQ29udGVudExlbmd0aCA/PyAwKSA+IG1heGltdW1Cb2R5KSB7XG4gICAgKGJvZHkgYXMgeyBkZXN0cm95PzogKCkgPT4gdm9pZCB9KS5kZXN0cm95Py4oKTtcbiAgICB0aHJvdyBuZXcgSW1hZ2VUb29MYXJnZUVycm9yKGtleSk7XG4gIH1cbiAgY29uc3QgY2h1bmtzOiBCdWZmZXJbXSA9IFtdO1xuICBsZXQgc2l6ZSA9IDA7XG4gIC8vIENvdW50ZWQgYXMgd2VsbCwgZm9yIGFuIG9iamVjdCB3aXRob3V0IGEgYENvbnRlbnRMZW5ndGhgLiBUaHJvd2luZyBvdXQgb2ZcbiAgLy8gdGhlIGxvb3AgZGVzdHJveXMgdGhlIHN0cmVhbS5cbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBib2R5IGFzIEFzeW5jSXRlcmFibGU8VWludDhBcnJheT4pIHtcbiAgICBzaXplICs9IGNodW5rLmJ5dGVMZW5ndGg7XG4gICAgaWYgKHNpemUgPiBtYXhpbXVtQm9keSkge1xuICAgICAgdGhyb3cgbmV3IEltYWdlVG9vTGFyZ2VFcnJvcihrZXkpO1xuICAgIH1cbiAgICBjaHVua3MucHVzaChCdWZmZXIuZnJvbShjaHVuaykpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBidWZmZXI6IEJ1ZmZlci5jb25jYXQoY2h1bmtzKSxcbiAgICBjb250ZW50VHlwZTogcmVzcG9uc2UuQ29udGVudFR5cGUgfHwgbnVsbCxcbiAgICBjYWNoZUNvbnRyb2w6IHJlc3BvbnNlLkNhY2hlQ29udHJvbCB8fCBudWxsLFxuICAgIGV0YWc6IHJlc3BvbnNlLkVUYWcgfHwgXCJcIixcbiAgfTtcbn1cblxuLyoqXG4gKiBgL2Nkbi9fbmV4dC9zdGF0aWMvbWVkaWEvbG9nby5wbmdgIOKGkiBgL19uZXh0L3N0YXRpYy9tZWRpYS9sb2dvLnBuZ2AsIGZvciBhXG4gKiBwYXRoIGBhc3NldFByZWZpeGAgb2YgYC9jZG5gOiBvbmx5IGluIGZyb250IG9mIGAvX25leHQvYCwgdGhlIG9uZSBwbGFjZVxuICogTmV4dC5qcyBwdXRzIGl0LlxuICovXG5mdW5jdGlvbiB3aXRob3V0QXNzZXRQcmVmaXgocGF0aDogc3RyaW5nLCBsb2NhdGlvbjogUzNBc3NldExvY2F0aW9uKTogc3RyaW5nIHtcbiAgY29uc3QgYXNzZXRQcmVmaXggPSBsb2NhdGlvbi5hc3NldFByZWZpeD8ucmVwbGFjZSgvXFwvKyQvLCBcIlwiKSA/PyBcIlwiO1xuICBpZiAoIWFzc2V0UHJlZml4LnN0YXJ0c1dpdGgoXCIvXCIpKSByZXR1cm4gcGF0aDtcbiAgcmV0dXJuIHBhdGguc3RhcnRzV2l0aChgJHthc3NldFByZWZpeH0vX25leHQvYClcbiAgICA/IHBhdGguc2xpY2UoYXNzZXRQcmVmaXgubGVuZ3RoKVxuICAgIDogcGF0aDtcbn1cblxuLyoqIEEgc291cmNlIG92ZXIgYGltYWdlcy5tYXhpbXVtUmVzcG9uc2VCb2R5YDsgc2VlIHtAbGluayBmZXRjaEZyb21TM30uICovXG5leHBvcnQgY2xhc3MgSW1hZ2VUb29MYXJnZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3Ioa2V5OiBzdHJpbmcpIHtcbiAgICBzdXBlcihgUzMgb2JqZWN0ICR7a2V5fSBpcyBvdmVyIGltYWdlcy5tYXhpbXVtUmVzcG9uc2VCb2R5YCk7XG4gICAgdGhpcy5uYW1lID0gXCJJbWFnZVRvb0xhcmdlRXJyb3JcIjtcbiAgfVxufVxuXG4vKipcbiAqIGBleHRyYWN0RXRhZ2AgZnJvbSBuZXh0J3MgaW1hZ2Ugb3B0aW1pemVyLCByZXN0YXRlZDogbmV4dCAxNi40IG1vdmVkIGl0IG91dFxuICogb2YgYG5leHQvZGlzdC9zZXJ2ZXIvaW1hZ2Utb3B0aW1pemVyLmpzYCAoaW50byBgaW1hZ2Utb3B0aW1pemVyL2V4dHJhY3QtZXRhZ2ApLFxuICogc28gdGhlIG9sZCBleHBvcnQgaXMgYHVuZGVmaW5lZGAgdGhlcmUgYW5kIHRoZSBuZXcgcGF0aCBpcyBhYnNlbnQgYmVmb3JlIGl0LlxuICogVGhlIHVwc3RyZWFtIGV0YWcgaXMgYmFzZTY0dXJsLWVuY29kZWQsIGJlY2F1c2UgaXQgaXMgd2Vhay1zaWduZWQgYW5kIGVuZHMgdXBcbiAqIGluIGEgY2FjaGUgZW50cnkncyBuYW1lOyB3aXRob3V0IG9uZSB0aGUgZXRhZyBpcyB0aGUgaW1hZ2UncyBvd24gaGFzaC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RFdGFnKFxuICBldGFnOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBpbWFnZUJ1ZmZlcjogQnVmZmVyLFxuKTogc3RyaW5nIHtcbiAgaWYgKGV0YWcpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oZXRhZykudG9TdHJpbmcoXCJiYXNlNjR1cmxcIik7XG4gIH1cbiAgcmV0dXJuIGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKGltYWdlQnVmZmVyKS5kaWdlc3QoXCJiYXNlNjR1cmxcIik7XG59XG5cbi8qKiBgSW1hZ2VFcnJvcmAgZnJvbSBgbmV4dC9kaXN0L3NlcnZlci9pbWFnZS1vcHRpbWl6ZXIuanNgLiAqL1xuZXhwb3J0IHR5cGUgSW1hZ2VFcnJvckNsYXNzID1cbiAgKHR5cGVvZiBpbXBvcnQoXCJuZXh0L2Rpc3Qvc2VydmVyL2ltYWdlLW9wdGltaXplci5qc1wiKSlbXCJJbWFnZUVycm9yXCJdO1xuXG4vKipcbiAqIE1hcHMgYW4gZXJyb3IgdGhyb3duIHdoaWxlIHByb2Nlc3NpbmcgYW4gaW1hZ2UgcmVxdWVzdCB0byB0aGUgSFRUUFxuICogc3RhdHVzL21lc3NhZ2UgaXQgc2hvdWxkIHByb2R1Y2UsIHByZXNlcnZpbmcgdGhlIHN0YXR1cyBOZXh0LmpzJ3Mgb3duXG4gKiBgSW1hZ2VFcnJvcmAvYGZldGNoRXh0ZXJuYWxJbWFnZWAgYXR0YWNoLiBBIHNvdXJjZSBvdmVyXG4gKiBgaW1hZ2VzLm1heGltdW1SZXNwb25zZUJvZHlgIGlzIHRoZSA0MTMgYGZldGNoSW50ZXJuYWxJbWFnZWAgYW5zd2Vycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVFcnJvclJlc3BvbnNlKFxuICBlcnJvcjogdW5rbm93bixcbiAgSW1hZ2VFcnJvcjogSW1hZ2VFcnJvckNsYXNzLFxuKToge1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn0ge1xuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBJbWFnZUVycm9yKSB7XG4gICAgcmV0dXJuIHsgc3RhdHVzQ29kZTogZXJyb3Iuc3RhdHVzQ29kZSwgbWVzc2FnZTogZXJyb3IubWVzc2FnZSB9O1xuICB9XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEltYWdlVG9vTGFyZ2VFcnJvcikge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXNDb2RlOiA0MTMsXG4gICAgICBtZXNzYWdlOiAnXCJ1cmxcIiBwYXJhbWV0ZXIgaXMgdmFsaWQgYnV0IGludGVybmFsIHJlc3BvbnNlIGlzIGludmFsaWQnLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHsgc3RhdHVzQ29kZTogNTAwLCBtZXNzYWdlOiBcIkludGVybmFsIFNlcnZlciBFcnJvclwiIH07XG59XG4iXX0=
|