cdk-nextjs 0.7.12 → 0.7.14

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.
Files changed (44) hide show
  1. package/.jsii +346 -100
  2. package/.jsii.tabl.json +1 -1
  3. package/API.md +208 -0
  4. package/README.md +115 -100
  5. package/docs/breaking-changes.md +4 -2
  6. package/docs/development-guide.md +10 -0
  7. package/docs/harness-coverage.md +16 -6
  8. package/docs/next-build-output-guide.md +1 -1
  9. package/lib/adapter/adapter.mjs +4 -1
  10. package/lib/generated-structs/OptionalNextjsApiProps.d.ts +6 -0
  11. package/lib/generated-structs/OptionalNextjsApiProps.js +1 -1
  12. package/lib/generated-structs/OptionalNextjsDistributionProps.d.ts +27 -0
  13. package/lib/generated-structs/OptionalNextjsDistributionProps.js +1 -1
  14. package/lib/nextjs-api.d.ts +11 -0
  15. package/lib/nextjs-api.js +63 -9
  16. package/lib/nextjs-api.test.js +127 -1
  17. package/lib/nextjs-build/nextjs-build.js +1 -1
  18. package/lib/nextjs-cache.js +1 -1
  19. package/lib/nextjs-compute/nextjs-containers.js +1 -1
  20. package/lib/nextjs-compute/nextjs-functions.js +1 -1
  21. package/lib/nextjs-distribution.d.ts +92 -2
  22. package/lib/nextjs-distribution.js +223 -109
  23. package/lib/nextjs-distribution.test.js +492 -12
  24. package/lib/nextjs-post-deploy.js +1 -1
  25. package/lib/nextjs-static-assets.js +1 -1
  26. package/lib/nextjs-static-assets.test.js +19 -7
  27. package/lib/root-constructs/nextjs-base-construct.d.ts +7 -0
  28. package/lib/root-constructs/nextjs-base-construct.js +14 -2
  29. package/lib/root-constructs/nextjs-global-containers.d.ts +16 -1
  30. package/lib/root-constructs/nextjs-global-containers.js +5 -2
  31. package/lib/root-constructs/nextjs-global-functions.d.ts +16 -1
  32. package/lib/root-constructs/nextjs-global-functions.js +5 -2
  33. package/lib/root-constructs/nextjs-regional-containers.js +1 -1
  34. package/lib/root-constructs/nextjs-regional-functions.js +3 -2
  35. package/lib/runtime/lambda.mjs +4 -1
  36. package/lib/runtime/server.mjs +4 -1
  37. package/lib/utils/viewer-request-functions.d.ts +53 -0
  38. package/lib/utils/viewer-request-functions.js +172 -0
  39. package/lib/utils/viewer-request-functions.test.d.ts +1 -0
  40. package/lib/utils/viewer-request-functions.test.js +43 -0
  41. package/package.json +4 -1
  42. package/scripts/e2e-harness/README.md +10 -8
  43. package/scripts/e2e-harness/app.js +7 -2
  44. package/scripts/render-diagrams.mjs +121 -0
@@ -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.12" };
17
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsGlobalContainers", version: "0.7.14" };
18
18
  nextjsContainers;
19
19
  nextjsDistribution;
20
20
  nextjsPostDeploy;
@@ -78,9 +78,12 @@ 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
+ serviceWorkerAllowed: this.serviceWorkerAllowed,
82
+ viewerRequestFunctionCode: this.props.viewerRequestFunctionCode,
83
+ viewerRequestKeyValueStore: this.props.viewerRequestKeyValueStore,
81
84
  ...this.props.overrides?.nextjsGlobalContainers?.nextjsDistributionProps,
82
85
  });
83
86
  }
84
87
  }
85
88
  exports.NextjsGlobalContainers = NextjsGlobalContainers;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWdsb2JhbC1jb250YWluZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtZ2xvYmFsLWNvbnRhaW5lcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUlBLDRDQUEwQztBQUMxQyxtRUFLaUM7QUFHakMsMkVBRzZDO0FBQzdDLGdFQUdnQztBQUVoQyxrREFBOEM7QUEyRDlDOzs7OztHQUtHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSwyQ0FBbUI7O0lBQzdELGdCQUFnQixDQUFtQjtJQUNuQyxrQkFBa0IsQ0FBcUI7SUFDdkMsZ0JBQWdCLENBQW1CO0lBQ25DOzs7O09BSUc7SUFDSCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUEsb0JBQVEsRUFDYixXQUFXLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEVBQzVELElBQUksQ0FBQyxnQkFBZ0IsQ0FDdEIsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLLENBQThCO0lBRTNDLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQWtDO1FBRWxDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxzQkFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUMxRCxNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDO1FBQ25FLDJFQUEyRTtRQUMzRSx5RUFBeUU7UUFDekUsd0VBQXdFO1FBQ3hFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDakQsWUFBWSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUM3Qyw0QkFBNEIsRUFDNUIsWUFBWSxDQUFDLGNBQWMsQ0FDNUIsQ0FBQztRQUNGLHVFQUF1RTtRQUN2RSwrREFBK0Q7UUFDL0Qsc0RBQXNEO1FBQ3RELGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQzdDLG1DQUFtQyxFQUNuQyxHQUFHLENBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQ2pELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQ3JDLENBQUM7SUFDSixDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLDRDQUE0QztRQUM1QyxPQUFPLElBQUksb0NBQWdCLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ3BELEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQzFCLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUc7WUFDbkIsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYztZQUN6QyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVO1lBQ2pDLGVBQWUsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDekUsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0I7WUFDakUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0I7WUFDdkQsU0FBUyxFQUFFO2dCQUNULEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCO2dCQUN6QyxlQUFlLEVBQUU7b0JBQ2YsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlO29CQUMxRCxvRUFBb0U7b0JBQ3BFLG1FQUFtRTtvQkFDbkUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQzNEO2FBQ0Y7WUFDRCxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQjtTQUN2RSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLE9BQU8sSUFBSSx3Q0FBa0IsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDeEQsWUFBWSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNO1lBQzVDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QjtZQUN2RCxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUMvQixXQUFXLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFdBQVc7WUFDaEUsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTtZQUNyQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFlBQVk7WUFDbEUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxrQkFBa0I7WUFDbkQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0I7WUFDbkQsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUI7U0FDekUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF0Rkgsd0RBdUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlzdHJpYnV0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCI7XG5pbXBvcnQgeyBJQ2x1c3RlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNzXCI7XG5pbXBvcnQgeyBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBOZXh0anNUeXBlIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZU92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdCxcbiAgTmV4dGpzQmFzZVByb3BzLFxufSBmcm9tIFwiLi9uZXh0anMtYmFzZS1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IE9wdGlvbmFsTmV4dGpzQ29udGFpbmVyc1Byb3BzIH0gZnJvbSBcIi4uL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzQ29udGFpbmVyc1Byb3BzXCI7XG5pbXBvcnQgeyBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzIH0gZnJvbSBcIi4uL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHNcIjtcbmltcG9ydCB7XG4gIE5leHRqc0NvbnRhaW5lcnMsXG4gIE5leHRqc0NvbnRhaW5lcnNPdmVycmlkZXMsXG59IGZyb20gXCIuLi9uZXh0anMtY29tcHV0ZS9uZXh0anMtY29udGFpbmVyc1wiO1xuaW1wb3J0IHtcbiAgTmV4dGpzRGlzdHJpYnV0aW9uLFxuICBOZXh0anNEaXN0cmlidXRpb25PdmVycmlkZXMsXG59IGZyb20gXCIuLi9uZXh0anMtZGlzdHJpYnV0aW9uXCI7XG5pbXBvcnQgeyBOZXh0anNQb3N0RGVwbG95IH0gZnJvbSBcIi4uL25leHRqcy1wb3N0LWRlcGxveVwiO1xuaW1wb3J0IHsgam9pblBhdGggfSBmcm9tIFwiLi4vdXRpbHMvYmFzZS1wYXRoXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzR2xvYmFsQ29udGFpbmVyc0NvbnN0cnVjdE92ZXJyaWRlcyBleHRlbmRzIE5leHRqc0Jhc2VDb25zdHJ1Y3RPdmVycmlkZXMge1xuICByZWFkb25seSBuZXh0anNDb250YWluZXJzUHJvcHM/OiBPcHRpb25hbE5leHRqc0NvbnRhaW5lcnNQcm9wcztcbiAgcmVhZG9ubHkgbmV4dGpzRGlzdHJpYnV0aW9uUHJvcHM/OiBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzO1xufVxuXG4vKipcbiAqIE92ZXJyaWRlcyBmb3IgYE5leHRqc0dsb2JhbENvbnRhaW5lcnNgLiBPdmVycmlkZXMgYXJlIGxvd2VyIGxldmVsIHRoYW5cbiAqIHByb3BzIGFuZCBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIENESyBDb25zdHJ1Y3RzIGdpdmluZyB5b3UgbW9yZSBjb250cm9sLiBJdCdzXG4gKiByZWNvbW1lbmRlZCB0byB1c2UgY2F1dGlvbiBhbmQgcmV2aWV3IHNvdXJjZSBjb2RlIHNvIHlvdSBrbm93IGhvdyB0aGV5J3JlIHVzZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzR2xvYmFsQ29udGFpbmVyc092ZXJyaWRlcyBleHRlbmRzIE5leHRqc0Jhc2VPdmVycmlkZXMge1xuICByZWFkb25seSBuZXh0anNHbG9iYWxDb250YWluZXJzPzogTmV4dGpzR2xvYmFsQ29udGFpbmVyc0NvbnN0cnVjdE92ZXJyaWRlcztcbiAgcmVhZG9ubHkgbmV4dGpzQ29udGFpbmVycz86IE5leHRqc0NvbnRhaW5lcnNPdmVycmlkZXM7XG4gIHJlYWRvbmx5IG5leHRqc0Rpc3RyaWJ1dGlvbj86IE5leHRqc0Rpc3RyaWJ1dGlvbk92ZXJyaWRlcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNHbG9iYWxDb250YWluZXJzUHJvcHMgZXh0ZW5kcyBOZXh0anNCYXNlUHJvcHMge1xuICAvKipcbiAgICogQnJpbmcgeW91ciBvd24gQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlci4gV2hlbiBwcm92aWRlZCwgaXQgaXMgcGFzc2VkXG4gICAqIGRpcmVjdGx5IHRvIGBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZEZhcmdhdGVTZXJ2aWNlYC4gSWYgdGhlIEFMQiBhbHJlYWR5XG4gICAqIGhhcyBhIGxpc3RlbmVyIG9uIHBvcnQgODAsIGNhbGwgYHJlbW92ZUF1dG9DcmVhdGVkTGlzdGVuZXIoKWAgYWZ0ZXJcbiAgICogY29uc3RydWN0aW9uIHRvIGF2b2lkIGRlcGxveW1lbnQgZmFpbHVyZXMuXG4gICAqL1xuICByZWFkb25seSBhbGI/OiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXI7XG4gIC8qKlxuICAgKiBCcmluZyB5b3VyIG93biBkaXN0cmlidXRpb24uIENhbiBiZSB1c2VkIHdpdGggYGJhc2VQYXRoYCB0byBob3N0IG11bHRpcGxlXG4gICAqIGFwcHMgb24gdGhlIHNhbWUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24uXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb24/OiBEaXN0cmlidXRpb247XG4gIC8qKlxuICAgKiBCcmluZyB5b3VyIG93biBFQ1MgY2x1c3Rlci4gV2hlbiBwcm92aWRlZCwgY2RrLW5leHRqcyB3aWxsIHNraXAgY3JlYXRpbmdcbiAgICogYSBuZXcgY2x1c3RlciBhbmQgVlBDIGdhdGV3YXkgZW5kcG9pbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgZWNzQ2x1c3Rlcj86IElDbHVzdGVyO1xuICAvKipcbiAgICogUGF0aCB0byBBUEkgUm91dGUgSGFuZGxlciB0aGF0IHJldHVybnMgSFRUUCAyMDAgdG8gZW5zdXJlIGNvbXB1dGUgaGVhbHRoLlxuICAgKiBVc2VkIGJ5IHRoZSBBTEIgdGFyZ2V0IGdyb3VwIGFuZCB0aGUgRUNTIGNvbnRhaW5lciBoZWFsdGggY2hlY2ssIGJvdGggb2ZcbiAgICogd2hpY2ggaGF2ZSB0byBiZSBhYmxlIHRvIHRlbGwgYSBydW5uaW5nIHRhc2sgZnJvbSBhIHdlZGdlZCBvbmUuXG4gICAqXG4gICAqIEdpdmUgdGhlIHBhdGggYXMgeW91ciBhcHAgcm91dGVzIGl0LCB3aXRob3V0IHlvdXIgYXBwJ3MgYGJhc2VQYXRoYCDigJRcbiAgICogY2RrLW5leHRqcyBhZGRzIHRoYXQgcHJlZml4LCBzaW5jZSBib3RoIGNoZWNrcyBoaXQgdGhlIGFwcCBkaXJlY3RseS5cbiAgICogQGV4YW1wbGUgXCIvYXBpL2hlYWx0aFwiXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIGFwaS9oZWFsdGgvcm91dGUudHNcbiAgICogaW1wb3J0IHsgTmV4dFJlc3BvbnNlIH0gZnJvbSBcIm5leHQvc2VydmVyXCI7XG4gICAqXG4gICAqIGV4cG9ydCBmdW5jdGlvbiBHRVQoKSB7XG4gICAqICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKFwiXCIpO1xuICAgKiB9XG4gICAqL1xuICByZWFkb25seSBoZWFsdGhDaGVja1BhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHByb3BzIG9mIGFueSBjb25zdHJ1Y3QuXG4gICAqL1xuICByZWFkb25seSBvdmVycmlkZXM/OiBOZXh0anNHbG9iYWxDb250YWluZXJzT3ZlcnJpZGVzO1xufVxuXG4vKipcbiAqIERlcGxveSBOZXh0LmpzIGdsb2JhbGx5IGRpc3RyaWJ1dGVkIHdpdGggY29udGFpbmVycy4gVXNlcyBbQ2xvdWRGcm9udFxuICogRGlzdHJpYnV0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRGcm9udC9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvZGlzdHJpYnV0aW9uLXdvcmtpbmctd2l0aC5odG1sKVxuICogYXMgQ29udGVudCBEZWxpdmVyeSBOZXR3b3JrIChDRE4pIGZvciBnbG9iYWwgZGlzdHJpYnV0aW9uIGFuZCBbQVdTIEZhcmdhdGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL0FXU19GYXJnYXRlLmh0bWwpXG4gKiBmb3IgY29udGFpbmVycy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5leHRqc0dsb2JhbENvbnRhaW5lcnMgZXh0ZW5kcyBOZXh0anNCYXNlQ29uc3RydWN0IHtcbiAgbmV4dGpzQ29udGFpbmVyczogTmV4dGpzQ29udGFpbmVycztcbiAgbmV4dGpzRGlzdHJpYnV0aW9uOiBOZXh0anNEaXN0cmlidXRpb247XG4gIG5leHRqc1Bvc3REZXBsb3k6IE5leHRqc1Bvc3REZXBsb3k7XG4gIC8qKlxuICAgKiBQdWJsaWMgVVJMIG9mIHRoZSBhcHAsIGluY2x1ZGluZyBgYmFzZVBhdGhgIOKAlCB0aGUgYXBwIG9ubHkgYW5zd2VycyB1bmRlclxuICAgKiB0aGF0IHByZWZpeCwgYW5kIGl0J3MgZGVyaXZlZCBmcm9tIHRoZSBhcHAncyBvd24gYGJhc2VQYXRoYCB3aGVuIHRoZSBwcm9wIGlzXG4gICAqIGxlZnQgdW5zZXQsIHNvIGl0J3MgdGhlcmUgd2hldGhlciBvciBub3QgeW91IGFza2VkIGZvciBpdC5cbiAgICovXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gam9pblBhdGgoXG4gICAgICBgaHR0cHM6Ly8ke3RoaXMubmV4dGpzRGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbi5kb21haW5OYW1lfWAsXG4gICAgICB0aGlzLnJlc29sdmVkQmFzZVBhdGgsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvcHM6IE5leHRqc0dsb2JhbENvbnRhaW5lcnNQcm9wcztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IE5leHRqc0dsb2JhbENvbnRhaW5lcnNQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcywgTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSUyk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5uZXh0anNDb250YWluZXJzID0gdGhpcy5jcmVhdGVOZXh0anNDb250YWluZXJzKCk7XG4gICAgdGhpcy5uZXh0anNEaXN0cmlidXRpb24gPSB0aGlzLmNyZWF0ZU5leHRqc0Rpc3RyaWJ1dGlvbigpO1xuICAgIGNvbnN0IHsgdGFza0RlZmluaXRpb24gfSA9IHRoaXMubmV4dGpzQ29udGFpbmVycy5hbGJGYXJnYXRlU2VydmljZTtcbiAgICAvLyBMZXRzIG9uLWRlbWFuZCByZXZhbGlkYXRpb24gZXZpY3Qgc3RhbGUgcmVzcG9uc2VzIGZyb20gdGhlIENETiBlZGdlLCBub3RcbiAgICAvLyBqdXN0IHRoZSBvcmlnaW4ncyBjYWNoZS4gVGhlIG9yaWdpbiBpcyB0aGUgQUxCLCB3aGljaCB0aGUgdGFzayBkb2Vzbid0XG4gICAgLy8gZGVwZW5kIG9uLCBzbyBuYW1pbmcgdGhlIGRpc3RyaWJ1dGlvbiBoZXJlIG1ha2VzIG5vIGRlcGVuZGVuY3kgY3ljbGUuXG4gICAgY29uc3QgeyBkaXN0cmlidXRpb24gfSA9IHRoaXMubmV4dGpzRGlzdHJpYnV0aW9uO1xuICAgIGRpc3RyaWJ1dGlvbi5ncmFudENyZWF0ZUludmFsaWRhdGlvbih0YXNrRGVmaW5pdGlvbi50YXNrUm9sZSk7XG4gICAgdGFza0RlZmluaXRpb24uZGVmYXVsdENvbnRhaW5lcj8uYWRkRW52aXJvbm1lbnQoXG4gICAgICBcIkNES19ORVhUSlNfRElTVFJJQlVUSU9OX0lEXCIsXG4gICAgICBkaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uSWQsXG4gICAgKTtcbiAgICAvLyBUaGUgQUxCIGlzIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBkaXN0cmlidXRpb24ncyBWUEMgb3JpZ2luIGFsb25lLCBzb1xuICAgIC8vIGBDbG91ZEZyb250LUZvcndhcmRlZC1Qcm90b2AgaXMgYWx3YXlzIENsb3VkRnJvbnQncyBvd247IHNlZVxuICAgIC8vIGB2aWV3ZXJIZWFkZXJzYCBpbiBzcmMvcnVudGltZS9odHRwL25vZGUtc2VydmVyLnRzLlxuICAgIHRhc2tEZWZpbml0aW9uLmRlZmF1bHRDb250YWluZXI/LmFkZEVudmlyb25tZW50KFxuICAgICAgXCJDREtfTkVYVEpTX1RSVVNUX0NMT1VERlJPTlRfUFJPVE9cIixcbiAgICAgIFwiMVwiLFxuICAgICk7XG4gICAgdGhpcy5uZXh0anNQb3N0RGVwbG95ID0gdGhpcy5jcmVhdGVOZXh0anNQb3N0RGVwbG95KFxuICAgICAgdGhpcy5uZXh0anNEaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5leHRqc0NvbnRhaW5lcnMoKTogTmV4dGpzQ29udGFpbmVycyB7XG4gICAgLy8gQ3JlYXRlIGNvbnRhaW5lcnMgd2l0aCBsb2NhbCBidWlsZCBvdXRwdXRcbiAgICByZXR1cm4gbmV3IE5leHRqc0NvbnRhaW5lcnModGhpcywgXCJOZXh0anNDb250YWluZXJzXCIsIHtcbiAgICAgIC4uLnRoaXMuY29tcHV0ZUJhc2VQcm9wcygpLFxuICAgICAgYWxiOiB0aGlzLnByb3BzLmFsYixcbiAgICAgIGJ1aWxkRGlyZWN0b3J5OiB0aGlzLnByb3BzLmJ1aWxkRGlyZWN0b3J5LFxuICAgICAgZWNzQ2x1c3RlcjogdGhpcy5wcm9wcy5lY3NDbHVzdGVyLFxuICAgICAgaGVhbHRoQ2hlY2tQYXRoOiB0aGlzLnJlc29sdmVkSGVhbHRoQ2hlY2tQYXRoKHRoaXMucHJvcHMuaGVhbHRoQ2hlY2tQYXRoKSxcbiAgICAgIHJlbGF0aXZlRW50cnlwb2ludFBhdGg6IHRoaXMubmV4dGpzQnVpbGQucmVsYXRpdmVQYXRoVG9FbnRyeXBvaW50LFxuICAgICAgcmVsYXRpdmVQcm9qZWN0RGlyOiB0aGlzLm5leHRqc0J1aWxkLnJlbGF0aXZlUHJvamVjdERpcixcbiAgICAgIG92ZXJyaWRlczoge1xuICAgICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8ubmV4dGpzQ29udGFpbmVycyxcbiAgICAgICAgZWNzQ2x1c3RlclByb3BzOiB7XG4gICAgICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc0NvbnRhaW5lcnM/LmVjc0NsdXN0ZXJQcm9wcyxcbiAgICAgICAgICAvLyBDb25kaXRpb25hbCBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIHRoZSBGdW5jdGlvbnMnIGB2cGNgOiBhc3NpZ25lZFxuICAgICAgICAgIC8vIHVuY29uZGl0aW9uYWxseSwgYW4gdW5zZXQgYHZwY2AgcHJvcCB3b3VsZCBlcmFzZSB0aGUgb3ZlcnJpZGUncy5cbiAgICAgICAgICAuLi4odGhpcy5iYXNlUHJvcHMudnBjID8geyB2cGM6IHRoaXMuYmFzZVByb3BzLnZwYyB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5uZXh0anNHbG9iYWxDb250YWluZXJzPy5uZXh0anNDb250YWluZXJzUHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5leHRqc0Rpc3RyaWJ1dGlvbigpIHtcbiAgICByZXR1cm4gbmV3IE5leHRqc0Rpc3RyaWJ1dGlvbih0aGlzLCBcIk5leHRqc0Rpc3RyaWJ1dGlvblwiLCB7XG4gICAgICBhc3NldHNCdWNrZXQ6IHRoaXMubmV4dGpzU3RhdGljQXNzZXRzLmJ1Y2tldCxcbiAgICAgIGFzc2V0UHJlZml4OiB0aGlzLm5leHRqc0J1aWxkLm5leHRDb25maWdBc3NldFByZWZpeFBhdGgsXG4gICAgICBiYXNlUGF0aDogdGhpcy5yZXNvbHZlZEJhc2VQYXRoLFxuICAgICAgY2VydGlmaWNhdGU6IHRoaXMubmV4dGpzQ29udGFpbmVycy5hbGJGYXJnYXRlU2VydmljZS5jZXJ0aWZpY2F0ZSxcbiAgICAgIGRpc3RyaWJ1dGlvbjogdGhpcy5wcm9wcy5kaXN0cmlidXRpb24sXG4gICAgICBsb2FkQmFsYW5jZXI6IHRoaXMubmV4dGpzQ29udGFpbmVycy5hbGJGYXJnYXRlU2VydmljZS5sb2FkQmFsYW5jZXIsXG4gICAgICBuZXh0anNUeXBlOiB0aGlzLm5leHRqc1R5cGUsXG4gICAgICBvdmVycmlkZXM6IHRoaXMucHJvcHMub3ZlcnJpZGVzPy5uZXh0anNEaXN0cmlidXRpb24sXG4gICAgICBwdWJsaWNEaXJFbnRyaWVzOiB0aGlzLm5leHRqc0J1aWxkLnB1YmxpY0RpckVudHJpZXMsXG4gICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8ubmV4dGpzR2xvYmFsQ29udGFpbmVycz8ubmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWdsb2JhbC1jb250YWluZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtZ2xvYmFsLWNvbnRhaW5lcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQVFBLDRDQUEwQztBQUMxQyxtRUFLaUM7QUFHakMsMkVBRzZDO0FBQzdDLGdFQUdnQztBQUVoQyxrREFBOEM7QUEwRTlDOzs7OztHQUtHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSwyQ0FBbUI7O0lBQzdELGdCQUFnQixDQUFtQjtJQUNuQyxrQkFBa0IsQ0FBcUI7SUFDdkMsZ0JBQWdCLENBQW1CO0lBQ25DOzs7O09BSUc7SUFDSCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUEsb0JBQVEsRUFDYixXQUFXLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEVBQzVELElBQUksQ0FBQyxnQkFBZ0IsQ0FDdEIsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLLENBQThCO0lBRTNDLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQWtDO1FBRWxDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxzQkFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUMxRCxNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDO1FBQ25FLDJFQUEyRTtRQUMzRSx5RUFBeUU7UUFDekUsd0VBQXdFO1FBQ3hFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtC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REEwRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXN0cmlidXRpb24sXG4gIEZ1bmN0aW9uQ29kZSxcbiAgSUtleVZhbHVlU3RvcmUsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udFwiO1xuaW1wb3J0IHsgSUNsdXN0ZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjc1wiO1xuaW1wb3J0IHsgSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgTmV4dGpzVHlwZSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIE5leHRqc0Jhc2VDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIE5leHRqc0Jhc2VPdmVycmlkZXMsXG4gIE5leHRqc0Jhc2VDb25zdHJ1Y3QsXG4gIE5leHRqc0Jhc2VQcm9wcyxcbn0gZnJvbSBcIi4vbmV4dGpzLWJhc2UtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBPcHRpb25hbE5leHRqc0NvbnRhaW5lcnNQcm9wcyB9IGZyb20gXCIuLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0NvbnRhaW5lcnNQcm9wc1wiO1xuaW1wb3J0IHsgT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcyB9IGZyb20gXCIuLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzXCI7XG5pbXBvcnQge1xuICBOZXh0anNDb250YWluZXJzLFxuICBOZXh0anNDb250YWluZXJzT3ZlcnJpZGVzLFxufSBmcm9tIFwiLi4vbmV4dGpzLWNvbXB1dGUvbmV4dGpzLWNvbnRhaW5lcnNcIjtcbmltcG9ydCB7XG4gIE5leHRqc0Rpc3RyaWJ1dGlvbixcbiAgTmV4dGpzRGlzdHJpYnV0aW9uT3ZlcnJpZGVzLFxufSBmcm9tIFwiLi4vbmV4dGpzLWRpc3RyaWJ1dGlvblwiO1xuaW1wb3J0IHsgTmV4dGpzUG9zdERlcGxveSB9IGZyb20gXCIuLi9uZXh0anMtcG9zdC1kZXBsb3lcIjtcbmltcG9ydCB7IGpvaW5QYXRoIH0gZnJvbSBcIi4uL3V0aWxzL2Jhc2UtcGF0aFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc0dsb2JhbENvbnRhaW5lcnNDb25zdHJ1Y3RPdmVycmlkZXMgZXh0ZW5kcyBOZXh0anNCYXNlQ29uc3RydWN0T3ZlcnJpZGVzIHtcbiAgcmVhZG9ubHkgbmV4dGpzQ29udGFpbmVyc1Byb3BzPzogT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHM7XG4gIHJlYWRvbmx5IG5leHRqc0Rpc3RyaWJ1dGlvblByb3BzPzogT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcztcbn1cblxuLyoqXG4gKiBPdmVycmlkZXMgZm9yIGBOZXh0anNHbG9iYWxDb250YWluZXJzYC4gT3ZlcnJpZGVzIGFyZSBsb3dlciBsZXZlbCB0aGFuXG4gKiBwcm9wcyBhbmQgYXJlIHBhc3NlZCBkaXJlY3RseSB0byBDREsgQ29uc3RydWN0cyBnaXZpbmcgeW91IG1vcmUgY29udHJvbC4gSXQnc1xuICogcmVjb21tZW5kZWQgdG8gdXNlIGNhdXRpb24gYW5kIHJldmlldyBzb3VyY2UgY29kZSBzbyB5b3Uga25vdyBob3cgdGhleSdyZSB1c2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc0dsb2JhbENvbnRhaW5lcnNPdmVycmlkZXMgZXh0ZW5kcyBOZXh0anNCYXNlT3ZlcnJpZGVzIHtcbiAgcmVhZG9ubHkgbmV4dGpzR2xvYmFsQ29udGFpbmVycz86IE5leHRqc0dsb2JhbENvbnRhaW5lcnNDb25zdHJ1Y3RPdmVycmlkZXM7XG4gIHJlYWRvbmx5IG5leHRqc0NvbnRhaW5lcnM/OiBOZXh0anNDb250YWluZXJzT3ZlcnJpZGVzO1xuICByZWFkb25seSBuZXh0anNEaXN0cmlidXRpb24/OiBOZXh0anNEaXN0cmlidXRpb25PdmVycmlkZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzR2xvYmFsQ29udGFpbmVyc1Byb3BzIGV4dGVuZHMgTmV4dGpzQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIEJyaW5nIHlvdXIgb3duIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXIuIFdoZW4gcHJvdmlkZWQsIGl0IGlzIHBhc3NlZFxuICAgKiBkaXJlY3RseSB0byBgQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRGYXJnYXRlU2VydmljZWAuIElmIHRoZSBBTEIgYWxyZWFkeVxuICAgKiBoYXMgYSBsaXN0ZW5lciBvbiBwb3J0IDgwLCBjYWxsIGByZW1vdmVBdXRvQ3JlYXRlZExpc3RlbmVyKClgIGFmdGVyXG4gICAqIGNvbnN0cnVjdGlvbiB0byBhdm9pZCBkZXBsb3ltZW50IGZhaWx1cmVzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxiPzogSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyO1xuICAvKipcbiAgICogQnJpbmcgeW91ciBvd24gZGlzdHJpYnV0aW9uLiBDYW4gYmUgdXNlZCB3aXRoIGBiYXNlUGF0aGAgdG8gaG9zdCBtdWx0aXBsZVxuICAgKiBhcHBzIG9uIHRoZSBzYW1lIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uPzogRGlzdHJpYnV0aW9uO1xuICAvKipcbiAgICogQnJpbmcgeW91ciBvd24gRUNTIGNsdXN0ZXIuIFdoZW4gcHJvdmlkZWQsIGNkay1uZXh0anMgd2lsbCBza2lwIGNyZWF0aW5nXG4gICAqIGEgbmV3IGNsdXN0ZXIgYW5kIFZQQyBnYXRld2F5IGVuZHBvaW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGVjc0NsdXN0ZXI/OiBJQ2x1c3RlcjtcbiAgLyoqXG4gICAqIFBhdGggdG8gQVBJIFJvdXRlIEhhbmRsZXIgdGhhdCByZXR1cm5zIEhUVFAgMjAwIHRvIGVuc3VyZSBjb21wdXRlIGhlYWx0aC5cbiAgICogVXNlZCBieSB0aGUgQUxCIHRhcmdldCBncm91cCBhbmQgdGhlIEVDUyBjb250YWluZXIgaGVhbHRoIGNoZWNrLCBib3RoIG9mXG4gICAqIHdoaWNoIGhhdmUgdG8gYmUgYWJsZSB0byB0ZWxsIGEgcnVubmluZyB0YXNrIGZyb20gYSB3ZWRnZWQgb25lLlxuICAgKlxuICAgKiBHaXZlIHRoZSBwYXRoIGFzIHlvdXIgYXBwIHJvdXRlcyBpdCwgd2l0aG91dCB5b3VyIGFwcCdzIGBiYXNlUGF0aGAg4oCUXG4gICAqIGNkay1uZXh0anMgYWRkcyB0aGF0IHByZWZpeCwgc2luY2UgYm90aCBjaGVja3MgaGl0IHRoZSBhcHAgZGlyZWN0bHkuXG4gICAqIEBleGFtcGxlIFwiL2FwaS9oZWFsdGhcIlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBhcGkvaGVhbHRoL3JvdXRlLnRzXG4gICAqIGltcG9ydCB7IE5leHRSZXNwb25zZSB9IGZyb20gXCJuZXh0L3NlcnZlclwiO1xuICAgKlxuICAgKiBleHBvcnQgZnVuY3Rpb24gR0VUKCkge1xuICAgKiAgIHJldHVybiBOZXh0UmVzcG9uc2UuanNvbihcIlwiKTtcbiAgICogfVxuICAgKi9cbiAgcmVhZG9ubHkgaGVhbHRoQ2hlY2tQYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPdmVycmlkZSBwcm9wcyBvZiBhbnkgY29uc3RydWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgb3ZlcnJpZGVzPzogTmV4dGpzR2xvYmFsQ29udGFpbmVyc092ZXJyaWRlcztcbiAgLyoqXG4gICAqIENsb3VkRnJvbnQgRnVuY3Rpb24gY29kZSBydW4gZmlyc3Qgb24gZXZlcnkgdmlld2VyIHJlcXVlc3QsIHN0YXRpYyBhc3NldHNcbiAgICogaW5jbHVkZWQg4oCUIEhUVFAgQmFzaWMgYXV0aCBvbiBhIHByZS1sYXVuY2ggc2l0ZSwgc2F5LiBJdCBtdXN0IGRlZmluZVxuICAgKiBgdmlld2VyUmVxdWVzdChldmVudClgLCBhcyBhIGZ1bmN0aW9uIG9yIGEgYHZhcmAvYGxldGAvYGNvbnN0YC5cbiAgICogQHNlZSBOZXh0anNEaXN0cmlidXRpb25Qcm9wcy52aWV3ZXJSZXF1ZXN0RnVuY3Rpb25Db2RlXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdmlld2VyUmVxdWVzdEZ1bmN0aW9uQ29kZT86IEZ1bmN0aW9uQ29kZTtcbiAgLyoqXG4gICAqIEEgQ2xvdWRGcm9udCBLZXlWYWx1ZVN0b3JlIGB2aWV3ZXJSZXF1ZXN0RnVuY3Rpb25Db2RlYCBjYW4gcmVhZCB3aXRoXG4gICAqIGBjZi5rdnMoKWAsIHNvIGNyZWRlbnRpYWxzIHN0YXkgb3V0IG9mIHRoZSB0ZW1wbGF0ZS5cbiAgICogQHNlZSBOZXh0anNEaXN0cmlidXRpb25Qcm9wcy52aWV3ZXJSZXF1ZXN0S2V5VmFsdWVTdG9yZVxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHZpZXdlclJlcXVlc3RLZXlWYWx1ZVN0b3JlPzogSUtleVZhbHVlU3RvcmU7XG59XG5cbi8qKlxuICogRGVwbG95IE5leHQuanMgZ2xvYmFsbHkgZGlzdHJpYnV0ZWQgd2l0aCBjb250YWluZXJzLiBVc2VzIFtDbG91ZEZyb250XG4gKiBEaXN0cmlidXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZEZyb250L2xhdGVzdC9EZXZlbG9wZXJHdWlkZS9kaXN0cmlidXRpb24td29ya2luZy13aXRoLmh0bWwpXG4gKiBhcyBDb250ZW50IERlbGl2ZXJ5IE5ldHdvcmsgKENETikgZm9yIGdsb2JhbCBkaXN0cmlidXRpb24gYW5kIFtBV1MgRmFyZ2F0ZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvQVdTX0ZhcmdhdGUuaHRtbClcbiAqIGZvciBjb250YWluZXJzLlxuICovXG5leHBvcnQgY2xhc3MgTmV4dGpzR2xvYmFsQ29udGFpbmVycyBleHRlbmRzIE5leHRqc0Jhc2VDb25zdHJ1Y3Qge1xuICBuZXh0anNDb250YWluZXJzOiBOZXh0anNDb250YWluZXJzO1xuICBuZXh0anNEaXN0cmlidXRpb246IE5leHRqc0Rpc3RyaWJ1dGlvbjtcbiAgbmV4dGpzUG9zdERlcGxveTogTmV4dGpzUG9zdERlcGxveTtcbiAgLyoqXG4gICAqIFB1YmxpYyBVUkwgb2YgdGhlIGFwcCwgaW5jbHVkaW5nIGBiYXNlUGF0aGAg4oCUIHRoZSBhcHAgb25seSBhbnN3ZXJzIHVuZGVyXG4gICAqIHRoYXQgcHJlZml4LCBhbmQgaXQncyBkZXJpdmVkIGZyb20gdGhlIGFwcCdzIG93biBgYmFzZVBhdGhgIHdoZW4gdGhlIHByb3AgaXNcbiAgICogbGVmdCB1bnNldCwgc28gaXQncyB0aGVyZSB3aGV0aGVyIG9yIG5vdCB5b3UgYXNrZWQgZm9yIGl0LlxuICAgKi9cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBqb2luUGF0aChcbiAgICAgIGBodHRwczovLyR7dGhpcy5uZXh0anNEaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uLmRvbWFpbk5hbWV9YCxcbiAgICAgIHRoaXMucmVzb2x2ZWRCYXNlUGF0aCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9wczogTmV4dGpzR2xvYmFsQ29udGFpbmVyc1Byb3BzO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogTmV4dGpzR2xvYmFsQ29udGFpbmVyc1Byb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzLCBOZXh0anNUeXBlLkdMT0JBTF9DT05UQUlORVJTKTtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICB0aGlzLm5leHRqc0NvbnRhaW5lcnMgPSB0aGlzLmNyZWF0ZU5leHRqc0NvbnRhaW5lcnMoKTtcbiAgICB0aGlzLm5leHRqc0Rpc3RyaWJ1dGlvbiA9IHRoaXMuY3JlYXRlTmV4dGpzRGlzdHJpYnV0aW9uKCk7XG4gICAgY29uc3QgeyB0YXNrRGVmaW5pdGlvbiB9ID0gdGhpcy5uZXh0anNDb250YWluZXJzLmFsYkZhcmdhdGVTZXJ2aWNlO1xuICAgIC8vIExldHMgb24tZGVtYW5kIHJldmFsaWRhdGlvbiBldmljdCBzdGFsZSByZXNwb25zZXMgZnJvbSB0aGUgQ0ROIGVkZ2UsIG5vdFxuICAgIC8vIGp1c3QgdGhlIG9yaWdpbidzIGNhY2hlLiBUaGUgb3JpZ2luIGlzIHRoZSBBTEIsIHdoaWNoIHRoZSB0YXNrIGRvZXNuJ3RcbiAgICAvLyBkZXBlbmQgb24sIHNvIG5hbWluZyB0aGUgZGlzdHJpYnV0aW9uIGhlcmUgbWFrZXMgbm8gZGVwZW5kZW5jeSBjeWNsZS5cbiAgICBjb25zdCB7IGRpc3RyaWJ1dGlvbiB9ID0gdGhpcy5uZXh0anNEaXN0cmlidXRpb247XG4gICAgZGlzdHJpYnV0aW9uLmdyYW50Q3JlYXRlSW52YWxpZGF0aW9uKHRhc2tEZWZpbml0aW9uLnRhc2tSb2xlKTtcbiAgICB0YXNrRGVmaW5pdGlvbi5kZWZhdWx0Q29udGFpbmVyPy5hZGRFbnZpcm9ubWVudChcbiAgICAgIFwiQ0RLX05FWFRKU19ESVNUUklCVVRJT05fSURcIixcbiAgICAgIGRpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb25JZCxcbiAgICApO1xuICAgIC8vIFRoZSBBTEIgaXMgcmVhY2hhYmxlIHRocm91Z2ggdGhlIGRpc3RyaWJ1dGlvbidzIFZQQyBvcmlnaW4gYWxvbmUsIHNvXG4gICAgLy8gYENsb3VkRnJvbnQtRm9yd2FyZGVkLVByb3RvYCBpcyBhbHdheXMgQ2xvdWRGcm9udCdzIG93bjsgc2VlXG4gICAgLy8gYHZpZXdlckhlYWRlcnNgIGluIHNyYy9ydW50aW1lL2h0dHAvbm9kZS1zZXJ2ZXIudHMuXG4gICAgdGFza0RlZmluaXRpb24uZGVmYXVsdENvbnRhaW5lcj8uYWRkRW52aXJvbm1lbnQoXG4gICAgICBcIkNES19ORVhUSlNfVFJVU1RfQ0xPVURGUk9OVF9QUk9UT1wiLFxuICAgICAgXCIxXCIsXG4gICAgKTtcbiAgICB0aGlzLm5leHRqc1Bvc3REZXBsb3kgPSB0aGlzLmNyZWF0ZU5leHRqc1Bvc3REZXBsb3koXG4gICAgICB0aGlzLm5leHRqc0Rpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb24sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmV4dGpzQ29udGFpbmVycygpOiBOZXh0anNDb250YWluZXJzIHtcbiAgICAvLyBDcmVhdGUgY29udGFpbmVycyB3aXRoIGxvY2FsIGJ1aWxkIG91dHB1dFxuICAgIHJldHVybiBuZXcgTmV4dGpzQ29udGFpbmVycyh0aGlzLCBcIk5leHRqc0NvbnRhaW5lcnNcIiwge1xuICAgICAgLi4udGhpcy5jb21wdXRlQmFzZVByb3BzKCksXG4gICAgICBhbGI6IHRoaXMucHJvcHMuYWxiLFxuICAgICAgYnVpbGREaXJlY3Rvcnk6IHRoaXMucHJvcHMuYnVpbGREaXJlY3RvcnksXG4gICAgICBlY3NDbHVzdGVyOiB0aGlzLnByb3BzLmVjc0NsdXN0ZXIsXG4gICAgICBoZWFsdGhDaGVja1BhdGg6IHRoaXMucmVzb2x2ZWRIZWFsdGhDaGVja1BhdGgodGhpcy5wcm9wcy5oZWFsdGhDaGVja1BhdGgpLFxuICAgICAgcmVsYXRpdmVFbnRyeXBvaW50UGF0aDogdGhpcy5uZXh0anNCdWlsZC5yZWxhdGl2ZVBhdGhUb0VudHJ5cG9pbnQsXG4gICAgICByZWxhdGl2ZVByb2plY3REaXI6IHRoaXMubmV4dGpzQnVpbGQucmVsYXRpdmVQcm9qZWN0RGlyLFxuICAgICAgb3ZlcnJpZGVzOiB7XG4gICAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5uZXh0anNDb250YWluZXJzLFxuICAgICAgICBlY3NDbHVzdGVyUHJvcHM6IHtcbiAgICAgICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8ubmV4dGpzQ29udGFpbmVycz8uZWNzQ2x1c3RlclByb3BzLFxuICAgICAgICAgIC8vIENvbmRpdGlvbmFsIGZvciB0aGUgc2FtZSByZWFzb24gYXMgdGhlIEZ1bmN0aW9ucycgYHZwY2A6IGFzc2lnbmVkXG4gICAgICAgICAgLy8gdW5jb25kaXRpb25hbGx5LCBhbiB1bnNldCBgdnBjYCBwcm9wIHdvdWxkIGVyYXNlIHRoZSBvdmVycmlkZSdzLlxuICAgICAgICAgIC4uLih0aGlzLmJhc2VQcm9wcy52cGMgPyB7IHZwYzogdGhpcy5iYXNlUHJvcHMudnBjIH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc0dsb2JhbENvbnRhaW5lcnM/Lm5leHRqc0NvbnRhaW5lcnNQcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmV4dGpzRGlzdHJpYnV0aW9uKCkge1xuICAgIHJldHVybiBuZXcgTmV4dGpzRGlzdHJpYnV0aW9uKHRoaXMsIFwiTmV4dGpzRGlzdHJpYnV0aW9uXCIsIHtcbiAgICAgIGFzc2V0c0J1Y2tldDogdGhpcy5uZXh0anNTdGF0aWNBc3NldHMuYnVja2V0LFxuICAgICAgYXNzZXRQcmVmaXg6IHRoaXMubmV4dGpzQnVpbGQubmV4dENvbmZpZ0Fzc2V0UHJlZml4UGF0aCxcbiAgICAgIGJhc2VQYXRoOiB0aGlzLnJlc29sdmVkQmFzZVBhdGgsXG4gICAgICBjZXJ0aWZpY2F0ZTogdGhpcy5uZXh0anNDb250YWluZXJzLmFsYkZhcmdhdGVTZXJ2aWNlLmNlcnRpZmljYXRlLFxuICAgICAgZGlzdHJpYnV0aW9uOiB0aGlzLnByb3BzLmRpc3RyaWJ1dGlvbixcbiAgICAgIGxvYWRCYWxhbmNlcjogdGhpcy5uZXh0anNDb250YWluZXJzLmFsYkZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlcixcbiAgICAgIG5leHRqc1R5cGU6IHRoaXMubmV4dGpzVHlwZSxcbiAgICAgIG92ZXJyaWRlczogdGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc0Rpc3RyaWJ1dGlvbixcbiAgICAgIHB1YmxpY0RpckVudHJpZXM6IHRoaXMubmV4dGpzQnVpbGQucHVibGljRGlyRW50cmllcyxcbiAgICAgIHNlcnZpY2VXb3JrZXJBbGxvd2VkOiB0aGlzLnNlcnZpY2VXb3JrZXJBbGxvd2VkLFxuICAgICAgdmlld2VyUmVxdWVzdEZ1bmN0aW9uQ29kZTogdGhpcy5wcm9wcy52aWV3ZXJSZXF1ZXN0RnVuY3Rpb25Db2RlLFxuICAgICAgdmlld2VyUmVxdWVzdEtleVZhbHVlU3RvcmU6IHRoaXMucHJvcHMudmlld2VyUmVxdWVzdEtleVZhbHVlU3RvcmUsXG4gICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8ubmV4dGpzR2xvYmFsQ29udGFpbmVycz8ubmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -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.12" };
20
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsGlobalFunctions", version: "0.7.14" };
21
21
  nextjsFunctions;
22
22
  nextjsDistribution;
23
23
  nextjsPostDeploy;
@@ -92,6 +92,7 @@ class NextjsGlobalFunctions extends nextjs_base_construct_1.NextjsBaseConstruct
92
92
  nextjsType: this.nextjsType,
93
93
  overrides: this.props.overrides?.nextjsDistribution,
94
94
  publicDirEntries: this.nextjsBuild.publicDirEntries,
95
+ serviceWorkerAllowed: this.serviceWorkerAllowed,
95
96
  // The default group backs the default behavior, so only the rest need
96
97
  // behaviors of their own.
97
98
  functionGroups: this.nextjsFunctions.functionGroups
@@ -101,9 +102,11 @@ class NextjsGlobalFunctions extends nextjs_base_construct_1.NextjsBaseConstruct
101
102
  functionUrl: group.functionUrl,
102
103
  })),
103
104
  functionGroupBehaviors: this.nextjsBuild.functionGroupBehaviors,
105
+ viewerRequestFunctionCode: this.props.viewerRequestFunctionCode,
106
+ viewerRequestKeyValueStore: this.props.viewerRequestKeyValueStore,
104
107
  ...this.props.overrides?.nextjsGlobalFunctions?.nextjsDistributionProps,
105
108
  });
106
109
  }
107
110
  }
108
111
  exports.NextjsGlobalFunctions = NextjsGlobalFunctions;
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWdsb2JhbC1mdW5jdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1nbG9iYWwtZnVuY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2Q0FBb0M7QUFFcEMsaURBQThEO0FBRTlELGlEQUFzRDtBQUV0RCxnRUFBb0U7QUFDcEUsNENBQTBDO0FBQzFDLG1FQUtpQztBQU9qQyxnRUFHZ0M7QUFFaEMsa0RBQThDO0FBMEM5Qzs7Ozs7R0FLRztBQUNILE1BQWEscUJBQXNCLFNBQVEsMkNBQW1COztJQUM1RCxlQUFlLENBQWtCO0lBQ2pDLGtCQUFrQixDQUFxQjtJQUN2QyxnQkFBZ0IsQ0FBbUI7SUFDbkM7Ozs7T0FJRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBQSxvQkFBUSxFQUNiLFdBQVcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFDNUQsSUFBSSxDQUFDLGdCQUFnQixDQUN0QixDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBNkI7SUFFMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsc0JBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzFELDhFQUE4RTtRQUM5RSw0RUFBNEU7UUFDNUUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUN2RCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxD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U0FDeEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFwR0gsc0RBcUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IERpc3RyaWJ1dGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udFwiO1xuaW1wb3J0IHsgUG9saWN5LCBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgRnVuY3Rpb24gYXMgTGFtYmRhRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgU3RyaW5nUGFyYW1ldGVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zc21cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0ZVTkNUSU9OX0dST1VQIH0gZnJvbSBcIi4uL2FkYXB0ZXIvZnVuY3Rpb24tZ3JvdXBzXCI7XG5pbXBvcnQgeyBOZXh0anNUeXBlIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZU92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdCxcbiAgTmV4dGpzQmFzZVByb3BzLFxufSBmcm9tIFwiLi9uZXh0anMtYmFzZS1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IE9wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wc1wiO1xuaW1wb3J0IHtcbiAgTmV4dGpzRnVuY3Rpb25Hcm91cCxcbiAgTmV4dGpzRnVuY3Rpb25zLFxuICBOZXh0anNGdW5jdGlvbnNPdmVycmlkZXMsXG59IGZyb20gXCIuLi9uZXh0anMtY29tcHV0ZS9uZXh0anMtZnVuY3Rpb25zXCI7XG5pbXBvcnQge1xuICBOZXh0anNEaXN0cmlidXRpb24sXG4gIE5leHRqc0Rpc3RyaWJ1dGlvbk92ZXJyaWRlcyxcbn0gZnJvbSBcIi4uL25leHRqcy1kaXN0cmlidXRpb25cIjtcbmltcG9ydCB7IE5leHRqc1Bvc3REZXBsb3kgfSBmcm9tIFwiLi4vbmV4dGpzLXBvc3QtZGVwbG95XCI7XG5pbXBvcnQgeyBqb2luUGF0aCB9IGZyb20gXCIuLi91dGlscy9iYXNlLXBhdGhcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNHbG9iYWxGdW5jdGlvbnNDb25zdHJ1Y3RPdmVycmlkZXMgZXh0ZW5kcyBOZXh0anNCYXNlQ29uc3RydWN0T3ZlcnJpZGVzIHtcbiAgcmVhZG9ubHkgbmV4dGpzRGlzdHJpYnV0aW9uUHJvcHM/OiBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzO1xufVxuXG4vKipcbiAqIE92ZXJyaWRlcyBmb3IgYE5leHRqc0dsb2JhbEZ1bmN0aW9uc2AuIE92ZXJyaWRlcyBhcmUgbG93ZXIgbGV2ZWwgdGhhblxuICogcHJvcHMgYW5kIGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gQ0RLIENvbnN0cnVjdHMgZ2l2aW5nIHlvdSBtb3JlIGNvbnRyb2wuIEl0J3NcbiAqIHJlY29tbWVuZGVkIHRvIHVzZSBjYXV0aW9uIGFuZCByZXZpZXcgc291cmNlIGNvZGUgc28geW91IGtub3cgaG93IHRoZXkncmUgdXNlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXh0anNHbG9iYWxGdW5jdGlvbnNPdmVycmlkZXMgZXh0ZW5kcyBOZXh0anNCYXNlT3ZlcnJpZGVzIHtcbiAgcmVhZG9ubHkgbmV4dGpzR2xvYmFsRnVuY3Rpb25zPzogTmV4dGpzR2xvYmFsRnVuY3Rpb25zQ29uc3RydWN0T3ZlcnJpZGVzO1xuICByZWFkb25seSBuZXh0anNGdW5jdGlvbnM/OiBOZXh0anNGdW5jdGlvbnNPdmVycmlkZXM7XG4gIHJlYWRvbmx5IG5leHRqc0Rpc3RyaWJ1dGlvbj86IE5leHRqc0Rpc3RyaWJ1dGlvbk92ZXJyaWRlcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNHbG9iYWxGdW5jdGlvbnNQcm9wcyBleHRlbmRzIE5leHRqc0Jhc2VQcm9wcyB7XG4gIC8qKlxuICAgKiBCcmluZyB5b3VyIG93biBkaXN0cmlidXRpb24uIENhbiBiZSB1c2VkIHdpdGggYGJhc2VQYXRoYCB0byBob3N0IG11bHRpcGxlXG4gICAqIGFwcHMgb24gdGhlIHNhbWUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24uXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb24/OiBEaXN0cmlidXRpb247XG4gIC8qKlxuICAgKiBQYWNrYWdlIHNldHMgb2Ygcm91dGVzIGludG8gc2VwYXJhdGUgTGFtYmRhIGZ1bmN0aW9ucywgZWFjaCBmcm9udGVkIGJ5IGl0c1xuICAgKiBvd24gQ2xvdWRGcm9udCBiZWhhdmlvcnMuXG4gICAqXG4gICAqIFJlYWNoIGZvciB0aGlzIHdoZW4gYSBzaW5nbGUgZnVuY3Rpb24gZXhjZWVkcyBMYW1iZGEncyAyNTAgTUIgdW56aXBwZWRcbiAgICogbGltaXQg4oCUIGNkay1uZXh0anMgdGhyb3dzIGF0IHN5bnRoIHdpdGggdGhlIG1lYXN1cmVkIHNpemUgd2hlbiBpdCBkb2VzLiBJdCBpc1xuICAgKiBub3QgYSBwZXJmb3JtYW5jZSBvciBpc29sYXRpb24gZmVhdHVyZTogZXZlcnkgZ3JvdXAgc2hpcHMgdGhlIHNhbWUgTmV4dC5qc1xuICAgKiBydW50aW1lLCBzbyBzcGxpdHRpbmcgb25seSBtb3ZlcyByb3V0ZS1sb2NhbCBjb2RlLlxuICAgKlxuICAgKiBAc2VlIE5leHRqc0Z1bmN0aW9uR3JvdXAgZm9yIHRoZSBwYXR0ZXJuIGdyYW1tYXIgYW5kIGl0cyBsaW1pdHMuXG4gICAqIEBkZWZhdWx0IC0gb25lIGZ1bmN0aW9uIHNlcnZlcyBldmVyeSByb3V0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25Hcm91cHM/OiBOZXh0anNGdW5jdGlvbkdyb3VwW107XG4gIC8qKlxuICAgKiBPdmVycmlkZSBwcm9wcyBvZiBhbnkgY29uc3RydWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgb3ZlcnJpZGVzPzogTmV4dGpzR2xvYmFsRnVuY3Rpb25zT3ZlcnJpZGVzO1xufVxuXG4vKipcbiAqIERlcGxveSBOZXh0LmpzIGdsb2JhbGx5IGRpc3RyaWJ1dGVkIHdpdGggZnVuY3Rpb25zLiBVc2VzIFtDbG91ZEZyb250XG4gKiBEaXN0cmlidXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZEZyb250L2xhdGVzdC9EZXZlbG9wZXJHdWlkZS9kaXN0cmlidXRpb24td29ya2luZy13aXRoLmh0bWwpXG4gKiBhcyBDb250ZW50IERlbGl2ZXJ5IE5ldHdvcmsgKENETikgZm9yIGdsb2JhbCBkaXN0cmlidXRpb24gYW5kIFtBV1MgTGFtYmRhIEZ1bmN0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvd2VsY29tZS5odG1sKVxuICogZm9yIGZ1bmN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5leHRqc0dsb2JhbEZ1bmN0aW9ucyBleHRlbmRzIE5leHRqc0Jhc2VDb25zdHJ1Y3Qge1xuICBuZXh0anNGdW5jdGlvbnM6IE5leHRqc0Z1bmN0aW9ucztcbiAgbmV4dGpzRGlzdHJpYnV0aW9uOiBOZXh0anNEaXN0cmlidXRpb247XG4gIG5leHRqc1Bvc3REZXBsb3k6IE5leHRqc1Bvc3REZXBsb3k7XG4gIC8qKlxuICAgKiBQdWJsaWMgVVJMIG9mIHRoZSBhcHAsIGluY2x1ZGluZyBgYmFzZVBhdGhgIOKAlCB0aGUgYXBwIG9ubHkgYW5zd2VycyB1bmRlclxuICAgKiB0aGF0IHByZWZpeCwgYW5kIGl0J3MgZGVyaXZlZCBmcm9tIHRoZSBhcHAncyBvd24gYGJhc2VQYXRoYCB3aGVuIHRoZSBwcm9wIGlzXG4gICAqIGxlZnQgdW5zZXQsIHNvIGl0J3MgdGhlcmUgd2hldGhlciBvciBub3QgeW91IGFza2VkIGZvciBpdC5cbiAgICovXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gam9pblBhdGgoXG4gICAgICBgaHR0cHM6Ly8ke3RoaXMubmV4dGpzRGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbi5kb21haW5OYW1lfWAsXG4gICAgICB0aGlzLnJlc29sdmVkQmFzZVBhdGgsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvcHM6IE5leHRqc0dsb2JhbEZ1bmN0aW9uc1Byb3BzO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOZXh0anNHbG9iYWxGdW5jdGlvbnNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMsIE5leHRqc1R5cGUuR0xPQkFMX0ZVTkNUSU9OUyk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5uZXh0anNGdW5jdGlvbnMgPSB0aGlzLmNyZWF0ZU5leHRqc0Z1bmN0aW9ucygpO1xuICAgIHRoaXMubmV4dGpzRGlzdHJpYnV0aW9uID0gdGhpcy5jcmVhdGVOZXh0anNEaXN0cmlidXRpb24oKTtcbiAgICAvLyBFdmVyeSBncm91cCwgbm90IGp1c3QgdGhlIGRlZmF1bHQgb25lOiBgcmV2YWxpZGF0ZVRhZ2AvYHJldmFsaWRhdGVQYXRoYCBjYW5cbiAgICAvLyBiZSBjYWxsZWQgZnJvbSBhbnkgcm91dGUgaGFuZGxlciwgc28gYW55IGZ1bmN0aW9uIG1heSBuZWVkIHRvIGludmFsaWRhdGUuXG4gICAgY29uc3QgZnVuY3Rpb25zID0gdGhpcy5uZXh0anNGdW5jdGlvbnMuZnVuY3Rpb25Hcm91cHMubWFwKFxuICAgICAgKGdyb3VwKSA9PiBncm91cC5mdW5jdGlvbixcbiAgICApO1xuICAgIHRoaXMud2lyZUNsb3VkRnJvbnRJbnZhbGlkYXRpb24oZnVuY3Rpb25zKTtcbiAgICB0aGlzLm5leHRqc1Bvc3REZXBsb3kgPSB0aGlzLmNyZWF0ZU5leHRqc1Bvc3REZXBsb3koXG4gICAgICB0aGlzLm5leHRqc0Rpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb24sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMZXRzIGBmdW5jdGlvbnNgIGludmFsaWRhdGUgdGhlIGRpc3RyaWJ1dGlvbiwgc28gb24tZGVtYW5kIHJldmFsaWRhdGlvblxuICAgKiAocmV2YWxpZGF0ZVRhZy9yZXZhbGlkYXRlUGF0aCkgY2FuIGV2aWN0IHN0YWxlIHJlc3BvbnNlcyBmcm9tIHRoZSBDRE4gZWRnZVxuICAgKiBjYWNoZSwgbm90IGp1c3QgdGhlIG9yaWdpbidzIFMzL0R5bmFtb0RCIGNhY2hlLlxuICAgKlxuICAgKiBUaGUgZGlzdHJpYnV0aW9uJ3Mgb3JpZ2luIGlzIHRoZSBmdW5jdGlvbnMnIFVSTCwgc28gYSBmdW5jdGlvbiBuYW1pbmcgdGhlXG4gICAqIGRpc3RyaWJ1dGlvbiBiYWNrIOKAlCBpbiBpdHMgZW52aXJvbm1lbnQsIG9yIGluIGl0cyByb2xlJ3MgZGVmYXVsdCBwb2xpY3ksXG4gICAqIHdoaWNoIGEgZnVuY3Rpb24gZGVwZW5kcyBvbiDigJQgd291bGQgYmUgYSBjaXJjdWxhciBDbG91ZEZvcm1hdGlvblxuICAgKiBkZXBlbmRlbmN5LiBTbyB0aGUgSUQgaXMgcHVibGlzaGVkIHRvIGFuIFNTTSBQYXJhbWV0ZXIgd2hvc2UgKm5hbWUqIGlzXG4gICAqIHN0YXRpYywgYW5kIHRoZSBncmFudHMgZ28gaW4gYSBzZXBhcmF0ZSBwb2xpY3kgdGhhdCBkZXBlbmRzIG9uIHRoZVxuICAgKiBkaXN0cmlidXRpb24gd2hpbGUgbm8gZnVuY3Rpb24gZGVwZW5kcyBvbiBpdC5cbiAgICovXG4gIHByaXZhdGUgd2lyZUNsb3VkRnJvbnRJbnZhbGlkYXRpb24oZnVuY3Rpb25zOiBMYW1iZGFGdW5jdGlvbltdKSB7XG4gICAgY29uc3QgeyBkaXN0cmlidXRpb24gfSA9IHRoaXMubmV4dGpzRGlzdHJpYnV0aW9uO1xuICAgIGNvbnN0IHBhcmFtZXRlck5hbWUgPSBgY2RrLW5leHRqcy1kaXN0cmlidXRpb24taWQtJHt0aGlzLm5vZGUuYWRkcn1gO1xuICAgIG5ldyBTdHJpbmdQYXJhbWV0ZXIodGhpcywgXCJEaXN0cmlidXRpb25JZFBhcmFtZXRlclwiLCB7XG4gICAgICBwYXJhbWV0ZXJOYW1lLFxuICAgICAgc3RyaW5nVmFsdWU6IGRpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb25JZCxcbiAgICB9KTtcbiAgICBuZXcgUG9saWN5KHRoaXMsIFwiSW52YWxpZGF0aW9uUG9saWN5XCIsIHtcbiAgICAgIC8vIEEgYG5ldyBGdW5jdGlvbmAgYWx3YXlzIGhhcyBhIHJvbGU7IG9ubHkgaW1wb3J0ZWQgb25lcyBsYWNrIGl0LlxuICAgICAgcm9sZXM6IGZ1bmN0aW9ucy5tYXAoKGZuKSA9PiBmbi5yb2xlISksXG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcInNzbTpHZXRQYXJhbWV0ZXJcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICBTdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgICAgICAgICBzZXJ2aWNlOiBcInNzbVwiLFxuICAgICAgICAgICAgICByZXNvdXJjZTogXCJwYXJhbWV0ZXJcIixcbiAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiBwYXJhbWV0ZXJOYW1lLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcImNsb3VkZnJvbnQ6Q3JlYXRlSW52YWxpZGF0aW9uXCJdLFxuICAgICAgICAgIHJlc291cmNlczogW2Rpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb25Bcm5dLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgZnVuY3Rpb25zLmZvckVhY2goKGZuKSA9PlxuICAgICAgZm4uYWRkRW52aXJvbm1lbnQoXCJDREtfTkVYVEpTX0RJU1RSSUJVVElPTl9JRF9QQVJBTV9OQU1FXCIsIHBhcmFtZXRlck5hbWUpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5leHRqc0Rpc3RyaWJ1dGlvbigpIHtcbiAgICByZXR1cm4gbmV3IE5leHRqc0Rpc3RyaWJ1dGlvbih0aGlzLCBcIk5leHRqc0Rpc3RyaWJ1dGlvblwiLCB7XG4gICAgICBhc3NldHNCdWNrZXQ6IHRoaXMubmV4dGpzU3RhdGljQXNzZXRzLmJ1Y2tldCxcbiAgICAgIGFzc2V0UHJlZml4OiB0aGlzLm5leHRqc0J1aWxkLm5leHRDb25maWdBc3NldFByZWZpeFBhdGgsXG4gICAgICBiYXNlUGF0aDogdGhpcy5yZXNvbHZlZEJhc2VQYXRoLFxuICAgICAgZGlzdHJpYnV0aW9uOiB0aGlzLnByb3BzLmRpc3RyaWJ1dGlvbixcbiAgICAgIGZ1bmN0aW9uVXJsOiB0aGlzLm5leHRqc0Z1bmN0aW9ucy5mdW5jdGlvblVybCxcbiAgICAgIG5leHRqc1R5cGU6IHRoaXMubmV4dGpzVHlwZSxcbiAgICAgIG92ZXJyaWRlczogdGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc0Rpc3RyaWJ1dGlvbixcbiAgICAgIHB1YmxpY0RpckVudHJpZXM6IHRoaXMubmV4dGpzQnVpbGQucHVibGljRGlyRW50cmllcyxcbiAgICAgIC8vIFRoZSBkZWZhdWx0IGdyb3VwIGJhY2tzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLCBzbyBvbmx5IHRoZSByZXN0IG5lZWRcbiAgICAgIC8vIGJlaGF2aW9ycyBvZiB0aGVpciBvd24uXG4gICAgICBmdW5jdGlvbkdyb3VwczogdGhpcy5uZXh0anNGdW5jdGlvbnMuZnVuY3Rpb25Hcm91cHNcbiAgICAgICAgLmZpbHRlcigoZ3JvdXApID0+IGdyb3VwLm5hbWUgIT09IERFRkFVTFRfRlVOQ1RJT05fR1JPVVApXG4gICAgICAgIC5tYXAoKGdyb3VwKSA9PiAoe1xuICAgICAgICAgIG5hbWU6IGdyb3VwLm5hbWUsXG4gICAgICAgICAgZnVuY3Rpb25Vcmw6IGdyb3VwLmZ1bmN0aW9uVXJsISxcbiAgICAgICAgfSkpLFxuICAgICAgZnVuY3Rpb25Hcm91cEJlaGF2aW9yczogdGhpcy5uZXh0anNCdWlsZC5mdW5jdGlvbkdyb3VwQmVoYXZpb3JzLFxuICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc0dsb2JhbEZ1bmN0aW9ucz8ubmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWdsb2JhbC1mdW5jdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1nbG9iYWwtZnVuY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2Q0FBb0M7QUFNcEMsaURBQThEO0FBRTlELGlEQUFzRDtBQUV0RCxnRUFBb0U7QUFDcEUsNENBQTBDO0FBQzFDLG1FQUtpQztBQU9qQyxnRUFHZ0M7QUFFaEMsa0RBQThDO0FBeUQ5Qzs7Ozs7R0FLRztBQUNILE1BQWEscUJBQXNCLFNBQVEsMkNBQW1COztJQUM1RCxlQUFlLENBQWtCO0lBQ2pDLGtCQUFrQixDQUFxQjtJQUN2QyxnQkFBZ0IsQ0FBbUI7SUFDbkM7Ozs7T0FJRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBQSxvQkFBUSxFQUNiLFdBQVcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFDNUQsSUFBSSxDQUFDLGdCQUFnQixDQUN0QixDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBNkI7SUFFMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsc0JBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzFELDhFQUE4RTtRQUM5RSw0RUFBNEU7UUFDNUUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUN2RCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxD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QUMsS0FBSyxDQUFDLHlCQUF5QjtZQUMvRCwwQkFBMEIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLDBCQUEwQjtZQUNqRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLHFCQUFxQixFQUFFLHVCQUF1QjtTQUN4RSxDQUFDLENBQUM7SUFDTCxDQUFDOztBQXZHSCxzREF3R0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgRGlzdHJpYnV0aW9uLFxuICBGdW5jdGlvbkNvZGUsXG4gIElLZXlWYWx1ZVN0b3JlLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcbmltcG9ydCB7IFBvbGljeSwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IEZ1bmN0aW9uIGFzIExhbWJkYUZ1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IFN0cmluZ1BhcmFtZXRlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3NtXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgREVGQVVMVF9GVU5DVElPTl9HUk9VUCB9IGZyb20gXCIuLi9hZGFwdGVyL2Z1bmN0aW9uLWdyb3Vwc1wiO1xuaW1wb3J0IHsgTmV4dGpzVHlwZSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIE5leHRqc0Jhc2VDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIE5leHRqc0Jhc2VPdmVycmlkZXMsXG4gIE5leHRqc0Jhc2VDb25zdHJ1Y3QsXG4gIE5leHRqc0Jhc2VQcm9wcyxcbn0gZnJvbSBcIi4vbmV4dGpzLWJhc2UtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzIH0gZnJvbSBcIi4uL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHNcIjtcbmltcG9ydCB7XG4gIE5leHRqc0Z1bmN0aW9uR3JvdXAsXG4gIE5leHRqc0Z1bmN0aW9ucyxcbiAgTmV4dGpzRnVuY3Rpb25zT3ZlcnJpZGVzLFxufSBmcm9tIFwiLi4vbmV4dGpzLWNvbXB1dGUvbmV4dGpzLWZ1bmN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgTmV4dGpzRGlzdHJpYnV0aW9uLFxuICBOZXh0anNEaXN0cmlidXRpb25PdmVycmlkZXMsXG59IGZyb20gXCIuLi9uZXh0anMtZGlzdHJpYnV0aW9uXCI7XG5pbXBvcnQgeyBOZXh0anNQb3N0RGVwbG95IH0gZnJvbSBcIi4uL25leHRqcy1wb3N0LWRlcGxveVwiO1xuaW1wb3J0IHsgam9pblBhdGggfSBmcm9tIFwiLi4vdXRpbHMvYmFzZS1wYXRoXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzR2xvYmFsRnVuY3Rpb25zQ29uc3RydWN0T3ZlcnJpZGVzIGV4dGVuZHMgTmV4dGpzQmFzZUNvbnN0cnVjdE92ZXJyaWRlcyB7XG4gIHJlYWRvbmx5IG5leHRqc0Rpc3RyaWJ1dGlvblByb3BzPzogT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcztcbn1cblxuLyoqXG4gKiBPdmVycmlkZXMgZm9yIGBOZXh0anNHbG9iYWxGdW5jdGlvbnNgLiBPdmVycmlkZXMgYXJlIGxvd2VyIGxldmVsIHRoYW5cbiAqIHByb3BzIGFuZCBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIENESyBDb25zdHJ1Y3RzIGdpdmluZyB5b3UgbW9yZSBjb250cm9sLiBJdCdzXG4gKiByZWNvbW1lbmRlZCB0byB1c2UgY2F1dGlvbiBhbmQgcmV2aWV3IHNvdXJjZSBjb2RlIHNvIHlvdSBrbm93IGhvdyB0aGV5J3JlIHVzZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzR2xvYmFsRnVuY3Rpb25zT3ZlcnJpZGVzIGV4dGVuZHMgTmV4dGpzQmFzZU92ZXJyaWRlcyB7XG4gIHJlYWRvbmx5IG5leHRqc0dsb2JhbEZ1bmN0aW9ucz86IE5leHRqc0dsb2JhbEZ1bmN0aW9uc0NvbnN0cnVjdE92ZXJyaWRlcztcbiAgcmVhZG9ubHkgbmV4dGpzRnVuY3Rpb25zPzogTmV4dGpzRnVuY3Rpb25zT3ZlcnJpZGVzO1xuICByZWFkb25seSBuZXh0anNEaXN0cmlidXRpb24/OiBOZXh0anNEaXN0cmlidXRpb25PdmVycmlkZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzR2xvYmFsRnVuY3Rpb25zUHJvcHMgZXh0ZW5kcyBOZXh0anNCYXNlUHJvcHMge1xuICAvKipcbiAgICogQnJpbmcgeW91ciBvd24gZGlzdHJpYnV0aW9uLiBDYW4gYmUgdXNlZCB3aXRoIGBiYXNlUGF0aGAgdG8gaG9zdCBtdWx0aXBsZVxuICAgKiBhcHBzIG9uIHRoZSBzYW1lIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uPzogRGlzdHJpYnV0aW9uO1xuICAvKipcbiAgICogUGFja2FnZSBzZXRzIG9mIHJvdXRlcyBpbnRvIHNlcGFyYXRlIExhbWJkYSBmdW5jdGlvbnMsIGVhY2ggZnJvbnRlZCBieSBpdHNcbiAgICogb3duIENsb3VkRnJvbnQgYmVoYXZpb3JzLlxuICAgKlxuICAgKiBSZWFjaCBmb3IgdGhpcyB3aGVuIGEgc2luZ2xlIGZ1bmN0aW9uIGV4Y2VlZHMgTGFtYmRhJ3MgMjUwIE1CIHVuemlwcGVkXG4gICAqIGxpbWl0IOKAlCBjZGstbmV4dGpzIHRocm93cyBhdCBzeW50aCB3aXRoIHRoZSBtZWFzdXJlZCBzaXplIHdoZW4gaXQgZG9lcy4gSXQgaXNcbiAgICogbm90IGEgcGVyZm9ybWFuY2Ugb3IgaXNvbGF0aW9uIGZlYXR1cmU6IGV2ZXJ5IGdyb3VwIHNoaXBzIHRoZSBzYW1lIE5leHQuanNcbiAgICogcnVudGltZSwgc28gc3BsaXR0aW5nIG9ubHkgbW92ZXMgcm91dGUtbG9jYWwgY29kZS5cbiAgICpcbiAgICogQHNlZSBOZXh0anNGdW5jdGlvbkdyb3VwIGZvciB0aGUgcGF0dGVybiBncmFtbWFyIGFuZCBpdHMgbGltaXRzLlxuICAgKiBAZGVmYXVsdCAtIG9uZSBmdW5jdGlvbiBzZXJ2ZXMgZXZlcnkgcm91dGVcbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uR3JvdXBzPzogTmV4dGpzRnVuY3Rpb25Hcm91cFtdO1xuICAvKipcbiAgICogT3ZlcnJpZGUgcHJvcHMgb2YgYW55IGNvbnN0cnVjdC5cbiAgICovXG4gIHJlYWRvbmx5IG92ZXJyaWRlcz86IE5leHRqc0dsb2JhbEZ1bmN0aW9uc092ZXJyaWRlcztcbiAgLyoqXG4gICAqIENsb3VkRnJvbnQgRnVuY3Rpb24gY29kZSBydW4gZmlyc3Qgb24gZXZlcnkgdmlld2VyIHJlcXVlc3QsIHN0YXRpYyBhc3NldHNcbiAgICogaW5jbHVkZWQg4oCUIEhUVFAgQmFzaWMgYXV0aCBvbiBhIHByZS1sYXVuY2ggc2l0ZSwgc2F5LiBJdCBtdXN0IGRlZmluZVxuICAgKiBgdmlld2VyUmVxdWVzdChldmVudClgLCBhcyBhIGZ1bmN0aW9uIG9yIGEgYHZhcmAvYGxldGAvYGNvbnN0YC5cbiAgICogQHNlZSBOZXh0anNEaXN0cmlidXRpb25Qcm9wcy52aWV3ZXJSZXF1ZXN0RnVuY3Rpb25Db2RlXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdmlld2VyUmVxdWVzdEZ1bmN0aW9uQ29kZT86IEZ1bmN0aW9uQ29kZTtcbiAgLyoqXG4gICAqIEEgQ2xvdWRGcm9udCBLZXlWYWx1ZVN0b3JlIGB2aWV3ZXJSZXF1ZXN0RnVuY3Rpb25Db2RlYCBjYW4gcmVhZCB3aXRoXG4gICAqIGBjZi5rdnMoKWAsIHNvIGNyZWRlbnRpYWxzIHN0YXkgb3V0IG9mIHRoZSB0ZW1wbGF0ZS5cbiAgICogQHNlZSBOZXh0anNEaXN0cmlidXRpb25Qcm9wcy52aWV3ZXJSZXF1ZXN0S2V5VmFsdWVTdG9yZVxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHZpZXdlclJlcXVlc3RLZXlWYWx1ZVN0b3JlPzogSUtleVZhbHVlU3RvcmU7XG59XG5cbi8qKlxuICogRGVwbG95IE5leHQuanMgZ2xvYmFsbHkgZGlzdHJpYnV0ZWQgd2l0aCBmdW5jdGlvbnMuIFVzZXMgW0Nsb3VkRnJvbnRcbiAqIERpc3RyaWJ1dGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL2Rpc3RyaWJ1dGlvbi13b3JraW5nLXdpdGguaHRtbClcbiAqIGFzIENvbnRlbnQgRGVsaXZlcnkgTmV0d29yayAoQ0ROKSBmb3IgZ2xvYmFsIGRpc3RyaWJ1dGlvbiBhbmQgW0FXUyBMYW1iZGEgRnVuY3Rpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9kZy93ZWxjb21lLmh0bWwpXG4gKiBmb3IgZnVuY3Rpb25zLlxuICovXG5leHBvcnQgY2xhc3MgTmV4dGpzR2xvYmFsRnVuY3Rpb25zIGV4dGVuZHMgTmV4dGpzQmFzZUNvbnN0cnVjdCB7XG4gIG5leHRqc0Z1bmN0aW9uczogTmV4dGpzRnVuY3Rpb25zO1xuICBuZXh0anNEaXN0cmlidXRpb246IE5leHRqc0Rpc3RyaWJ1dGlvbjtcbiAgbmV4dGpzUG9zdERlcGxveTogTmV4dGpzUG9zdERlcGxveTtcbiAgLyoqXG4gICAqIFB1YmxpYyBVUkwgb2YgdGhlIGFwcCwgaW5jbHVkaW5nIGBiYXNlUGF0aGAg4oCUIHRoZSBhcHAgb25seSBhbnN3ZXJzIHVuZGVyXG4gICAqIHRoYXQgcHJlZml4LCBhbmQgaXQncyBkZXJpdmVkIGZyb20gdGhlIGFwcCdzIG93biBgYmFzZVBhdGhgIHdoZW4gdGhlIHByb3AgaXNcbiAgICogbGVmdCB1bnNldCwgc28gaXQncyB0aGVyZSB3aGV0aGVyIG9yIG5vdCB5b3UgYXNrZWQgZm9yIGl0LlxuICAgKi9cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBqb2luUGF0aChcbiAgICAgIGBodHRwczovLyR7dGhpcy5uZXh0anNEaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uLmRvbWFpbk5hbWV9YCxcbiAgICAgIHRoaXMucmVzb2x2ZWRCYXNlUGF0aCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9wczogTmV4dGpzR2xvYmFsRnVuY3Rpb25zUHJvcHM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5leHRqc0dsb2JhbEZ1bmN0aW9uc1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcywgTmV4dGpzVHlwZS5HTE9CQUxfRlVOQ1RJT05TKTtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICB0aGlzLm5leHRqc0Z1bmN0aW9ucyA9IHRoaXMuY3JlYXRlTmV4dGpzRnVuY3Rpb25zKCk7XG4gICAgdGhpcy5uZXh0anNEaXN0cmlidXRpb24gPSB0aGlzLmNyZWF0ZU5leHRqc0Rpc3RyaWJ1dGlvbigpO1xuICAgIC8vIEV2ZXJ5IGdyb3VwLCBub3QganVzdCB0aGUgZGVmYXVsdCBvbmU6IGByZXZhbGlkYXRlVGFnYC9gcmV2YWxpZGF0ZVBhdGhgIGNhblxuICAgIC8vIGJlIGNhbGxlZCBmcm9tIGFueSByb3V0ZSBoYW5kbGVyLCBzbyBhbnkgZnVuY3Rpb24gbWF5IG5lZWQgdG8gaW52YWxpZGF0ZS5cbiAgICBjb25zdCBmdW5jdGlvbnMgPSB0aGlzLm5leHRqc0Z1bmN0aW9ucy5mdW5jdGlvbkdyb3Vwcy5tYXAoXG4gICAgICAoZ3JvdXApID0+IGdyb3VwLmZ1bmN0aW9uLFxuICAgICk7XG4gICAgdGhpcy53aXJlQ2xvdWRGcm9udEludmFsaWRhdGlvbihmdW5jdGlvbnMpO1xuICAgIHRoaXMubmV4dGpzUG9zdERlcGxveSA9IHRoaXMuY3JlYXRlTmV4dGpzUG9zdERlcGxveShcbiAgICAgIHRoaXMubmV4dGpzRGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIExldHMgYGZ1bmN0aW9uc2AgaW52YWxpZGF0ZSB0aGUgZGlzdHJpYnV0aW9uLCBzbyBvbi1kZW1hbmQgcmV2YWxpZGF0aW9uXG4gICAqIChyZXZhbGlkYXRlVGFnL3JldmFsaWRhdGVQYXRoKSBjYW4gZXZpY3Qgc3RhbGUgcmVzcG9uc2VzIGZyb20gdGhlIENETiBlZGdlXG4gICAqIGNhY2hlLCBub3QganVzdCB0aGUgb3JpZ2luJ3MgUzMvRHluYW1vREIgY2FjaGUuXG4gICAqXG4gICAqIFRoZSBkaXN0cmlidXRpb24ncyBvcmlnaW4gaXMgdGhlIGZ1bmN0aW9ucycgVVJMLCBzbyBhIGZ1bmN0aW9uIG5hbWluZyB0aGVcbiAgICogZGlzdHJpYnV0aW9uIGJhY2sg4oCUIGluIGl0cyBlbnZpcm9ubWVudCwgb3IgaW4gaXRzIHJvbGUncyBkZWZhdWx0IHBvbGljeSxcbiAgICogd2hpY2ggYSBmdW5jdGlvbiBkZXBlbmRzIG9uIOKAlCB3b3VsZCBiZSBhIGNpcmN1bGFyIENsb3VkRm9ybWF0aW9uXG4gICAqIGRlcGVuZGVuY3kuIFNvIHRoZSBJRCBpcyBwdWJsaXNoZWQgdG8gYW4gU1NNIFBhcmFtZXRlciB3aG9zZSAqbmFtZSogaXNcbiAgICogc3RhdGljLCBhbmQgdGhlIGdyYW50cyBnbyBpbiBhIHNlcGFyYXRlIHBvbGljeSB0aGF0IGRlcGVuZHMgb24gdGhlXG4gICAqIGRpc3RyaWJ1dGlvbiB3aGlsZSBubyBmdW5jdGlvbiBkZXBlbmRzIG9uIGl0LlxuICAgKi9cbiAgcHJpdmF0ZSB3aXJlQ2xvdWRGcm9udEludmFsaWRhdGlvbihmdW5jdGlvbnM6IExhbWJkYUZ1bmN0aW9uW10pIHtcbiAgICBjb25zdCB7IGRpc3RyaWJ1dGlvbiB9ID0gdGhpcy5uZXh0anNEaXN0cmlidXRpb247XG4gICAgY29uc3QgcGFyYW1ldGVyTmFtZSA9IGBjZGstbmV4dGpzLWRpc3RyaWJ1dGlvbi1pZC0ke3RoaXMubm9kZS5hZGRyfWA7XG4gICAgbmV3IFN0cmluZ1BhcmFtZXRlcih0aGlzLCBcIkRpc3RyaWJ1dGlvbklkUGFyYW1ldGVyXCIsIHtcbiAgICAgIHBhcmFtZXRlck5hbWUsXG4gICAgICBzdHJpbmdWYWx1ZTogZGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbklkLFxuICAgIH0pO1xuICAgIG5ldyBQb2xpY3kodGhpcywgXCJJbnZhbGlkYXRpb25Qb2xpY3lcIiwge1xuICAgICAgLy8gQSBgbmV3IEZ1bmN0aW9uYCBhbHdheXMgaGFzIGEgcm9sZTsgb25seSBpbXBvcnRlZCBvbmVzIGxhY2sgaXQuXG4gICAgICByb2xlczogZnVuY3Rpb25zLm1hcCgoZm4pID0+IGZuLnJvbGUhKSxcbiAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1wic3NtOkdldFBhcmFtZXRlclwiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgIFN0YWNrLm9mKHRoaXMpLmZvcm1hdEFybih7XG4gICAgICAgICAgICAgIHNlcnZpY2U6IFwic3NtXCIsXG4gICAgICAgICAgICAgIHJlc291cmNlOiBcInBhcmFtZXRlclwiLFxuICAgICAgICAgICAgICByZXNvdXJjZU5hbWU6IHBhcmFtZXRlck5hbWUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1wiY2xvdWRmcm9udDpDcmVhdGVJbnZhbGlkYXRpb25cIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbZGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbkFybl0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcbiAgICBmdW5jdGlvbnMuZm9yRWFjaCgoZm4pID0+XG4gICAgICBmbi5hZGRFbnZpcm9ubWVudChcIkNES19ORVhUSlNfRElTVFJJQlVUSU9OX0lEX1BBUkFNX05BTUVcIiwgcGFyYW1ldGVyTmFtZSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmV4dGpzRGlzdHJpYnV0aW9uKCkge1xuICAgIHJldHVybiBuZXcgTmV4dGpzRGlzdHJpYnV0aW9uKHRoaXMsIFwiTmV4dGpzRGlzdHJpYnV0aW9uXCIsIHtcbiAgICAgIGFzc2V0c0J1Y2tldDogdGhpcy5uZXh0anNTdGF0aWNBc3NldHMuYnVja2V0LFxuICAgICAgYXNzZXRQcmVmaXg6IHRoaXMubmV4dGpzQnVpbGQubmV4dENvbmZpZ0Fzc2V0UHJlZml4UGF0aCxcbiAgICAgIGJhc2VQYXRoOiB0aGlzLnJlc29sdmVkQmFzZVBhdGgsXG4gICAgICBkaXN0cmlidXRpb246IHRoaXMucHJvcHMuZGlzdHJpYnV0aW9uLFxuICAgICAgZnVuY3Rpb25Vcmw6IHRoaXMubmV4dGpzRnVuY3Rpb25zLmZ1bmN0aW9uVXJsLFxuICAgICAgbmV4dGpzVHlwZTogdGhpcy5uZXh0anNUeXBlLFxuICAgICAgb3ZlcnJpZGVzOiB0aGlzLnByb3BzLm92ZXJyaWRlcz8ubmV4dGpzRGlzdHJpYnV0aW9uLFxuICAgICAgcHVibGljRGlyRW50cmllczogdGhpcy5uZXh0anNCdWlsZC5wdWJsaWNEaXJFbnRyaWVzLFxuICAgICAgc2VydmljZVdvcmtlckFsbG93ZWQ6IHRoaXMuc2VydmljZVdvcmtlckFsbG93ZWQsXG4gICAgICAvLyBUaGUgZGVmYXVsdCBncm91cCBiYWNrcyB0aGUgZGVmYXVsdCBiZWhhdmlvciwgc28gb25seSB0aGUgcmVzdCBuZWVkXG4gICAgICAvLyBiZWhhdmlvcnMgb2YgdGhlaXIgb3duLlxuICAgICAgZnVuY3Rpb25Hcm91cHM6IHRoaXMubmV4dGpzRnVuY3Rpb25zLmZ1bmN0aW9uR3JvdXBzXG4gICAgICAgIC5maWx0ZXIoKGdyb3VwKSA9PiBncm91cC5uYW1lICE9PSBERUZBVUxUX0ZVTkNUSU9OX0dST1VQKVxuICAgICAgICAubWFwKChncm91cCkgPT4gKHtcbiAgICAgICAgICBuYW1lOiBncm91cC5uYW1lLFxuICAgICAgICAgIGZ1bmN0aW9uVXJsOiBncm91cC5mdW5jdGlvblVybCEsXG4gICAgICAgIH0pKSxcbiAgICAgIGZ1bmN0aW9uR3JvdXBCZWhhdmlvcnM6IHRoaXMubmV4dGpzQnVpbGQuZnVuY3Rpb25Hcm91cEJlaGF2aW9ycyxcbiAgICAgIHZpZXdlclJlcXVlc3RGdW5jdGlvbkNvZGU6IHRoaXMucHJvcHMudmlld2VyUmVxdWVzdEZ1bmN0aW9uQ29kZSxcbiAgICAgIHZpZXdlclJlcXVlc3RLZXlWYWx1ZVN0b3JlOiB0aGlzLnByb3BzLnZpZXdlclJlcXVlc3RLZXlWYWx1ZVN0b3JlLFxuICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc0dsb2JhbEZ1bmN0aW9ucz8ubmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -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.12" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsRegionalContainers", version: "0.7.14" };
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.12" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-nextjs.NextjsRegionalFunctions", version: "0.7.14" };
15
15
  nextjsFunctions;
16
16
  nextjsApi;
17
17
  nextjsPostDeploy;
@@ -34,6 +34,7 @@ class NextjsRegionalFunctions extends nextjs_base_construct_1.NextjsBaseConstruc
34
34
  basePath: this.resolvedBasePath,
35
35
  overrides: this.props.overrides?.nextjsApi,
36
36
  publicDirEntries: this.nextjsBuild.publicDirEntries,
37
+ serviceWorkerAllowed: this.serviceWorkerAllowed,
37
38
  // `serverFunction` above is the default group's, which the `{proxy+}`
38
39
  // catch-all reaches; the rest get resources of their own.
39
40
  functionGroups: this.nextjsFunctions.functionGroups.filter((group) => group.name !== function_groups_1.DEFAULT_FUNCTION_GROUP),
@@ -43,4 +44,4 @@ class NextjsRegionalFunctions extends nextjs_base_construct_1.NextjsBaseConstruc
43
44
  }
44
45
  }
45
46
  exports.NextjsRegionalFunctions = NextjsRegionalFunctions;
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLXJlZ2lvbmFsLWZ1bmN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb290LWNvbnN0cnVjdHMvbmV4dGpzLXJlZ2lvbmFsLWZ1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsZ0VBQW9FO0FBQ3BFLDRDQUEwQztBQUUxQyw4Q0FBOEQ7QUFDOUQsbUVBS2lDO0FBNkNqQzs7O0dBR0c7QUFDSCxNQUFhLHVCQUF3QixTQUFRLDJDQUFtQjs7SUFDOUQsZUFBZSxDQUFrQjtJQUNqQyxTQUFTLENBQVk7SUFDckIsZ0JBQWdCLENBQW1CO0lBQ25DLElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7SUFDNUIsQ0FBQztJQUVPLEtBQUssQ0FBK0I7SUFFNUMsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBbUM7UUFFbkMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLHNCQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRU8sZUFBZTtRQUNyQixPQUFPLElBQUksc0JBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQ3RDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNO1lBQ2xELHFCQUFxQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTO1lBQ3hELGNBQWMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVE7WUFDN0MsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFNBQVM7WUFDMUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0I7WUFDbkQsc0VBQXNFO1lBQ3RFLDBEQUEwRDtZQUMxRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUN4RCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyx3Q0FBc0IsQ0FDakQ7WUFDRCxzQkFBc0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQjtZQUMvRCxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGNBQWM7U0FDakUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF2Q0gsMERBd0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IERFRkFVTFRfRlVOQ1RJT05fR1JPVVAgfSBmcm9tIFwiLi4vYWRhcHRlci9mdW5jdGlvbi1ncm91cHNcIjtcbmltcG9ydCB7IE5leHRqc1R5cGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBPcHRpb25hbE5leHRqc0FwaVByb3BzIH0gZnJvbSBcIi4uL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzQXBpUHJvcHNcIjtcbmltcG9ydCB7IE5leHRqc0FwaSwgTmV4dGpzQXBpT3ZlcnJpZGVzIH0gZnJvbSBcIi4uL25leHRqcy1hcGlcIjtcbmltcG9ydCB7XG4gIE5leHRqc0Jhc2VDb25zdHJ1Y3QsXG4gIE5leHRqc0Jhc2VQcm9wcyxcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZU92ZXJyaWRlcyxcbn0gZnJvbSBcIi4vbmV4dGpzLWJhc2UtY29uc3RydWN0XCI7XG5pbXBvcnQge1xuICBOZXh0anNGdW5jdGlvbkdyb3VwLFxuICBOZXh0anNGdW5jdGlvbnMsXG4gIE5leHRqc0Z1bmN0aW9uc092ZXJyaWRlcyxcbn0gZnJvbSBcIi4uL25leHRqcy1jb21wdXRlL25leHRqcy1mdW5jdGlvbnNcIjtcbmltcG9ydCB7IE5leHRqc1Bvc3REZXBsb3kgfSBmcm9tIFwiLi4vbmV4dGpzLXBvc3QtZGVwbG95XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzUmVnaW9uYWxGdW5jdGlvbnNDb25zdHJ1Y3RPdmVycmlkZXMgZXh0ZW5kcyBOZXh0anNCYXNlQ29uc3RydWN0T3ZlcnJpZGVzIHtcbiAgcmVhZG9ubHkgbmV4dGpzQXBpUHJvcHM/OiBPcHRpb25hbE5leHRqc0FwaVByb3BzO1xufVxuXG4vKipcbiAqIE92ZXJyaWRlcyBmb3IgYE5leHRqc1JlZ2lvbmFsRnVuY3Rpb25zYC4gT3ZlcnJpZGVzIGFyZSBsb3dlciBsZXZlbCB0aGFuXG4gKiBwcm9wcyBhbmQgYXJlIHBhc3NlZCBkaXJlY3RseSB0byBDREsgQ29uc3RydWN0cyBnaXZpbmcgeW91IG1vcmUgY29udHJvbC4gSXQnc1xuICogcmVjb21tZW5kZWQgdG8gdXNlIGNhdXRpb24gYW5kIHJldmlldyBzb3VyY2UgY29kZSBzbyB5b3Uga25vdyBob3cgdGhleSdyZSB1c2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc1JlZ2lvbmFsRnVuY3Rpb25zT3ZlcnJpZGVzIGV4dGVuZHMgTmV4dGpzQmFzZU92ZXJyaWRlcyB7XG4gIHJlYWRvbmx5IG5leHRqc1JlZ2lvbmFsRnVuY3Rpb25zPzogTmV4dGpzUmVnaW9uYWxGdW5jdGlvbnNDb25zdHJ1Y3RPdmVycmlkZXM7XG4gIHJlYWRvbmx5IG5leHRqc0Z1bmN0aW9ucz86IE5leHRqc0Z1bmN0aW9uc092ZXJyaWRlcztcbiAgcmVhZG9ubHkgbmV4dGpzQXBpPzogTmV4dGpzQXBpT3ZlcnJpZGVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc1JlZ2lvbmFsRnVuY3Rpb25zUHJvcHMgZXh0ZW5kcyBOZXh0anNCYXNlUHJvcHMge1xuICAvKipcbiAgICogUGFja2FnZSBzZXRzIG9mIHJvdXRlcyBpbnRvIHNlcGFyYXRlIExhbWJkYSBmdW5jdGlvbnMsIGVhY2ggZnJvbnRlZCBieSBpdHNcbiAgICogb3duIEFQSSBHYXRld2F5IHJlc291cmNlcy5cbiAgICpcbiAgICogUmVhY2ggZm9yIHRoaXMgd2hlbiBhIHNpbmdsZSBmdW5jdGlvbiBleGNlZWRzIExhbWJkYSdzIDI1MCBNQiB1bnppcHBlZFxuICAgKiBsaW1pdCDigJQgY2RrLW5leHRqcyB0aHJvd3MgYXQgc3ludGggd2l0aCB0aGUgbWVhc3VyZWQgc2l6ZSB3aGVuIGl0IGRvZXMuIEl0IGlzXG4gICAqIG5vdCBhIHBlcmZvcm1hbmNlIG9yIGlzb2xhdGlvbiBmZWF0dXJlOiBldmVyeSBncm91cCBzaGlwcyB0aGUgc2FtZSBOZXh0LmpzXG4gICAqIHJ1bnRpbWUsIHNvIHNwbGl0dGluZyBvbmx5IG1vdmVzIHJvdXRlLWxvY2FsIGNvZGUuXG4gICAqXG4gICAqIEBzZWUgTmV4dGpzRnVuY3Rpb25Hcm91cCBmb3IgdGhlIHBhdHRlcm4gZ3JhbW1hciBhbmQgaXRzIGxpbWl0cy4gQVBJIEdhdGV3YXlcbiAgICogY291bGQgZXhwcmVzcyBtb3JlIHRoYW4gQ2xvdWRGcm9udCBjYW4sIGJ1dCB0aGUgZ3JhbW1hciBpcyBkZWxpYmVyYXRlbHkgdGhlXG4gICAqIHNhbWUgaW4gYm90aCBzbyBzd2l0Y2hpbmcgZGVwbG95bWVudCB0eXBlIG5ldmVyIHJlZ3JvdXBzIHJvdXRlcy5cbiAgICogQGRlZmF1bHQgLSBvbmUgZnVuY3Rpb24gc2VydmVzIGV2ZXJ5IHJvdXRlXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbkdyb3Vwcz86IE5leHRqc0Z1bmN0aW9uR3JvdXBbXTtcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHByb3BzIG9mIGFueSBjb25zdHJ1Y3QuXG4gICAqL1xuICByZWFkb25seSBvdmVycmlkZXM/OiBOZXh0anNSZWdpb25hbEZ1bmN0aW9uc092ZXJyaWRlcztcbn1cblxuLyoqXG4gKiBEZXBsb3kgTmV4dC5qcyByZWdpb25hbGx5IHdpdGggZnVuY3Rpb25zLiBVc2VzIEFQSSBHYXRld2F5IFJFU1QgQVBJXG4gKiBmb3Igcm91dGluZyByZXF1ZXN0cyBhbmQgQVdTIExhbWJkYSBGdW5jdGlvbnMgZm9yIHNlcnZlci1zaWRlIHJlbmRlcmluZy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5leHRqc1JlZ2lvbmFsRnVuY3Rpb25zIGV4dGVuZHMgTmV4dGpzQmFzZUNvbnN0cnVjdCB7XG4gIG5leHRqc0Z1bmN0aW9uczogTmV4dGpzRnVuY3Rpb25zO1xuICBuZXh0anNBcGk6IE5leHRqc0FwaTtcbiAgbmV4dGpzUG9zdERlcGxveTogTmV4dGpzUG9zdERlcGxveTtcbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm5leHRqc0FwaS51cmw7XG4gIH1cblxuICBwcml2YXRlIHByb3BzOiBOZXh0anNSZWdpb25hbEZ1bmN0aW9uc1Byb3BzO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogTmV4dGpzUmVnaW9uYWxGdW5jdGlvbnNQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcywgTmV4dGpzVHlwZS5SRUdJT05BTF9GVU5DVElPTlMpO1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIHRoaXMubmV4dGpzRnVuY3Rpb25zID0gdGhpcy5jcmVhdGVOZXh0anNGdW5jdGlvbnMoKTtcbiAgICB0aGlzLm5leHRqc0FwaSA9IHRoaXMuY3JlYXRlTmV4dGpzQXBpKCk7XG4gICAgdGhpcy5uZXh0anNQb3N0RGVwbG95ID0gdGhpcy5jcmVhdGVOZXh0anNQb3N0RGVwbG95KCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5leHRqc0FwaSgpIHtcbiAgICByZXR1cm4gbmV3IE5leHRqc0FwaSh0aGlzLCBcIk5leHRqc0FwaVwiLCB7XG4gICAgICBzdGF0aWNBc3NldHNCdWNrZXQ6IHRoaXMubmV4dGpzU3RhdGljQXNzZXRzLmJ1Y2tldCxcbiAgICAgIHN0YXRpY0Fzc2V0c0tleVByZWZpeDogdGhpcy5uZXh0anNTdGF0aWNBc3NldHMua2V5UHJlZml4LFxuICAgICAgc2VydmVyRnVuY3Rpb246IHRoaXMubmV4dGpzRnVuY3Rpb25zLmZ1bmN0aW9uLFxuICAgICAgYmFzZVBhdGg6IHRoaXMucmVzb2x2ZWRCYXNlUGF0aCxcbiAgICAgIG92ZXJyaWRlczogdGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc0FwaSxcbiAgICAgIHB1YmxpY0RpckVudHJpZXM6IHRoaXMubmV4dGpzQnVpbGQucHVibGljRGlyRW50cmllcyxcbiAgICAgIC8vIGBzZXJ2ZXJGdW5jdGlvbmAgYWJvdmUgaXMgdGhlIGRlZmF1bHQgZ3JvdXAncywgd2hpY2ggdGhlIGB7cHJveHkrfWBcbiAgICAgIC8vIGNhdGNoLWFsbCByZWFjaGVzOyB0aGUgcmVzdCBnZXQgcmVzb3VyY2VzIG9mIHRoZWlyIG93bi5cbiAgICAgIGZ1bmN0aW9uR3JvdXBzOiB0aGlzLm5leHRqc0Z1bmN0aW9ucy5mdW5jdGlvbkdyb3Vwcy5maWx0ZXIoXG4gICAgICAgIChncm91cCkgPT4gZ3JvdXAubmFtZSAhPT0gREVGQVVMVF9GVU5DVElPTl9HUk9VUCxcbiAgICAgICksXG4gICAgICBmdW5jdGlvbkdyb3VwQmVoYXZpb3JzOiB0aGlzLm5leHRqc0J1aWxkLmZ1bmN0aW9uR3JvdXBCZWhhdmlvcnMsXG4gICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8ubmV4dGpzUmVnaW9uYWxGdW5jdGlvbnM/Lm5leHRqc0FwaVByb3BzLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLXJlZ2lvbmFsLWZ1bmN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb290LWNvbnN0cnVjdHMvbmV4dGpzLXJlZ2lvbmFsLWZ1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsZ0VBQW9FO0FBQ3BFLDRDQUEwQztBQUUxQyw4Q0FBOEQ7QUFDOUQsbUVBS2lDO0FBNkNqQzs7O0dBR0c7QUFDSCxNQUFhLHVCQUF3QixTQUFRLDJDQUFtQjs7SUFDOUQsZUFBZSxDQUFrQjtJQUNqQyxTQUFTLENBQVk7SUFDckIsZ0JBQWdCLENBQW1CO0lBQ25DLElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7SUFDNUIsQ0FBQztJQUVPLEtBQUssQ0FBK0I7SUFFNUMsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBbUM7UUFFbkMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLHNCQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRU8sZUFBZTtRQUNyQixPQUFPLElBQUksc0JBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQ3RDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNO1lBQ2xELHFCQUFxQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTO1lBQ3hELGNBQWMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVE7WUFDN0MsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFNBQVM7WUFDMUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0I7WUFDbkQsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtZQUMvQyxzRUFBc0U7WUFDdEUsMERBQTBEO1lBQzFELGNBQWMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQ3hELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLHdDQUFzQixDQUNqRDtZQUNELHNCQUFzQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCO1lBQy9ELEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsY0FBYztTQUNqRSxDQUFDLENBQUM7SUFDTCxDQUFDOztBQXhDSCwwREF5Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgREVGQVVMVF9GVU5DVElPTl9HUk9VUCB9IGZyb20gXCIuLi9hZGFwdGVyL2Z1bmN0aW9uLWdyb3Vwc1wiO1xuaW1wb3J0IHsgTmV4dGpzVHlwZSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IE9wdGlvbmFsTmV4dGpzQXBpUHJvcHMgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNBcGlQcm9wc1wiO1xuaW1wb3J0IHsgTmV4dGpzQXBpLCBOZXh0anNBcGlPdmVycmlkZXMgfSBmcm9tIFwiLi4vbmV4dGpzLWFwaVwiO1xuaW1wb3J0IHtcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdCxcbiAgTmV4dGpzQmFzZVByb3BzLFxuICBOZXh0anNCYXNlQ29uc3RydWN0T3ZlcnJpZGVzLFxuICBOZXh0anNCYXNlT3ZlcnJpZGVzLFxufSBmcm9tIFwiLi9uZXh0anMtYmFzZS1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7XG4gIE5leHRqc0Z1bmN0aW9uR3JvdXAsXG4gIE5leHRqc0Z1bmN0aW9ucyxcbiAgTmV4dGpzRnVuY3Rpb25zT3ZlcnJpZGVzLFxufSBmcm9tIFwiLi4vbmV4dGpzLWNvbXB1dGUvbmV4dGpzLWZ1bmN0aW9uc1wiO1xuaW1wb3J0IHsgTmV4dGpzUG9zdERlcGxveSB9IGZyb20gXCIuLi9uZXh0anMtcG9zdC1kZXBsb3lcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNSZWdpb25hbEZ1bmN0aW9uc0NvbnN0cnVjdE92ZXJyaWRlcyBleHRlbmRzIE5leHRqc0Jhc2VDb25zdHJ1Y3RPdmVycmlkZXMge1xuICByZWFkb25seSBuZXh0anNBcGlQcm9wcz86IE9wdGlvbmFsTmV4dGpzQXBpUHJvcHM7XG59XG5cbi8qKlxuICogT3ZlcnJpZGVzIGZvciBgTmV4dGpzUmVnaW9uYWxGdW5jdGlvbnNgLiBPdmVycmlkZXMgYXJlIGxvd2VyIGxldmVsIHRoYW5cbiAqIHByb3BzIGFuZCBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIENESyBDb25zdHJ1Y3RzIGdpdmluZyB5b3UgbW9yZSBjb250cm9sLiBJdCdzXG4gKiByZWNvbW1lbmRlZCB0byB1c2UgY2F1dGlvbiBhbmQgcmV2aWV3IHNvdXJjZSBjb2RlIHNvIHlvdSBrbm93IGhvdyB0aGV5J3JlIHVzZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzUmVnaW9uYWxGdW5jdGlvbnNPdmVycmlkZXMgZXh0ZW5kcyBOZXh0anNCYXNlT3ZlcnJpZGVzIHtcbiAgcmVhZG9ubHkgbmV4dGpzUmVnaW9uYWxGdW5jdGlvbnM/OiBOZXh0anNSZWdpb25hbEZ1bmN0aW9uc0NvbnN0cnVjdE92ZXJyaWRlcztcbiAgcmVhZG9ubHkgbmV4dGpzRnVuY3Rpb25zPzogTmV4dGpzRnVuY3Rpb25zT3ZlcnJpZGVzO1xuICByZWFkb25seSBuZXh0anNBcGk/OiBOZXh0anNBcGlPdmVycmlkZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzUmVnaW9uYWxGdW5jdGlvbnNQcm9wcyBleHRlbmRzIE5leHRqc0Jhc2VQcm9wcyB7XG4gIC8qKlxuICAgKiBQYWNrYWdlIHNldHMgb2Ygcm91dGVzIGludG8gc2VwYXJhdGUgTGFtYmRhIGZ1bmN0aW9ucywgZWFjaCBmcm9udGVkIGJ5IGl0c1xuICAgKiBvd24gQVBJIEdhdGV3YXkgcmVzb3VyY2VzLlxuICAgKlxuICAgKiBSZWFjaCBmb3IgdGhpcyB3aGVuIGEgc2luZ2xlIGZ1bmN0aW9uIGV4Y2VlZHMgTGFtYmRhJ3MgMjUwIE1CIHVuemlwcGVkXG4gICAqIGxpbWl0IOKAlCBjZGstbmV4dGpzIHRocm93cyBhdCBzeW50aCB3aXRoIHRoZSBtZWFzdXJlZCBzaXplIHdoZW4gaXQgZG9lcy4gSXQgaXNcbiAgICogbm90IGEgcGVyZm9ybWFuY2Ugb3IgaXNvbGF0aW9uIGZlYXR1cmU6IGV2ZXJ5IGdyb3VwIHNoaXBzIHRoZSBzYW1lIE5leHQuanNcbiAgICogcnVudGltZSwgc28gc3BsaXR0aW5nIG9ubHkgbW92ZXMgcm91dGUtbG9jYWwgY29kZS5cbiAgICpcbiAgICogQHNlZSBOZXh0anNGdW5jdGlvbkdyb3VwIGZvciB0aGUgcGF0dGVybiBncmFtbWFyIGFuZCBpdHMgbGltaXRzLiBBUEkgR2F0ZXdheVxuICAgKiBjb3VsZCBleHByZXNzIG1vcmUgdGhhbiBDbG91ZEZyb250IGNhbiwgYnV0IHRoZSBncmFtbWFyIGlzIGRlbGliZXJhdGVseSB0aGVcbiAgICogc2FtZSBpbiBib3RoIHNvIHN3aXRjaGluZyBkZXBsb3ltZW50IHR5cGUgbmV2ZXIgcmVncm91cHMgcm91dGVzLlxuICAgKiBAZGVmYXVsdCAtIG9uZSBmdW5jdGlvbiBzZXJ2ZXMgZXZlcnkgcm91dGVcbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uR3JvdXBzPzogTmV4dGpzRnVuY3Rpb25Hcm91cFtdO1xuICAvKipcbiAgICogT3ZlcnJpZGUgcHJvcHMgb2YgYW55IGNvbnN0cnVjdC5cbiAgICovXG4gIHJlYWRvbmx5IG92ZXJyaWRlcz86IE5leHRqc1JlZ2lvbmFsRnVuY3Rpb25zT3ZlcnJpZGVzO1xufVxuXG4vKipcbiAqIERlcGxveSBOZXh0LmpzIHJlZ2lvbmFsbHkgd2l0aCBmdW5jdGlvbnMuIFVzZXMgQVBJIEdhdGV3YXkgUkVTVCBBUElcbiAqIGZvciByb3V0aW5nIHJlcXVlc3RzIGFuZCBBV1MgTGFtYmRhIEZ1bmN0aW9ucyBmb3Igc2VydmVyLXNpZGUgcmVuZGVyaW5nLlxuICovXG5leHBvcnQgY2xhc3MgTmV4dGpzUmVnaW9uYWxGdW5jdGlvbnMgZXh0ZW5kcyBOZXh0anNCYXNlQ29uc3RydWN0IHtcbiAgbmV4dGpzRnVuY3Rpb25zOiBOZXh0anNGdW5jdGlvbnM7XG4gIG5leHRqc0FwaTogTmV4dGpzQXBpO1xuICBuZXh0anNQb3N0RGVwbG95OiBOZXh0anNQb3N0RGVwbG95O1xuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmV4dGpzQXBpLnVybDtcbiAgfVxuXG4gIHByaXZhdGUgcHJvcHM6IE5leHRqc1JlZ2lvbmFsRnVuY3Rpb25zUHJvcHM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBOZXh0anNSZWdpb25hbEZ1bmN0aW9uc1Byb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzLCBOZXh0anNUeXBlLlJFR0lPTkFMX0ZVTkNUSU9OUyk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5uZXh0anNGdW5jdGlvbnMgPSB0aGlzLmNyZWF0ZU5leHRqc0Z1bmN0aW9ucygpO1xuICAgIHRoaXMubmV4dGpzQXBpID0gdGhpcy5jcmVhdGVOZXh0anNBcGkoKTtcbiAgICB0aGlzLm5leHRqc1Bvc3REZXBsb3kgPSB0aGlzLmNyZWF0ZU5leHRqc1Bvc3REZXBsb3koKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmV4dGpzQXBpKCkge1xuICAgIHJldHVybiBuZXcgTmV4dGpzQXBpKHRoaXMsIFwiTmV4dGpzQXBpXCIsIHtcbiAgICAgIHN0YXRpY0Fzc2V0c0J1Y2tldDogdGhpcy5uZXh0anNTdGF0aWNBc3NldHMuYnVja2V0LFxuICAgICAgc3RhdGljQXNzZXRzS2V5UHJlZml4OiB0aGlzLm5leHRqc1N0YXRpY0Fzc2V0cy5rZXlQcmVmaXgsXG4gICAgICBzZXJ2ZXJGdW5jdGlvbjogdGhpcy5uZXh0anNGdW5jdGlvbnMuZnVuY3Rpb24sXG4gICAgICBiYXNlUGF0aDogdGhpcy5yZXNvbHZlZEJhc2VQYXRoLFxuICAgICAgb3ZlcnJpZGVzOiB0aGlzLnByb3BzLm92ZXJyaWRlcz8ubmV4dGpzQXBpLFxuICAgICAgcHVibGljRGlyRW50cmllczogdGhpcy5uZXh0anNCdWlsZC5wdWJsaWNEaXJFbnRyaWVzLFxuICAgICAgc2VydmljZVdvcmtlckFsbG93ZWQ6IHRoaXMuc2VydmljZVdvcmtlckFsbG93ZWQsXG4gICAgICAvLyBgc2VydmVyRnVuY3Rpb25gIGFib3ZlIGlzIHRoZSBkZWZhdWx0IGdyb3VwJ3MsIHdoaWNoIHRoZSBge3Byb3h5K31gXG4gICAgICAvLyBjYXRjaC1hbGwgcmVhY2hlczsgdGhlIHJlc3QgZ2V0IHJlc291cmNlcyBvZiB0aGVpciBvd24uXG4gICAgICBmdW5jdGlvbkdyb3VwczogdGhpcy5uZXh0anNGdW5jdGlvbnMuZnVuY3Rpb25Hcm91cHMuZmlsdGVyKFxuICAgICAgICAoZ3JvdXApID0+IGdyb3VwLm5hbWUgIT09IERFRkFVTFRfRlVOQ1RJT05fR1JPVVAsXG4gICAgICApLFxuICAgICAgZnVuY3Rpb25Hcm91cEJlaGF2aW9yczogdGhpcy5uZXh0anNCdWlsZC5mdW5jdGlvbkdyb3VwQmVoYXZpb3JzLFxuICAgICAgLi4udGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc1JlZ2lvbmFsRnVuY3Rpb25zPy5uZXh0anNBcGlQcm9wcyxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -36914,6 +36914,8 @@ var require_package = __commonJS({
36914
36914
  compat: "pnpm dlx projen compat",
36915
36915
  compile: "pnpm dlx projen compile",
36916
36916
  default: "pnpm dlx projen default",
36917
+ diagrams: "pnpm dlx projen diagrams",
36918
+ "diagrams:check": "pnpm dlx projen diagrams:check",
36917
36919
  docgen: "pnpm dlx projen docgen",
36918
36920
  eject: "pnpm dlx projen eject",
36919
36921
  eslint: "pnpm dlx projen eslint",
@@ -36951,6 +36953,7 @@ var require_package = __commonJS({
36951
36953
  "@aws-sdk/client-s3": "^3.1141.0",
36952
36954
  "@aws-sdk/client-ssm": "^3.1141.0",
36953
36955
  "@aws-sdk/lib-storage": "^3.1141.0",
36956
+ "@iconify-json/logos": "1.2.16",
36954
36957
  "@mrgrain/jsii-struct-builder": "^0.7.64",
36955
36958
  "@next/routing": "16.4.0",
36956
36959
  "@smithy/signature-v4": "^2.3.0",
@@ -37033,7 +37036,7 @@ var require_package = __commonJS({
37033
37036
  publishConfig: {
37034
37037
  access: "public"
37035
37038
  },
37036
- version: "0.7.12",
37039
+ version: "0.7.14",
37037
37040
  packageManager: "pnpm@10.32.1",
37038
37041
  jest: {
37039
37042
  coverageProvider: "v8",
@@ -36914,6 +36914,8 @@ var require_package = __commonJS({
36914
36914
  compat: "pnpm dlx projen compat",
36915
36915
  compile: "pnpm dlx projen compile",
36916
36916
  default: "pnpm dlx projen default",
36917
+ diagrams: "pnpm dlx projen diagrams",
36918
+ "diagrams:check": "pnpm dlx projen diagrams:check",
36917
36919
  docgen: "pnpm dlx projen docgen",
36918
36920
  eject: "pnpm dlx projen eject",
36919
36921
  eslint: "pnpm dlx projen eslint",
@@ -36951,6 +36953,7 @@ var require_package = __commonJS({
36951
36953
  "@aws-sdk/client-s3": "^3.1141.0",
36952
36954
  "@aws-sdk/client-ssm": "^3.1141.0",
36953
36955
  "@aws-sdk/lib-storage": "^3.1141.0",
36956
+ "@iconify-json/logos": "1.2.16",
36954
36957
  "@mrgrain/jsii-struct-builder": "^0.7.64",
36955
36958
  "@next/routing": "16.4.0",
36956
36959
  "@smithy/signature-v4": "^2.3.0",
@@ -37033,7 +37036,7 @@ var require_package = __commonJS({
37033
37036
  publishConfig: {
37034
37037
  access: "public"
37035
37038
  },
37036
- version: "0.7.12",
37039
+ version: "0.7.14",
37037
37040
  packageManager: "pnpm@10.32.1",
37038
37041
  jest: {
37039
37042
  coverageProvider: "v8",
@@ -0,0 +1,53 @@
1
+ /**
2
+ * The code of cdk-nextjs's CloudFront Functions, and of `viewerRequestFunctionCode`
3
+ * spliced into them. Plain strings: `NextjsDistribution` creates the functions.
4
+ */
5
+ /**
6
+ * Where a viewer-request handler calls `viewerRequestFunctionCode`, before any
7
+ * logic of its own. Replaced at synth, never deployed.
8
+ */
9
+ export declare const VIEWER_REQUEST_HOOK = "/*@viewerRequest@*/";
10
+ /**
11
+ * CloudFront's maximum CloudFront Function size.
12
+ * @see https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html#limits-functions
13
+ */
14
+ export declare const MAX_FUNCTION_CODE_BYTES: number;
15
+ /**
16
+ * NextjsGlobalFunctions' viewer-request handler: redirects repeated slashes,
17
+ * and overwrites `x-forwarded-host` with the viewer's `Host` so Next.js
18
+ * `request.url` is the site's domain rather than the Function URL's.
19
+ * @see https://open-next.js.org/advanced/workaround#workaround-set-x-forwarded-host-header-aws-specific
20
+ */
21
+ export declare const X_FORWARDED_HOST_HANDLER = "\n async function handler(event) {/*@viewerRequest@*/\n const request = event.request;\n const uri = request.uri;\n\n if (/\\\\|\\/\\//.test(uri)) {\n let location = uri.replace(/\\\\/g, \"/\").replace(/\\/\\/+/g, \"/\");\n const qs = [];\n Object.keys(request.querystring).forEach((name) => {\n const q = request.querystring[name];\n (q.multiValue || [q]).forEach((entry) => {\n qs.push(entry.value === \"\" ? name : name + \"=\" + entry.value);\n });\n });\n if (qs.length) {\n location += \"?\" + qs.join(\"&\");\n }\n return {\n statusCode: 308,\n statusDescription: \"Permanent Redirect\",\n headers: { location: { value: location } },\n };\n }\n\n request.headers[\"x-forwarded-host\"] = request.headers.host;\n return request;\n }\n ";
22
+ /**
23
+ * The handler of a behavior with no viewer-request logic of its own, which
24
+ * only runs `viewerRequestFunctionCode`.
25
+ */
26
+ export declare const PASS_THROUGH_HANDLER = "\n async function handler(event) {/*@viewerRequest@*/\n return event.request;\n }\n ";
27
+ /**
28
+ * The `assetPrefix` behavior's handler: an S3 origin keys on the request URI
29
+ * and `originPath` can only prepend, so the prefix is swapped for the
30
+ * `basePath` here. Both are synth-time literals.
31
+ */
32
+ export declare function assetPrefixRewriteHandler(basePath: string, assetPrefix: string): string;
33
+ /**
34
+ * Checks `viewerRequestFunctionCode` defines `viewerRequest` and doesn't use
35
+ * the name `handler`.
36
+ *
37
+ * Any use of `handler` is refused, not just a declaration: an assignment
38
+ * (`var handler =`, destructuring, `globalThis["handler"] =`) would replace
39
+ * cdk-nextjs's handler, and with it the `x-forwarded-host` overwrite, and a
40
+ * `let`/`const`/`class` would make the file a syntax error. Telling these
41
+ * apart from a local of the same name takes a parser, so a local, or the
42
+ * word in a comment or string, is refused too; that errs towards refusing
43
+ * code that would have worked.
44
+ */
45
+ export declare function checkViewerRequestCode(userCode: string): void;
46
+ /**
47
+ * The deployed code of a cdk-nextjs handler: with `userCode` first in the file
48
+ * (where CloudFront wants `import cf from "cloudfront"`) and awaited where the
49
+ * handler says {@link VIEWER_REQUEST_HOOK}, or with the marker dropped when
50
+ * there is none. Indentation is dropped too, since it counts toward the
51
+ * 10 KB; none of this code has a multi-line string for that to change.
52
+ */
53
+ export declare function spliceViewerRequest(handler: string, userCode: string | undefined): string;
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PASS_THROUGH_HANDLER = exports.X_FORWARDED_HOST_HANDLER = exports.MAX_FUNCTION_CODE_BYTES = exports.VIEWER_REQUEST_HOOK = void 0;
4
+ exports.assetPrefixRewriteHandler = assetPrefixRewriteHandler;
5
+ exports.checkViewerRequestCode = checkViewerRequestCode;
6
+ exports.spliceViewerRequest = spliceViewerRequest;
7
+ const constants_1 = require("../constants");
8
+ /**
9
+ * The code of cdk-nextjs's CloudFront Functions, and of `viewerRequestFunctionCode`
10
+ * spliced into them. Plain strings: `NextjsDistribution` creates the functions.
11
+ */
12
+ /**
13
+ * Where a viewer-request handler calls `viewerRequestFunctionCode`, before any
14
+ * logic of its own. Replaced at synth, never deployed.
15
+ */
16
+ exports.VIEWER_REQUEST_HOOK = "/*@viewerRequest@*/";
17
+ /**
18
+ * CloudFront's maximum CloudFront Function size.
19
+ * @see https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html#limits-functions
20
+ */
21
+ exports.MAX_FUNCTION_CODE_BYTES = 10 * 1024;
22
+ // Next.js answers any path containing a backslash or a repeated
23
+ // slash with a 308 to the collapsed path
24
+ // (`normalizeRepeatedSlashes`, called from `base-server.ts`), and so
25
+ // does this runtime. Behind a Lambda Function URL the origin never
26
+ // gets the chance: Origin Access Control signs the raw path while the
27
+ // Function URL canonicalizes it before verifying, so the origin
28
+ // answers 403 SignatureDoesNotMatch. Doing the redirect here is what
29
+ // makes `/basepath//to-sv` behave as it does under `next start`.
30
+ //
31
+ // A bare `//` reaches here too, and is answered the same way -
32
+ // measured, because `//` at the start of a request target is also the
33
+ // authority form and it was not obvious CloudFront would route it to a
34
+ // function at all. It does: `GET //` answers 308 to `/` with
35
+ // `x-cache: FunctionGeneratedResponse`, over both HTTP/1.1 and HTTP/2,
36
+ // which is what `test/e2e/hydration` asks for.
37
+ //
38
+ // Two things Next.js does that this does not:
39
+ //
40
+ // - the body it sends with its own redirect (the destination, as
41
+ // text). A generated response can carry one on
42
+ // cloudfront-js-2.0, but none is sent yet; no known client reads
43
+ // it.
44
+ // - the original order of the query string. The event exposes
45
+ // `querystring` as an object, never as the raw string, so
46
+ // `/x//y?a=1&b=2` redirects to `/x/y?b=2&a=1`. The pairs all
47
+ // survive; only their order is CloudFront's rather than the
48
+ // client's, and a redirect target is not order-sensitive.
49
+ //
50
+ // A repeated key's `multiValue` already holds its first value, which
51
+ // `value` repeats, so it is one or the other, never both. Names and
52
+ // values arrive as the client sent them, still percent-encoded
53
+ // (measured: `?a=%20b%26c&p=1+2` reads back unchanged), so they are
54
+ // joined as-is; encoding them again would turn `%20` into `%2520`.
55
+ //
56
+ // These notes live out here rather than in the code because
57
+ // CloudFront counts comments toward the function's 10 KB, which
58
+ // `viewerRequestFunctionCode` shares.
59
+ //
60
+ // Only the ES6+ that cloudfront-js-2.0 documents: `const`/`let`, arrow
61
+ // functions, `Object.keys`; no destructuring, spread or `for...of`.
62
+ // Strings are concatenated rather than templated, since a template
63
+ // literal in here would need every backtick and `${` escaped.
64
+ // https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/functions-javascript-runtime-20.html
65
+ /**
66
+ * NextjsGlobalFunctions' viewer-request handler: redirects repeated slashes,
67
+ * and overwrites `x-forwarded-host` with the viewer's `Host` so Next.js
68
+ * `request.url` is the site's domain rather than the Function URL's.
69
+ * @see https://open-next.js.org/advanced/workaround#workaround-set-x-forwarded-host-header-aws-specific
70
+ */
71
+ exports.X_FORWARDED_HOST_HANDLER = `
72
+ async function handler(event) {${exports.VIEWER_REQUEST_HOOK}
73
+ const request = event.request;
74
+ const uri = request.uri;
75
+
76
+ if (/\\\\|\\/\\//.test(uri)) {
77
+ let location = uri.replace(/\\\\/g, "/").replace(/\\/\\/+/g, "/");
78
+ const qs = [];
79
+ Object.keys(request.querystring).forEach((name) => {
80
+ const q = request.querystring[name];
81
+ (q.multiValue || [q]).forEach((entry) => {
82
+ qs.push(entry.value === "" ? name : name + "=" + entry.value);
83
+ });
84
+ });
85
+ if (qs.length) {
86
+ location += "?" + qs.join("&");
87
+ }
88
+ return {
89
+ statusCode: 308,
90
+ statusDescription: "Permanent Redirect",
91
+ headers: { location: { value: location } },
92
+ };
93
+ }
94
+
95
+ request.headers["x-forwarded-host"] = request.headers.host;
96
+ return request;
97
+ }
98
+ `;
99
+ /**
100
+ * The handler of a behavior with no viewer-request logic of its own, which
101
+ * only runs `viewerRequestFunctionCode`.
102
+ */
103
+ exports.PASS_THROUGH_HANDLER = `
104
+ async function handler(event) {${exports.VIEWER_REQUEST_HOOK}
105
+ return event.request;
106
+ }
107
+ `;
108
+ /**
109
+ * The `assetPrefix` behavior's handler: an S3 origin keys on the request URI
110
+ * and `originPath` can only prepend, so the prefix is swapped for the
111
+ * `basePath` here. Both are synth-time literals.
112
+ */
113
+ function assetPrefixRewriteHandler(basePath, assetPrefix) {
114
+ return `
115
+ async function handler(event) {${exports.VIEWER_REQUEST_HOOK}
116
+ const request = event.request;
117
+ request.uri = ${JSON.stringify(basePath ? `/${basePath}` : "")} + request.uri.slice(${assetPrefix.length});
118
+ return request;
119
+ }
120
+ `;
121
+ }
122
+ /**
123
+ * Checks `viewerRequestFunctionCode` defines `viewerRequest` and doesn't use
124
+ * the name `handler`.
125
+ *
126
+ * Any use of `handler` is refused, not just a declaration: an assignment
127
+ * (`var handler =`, destructuring, `globalThis["handler"] =`) would replace
128
+ * cdk-nextjs's handler, and with it the `x-forwarded-host` overwrite, and a
129
+ * `let`/`const`/`class` would make the file a syntax error. Telling these
130
+ * apart from a local of the same name takes a parser, so a local, or the
131
+ * word in a comment or string, is refused too; that errs towards refusing
132
+ * code that would have worked.
133
+ */
134
+ function checkViewerRequestCode(userCode) {
135
+ if (!/\bfunction\s+viewerRequest\s*\(|(?:\b(?:var|let|const)\s+|,\s*)viewerRequest\s*=(?!=)/.test(userCode)) {
136
+ throw new Error(`${constants_1.LOG_PREFIX} \`viewerRequestFunctionCode\` must define ` +
137
+ `\`viewerRequest(event)\`, as a function or a \`var\`/\`let\`/` +
138
+ `\`const\`, which cdk-nextjs calls from its own viewer-request ` +
139
+ `handler.`);
140
+ }
141
+ if (/\bhandler\b/.test(userCode)) {
142
+ throw new Error(`${constants_1.LOG_PREFIX} \`viewerRequestFunctionCode\` uses the name ` +
143
+ `\`handler\`, which is cdk-nextjs's own function in the same file. ` +
144
+ `Rename it (a mention in a comment or string counts too); your entry ` +
145
+ `point is \`viewerRequest\`, called with the same event, and it may ` +
146
+ `return the same request or response.`);
147
+ }
148
+ }
149
+ /**
150
+ * The deployed code of a cdk-nextjs handler: with `userCode` first in the file
151
+ * (where CloudFront wants `import cf from "cloudfront"`) and awaited where the
152
+ * handler says {@link VIEWER_REQUEST_HOOK}, or with the marker dropped when
153
+ * there is none. Indentation is dropped too, since it counts toward the
154
+ * 10 KB; none of this code has a multi-line string for that to change.
155
+ */
156
+ function spliceViewerRequest(handler, userCode) {
157
+ const dedent = (code) => code.replace(/^[ \t]+/gm, "");
158
+ if (userCode === undefined) {
159
+ return dedent(handler.replace(exports.VIEWER_REQUEST_HOOK, ""));
160
+ }
161
+ // A response has a status; anything else returned is the request to carry
162
+ // on with. `await` takes a synchronous `viewerRequest` as it is.
163
+ return `${userCode}\n${dedent(handler.replace(exports.VIEWER_REQUEST_HOOK, `
164
+ const viewerResult = await viewerRequest(event);
165
+ if (viewerResult && viewerResult.statusCode) {
166
+ return viewerResult;
167
+ }
168
+ if (viewerResult) {
169
+ event.request = viewerResult;
170
+ }`))}`;
171
+ }
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLXJlcXVlc3QtZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3ZpZXdlci1yZXF1ZXN0LWZ1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpSEEsOERBYUM7QUFjRCx3REFzQkM7QUFTRCxrREF1QkM7QUFsTUQsNENBQTBDO0FBRTFDOzs7R0FHRztBQUVIOzs7R0FHRztBQUNVLFFBQUEsbUJBQW1CLEdBQUcscUJBQXFCLENBQUM7QUFFekQ7OztHQUdHO0FBQ1UsUUFBQSx1QkFBdUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRWpELGdFQUFnRTtBQUNoRSx5Q0FBeUM7QUFDekMscUVBQXFFO0FBQ3JFLG1FQUFtRTtBQUNuRSxzRUFBc0U7QUFDdEUsZ0VBQWdFO0FBQ2hFLHFFQUFxRTtBQUNyRSxpRUFBaUU7QUFDakUsRUFBRTtBQUNGLCtEQUErRDtBQUMvRCxzRUFBc0U7QUFDdEUsdUVBQXVFO0FBQ3ZFLDZEQUE2RDtBQUM3RCx1RUFBdUU7QUFDdkUsK0NBQStDO0FBQy9DLEVBQUU7QUFDRiw4Q0FBOEM7QUFDOUMsRUFBRTtBQUNGLGlFQUFpRTtBQUNqRSxpREFBaUQ7QUFDakQsbUVBQW1FO0FBQ25FLFFBQVE7QUFDUiw4REFBOEQ7QUFDOUQsNERBQTREO0FBQzVELCtEQUErRDtBQUMvRCw4REFBOEQ7QUFDOUQsNERBQTREO0FBQzVELEVBQUU7QUFDRixxRUFBcUU7QUFDckUsb0VBQW9FO0FBQ3BFLCtEQUErRDtBQUMvRCxvRUFBb0U7QUFDcEUsbUVBQW1FO0FBQ25FLEVBQUU7QUFDRiw0REFBNEQ7QUFDNUQsZ0VBQWdFO0FBQ2hFLHNDQUFzQztBQUN0QyxFQUFFO0FBQ0YsdUVBQXVFO0FBQ3ZFLG9FQUFvRTtBQUNwRSxtRUFBbUU7QUFDbkUsOERBQThEO0FBQzlELDBHQUEwRztBQUUxRzs7Ozs7R0FLRztBQUNVLFFBQUEsd0JBQXdCLEdBQUc7bUNBQ0wsMkJBQW1COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCbkQsQ0FBQztBQUVKOzs7R0FHRztBQUNVLFFBQUEsb0JBQW9CLEdBQUc7bUNBQ0QsMkJBQW1COzs7R0FHbkQsQ0FBQztBQUVKOzs7O0dBSUc7QUFDSCxTQUFnQix5QkFBeUIsQ0FDdkMsUUFBZ0IsRUFDaEIsV0FBbUI7SUFFbkIsT0FBTzttQ0FDMEIsMkJBQW1COztvQkFFbEMsSUFBSSxDQUFDLFNBQVMsQ0FDNUIsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQy9CLHdCQUF3QixXQUFXLENBQUMsTUFBTTs7O0dBRzVDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixzQkFBc0IsQ0FBQyxRQUFnQjtJQUNyRCxJQUNFLENBQUMsdUZBQXVGLENBQUMsSUFBSSxDQUMzRixRQUFRLENBQ1QsRUFDRCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLHNCQUFVLDZDQUE2QztZQUN4RCwrREFBK0Q7WUFDL0QsZ0VBQWdFO1lBQ2hFLFVBQVUsQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQ2IsR0FBRyxzQkFBVSwrQ0FBK0M7WUFDMUQsb0VBQW9FO1lBQ3BFLHNFQUFzRTtZQUN0RSxxRUFBcUU7WUFDckUsc0NBQXNDLENBQ3pDLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLG1CQUFtQixDQUNqQyxPQUFlLEVBQ2YsUUFBNEI7SUFFNUIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsMkJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsMEVBQTBFO0lBQzFFLGlFQUFpRTtJQUNqRSxPQUFPLEdBQUcsUUFBUSxLQUFLLE1BQU0sQ0FDM0IsT0FBTyxDQUFDLE9BQU8sQ0FDYiwyQkFBbUIsRUFDbkI7Ozs7Ozs7UUFPRSxDQUNILENBQ0YsRUFBRSxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExPR19QUkVGSVggfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbi8qKlxuICogVGhlIGNvZGUgb2YgY2RrLW5leHRqcydzIENsb3VkRnJvbnQgRnVuY3Rpb25zLCBhbmQgb2YgYHZpZXdlclJlcXVlc3RGdW5jdGlvbkNvZGVgXG4gKiBzcGxpY2VkIGludG8gdGhlbS4gUGxhaW4gc3RyaW5nczogYE5leHRqc0Rpc3RyaWJ1dGlvbmAgY3JlYXRlcyB0aGUgZnVuY3Rpb25zLlxuICovXG5cbi8qKlxuICogV2hlcmUgYSB2aWV3ZXItcmVxdWVzdCBoYW5kbGVyIGNhbGxzIGB2aWV3ZXJSZXF1ZXN0RnVuY3Rpb25Db2RlYCwgYmVmb3JlIGFueVxuICogbG9naWMgb2YgaXRzIG93bi4gUmVwbGFjZWQgYXQgc3ludGgsIG5ldmVyIGRlcGxveWVkLlxuICovXG5leHBvcnQgY29uc3QgVklFV0VSX1JFUVVFU1RfSE9PSyA9IFwiLypAdmlld2VyUmVxdWVzdEAqL1wiO1xuXG4vKipcbiAqIENsb3VkRnJvbnQncyBtYXhpbXVtIENsb3VkRnJvbnQgRnVuY3Rpb24gc2l6ZS5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL2Nsb3VkZnJvbnQtbGltaXRzLmh0bWwjbGltaXRzLWZ1bmN0aW9uc1xuICovXG5leHBvcnQgY29uc3QgTUFYX0ZVTkNUSU9OX0NPREVfQllURVMgPSAxMCAqIDEwMjQ7XG5cbi8vIE5leHQuanMgYW5zd2VycyBhbnkgcGF0aCBjb250YWluaW5nIGEgYmFja3NsYXNoIG9yIGEgcmVwZWF0ZWRcbi8vIHNsYXNoIHdpdGggYSAzMDggdG8gdGhlIGNvbGxhcHNlZCBwYXRoXG4vLyAoYG5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlc2AsIGNhbGxlZCBmcm9tIGBiYXNlLXNlcnZlci50c2ApLCBhbmQgc29cbi8vIGRvZXMgdGhpcyBydW50aW1lLiBCZWhpbmQgYSBMYW1iZGEgRnVuY3Rpb24gVVJMIHRoZSBvcmlnaW4gbmV2ZXJcbi8vIGdldHMgdGhlIGNoYW5jZTogT3JpZ2luIEFjY2VzcyBDb250cm9sIHNpZ25zIHRoZSByYXcgcGF0aCB3aGlsZSB0aGVcbi8vIEZ1bmN0aW9uIFVSTCBjYW5vbmljYWxpemVzIGl0IGJlZm9yZSB2ZXJpZnlpbmcsIHNvIHRoZSBvcmlnaW5cbi8vIGFuc3dlcnMgNDAzIFNpZ25hdHVyZURvZXNOb3RNYXRjaC4gRG9pbmcgdGhlIHJlZGlyZWN0IGhlcmUgaXMgd2hhdFxuLy8gbWFrZXMgYC9iYXNlcGF0aC8vdG8tc3ZgIGJlaGF2ZSBhcyBpdCBkb2VzIHVuZGVyIGBuZXh0IHN0YXJ0YC5cbi8vXG4vLyBBIGJhcmUgYC8vYCByZWFjaGVzIGhlcmUgdG9vLCBhbmQgaXMgYW5zd2VyZWQgdGhlIHNhbWUgd2F5IC1cbi8vIG1lYXN1cmVkLCBiZWNhdXNlIGAvL2AgYXQgdGhlIHN0YXJ0IG9mIGEgcmVxdWVzdCB0YXJnZXQgaXMgYWxzbyB0aGVcbi8vIGF1dGhvcml0eSBmb3JtIGFuZCBpdCB3YXMgbm90IG9idmlvdXMgQ2xvdWRGcm9udCB3b3VsZCByb3V0ZSBpdCB0byBhXG4vLyBmdW5jdGlvbiBhdCBhbGwuIEl0IGRvZXM6IGBHRVQgLy9gIGFuc3dlcnMgMzA4IHRvIGAvYCB3aXRoXG4vLyBgeC1jYWNoZTogRnVuY3Rpb25HZW5lcmF0ZWRSZXNwb25zZWAsIG92ZXIgYm90aCBIVFRQLzEuMSBhbmQgSFRUUC8yLFxuLy8gd2hpY2ggaXMgd2hhdCBgdGVzdC9lMmUvaHlkcmF0aW9uYCBhc2tzIGZvci5cbi8vXG4vLyBUd28gdGhpbmdzIE5leHQuanMgZG9lcyB0aGF0IHRoaXMgZG9lcyBub3Q6XG4vL1xuLy8gLSB0aGUgYm9keSBpdCBzZW5kcyB3aXRoIGl0cyBvd24gcmVkaXJlY3QgKHRoZSBkZXN0aW5hdGlvbiwgYXNcbi8vICAgdGV4dCkuIEEgZ2VuZXJhdGVkIHJlc3BvbnNlIGNhbiBjYXJyeSBvbmUgb25cbi8vICAgY2xvdWRmcm9udC1qcy0yLjAsIGJ1dCBub25lIGlzIHNlbnQgeWV0OyBubyBrbm93biBjbGllbnQgcmVhZHNcbi8vICAgaXQuXG4vLyAtIHRoZSBvcmlnaW5hbCBvcmRlciBvZiB0aGUgcXVlcnkgc3RyaW5nLiBUaGUgZXZlbnQgZXhwb3Nlc1xuLy8gICBgcXVlcnlzdHJpbmdgIGFzIGFuIG9iamVjdCwgbmV2ZXIgYXMgdGhlIHJhdyBzdHJpbmcsIHNvXG4vLyAgIGAveC8veT9hPTEmYj0yYCByZWRpcmVjdHMgdG8gYC94L3k/Yj0yJmE9MWAuIFRoZSBwYWlycyBhbGxcbi8vICAgc3Vydml2ZTsgb25seSB0aGVpciBvcmRlciBpcyBDbG91ZEZyb250J3MgcmF0aGVyIHRoYW4gdGhlXG4vLyAgIGNsaWVudCdzLCBhbmQgYSByZWRpcmVjdCB0YXJnZXQgaXMgbm90IG9yZGVyLXNlbnNpdGl2ZS5cbi8vXG4vLyBBIHJlcGVhdGVkIGtleSdzIGBtdWx0aVZhbHVlYCBhbHJlYWR5IGhvbGRzIGl0cyBmaXJzdCB2YWx1ZSwgd2hpY2hcbi8vIGB2YWx1ZWAgcmVwZWF0cywgc28gaXQgaXMgb25lIG9yIHRoZSBvdGhlciwgbmV2ZXIgYm90aC4gTmFtZXMgYW5kXG4vLyB2YWx1ZXMgYXJyaXZlIGFzIHRoZSBjbGllbnQgc2VudCB0aGVtLCBzdGlsbCBwZXJjZW50LWVuY29kZWRcbi8vIChtZWFzdXJlZDogYD9hPSUyMGIlMjZjJnA9MSsyYCByZWFkcyBiYWNrIHVuY2hhbmdlZCksIHNvIHRoZXkgYXJlXG4vLyBqb2luZWQgYXMtaXM7IGVuY29kaW5nIHRoZW0gYWdhaW4gd291bGQgdHVybiBgJTIwYCBpbnRvIGAlMjUyMGAuXG4vL1xuLy8gVGhlc2Ugbm90ZXMgbGl2ZSBvdXQgaGVyZSByYXRoZXIgdGhhbiBpbiB0aGUgY29kZSBiZWNhdXNlXG4vLyBDbG91ZEZyb250IGNvdW50cyBjb21tZW50cyB0b3dhcmQgdGhlIGZ1bmN0aW9uJ3MgMTAgS0IsIHdoaWNoXG4vLyBgdmlld2VyUmVxdWVzdEZ1bmN0aW9uQ29kZWAgc2hhcmVzLlxuLy9cbi8vIE9ubHkgdGhlIEVTNisgdGhhdCBjbG91ZGZyb250LWpzLTIuMCBkb2N1bWVudHM6IGBjb25zdGAvYGxldGAsIGFycm93XG4vLyBmdW5jdGlvbnMsIGBPYmplY3Qua2V5c2A7IG5vIGRlc3RydWN0dXJpbmcsIHNwcmVhZCBvciBgZm9yLi4ub2ZgLlxuLy8gU3RyaW5ncyBhcmUgY29uY2F0ZW5hdGVkIHJhdGhlciB0aGFuIHRlbXBsYXRlZCwgc2luY2UgYSB0ZW1wbGF0ZVxuLy8gbGl0ZXJhbCBpbiBoZXJlIHdvdWxkIG5lZWQgZXZlcnkgYmFja3RpY2sgYW5kIGAke2AgZXNjYXBlZC5cbi8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZEZyb250L2xhdGVzdC9EZXZlbG9wZXJHdWlkZS9mdW5jdGlvbnMtamF2YXNjcmlwdC1ydW50aW1lLTIwLmh0bWxcblxuLyoqXG4gKiBOZXh0anNHbG9iYWxGdW5jdGlvbnMnIHZpZXdlci1yZXF1ZXN0IGhhbmRsZXI6IHJlZGlyZWN0cyByZXBlYXRlZCBzbGFzaGVzLFxuICogYW5kIG92ZXJ3cml0ZXMgYHgtZm9yd2FyZGVkLWhvc3RgIHdpdGggdGhlIHZpZXdlcidzIGBIb3N0YCBzbyBOZXh0LmpzXG4gKiBgcmVxdWVzdC51cmxgIGlzIHRoZSBzaXRlJ3MgZG9tYWluIHJhdGhlciB0aGFuIHRoZSBGdW5jdGlvbiBVUkwncy5cbiAqIEBzZWUgaHR0cHM6Ly9vcGVuLW5leHQuanMub3JnL2FkdmFuY2VkL3dvcmthcm91bmQjd29ya2Fyb3VuZC1zZXQteC1mb3J3YXJkZWQtaG9zdC1oZWFkZXItYXdzLXNwZWNpZmljXG4gKi9cbmV4cG9ydCBjb25zdCBYX0ZPUldBUkRFRF9IT1NUX0hBTkRMRVIgPSBgXG4gIGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQpIHske1ZJRVdFUl9SRVFVRVNUX0hPT0t9XG4gICAgY29uc3QgcmVxdWVzdCA9IGV2ZW50LnJlcXVlc3Q7XG4gICAgY29uc3QgdXJpID0gcmVxdWVzdC51cmk7XG5cbiAgICBpZiAoL1xcXFxcXFxcfFxcXFwvXFxcXC8vLnRlc3QodXJpKSkge1xuICAgICAgbGV0IGxvY2F0aW9uID0gdXJpLnJlcGxhY2UoL1xcXFxcXFxcL2csIFwiL1wiKS5yZXBsYWNlKC9cXFxcL1xcXFwvKy9nLCBcIi9cIik7XG4gICAgICBjb25zdCBxcyA9IFtdO1xuICAgICAgT2JqZWN0LmtleXMocmVxdWVzdC5xdWVyeXN0cmluZykuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICBjb25zdCBxID0gcmVxdWVzdC5xdWVyeXN0cmluZ1tuYW1lXTtcbiAgICAgICAgKHEubXVsdGlWYWx1ZSB8fCBbcV0pLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgICAgcXMucHVzaChlbnRyeS52YWx1ZSA9PT0gXCJcIiA/IG5hbWUgOiBuYW1lICsgXCI9XCIgKyBlbnRyeS52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBpZiAocXMubGVuZ3RoKSB7XG4gICAgICAgIGxvY2F0aW9uICs9IFwiP1wiICsgcXMuam9pbihcIiZcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXNDb2RlOiAzMDgsXG4gICAgICAgIHN0YXR1c0Rlc2NyaXB0aW9uOiBcIlBlcm1hbmVudCBSZWRpcmVjdFwiLFxuICAgICAgICBoZWFkZXJzOiB7IGxvY2F0aW9uOiB7IHZhbHVlOiBsb2NhdGlvbiB9IH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJlcXVlc3QuaGVhZGVyc1tcIngtZm9yd2FyZGVkLWhvc3RcIl0gPSByZXF1ZXN0LmhlYWRlcnMuaG9zdDtcbiAgICByZXR1cm4gcmVxdWVzdDtcbiAgfVxuICBgO1xuXG4vKipcbiAqIFRoZSBoYW5kbGVyIG9mIGEgYmVoYXZpb3Igd2l0aCBubyB2aWV3ZXItcmVxdWVzdCBsb2dpYyBvZiBpdHMgb3duLCB3aGljaFxuICogb25seSBydW5zIGB2aWV3ZXJSZXF1ZXN0RnVuY3Rpb25Db2RlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IFBBU1NfVEhST1VHSF9IQU5ETEVSID0gYFxuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7JHtWSUVXRVJfUkVRVUVTVF9IT09LfVxuICAgIHJldHVybiBldmVudC5yZXF1ZXN0O1xuICB9XG4gIGA7XG5cbi8qKlxuICogVGhlIGBhc3NldFByZWZpeGAgYmVoYXZpb3IncyBoYW5kbGVyOiBhbiBTMyBvcmlnaW4ga2V5cyBvbiB0aGUgcmVxdWVzdCBVUklcbiAqIGFuZCBgb3JpZ2luUGF0aGAgY2FuIG9ubHkgcHJlcGVuZCwgc28gdGhlIHByZWZpeCBpcyBzd2FwcGVkIGZvciB0aGVcbiAqIGBiYXNlUGF0aGAgaGVyZS4gQm90aCBhcmUgc3ludGgtdGltZSBsaXRlcmFscy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2V0UHJlZml4UmV3cml0ZUhhbmRsZXIoXG4gIGJhc2VQYXRoOiBzdHJpbmcsXG4gIGFzc2V0UHJlZml4OiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICByZXR1cm4gYFxuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7JHtWSUVXRVJfUkVRVUVTVF9IT09LfVxuICAgIGNvbnN0IHJlcXVlc3QgPSBldmVudC5yZXF1ZXN0O1xuICAgIHJlcXVlc3QudXJpID0gJHtKU09OLnN0cmluZ2lmeShcbiAgICAgIGJhc2VQYXRoID8gYC8ke2Jhc2VQYXRofWAgOiBcIlwiLFxuICAgICl9ICsgcmVxdWVzdC51cmkuc2xpY2UoJHthc3NldFByZWZpeC5sZW5ndGh9KTtcbiAgICByZXR1cm4gcmVxdWVzdDtcbiAgfVxuICBgO1xufVxuXG4vKipcbiAqIENoZWNrcyBgdmlld2VyUmVxdWVzdEZ1bmN0aW9uQ29kZWAgZGVmaW5lcyBgdmlld2VyUmVxdWVzdGAgYW5kIGRvZXNuJ3QgdXNlXG4gKiB0aGUgbmFtZSBgaGFuZGxlcmAuXG4gKlxuICogQW55IHVzZSBvZiBgaGFuZGxlcmAgaXMgcmVmdXNlZCwgbm90IGp1c3QgYSBkZWNsYXJhdGlvbjogYW4gYXNzaWdubWVudFxuICogKGB2YXIgaGFuZGxlciA9YCwgZGVzdHJ1Y3R1cmluZywgYGdsb2JhbFRoaXNbXCJoYW5kbGVyXCJdID1gKSB3b3VsZCByZXBsYWNlXG4gKiBjZGstbmV4dGpzJ3MgaGFuZGxlciwgYW5kIHdpdGggaXQgdGhlIGB4LWZvcndhcmRlZC1ob3N0YCBvdmVyd3JpdGUsIGFuZCBhXG4gKiBgbGV0YC9gY29uc3RgL2BjbGFzc2Agd291bGQgbWFrZSB0aGUgZmlsZSBhIHN5bnRheCBlcnJvci4gVGVsbGluZyB0aGVzZVxuICogYXBhcnQgZnJvbSBhIGxvY2FsIG9mIHRoZSBzYW1lIG5hbWUgdGFrZXMgYSBwYXJzZXIsIHNvIGEgbG9jYWwsIG9yIHRoZVxuICogd29yZCBpbiBhIGNvbW1lbnQgb3Igc3RyaW5nLCBpcyByZWZ1c2VkIHRvbzsgdGhhdCBlcnJzIHRvd2FyZHMgcmVmdXNpbmdcbiAqIGNvZGUgdGhhdCB3b3VsZCBoYXZlIHdvcmtlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrVmlld2VyUmVxdWVzdENvZGUodXNlckNvZGU6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoXG4gICAgIS9cXGJmdW5jdGlvblxccyt2aWV3ZXJSZXF1ZXN0XFxzKlxcKHwoPzpcXGIoPzp2YXJ8bGV0fGNvbnN0KVxccyt8LFxccyopdmlld2VyUmVxdWVzdFxccyo9KD8hPSkvLnRlc3QoXG4gICAgICB1c2VyQ29kZSxcbiAgICApXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke0xPR19QUkVGSVh9IFxcYHZpZXdlclJlcXVlc3RGdW5jdGlvbkNvZGVcXGAgbXVzdCBkZWZpbmUgYCArXG4gICAgICAgIGBcXGB2aWV3ZXJSZXF1ZXN0KGV2ZW50KVxcYCwgYXMgYSBmdW5jdGlvbiBvciBhIFxcYHZhclxcYC9cXGBsZXRcXGAvYCArXG4gICAgICAgIGBcXGBjb25zdFxcYCwgd2hpY2ggY2RrLW5leHRqcyBjYWxscyBmcm9tIGl0cyBvd24gdmlld2VyLXJlcXVlc3QgYCArXG4gICAgICAgIGBoYW5kbGVyLmAsXG4gICAgKTtcbiAgfVxuICBpZiAoL1xcYmhhbmRsZXJcXGIvLnRlc3QodXNlckNvZGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYCR7TE9HX1BSRUZJWH0gXFxgdmlld2VyUmVxdWVzdEZ1bmN0aW9uQ29kZVxcYCB1c2VzIHRoZSBuYW1lIGAgK1xuICAgICAgICBgXFxgaGFuZGxlclxcYCwgd2hpY2ggaXMgY2RrLW5leHRqcydzIG93biBmdW5jdGlvbiBpbiB0aGUgc2FtZSBmaWxlLiBgICtcbiAgICAgICAgYFJlbmFtZSBpdCAoYSBtZW50aW9uIGluIGEgY29tbWVudCBvciBzdHJpbmcgY291bnRzIHRvbyk7IHlvdXIgZW50cnkgYCArXG4gICAgICAgIGBwb2ludCBpcyBcXGB2aWV3ZXJSZXF1ZXN0XFxgLCBjYWxsZWQgd2l0aCB0aGUgc2FtZSBldmVudCwgYW5kIGl0IG1heSBgICtcbiAgICAgICAgYHJldHVybiB0aGUgc2FtZSByZXF1ZXN0IG9yIHJlc3BvbnNlLmAsXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBkZXBsb3llZCBjb2RlIG9mIGEgY2RrLW5leHRqcyBoYW5kbGVyOiB3aXRoIGB1c2VyQ29kZWAgZmlyc3QgaW4gdGhlIGZpbGVcbiAqICh3aGVyZSBDbG91ZEZyb250IHdhbnRzIGBpbXBvcnQgY2YgZnJvbSBcImNsb3VkZnJvbnRcImApIGFuZCBhd2FpdGVkIHdoZXJlIHRoZVxuICogaGFuZGxlciBzYXlzIHtAbGluayBWSUVXRVJfUkVRVUVTVF9IT09LfSwgb3Igd2l0aCB0aGUgbWFya2VyIGRyb3BwZWQgd2hlblxuICogdGhlcmUgaXMgbm9uZS4gSW5kZW50YXRpb24gaXMgZHJvcHBlZCB0b28sIHNpbmNlIGl0IGNvdW50cyB0b3dhcmQgdGhlXG4gKiAxMCBLQjsgbm9uZSBvZiB0aGlzIGNvZGUgaGFzIGEgbXVsdGktbGluZSBzdHJpbmcgZm9yIHRoYXQgdG8gY2hhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaWNlVmlld2VyUmVxdWVzdChcbiAgaGFuZGxlcjogc3RyaW5nLFxuICB1c2VyQ29kZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgZGVkZW50ID0gKGNvZGU6IHN0cmluZykgPT4gY29kZS5yZXBsYWNlKC9eWyBcXHRdKy9nbSwgXCJcIik7XG4gIGlmICh1c2VyQ29kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGRlZGVudChoYW5kbGVyLnJlcGxhY2UoVklFV0VSX1JFUVVFU1RfSE9PSywgXCJcIikpO1xuICB9XG4gIC8vIEEgcmVzcG9uc2UgaGFzIGEgc3RhdHVzOyBhbnl0aGluZyBlbHNlIHJldHVybmVkIGlzIHRoZSByZXF1ZXN0IHRvIGNhcnJ5XG4gIC8vIG9uIHdpdGguIGBhd2FpdGAgdGFrZXMgYSBzeW5jaHJvbm91cyBgdmlld2VyUmVxdWVzdGAgYXMgaXQgaXMuXG4gIHJldHVybiBgJHt1c2VyQ29kZX1cXG4ke2RlZGVudChcbiAgICBoYW5kbGVyLnJlcGxhY2UoXG4gICAgICBWSUVXRVJfUkVRVUVTVF9IT09LLFxuICAgICAgYFxuICAgICAgY29uc3Qgdmlld2VyUmVzdWx0ID0gYXdhaXQgdmlld2VyUmVxdWVzdChldmVudCk7XG4gICAgICBpZiAodmlld2VyUmVzdWx0ICYmIHZpZXdlclJlc3VsdC5zdGF0dXNDb2RlKSB7XG4gICAgICAgIHJldHVybiB2aWV3ZXJSZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAodmlld2VyUmVzdWx0KSB7XG4gICAgICAgIGV2ZW50LnJlcXVlc3QgPSB2aWV3ZXJSZXN1bHQ7XG4gICAgICB9YCxcbiAgICApLFxuICApfWA7XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ export {};