UNPKG

@pepperize/cdk-organizations

Version:

Manage AWS organizations, organizational units (OU), accounts and service control policies (SCP).

98 lines 15.7 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.Policy = exports.PolicyType = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const custom_resources_1 = require("aws-cdk-lib/custom-resources"); const constructs_1 = require("constructs"); const tag_resource_1 = require("./tag-resource"); const validators_1 = require("./validators"); /** * Organizations offers policy types in the following two broad categories: * <ol> * <li>Authorization policies help you to centrally manage the security of the AWS accounts in your organization.</li> * <li>Management policies enable you to centrally configure and manage AWS services and their features.</li> * </ol> * * @see https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies.html#orgs-policy-types */ var PolicyType; (function (PolicyType) { /** * Service control policies (SCPs) offer central control over the maximum available permissions for all of the accounts in your organization. */ PolicyType["SERVICE_CONTROL_POLICY"] = "SERVICE_CONTROL_POLICY"; /** * Tag policies help you standardize the tags attached to the AWS resources in your organization's accounts. */ PolicyType["TAG_POLICY"] = "TAG_POLICY"; /** * Backup policies help you centrally manage and apply backup plans to the AWS resources across your organization's accounts. */ PolicyType["BACKUP_POLICY"] = "BACKUP_POLICY"; /** * Artificial Intelligence (AI) services opt-out policies enable you to control data collection for AWS AI services for all of your organization's accounts. */ PolicyType["AISERVICES_OPT_OUT_POLICY"] = "AISERVICES_OPT_OUT_POLICY"; })(PolicyType || (exports.PolicyType = PolicyType = {})); class Policy extends constructs_1.Construct { constructor(scope, id, props) { super(scope, id); this.tags = new aws_cdk_lib_1.TagManager(aws_cdk_lib_1.TagType.KEY_VALUE, "Custom::Organizations_Policy"); const { content, description, policyName, policyType } = props; const organizationsRegion = process.env.CDK_AWS_PARTITION === "aws-cn" ? "cn-northwest-1" : "us-east-1"; if (!validators_1.Validators.of().policyContent(content)) { aws_cdk_lib_1.Annotations.of(this).addError("The text content of the policy must be valid and between 1 and 1,000,000 characters long."); } const policy = new custom_resources_1.AwsCustomResource(this, "PolicyCustomResource", { resourceType: "Custom::Organizations_Policy", onCreate: { service: "Organizations", action: "createPolicy", // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Organizations.html#createPolicy-property region: organizationsRegion, parameters: { Content: content, Description: description, Name: policyName, Type: policyType, }, outputPaths: ["Policy.PolicySummary.Id"], physicalResourceId: custom_resources_1.PhysicalResourceId.fromResponse("Policy.PolicySummary.Id"), }, onUpdate: { service: "Organizations", action: "updatePolicy", // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Organizations.html#updatePolicy-property region: organizationsRegion, parameters: { Content: content, Description: description, Name: policyName, PolicyId: new custom_resources_1.PhysicalResourceIdReference(), }, outputPaths: ["Policy.PolicySummary.Id"], physicalResourceId: custom_resources_1.PhysicalResourceId.fromResponse("Policy.PolicySummary.Id"), }, onDelete: { service: "Organizations", action: "deletePolicy", // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Organizations.html#deletePolicy-property region: organizationsRegion, parameters: { PolicyId: new custom_resources_1.PhysicalResourceIdReference(), }, }, installLatestAwsSdk: false, policy: custom_resources_1.AwsCustomResourcePolicy.fromSdkCalls({ resources: custom_resources_1.AwsCustomResourcePolicy.ANY_RESOURCE }), }); this.policyId = policy.getResponseField("Policy.PolicySummary.Id"); const tagResource = new tag_resource_1.TagResource(this, "Tags", { resourceId: this.policyId, tags: this.tags.renderedTags }); tagResource.node.addDependency(policy); } identifier() { return this.policyId; } } exports.Policy = Policy; _a = JSII_RTTI_SYMBOL_1; Policy[_a] = { fqn: "@pepperize/cdk-organizations.Policy", version: "0.7.988" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUErRDtBQUMvRCxtRUFLc0M7QUFDdEMsMkNBQW1EO0FBQ25ELGlEQUFnRTtBQUNoRSw2Q0FBMEM7QUFFMUM7Ozs7Ozs7O0dBUUc7QUFDSCxJQUFZLFVBaUJYO0FBakJELFdBQVksVUFBVTtJQUNwQjs7T0FFRztJQUNILCtEQUFpRCxDQUFBO0lBQ2pEOztPQUVHO0lBQ0gsdUNBQXlCLENBQUE7SUFDekI7O09BRUc7SUFDSCw2Q0FBK0IsQ0FBQTtJQUMvQjs7T0FFRztJQUNILHFFQUF1RCxDQUFBO0FBQ3pELENBQUMsRUFqQlcsVUFBVSwwQkFBVixVQUFVLFFBaUJyQjtBQW9DRCxNQUFhLE1BQU8sU0FBUSxzQkFBUztJQUtuQyxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBSFYsU0FBSSxHQUFHLElBQUksd0JBQVUsQ0FBQyxxQkFBTyxDQUFDLFNBQVMsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO1FBS2hGLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDL0QsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUV4RyxJQUFJLENBQUMsdUJBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM1Qyx5QkFBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQzNCLDJGQUEyRixDQUM1RixDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksb0NBQWlCLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQ2pFLFlBQVksRUFBRSw4QkFBOEI7WUFDNUMsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixNQUFNLEVBQUUsY0FBYyxFQUFFLG1HQUFtRztnQkFDM0gsTUFBTSxFQUFFLG1CQUFtQjtnQkFDM0IsVUFBVSxFQUFFO29CQUNWLE9BQU8sRUFBRSxPQUFPO29CQUNoQixXQUFXLEVBQUUsV0FBVztvQkFDeEIsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLElBQUksRUFBRSxVQUFVO2lCQUNqQjtnQkFDRCxXQUFXLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDeEMsa0JBQWtCLEVBQUUscUNBQWtCLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDO2FBQy9FO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixNQUFNLEVBQUUsY0FBYyxFQUFFLG1HQUFtRztnQkFDM0gsTUFBTSxFQUFFLG1CQUFtQjtnQkFDM0IsVUFBVSxFQUFFO29CQUNWLE9BQU8sRUFBRSxPQUFPO29CQUNoQixXQUFXLEVBQUUsV0FBVztvQkFDeEIsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLFFBQVEsRUFBRSxJQUFJLDhDQUEyQixFQUFFO2lCQUM1QztnQkFDRCxXQUFXLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDeEMsa0JBQWtCLEVBQUUscUNBQWtCLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDO2FBQy9FO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixNQUFNLEVBQUUsY0FBYyxFQUFFLG1HQUFtRztnQkFDM0gsTUFBTSxFQUFFLG1CQUFtQjtnQkFDM0IsVUFBVSxFQUFFO29CQUNWLFFBQVEsRUFBRSxJQUFJLDhDQUEyQixFQUFFO2lCQUM1QzthQUNGO1lBQ0QsbUJBQW1CLEVBQUUsS0FBSztZQUMxQixNQUFNLEVBQUUsMENBQXVCLENBQUMsWUFBWSxDQUFDLEVBQUUsU0FBUyxFQUFFLDBDQUF1QixDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ2xHLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFbkUsTUFBTSxXQUFXLEdBQUcsSUFBSSwwQkFBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQy9HLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7O0FBaEVILHdCQWlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFubm90YXRpb25zLCBUYWdNYW5hZ2VyLCBUYWdUeXBlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBBd3NDdXN0b21SZXNvdXJjZSxcbiAgQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3ksXG4gIFBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgUGh5c2ljYWxSZXNvdXJjZUlkUmVmZXJlbmNlLFxufSBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IElUYWdnYWJsZVJlc291cmNlLCBUYWdSZXNvdXJjZSB9IGZyb20gXCIuL3RhZy1yZXNvdXJjZVwiO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gXCIuL3ZhbGlkYXRvcnNcIjtcblxuLyoqXG4gKiBPcmdhbml6YXRpb25zIG9mZmVycyBwb2xpY3kgdHlwZXMgaW4gdGhlIGZvbGxvd2luZyB0d28gYnJvYWQgY2F0ZWdvcmllczpcbiAqIDxvbD5cbiAqICAgICA8bGk+QXV0aG9yaXphdGlvbiBwb2xpY2llcyBoZWxwIHlvdSB0byBjZW50cmFsbHkgbWFuYWdlIHRoZSBzZWN1cml0eSBvZiB0aGUgQVdTIGFjY291bnRzIGluIHlvdXIgb3JnYW5pemF0aW9uLjwvbGk+XG4gKiAgICAgPGxpPk1hbmFnZW1lbnQgcG9saWNpZXMgZW5hYmxlIHlvdSB0byBjZW50cmFsbHkgY29uZmlndXJlIGFuZCBtYW5hZ2UgQVdTIHNlcnZpY2VzIGFuZCB0aGVpciBmZWF0dXJlcy48L2xpPlxuICogPC9vbD5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vcmdhbml6YXRpb25zL2xhdGVzdC91c2VyZ3VpZGUvb3Jnc19tYW5hZ2VfcG9saWNpZXMuaHRtbCNvcmdzLXBvbGljeS10eXBlc1xuICovXG5leHBvcnQgZW51bSBQb2xpY3lUeXBlIHtcbiAgLyoqXG4gICAqIFNlcnZpY2UgY29udHJvbCBwb2xpY2llcyAoU0NQcykgb2ZmZXIgY2VudHJhbCBjb250cm9sIG92ZXIgdGhlIG1heGltdW0gYXZhaWxhYmxlIHBlcm1pc3Npb25zIGZvciBhbGwgb2YgdGhlIGFjY291bnRzIGluIHlvdXIgb3JnYW5pemF0aW9uLlxuICAgKi9cbiAgU0VSVklDRV9DT05UUk9MX1BPTElDWSA9IFwiU0VSVklDRV9DT05UUk9MX1BPTElDWVwiLFxuICAvKipcbiAgICogVGFnIHBvbGljaWVzIGhlbHAgeW91IHN0YW5kYXJkaXplIHRoZSB0YWdzIGF0dGFjaGVkIHRvIHRoZSBBV1MgcmVzb3VyY2VzIGluIHlvdXIgb3JnYW5pemF0aW9uJ3MgYWNjb3VudHMuXG4gICAqL1xuICBUQUdfUE9MSUNZID0gXCJUQUdfUE9MSUNZXCIsXG4gIC8qKlxuICAgKiBCYWNrdXAgcG9saWNpZXMgaGVscCB5b3UgY2VudHJhbGx5IG1hbmFnZSBhbmQgYXBwbHkgYmFja3VwIHBsYW5zIHRvIHRoZSBBV1MgcmVzb3VyY2VzIGFjcm9zcyB5b3VyIG9yZ2FuaXphdGlvbidzIGFjY291bnRzLlxuICAgKi9cbiAgQkFDS1VQX1BPTElDWSA9IFwiQkFDS1VQX1BPTElDWVwiLFxuICAvKipcbiAgICogQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgKEFJKSBzZXJ2aWNlcyBvcHQtb3V0IHBvbGljaWVzIGVuYWJsZSB5b3UgdG8gY29udHJvbCBkYXRhIGNvbGxlY3Rpb24gZm9yIEFXUyBBSSBzZXJ2aWNlcyBmb3IgYWxsIG9mIHlvdXIgb3JnYW5pemF0aW9uJ3MgYWNjb3VudHMuXG4gICAqL1xuICBBSVNFUlZJQ0VTX09QVF9PVVRfUE9MSUNZID0gXCJBSVNFUlZJQ0VTX09QVF9PVVRfUE9MSUNZXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9saWN5UHJvcHMge1xuICAvKipcbiAgICogVGhlIHBvbGljeSB0ZXh0IGNvbnRlbnQgdG8gYWRkIHRvIHRoZSBuZXcgcG9saWN5LiBUaGUgdGV4dCB0aGF0IHlvdSBzdXBwbHkgbXVzdCBhZGhlcmUgdG8gdGhlIHJ1bGVzIG9mIHRoZSBwb2xpY3kgdHlwZSB5b3Ugc3BlY2lmeSBpbiB0aGUgVHlwZSBwYXJhbWV0ZXIuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBkZXNjcmlwdGlvbiB0byBhc3NpZ24gdG8gdGhlIHBvbGljeS5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGZyaWVuZGx5IG5hbWUgdG8gYXNzaWduIHRvIHRoZSBwb2xpY3kuXG4gICAqL1xuICByZWFkb25seSBwb2xpY3lOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBwb2xpY3kgdG8gY3JlYXRlLiBZb3UgY2FuIHNwZWNpZnkgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5VHlwZTogUG9saWN5VHlwZTtcbn1cblxuLyoqXG4gKiBQb2xpY2llcyBpbiBBV1MgT3JnYW5pemF0aW9ucyBlbmFibGUgeW91IHRvIGFwcGx5IGFkZGl0aW9uYWwgdHlwZXMgb2YgbWFuYWdlbWVudCB0byB0aGUgQVdTIGFjY291bnRzIGluIHlvdXIgb3JnYW5pemF0aW9uLiA8c3Ryb25nPllvdSBjYW4gdXNlIHBvbGljaWVzIHdoZW4gYWxsIGZlYXR1cmVzIGFyZSBlbmFibGVkIGluIHlvdXIgb3JnYW5pemF0aW9uLjwvc3Ryb25nPlxuICpcbiAqIDxzdHJvbmc+QmVmb3JlIHlvdSBjYW4gY3JlYXRlIGFuZCBhdHRhY2ggYSBwb2xpY3kgdG8geW91ciBvcmdhbml6YXRpb24sIHlvdSBtdXN0IGVuYWJsZSB0aGF0IHBvbGljeSB0eXBlIGZvciB1c2UuPC9zdHJvbmc+XG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb3JnYW5pemF0aW9ucy9sYXRlc3QvdXNlcmd1aWRlL29yZ3NfbWFuYWdlX3BvbGljaWVzLmh0bWxcbiAqIEBzZWUgRmVhdHVyZVNldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElQb2xpY3kgZXh0ZW5kcyBJQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciAoSUQpIG9mIHRoZSBwb2xpY3kuIFRoZSByZWdleCBwYXR0ZXJuIGZvciBhIHBvbGljeSBJRCBzdHJpbmcgcmVxdWlyZXMgXCJwLVwiIGZvbGxvd2VkIGJ5IGZyb20gOCB0byAxMjggbG93ZXJjYXNlIG9yIHVwcGVyY2FzZSBsZXR0ZXJzLCBkaWdpdHMsIG9yIHRoZSB1bmRlcnNjb3JlIGNoYXJhY3RlciAoXykuXG4gICAqL1xuICByZWFkb25seSBwb2xpY3lJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUG9saWN5IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVBvbGljeSwgSVRhZ2dhYmxlUmVzb3VyY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgcG9saWN5SWQ6IHN0cmluZztcblxuICByZWFkb25seSB0YWdzID0gbmV3IFRhZ01hbmFnZXIoVGFnVHlwZS5LRVlfVkFMVUUsIFwiQ3VzdG9tOjpPcmdhbml6YXRpb25zX1BvbGljeVwiKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBvbGljeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHsgY29udGVudCwgZGVzY3JpcHRpb24sIHBvbGljeU5hbWUsIHBvbGljeVR5cGUgfSA9IHByb3BzO1xuICAgIGNvbnN0IG9yZ2FuaXphdGlvbnNSZWdpb24gPSBwcm9jZXNzLmVudi5DREtfQVdTX1BBUlRJVElPTiA9PT0gXCJhd3MtY25cIiA/IFwiY24tbm9ydGh3ZXN0LTFcIiA6IFwidXMtZWFzdC0xXCI7XG5cbiAgICBpZiAoIVZhbGlkYXRvcnMub2YoKS5wb2xpY3lDb250ZW50KGNvbnRlbnQpKSB7XG4gICAgICBBbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRFcnJvcihcbiAgICAgICAgXCJUaGUgdGV4dCBjb250ZW50IG9mIHRoZSBwb2xpY3kgbXVzdCBiZSB2YWxpZCBhbmQgYmV0d2VlbiAxIGFuZCAxLDAwMCwwMDAgY2hhcmFjdGVycyBsb25nLlwiXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHBvbGljeSA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBcIlBvbGljeUN1c3RvbVJlc291cmNlXCIsIHtcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206Ok9yZ2FuaXphdGlvbnNfUG9saWN5XCIsXG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIk9yZ2FuaXphdGlvbnNcIixcbiAgICAgICAgYWN0aW9uOiBcImNyZWF0ZVBvbGljeVwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL09yZ2FuaXphdGlvbnMuaHRtbCNjcmVhdGVQb2xpY3ktcHJvcGVydHlcbiAgICAgICAgcmVnaW9uOiBvcmdhbml6YXRpb25zUmVnaW9uLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgQ29udGVudDogY29udGVudCxcbiAgICAgICAgICBEZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICAgICAgTmFtZTogcG9saWN5TmFtZSxcbiAgICAgICAgICBUeXBlOiBwb2xpY3lUeXBlLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRQYXRoczogW1wiUG9saWN5LlBvbGljeVN1bW1hcnkuSWRcIl0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogUGh5c2ljYWxSZXNvdXJjZUlkLmZyb21SZXNwb25zZShcIlBvbGljeS5Qb2xpY3lTdW1tYXJ5LklkXCIpLFxuICAgICAgfSxcbiAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwiT3JnYW5pemF0aW9uc1wiLFxuICAgICAgICBhY3Rpb246IFwidXBkYXRlUG9saWN5XCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvT3JnYW5pemF0aW9ucy5odG1sI3VwZGF0ZVBvbGljeS1wcm9wZXJ0eVxuICAgICAgICByZWdpb246IG9yZ2FuaXphdGlvbnNSZWdpb24sXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBDb250ZW50OiBjb250ZW50LFxuICAgICAgICAgIERlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgICAgICBOYW1lOiBwb2xpY3lOYW1lLFxuICAgICAgICAgIFBvbGljeUlkOiBuZXcgUGh5c2ljYWxSZXNvdXJjZUlkUmVmZXJlbmNlKCksXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFBhdGhzOiBbXCJQb2xpY3kuUG9saWN5U3VtbWFyeS5JZFwiXSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBQaHlzaWNhbFJlc291cmNlSWQuZnJvbVJlc3BvbnNlKFwiUG9saWN5LlBvbGljeVN1bW1hcnkuSWRcIiksXG4gICAgICB9LFxuICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgc2VydmljZTogXCJPcmdhbml6YXRpb25zXCIsXG4gICAgICAgIGFjdGlvbjogXCJkZWxldGVQb2xpY3lcIiwgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0phdmFTY3JpcHRTREsvbGF0ZXN0L0FXUy9Pcmdhbml6YXRpb25zLmh0bWwjZGVsZXRlUG9saWN5LXByb3BlcnR5XG4gICAgICAgIHJlZ2lvbjogb3JnYW5pemF0aW9uc1JlZ2lvbixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIFBvbGljeUlkOiBuZXcgUGh5c2ljYWxSZXNvdXJjZUlkUmVmZXJlbmNlKCksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaW5zdGFsbExhdGVzdEF3c1NkazogZmFsc2UsXG4gICAgICBwb2xpY3k6IEF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TZGtDYWxscyh7IHJlc291cmNlczogQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuQU5ZX1JFU09VUkNFIH0pLFxuICAgIH0pO1xuICAgIHRoaXMucG9saWN5SWQgPSBwb2xpY3kuZ2V0UmVzcG9uc2VGaWVsZChcIlBvbGljeS5Qb2xpY3lTdW1tYXJ5LklkXCIpO1xuXG4gICAgY29uc3QgdGFnUmVzb3VyY2UgPSBuZXcgVGFnUmVzb3VyY2UodGhpcywgXCJUYWdzXCIsIHsgcmVzb3VyY2VJZDogdGhpcy5wb2xpY3lJZCwgdGFnczogdGhpcy50YWdzLnJlbmRlcmVkVGFncyB9KTtcbiAgICB0YWdSZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3kocG9saWN5KTtcbiAgfVxuXG4gIGlkZW50aWZpZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wb2xpY3lJZDtcbiAgfVxufVxuIl19