@restatedev/restate-cdk 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RELEASING.md +3 -1
- package/dist/fargate-restate-deployment.js +2 -2
- package/dist/register-service-handler/index.mjs +2 -2
- package/dist/service-deployer.js +2 -2
- package/dist/single-node-restate-deployment.js +20 -11
- package/lib/restate-constructs/register-service-handler/index.mts +1 -1
- package/package.json +4 -4
- package/test/__snapshots__/restate-constructs.test.ts.snap +240 -11
package/RELEASING.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
# Releasing the package
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
- Update `RESTATE_DOCKER_DEFAULT_TAG` / `RESTATE_NPM_DEFAULT_TAG`
|
|
4
|
+
- Update version in `package.json`
|
|
5
|
+
- Create and publish a new release in [GitHub](https://github.com/restatedev/cdk/releases)
|
|
@@ -60,7 +60,7 @@ const PUBLIC_ADMIN_PORT = 9070;
|
|
|
60
60
|
const RESTATE_INGRESS_PORT = 8080;
|
|
61
61
|
const RESTATE_ADMIN_PORT = 9070;
|
|
62
62
|
const RESTATE_IMAGE_DEFAULT = "docker.restate.dev/restatedev/restate";
|
|
63
|
-
const RESTATE_DOCKER_DEFAULT_TAG = "1.
|
|
63
|
+
const RESTATE_DOCKER_DEFAULT_TAG = "1.5";
|
|
64
64
|
const ADOT_DOCKER_DEFAULT_TAG = "latest";
|
|
65
65
|
/**
|
|
66
66
|
* Creates a Restate service deployment running as a Fargate task and backed by EFS.
|
|
@@ -248,4 +248,4 @@ class FargateRestateDeployment extends constructs_1.Construct {
|
|
|
248
248
|
}
|
|
249
249
|
}
|
|
250
250
|
exports.FargateRestateDeployment = FargateRestateDeployment;
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFyZ2F0ZS1yZXN0YXRlLWRlcGxveW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvcmVzdGF0ZS1jb25zdHJ1Y3RzL2ZhcmdhdGUtcmVzdGF0ZS1kZXBsb3ltZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDJDQUF1QztBQUN2QyxpREFBbUM7QUFDbkMsd0VBQTBEO0FBQzFELDJEQUE2QztBQUM3Qyx5REFBMkM7QUFDM0MseURBQTJDO0FBQzNDLHlEQUEyQztBQUMzQyx5REFBMkM7QUFDM0MsNkVBQStEO0FBQy9ELDZEQUErQztBQUMvQyx5RUFBMkQ7QUFJM0QsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDL0IsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFDbEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDaEMsTUFBTSxxQkFBcUIsR0FBRyx1Q0FBdUMsQ0FBQztBQUN0RSxNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQztBQUN6QyxNQUFNLHVCQUF1QixHQUFHLFFBQVEsQ0FBQztBQW9FekM7Ozs7R0FJRztBQUNILE1BQWEsd0JBQXlCLFNBQVEsc0JBQVM7SUFXckQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFN0UsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxxQkFBcUIsQ0FBQztRQUNq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QyxVQUFVLEdBQUcsV0FBVyxLQUFLLENBQUMsT0FBTyxHQUFHLG1CQUFtQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztRQUMzRyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsS0FBSyxDQUFDLE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xFLENBQUM7Q0FDRjtBQW5ORCw0REFtTkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIzLTIwMjUgLSBSZXN0YXRlIFNvZnR3YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBDREsgQ29uc3RydWN0IExpYnJhcnksXG4gKiB3aGljaCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKlxuICogWW91IGNhbiBmaW5kIGEgY29weSBvZiB0aGUgbGljZW5zZSBpbiBmaWxlIExJQ0VOU0UgaW4gdGhlIHJvb3RcbiAqIGRpcmVjdG9yeSBvZiB0aGlzIHJlcG9zaXRvcnkgb3IgcGFja2FnZSwgb3IgYXRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXN0YXRlZGV2L3Nkay10eXBlc2NyaXB0L2Jsb2IvbWFpbi9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGFjbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCAqIGFzIGVmcyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVmc1wiO1xuaW1wb3J0ICogYXMgZWxiMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcbmltcG9ydCAqIGFzIHI1MyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCAqIGFzIHRhcmdldHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzLXRhcmdldHNcIjtcbmltcG9ydCB7IElSZXN0YXRlRW52aXJvbm1lbnQgfSBmcm9tIFwiLi9yZXN0YXRlLWVudmlyb25tZW50XCI7XG5pbXBvcnQgeyBUcmFjaW5nTW9kZSB9IGZyb20gXCIuL2RlcGxveW1lbnRzLWNvbW1vblwiO1xuXG5jb25zdCBQVUJMSUNfSU5HUkVTU19QT1JUID0gNDQzO1xuY29uc3QgUFVCTElDX0FETUlOX1BPUlQgPSA5MDcwO1xuY29uc3QgUkVTVEFURV9JTkdSRVNTX1BPUlQgPSA4MDgwO1xuY29uc3QgUkVTVEFURV9BRE1JTl9QT1JUID0gOTA3MDtcbmNvbnN0IFJFU1RBVEVfSU1BR0VfREVGQVVMVCA9IFwiZG9ja2VyLnJlc3RhdGUuZGV2L3Jlc3RhdGVkZXYvcmVzdGF0ZVwiO1xuY29uc3QgUkVTVEFURV9ET0NLRVJfREVGQVVMVF9UQUcgPSBcIjEuNFwiO1xuY29uc3QgQURPVF9ET0NLRVJfREVGQVVMVF9UQUcgPSBcImxhdGVzdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RhdGVGYXJnYXRlUHJvcHMge1xuICAvKiogVGhlIFZQQyBpbiB3aGljaCB0byBsYXVuY2ggdGhlIFJlc3RhdGUgaG9zdC4gKi9cbiAgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqIExvZyBncm91cCBmb3IgUmVzdGF0ZSBzZXJ2aWNlIGxvZ3MuICovXG4gIGxvZ0dyb3VwPzogbG9ncy5Mb2dHcm91cDtcblxuICAvKiogVHJhY2luZyBtb2RlIGZvciBSZXN0YXRlIHNlcnZpY2VzLiBEZWZhdWx0cyB0byB7QGxpbmsgVHJhY2luZ01vZGUuRElTQUJMRUR9LiAqL1xuICB0cmFjaW5nPzogVHJhY2luZ01vZGU7XG5cbiAgLyoqIFByZWZpeCBmb3IgcmVzb3VyY2VzIGNyZWF0ZWQgYnkgdGhpcyBjb25zdHJ1Y3QgdGhhdCByZXF1aXJlIHVuaXF1ZSBuYW1lcy4gKi9cbiAgcHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKiBFQ1MgY2x1c3RlciBuYW1lLiAqL1xuICBjbHVzdGVyTmFtZT86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgbmFtZS4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIHJlc3RhdGVJbWFnZT86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgdGFnLiBEZWZhdWx0cyB0byBgbGF0ZXN0YC4gKi9cbiAgcmVzdGF0ZVRhZz86IHN0cmluZztcblxuICAvKiogQW1hem9uIERpc3RybyBmb3IgT3BlbiBUZWxlbWV0cnkgRG9ja2VyIGltYWdlIHRhZy4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIGFkb3RUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IGZvciBSZXN0YXRlIGNvbnRhaW5lci4gVXNlIGl0IHRvIGNvbmZpZ3VyZSBsb2dnaW5nIGFuZCBvdGhlciBwcm9jZXNzLWxldmVsIHNldHRpbmdzLlxuICAgKi9cbiAgZW52aXJvbm1lbnQ/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBSZXN0YXRlIGNvbnRhaW5lciBleHRyYSBhcmd1bWVudHMuXG4gICAqL1xuICBjb21tYW5kPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBmdWxsIG5hbWUgZm9yIHRoZSBwdWJsaWMgZW5kcG9pbnQuXG4gICAqL1xuICBkbnNOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEROUyB6b25lIGluIHdoaWNoIHRvIGNyZWF0ZSB0aGUgcHVibGljIGVuZHBvaW50LlxuICAgKi9cbiAgaG9zdGVkWm9uZTogcjUzLklIb3N0ZWRab25lO1xuXG4gIC8qKlxuICAgKiBSZW1vdmFsIHBvbGljeSBmb3IgbG9uZy1saXZlZCByZXNvdXJjZXMgKHN0b3JhZ2UsIGxvZ3MpLiBEZWZhdWx0OiBgY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWWAuXG4gICAqL1xuICByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGxvYWRCYWxhbmNlcj86IHtcbiAgICAvKiogQHNlZSBCYXNlTG9hZEJhbGFuY2VyUHJvcHMuaW50ZXJuZXRGYWNpbmcgKi9cbiAgICBpbnRlcm5ldEZhY2luZz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB5b3Ugc2V0IHRoaXMgdG8gZmFsc2UsIHlvdSBjYW4gY3VzdG9taXplIHRoZSBhY2Nlc3MgdG8gdGhlIHBhaXIgb2YgQUxCIGxpc3RlbmVycyB2aWFcbiAgICAgKiB7QGxpbmsgRmFyZ2F0ZVJlc3RhdGVEZXBsb3ltZW50LmluZ3Jlc3NMaXN0ZW5lcn0gYW5kIHtAbGluayBGYXJnYXRlUmVzdGF0ZURlcGxveW1lbnQuYWRtaW5MaXN0ZW5lcn0uXG4gICAgICpcbiAgICAgKiBAc2VlIEJhc2VBcHBsaWNhdGlvbkxpc3RlbmVyUHJvcHMub3BlbiAqL1xuICAgIG9wZW4/OiBib29sZWFuO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBSZXN0YXRlIHNlcnZpY2UgZGVwbG95bWVudCBydW5uaW5nIGFzIGEgRmFyZ2F0ZSB0YXNrIGFuZCBiYWNrZWQgYnkgRUZTLlxuICpcbiAqIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBjb25zdHJ1Y3QgaXMgc3RpbGwgZXhwZXJpbWVudGFsISBVc2Ugd2l0aCBjYXV0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgRmFyZ2F0ZVJlc3RhdGVEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVJlc3RhdGVFbnZpcm9ubWVudCB7XG4gIHJlYWRvbmx5IGludm9rZXJSb2xlOiBpYW0uSVJvbGU7XG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgcmVhZG9ubHkgaW5ncmVzc1VybDogc3RyaW5nO1xuICByZWFkb25seSBhZG1pblVybDogc3RyaW5nO1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwOiBlYzIuU2VjdXJpdHlHcm91cDtcbiAgcmVhZG9ubHkgZGF0YVN0b3JlOiBlZnMuRmlsZVN5c3RlbTtcbiAgcmVhZG9ubHkgaW5ncmVzc0xpc3RlbmVyOiBlbGIyLkFwcGxpY2F0aW9uTGlzdGVuZXI7XG4gIHJlYWRvbmx5IGFkbWluTGlzdGVuZXI6IGVsYjIuQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmVzdGF0ZUZhcmdhdGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnZwYyA9IHByb3BzLnZwYyA/PyBlYzIuVnBjLmZyb21Mb29rdXAodGhpcywgXCJWcGNcIiwgeyBpc0RlZmF1bHQ6IHRydWUgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlSW1hZ2UgPSBwcm9wcy5yZXN0YXRlSW1hZ2UgPz8gUkVTVEFURV9JTUFHRV9ERUZBVUxUO1xuICAgIGNvbnN0IHJlc3RhdGVUYWcgPSBwcm9wcy5yZXN0YXRlVGFnID8/IFJFU1RBVEVfRE9DS0VSX0RFRkFVTFRfVEFHO1xuICAgIGNvbnN0IGFkb3RUYWcgPSBwcm9wcy5hZG90VGFnID8/IEFET1RfRE9DS0VSX0RFRkFVTFRfVEFHOyAvLyBUT0RPOiBhZGQgWC1SYXkgc3VwcG9ydCBsaWtlIHdlIGhhdmUgZm9yIEVDMlxuXG4gICAgY29uc3QgZnMgPSBuZXcgZWZzLkZpbGVTeXN0ZW0odGhpcywgXCJEYXRhU3RvcmVcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGxpZmVjeWNsZVBvbGljeTogZWZzLkxpZmVjeWNsZVBvbGljeS5BRlRFUl8zMF9EQVlTLFxuICAgICAgcGVyZm9ybWFuY2VNb2RlOiBlZnMuUGVyZm9ybWFuY2VNb2RlLkdFTkVSQUxfUFVSUE9TRSxcbiAgICAgIHRocm91Z2hwdXRNb2RlOiBlZnMuVGhyb3VnaHB1dE1vZGUuQlVSU1RJTkcsXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgfSk7XG4gICAgZnMuYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgc2lkOiBcIkFsbG93RWZzTW91bnRcIixcbiAgICAgICAgYWN0aW9uczogW1wiZWxhc3RpY2ZpbGVzeXN0ZW06Q2xpZW50TW91bnRcIl0sXG4gICAgICAgIC8vIFJlc3RyaWN0aW5nIHRvIHRoZSBFQ1MgZXhlY3V0aW9uIHJvbGUgZG9lcyBub3Qgd29yazsgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgLSBFRlMgYWNjZXNzIGlzIHNlY3VyZWQgYnkgYSBzZWN1cml0eSBncm91cFxuICAgICAgICBwcmluY2lwYWxzOiBbbmV3IGlhbS5BbnlQcmluY2lwYWwoKV0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBCb29sOiB7XG4gICAgICAgICAgICBcImVsYXN0aWNmaWxlc3lzdGVtOkFjY2Vzc2VkVmlhTW91bnRUYXJnZXRcIjogXCJ0cnVlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgdGhpcy5kYXRhU3RvcmUgPSBmcztcblxuICAgIGNvbnN0IGNsdXN0ZXIgPSBuZXcgZWNzLkNsdXN0ZXIodGhpcywgXCJDbHVzdGVyXCIsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBjbHVzdGVyTmFtZTogcHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlVGFzayA9IG5ldyBlY3MuRmFyZ2F0ZVRhc2tEZWZpbml0aW9uKHRoaXMsIFwiUmVzdGF0ZVRhc2tcIiwge1xuICAgICAgY3B1OiA0MDk2LFxuICAgICAgbWVtb3J5TGltaXRNaUI6IDgxOTIsXG4gICAgICBydW50aW1lUGxhdGZvcm06IHtcbiAgICAgICAgY3B1QXJjaGl0ZWN0dXJlOiBlY3MuQ3B1QXJjaGl0ZWN0dXJlLkFSTTY0LFxuICAgICAgICBvcGVyYXRpbmdTeXN0ZW1GYW1pbHk6IGVjcy5PcGVyYXRpbmdTeXN0ZW1GYW1pbHkuTElOVVgsXG4gICAgICB9LFxuICAgICAgdm9sdW1lczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJyZXN0YXRlU3RvcmVcIixcbiAgICAgICAgICBlZnNWb2x1bWVDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICBmaWxlU3lzdGVtSWQ6IGZzLmZpbGVTeXN0ZW1JZCxcbiAgICAgICAgICAgIGF1dGhvcml6YXRpb25Db25maWc6IHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gVE9ETzogU3RhcnQgYW4gQURPVCBjb250YWluZXIgYW5kIGhvb2sgaXQgdXAgdG8gUmVzdGF0ZSBhbmQgQVdTIFgtUmF5IG9yIGFub3RoZXIgT1RlbCBzaW5rXG4gICAgLy8gaWYgKHByb3BzLnRyYWNpbmcgPT09IFRyYWNpbmdNb2RlLkFXU19YUkFZKSB7XG4gICAgLy8gICByZXN0YXRlVGFzay50YXNrUm9sZS5hZGRNYW5hZ2VkUG9saWN5KGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcIkFXU1hyYXlXcml0ZU9ubHlBY2Nlc3NcIikpO1xuICAgIC8vIH1cblxuICAgIG5ldyBpYW0uUG9saWN5KHRoaXMsIFwiVGFza1BvbGljeVwiLCB7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBzaWQ6IFwiQWxsb3dBc3N1bWVBbnlSb2xlXCIsXG4gICAgICAgICAgYWN0aW9uczogW1wic3RzOkFzc3VtZVJvbGVcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLCAvLyB3ZSBkb24ndCBrbm93IHVwZnJvbnQgd2hhdCBpbnZva2VyIHJvbGVzIHdlIG1heSBiZSBhc2tlZCB0byBhc3N1bWUgYXQgcnVudGltZVxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSkuYXR0YWNoVG9Sb2xlKHJlc3RhdGVUYXNrLnRhc2tSb2xlKTtcblxuICAgIGNvbnN0IGludm9rZXJSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiSW52b2tlclJvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLkFyblByaW5jaXBhbChyZXN0YXRlVGFzay50YXNrUm9sZS5yb2xlQXJuKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFzc3VtZWQgYnkgUmVzdGF0ZSBkZXBsb3ltZW50IHRvIGludm9rZSBMYW1iZGEtYmFzZWQgc2VydmljZXNcIixcbiAgICB9KTtcbiAgICBpbnZva2VyUm9sZS5ncmFudEFzc3VtZVJvbGUocmVzdGF0ZVRhc2sudGFza1JvbGUpO1xuICAgIHRoaXMuaW52b2tlclJvbGUgPSBpbnZva2VyUm9sZTtcblxuICAgIGNvbnN0IGxvZ0dyb3VwID1cbiAgICAgIHByb3BzLmxvZ0dyb3VwID8/XG4gICAgICBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCBcIkxvZ3NcIiwge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGAvcmVzdGF0ZS8ke2lkfWAsXG4gICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlID0gcmVzdGF0ZVRhc2suYWRkQ29udGFpbmVyKFwiUmVzdGF0ZVwiLCB7XG4gICAgICBjb250YWluZXJOYW1lOiBcInJlc3RhdGUtcnVudGltZVwiLFxuICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tUmVnaXN0cnkoYCR7cmVzdGF0ZUltYWdlfToke3Jlc3RhdGVUYWd9YCksXG4gICAgICBwb3J0TWFwcGluZ3M6IFt7IGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfSU5HUkVTU19QT1JUIH0sIHsgY29udGFpbmVyUG9ydDogUkVTVEFURV9BRE1JTl9QT1JUIH1dLFxuICAgICAgbG9nZ2luZzogZWNzLkxvZ0RyaXZlci5hd3NMb2dzKHtcbiAgICAgICAgbG9nR3JvdXAsXG4gICAgICAgIHN0cmVhbVByZWZpeDogXCJyZXN0YXRlXCIsXG4gICAgICB9KSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFJFU1RBVEVfTE9HX0ZPUk1BVDogXCJqc29uXCIsXG4gICAgICAgIFJFU1RBVEVfTk9ERV9OQU1FOiBcImZhcmdhdGVcIixcbiAgICAgIH0sXG4gICAgICBjb21tYW5kOiBwcm9wcy5jb21tYW5kLFxuICAgICAgc3RhcnRUaW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcygyMCksXG4gICAgICBzdG9wVGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMjApLFxuICAgIH0pO1xuICAgIHJlc3RhdGUuYWRkTW91bnRQb2ludHMoe1xuICAgICAgY29udGFpbmVyUGF0aDogXCIvcmVzdGF0ZS1kYXRhXCIsXG4gICAgICByZWFkT25seTogZmFsc2UsXG4gICAgICBzb3VyY2VWb2x1bWU6IFwicmVzdGF0ZVN0b3JlXCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlU2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBcIlNlY3VyaXR5R3JvdXBcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5zZWN1cml0eUdyb3VwID0gcmVzdGF0ZVNlY3VyaXR5R3JvdXA7XG5cbiAgICBjb25zdCByZXN0YXRlRmFyZ2F0ZVNlcnZpY2UgPSBuZXcgZWNzLkZhcmdhdGVTZXJ2aWNlKHRoaXMsIFwiU2VydmljZVwiLCB7XG4gICAgICBjbHVzdGVyLFxuICAgICAgdGFza0RlZmluaXRpb246IHJlc3RhdGVUYXNrLFxuICAgICAgYXNzaWduUHVibGljSXA6IHRydWUsXG4gICAgICBjaXJjdWl0QnJlYWtlcjoge1xuICAgICAgICBlbmFibGU6IHRydWUsXG4gICAgICAgIHJvbGxiYWNrOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAwLCAvLyBhbGxvdyBzY2FsZSBkb3duIHRvIHplcm8gZHVyaW5nIGRlcGxveW1lbnRzIChyZXF1aXJlZCBmb3IgYXQtbW9zdC0xIG1heCBzZXR0aW5nKVxuICAgICAgbWF4SGVhbHRoeVBlcmNlbnQ6IDEwMCwgLy8gZG9uJ3Qgc3RhcnQgbW9yZSB0aGFuIG9uZSBjb3B5XG4gICAgICBzZWN1cml0eUdyb3VwczogW3Jlc3RhdGVTZWN1cml0eUdyb3VwXSxcbiAgICB9KTtcblxuICAgIGZzLmNvbm5lY3Rpb25zLmFsbG93RGVmYXVsdFBvcnRGcm9tKHJlc3RhdGVTZWN1cml0eUdyb3VwKTtcbiAgICBmcy5jb25uZWN0aW9ucy5hbGxvd0RlZmF1bHRQb3J0VG8ocmVzdGF0ZVNlY3VyaXR5R3JvdXApO1xuICAgIGZzLmdyYW50Um9vdEFjY2VzcyhyZXN0YXRlRmFyZ2F0ZVNlcnZpY2UudGFza0RlZmluaXRpb24udGFza1JvbGUuZ3JhbnRQcmluY2lwYWwpO1xuXG4gICAgY29uc3QgYWxiID0gbmV3IGVsYjIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIodGhpcywgXCJBbGJcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGludGVybmV0RmFjaW5nOiBwcm9wcy5sb2FkQmFsYW5jZXI/LmludGVybmV0RmFjaW5nLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcHVibGljQXBpQ2VydGlmaWNhdGUgPSBuZXcgYWNtLkNlcnRpZmljYXRlKHRoaXMsIFwiQ2VydGlmaWNhdGVcIiwge1xuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG5zTmFtZSxcbiAgICAgIHZhbGlkYXRpb246IGFjbS5DZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURucyhwcm9wcy5ob3N0ZWRab25lKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGluZ3Jlc3NMaXN0ZW5lciA9IGFsYi5hZGRMaXN0ZW5lcihcIkluZ3Jlc3NMaXN0ZW5lclwiLCB7XG4gICAgICBwb3J0OiBQVUJMSUNfSU5HUkVTU19QT1JULFxuICAgICAgcHJvdG9jb2w6IGVsYjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUyxcbiAgICAgIGNlcnRpZmljYXRlczogW3B1YmxpY0FwaUNlcnRpZmljYXRlXSxcbiAgICAgIG9wZW46IHByb3BzLmxvYWRCYWxhbmNlcj8ub3BlbixcbiAgICB9KTtcbiAgICBpbmdyZXNzTGlzdGVuZXIuYWRkVGFyZ2V0cyhcIkZhcmdhdGVJbmdyZXNzVGFyZ2V0XCIsIHtcbiAgICAgIHRhcmdldHM6IFtcbiAgICAgICAgcmVzdGF0ZUZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlclRhcmdldCh7XG4gICAgICAgICAgY29udGFpbmVyTmFtZTogcmVzdGF0ZS5jb250YWluZXJOYW1lLFxuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfSU5HUkVTU19QT1JULFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgICBwb3J0OiBSRVNUQVRFX0lOR1JFU1NfUE9SVCxcbiAgICAgIHByb3RvY29sOiBlbGIyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCxcbiAgICAgIGhlYWx0aENoZWNrOiB7XG4gICAgICAgIHBhdGg6IFwiL3Jlc3RhdGUvaGVhbHRoXCIsXG4gICAgICAgIGludGVydmFsOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgaGVhbHRoeVRocmVzaG9sZENvdW50OiAzLFxuICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogMyxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMiksXG4gICAgICB9LFxuICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogY2RrLkR1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgfSk7XG4gICAgdGhpcy5pbmdyZXNzTGlzdGVuZXIgPSBpbmdyZXNzTGlzdGVuZXI7XG5cbiAgICBjb25zdCBhZG1pbkxpc3RlbmVyID0gYWxiLmFkZExpc3RlbmVyKFwiQWRtaW5MaXN0ZW5lclwiLCB7XG4gICAgICBwb3J0OiBQVUJMSUNfQURNSU5fUE9SVCxcbiAgICAgIHByb3RvY29sOiBlbGIyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMsXG4gICAgICBjZXJ0aWZpY2F0ZXM6IFtwdWJsaWNBcGlDZXJ0aWZpY2F0ZV0sXG4gICAgfSk7XG4gICAgYWRtaW5MaXN0ZW5lci5hZGRUYXJnZXRzKFwiRmFyZ2F0ZUFkbWluVGFyZ2V0XCIsIHtcbiAgICAgIHRhcmdldHM6IFtcbiAgICAgICAgcmVzdGF0ZUZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlclRhcmdldCh7XG4gICAgICAgICAgY29udGFpbmVyTmFtZTogcmVzdGF0ZS5jb250YWluZXJOYW1lLFxuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfQURNSU5fUE9SVCxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgcG9ydDogUkVTVEFURV9BRE1JTl9QT1JULFxuICAgICAgcHJvdG9jb2w6IGVsYjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQLFxuICAgICAgaGVhbHRoQ2hlY2s6IHtcbiAgICAgICAgcGF0aDogXCIvaGVhbHRoXCIsXG4gICAgICAgIGludGVydmFsOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgaGVhbHRoeVRocmVzaG9sZENvdW50OiAzLFxuICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogMyxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMiksXG4gICAgICB9LFxuICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogY2RrLkR1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgfSk7XG4gICAgdGhpcy5hZG1pbkxpc3RlbmVyID0gYWRtaW5MaXN0ZW5lcjtcblxuICAgIG5ldyByNTMuQVJlY29yZCh0aGlzLCBcIkFsYkFsaWFzXCIsIHtcbiAgICAgIHpvbmU6IHByb3BzLmhvc3RlZFpvbmUsXG4gICAgICByZWNvcmROYW1lOiBwcm9wcy5kbnNOYW1lLnNwbGl0KFwiLlwiKVswXSxcbiAgICAgIHRhcmdldDogcjUzLlJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IHRhcmdldHMuTG9hZEJhbGFuY2VyVGFyZ2V0KGFsYikpLFxuICAgICAgLy8gb3RoZXIgQVJlY29yZCBjb25maWd1cmF0aW9uLi4uXG4gICAgfSk7XG5cbiAgICB0aGlzLmluZ3Jlc3NVcmwgPSBgaHR0cHM6Ly8ke3Byb3BzLmRuc05hbWV9JHtQVUJMSUNfSU5HUkVTU19QT1JUID09IDQ0MyA/IFwiXCIgOiBgOiR7UFVCTElDX0lOR1JFU1NfUE9SVH1gfWA7XG4gICAgdGhpcy5hZG1pblVybCA9IGBodHRwczovLyR7cHJvcHMuZG5zTmFtZX06JHtQVUJMSUNfQURNSU5fUE9SVH1gO1xuICB9XG59XG4iXX0=
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFyZ2F0ZS1yZXN0YXRlLWRlcGxveW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvcmVzdGF0ZS1jb25zdHJ1Y3RzL2ZhcmdhdGUtcmVzdGF0ZS1kZXBsb3ltZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDJDQUF1QztBQUN2QyxpREFBbUM7QUFDbkMsd0VBQTBEO0FBQzFELDJEQUE2QztBQUM3Qyx5REFBMkM7QUFDM0MseURBQTJDO0FBQzNDLHlEQUEyQztBQUMzQyx5REFBMkM7QUFDM0MsNkVBQStEO0FBQy9ELDZEQUErQztBQUMvQyx5RUFBMkQ7QUFJM0QsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDL0IsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFDbEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDaEMsTUFBTSxxQkFBcUIsR0FBRyx1Q0FBdUMsQ0FBQztBQUN0RSxNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQztBQUN6QyxNQUFNLHVCQUF1QixHQUFHLFFBQVEsQ0FBQztBQW9FekM7Ozs7R0FJRztBQUNILE1BQWEsd0JBQXlCLFNBQVEsc0JBQVM7SUFXckQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFN0UsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxxQkFBcUIsQ0FBQztRQUNq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QyxVQUFVLEdBQUcsV0FBVyxLQUFLLENBQUMsT0FBTyxHQUFHLG1CQUFtQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztRQUMzRyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsS0FBSyxDQUFDLE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xFLENBQUM7Q0FDRjtBQW5ORCw0REFtTkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIzLTIwMjUgLSBSZXN0YXRlIFNvZnR3YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBDREsgQ29uc3RydWN0IExpYnJhcnksXG4gKiB3aGljaCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKlxuICogWW91IGNhbiBmaW5kIGEgY29weSBvZiB0aGUgbGljZW5zZSBpbiBmaWxlIExJQ0VOU0UgaW4gdGhlIHJvb3RcbiAqIGRpcmVjdG9yeSBvZiB0aGlzIHJlcG9zaXRvcnkgb3IgcGFja2FnZSwgb3IgYXRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXN0YXRlZGV2L3Nkay10eXBlc2NyaXB0L2Jsb2IvbWFpbi9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGFjbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCAqIGFzIGVmcyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVmc1wiO1xuaW1wb3J0ICogYXMgZWxiMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcbmltcG9ydCAqIGFzIHI1MyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCAqIGFzIHRhcmdldHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzLXRhcmdldHNcIjtcbmltcG9ydCB7IElSZXN0YXRlRW52aXJvbm1lbnQgfSBmcm9tIFwiLi9yZXN0YXRlLWVudmlyb25tZW50XCI7XG5pbXBvcnQgeyBUcmFjaW5nTW9kZSB9IGZyb20gXCIuL2RlcGxveW1lbnRzLWNvbW1vblwiO1xuXG5jb25zdCBQVUJMSUNfSU5HUkVTU19QT1JUID0gNDQzO1xuY29uc3QgUFVCTElDX0FETUlOX1BPUlQgPSA5MDcwO1xuY29uc3QgUkVTVEFURV9JTkdSRVNTX1BPUlQgPSA4MDgwO1xuY29uc3QgUkVTVEFURV9BRE1JTl9QT1JUID0gOTA3MDtcbmNvbnN0IFJFU1RBVEVfSU1BR0VfREVGQVVMVCA9IFwiZG9ja2VyLnJlc3RhdGUuZGV2L3Jlc3RhdGVkZXYvcmVzdGF0ZVwiO1xuY29uc3QgUkVTVEFURV9ET0NLRVJfREVGQVVMVF9UQUcgPSBcIjEuNVwiO1xuY29uc3QgQURPVF9ET0NLRVJfREVGQVVMVF9UQUcgPSBcImxhdGVzdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RhdGVGYXJnYXRlUHJvcHMge1xuICAvKiogVGhlIFZQQyBpbiB3aGljaCB0byBsYXVuY2ggdGhlIFJlc3RhdGUgaG9zdC4gKi9cbiAgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqIExvZyBncm91cCBmb3IgUmVzdGF0ZSBzZXJ2aWNlIGxvZ3MuICovXG4gIGxvZ0dyb3VwPzogbG9ncy5Mb2dHcm91cDtcblxuICAvKiogVHJhY2luZyBtb2RlIGZvciBSZXN0YXRlIHNlcnZpY2VzLiBEZWZhdWx0cyB0byB7QGxpbmsgVHJhY2luZ01vZGUuRElTQUJMRUR9LiAqL1xuICB0cmFjaW5nPzogVHJhY2luZ01vZGU7XG5cbiAgLyoqIFByZWZpeCBmb3IgcmVzb3VyY2VzIGNyZWF0ZWQgYnkgdGhpcyBjb25zdHJ1Y3QgdGhhdCByZXF1aXJlIHVuaXF1ZSBuYW1lcy4gKi9cbiAgcHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKiBFQ1MgY2x1c3RlciBuYW1lLiAqL1xuICBjbHVzdGVyTmFtZT86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgbmFtZS4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIHJlc3RhdGVJbWFnZT86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgdGFnLiBEZWZhdWx0cyB0byBgbGF0ZXN0YC4gKi9cbiAgcmVzdGF0ZVRhZz86IHN0cmluZztcblxuICAvKiogQW1hem9uIERpc3RybyBmb3IgT3BlbiBUZWxlbWV0cnkgRG9ja2VyIGltYWdlIHRhZy4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIGFkb3RUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IGZvciBSZXN0YXRlIGNvbnRhaW5lci4gVXNlIGl0IHRvIGNvbmZpZ3VyZSBsb2dnaW5nIGFuZCBvdGhlciBwcm9jZXNzLWxldmVsIHNldHRpbmdzLlxuICAgKi9cbiAgZW52aXJvbm1lbnQ/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBSZXN0YXRlIGNvbnRhaW5lciBleHRyYSBhcmd1bWVudHMuXG4gICAqL1xuICBjb21tYW5kPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBmdWxsIG5hbWUgZm9yIHRoZSBwdWJsaWMgZW5kcG9pbnQuXG4gICAqL1xuICBkbnNOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEROUyB6b25lIGluIHdoaWNoIHRvIGNyZWF0ZSB0aGUgcHVibGljIGVuZHBvaW50LlxuICAgKi9cbiAgaG9zdGVkWm9uZTogcjUzLklIb3N0ZWRab25lO1xuXG4gIC8qKlxuICAgKiBSZW1vdmFsIHBvbGljeSBmb3IgbG9uZy1saXZlZCByZXNvdXJjZXMgKHN0b3JhZ2UsIGxvZ3MpLiBEZWZhdWx0OiBgY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWWAuXG4gICAqL1xuICByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGxvYWRCYWxhbmNlcj86IHtcbiAgICAvKiogQHNlZSBCYXNlTG9hZEJhbGFuY2VyUHJvcHMuaW50ZXJuZXRGYWNpbmcgKi9cbiAgICBpbnRlcm5ldEZhY2luZz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB5b3Ugc2V0IHRoaXMgdG8gZmFsc2UsIHlvdSBjYW4gY3VzdG9taXplIHRoZSBhY2Nlc3MgdG8gdGhlIHBhaXIgb2YgQUxCIGxpc3RlbmVycyB2aWFcbiAgICAgKiB7QGxpbmsgRmFyZ2F0ZVJlc3RhdGVEZXBsb3ltZW50LmluZ3Jlc3NMaXN0ZW5lcn0gYW5kIHtAbGluayBGYXJnYXRlUmVzdGF0ZURlcGxveW1lbnQuYWRtaW5MaXN0ZW5lcn0uXG4gICAgICpcbiAgICAgKiBAc2VlIEJhc2VBcHBsaWNhdGlvbkxpc3RlbmVyUHJvcHMub3BlbiAqL1xuICAgIG9wZW4/OiBib29sZWFuO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBSZXN0YXRlIHNlcnZpY2UgZGVwbG95bWVudCBydW5uaW5nIGFzIGEgRmFyZ2F0ZSB0YXNrIGFuZCBiYWNrZWQgYnkgRUZTLlxuICpcbiAqIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBjb25zdHJ1Y3QgaXMgc3RpbGwgZXhwZXJpbWVudGFsISBVc2Ugd2l0aCBjYXV0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgRmFyZ2F0ZVJlc3RhdGVEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVJlc3RhdGVFbnZpcm9ubWVudCB7XG4gIHJlYWRvbmx5IGludm9rZXJSb2xlOiBpYW0uSVJvbGU7XG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgcmVhZG9ubHkgaW5ncmVzc1VybDogc3RyaW5nO1xuICByZWFkb25seSBhZG1pblVybDogc3RyaW5nO1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwOiBlYzIuU2VjdXJpdHlHcm91cDtcbiAgcmVhZG9ubHkgZGF0YVN0b3JlOiBlZnMuRmlsZVN5c3RlbTtcbiAgcmVhZG9ubHkgaW5ncmVzc0xpc3RlbmVyOiBlbGIyLkFwcGxpY2F0aW9uTGlzdGVuZXI7XG4gIHJlYWRvbmx5IGFkbWluTGlzdGVuZXI6IGVsYjIuQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmVzdGF0ZUZhcmdhdGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnZwYyA9IHByb3BzLnZwYyA/PyBlYzIuVnBjLmZyb21Mb29rdXAodGhpcywgXCJWcGNcIiwgeyBpc0RlZmF1bHQ6IHRydWUgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlSW1hZ2UgPSBwcm9wcy5yZXN0YXRlSW1hZ2UgPz8gUkVTVEFURV9JTUFHRV9ERUZBVUxUO1xuICAgIGNvbnN0IHJlc3RhdGVUYWcgPSBwcm9wcy5yZXN0YXRlVGFnID8/IFJFU1RBVEVfRE9DS0VSX0RFRkFVTFRfVEFHO1xuICAgIGNvbnN0IGFkb3RUYWcgPSBwcm9wcy5hZG90VGFnID8/IEFET1RfRE9DS0VSX0RFRkFVTFRfVEFHOyAvLyBUT0RPOiBhZGQgWC1SYXkgc3VwcG9ydCBsaWtlIHdlIGhhdmUgZm9yIEVDMlxuXG4gICAgY29uc3QgZnMgPSBuZXcgZWZzLkZpbGVTeXN0ZW0odGhpcywgXCJEYXRhU3RvcmVcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGxpZmVjeWNsZVBvbGljeTogZWZzLkxpZmVjeWNsZVBvbGljeS5BRlRFUl8zMF9EQVlTLFxuICAgICAgcGVyZm9ybWFuY2VNb2RlOiBlZnMuUGVyZm9ybWFuY2VNb2RlLkdFTkVSQUxfUFVSUE9TRSxcbiAgICAgIHRocm91Z2hwdXRNb2RlOiBlZnMuVGhyb3VnaHB1dE1vZGUuQlVSU1RJTkcsXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgfSk7XG4gICAgZnMuYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgc2lkOiBcIkFsbG93RWZzTW91bnRcIixcbiAgICAgICAgYWN0aW9uczogW1wiZWxhc3RpY2ZpbGVzeXN0ZW06Q2xpZW50TW91bnRcIl0sXG4gICAgICAgIC8vIFJlc3RyaWN0aW5nIHRvIHRoZSBFQ1MgZXhlY3V0aW9uIHJvbGUgZG9lcyBub3Qgd29yazsgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgLSBFRlMgYWNjZXNzIGlzIHNlY3VyZWQgYnkgYSBzZWN1cml0eSBncm91cFxuICAgICAgICBwcmluY2lwYWxzOiBbbmV3IGlhbS5BbnlQcmluY2lwYWwoKV0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBCb29sOiB7XG4gICAgICAgICAgICBcImVsYXN0aWNmaWxlc3lzdGVtOkFjY2Vzc2VkVmlhTW91bnRUYXJnZXRcIjogXCJ0cnVlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgdGhpcy5kYXRhU3RvcmUgPSBmcztcblxuICAgIGNvbnN0IGNsdXN0ZXIgPSBuZXcgZWNzLkNsdXN0ZXIodGhpcywgXCJDbHVzdGVyXCIsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBjbHVzdGVyTmFtZTogcHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlVGFzayA9IG5ldyBlY3MuRmFyZ2F0ZVRhc2tEZWZpbml0aW9uKHRoaXMsIFwiUmVzdGF0ZVRhc2tcIiwge1xuICAgICAgY3B1OiA0MDk2LFxuICAgICAgbWVtb3J5TGltaXRNaUI6IDgxOTIsXG4gICAgICBydW50aW1lUGxhdGZvcm06IHtcbiAgICAgICAgY3B1QXJjaGl0ZWN0dXJlOiBlY3MuQ3B1QXJjaGl0ZWN0dXJlLkFSTTY0LFxuICAgICAgICBvcGVyYXRpbmdTeXN0ZW1GYW1pbHk6IGVjcy5PcGVyYXRpbmdTeXN0ZW1GYW1pbHkuTElOVVgsXG4gICAgICB9LFxuICAgICAgdm9sdW1lczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJyZXN0YXRlU3RvcmVcIixcbiAgICAgICAgICBlZnNWb2x1bWVDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICBmaWxlU3lzdGVtSWQ6IGZzLmZpbGVTeXN0ZW1JZCxcbiAgICAgICAgICAgIGF1dGhvcml6YXRpb25Db25maWc6IHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gVE9ETzogU3RhcnQgYW4gQURPVCBjb250YWluZXIgYW5kIGhvb2sgaXQgdXAgdG8gUmVzdGF0ZSBhbmQgQVdTIFgtUmF5IG9yIGFub3RoZXIgT1RlbCBzaW5rXG4gICAgLy8gaWYgKHByb3BzLnRyYWNpbmcgPT09IFRyYWNpbmdNb2RlLkFXU19YUkFZKSB7XG4gICAgLy8gICByZXN0YXRlVGFzay50YXNrUm9sZS5hZGRNYW5hZ2VkUG9saWN5KGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcIkFXU1hyYXlXcml0ZU9ubHlBY2Nlc3NcIikpO1xuICAgIC8vIH1cblxuICAgIG5ldyBpYW0uUG9saWN5KHRoaXMsIFwiVGFza1BvbGljeVwiLCB7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBzaWQ6IFwiQWxsb3dBc3N1bWVBbnlSb2xlXCIsXG4gICAgICAgICAgYWN0aW9uczogW1wic3RzOkFzc3VtZVJvbGVcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLCAvLyB3ZSBkb24ndCBrbm93IHVwZnJvbnQgd2hhdCBpbnZva2VyIHJvbGVzIHdlIG1heSBiZSBhc2tlZCB0byBhc3N1bWUgYXQgcnVudGltZVxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSkuYXR0YWNoVG9Sb2xlKHJlc3RhdGVUYXNrLnRhc2tSb2xlKTtcblxuICAgIGNvbnN0IGludm9rZXJSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiSW52b2tlclJvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLkFyblByaW5jaXBhbChyZXN0YXRlVGFzay50YXNrUm9sZS5yb2xlQXJuKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFzc3VtZWQgYnkgUmVzdGF0ZSBkZXBsb3ltZW50IHRvIGludm9rZSBMYW1iZGEtYmFzZWQgc2VydmljZXNcIixcbiAgICB9KTtcbiAgICBpbnZva2VyUm9sZS5ncmFudEFzc3VtZVJvbGUocmVzdGF0ZVRhc2sudGFza1JvbGUpO1xuICAgIHRoaXMuaW52b2tlclJvbGUgPSBpbnZva2VyUm9sZTtcblxuICAgIGNvbnN0IGxvZ0dyb3VwID1cbiAgICAgIHByb3BzLmxvZ0dyb3VwID8/XG4gICAgICBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCBcIkxvZ3NcIiwge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGAvcmVzdGF0ZS8ke2lkfWAsXG4gICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlID0gcmVzdGF0ZVRhc2suYWRkQ29udGFpbmVyKFwiUmVzdGF0ZVwiLCB7XG4gICAgICBjb250YWluZXJOYW1lOiBcInJlc3RhdGUtcnVudGltZVwiLFxuICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tUmVnaXN0cnkoYCR7cmVzdGF0ZUltYWdlfToke3Jlc3RhdGVUYWd9YCksXG4gICAgICBwb3J0TWFwcGluZ3M6IFt7IGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfSU5HUkVTU19QT1JUIH0sIHsgY29udGFpbmVyUG9ydDogUkVTVEFURV9BRE1JTl9QT1JUIH1dLFxuICAgICAgbG9nZ2luZzogZWNzLkxvZ0RyaXZlci5hd3NMb2dzKHtcbiAgICAgICAgbG9nR3JvdXAsXG4gICAgICAgIHN0cmVhbVByZWZpeDogXCJyZXN0YXRlXCIsXG4gICAgICB9KSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFJFU1RBVEVfTE9HX0ZPUk1BVDogXCJqc29uXCIsXG4gICAgICAgIFJFU1RBVEVfTk9ERV9OQU1FOiBcImZhcmdhdGVcIixcbiAgICAgIH0sXG4gICAgICBjb21tYW5kOiBwcm9wcy5jb21tYW5kLFxuICAgICAgc3RhcnRUaW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcygyMCksXG4gICAgICBzdG9wVGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMjApLFxuICAgIH0pO1xuICAgIHJlc3RhdGUuYWRkTW91bnRQb2ludHMoe1xuICAgICAgY29udGFpbmVyUGF0aDogXCIvcmVzdGF0ZS1kYXRhXCIsXG4gICAgICByZWFkT25seTogZmFsc2UsXG4gICAgICBzb3VyY2VWb2x1bWU6IFwicmVzdGF0ZVN0b3JlXCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlU2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBcIlNlY3VyaXR5R3JvdXBcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5zZWN1cml0eUdyb3VwID0gcmVzdGF0ZVNlY3VyaXR5R3JvdXA7XG5cbiAgICBjb25zdCByZXN0YXRlRmFyZ2F0ZVNlcnZpY2UgPSBuZXcgZWNzLkZhcmdhdGVTZXJ2aWNlKHRoaXMsIFwiU2VydmljZVwiLCB7XG4gICAgICBjbHVzdGVyLFxuICAgICAgdGFza0RlZmluaXRpb246IHJlc3RhdGVUYXNrLFxuICAgICAgYXNzaWduUHVibGljSXA6IHRydWUsXG4gICAgICBjaXJjdWl0QnJlYWtlcjoge1xuICAgICAgICBlbmFibGU6IHRydWUsXG4gICAgICAgIHJvbGxiYWNrOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAwLCAvLyBhbGxvdyBzY2FsZSBkb3duIHRvIHplcm8gZHVyaW5nIGRlcGxveW1lbnRzIChyZXF1aXJlZCBmb3IgYXQtbW9zdC0xIG1heCBzZXR0aW5nKVxuICAgICAgbWF4SGVhbHRoeVBlcmNlbnQ6IDEwMCwgLy8gZG9uJ3Qgc3RhcnQgbW9yZSB0aGFuIG9uZSBjb3B5XG4gICAgICBzZWN1cml0eUdyb3VwczogW3Jlc3RhdGVTZWN1cml0eUdyb3VwXSxcbiAgICB9KTtcblxuICAgIGZzLmNvbm5lY3Rpb25zLmFsbG93RGVmYXVsdFBvcnRGcm9tKHJlc3RhdGVTZWN1cml0eUdyb3VwKTtcbiAgICBmcy5jb25uZWN0aW9ucy5hbGxvd0RlZmF1bHRQb3J0VG8ocmVzdGF0ZVNlY3VyaXR5R3JvdXApO1xuICAgIGZzLmdyYW50Um9vdEFjY2VzcyhyZXN0YXRlRmFyZ2F0ZVNlcnZpY2UudGFza0RlZmluaXRpb24udGFza1JvbGUuZ3JhbnRQcmluY2lwYWwpO1xuXG4gICAgY29uc3QgYWxiID0gbmV3IGVsYjIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIodGhpcywgXCJBbGJcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGludGVybmV0RmFjaW5nOiBwcm9wcy5sb2FkQmFsYW5jZXI/LmludGVybmV0RmFjaW5nLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcHVibGljQXBpQ2VydGlmaWNhdGUgPSBuZXcgYWNtLkNlcnRpZmljYXRlKHRoaXMsIFwiQ2VydGlmaWNhdGVcIiwge1xuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG5zTmFtZSxcbiAgICAgIHZhbGlkYXRpb246IGFjbS5DZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURucyhwcm9wcy5ob3N0ZWRab25lKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGluZ3Jlc3NMaXN0ZW5lciA9IGFsYi5hZGRMaXN0ZW5lcihcIkluZ3Jlc3NMaXN0ZW5lclwiLCB7XG4gICAgICBwb3J0OiBQVUJMSUNfSU5HUkVTU19QT1JULFxuICAgICAgcHJvdG9jb2w6IGVsYjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUyxcbiAgICAgIGNlcnRpZmljYXRlczogW3B1YmxpY0FwaUNlcnRpZmljYXRlXSxcbiAgICAgIG9wZW46IHByb3BzLmxvYWRCYWxhbmNlcj8ub3BlbixcbiAgICB9KTtcbiAgICBpbmdyZXNzTGlzdGVuZXIuYWRkVGFyZ2V0cyhcIkZhcmdhdGVJbmdyZXNzVGFyZ2V0XCIsIHtcbiAgICAgIHRhcmdldHM6IFtcbiAgICAgICAgcmVzdGF0ZUZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlclRhcmdldCh7XG4gICAgICAgICAgY29udGFpbmVyTmFtZTogcmVzdGF0ZS5jb250YWluZXJOYW1lLFxuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfSU5HUkVTU19QT1JULFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgICBwb3J0OiBSRVNUQVRFX0lOR1JFU1NfUE9SVCxcbiAgICAgIHByb3RvY29sOiBlbGIyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCxcbiAgICAgIGhlYWx0aENoZWNrOiB7XG4gICAgICAgIHBhdGg6IFwiL3Jlc3RhdGUvaGVhbHRoXCIsXG4gICAgICAgIGludGVydmFsOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgaGVhbHRoeVRocmVzaG9sZENvdW50OiAzLFxuICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogMyxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMiksXG4gICAgICB9LFxuICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogY2RrLkR1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgfSk7XG4gICAgdGhpcy5pbmdyZXNzTGlzdGVuZXIgPSBpbmdyZXNzTGlzdGVuZXI7XG5cbiAgICBjb25zdCBhZG1pbkxpc3RlbmVyID0gYWxiLmFkZExpc3RlbmVyKFwiQWRtaW5MaXN0ZW5lclwiLCB7XG4gICAgICBwb3J0OiBQVUJMSUNfQURNSU5fUE9SVCxcbiAgICAgIHByb3RvY29sOiBlbGIyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMsXG4gICAgICBjZXJ0aWZpY2F0ZXM6IFtwdWJsaWNBcGlDZXJ0aWZpY2F0ZV0sXG4gICAgfSk7XG4gICAgYWRtaW5MaXN0ZW5lci5hZGRUYXJnZXRzKFwiRmFyZ2F0ZUFkbWluVGFyZ2V0XCIsIHtcbiAgICAgIHRhcmdldHM6IFtcbiAgICAgICAgcmVzdGF0ZUZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlclRhcmdldCh7XG4gICAgICAgICAgY29udGFpbmVyTmFtZTogcmVzdGF0ZS5jb250YWluZXJOYW1lLFxuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfQURNSU5fUE9SVCxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgcG9ydDogUkVTVEFURV9BRE1JTl9QT1JULFxuICAgICAgcHJvdG9jb2w6IGVsYjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQLFxuICAgICAgaGVhbHRoQ2hlY2s6IHtcbiAgICAgICAgcGF0aDogXCIvaGVhbHRoXCIsXG4gICAgICAgIGludGVydmFsOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgaGVhbHRoeVRocmVzaG9sZENvdW50OiAzLFxuICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogMyxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMiksXG4gICAgICB9LFxuICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogY2RrLkR1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgfSk7XG4gICAgdGhpcy5hZG1pbkxpc3RlbmVyID0gYWRtaW5MaXN0ZW5lcjtcblxuICAgIG5ldyByNTMuQVJlY29yZCh0aGlzLCBcIkFsYkFsaWFzXCIsIHtcbiAgICAgIHpvbmU6IHByb3BzLmhvc3RlZFpvbmUsXG4gICAgICByZWNvcmROYW1lOiBwcm9wcy5kbnNOYW1lLnNwbGl0KFwiLlwiKVswXSxcbiAgICAgIHRhcmdldDogcjUzLlJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IHRhcmdldHMuTG9hZEJhbGFuY2VyVGFyZ2V0KGFsYikpLFxuICAgICAgLy8gb3RoZXIgQVJlY29yZCBjb25maWd1cmF0aW9uLi4uXG4gICAgfSk7XG5cbiAgICB0aGlzLmluZ3Jlc3NVcmwgPSBgaHR0cHM6Ly8ke3Byb3BzLmRuc05hbWV9JHtQVUJMSUNfSU5HUkVTU19QT1JUID09IDQ0MyA/IFwiXCIgOiBgOiR7UFVCTElDX0lOR1JFU1NfUE9SVH1gfWA7XG4gICAgdGhpcy5hZG1pblVybCA9IGBodHRwczovLyR7cHJvcHMuZG5zTmFtZX06JHtQVUJMSUNfQURNSU5fUE9SVH1gO1xuICB9XG59XG4iXX0=
|
|
@@ -15,7 +15,7 @@ import { HttpRequest } from "@aws-sdk/protocol-http";
|
|
|
15
15
|
import { randomInt } from "node:crypto";
|
|
16
16
|
import * as https from "node:https";
|
|
17
17
|
import * as http from "node:http";
|
|
18
|
-
const MAX_HEALTH_CHECK_ATTEMPTS =
|
|
18
|
+
const MAX_HEALTH_CHECK_ATTEMPTS = 10; // This is intentionally quite long to allow some time for first-run EC2 and Docker boot up
|
|
19
19
|
const MAX_REGISTRATION_ATTEMPTS = 3;
|
|
20
20
|
const DEPLOYMENTS_PATH = "deployments";
|
|
21
21
|
const SERVICES_PATH = "services";
|
|
@@ -207,4 +207,4 @@ async function createAuthHeader(props) {
|
|
|
207
207
|
async function sleep(millis) {
|
|
208
208
|
return new Promise((resolve) => setTimeout(resolve, millis));
|
|
209
209
|
}
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3Jlc3RhdGUtY29uc3RydWN0cy9yZWdpc3Rlci1zZXJ2aWNlLWhhbmRsZXIvaW5kZXgubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7QUFJSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RixPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBNENsQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBQyxDQUFDLDJGQUEyRjtBQUNoSSxNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBQztBQUVwQyxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQztBQUN2QyxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUM7QUFFakM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEtBQUssV0FBVyxLQUF3QztJQUM3RSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUV2QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsa0JBQTRDLENBQUM7SUFFakUsTUFBTSxXQUFXLEdBQUcsSUFBSSxlQUFlLENBQUM7UUFDdEMsVUFBVSxFQUFFLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQztZQUMxQixTQUFTLEVBQUUsSUFBSTtZQUNmLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxRQUFRLEtBQUssTUFBTTtTQUM5QyxDQUFDO1FBQ0YsU0FBUyxFQUFFLElBQUks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LFFBQVEsQ0FBQyxJQUFJLGFBQWEsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUYsT0FBTztRQUNMLGFBQWEsRUFBRSxVQUFVLFFBQVEsQ0FBQyxZQUFZLEVBQUU7S0FDakQsQ0FBQztBQUNKLENBQUM7QUFFRCxLQUFLLFVBQVUsS0FBSyxDQUFDLE1BQWM7SUFDakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQy9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIzLTIwMjUgLSBSZXN0YXRlIFNvZnR3YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBDREsgQ29uc3RydWN0IExpYnJhcnksXG4gKiB3aGljaCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKlxuICogWW91IGNhbiBmaW5kIGEgY29weSBvZiB0aGUgbGljZW5zZSBpbiBmaWxlIExJQ0VOU0UgaW4gdGhlIHJvb3RcbiAqIGRpcmVjdG9yeSBvZiB0aGlzIHJlcG9zaXRvcnkgb3IgcGFja2FnZSwgb3IgYXRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXN0YXRlZGV2L3Nkay10eXBlc2NyaXB0L2Jsb2IvbWFpbi9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnQgfSBmcm9tIFwiYXdzLWxhbWJkYS90cmlnZ2VyL2Nsb3VkZm9ybWF0aW9uLWN1c3RvbS1yZXNvdXJjZVwiO1xuXG5pbXBvcnQgeyBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQsIFNlY3JldHNNYW5hZ2VyQ2xpZW50IH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zZWNyZXRzLW1hbmFnZXJcIjtcbmltcG9ydCB7IE5vZGVIdHRwSGFuZGxlciwgc3RyZWFtQ29sbGVjdG9yIH0gZnJvbSBcIkBhd3Mtc2RrL25vZGUtaHR0cC1oYW5kbGVyXCI7XG5pbXBvcnQgeyBIdHRwUmVxdWVzdCB9IGZyb20gXCJAYXdzLXNkay9wcm90b2NvbC1odHRwXCI7XG5cbmltcG9ydCB7IHJhbmRvbUludCB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuaW1wb3J0ICogYXMgaHR0cHMgZnJvbSBcIm5vZGU6aHR0cHNcIjtcbmltcG9ydCAqIGFzIGh0dHAgZnJvbSBcIm5vZGU6aHR0cFwiO1xuXG4vKipcbiAqIEN1c3RvbSBSZXNvdXJjZSBldmVudCBzaGFwZSBmb3IgcmVnaXN0ZXJpbmcgUmVzdGF0ZSBMYW1iZGEgc2VydmljZSBoYW5kbGVycyB3aXRoIGEgUmVzdGF0ZSBlbnZpcm9ubWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyYXRpb25Qcm9wZXJ0aWVzIHtcbiAgLyoqIFdoZXJlIHRvIGZpbmQgdGhlIFJlc3RhdGUgYWRtaW4gZW5kcG9pbnQuICovXG4gIGFkbWluVXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBzZXJ2aWNlIG5hbWUgdG8gbG9vayBmb3IgaW4gdGhlIGRlcGxveW1lbnQuIElmIG1vcmUgdGhhbiBvbmUgc2VydmljZSBpcyBiZWhpbmQgdGhlIHNhbWUgZW5kcG9pbnQsIGFueSBvbmVcbiAgICogc2hvdWxkIG1hdGNoLiBMZWF2ZSB1bnNldCB0byBza2lwIHRoZSBjaGVjay5cbiAgICovXG4gIHNlcnZpY2VQYXRoPzogc3RyaW5nO1xuXG4gIHNlcnZpY2VMYW1iZGFBcm4/OiBzdHJpbmc7XG5cbiAgaW52b2tlUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogQXV0aGVudGljYXRpb24gdG9rZW4gQVJOIHRvIHVzZSB3aXRoIHRoZSBhZG1pbiBlbmRwb2ludC4gVGhlIHNlY3JldCB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgYSBiZWFyZXIgdG9rZW4sIGlmIHNldC5cbiAgICovXG4gIGF1dGhUb2tlblNlY3JldEFybj86IHN0cmluZztcblxuICAvKiogTm90IHVzZWQgYnkgdGhlIGhhbmRsZXIsIHB1cmVseSB1c2VkIHRvIHRyaWNrIENsb3VkRm9ybWF0aW9uIHRvIHBlcmZvcm0gYW4gdXBkYXRlIHdoZW4gaXQgb3RoZXJ3aXNlIHdvdWxkIG5vdC4gKi9cbiAgY29uZmlndXJhdGlvblZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbWFyayB0aGUgc2VydmljZSBhcyBwcml2YXRlLCBhbmQgbWFrZSBpdCB1bmF2YWlsYWJsZSB0byBiZSBjYWxsZWQgdmlhIFJlc3RhdGUgaW5ncmVzcy4gSWYgdGhlcmUgYXJlXG4gICAqIG11bHRpcGxlIHNlcnZpY2VzIHByb3ZpZGVkIGJ5IHRoZSBlbmRwb2ludCwgdGhleSB3aWxsIGFsbCBiZSBtYXJrZWQgYXMgc3BlY2lmaWVkLlxuICAgKi9cbiAgcHJpdmF0ZT86IFwidHJ1ZVwiIHwgXCJmYWxzZVwiO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHRydXN0IGFueSBjZXJ0aWZpY2F0ZSB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIGFkbWluIGVuZHBvaW50LiAqL1xuICBpbnNlY3VyZT86IFwidHJ1ZVwiIHwgXCJmYWxzZVwiO1xuXG4gIC8vIHJlbW92YWxQb2xpY3k/OiBzdHJpbmc7XG59XG5cbnR5cGUgUmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2UgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHNlcnZpY2VzOiB7IG5hbWU6IHN0cmluZzsgcmV2aXNpb246IG51bWJlcjsgcHVibGljOiBib29sZWFuIH1bXTtcbn07XG5cbmNvbnN0IE1BWF9IRUFMVEhfQ0hFQ0tfQVRURU1QVFMgPSA1OyAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgcXVpdGUgbG9uZyB0byBhbGxvdyBzb21lIHRpbWUgZm9yIGZpcnN0LXJ1biBFQzIgYW5kIERvY2tlciBib290IHVwXG5jb25zdCBNQVhfUkVHSVNUUkFUSU9OX0FUVEVNUFRTID0gMztcblxuY29uc3QgREVQTE9ZTUVOVFNfUEFUSCA9IFwiZGVwbG95bWVudHNcIjtcbmNvbnN0IFNFUlZJQ0VTX1BBVEggPSBcInNlcnZpY2VzXCI7XG5cbi8qKlxuICogQ3VzdG9tIFJlc291cmNlIGV2ZW50IGhhbmRsZXIgZm9yIFJlc3RhdGUgc2VydmljZSByZWdpc3RyYXRpb24uIFRoaXMgaGFuZGxlciBiYWNrcyB0aGUgY3VzdG9tIHJlc291cmNlcyBjcmVhdGVkIGJ5XG4gKiB7QGxpbmsgU2VydmljZURlcGxveWVyfSB0byBmYWNpbGl0YXRlIExhbWJkYSBzZXJ2aWNlIGhhbmRsZXIgZGlzY292ZXJ5LlxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlciA9IGFzeW5jIGZ1bmN0aW9uIChldmVudDogQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUV2ZW50KSB7XG4gIGNvbnNvbGUubG9nKHsgZXZlbnQgfSk7XG5cbiAgY29uc3QgcHJvcHMgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMgYXMgUmVnaXN0cmF0aW9uUHJvcGVydGllcztcblxuICBjb25zdCBodHRwSGFuZGxlciA9IG5ldyBOb2RlSHR0cEhhbmRsZXIoe1xuICAgIGh0dHBzQWdlbnQ6IG5ldyBodHRwcy5BZ2VudCh7XG4gICAgICBrZWVwQWxpdmU6IHRydWUsXG4gICAgICByZWplY3RVbmF1dGhvcml6ZWQ6IHByb3BzLmluc2VjdXJlICE9PSBcInRydWVcIixcbiAgICB9KSxcbiAgICBodHRwQWdlbnQ6IG5ldyBodHRwLkFnZW50KHtcbiAgICAgIGtlZXBBbGl2ZTogdHJ1ZSxcbiAgICB9KSxcbiAgfSk7XG5cbiAgaWYgKGV2ZW50LlJlcXVlc3RUeXBlID09PSBcIkRlbGV0ZVwiKSB7XG4gICAgLy8gU2luY2Ugd2UgcmV0YWluIG9sZGVyIExhbWJkYSBoYW5kbGVyIHZlcnNpb25zIG9uIHVwZGF0ZSwgd2UgYWxzbyBsZWF2ZSB0aGUgcmVnaXN0ZXJlZCBzZXJ2aWNlIGFsb25lLiBUaGVyZSBtYXlcbiAgICAvLyBiZSB1bmZpbmlzaGVkIGludm9jYXRpb25zIHRoYXQgcmVxdWlyZSBpdDsgaW4gdGhlIGZ1dHVyZSB3ZSB3b3VsZCB3YW50IHRvIGluZm9ybSBSZXN0YXRlIHRoYXQgd2Ugd2FudCB0b1xuICAgIC8vIGRlLXJlZ2lzdGVyIHRoZSBzZXJ2aWNlLCBhbmQgd2FpdCBmb3IgUmVzdGF0ZSB0byBsZXQgdXMga25vdyB0aGF0IGl0IGlzIHNhZmUgdG8gZGVsZXRlIHRoZSBkZXBsb3llZCBGdW5jdGlvblxuICAgIC8vIHZlcnNpb24gZnJvbSBMYW1iZGEuXG5cbiAgICAvLyBjb25zdCBwcm9wcyA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcyBhcyBSZWdpc3RyYXRpb25Qcm9wZXJ0aWVzO1xuICAgIC8vIGlmIChwcm9wcy5yZW1vdmFsUG9saWN5ID09PSBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZKSB7XG4gICAgLy8gICBjb25zb2xlLmxvZyhgRGUtcmVnaXN0ZXJpbmcgc2VydmljZSAke3Byb3BzLnNlcnZpY2VMYW1iZGFBcm59YCk7XG4gICAgLy8gICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIC8vICAgY29uc3QgaWQgPSBidG9hKHByb3BzLnNlcnZpY2VMYW1iZGFBcm4hKTsgLy8gVE9ETzogd2Ugc2hvdWxkIGJlIHRyZWF0aW5nIHNlcnZpY2UgaWRzIGFzIG9wYXF1ZVxuICAgIC8vICAgY29uc3QgZGVsZXRlQ2FsbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoXCJ0aW1lb3V0XCIpLCA1XzAwMCk7XG4gICAgLy8gICBjb25zdCBkZWxldGVSZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke3Byb3BzLmFkbWluVXJsfS8ke0RFUExPWU1FTlRTX1BBVEh9LyR7aWR9P2ZvcmNlPXRydWVgLCB7XG4gICAgLy8gICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgLy8gICAgIG1ldGhvZDogXCJERUxFVEVcIixcbiAgICAvLyAgICAgYWdlbnQ6IGFnZW50U2VsZWN0b3IsXG4gICAgLy8gICB9KS5maW5hbGx5KCgpID0+IGNsZWFyVGltZW91dChkZWxldGVDYWxsVGltZW91dCkpO1xuICAgIC8vXG4gICAgLy8gICBjb25zb2xlLmxvZyhgR290IGRlbGV0ZSByZXNwb25zZSBiYWNrOiAke2RlbGV0ZVJlc3BvbnNlLnN0YXR1c31gKTtcbiAgICAvLyAgIGlmIChkZWxldGVSZXNwb25zZS5zdGF0dXMgIT0gMjAyKSB7XG4gICAgLy8gICAgIHRocm93IG5ldyBFcnJvcihgUmVtb3Zpbmcgc2VydmljZSBkZXBsb3ltZW50IGZhaWxlZDogJHtkZWxldGVSZXNwb25zZS5zdGF0dXNUZXh0fSAoJHtkZWxldGVSZXNwb25zZS5zdGF0dXN9KWApO1xuICAgIC8vICAgfVxuICAgIC8vIH1cblxuICAgIGNvbnNvbGUud2FybihcIkRlLXJlZ2lzdGVyaW5nIHNlcnZpY2VzIGlzIG5vdCBzdXBwb3J0ZWQgY3VycmVudGx5LiBQcmV2aW91cyB2ZXJzaW9uIHdpbGwgcmVtYWluIHJlZ2lzdGVyZWQuXCIpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGF1dGhIZWFkZXIgPSBhd2FpdCBjcmVhdGVBdXRoSGVhZGVyKHByb3BzKTtcblxuICBsZXQgYXR0ZW1wdDtcblxuICBjb25zdCBoZWFsdGhDaGVja1VybCA9IG5ldyBVUkwoYCR7cHJvcHMuYWRtaW5Vcmx9L2hlYWx0aGApO1xuXG4gIGF0dGVtcHQgPSAxO1xuICBjb25zb2xlLmxvZyhgUGVyZm9ybWluZyBoZWFsdGggY2hlY2sgYWdhaW5zdDogJHtoZWFsdGhDaGVja1VybH1gKTtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zb2xlLmxvZyhgTWFraW5nIGhlYWx0aCBjaGVjayByZXF1ZXN0ICMke2F0dGVtcHR9Li4uYCk7XG4gICAgbGV0IGhlYWx0aFJlc3BvbnNlID0gdW5kZWZpbmVkO1xuICAgIGxldCBlcnJvck1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIGhlYWx0aFJlc3BvbnNlID0gKFxuICAgICAgICBhd2FpdCBodHRwSGFuZGxlci5oYW5kbGUoXG4gICAgICAgICAgbmV3IEh0dHBSZXF1ZXN0KHtcbiAgICAgICAgICAgIGhlYWRlcnM6IGF1dGhIZWFkZXIsXG4gICAgICAgICAgICBwcm90b2NvbDogaGVhbHRoQ2hlY2tVcmwucHJvdG9jb2wsXG4gICAgICAgICAgICBob3N0bmFtZTogaGVhbHRoQ2hlY2tVcmwuaG9zdG5hbWUsXG4gICAgICAgICAgICBwb3J0OiBoZWFsdGhDaGVja1VybC5wb3J0ID8gTnVtYmVyKGhlYWx0aENoZWNrVXJsLnBvcnQpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGF0aDogaGVhbHRoQ2hlY2tVcmwucGF0aG5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgeyByZXF1ZXN0VGltZW91dDogNV8wMDAgfSxcbiAgICAgICAgKVxuICAgICAgKS5yZXNwb25zZTtcblxuICAgICAgY29uc29sZS5sb2coYEdvdCBoZWFsdGggY2hlY2sgcmVzcG9uc2UgYmFjazogJHtoZWFsdGhSZXNwb25zZS5zdGF0dXNDb2RlfWApO1xuICAgICAgaWYgKGhlYWx0aFJlc3BvbnNlLnN0YXR1c0NvZGUgPj0gMjAwICYmIGhlYWx0aFJlc3BvbnNlLnN0YXR1c0NvZGUgPCAzMDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgUmVzdGF0ZSBoZWFsdGggY2hlY2sgZmFpbGVkOiAke2hlYWx0aFJlc3BvbnNlLnJlYXNvbn0gKCR7aGVhbHRoUmVzcG9uc2Uuc3RhdHVzQ29kZX07IGF0dGVtcHQgJHthdHRlbXB0fSlgLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJvck1lc3NhZ2UgPSAoZSBhcyBFcnJvcik/Lm1lc3NhZ2U7XG4gICAgICBjb25zb2xlLmVycm9yKGBSZXN0YXRlIGhlYWx0aCBjaGVjayBmYWlsZWQ6IFwiJHtlcnJvck1lc3NhZ2V9XCIgKGF0dGVtcHQgJHthdHRlbXB0fSlgKTtcbiAgICB9XG5cbiAgICBpZiAoYXR0ZW1wdCA+PSBNQVhfSEVBTFRIX0NIRUNLX0FUVEVNUFRTKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBBZG1pbiBzZXJ2aWNlIGhlYWx0aCBjaGVjayBmYWlsaW5nIGFmdGVyICR7YXR0ZW1wdH0gYXR0ZW1wdHMuYCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlID8/IGAke2hlYWx0aFJlc3BvbnNlPy5yZWFzb259ICgke2hlYWx0aFJlc3BvbnNlPy5zdGF0dXNDb2RlfSlgKTtcbiAgICB9XG4gICAgYXR0ZW1wdCArPSAxO1xuXG4gICAgY29uc3Qgd2FpdFRpbWVNaWxsaXMgPSByYW5kb21JbnQoMl8wMDApICsgMiAqKiBhdHRlbXB0ICogMV8wMDA7IC8vIDNzIC0+IDZzIC0+IDEwcyAtPiAxOHMgLT4gMzRzXG4gICAgY29uc29sZS5sb2coYFJldHJ5aW5nIGFmdGVyICR7d2FpdFRpbWVNaWxsaXN9IG1zLi4uYCk7XG4gICAgYXdhaXQgc2xlZXAod2FpdFRpbWVNaWxsaXMpO1xuICB9XG5cbiAgY29uc3QgZGVwbG95bWVudHNVcmwgPSBuZXcgVVJMKGAke3Byb3BzLmFkbWluVXJsfS8ke0RFUExPWU1FTlRTX1BBVEh9YCk7XG4gIGNvbnN0IHJlZ2lzdHJhdGlvblJlcXVlc3QgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgYXJuOiBwcm9wcy5zZXJ2aWNlTGFtYmRhQXJuLFxuICAgIGFzc3VtZV9yb2xlX2FybjogcHJvcHMuaW52b2tlUm9sZUFybixcbiAgfSk7XG5cbiAgbGV0IGZhaWx1cmVSZWFzb247XG4gIGF0dGVtcHQgPSAxO1xuICBjb25zb2xlLmxvZyhgUmVnaXN0ZXJpbmcgc2VydmljZXMgYXQgJHtkZXBsb3ltZW50c1VybH06ICR7cmVnaXN0cmF0aW9uUmVxdWVzdH1gKTtcblxuICByZWdpc3RyYXRpb25fcmV0cnlfbG9vcDogd2hpbGUgKHRydWUpIHtcbiAgICB0cnkge1xuICAgICAgY29uc29sZS5sb2coYE1ha2luZyByZWdpc3RyYXRpb24gcmVxdWVzdCAjJHthdHRlbXB0fS4uLmApO1xuXG4gICAgICBjb25zdCByZWdpc3RlckRlcGxveW1lbnRSZXNwb25zZSA9IChcbiAgICAgICAgYXdhaXQgaHR0cEhhbmRsZXIuaGFuZGxlKFxuICAgICAgICAgIG5ldyBIdHRwUmVxdWVzdCh7XG4gICAgICAgICAgICBib2R5OiByZWdpc3RyYXRpb25SZXF1ZXN0LFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgLi4uYXV0aEhlYWRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm90b2NvbDogZGVwbG95bWVudHNVcmwucHJvdG9jb2wsXG4gICAgICAgICAgICBob3N0bmFtZTogZGVwbG95bWVudHNVcmwuaG9zdG5hbWUsXG4gICAgICAgICAgICBwb3J0OiBkZXBsb3ltZW50c1VybC5wb3J0ID8gTnVtYmVyKGRlcGxveW1lbnRzVXJsLnBvcnQpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGF0aDogZGVwbG95bWVudHNVcmwucGF0aG5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHsgcmVxdWVzdFRpbWVvdXQ6IDEwXzAwMCB9LFxuICAgICAgICApXG4gICAgICApLnJlc3BvbnNlO1xuXG4gICAgICBpZiAocmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2Uuc3RhdHVzQ29kZSA+PSAyMDAgJiYgcmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2Uuc3RhdHVzQ29kZSA8IDMwMCkge1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgc3RyZWFtQ29sbGVjdG9yKHJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlLmJvZHkpO1xuICAgICAgICBjb25zdCBkYXRhU3RyID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGRhdGEpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IEpTT04ucGFyc2UoZGF0YVN0cikgYXMgUmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2U7XG5cbiAgICAgICAgaWYgKHByb3BzLnNlcnZpY2VQYXRoICYmICFyZXNwb25zZS5zZXJ2aWNlcy5maW5kKChzKSA9PiBzLm5hbWUgPT09IHByb3BzLnNlcnZpY2VQYXRoKSkge1xuICAgICAgICAgIGZhaWx1cmVSZWFzb24gPVxuICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2VlZGVkLCBidXQgbm9uZSBvZiB0aGUgc2VydmljZSBuYW1lcyBpbiB0aGUgZGVwbG95bWVudCBtYXRjaCB0aGUgc3BlY2lmaWVkIG5hbWUuIFwiICtcbiAgICAgICAgICAgIGBFeHBlY3RlZCBcIiR7cHJvcHMuc2VydmljZVBhdGh9XCIsIGdvdCBiYWNrOiBbYCArXG4gICAgICAgICAgICByZXNwb25zZS5zZXJ2aWNlcy5tYXAoKHN2YykgPT4gc3ZjPy5uYW1lKS5qb2luKFwiLCBcIikgK1xuICAgICAgICAgICAgXCJdXCI7XG5cbiAgICAgICAgICBhdHRlbXB0ID0gTUFYX1JFR0lTVFJBVElPTl9BVFRFTVBUUzsgLy8gZG9uJ3QgcmV0cnkgdGhpc1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzZnVsIHJlZ2lzdHJhdGlvbiEgU2VydmljZXM6IFwiLCBKU09OLnN0cmluZ2lmeShyZXNwb25zZS5zZXJ2aWNlcykpO1xuXG4gICAgICAgIGNvbnN0IGlzUHVibGljID0gKHByb3BzLnByaXZhdGUgPz8gXCJmYWxzZVwiKSA9PT0gXCJmYWxzZVwiO1xuXG4gICAgICAgIGZvciAoY29uc3Qgc2VydmljZSBvZiByZXNwb25zZS5zZXJ2aWNlcyA/PyBbXSkge1xuICAgICAgICAgIGlmIChzZXJ2aWNlLnB1YmxpYyA9PT0gaXNQdWJsaWMpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTZXJ2aWNlICR7c2VydmljZS5uYW1lfSBpcyAke2lzUHVibGljID8gXCJwdWJsaWNcIiA6IFwicHJpdmF0ZVwifS5gKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnNvbGUubG9nKGBNYXJraW5nIHNlcnZpY2UgJHtzZXJ2aWNlLm5hbWV9IGFzICR7aXNQdWJsaWMgPyBcInB1YmxpY1wiIDogXCJwcml2YXRlXCJ9Li4uYCk7XG4gICAgICAgICAgY29uc3QgcGF0Y2hVcmwgPSBuZXcgVVJMKGAke3Byb3BzLmFkbWluVXJsfS8ke1NFUlZJQ0VTX1BBVEh9LyR7c2VydmljZS5uYW1lfWApO1xuXG4gICAgICAgICAgY29uc3QgcGF0Y2hSZXNwb25zZSA9IChcbiAgICAgICAgICAgIGF3YWl0IGh0dHBIYW5kbGVyLmhhbmRsZShcbiAgICAgICAgICAgICAgbmV3IEh0dHBSZXF1ZXN0KHtcbiAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHB1YmxpYzogaXNQdWJsaWMgfSksXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgICAuLi5hdXRoSGVhZGVyLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcHJvdG9jb2w6IHBhdGNoVXJsLnByb3RvY29sLFxuICAgICAgICAgICAgICAgIGhvc3RuYW1lOiBwYXRjaFVybC5ob3N0bmFtZSxcbiAgICAgICAgICAgICAgICBwb3J0OiBwYXRjaFVybC5wb3J0ID8gTnVtYmVyKHBhdGNoVXJsLnBvcnQpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHBhdGg6IHBhdGNoVXJsLnBhdGhuYW1lLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQQVRDSFwiLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgeyByZXF1ZXN0VGltZW91dDogMTBfMDAwIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgKS5yZXNwb25zZTtcblxuICAgICAgICAgIGNvbnNvbGUubG9nKGBHb3QgcGF0Y2ggcmVzcG9uc2UgYmFjazogJHtwYXRjaFJlc3BvbnNlLnN0YXR1c0NvZGV9YCk7XG4gICAgICAgICAgaWYgKHBhdGNoUmVzcG9uc2Uuc3RhdHVzQ29kZSAhPSAyMDApIHtcbiAgICAgICAgICAgIGZhaWx1cmVSZWFzb24gPSBgTWFya2luZyBzZXJ2aWNlIGFzICR7cHJvcHMucHJpdmF0ZSA/IFwicHJpdmF0ZVwiIDogXCJwdWJsaWNcIn0gZmFpbGVkOiAke3BhdGNoUmVzcG9uc2UucmVhc29ufSAoJHtwYXRjaFJlc3BvbnNlLnN0YXR1c0NvZGV9KWA7XG4gICAgICAgICAgICBicmVhayByZWdpc3RyYXRpb25fcmV0cnlfbG9vcDsgLy8gZG9uJ3QgdGhyb3cgaW1tZWRpYXRlbHkgLSBsZXQgcmV0cnkgbG9vcCBkZWNpZGUgd2hldGhlciB0byBhYm9ydCBzXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5sb2coYFN1Y2Nlc3NmdWxseSBtYXJrZWQgc2VydmljZSBhcyAke2lzUHVibGljID8gXCJwdWJsaWNcIiA6IFwicHJpdmF0ZVwifS5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjsgLy8gT3ZlcmFsbCBzdWNjZXNzIVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZXJyb3JCb2R5ID0gYXdhaXQgc3RyZWFtQ29sbGVjdG9yKHJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlLmJvZHkpO1xuICAgICAgICBjb25zdCBlcnJvckJvZHlTdHIgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZXJyb3JCb2R5KTtcblxuICAgICAgICBmYWlsdXJlUmVhc29uID0gYFJlZ2lzdHJhdGlvbiBmYWlsZWQgKCR7cmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2UucmVhc29ufSk6ICR7ZXJyb3JCb2R5U3RyfWA7XG4gICAgICAgIGNvbnNvbGUubG9nKHtcbiAgICAgICAgICBtZXNzYWdlOiBgR290IGVycm9yIHJlc3BvbnNlIGZyb20gUmVzdGF0ZS5gLFxuICAgICAgICAgIGNvZGU6IHJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlLnN0YXR1c0NvZGUsXG4gICAgICAgICAgYm9keTogZXJyb3JCb2R5LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBSZWdpc3RyYXRpb24gZmFpbGVkOiAkeyhlIGFzIEVycm9yKT8ubWVzc2FnZX0gKGF0dGVtcHQgJHthdHRlbXB0fSlgKTtcbiAgICAgIGZhaWx1cmVSZWFzb24gPSAoZSBhcyBFcnJvcik/Lm1lc3NhZ2U7XG4gICAgfVxuXG4gICAgaWYgKGF0dGVtcHQgPj0gTUFYX1JFR0lTVFJBVElPTl9BVFRFTVBUUykge1xuICAgICAgZmFpbHVyZVJlYXNvbiA9IGBHaXZpbmcgdXAgYWZ0ZXIgJHthdHRlbXB0fSBhdHRlbXB0cy4gTGFzdCBlcnJvcjogJHtmYWlsdXJlUmVhc29ufWA7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgYXR0ZW1wdCArPSAxO1xuICAgIGNvbnN0IHdhaXRUaW1lTWlsbGlzID0gcmFuZG9tSW50KDJfMDAwKSArIDIgKiogYXR0ZW1wdCAqIDFfMDAwOyAvLyAzcyAtPiA2cyAtPiAxMHNcbiAgICBjb25zb2xlLmxvZyhgUmV0cnlpbmcgcmVnaXN0cmF0aW9uIGFmdGVyICR7d2FpdFRpbWVNaWxsaXN9IG1zLi4uYCk7XG4gICAgYXdhaXQgc2xlZXAod2FpdFRpbWVNaWxsaXMpO1xuICB9XG5cbiAgY29uc29sZS5lcnJvcihmYWlsdXJlUmVhc29uKTtcbiAgdGhyb3cgbmV3IEVycm9yKGZhaWx1cmVSZWFzb24gPz8gXCJSZXN0YXRlIHNlcnZpY2UgcmVnaXN0cmF0aW9uIGZhaWxlZC4gUGxlYXNlIHNlZSBsb2dzIGZvciBkZXRhaWxzLlwiKTtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUF1dGhIZWFkZXIocHJvcHM6IFJlZ2lzdHJhdGlvblByb3BlcnRpZXMpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgaWYgKCFwcm9wcy5hdXRoVG9rZW5TZWNyZXRBcm4pIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zb2xlLmxvZyhgVXNpbmcgYmVhcmVyIGF1dGhlbnRpY2F0aW9uIHRva2VuIGZyb20gc2VjcmV0ICR7cHJvcHMuYXV0aFRva2VuU2VjcmV0QXJufWApO1xuICBjb25zdCBzc20gPSBuZXcgU2VjcmV0c01hbmFnZXJDbGllbnQoKTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzc20uc2VuZChcbiAgICBuZXcgR2V0U2VjcmV0VmFsdWVDb21tYW5kKHtcbiAgICAgIFNlY3JldElkOiBwcm9wcy5hdXRoVG9rZW5TZWNyZXRBcm4sXG4gICAgfSksXG4gICk7XG5cbiAgY29uc29sZS5sb2coYFN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgc2VjcmV0IFwiJHtyZXNwb25zZS5OYW1lfVwiIHZlcnNpb24gJHtyZXNwb25zZS5WZXJzaW9uSWR9YCk7XG4gIHJldHVybiB7XG4gICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Jlc3BvbnNlLlNlY3JldFN0cmluZ31gLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBzbGVlcChtaWxsaXM6IG51bWJlcikge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbWlsbGlzKSk7XG59XG4iXX0=
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3Jlc3RhdGUtY29uc3RydWN0cy9yZWdpc3Rlci1zZXJ2aWNlLWhhbmRsZXIvaW5kZXgubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7QUFJSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RixPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBNENsQyxNQUFNLHlCQUF5QixHQUFHLEVBQUUsQ0FBQyxDQUFDLDJGQUEyRjtBQUNqSSxNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBQztBQUVwQyxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQztBQUN2QyxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUM7QUFFakM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEtBQUssV0FBVyxLQUF3QztJQUM3RSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUV2QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsa0JBQTRDLENBQUM7SUFFakUsTUFBTSxXQUFXLEdBQUcsSUFBSSxlQUFlLENBQUM7UUFDdEMsVUFBVSxFQUFFLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQztZQUMxQixTQUFTLEVBQUUsSUFBSTtZQUNmLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxRQUFRLEtBQUssTUFBTTtTQUM5QyxDQUFDO1FBQ0YsU0FBUyxFQUFFLElBQUks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LFFBQVEsQ0FBQyxJQUFJLGFBQWEsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUYsT0FBTztRQUNMLGFBQWEsRUFBRSxVQUFVLFFBQVEsQ0FBQyxZQUFZLEVBQUU7S0FDakQsQ0FBQztBQUNKLENBQUM7QUFFRCxLQUFLLFVBQVUsS0FBSyxDQUFDLE1BQWM7SUFDakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQy9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIzLTIwMjUgLSBSZXN0YXRlIFNvZnR3YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBDREsgQ29uc3RydWN0IExpYnJhcnksXG4gKiB3aGljaCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKlxuICogWW91IGNhbiBmaW5kIGEgY29weSBvZiB0aGUgbGljZW5zZSBpbiBmaWxlIExJQ0VOU0UgaW4gdGhlIHJvb3RcbiAqIGRpcmVjdG9yeSBvZiB0aGlzIHJlcG9zaXRvcnkgb3IgcGFja2FnZSwgb3IgYXRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXN0YXRlZGV2L3Nkay10eXBlc2NyaXB0L2Jsb2IvbWFpbi9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnQgfSBmcm9tIFwiYXdzLWxhbWJkYS90cmlnZ2VyL2Nsb3VkZm9ybWF0aW9uLWN1c3RvbS1yZXNvdXJjZVwiO1xuXG5pbXBvcnQgeyBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQsIFNlY3JldHNNYW5hZ2VyQ2xpZW50IH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zZWNyZXRzLW1hbmFnZXJcIjtcbmltcG9ydCB7IE5vZGVIdHRwSGFuZGxlciwgc3RyZWFtQ29sbGVjdG9yIH0gZnJvbSBcIkBhd3Mtc2RrL25vZGUtaHR0cC1oYW5kbGVyXCI7XG5pbXBvcnQgeyBIdHRwUmVxdWVzdCB9IGZyb20gXCJAYXdzLXNkay9wcm90b2NvbC1odHRwXCI7XG5cbmltcG9ydCB7IHJhbmRvbUludCB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuaW1wb3J0ICogYXMgaHR0cHMgZnJvbSBcIm5vZGU6aHR0cHNcIjtcbmltcG9ydCAqIGFzIGh0dHAgZnJvbSBcIm5vZGU6aHR0cFwiO1xuXG4vKipcbiAqIEN1c3RvbSBSZXNvdXJjZSBldmVudCBzaGFwZSBmb3IgcmVnaXN0ZXJpbmcgUmVzdGF0ZSBMYW1iZGEgc2VydmljZSBoYW5kbGVycyB3aXRoIGEgUmVzdGF0ZSBlbnZpcm9ubWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyYXRpb25Qcm9wZXJ0aWVzIHtcbiAgLyoqIFdoZXJlIHRvIGZpbmQgdGhlIFJlc3RhdGUgYWRtaW4gZW5kcG9pbnQuICovXG4gIGFkbWluVXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBzZXJ2aWNlIG5hbWUgdG8gbG9vayBmb3IgaW4gdGhlIGRlcGxveW1lbnQuIElmIG1vcmUgdGhhbiBvbmUgc2VydmljZSBpcyBiZWhpbmQgdGhlIHNhbWUgZW5kcG9pbnQsIGFueSBvbmVcbiAgICogc2hvdWxkIG1hdGNoLiBMZWF2ZSB1bnNldCB0byBza2lwIHRoZSBjaGVjay5cbiAgICovXG4gIHNlcnZpY2VQYXRoPzogc3RyaW5nO1xuXG4gIHNlcnZpY2VMYW1iZGFBcm4/OiBzdHJpbmc7XG5cbiAgaW52b2tlUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogQXV0aGVudGljYXRpb24gdG9rZW4gQVJOIHRvIHVzZSB3aXRoIHRoZSBhZG1pbiBlbmRwb2ludC4gVGhlIHNlY3JldCB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgYSBiZWFyZXIgdG9rZW4sIGlmIHNldC5cbiAgICovXG4gIGF1dGhUb2tlblNlY3JldEFybj86IHN0cmluZztcblxuICAvKiogTm90IHVzZWQgYnkgdGhlIGhhbmRsZXIsIHB1cmVseSB1c2VkIHRvIHRyaWNrIENsb3VkRm9ybWF0aW9uIHRvIHBlcmZvcm0gYW4gdXBkYXRlIHdoZW4gaXQgb3RoZXJ3aXNlIHdvdWxkIG5vdC4gKi9cbiAgY29uZmlndXJhdGlvblZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbWFyayB0aGUgc2VydmljZSBhcyBwcml2YXRlLCBhbmQgbWFrZSBpdCB1bmF2YWlsYWJsZSB0byBiZSBjYWxsZWQgdmlhIFJlc3RhdGUgaW5ncmVzcy4gSWYgdGhlcmUgYXJlXG4gICAqIG11bHRpcGxlIHNlcnZpY2VzIHByb3ZpZGVkIGJ5IHRoZSBlbmRwb2ludCwgdGhleSB3aWxsIGFsbCBiZSBtYXJrZWQgYXMgc3BlY2lmaWVkLlxuICAgKi9cbiAgcHJpdmF0ZT86IFwidHJ1ZVwiIHwgXCJmYWxzZVwiO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHRydXN0IGFueSBjZXJ0aWZpY2F0ZSB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIGFkbWluIGVuZHBvaW50LiAqL1xuICBpbnNlY3VyZT86IFwidHJ1ZVwiIHwgXCJmYWxzZVwiO1xuXG4gIC8vIHJlbW92YWxQb2xpY3k/OiBzdHJpbmc7XG59XG5cbnR5cGUgUmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2UgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHNlcnZpY2VzOiB7IG5hbWU6IHN0cmluZzsgcmV2aXNpb246IG51bWJlcjsgcHVibGljOiBib29sZWFuIH1bXTtcbn07XG5cbmNvbnN0IE1BWF9IRUFMVEhfQ0hFQ0tfQVRURU1QVFMgPSAxMDsgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IHF1aXRlIGxvbmcgdG8gYWxsb3cgc29tZSB0aW1lIGZvciBmaXJzdC1ydW4gRUMyIGFuZCBEb2NrZXIgYm9vdCB1cFxuY29uc3QgTUFYX1JFR0lTVFJBVElPTl9BVFRFTVBUUyA9IDM7XG5cbmNvbnN0IERFUExPWU1FTlRTX1BBVEggPSBcImRlcGxveW1lbnRzXCI7XG5jb25zdCBTRVJWSUNFU19QQVRIID0gXCJzZXJ2aWNlc1wiO1xuXG4vKipcbiAqIEN1c3RvbSBSZXNvdXJjZSBldmVudCBoYW5kbGVyIGZvciBSZXN0YXRlIHNlcnZpY2UgcmVnaXN0cmF0aW9uLiBUaGlzIGhhbmRsZXIgYmFja3MgdGhlIGN1c3RvbSByZXNvdXJjZXMgY3JlYXRlZCBieVxuICoge0BsaW5rIFNlcnZpY2VEZXBsb3llcn0gdG8gZmFjaWxpdGF0ZSBMYW1iZGEgc2VydmljZSBoYW5kbGVyIGRpc2NvdmVyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IGhhbmRsZXIgPSBhc3luYyBmdW5jdGlvbiAoZXZlbnQ6IENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudCkge1xuICBjb25zb2xlLmxvZyh7IGV2ZW50IH0pO1xuXG4gIGNvbnN0IHByb3BzID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzIGFzIFJlZ2lzdHJhdGlvblByb3BlcnRpZXM7XG5cbiAgY29uc3QgaHR0cEhhbmRsZXIgPSBuZXcgTm9kZUh0dHBIYW5kbGVyKHtcbiAgICBodHRwc0FnZW50OiBuZXcgaHR0cHMuQWdlbnQoe1xuICAgICAga2VlcEFsaXZlOiB0cnVlLFxuICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBwcm9wcy5pbnNlY3VyZSAhPT0gXCJ0cnVlXCIsXG4gICAgfSksXG4gICAgaHR0cEFnZW50OiBuZXcgaHR0cC5BZ2VudCh7XG4gICAgICBrZWVwQWxpdmU6IHRydWUsXG4gICAgfSksXG4gIH0pO1xuXG4gIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PT0gXCJEZWxldGVcIikge1xuICAgIC8vIFNpbmNlIHdlIHJldGFpbiBvbGRlciBMYW1iZGEgaGFuZGxlciB2ZXJzaW9ucyBvbiB1cGRhdGUsIHdlIGFsc28gbGVhdmUgdGhlIHJlZ2lzdGVyZWQgc2VydmljZSBhbG9uZS4gVGhlcmUgbWF5XG4gICAgLy8gYmUgdW5maW5pc2hlZCBpbnZvY2F0aW9ucyB0aGF0IHJlcXVpcmUgaXQ7IGluIHRoZSBmdXR1cmUgd2Ugd291bGQgd2FudCB0byBpbmZvcm0gUmVzdGF0ZSB0aGF0IHdlIHdhbnQgdG9cbiAgICAvLyBkZS1yZWdpc3RlciB0aGUgc2VydmljZSwgYW5kIHdhaXQgZm9yIFJlc3RhdGUgdG8gbGV0IHVzIGtub3cgdGhhdCBpdCBpcyBzYWZlIHRvIGRlbGV0ZSB0aGUgZGVwbG95ZWQgRnVuY3Rpb25cbiAgICAvLyB2ZXJzaW9uIGZyb20gTGFtYmRhLlxuXG4gICAgLy8gY29uc3QgcHJvcHMgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMgYXMgUmVnaXN0cmF0aW9uUHJvcGVydGllcztcbiAgICAvLyBpZiAocHJvcHMucmVtb3ZhbFBvbGljeSA9PT0gY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSkge1xuICAgIC8vICAgY29uc29sZS5sb2coYERlLXJlZ2lzdGVyaW5nIHNlcnZpY2UgJHtwcm9wcy5zZXJ2aWNlTGFtYmRhQXJufWApO1xuICAgIC8vICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAvLyAgIGNvbnN0IGlkID0gYnRvYShwcm9wcy5zZXJ2aWNlTGFtYmRhQXJuISk7IC8vIFRPRE86IHdlIHNob3VsZCBiZSB0cmVhdGluZyBzZXJ2aWNlIGlkcyBhcyBvcGFxdWVcbiAgICAvLyAgIGNvbnN0IGRlbGV0ZUNhbGxUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiBjb250cm9sbGVyLmFib3J0KFwidGltZW91dFwiKSwgNV8wMDApO1xuICAgIC8vICAgY29uc3QgZGVsZXRlUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtwcm9wcy5hZG1pblVybH0vJHtERVBMT1lNRU5UU19QQVRIfS8ke2lkfT9mb3JjZT10cnVlYCwge1xuICAgIC8vICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIC8vICAgICBtZXRob2Q6IFwiREVMRVRFXCIsXG4gICAgLy8gICAgIGFnZW50OiBhZ2VudFNlbGVjdG9yLFxuICAgIC8vICAgfSkuZmluYWxseSgoKSA9PiBjbGVhclRpbWVvdXQoZGVsZXRlQ2FsbFRpbWVvdXQpKTtcbiAgICAvL1xuICAgIC8vICAgY29uc29sZS5sb2coYEdvdCBkZWxldGUgcmVzcG9uc2UgYmFjazogJHtkZWxldGVSZXNwb25zZS5zdGF0dXN9YCk7XG4gICAgLy8gICBpZiAoZGVsZXRlUmVzcG9uc2Uuc3RhdHVzICE9IDIwMikge1xuICAgIC8vICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlbW92aW5nIHNlcnZpY2UgZGVwbG95bWVudCBmYWlsZWQ6ICR7ZGVsZXRlUmVzcG9uc2Uuc3RhdHVzVGV4dH0gKCR7ZGVsZXRlUmVzcG9uc2Uuc3RhdHVzfSlgKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9XG5cbiAgICBjb25zb2xlLndhcm4oXCJEZS1yZWdpc3RlcmluZyBzZXJ2aWNlcyBpcyBub3Qgc3VwcG9ydGVkIGN1cnJlbnRseS4gUHJldmlvdXMgdmVyc2lvbiB3aWxsIHJlbWFpbiByZWdpc3RlcmVkLlwiKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhdXRoSGVhZGVyID0gYXdhaXQgY3JlYXRlQXV0aEhlYWRlcihwcm9wcyk7XG5cbiAgbGV0IGF0dGVtcHQ7XG5cbiAgY29uc3QgaGVhbHRoQ2hlY2tVcmwgPSBuZXcgVVJMKGAke3Byb3BzLmFkbWluVXJsfS9oZWFsdGhgKTtcblxuICBhdHRlbXB0ID0gMTtcbiAgY29uc29sZS5sb2coYFBlcmZvcm1pbmcgaGVhbHRoIGNoZWNrIGFnYWluc3Q6ICR7aGVhbHRoQ2hlY2tVcmx9YCk7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgY29uc29sZS5sb2coYE1ha2luZyBoZWFsdGggY2hlY2sgcmVxdWVzdCAjJHthdHRlbXB0fS4uLmApO1xuICAgIGxldCBoZWFsdGhSZXNwb25zZSA9IHVuZGVmaW5lZDtcbiAgICBsZXQgZXJyb3JNZXNzYWdlID0gdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICBoZWFsdGhSZXNwb25zZSA9IChcbiAgICAgICAgYXdhaXQgaHR0cEhhbmRsZXIuaGFuZGxlKFxuICAgICAgICAgIG5ldyBIdHRwUmVxdWVzdCh7XG4gICAgICAgICAgICBoZWFkZXJzOiBhdXRoSGVhZGVyLFxuICAgICAgICAgICAgcHJvdG9jb2w6IGhlYWx0aENoZWNrVXJsLnByb3RvY29sLFxuICAgICAgICAgICAgaG9zdG5hbWU6IGhlYWx0aENoZWNrVXJsLmhvc3RuYW1lLFxuICAgICAgICAgICAgcG9ydDogaGVhbHRoQ2hlY2tVcmwucG9ydCA/IE51bWJlcihoZWFsdGhDaGVja1VybC5wb3J0KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhdGg6IGhlYWx0aENoZWNrVXJsLnBhdGhuYW1lLFxuICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHsgcmVxdWVzdFRpbWVvdXQ6IDVfMDAwIH0sXG4gICAgICAgIClcbiAgICAgICkucmVzcG9uc2U7XG5cbiAgICAgIGNvbnNvbGUubG9nKGBHb3QgaGVhbHRoIGNoZWNrIHJlc3BvbnNlIGJhY2s6ICR7aGVhbHRoUmVzcG9uc2Uuc3RhdHVzQ29kZX1gKTtcbiAgICAgIGlmIChoZWFsdGhSZXNwb25zZS5zdGF0dXNDb2RlID49IDIwMCAmJiBoZWFsdGhSZXNwb25zZS5zdGF0dXNDb2RlIDwgMzAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFJlc3RhdGUgaGVhbHRoIGNoZWNrIGZhaWxlZDogJHtoZWFsdGhSZXNwb25zZS5yZWFzb259ICgke2hlYWx0aFJlc3BvbnNlLnN0YXR1c0NvZGV9OyBhdHRlbXB0ICR7YXR0ZW1wdH0pYCxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZXJyb3JNZXNzYWdlID0gKGUgYXMgRXJyb3IpPy5tZXNzYWdlO1xuICAgICAgY29uc29sZS5lcnJvcihgUmVzdGF0ZSBoZWFsdGggY2hlY2sgZmFpbGVkOiBcIiR7ZXJyb3JNZXNzYWdlfVwiIChhdHRlbXB0ICR7YXR0ZW1wdH0pYCk7XG4gICAgfVxuXG4gICAgaWYgKGF0dGVtcHQgPj0gTUFYX0hFQUxUSF9DSEVDS19BVFRFTVBUUykge1xuICAgICAgY29uc29sZS5lcnJvcihgQWRtaW4gc2VydmljZSBoZWFsdGggY2hlY2sgZmFpbGluZyBhZnRlciAke2F0dGVtcHR9IGF0dGVtcHRzLmApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSA/PyBgJHtoZWFsdGhSZXNwb25zZT8ucmVhc29ufSAoJHtoZWFsdGhSZXNwb25zZT8uc3RhdHVzQ29kZX0pYCk7XG4gICAgfVxuICAgIGF0dGVtcHQgKz0gMTtcblxuICAgIGNvbnN0IHdhaXRUaW1lTWlsbGlzID0gcmFuZG9tSW50KDJfMDAwKSArIDIgKiogYXR0ZW1wdCAqIDFfMDAwOyAvLyAzcyAtPiA2cyAtPiAxMHMgLT4gMThzIC0+IDM0c1xuICAgIGNvbnNvbGUubG9nKGBSZXRyeWluZyBhZnRlciAke3dhaXRUaW1lTWlsbGlzfSBtcy4uLmApO1xuICAgIGF3YWl0IHNsZWVwKHdhaXRUaW1lTWlsbGlzKTtcbiAgfVxuXG4gIGNvbnN0IGRlcGxveW1lbnRzVXJsID0gbmV3IFVSTChgJHtwcm9wcy5hZG1pblVybH0vJHtERVBMT1lNRU5UU19QQVRIfWApO1xuICBjb25zdCByZWdpc3RyYXRpb25SZXF1ZXN0ID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgIGFybjogcHJvcHMuc2VydmljZUxhbWJkYUFybixcbiAgICBhc3N1bWVfcm9sZV9hcm46IHByb3BzLmludm9rZVJvbGVBcm4sXG4gIH0pO1xuXG4gIGxldCBmYWlsdXJlUmVhc29uO1xuICBhdHRlbXB0ID0gMTtcbiAgY29uc29sZS5sb2coYFJlZ2lzdGVyaW5nIHNlcnZpY2VzIGF0ICR7ZGVwbG95bWVudHNVcmx9OiAke3JlZ2lzdHJhdGlvblJlcXVlc3R9YCk7XG5cbiAgcmVnaXN0cmF0aW9uX3JldHJ5X2xvb3A6IHdoaWxlICh0cnVlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnNvbGUubG9nKGBNYWtpbmcgcmVnaXN0cmF0aW9uIHJlcXVlc3QgIyR7YXR0ZW1wdH0uLi5gKTtcblxuICAgICAgY29uc3QgcmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2UgPSAoXG4gICAgICAgIGF3YWl0IGh0dHBIYW5kbGVyLmhhbmRsZShcbiAgICAgICAgICBuZXcgSHR0cFJlcXVlc3Qoe1xuICAgICAgICAgICAgYm9keTogcmVnaXN0cmF0aW9uUmVxdWVzdCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgIC4uLmF1dGhIZWFkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvdG9jb2w6IGRlcGxveW1lbnRzVXJsLnByb3RvY29sLFxuICAgICAgICAgICAgaG9zdG5hbWU6IGRlcGxveW1lbnRzVXJsLmhvc3RuYW1lLFxuICAgICAgICAgICAgcG9ydDogZGVwbG95bWVudHNVcmwucG9ydCA/IE51bWJlcihkZXBsb3ltZW50c1VybC5wb3J0KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhdGg6IGRlcGxveW1lbnRzVXJsLnBhdGhuYW1lLFxuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB7IHJlcXVlc3RUaW1lb3V0OiAxMF8wMDAgfSxcbiAgICAgICAgKVxuICAgICAgKS5yZXNwb25zZTtcblxuICAgICAgaWYgKHJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlLnN0YXR1c0NvZGUgPj0gMjAwICYmIHJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlLnN0YXR1c0NvZGUgPCAzMDApIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHN0cmVhbUNvbGxlY3RvcihyZWdpc3RlckRlcGxveW1lbnRSZXNwb25zZS5ib2R5KTtcbiAgICAgICAgY29uc3QgZGF0YVN0ciA9IG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShkYXRhKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBKU09OLnBhcnNlKGRhdGFTdHIpIGFzIFJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlO1xuXG4gICAgICAgIGlmIChwcm9wcy5zZXJ2aWNlUGF0aCAmJiAhcmVzcG9uc2Uuc2VydmljZXMuZmluZCgocykgPT4gcy5uYW1lID09PSBwcm9wcy5zZXJ2aWNlUGF0aCkpIHtcbiAgICAgICAgICBmYWlsdXJlUmVhc29uID1cbiAgICAgICAgICAgIFwiUmVnaXN0cmF0aW9uIHN1Y2NlZWRlZCwgYnV0IG5vbmUgb2YgdGhlIHNlcnZpY2UgbmFtZXMgaW4gdGhlIGRlcGxveW1lbnQgbWF0Y2ggdGhlIHNwZWNpZmllZCBuYW1lLiBcIiArXG4gICAgICAgICAgICBgRXhwZWN0ZWQgXCIke3Byb3BzLnNlcnZpY2VQYXRofVwiLCBnb3QgYmFjazogW2AgK1xuICAgICAgICAgICAgcmVzcG9uc2Uuc2VydmljZXMubWFwKChzdmMpID0+IHN2Yz8ubmFtZSkuam9pbihcIiwgXCIpICtcbiAgICAgICAgICAgIFwiXVwiO1xuXG4gICAgICAgICAgYXR0ZW1wdCA9IE1BWF9SRUdJU1RSQVRJT05fQVRURU1QVFM7IC8vIGRvbid0IHJldHJ5IHRoaXNcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiU3VjY2Vzc2Z1bCByZWdpc3RyYXRpb24hIFNlcnZpY2VzOiBcIiwgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2Uuc2VydmljZXMpKTtcblxuICAgICAgICBjb25zdCBpc1B1YmxpYyA9IChwcm9wcy5wcml2YXRlID8/IFwiZmFsc2VcIikgPT09IFwiZmFsc2VcIjtcblxuICAgICAgICBmb3IgKGNvbnN0IHNlcnZpY2Ugb2YgcmVzcG9uc2Uuc2VydmljZXMgPz8gW10pIHtcbiAgICAgICAgICBpZiAoc2VydmljZS5wdWJsaWMgPT09IGlzUHVibGljKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgU2VydmljZSAke3NlcnZpY2UubmFtZX0gaXMgJHtpc1B1YmxpYyA/IFwicHVibGljXCIgOiBcInByaXZhdGVcIn0uYCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmxvZyhgTWFya2luZyBzZXJ2aWNlICR7c2VydmljZS5uYW1lfSBhcyAke2lzUHVibGljID8gXCJwdWJsaWNcIiA6IFwicHJpdmF0ZVwifS4uLmApO1xuICAgICAgICAgIGNvbnN0IHBhdGNoVXJsID0gbmV3IFVSTChgJHtwcm9wcy5hZG1pblVybH0vJHtTRVJWSUNFU19QQVRIfS8ke3NlcnZpY2UubmFtZX1gKTtcblxuICAgICAgICAgIGNvbnN0IHBhdGNoUmVzcG9uc2UgPSAoXG4gICAgICAgICAgICBhd2FpdCBodHRwSGFuZGxlci5oYW5kbGUoXG4gICAgICAgICAgICAgIG5ldyBIdHRwUmVxdWVzdCh7XG4gICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBwdWJsaWM6IGlzUHVibGljIH0pLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgICAgICAgLi4uYXV0aEhlYWRlcixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHByb3RvY29sOiBwYXRjaFVybC5wcm90b2NvbCxcbiAgICAgICAgICAgICAgICBob3N0bmFtZTogcGF0Y2hVcmwuaG9zdG5hbWUsXG4gICAgICAgICAgICAgICAgcG9ydDogcGF0Y2hVcmwucG9ydCA/IE51bWJlcihwYXRjaFVybC5wb3J0KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwYXRoOiBwYXRjaFVybC5wYXRobmFtZSxcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUEFUQ0hcIixcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHsgcmVxdWVzdFRpbWVvdXQ6IDEwXzAwMCB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkucmVzcG9uc2U7XG5cbiAgICAgICAgICBjb25zb2xlLmxvZyhgR290IHBhdGNoIHJlc3BvbnNlIGJhY2s6ICR7cGF0Y2hSZXNwb25zZS5zdGF0dXNDb2RlfWApO1xuICAgICAgICAgIGlmIChwYXRjaFJlc3BvbnNlLnN0YXR1c0NvZGUgIT0gMjAwKSB7XG4gICAgICAgICAgICBmYWlsdXJlUmVhc29uID0gYE1hcmtpbmcgc2VydmljZSBhcyAke3Byb3BzLnByaXZhdGUgPyBcInByaXZhdGVcIiA6IFwicHVibGljXCJ9IGZhaWxlZDogJHtwYXRjaFJlc3BvbnNlLnJlYXNvbn0gKCR7cGF0Y2hSZXNwb25zZS5zdGF0dXNDb2RlfSlgO1xuICAgICAgICAgICAgYnJlYWsgcmVnaXN0cmF0aW9uX3JldHJ5X2xvb3A7IC8vIGRvbid0IHRocm93IGltbWVkaWF0ZWx5IC0gbGV0IHJldHJ5IGxvb3AgZGVjaWRlIHdoZXRoZXIgdG8gYWJvcnQgc1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnNvbGUubG9nKGBTdWNjZXNzZnVsbHkgbWFya2VkIHNlcnZpY2UgYXMgJHtpc1B1YmxpYyA/IFwicHVibGljXCIgOiBcInByaXZhdGVcIn0uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47IC8vIE92ZXJhbGwgc3VjY2VzcyFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGVycm9yQm9keSA9IGF3YWl0IHN0cmVhbUNvbGxlY3RvcihyZWdpc3RlckRlcGxveW1lbnRSZXNwb25zZS5ib2R5KTtcbiAgICAgICAgY29uc3QgZXJyb3JCb2R5U3RyID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGVycm9yQm9keSk7XG5cbiAgICAgICAgZmFpbHVyZVJlYXNvbiA9IGBSZWdpc3RyYXRpb24gZmFpbGVkICgke3JlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlLnJlYXNvbn0pOiAke2Vycm9yQm9keVN0cn1gO1xuICAgICAgICBjb25zb2xlLmxvZyh7XG4gICAgICAgICAgbWVzc2FnZTogYEdvdCBlcnJvciByZXNwb25zZSBmcm9tIFJlc3RhdGUuYCxcbiAgICAgICAgICBjb2RlOiByZWdpc3RlckRlcGxveW1lbnRSZXNwb25zZS5zdGF0dXNDb2RlLFxuICAgICAgICAgIGJvZHk6IGVycm9yQm9keSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihgUmVnaXN0cmF0aW9uIGZhaWxlZDogJHsoZSBhcyBFcnJvcik/Lm1lc3NhZ2V9IChhdHRlbXB0ICR7YXR0ZW1wdH0pYCk7XG4gICAgICBmYWlsdXJlUmVhc29uID0gKGUgYXMgRXJyb3IpPy5tZXNzYWdlO1xuICAgIH1cblxuICAgIGlmIChhdHRlbXB0ID49IE1BWF9SRUdJU1RSQVRJT05fQVRURU1QVFMpIHtcbiAgICAgIGZhaWx1cmVSZWFzb24gPSBgR2l2aW5nIHVwIGFmdGVyICR7YXR0ZW1wdH0gYXR0ZW1wdHMuIExhc3QgZXJyb3I6ICR7ZmFpbHVyZVJlYXNvbn1gO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGF0dGVtcHQgKz0gMTtcbiAgICBjb25zdCB3YWl0VGltZU1pbGxpcyA9IHJhbmRvbUludCgyXzAwMCkgKyAyICoqIGF0dGVtcHQgKiAxXzAwMDsgLy8gM3MgLT4gNnMgLT4gMTBzXG4gICAgY29uc29sZS5sb2coYFJldHJ5aW5nIHJlZ2lzdHJhdGlvbiBhZnRlciAke3dhaXRUaW1lTWlsbGlzfSBtcy4uLmApO1xuICAgIGF3YWl0IHNsZWVwKHdhaXRUaW1lTWlsbGlzKTtcbiAgfVxuXG4gIGNvbnNvbGUuZXJyb3IoZmFpbHVyZVJlYXNvbik7XG4gIHRocm93IG5ldyBFcnJvcihmYWlsdXJlUmVhc29uID8/IFwiUmVzdGF0ZSBzZXJ2aWNlIHJlZ2lzdHJhdGlvbiBmYWlsZWQuIFBsZWFzZSBzZWUgbG9ncyBmb3IgZGV0YWlscy5cIik7XG59O1xuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVBdXRoSGVhZGVyKHByb3BzOiBSZWdpc3RyYXRpb25Qcm9wZXJ0aWVzKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIGlmICghcHJvcHMuYXV0aFRva2VuU2VjcmV0QXJuKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc29sZS5sb2coYFVzaW5nIGJlYXJlciBhdXRoZW50aWNhdGlvbiB0b2tlbiBmcm9tIHNlY3JldCAke3Byb3BzLmF1dGhUb2tlblNlY3JldEFybn1gKTtcbiAgY29uc3Qgc3NtID0gbmV3IFNlY3JldHNNYW5hZ2VyQ2xpZW50KCk7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc3NtLnNlbmQoXG4gICAgbmV3IEdldFNlY3JldFZhbHVlQ29tbWFuZCh7XG4gICAgICBTZWNyZXRJZDogcHJvcHMuYXV0aFRva2VuU2VjcmV0QXJuLFxuICAgIH0pLFxuICApO1xuXG4gIGNvbnNvbGUubG9nKGBTdWNjZXNzZnVsbHkgcmV0cmlldmVkIHNlY3JldCBcIiR7cmVzcG9uc2UuTmFtZX1cIiB2ZXJzaW9uICR7cmVzcG9uc2UuVmVyc2lvbklkfWApO1xuICByZXR1cm4ge1xuICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtyZXNwb25zZS5TZWNyZXRTdHJpbmd9YCxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2xlZXAobWlsbGlzOiBudW1iZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1pbGxpcykpO1xufVxuIl19
|
package/dist/service-deployer.js
CHANGED
|
@@ -53,7 +53,7 @@ const cdk = __importStar(require("aws-cdk-lib"));
|
|
|
53
53
|
const iam = __importStar(require("aws-cdk-lib/aws-iam"));
|
|
54
54
|
const lambda = __importStar(require("aws-cdk-lib/aws-lambda"));
|
|
55
55
|
const logs = __importStar(require("aws-cdk-lib/aws-logs"));
|
|
56
|
-
const DEFAULT_TIMEOUT = cdk.Duration.seconds(
|
|
56
|
+
const DEFAULT_TIMEOUT = cdk.Duration.seconds(300);
|
|
57
57
|
/**
|
|
58
58
|
* Register Lambda-backed restate services with Restate environments.
|
|
59
59
|
*
|
|
@@ -180,4 +180,4 @@ class ServiceDeployer extends constructs_1.Construct {
|
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
182
|
exports.ServiceDeployer = ServiceDeployer;
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1kZXBsb3llci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9yZXN0YXRlLWNvbnN0cnVjdHMvc2VydmljZS1kZXBsb3llci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwwREFBNkI7QUFDN0IsMkNBQXVDO0FBQ3ZDLGlEQUFtQztBQUNuQyx5REFBMkM7QUFDM0MsK0RBQWlEO0FBRWpELDJEQUE2QztBQUs3QyxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQW9EbEQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLHNCQUFTO0lBTTVDLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVTtJQUNWOzs7O09BSUc7SUFDSCxLQWlCQztRQUVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUM1RCxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVk7WUFDakMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ3pCLFdBQVcsRUFBRSxxQ0FBcUM7WUFDbEQsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1lBQ3BHLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLG9CQUFvQjtZQUMvQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU07WUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLElB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UUFBUSxFQUFzQjthQUNyQztTQUNuQyxDQUFDLENBQUM7UUFFSCxJQUFJLFdBQVcsSUFBSSxDQUFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxDQUFDO1lBQ3JELGtIQUFrSDtZQUNsSCxnR0FBZ0c7WUFDaEcsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNqRSwrR0FBK0c7Z0JBQy9HLGlIQUFpSDtnQkFDakgsa0hBQWtIO2dCQUNsSCw2R0FBNkc7Z0JBQzdHLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xELENBQUM7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUNqQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7Z0JBQ3RCLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO2dCQUNsQyxTQUFTLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQywwQkFBMEI7YUFDckQsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBN0pELDBDQTZKQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjMtMjAyNSAtIFJlc3RhdGUgU29mdHdhcmUsIEluYy4sIFJlc3RhdGUgR21iSFxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBSZXN0YXRlIENESyBDb25zdHJ1Y3QgTGlicmFyeSxcbiAqIHdoaWNoIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqXG4gKiBZb3UgY2FuIGZpbmQgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGluIGZpbGUgTElDRU5TRSBpbiB0aGUgcm9vdFxuICogZGlyZWN0b3J5IG9mIHRoaXMgcmVwb3NpdG9yeSBvciBwYWNrYWdlLCBvciBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Jlc3RhdGVkZXYvc2RrLXR5cGVzY3JpcHQvYmxvYi9tYWluL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCAqIGFzIGxhbWJkYV9ub2RlIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCAqIGFzIHNlY3JldHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiO1xuaW1wb3J0IHsgSVJlc3RhdGVFbnZpcm9ubWVudCB9IGZyb20gXCIuL3Jlc3RhdGUtZW52aXJvbm1lbnRcIjtcbmltcG9ydCB0eXBlIHsgUmVnaXN0cmF0aW9uUHJvcGVydGllcyB9IGZyb20gXCIuL3JlZ2lzdGVyLXNlcnZpY2UtaGFuZGxlci9pbmRleC5tdHNcIjtcblxuY29uc3QgREVGQVVMVF9USU1FT1VUID0gY2RrLkR1cmF0aW9uLnNlY29uZHMoMTgwKTtcblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlUmVnaXN0cmF0aW9uUHJvcHMge1xuICAvKipcbiAgICogU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBBUk4gZm9yIHRoZSBhdXRoZW50aWNhdGlvbiB0b2tlbiB0byB1c2Ugd2hlbiBjYWxsaW5nIHRoZSBhZG1pbiBBUEkuIFRha2VzIHByZWNlZGVuY2VcbiAgICogb3ZlciB0aGUgZW52aXJvbm1lbnQncyB0b2tlbi5cbiAgICovXG4gIGF1dGhUb2tlbj86IHNlY3JldHMuSVNlY3JldDtcblxuICAvKipcbiAgICogVGhlIGV4dGVybmFsIGludm9rZXIgcm9sZSB0aGF0IFJlc3RhdGUgY2FuIGFzc3VtZSB0byBleGVjdXRlIHNlcnZpY2UgaGFuZGxlcnMuIElmIGxlZnQgdW5zZXQsIGl0J3MgYXNzdW1lZCB0aGF0XG4gICAqIHRoZSBSZXN0YXRlIGRlcGxveW1lbnQgaGFzIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gaW52b2tlIHRoZSBoYW5kbGVyIGRpcmVjdGx5LiBUYWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlXG4gICAqIGVudmlyb25tZW50J3MgaW52b2tlclJvbGUuXG4gICAqL1xuICBpbnZva2VyUm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBza2lwIGdyYW50aW5nIHRoZSBpbnZva2VyIHJvbGUgcGVybWlzc2lvbiB0byBpbnZva2UgdGhlIHNlcnZpY2UgaGFuZGxlci4gVGhlIGRlcGxveWVyIGJ5IGRlZmF1bHRcbiAgICogd2lsbCBncmFudCB0aGUgaW52b2tlciByb2xlIHBlcm1pc3Npb24gdG8gaW52b2tlIHRoZSBoYW5kbGVyLCBidXQgeW91IGNhbiBzZXQgdGhpcyB0byBgdHJ1ZWAgdG8gaGFuZGxlIHRoaXNcbiAgICogbWFudWFsbHkuXG4gICAqL1xuICBza2lwSW52b2tlRnVuY3Rpb25HcmFudD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFByaXZhdGUgc2VydmljZXMgYXJlIG9ubHkgYXZhaWxhYmxlIHRvIG90aGVyIFJlc3RhdGUgc2VydmljZXMgaW4gdGhlIHNhbWUgZW52aXJvbm1lbnQsIGFuZCBhcmUgbm90IGFjY2Vzc2libGUgZm9yXG4gICAqIGluZ3Jlc3MtYmFzZWQgaW52b2NhdGlvbi4gSWYgbXVsdGlwbGUgc2VydmljZXMgYXJlIGV4cG9zZWQgYnkgdGhlIHNhbWUgaGFuZGxlciwgYWxsIG9mIHRoZW0gd2lsbCBiZSB1cGRhdGVkLlxuICAgKiBEZWZhdWx0OiBgZmFsc2VgLCBpLmUuIHNlcnZpY2VzIHdpbGwgYmUgbWFkZSBwdWJsaWMgYW5kIHJlYWNoYWJsZSB2aWEgaW5ncmVzcyBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5yZXN0YXRlLmRldi9vcGVyYXRlL3JlZ2lzdHJhdGlvbiNwcml2YXRlLXNlcnZpY2VzXG4gICAqL1xuICBwcml2YXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBkdW1teSBwYXJhbWV0ZXIgdG8gZm9yY2UgQ2xvdWRGb3JtYXRpb24gdG8gdXBkYXRlIHRoZSBkZXBsb3ltZW50IHdoZW4gdGhlIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gVXNlZnVsIGlmXG4gICAqIHlvdSB3YW50IHRvIHRhcmdldCB0aGUgXCJsYXRlc3QgdmVyc2lvblwiIG9mIGEgc2VydmljZSBoYW5kbGVyIGFuZCBuZWVkIHRvIGZvcmNlIGEgZGVwbG95bWVudCBpbiBvcmRlciB0byB0cmlnZ2VyXG4gICAqIGRpc2NvdmVyeS4gU2V0IHRoaXMgdG8gYSBuZXcgdmFsdWUgZXZlcnkgdGltZSB5b3Ugd2FudCB0byBmb3JjZSBhIHNlcnZpY2UgcmVnaXN0cmF0aW9uIHRvIGhhcHBlbiwgZS5nLiBhIHRpbWVzdGFtcC5cbiAgICovXG4gIGNvbmZpZ3VyYXRpb25WZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBY2NlcHQgc2VsZi1zaWduZWQgY2VydGlmaWNhdGVzLlxuICAgKi9cbiAgaW5zZWN1cmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IGEgY3VzdG9tIGFkbWluIGVuZHBvaW50IFVSTCwgb3ZlcnJpZGluZyB0aGUgb25lIGV4cG9zZWQgYnkgdGhlIHRhcmdldCBlbnZpcm9ubWVudC4gWW91IG1heSBuZWVkIHRoaXMgaWZcbiAgICogdGhlIGBFbnZpcm9ubWVudGAgY29uc3RydWN0IGlzIHJlcG9ydGluZyBhIGRpZmZlcmVudCBVUkwgZnJvbSB0aGUgb25lIHRoYXQgdGhlIGRlcGxveWVyIGNhbiByZWFjaCwgZS5nLiBpZiB5b3VyXG4gICAqIFJlc3RhdGUgc2VydmljZSBpcyBiZWhpbmQgYSBsb2FkIGJhbGFuY2VyLlxuICAgKi9cbiAgYWRtaW5Vcmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgTGFtYmRhLWJhY2tlZCByZXN0YXRlIHNlcnZpY2VzIHdpdGggUmVzdGF0ZSBlbnZpcm9ubWVudHMuXG4gKlxuICogWW91IGNhbiByZXVzZSB0aGUgc2FtZSBkZXBsb3llciB0byByZWdpc3RlciB0aGUgc2VydmljZXMgZXhwb3NlZCBieSBtdWx0aXBsZSBoYW5kbGVycy4gWW91IGNhbiBhbHNvIHJldXNlIHRoZVxuICogZGVwbG95ZXIgdG8gdGFyZ2V0IG11bHRpcGxlIFJlc3RhdGUgZW52aXJvbm1lbnRzLCBwcm92aWRlZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBjb21wYXRpYmxlIChlLmcuIHRoZSBSZXN0YXRlXG4gKiBlbnZpcm9ubWVudHMgaXQgbmVlZHMgdG8gY29tbXVuaWNhdGUgd2l0aCBhcmUgYWxsIGFjY2Vzc2libGUgZnJvbSB0aGUgc2FtZSBWUEMgYW5kIFNlY3VyaXR5IEdyb3VwcywgYWNjZXB0IHRoZSBzYW1lXG4gKiBhdXRoZW50aWNhdGlvbiB0b2tlbiwgYW5kIHNvIG9uKS4gQ29udmVyc2VseSwgeW91IGNhbiBjcmVhdGUgbXVsdGlwbGUgZGVwbG95ZXJzIGluIGNhc2VzIHdoZW4geW91IG5lZWQgdG8gZGVwbG95IHRvXG4gKiBtdWx0aXBsZSBlbnZpcm9ubWVudHMgdGhhdCByZXF1aXJlIGRpc3RpbmN0IGNvbmZpZ3VyYXRpb24uXG4gKlxuICogRGVwbG95bWVudCBsb2dzIGFyZSByZXRhaW5lZCBmb3IgMzAgZGF5cyBieSBkZWZhdWx0LlxuICpcbiAqIEBzZWUge3JlZ2lzdGVyfVxuICovXG5leHBvcnQgY2xhc3MgU2VydmljZURlcGxveWVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqIFRoZSBjdXN0b20gcmVzb3VyY2UgcHJvdmlkZXIgZm9yIGhhbmRsaW5nIFwiZGVwbG95bWVudFwiIHJlc291cmNlcy4gKi9cbiAgcmVhZG9ubHkgZXZlbnRIYW5kbGVyOiBsYW1iZGFfbm9kZS5Ob2RlanNGdW5jdGlvbjtcblxuICBwcml2YXRlIGludm9jYXRpb25Qb2xpY3k/OiBpYW0uUG9saWN5O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBBbGxvd3MgdGhlIGN1c3RvbSByZXNvdXJjZSBldmVudCBoYW5kbGVyIHByb3BlcnRpZXMgdG8gYmUgb3ZlcnJpZGRlbi4gVGhlIG1haW4gdXNlIGNhc2UgZm9yIHRoaXMgaXMgc3BlY2lmeWluZ1xuICAgICAqIFZQQyBhbmQgc2VjdXJpdHkgZ3JvdXAgc2V0dGluZ3MgZm9yIFJlc3RhdGUgZW52aXJvbm1lbnRzIHRoYXQgcmVxdWlyZSBpdC4gVGhlIGV2ZW50IGhhbmRsZXIgbXVzdCBiZSBhYmxlXG4gICAgICogdG8gcmVhY2ggdGhlIFMzIEFQSSwgc28gaWYgdGhlIHN1Ym5ldCBoYXMgbm8gZWdyZXNzLCBpdCB3aWxsIG5lZWQgYW4gUzMgVlBDIGVuZHBvaW50LlxuICAgICAqL1xuICAgIHByb3BzPzogUGFydGlhbDxcbiAgICAgIFBpY2s8XG4gICAgICAgIGxhbWJkYS5GdW5jdGlvblByb3BzLFxuICAgICAgICB8IFwiYWxsb3dQdWJsaWNTdWJuZXRcIlxuICAgICAgICB8IFwiYXJjaGl0ZWN0dXJlXCJcbiAgICAgICAgfCBcInJ1bnRpbWVcIlxuICAgICAgICB8IFwiY29kZVwiXG4gICAgICAgIHwgXCJoYW5kbGVyXCJcbiAgICAgICAgfCBcImZ1bmN0aW9uTmFtZVwiXG4gICAgICAgIHwgXCJsb2dHcm91cFwiXG4gICAgICAgIHwgXCJyb2xlXCJcbiAgICAgICAgfCBcInNlY3VyaXR5R3JvdXBzXCJcbiAgICAgICAgfCBcInRpbWVvdXRcIlxuICAgICAgICB8IFwidnBjXCJcbiAgICAgICAgfCBcInZwY1N1Ym5ldHNcIlxuICAgICAgPiAmXG4gICAgICAgIFBpY2s8bG9ncy5Mb2dHcm91cFByb3BzLCBcInJlbW92YWxQb2xpY3lcIj5cbiAgICA+LFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5ldmVudEhhbmRsZXIgPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIFwiRXZlbnRIYW5kbGVyXCIsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogcHJvcHM/LmZ1bmN0aW9uTmFtZSxcbiAgICAgIGxvZ0dyb3VwOiBwcm9wcz8ubG9nR3JvdXAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXN0YXRlIGN1c3RvbSByZWdpc3RyYXRpb24gaGFuZGxlclwiLFxuICAgICAgY29kZTogcHJvcHM/LmNvZGUgPz8gY2RrLmF3c19sYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgXCJyZWdpc3Rlci1zZXJ2aWNlLWhhbmRsZXJcIikpLFxuICAgICAgaGFuZGxlcjogcHJvcHM/LmhhbmRsZXIgPz8gXCJlbnRyeXBvaW50LmhhbmRsZXJcIixcbiAgICAgIGFyY2hpdGVjdHVyZTogcHJvcHM/LmFyY2hpdGVjdHVyZSA/PyBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgIHJ1bnRpbWU6IHByb3BzPy5ydW50aW1lID8/IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMl9YLFxuICAgICAgcm9sZTogcHJvcHM/LnJvbGUsXG4gICAgICBtZW1vcnlTaXplOiAxMjgsXG4gICAgICB0aW1lb3V0OiBwcm9wcz8udGltZW91dCA/PyBERUZBVUxUX1RJTUVPVVQsXG4gICAgICAuLi4ocHJvcHM/LnZwY1xuICAgICAgICA/ICh7XG4gICAgICAgICAgICB2cGM6IHByb3BzPy52cGMsXG4gICAgICAgICAgICB2cGNTdWJuZXRzOiBwcm9wcz8udnBjU3VibmV0cyxcbiAgICAgICAgICAgIHNlY3VyaXR5R3JvdXBzOiBwcm9wcz8uc2VjdXJpdHlHcm91cHMsXG4gICAgICAgICAgfSBzYXRpc2ZpZXMgUGljazxsYW1iZGEuRnVuY3Rpb25PcHRpb25zLCBcInZwY1wiIHwgXCJ2cGNTdWJuZXRzXCIgfCBcInNlY3VyaXR5R3JvdXBzXCI+KVxuICAgICAgICA6IHt9KSxcbiAgICAgIGFsbG93UHVibGljU3VibmV0OiBwcm9wcz8uYWxsb3dQdWJsaWNTdWJuZXQsXG4gICAgfSk7XG5cbiAgICBpZiAoIXByb3BzPy5sb2dHcm91cCkge1xuICAgICAgLy8gQnkgZGVmYXVsdCwgTGFtYmRhIEZ1bmN0aW9ucyBoYXZlIGEgbG9nIGdyb3VwIHdpdGggbmV2ZXItZXhwaXJpbmcgcmV0ZW50aW9uIHBvbGljeS5cbiAgICAgIG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsIFwiRGVwbG95bWVudExvZ3NcIiwge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGAvYXdzL2xhbWJkYS8ke3RoaXMuZXZlbnRIYW5kbGVyLmZ1bmN0aW9uTmFtZX1gLFxuICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfTU9OVEgsXG4gICAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzPy5yZW1vdmFsUG9saWN5ID8/IGNkay5SZW1vdmFsUG9saWN5LlJFVEFJTl9PTl9VUERBVEVfT1JfREVMRVRFLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlcGxveSBhIExhbWJkYS1iYWNrZWQgUmVzdGF0ZSBoYW5kbGVyIHRvIGEgZ2l2ZW4gZW52aXJvbm1lbnQuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBhIGNoYW5nZSBpbiB0aGUgaGFuZGxlciBwcm9wZXJ0aWVzIGlzIG5lY2Vzc2FyeSB0byB0cmlnZ2VyIHJlLWRpc2NvdmVyeSBkdWUgdG8gaG93IENsb3VkRm9ybWF0aW9uIHVwZGF0ZXNcbiAgICogd29yay4gSWYgeW91IGRlcGxveSBhIGZpeGVkIExhbWJkYSBhbGlhcyBzdWNoIGFzIGAkTEFURVNUYCB3aGljaCBpc24ndCBjaGFuZ2luZyBvbiBldmVyeSBoYW5kbGVyIGNvZGUgb3JcbiAgICogY29uZmlndXJhdGlvbiB1cGRhdGUsIHlvdSB3aWxsIHdhbnQgdG8gc2V0IHRoZSBgY29uZmlndXJhdGlvblZlcnNpb25gIHByb3BlcnR5IGluIGBvcHRpb25zYCB0byBhIG5ldyB2YWx1ZSAoZS5nLiBhXG4gICAqIHRpbWVzdGFtcCkgdG8gZW5zdXJlIGFuIHVwZGF0ZSB0byB0aGUgUmVzdGF0ZSBlbnZpcm9ubWVudCBpcyB0cmlnZ2VyZWQgb24gc3RhY2sgZGVwbG95bWVudC5cbiAgICpcbiAgICogQHBhcmFtIGhhbmRsZXIgc2VydmljZSBoYW5kbGVyIC0gbXVzdCBiZSBhIHNwZWNpZmljIGZ1bmN0aW9uIHZlcnNpb24sIHVzZSBcImxhdGVzdFwiIGlmIHlvdSBkb24ndCBjYXJlIGFib3V0IGV4cGxpY2l0IHZlcnNpb25pbmdcbiAgICogQHBhcmFtIGVudmlyb25tZW50IHRhcmdldCBSZXN0YXRlIGVudmlyb25tZW50XG4gICAqIEBwYXJhbSBvcHRpb25zIGFkZGl0aW9uYWwgb3B0aW9uczsgc2VlIGZpZWxkIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHNcbiAgICogQHNlZSB7U2VydmljZVJlZ2lzdHJhdGlvblByb3BzfVxuICAgKi9cbiAgcmVnaXN0ZXIoaGFuZGxlcjogbGFtYmRhLklWZXJzaW9uLCBlbnZpcm9ubWVudDogSVJlc3RhdGVFbnZpcm9ubWVudCwgb3B0aW9ucz86IFNlcnZpY2VSZWdpc3RyYXRpb25Qcm9wcykge1xuICAgIHRoaXMucmVnaXN0ZXJTZXJ2aWNlSW50ZXJuYWwodW5kZWZpbmVkLCBoYW5kbGVyLCBlbnZpcm9ubWVudCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogRGVwbG95IGEgTGFtYmRhLWJhY2tlZCBSZXN0YXRlIGhhbmRsZXIgdG8gYSBnaXZlbiBlbnZpcm9ubWVudCwgZW5zdXJpbmcgdGhhdCBhIHBhcnRpY3VsYXIgc2VydmljZSBuYW1lIGV4aXN0cy5cbiAgICpcbiAgICogTm90ZSB0aGF0IGEgY2hhbmdlIGluIHRoZSBoYW5kbGVyIHByb3BlcnRpZXMgaXMgbmVjZXNzYXJ5IHRvIHRyaWdnZXIgcmUtZGlzY292ZXJ5IGR1ZSB0byBob3cgQ2xvdWRGb3JtYXRpb24gdXBkYXRlc1xuICAgKiB3b3JrLiBJZiB5b3UgZGVwbG95IGEgZml4ZWQgTGFtYmRhIGFsaWFzIHN1Y2ggYXMgYCRMQVRFU1RgIHdoaWNoIGlzbid0IGNoYW5naW5nIG9uIGV2ZXJ5IGhhbmRsZXIgY29kZSBvclxuICAgKiBjb25maWd1cmF0aW9uIHVwZGF0ZSwgeW91IHdpbGwgd2FudCB0byBzZXQgdGhlIGBjb25maWd1cmF0aW9uVmVyc2lvbmAgcHJvcGVydHkgaW4gYG9wdGlvbnNgIHRvIGEgbmV3IHZhbHVlIChlLmcuIGFcbiAgICogdGltZXN0YW1wKSB0byBlbnN1cmUgYW4gdXBkYXRlIHRvIHRoZSBSZXN0YXRlIGVudmlyb25tZW50IGlzIHRyaWdnZXJlZCBvbiBzdGFjayBkZXBsb3ltZW50LlxuICAgKlxuICAgKiBAcGFyYW0gc2VydmljZU5hbWUgdGhlIHNlcnZpY2UgbmFtZSB3aXRoaW4gUmVzdGF0ZSAtIGFzIGEgc2FmZXR5IG1lY2hhbmlzbSwgdGhpcyBtdXN0IG1hdGNoIHRoZSBzZXJ2aWNlJ3NcbiAgICogICAgICAgIHNlbGYtcmVwb3J0ZWQgbmFtZSBkdXJpbmcgZGlzY292ZXJ5OyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgc2VydmljZXMsIG9uZSBvZiB0aGVtIG11c3QgbWF0Y2ggb3IgdGhlXG4gICAqICAgICAgICBkZXBsb3ltZW50IGZhaWxzXG4gICAqIEBwYXJhbSBoYW5kbGVyIHNlcnZpY2UgaGFuZGxlciAtIG11c3QgYmUgYSBzcGVjaWZpYyBmdW5jdGlvbiB2ZXJzaW9uLCB1c2UgXCJsYXRlc3RcIiBpZiB5b3UgZG9uJ3QgY2FyZSBhYm91dCBleHBsaWNpdCB2ZXJzaW9uaW5nXG4gICAqIEBwYXJhbSBlbnZpcm9ubWVudCB0YXJnZXQgUmVzdGF0ZSBlbnZpcm9ubWVudFxuICAgKiBAcGFyYW0gb3B0aW9ucyBhZGRpdGlvbmFsIG9wdGlvbnM7IHNlZSBmaWVsZCBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzXG4gICAqL1xuICBkZXBsb3lTZXJ2aWNlKFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgaGFuZGxlcjogbGFtYmRhLklWZXJzaW9uLFxuICAgIGVudmlyb25tZW50OiBJUmVzdGF0ZUVudmlyb25tZW50LFxuICAgIG9wdGlvbnM/OiBTZXJ2aWNlUmVnaXN0cmF0aW9uUHJvcHMsXG4gICkge1xuICAgIHRoaXMucmVnaXN0ZXJTZXJ2aWNlSW50ZXJuYWwoc2VydmljZU5hbWUsIGhhbmRsZXIsIGVudmlyb25tZW50LCBvcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJTZXJ2aWNlSW50ZXJuYWwoXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBoYW5kbGVyOiBsYW1iZGEuSVZlcnNpb24sXG4gICAgZW52aXJvbm1lbnQ6IElSZXN0YXRlRW52aXJvbm1lbnQsXG4gICAgb3B0aW9ucz86IFNlcnZpY2VSZWdpc3RyYXRpb25Qcm9wcyxcbiAgKSB7XG4gICAgY29uc3QgYXV0aFRva2VuID0gb3B0aW9ucz8uYXV0aFRva2VuID8/IGVudmlyb25tZW50LmF1dGhUb2tlbjtcbiAgICBhdXRoVG9rZW4/LmdyYW50UmVhZCh0aGlzLmV2ZW50SGFuZGxlcik7XG5cbiAgICBjb25zdCBpbnZva2VyUm9sZSA9IG9wdGlvbnM/Lmludm9rZXJSb2xlID8/IGVudmlyb25tZW50Lmludm9rZXJSb2xlO1xuXG4gICAgY29uc3QgZGVwbG95bWVudCA9IG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UoaGFuZGxlciwgXCJSZXN0YXRlU2VydmljZURlcGxveW1lbnRcIiwge1xuICAgICAgc2VydmljZVRva2VuOiB0aGlzLmV2ZW50SGFuZGxlci5mdW5jdGlvbkFybixcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OlJlc3RhdGVTZXJ2aWNlRGVwbG95bWVudFwiLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBzZXJ2aWNlUGF0aDogc2VydmljZU5hbWUsXG4gICAgICAgIGFkbWluVXJsOiBvcHRpb25zPy5hZG1pblVybCA/PyBlbnZpcm9ubWVudC5hZG1pblVybCxcbiAgICAgICAgYXV0aFRva2VuU2VjcmV0QXJuOiBhdXRoVG9rZW4/LnNlY3JldEFybixcbiAgICAgICAgc2VydmljZUxhbWJkYUFybjogaGFuZGxlci5mdW5jdGlvbkFybixcbiAgICAgICAgaW52b2tlUm9sZUFybjogaW52b2tlclJvbGU/LnJvbGVBcm4sXG4gICAgICAgIC8vIHJlbW92YWxQb2xpY3k6IFwicmV0YWluXCIsXG4gICAgICAgIHByaXZhdGU6IChvcHRpb25zPy5wcml2YXRlID8/IGZhbHNlKS50b1N0cmluZygpIGFzIFwidHJ1ZVwiIHwgXCJmYWxzZVwiLFxuICAgICAgICBjb25maWd1cmF0aW9uVmVyc2lvbjpcbiAgICAgICAgICBvcHRpb25zPy5jb25maWd1cmF0aW9uVmVyc2lvbiB8fCBoYW5kbGVyLmZ1bmN0aW9uQXJuLmVuZHNXaXRoKFwiOiRMQVRFU1RcIilcbiAgICAgICAgICAgID8gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgaW5zZWN1cmU6IChvcHRpb25zPy5pbnNlY3VyZSA/PyBmYWxzZSkudG9TdHJpbmcoKSBhcyBcInRydWVcIiB8IFwiZmFsc2VcIixcbiAgICAgIH0gc2F0aXNmaWVzIFJlZ2lzdHJhdGlvblByb3BlcnRpZXMsXG4gICAgfSk7XG5cbiAgICBpZiAoaW52b2tlclJvbGUgJiYgIW9wdGlvbnM/LnNraXBJbnZva2VGdW5jdGlvbkdyYW50KSB7XG4gICAgICAvLyBXZSBjcmVhdGUgYSBzZXBhcmF0ZSBwb2xpY3kgd2hpY2ggd2UnbGwgYXR0YWNoIHRvIHRoZSBwcm92aWRlZCBpbnZva2VyIHJvbGUuIFRoaXMgYnJlYWtzIGEgY2lyY3VsYXIgY3Jvc3Mtc3RhY2tcbiAgICAgIC8vIGRlcGVuZGVuY3kgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUgY3JlYXRlZCBiZXR3ZWVuIHRoZSBzZXJ2aWNlIGRlcGxveWVyIGFuZCB0aGUgaW52b2tlciByb2xlLlxuICAgICAgaWYgKCF0aGlzLmludm9jYXRpb25Qb2xpY3kpIHtcbiAgICAgICAgdGhpcy5pbnZvY2F0aW9uUG9saWN5ID0gbmV3IGlhbS5Qb2xpY3kodGhpcywgXCJJbnZvY2F0aW9uUG9saWN5XCIpO1xuICAgICAgICAvLyBEZXNwaXRlIHRoZSBBUk4gcmVmZXJlbmNlIGFib3ZlLCBDbG91ZEZvcm1hdGlvbiBzb21ldGltZXMgdHJpZXMgdG8gaW52b2tlIHRoZSBjdXN0b20gcmVzb3VyY2UgaGFuZGxlciBiZWZvcmVcbiAgICAgICAgLy8gYWxsIHBlcm1pc3Npb25zIGFyZSBhcHBsaWVkLiBBZGRpbmcgYW4gZXhwbGljaXQgZGVwZW5kZW5jeSBpbmNsdWRlcyBhIGRlcGVuZGVuY3kgb24gYW55IHBlbmRpbmcgcG9saWN5IHVwZGF0ZXNcbiAgICAgICAgLy8gZGVmaW5lZCBpbiB0aGUgc2FtZSBzdGFjayBhcyB0aGUgc2VydmljZSBkZXBsb3llciwgd2hpY2ggc2VlbXMgdG8gaGVscC4gU29tZSBwcm9wYWdhdGlvbiBkZWxheSBtaWdodCBzdGlsbCBtZWFuXG4gICAgICAgIC8vIHdlIGxlYW4gb24gcmV0cmllcyBpbiB0aGUgZGVwbG95ZXIgZXZlbnQgaGFuZGxlciBpbiBhbnkgZXZlbnQgYnV0IHRoaXMgcmVkdWNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgZmFpbHVyZS5cbiAgICAgICAgZGVwbG95bWVudC5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5pbnZvY2F0aW9uUG9saWN5KTtcbiAgICAgICAgdGhpcy5pbnZvY2F0aW9uUG9saWN5LmF0dGFjaFRvUm9sZShpbnZva2VyUm9sZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmludm9jYXRpb25Qb2xpY3kuYWRkU3RhdGVtZW50cyhcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcImxhbWJkYTpJbnZva2VGdW5jdGlvblwiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IGhhbmRsZXIubGFtYmRhLnJlc291cmNlQXJuc0ZvckdyYW50SW52b2tlLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1kZXBsb3llci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9yZXN0YXRlLWNvbnN0cnVjdHMvc2VydmljZS1kZXBsb3llci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwwREFBNkI7QUFDN0IsMkNBQXVDO0FBQ3ZDLGlEQUFtQztBQUNuQyx5REFBMkM7QUFDM0MsK0RBQWlEO0FBRWpELDJEQUE2QztBQUs3QyxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQW9EbEQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLHNCQUFTO0lBTTVDLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVTtJQUNWOzs7O09BSUc7SUFDSCxLQWlCQztRQUVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUM1RCxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVk7WUFDakMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ3pCLFdBQVcsRUFBRSxxQ0FBcUM7WUFDbEQsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1lBQ3BHLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLG9CQUFvQjtZQUMvQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU07WUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLElB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UUFBUSxFQUFzQjthQUNyQztTQUNuQyxDQUFDLENBQUM7UUFFSCxJQUFJLFdBQVcsSUFBSSxDQUFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxDQUFDO1lBQ3JELGtIQUFrSDtZQUNsSCxnR0FBZ0c7WUFDaEcsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNqRSwrR0FBK0c7Z0JBQy9HLGlIQUFpSDtnQkFDakgsa0hBQWtIO2dCQUNsSCw2R0FBNkc7Z0JBQzdHLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xELENBQUM7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUNqQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7Z0JBQ3RCLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO2dCQUNsQyxTQUFTLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQywwQkFBMEI7YUFDckQsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBN0pELDBDQTZKQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjMtMjAyNSAtIFJlc3RhdGUgU29mdHdhcmUsIEluYy4sIFJlc3RhdGUgR21iSFxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBSZXN0YXRlIENESyBDb25zdHJ1Y3QgTGlicmFyeSxcbiAqIHdoaWNoIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqXG4gKiBZb3UgY2FuIGZpbmQgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGluIGZpbGUgTElDRU5TRSBpbiB0aGUgcm9vdFxuICogZGlyZWN0b3J5IG9mIHRoaXMgcmVwb3NpdG9yeSBvciBwYWNrYWdlLCBvciBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Jlc3RhdGVkZXYvc2RrLXR5cGVzY3JpcHQvYmxvYi9tYWluL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCAqIGFzIGxhbWJkYV9ub2RlIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCAqIGFzIHNlY3JldHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiO1xuaW1wb3J0IHsgSVJlc3RhdGVFbnZpcm9ubWVudCB9IGZyb20gXCIuL3Jlc3RhdGUtZW52aXJvbm1lbnRcIjtcbmltcG9ydCB0eXBlIHsgUmVnaXN0cmF0aW9uUHJvcGVydGllcyB9IGZyb20gXCIuL3JlZ2lzdGVyLXNlcnZpY2UtaGFuZGxlci9pbmRleC5tdHNcIjtcblxuY29uc3QgREVGQVVMVF9USU1FT1VUID0gY2RrLkR1cmF0aW9uLnNlY29uZHMoMzAwKTtcblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlUmVnaXN0cmF0aW9uUHJvcHMge1xuICAvKipcbiAgICogU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBBUk4gZm9yIHRoZSBhdXRoZW50aWNhdGlvbiB0b2tlbiB0byB1c2Ugd2hlbiBjYWxsaW5nIHRoZSBhZG1pbiBBUEkuIFRha2VzIHByZWNlZGVuY2VcbiAgICogb3ZlciB0aGUgZW52aXJvbm1lbnQncyB0b2tlbi5cbiAgICovXG4gIGF1dGhUb2tlbj86IHNlY3JldHMuSVNlY3JldDtcblxuICAvKipcbiAgICogVGhlIGV4dGVybmFsIGludm9rZXIgcm9sZSB0aGF0IFJlc3RhdGUgY2FuIGFzc3VtZSB0byBleGVjdXRlIHNlcnZpY2UgaGFuZGxlcnMuIElmIGxlZnQgdW5zZXQsIGl0J3MgYXNzdW1lZCB0aGF0XG4gICAqIHRoZSBSZXN0YXRlIGRlcGxveW1lbnQgaGFzIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gaW52b2tlIHRoZSBoYW5kbGVyIGRpcmVjdGx5LiBUYWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlXG4gICAqIGVudmlyb25tZW50J3MgaW52b2tlclJvbGUuXG4gICAqL1xuICBpbnZva2VyUm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBza2lwIGdyYW50aW5nIHRoZSBpbnZva2VyIHJvbGUgcGVybWlzc2lvbiB0byBpbnZva2UgdGhlIHNlcnZpY2UgaGFuZGxlci4gVGhlIGRlcGxveWVyIGJ5IGRlZmF1bHRcbiAgICogd2lsbCBncmFudCB0aGUgaW52b2tlciByb2xlIHBlcm1pc3Npb24gdG8gaW52b2tlIHRoZSBoYW5kbGVyLCBidXQgeW91IGNhbiBzZXQgdGhpcyB0byBgdHJ1ZWAgdG8gaGFuZGxlIHRoaXNcbiAgICogbWFudWFsbHkuXG4gICAqL1xuICBza2lwSW52b2tlRnVuY3Rpb25HcmFudD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFByaXZhdGUgc2VydmljZXMgYXJlIG9ubHkgYXZhaWxhYmxlIHRvIG90aGVyIFJlc3RhdGUgc2VydmljZXMgaW4gdGhlIHNhbWUgZW52aXJvbm1lbnQsIGFuZCBhcmUgbm90IGFjY2Vzc2libGUgZm9yXG4gICAqIGluZ3Jlc3MtYmFzZWQgaW52b2NhdGlvbi4gSWYgbXVsdGlwbGUgc2VydmljZXMgYXJlIGV4cG9zZWQgYnkgdGhlIHNhbWUgaGFuZGxlciwgYWxsIG9mIHRoZW0gd2lsbCBiZSB1cGRhdGVkLlxuICAgKiBEZWZhdWx0OiBgZmFsc2VgLCBpLmUuIHNlcnZpY2VzIHdpbGwgYmUgbWFkZSBwdWJsaWMgYW5kIHJlYWNoYWJsZSB2aWEgaW5ncmVzcyBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5yZXN0YXRlLmRldi9vcGVyYXRlL3JlZ2lzdHJhdGlvbiNwcml2YXRlLXNlcnZpY2VzXG4gICAqL1xuICBwcml2YXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBkdW1teSBwYXJhbWV0ZXIgdG8gZm9yY2UgQ2xvdWRGb3JtYXRpb24gdG8gdXBkYXRlIHRoZSBkZXBsb3ltZW50IHdoZW4gdGhlIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gVXNlZnVsIGlmXG4gICAqIHlvdSB3YW50IHRvIHRhcmdldCB0aGUgXCJsYXRlc3QgdmVyc2lvblwiIG9mIGEgc2VydmljZSBoYW5kbGVyIGFuZCBuZWVkIHRvIGZvcmNlIGEgZGVwbG95bWVudCBpbiBvcmRlciB0byB0cmlnZ2VyXG4gICAqIGRpc2NvdmVyeS4gU2V0IHRoaXMgdG8gYSBuZXcgdmFsdWUgZXZlcnkgdGltZSB5b3Ugd2FudCB0byBmb3JjZSBhIHNlcnZpY2UgcmVnaXN0cmF0aW9uIHRvIGhhcHBlbiwgZS5nLiBhIHRpbWVzdGFtcC5cbiAgICovXG4gIGNvbmZpZ3VyYXRpb25WZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBY2NlcHQgc2VsZi1zaWduZWQgY2VydGlmaWNhdGVzLlxuICAgKi9cbiAgaW5zZWN1cmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IGEgY3VzdG9tIGFkbWluIGVuZHBvaW50IFVSTCwgb3ZlcnJpZGluZyB0aGUgb25lIGV4cG9zZWQgYnkgdGhlIHRhcmdldCBlbnZpcm9ubWVudC4gWW91IG1heSBuZWVkIHRoaXMgaWZcbiAgICogdGhlIGBFbnZpcm9ubWVudGAgY29uc3RydWN0IGlzIHJlcG9ydGluZyBhIGRpZmZlcmVudCBVUkwgZnJvbSB0aGUgb25lIHRoYXQgdGhlIGRlcGxveWVyIGNhbiByZWFjaCwgZS5nLiBpZiB5b3VyXG4gICAqIFJlc3RhdGUgc2VydmljZSBpcyBiZWhpbmQgYSBsb2FkIGJhbGFuY2VyLlxuICAgKi9cbiAgYWRtaW5Vcmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgTGFtYmRhLWJhY2tlZCByZXN0YXRlIHNlcnZpY2VzIHdpdGggUmVzdGF0ZSBlbnZpcm9ubWVudHMuXG4gKlxuICogWW91IGNhbiByZXVzZSB0aGUgc2FtZSBkZXBsb3llciB0byByZWdpc3RlciB0aGUgc2VydmljZXMgZXhwb3NlZCBieSBtdWx0aXBsZSBoYW5kbGVycy4gWW91IGNhbiBhbHNvIHJldXNlIHRoZVxuICogZGVwbG95ZXIgdG8gdGFyZ2V0IG11bHRpcGxlIFJlc3RhdGUgZW52aXJvbm1lbnRzLCBwcm92aWRlZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBjb21wYXRpYmxlIChlLmcuIHRoZSBSZXN0YXRlXG4gKiBlbnZpcm9ubWVudHMgaXQgbmVlZHMgdG8gY29tbXVuaWNhdGUgd2l0aCBhcmUgYWxsIGFjY2Vzc2libGUgZnJvbSB0aGUgc2FtZSBWUEMgYW5kIFNlY3VyaXR5IEdyb3VwcywgYWNjZXB0IHRoZSBzYW1lXG4gKiBhdXRoZW50aWNhdGlvbiB0b2tlbiwgYW5kIHNvIG9uKS4gQ29udmVyc2VseSwgeW91IGNhbiBjcmVhdGUgbXVsdGlwbGUgZGVwbG95ZXJzIGluIGNhc2VzIHdoZW4geW91IG5lZWQgdG8gZGVwbG95IHRvXG4gKiBtdWx0aXBsZSBlbnZpcm9ubWVudHMgdGhhdCByZXF1aXJlIGRpc3RpbmN0IGNvbmZpZ3VyYXRpb24uXG4gKlxuICogRGVwbG95bWVudCBsb2dzIGFyZSByZXRhaW5lZCBmb3IgMzAgZGF5cyBieSBkZWZhdWx0LlxuICpcbiAqIEBzZWUge3JlZ2lzdGVyfVxuICovXG5leHBvcnQgY2xhc3MgU2VydmljZURlcGxveWVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqIFRoZSBjdXN0b20gcmVzb3VyY2UgcHJvdmlkZXIgZm9yIGhhbmRsaW5nIFwiZGVwbG95bWVudFwiIHJlc291cmNlcy4gKi9cbiAgcmVhZG9ubHkgZXZlbnRIYW5kbGVyOiBsYW1iZGFfbm9kZS5Ob2RlanNGdW5jdGlvbjtcblxuICBwcml2YXRlIGludm9jYXRpb25Qb2xpY3k/OiBpYW0uUG9saWN5O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBBbGxvd3MgdGhlIGN1c3RvbSByZXNvdXJjZSBldmVudCBoYW5kbGVyIHByb3BlcnRpZXMgdG8gYmUgb3ZlcnJpZGRlbi4gVGhlIG1haW4gdXNlIGNhc2UgZm9yIHRoaXMgaXMgc3BlY2lmeWluZ1xuICAgICAqIFZQQyBhbmQgc2VjdXJpdHkgZ3JvdXAgc2V0dGluZ3MgZm9yIFJlc3RhdGUgZW52aXJvbm1lbnRzIHRoYXQgcmVxdWlyZSBpdC4gVGhlIGV2ZW50IGhhbmRsZXIgbXVzdCBiZSBhYmxlXG4gICAgICogdG8gcmVhY2ggdGhlIFMzIEFQSSwgc28gaWYgdGhlIHN1Ym5ldCBoYXMgbm8gZWdyZXNzLCBpdCB3aWxsIG5lZWQgYW4gUzMgVlBDIGVuZHBvaW50LlxuICAgICAqL1xuICAgIHByb3BzPzogUGFydGlhbDxcbiAgICAgIFBpY2s8XG4gICAgICAgIGxhbWJkYS5GdW5jdGlvblByb3BzLFxuICAgICAgICB8IFwiYWxsb3dQdWJsaWNTdWJuZXRcIlxuICAgICAgICB8IFwiYXJjaGl0ZWN0dXJlXCJcbiAgICAgICAgfCBcInJ1bnRpbWVcIlxuICAgICAgICB8IFwiY29kZVwiXG4gICAgICAgIHwgXCJoYW5kbGVyXCJcbiAgICAgICAgfCBcImZ1bmN0aW9uTmFtZVwiXG4gICAgICAgIHwgXCJsb2dHcm91cFwiXG4gICAgICAgIHwgXCJyb2xlXCJcbiAgICAgICAgfCBcInNlY3VyaXR5R3JvdXBzXCJcbiAgICAgICAgfCBcInRpbWVvdXRcIlxuICAgICAgICB8IFwidnBjXCJcbiAgICAgICAgfCBcInZwY1N1Ym5ldHNcIlxuICAgICAgPiAmXG4gICAgICAgIFBpY2s8bG9ncy5Mb2dHcm91cFByb3BzLCBcInJlbW92YWxQb2xpY3lcIj5cbiAgICA+LFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5ldmVudEhhbmRsZXIgPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIFwiRXZlbnRIYW5kbGVyXCIsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogcHJvcHM/LmZ1bmN0aW9uTmFtZSxcbiAgICAgIGxvZ0dyb3VwOiBwcm9wcz8ubG9nR3JvdXAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXN0YXRlIGN1c3RvbSByZWdpc3RyYXRpb24gaGFuZGxlclwiLFxuICAgICAgY29kZTogcHJvcHM/LmNvZGUgPz8gY2RrLmF3c19sYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgXCJyZWdpc3Rlci1zZXJ2aWNlLWhhbmRsZXJcIikpLFxuICAgICAgaGFuZGxlcjogcHJvcHM/LmhhbmRsZXIgPz8gXCJlbnRyeXBvaW50LmhhbmRsZXJcIixcbiAgICAgIGFyY2hpdGVjdHVyZTogcHJvcHM/LmFyY2hpdGVjdHVyZSA/PyBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgIHJ1bnRpbWU6IHByb3BzPy5ydW50aW1lID8/IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMl9YLFxuICAgICAgcm9sZTogcHJvcHM/LnJvbGUsXG4gICAgICBtZW1vcnlTaXplOiAxMjgsXG4gICAgICB0aW1lb3V0OiBwcm9wcz8udGltZW91dCA/PyBERUZBVUxUX1RJTUVPVVQsXG4gICAgICAuLi4ocHJvcHM/LnZwY1xuICAgICAgICA/ICh7XG4gICAgICAgICAgICB2cGM6IHByb3BzPy52cGMsXG4gICAgICAgICAgICB2cGNTdWJuZXRzOiBwcm9wcz8udnBjU3VibmV0cyxcbiAgICAgICAgICAgIHNlY3VyaXR5R3JvdXBzOiBwcm9wcz8uc2VjdXJpdHlHcm91cHMsXG4gICAgICAgICAgfSBzYXRpc2ZpZXMgUGljazxsYW1iZGEuRnVuY3Rpb25PcHRpb25zLCBcInZwY1wiIHwgXCJ2cGNTdWJuZXRzXCIgfCBcInNlY3VyaXR5R3JvdXBzXCI+KVxuICAgICAgICA6IHt9KSxcbiAgICAgIGFsbG93UHVibGljU3VibmV0OiBwcm9wcz8uYWxsb3dQdWJsaWNTdWJuZXQsXG4gICAgfSk7XG5cbiAgICBpZiAoIXByb3BzPy5sb2dHcm91cCkge1xuICAgICAgLy8gQnkgZGVmYXVsdCwgTGFtYmRhIEZ1bmN0aW9ucyBoYXZlIGEgbG9nIGdyb3VwIHdpdGggbmV2ZXItZXhwaXJpbmcgcmV0ZW50aW9uIHBvbGljeS5cbiAgICAgIG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsIFwiRGVwbG95bWVudExvZ3NcIiwge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGAvYXdzL2xhbWJkYS8ke3RoaXMuZXZlbnRIYW5kbGVyLmZ1bmN0aW9uTmFtZX1gLFxuICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfTU9OVEgsXG4gICAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzPy5yZW1vdmFsUG9saWN5ID8/IGNkay5SZW1vdmFsUG9saWN5LlJFVEFJTl9PTl9VUERBVEVfT1JfREVMRVRFLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlcGxveSBhIExhbWJkYS1iYWNrZWQgUmVzdGF0ZSBoYW5kbGVyIHRvIGEgZ2l2ZW4gZW52aXJvbm1lbnQuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBhIGNoYW5nZSBpbiB0aGUgaGFuZGxlciBwcm9wZXJ0aWVzIGlzIG5lY2Vzc2FyeSB0byB0cmlnZ2VyIHJlLWRpc2NvdmVyeSBkdWUgdG8gaG93IENsb3VkRm9ybWF0aW9uIHVwZGF0ZXNcbiAgICogd29yay4gSWYgeW91IGRlcGxveSBhIGZpeGVkIExhbWJkYSBhbGlhcyBzdWNoIGFzIGAkTEFURVNUYCB3aGljaCBpc24ndCBjaGFuZ2luZyBvbiBldmVyeSBoYW5kbGVyIGNvZGUgb3JcbiAgICogY29uZmlndXJhdGlvbiB1cGRhdGUsIHlvdSB3aWxsIHdhbnQgdG8gc2V0IHRoZSBgY29uZmlndXJhdGlvblZlcnNpb25gIHByb3BlcnR5IGluIGBvcHRpb25zYCB0byBhIG5ldyB2YWx1ZSAoZS5nLiBhXG4gICAqIHRpbWVzdGFtcCkgdG8gZW5zdXJlIGFuIHVwZGF0ZSB0byB0aGUgUmVzdGF0ZSBlbnZpcm9ubWVudCBpcyB0cmlnZ2VyZWQgb24gc3RhY2sgZGVwbG95bWVudC5cbiAgICpcbiAgICogQHBhcmFtIGhhbmRsZXIgc2VydmljZSBoYW5kbGVyIC0gbXVzdCBiZSBhIHNwZWNpZmljIGZ1bmN0aW9uIHZlcnNpb24sIHVzZSBcImxhdGVzdFwiIGlmIHlvdSBkb24ndCBjYXJlIGFib3V0IGV4cGxpY2l0IHZlcnNpb25pbmdcbiAgICogQHBhcmFtIGVudmlyb25tZW50IHRhcmdldCBSZXN0YXRlIGVudmlyb25tZW50XG4gICAqIEBwYXJhbSBvcHRpb25zIGFkZGl0aW9uYWwgb3B0aW9uczsgc2VlIGZpZWxkIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHNcbiAgICogQHNlZSB7U2VydmljZVJlZ2lzdHJhdGlvblByb3BzfVxuICAgKi9cbiAgcmVnaXN0ZXIoaGFuZGxlcjogbGFtYmRhLklWZXJzaW9uLCBlbnZpcm9ubWVudDogSVJlc3RhdGVFbnZpcm9ubWVudCwgb3B0aW9ucz86IFNlcnZpY2VSZWdpc3RyYXRpb25Qcm9wcykge1xuICAgIHRoaXMucmVnaXN0ZXJTZXJ2aWNlSW50ZXJuYWwodW5kZWZpbmVkLCBoYW5kbGVyLCBlbnZpcm9ubWVudCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogRGVwbG95IGEgTGFtYmRhLWJhY2tlZCBSZXN0YXRlIGhhbmRsZXIgdG8gYSBnaXZlbiBlbnZpcm9ubWVudCwgZW5zdXJpbmcgdGhhdCBhIHBhcnRpY3VsYXIgc2VydmljZSBuYW1lIGV4aXN0cy5cbiAgICpcbiAgICogTm90ZSB0aGF0IGEgY2hhbmdlIGluIHRoZSBoYW5kbGVyIHByb3BlcnRpZXMgaXMgbmVjZXNzYXJ5IHRvIHRyaWdnZXIgcmUtZGlzY292ZXJ5IGR1ZSB0byBob3cgQ2xvdWRGb3JtYXRpb24gdXBkYXRlc1xuICAgKiB3b3JrLiBJZiB5b3UgZGVwbG95IGEgZml4ZWQgTGFtYmRhIGFsaWFzIHN1Y2ggYXMgYCRMQVRFU1RgIHdoaWNoIGlzbid0IGNoYW5naW5nIG9uIGV2ZXJ5IGhhbmRsZXIgY29kZSBvclxuICAgKiBjb25maWd1cmF0aW9uIHVwZGF0ZSwgeW91IHdpbGwgd2FudCB0byBzZXQgdGhlIGBjb25maWd1cmF0aW9uVmVyc2lvbmAgcHJvcGVydHkgaW4gYG9wdGlvbnNgIHRvIGEgbmV3IHZhbHVlIChlLmcuIGFcbiAgICogdGltZXN0YW1wKSB0byBlbnN1cmUgYW4gdXBkYXRlIHRvIHRoZSBSZXN0YXRlIGVudmlyb25tZW50IGlzIHRyaWdnZXJlZCBvbiBzdGFjayBkZXBsb3ltZW50LlxuICAgKlxuICAgKiBAcGFyYW0gc2VydmljZU5hbWUgdGhlIHNlcnZpY2UgbmFtZSB3aXRoaW4gUmVzdGF0ZSAtIGFzIGEgc2FmZXR5IG1lY2hhbmlzbSwgdGhpcyBtdXN0IG1hdGNoIHRoZSBzZXJ2aWNlJ3NcbiAgICogICAgICAgIHNlbGYtcmVwb3J0ZWQgbmFtZSBkdXJpbmcgZGlzY292ZXJ5OyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgc2VydmljZXMsIG9uZSBvZiB0aGVtIG11c3QgbWF0Y2ggb3IgdGhlXG4gICAqICAgICAgICBkZXBsb3ltZW50IGZhaWxzXG4gICAqIEBwYXJhbSBoYW5kbGVyIHNlcnZpY2UgaGFuZGxlciAtIG11c3QgYmUgYSBzcGVjaWZpYyBmdW5jdGlvbiB2ZXJzaW9uLCB1c2UgXCJsYXRlc3RcIiBpZiB5b3UgZG9uJ3QgY2FyZSBhYm91dCBleHBsaWNpdCB2ZXJzaW9uaW5nXG4gICAqIEBwYXJhbSBlbnZpcm9ubWVudCB0YXJnZXQgUmVzdGF0ZSBlbnZpcm9ubWVudFxuICAgKiBAcGFyYW0gb3B0aW9ucyBhZGRpdGlvbmFsIG9wdGlvbnM7IHNlZSBmaWVsZCBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzXG4gICAqL1xuICBkZXBsb3lTZXJ2aWNlKFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgaGFuZGxlcjogbGFtYmRhLklWZXJzaW9uLFxuICAgIGVudmlyb25tZW50OiBJUmVzdGF0ZUVudmlyb25tZW50LFxuICAgIG9wdGlvbnM/OiBTZXJ2aWNlUmVnaXN0cmF0aW9uUHJvcHMsXG4gICkge1xuICAgIHRoaXMucmVnaXN0ZXJTZXJ2aWNlSW50ZXJuYWwoc2VydmljZU5hbWUsIGhhbmRsZXIsIGVudmlyb25tZW50LCBvcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJTZXJ2aWNlSW50ZXJuYWwoXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBoYW5kbGVyOiBsYW1iZGEuSVZlcnNpb24sXG4gICAgZW52aXJvbm1lbnQ6IElSZXN0YXRlRW52aXJvbm1lbnQsXG4gICAgb3B0aW9ucz86IFNlcnZpY2VSZWdpc3RyYXRpb25Qcm9wcyxcbiAgKSB7XG4gICAgY29uc3QgYXV0aFRva2VuID0gb3B0aW9ucz8uYXV0aFRva2VuID8/IGVudmlyb25tZW50LmF1dGhUb2tlbjtcbiAgICBhdXRoVG9rZW4/LmdyYW50UmVhZCh0aGlzLmV2ZW50SGFuZGxlcik7XG5cbiAgICBjb25zdCBpbnZva2VyUm9sZSA9IG9wdGlvbnM/Lmludm9rZXJSb2xlID8/IGVudmlyb25tZW50Lmludm9rZXJSb2xlO1xuXG4gICAgY29uc3QgZGVwbG95bWVudCA9IG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UoaGFuZGxlciwgXCJSZXN0YXRlU2VydmljZURlcGxveW1lbnRcIiwge1xuICAgICAgc2VydmljZVRva2VuOiB0aGlzLmV2ZW50SGFuZGxlci5mdW5jdGlvbkFybixcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OlJlc3RhdGVTZXJ2aWNlRGVwbG95bWVudFwiLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBzZXJ2aWNlUGF0aDogc2VydmljZU5hbWUsXG4gICAgICAgIGFkbWluVXJsOiBvcHRpb25zPy5hZG1pblVybCA/PyBlbnZpcm9ubWVudC5hZG1pblVybCxcbiAgICAgICAgYXV0aFRva2VuU2VjcmV0QXJuOiBhdXRoVG9rZW4/LnNlY3JldEFybixcbiAgICAgICAgc2VydmljZUxhbWJkYUFybjogaGFuZGxlci5mdW5jdGlvbkFybixcbiAgICAgICAgaW52b2tlUm9sZUFybjogaW52b2tlclJvbGU/LnJvbGVBcm4sXG4gICAgICAgIC8vIHJlbW92YWxQb2xpY3k6IFwicmV0YWluXCIsXG4gICAgICAgIHByaXZhdGU6IChvcHRpb25zPy5wcml2YXRlID8/IGZhbHNlKS50b1N0cmluZygpIGFzIFwidHJ1ZVwiIHwgXCJmYWxzZVwiLFxuICAgICAgICBjb25maWd1cmF0aW9uVmVyc2lvbjpcbiAgICAgICAgICBvcHRpb25zPy5jb25maWd1cmF0aW9uVmVyc2lvbiB8fCBoYW5kbGVyLmZ1bmN0aW9uQXJuLmVuZHNXaXRoKFwiOiRMQVRFU1RcIilcbiAgICAgICAgICAgID8gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgaW5zZWN1cmU6IChvcHRpb25zPy5pbnNlY3VyZSA/PyBmYWxzZSkudG9TdHJpbmcoKSBhcyBcInRydWVcIiB8IFwiZmFsc2VcIixcbiAgICAgIH0gc2F0aXNmaWVzIFJlZ2lzdHJhdGlvblByb3BlcnRpZXMsXG4gICAgfSk7XG5cbiAgICBpZiAoaW52b2tlclJvbGUgJiYgIW9wdGlvbnM/LnNraXBJbnZva2VGdW5jdGlvbkdyYW50KSB7XG4gICAgICAvLyBXZSBjcmVhdGUgYSBzZXBhcmF0ZSBwb2xpY3kgd2hpY2ggd2UnbGwgYXR0YWNoIHRvIHRoZSBwcm92aWRlZCBpbnZva2VyIHJvbGUuIFRoaXMgYnJlYWtzIGEgY2lyY3VsYXIgY3Jvc3Mtc3RhY2tcbiAgICAgIC8vIGRlcGVuZGVuY3kgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUgY3JlYXRlZCBiZXR3ZWVuIHRoZSBzZXJ2aWNlIGRlcGxveWVyIGFuZCB0aGUgaW52b2tlciByb2xlLlxuICAgICAgaWYgKCF0aGlzLmludm9jYXRpb25Qb2xpY3kpIHtcbiAgICAgICAgdGhpcy5pbnZvY2F0aW9uUG9saWN5ID0gbmV3IGlhbS5Qb2xpY3kodGhpcywgXCJJbnZvY2F0aW9uUG9saWN5XCIpO1xuICAgICAgICAvLyBEZXNwaXRlIHRoZSBBUk4gcmVmZXJlbmNlIGFib3ZlLCBDbG91ZEZvcm1hdGlvbiBzb21ldGltZXMgdHJpZXMgdG8gaW52b2tlIHRoZSBjdXN0b20gcmVzb3VyY2UgaGFuZGxlciBiZWZvcmVcbiAgICAgICAgLy8gYWxsIHBlcm1pc3Npb25zIGFyZSBhcHBsaWVkLiBBZGRpbmcgYW4gZXhwbGljaXQgZGVwZW5kZW5jeSBpbmNsdWRlcyBhIGRlcGVuZGVuY3kgb24gYW55IHBlbmRpbmcgcG9saWN5IHVwZGF0ZXNcbiAgICAgICAgLy8gZGVmaW5lZCBpbiB0aGUgc2FtZSBzdGFjayBhcyB0aGUgc2VydmljZSBkZXBsb3llciwgd2hpY2ggc2VlbXMgdG8gaGVscC4gU29tZSBwcm9wYWdhdGlvbiBkZWxheSBtaWdodCBzdGlsbCBtZWFuXG4gICAgICAgIC8vIHdlIGxlYW4gb24gcmV0cmllcyBpbiB0aGUgZGVwbG95ZXIgZXZlbnQgaGFuZGxlciBpbiBhbnkgZXZlbnQgYnV0IHRoaXMgcmVkdWNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgZmFpbHVyZS5cbiAgICAgICAgZGVwbG95bWVudC5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5pbnZvY2F0aW9uUG9saWN5KTtcbiAgICAgICAgdGhpcy5pbnZvY2F0aW9uUG9saWN5LmF0dGFjaFRvUm9sZShpbnZva2VyUm9sZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmludm9jYXRpb25Qb2xpY3kuYWRkU3RhdGVtZW50cyhcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcImxhbWJkYTpJbnZva2VGdW5jdGlvblwiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IGhhbmRsZXIubGFtYmRhLnJlc291cmNlQXJuc0ZvckdyYW50SW52b2tlLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -49,6 +49,7 @@ const logs = __importStar(require("aws-cdk-lib/aws-logs"));
|
|
|
49
49
|
const ec2 = __importStar(require("aws-cdk-lib/aws-ec2"));
|
|
50
50
|
const iam = __importStar(require("aws-cdk-lib/aws-iam"));
|
|
51
51
|
const deployments_common_1 = require("./deployments-common");
|
|
52
|
+
const cdk = __importStar(require("aws-cdk-lib"));
|
|
52
53
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
53
54
|
var TlsTermination;
|
|
54
55
|
(function (TlsTermination) {
|
|
@@ -67,8 +68,8 @@ const RESTATE_TLS_INGRESS_PORT = 443;
|
|
|
67
68
|
const RESTATE_ADMIN_PORT = 9070;
|
|
68
69
|
const RESTATE_TLS_ADMIN_PORT = 9073;
|
|
69
70
|
const RESTATE_IMAGE_DEFAULT = "docker.restate.dev/restatedev/restate";
|
|
70
|
-
const RESTATE_DOCKER_DEFAULT_TAG = "1.
|
|
71
|
-
const RESTATE_NPM_DEFAULT_TAG = "1.
|
|
71
|
+
const RESTATE_DOCKER_DEFAULT_TAG = "1.5";
|
|
72
|
+
const RESTATE_NPM_DEFAULT_TAG = "1.5";
|
|
72
73
|
const ADOT_DOCKER_DEFAULT_TAG = "latest";
|
|
73
74
|
const DATA_DEVICE_NAME = "/dev/sdd";
|
|
74
75
|
/**
|
|
@@ -148,7 +149,7 @@ class SingleNodeRestateDeployment extends constructs_1.Construct {
|
|
|
148
149
|
.map(([key, value]) => `-e ${key}="${value}"`)
|
|
149
150
|
.join(" ");
|
|
150
151
|
const initScript = ec2.UserData.forLinux();
|
|
151
|
-
initScript.addCommands("set -euf -o pipefail", `yum install -y npm && npm install -gq @restatedev/restate@${restateNpmTag} @restatedev/restatectl@${restateNpmTag}`, "yum install -y docker", this.mountDataVolumeScript(), "mkdir -p /etc/restate", ["cat << EOF > /etc/restate/config.toml", this.restateConfig(id, props), "EOF"].join("\n"), "systemctl start docker.service",
|
|
152
|
+
initScript.addCommands("set -euf -o pipefail", "yum install -y aws-cfn-bootstrap", `yum install -y npm && npm install -gq @restatedev/restate@${restateNpmTag} @restatedev/restatectl@${restateNpmTag}`, "yum install -y docker", this.mountDataVolumeScript(), "mkdir -p /etc/restate", ["cat << EOF > /etc/restate/config.toml", this.restateConfig(id, props), "EOF"].join("\n"), "systemctl start docker.service",
|
|
152
153
|
// Start the ADOT collector - needed for X-ray trace forwarding
|
|
153
154
|
`if [ "$(docker ps -qa -f name=adot)" ]; then docker stop adot || true; docker rm adot; fi`, "docker run --name adot --restart on-failure --detach --pull always" +
|
|
154
155
|
" -p 4317:4317 -p 55680:55680 -p 8889:8888" +
|
|
@@ -164,13 +165,11 @@ class SingleNodeRestateDeployment extends constructs_1.Construct {
|
|
|
164
165
|
" --config-file /etc/restate/config.toml");
|
|
165
166
|
// Optionally, configure and start the nginx service
|
|
166
167
|
if (this.tlsEnabled) {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
].join(""), ["cat << EOF > /etc/nginx/conf.d/restate-ingress.conf", this.ingressNginxConfig(props), "EOF"].join("\n"), "systemctl start nginx");
|
|
173
|
-
}
|
|
168
|
+
initScript.addCommands("yum install -y nginx", "mkdir -p /etc/pki/private", [
|
|
169
|
+
"openssl req -new -x509 -nodes -sha256 -days 365 -extensions v3_ca",
|
|
170
|
+
" -subj '/C=DE/ST=Berlin/L=Berlin/O=restate.dev/OU=demo/CN=restate.example.com'",
|
|
171
|
+
" -newkey rsa:2048 -keyout /etc/pki/private/restate-selfsigned.key -out /etc/pki/private/restate-selfsigned.crt",
|
|
172
|
+
].join(""), ["cat << EOF > /etc/nginx/conf.d/restate-ingress.conf", this.ingressNginxConfig(props), "EOF"].join("\n"), "systemctl start nginx");
|
|
174
173
|
}
|
|
175
174
|
const cloudConfig = ec2.UserData.custom([`cloud_final_modules:`, `- [scripts-user, always]`].join("\n"));
|
|
176
175
|
const userData = new ec2.MultipartUserData();
|
|
@@ -200,6 +199,16 @@ class SingleNodeRestateDeployment extends constructs_1.Construct {
|
|
|
200
199
|
],
|
|
201
200
|
userData,
|
|
202
201
|
});
|
|
202
|
+
const cfnInstance = restateInstance.node.defaultChild;
|
|
203
|
+
const instanceLogicalId = cfnInstance.logicalId;
|
|
204
|
+
initScript.addCommands("echo 'Waiting for Restate server admin API to become available...'", "HEALTH_CHECK_URL='http://localhost:9070/health'", "MAX_ATTEMPTS=60", "ATTEMPT=0", "", "while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do", " if curl -f -s $HEALTH_CHECK_URL > /dev/null 2>&1; then", " echo 'Health check passed - Restate server is healthy'", " break", " fi", " ATTEMPT=$((ATTEMPT + 1))", ' echo "Health check attempt $ATTEMPT/$MAX_ATTEMPTS failed, retrying in 5 seconds..."', " sleep 5", "done", "", "if [ $ATTEMPT -eq $MAX_ATTEMPTS ]; then", ' echo "Health check failed after $MAX_ATTEMPTS attempts"', ` /opt/aws/bin/cfn-signal -e 1 --stack ${cdk.Stack.of(this).stackName} --resource ${instanceLogicalId} --region ${cdk.Stack.of(this).region}`, " exit 1", "fi", "", `/opt/aws/bin/cfn-signal -e 0 --stack ${cdk.Stack.of(this).stackName} --resource ${instanceLogicalId} --region ${cdk.Stack.of(this).region}`);
|
|
205
|
+
// Add CreationPolicy to wait for cfn-signal
|
|
206
|
+
cfnInstance.cfnOptions.creationPolicy = {
|
|
207
|
+
resourceSignal: {
|
|
208
|
+
timeout: "PT10M", // 10 minutes timeout
|
|
209
|
+
count: 1,
|
|
210
|
+
},
|
|
211
|
+
};
|
|
203
212
|
this.instance = restateInstance;
|
|
204
213
|
// We start the ADOT collector regardless, and control whether traces will be exported to X-Ray using instance role
|
|
205
214
|
// permissions. This way historic traces will be buffered on the host, even if tracing is disabled initially.
|
|
@@ -327,4 +336,4 @@ fi
|
|
|
327
336
|
}
|
|
328
337
|
}
|
|
329
338
|
exports.SingleNodeRestateDeployment = SingleNodeRestateDeployment;
|
|
330
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLW5vZGUtcmVzdGF0ZS1kZXBsb3ltZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3Jlc3RhdGUtY29uc3RydWN0cy9zaW5nbGUtbm9kZS1yZXN0YXRlLWRlcGxveW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7R0FTRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsMkNBQXVDO0FBQ3ZDLDJEQUE2QztBQUM3Qyx5REFBMkM7QUFDM0MseURBQTJDO0FBRTNDLDZEQUFtRDtBQUVuRCw2Q0FBNEM7QUFnSDVDLElBQVksY0FXWDtBQVhELFdBQVksY0FBYztJQUN4Qjs7T0FFRztJQUNILDJEQUFRLENBQUE7SUFFUjs7O09BR0c7SUFDSCx5R0FBK0IsQ0FBQTtBQUNqQyxDQUFDLEVBWFcsY0FBYyw4QkFBZCxjQUFjLFFBV3pCO0FBRUQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFDbEMsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLENBQUM7QUFDckMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDaEMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUM7QUFDcEMsTUFBTSxxQkFBcUIsR0FBRyx1Q0FBdUMsQ0FBQztBQUN0RSxNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQztBQUN6QyxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQztBQUN0QyxNQUFNLHVCQUF1QixHQUFHLFFBQVEsQ0FBQztBQUN6QyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztBQUVwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFhLDJCQUE0QixTQUFRLHNCQUFTO0lBYXhELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkI7UUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFH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QStCO2dCQUMvQixFQUFFO2dCQUNGLDhEQUE4RDtnQkFDOUQsa0VBQWtFO2dCQUNsRSxvQ0FBb0M7Z0JBQ3BDLDRCQUE0QjtnQkFDNUIsK0JBQStCO2dCQUMvQixpQ0FBaUM7Z0JBQ2pDLEVBQUU7Z0JBQ0YsZ0JBQWdCO2dCQUNoQixtQ0FBbUMsa0JBQWtCLEdBQUc7Z0JBQ3hELEtBQUs7Z0JBQ0wsR0FBRzthQUNKLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNiLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFwVEQsa0VBb1RDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMy0yMDI1IC0gUmVzdGF0ZSBTb2Z0d2FyZSwgSW5jLiwgUmVzdGF0ZSBHbWJIXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFJlc3RhdGUgQ0RLIENvbnN0cnVjdCBMaWJyYXJ5LFxuICogd2hpY2ggaXMgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICpcbiAqIFlvdSBjYW4gZmluZCBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgaW4gZmlsZSBMSUNFTlNFIGluIHRoZSByb290XG4gKiBkaXJlY3Rvcnkgb2YgdGhpcyByZXBvc2l0b3J5IG9yIHBhY2thZ2UsIG9yIGF0XG4gKiBodHRwczovL2dpdGh1Yi5jb20vcmVzdGF0ZWRldi9zZGstdHlwZXNjcmlwdC9ibG9iL21haW4vTElDRU5TRVxuICovXG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IElSZXN0YXRlRW52aXJvbm1lbnQgfSBmcm9tIFwiLi9yZXN0YXRlLWVudmlyb25tZW50XCI7XG5pbXBvcnQgeyBUcmFjaW5nTW9kZSB9IGZyb20gXCIuL2RlcGxveW1lbnRzLWNvbW1vblwiO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpbmdsZU5vZGVSZXN0YXRlUHJvcHMge1xuICAvKiogRUMyIGluc3RhbmNlIHR5cGUgdG8gdXNlLiAqL1xuICBpbnN0YW5jZVR5cGU/OiBlYzIuSW5zdGFuY2VUeXBlO1xuXG4gIC8qKiBNYWNoaW5lIGltYWdlLiBOb3RlOiBzdGFydHVwIHNjcmlwdCBleHBlY3RzIHl1bS1iYXNlZCBwYWNrYWdlIG1hbmFnZW1lbnQuICovXG4gIG1hY2hpbmVJbWFnZT86IGVjMi5JTWFjaGluZUltYWdlO1xuXG4gIC8qKiBUaGUgVlBDIGluIHdoaWNoIHRvIGxhdW5jaCB0aGUgUmVzdGF0ZSBob3N0LiAqL1xuICB2cGM/OiBlYzIuSVZwYztcblxuICBuZXR3b3JrQ29uZmlndXJhdGlvbj86IHtcbiAgICAvKipcbiAgICAgKiBTdWJuZXQgdHlwZSBmb3IgdGhlIFJlc3RhdGUgaG9zdC5cbiAgICAgKlxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zOlxuICAgICAqICAtIFtEZWZhdWx0XSB7QGxpbmsgZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTU30gd2lsbCBjcmVhdGUgdGhlIFJlc3RhdGUgaW5zdGFuY2Ugd2l0aCBvdXRib3VuZCBpbnRlcm5ldFxuICAgICAqICAgIGFjY2VzcyBvbmx5LCBzbyB0aGF0IGl0IGNhbiBpbnZva2UgSFRUUCBlbmRwb2ludHMuIFRoZSBzZWN1cml0eSBncm91cHMge0BsaW5rIGluZ3Jlc3NTZWN1cml0eUdyb3VwfSBhbmRcbiAgICAgKiAgICB7QGxpbmsgYWRtaW5TZWN1cml0eUdyb3VwfSBjb250cm9sIGluYm91bmQgdHJhZmZpYyB0byB0aGUgc2VydmljZSBpbmdyZXNzIGFuZCBhZG1pbiBwb3J0cyByZXNwZWN0aXZlbHkuXG4gICAgICogICAgQ29uZmlndXJlIHtAbGluayBTZXJ2aWNlRGVwbG95ZXJ9IHRvIHVzZSB0aGUgbGF0dGVyLCBhbmQgc2V0IHVwIGluZ3Jlc3MgdHJhZmZpYyByb3V0aW5nIG91dHNpZGUgb2YgdGhpc1xuICAgICAqICAgIGNvbnN0cnVjdCB1c2luZyB0aGUgZm9ybWVyLlxuICAgICAqICAtIEluc2VjdXJlLCBpbnRlcm5ldC1mYWNpbmcge0BsaW5rIGVjMi5TdWJuZXRUeXBlLlBVQkxJQ30gd2lsbCBhbHNvIHByb3Zpc2lvbiBhbiBuZ2lueCByZXZlcnNlIHByb3h5XG4gICAgICogICAgYW5kIGFuIEhUVFAgbGlzdGVuZXIgd2l0aCBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlLlxuICAgICAqL1xuICAgIHN1Ym5ldFR5cGU/OiBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTIHwgZWMyLlN1Ym5ldFR5cGUuUFVCTElDO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBbGxvdyBpbmNvbWluZyBpbmdyZXNzIHRyYWZmaWMgZnJvbSBhbnl3aGVyZS4gRGVmYXVsdDogYGZhbHNlYC4gQWx0ZXJuYXRpdmVseSwgYWRkIHJ1bGVzIHRvIHRoZVxuICAgKiBgaW5ncmVzc1NlY3VyaXR5R3JvdXBgIGRpcmVjdGx5LlxuICAgKi9cbiAgcHVibGljSW5ncmVzcz86IGJvb2xlYW47XG5cbiAgLyoqIExvZyBncm91cCBmb3IgUmVzdGF0ZSBzZXJ2aWNlIGxvZ3MuICovXG4gIGxvZ0dyb3VwPzogbG9ncy5Mb2dHcm91cDtcblxuICAvKiogVHJhY2luZyBtb2RlIGZvciBSZXN0YXRlIHNlcnZpY2VzLiBEZWZhdWx0cyB0byB7QGxpbmsgVHJhY2luZ01vZGUuRElTQUJMRUR9LiAqL1xuICB0cmFjaW5nPzogVHJhY2luZ01vZGU7XG5cbiAgLyoqIFByZWZpeCBmb3IgcmVzb3VyY2VzIGNyZWF0ZWQgYnkgdGhpcyBjb25zdHJ1Y3QgdGhhdCByZXF1aXJlIHVuaXF1ZSBuYW1lcy4gKi9cbiAgcHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKiBSZXN0YXRlIERvY2tlciBpbWFnZSBuYW1lLiBEZWZhdWx0cyB0byBgZG9ja2VyLnJlc3RhdGUuZGV2L3Jlc3RhdGVkZXYvcmVzdGF0ZWAuICovXG4gIHJlc3RhdGVJbWFnZT86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgdGFnLiBEZWZhdWx0cyB0byBgbGF0ZXN0YC4gKi9cbiAgcmVzdGF0ZVRhZz86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBOUE0gdG9vbHMgdGFnICh1c2VkIGZvciBgcmVzdGF0ZWAvYHJlc3RhdGVjdGxgKS4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIHJlc3RhdGVOcG1UYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVCUyBkYXRhIHZvbHVtZSBzZXR0aW5ncyBmb3IgUmVzdGF0ZSBkYXRhIHN0b3JhZ2UuIElmIG5vdCBzcGVjaWZpZWQsIGEgZGVmYXVsdCA4R0Igdm9sdW1lIHdpbGwgYmUgY3JlYXRlZC5cbiAgICovXG4gIGRhdGFWb2x1bWVPcHRpb25zPzogZWMyLkVic0RldmljZVByb3BzIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBSZXN0YXRlIGhpZ2gtbGV2ZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHNldCB7QGxpbmsgcmVzdGF0ZUNvbmZpZ092ZXJyaWRlfS4gKi9cbiAgcmVzdGF0ZUNvbmZpZz86IHtcbiAgICAvKiogRGVmYXVsdHMgdG8gdGhlIGNvbnN0cnVjdCBpZCBpZiBsZWZ0IHVuc3BlY2lmaWVkLiAqL1xuICAgIGNsdXN0ZXJOYW1lPzogc3RyaW5nO1xuICAgIC8qKiBEZWZhdWx0cyB0byA0LiBPbmx5IHRha2VzIGVmZmVjdCBvbiBpbml0aWFsIHByb3Zpc2lvbmluZy4gKi9cbiAgICBib290c3RyYXBOdW1QYXJ0aXRpb25zPzogbnVtYmVyO1xuICAgIC8qKiBSb2Nrc0RCIHNldHRpbmdzLiAqL1xuICAgIHJvY2tzZGI/OiB7XG4gICAgICAvKiogRGVmYXVsdHMgdG8gNTEyIE1CLiAqL1xuICAgICAgdG90YWxNZW1vcnlTaXplPzogY2RrLlNpemU7XG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgcHJvcGVydGllcyB0byBzZXQgZm9yIFJlc3RhdGUuIFRoaXMgaXMgYSBzaW1wbGUgd2F5IHRvIHBhc3MgY3VzdG9tIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy5cbiAgICovXG4gIGVudmlyb25tZW50Pzoge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgfTtcblxuICAvKipcbiAgICogQ29tcGxldGVseSBvdmVycmlkZSB0aGUgUmVzdGF0ZSBzZXJ2ZXIgY29uZmlndXJhdGlvbi4gTm90ZSB0aGF0IG90aGVyIFJlc3RhdGUgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqIHdpbGwgZWZmZWN0aXZlbHkgYmUgaWdub3JlZCBpZiB0aGlzIGlzIHNldC4gU2VlIGh0dHBzOi8vZG9jcy5yZXN0YXRlLmRldi9vcGVyYXRlL2NvbmZpZ3VyYXRpb24vc2VydmVyL1xuICAgKiBmb3IgZGV0YWlscy5cbiAgICovXG4gIHJlc3RhdGVDb25maWdPdmVycmlkZT86IHN0cmluZztcblxuICAvKiogQW1hem9uIERpc3RybyBmb3IgT3BlbiBUZWxlbWV0cnkgRG9ja2VyIGltYWdlIHRhZy4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIGFkb3RUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlbW92YWwgcG9saWN5IGZvciBsb25nLWxpdmVkIHJlc291cmNlcyAoc3RvcmFnZSwgbG9ncykuIERlZmF1bHQ6IGBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZYC5cbiAgICovXG4gIHJlbW92YWxQb2xpY3k/OiBjZGsuUmVtb3ZhbFBvbGljeTtcblxuICAvKipcbiAgICogQ29udHJvbCBvbi1ob3N0IFRMUyB0ZXJtaW5hdGlvbiBmb3IgaW5ncmVzcyBhbmQgYWRtaW4gcG9ydHMuIERlZmF1bHRzIHRvIGBUbHNUZXJtaW5hdGlvbi5OT05FYC4gQ3VycmVudGx5LCBlbmFibGluZ1xuICAgKiBUTFMgaW1wbGljaXRseSBlbmFibGVzIGFuIGBuZ2lueGAgc2VydmljZSB0byBiZSBjb25maWd1cmVkIG9uIHRoZSBob3N0LiBEZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIHRoaXMgb3B0aW9uLCB0aGVcbiAgICogaW5ncmVzcyBzZWN1cml0eSBncm91cCB3aWxsIGJlIGNvbmZpZ3VyZWQgdG8gYWxsb3cgaW5ib3VuZCB0cmFmZmljIHRvIHRoZSBhcHByb3ByaWF0ZSBwb3J0IC0gODA4MCBmb3Igbm8gVExTLCBvclxuICAgKiA0NDMgd2l0aCBUTFMgZW5hYmxlZC5cbiAgICovXG4gIHRsc1Rlcm1pbmF0aW9uPzogVGxzVGVybWluYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSByZWFkIHRpbWVvdXQgZm9yIHByb3hpZWQgaW5ncmVzcyByZXF1ZXN0cy4gRGVmYXVsdDogMzYwMCBzZWNvbmRzLlxuICAgKi9cbiAgaW5ncmVzc1Byb3h5UmVhZFRpbWVvdXQ/OiBjZGsuRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIENvbXBsZXRlbHkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYG5naW54YCBjb25maWd1cmF0aW9uIGZvciB0aGUgaW5ncmVzcyBwcm94eS4gTm90ZSB0aGF0IG90aGVyXG4gICAqIGluZ3Jlc3MgcHJveHkgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgZWZmZWN0aXZlbHkgYmUgaWdub3JlZCBpZiB0aGlzIGlzIHNldC5cbiAgICovXG4gIGluZ3Jlc3NOZ2lueENvbmZpZ092ZXJyaWRlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBUbHNUZXJtaW5hdGlvbiB7XG4gIC8qKlxuICAgKiBEaXNhYmxlZCAoZGVmYXVsdCk7IGV4cG9zZSB0aGUgYHJlc3RhdGUtc2VydmVyYCBIVFRQIHBvcnRzIGRpcmVjdGx5LlxuICAgKi9cbiAgRElTQUJMRUQsXG5cbiAgLyoqXG4gICAqIFVzZSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZXMgZm9yIFRMUyB0ZXJtaW5hdGlvbiBvbiB0aGUgaW5ncmVzcyBhbmQgYWRtaW4gcG9ydHMuIENvbnZlbmllbnQgZm9yIHF1aWNrIHRlc3RpbmcsXG4gICAqIG1ha2Ugc3VyZSB5b3Ugc2V0IGBpbnNlY3VyZWAgPSBgdHJ1ZWAgd2hlbiB1c2luZyBgU2VydmljZURlcGxveWVyYCB0byBhY2NlcHQgdGhpcyBjZXJ0aWZpY2F0ZS5cbiAgICovXG4gIE9OX0hPU1RfU0VMRl9TSUdORURfQ0VSVElGSUNBVEUsXG59XG5cbmNvbnN0IFJFU1RBVEVfSU5HUkVTU19QT1JUID0gODA4MDtcbmNvbnN0IFJFU1RBVEVfVExTX0lOR1JFU1NfUE9SVCA9IDQ0MztcbmNvbnN0IFJFU1RBVEVfQURNSU5fUE9SVCA9IDkwNzA7XG5jb25zdCBSRVNUQVRFX1RMU19BRE1JTl9QT1JUID0gOTA3MztcbmNvbnN0IFJFU1RBVEVfSU1BR0VfREVGQVVMVCA9IFwiZG9ja2VyLnJlc3RhdGUuZGV2L3Jlc3RhdGVkZXYvcmVzdGF0ZVwiO1xuY29uc3QgUkVTVEFURV9ET0NLRVJfREVGQVVMVF9UQUcgPSBcIjEuNFwiO1xuY29uc3QgUkVTVEFURV9OUE1fREVGQVVMVF9UQUcgPSBcIjEuNFwiO1xuY29uc3QgQURPVF9ET0NLRVJfREVGQVVMVF9UQUcgPSBcImxhdGVzdFwiO1xuY29uc3QgREFUQV9ERVZJQ0VfTkFNRSA9IFwiL2Rldi9zZGRcIjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgUmVzdGF0ZSBzZXJ2aWNlIGRlcGxveW1lbnQgYmFja2VkIGJ5IGEgc2luZ2xlIEVDMiBpbnN0YW5jZSwgc3VpdGFibGUgZm9yIGRldmVsb3BtZW50IGFuZCB0ZXN0aW5nIHB1cnBvc2VzLlxuICpcbiAqICoqRHVyYWJpbGl0eSoqXG4gKlxuICogUmVzdGF0ZSBkYXRhIHdpbGwgYmUgc3RvcmVkIGluIGEgc2VwYXJhdGUgRUJTIHZvbHVtZSB3aGljaCB5b3UgY2FuIGNvbmZpZ3VyZSBleHBsaWNpdGx5IHZpYSB0aGUgYGRhdGFWb2x1bWVPcHRpb25zYFxuICogcHJvcGVydHkuIFVwZGF0aW5nIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgbWF5IHRyaWdnZXIgaW5zdGFuY2UgcmVib290IG9yIHJlcGxhY2VtZW50IC0gY29uc2lkZXIgc25hcHNob3R0aW5nIHRoZSBkYXRhXG4gKiB2b2x1bWUgcHJpb3IgdG8gZGVwbG95bWVudHMsIGFuZCBlbmFibGluZyBpbnN0YW5jZSB0ZXJtaW5hdGlvbiBwcm90ZWN0aW9uLlxuICpcbiAqICoqU2VjdXJpdHkqKlxuICpcbiAqIFRoZSBFQzIgaW5zdGFuY2Ugd2lsbCBiZSBjcmVhdGVkIGluIHRoZSBkZWZhdWx0IFZQQyB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC4gVHdvIHNlY3VyaXR5IGdyb3VwcyBhcmUgY3JlYXRlZCxcbiAqIGBpbmdyZXNzU2VjdXJpdHlHcm91cGAgYW5kIGBhZG1pblNlY3VyaXR5R3JvdXBgLCB3aGljaCBjb250cm9sIGFjY2VzcyB0byB0aGUgUmVzdGF0ZSBzZXJ2aWNlIGluZ3Jlc3MgYW5kIGFkbWluIHBvcnRzXG4gKiByZXNwZWN0aXZlbHkuIFlvdSBtdXN0IGFkZCBhcHByb3ByaWF0ZSBydWxlcyBvciBhZGQgb3RoZXIgcmVzb3VyY2VzIHRvIHRoZXNlIHNlY3VyaXR5IGdyb3VwcyB0byBhbGxvdyBhY2Nlc3MuXG4gKlxuICogU2VlIHtAbGluayBTaW5nbGVOb2RlUmVzdGF0ZVByb3BzfSBmb3IgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIHtAbGluayBTZXJ2aWNlRGVwbG95ZXJ9IGZvciBkZXBsb3lpbmdcbiAqIExhbWJkYSBoYW5kbGVycyB0byBlbnZpcm9ubWVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTaW5nbGVOb2RlUmVzdGF0ZURlcGxveW1lbnQgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUmVzdGF0ZUVudmlyb25tZW50IHtcbiAgcmVhZG9ubHkgaW5zdGFuY2U6IGVjMi5JbnN0YW5jZTtcbiAgcmVhZG9ubHkgaW5zdGFuY2VSb2xlOiBpYW0uSVJvbGU7XG4gIHJlYWRvbmx5IGludm9rZXJSb2xlOiBpYW0uSVJvbGU7XG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG4gIHJlYWRvbmx5IGluZ3Jlc3NTZWN1cml0eUdyb3VwOiBlYzIuSVNlY3VyaXR5R3JvdXA7XG4gIHJlYWRvbmx5IGluZ3Jlc3NQb3J0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGluZ3Jlc3NVcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgYWRtaW5TZWN1cml0eUdyb3VwOiBlYzIuSVNlY3VyaXR5R3JvdXA7XG4gIHJlYWRvbmx5IGFkbWluUG9ydDogbnVtYmVyO1xuICByZWFkb25seSBhZG1pblVybDogc3RyaW5nO1xuICByZWFkb25seSB0bHNFbmFibGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTaW5nbGVOb2RlUmVzdGF0ZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMudnBjID0gcHJvcHMudnBjID8/IGVjMi5WcGMuZnJvbUxvb2t1cCh0aGlzLCBcIlZwY1wiLCB7IGlzRGVmYXVsdDogdHJ1ZSB9KTtcblxuICAgIGNvbnN0IHN1Ym5ldFR5cGUgPSBwcm9wcy5uZXR3b3JrQ29uZmlndXJhdGlvbj8uc3VibmV0VHlwZSA/PyBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTO1xuXG4gICAgdGhpcy5pbnN0YW5jZVJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgXCJJbnN0YW5jZVJvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXCJlYzIuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcIkFtYXpvblNTTU1hbmFnZWRJbnN0YW5jZUNvcmVcIildLFxuICAgIH0pO1xuXG4gICAgdGhpcy5pbnZva2VyUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCBcIkludm9rZXJSb2xlXCIsIHtcbiAgICAgIGFzc3VtZWRCeTogdGhpcy5pbnN0YW5jZVJvbGUsXG4gICAgfSk7XG5cbiAgICBuZXcgaWFtLlBvbGljeSh0aGlzLCBcIkFzc3VtZUludm9rZXJSb2xlUG9saWN5XCIsIHtcbiAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHNpZDogXCJBbGxvd0Fzc3VtZUludm9rZXJSb2xlXCIsXG4gICAgICAgICAgYWN0aW9uczogW1wic3RzOkFzc3VtZVJvbGVcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5pbnZva2VyUm9sZS5yb2xlQXJuXSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pLmF0dGFjaFRvUm9sZSh0aGlzLmluc3RhbmNlUm9sZSk7XG5cbiAgICBjb25zdCBsb2dHcm91cCA9XG4gICAgICBwcm9wcy5sb2dHcm91cCA/P1xuICAgICAgbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgXCJMb2dzXCIsIHtcbiAgICAgICAgbG9nR3JvdXBOYW1lOiBgL3Jlc3RhdGUvJHtpZH1gLFxuICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfTU9OVEgsXG4gICAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgPz8gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgfSk7XG4gICAgbG9nR3JvdXAuZ3JhbnRXcml0ZSh0aGlzLmluc3RhbmNlUm9sZSk7XG5cbiAgICBsZXQgcmVzdGF0ZUltYWdlID0gcHJvcHMucmVzdGF0ZUltYWdlID8/IFJFU1RBVEVfSU1BR0VfREVGQVVMVDtcbiAgICBsZXQgcmVzdGF0ZURvY2tlclRhZyA9IHByb3BzLnJlc3RhdGVUYWcgPz8gUkVTVEFURV9ET0NLRVJfREVGQVVMVF9UQUc7XG4gICAgbGV0IHJlc3RhdGVOcG1UYWcgPSBwcm9wcy5yZXN0YXRlTnBtVGFnID8/IFJFU1RBVEVfTlBNX0RFRkFVTFRfVEFHO1xuICAgIGxldCB1c2VTaGFEaWdlc3QgPSBmYWxzZTtcbiAgICBsZXQgc2hhRGlnZXN0ID0gXCJcIjtcblxuICAgIGlmIChyZXN0YXRlSW1hZ2UuaW5jbHVkZXMoXCJAXCIpKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IHJlc3RhdGVJbWFnZS5zcGxpdChcIkBcIik7XG4gICAgICByZXN0YXRlSW1hZ2UgPSBwYXJ0c1swXTtcbiAgICAgIHNoYURpZ2VzdCA9IHBhcnRzWzFdO1xuICAgICAgdXNlU2hhRGlnZXN0ID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHJlc3RhdGVJbWFnZS5pbmNsdWRlcyhcIjpcIikpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gcmVzdGF0ZUltYWdlLnNwbGl0KFwiOlwiKTtcbiAgICAgIHJlc3RhdGVJbWFnZSA9IHBhcnRzWzBdO1xuICAgICAgY29uc3QgaW5saW5lVGFnID0gcGFydHNbMV07XG5cbiAgICAgIGlmIChwcm9wcy5yZXN0YXRlVGFnICYmIHByb3BzLnJlc3RhdGVUYWcgIT09IGlubGluZVRhZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFRhZyBjb25mbGljdDogaW5saW5lIHRhZyAnJHtpbmxpbmVUYWd9JyBpbiBpbWFnZSBkb2Vzbid0IG1hdGNoIGV4cGxpY2l0IHRhZyAnJHtwcm9wcy5yZXN0YXRlVGFnfScgcHJvcGVydHlgLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXN0YXRlRG9ja2VyVGFnID0gaW5saW5lVGFnO1xuICAgIH1cbiAgICBjb25zdCBhZG90VGFnID0gcHJvcHMuYWRvdFRhZyA/PyBBRE9UX0RPQ0tFUl9ERUZBVUxUX1RBRztcblxuICAgIHRoaXMudGxzRW5hYmxlZCA9IHByb3BzLnRsc1Rlcm1pbmF0aW9uID09PSBUbHNUZXJtaW5hdGlvbi5PTl9IT1NUX1NFTEZfU0lHTkVEX0NFUlRJRklDQVRFO1xuXG4gICAgY29uc3QgZW52RGVmYXVsdHMgPSB7XG4gICAgICBSRVNUQVRFX0xPR19GT1JNQVQ6IFwianNvblwiLFxuICAgICAgUlVTVF9MT0c6IFwiaW5mb1wiLFxuICAgICAgUkVTVEFURV9UUkFDSU5HX0VORFBPSU5UOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxN1wiLFxuICAgIH07XG4gICAgY29uc3QgZW52QXJncyA9IE9iamVjdC5lbnRyaWVzKHsgLi4uZW52RGVmYXVsdHMsIC4uLihwcm9wcy5lbnZpcm9ubWVudCA/PyB7fSkgfSlcbiAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYC1lICR7a2V5fT1cIiR7dmFsdWV9XCJgKVxuICAgICAgLmpvaW4oXCIgXCIpO1xuXG4gICAgY29uc3QgaW5pdFNjcmlwdCA9IGVjMi5Vc2VyRGF0YS5mb3JMaW51eCgpO1xuICAgIGluaXRTY3JpcHQuYWRkQ29tbWFuZHMoXG4gICAgICBcInNldCAtZXVmIC1vIHBpcGVmYWlsXCIsXG4gICAgICBgeXVtIGluc3RhbGwgLXkgbnBtICYmIG5wbSBpbnN0YWxsIC1ncSBAcmVzdGF0ZWRldi9yZXN0YXRlQCR7cmVzdGF0ZU5wbVRhZ30gQHJlc3RhdGVkZXYvcmVzdGF0ZWN0bEAke3Jlc3RhdGVOcG1UYWd9YCxcbiAgICAgIFwieXVtIGluc3RhbGwgLXkgZG9ja2VyXCIsXG4gICAgICB0aGlzLm1vdW50RGF0YVZvbHVtZVNjcmlwdCgpLFxuXG4gICAgICBcIm1rZGlyIC1wIC9ldGMvcmVzdGF0ZVwiLFxuICAgICAgW1wiY2F0IDw8IEVPRiA+IC9ldGMvcmVzdGF0ZS9jb25maWcudG9tbFwiLCB0aGlzLnJlc3RhdGVDb25maWcoaWQsIHByb3BzKSwgXCJFT0ZcIl0uam9pbihcIlxcblwiKSxcblxuICAgICAgXCJzeXN0ZW1jdGwgc3RhcnQgZG9ja2VyLnNlcnZpY2VcIixcblxuICAgICAgLy8gU3RhcnQgdGhlIEFET1QgY29sbGVjdG9yIC0gbmVlZGVkIGZvciBYLXJheSB0cmFjZSBmb3J3YXJkaW5nXG4gICAgICBgaWYgWyBcIiQoZG9ja2VyIHBzIC1xYSAtZiBuYW1lPWFkb3QpXCIgXTsgdGhlbiBkb2NrZXIgc3RvcCBhZG90IHx8IHRydWU7IGRvY2tlciBybSBhZG90OyBmaWAsXG4gICAgICBcImRvY2tlciBydW4gLS1uYW1lIGFkb3QgLS1yZXN0YXJ0IG9uLWZhaWx1cmUgLS1kZXRhY2ggLS1wdWxsIGFsd2F5c1wiICtcbiAgICAgICAgXCIgLXAgNDMxNzo0MzE3IC1wIDU1NjgwOjU1NjgwIC1wIDg4ODk6ODg4OFwiICtcbiAgICAgICAgYCBwdWJsaWMuZWNyLmF3cy9hd3Mtb2JzZXJ2YWJpbGl0eS9hd3Mtb3RlbC1jb2xsZWN0b3I6JHthZG90VGFnfWAsXG5cbiAgICAgIC8vIFN0YXJ0IHRoZSBSZXN0YXRlIHNlcnZlciBjb250YWluZXJcbiAgICAgIGBpZiBbIFwiJChkb2NrZXIgcHMgLXFhIC1mIG5hbWU9cmVzdGF0ZSlcIiBdOyB0aGVuIGRvY2tlciBzdG9wIHJlc3RhdGUgfHwgdHJ1ZTsgZG9ja2VyIHJtIHJlc3RhdGU7IGZpYCxcbiAgICAgIFwiZG9ja2VyIHJ1biAtLW5hbWUgcmVzdGF0ZSAtLXJlc3RhcnQgb24tZmFpbHVyZSAtLWRldGFjaCAtLXB1bGwgYWx3YXlzXCIgK1xuICAgICAgICBcIiAtLXZvbHVtZSAvZXRjL3Jlc3RhdGU6L2V0Yy9yZXN0YXRlXCIgK1xuICAgICAgICBcIiAtLXZvbHVtZSAvdmFyL3Jlc3RhdGU6L3Jlc3RhdGUtZGF0YVwiICtcbiAgICAgICAgXCIgLS1uZXR3b3JrPWhvc3RcIiArXG4gICAgICAgIGAgJHtlbnZBcmdzfWAgK1xuICAgICAgICBgIC0tbG9nLWRyaXZlcj1hd3Nsb2dzIC0tbG9nLW9wdCBhd3Nsb2dzLWdyb3VwPSR7bG9nR3JvdXAubG9nR3JvdXBOYW1lfWAgK1xuICAgICAgICBgICR7dXNlU2hhRGlnZXN0ID8gYCR7cmVzdGF0ZUltYWdlfUAke3NoYURpZ2VzdH1gIDogYCR7cmVzdGF0ZUltYWdlfToke3Jlc3RhdGVEb2NrZXJUYWd9YH1gICtcbiAgICAgICAgXCIgLS1jb25maWctZmlsZSAvZXRjL3Jlc3RhdGUvY29uZmlnLnRvbWxcIixcbiAgICApO1xuXG4gICAgLy8gT3B0aW9uYWxseSwgY29uZmlndXJlIGFuZCBzdGFydCB0aGUgbmdpbnggc2VydmljZVxuICAgIGlmICh0aGlzLnRsc0VuYWJsZWQpIHtcbiAgICAgIGlmIChzdWJuZXRUeXBlID09IGVjMi5TdWJuZXRUeXBlLlBVQkxJQykge1xuICAgICAgICBpbml0U2NyaXB0LmFkZENvbW1hbmRzKFxuICAgICAgICAgIFwieXVtIGluc3RhbGwgLXkgbmdpbnhcIixcbiAgICAgICAgICBcIm1rZGlyIC1wIC9ldGMvcGtpL3ByaXZhdGVcIixcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcIm9wZW5zc2wgcmVxIC1uZXcgLXg1MDkgLW5vZGVzIC1zaGEyNTYgLWRheXMgMzY1IC1leHRlbnNpb25zIHYzX2NhXCIsXG4gICAgICAgICAgICBcIiAtc3ViaiAnL0M9REUvU1Q9QmVybGluL0w9QmVybGluL089cmVzdGF0ZS5kZXYvT1U9ZGVtby9DTj1yZXN0YXRlLmV4YW1wbGUuY29tJ1wiLFxuICAgICAgICAgICAgXCIgLW5ld2tleSByc2E6MjA0OCAta2V5b3V0IC9ldGMvcGtpL3ByaXZhdGUvcmVzdGF0ZS1zZWxmc2lnbmVkLmtleSAtb3V0IC9ldGMvcGtpL3ByaXZhdGUvcmVzdGF0ZS1zZWxmc2lnbmVkLmNydFwiLFxuICAgICAgICAgIF0uam9pbihcIlwiKSxcblxuICAgICAgICAgIFtcImNhdCA8PCBFT0YgPiAvZXRjL25naW54L2NvbmYuZC9yZXN0YXRlLWluZ3Jlc3MuY29uZlwiLCB0aGlzLmluZ3Jlc3NOZ2lueENvbmZpZyhwcm9wcyksIFwiRU9GXCJdLmpvaW4oXCJcXG5cIiksXG4gICAgICAgICAgXCJzeXN0ZW1jdGwgc3RhcnQgbmdpbnhcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjbG91ZENvbmZpZyA9IGVjMi5Vc2VyRGF0YS5jdXN0b20oW2BjbG91ZF9maW5hbF9tb2R1bGVzOmAsIGAtIFtzY3JpcHRzLXVzZXIsIGFsd2F5c11gXS5qb2luKFwiXFxuXCIpKTtcblxuICAgIGNvbnN0IHVzZXJEYXRhID0gbmV3IGVjMi5NdWx0aXBhcnRVc2VyRGF0YSgpO1xuICAgIHVzZXJEYXRhLmFkZFVzZXJEYXRhUGFydChjbG91ZENvbmZpZywgXCJ0ZXh0L2Nsb3VkLWNvbmZpZ1wiKTtcbiAgICB1c2VyRGF0YS5hZGRVc2VyRGF0YVBhcnQoaW5pdFNjcmlwdCwgXCJ0ZXh0L3gtc2hlbGxzY3JpcHRcIik7XG5cbiAgICBjb25zdCByZXN0YXRlSW5zdGFuY2UgPSBuZXcgZWMyLkluc3RhbmNlKHRoaXMsIFwiSG9zdFwiLCB7XG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgdnBjU3VibmV0czogeyBzdWJuZXRUeXBlIH0sXG4gICAgICBpbnN0YW5jZVR5cGU6IHByb3BzLmluc3RhbmNlVHlwZSA/PyBuZXcgZWMyLkluc3RhbmNlVHlwZShcInQ0Zy5taWNyb1wiKSxcbiAgICAgIG1hY2hpbmVJbWFnZTpcbiAgICAgICAgcHJvcHMubWFjaGluZUltYWdlID8/XG4gICAgICAgIGVjMi5NYWNoaW5lSW1hZ2UubGF0ZXN0QW1hem9uTGludXgyMDIzKHtcbiAgICAgICAgICBjcHVUeXBlOiBlYzIuQW1hem9uTGludXhDcHVUeXBlLkFSTV82NCxcbiAgICAgICAgfSksXG4gICAgICByb2xlOiB0aGlzLmluc3RhbmNlUm9sZSxcbiAgICAgIGJsb2NrRGV2aWNlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZGV2aWNlTmFtZTogREFUQV9ERVZJQ0VfTkFNRSxcbiAgICAgICAgICB2b2x1bWU6IHtcbiAgICAgICAgICAgIGVic0RldmljZToge1xuICAgICAgICAgICAgICB2b2x1bWVTaXplOiA4LFxuICAgICAgICAgICAgICBkZWxldGVPblRlcm1pbmF0aW9uOiBwcm9wcy5yZW1vdmFsUG9saWN5ID09PSBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICAgICAgICAgIC4uLihwcm9wcy5kYXRhVm9sdW1lT3B0aW9ucyA/PyB7fSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmlydHVhbE5hbWU6IFwicmVzdGF0ZS1kYXRhXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB1c2VyRGF0YSxcbiAgICB9KTtcblxuICAgIHRoaXMuaW5zdGFuY2UgPSByZXN0YXRlSW5zdGFuY2U7XG5cbiAgICAvLyBXZSBzdGFydCB0aGUgQURPVCBjb2xsZWN0b3IgcmVnYXJkbGVzcywgYW5kIGNvbnRyb2wgd2hldGhlciB0cmFjZXMgd2lsbCBiZSBleHBvcnRlZCB0byBYLVJheSB1c2luZyBpbnN0YW5jZSByb2xlXG4gICAgLy8gcGVybWlzc2lvbnMuIFRoaXMgd2F5IGhpc3RvcmljIHRyYWNlcyB3aWxsIGJlIGJ1ZmZlcmVkIG9uIHRoZSBob3N0LCBldmVuIGlmIHRyYWNpbmcgaXMgZGlzYWJsZWQgaW5pdGlhbGx5LlxuICAgIGlmIChwcm9wcy50cmFjaW5nID09PSBUcmFjaW5nTW9kZS5BV1NfWFJBWSkge1xuICAgICAgcmVzdGF0ZUluc3RhbmNlLnJvbGUuYWRkTWFuYWdlZFBvbGljeShpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXCJBV1NYcmF5V3JpdGVPbmx5QWNjZXNzXCIpKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmdyZXNzU2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBcIkluZ3Jlc3NTZWN1cml0eUdyb3VwXCIsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXN0YXRlIEluZ3Jlc3MgQUNMc1wiLFxuICAgIH0pO1xuICAgIHJlc3RhdGVJbnN0YW5jZS5hZGRTZWN1cml0eUdyb3VwKGluZ3Jlc3NTZWN1cml0eUdyb3VwKTtcbiAgICBjb25zdCBhZG1pblNlY3VyaXR5R3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgXCJBZG1pblNlY3VyaXR5R3JvdXBcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJlc3RhdGUgQWRtaW4gQUNMc1wiLFxuICAgIH0pO1xuICAgIHJlc3RhdGVJbnN0YW5jZS5hZGRTZWN1cml0eUdyb3VwKGFkbWluU2VjdXJpdHlHcm91cCk7XG5cbiAgICB0aGlzLmluZ3Jlc3NQb3J0ID0gdGhpcy50bHNFbmFibGVkID8gUkVTVEFURV9UTFNfSU5HUkVTU19QT1JUIDogUkVTVEFURV9JTkdSRVNTX1BPUlQ7XG4gICAgdGhpcy5hZG1pblBvcnQgPSB0aGlzLnRsc0VuYWJsZWQgPyBSRVNUQVRFX1RMU19BRE1JTl9QT1JUIDogUkVTVEFURV9BRE1JTl9QT1JUO1xuXG4gICAgaW5ncmVzc1NlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICAocHJvcHMucHVibGljSW5ncmVzcyA/PyBmYWxzZSkgPyBlYzIuUGVlci5hbnlJcHY0KCkgOiBpbmdyZXNzU2VjdXJpdHlHcm91cCxcbiAgICAgIGVjMi5Qb3J0LnRjcCh0aGlzLmluZ3Jlc3NQb3J0KSxcbiAgICAgIFwiUmVzdGF0ZSBpbmdyZXNzXCIsXG4gICAgKTtcbiAgICBhZG1pblNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoYWRtaW5TZWN1cml0eUdyb3VwLCBlYzIuUG9ydC50Y3AodGhpcy5hZG1pblBvcnQpLCBcIlJlc3RhdGUgYWRtaW5cIik7XG5cbiAgICBjb25zdCBwcm90b2NvbCA9IHRoaXMudGxzRW5hYmxlZCA/IFwiaHR0cHNcIiA6IFwiaHR0cFwiO1xuICAgIGNvbnN0IGhvc3RuYW1lID1cbiAgICAgIHByb3BzLm5ldHdvcmtDb25maWd1cmF0aW9uPy5zdWJuZXRUeXBlICE9PSBlYzIuU3VibmV0VHlwZS5QVUJMSUNcbiAgICAgICAgPyBgJHtyZXN0YXRlSW5zdGFuY2UuaW5zdGFuY2VQcml2YXRlRG5zTmFtZX1gXG4gICAgICAgIDogYCR7cmVzdGF0ZUluc3RhbmNlLmluc3RhbmNlUHVibGljRG5zTmFtZX1gO1xuICAgIHRoaXMuaW5ncmVzc1VybCA9IGAke3Byb3RvY29sfTovLyR7aG9zdG5hbWV9YCArICh0aGlzLmluZ3Jlc3NQb3J0ID09PSA0NDMgPyBcIlwiIDogYDoke3RoaXMuaW5ncmVzc1BvcnR9YCk7XG4gICAgdGhpcy5hZG1pblVybCA9IGAke3Byb3RvY29sfTovLyR7aG9zdG5hbWV9OiR7dGhpcy5hZG1pblBvcnR9YDtcblxuICAgIHRoaXMuaW5ncmVzc1NlY3VyaXR5R3JvdXAgPSBpbmdyZXNzU2VjdXJpdHlHcm91cDtcbiAgICB0aGlzLmFkbWluU2VjdXJpdHlHcm91cCA9IGFkbWluU2VjdXJpdHlHcm91cDtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXN0YXRlQ29uZmlnKGlkOiBzdHJpbmcsIHByb3BzOiBTaW5nbGVOb2RlUmVzdGF0ZVByb3BzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHByb3BzLnJlc3RhdGVDb25maWdPdmVycmlkZSA/P1xuICAgICAgW1xuICAgICAgICBgcm9sZXMgPSBbYCxcbiAgICAgICAgYCAgICBcIndvcmtlclwiLGAsXG4gICAgICAgIGAgICAgXCJhZG1pblwiLGAsXG4gICAgICAgIGAgICAgXCJtZXRhZGF0YS1zZXJ2ZXJcIixgLFxuICAgICAgICBgICAgIFwibG9nLXNlcnZlclwiLGAsXG4gICAgICAgIGAgICAgXCJodHRwLWluZ3Jlc3NcIixgLFxuICAgICAgICBgXWAsXG4gICAgICAgIGBub2RlLW5hbWUgPSBcInJlc3RhdGUtMFwiYCxcbiAgICAgICAgYGNsdXN0ZXItbmFtZSA9IFwiJHtwcm9wcy5yZXN0YXRlQ29uZmlnPy5jbHVzdGVyTmFtZSA/PyBpZH1cImAsXG4gICAgICAgIGBkZWZhdWx0LW51bS1wYXJ0aXRpb25zID0gJHtwcm9wcy5yZXN0YXRlQ29uZmlnPy5ib290c3RyYXBOdW1QYXJ0aXRpb25zID8/IDR9YCxcbiAgICAgICAgYHJvY2tzZGItdG90YWwtbWVtb3J5LXNpemUgPSBcIiR7cHJvcHMucmVzdGF0ZUNvbmZpZz8ucm9ja3NkYj8udG90YWxNZW1vcnlTaXplPy50b01lYmlieXRlcygpID8/IDUxMi4wICsgXCIgTUJcIn1cImAsXG4gICAgICAgIGBgLFxuICAgICAgICBgW2FkbWluXWAsXG4gICAgICAgIGBiaW5kLWFkZHJlc3MgPSBcIiR7dGhpcy50bHNFbmFibGVkID8gXCIxMjcuMC4wLjFcIiA6IFwiMC4wLjAuMFwifToke1JFU1RBVEVfQURNSU5fUE9SVH1cImAsXG4gICAgICAgIGBgLFxuICAgICAgICBgW2FkbWluLnF1ZXJ5LWVuZ2luZV1gLFxuICAgICAgICBgbWVtb3J5LXNpemUgPSBcIjI1Ni4wIE1pQlwiYCxcbiAgICAgICAgYGAsXG4gICAgICAgIGBbaW5ncmVzc11gLFxuICAgICAgICBgYmluZC1hZGRyZXNzID0gXCIke3RoaXMudGxzRW5hYmxlZCA/IFwiMTI3LjAuMC4xXCIgOiBcIjAuMC4wLjBcIn06JHtSRVNUQVRFX0lOR1JFU1NfUE9SVH1cImAsXG4gICAgICBdLmpvaW4oXCJcXG5cIilcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1vdW50RGF0YVZvbHVtZVNjcmlwdCgpIHtcbiAgICByZXR1cm4gYFxuaWYgbW91bnQgfCBncmVwIC1xcyAnL3Zhci9yZXN0YXRlJzsgdGhlblxuICBlY2hvIFwiL3Zhci9yZXN0YXRlIGlzIG1vdW50ZWRcIlxuZWxzZVxuICBpZiBbIC1kIC92YXIvcmVzdGF0ZSBdOyB0aGVuXG4gICAgaWYgWyBcIiQobHMgLUEgL3Zhci9yZXN0YXRlKVwiIF07IHRoZW5cbiAgICAgIGVjaG8gXCJEYXRhIGV4aXN0cyBpbiAvdmFyL3Jlc3RhdGUgdGhhdCBpcyBub3Qgb24gZGF0YSB2b2x1bWU7IHJlZnVzaW5nIHRvIG92ZXJ3cml0ZSFcIlxuICAgICAgZXhpdCAxXG4gICAgZmlcbiAgZWxzZVxuICAgIG1rZGlyIC92YXIvcmVzdGF0ZVxuICBmaVxuICBpZiBmaWxlIC1zTCAke0RBVEFfREVWSUNFX05BTUV9IHwgZ3JlcCAtcSAnOiBkYXRhJCc7IHRoZW5cbiAgICBta2ZzIC10IHhmcyAke0RBVEFfREVWSUNFX05BTUV9XG4gIGZpXG4gIG1vdW50ICR7REFUQV9ERVZJQ0VfTkFNRX0gL3Zhci9yZXN0YXRlXG4gIGlmICEgZ3JlcCAtcXMgJy92YXIvcmVzdGF0ZScgL2V0Yy9mc3RhYjsgdGhlblxuICAgIGVjaG8gXCIke0RBVEFfREVWSUNFX05BTUV9IC92YXIvcmVzdGF0ZSB4ZnMgZGVmYXVsdHMgMCAwXCIgPj4gL2V0Yy9mc3RhYlxuICAgIGVjaG8gXCJBZGRlZCBlbnRyeSBmb3IgJHtEQVRBX0RFVklDRV9OQU1FfSB0byAvZXRjL2ZzdGFiXCJcbiAgZWxzZVxuICAgIGVjaG8gXCJFbnRyeSBmb3IgJHtEQVRBX0RFVklDRV9OQU1FfSBhbHJlYWR5IGV4aXN0cyBpbiAvZXRjL2ZzdGFiXCJcbiAgZmlcbmZpXG5gO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBwcm9wcyBjb25zdHJ1Y3QgcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyBuZ2lueCBjb25maWd1cmF0aW9uIHRvIHVzZSBmb3IgaW5ncmVzcyByZXZlcnNlIHByb3h5LCBmb3JtYXR0ZWQgYXMgYSBtdWx0aS1saW5lIHN0cmluZ1xuICAgKi9cbiAgcHJvdGVjdGVkIGluZ3Jlc3NOZ2lueENvbmZpZyhwcm9wczogU2luZ2xlTm9kZVJlc3RhdGVQcm9wcykge1xuICAgIHJldHVybiAoXG4gICAgICBwcm9wcy5pbmdyZXNzTmdpbnhDb25maWdPdmVycmlkZSA/P1xuICAgICAgW1xuICAgICAgICBcInNlcnZlciB7XCIsXG4gICAgICAgIGAgIGxpc3RlbiAke1JFU1RBVEVfVExTX0lOR1JFU1NfUE9SVH0gc3NsIGh0dHAyO2AsXG4gICAgICAgIGAgIGxpc3RlbiBbOjpdOiR7UkVTVEFURV9UTFNfSU5HUkVTU19QT1JUfSBzc2wgaHR0cDI7YCxcbiAgICAgICAgXCIgIHNlcnZlcl9uYW1lIF87XCIsXG4gICAgICAgIFwiICByb290IC91c3Ivc2hhcmUvbmdpbngvaHRtbDtcIixcbiAgICAgICAgXCJcIixcbiAgICAgICAgJyAgc3NsX2NlcnRpZmljYXRlIFwiL2V0Yy9wa2kvcHJpdmF0ZS9yZXN0YXRlLXNlbGZzaWduZWQuY3J0XCI7JyxcbiAgICAgICAgJyAgc3NsX2NlcnRpZmljYXRlX2tleSBcIi9ldGMvcGtpL3ByaXZhdGUvcmVzdGF0ZS1zZWxmc2lnbmVkLmtleVwiOycsXG4gICAgICAgIFwiICBzc2xfc2Vzc2lvbl9jYWNoZSBzaGFyZWQ6U1NMOjFtO1wiLFxuICAgICAgICBcIiAgc3NsX3Nlc3Npb25fdGltZW91dCAxMG07XCIsXG4gICAgICAgIFwiICBzc2xfY2lwaGVycyBQUk9GSUxFPVNZU1RFTTtcIixcbiAgICAgICAgXCIgIHNzbF9wcmVmZXJfc2VydmVyX2NpcGhlcnMgb247XCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgIFwiICBsb2NhdGlvbiAvIHtcIixcbiAgICAgICAgYCAgICBwcm94eV9wYXNzIGh0dHA6Ly9sb2NhbGhvc3Q6JHtSRVNUQVRFX0lOR1JFU1NfUE9SVH07YCxcbiAgICAgICAgYCAgICBwcm94eV9yZWFkX3RpbWVvdXQgJHtwcm9wcy5pbmdyZXNzUHJveHlSZWFkVGltZW91dD8udG9TZWNvbmRzKCkgPz8gMzYwMH07YCxcbiAgICAgICAgXCIgIH1cIixcbiAgICAgICAgXCJ9XCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgIFwic2VydmVyIHtcIixcbiAgICAgICAgYCAgbGlzdGVuICR7UkVTVEFURV9UTFNfQURNSU5fUE9SVH0gc3NsIGh0dHAyO2AsXG4gICAgICAgIGAgIGxpc3RlbiBbOjpdOiR7UkVTVEFURV9UTFNfQURNSU5fUE9SVH0gc3NsIGh0dHAyO2AsXG4gICAgICAgIFwiICBzZXJ2ZXJfbmFtZSBfO1wiLFxuICAgICAgICBcIiAgcm9vdCAvdXNyL3NoYXJlL25naW54L2h0bWw7XCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgICcgIHNzbF9jZXJ0aWZpY2F0ZSBcIi9ldGMvcGtpL3ByaXZhdGUvcmVzdGF0ZS1zZWxmc2lnbmVkLmNydFwiOycsXG4gICAgICAgICcgIHNzbF9jZXJ0aWZpY2F0ZV9rZXkgXCIvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5rZXlcIjsnLFxuICAgICAgICBcIiAgc3NsX3Nlc3Npb25fY2FjaGUgc2hhcmVkOlNTTDoxbTtcIixcbiAgICAgICAgXCIgIHNzbF9zZXNzaW9uX3RpbWVvdXQgMTBtO1wiLFxuICAgICAgICBcIiAgc3NsX2NpcGhlcnMgUFJPRklMRT1TWVNURU07XCIsXG4gICAgICAgIFwiICBzc2xfcHJlZmVyX3NlcnZlcl9jaXBoZXJzIG9uO1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBcIiAgbG9jYXRpb24gLyB7XCIsXG4gICAgICAgIGAgICAgcHJveHlfcGFzcyBodHRwOi8vbG9jYWxob3N0OiR7UkVTVEFURV9BRE1JTl9QT1JUfTtgLFxuICAgICAgICBcIiAgfVwiLFxuICAgICAgICBcIn1cIixcbiAgICAgIF0uam9pbihcIlxcblwiKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
339
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLW5vZGUtcmVzdGF0ZS1kZXBsb3ltZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3Jlc3RhdGUtY29uc3RydWN0cy9zaW5nbGUtbm9kZS1yZXN0YXRlLWRlcGxveW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7R0FTRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsMkNBQXVDO0FBQ3ZDLDJEQUE2QztBQUM3Qyx5REFBMkM7QUFDM0MseURBQTJDO0FBRTNDLDZEQUFtRDtBQUNuRCxpREFBbUM7QUFDbkMsNkNBQTRDO0FBZ0g1QyxJQUFZLGNBV1g7QUFYRCxXQUFZLGNBQWM7SUFDeEI7O09BRUc7SUFDSCwyREFBUSxDQUFBO0lBRVI7OztPQUdHO0lBQ0gseUdBQStCLENBQUE7QUFDakMsQ0FBQyxFQVhXLGNBQWMsOEJBQWQsY0FBYyxRQVd6QjtBQUVELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0FBQ2xDLE1BQU0sd0JBQXdCLEdBQUcsR0FBRyxDQUFDO0FBQ3JDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0FBQ2hDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0FBQ3BDLE1BQU0scUJBQXFCLEdBQUcsdUNBQXVDLENBQUM7QUFDdEUsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUM7QUFDekMsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUM7QUFDdEMsTUFBTSx1QkFBdUIsR0FBRyxRQUFRLENBQUM7QUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUM7QUFFcEM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBYSwyQkFBNEIsU0FBUSxzQkFBUztJQWF4RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTZCO1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLEdBQUcsR0FBRyxL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LElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDYixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBeFZELGtFQXdWQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjMtMjAyNSAtIFJlc3RhdGUgU29mdHdhcmUsIEluYy4sIFJlc3RhdGUgR21iSFxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBSZXN0YXRlIENESyBDb25zdHJ1Y3QgTGlicmFyeSxcbiAqIHdoaWNoIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqXG4gKiBZb3UgY2FuIGZpbmQgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGluIGZpbGUgTElDRU5TRSBpbiB0aGUgcm9vdFxuICogZGlyZWN0b3J5IG9mIHRoaXMgcmVwb3NpdG9yeSBvciBwYWNrYWdlLCBvciBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Jlc3RhdGVkZXYvc2RrLXR5cGVzY3JpcHQvYmxvYi9tYWluL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBJUmVzdGF0ZUVudmlyb25tZW50IH0gZnJvbSBcIi4vcmVzdGF0ZS1lbnZpcm9ubWVudFwiO1xuaW1wb3J0IHsgVHJhY2luZ01vZGUgfSBmcm9tIFwiLi9kZXBsb3ltZW50cy1jb21tb25cIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTaW5nbGVOb2RlUmVzdGF0ZVByb3BzIHtcbiAgLyoqIEVDMiBpbnN0YW5jZSB0eXBlIHRvIHVzZS4gKi9cbiAgaW5zdGFuY2VUeXBlPzogZWMyLkluc3RhbmNlVHlwZTtcblxuICAvKiogTWFjaGluZSBpbWFnZS4gTm90ZTogc3RhcnR1cCBzY3JpcHQgZXhwZWN0cyB5dW0tYmFzZWQgcGFja2FnZSBtYW5hZ2VtZW50LiAqL1xuICBtYWNoaW5lSW1hZ2U/OiBlYzIuSU1hY2hpbmVJbWFnZTtcblxuICAvKiogVGhlIFZQQyBpbiB3aGljaCB0byBsYXVuY2ggdGhlIFJlc3RhdGUgaG9zdC4gKi9cbiAgdnBjPzogZWMyLklWcGM7XG5cbiAgbmV0d29ya0NvbmZpZ3VyYXRpb24/OiB7XG4gICAgLyoqXG4gICAgICogU3VibmV0IHR5cGUgZm9yIHRoZSBSZXN0YXRlIGhvc3QuXG4gICAgICpcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9uczpcbiAgICAgKiAgLSBbRGVmYXVsdF0ge0BsaW5rIGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1N9IHdpbGwgY3JlYXRlIHRoZSBSZXN0YXRlIGluc3RhbmNlIHdpdGggb3V0Ym91bmQgaW50ZXJuZXRcbiAgICAgKiAgICBhY2Nlc3Mgb25seSwgc28gdGhhdCBpdCBjYW4gaW52b2tlIEhUVFAgZW5kcG9pbnRzLiBUaGUgc2VjdXJpdHkgZ3JvdXBzIHtAbGluayBpbmdyZXNzU2VjdXJpdHlHcm91cH0gYW5kXG4gICAgICogICAge0BsaW5rIGFkbWluU2VjdXJpdHlHcm91cH0gY29udHJvbCBpbmJvdW5kIHRyYWZmaWMgdG8gdGhlIHNlcnZpY2UgaW5ncmVzcyBhbmQgYWRtaW4gcG9ydHMgcmVzcGVjdGl2ZWx5LlxuICAgICAqICAgIENvbmZpZ3VyZSB7QGxpbmsgU2VydmljZURlcGxveWVyfSB0byB1c2UgdGhlIGxhdHRlciwgYW5kIHNldCB1cCBpbmdyZXNzIHRyYWZmaWMgcm91dGluZyBvdXRzaWRlIG9mIHRoaXNcbiAgICAgKiAgICBjb25zdHJ1Y3QgdXNpbmcgdGhlIGZvcm1lci5cbiAgICAgKiAgLSBJbnNlY3VyZSwgaW50ZXJuZXQtZmFjaW5nIHtAbGluayBlYzIuU3VibmV0VHlwZS5QVUJMSUN9IHdpbGwgYWxzbyBwcm92aXNpb24gYW4gbmdpbnggcmV2ZXJzZSBwcm94eVxuICAgICAqICAgIGFuZCBhbiBIVFRQIGxpc3RlbmVyIHdpdGggYSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZS5cbiAgICAgKi9cbiAgICBzdWJuZXRUeXBlPzogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB8IGVjMi5TdWJuZXRUeXBlLlBVQkxJQztcbiAgfTtcblxuICAvKipcbiAgICogQWxsb3cgaW5jb21pbmcgaW5ncmVzcyB0cmFmZmljIGZyb20gYW55d2hlcmUuIERlZmF1bHQ6IGBmYWxzZWAuIEFsdGVybmF0aXZlbHksIGFkZCBydWxlcyB0byB0aGVcbiAgICogYGluZ3Jlc3NTZWN1cml0eUdyb3VwYCBkaXJlY3RseS5cbiAgICovXG4gIHB1YmxpY0luZ3Jlc3M/OiBib29sZWFuO1xuXG4gIC8qKiBMb2cgZ3JvdXAgZm9yIFJlc3RhdGUgc2VydmljZSBsb2dzLiAqL1xuICBsb2dHcm91cD86IGxvZ3MuTG9nR3JvdXA7XG5cbiAgLyoqIFRyYWNpbmcgbW9kZSBmb3IgUmVzdGF0ZSBzZXJ2aWNlcy4gRGVmYXVsdHMgdG8ge0BsaW5rIFRyYWNpbmdNb2RlLkRJU0FCTEVEfS4gKi9cbiAgdHJhY2luZz86IFRyYWNpbmdNb2RlO1xuXG4gIC8qKiBQcmVmaXggZm9yIHJlc291cmNlcyBjcmVhdGVkIGJ5IHRoaXMgY29uc3RydWN0IHRoYXQgcmVxdWlyZSB1bmlxdWUgbmFtZXMuICovXG4gIHByZWZpeD86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgbmFtZS4gRGVmYXVsdHMgdG8gYGRvY2tlci5yZXN0YXRlLmRldi9yZXN0YXRlZGV2L3Jlc3RhdGVgLiAqL1xuICByZXN0YXRlSW1hZ2U/OiBzdHJpbmc7XG5cbiAgLyoqIFJlc3RhdGUgRG9ja2VyIGltYWdlIHRhZy4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIHJlc3RhdGVUYWc/OiBzdHJpbmc7XG5cbiAgLyoqIFJlc3RhdGUgTlBNIHRvb2xzIHRhZyAodXNlZCBmb3IgYHJlc3RhdGVgL2ByZXN0YXRlY3RsYCkuIERlZmF1bHRzIHRvIGBsYXRlc3RgLiAqL1xuICByZXN0YXRlTnBtVGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFQlMgZGF0YSB2b2x1bWUgc2V0dGluZ3MgZm9yIFJlc3RhdGUgZGF0YSBzdG9yYWdlLiBJZiBub3Qgc3BlY2lmaWVkLCBhIGRlZmF1bHQgOEdCIHZvbHVtZSB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICBkYXRhVm9sdW1lT3B0aW9ucz86IGVjMi5FYnNEZXZpY2VQcm9wcyB8IHVuZGVmaW5lZDtcblxuICAvKiogUmVzdGF0ZSBoaWdoLWxldmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBzZXQge0BsaW5rIHJlc3RhdGVDb25maWdPdmVycmlkZX0uICovXG4gIHJlc3RhdGVDb25maWc/OiB7XG4gICAgLyoqIERlZmF1bHRzIHRvIHRoZSBjb25zdHJ1Y3QgaWQgaWYgbGVmdCB1bnNwZWNpZmllZC4gKi9cbiAgICBjbHVzdGVyTmFtZT86IHN0cmluZztcbiAgICAvKiogRGVmYXVsdHMgdG8gNC4gT25seSB0YWtlcyBlZmZlY3Qgb24gaW5pdGlhbCBwcm92aXNpb25pbmcuICovXG4gICAgYm9vdHN0cmFwTnVtUGFydGl0aW9ucz86IG51bWJlcjtcbiAgICAvKiogUm9ja3NEQiBzZXR0aW5ncy4gKi9cbiAgICByb2Nrc2RiPzoge1xuICAgICAgLyoqIERlZmF1bHRzIHRvIDUxMiBNQi4gKi9cbiAgICAgIHRvdGFsTWVtb3J5U2l6ZT86IGNkay5TaXplO1xuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHByb3BlcnRpZXMgdG8gc2V0IGZvciBSZXN0YXRlLiBUaGlzIGlzIGEgc2ltcGxlIHdheSB0byBwYXNzIGN1c3RvbSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuXG4gICAqL1xuICBlbnZpcm9ubWVudD86IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqIENvbXBsZXRlbHkgb3ZlcnJpZGUgdGhlIFJlc3RhdGUgc2VydmVyIGNvbmZpZ3VyYXRpb24uIE5vdGUgdGhhdCBvdGhlciBSZXN0YXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKiB3aWxsIGVmZmVjdGl2ZWx5IGJlIGlnbm9yZWQgaWYgdGhpcyBpcyBzZXQuIFNlZSBodHRwczovL2RvY3MucmVzdGF0ZS5kZXYvb3BlcmF0ZS9jb25maWd1cmF0aW9uL3NlcnZlci9cbiAgICogZm9yIGRldGFpbHMuXG4gICAqL1xuICByZXN0YXRlQ29uZmlnT3ZlcnJpZGU/OiBzdHJpbmc7XG5cbiAgLyoqIEFtYXpvbiBEaXN0cm8gZm9yIE9wZW4gVGVsZW1ldHJ5IERvY2tlciBpbWFnZSB0YWcuIERlZmF1bHRzIHRvIGBsYXRlc3RgLiAqL1xuICBhZG90VGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZW1vdmFsIHBvbGljeSBmb3IgbG9uZy1saXZlZCByZXNvdXJjZXMgKHN0b3JhZ2UsIGxvZ3MpLiBEZWZhdWx0OiBgY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWWAuXG4gICAqL1xuICByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIENvbnRyb2wgb24taG9zdCBUTFMgdGVybWluYXRpb24gZm9yIGluZ3Jlc3MgYW5kIGFkbWluIHBvcnRzLiBEZWZhdWx0cyB0byBgVGxzVGVybWluYXRpb24uTk9ORWAuIEN1cnJlbnRseSwgZW5hYmxpbmdcbiAgICogVExTIGltcGxpY2l0bHkgZW5hYmxlcyBhbiBgbmdpbnhgIHNlcnZpY2UgdG8gYmUgY29uZmlndXJlZCBvbiB0aGUgaG9zdC4gRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiB0aGlzIG9wdGlvbiwgdGhlXG4gICAqIGluZ3Jlc3Mgc2VjdXJpdHkgZ3JvdXAgd2lsbCBiZSBjb25maWd1cmVkIHRvIGFsbG93IGluYm91bmQgdHJhZmZpYyB0byB0aGUgYXBwcm9wcmlhdGUgcG9ydCAtIDgwODAgZm9yIG5vIFRMUywgb3JcbiAgICogNDQzIHdpdGggVExTIGVuYWJsZWQuXG4gICAqL1xuICB0bHNUZXJtaW5hdGlvbj86IFRsc1Rlcm1pbmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVhZCB0aW1lb3V0IGZvciBwcm94aWVkIGluZ3Jlc3MgcmVxdWVzdHMuIERlZmF1bHQ6IDM2MDAgc2Vjb25kcy5cbiAgICovXG4gIGluZ3Jlc3NQcm94eVJlYWRUaW1lb3V0PzogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBDb21wbGV0ZWx5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGBuZ2lueGAgY29uZmlndXJhdGlvbiBmb3IgdGhlIGluZ3Jlc3MgcHJveHkuIE5vdGUgdGhhdCBvdGhlclxuICAgKiBpbmdyZXNzIHByb3h5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGVmZmVjdGl2ZWx5IGJlIGlnbm9yZWQgaWYgdGhpcyBpcyBzZXQuXG4gICAqL1xuICBpbmdyZXNzTmdpbnhDb25maWdPdmVycmlkZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gVGxzVGVybWluYXRpb24ge1xuICAvKipcbiAgICogRGlzYWJsZWQgKGRlZmF1bHQpOyBleHBvc2UgdGhlIGByZXN0YXRlLXNlcnZlcmAgSFRUUCBwb3J0cyBkaXJlY3RseS5cbiAgICovXG4gIERJU0FCTEVELFxuXG4gIC8qKlxuICAgKiBVc2Ugc2VsZi1zaWduZWQgY2VydGlmaWNhdGVzIGZvciBUTFMgdGVybWluYXRpb24gb24gdGhlIGluZ3Jlc3MgYW5kIGFkbWluIHBvcnRzLiBDb252ZW5pZW50IGZvciBxdWljayB0ZXN0aW5nLFxuICAgKiBtYWtlIHN1cmUgeW91IHNldCBgaW5zZWN1cmVgID0gYHRydWVgIHdoZW4gdXNpbmcgYFNlcnZpY2VEZXBsb3llcmAgdG8gYWNjZXB0IHRoaXMgY2VydGlmaWNhdGUuXG4gICAqL1xuICBPTl9IT1NUX1NFTEZfU0lHTkVEX0NFUlRJRklDQVRFLFxufVxuXG5jb25zdCBSRVNUQVRFX0lOR1JFU1NfUE9SVCA9IDgwODA7XG5jb25zdCBSRVNUQVRFX1RMU19JTkdSRVNTX1BPUlQgPSA0NDM7XG5jb25zdCBSRVNUQVRFX0FETUlOX1BPUlQgPSA5MDcwO1xuY29uc3QgUkVTVEFURV9UTFNfQURNSU5fUE9SVCA9IDkwNzM7XG5jb25zdCBSRVNUQVRFX0lNQUdFX0RFRkFVTFQgPSBcImRvY2tlci5yZXN0YXRlLmRldi9yZXN0YXRlZGV2L3Jlc3RhdGVcIjtcbmNvbnN0IFJFU1RBVEVfRE9DS0VSX0RFRkFVTFRfVEFHID0gXCIxLjVcIjtcbmNvbnN0IFJFU1RBVEVfTlBNX0RFRkFVTFRfVEFHID0gXCIxLjVcIjtcbmNvbnN0IEFET1RfRE9DS0VSX0RFRkFVTFRfVEFHID0gXCJsYXRlc3RcIjtcbmNvbnN0IERBVEFfREVWSUNFX05BTUUgPSBcIi9kZXYvc2RkXCI7XG5cbi8qKlxuICogQ3JlYXRlcyBhIFJlc3RhdGUgc2VydmljZSBkZXBsb3ltZW50IGJhY2tlZCBieSBhIHNpbmdsZSBFQzIgaW5zdGFuY2UsIHN1aXRhYmxlIGZvciBkZXZlbG9wbWVudCBhbmQgdGVzdGluZyBwdXJwb3Nlcy5cbiAqXG4gKiAqKkR1cmFiaWxpdHkqKlxuICpcbiAqIFJlc3RhdGUgZGF0YSB3aWxsIGJlIHN0b3JlZCBpbiBhIHNlcGFyYXRlIEVCUyB2b2x1bWUgd2hpY2ggeW91IGNhbiBjb25maWd1cmUgZXhwbGljaXRseSB2aWEgdGhlIGBkYXRhVm9sdW1lT3B0aW9uc2BcbiAqIHByb3BlcnR5LiBVcGRhdGluZyBjb25maWd1cmF0aW9uIHNldHRpbmdzIG1heSB0cmlnZ2VyIGluc3RhbmNlIHJlYm9vdCBvciByZXBsYWNlbWVudCAtIGNvbnNpZGVyIHNuYXBzaG90dGluZyB0aGUgZGF0YVxuICogdm9sdW1lIHByaW9yIHRvIGRlcGxveW1lbnRzLCBhbmQgZW5hYmxpbmcgaW5zdGFuY2UgdGVybWluYXRpb24gcHJvdGVjdGlvbi5cbiAqXG4gKiAqKlNlY3VyaXR5KipcbiAqXG4gKiBUaGUgRUMyIGluc3RhbmNlIHdpbGwgYmUgY3JlYXRlZCBpbiB0aGUgZGVmYXVsdCBWUEMgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuIFR3byBzZWN1cml0eSBncm91cHMgYXJlIGNyZWF0ZWQsXG4gKiBgaW5ncmVzc1NlY3VyaXR5R3JvdXBgIGFuZCBgYWRtaW5TZWN1cml0eUdyb3VwYCwgd2hpY2ggY29udHJvbCBhY2Nlc3MgdG8gdGhlIFJlc3RhdGUgc2VydmljZSBpbmdyZXNzIGFuZCBhZG1pbiBwb3J0c1xuICogcmVzcGVjdGl2ZWx5LiBZb3UgbXVzdCBhZGQgYXBwcm9wcmlhdGUgcnVsZXMgb3IgYWRkIG90aGVyIHJlc291cmNlcyB0byB0aGVzZSBzZWN1cml0eSBncm91cHMgdG8gYWxsb3cgYWNjZXNzLlxuICpcbiAqIFNlZSB7QGxpbmsgU2luZ2xlTm9kZVJlc3RhdGVQcm9wc30gZm9yIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCB7QGxpbmsgU2VydmljZURlcGxveWVyfSBmb3IgZGVwbG95aW5nXG4gKiBMYW1iZGEgaGFuZGxlcnMgdG8gZW52aXJvbm1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgU2luZ2xlTm9kZVJlc3RhdGVEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVJlc3RhdGVFbnZpcm9ubWVudCB7XG4gIHJlYWRvbmx5IGluc3RhbmNlOiBlYzIuSW5zdGFuY2U7XG4gIHJlYWRvbmx5IGluc3RhbmNlUm9sZTogaWFtLklSb2xlO1xuICByZWFkb25seSBpbnZva2VyUm9sZTogaWFtLklSb2xlO1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuICByZWFkb25seSBpbmdyZXNzU2VjdXJpdHlHcm91cDogZWMyLklTZWN1cml0eUdyb3VwO1xuICByZWFkb25seSBpbmdyZXNzUG9ydDogbnVtYmVyO1xuICByZWFkb25seSBpbmdyZXNzVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFkbWluU2VjdXJpdHlHcm91cDogZWMyLklTZWN1cml0eUdyb3VwO1xuICByZWFkb25seSBhZG1pblBvcnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgYWRtaW5Vcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgdGxzRW5hYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2luZ2xlTm9kZVJlc3RhdGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnZwYyA9IHByb3BzLnZwYyA/PyBlYzIuVnBjLmZyb21Mb29rdXAodGhpcywgXCJWcGNcIiwgeyBpc0RlZmF1bHQ6IHRydWUgfSk7XG5cbiAgICBjb25zdCBzdWJuZXRUeXBlID0gcHJvcHMubmV0d29ya0NvbmZpZ3VyYXRpb24/LnN1Ym5ldFR5cGUgPz8gZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUztcblxuICAgIHRoaXMuaW5zdGFuY2VSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiSW5zdGFuY2VSb2xlXCIsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFwiZWMyLmFtYXpvbmF3cy5jb21cIiksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXCJBbWF6b25TU01NYW5hZ2VkSW5zdGFuY2VDb3JlXCIpXSxcbiAgICB9KTtcblxuICAgIHRoaXMuaW52b2tlclJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgXCJJbnZva2VyUm9sZVwiLCB7XG4gICAgICBhc3N1bWVkQnk6IHRoaXMuaW5zdGFuY2VSb2xlLFxuICAgIH0pO1xuXG4gICAgbmV3IGlhbS5Qb2xpY3kodGhpcywgXCJBc3N1bWVJbnZva2VyUm9sZVBvbGljeVwiLCB7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBzaWQ6IFwiQWxsb3dBc3N1bWVJbnZva2VyUm9sZVwiLFxuICAgICAgICAgIGFjdGlvbnM6IFtcInN0czpBc3N1bWVSb2xlXCJdLFxuICAgICAgICAgIHJlc291cmNlczogW3RoaXMuaW52b2tlclJvbGUucm9sZUFybl0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KS5hdHRhY2hUb1JvbGUodGhpcy5pbnN0YW5jZVJvbGUpO1xuXG4gICAgY29uc3QgbG9nR3JvdXAgPVxuICAgICAgcHJvcHMubG9nR3JvdXAgPz9cbiAgICAgIG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsIFwiTG9nc1wiLCB7XG4gICAgICAgIGxvZ0dyb3VwTmFtZTogYC9yZXN0YXRlLyR7aWR9YCxcbiAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX01PTlRILFxuICAgICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIH0pO1xuICAgIGxvZ0dyb3VwLmdyYW50V3JpdGUodGhpcy5pbnN0YW5jZVJvbGUpO1xuXG4gICAgbGV0IHJlc3RhdGVJbWFnZSA9IHByb3BzLnJlc3RhdGVJbWFnZSA/PyBSRVNUQVRFX0lNQUdFX0RFRkFVTFQ7XG4gICAgbGV0IHJlc3RhdGVEb2NrZXJUYWcgPSBwcm9wcy5yZXN0YXRlVGFnID8/IFJFU1RBVEVfRE9DS0VSX0RFRkFVTFRfVEFHO1xuICAgIGxldCByZXN0YXRlTnBtVGFnID0gcHJvcHMucmVzdGF0ZU5wbVRhZyA/PyBSRVNUQVRFX05QTV9ERUZBVUxUX1RBRztcbiAgICBsZXQgdXNlU2hhRGlnZXN0ID0gZmFsc2U7XG4gICAgbGV0IHNoYURpZ2VzdCA9IFwiXCI7XG5cbiAgICBpZiAocmVzdGF0ZUltYWdlLmluY2x1ZGVzKFwiQFwiKSkge1xuICAgICAgY29uc3QgcGFydHMgPSByZXN0YXRlSW1hZ2Uuc3BsaXQoXCJAXCIpO1xuICAgICAgcmVzdGF0ZUltYWdlID0gcGFydHNbMF07XG4gICAgICBzaGFEaWdlc3QgPSBwYXJ0c1sxXTtcbiAgICAgIHVzZVNoYURpZ2VzdCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChyZXN0YXRlSW1hZ2UuaW5jbHVkZXMoXCI6XCIpKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IHJlc3RhdGVJbWFnZS5zcGxpdChcIjpcIik7XG4gICAgICByZXN0YXRlSW1hZ2UgPSBwYXJ0c1swXTtcbiAgICAgIGNvbnN0IGlubGluZVRhZyA9IHBhcnRzWzFdO1xuXG4gICAgICBpZiAocHJvcHMucmVzdGF0ZVRhZyAmJiBwcm9wcy5yZXN0YXRlVGFnICE9PSBpbmxpbmVUYWcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBUYWcgY29uZmxpY3Q6IGlubGluZSB0YWcgJyR7aW5saW5lVGFnfScgaW4gaW1hZ2UgZG9lc24ndCBtYXRjaCBleHBsaWNpdCB0YWcgJyR7cHJvcHMucmVzdGF0ZVRhZ30nIHByb3BlcnR5YCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmVzdGF0ZURvY2tlclRhZyA9IGlubGluZVRhZztcbiAgICB9XG4gICAgY29uc3QgYWRvdFRhZyA9IHByb3BzLmFkb3RUYWcgPz8gQURPVF9ET0NLRVJfREVGQVVMVF9UQUc7XG5cbiAgICB0aGlzLnRsc0VuYWJsZWQgPSBwcm9wcy50bHNUZXJtaW5hdGlvbiA9PT0gVGxzVGVybWluYXRpb24uT05fSE9TVF9TRUxGX1NJR05FRF9DRVJUSUZJQ0FURTtcblxuICAgIGNvbnN0IGVudkRlZmF1bHRzID0ge1xuICAgICAgUkVTVEFURV9MT0dfRk9STUFUOiBcImpzb25cIixcbiAgICAgIFJVU1RfTE9HOiBcImluZm9cIixcbiAgICAgIFJFU1RBVEVfVFJBQ0lOR19FTkRQT0lOVDogXCJodHRwOi8vbG9jYWxob3N0OjQzMTdcIixcbiAgICB9O1xuICAgIGNvbnN0IGVudkFyZ3MgPSBPYmplY3QuZW50cmllcyh7IC4uLmVudkRlZmF1bHRzLCAuLi4ocHJvcHMuZW52aXJvbm1lbnQgPz8ge30pIH0pXG4gICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAtZSAke2tleX09XCIke3ZhbHVlfVwiYClcbiAgICAgIC5qb2luKFwiIFwiKTtcblxuICAgIGNvbnN0IGluaXRTY3JpcHQgPSBlYzIuVXNlckRhdGEuZm9yTGludXgoKTtcbiAgICBpbml0U2NyaXB0LmFkZENvbW1hbmRzKFxuICAgICAgXCJzZXQgLWV1ZiAtbyBwaXBlZmFpbFwiLFxuXG4gICAgICBcInl1bSBpbnN0YWxsIC15IGF3cy1jZm4tYm9vdHN0cmFwXCIsXG4gICAgICBgeXVtIGluc3RhbGwgLXkgbnBtICYmIG5wbSBpbnN0YWxsIC1ncSBAcmVzdGF0ZWRldi9yZXN0YXRlQCR7cmVzdGF0ZU5wbVRhZ30gQHJlc3RhdGVkZXYvcmVzdGF0ZWN0bEAke3Jlc3RhdGVOcG1UYWd9YCxcbiAgICAgIFwieXVtIGluc3RhbGwgLXkgZG9ja2VyXCIsXG4gICAgICB0aGlzLm1vdW50RGF0YVZvbHVtZVNjcmlwdCgpLFxuXG4gICAgICBcIm1rZGlyIC1wIC9ldGMvcmVzdGF0ZVwiLFxuICAgICAgW1wiY2F0IDw8IEVPRiA+IC9ldGMvcmVzdGF0ZS9jb25maWcudG9tbFwiLCB0aGlzLnJlc3RhdGVDb25maWcoaWQsIHByb3BzKSwgXCJFT0ZcIl0uam9pbihcIlxcblwiKSxcblxuICAgICAgXCJzeXN0ZW1jdGwgc3RhcnQgZG9ja2VyLnNlcnZpY2VcIixcblxuICAgICAgLy8gU3RhcnQgdGhlIEFET1QgY29sbGVjdG9yIC0gbmVlZGVkIGZvciBYLXJheSB0cmFjZSBmb3J3YXJkaW5nXG4gICAgICBgaWYgWyBcIiQoZG9ja2VyIHBzIC1xYSAtZiBuYW1lPWFkb3QpXCIgXTsgdGhlbiBkb2NrZXIgc3RvcCBhZG90IHx8IHRydWU7IGRvY2tlciBybSBhZG90OyBmaWAsXG4gICAgICBcImRvY2tlciBydW4gLS1uYW1lIGFkb3QgLS1yZXN0YXJ0IG9uLWZhaWx1cmUgLS1kZXRhY2ggLS1wdWxsIGFsd2F5c1wiICtcbiAgICAgICAgXCIgLXAgNDMxNzo0MzE3IC1wIDU1NjgwOjU1NjgwIC1wIDg4ODk6ODg4OFwiICtcbiAgICAgICAgYCBwdWJsaWMuZWNyLmF3cy9hd3Mtb2JzZXJ2YWJpbGl0eS9hd3Mtb3RlbC1jb2xsZWN0b3I6JHthZG90VGFnfWAsXG5cbiAgICAgIC8vIFN0YXJ0IHRoZSBSZXN0YXRlIHNlcnZlciBjb250YWluZXJcbiAgICAgIGBpZiBbIFwiJChkb2NrZXIgcHMgLXFhIC1mIG5hbWU9cmVzdGF0ZSlcIiBdOyB0aGVuIGRvY2tlciBzdG9wIHJlc3RhdGUgfHwgdHJ1ZTsgZG9ja2VyIHJtIHJlc3RhdGU7IGZpYCxcbiAgICAgIFwiZG9ja2VyIHJ1biAtLW5hbWUgcmVzdGF0ZSAtLXJlc3RhcnQgb24tZmFpbHVyZSAtLWRldGFjaCAtLXB1bGwgYWx3YXlzXCIgK1xuICAgICAgICBcIiAtLXZvbHVtZSAvZXRjL3Jlc3RhdGU6L2V0Yy9yZXN0YXRlXCIgK1xuICAgICAgICBcIiAtLXZvbHVtZSAvdmFyL3Jlc3RhdGU6L3Jlc3RhdGUtZGF0YVwiICtcbiAgICAgICAgXCIgLS1uZXR3b3JrPWhvc3RcIiArXG4gICAgICAgIGAgJHtlbnZBcmdzfWAgK1xuICAgICAgICBgIC0tbG9nLWRyaXZlcj1hd3Nsb2dzIC0tbG9nLW9wdCBhd3Nsb2dzLWdyb3VwPSR7bG9nR3JvdXAubG9nR3JvdXBOYW1lfWAgK1xuICAgICAgICBgICR7dXNlU2hhRGlnZXN0ID8gYCR7cmVzdGF0ZUltYWdlfUAke3NoYURpZ2VzdH1gIDogYCR7cmVzdGF0ZUltYWdlfToke3Jlc3RhdGVEb2NrZXJUYWd9YH1gICtcbiAgICAgICAgXCIgLS1jb25maWctZmlsZSAvZXRjL3Jlc3RhdGUvY29uZmlnLnRvbWxcIixcbiAgICApO1xuXG4gICAgLy8gT3B0aW9uYWxseSwgY29uZmlndXJlIGFuZCBzdGFydCB0aGUgbmdpbnggc2VydmljZVxuICAgIGlmICh0aGlzLnRsc0VuYWJsZWQpIHtcbiAgICAgIGluaXRTY3JpcHQuYWRkQ29tbWFuZHMoXG4gICAgICAgIFwieXVtIGluc3RhbGwgLXkgbmdpbnhcIixcbiAgICAgICAgXCJta2RpciAtcCAvZXRjL3BraS9wcml2YXRlXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBcIm9wZW5zc2wgcmVxIC1uZXcgLXg1MDkgLW5vZGVzIC1zaGEyNTYgLWRheXMgMzY1IC1leHRlbnNpb25zIHYzX2NhXCIsXG4gICAgICAgICAgXCIgLXN1YmogJy9DPURFL1NUPUJlcmxpbi9MPUJlcmxpbi9PPXJlc3RhdGUuZGV2L09VPWRlbW8vQ049cmVzdGF0ZS5leGFtcGxlLmNvbSdcIixcbiAgICAgICAgICBcIiAtbmV3a2V5IHJzYToyMDQ4IC1rZXlvdXQgL2V0Yy9wa2kvcHJpdmF0ZS9yZXN0YXRlLXNlbGZzaWduZWQua2V5IC1vdXQgL2V0Yy9wa2kvcHJpdmF0ZS9yZXN0YXRlLXNlbGZzaWduZWQuY3J0XCIsXG4gICAgICAgIF0uam9pbihcIlwiKSxcblxuICAgICAgICBbXCJjYXQgPDwgRU9GID4gL2V0Yy9uZ2lueC9jb25mLmQvcmVzdGF0ZS1pbmdyZXNzLmNvbmZcIiwgdGhpcy5pbmdyZXNzTmdpbnhDb25maWcocHJvcHMpLCBcIkVPRlwiXS5qb2luKFwiXFxuXCIpLFxuICAgICAgICBcInN5c3RlbWN0bCBzdGFydCBuZ2lueFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbG91ZENvbmZpZyA9IGVjMi5Vc2VyRGF0YS5jdXN0b20oW2BjbG91ZF9maW5hbF9tb2R1bGVzOmAsIGAtIFtzY3JpcHRzLXVzZXIsIGFsd2F5c11gXS5qb2luKFwiXFxuXCIpKTtcblxuICAgIGNvbnN0IHVzZXJEYXRhID0gbmV3IGVjMi5NdWx0aXBhcnRVc2VyRGF0YSgpO1xuICAgIHVzZXJEYXRhLmFkZFVzZXJEYXRhUGFydChjbG91ZENvbmZpZywgXCJ0ZXh0L2Nsb3VkLWNvbmZpZ1wiKTtcbiAgICB1c2VyRGF0YS5hZGRVc2VyRGF0YVBhcnQoaW5pdFNjcmlwdCwgXCJ0ZXh0L3gtc2hlbGxzY3JpcHRcIik7XG5cbiAgICBjb25zdCByZXN0YXRlSW5zdGFuY2UgPSBuZXcgZWMyLkluc3RhbmNlKHRoaXMsIFwiSG9zdFwiLCB7XG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgdnBjU3VibmV0czogeyBzdWJuZXRUeXBlIH0sXG4gICAgICBpbnN0YW5jZVR5cGU6IHByb3BzLmluc3RhbmNlVHlwZSA/PyBuZXcgZWMyLkluc3RhbmNlVHlwZShcInQ0Zy5taWNyb1wiKSxcbiAgICAgIG1hY2hpbmVJbWFnZTpcbiAgICAgICAgcHJvcHMubWFjaGluZUltYWdlID8/XG4gICAgICAgIGVjMi5NYWNoaW5lSW1hZ2UubGF0ZXN0QW1hem9uTGludXgyMDIzKHtcbiAgICAgICAgICBjcHVUeXBlOiBlYzIuQW1hem9uTGludXhDcHVUeXBlLkFSTV82NCxcbiAgICAgICAgfSksXG4gICAgICByb2xlOiB0aGlzLmluc3RhbmNlUm9sZSxcbiAgICAgIGJsb2NrRGV2aWNlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZGV2aWNlTmFtZTogREFUQV9ERVZJQ0VfTkFNRSxcbiAgICAgICAgICB2b2x1bWU6IHtcbiAgICAgICAgICAgIGVic0RldmljZToge1xuICAgICAgICAgICAgICB2b2x1bWVTaXplOiA4LFxuICAgICAgICAgICAgICBkZWxldGVPblRlcm1pbmF0aW9uOiBwcm9wcy5yZW1vdmFsUG9saWN5ID09PSBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICAgICAgICAgIC4uLihwcm9wcy5kYXRhVm9sdW1lT3B0aW9ucyA/PyB7fSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmlydHVhbE5hbWU6IFwicmVzdGF0ZS1kYXRhXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB1c2VyRGF0YSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNmbkluc3RhbmNlID0gcmVzdGF0ZUluc3RhbmNlLm5vZGUuZGVmYXVsdENoaWxkIGFzIGVjMi5DZm5JbnN0YW5jZTtcbiAgICBjb25zdCBpbnN0YW5jZUxvZ2ljYWxJZCA9IGNmbkluc3RhbmNlLmxvZ2ljYWxJZDtcblxuICAgIGluaXRTY3JpcHQuYWRkQ29tbWFuZHMoXG4gICAgICBcImVjaG8gJ1dhaXRpbmcgZm9yIFJlc3RhdGUgc2VydmVyIGFkbWluIEFQSSB0byBiZWNvbWUgYXZhaWxhYmxlLi4uJ1wiLFxuICAgICAgXCJIRUFMVEhfQ0hFQ0tfVVJMPSdodHRwOi8vbG9jYWxob3N0OjkwNzAvaGVhbHRoJ1wiLFxuICAgICAgXCJNQVhfQVRURU1QVFM9NjBcIixcbiAgICAgIFwiQVRURU1QVD0wXCIsXG4gICAgICBcIlwiLFxuICAgICAgXCJ3aGlsZSBbICRBVFRFTVBUIC1sdCAkTUFYX0FUVEVNUFRTIF07IGRvXCIsXG4gICAgICBcIiAgaWYgY3VybCAtZiAtcyAkSEVBTFRIX0NIRUNLX1VSTCA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuXCIsXG4gICAgICBcIiAgICBlY2hvICdIZWFsdGggY2hlY2sgcGFzc2VkIC0gUmVzdGF0ZSBzZXJ2ZXIgaXMgaGVhbHRoeSdcIixcbiAgICAgIFwiICAgIGJyZWFrXCIsXG4gICAgICBcIiAgZmlcIixcbiAgICAgIFwiICBBVFRFTVBUPSQoKEFUVEVNUFQgKyAxKSlcIixcbiAgICAgICcgIGVjaG8gXCJIZWFsdGggY2hlY2sgYXR0ZW1wdCAkQVRURU1QVC8kTUFYX0FUVEVNUFRTIGZhaWxlZCwgcmV0cnlpbmcgaW4gNSBzZWNvbmRzLi4uXCInLFxuICAgICAgXCIgIHNsZWVwIDVcIixcbiAgICAgIFwiZG9uZVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiaWYgWyAkQVRURU1QVCAtZXEgJE1BWF9BVFRFTVBUUyBdOyB0aGVuXCIsXG4gICAgICAnICBlY2hvIFwiSGVhbHRoIGNoZWNrIGZhaWxlZCBhZnRlciAkTUFYX0FUVEVNUFRTIGF0dGVtcHRzXCInLFxuICAgICAgYCAgL29wdC9hd3MvYmluL2Nmbi1zaWduYWwgLWUgMSAtLXN0YWNrICR7Y2RrLlN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZX0gLS1yZXNvdXJjZSAke2luc3RhbmNlTG9naWNhbElkfSAtLXJlZ2lvbiAke2Nkay5TdGFjay5vZih0aGlzKS5yZWdpb259YCxcbiAgICAgIFwiICBleGl0IDFcIixcbiAgICAgIFwiZmlcIixcbiAgICAgIFwiXCIsXG4gICAgICBgL29wdC9hd3MvYmluL2Nmbi1zaWduYWwgLWUgMCAtLXN0YWNrICR7Y2RrLlN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZX0gLS1yZXNvdXJjZSAke2luc3RhbmNlTG9naWNhbElkfSAtLXJlZ2lvbiAke2Nkay5TdGFjay5vZih0aGlzKS5yZWdpb259YCxcbiAgICApO1xuXG4gICAgLy8gQWRkIENyZWF0aW9uUG9saWN5IHRvIHdhaXQgZm9yIGNmbi1zaWduYWxcbiAgICBjZm5JbnN0YW5jZS5jZm5PcHRpb25zLmNyZWF0aW9uUG9saWN5ID0ge1xuICAgICAgcmVzb3VyY2VTaWduYWw6IHtcbiAgICAgICAgdGltZW91dDogXCJQVDEwTVwiLCAvLyAxMCBtaW51dGVzIHRpbWVvdXRcbiAgICAgICAgY291bnQ6IDEsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICB0aGlzLmluc3RhbmNlID0gcmVzdGF0ZUluc3RhbmNlO1xuXG4gICAgLy8gV2Ugc3RhcnQgdGhlIEFET1QgY29sbGVjdG9yIHJlZ2FyZGxlc3MsIGFuZCBjb250cm9sIHdoZXRoZXIgdHJhY2VzIHdpbGwgYmUgZXhwb3J0ZWQgdG8gWC1SYXkgdXNpbmcgaW5zdGFuY2Ugcm9sZVxuICAgIC8vIHBlcm1pc3Npb25zLiBUaGlzIHdheSBoaXN0b3JpYyB0cmFjZXMgd2lsbCBiZSBidWZmZXJlZCBvbiB0aGUgaG9zdCwgZXZlbiBpZiB0cmFjaW5nIGlzIGRpc2FibGVkIGluaXRpYWxseS5cbiAgICBpZiAocHJvcHMudHJhY2luZyA9PT0gVHJhY2luZ01vZGUuQVdTX1hSQVkpIHtcbiAgICAgIHJlc3RhdGVJbnN0YW5jZS5yb2xlLmFkZE1hbmFnZWRQb2xpY3koaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFwiQVdTWHJheVdyaXRlT25seUFjY2Vzc1wiKSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5ncmVzc1NlY3VyaXR5R3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgXCJJbmdyZXNzU2VjdXJpdHlHcm91cFwiLCB7XG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgZGVzY3JpcHRpb246IFwiUmVzdGF0ZSBJbmdyZXNzIEFDTHNcIixcbiAgICB9KTtcbiAgICByZXN0YXRlSW5zdGFuY2UuYWRkU2VjdXJpdHlHcm91cChpbmdyZXNzU2VjdXJpdHlHcm91cCk7XG4gICAgY29uc3QgYWRtaW5TZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsIFwiQWRtaW5TZWN1cml0eUdyb3VwXCIsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXN0YXRlIEFkbWluIEFDTHNcIixcbiAgICB9KTtcbiAgICByZXN0YXRlSW5zdGFuY2UuYWRkU2VjdXJpdHlHcm91cChhZG1pblNlY3VyaXR5R3JvdXApO1xuXG4gICAgdGhpcy5pbmdyZXNzUG9ydCA9IHRoaXMudGxzRW5hYmxlZCA/IFJFU1RBVEVfVExTX0lOR1JFU1NfUE9SVCA6IFJFU1RBVEVfSU5HUkVTU19QT1JUO1xuICAgIHRoaXMuYWRtaW5Qb3J0ID0gdGhpcy50bHNFbmFibGVkID8gUkVTVEFURV9UTFNfQURNSU5fUE9SVCA6IFJFU1RBVEVfQURNSU5fUE9SVDtcblxuICAgIGluZ3Jlc3NTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgKHByb3BzLnB1YmxpY0luZ3Jlc3MgPz8gZmFsc2UpID8gZWMyLlBlZXIuYW55SXB2NCgpIDogaW5ncmVzc1NlY3VyaXR5R3JvdXAsXG4gICAgICBlYzIuUG9ydC50Y3AodGhpcy5pbmdyZXNzUG9ydCksXG4gICAgICBcIlJlc3RhdGUgaW5ncmVzc1wiLFxuICAgICk7XG4gICAgYWRtaW5TZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKGFkbWluU2VjdXJpdHlHcm91cCwgZWMyLlBvcnQudGNwKHRoaXMuYWRtaW5Qb3J0KSwgXCJSZXN0YXRlIGFkbWluXCIpO1xuXG4gICAgY29uc3QgcHJvdG9jb2wgPSB0aGlzLnRsc0VuYWJsZWQgPyBcImh0dHBzXCIgOiBcImh0dHBcIjtcbiAgICBjb25zdCBob3N0bmFtZSA9XG4gICAgICBwcm9wcy5uZXR3b3JrQ29uZmlndXJhdGlvbj8uc3VibmV0VHlwZSAhPT0gZWMyLlN1Ym5ldFR5cGUuUFVCTElDXG4gICAgICAgID8gYCR7cmVzdGF0ZUluc3RhbmNlLmluc3RhbmNlUHJpdmF0ZURuc05hbWV9YFxuICAgICAgICA6IGAke3Jlc3RhdGVJbnN0YW5jZS5pbnN0YW5jZVB1YmxpY0Ruc05hbWV9YDtcbiAgICB0aGlzLmluZ3Jlc3NVcmwgPSBgJHtwcm90b2NvbH06Ly8ke2hvc3RuYW1lfWAgKyAodGhpcy5pbmdyZXNzUG9ydCA9PT0gNDQzID8gXCJcIiA6IGA6JHt0aGlzLmluZ3Jlc3NQb3J0fWApO1xuICAgIHRoaXMuYWRtaW5VcmwgPSBgJHtwcm90b2NvbH06Ly8ke2hvc3RuYW1lfToke3RoaXMuYWRtaW5Qb3J0fWA7XG5cbiAgICB0aGlzLmluZ3Jlc3NTZWN1cml0eUdyb3VwID0gaW5ncmVzc1NlY3VyaXR5R3JvdXA7XG4gICAgdGhpcy5hZG1pblNlY3VyaXR5R3JvdXAgPSBhZG1pblNlY3VyaXR5R3JvdXA7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzdGF0ZUNvbmZpZyhpZDogc3RyaW5nLCBwcm9wczogU2luZ2xlTm9kZVJlc3RhdGVQcm9wcykge1xuICAgIHJldHVybiAoXG4gICAgICBwcm9wcy5yZXN0YXRlQ29uZmlnT3ZlcnJpZGUgPz9cbiAgICAgIFtcbiAgICAgICAgYHJvbGVzID0gW2AsXG4gICAgICAgIGAgICAgXCJ3b3JrZXJcIixgLFxuICAgICAgICBgICAgIFwiYWRtaW5cIixgLFxuICAgICAgICBgICAgIFwibWV0YWRhdGEtc2VydmVyXCIsYCxcbiAgICAgICAgYCAgICBcImxvZy1zZXJ2ZXJcIixgLFxuICAgICAgICBgICAgIFwiaHR0cC1pbmdyZXNzXCIsYCxcbiAgICAgICAgYF1gLFxuICAgICAgICBgbm9kZS1uYW1lID0gXCJyZXN0YXRlLTBcImAsXG4gICAgICAgIGBjbHVzdGVyLW5hbWUgPSBcIiR7cHJvcHMucmVzdGF0ZUNvbmZpZz8uY2x1c3Rlck5hbWUgPz8gaWR9XCJgLFxuICAgICAgICBgZGVmYXVsdC1udW0tcGFydGl0aW9ucyA9ICR7cHJvcHMucmVzdGF0ZUNvbmZpZz8uYm9vdHN0cmFwTnVtUGFydGl0aW9ucyA/PyA0fWAsXG4gICAgICAgIGByb2Nrc2RiLXRvdGFsLW1lbW9yeS1zaXplID0gXCIke3Byb3BzLnJlc3RhdGVDb25maWc/LnJvY2tzZGI/LnRvdGFsTWVtb3J5U2l6ZT8udG9NZWJpYnl0ZXMoKSA/PyA1MTIuMCArIFwiIE1CXCJ9XCJgLFxuICAgICAgICBgYCxcbiAgICAgICAgYFthZG1pbl1gLFxuICAgICAgICBgYmluZC1hZGRyZXNzID0gXCIke3RoaXMudGxzRW5hYmxlZCA/IFwiMTI3LjAuMC4xXCIgOiBcIjAuMC4wLjBcIn06JHtSRVNUQVRFX0FETUlOX1BPUlR9XCJgLFxuICAgICAgICBgYCxcbiAgICAgICAgYFthZG1pbi5xdWVyeS1lbmdpbmVdYCxcbiAgICAgICAgYG1lbW9yeS1zaXplID0gXCIyNTYuMCBNaUJcImAsXG4gICAgICAgIGBgLFxuICAgICAgICBgW2luZ3Jlc3NdYCxcbiAgICAgICAgYGJpbmQtYWRkcmVzcyA9IFwiJHt0aGlzLnRsc0VuYWJsZWQgPyBcIjEyNy4wLjAuMVwiIDogXCIwLjAuMC4wXCJ9OiR7UkVTVEFURV9JTkdSRVNTX1BPUlR9XCJgLFxuICAgICAgXS5qb2luKFwiXFxuXCIpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtb3VudERhdGFWb2x1bWVTY3JpcHQoKSB7XG4gICAgcmV0dXJuIGBcbmlmIG1vdW50IHwgZ3JlcCAtcXMgJy92YXIvcmVzdGF0ZSc7IHRoZW5cbiAgZWNobyBcIi92YXIvcmVzdGF0ZSBpcyBtb3VudGVkXCJcbmVsc2VcbiAgaWYgWyAtZCAvdmFyL3Jlc3RhdGUgXTsgdGhlblxuICAgIGlmIFsgXCIkKGxzIC1BIC92YXIvcmVzdGF0ZSlcIiBdOyB0aGVuXG4gICAgICBlY2hvIFwiRGF0YSBleGlzdHMgaW4gL3Zhci9yZXN0YXRlIHRoYXQgaXMgbm90IG9uIGRhdGEgdm9sdW1lOyByZWZ1c2luZyB0byBvdmVyd3JpdGUhXCJcbiAgICAgIGV4aXQgMVxuICAgIGZpXG4gIGVsc2VcbiAgICBta2RpciAvdmFyL3Jlc3RhdGVcbiAgZmlcbiAgaWYgZmlsZSAtc0wgJHtEQVRBX0RFVklDRV9OQU1FfSB8IGdyZXAgLXEgJzogZGF0YSQnOyB0aGVuXG4gICAgbWtmcyAtdCB4ZnMgJHtEQVRBX0RFVklDRV9OQU1FfVxuICBmaVxuICBtb3VudCAke0RBVEFfREVWSUNFX05BTUV9IC92YXIvcmVzdGF0ZVxuICBpZiAhIGdyZXAgLXFzICcvdmFyL3Jlc3RhdGUnIC9ldGMvZnN0YWI7IHRoZW5cbiAgICBlY2hvIFwiJHtEQVRBX0RFVklDRV9OQU1FfSAvdmFyL3Jlc3RhdGUgeGZzIGRlZmF1bHRzIDAgMFwiID4+IC9ldGMvZnN0YWJcbiAgICBlY2hvIFwiQWRkZWQgZW50cnkgZm9yICR7REFUQV9ERVZJQ0VfTkFNRX0gdG8gL2V0Yy9mc3RhYlwiXG4gIGVsc2VcbiAgICBlY2hvIFwiRW50cnkgZm9yICR7REFUQV9ERVZJQ0VfTkFNRX0gYWxyZWFkeSBleGlzdHMgaW4gL2V0Yy9mc3RhYlwiXG4gIGZpXG5maVxuYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcHJvcHMgY29uc3RydWN0IHByb3BlcnRpZXNcbiAgICogQHJldHVybnMgbmdpbnggY29uZmlndXJhdGlvbiB0byB1c2UgZm9yIGluZ3Jlc3MgcmV2ZXJzZSBwcm94eSwgZm9ybWF0dGVkIGFzIGEgbXVsdGktbGluZSBzdHJpbmdcbiAgICovXG4gIHByb3RlY3RlZCBpbmdyZXNzTmdpbnhDb25maWcocHJvcHM6IFNpbmdsZU5vZGVSZXN0YXRlUHJvcHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgcHJvcHMuaW5ncmVzc05naW54Q29uZmlnT3ZlcnJpZGUgPz9cbiAgICAgIFtcbiAgICAgICAgXCJzZXJ2ZXIge1wiLFxuICAgICAgICBgICBsaXN0ZW4gJHtSRVNUQVRFX1RMU19JTkdSRVNTX1BPUlR9IHNzbCBodHRwMjtgLFxuICAgICAgICBgICBsaXN0ZW4gWzo6XToke1JFU1RBVEVfVExTX0lOR1JFU1NfUE9SVH0gc3NsIGh0dHAyO2AsXG4gICAgICAgIFwiICBzZXJ2ZXJfbmFtZSBfO1wiLFxuICAgICAgICBcIiAgcm9vdCAvdXNyL3NoYXJlL25naW54L2h0bWw7XCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgICcgIHNzbF9jZXJ0aWZpY2F0ZSBcIi9ldGMvcGtpL3ByaXZhdGUvcmVzdGF0ZS1zZWxmc2lnbmVkLmNydFwiOycsXG4gICAgICAgICcgIHNzbF9jZXJ0aWZpY2F0ZV9rZXkgXCIvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5rZXlcIjsnLFxuICAgICAgICBcIiAgc3NsX3Nlc3Npb25fY2FjaGUgc2hhcmVkOlNTTDoxbTtcIixcbiAgICAgICAgXCIgIHNzbF9zZXNzaW9uX3RpbWVvdXQgMTBtO1wiLFxuICAgICAgICBcIiAgc3NsX2NpcGhlcnMgUFJPRklMRT1TWVNURU07XCIsXG4gICAgICAgIFwiICBzc2xfcHJlZmVyX3NlcnZlcl9jaXBoZXJzIG9uO1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBcIiAgbG9jYXRpb24gLyB7XCIsXG4gICAgICAgIGAgICAgcHJveHlfcGFzcyBodHRwOi8vbG9jYWxob3N0OiR7UkVTVEFURV9JTkdSRVNTX1BPUlR9O2AsXG4gICAgICAgIGAgICAgcHJveHlfcmVhZF90aW1lb3V0ICR7cHJvcHMuaW5ncmVzc1Byb3h5UmVhZFRpbWVvdXQ/LnRvU2Vjb25kcygpID8/IDM2MDB9O2AsXG4gICAgICAgIFwiICB9XCIsXG4gICAgICAgIFwifVwiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBcInNlcnZlciB7XCIsXG4gICAgICAgIGAgIGxpc3RlbiAke1JFU1RBVEVfVExTX0FETUlOX1BPUlR9IHNzbCBodHRwMjtgLFxuICAgICAgICBgICBsaXN0ZW4gWzo6XToke1JFU1RBVEVfVExTX0FETUlOX1BPUlR9IHNzbCBodHRwMjtgLFxuICAgICAgICBcIiAgc2VydmVyX25hbWUgXztcIixcbiAgICAgICAgXCIgIHJvb3QgL3Vzci9zaGFyZS9uZ2lueC9odG1sO1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICAnICBzc2xfY2VydGlmaWNhdGUgXCIvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5jcnRcIjsnLFxuICAgICAgICAnICBzc2xfY2VydGlmaWNhdGVfa2V5IFwiL2V0Yy9wa2kvcHJpdmF0ZS9yZXN0YXRlLXNlbGZzaWduZWQua2V5XCI7JyxcbiAgICAgICAgXCIgIHNzbF9zZXNzaW9uX2NhY2hlIHNoYXJlZDpTU0w6MW07XCIsXG4gICAgICAgIFwiICBzc2xfc2Vzc2lvbl90aW1lb3V0IDEwbTtcIixcbiAgICAgICAgXCIgIHNzbF9jaXBoZXJzIFBST0ZJTEU9U1lTVEVNO1wiLFxuICAgICAgICBcIiAgc3NsX3ByZWZlcl9zZXJ2ZXJfY2lwaGVycyBvbjtcIixcbiAgICAgICAgXCJcIixcbiAgICAgICAgXCIgIGxvY2F0aW9uIC8ge1wiLFxuICAgICAgICBgICAgIHByb3h5X3Bhc3MgaHR0cDovL2xvY2FsaG9zdDoke1JFU1RBVEVfQURNSU5fUE9SVH07YCxcbiAgICAgICAgXCIgIH1cIixcbiAgICAgICAgXCJ9XCIsXG4gICAgICBdLmpvaW4oXCJcXG5cIilcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -61,7 +61,7 @@ type RegisterDeploymentResponse = {
|
|
|
61
61
|
services: { name: string; revision: number; public: boolean }[];
|
|
62
62
|
};
|
|
63
63
|
|
|
64
|
-
const MAX_HEALTH_CHECK_ATTEMPTS =
|
|
64
|
+
const MAX_HEALTH_CHECK_ATTEMPTS = 10; // This is intentionally quite long to allow some time for first-run EC2 and Docker boot up
|
|
65
65
|
const MAX_REGISTRATION_ATTEMPTS = 3;
|
|
66
66
|
|
|
67
67
|
const DEPLOYMENTS_PATH = "deployments";
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@restatedev/restate-cdk",
|
|
3
3
|
"description": "Restate.dev CDK constructs",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.5.0",
|
|
5
5
|
"author": "Restate Developers",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"email": "code@restate.dev",
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@aws-sdk/client-secrets-manager": "^3.374.0",
|
|
30
|
-
"@aws-sdk/node-http-handler": "3.374.0",
|
|
30
|
+
"@aws-sdk/node-http-handler": "^3.374.0",
|
|
31
31
|
"@aws-sdk/protocol-http": "^3.374.0",
|
|
32
|
-
"@restatedev/restate-sdk": "^1.
|
|
32
|
+
"@restatedev/restate-sdk": "^1.9.0",
|
|
33
33
|
"@types/aws-lambda": "^8.10.145",
|
|
34
34
|
"@types/jest": "^29.5.14",
|
|
35
35
|
"@types/node": "^22.9.0",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"source-map-support": "^0.5.21",
|
|
42
42
|
"ts-jest": "^29.2.5",
|
|
43
43
|
"tsx": "^4.19.2",
|
|
44
|
-
"typescript": "^5.
|
|
44
|
+
"typescript": "^5.9.0",
|
|
45
45
|
"zx": "^8.3.2"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
@@ -656,8 +656,10 @@ exports[`Restate constructs Create a self-hosted Restate environment deployed on
|
|
|
656
656
|
|
|
657
657
|
set -euf -o pipefail
|
|
658
658
|
|
|
659
|
+
yum install -y aws-cfn-bootstrap
|
|
660
|
+
|
|
659
661
|
yum install -y npm && npm install -gq
|
|
660
|
-
@restatedev/restate@1.
|
|
662
|
+
@restatedev/restate@1.5 @restatedev/restatectl@1.5
|
|
661
663
|
|
|
662
664
|
yum install -y docker
|
|
663
665
|
|
|
@@ -742,13 +744,104 @@ exports[`Restate constructs Create a self-hosted Restate environment deployed on
|
|
|
742
744
|
RESTATE_TRACING_ENDPOINT="http://localhost:4317"
|
|
743
745
|
--log-driver=awslogs --log-opt awslogs-group=
|
|
744
746
|
- Ref: RestateLogsFD86ECAE
|
|
745
|
-
-
|
|
747
|
+
- >2-
|
|
748
|
+
docker.restate.dev/restatedev/restate:1.5 --config-file /etc/restate/config.toml
|
|
749
|
+
yum install -y nginx
|
|
750
|
+
|
|
751
|
+
mkdir -p /etc/pki/private
|
|
752
|
+
|
|
753
|
+
openssl req -new -x509 -nodes -sha256 -days 365
|
|
754
|
+
-extensions v3_ca -subj
|
|
755
|
+
'/C=DE/ST=Berlin/L=Berlin/O=restate.dev/OU=demo/CN=restate.example.com'
|
|
756
|
+
-newkey rsa:2048 -keyout
|
|
757
|
+
/etc/pki/private/restate-selfsigned.key -out
|
|
758
|
+
/etc/pki/private/restate-selfsigned.crt
|
|
759
|
+
|
|
760
|
+
cat << EOF > /etc/nginx/conf.d/restate-ingress.conf
|
|
761
|
+
|
|
762
|
+
server {
|
|
763
|
+
listen 443 ssl http2;
|
|
764
|
+
listen [::]:443 ssl http2;
|
|
765
|
+
server_name _;
|
|
766
|
+
root /usr/share/nginx/html;
|
|
767
|
+
|
|
768
|
+
ssl_certificate "/etc/pki/private/restate-selfsigned.crt";
|
|
769
|
+
ssl_certificate_key "/etc/pki/private/restate-selfsigned.key";
|
|
770
|
+
ssl_session_cache shared:SSL:1m;
|
|
771
|
+
ssl_session_timeout 10m;
|
|
772
|
+
ssl_ciphers PROFILE=SYSTEM;
|
|
773
|
+
ssl_prefer_server_ciphers on;
|
|
774
|
+
|
|
775
|
+
location / {
|
|
776
|
+
proxy_pass http://localhost:8080;
|
|
777
|
+
proxy_read_timeout 3600;
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
|
|
782
|
+
server {
|
|
783
|
+
listen 9073 ssl http2;
|
|
784
|
+
listen [::]:9073 ssl http2;
|
|
785
|
+
server_name _;
|
|
786
|
+
root /usr/share/nginx/html;
|
|
787
|
+
|
|
788
|
+
ssl_certificate "/etc/pki/private/restate-selfsigned.crt";
|
|
789
|
+
ssl_certificate_key "/etc/pki/private/restate-selfsigned.key";
|
|
790
|
+
ssl_session_cache shared:SSL:1m;
|
|
791
|
+
ssl_session_timeout 10m;
|
|
792
|
+
ssl_ciphers PROFILE=SYSTEM;
|
|
793
|
+
ssl_prefer_server_ciphers on;
|
|
794
|
+
|
|
795
|
+
location / {
|
|
796
|
+
proxy_pass http://localhost:9070;
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
EOF
|
|
801
|
+
|
|
802
|
+
systemctl start nginx
|
|
803
|
+
|
|
804
|
+
echo 'Waiting for Restate server admin API to become
|
|
805
|
+
available...'
|
|
806
|
+
|
|
807
|
+
HEALTH_CHECK_URL='http://localhost:9070/health'
|
|
808
|
+
|
|
809
|
+
MAX_ATTEMPTS=60
|
|
810
|
+
|
|
811
|
+
ATTEMPT=0
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
|
|
815
|
+
if curl -f -s $HEALTH_CHECK_URL > /dev/null 2>&1; then
|
|
816
|
+
echo 'Health check passed - Restate server is healthy'
|
|
817
|
+
break
|
|
818
|
+
fi
|
|
819
|
+
ATTEMPT=$((ATTEMPT + 1))
|
|
820
|
+
echo "Health check attempt $ATTEMPT/$MAX_ATTEMPTS failed, retrying in 5 seconds..."
|
|
821
|
+
sleep 5
|
|
822
|
+
done
|
|
823
|
+
|
|
824
|
+
|
|
825
|
+
if [ $ATTEMPT -eq $MAX_ATTEMPTS ]; then
|
|
826
|
+
echo "Health check failed after $MAX_ATTEMPTS attempts"
|
|
827
|
+
/opt/aws/bin/cfn-signal -e 1 --stack RestateSelfHostedServerEc2Stack --resource RestateHost1AC4F9D1 --region region
|
|
828
|
+
exit 1
|
|
829
|
+
fi
|
|
830
|
+
|
|
831
|
+
|
|
832
|
+
/opt/aws/bin/cfn-signal -e 0 --stack
|
|
833
|
+
RestateSelfHostedServerEc2Stack --resource
|
|
834
|
+
RestateHost1AC4F9D1 --region region
|
|
746
835
|
- |
|
|
747
836
|
|
|
748
837
|
--+AWS+CDK+User+Data+Separator==--
|
|
749
838
|
DependsOn:
|
|
750
839
|
- RestateInstanceRoleDefaultPolicyD1D39538
|
|
751
840
|
- RestateInstanceRoleACC59A6F
|
|
841
|
+
CreationPolicy:
|
|
842
|
+
ResourceSignal:
|
|
843
|
+
Timeout: PT10M
|
|
844
|
+
Count: 1
|
|
752
845
|
RestateIngressSecurityGroupAF84F229:
|
|
753
846
|
Type: 'AWS::EC2::SecurityGroup'
|
|
754
847
|
Properties:
|
|
@@ -953,8 +1046,10 @@ exports[`Restate constructs Create a self-hosted Restate environment deployed on
|
|
|
953
1046
|
|
|
954
1047
|
set -euf -o pipefail
|
|
955
1048
|
|
|
1049
|
+
yum install -y aws-cfn-bootstrap
|
|
1050
|
+
|
|
956
1051
|
yum install -y npm && npm install -gq
|
|
957
|
-
@restatedev/restate@1.
|
|
1052
|
+
@restatedev/restate@1.5 @restatedev/restatectl@1.5
|
|
958
1053
|
|
|
959
1054
|
yum install -y docker
|
|
960
1055
|
|
|
@@ -1040,13 +1135,49 @@ exports[`Restate constructs Create a self-hosted Restate environment deployed on
|
|
|
1040
1135
|
RESTATE_INGRESS__ADVERTISED_INGRESS_ENDPOINT="http://restate-ingress"
|
|
1041
1136
|
--log-driver=awslogs --log-opt awslogs-group=
|
|
1042
1137
|
- Ref: RestateLogsFD86ECAE
|
|
1043
|
-
-
|
|
1138
|
+
- >2-
|
|
1139
|
+
docker.restate.dev/restatedev/restate:custom-version --config-file /etc/restate/config.toml
|
|
1140
|
+
echo 'Waiting for Restate server admin API to become
|
|
1141
|
+
available...'
|
|
1142
|
+
|
|
1143
|
+
HEALTH_CHECK_URL='http://localhost:9070/health'
|
|
1144
|
+
|
|
1145
|
+
MAX_ATTEMPTS=60
|
|
1146
|
+
|
|
1147
|
+
ATTEMPT=0
|
|
1148
|
+
|
|
1149
|
+
|
|
1150
|
+
while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
|
|
1151
|
+
if curl -f -s $HEALTH_CHECK_URL > /dev/null 2>&1; then
|
|
1152
|
+
echo 'Health check passed - Restate server is healthy'
|
|
1153
|
+
break
|
|
1154
|
+
fi
|
|
1155
|
+
ATTEMPT=$((ATTEMPT + 1))
|
|
1156
|
+
echo "Health check attempt $ATTEMPT/$MAX_ATTEMPTS failed, retrying in 5 seconds..."
|
|
1157
|
+
sleep 5
|
|
1158
|
+
done
|
|
1159
|
+
|
|
1160
|
+
|
|
1161
|
+
if [ $ATTEMPT -eq $MAX_ATTEMPTS ]; then
|
|
1162
|
+
echo "Health check failed after $MAX_ATTEMPTS attempts"
|
|
1163
|
+
/opt/aws/bin/cfn-signal -e 1 --stack RestateSelfHostedServerEc2Stack --resource RestateHost1AC4F9D1 --region region
|
|
1164
|
+
exit 1
|
|
1165
|
+
fi
|
|
1166
|
+
|
|
1167
|
+
|
|
1168
|
+
/opt/aws/bin/cfn-signal -e 0 --stack
|
|
1169
|
+
RestateSelfHostedServerEc2Stack --resource
|
|
1170
|
+
RestateHost1AC4F9D1 --region region
|
|
1044
1171
|
- |
|
|
1045
1172
|
|
|
1046
1173
|
--+AWS+CDK+User+Data+Separator==--
|
|
1047
1174
|
DependsOn:
|
|
1048
1175
|
- RestateInstanceRoleDefaultPolicyD1D39538
|
|
1049
1176
|
- RestateInstanceRoleACC59A6F
|
|
1177
|
+
CreationPolicy:
|
|
1178
|
+
ResourceSignal:
|
|
1179
|
+
Timeout: PT10M
|
|
1180
|
+
Count: 1
|
|
1050
1181
|
RestateIngressSecurityGroupAF84F229:
|
|
1051
1182
|
Type: 'AWS::EC2::SecurityGroup'
|
|
1052
1183
|
Properties:
|
|
@@ -1240,7 +1371,7 @@ exports[`Restate constructs Deploy a Lambda service handler to Restate Cloud env
|
|
|
1240
1371
|
- ServiceDeployerEventHandlerServiceRoleF133584F
|
|
1241
1372
|
- Arn
|
|
1242
1373
|
Runtime: nodejs22.x
|
|
1243
|
-
Timeout:
|
|
1374
|
+
Timeout: 300
|
|
1244
1375
|
DependsOn:
|
|
1245
1376
|
- ServiceDeployerEventHandlerServiceRoleDefaultPolicyFE2DC3C9
|
|
1246
1377
|
- ServiceDeployerEventHandlerServiceRoleF133584F
|
|
@@ -1350,10 +1481,14 @@ exports[`Restate constructs Deploy a Lambda service handler to existing Restate
|
|
|
1350
1481
|
'Fn::GetAtt':
|
|
1351
1482
|
- RestateServiceHandlerServiceRole07B26D05
|
|
1352
1483
|
- Arn
|
|
1353
|
-
Runtime:
|
|
1484
|
+
Runtime:
|
|
1485
|
+
'Fn::FindInMap':
|
|
1486
|
+
- LatestNodeRuntimeMap
|
|
1487
|
+
- Ref: 'AWS::Region'
|
|
1488
|
+
- value
|
|
1354
1489
|
DependsOn:
|
|
1355
1490
|
- RestateServiceHandlerServiceRole07B26D05
|
|
1356
|
-
|
|
1491
|
+
RestateServiceHandlerCurrentVersion40030E676e655a122aef159925e1e52d1335bae5:
|
|
1357
1492
|
Type: 'AWS::Lambda::Version'
|
|
1358
1493
|
Properties:
|
|
1359
1494
|
FunctionName:
|
|
@@ -1372,7 +1507,7 @@ exports[`Restate constructs Deploy a Lambda service handler to existing Restate
|
|
|
1372
1507
|
Ref: RestateApiKey6463672F
|
|
1373
1508
|
serviceLambdaArn:
|
|
1374
1509
|
Ref: >-
|
|
1375
|
-
|
|
1510
|
+
RestateServiceHandlerCurrentVersion40030E676e655a122aef159925e1e52d1335bae5
|
|
1376
1511
|
invokeRoleArn:
|
|
1377
1512
|
'Fn::GetAtt':
|
|
1378
1513
|
- InvokerRole4DB2757E
|
|
@@ -1428,7 +1563,7 @@ exports[`Restate constructs Deploy a Lambda service handler to existing Restate
|
|
|
1428
1563
|
- ServiceDeployerEventHandlerServiceRoleF133584F
|
|
1429
1564
|
- Arn
|
|
1430
1565
|
Runtime: nodejs22.x
|
|
1431
|
-
Timeout:
|
|
1566
|
+
Timeout: 300
|
|
1432
1567
|
DependsOn:
|
|
1433
1568
|
- ServiceDeployerEventHandlerServiceRoleDefaultPolicyFE2DC3C9
|
|
1434
1569
|
- ServiceDeployerEventHandlerServiceRoleF133584F
|
|
@@ -1464,6 +1599,100 @@ exports[`Restate constructs Deploy a Lambda service handler to existing Restate
|
|
|
1464
1599
|
PolicyName: ServiceDeployerInvocationPolicyD09B639D
|
|
1465
1600
|
Roles:
|
|
1466
1601
|
- Ref: InvokerRole4DB2757E
|
|
1602
|
+
Mappings:
|
|
1603
|
+
LatestNodeRuntimeMap:
|
|
1604
|
+
af-south-1:
|
|
1605
|
+
value: nodejs22.x
|
|
1606
|
+
ap-east-1:
|
|
1607
|
+
value: nodejs22.x
|
|
1608
|
+
ap-east-2:
|
|
1609
|
+
value: nodejs22.x
|
|
1610
|
+
ap-northeast-1:
|
|
1611
|
+
value: nodejs22.x
|
|
1612
|
+
ap-northeast-2:
|
|
1613
|
+
value: nodejs22.x
|
|
1614
|
+
ap-northeast-3:
|
|
1615
|
+
value: nodejs22.x
|
|
1616
|
+
ap-south-1:
|
|
1617
|
+
value: nodejs22.x
|
|
1618
|
+
ap-south-2:
|
|
1619
|
+
value: nodejs22.x
|
|
1620
|
+
ap-southeast-1:
|
|
1621
|
+
value: nodejs22.x
|
|
1622
|
+
ap-southeast-2:
|
|
1623
|
+
value: nodejs22.x
|
|
1624
|
+
ap-southeast-3:
|
|
1625
|
+
value: nodejs22.x
|
|
1626
|
+
ap-southeast-4:
|
|
1627
|
+
value: nodejs22.x
|
|
1628
|
+
ap-southeast-5:
|
|
1629
|
+
value: nodejs22.x
|
|
1630
|
+
ap-southeast-6:
|
|
1631
|
+
value: nodejs22.x
|
|
1632
|
+
ap-southeast-7:
|
|
1633
|
+
value: nodejs22.x
|
|
1634
|
+
ca-central-1:
|
|
1635
|
+
value: nodejs22.x
|
|
1636
|
+
ca-west-1:
|
|
1637
|
+
value: nodejs22.x
|
|
1638
|
+
cn-north-1:
|
|
1639
|
+
value: nodejs22.x
|
|
1640
|
+
cn-northwest-1:
|
|
1641
|
+
value: nodejs22.x
|
|
1642
|
+
eu-central-1:
|
|
1643
|
+
value: nodejs22.x
|
|
1644
|
+
eu-central-2:
|
|
1645
|
+
value: nodejs22.x
|
|
1646
|
+
eu-isoe-west-1:
|
|
1647
|
+
value: nodejs22.x
|
|
1648
|
+
eu-north-1:
|
|
1649
|
+
value: nodejs22.x
|
|
1650
|
+
eu-south-1:
|
|
1651
|
+
value: nodejs22.x
|
|
1652
|
+
eu-south-2:
|
|
1653
|
+
value: nodejs22.x
|
|
1654
|
+
eu-west-1:
|
|
1655
|
+
value: nodejs22.x
|
|
1656
|
+
eu-west-2:
|
|
1657
|
+
value: nodejs22.x
|
|
1658
|
+
eu-west-3:
|
|
1659
|
+
value: nodejs22.x
|
|
1660
|
+
eusc-de-east-1:
|
|
1661
|
+
value: nodejs22.x
|
|
1662
|
+
il-central-1:
|
|
1663
|
+
value: nodejs22.x
|
|
1664
|
+
me-central-1:
|
|
1665
|
+
value: nodejs22.x
|
|
1666
|
+
me-south-1:
|
|
1667
|
+
value: nodejs22.x
|
|
1668
|
+
mx-central-1:
|
|
1669
|
+
value: nodejs22.x
|
|
1670
|
+
sa-east-1:
|
|
1671
|
+
value: nodejs22.x
|
|
1672
|
+
us-east-1:
|
|
1673
|
+
value: nodejs22.x
|
|
1674
|
+
us-east-2:
|
|
1675
|
+
value: nodejs22.x
|
|
1676
|
+
us-gov-east-1:
|
|
1677
|
+
value: nodejs22.x
|
|
1678
|
+
us-gov-west-1:
|
|
1679
|
+
value: nodejs22.x
|
|
1680
|
+
us-iso-east-1:
|
|
1681
|
+
value: nodejs22.x
|
|
1682
|
+
us-iso-west-1:
|
|
1683
|
+
value: nodejs22.x
|
|
1684
|
+
us-isob-east-1:
|
|
1685
|
+
value: nodejs18.x
|
|
1686
|
+
us-isob-west-1:
|
|
1687
|
+
value: nodejs18.x
|
|
1688
|
+
us-isof-east-1:
|
|
1689
|
+
value: nodejs22.x
|
|
1690
|
+
us-isof-south-1:
|
|
1691
|
+
value: nodejs22.x
|
|
1692
|
+
us-west-1:
|
|
1693
|
+
value: nodejs22.x
|
|
1694
|
+
us-west-2:
|
|
1695
|
+
value: nodejs22.x
|
|
1467
1696
|
"
|
|
1468
1697
|
`;
|
|
1469
1698
|
|
|
@@ -1638,7 +1867,7 @@ exports[`Restate constructs Restate Cloud Environment construct with role refere
|
|
|
1638
1867
|
- ServiceDeployerEventHandlerServiceRoleF133584F
|
|
1639
1868
|
- Arn
|
|
1640
1869
|
Runtime: nodejs22.x
|
|
1641
|
-
Timeout:
|
|
1870
|
+
Timeout: 300
|
|
1642
1871
|
DependsOn:
|
|
1643
1872
|
- ServiceDeployerEventHandlerServiceRoleDefaultPolicyFE2DC3C9
|
|
1644
1873
|
- ServiceDeployerEventHandlerServiceRoleF133584F
|
|
@@ -1702,7 +1931,7 @@ exports[`Restate constructs Service Deployer overrides 1`] = `
|
|
|
1702
1931
|
- arm64
|
|
1703
1932
|
Code:
|
|
1704
1933
|
S3Bucket: cdk-hnb659fds-assets-account-id-region
|
|
1705
|
-
S3Key:
|
|
1934
|
+
S3Key: 69988508d696930c762ee6a13b1279f74a5c1188c197c47f989f59ddcc6957f8.zip
|
|
1706
1935
|
Description: Restate custom registration handler
|
|
1707
1936
|
Handler: entrypoint.handler
|
|
1708
1937
|
MemorySize: 128
|