UNPKG

@smither/aws-user-pool-client-settings

Version:

aws-cdk custom resource to allow setting details for user pool client and integrations.

114 lines 18.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const cfn = require("@aws-cdk/aws-cloudformation"); const lambda = require("@aws-cdk/aws-lambda"); const cdk = require("@aws-cdk/core"); const iam = require("@aws-cdk/aws-iam"); class UserPoolClientSettings extends cdk.Resource { constructor(scope, id, props) { super(scope, id); const role = new iam.Role(this, "userPoolClientIntegration-role", { assumedBy: new iam.ServicePrincipal("lambda.amazonaws.com"), inlinePolicies: { WriteCloudWatchLogs: new iam.PolicyDocument({ statements: [ new iam.PolicyStatement({ actions: [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], resources: ["arn:aws:logs:*:*:*"] }) ] }), UpdateUserPoolClient: new iam.PolicyDocument({ statements: [ new iam.PolicyStatement({ actions: ["cognito-idp:UpdateUserPoolClient"], resources: ["arn:aws:cognito-idp:*:*:userpool/*"] }) ] }), ManageUserPoolDomain: new iam.PolicyDocument({ statements: [ new iam.PolicyStatement({ actions: [ "cognito-idp:CreateUserPoolDomain", "cognito-idp:DeleteUserPoolDomain", "cognito-idp:DescribeUserPoolDomain" ], resources: ["arn:aws:cognito-idp:*:*:userpool/*"] }), new iam.PolicyStatement({ actions: [ "cognito-idp:DescribeUserPoolDomain" ], resources: ["*"] }) ] }), InvokeLambdaFunction: new iam.PolicyDocument({ statements: [ new iam.PolicyStatement({ actions: ["lambda:InvokeFunction"], resources: ["arn:aws:lambda:*:*:function:*"] }) ] }) } }); const lambdaProps = { domain: props.domain, userPoolId: props.userPool.userPoolId, userPoolClientId: props.userPoolClient.userPoolClientId, supportedIdentityProviders: props.supportedIdentityProviders.join(","), callbackURLs: props.callbackURLs.join(","), logoutURLs: props.logoutURLs.join(","), allowedOAuthFlowsUserPoolClient: props.allowedOAuthFlowsUserPoolClient.toString(), allowedOAuthFlows: props.allowedOAuthFlows.join(","), allowedOAuthScopes: props.allowedOAuthScopes.join(",") }; const sendResponse = new lambda.Function(this, "userPoolClientIntegration-sendResponseLambda", { code: new lambda.AssetCode("./node_modules/@smither/aws-user-pool-client-settings/lib/CloudFormationSendResponse"), functionName: `${this.stack.stackName}-CloudFormationSendResponse`, handler: "index.handler", timeout: cdk.Duration.seconds(300), runtime: lambda.Runtime.NODEJS_10_X, role: role, environment: lambdaProps }); const cognitoUserPoolClientSettings = new cfn.CustomResource(this, "userPoolClientIntegration-cognitoUserPoolClientSettings", { provider: cfn.CustomResourceProvider.lambda(new lambda.SingletonFunction(this, "userPoolClientIntegration-cognitoUserPoolClientSettingsLambda", { code: new lambda.AssetCode("./node_modules/@smither/aws-user-pool-client-settings/lib/UserPoolIntegration"), handler: "ClientSettings.handler", timeout: cdk.Duration.seconds(300), runtime: lambda.Runtime.NODEJS_10_X, role: role, uuid: "4051d446-69bf-4dc6-90a9-d28135a7ca3b" })), properties: lambdaProps }); cognitoUserPoolClientSettings.node.addDependency(sendResponse); const cognitoUserPoolDomain = new cfn.CustomResource(this, "userPoolClientIntegration-cognitoUserPoolDomain", { provider: cfn.CustomResourceProvider.lambda(new lambda.SingletonFunction(this, "userPoolClientIntegration-cognitoUserPoolDomainLambda", { code: new lambda.AssetCode("./node_modules/@smither/aws-user-pool-client-settings/lib/UserPoolIntegration"), handler: "Domain.handler", timeout: cdk.Duration.seconds(300), runtime: lambda.Runtime.NODEJS_10_X, role: role, environment: lambdaProps, uuid: "74fa06ef-a6c6-47c0-94b2-4ef30ca39851" })), properties: lambdaProps }); this.domain = `https://${props.domain}.auth.${this.stack.region}.amazoncognito.com`; cognitoUserPoolDomain.node.addDependency(sendResponse); } } exports.UserPoolClientSettings = UserPoolClientSettings; var IdentityProviders; (function (IdentityProviders) { IdentityProviders["COGNITO"] = "COGNITO"; })(IdentityProviders = exports.IdentityProviders || (exports.IdentityProviders = {})); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlclBvb2xDbGllbnRTZXR0aW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VyUG9vbENsaWVudFNldHRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBQW9EO0FBQ3BELDhDQUErQztBQUMvQyxxQ0FBc0M7QUFDdEMsd0NBQXlDO0FBR3pDLE1BQWEsc0JBQXVCLFNBQVEsR0FBRyxDQUFDLFFBQVE7SUFHdEQsWUFDRSxLQUFvQixFQUNwQixFQUFVLEVBQ1YsS0FBa0M7UUFFbEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGdDQUFnQyxFQUFFO1lBQ2hFLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQztZQUMzRCxjQUFjLEVBQUU7Z0JBQ2QsbUJBQW1CLEVBQUUsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDO29CQUMxQyxVQUFVLEVBQUU7d0JBQ1YsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDOzRCQUN0QixPQUFPLEVBQUU7Z0NBQ1AscUJBQXFCO2dDQUNyQixzQkFBc0I7Z0NBQ3RCLG1CQUFtQjs2QkFDcEI7NEJBQ0QsU0FBUyxFQUFFLENBQUMsb0JBQW9CLENBQUM7eUJBQ2xDLENBQUM7cUJBQ0g7aUJBQ0YsQ0FBQztnQkFDRixvQkFBb0IsRUFBRSxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUM7b0JBQzNDLFVBQVUsRUFBRTt3QkFDVixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7NEJBQ3RCLE9BQU8sRUFBRSxDQUFDLGtDQUFrQyxDQUFDOzRCQUM3QyxTQUFTLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQzt5QkFDbEQsQ0FBQztxQkFDSDtpQkFDRixDQUFDO2dCQUNGLG9CQUFvQixFQUFFLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQztvQkFDM0Ms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YUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRS9ELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUNsRCxJQUFJLEVBQ0osaURBQWlELEVBQ2pEO1lBQ0UsUUFBUSxFQUFFLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQ3pDLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUMxQixJQUFJLEVBQ0osdURBQXVELEVBQ3ZEO2dCQUNFLElBQUksRUFBRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQ3hCLCtFQUErRSxDQUNoRjtnQkFDRCxPQUFPLEVBQUUsZ0JBQWdCO2dCQUN6QixPQUFPLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUNsQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO2dCQUNuQyxJQUFJLEVBQUUsSUFBSTtnQkFDVixXQUFXLEVBQUUsV0FBOEM7Z0JBQzNELElBQUksRUFBRSxzQ0FBc0M7YUFDN0MsQ0FDRixDQUNGO1lBQ0QsVUFBVSxFQUFFLFdBQVc7U0FDeEIsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBQyxXQUFXLEtBQUssQ0FBQyxNQUFNLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLG9CQUFvQixDQUFBO1FBQ2pGLHFCQUFxQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGO0FBNUlELHdEQTRJQztBQWFELElBQVksaUJBRVg7QUFGRCxXQUFZLGlCQUFpQjtJQUMzQix3Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBRlcsaUJBQWlCLEdBQWpCLHlCQUFpQixLQUFqQix5QkFBaUIsUUFFNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2ZuID0gcmVxdWlyZShcIkBhd3MtY2RrL2F3cy1jbG91ZGZvcm1hdGlvblwiKTtcbmltcG9ydCBsYW1iZGEgPSByZXF1aXJlKFwiQGF3cy1jZGsvYXdzLWxhbWJkYVwiKTtcbmltcG9ydCBjZGsgPSByZXF1aXJlKFwiQGF3cy1jZGsvY29yZVwiKTtcbmltcG9ydCBpYW0gPSByZXF1aXJlKFwiQGF3cy1jZGsvYXdzLWlhbVwiKTtcbmltcG9ydCB7IFVzZXJQb29sLCBVc2VyUG9vbENsaWVudCB9IGZyb20gXCJAYXdzLWNkay9hd3MtY29nbml0b1wiO1xuXG5leHBvcnQgY2xhc3MgVXNlclBvb2xDbGllbnRTZXR0aW5ncyBleHRlbmRzIGNkay5SZXNvdXJjZSB7XG4gIHB1YmxpYyByZWFkb25seSByZXNwb25zZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZG9tYWluOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBjZGsuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFVzZXJQb29sQ2xpZW50U2V0dGluZ3NQcm9wc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IHJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgXCJ1c2VyUG9vbENsaWVudEludGVncmF0aW9uLXJvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXCJsYW1iZGEuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgIFdyaXRlQ2xvdWRXYXRjaExvZ3M6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgIFwibG9nczpDcmVhdGVMb2dHcm91cFwiLFxuICAgICAgICAgICAgICAgIFwibG9nczpDcmVhdGVMb2dTdHJlYW1cIixcbiAgICAgICAgICAgICAgICBcImxvZ3M6UHV0TG9nRXZlbnRzXCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCJhcm46YXdzOmxvZ3M6KjoqOipcIl1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KSxcbiAgICAgICAgVXBkYXRlVXNlclBvb2xDbGllbnQ6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wiY29nbml0by1pZHA6VXBkYXRlVXNlclBvb2xDbGllbnRcIl0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1wiYXJuOmF3czpjb2duaXRvLWlkcDoqOio6dXNlcnBvb2wvKlwiXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH0pLFxuICAgICAgICBNYW5hZ2VVc2VyUG9vbERvbWFpbjogbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJjb2duaXRvLWlkcDpDcmVhdGVVc2VyUG9vbERvbWFpblwiLFxuICAgICAgICAgICAgICAgIFwiY29nbml0by1pZHA6RGVsZXRlVXNlclBvb2xEb21haW5cIixcbiAgICAgICAgICAgICAgICBcImNvZ25pdG8taWRwOkRlc2NyaWJlVXNlclBvb2xEb21haW5cIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcImFybjphd3M6Y29nbml0by1pZHA6KjoqOnVzZXJwb29sLypcIl1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJjb2duaXRvLWlkcDpEZXNjcmliZVVzZXJQb29sRG9tYWluXCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIEludm9rZUxhbWJkYUZ1bmN0aW9uOiBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcImxhbWJkYTpJbnZva2VGdW5jdGlvblwiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCJhcm46YXdzOmxhbWJkYToqOio6ZnVuY3Rpb246KlwiXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgbGFtYmRhUHJvcHM6IExhbWJkYVByb3BzID0ge1xuICAgICAgZG9tYWluOiBwcm9wcy5kb21haW4sXG4gICAgICB1c2VyUG9vbElkOiBwcm9wcy51c2VyUG9vbC51c2VyUG9vbElkLFxuICAgICAgdXNlclBvb2xDbGllbnRJZDogcHJvcHMudXNlclBvb2xDbGllbnQudXNlclBvb2xDbGllbnRJZCxcbiAgICAgIHN1cHBvcnRlZElkZW50aXR5UHJvdmlkZXJzOiBwcm9wcy5zdXBwb3J0ZWRJZGVudGl0eVByb3ZpZGVycy5qb2luKFwiLFwiKSxcbiAgICAgIGNhbGxiYWNrVVJMczogcHJvcHMuY2FsbGJhY2tVUkxzLmpvaW4oXCIsXCIpLFxuICAgICAgbG9nb3V0VVJMczogcHJvcHMubG9nb3V0VVJMcy5qb2luKFwiLFwiKSxcbiAgICAgIGFsbG93ZWRPQXV0aEZsb3dzVXNlclBvb2xDbGllbnQ6IHByb3BzLmFsbG93ZWRPQXV0aEZsb3dzVXNlclBvb2xDbGllbnQudG9TdHJpbmcoKSxcbiAgICAgIGFsbG93ZWRPQXV0aEZsb3dzOiBwcm9wcy5hbGxvd2VkT0F1dGhGbG93cy5qb2luKFwiLFwiKSxcbiAgICAgIGFsbG93ZWRPQXV0aFNjb3BlczogcHJvcHMuYWxsb3dlZE9BdXRoU2NvcGVzLmpvaW4oXCIsXCIpXG4gICAgfTtcblxuICAgIGNvbnN0IHNlbmRSZXNwb25zZSA9IG5ldyBsYW1iZGEuRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJ1c2VyUG9vbENsaWVudEludGVncmF0aW9uLXNlbmRSZXNwb25zZUxhbWJkYVwiLFxuICAgICAge1xuICAgICAgICBjb2RlOiBuZXcgbGFtYmRhLkFzc2V0Q29kZShcbiAgICAgICAgICBcIi4vbm9kZV9tb2R1bGVzL0BzbWl0aGVyL2F3cy11c2VyLXBvb2wtY2xpZW50LXNldHRpbmdzL2xpYi9DbG91ZEZvcm1hdGlvblNlbmRSZXNwb25zZVwiXG4gICAgICAgICksXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogYCR7dGhpcy5zdGFjay5zdGFja05hbWV9LUNsb3VkRm9ybWF0aW9uU2VuZFJlc3BvbnNlYCxcbiAgICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xMF9YLFxuICAgICAgICByb2xlOiByb2xlLFxuICAgICAgICBlbnZpcm9ubWVudDogbGFtYmRhUHJvcHMgYXMgT2JqZWN0IGFzIHtba2V5OnN0cmluZ106c3RyaW5nfVxuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBjb2duaXRvVXNlclBvb2xDbGllbnRTZXR0aW5ncyA9IG5ldyBjZm4uQ3VzdG9tUmVzb3VyY2UoXG4gICAgICB0aGlzLFxuICAgICAgXCJ1c2VyUG9vbENsaWVudEludGVncmF0aW9uLWNvZ25pdG9Vc2VyUG9vbENsaWVudFNldHRpbmdzXCIsXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGVyOiBjZm4uQ3VzdG9tUmVzb3VyY2VQcm92aWRlci5sYW1iZGEoXG4gICAgICAgICAgbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbihcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBcInVzZXJQb29sQ2xpZW50SW50ZWdyYXRpb24tY29nbml0b1VzZXJQb29sQ2xpZW50U2V0dGluZ3NMYW1iZGFcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29kZTogbmV3IGxhbWJkYS5Bc3NldENvZGUoXG4gICAgICAgICAgICAgICAgXCIuL25vZGVfbW9kdWxlcy9Ac21pdGhlci9hd3MtdXNlci1wb29sLWNsaWVudC1zZXR0aW5ncy9saWIvVXNlclBvb2xJbnRlZ3JhdGlvblwiXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGhhbmRsZXI6IFwiQ2xpZW50U2V0dGluZ3MuaGFuZGxlclwiLFxuICAgICAgICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcygzMDApLFxuICAgICAgICAgICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTBfWCxcbiAgICAgICAgICAgICAgcm9sZTogcm9sZSxcbiAgICAgICAgICAgICAgdXVpZDogXCI0MDUxZDQ0Ni02OWJmLTRkYzYtOTBhOS1kMjgxMzVhN2NhM2JcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgcHJvcGVydGllczogbGFtYmRhUHJvcHNcbiAgICAgIH1cbiAgICApO1xuICAgIGNvZ25pdG9Vc2VyUG9vbENsaWVudFNldHRpbmdzLm5vZGUuYWRkRGVwZW5kZW5jeShzZW5kUmVzcG9uc2UpO1xuXG4gICAgY29uc3QgY29nbml0b1VzZXJQb29sRG9tYWluID0gbmV3IGNmbi5DdXN0b21SZXNvdXJjZShcbiAgICAgIHRoaXMsXG4gICAgICBcInVzZXJQb29sQ2xpZW50SW50ZWdyYXRpb24tY29nbml0b1VzZXJQb29sRG9tYWluXCIsXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGVyOiBjZm4uQ3VzdG9tUmVzb3VyY2VQcm92aWRlci5sYW1iZGEoXG4gICAgICAgICAgbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbihcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBcInVzZXJQb29sQ2xpZW50SW50ZWdyYXRpb24tY29nbml0b1VzZXJQb29sRG9tYWluTGFtYmRhXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvZGU6IG5ldyBsYW1iZGEuQXNzZXRDb2RlKFxuICAgICAgICAgICAgICAgIFwiLi9ub2RlX21vZHVsZXMvQHNtaXRoZXIvYXdzLXVzZXItcG9vbC1jbGllbnQtc2V0dGluZ3MvbGliL1VzZXJQb29sSW50ZWdyYXRpb25cIlxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBoYW5kbGVyOiBcIkRvbWFpbi5oYW5kbGVyXCIsXG4gICAgICAgICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgICAgICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xMF9YLFxuICAgICAgICAgICAgICByb2xlOiByb2xlLFxuICAgICAgICAgICAgICBlbnZpcm9ubWVudDogbGFtYmRhUHJvcHMgYXMgT2JqZWN0IGFzIHtba2V5OnN0cmluZ106c3RyaW5nfSxcbiAgICAgICAgICAgICAgdXVpZDogXCI3NGZhMDZlZi1hNmM2LTQ3YzAtOTRiMi00ZWYzMGNhMzk4NTFcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgcHJvcGVydGllczogbGFtYmRhUHJvcHNcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuZG9tYWluPWBodHRwczovLyR7cHJvcHMuZG9tYWlufS5hdXRoLiR7dGhpcy5zdGFjay5yZWdpb259LmFtYXpvbmNvZ25pdG8uY29tYFxuICAgIGNvZ25pdG9Vc2VyUG9vbERvbWFpbi5ub2RlLmFkZERlcGVuZGVuY3koc2VuZFJlc3BvbnNlKTtcbiAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBVc2VyUG9vbENsaWVudFNldHRpbmdzUHJvcHMge1xuICBkb21haW46IHN0cmluZztcbiAgdXNlclBvb2w6IFVzZXJQb29sO1xuICB1c2VyUG9vbENsaWVudDogVXNlclBvb2xDbGllbnQ7XG4gIHN1cHBvcnRlZElkZW50aXR5UHJvdmlkZXJzOiBJZGVudGl0eVByb3ZpZGVyc1tdO1xuICBjYWxsYmFja1VSTHM6IHN0cmluZ1tdO1xuICBsb2dvdXRVUkxzOiBzdHJpbmdbXTtcbiAgYWxsb3dlZE9BdXRoRmxvd3NVc2VyUG9vbENsaWVudDogYm9vbGVhbjtcbiAgYWxsb3dlZE9BdXRoRmxvd3M6IHN0cmluZ1tdO1xuICBhbGxvd2VkT0F1dGhTY29wZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZW51bSBJZGVudGl0eVByb3ZpZGVycyB7XG4gIFwiQ09HTklUT1wiPVwiQ09HTklUT1wiXG59XG5cbmludGVyZmFjZSBMYW1iZGFQcm9wcyB7XG4gIGRvbWFpbjogc3RyaW5nO1xuICB1c2VyUG9vbElkOiBzdHJpbmc7XG4gIHVzZXJQb29sQ2xpZW50SWQ6IHN0cmluZztcbiAgc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnM6IHN0cmluZztcbiAgY2FsbGJhY2tVUkxzOiBzdHJpbmc7XG4gIGxvZ291dFVSTHM6IHN0cmluZztcbiAgYWxsb3dlZE9BdXRoRmxvd3NVc2VyUG9vbENsaWVudDogc3RyaW5nO1xuICBhbGxvd2VkT0F1dGhGbG93czogc3RyaW5nO1xuICBhbGxvd2VkT0F1dGhTY29wZXM6IHN0cmluZztcbn1cbiJdfQ==