Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Socket
Sign inDemoInstall

@aws-cdk/aws-secretsmanager

Package Overview
Dependencies
Maintainers
5
Versions
272
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aws-cdk/aws-secretsmanager - npm Package Compare versions

Comparing version 1.144.0 to 1.145.0

6

.warnings.jsii.js

@@ -38,2 +38,4 @@ function _aws_cdk_aws_secretsmanager_AttachmentTargetType(p) {

}
function _aws_cdk_aws_secretsmanager_ISecretAttachmentTarget(p) {
}
function _aws_cdk_aws_secretsmanager_ResourcePolicyProps(p) {

@@ -47,4 +49,2 @@ if (p == null)

}
function _aws_cdk_aws_secretsmanager_ISecretAttachmentTarget(p) {
}
function _aws_cdk_aws_secretsmanager_ReplicaRegion(p) {

@@ -193,3 +193,3 @@ }

}
module.exports = { print, _aws_cdk_aws_secretsmanager_AttachmentTargetType, _aws_cdk_aws_secretsmanager_CfnSecretTargetAttachmentProps, _aws_cdk_aws_secretsmanager_SecretRotationApplicationOptions, _aws_cdk_aws_secretsmanager_SecretStringGenerator, _aws_cdk_aws_secretsmanager_ISecretTargetAttachment, _aws_cdk_aws_secretsmanager_SecretAttributes, _aws_cdk_aws_secretsmanager_AttachedSecretOptions, _aws_cdk_aws_secretsmanager_ResourcePolicyProps, _aws_cdk_aws_secretsmanager_ISecretAttachmentTarget, _aws_cdk_aws_secretsmanager_ReplicaRegion, _aws_cdk_aws_secretsmanager_SecretAttachmentTargetProps, _aws_cdk_aws_secretsmanager_CfnResourcePolicyProps, _aws_cdk_aws_secretsmanager_SecretTargetAttachmentProps, _aws_cdk_aws_secretsmanager_RotationScheduleProps, _aws_cdk_aws_secretsmanager_MultiUserHostedRotationOptions, _aws_cdk_aws_secretsmanager_SecretStringValueBeta1, _aws_cdk_aws_secretsmanager_RotationSchedule, _aws_cdk_aws_secretsmanager_SecretRotation, _aws_cdk_aws_secretsmanager_RotationScheduleOptions, _aws_cdk_aws_secretsmanager_SingleUserHostedRotationOptions, _aws_cdk_aws_secretsmanager_ResourcePolicy, _aws_cdk_aws_secretsmanager_CfnSecretTargetAttachment, _aws_cdk_aws_secretsmanager_CfnRotationScheduleProps, _aws_cdk_aws_secretsmanager_CfnResourcePolicy, _aws_cdk_aws_secretsmanager_CfnSecretProps, _aws_cdk_aws_secretsmanager_SecretProps, _aws_cdk_aws_secretsmanager_SecretRotationProps, _aws_cdk_aws_secretsmanager_CfnRotationSchedule, _aws_cdk_aws_secretsmanager_CfnRotationSchedule_RotationRulesProperty, _aws_cdk_aws_secretsmanager_CfnRotationSchedule_HostedRotationLambdaProperty, _aws_cdk_aws_secretsmanager_CfnSecret, _aws_cdk_aws_secretsmanager_CfnSecret_ReplicaRegionProperty, _aws_cdk_aws_secretsmanager_ISecret, _aws_cdk_aws_secretsmanager_HostedRotationType, _aws_cdk_aws_secretsmanager_SecretRotationApplication, _aws_cdk_aws_secretsmanager_CfnSecret_GenerateSecretStringProperty, _aws_cdk_aws_secretsmanager_SecretTargetAttachment, _aws_cdk_aws_secretsmanager_Secret, _aws_cdk_aws_secretsmanager_HostedRotation };
module.exports = { print, _aws_cdk_aws_secretsmanager_AttachmentTargetType, _aws_cdk_aws_secretsmanager_CfnSecretTargetAttachmentProps, _aws_cdk_aws_secretsmanager_SecretRotationApplicationOptions, _aws_cdk_aws_secretsmanager_SecretStringGenerator, _aws_cdk_aws_secretsmanager_ISecretTargetAttachment, _aws_cdk_aws_secretsmanager_SecretAttributes, _aws_cdk_aws_secretsmanager_AttachedSecretOptions, _aws_cdk_aws_secretsmanager_ISecretAttachmentTarget, _aws_cdk_aws_secretsmanager_ResourcePolicyProps, _aws_cdk_aws_secretsmanager_ReplicaRegion, _aws_cdk_aws_secretsmanager_SecretAttachmentTargetProps, _aws_cdk_aws_secretsmanager_CfnResourcePolicyProps, _aws_cdk_aws_secretsmanager_SecretTargetAttachmentProps, _aws_cdk_aws_secretsmanager_RotationScheduleProps, _aws_cdk_aws_secretsmanager_MultiUserHostedRotationOptions, _aws_cdk_aws_secretsmanager_SecretStringValueBeta1, _aws_cdk_aws_secretsmanager_RotationSchedule, _aws_cdk_aws_secretsmanager_SecretRotation, _aws_cdk_aws_secretsmanager_RotationScheduleOptions, _aws_cdk_aws_secretsmanager_SingleUserHostedRotationOptions, _aws_cdk_aws_secretsmanager_ResourcePolicy, _aws_cdk_aws_secretsmanager_CfnSecretTargetAttachment, _aws_cdk_aws_secretsmanager_CfnRotationScheduleProps, _aws_cdk_aws_secretsmanager_CfnResourcePolicy, _aws_cdk_aws_secretsmanager_CfnSecretProps, _aws_cdk_aws_secretsmanager_SecretProps, _aws_cdk_aws_secretsmanager_SecretRotationProps, _aws_cdk_aws_secretsmanager_CfnRotationSchedule, _aws_cdk_aws_secretsmanager_CfnRotationSchedule_RotationRulesProperty, _aws_cdk_aws_secretsmanager_CfnRotationSchedule_HostedRotationLambdaProperty, _aws_cdk_aws_secretsmanager_CfnSecret, _aws_cdk_aws_secretsmanager_CfnSecret_ReplicaRegionProperty, _aws_cdk_aws_secretsmanager_ISecret, _aws_cdk_aws_secretsmanager_HostedRotationType, _aws_cdk_aws_secretsmanager_SecretRotationApplication, _aws_cdk_aws_secretsmanager_CfnSecret_GenerateSecretStringProperty, _aws_cdk_aws_secretsmanager_SecretTargetAttachment, _aws_cdk_aws_secretsmanager_Secret, _aws_cdk_aws_secretsmanager_HostedRotation };
module.exports.DeprecationError = DeprecationError;

@@ -6,11 +6,7 @@ import * as iam from '@aws-cdk/aws-iam';

/**
* Construction properties for a ResourcePolicy.
*
* @stability stable
* Construction properties for a ResourcePolicy
*/
export interface ResourcePolicyProps {
/**
* The secret to attach a resource-based permissions policy.
*
* @stability stable
* The secret to attach a resource-based permissions policy
*/

@@ -20,3 +16,3 @@ readonly secret: ISecret;

/**
* Resource Policy for SecretsManager Secrets.
* Resource Policy for SecretsManager Secrets
*

@@ -33,4 +29,2 @@ * Policies define the operations that are allowed on this resource.

* Prefer to use `addToResourcePolicy()` instead.
*
* @stability stable
*/

@@ -40,10 +34,5 @@ export declare class ResourcePolicy extends Resource {

* The IAM policy document for this policy.
*
* @stability stable
*/
readonly document: iam.PolicyDocument;
/**
* @stability stable
*/
constructor(scope: Construct, id: string, props: ResourcePolicyProps);
}

@@ -11,3 +11,3 @@ "use strict";

/**
* Resource Policy for SecretsManager Secrets.
* Resource Policy for SecretsManager Secrets
*

@@ -24,9 +24,4 @@ * Policies define the operations that are allowed on this resource.

* Prefer to use `addToResourcePolicy()` instead.
*
* @stability stable
*/
class ResourcePolicy extends core_1.Resource {
/**
* @stability stable
*/
constructor(scope, id, props) {

@@ -36,4 +31,2 @@ super(scope, id);

* The IAM policy document for this policy.
*
* @stability stable
*/

@@ -50,3 +43,3 @@ this.document = new iam.PolicyDocument();

_a = JSII_RTTI_SYMBOL_1;
ResourcePolicy[_a] = { fqn: "@aws-cdk/aws-secretsmanager.ResourcePolicy", version: "1.144.0" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHdDQUF3QztBQUN4Qyx3Q0FBeUM7QUFHekMseUVBQStEOzs7Ozs7Ozs7Ozs7Ozs7OztBQVMvRCxNQUFhLGNBQWUsU0FBUSxlQUFROzs7O0lBSTFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7O1FBSEgsYUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDOztRQUtsRCxJQUFJLDRDQUFpQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDdEMsY0FBYyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQzdCLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVM7U0FDakMsQ0FBQyxDQUFDO0tBQ0o7O0FBWEgsd0NBWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpYW0gZnJvbSAnQGF3cy1jZGsvYXdzLWlhbSc7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJU2VjcmV0IH0gZnJvbSAnLi9zZWNyZXQnO1xuaW1wb3J0IHsgQ2ZuUmVzb3VyY2VQb2xpY3kgfSBmcm9tICcuL3NlY3JldHNtYW5hZ2VyLmdlbmVyYXRlZCc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VQb2xpY3lQcm9wcyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNlY3JldDogSVNlY3JldDtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VQb2xpY3kgZXh0ZW5kcyBSZXNvdXJjZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50ID0gbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCgpO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSZXNvdXJjZVBvbGljeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIG5ldyBDZm5SZXNvdXJjZVBvbGljeSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICByZXNvdXJjZVBvbGljeTogdGhpcy5kb2N1bWVudCxcbiAgICAgIHNlY3JldElkOiBwcm9wcy5zZWNyZXQuc2VjcmV0QXJuLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
ResourcePolicy[_a] = { fqn: "@aws-cdk/aws-secretsmanager.ResourcePolicy", version: "1.145.0" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHdDQUF3QztBQUN4Qyx3Q0FBeUM7QUFHekMseUVBQStEO0FBWS9EOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxlQUFRO0lBTTFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQU5uQjs7V0FFRztRQUNhLGFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQzs7UUFLbEQsSUFBSSw0Q0FBaUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3RDLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUM3QixRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTO1NBQ2pDLENBQUMsQ0FBQztLQUNKOztBQWJILHdDQWNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaWFtIGZyb20gJ0Bhd3MtY2RrL2F3cy1pYW0nO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICdAYXdzLWNkay9jb3JlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSVNlY3JldCB9IGZyb20gJy4vc2VjcmV0JztcbmltcG9ydCB7IENmblJlc291cmNlUG9saWN5IH0gZnJvbSAnLi9zZWNyZXRzbWFuYWdlci5nZW5lcmF0ZWQnO1xuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBhIFJlc291cmNlUG9saWN5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VQb2xpY3lQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgc2VjcmV0IHRvIGF0dGFjaCBhIHJlc291cmNlLWJhc2VkIHBlcm1pc3Npb25zIHBvbGljeVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0OiBJU2VjcmV0O1xufVxuXG4vKipcbiAqIFJlc291cmNlIFBvbGljeSBmb3IgU2VjcmV0c01hbmFnZXIgU2VjcmV0c1xuICpcbiAqIFBvbGljaWVzIGRlZmluZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGFyZSBhbGxvd2VkIG9uIHRoaXMgcmVzb3VyY2UuXG4gKlxuICogWW91IGFsbW9zdCBuZXZlciBuZWVkIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdCBkaXJlY3RseS5cbiAqXG4gKiBBbGwgQVdTIHJlc291cmNlcyB0aGF0IHN1cHBvcnQgcmVzb3VyY2UgcG9saWNpZXMgaGF2ZSBhIG1ldGhvZCBjYWxsZWRcbiAqIGBhZGRUb1Jlc291cmNlUG9saWN5KClgLCB3aGljaCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgbmV3IHJlc291cmNlXG4gKiBwb2xpY3kgaWYgb25lIGRvZXNuJ3QgZXhpc3QgeWV0LCBvdGhlcndpc2UgaXQgd2lsbCBhZGQgdG8gdGhlIGV4aXN0aW5nXG4gKiBwb2xpY3kuXG4gKlxuICogUHJlZmVyIHRvIHVzZSBgYWRkVG9SZXNvdXJjZVBvbGljeSgpYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VQb2xpY3kgZXh0ZW5kcyBSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgSUFNIHBvbGljeSBkb2N1bWVudCBmb3IgdGhpcyBwb2xpY3kuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnQgPSBuZXcgaWFtLlBvbGljeURvY3VtZW50KCk7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJlc291cmNlUG9saWN5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbmV3IENmblJlc291cmNlUG9saWN5KHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIHJlc291cmNlUG9saWN5OiB0aGlzLmRvY3VtZW50LFxuICAgICAgc2VjcmV0SWQ6IHByb3BzLnNlY3JldC5zZWNyZXRBcm4sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==

@@ -9,4 +9,2 @@ import * as ec2 from '@aws-cdk/aws-ec2';

* Options to add a rotation schedule to a secret.
*
* @stability stable
*/

@@ -18,17 +16,15 @@ export interface RotationScheduleOptions {

* @default - either `rotationLambda` or `hostedRotation` must be specified
* @stability stable
*/
readonly rotationLambda?: lambda.IFunction;
/**
* Hosted rotation.
* Hosted rotation
*
* @default - either `rotationLambda` or `hostedRotation` must be specified
* @stability stable
*/
readonly hostedRotation?: HostedRotation;
/**
* Specifies the number of days after the previous rotation before Secrets Manager triggers the next automatic rotation.
* Specifies the number of days after the previous rotation before
* Secrets Manager triggers the next automatic rotation.
*
* @default Duration.days(30)
* @stability stable
*/

@@ -39,4 +35,2 @@ readonly automaticallyAfter?: Duration;

* Construction properties for a RotationSchedule.
*
* @stability stable
*/

@@ -51,9 +45,9 @@ export interface RotationScheduleProps extends RotationScheduleOptions {

* {
* "engine": <required: database engine>,
* "host": <required: instance host name>,
* "username": <required: username>,
* "password": <required: password>,
* "dbname": <optional: database name>,
* "port": <optional: if not specified, default port will be used>,
* "masterarn": <required for multi user rotation: the arn of the master secret which will be used to create users/change passwords>
* "engine": <required: database engine>,
* "host": <required: instance host name>,
* "username": <required: username>,
* "password": <required: password>,
* "dbname": <optional: database name>,
* "port": <optional: if not specified, default port will be used>,
* "masterarn": <required for multi user rotation: the arn of the master secret which will be used to create users/change passwords>
* }

@@ -64,4 +58,2 @@ * ```

* or an `ISecret` returned by the `attach()` method of `Secret`.
*
* @stability stable
*/

@@ -72,29 +64,20 @@ readonly secret: ISecret;

* A rotation schedule.
*
* @stability stable
*/
export declare class RotationSchedule extends Resource {
/**
* @stability stable
*/
constructor(scope: Construct, id: string, props: RotationScheduleProps);
}
/**
* Single user hosted rotation options.
*
* @stability stable
* Single user hosted rotation options
*/
export interface SingleUserHostedRotationOptions {
/**
* A name for the Lambda created to rotate the secret.
* A name for the Lambda created to rotate the secret
*
* @default - a CloudFormation generated name
* @stability stable
*/
readonly functionName?: string;
/**
* A list of security groups for the Lambda created to rotate the secret.
* A list of security groups for the Lambda created to rotate the secret
*
* @default - a new security group is created
* @stability stable
*/

@@ -106,3 +89,2 @@ readonly securityGroups?: ec2.ISecurityGroup[];

* @default - the Lambda is not deployed in a VPC
* @stability stable
*/

@@ -114,3 +96,2 @@ readonly vpc?: ec2.IVpc;

* @default - the Vpc default strategy if not specified.
* @stability stable
*/

@@ -120,11 +101,7 @@ readonly vpcSubnets?: ec2.SubnetSelection;

/**
* Multi user hosted rotation options.
*
* @stability stable
* Multi user hosted rotation options
*/
export interface MultiUserHostedRotationOptions extends SingleUserHostedRotationOptions {
/**
* The master secret for a multi user rotation scheme.
*
* @stability stable
* The master secret for a multi user rotation scheme
*/

@@ -134,5 +111,3 @@ readonly masterSecret: ISecret;

/**
* A hosted rotation.
*
* @stability stable
* A hosted rotation
*/

@@ -143,85 +118,29 @@ export declare class HostedRotation implements ec2.IConnectable {

private readonly masterSecret?;
/**
* MySQL Single User.
*
* @stability stable
*/
/** MySQL Single User */
static mysqlSingleUser(options?: SingleUserHostedRotationOptions): HostedRotation;
/**
* MySQL Multi User.
*
* @stability stable
*/
/** MySQL Multi User */
static mysqlMultiUser(options: MultiUserHostedRotationOptions): HostedRotation;
/**
* PostgreSQL Single User.
*
* @stability stable
*/
/** PostgreSQL Single User */
static postgreSqlSingleUser(options?: SingleUserHostedRotationOptions): HostedRotation;
/**
* PostgreSQL Multi User.
*
* @stability stable
*/
/** PostgreSQL Multi User */
static postgreSqlMultiUser(options: MultiUserHostedRotationOptions): HostedRotation;
/**
* Oracle Single User.
*
* @stability stable
*/
/** Oracle Single User */
static oracleSingleUser(options?: SingleUserHostedRotationOptions): HostedRotation;
/**
* Oracle Multi User.
*
* @stability stable
*/
/** Oracle Multi User */
static oracleMultiUser(options: MultiUserHostedRotationOptions): HostedRotation;
/**
* MariaDB Single User.
*
* @stability stable
*/
/** MariaDB Single User */
static mariaDbSingleUser(options?: SingleUserHostedRotationOptions): HostedRotation;
/**
* MariaDB Multi User.
*
* @stability stable
*/
/** MariaDB Multi User */
static mariaDbMultiUser(options: MultiUserHostedRotationOptions): HostedRotation;
/**
* SQL Server Single User.
*
* @stability stable
*/
/** SQL Server Single User */
static sqlServerSingleUser(options?: SingleUserHostedRotationOptions): HostedRotation;
/**
* SQL Server Multi User.
*
* @stability stable
*/
/** SQL Server Multi User */
static sqlServerMultiUser(options: MultiUserHostedRotationOptions): HostedRotation;
/**
* Redshift Single User.
*
* @stability stable
*/
/** Redshift Single User */
static redshiftSingleUser(options?: SingleUserHostedRotationOptions): HostedRotation;
/**
* Redshift Multi User.
*
* @stability stable
*/
/** Redshift Multi User */
static redshiftMultiUser(options: MultiUserHostedRotationOptions): HostedRotation;
/**
* MongoDB Single User.
*
* @stability stable
*/
/** MongoDB Single User */
static mongoDbSingleUser(options?: SingleUserHostedRotationOptions): HostedRotation;
/**
* MongoDB Multi User.
*
* @stability stable
*/
/** MongoDB Multi User */
static mongoDbMultiUser(options: MultiUserHostedRotationOptions): HostedRotation;

@@ -231,11 +150,7 @@ private _connections?;

/**
* Binds this hosted rotation to a secret.
*
* @stability stable
* Binds this hosted rotation to a secret
*/
bind(secret: ISecret, scope: Construct): CfnRotationSchedule.HostedRotationLambdaProperty;
/**
* Security group connections for this hosted rotation.
*
* @stability stable
* Security group connections for this hosted rotation
*/

@@ -245,5 +160,3 @@ get connections(): ec2.Connections;

/**
* Hosted rotation type.
*
* @stability stable
* Hosted rotation type
*/

@@ -253,85 +166,29 @@ export declare class HostedRotationType {

readonly isMultiUser?: boolean | undefined;
/**
* MySQL Single User.
*
* @stability stable
*/
/** MySQL Single User */
static readonly MYSQL_SINGLE_USER: HostedRotationType;
/**
* MySQL Multi User.
*
* @stability stable
*/
/** MySQL Multi User */
static readonly MYSQL_MULTI_USER: HostedRotationType;
/**
* PostgreSQL Single User.
*
* @stability stable
*/
/** PostgreSQL Single User */
static readonly POSTGRESQL_SINGLE_USER: HostedRotationType;
/**
* PostgreSQL Multi User.
*
* @stability stable
*/
/** PostgreSQL Multi User */
static readonly POSTGRESQL_MULTI_USER: HostedRotationType;
/**
* Oracle Single User.
*
* @stability stable
*/
/** Oracle Single User */
static readonly ORACLE_SINGLE_USER: HostedRotationType;
/**
* Oracle Multi User.
*
* @stability stable
*/
/** Oracle Multi User */
static readonly ORACLE_MULTI_USER: HostedRotationType;
/**
* MariaDB Single User.
*
* @stability stable
*/
/** MariaDB Single User */
static readonly MARIADB_SINGLE_USER: HostedRotationType;
/**
* MariaDB Multi User.
*
* @stability stable
*/
/** MariaDB Multi User */
static readonly MARIADB_MULTI_USER: HostedRotationType;
/**
* SQL Server Single User.
*
* @stability stable
*/
/** SQL Server Single User */
static readonly SQLSERVER_SINGLE_USER: HostedRotationType;
/**
* SQL Server Multi User.
*
* @stability stable
*/
/** SQL Server Multi User */
static readonly SQLSERVER_MULTI_USER: HostedRotationType;
/**
* Redshift Single User.
*
* @stability stable
*/
/** Redshift Single User */
static readonly REDSHIFT_SINGLE_USER: HostedRotationType;
/**
* Redshift Multi User.
*
* @stability stable
*/
/** Redshift Multi User */
static readonly REDSHIFT_MULTI_USER: HostedRotationType;
/**
* MongoDB Single User.
*
* @stability stable
*/
/** MongoDB Single User */
static readonly MONGODB_SINGLE_USER: HostedRotationType;
/**
* MongoDB Multi User.
*
* @stability stable
*/
/** MongoDB Multi User */
static readonly MONGODB_MULTI_USER: HostedRotationType;

@@ -338,0 +195,0 @@ /**

@@ -14,9 +14,4 @@ "use strict";

* A rotation schedule.
*
* @stability stable
*/
class RotationSchedule extends core_1.Resource {
/**
* @stability stable
*/
constructor(scope, id, props) {

@@ -64,7 +59,5 @@ var _d, _e, _f;

_a = JSII_RTTI_SYMBOL_1;
RotationSchedule[_a] = { fqn: "@aws-cdk/aws-secretsmanager.RotationSchedule", version: "1.144.0" };
RotationSchedule[_a] = { fqn: "@aws-cdk/aws-secretsmanager.RotationSchedule", version: "1.145.0" };
/**
* A hosted rotation.
*
* @stability stable
* A hosted rotation
*/

@@ -80,7 +73,3 @@ class HostedRotation {

}
/**
* MySQL Single User.
*
* @stability stable
*/
/** MySQL Single User */
static mysqlSingleUser(options = {}) {

@@ -90,7 +79,3 @@ jsiiDeprecationWarnings._aws_cdk_aws_secretsmanager_SingleUserHostedRotationOptions(options);

}
/**
* MySQL Multi User.
*
* @stability stable
*/
/** MySQL Multi User */
static mysqlMultiUser(options) {

@@ -100,7 +85,3 @@ jsiiDeprecationWarnings._aws_cdk_aws_secretsmanager_MultiUserHostedRotationOptions(options);

}
/**
* PostgreSQL Single User.
*
* @stability stable
*/
/** PostgreSQL Single User */
static postgreSqlSingleUser(options = {}) {

@@ -110,7 +91,3 @@ jsiiDeprecationWarnings._aws_cdk_aws_secretsmanager_SingleUserHostedRotationOptions(options);

}
/**
* PostgreSQL Multi User.
*
* @stability stable
*/
/** PostgreSQL Multi User */
static postgreSqlMultiUser(options) {

@@ -120,7 +97,3 @@ jsiiDeprecationWarnings._aws_cdk_aws_secretsmanager_MultiUserHostedRotationOptions(options);

}
/**
* Oracle Single User.
*
* @stability stable
*/
/** Oracle Single User */
static oracleSingleUser(options = {}) {

@@ -130,7 +103,3 @@ jsiiDeprecationWarnings._aws_cdk_aws_secretsmanager_SingleUserHostedRotationOptions(options);

}
/**
* Oracle Multi User.
*
* @stability stable
*/
/** Oracle Multi User */
static oracleMultiUser(options) {

@@ -140,7 +109,3 @@ jsiiDeprecationWarnings._aws_cdk_aws_secretsmanager_MultiUserHostedRotationOptions(options);

}
/**
* MariaDB Single User.
*
* @stability stable
*/
/** MariaDB Single User */
static mariaDbSingleUser(options = {}) {

@@ -150,7 +115,3 @@ jsiiDeprecationWarnings._aws_cdk_aws_secretsmanager_SingleUserHostedRotationOptions(options);

}
/**
* MariaDB Multi User.
*
* @stability stable
*/
/** MariaDB Multi User */
static mariaDbMultiUser(options) {

@@ -160,7 +121,3 @@ jsiiDeprecationWarnings._aws_cdk_aws_secretsmanager_MultiUserHostedRotationOptions(options);

}
/**
* SQL Server Single User.
*
* @stability stable
*/
/** SQL Server Single User */
static sqlServerSingleUser(options = {}) {

@@ -170,7 +127,3 @@ jsiiDeprecationWarnings._aws_cdk_aws_secretsmanager_SingleUserHostedRotationOptions(options);

}
/**
* SQL Server Multi User.
*
* @stability stable
*/
/** SQL Server Multi User */
static sqlServerMultiUser(options) {

@@ -180,7 +133,3 @@ jsiiDeprecationWarnings._aws_cdk_aws_secretsmanager_MultiUserHostedRotationOptions(options);

}
/**
* Redshift Single User.
*
* @stability stable
*/
/** Redshift Single User */
static redshiftSingleUser(options = {}) {

@@ -190,7 +139,3 @@ jsiiDeprecationWarnings._aws_cdk_aws_secretsmanager_SingleUserHostedRotationOptions(options);

}
/**
* Redshift Multi User.
*
* @stability stable
*/
/** Redshift Multi User */
static redshiftMultiUser(options) {

@@ -200,7 +145,3 @@ jsiiDeprecationWarnings._aws_cdk_aws_secretsmanager_MultiUserHostedRotationOptions(options);

}
/**
* MongoDB Single User.
*
* @stability stable
*/
/** MongoDB Single User */
static mongoDbSingleUser(options = {}) {

@@ -210,7 +151,3 @@ jsiiDeprecationWarnings._aws_cdk_aws_secretsmanager_SingleUserHostedRotationOptions(options);

}
/**
* MongoDB Multi User.
*
* @stability stable
*/
/** MongoDB Multi User */
static mongoDbMultiUser(options) {

@@ -221,5 +158,3 @@ jsiiDeprecationWarnings._aws_cdk_aws_secretsmanager_MultiUserHostedRotationOptions(options);

/**
* Binds this hosted rotation to a secret.
*
* @stability stable
* Binds this hosted rotation to a secret
*/

@@ -256,5 +191,3 @@ bind(secret, scope) {

/**
* Security group connections for this hosted rotation.
*
* @stability stable
* Security group connections for this hosted rotation
*/

@@ -274,7 +207,5 @@ get connections() {

_b = JSII_RTTI_SYMBOL_1;
HostedRotation[_b] = { fqn: "@aws-cdk/aws-secretsmanager.HostedRotation", version: "1.144.0" };
HostedRotation[_b] = { fqn: "@aws-cdk/aws-secretsmanager.HostedRotation", version: "1.145.0" };
/**
* Hosted rotation type.
*
* @stability stable
* Hosted rotation type
*/

@@ -293,87 +224,31 @@ class HostedRotationType {

_c = JSII_RTTI_SYMBOL_1;
HostedRotationType[_c] = { fqn: "@aws-cdk/aws-secretsmanager.HostedRotationType", version: "1.144.0" };
/**
* MySQL Single User.
*
* @stability stable
*/
HostedRotationType[_c] = { fqn: "@aws-cdk/aws-secretsmanager.HostedRotationType", version: "1.145.0" };
/** MySQL Single User */
HostedRotationType.MYSQL_SINGLE_USER = new HostedRotationType('MySQLSingleUser');
/**
* MySQL Multi User.
*
* @stability stable
*/
/** MySQL Multi User */
HostedRotationType.MYSQL_MULTI_USER = new HostedRotationType('MySQLMultiUser', true);
/**
* PostgreSQL Single User.
*
* @stability stable
*/
/** PostgreSQL Single User */
HostedRotationType.POSTGRESQL_SINGLE_USER = new HostedRotationType('PostgreSQLSingleUser');
/**
* PostgreSQL Multi User.
*
* @stability stable
*/
/** PostgreSQL Multi User */
HostedRotationType.POSTGRESQL_MULTI_USER = new HostedRotationType('PostgreSQLMultiUser', true);
/**
* Oracle Single User.
*
* @stability stable
*/
/** Oracle Single User */
HostedRotationType.ORACLE_SINGLE_USER = new HostedRotationType('OracleSingleUser');
/**
* Oracle Multi User.
*
* @stability stable
*/
/** Oracle Multi User */
HostedRotationType.ORACLE_MULTI_USER = new HostedRotationType('OracleMultiUser', true);
/**
* MariaDB Single User.
*
* @stability stable
*/
/** MariaDB Single User */
HostedRotationType.MARIADB_SINGLE_USER = new HostedRotationType('MariaDBSingleUser');
/**
* MariaDB Multi User.
*
* @stability stable
*/
/** MariaDB Multi User */
HostedRotationType.MARIADB_MULTI_USER = new HostedRotationType('MariaDBMultiUser', true);
/**
* SQL Server Single User.
*
* @stability stable
*/
/** SQL Server Single User */
HostedRotationType.SQLSERVER_SINGLE_USER = new HostedRotationType('SQLServerSingleUser');
/**
* SQL Server Multi User.
*
* @stability stable
*/
/** SQL Server Multi User */
HostedRotationType.SQLSERVER_MULTI_USER = new HostedRotationType('SQLServerMultiUser', true);
/**
* Redshift Single User.
*
* @stability stable
*/
/** Redshift Single User */
HostedRotationType.REDSHIFT_SINGLE_USER = new HostedRotationType('RedshiftSingleUser');
/**
* Redshift Multi User.
*
* @stability stable
*/
/** Redshift Multi User */
HostedRotationType.REDSHIFT_MULTI_USER = new HostedRotationType('RedshiftMultiUser', true);
/**
* MongoDB Single User.
*
* @stability stable
*/
/** MongoDB Single User */
HostedRotationType.MONGODB_SINGLE_USER = new HostedRotationType('MongoDBSingleUser');
/**
* MongoDB Multi User.
*
* @stability stable
*/
/** MongoDB Multi User */
HostedRotationType.MONGODB_MULTI_USER = new HostedRotationType('MongoDBMultiUser', true);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm90YXRpb24tc2NoZWR1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyb3RhdGlvbi1zY2hlZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx3Q0FBd0M7QUFDeEMsd0NBQXdDO0FBQ3hDLHdDQUF3QztBQUV4Qyx3Q0FBMEQ7QUFHMUQseUVBQWlFOzs7Ozs7QUFxQmpFLE1BQWEsZ0JBQWlCLFNBQVEsZUFBUTs7OztJQUM1QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTRCOztRQUNwRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOztRQUVqQixJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDdEcsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO1NBQ25GO1FBRUQsVUFBSSxLQUFLLENBQUMsY0FBYywwQ0FBRSxlQUFlLENBQUMsWUFBWSxFQUFFO1lBQ3RELElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUU7Z0JBQzlCLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUM1QyxJQUFJLEdBQUcsQ0FBQyxtQkFBbUIsQ0FDekIsa0JBQWtCLFlBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxnQkFBZ0IsRUFDdkQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQ3BDLENBQ0YsQ0FBQzthQUNIO1lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDO1lBRTNGLEtBQUssQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUNsQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7Z0JB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LHFDQUFrQixHQUFHLElBQUksa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsQ0FBQzs7Ozs7O0FBR2hFLG9DQUFpQixHQUFHLElBQUksa0JBQWtCLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7Ozs7OztBQUdwRSxzQ0FBbUIsR0FBRyxJQUFJLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLENBQUM7Ozs7OztBQUdsRSxxQ0FBa0IsR0FBRyxJQUFJLGtCQUFrQixDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDOzs7Ozs7QUFHdEUsd0NBQXFCLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBOzs7Ozs7QUFHckUsdUNBQW9CLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsQ0FBQzs7Ozs7O0FBRzFFLHVDQUFvQixHQUFHLElBQUksa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsQ0FBQTs7Ozs7O0FBR25FLHNDQUFtQixHQUFHLElBQUksa0JBQWtCLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLENBQUM7Ozs7OztBQUd4RSxzQ0FBbUIsR0FBRyxJQUFJLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLENBQUM7Ozs7OztBQUdsRSxxQ0FBa0IsR0FBRyxJQUFJLGtCQUFrQixDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZWMyIGZyb20gJ0Bhd3MtY2RrL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ0Bhd3MtY2RrL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMga21zIGZyb20gJ0Bhd3MtY2RrL2F3cy1rbXMnO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ0Bhd3MtY2RrL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgRHVyYXRpb24sIFJlc291cmNlLCBTdGFjayB9IGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJU2VjcmV0IH0gZnJvbSAnLi9zZWNyZXQnO1xuaW1wb3J0IHsgQ2ZuUm90YXRpb25TY2hlZHVsZSB9IGZyb20gJy4vc2VjcmV0c21hbmFnZXIuZ2VuZXJhdGVkJztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBSb3RhdGlvblNjaGVkdWxlT3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHJvdGF0aW9uTGFtYmRhPzogbGFtYmRhLklGdW5jdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBob3N0ZWRSb3RhdGlvbj86IEhvc3RlZFJvdGF0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhdXRvbWF0aWNhbGx5QWZ0ZXI/OiBEdXJhdGlvbjtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBSb3RhdGlvblNjaGVkdWxlUHJvcHMgZXh0ZW5kcyBSb3RhdGlvblNjaGVkdWxlT3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNlY3JldDogSVNlY3JldDtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIFJvdGF0aW9uU2NoZWR1bGUgZXh0ZW5kcyBSZXNvdXJjZSB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSb3RhdGlvblNjaGVkdWxlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgaWYgKCghcHJvcHMucm90YXRpb25MYW1iZGEgJiYgIXByb3BzLmhvc3RlZFJvdGF0aW9uKSB8fCAocHJvcHMucm90YXRpb25MYW1iZGEgJiYgcHJvcHMuaG9zdGVkUm90YXRpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ09uZSBvZiBgcm90YXRpb25MYW1iZGFgIG9yIGBob3N0ZWRSb3RhdGlvbmAgbXVzdCBiZSBzcGVjaWZpZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnJvdGF0aW9uTGFtYmRhPy5wZXJtaXNzaW9uc05vZGUuZGVmYXVsdENoaWxkKSB7XG4gICAgICBpZiAocHJvcHMuc2VjcmV0LmVuY3J5cHRpb25LZXkpIHtcbiAgICAgICAgcHJvcHMuc2VjcmV0LmVuY3J5cHRpb25LZXkuZ3JhbnRFbmNyeXB0RGVjcnlwdChcbiAgICAgICAgICBuZXcga21zLlZpYVNlcnZpY2VQcmluY2lwYWwoXG4gICAgICAgICAgICBgc2VjcmV0c21hbmFnZXIuJHtTdGFjay5vZih0aGlzKS5yZWdpb259LmFtYXpvbmF3cy5jb21gLFxuICAgICAgICAgICAgcHJvcHMucm90YXRpb25MYW1iZGEuZ3JhbnRQcmluY2lwYWwsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcHJvcHMucm90YXRpb25MYW1iZGEuZ3JhbnRJbnZva2UobmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdzZWNyZXRzbWFuYWdlci5hbWF6b25hd3MuY29tJykpO1xuXG4gICAgICBwcm9wcy5yb3RhdGlvbkxhbWJkYS5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAnc2VjcmV0c21hbmFnZXI6RGVzY3JpYmVTZWNyZXQnLFxuICAgICAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOkdldFNlY3JldFZhbHVlJyxcbiAgICAgICAgICAgICdzZWNyZXRzbWFuYWdlcjpQdXRTZWNyZXRWYWx1ZScsXG4gICAgICAgICAgICAnc2VjcmV0c21hbmFnZXI6VXBkYXRlU2VjcmV0VmVyc2lvblN0YWdlJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW3Byb3BzLnNlY3JldC5zZWNyZXRGdWxsQXJuID8gcHJvcHMuc2VjcmV0LnNlY3JldEZ1bGxBcm4gOiBgJHtwcm9wcy5zZWNyZXQuc2VjcmV0QXJufS0/Pz8/Pz9gXSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgICAgcHJvcHMucm90YXRpb25MYW1iZGEuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOkdldFJhbmRvbVBhc3N3b3JkJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBuZXcgQ2ZuUm90YXRpb25TY2hlZHVsZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBzZWNyZXRJZDogcHJvcHMuc2VjcmV0LnNlY3JldEFybixcbiAgICAgIHJvdGF0aW9uTGFtYmRhQXJuOiBwcm9wcy5yb3RhdGlvbkxhbWJkYT8uZnVuY3Rpb25Bcm4sXG4gICAgICBob3N0ZWRSb3RhdGlvbkxhbWJkYTogcHJvcHMuaG9zdGVkUm90YXRpb24/LmJpbmQocHJvcHMuc2VjcmV0LCB0aGlzKSxcbiAgICAgIHJvdGF0aW9uUnVsZXM6IHtcbiAgICAgICAgYXV0b21hdGljYWxseUFmdGVyRGF5czogcHJvcHMuYXV0b21hdGljYWxseUFmdGVyICYmIHByb3BzLmF1dG9tYXRpY2FsbHlBZnRlci50b0RheXMoKSB8fCAzMCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBQcmV2ZW50IHNlY3JldHMgZGVsZXRpb25zIHdoZW4gcm90YXRpb24gaXMgaW4gcGxhY2VcbiAgICBwcm9wcy5zZWNyZXQuZGVueUFjY291bnRSb290RGVsZXRlKCk7XG4gIH1cbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBTaW5nbGVVc2VySG9zdGVkUm90YXRpb25PcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBmdW5jdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHM/OiBlYzIuSVNlY3VyaXR5R3JvdXBbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHZwYz86IGVjMi5JVnBjO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdnBjU3VibmV0cz86IGVjMi5TdWJuZXRTZWxlY3Rpb247XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBNdWx0aVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMgZXh0ZW5kcyBTaW5nbGVVc2VySG9zdGVkUm90YXRpb25PcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbWFzdGVyU2VjcmV0OiBJU2VjcmV0O1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgSG9zdGVkUm90YXRpb24gaW1wbGVtZW50cyBlYzIuSUNvbm5lY3RhYmxlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgbXlzcWxTaW5nbGVVc2VyKG9wdGlvbnM6IFNpbmdsZVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiBuZXcgSG9zdGVkUm90YXRpb24oSG9zdGVkUm90YXRpb25UeXBlLk1ZU1FMX1NJTkdMRV9VU0VSLCBvcHRpb25zKTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgbXlzcWxNdWx0aVVzZXIob3B0aW9uczogTXVsdGlVc2VySG9zdGVkUm90YXRpb25PcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBIb3N0ZWRSb3RhdGlvbihIb3N0ZWRSb3RhdGlvblR5cGUuTVlTUUxfTVVMVElfVVNFUiwgb3B0aW9ucywgb3B0aW9ucy5tYXN0ZXJTZWNyZXQpO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyBwb3N0Z3JlU3FsU2luZ2xlVXNlcihvcHRpb25zOiBTaW5nbGVVc2VySG9zdGVkUm90YXRpb25PcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gbmV3IEhvc3RlZFJvdGF0aW9uKEhvc3RlZFJvdGF0aW9uVHlwZS5QT1NUR1JFU1FMX1NJTkdMRV9VU0VSLCBvcHRpb25zKTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyBwb3N0Z3JlU3FsTXVsdGlVc2VyKG9wdGlvbnM6IE11bHRpVXNlckhvc3RlZFJvdGF0aW9uT3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgSG9zdGVkUm90YXRpb24oSG9zdGVkUm90YXRpb25UeXBlLlBPU1RHUkVTUUxfTVVMVElfVVNFUiwgb3B0aW9ucywgb3B0aW9ucy5tYXN0ZXJTZWNyZXQpO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIG9yYWNsZVNpbmdsZVVzZXIob3B0aW9uczogU2luZ2xlVXNlckhvc3RlZFJvdGF0aW9uT3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBIb3N0ZWRSb3RhdGlvbihIb3N0ZWRSb3RhdGlvblR5cGUuT1JBQ0xFX1NJTkdMRV9VU0VSLCBvcHRpb25zKTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIG9yYWNsZU11bHRpVXNlcihvcHRpb25zOiBNdWx0aVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEhvc3RlZFJvdGF0aW9uKEhvc3RlZFJvdGF0aW9uVHlwZS5PUkFDTEVfTVVMVElfVVNFUiwgb3B0aW9ucywgb3B0aW9ucy5tYXN0ZXJTZWNyZXQpO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyBtYXJpYURiU2luZ2xlVXNlcihvcHRpb25zOiBTaW5nbGVVc2VySG9zdGVkUm90YXRpb25PcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gbmV3IEhvc3RlZFJvdGF0aW9uKEhvc3RlZFJvdGF0aW9uVHlwZS5NQVJJQURCX1NJTkdMRV9VU0VSLCBvcHRpb25zKTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyBtYXJpYURiTXVsdGlVc2VyKG9wdGlvbnM6IE11bHRpVXNlckhvc3RlZFJvdGF0aW9uT3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgSG9zdGVkUm90YXRpb24oSG9zdGVkUm90YXRpb25UeXBlLk1BUklBREJfTVVMVElfVVNFUiwgb3B0aW9ucywgb3B0aW9ucy5tYXN0ZXJTZWNyZXQpO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyBzcWxTZXJ2ZXJTaW5nbGVVc2VyKG9wdGlvbnM6IFNpbmdsZVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiBuZXcgSG9zdGVkUm90YXRpb24oSG9zdGVkUm90YXRpb25UeXBlLlNRTFNFUlZFUl9TSU5HTEVfVVNFUiwgb3B0aW9ucyk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgc3FsU2VydmVyTXVsdGlVc2VyKG9wdGlvbnM6IE11bHRpVXNlckhvc3RlZFJvdGF0aW9uT3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgSG9zdGVkUm90YXRpb24oSG9zdGVkUm90YXRpb25UeXBlLlNRTFNFUlZFUl9NVUxUSV9VU0VSLCBvcHRpb25zLCBvcHRpb25zLm1hc3RlclNlY3JldCk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyByZWRzaGlmdFNpbmdsZVVzZXIob3B0aW9uczogU2luZ2xlVXNlckhvc3RlZFJvdGF0aW9uT3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBIb3N0ZWRSb3RhdGlvbihIb3N0ZWRSb3RhdGlvblR5cGUuUkVEU0hJRlRfU0lOR0xFX1VTRVIsIG9wdGlvbnMpO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyByZWRzaGlmdE11bHRpVXNlcihvcHRpb25zOiBNdWx0aVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEhvc3RlZFJvdGF0aW9uKEhvc3RlZFJvdGF0aW9uVHlwZS5SRURTSElGVF9NVUxUSV9VU0VSLCBvcHRpb25zLCBvcHRpb25zLm1hc3RlclNlY3JldCk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIG1vbmdvRGJTaW5nbGVVc2VyKG9wdGlvbnM6IFNpbmdsZVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiBuZXcgSG9zdGVkUm90YXRpb24oSG9zdGVkUm90YXRpb25UeXBlLk1PTkdPREJfU0lOR0xFX1VTRVIsIG9wdGlvbnMpO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIG1vbmdvRGJNdWx0aVVzZXIob3B0aW9uczogTXVsdGlVc2VySG9zdGVkUm90YXRpb25PcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBIb3N0ZWRSb3RhdGlvbihIb3N0ZWRSb3RhdGlvblR5cGUuTU9OR09EQl9NVUxUSV9VU0VSLCBvcHRpb25zLCBvcHRpb25zLm1hc3RlclNlY3JldCk7XG4gIH1cblxuICBwcml2YXRlIF9jb25uZWN0aW9ucz86IGVjMi5Db25uZWN0aW9ucztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZTogSG9zdGVkUm90YXRpb25UeXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IFNpbmdsZVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMgfCBNdWx0aVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXN0ZXJTZWNyZXQ/OiBJU2VjcmV0LFxuICApIHtcbiAgICBpZiAodHlwZS5pc011bHRpVXNlciAmJiAhbWFzdGVyU2VjcmV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBgbWFzdGVyU2VjcmV0YCBtdXN0IGJlIHNwZWNpZmllZCB3aGVuIHVzaW5nIHRoZSBtdWx0aSB1c2VyIHNjaGVtZS4nKTtcbiAgICB9XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYmluZChzZWNyZXQ6IElTZWNyZXQsIHNjb3BlOiBDb25zdHJ1Y3QpOiBDZm5Sb3RhdGlvblNjaGVkdWxlLkhvc3RlZFJvdGF0aW9uTGFtYmRhUHJvcGVydHkge1xuICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXNlY3JldHNtYW5hZ2VyLXJvdGF0aW9uc2NoZWR1bGUtaG9zdGVkcm90YXRpb25sYW1iZGEuaHRtbFxuICAgIFN0YWNrLm9mKHNjb3BlKS5hZGRUcmFuc2Zvcm0oJ0FXUzo6U2VjcmV0c01hbmFnZXItMjAyMC0wNy0yMycpO1xuXG4gICAgaWYgKCF0aGlzLnByb3BzLnZwYyAmJiB0aGlzLnByb3BzLnNlY3VyaXR5R3JvdXBzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2B2cGNgIG11c3QgYmUgc3BlY2lmaWVkIHdoZW4gc3BlY2lmeWluZyBgc2VjdXJpdHlHcm91cHNgLicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLnZwYykge1xuICAgICAgdGhpcy5fY29ubmVjdGlvbnMgPSBuZXcgZWMyLkNvbm5lY3Rpb25zKHtcbiAgICAgICAgc2VjdXJpdHlHcm91cHM6IHRoaXMucHJvcHMuc2VjdXJpdHlHcm91cHMgfHwgW25ldyBlYzIuU2VjdXJpdHlHcm91cChzY29wZSwgJ1NlY3VyaXR5R3JvdXAnLCB7XG4gICAgICAgICAgdnBjOiB0aGlzLnByb3BzLnZwYyxcbiAgICAgICAgfSldLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gUHJldmVudCBtYXN0ZXIgc2VjcmV0IGRlbGV0aW9uIHdoZW4gcm90YXRpb24gaXMgaW4gcGxhY2VcbiAgICBpZiAodGhpcy5tYXN0ZXJTZWNyZXQpIHtcbiAgICAgIHRoaXMubWFzdGVyU2VjcmV0LmRlbnlBY2NvdW50Um9vdERlbGV0ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByb3RhdGlvblR5cGU6IHRoaXMudHlwZS5uYW1lLFxuICAgICAga21zS2V5QXJuOiBzZWNyZXQuZW5jcnlwdGlvbktleT8ua2V5QXJuLFxuICAgICAgbWFzdGVyU2VjcmV0QXJuOiB0aGlzLm1hc3RlclNlY3JldD8uc2VjcmV0QXJuLFxuICAgICAgbWFzdGVyU2VjcmV0S21zS2V5QXJuOiB0aGlzLm1hc3RlclNlY3JldD8uZW5jcnlwdGlvbktleT8ua2V5QXJuLFxuICAgICAgcm90YXRpb25MYW1iZGFOYW1lOiB0aGlzLnByb3BzLmZ1bmN0aW9uTmFtZSxcbiAgICAgIHZwY1NlY3VyaXR5R3JvdXBJZHM6IHRoaXMuX2Nvbm5lY3Rpb25zPy5zZWN1cml0eUdyb3Vwcz8ubWFwKHMgPT4gcy5zZWN1cml0eUdyb3VwSWQpLmpvaW4oJywnKSxcbiAgICAgIHZwY1N1Ym5ldElkczogdGhpcy5wcm9wcy52cGM/LnNlbGVjdFN1Ym5ldHModGhpcy5wcm9wcy52cGNTdWJuZXRzKS5zdWJuZXRJZHMuam9pbignLCcpLFxuICAgIH07XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGdldCBjb25uZWN0aW9ucygpIHtcbiAgICBpZiAoIXRoaXMucHJvcHMudnBjKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1c2UgY29ubmVjdGlvbnMgZm9yIGEgaG9zdGVkIHJvdGF0aW9uIHRoYXQgaXMgbm90IGRlcGxveWVkIGluIGEgVlBDJyk7XG4gICAgfVxuXG4gICAgLy8gSWYgd2UgYXJlIGluIGEgdnBjIGFuZCBiaW5kKCkgaGFzIGJlZW4gY2FsbGVkIF9jb25uZWN0aW9ucyBzaG91bGQgYmUgZGVmaW5lZFxuICAgIGlmICghdGhpcy5fY29ubmVjdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVzZSBjb25uZWN0aW9ucyBmb3IgYSBob3N0ZWQgcm90YXRpb24gdGhhdCBoYXMgbm90IGJlZW4gYm91bmQgdG8gYSBzZWNyZXQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbnM7XG4gIH1cbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIEhvc3RlZFJvdGF0aW9uVHlwZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1ZU1FMX1NJTkdMRV9VU0VSID0gbmV3IEhvc3RlZFJvdGF0aW9uVHlwZSgnTXlTUUxTaW5nbGVVc2VyJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNWVNRTF9NVUxUSV9VU0VSID0gbmV3IEhvc3RlZFJvdGF0aW9uVHlwZSgnTXlTUUxNdWx0aVVzZXInLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBPU1RHUkVTUUxfU0lOR0xFX1VTRVIgPSBuZXcgSG9zdGVkUm90YXRpb25UeXBlKCdQb3N0Z3JlU1FMU2luZ2xlVXNlcicpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQT1NUR1JFU1FMX01VTFRJX1VTRVIgPSBuZXcgSG9zdGVkUm90YXRpb25UeXBlKCdQb3N0Z3JlU1FMTXVsdGlVc2VyJywgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9SQUNMRV9TSU5HTEVfVVNFUiA9IG5ldyBIb3N0ZWRSb3RhdGlvblR5cGUoJ09yYWNsZVNpbmdsZVVzZXInKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBPUkFDTEVfTVVMVElfVVNFUiA9IG5ldyBIb3N0ZWRSb3RhdGlvblR5cGUoJ09yYWNsZU11bHRpVXNlcicsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTUFSSUFEQl9TSU5HTEVfVVNFUiA9IG5ldyBIb3N0ZWRSb3RhdGlvblR5cGUoJ01hcmlhREJTaW5nbGVVc2VyJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1BUklBREJfTVVMVElfVVNFUiA9IG5ldyBIb3N0ZWRSb3RhdGlvblR5cGUoJ01hcmlhREJNdWx0aVVzZXInLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNRTFNFUlZFUl9TSU5HTEVfVVNFUiA9IG5ldyBIb3N0ZWRSb3RhdGlvblR5cGUoJ1NRTFNlcnZlclNpbmdsZVVzZXInKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTUUxTRVJWRVJfTVVMVElfVVNFUiA9IG5ldyBIb3N0ZWRSb3RhdGlvblR5cGUoJ1NRTFNlcnZlck11bHRpVXNlcicsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJFRFNISUZUX1NJTkdMRV9VU0VSID0gbmV3IEhvc3RlZFJvdGF0aW9uVHlwZSgnUmVkc2hpZnRTaW5nbGVVc2VyJylcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJFRFNISUZUX01VTFRJX1VTRVIgPSBuZXcgSG9zdGVkUm90YXRpb25UeXBlKCdSZWRzaGlmdE11bHRpVXNlcicsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTU9OR09EQl9TSU5HTEVfVVNFUiA9IG5ldyBIb3N0ZWRSb3RhdGlvblR5cGUoJ01vbmdvREJTaW5nbGVVc2VyJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1PTkdPREJfTVVMVElfVVNFUiA9IG5ldyBIb3N0ZWRSb3RhdGlvblR5cGUoJ01vbmdvREJNdWx0aVVzZXInLCB0cnVlKTtcblxuICAvKipcbiAgICogQHBhcmFtIG5hbWUgVGhlIHR5cGUgb2Ygcm90YXRpb25cbiAgICogQHBhcmFtIGlzTXVsdGlVc2VyIFdoZXRoZXIgdGhlIHJvdGF0aW9uIHVzZXMgdGhlIG11dGxpIHVzZXIgc2NoZW1lXG4gICAqL1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcsIHB1YmxpYyByZWFkb25seSBpc011bHRpVXNlcj86IGJvb2xlYW4pIHt9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm90YXRpb24tc2NoZWR1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyb3RhdGlvbi1zY2hlZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx3Q0FBd0M7QUFDeEMsd0NBQXdDO0FBQ3hDLHdDQUF3QztBQUV4Qyx3Q0FBMEQ7QUFHMUQseUVBQWlFO0FBd0RqRTs7R0FFRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsZUFBUTtJQUM1QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTRCOztRQUNwRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOztRQUVqQixJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDdEcsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO1NBQ25GO1FBRUQsVUFBSSxLQUFLLENBQUMsY0FBYywwQ0FBRSxlQUFlLENBQUMsWUFBWSxFQUFFO1lBQ3RELElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUU7Z0JBQzlCLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUM1QyxJQUFJLEdBQUcsQ0FBQyxtQkFBbUIsQ0FDekIsa0JBQWtCLFlBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxnQkFBZ0IsRUFDdkQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQ3BDLENBQ0YsQ0FBQzthQUNIO1lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDO1lBRTNGLEtBQUssQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUNsQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7Z0JBQ3RCLE9BQU8sRUFBRTtvQkFDUCwrQkFBK0I7b0JBQy9CLCtCQUErQjtvQkFDL0IsK0JBQStCO29CQUMvQix5Q0FBeUM7aUJBQzFDO2dCQUNELFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsU0FBUyxDQUFDO2FBQzFHLENBQUMsQ0FDSCxDQUFDO1lBQ0YsS0FBSyxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQ2xDLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztnQkFDdEIsT0FBTyxFQUFFO29CQUNQLGtDQUFrQztpQkFDbkM7Z0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2FBQ2pCLENBQUMsQ0FDSCxDQUFDO1NBQ0g7UUFFRCxJQUFJLDhDQUFtQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDeEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUztZQUNoQyxpQkFBaUIsUUFBRSxLQUFLLENBQUMsY0FBYywwQ0FBRSxXQUFXO1lBQ3BELG9CQUFvQixRQUFFLEtBQUssQ0FBQyxjQUFjLDBDQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztZQUNwRSxhQUFhLEVBQUU7Z0JBQ2Isc0JBQXNCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO2FBQzVGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsc0RBQXNEO1FBQ3RELEtBQUssQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztLQUN0Qzs7QUFwREgsNENBcURDOzs7QUE2Q0Q7O0dBRUc7QUFDSCxNQUFhLGNBQWM7SUF5RXpCLFlBQ21CLElBQXdCLEVBQ3hCLEtBQXVFLEVBQ3ZFLFlBQXNCO1FBRnRCLFNBQUksR0FBSixJQUFJLENBQW9CO1FBQ3hCLFVBQUssR0FBTCxLQUFLLENBQWtFO1FBQ3ZFLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBRXZDLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7U0FDM0Y7S0FDRjtJQWhGRCx3QkFBd0I7SUFDakIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUEyQyxFQUFFOztRQUN6RSxPQUFPLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQzFFO0lBRUQsdUJBQXVCO0lBQ2hCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBdUM7O1FBQ2xFLE9BQU8sSUFBSSxjQUFjLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUMvRjtJQUVELDZCQUE2QjtJQUN0QixNQUFNLENBQUMsb0JBQW9CLENBQUMsVUFBMkMsRUFBRTs7UUFDOUUsT0FBTyxJQUFJLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUMvRTtJQUVELDRCQUE0QjtJQUNyQixNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBdUM7O1FBQ3ZFLE9BQU8sSUFBSSxjQUFjLENBQUMsa0JBQWtCLENBQUMscUJBQXFCLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUNwRztJQUVELHlCQUF5QjtJQUNsQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBMkMsRUFBRTs7UUFDMUUsT0FBTyxJQUFJLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUMzRTtJQUVELHdCQUF3QjtJQUNqQixNQUFNLENBQUMsZUFBZSxDQUFDLE9BQXVDOztRQUNuRSxPQUFPLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDaEc7SUFFRCwwQkFBMEI7SUFDbkIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFVBQTJDLEVBQUU7O1FBQzNFLE9BQU8sSUFBSSxjQUFjLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDNUU7SUFFRCx5QkFBeUI7SUFDbEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQXVDOztRQUNwRSxPQUFPLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDakc7SUFFRCw2QkFBNkI7SUFDdEIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFVBQTJDLEVBQUU7O1FBQzdFLE9BQU8sSUFBSSxjQUFjLENBQUMsa0JBQWtCLENBQUMscUJBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDOUU7SUFFRCw0QkFBNEI7SUFDckIsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE9BQXVDOztRQUN0RSxPQUFPLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDbkc7SUFFRCwyQkFBMkI7SUFDcEIsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFVBQTJDLEVBQUU7O1FBQzVFLE9BQU8sSUFBSSxjQUFjLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0U7SUFFRCwwQkFBMEI7SUFDbkIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQXVDOztRQUNyRSxPQUFPLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDbEc7SUFFRCwwQkFBMEI7SUFDbkIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFVBQTJDLEVBQUU7O1FBQzNFLE9BQU8sSUFBSSxjQUFjLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDNUU7SUFFRCx5QkFBeUI7SUFDbEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQXVDOztRQUNwRSxPQUFPLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDakc7SUFjRDs7T0FFRztJQUNJLElBQUksQ0FBQyxNQUFlLEVBQUUsS0FBZ0I7OztRQUMzQywwSUFBMEk7UUFDMUksWUFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUUvRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUU7WUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1NBQzlFO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNsQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQztnQkFDdEMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUU7d0JBQzFGLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUc7cUJBQ3BCLENBQUMsQ0FBQzthQUNKLENBQUMsQ0FBQztTQUNKO1FBRUQsMkRBQTJEO1FBQzNELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLENBQUM7U0FDM0M7UUFFRCxPQUFPO1lBQ0wsWUFBWSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUM1QixTQUFTLFFBQUUsTUFBTSxDQUFDLGFBQWEsMENBQUUsTUFBTTtZQUN2QyxlQUFlLFFBQUUsSUFBSSxDQUFDLFlBQVksMENBQUUsU0FBUztZQUM3QyxxQkFBcUIsY0FBRSxJQUFJLENBQUMsWUFBWSwwQ0FBRSxhQUFhLDBDQUFFLE1BQU07WUFDL0Qsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZO1lBQzNDLG1CQUFtQixjQUFFLElBQUksQ0FBQyxZQUFZLDBDQUFFLGNBQWMsMENBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQzdGLFlBQVksUUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsMENBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ3ZGLENBQUM7S0FDSDtJQUVEOztPQUVHO0lBQ0gsSUFBVyxXQUFXO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLDRFQUE0RSxDQUFDLENBQUM7U0FDL0Y7UUFFRCwrRUFBK0U7UUFDL0UsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRkFBa0YsQ0FBQyxDQUFDO1NBQ3JHO1FBRUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0tBQzFCOztBQXBJSCx3Q0FxSUM7OztBQUVEOztHQUVHO0FBQ0gsTUFBYSxrQkFBa0I7SUEyQzdCOzs7T0FHRztJQUNILFlBQW9DLElBQVksRUFBa0IsV0FBcUI7UUFBbkQsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFrQixnQkFBVyxHQUFYLFdBQVcsQ0FBVTtLQUFJOztBQS9DN0YsZ0RBZ0RDOzs7QUEvQ0Msd0JBQXdCO0FBQ0Qsb0NBQWlCLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBRXJGLHVCQUF1QjtBQUNBLG1DQUFnQixHQUFHLElBQUksa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFekYsNkJBQTZCO0FBQ04seUNBQXNCLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBRS9GLDRCQUE0QjtBQUNMLHdDQUFxQixHQUFHLElBQUksa0JBQWtCLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFbkcseUJBQXlCO0FBQ0YscUNBQWtCLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRXZGLHdCQUF3QjtBQUNELG9DQUFpQixHQUFHLElBQUksa0JBQWtCLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFM0YsMEJBQTBCO0FBQ0gsc0NBQW1CLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBRXpGLHlCQUF5QjtBQUNGLHFDQUFrQixHQUFHLElBQUksa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFN0YsNkJBQTZCO0FBQ04sd0NBQXFCLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0FBRTVGLDRCQUE0QjtBQUNMLHVDQUFvQixHQUFHLElBQUksa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFakcsMkJBQTJCO0FBQ0osdUNBQW9CLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0FBRTFGLDBCQUEwQjtBQUNILHNDQUFtQixHQUFHLElBQUksa0JBQWtCLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFL0YsMEJBQTBCO0FBQ0gsc0NBQW1CLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBRXpGLHlCQUF5QjtBQUNGLHFDQUFrQixHQUFHLElBQUksa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBlYzIgZnJvbSAnQGF3cy1jZGsvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnQGF3cy1jZGsvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnQGF3cy1jZGsvYXdzLWttcyc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnQGF3cy1jZGsvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgUmVzb3VyY2UsIFN0YWNrIH0gZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElTZWNyZXQgfSBmcm9tICcuL3NlY3JldCc7XG5pbXBvcnQgeyBDZm5Sb3RhdGlvblNjaGVkdWxlIH0gZnJvbSAnLi9zZWNyZXRzbWFuYWdlci5nZW5lcmF0ZWQnO1xuXG4vKipcbiAqIE9wdGlvbnMgdG8gYWRkIGEgcm90YXRpb24gc2NoZWR1bGUgdG8gYSBzZWNyZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm90YXRpb25TY2hlZHVsZU9wdGlvbnMge1xuICAvKipcbiAgICogQSBMYW1iZGEgZnVuY3Rpb24gdGhhdCBjYW4gcm90YXRlIHRoZSBzZWNyZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZWl0aGVyIGByb3RhdGlvbkxhbWJkYWAgb3IgYGhvc3RlZFJvdGF0aW9uYCBtdXN0IGJlIHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgcm90YXRpb25MYW1iZGE/OiBsYW1iZGEuSUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBIb3N0ZWQgcm90YXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBlaXRoZXIgYHJvdGF0aW9uTGFtYmRhYCBvciBgaG9zdGVkUm90YXRpb25gIG11c3QgYmUgc3BlY2lmaWVkXG4gICAqL1xuICByZWFkb25seSBob3N0ZWRSb3RhdGlvbj86IEhvc3RlZFJvdGF0aW9uO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIHRoZSBwcmV2aW91cyByb3RhdGlvbiBiZWZvcmVcbiAgICogU2VjcmV0cyBNYW5hZ2VyIHRyaWdnZXJzIHRoZSBuZXh0IGF1dG9tYXRpYyByb3RhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24uZGF5cygzMClcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9tYXRpY2FsbHlBZnRlcj86IER1cmF0aW9uO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBhIFJvdGF0aW9uU2NoZWR1bGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm90YXRpb25TY2hlZHVsZVByb3BzIGV4dGVuZHMgUm90YXRpb25TY2hlZHVsZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHNlY3JldCB0byByb3RhdGUuXG4gICAqXG4gICAqIElmIGhvc3RlZCByb3RhdGlvbiBpcyB1c2VkLCB0aGlzIG11c3QgYmUgYSBKU09OIHN0cmluZyB3aXRoIHRoZSBmb2xsb3dpbmcgZm9ybWF0OlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiAgIFwiZW5naW5lXCI6IDxyZXF1aXJlZDogZGF0YWJhc2UgZW5naW5lPixcbiAgICogICBcImhvc3RcIjogPHJlcXVpcmVkOiBpbnN0YW5jZSBob3N0IG5hbWU+LFxuICAgKiAgIFwidXNlcm5hbWVcIjogPHJlcXVpcmVkOiB1c2VybmFtZT4sXG4gICAqICAgXCJwYXNzd29yZFwiOiA8cmVxdWlyZWQ6IHBhc3N3b3JkPixcbiAgICogICBcImRibmFtZVwiOiA8b3B0aW9uYWw6IGRhdGFiYXNlIG5hbWU+LFxuICAgKiAgIFwicG9ydFwiOiA8b3B0aW9uYWw6IGlmIG5vdCBzcGVjaWZpZWQsIGRlZmF1bHQgcG9ydCB3aWxsIGJlIHVzZWQ+LFxuICAgKiAgIFwibWFzdGVyYXJuXCI6IDxyZXF1aXJlZCBmb3IgbXVsdGkgdXNlciByb3RhdGlvbjogdGhlIGFybiBvZiB0aGUgbWFzdGVyIHNlY3JldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlIHVzZXJzL2NoYW5nZSBwYXNzd29yZHM+XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSBjYXNlIGZvciBhIHNlY3JldCByZWZlcmVuY2VkIGZyb20gYW4gYEFXUzo6U2VjcmV0c01hbmFnZXI6OlNlY3JldFRhcmdldEF0dGFjaG1lbnRgXG4gICAqIG9yIGFuIGBJU2VjcmV0YCByZXR1cm5lZCBieSB0aGUgYGF0dGFjaCgpYCBtZXRob2Qgb2YgYFNlY3JldGAuXG4gICAqL1xuICByZWFkb25seSBzZWNyZXQ6IElTZWNyZXQ7XG59XG5cbi8qKlxuICogQSByb3RhdGlvbiBzY2hlZHVsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJvdGF0aW9uU2NoZWR1bGUgZXh0ZW5kcyBSZXNvdXJjZSB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSb3RhdGlvblNjaGVkdWxlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgaWYgKCghcHJvcHMucm90YXRpb25MYW1iZGEgJiYgIXByb3BzLmhvc3RlZFJvdGF0aW9uKSB8fCAocHJvcHMucm90YXRpb25MYW1iZGEgJiYgcHJvcHMuaG9zdGVkUm90YXRpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ09uZSBvZiBgcm90YXRpb25MYW1iZGFgIG9yIGBob3N0ZWRSb3RhdGlvbmAgbXVzdCBiZSBzcGVjaWZpZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnJvdGF0aW9uTGFtYmRhPy5wZXJtaXNzaW9uc05vZGUuZGVmYXVsdENoaWxkKSB7XG4gICAgICBpZiAocHJvcHMuc2VjcmV0LmVuY3J5cHRpb25LZXkpIHtcbiAgICAgICAgcHJvcHMuc2VjcmV0LmVuY3J5cHRpb25LZXkuZ3JhbnRFbmNyeXB0RGVjcnlwdChcbiAgICAgICAgICBuZXcga21zLlZpYVNlcnZpY2VQcmluY2lwYWwoXG4gICAgICAgICAgICBgc2VjcmV0c21hbmFnZXIuJHtTdGFjay5vZih0aGlzKS5yZWdpb259LmFtYXpvbmF3cy5jb21gLFxuICAgICAgICAgICAgcHJvcHMucm90YXRpb25MYW1iZGEuZ3JhbnRQcmluY2lwYWwsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcHJvcHMucm90YXRpb25MYW1iZGEuZ3JhbnRJbnZva2UobmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdzZWNyZXRzbWFuYWdlci5hbWF6b25hd3MuY29tJykpO1xuXG4gICAgICBwcm9wcy5yb3RhdGlvbkxhbWJkYS5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAnc2VjcmV0c21hbmFnZXI6RGVzY3JpYmVTZWNyZXQnLFxuICAgICAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOkdldFNlY3JldFZhbHVlJyxcbiAgICAgICAgICAgICdzZWNyZXRzbWFuYWdlcjpQdXRTZWNyZXRWYWx1ZScsXG4gICAgICAgICAgICAnc2VjcmV0c21hbmFnZXI6VXBkYXRlU2VjcmV0VmVyc2lvblN0YWdlJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW3Byb3BzLnNlY3JldC5zZWNyZXRGdWxsQXJuID8gcHJvcHMuc2VjcmV0LnNlY3JldEZ1bGxBcm4gOiBgJHtwcm9wcy5zZWNyZXQuc2VjcmV0QXJufS0/Pz8/Pz9gXSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgICAgcHJvcHMucm90YXRpb25MYW1iZGEuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOkdldFJhbmRvbVBhc3N3b3JkJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBuZXcgQ2ZuUm90YXRpb25TY2hlZHVsZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBzZWNyZXRJZDogcHJvcHMuc2VjcmV0LnNlY3JldEFybixcbiAgICAgIHJvdGF0aW9uTGFtYmRhQXJuOiBwcm9wcy5yb3RhdGlvbkxhbWJkYT8uZnVuY3Rpb25Bcm4sXG4gICAgICBob3N0ZWRSb3RhdGlvbkxhbWJkYTogcHJvcHMuaG9zdGVkUm90YXRpb24/LmJpbmQocHJvcHMuc2VjcmV0LCB0aGlzKSxcbiAgICAgIHJvdGF0aW9uUnVsZXM6IHtcbiAgICAgICAgYXV0b21hdGljYWxseUFmdGVyRGF5czogcHJvcHMuYXV0b21hdGljYWxseUFmdGVyICYmIHByb3BzLmF1dG9tYXRpY2FsbHlBZnRlci50b0RheXMoKSB8fCAzMCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBQcmV2ZW50IHNlY3JldHMgZGVsZXRpb25zIHdoZW4gcm90YXRpb24gaXMgaW4gcGxhY2VcbiAgICBwcm9wcy5zZWNyZXQuZGVueUFjY291bnRSb290RGVsZXRlKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBTaW5nbGUgdXNlciBob3N0ZWQgcm90YXRpb24gb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNpbmdsZVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogQSBuYW1lIGZvciB0aGUgTGFtYmRhIGNyZWF0ZWQgdG8gcm90YXRlIHRoZSBzZWNyZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIENsb3VkRm9ybWF0aW9uIGdlbmVyYXRlZCBuYW1lXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBzZWN1cml0eSBncm91cHMgZm9yIHRoZSBMYW1iZGEgY3JlYXRlZCB0byByb3RhdGUgdGhlIHNlY3JldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmV3IHNlY3VyaXR5IGdyb3VwIGlzIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLklTZWN1cml0eUdyb3VwW107XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgd2hlcmUgdGhlIExhbWJkYSByb3RhdGlvbiBmdW5jdGlvbiB3aWxsIHJ1bi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgTGFtYmRhIGlzIG5vdCBkZXBsb3llZCBpbiBhIFZQQ1xuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHN1Ym5ldHMgaW4gdGhlIFZQQyB3aGVyZSB0aGUgTGFtYmRhIHJvdGF0aW9uIGZ1bmN0aW9uIHdpbGwgcnVuLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBWcGMgZGVmYXVsdCBzdHJhdGVneSBpZiBub3Qgc3BlY2lmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjU3VibmV0cz86IGVjMi5TdWJuZXRTZWxlY3Rpb247XG59XG5cbi8qKlxuICogTXVsdGkgdXNlciBob3N0ZWQgcm90YXRpb24gb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE11bHRpVXNlckhvc3RlZFJvdGF0aW9uT3B0aW9ucyBleHRlbmRzIFNpbmdsZVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1hc3RlciBzZWNyZXQgZm9yIGEgbXVsdGkgdXNlciByb3RhdGlvbiBzY2hlbWVcbiAgICovXG4gIHJlYWRvbmx5IG1hc3RlclNlY3JldDogSVNlY3JldDtcbn1cblxuLyoqXG4gKiBBIGhvc3RlZCByb3RhdGlvblxuICovXG5leHBvcnQgY2xhc3MgSG9zdGVkUm90YXRpb24gaW1wbGVtZW50cyBlYzIuSUNvbm5lY3RhYmxlIHtcbiAgLyoqIE15U1FMIFNpbmdsZSBVc2VyICovXG4gIHB1YmxpYyBzdGF0aWMgbXlzcWxTaW5nbGVVc2VyKG9wdGlvbnM6IFNpbmdsZVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiBuZXcgSG9zdGVkUm90YXRpb24oSG9zdGVkUm90YXRpb25UeXBlLk1ZU1FMX1NJTkdMRV9VU0VSLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKiBNeVNRTCBNdWx0aSBVc2VyICovXG4gIHB1YmxpYyBzdGF0aWMgbXlzcWxNdWx0aVVzZXIob3B0aW9uczogTXVsdGlVc2VySG9zdGVkUm90YXRpb25PcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBIb3N0ZWRSb3RhdGlvbihIb3N0ZWRSb3RhdGlvblR5cGUuTVlTUUxfTVVMVElfVVNFUiwgb3B0aW9ucywgb3B0aW9ucy5tYXN0ZXJTZWNyZXQpO1xuICB9XG5cbiAgLyoqIFBvc3RncmVTUUwgU2luZ2xlIFVzZXIgKi9cbiAgcHVibGljIHN0YXRpYyBwb3N0Z3JlU3FsU2luZ2xlVXNlcihvcHRpb25zOiBTaW5nbGVVc2VySG9zdGVkUm90YXRpb25PcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gbmV3IEhvc3RlZFJvdGF0aW9uKEhvc3RlZFJvdGF0aW9uVHlwZS5QT1NUR1JFU1FMX1NJTkdMRV9VU0VSLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKiBQb3N0Z3JlU1FMIE11bHRpIFVzZXIgKi9cbiAgcHVibGljIHN0YXRpYyBwb3N0Z3JlU3FsTXVsdGlVc2VyKG9wdGlvbnM6IE11bHRpVXNlckhvc3RlZFJvdGF0aW9uT3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgSG9zdGVkUm90YXRpb24oSG9zdGVkUm90YXRpb25UeXBlLlBPU1RHUkVTUUxfTVVMVElfVVNFUiwgb3B0aW9ucywgb3B0aW9ucy5tYXN0ZXJTZWNyZXQpO1xuICB9XG5cbiAgLyoqIE9yYWNsZSBTaW5nbGUgVXNlciAqL1xuICBwdWJsaWMgc3RhdGljIG9yYWNsZVNpbmdsZVVzZXIob3B0aW9uczogU2luZ2xlVXNlckhvc3RlZFJvdGF0aW9uT3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBIb3N0ZWRSb3RhdGlvbihIb3N0ZWRSb3RhdGlvblR5cGUuT1JBQ0xFX1NJTkdMRV9VU0VSLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKiBPcmFjbGUgTXVsdGkgVXNlciAqL1xuICBwdWJsaWMgc3RhdGljIG9yYWNsZU11bHRpVXNlcihvcHRpb25zOiBNdWx0aVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEhvc3RlZFJvdGF0aW9uKEhvc3RlZFJvdGF0aW9uVHlwZS5PUkFDTEVfTVVMVElfVVNFUiwgb3B0aW9ucywgb3B0aW9ucy5tYXN0ZXJTZWNyZXQpO1xuICB9XG5cbiAgLyoqIE1hcmlhREIgU2luZ2xlIFVzZXIgKi9cbiAgcHVibGljIHN0YXRpYyBtYXJpYURiU2luZ2xlVXNlcihvcHRpb25zOiBTaW5nbGVVc2VySG9zdGVkUm90YXRpb25PcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gbmV3IEhvc3RlZFJvdGF0aW9uKEhvc3RlZFJvdGF0aW9uVHlwZS5NQVJJQURCX1NJTkdMRV9VU0VSLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKiBNYXJpYURCIE11bHRpIFVzZXIgKi9cbiAgcHVibGljIHN0YXRpYyBtYXJpYURiTXVsdGlVc2VyKG9wdGlvbnM6IE11bHRpVXNlckhvc3RlZFJvdGF0aW9uT3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgSG9zdGVkUm90YXRpb24oSG9zdGVkUm90YXRpb25UeXBlLk1BUklBREJfTVVMVElfVVNFUiwgb3B0aW9ucywgb3B0aW9ucy5tYXN0ZXJTZWNyZXQpO1xuICB9XG5cbiAgLyoqIFNRTCBTZXJ2ZXIgU2luZ2xlIFVzZXIgKi9cbiAgcHVibGljIHN0YXRpYyBzcWxTZXJ2ZXJTaW5nbGVVc2VyKG9wdGlvbnM6IFNpbmdsZVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiBuZXcgSG9zdGVkUm90YXRpb24oSG9zdGVkUm90YXRpb25UeXBlLlNRTFNFUlZFUl9TSU5HTEVfVVNFUiwgb3B0aW9ucyk7XG4gIH1cblxuICAvKiogU1FMIFNlcnZlciBNdWx0aSBVc2VyICovXG4gIHB1YmxpYyBzdGF0aWMgc3FsU2VydmVyTXVsdGlVc2VyKG9wdGlvbnM6IE11bHRpVXNlckhvc3RlZFJvdGF0aW9uT3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgSG9zdGVkUm90YXRpb24oSG9zdGVkUm90YXRpb25UeXBlLlNRTFNFUlZFUl9NVUxUSV9VU0VSLCBvcHRpb25zLCBvcHRpb25zLm1hc3RlclNlY3JldCk7XG4gIH1cblxuICAvKiogUmVkc2hpZnQgU2luZ2xlIFVzZXIgKi9cbiAgcHVibGljIHN0YXRpYyByZWRzaGlmdFNpbmdsZVVzZXIob3B0aW9uczogU2luZ2xlVXNlckhvc3RlZFJvdGF0aW9uT3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBIb3N0ZWRSb3RhdGlvbihIb3N0ZWRSb3RhdGlvblR5cGUuUkVEU0hJRlRfU0lOR0xFX1VTRVIsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqIFJlZHNoaWZ0IE11bHRpIFVzZXIgKi9cbiAgcHVibGljIHN0YXRpYyByZWRzaGlmdE11bHRpVXNlcihvcHRpb25zOiBNdWx0aVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEhvc3RlZFJvdGF0aW9uKEhvc3RlZFJvdGF0aW9uVHlwZS5SRURTSElGVF9NVUxUSV9VU0VSLCBvcHRpb25zLCBvcHRpb25zLm1hc3RlclNlY3JldCk7XG4gIH1cblxuICAvKiogTW9uZ29EQiBTaW5nbGUgVXNlciAqL1xuICBwdWJsaWMgc3RhdGljIG1vbmdvRGJTaW5nbGVVc2VyKG9wdGlvbnM6IFNpbmdsZVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiBuZXcgSG9zdGVkUm90YXRpb24oSG9zdGVkUm90YXRpb25UeXBlLk1PTkdPREJfU0lOR0xFX1VTRVIsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqIE1vbmdvREIgTXVsdGkgVXNlciAqL1xuICBwdWJsaWMgc3RhdGljIG1vbmdvRGJNdWx0aVVzZXIob3B0aW9uczogTXVsdGlVc2VySG9zdGVkUm90YXRpb25PcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBIb3N0ZWRSb3RhdGlvbihIb3N0ZWRSb3RhdGlvblR5cGUuTU9OR09EQl9NVUxUSV9VU0VSLCBvcHRpb25zLCBvcHRpb25zLm1hc3RlclNlY3JldCk7XG4gIH1cblxuICBwcml2YXRlIF9jb25uZWN0aW9ucz86IGVjMi5Db25uZWN0aW9ucztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZTogSG9zdGVkUm90YXRpb25UeXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IFNpbmdsZVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMgfCBNdWx0aVVzZXJIb3N0ZWRSb3RhdGlvbk9wdGlvbnMsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXN0ZXJTZWNyZXQ/OiBJU2VjcmV0LFxuICApIHtcbiAgICBpZiAodHlwZS5pc011bHRpVXNlciAmJiAhbWFzdGVyU2VjcmV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBgbWFzdGVyU2VjcmV0YCBtdXN0IGJlIHNwZWNpZmllZCB3aGVuIHVzaW5nIHRoZSBtdWx0aSB1c2VyIHNjaGVtZS4nKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgdGhpcyBob3N0ZWQgcm90YXRpb24gdG8gYSBzZWNyZXRcbiAgICovXG4gIHB1YmxpYyBiaW5kKHNlY3JldDogSVNlY3JldCwgc2NvcGU6IENvbnN0cnVjdCk6IENmblJvdGF0aW9uU2NoZWR1bGUuSG9zdGVkUm90YXRpb25MYW1iZGFQcm9wZXJ0eSB7XG4gICAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc2VjcmV0c21hbmFnZXItcm90YXRpb25zY2hlZHVsZS1ob3N0ZWRyb3RhdGlvbmxhbWJkYS5odG1sXG4gICAgU3RhY2sub2Yoc2NvcGUpLmFkZFRyYW5zZm9ybSgnQVdTOjpTZWNyZXRzTWFuYWdlci0yMDIwLTA3LTIzJyk7XG5cbiAgICBpZiAoIXRoaXMucHJvcHMudnBjICYmIHRoaXMucHJvcHMuc2VjdXJpdHlHcm91cHMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYHZwY2AgbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBzcGVjaWZ5aW5nIGBzZWN1cml0eUdyb3Vwc2AuJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMudnBjKSB7XG4gICAgICB0aGlzLl9jb25uZWN0aW9ucyA9IG5ldyBlYzIuQ29ubmVjdGlvbnMoe1xuICAgICAgICBzZWN1cml0eUdyb3VwczogdGhpcy5wcm9wcy5zZWN1cml0eUdyb3VwcyB8fCBbbmV3IGVjMi5TZWN1cml0eUdyb3VwKHNjb3BlLCAnU2VjdXJpdHlHcm91cCcsIHtcbiAgICAgICAgICB2cGM6IHRoaXMucHJvcHMudnBjLFxuICAgICAgICB9KV0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBQcmV2ZW50IG1hc3RlciBzZWNyZXQgZGVsZXRpb24gd2hlbiByb3RhdGlvbiBpcyBpbiBwbGFjZVxuICAgIGlmICh0aGlzLm1hc3RlclNlY3JldCkge1xuICAgICAgdGhpcy5tYXN0ZXJTZWNyZXQuZGVueUFjY291bnRSb290RGVsZXRlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJvdGF0aW9uVHlwZTogdGhpcy50eXBlLm5hbWUsXG4gICAgICBrbXNLZXlBcm46IHNlY3JldC5lbmNyeXB0aW9uS2V5Py5rZXlBcm4sXG4gICAgICBtYXN0ZXJTZWNyZXRBcm46IHRoaXMubWFzdGVyU2VjcmV0Py5zZWNyZXRBcm4sXG4gICAgICBtYXN0ZXJTZWNyZXRLbXNLZXlBcm46IHRoaXMubWFzdGVyU2VjcmV0Py5lbmNyeXB0aW9uS2V5Py5rZXlBcm4sXG4gICAgICByb3RhdGlvbkxhbWJkYU5hbWU6IHRoaXMucHJvcHMuZnVuY3Rpb25OYW1lLFxuICAgICAgdnBjU2VjdXJpdHlHcm91cElkczogdGhpcy5fY29ubmVjdGlvbnM/LnNlY3VyaXR5R3JvdXBzPy5tYXAocyA9PiBzLnNlY3VyaXR5R3JvdXBJZCkuam9pbignLCcpLFxuICAgICAgdnBjU3VibmV0SWRzOiB0aGlzLnByb3BzLnZwYz8uc2VsZWN0U3VibmV0cyh0aGlzLnByb3BzLnZwY1N1Ym5ldHMpLnN1Ym5ldElkcy5qb2luKCcsJyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cCBjb25uZWN0aW9ucyBmb3IgdGhpcyBob3N0ZWQgcm90YXRpb25cbiAgICovXG4gIHB1YmxpYyBnZXQgY29ubmVjdGlvbnMoKSB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnZwYykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXNlIGNvbm5lY3Rpb25zIGZvciBhIGhvc3RlZCByb3RhdGlvbiB0aGF0IGlzIG5vdCBkZXBsb3llZCBpbiBhIFZQQycpO1xuICAgIH1cblxuICAgIC8vIElmIHdlIGFyZSBpbiBhIHZwYyBhbmQgYmluZCgpIGhhcyBiZWVuIGNhbGxlZCBfY29ubmVjdGlvbnMgc2hvdWxkIGJlIGRlZmluZWRcbiAgICBpZiAoIXRoaXMuX2Nvbm5lY3Rpb25zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1c2UgY29ubmVjdGlvbnMgZm9yIGEgaG9zdGVkIHJvdGF0aW9uIHRoYXQgaGFzIG5vdCBiZWVuIGJvdW5kIHRvIGEgc2VjcmV0Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25zO1xuICB9XG59XG5cbi8qKlxuICogSG9zdGVkIHJvdGF0aW9uIHR5cGVcbiAqL1xuZXhwb3J0IGNsYXNzIEhvc3RlZFJvdGF0aW9uVHlwZSB7XG4gIC8qKiBNeVNRTCBTaW5nbGUgVXNlciAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1ZU1FMX1NJTkdMRV9VU0VSID0gbmV3IEhvc3RlZFJvdGF0aW9uVHlwZSgnTXlTUUxTaW5nbGVVc2VyJyk7XG5cbiAgLyoqIE15U1FMIE11bHRpIFVzZXIgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNWVNRTF9NVUxUSV9VU0VSID0gbmV3IEhvc3RlZFJvdGF0aW9uVHlwZSgnTXlTUUxNdWx0aVVzZXInLCB0cnVlKTtcblxuICAvKiogUG9zdGdyZVNRTCBTaW5nbGUgVXNlciAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBPU1RHUkVTUUxfU0lOR0xFX1VTRVIgPSBuZXcgSG9zdGVkUm90YXRpb25UeXBlKCdQb3N0Z3JlU1FMU2luZ2xlVXNlcicpO1xuXG4gIC8qKiBQb3N0Z3JlU1FMIE11bHRpIFVzZXIgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQT1NUR1JFU1FMX01VTFRJX1VTRVIgPSBuZXcgSG9zdGVkUm90YXRpb25UeXBlKCdQb3N0Z3JlU1FMTXVsdGlVc2VyJywgdHJ1ZSk7XG5cbiAgLyoqIE9yYWNsZSBTaW5nbGUgVXNlciAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9SQUNMRV9TSU5HTEVfVVNFUiA9IG5ldyBIb3N0ZWRSb3RhdGlvblR5cGUoJ09yYWNsZVNpbmdsZVVzZXInKTtcblxuICAvKiogT3JhY2xlIE11bHRpIFVzZXIgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBPUkFDTEVfTVVMVElfVVNFUiA9IG5ldyBIb3N0ZWRSb3RhdGlvblR5cGUoJ09yYWNsZU11bHRpVXNlcicsIHRydWUpO1xuXG4gIC8qKiBNYXJpYURCIFNpbmdsZSBVc2VyICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTUFSSUFEQl9TSU5HTEVfVVNFUiA9IG5ldyBIb3N0ZWRSb3RhdGlvblR5cGUoJ01hcmlhREJTaW5nbGVVc2VyJyk7XG5cbiAgLyoqIE1hcmlhREIgTXVsdGkgVXNlciAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1BUklBREJfTVVMVElfVVNFUiA9IG5ldyBIb3N0ZWRSb3RhdGlvblR5cGUoJ01hcmlhREJNdWx0aVVzZXInLCB0cnVlKTtcblxuICAvKiogU1FMIFNlcnZlciBTaW5nbGUgVXNlciAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNRTFNFUlZFUl9TSU5HTEVfVVNFUiA9IG5ldyBIb3N0ZWRSb3RhdGlvblR5cGUoJ1NRTFNlcnZlclNpbmdsZVVzZXInKVxuXG4gIC8qKiBTUUwgU2VydmVyIE11bHRpIFVzZXIgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTUUxTRVJWRVJfTVVMVElfVVNFUiA9IG5ldyBIb3N0ZWRSb3RhdGlvblR5cGUoJ1NRTFNlcnZlck11bHRpVXNlcicsIHRydWUpO1xuXG4gIC8qKiBSZWRzaGlmdCBTaW5nbGUgVXNlciAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJFRFNISUZUX1NJTkdMRV9VU0VSID0gbmV3IEhvc3RlZFJvdGF0aW9uVHlwZSgnUmVkc2hpZnRTaW5nbGVVc2VyJylcblxuICAvKiogUmVkc2hpZnQgTXVsdGkgVXNlciAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJFRFNISUZUX01VTFRJX1VTRVIgPSBuZXcgSG9zdGVkUm90YXRpb25UeXBlKCdSZWRzaGlmdE11bHRpVXNlcicsIHRydWUpO1xuXG4gIC8qKiBNb25nb0RCIFNpbmdsZSBVc2VyICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTU9OR09EQl9TSU5HTEVfVVNFUiA9IG5ldyBIb3N0ZWRSb3RhdGlvblR5cGUoJ01vbmdvREJTaW5nbGVVc2VyJyk7XG5cbiAgLyoqIE1vbmdvREIgTXVsdGkgVXNlciAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1PTkdPREJfTVVMVElfVVNFUiA9IG5ldyBIb3N0ZWRSb3RhdGlvblR5cGUoJ01vbmdvREJNdWx0aVVzZXInLCB0cnVlKTtcblxuICAvKipcbiAgICogQHBhcmFtIG5hbWUgVGhlIHR5cGUgb2Ygcm90YXRpb25cbiAgICogQHBhcmFtIGlzTXVsdGlVc2VyIFdoZXRoZXIgdGhlIHJvdGF0aW9uIHVzZXMgdGhlIG11dGxpIHVzZXIgc2NoZW1lXG4gICAqL1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcsIHB1YmxpYyByZWFkb25seSBpc011bHRpVXNlcj86IGJvb2xlYW4pIHt9XG59XG4iXX0=

@@ -7,12 +7,9 @@ import * as ec2 from '@aws-cdk/aws-ec2';

/**
* Options for a SecretRotationApplication.
*
* @stability stable
* Options for a SecretRotationApplication
*/
export interface SecretRotationApplicationOptions {
/**
* Whether the rotation application uses the mutli user scheme.
* Whether the rotation application uses the mutli user scheme
*
* @default false
* @stability stable
*/

@@ -23,92 +20,62 @@ readonly isMultiUser?: boolean;

* A secret rotation serverless application.
*
* @stability stable
*/
export declare class SecretRotationApplication {
/**
* Conducts an AWS SecretsManager secret rotation for RDS MariaDB using the single user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS MariaDB using the single user rotation scheme
*/
static readonly MARIADB_ROTATION_SINGLE_USER: SecretRotationApplication;
/**
* Conducts an AWS SecretsManager secret rotation for RDS MariaDB using the multi user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS MariaDB using the multi user rotation scheme
*/
static readonly MARIADB_ROTATION_MULTI_USER: SecretRotationApplication;
/**
* Conducts an AWS SecretsManager secret rotation for RDS MySQL using the single user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS MySQL using the single user rotation scheme
*/
static readonly MYSQL_ROTATION_SINGLE_USER: SecretRotationApplication;
/**
* Conducts an AWS SecretsManager secret rotation for RDS MySQL using the multi user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS MySQL using the multi user rotation scheme
*/
static readonly MYSQL_ROTATION_MULTI_USER: SecretRotationApplication;
/**
* Conducts an AWS SecretsManager secret rotation for RDS Oracle using the single user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS Oracle using the single user rotation scheme
*/
static readonly ORACLE_ROTATION_SINGLE_USER: SecretRotationApplication;
/**
* Conducts an AWS SecretsManager secret rotation for RDS Oracle using the multi user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS Oracle using the multi user rotation scheme
*/
static readonly ORACLE_ROTATION_MULTI_USER: SecretRotationApplication;
/**
* Conducts an AWS SecretsManager secret rotation for RDS PostgreSQL using the single user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS PostgreSQL using the single user rotation scheme
*/
static readonly POSTGRES_ROTATION_SINGLE_USER: SecretRotationApplication;
/**
* Conducts an AWS SecretsManager secret rotation for RDS PostgreSQL using the multi user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS PostgreSQL using the multi user rotation scheme
*/
static readonly POSTGRES_ROTATION_MULTI_USER: SecretRotationApplication;
/**
* Conducts an AWS SecretsManager secret rotation for RDS SQL Server using the single user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS SQL Server using the single user rotation scheme
*/
static readonly SQLSERVER_ROTATION_SINGLE_USER: SecretRotationApplication;
/**
* Conducts an AWS SecretsManager secret rotation for RDS SQL Server using the multi user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS SQL Server using the multi user rotation scheme
*/
static readonly SQLSERVER_ROTATION_MULTI_USER: SecretRotationApplication;
/**
* Conducts an AWS SecretsManager secret rotation for Amazon Redshift using the single user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for Amazon Redshift using the single user rotation scheme
*/
static readonly REDSHIFT_ROTATION_SINGLE_USER: SecretRotationApplication;
/**
* Conducts an AWS SecretsManager secret rotation for Amazon Redshift using the multi user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for Amazon Redshift using the multi user rotation scheme
*/
static readonly REDSHIFT_ROTATION_MULTI_USER: SecretRotationApplication;
/**
* Conducts an AWS SecretsManager secret rotation for MongoDB using the single user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for MongoDB using the single user rotation scheme
*/
static readonly MONGODB_ROTATION_SINGLE_USER: SecretRotationApplication;
/**
* Conducts an AWS SecretsManager secret rotation for MongoDB using the multi user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for MongoDB using the multi user rotation scheme
*/
static readonly MONGODB_ROTATION_MULTI_USER: SecretRotationApplication;
/**
* (deprecated) The application identifier of the rotation application.
* The application identifier of the rotation application
*

@@ -119,3 +86,3 @@ * @deprecated only valid when deploying to the 'aws' partition. Use `applicationArnForPartition` instead.

/**
* (deprecated) The semantic version of the rotation application.
* The semantic version of the rotation application
*

@@ -126,5 +93,3 @@ * @deprecated only valid when deploying to the 'aws' partition. Use `semanticVersionForPartition` instead.

/**
* Whether the rotation application uses the mutli user scheme.
*
* @stability stable
* Whether the rotation application uses the mutli user scheme
*/

@@ -136,12 +101,6 @@ readonly isMultiUser?: boolean;

private readonly applicationName;
/**
* @stability stable
*/
constructor(applicationId: string, semanticVersion: string, options?: SecretRotationApplicationOptions);
/**
* Returns the application ARN for the current partition.
*
* Can be used in combination with a `CfnMapping` to automatically select the correct ARN based on the current partition.
*
* @stability stable
*/

@@ -151,6 +110,3 @@ applicationArnForPartition(partition: string): string;

* The semantic version of the app for the current partition.
*
* Can be used in combination with a `CfnMapping` to automatically select the correct version based on the current partition.
*
* @stability stable
*/

@@ -161,18 +117,16 @@ semanticVersionForPartition(partition: string): string;

* Construction properties for a SecretRotation.
*
* @stability stable
*/
export interface SecretRotationProps {
/**
* The secret to rotate. It must be a JSON string with the following format:.
* The secret to rotate. It must be a JSON string with the following format:
*
* ```
* {
* "engine": <required: database engine>,
* "host": <required: instance host name>,
* "username": <required: username>,
* "password": <required: password>,
* "dbname": <optional: database name>,
* "port": <optional: if not specified, default port will be used>,
* "masterarn": <required for multi user rotation: the arn of the master secret which will be used to create users/change passwords>
* "engine": <required: database engine>,
* "host": <required: instance host name>,
* "username": <required: username>,
* "password": <required: password>,
* "dbname": <optional: database name>,
* "port": <optional: if not specified, default port will be used>,
* "masterarn": <required for multi user rotation: the arn of the master secret which will be used to create users/change passwords>
* }

@@ -185,17 +139,15 @@ * ```

* @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html
* @stability stable
*/
readonly secret: ISecret;
/**
* The master secret for a multi user rotation scheme.
* The master secret for a multi user rotation scheme
*
* @default - single user rotation scheme
* @stability stable
*/
readonly masterSecret?: ISecret;
/**
* Specifies the number of days after the previous rotation before Secrets Manager triggers the next automatic rotation.
* Specifies the number of days after the previous rotation before
* Secrets Manager triggers the next automatic rotation.
*
* @default Duration.days(30)
* @stability stable
*/

@@ -205,4 +157,2 @@ readonly automaticallyAfter?: Duration;

* The serverless application for the rotation.
*
* @stability stable
*/

@@ -212,4 +162,2 @@ readonly application: SecretRotationApplication;

* The VPC where the Lambda rotation function will run.
*
* @stability stable
*/

@@ -221,27 +169,22 @@ readonly vpc: ec2.IVpc;

* @default - the Vpc default strategy if not specified.
* @stability stable
*/
readonly vpcSubnets?: ec2.SubnetSelection;
/**
* The target service or database.
*
* @stability stable
* The target service or database
*/
readonly target: ec2.IConnectable;
/**
* The security group for the Lambda rotation function.
* The security group for the Lambda rotation function
*
* @default - a new security group is created
* @stability stable
*/
readonly securityGroup?: ec2.ISecurityGroup;
/**
* Characters which should not appear in the generated password.
* Characters which should not appear in the generated password
*
* @default - no additional characters are explicitly excluded
* @stability stable
*/
readonly excludeCharacters?: string;
/**
* The VPC interface endpoint to use for the Secrets Manager API.
* The VPC interface endpoint to use for the Secrets Manager API
*

@@ -254,3 +197,2 @@ * If you enable private DNS hostnames for your VPC private endpoint (the default), you don't

* @default https://secretsmanager.<region>.amazonaws.com
* @stability stable
*/

@@ -260,11 +202,6 @@ readonly endpoint?: ec2.IInterfaceVpcEndpoint;

/**
* Secret rotation for a service or database.
*
* @stability stable
* Secret rotation for a service or database
*/
export declare class SecretRotation extends CoreConstruct {
/**
* @stability stable
*/
constructor(scope: Construct, id: string, props: SecretRotationProps);
}

@@ -16,9 +16,4 @@ "use strict";

* A secret rotation serverless application.
*
* @stability stable
*/
class SecretRotationApplication {
/**
* @stability stable
*/
constructor(applicationId, semanticVersion, options) {

@@ -33,6 +28,3 @@ jsiiDeprecationWarnings._aws_cdk_aws_secretsmanager_SecretRotationApplicationOptions(options);

* Returns the application ARN for the current partition.
*
* Can be used in combination with a `CfnMapping` to automatically select the correct ARN based on the current partition.
*
* @stability stable
*/

@@ -55,6 +47,3 @@ applicationArnForPartition(partition) {

* The semantic version of the app for the current partition.
*
* Can be used in combination with a `CfnMapping` to automatically select the correct version based on the current partition.
*
* @stability stable
*/

@@ -78,13 +67,9 @@ semanticVersionForPartition(partition) {

_a = JSII_RTTI_SYMBOL_1;
SecretRotationApplication[_a] = { fqn: "@aws-cdk/aws-secretsmanager.SecretRotationApplication", version: "1.144.0" };
SecretRotationApplication[_a] = { fqn: "@aws-cdk/aws-secretsmanager.SecretRotationApplication", version: "1.145.0" };
/**
* Conducts an AWS SecretsManager secret rotation for RDS MariaDB using the single user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS MariaDB using the single user rotation scheme
*/
SecretRotationApplication.MARIADB_ROTATION_SINGLE_USER = new SecretRotationApplication('SecretsManagerRDSMariaDBRotationSingleUser', '1.1.60');
/**
* Conducts an AWS SecretsManager secret rotation for RDS MariaDB using the multi user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS MariaDB using the multi user rotation scheme
*/

@@ -95,11 +80,7 @@ SecretRotationApplication.MARIADB_ROTATION_MULTI_USER = new SecretRotationApplication('SecretsManagerRDSMariaDBRotationMultiUser', '1.1.60', {

/**
* Conducts an AWS SecretsManager secret rotation for RDS MySQL using the single user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS MySQL using the single user rotation scheme
*/
SecretRotationApplication.MYSQL_ROTATION_SINGLE_USER = new SecretRotationApplication('SecretsManagerRDSMySQLRotationSingleUser', '1.1.60');
/**
* Conducts an AWS SecretsManager secret rotation for RDS MySQL using the multi user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS MySQL using the multi user rotation scheme
*/

@@ -110,11 +91,7 @@ SecretRotationApplication.MYSQL_ROTATION_MULTI_USER = new SecretRotationApplication('SecretsManagerRDSMySQLRotationMultiUser', '1.1.60', {

/**
* Conducts an AWS SecretsManager secret rotation for RDS Oracle using the single user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS Oracle using the single user rotation scheme
*/
SecretRotationApplication.ORACLE_ROTATION_SINGLE_USER = new SecretRotationApplication('SecretsManagerRDSOracleRotationSingleUser', '1.1.60');
/**
* Conducts an AWS SecretsManager secret rotation for RDS Oracle using the multi user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS Oracle using the multi user rotation scheme
*/

@@ -125,11 +102,7 @@ SecretRotationApplication.ORACLE_ROTATION_MULTI_USER = new SecretRotationApplication('SecretsManagerRDSOracleRotationMultiUser', '1.1.60', {

/**
* Conducts an AWS SecretsManager secret rotation for RDS PostgreSQL using the single user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS PostgreSQL using the single user rotation scheme
*/
SecretRotationApplication.POSTGRES_ROTATION_SINGLE_USER = new SecretRotationApplication('SecretsManagerRDSPostgreSQLRotationSingleUser', '1.1.60');
/**
* Conducts an AWS SecretsManager secret rotation for RDS PostgreSQL using the multi user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS PostgreSQL using the multi user rotation scheme
*/

@@ -140,11 +113,7 @@ SecretRotationApplication.POSTGRES_ROTATION_MULTI_USER = new SecretRotationApplication('SecretsManagerRDSPostgreSQLRotationMultiUser', '1.1.60', {

/**
* Conducts an AWS SecretsManager secret rotation for RDS SQL Server using the single user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS SQL Server using the single user rotation scheme
*/
SecretRotationApplication.SQLSERVER_ROTATION_SINGLE_USER = new SecretRotationApplication('SecretsManagerRDSSQLServerRotationSingleUser', '1.1.60');
/**
* Conducts an AWS SecretsManager secret rotation for RDS SQL Server using the multi user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for RDS SQL Server using the multi user rotation scheme
*/

@@ -155,11 +124,7 @@ SecretRotationApplication.SQLSERVER_ROTATION_MULTI_USER = new SecretRotationApplication('SecretsManagerRDSSQLServerRotationMultiUser', '1.1.60', {

/**
* Conducts an AWS SecretsManager secret rotation for Amazon Redshift using the single user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for Amazon Redshift using the single user rotation scheme
*/
SecretRotationApplication.REDSHIFT_ROTATION_SINGLE_USER = new SecretRotationApplication('SecretsManagerRedshiftRotationSingleUser', '1.1.60');
/**
* Conducts an AWS SecretsManager secret rotation for Amazon Redshift using the multi user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for Amazon Redshift using the multi user rotation scheme
*/

@@ -170,11 +135,7 @@ SecretRotationApplication.REDSHIFT_ROTATION_MULTI_USER = new SecretRotationApplication('SecretsManagerRedshiftRotationMultiUser', '1.1.60', {

/**
* Conducts an AWS SecretsManager secret rotation for MongoDB using the single user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for MongoDB using the single user rotation scheme
*/
SecretRotationApplication.MONGODB_ROTATION_SINGLE_USER = new SecretRotationApplication('SecretsManagerMongoDBRotationSingleUser', '1.1.60');
/**
* Conducts an AWS SecretsManager secret rotation for MongoDB using the multi user rotation scheme.
*
* @stability stable
* Conducts an AWS SecretsManager secret rotation for MongoDB using the multi user rotation scheme
*/

@@ -185,10 +146,5 @@ SecretRotationApplication.MONGODB_ROTATION_MULTI_USER = new SecretRotationApplication('SecretsManagerMongoDBRotationMultiUser', '1.1.60', {

/**
* Secret rotation for a service or database.
*
* @stability stable
* Secret rotation for a service or database
*/
class SecretRotation extends core_2.Construct {
/**
* @stability stable
*/
constructor(scope, id, props) {

@@ -268,3 +224,3 @@ super(scope, id);

_b = JSII_RTTI_SYMBOL_1;
SecretRotation[_b] = { fqn: "@aws-cdk/aws-secretsmanager.SecretRotation", version: "1.144.0" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LXJvdGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2VjcmV0LXJvdGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHdDQUF3QztBQUN4Qyw4Q0FBOEM7QUFDOUMsK0NBQStDO0FBQy9DLHdDQUErRTtBQUkvRSxnSEFBZ0g7QUFDaEgsMkJBQTJCO0FBQzNCLHdDQUEyRDs7Ozs7O0FBUzNELE1BQWEseUJBQXlCOzs7O0lBdUVwQyxZQUFZLGFBQXFCLEVBQUUsZUFBdUIsRUFBRSxPQUEwQzs7UUFDcEcsSUFBSSxDQUFDLGFBQWEsR0FBRyw4REFBOEQsYUFBYSxFQUFFLENBQUM7UUFDbkcsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQUM7UUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQztLQUNuRDs7Ozs7Ozs7SUFHTSwwQkFBMEIsQ0FBQyxTQUFpQjtRQUNqRCxJQUFJLFNBQVMsS0FBSyxLQUFLLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQzNCO2FBQU0sSUFBSSxTQUFTLEtBQUssUUFBUSxFQUFFO1lBQ2pDLE9BQU8sa0VBQWtFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUNqRzthQUFNLElBQUksU0FBUyxLQUFLLFlBQVksRUFBRTtZQUNyQyxPQUFPLHlFQUF5RSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDeEc7YUFBTTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLFNBQVMsRUFBRSxDQUFDLENBQUM7U0FDeEQ7S0FDRjs7Ozs7Ozs7SUFHTSwyQkFBMkIsQ0FBQyxTQUFpQjtRQUNsRCxJQUFJLFNBQVMsS0FBSyxLQUFLLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQzdCO2FBQU0sSUFBSSxTQUFTLEtBQUss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aUIsQ0FBQzthQUN4RTtZQUNELFVBQVU7U0FDWCxDQUFDLENBQUM7UUFFSCx1RUFBdUU7UUFDdkUsc0VBQXNFO1FBQ3RFLDZEQUE2RDtRQUM3RCxrR0FBa0c7UUFDbEcsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLFlBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVoSixLQUFLLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixFQUFFO1lBQ25ELGNBQWM7WUFDZCxrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCO1NBQzdDLENBQUMsQ0FBQztRQUVILDJEQUEyRDtRQUMzRCxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUU7WUFDdEIsS0FBSyxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1NBQzVDO0tBQ0Y7O0FBbkZILHdDQW9GQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGVjMiBmcm9tICdAYXdzLWNkay9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdAYXdzLWNkay9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIHNlcnZlcmxlc3MgZnJvbSAnQGF3cy1jZGsvYXdzLXNhbSc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgTmFtZXMsIFN0YWNrLCBUb2tlbiwgQ2ZuTWFwcGluZywgQXdzIH0gZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElTZWNyZXQgfSBmcm9tICcuL3NlY3JldCc7XG5cbi8vIHYyIC0ga2VlcCB0aGlzIGltcG9ydCBhcyBhIHNlcGFyYXRlIHNlY3Rpb24gdG8gcmVkdWNlIG1lcmdlIGNvbmZsaWN0IHdoZW4gZm9yd2FyZCBtZXJnaW5nIHdpdGggdGhlIHYyIGJyYW5jaC5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuaW1wb3J0IHsgQ29uc3RydWN0IGFzIENvcmVDb25zdHJ1Y3QgfSBmcm9tICdAYXdzLWNkay9jb3JlJztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbk9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgaXNNdWx0aVVzZXI/OiBib29sZWFuO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNQVJJQURCX1JPVEFUSU9OX1NJTkdMRV9VU0VSID0gbmV3IFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb24oJ1NlY3JldHNNYW5hZ2VyUkRTTWFyaWFEQlJvdGF0aW9uU2luZ2xlVXNlcicsICcxLjEuNjAnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNQVJJQURCX1JPVEFUSU9OX01VTFRJX1VTRVIgPSBuZXcgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbignU2VjcmV0c01hbmFnZXJSRFNNYXJpYURCUm90YXRpb25NdWx0aVVzZXInLCAnMS4xLjYwJywge1xuICAgIGlzTXVsdGlVc2VyOiB0cnVlLFxuICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1ZU1FMX1JPVEFUSU9OX1NJTkdMRV9VU0VSID0gbmV3IFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb24oJ1NlY3JldHNNYW5hZ2VyUkRTTXlTUUxSb3RhdGlvblNpbmdsZVVzZXInLCAnMS4xLjYwJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1ZU1FMX1JPVEFUSU9OX01VTFRJX1VTRVIgPSBuZXcgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbignU2VjcmV0c01hbmFnZXJSRFNNeVNRTFJvdGF0aW9uTXVsdGlVc2VyJywgJzEuMS42MCcsIHtcbiAgICBpc011bHRpVXNlcjogdHJ1ZSxcbiAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT1JBQ0xFX1JPVEFUSU9OX1NJTkdMRV9VU0VSID0gbmV3IFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb24oJ1NlY3JldHNNYW5hZ2VyUkRTT3JhY2xlUm90YXRpb25TaW5nbGVVc2VyJywgJzEuMS42MCcpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT1JBQ0xFX1JPVEFUSU9OX01VTFRJX1VTRVIgPSBuZXcgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbignU2VjcmV0c01hbmFnZXJSRFNPcmFjbGVSb3RhdGlvbk11bHRpVXNlcicsICcxLjEuNjAnLCB7XG4gICAgaXNNdWx0aVVzZXI6IHRydWUsXG4gIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQT1NUR1JFU19ST1RBVElPTl9TSU5HTEVfVVNFUiA9IG5ldyBTZWNyZXRSb3RhdGlvbkFwcGxpY2F0aW9uKCdTZWNyZXRzTWFuYWdlclJEU1Bvc3RncmVTUUxSb3RhdGlvblNpbmdsZVVzZXInLCAnMS4xLjYwJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUE9TVEdSRVNfUk9UQVRJT05fTVVMVElfVVNFUiA9IG5ldyBTZWNyZXRSb3RhdGlvbkFwcGxpY2F0aW9uKCdTZWNyZXRzTWFuYWdlclJEU1Bvc3RncmVTUUxSb3RhdGlvbk11bHRpVXNlcicsICcxLjEuNjAnLCB7XG4gICAgaXNNdWx0aVVzZXI6IHRydWUsXG4gIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTUUxTRVJWRVJfUk9UQVRJT05fU0lOR0xFX1VTRVIgPSBuZXcgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbignU2VjcmV0c01hbmFnZXJSRFNTUUxTZXJ2ZXJSb3RhdGlvblNpbmdsZVVzZXInLCAnMS4xLjYwJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1FMU0VSVkVSX1JPVEFUSU9OX01VTFRJX1VTRVIgPSBuZXcgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbignU2VjcmV0c01hbmFnZXJSRFNTUUxTZXJ2ZXJSb3RhdGlvbk11bHRpVXNlcicsICcxLjEuNjAnLCB7XG4gICAgaXNNdWx0aVVzZXI6IHRydWUsXG4gIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkVEU0hJRlRfUk9UQVRJT05fU0lOR0xFX1VTRVIgPSBuZXcgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbignU2VjcmV0c01hbmFnZXJSZWRzaGlmdFJvdGF0aW9uU2luZ2xlVXNlcicsICcxLjEuNjAnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkVEU0hJRlRfUk9UQVRJT05fTVVMVElfVVNFUiA9IG5ldyBTZWNyZXRSb3RhdGlvbkFwcGxpY2F0aW9uKCdTZWNyZXRzTWFuYWdlclJlZHNoaWZ0Um90YXRpb25NdWx0aVVzZXInLCAnMS4xLjYwJywge1xuICAgIGlzTXVsdGlVc2VyOiB0cnVlLFxuICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNT05HT0RCX1JPVEFUSU9OX1NJTkdMRV9VU0VSID0gbmV3IFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb24oJ1NlY3JldHNNYW5hZ2VyTW9uZ29EQlJvdGF0aW9uU2luZ2xlVXNlcicsICcxLjEuNjAnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1PTkdPREJfUk9UQVRJT05fTVVMVElfVVNFUiA9IG5ldyBTZWNyZXRSb3RhdGlvbkFwcGxpY2F0aW9uKCdTZWNyZXRzTWFuYWdlck1vbmdvREJSb3RhdGlvbk11bHRpVXNlcicsICcxLjEuNjAnLCB7XG4gICAgaXNNdWx0aVVzZXI6IHRydWUsXG4gIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgYXBwbGljYXRpb25JZDogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IHNlbWFudGljVmVyc2lvbjogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBpc011bHRpVXNlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBuYW1lIG9mIHRoZSByb3RhdGlvbiBhcHBsaWNhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBhcHBsaWNhdGlvbk5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihhcHBsaWNhdGlvbklkOiBzdHJpbmcsIHNlbWFudGljVmVyc2lvbjogc3RyaW5nLCBvcHRpb25zPzogU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbk9wdGlvbnMpIHtcbiAgICB0aGlzLmFwcGxpY2F0aW9uSWQgPSBgYXJuOmF3czpzZXJ2ZXJsZXNzcmVwbzp1cy1lYXN0LTE6Mjk3MzU2MjI3ODI0OmFwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9YDtcbiAgICB0aGlzLnNlbWFudGljVmVyc2lvbiA9IHNlbWFudGljVmVyc2lvbjtcbiAgICB0aGlzLmFwcGxpY2F0aW9uTmFtZSA9IGFwcGxpY2F0aW9uSWQ7XG4gICAgdGhpcy5pc011bHRpVXNlciA9IG9wdGlvbnMgJiYgb3B0aW9ucy5pc011bHRpVXNlcjtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGFwcGxpY2F0aW9uQXJuRm9yUGFydGl0aW9uKHBhcnRpdGlvbjogc3RyaW5nKSB7XG4gICAgaWYgKHBhcnRpdGlvbiA9PT0gJ2F3cycpIHtcbiAgICAgIHJldHVybiB0aGlzLmFwcGxpY2F0aW9uSWQ7XG4gICAgfSBlbHNlIGlmIChwYXJ0aXRpb24gPT09ICdhd3MtY24nKSB7XG4gICAgICByZXR1cm4gYGFybjphd3MtY246c2VydmVybGVzc3JlcG86Y24tbm9ydGgtMToxOTMwMjMwODkzMTA6YXBwbGljYXRpb25zLyR7dGhpcy5hcHBsaWNhdGlvbk5hbWV9YDtcbiAgICB9IGVsc2UgaWYgKHBhcnRpdGlvbiA9PT0gJ2F3cy11cy1nb3YnKSB7XG4gICAgICByZXR1cm4gYGFybjphd3MtdXMtZ292OnNlcnZlcmxlc3NyZXBvOnVzLWdvdi13ZXN0LTE6MDIzMTAyNDUxMjM1OmFwcGxpY2F0aW9ucy8ke3RoaXMuYXBwbGljYXRpb25OYW1lfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgcGFydGl0aW9uOiAke3BhcnRpdGlvbn1gKTtcbiAgICB9XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHNlbWFudGljVmVyc2lvbkZvclBhcnRpdGlvbihwYXJ0aXRpb246IHN0cmluZykge1xuICAgIGlmIChwYXJ0aXRpb24gPT09ICdhd3MnKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZW1hbnRpY1ZlcnNpb247XG4gICAgfSBlbHNlIGlmIChwYXJ0aXRpb24gPT09ICdhd3MtY24nKSB7XG4gICAgICByZXR1cm4gJzEuMS4zNyc7XG4gICAgfSBlbHNlIGlmIChwYXJ0aXRpb24gPT09ICdhd3MtdXMtZ292Jykge1xuICAgICAgcmV0dXJuICcxLjEuOTMnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIHBhcnRpdGlvbjogJHtwYXJ0aXRpb259YCk7XG4gICAgfVxuICB9XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIFNlY3JldFJvdGF0aW9uUHJvcHMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc2VjcmV0OiBJU2VjcmV0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBtYXN0ZXJTZWNyZXQ/OiBJU2VjcmV0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhdXRvbWF0aWNhbGx5QWZ0ZXI/OiBEdXJhdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhcHBsaWNhdGlvbjogU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB2cGNTdWJuZXRzPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdGFyZ2V0OiBlYzIuSUNvbm5lY3RhYmxlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXA/OiBlYzIuSVNlY3VyaXR5R3JvdXA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBleGNsdWRlQ2hhcmFjdGVycz86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGVuZHBvaW50PzogZWMyLklJbnRlcmZhY2VWcGNFbmRwb2ludDtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIFNlY3JldFJvdGF0aW9uIGV4dGVuZHMgQ29yZUNvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTZWNyZXRSb3RhdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGlmICghcHJvcHMudGFyZ2V0LmNvbm5lY3Rpb25zLmRlZmF1bHRQb3J0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBgdGFyZ2V0YCBjb25uZWN0aW9ucyBtdXN0IGhhdmUgYSBkZWZhdWx0IHBvcnQgcmFuZ2UuJyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmFwcGxpY2F0aW9uLmlzTXVsdGlVc2VyICYmICFwcm9wcy5tYXN0ZXJTZWNyZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGBtYXN0ZXJTZWNyZXRgIG11c3QgYmUgc3BlY2lmaWVkIGZvciBhcHBsaWNhdGlvbiB1c2luZyB0aGUgbXVsdGkgdXNlciBzY2hlbWUuJyk7XG4gICAgfVxuXG4gICAgLy8gTWF4IGxlbmd0aCBvZiA2NCBjaGFycywgZ2V0IHRoZSBsYXN0IDY0IGNoYXJzXG4gICAgY29uc3QgdW5pcXVlSWQgPSBOYW1lcy51bmlxdWVJZCh0aGlzKTtcbiAgICBjb25zdCByb3RhdGlvbkZ1bmN0aW9uTmFtZSA9IHVuaXF1ZUlkLnN1YnN0cmluZyhNYXRoLm1heCh1bmlxdWVJZC5sZW5ndGggLSA2NCwgMCksIHVuaXF1ZUlkLmxlbmd0aCk7XG5cbiAgICBjb25zdCBzZWN1cml0eUdyb3VwID0gcHJvcHMuc2VjdXJpdHlHcm91cCB8fCBuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgJ1NlY3VyaXR5R3JvdXAnLCB7XG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICB9KTtcbiAgICBwcm9wcy50YXJnZXQuY29ubmVjdGlvbnMuYWxsb3dEZWZhdWx0UG9ydEZyb20oc2VjdXJpdHlHcm91cCk7XG5cbiAgICBjb25zdCBwYXJhbWV0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgZW5kcG9pbnQ6IGBodHRwczovLyR7cHJvcHMuZW5kcG9pbnQgPyBgJHtwcm9wcy5lbmRwb2ludC52cGNFbmRwb2ludElkfS5gIDogJyd9c2VjcmV0c21hbmFnZXIuJHtTdGFjay5vZih0aGlzKS5yZWdpb259LiR7U3RhY2sub2YodGhpcykudXJsU3VmZml4fWAsXG4gICAgICBmdW5jdGlvbk5hbWU6IHJvdGF0aW9uRnVuY3Rpb25OYW1lLFxuICAgICAgdnBjU3VibmV0SWRzOiBwcm9wcy52cGMuc2VsZWN0U3VibmV0cyhwcm9wcy52cGNTdWJuZXRzKS5zdWJuZXRJZHMuam9pbignLCcpLFxuICAgICAgdnBjU2VjdXJpdHlHcm91cElkczogc2VjdXJpdHlHcm91cC5zZWN1cml0eUdyb3VwSWQsXG4gICAgfTtcblxuICAgIGlmIChwcm9wcy5leGNsdWRlQ2hhcmFjdGVycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbWV0ZXJzLmV4Y2x1ZGVDaGFyYWN0ZXJzID0gcHJvcHMuZXhjbHVkZUNoYXJhY3RlcnM7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnNlY3JldC5lbmNyeXB0aW9uS2V5KSB7XG4gICAgICBwYXJhbWV0ZXJzLmttc0tleUFybiA9IHByb3BzLnNlY3JldC5lbmNyeXB0aW9uS2V5LmtleUFybjtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMubWFzdGVyU2VjcmV0KSB7XG4gICAgICBwYXJhbWV0ZXJzLm1hc3RlclNlY3JldEFybiA9IHByb3BzLm1hc3RlclNlY3JldC5zZWNyZXRBcm47XG5cbiAgICAgIGlmIChwcm9wcy5tYXN0ZXJTZWNyZXQuZW5jcnlwdGlvbktleSkge1xuICAgICAgICBwYXJhbWV0ZXJzLm1hc3RlclNlY3JldEttc0tleUFybiA9IHByb3BzLm1hc3RlclNlY3JldC5lbmNyeXB0aW9uS2V5LmtleUFybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzYXJNYXBwaW5nID0gbmV3IENmbk1hcHBpbmcodGhpcywgJ1NBUk1hcHBpbmcnLCB7XG4gICAgICBtYXBwaW5nOiB7XG4gICAgICAgICdhd3MnOiB7XG4gICAgICAgICAgYXBwbGljYXRpb25JZDogcHJvcHMuYXBwbGljYXRpb24uYXBwbGljYXRpb25Bcm5Gb3JQYXJ0aXRpb24oJ2F3cycpLFxuICAgICAgICAgIHNlbWFudGljVmVyc2lvbjogcHJvcHMuYXBwbGljYXRpb24uc2VtYW50aWNWZXJzaW9uRm9yUGFydGl0aW9uKCdhd3MnKSxcbiAgICAgICAgfSxcbiAgICAgICAgJ2F3cy1jbic6IHtcbiAgICAgICAgICBhcHBsaWNhdGlvbklkOiBwcm9wcy5hcHBsaWNhdGlvbi5hcHBsaWNhdGlvbkFybkZvclBhcnRpdGlvbignYXdzLWNuJyksXG4gICAgICAgICAgc2VtYW50aWNWZXJzaW9uOiBwcm9wcy5hcHBsaWNhdGlvbi5zZW1hbnRpY1ZlcnNpb25Gb3JQYXJ0aXRpb24oJ2F3cy1jbicpLFxuICAgICAgICB9LFxuICAgICAgICAnYXdzLXVzLWdvdic6IHtcbiAgICAgICAgICBhcHBsaWNhdGlvbklkOiBwcm9wcy5hcHBsaWNhdGlvbi5hcHBsaWNhdGlvbkFybkZvclBhcnRpdGlvbignYXdzLXVzLWdvdicpLFxuICAgICAgICAgIHNlbWFudGljVmVyc2lvbjogcHJvcHMuYXBwbGljYXRpb24uc2VtYW50aWNWZXJzaW9uRm9yUGFydGl0aW9uKCdhd3MtdXMtZ292JyksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGFwcGxpY2F0aW9uID0gbmV3IHNlcnZlcmxlc3MuQ2ZuQXBwbGljYXRpb24odGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgYXBwbGljYXRpb25JZDogc2FyTWFwcGluZy5maW5kSW5NYXAoQXdzLlBBUlRJVElPTiwgJ2FwcGxpY2F0aW9uSWQnKSxcbiAgICAgICAgc2VtYW50aWNWZXJzaW9uOiBzYXJNYXBwaW5nLmZpbmRJbk1hcChBd3MuUEFSVElUSU9OLCAnc2VtYW50aWNWZXJzaW9uJyksXG4gICAgICB9LFxuICAgICAgcGFyYW1ldGVycyxcbiAgICB9KTtcblxuICAgIC8vIFRoaXMgY3JlYXRlcyBhIENGIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHRoZSByb3RhdGlvbiBzY2hlZHVsZSBhbmQgdGhlXG4gICAgLy8gc2VydmVybGVzcyBhcHBsaWNhdGlvbi4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBpdCdzIHRoZSBhcHBsaWNhdGlvblxuICAgIC8vIHRoYXQgY3JlYXRlcyB0aGUgTGFtYmRhIHBlcm1pc3Npb24gdG8gaW52b2tlIHRoZSBmdW5jdGlvbi5cbiAgICAvLyBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlY3JldHNtYW5hZ2VyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWdyYXRpbmdfY2xvdWRmb3JtYXRpb24uaHRtbFxuICAgIGNvbnN0IHJvdGF0aW9uTGFtYmRhID0gbGFtYmRhLkZ1bmN0aW9uLmZyb21GdW5jdGlvbkFybih0aGlzLCAnUm90YXRpb25MYW1iZGEnLCBUb2tlbi5hc1N0cmluZyhhcHBsaWNhdGlvbi5nZXRBdHQoJ091dHB1dHMuUm90YXRpb25MYW1iZGFBUk4nKSkpO1xuXG4gICAgcHJvcHMuc2VjcmV0LmFkZFJvdGF0aW9uU2NoZWR1bGUoJ1JvdGF0aW9uU2NoZWR1bGUnLCB7XG4gICAgICByb3RhdGlvbkxhbWJkYSxcbiAgICAgIGF1dG9tYXRpY2FsbHlBZnRlcjogcHJvcHMuYXV0b21hdGljYWxseUFmdGVyLFxuICAgIH0pO1xuXG4gICAgLy8gUHJldmVudCBtYXN0ZXIgc2VjcmV0IGRlbGV0aW9uIHdoZW4gcm90YXRpb24gaXMgaW4gcGxhY2VcbiAgICBpZiAocHJvcHMubWFzdGVyU2VjcmV0KSB7XG4gICAgICBwcm9wcy5tYXN0ZXJTZWNyZXQuZGVueUFjY291bnRSb290RGVsZXRlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
SecretRotation[_b] = { fqn: "@aws-cdk/aws-secretsmanager.SecretRotation", version: "1.145.0" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LXJvdGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2VjcmV0LXJvdGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHdDQUF3QztBQUN4Qyw4Q0FBOEM7QUFDOUMsK0NBQStDO0FBQy9DLHdDQUErRTtBQUkvRSxnSEFBZ0g7QUFDaEgsMkJBQTJCO0FBQzNCLHdDQUEyRDtBQWMzRDs7R0FFRztBQUNILE1BQWEseUJBQXlCO0lBNkdwQyxZQUFZLGFBQXFCLEVBQUUsZUFBdUIsRUFBRSxPQUEwQzs7UUFDcEcsSUFBSSxDQUFDLGFBQWEsR0FBRyw4REFBOEQsYUFBYSxFQUFFLENBQUM7UUFDbkcsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQUM7UUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQztLQUNuRDtJQUVEOzs7T0FHRztJQUNJLDBCQUEwQixDQUFDLFNBQWlCO1FBQ2pELElBQUksU0FBUyxLQUFLLEtBQUssRUFBRTtZQUN2QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDM0I7YUFBTSxJQUFJLFNBQVMsS0FBSyxRQUFRLEVBQUU7WUFDakMsT0FBTyxrRUFBa0UsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ2pHO2FBQU0sSUFBSSxTQUFTLEtBQUssWUFBWSxFQUFFO1lBQ3JDLE9BQU8seUVBQXlFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4RzthQUFNO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsU0FBUyxFQUFFLENBQUMsQ0FBQztTQUN4RDtLQUNGO0lBRUQ7OztPQUdHO0lBQ0ksMkJBQTJCLENBQUMsU0FBaUI7UUFDbEQsSUFBSSxTQUFTLEtBQUssS0FBSyxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUM3QjthQUFNLElB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LENBQUMsU0FBUyxDQUFDLFVBQUcsQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDO2dCQUNuRSxlQUFlLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFHLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDO2FBQ3hFO1lBQ0QsVUFBVTtTQUNYLENBQUMsQ0FBQztRQUVILHVFQUF1RTtRQUN2RSxzRUFBc0U7UUFDdEUsNkRBQTZEO1FBQzdELGtHQUFrRztRQUNsRyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsWUFBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWhKLEtBQUssQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUU7WUFDbkQsY0FBYztZQUNkLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7U0FDN0MsQ0FBQyxDQUFDO1FBRUgsMkRBQTJEO1FBQzNELElBQUksS0FBSyxDQUFDLFlBQVksRUFBRTtZQUN0QixLQUFLLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLENBQUM7U0FDNUM7S0FDRjs7QUFuRkgsd0NBb0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZWMyIGZyb20gJ0Bhd3MtY2RrL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ0Bhd3MtY2RrL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgc2VydmVybGVzcyBmcm9tICdAYXdzLWNkay9hd3Mtc2FtJztcbmltcG9ydCB7IER1cmF0aW9uLCBOYW1lcywgU3RhY2ssIFRva2VuLCBDZm5NYXBwaW5nLCBBd3MgfSBmcm9tICdAYXdzLWNkay9jb3JlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSVNlY3JldCB9IGZyb20gJy4vc2VjcmV0JztcblxuLy8gdjIgLSBrZWVwIHRoaXMgaW1wb3J0IGFzIGEgc2VwYXJhdGUgc2VjdGlvbiB0byByZWR1Y2UgbWVyZ2UgY29uZmxpY3Qgd2hlbiBmb3J3YXJkIG1lcmdpbmcgd2l0aCB0aGUgdjIgYnJhbmNoLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5pbXBvcnQgeyBDb25zdHJ1Y3QgYXMgQ29yZUNvbnN0cnVjdCB9IGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGEgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJvdGF0aW9uIGFwcGxpY2F0aW9uIHVzZXMgdGhlIG11dGxpIHVzZXIgc2NoZW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpc011bHRpVXNlcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBzZWNyZXQgcm90YXRpb24gc2VydmVybGVzcyBhcHBsaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb24ge1xuICAvKipcbiAgICogQ29uZHVjdHMgYW4gQVdTIFNlY3JldHNNYW5hZ2VyIHNlY3JldCByb3RhdGlvbiBmb3IgUkRTIE1hcmlhREIgdXNpbmcgdGhlIHNpbmdsZSB1c2VyIHJvdGF0aW9uIHNjaGVtZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNQVJJQURCX1JPVEFUSU9OX1NJTkdMRV9VU0VSID0gbmV3IFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb24oJ1NlY3JldHNNYW5hZ2VyUkRTTWFyaWFEQlJvdGF0aW9uU2luZ2xlVXNlcicsICcxLjEuNjAnKTtcblxuICAvKipcbiAgICogQ29uZHVjdHMgYW4gQVdTIFNlY3JldHNNYW5hZ2VyIHNlY3JldCByb3RhdGlvbiBmb3IgUkRTIE1hcmlhREIgdXNpbmcgdGhlIG11bHRpIHVzZXIgcm90YXRpb24gc2NoZW1lXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1BUklBREJfUk9UQVRJT05fTVVMVElfVVNFUiA9IG5ldyBTZWNyZXRSb3RhdGlvbkFwcGxpY2F0aW9uKCdTZWNyZXRzTWFuYWdlclJEU01hcmlhREJSb3RhdGlvbk11bHRpVXNlcicsICcxLjEuNjAnLCB7XG4gICAgaXNNdWx0aVVzZXI6IHRydWUsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBDb25kdWN0cyBhbiBBV1MgU2VjcmV0c01hbmFnZXIgc2VjcmV0IHJvdGF0aW9uIGZvciBSRFMgTXlTUUwgdXNpbmcgdGhlIHNpbmdsZSB1c2VyIHJvdGF0aW9uIHNjaGVtZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNWVNRTF9ST1RBVElPTl9TSU5HTEVfVVNFUiA9IG5ldyBTZWNyZXRSb3RhdGlvbkFwcGxpY2F0aW9uKCdTZWNyZXRzTWFuYWdlclJEU015U1FMUm90YXRpb25TaW5nbGVVc2VyJywgJzEuMS42MCcpO1xuXG4gIC8qKlxuICAgKiBDb25kdWN0cyBhbiBBV1MgU2VjcmV0c01hbmFnZXIgc2VjcmV0IHJvdGF0aW9uIGZvciBSRFMgTXlTUUwgdXNpbmcgdGhlIG11bHRpIHVzZXIgcm90YXRpb24gc2NoZW1lXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1ZU1FMX1JPVEFUSU9OX01VTFRJX1VTRVIgPSBuZXcgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbignU2VjcmV0c01hbmFnZXJSRFNNeVNRTFJvdGF0aW9uTXVsdGlVc2VyJywgJzEuMS42MCcsIHtcbiAgICBpc011bHRpVXNlcjogdHJ1ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENvbmR1Y3RzIGFuIEFXUyBTZWNyZXRzTWFuYWdlciBzZWNyZXQgcm90YXRpb24gZm9yIFJEUyBPcmFjbGUgdXNpbmcgdGhlIHNpbmdsZSB1c2VyIHJvdGF0aW9uIHNjaGVtZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBPUkFDTEVfUk9UQVRJT05fU0lOR0xFX1VTRVIgPSBuZXcgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbignU2VjcmV0c01hbmFnZXJSRFNPcmFjbGVSb3RhdGlvblNpbmdsZVVzZXInLCAnMS4xLjYwJyk7XG5cbiAgLyoqXG4gICAqIENvbmR1Y3RzIGFuIEFXUyBTZWNyZXRzTWFuYWdlciBzZWNyZXQgcm90YXRpb24gZm9yIFJEUyBPcmFjbGUgdXNpbmcgdGhlIG11bHRpIHVzZXIgcm90YXRpb24gc2NoZW1lXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9SQUNMRV9ST1RBVElPTl9NVUxUSV9VU0VSID0gbmV3IFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb24oJ1NlY3JldHNNYW5hZ2VyUkRTT3JhY2xlUm90YXRpb25NdWx0aVVzZXInLCAnMS4xLjYwJywge1xuICAgIGlzTXVsdGlVc2VyOiB0cnVlLFxuICB9KTtcblxuICAvKipcbiAgICogQ29uZHVjdHMgYW4gQVdTIFNlY3JldHNNYW5hZ2VyIHNlY3JldCByb3RhdGlvbiBmb3IgUkRTIFBvc3RncmVTUUwgdXNpbmcgdGhlIHNpbmdsZSB1c2VyIHJvdGF0aW9uIHNjaGVtZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQT1NUR1JFU19ST1RBVElPTl9TSU5HTEVfVVNFUiA9IG5ldyBTZWNyZXRSb3RhdGlvbkFwcGxpY2F0aW9uKCdTZWNyZXRzTWFuYWdlclJEU1Bvc3RncmVTUUxSb3RhdGlvblNpbmdsZVVzZXInLCAnMS4xLjYwJyk7XG5cbiAgLyoqXG4gICAqIENvbmR1Y3RzIGFuIEFXUyBTZWNyZXRzTWFuYWdlciBzZWNyZXQgcm90YXRpb24gZm9yIFJEUyBQb3N0Z3JlU1FMIHVzaW5nIHRoZSBtdWx0aSB1c2VyIHJvdGF0aW9uIHNjaGVtZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQT1NUR1JFU19ST1RBVElPTl9NVUxUSV9VU0VSID0gbmV3IFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb24oJ1NlY3JldHNNYW5hZ2VyUkRTUG9zdGdyZVNRTFJvdGF0aW9uTXVsdGlVc2VyJywgJzEuMS42MCcsIHtcbiAgICBpc011bHRpVXNlcjogdHJ1ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENvbmR1Y3RzIGFuIEFXUyBTZWNyZXRzTWFuYWdlciBzZWNyZXQgcm90YXRpb24gZm9yIFJEUyBTUUwgU2VydmVyIHVzaW5nIHRoZSBzaW5nbGUgdXNlciByb3RhdGlvbiBzY2hlbWVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1FMU0VSVkVSX1JPVEFUSU9OX1NJTkdMRV9VU0VSID0gbmV3IFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb24oJ1NlY3JldHNNYW5hZ2VyUkRTU1FMU2VydmVyUm90YXRpb25TaW5nbGVVc2VyJywgJzEuMS42MCcpO1xuXG4gIC8qKlxuICAgKiBDb25kdWN0cyBhbiBBV1MgU2VjcmV0c01hbmFnZXIgc2VjcmV0IHJvdGF0aW9uIGZvciBSRFMgU1FMIFNlcnZlciB1c2luZyB0aGUgbXVsdGkgdXNlciByb3RhdGlvbiBzY2hlbWVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1FMU0VSVkVSX1JPVEFUSU9OX01VTFRJX1VTRVIgPSBuZXcgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbignU2VjcmV0c01hbmFnZXJSRFNTUUxTZXJ2ZXJSb3RhdGlvbk11bHRpVXNlcicsICcxLjEuNjAnLCB7XG4gICAgaXNNdWx0aVVzZXI6IHRydWUsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBDb25kdWN0cyBhbiBBV1MgU2VjcmV0c01hbmFnZXIgc2VjcmV0IHJvdGF0aW9uIGZvciBBbWF6b24gUmVkc2hpZnQgdXNpbmcgdGhlIHNpbmdsZSB1c2VyIHJvdGF0aW9uIHNjaGVtZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBSRURTSElGVF9ST1RBVElPTl9TSU5HTEVfVVNFUiA9IG5ldyBTZWNyZXRSb3RhdGlvbkFwcGxpY2F0aW9uKCdTZWNyZXRzTWFuYWdlclJlZHNoaWZ0Um90YXRpb25TaW5nbGVVc2VyJywgJzEuMS42MCcpO1xuXG4gIC8qKlxuICAgKiBDb25kdWN0cyBhbiBBV1MgU2VjcmV0c01hbmFnZXIgc2VjcmV0IHJvdGF0aW9uIGZvciBBbWF6b24gUmVkc2hpZnQgdXNpbmcgdGhlIG11bHRpIHVzZXIgcm90YXRpb24gc2NoZW1lXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJFRFNISUZUX1JPVEFUSU9OX01VTFRJX1VTRVIgPSBuZXcgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbignU2VjcmV0c01hbmFnZXJSZWRzaGlmdFJvdGF0aW9uTXVsdGlVc2VyJywgJzEuMS42MCcsIHtcbiAgICBpc011bHRpVXNlcjogdHJ1ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENvbmR1Y3RzIGFuIEFXUyBTZWNyZXRzTWFuYWdlciBzZWNyZXQgcm90YXRpb24gZm9yIE1vbmdvREIgdXNpbmcgdGhlIHNpbmdsZSB1c2VyIHJvdGF0aW9uIHNjaGVtZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNT05HT0RCX1JPVEFUSU9OX1NJTkdMRV9VU0VSID0gbmV3IFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb24oJ1NlY3JldHNNYW5hZ2VyTW9uZ29EQlJvdGF0aW9uU2luZ2xlVXNlcicsICcxLjEuNjAnKTtcblxuICAvKipcbiAgICogQ29uZHVjdHMgYW4gQVdTIFNlY3JldHNNYW5hZ2VyIHNlY3JldCByb3RhdGlvbiBmb3IgTW9uZ29EQiB1c2luZyB0aGUgbXVsdGkgdXNlciByb3RhdGlvbiBzY2hlbWVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTU9OR09EQl9ST1RBVElPTl9NVUxUSV9VU0VSID0gbmV3IFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb24oJ1NlY3JldHNNYW5hZ2VyTW9uZ29EQlJvdGF0aW9uTXVsdGlVc2VyJywgJzEuMS42MCcsIHtcbiAgICBpc011bHRpVXNlcjogdHJ1ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBpZGVudGlmaWVyIG9mIHRoZSByb3RhdGlvbiBhcHBsaWNhdGlvblxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBvbmx5IHZhbGlkIHdoZW4gZGVwbG95aW5nIHRvIHRoZSAnYXdzJyBwYXJ0aXRpb24uIFVzZSBgYXBwbGljYXRpb25Bcm5Gb3JQYXJ0aXRpb25gIGluc3RlYWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXBwbGljYXRpb25JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VtYW50aWMgdmVyc2lvbiBvZiB0aGUgcm90YXRpb24gYXBwbGljYXRpb25cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgb25seSB2YWxpZCB3aGVuIGRlcGxveWluZyB0byB0aGUgJ2F3cycgcGFydGl0aW9uLiBVc2UgYHNlbWFudGljVmVyc2lvbkZvclBhcnRpdGlvbmAgaW5zdGVhZC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZW1hbnRpY1ZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcm90YXRpb24gYXBwbGljYXRpb24gdXNlcyB0aGUgbXV0bGkgdXNlciBzY2hlbWVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc011bHRpVXNlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBuYW1lIG9mIHRoZSByb3RhdGlvbiBhcHBsaWNhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBhcHBsaWNhdGlvbk5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihhcHBsaWNhdGlvbklkOiBzdHJpbmcsIHNlbWFudGljVmVyc2lvbjogc3RyaW5nLCBvcHRpb25zPzogU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbk9wdGlvbnMpIHtcbiAgICB0aGlzLmFwcGxpY2F0aW9uSWQgPSBgYXJuOmF3czpzZXJ2ZXJsZXNzcmVwbzp1cy1lYXN0LTE6Mjk3MzU2MjI3ODI0OmFwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9YDtcbiAgICB0aGlzLnNlbWFudGljVmVyc2lvbiA9IHNlbWFudGljVmVyc2lvbjtcbiAgICB0aGlzLmFwcGxpY2F0aW9uTmFtZSA9IGFwcGxpY2F0aW9uSWQ7XG4gICAgdGhpcy5pc011bHRpVXNlciA9IG9wdGlvbnMgJiYgb3B0aW9ucy5pc011bHRpVXNlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcHBsaWNhdGlvbiBBUk4gZm9yIHRoZSBjdXJyZW50IHBhcnRpdGlvbi5cbiAgICogQ2FuIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBhIGBDZm5NYXBwaW5nYCB0byBhdXRvbWF0aWNhbGx5IHNlbGVjdCB0aGUgY29ycmVjdCBBUk4gYmFzZWQgb24gdGhlIGN1cnJlbnQgcGFydGl0aW9uLlxuICAgKi9cbiAgcHVibGljIGFwcGxpY2F0aW9uQXJuRm9yUGFydGl0aW9uKHBhcnRpdGlvbjogc3RyaW5nKSB7XG4gICAgaWYgKHBhcnRpdGlvbiA9PT0gJ2F3cycpIHtcbiAgICAgIHJldHVybiB0aGlzLmFwcGxpY2F0aW9uSWQ7XG4gICAgfSBlbHNlIGlmIChwYXJ0aXRpb24gPT09ICdhd3MtY24nKSB7XG4gICAgICByZXR1cm4gYGFybjphd3MtY246c2VydmVybGVzc3JlcG86Y24tbm9ydGgtMToxOTMwMjMwODkzMTA6YXBwbGljYXRpb25zLyR7dGhpcy5hcHBsaWNhdGlvbk5hbWV9YDtcbiAgICB9IGVsc2UgaWYgKHBhcnRpdGlvbiA9PT0gJ2F3cy11cy1nb3YnKSB7XG4gICAgICByZXR1cm4gYGFybjphd3MtdXMtZ292OnNlcnZlcmxlc3NyZXBvOnVzLWdvdi13ZXN0LTE6MDIzMTAyNDUxMjM1OmFwcGxpY2F0aW9ucy8ke3RoaXMuYXBwbGljYXRpb25OYW1lfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgcGFydGl0aW9uOiAke3BhcnRpdGlvbn1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNlbWFudGljIHZlcnNpb24gb2YgdGhlIGFwcCBmb3IgdGhlIGN1cnJlbnQgcGFydGl0aW9uLlxuICAgKiBDYW4gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGEgYENmbk1hcHBpbmdgIHRvIGF1dG9tYXRpY2FsbHkgc2VsZWN0IHRoZSBjb3JyZWN0IHZlcnNpb24gYmFzZWQgb24gdGhlIGN1cnJlbnQgcGFydGl0aW9uLlxuICAgKi9cbiAgcHVibGljIHNlbWFudGljVmVyc2lvbkZvclBhcnRpdGlvbihwYXJ0aXRpb246IHN0cmluZykge1xuICAgIGlmIChwYXJ0aXRpb24gPT09ICdhd3MnKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZW1hbnRpY1ZlcnNpb247XG4gICAgfSBlbHNlIGlmIChwYXJ0aXRpb24gPT09ICdhd3MtY24nKSB7XG4gICAgICByZXR1cm4gJzEuMS4zNyc7XG4gICAgfSBlbHNlIGlmIChwYXJ0aXRpb24gPT09ICdhd3MtdXMtZ292Jykge1xuICAgICAgcmV0dXJuICcxLjEuOTMnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIHBhcnRpdGlvbjogJHtwYXJ0aXRpb259YCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ29uc3RydWN0aW9uIHByb3BlcnRpZXMgZm9yIGEgU2VjcmV0Um90YXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VjcmV0Um90YXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgc2VjcmV0IHRvIHJvdGF0ZS4gSXQgbXVzdCBiZSBhIEpTT04gc3RyaW5nIHdpdGggdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqICAgXCJlbmdpbmVcIjogPHJlcXVpcmVkOiBkYXRhYmFzZSBlbmdpbmU+LFxuICAgKiAgIFwiaG9zdFwiOiA8cmVxdWlyZWQ6IGluc3RhbmNlIGhvc3QgbmFtZT4sXG4gICAqICAgXCJ1c2VybmFtZVwiOiA8cmVxdWlyZWQ6IHVzZXJuYW1lPixcbiAgICogICBcInBhc3N3b3JkXCI6IDxyZXF1aXJlZDogcGFzc3dvcmQ+LFxuICAgKiAgIFwiZGJuYW1lXCI6IDxvcHRpb25hbDogZGF0YWJhc2UgbmFtZT4sXG4gICAqICAgXCJwb3J0XCI6IDxvcHRpb25hbDogaWYgbm90IHNwZWNpZmllZCwgZGVmYXVsdCBwb3J0IHdpbGwgYmUgdXNlZD4sXG4gICAqICAgXCJtYXN0ZXJhcm5cIjogPHJlcXVpcmVkIGZvciBtdWx0aSB1c2VyIHJvdGF0aW9uOiB0aGUgYXJuIG9mIHRoZSBtYXN0ZXIgc2VjcmV0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgdXNlcnMvY2hhbmdlIHBhc3N3b3Jkcz5cbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogVGhpcyBpcyB0eXBpY2FsbHkgdGhlIGNhc2UgZm9yIGEgc2VjcmV0IHJlZmVyZW5jZWQgZnJvbSBhbiBgQVdTOjpTZWNyZXRzTWFuYWdlcjo6U2VjcmV0VGFyZ2V0QXR0YWNobWVudGBcbiAgICogb3IgYW4gYElTZWNyZXRgIHJldHVybmVkIGJ5IHRoZSBgYXR0YWNoKClgIG1ldGhvZCBvZiBgU2VjcmV0YC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2Utc2VjcmV0c21hbmFnZXItc2VjcmV0dGFyZ2V0YXR0YWNobWVudC5odG1sXG4gICAqL1xuICByZWFkb25seSBzZWNyZXQ6IElTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXN0ZXIgc2VjcmV0IGZvciBhIG11bHRpIHVzZXIgcm90YXRpb24gc2NoZW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gc2luZ2xlIHVzZXIgcm90YXRpb24gc2NoZW1lXG4gICAqL1xuICByZWFkb25seSBtYXN0ZXJTZWNyZXQ/OiBJU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIHRoZSBwcmV2aW91cyByb3RhdGlvbiBiZWZvcmVcbiAgICogU2VjcmV0cyBNYW5hZ2VyIHRyaWdnZXJzIHRoZSBuZXh0IGF1dG9tYXRpYyByb3RhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24uZGF5cygzMClcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9tYXRpY2FsbHlBZnRlcj86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmVybGVzcyBhcHBsaWNhdGlvbiBmb3IgdGhlIHJvdGF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwbGljYXRpb246IFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgd2hlcmUgdGhlIExhbWJkYSByb3RhdGlvbiBmdW5jdGlvbiB3aWxsIHJ1bi5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHN1Ym5ldHMgaW4gdGhlIFZQQyB3aGVyZSB0aGUgTGFtYmRhIHJvdGF0aW9uIGZ1bmN0aW9uIHdpbGwgcnVuLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBWcGMgZGVmYXVsdCBzdHJhdGVneSBpZiBub3Qgc3BlY2lmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjU3VibmV0cz86IGVjMi5TdWJuZXRTZWxlY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgc2VydmljZSBvciBkYXRhYmFzZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0OiBlYzIuSUNvbm5lY3RhYmxlO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjdXJpdHkgZ3JvdXAgZm9yIHRoZSBMYW1iZGEgcm90YXRpb24gZnVuY3Rpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIG5ldyBzZWN1cml0eSBncm91cCBpcyBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwPzogZWMyLklTZWN1cml0eUdyb3VwO1xuXG4gIC8qKlxuICAgKiBDaGFyYWN0ZXJzIHdoaWNoIHNob3VsZCBub3QgYXBwZWFyIGluIHRoZSBnZW5lcmF0ZWQgcGFzc3dvcmRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGNoYXJhY3RlcnMgYXJlIGV4cGxpY2l0bHkgZXhjbHVkZWRcbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGVDaGFyYWN0ZXJzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIGludGVyZmFjZSBlbmRwb2ludCB0byB1c2UgZm9yIHRoZSBTZWNyZXRzIE1hbmFnZXIgQVBJXG4gICAqXG4gICAqIElmIHlvdSBlbmFibGUgcHJpdmF0ZSBETlMgaG9zdG5hbWVzIGZvciB5b3VyIFZQQyBwcml2YXRlIGVuZHBvaW50ICh0aGUgZGVmYXVsdCksIHlvdSBkb24ndFxuICAgKiBuZWVkIHRvIHNwZWNpZnkgYW4gZW5kcG9pbnQuIFRoZSBzdGFuZGFyZCBTZWNyZXRzIE1hbmFnZXIgRE5TIGhvc3RuYW1lIHRoZSBTZWNyZXRzIE1hbmFnZXJcbiAgICogQ0xJIGFuZCBTREtzIHVzZSBieSBkZWZhdWx0IChodHRwczovL3NlY3JldHNtYW5hZ2VyLjxyZWdpb24+LmFtYXpvbmF3cy5jb20pIGF1dG9tYXRpY2FsbHlcbiAgICogcmVzb2x2ZXMgdG8geW91ciBWUEMgZW5kcG9pbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGh0dHBzOi8vc2VjcmV0c21hbmFnZXIuPHJlZ2lvbj4uYW1hem9uYXdzLmNvbVxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnQ/OiBlYzIuSUludGVyZmFjZVZwY0VuZHBvaW50O1xufVxuXG4vKipcbiAqIFNlY3JldCByb3RhdGlvbiBmb3IgYSBzZXJ2aWNlIG9yIGRhdGFiYXNlXG4gKi9cbmV4cG9ydCBjbGFzcyBTZWNyZXRSb3RhdGlvbiBleHRlbmRzIENvcmVDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2VjcmV0Um90YXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAoIXByb3BzLnRhcmdldC5jb25uZWN0aW9ucy5kZWZhdWx0UG9ydCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYHRhcmdldGAgY29ubmVjdGlvbnMgbXVzdCBoYXZlIGEgZGVmYXVsdCBwb3J0IHJhbmdlLicpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5hcHBsaWNhdGlvbi5pc011bHRpVXNlciAmJiAhcHJvcHMubWFzdGVyU2VjcmV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBgbWFzdGVyU2VjcmV0YCBtdXN0IGJlIHNwZWNpZmllZCBmb3IgYXBwbGljYXRpb24gdXNpbmcgdGhlIG11bHRpIHVzZXIgc2NoZW1lLicpO1xuICAgIH1cblxuICAgIC8vIE1heCBsZW5ndGggb2YgNjQgY2hhcnMsIGdldCB0aGUgbGFzdCA2NCBjaGFyc1xuICAgIGNvbnN0IHVuaXF1ZUlkID0gTmFtZXMudW5pcXVlSWQodGhpcyk7XG4gICAgY29uc3Qgcm90YXRpb25GdW5jdGlvbk5hbWUgPSB1bmlxdWVJZC5zdWJzdHJpbmcoTWF0aC5tYXgodW5pcXVlSWQubGVuZ3RoIC0gNjQsIDApLCB1bmlxdWVJZC5sZW5ndGgpO1xuXG4gICAgY29uc3Qgc2VjdXJpdHlHcm91cCA9IHByb3BzLnNlY3VyaXR5R3JvdXAgfHwgbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsICdTZWN1cml0eUdyb3VwJywge1xuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgfSk7XG4gICAgcHJvcHMudGFyZ2V0LmNvbm5lY3Rpb25zLmFsbG93RGVmYXVsdFBvcnRGcm9tKHNlY3VyaXR5R3JvdXApO1xuXG4gICAgY29uc3QgcGFyYW1ldGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgIGVuZHBvaW50OiBgaHR0cHM6Ly8ke3Byb3BzLmVuZHBvaW50ID8gYCR7cHJvcHMuZW5kcG9pbnQudnBjRW5kcG9pbnRJZH0uYCA6ICcnfXNlY3JldHNtYW5hZ2VyLiR7U3RhY2sub2YodGhpcykucmVnaW9ufS4ke1N0YWNrLm9mKHRoaXMpLnVybFN1ZmZpeH1gLFxuICAgICAgZnVuY3Rpb25OYW1lOiByb3RhdGlvbkZ1bmN0aW9uTmFtZSxcbiAgICAgIHZwY1N1Ym5ldElkczogcHJvcHMudnBjLnNlbGVjdFN1Ym5ldHMocHJvcHMudnBjU3VibmV0cykuc3VibmV0SWRzLmpvaW4oJywnKSxcbiAgICAgIHZwY1NlY3VyaXR5R3JvdXBJZHM6IHNlY3VyaXR5R3JvdXAuc2VjdXJpdHlHcm91cElkLFxuICAgIH07XG5cbiAgICBpZiAocHJvcHMuZXhjbHVkZUNoYXJhY3RlcnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyYW1ldGVycy5leGNsdWRlQ2hhcmFjdGVycyA9IHByb3BzLmV4Y2x1ZGVDaGFyYWN0ZXJzO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5zZWNyZXQuZW5jcnlwdGlvbktleSkge1xuICAgICAgcGFyYW1ldGVycy5rbXNLZXlBcm4gPSBwcm9wcy5zZWNyZXQuZW5jcnlwdGlvbktleS5rZXlBcm47XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm1hc3RlclNlY3JldCkge1xuICAgICAgcGFyYW1ldGVycy5tYXN0ZXJTZWNyZXRBcm4gPSBwcm9wcy5tYXN0ZXJTZWNyZXQuc2VjcmV0QXJuO1xuXG4gICAgICBpZiAocHJvcHMubWFzdGVyU2VjcmV0LmVuY3J5cHRpb25LZXkpIHtcbiAgICAgICAgcGFyYW1ldGVycy5tYXN0ZXJTZWNyZXRLbXNLZXlBcm4gPSBwcm9wcy5tYXN0ZXJTZWNyZXQuZW5jcnlwdGlvbktleS5rZXlBcm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2FyTWFwcGluZyA9IG5ldyBDZm5NYXBwaW5nKHRoaXMsICdTQVJNYXBwaW5nJywge1xuICAgICAgbWFwcGluZzoge1xuICAgICAgICAnYXdzJzoge1xuICAgICAgICAgIGFwcGxpY2F0aW9uSWQ6IHByb3BzLmFwcGxpY2F0aW9uLmFwcGxpY2F0aW9uQXJuRm9yUGFydGl0aW9uKCdhd3MnKSxcbiAgICAgICAgICBzZW1hbnRpY1ZlcnNpb246IHByb3BzLmFwcGxpY2F0aW9uLnNlbWFudGljVmVyc2lvbkZvclBhcnRpdGlvbignYXdzJyksXG4gICAgICAgIH0sXG4gICAgICAgICdhd3MtY24nOiB7XG4gICAgICAgICAgYXBwbGljYXRpb25JZDogcHJvcHMuYXBwbGljYXRpb24uYXBwbGljYXRpb25Bcm5Gb3JQYXJ0aXRpb24oJ2F3cy1jbicpLFxuICAgICAgICAgIHNlbWFudGljVmVyc2lvbjogcHJvcHMuYXBwbGljYXRpb24uc2VtYW50aWNWZXJzaW9uRm9yUGFydGl0aW9uKCdhd3MtY24nKSxcbiAgICAgICAgfSxcbiAgICAgICAgJ2F3cy11cy1nb3YnOiB7XG4gICAgICAgICAgYXBwbGljYXRpb25JZDogcHJvcHMuYXBwbGljYXRpb24uYXBwbGljYXRpb25Bcm5Gb3JQYXJ0aXRpb24oJ2F3cy11cy1nb3YnKSxcbiAgICAgICAgICBzZW1hbnRpY1ZlcnNpb246IHByb3BzLmFwcGxpY2F0aW9uLnNlbWFudGljVmVyc2lvbkZvclBhcnRpdGlvbignYXdzLXVzLWdvdicpLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBjb25zdCBhcHBsaWNhdGlvbiA9IG5ldyBzZXJ2ZXJsZXNzLkNmbkFwcGxpY2F0aW9uKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGFwcGxpY2F0aW9uSWQ6IHNhck1hcHBpbmcuZmluZEluTWFwKEF3cy5QQVJUSVRJT04sICdhcHBsaWNhdGlvbklkJyksXG4gICAgICAgIHNlbWFudGljVmVyc2lvbjogc2FyTWFwcGluZy5maW5kSW5NYXAoQXdzLlBBUlRJVElPTiwgJ3NlbWFudGljVmVyc2lvbicpLFxuICAgICAgfSxcbiAgICAgIHBhcmFtZXRlcnMsXG4gICAgfSk7XG5cbiAgICAvLyBUaGlzIGNyZWF0ZXMgYSBDRiBhIGRlcGVuZGVuY3kgYmV0d2VlbiB0aGUgcm90YXRpb24gc2NoZWR1bGUgYW5kIHRoZVxuICAgIC8vIHNlcnZlcmxlc3MgYXBwbGljYXRpb24uIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgaXQncyB0aGUgYXBwbGljYXRpb25cbiAgICAvLyB0aGF0IGNyZWF0ZXMgdGhlIExhbWJkYSBwZXJtaXNzaW9uIHRvIGludm9rZSB0aGUgZnVuY3Rpb24uXG4gICAgLy8gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZWNyZXRzbWFuYWdlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVncmF0aW5nX2Nsb3VkZm9ybWF0aW9uLmh0bWxcbiAgICBjb25zdCByb3RhdGlvbkxhbWJkYSA9IGxhbWJkYS5GdW5jdGlvbi5mcm9tRnVuY3Rpb25Bcm4odGhpcywgJ1JvdGF0aW9uTGFtYmRhJywgVG9rZW4uYXNTdHJpbmcoYXBwbGljYXRpb24uZ2V0QXR0KCdPdXRwdXRzLlJvdGF0aW9uTGFtYmRhQVJOJykpKTtcblxuICAgIHByb3BzLnNlY3JldC5hZGRSb3RhdGlvblNjaGVkdWxlKCdSb3RhdGlvblNjaGVkdWxlJywge1xuICAgICAgcm90YXRpb25MYW1iZGEsXG4gICAgICBhdXRvbWF0aWNhbGx5QWZ0ZXI6IHByb3BzLmF1dG9tYXRpY2FsbHlBZnRlcixcbiAgICB9KTtcblxuICAgIC8vIFByZXZlbnQgbWFzdGVyIHNlY3JldCBkZWxldGlvbiB3aGVuIHJvdGF0aW9uIGlzIGluIHBsYWNlXG4gICAgaWYgKHByb3BzLm1hc3RlclNlY3JldCkge1xuICAgICAgcHJvcHMubWFzdGVyU2VjcmV0LmRlbnlBY2NvdW50Um9vdERlbGV0ZSgpO1xuICAgIH1cbiAgfVxufVxuIl19

@@ -8,23 +8,13 @@ import * as iam from '@aws-cdk/aws-iam';

* A secret in AWS Secrets Manager.
*
* @stability stable
*/
export interface ISecret extends IResource {
/**
* The customer-managed encryption key that is used to encrypt this secret, if any.
*
* When not specified, the default
* The customer-managed encryption key that is used to encrypt this secret, if any. When not specified, the default
* KMS key for the account and region is being used.
*
* @stability stable
*/
readonly encryptionKey?: kms.IKey;
/**
* The ARN of the secret in AWS Secrets Manager.
*
* Will return the full ARN if available, otherwise a partial arn.
* The ARN of the secret in AWS Secrets Manager. Will return the full ARN if available, otherwise a partial arn.
* For secrets imported by the deprecated `fromSecretName`, it will return the `secretName`.
*
* @stability stable
* @attribute true
* @attribute
*/

@@ -34,6 +24,3 @@ readonly secretArn: string;

* The full ARN of the secret in AWS Secrets Manager, which is the ARN including the Secrets Manager-supplied 6-character suffix.
*
* This is equal to `secretArn` in most cases, but is undefined when a full ARN is not available (e.g., secrets imported by name).
*
* @stability stable
*/

@@ -46,4 +33,2 @@ readonly secretFullArn?: string;

* '@aws-cdk/aws-secretsmanager:parseOwnedSecretName' feature flag is set.
*
* @stability stable
*/

@@ -53,5 +38,3 @@ readonly secretName: string;

* Retrieve the value of the stored secret as a `SecretValue`.
*
* @stability stable
* @attribute true
* @attribute
*/

@@ -61,4 +44,2 @@ readonly secretValue: SecretValue;

* Interpret the secret as a JSON object and return a field's value from it as a `SecretValue`.
*
* @stability stable
*/

@@ -69,5 +50,5 @@ secretValueFromJson(key: string): SecretValue;

*
* @param grantee the principal being granted permission.
* @param versionStages the version stages the grant is limited to.
* @stability stable
* @param grantee the principal being granted permission.
* @param versionStages the version stages the grant is limited to. If not specified, no restriction on the version
* stages is applied.
*/

@@ -78,4 +59,3 @@ grantRead(grantee: iam.IGrantable, versionStages?: string[]): iam.Grant;

*
* @param grantee the principal being granted permission.
* @stability stable
* @param grantee the principal being granted permission.
*/

@@ -85,4 +65,2 @@ grantWrite(grantee: iam.IGrantable): iam.Grant;

* Adds a rotation schedule to the secret.
*
* @stability stable
*/

@@ -96,10 +74,7 @@ addRotationSchedule(id: string, options: RotationScheduleOptions): RotationSchedule;

* the secret is imported, then this is a no-op.
*
* @stability stable
*/
addToResourcePolicy(statement: iam.PolicyStatement): iam.AddToResourcePolicyResult;
/**
* Denies the `DeleteSecret` action to all principals within the current account.
*
* @stability stable
* Denies the `DeleteSecret` action to all principals within the current
* account.
*/

@@ -112,3 +87,2 @@ denyAccountRootDelete(): void;

* @returns An attached secret
* @stability stable
*/

@@ -119,4 +93,2 @@ attach(target: ISecretAttachmentTarget): ISecret;

* The properties required to create a new secret in AWS Secrets Manager.
*
* @stability stable
*/

@@ -128,3 +100,2 @@ export interface SecretProps {

* @default - No description.
* @stability stable
*/

@@ -136,3 +107,2 @@ readonly description?: string;

* @default - A default KMS key for the account and region is used.
* @stability stable
*/

@@ -147,17 +117,13 @@ readonly encryptionKey?: kms.IKey;

* category), per the default values of ``SecretStringGenerator``.
* @stability stable
*/
readonly generateSecretString?: SecretStringGenerator;
/**
* A name for the secret.
*
* Note that deleting secrets from SecretsManager does not happen immediately, but after a 7 to
* A name for the secret. Note that deleting secrets from SecretsManager does not happen immediately, but after a 7 to
* 30 days blackout period. During that period, it is not possible to create another secret that shares the same name.
*
* @default - A name is generated by CloudFormation.
* @stability stable
*/
readonly secretName?: string;
/**
* Initial value for the secret.
* Initial value for the secret
*

@@ -176,3 +142,2 @@ * **NOTE:** *It is **highly** encouraged to leave this field undefined and allow SecretsManager to create the secret value.

* @default - SecretsManager generates a new secret value.
* @stability stable
*/

@@ -184,3 +149,2 @@ readonly secretStringBeta1?: SecretStringValueBeta1;

* @default - Not set.
* @stability stable
*/

@@ -192,3 +156,2 @@ readonly removalPolicy?: RemovalPolicy;

* @default - Secret is not replicated
* @stability stable
*/

@@ -198,11 +161,7 @@ readonly replicaRegions?: ReplicaRegion[];

/**
* Secret replica region.
*
* @stability stable
* Secret replica region
*/
export interface ReplicaRegion {
/**
* The name of the region.
*
* @stability stable
* The name of the region
*/

@@ -214,3 +173,2 @@ readonly region: string;

* @default - A default KMS key for the account and region is used.
* @stability stable
*/

@@ -221,7 +179,4 @@ readonly encryptionKey?: kms.IKey;

* An experimental class used to specify an initial secret value for a Secret.
*
* The class wraps a simple string (or JSON representation) in order to provide some safety checks and warnings
* about the dangers of using plaintext strings as initial secret seed values via CDK/CloudFormation.
*
* @stability stable
*/

@@ -232,8 +187,5 @@ export declare class SecretStringValueBeta1 {

* Creates a `SecretStringValueBeta1` from a plaintext value.
*
* This approach is inherently unsafe, as the secret value may be visible in your source control repository
* and will also appear in plaintext in the resulting CloudFormation template, including in the AWS Console or APIs.
* Usage of this method is discouraged, especially for production workloads.
*
* @stability stable
*/

@@ -243,3 +195,2 @@ static fromUnsafePlaintext(secretValue: string): SecretStringValueBeta1;

* Creates a `SecretValueValueBeta1` from a string value coming from a Token.
*
* The intent is to enable creating secrets from references (e.g., `Ref`, `Fn::GetAtt`) from other resources.

@@ -251,17 +202,17 @@ * This might be the direct output of another Construct, or the output of a Custom Resource.

* ```ts
* // Creates a new IAM user, access and secret keys, and stores the secret access key in a Secret.
* const user = new iam.User(this, 'User');
* const accessKey = new iam.AccessKey(this, 'AccessKey', { user });
* const secretValue = secretsmanager.SecretStringValueBeta1.fromToken(accessKey.secretAccessKey.toString());
* new secretsmanager.Secret(this, 'Secret', {
* secretStringBeta1: secretValue,
* });
* // Creates a new IAM user, access and secret keys, and stores the secret access key in a Secret.
* const user = new iam.User(this, 'User');
* const accessKey = new iam.AccessKey(this, 'AccessKey', { user });
* const secretValue = secretsmanager.SecretStringValueBeta1.fromToken(accessKey.secretAccessKey.toString());
* new secretsmanager.Secret(this, 'Secret', {
* secretStringBeta1: secretValue,
* });
* ```
*
* The secret may also be embedded in a string representation of a JSON structure:
* const secretValue = secretsmanager.SecretStringValueBeta1.fromToken(JSON.stringify({
* username: user.userName,
* database: 'foo',
* password: accessKey.secretAccessKey.toString(),
* }));
* const secretValue = secretsmanager.SecretStringValueBeta1.fromToken(JSON.stringify({
* username: user.userName,
* database: 'foo',
* password: accessKey.secretAccessKey.toString(),
* }));
*

@@ -272,12 +223,7 @@ * Note that the value being a Token does *not* guarantee safety. For example, a Lazy-evaluated string

*
* @param secretValueFromToken a secret value coming from a Construct attribute or Custom Resource output.
* @stability stable
* @param secretValueFromToken a secret value coming from a Construct attribute or Custom Resource output
*/
static fromToken(secretValueFromToken: string): SecretStringValueBeta1;
private constructor();
/**
* Returns the secret value.
*
* @stability stable
*/
/** Returns the secret value */
secretValue(): string;

@@ -287,6 +233,3 @@ }

* Attributes required to import an existing secret into the Stack.
*
* One ARN format (`secretArn`, `secretCompleteArn`, `secretPartialArn`) must be provided.
*
* @stability stable
*/

@@ -296,11 +239,7 @@ export interface SecretAttributes {

* The encryption key that is used to encrypt the secret, unless the default SecretsManager key is used.
*
* @stability stable
*/
readonly encryptionKey?: kms.IKey;
/**
* (deprecated) The ARN of the secret in SecretsManager.
*
* The ARN of the secret in SecretsManager.
* Cannot be used with `secretCompleteArn` or `secretPartialArn`.
*
* @deprecated use `secretCompleteArn` or `secretPartialArn` instead.

@@ -310,17 +249,9 @@ */

/**
* The complete ARN of the secret in SecretsManager.
*
* This is the ARN including the Secrets Manager 6-character suffix.
* The complete ARN of the secret in SecretsManager. This is the ARN including the Secrets Manager 6-character suffix.
* Cannot be used with `secretArn` or `secretPartialArn`.
*
* @stability stable
*/
readonly secretCompleteArn?: string;
/**
* The partial ARN of the secret in SecretsManager.
*
* This is the ARN without the Secrets Manager 6-character suffix.
* The partial ARN of the secret in SecretsManager. This is the ARN without the Secrets Manager 6-character suffix.
* Cannot be used with `secretArn` or `secretCompleteArn`.
*
* @stability stable
*/

@@ -338,81 +269,23 @@ readonly secretPartialArn?: string;

private policy?;
/**
* The full ARN of the secret in AWS Secrets Manager, which is the ARN including the Secrets Manager-supplied 6-character suffix.
*
* This is equal to `secretArn` in most cases, but is undefined when a full ARN is not available (e.g., secrets imported by name).
*
* @stability stable
*/
get secretFullArn(): string | undefined;
/**
* Grants reading the secret value to some role.
*
* @stability stable
*/
grantRead(grantee: iam.IGrantable, versionStages?: string[]): iam.Grant;
/**
* Grants writing and updating the secret value to some role.
*
* @stability stable
*/
grantWrite(grantee: iam.IGrantable): iam.Grant;
/**
* Retrieve the value of the stored secret as a `SecretValue`.
*
* @stability stable
*/
get secretValue(): SecretValue;
/**
* Interpret the secret as a JSON object and return a field's value from it as a `SecretValue`.
*
* @stability stable
*/
secretValueFromJson(jsonField: string): SecretValue;
/**
* Adds a rotation schedule to the secret.
*
* @stability stable
*/
addRotationSchedule(id: string, options: RotationScheduleOptions): RotationSchedule;
/**
* Adds a statement to the IAM resource policy associated with this secret.
*
* If this secret was created in this stack, a resource policy will be
* automatically created upon the first call to `addToResourcePolicy`. If
* the secret is imported, then this is a no-op.
*
* @stability stable
*/
addToResourcePolicy(statement: iam.PolicyStatement): iam.AddToResourcePolicyResult;
/**
* Validate the current construct.
*
* This method can be implemented by derived constructs in order to perform
* validation logic. It is called on all constructs before synthesis.
*
* @stability stable
*/
protected validate(): string[];
/**
* Denies the `DeleteSecret` action to all principals within the current account.
*
* @stability stable
*/
denyAccountRootDelete(): void;
/**
* Provides an identifier for this secret for use in IAM policies.
*
* If there is a full ARN, this is just the ARN;
* if we have a partial ARN -- due to either importing by secret name or partial ARN --
* then we need to add a suffix to capture the full ARN's format.
*
* @stability stable
*/
protected get arnForPolicies(): string;
/**
* Attach a target to this secret.
* Attach a target to this secret
*
* @param target The target to attach.
* @param target The target to attach
* @returns An attached secret
* @stability stable
*/

@@ -423,32 +296,13 @@ attach(target: ISecretAttachmentTarget): ISecret;

* Creates a new secret in AWS SecretsManager.
*
* @stability stable
*/
export declare class Secret extends SecretBase {
/**
* @deprecated use `fromSecretCompleteArn` or `fromSecretPartialArn`
*/
/** @deprecated use `fromSecretCompleteArn` or `fromSecretPartialArn` */
static fromSecretArn(scope: Construct, id: string, secretArn: string): ISecret;
/**
* Imports a secret by complete ARN.
*
* The complete ARN is the ARN with the Secrets Manager-supplied suffix.
*
* @stability stable
*/
/** Imports a secret by complete ARN. The complete ARN is the ARN with the Secrets Manager-supplied suffix. */
static fromSecretCompleteArn(scope: Construct, id: string, secretCompleteArn: string): ISecret;
/**
* Imports a secret by partial ARN.
*
* The partial ARN is the ARN without the Secrets Manager-supplied suffix.
*
* @stability stable
*/
/** Imports a secret by partial ARN. The partial ARN is the ARN without the Secrets Manager-supplied suffix. */
static fromSecretPartialArn(scope: Construct, id: string, secretPartialArn: string): ISecret;
/**
* (deprecated) Imports a secret by secret name;
*
* the ARN of the Secret will be set to the secret name.
* Imports a secret by secret name; the ARN of the Secret will be set to the secret name.
* A secret with this name must exist in the same account & region.
*
* @deprecated use `fromSecretNameV2`

@@ -459,7 +313,4 @@ */

* Imports a secret by secret name.
*
* A secret with this name must exist in the same account & region.
* Replaces the deprecated `fromSecretName`.
*
* @stability stable
*/

@@ -471,47 +322,17 @@ static fromSecretNameV2(scope: Construct, id: string, secretName: string): ISecret;

* @param scope the scope of the import.
* @param id the ID of the imported Secret in the construct tree.
* @param id the ID of the imported Secret in the construct tree.
* @param attrs the attributes of the imported secret.
* @stability stable
*/
static fromSecretAttributes(scope: Construct, id: string, attrs: SecretAttributes): ISecret;
/**
* The customer-managed encryption key that is used to encrypt this secret, if any.
*
* When not specified, the default
* KMS key for the account and region is being used.
*
* @stability stable
*/
readonly encryptionKey?: kms.IKey;
/**
* The ARN of the secret in AWS Secrets Manager.
*
* Will return the full ARN if available, otherwise a partial arn.
* For secrets imported by the deprecated `fromSecretName`, it will return the `secretName`.
*
* @stability stable
*/
readonly secretArn: string;
/**
* The name of the secret.
*
* For "owned" secrets, this will be the full resource name (secret name + suffix), unless the
* '@aws-cdk/aws-secretsmanager:parseOwnedSecretName' feature flag is set.
*
* @stability stable
*/
readonly secretName: string;
private replicaRegions;
/**
* @stability stable
*/
protected readonly autoCreatePolicy = true;
/**
* @stability stable
*/
constructor(scope: Construct, id: string, props?: SecretProps);
/**
* (deprecated) Adds a target attachment to the secret.
* Adds a target attachment to the secret.
*
* @returns an AttachedSecret
*
* @deprecated use `attach()` instead

@@ -521,7 +342,6 @@ */

/**
* Adds a replica region for the secret.
* Adds a replica region for the secret
*
* @param region The name of the region.
* @param region The name of the region
* @param encryptionKey The customer-managed encryption key to use for encrypting the secret value.
* @stability stable
*/

@@ -532,4 +352,2 @@ addReplicaRegion(region: string, encryptionKey?: kms.IKey): void;

* A secret attachment target.
*
* @stability stable
*/

@@ -539,4 +357,2 @@ export interface ISecretAttachmentTarget {

* Renders the target specifications.
*
* @stability stable
*/

@@ -547,8 +363,6 @@ asSecretAttachmentTarget(): SecretAttachmentTargetProps;

* The type of service or database that's being associated with the secret.
*
* @stability stable
*/
export declare enum AttachmentTargetType {
/**
* (deprecated) A database instance.
* A database instance
*

@@ -559,3 +373,3 @@ * @deprecated use RDS_DB_INSTANCE instead

/**
* (deprecated) A database cluster.
* A database cluster
*

@@ -574,23 +388,15 @@ * @deprecated use RDS_DB_CLUSTER instead

/**
* AWS::RDS::DBProxy.
*
* @stability stable
* AWS::RDS::DBProxy
*/
RDS_DB_PROXY = "AWS::RDS::DBProxy",
/**
* AWS::Redshift::Cluster.
*
* @stability stable
* AWS::Redshift::Cluster
*/
REDSHIFT_CLUSTER = "AWS::Redshift::Cluster",
/**
* AWS::DocDB::DBInstance.
*
* @stability stable
* AWS::DocDB::DBInstance
*/
DOCDB_DB_INSTANCE = "AWS::DocDB::DBInstance",
/**
* AWS::DocDB::DBCluster.
*
* @stability stable
* AWS::DocDB::DBCluster
*/

@@ -601,4 +407,2 @@ DOCDB_DB_CLUSTER = "AWS::DocDB::DBCluster"

* Attachment target specifications.
*
* @stability stable
*/

@@ -608,4 +412,2 @@ export interface SecretAttachmentTargetProps {

* The id of the target to attach the secret to.
*
* @stability stable
*/

@@ -615,4 +417,2 @@ readonly targetId: string;

* The type of the target to attach the secret to.
*
* @stability stable
*/

@@ -623,4 +423,2 @@ readonly targetType: AttachmentTargetType;

* Options to add a secret attachment to a secret.
*
* @stability stable
*/

@@ -630,4 +428,2 @@ export interface AttachedSecretOptions {

* The target to attach the secret to.
*
* @stability stable
*/

@@ -638,4 +434,2 @@ readonly target: ISecretAttachmentTarget;

* Construction properties for an AttachedSecret.
*
* @stability stable
*/

@@ -645,16 +439,10 @@ export interface SecretTargetAttachmentProps extends AttachedSecretOptions {

* The secret to attach to the target.
*
* @stability stable
*/
readonly secret: ISecret;
}
/**
* @stability stable
*/
export interface ISecretTargetAttachment extends ISecret {
/**
* Same as `secretArn`.
* Same as `secretArn`
*
* @stability stable
* @attribute true
* @attribute
*/

@@ -665,51 +453,13 @@ readonly secretTargetAttachmentSecretArn: string;

* An attached secret.
*
* @stability stable
*/
export declare class SecretTargetAttachment extends SecretBase implements ISecretTargetAttachment {
/**
* @stability stable
*/
static fromSecretTargetAttachmentSecretArn(scope: Construct, id: string, secretTargetAttachmentSecretArn: string): ISecretTargetAttachment;
/**
* The customer-managed encryption key that is used to encrypt this secret, if any.
*
* When not specified, the default
* KMS key for the account and region is being used.
*
* @stability stable
*/
readonly encryptionKey?: kms.IKey;
/**
* The ARN of the secret in AWS Secrets Manager.
*
* Will return the full ARN if available, otherwise a partial arn.
* For secrets imported by the deprecated `fromSecretName`, it will return the `secretName`.
*
* @stability stable
*/
readonly secretArn: string;
/**
* The name of the secret.
*
* For "owned" secrets, this will be the full resource name (secret name + suffix), unless the
* '@aws-cdk/aws-secretsmanager:parseOwnedSecretName' feature flag is set.
*
* @stability stable
*/
readonly secretName: string;
/**
* Same as `secretArn`.
*
* @stability stable
* @attribute true
* @attribute
*/
readonly secretTargetAttachmentSecretArn: string;
/**
* @stability stable
*/
protected readonly autoCreatePolicy = true;
/**
* @stability stable
*/
constructor(scope: Construct, id: string, props: SecretTargetAttachmentProps);

@@ -719,4 +469,2 @@ }

* Configuration to generate secrets such as passwords automatically.
*
* @stability stable
*/

@@ -728,3 +476,2 @@ export interface SecretStringGenerator {

* @default false
* @stability stable
*/

@@ -736,3 +483,2 @@ readonly excludeUppercase?: boolean;

* @default true
* @stability stable
*/

@@ -744,13 +490,9 @@ readonly requireEachIncludedType?: boolean;

* @default false
* @stability stable
*/
readonly includeSpace?: boolean;
/**
* A string that includes characters that shouldn't be included in the generated password.
*
* The string can be a minimum
* A string that includes characters that shouldn't be included in the generated password. The string can be a minimum
* of ``0`` and a maximum of ``4096`` characters long.
*
* @default no exclusions
* @stability stable
*/

@@ -762,3 +504,2 @@ readonly excludeCharacters?: string;

* @default 32
* @stability stable
*/

@@ -770,3 +511,2 @@ readonly passwordLength?: number;

* @default false
* @stability stable
*/

@@ -778,3 +518,2 @@ readonly excludePunctuation?: boolean;

* @default false
* @stability stable
*/

@@ -786,23 +525,15 @@ readonly excludeLowercase?: boolean;

* @default false
* @stability stable
*/
readonly excludeNumbers?: boolean;
/**
* A properly structured JSON string that the generated password can be added to.
*
* The ``generateStringKey`` is
* A properly structured JSON string that the generated password can be added to. The ``generateStringKey`` is
* combined with the generated random string and inserted into the JSON structure that's specified by this parameter.
* The merged JSON string is returned as the completed SecretString of the secret. If you specify ``secretStringTemplate``
* then ``generateStringKey`` must be also be specified.
*
* @stability stable
*/
readonly secretStringTemplate?: string;
/**
* The JSON key name that's used to add the generated password to the JSON structure specified by the ``secretStringTemplate`` parameter.
*
* If you specify ``generateStringKey`` then ``secretStringTemplate``
* The JSON key name that's used to add the generated password to the JSON structure specified by the
* ``secretStringTemplate`` parameter. If you specify ``generateStringKey`` then ``secretStringTemplate``
* must be also be specified.
*
* @stability stable
*/

@@ -809,0 +540,0 @@ readonly generateStringKey?: string;

import * as cdk from '@aws-cdk/core';
import * as cfn_parse from '@aws-cdk/core/lib/cfn-parse';
/**
* Properties for defining a `CfnResourcePolicy`.
* Properties for defining a `CfnResourcePolicy`
*
* @external
* @struct
* @stability external
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-resourcepolicy.html

@@ -11,7 +13,4 @@ */

/**
* A JSON-formatted string for an AWS resource-based policy.
* A JSON-formatted string for an AWS resource-based policy. For example policies, see [Permissions policy examples](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html) .
*
* For example policies, see [Permissions policy examples](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html) .
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-resourcepolicy.html#cfn-secretsmanager-resourcepolicy-resourcepolicy

@@ -25,3 +24,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-resourcepolicy.html#cfn-secretsmanager-resourcepolicy-secretid

@@ -31,7 +29,4 @@ */

/**
* Specifies whether to block resource-based policies that allow broad access to the secret.
* Specifies whether to block resource-based policies that allow broad access to the secret. By default, Secrets Manager blocks policies that allow broad access, for example those that use a wildcard for the principal.
*
* By default, Secrets Manager blocks policies that allow broad access, for example those that use a wildcard for the principal.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-resourcepolicy.html#cfn-secretsmanager-resourcepolicy-blockpublicpolicy

@@ -42,3 +37,3 @@ */

/**
* A CloudFormation `AWS::SecretsManager::ResourcePolicy`.
* A CloudFormation `AWS::SecretsManager::ResourcePolicy`
*

@@ -51,4 +46,5 @@ * Attaches a resource-based permission policy to a secret. A resource-based policy is optional. For more information, see [Authentication and access control for Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html)

*
* @external
* @cloudformationResource AWS::SecretsManager::ResourcePolicy
* @stability external
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-resourcepolicy.html

@@ -59,4 +55,2 @@ */

* The CloudFormation resource type name for this resource class.
*
* @external
*/

@@ -73,7 +67,4 @@ static readonly CFN_RESOURCE_TYPE_NAME = "AWS::SecretsManager::ResourcePolicy";

/**
* A JSON-formatted string for an AWS resource-based policy.
* A JSON-formatted string for an AWS resource-based policy. For example policies, see [Permissions policy examples](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html) .
*
* For example policies, see [Permissions policy examples](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html) .
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-resourcepolicy.html#cfn-secretsmanager-resourcepolicy-resourcepolicy

@@ -87,3 +78,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-resourcepolicy.html#cfn-secretsmanager-resourcepolicy-secretid

@@ -93,7 +83,4 @@ */

/**
* Specifies whether to block resource-based policies that allow broad access to the secret.
* Specifies whether to block resource-based policies that allow broad access to the secret. By default, Secrets Manager blocks policies that allow broad access, for example those that use a wildcard for the principal.
*
* By default, Secrets Manager blocks policies that allow broad access, for example those that use a wildcard for the principal.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-resourcepolicy.html#cfn-secretsmanager-resourcepolicy-blockpublicpolicy

@@ -105,6 +92,5 @@ */

*
* @param scope - scope in which this resource is defined.
* @param id - scoped id of the resource.
* @param props - resource properties.
* @external
* @param scope - scope in which this resource is defined
* @param id - scoped id of the resource
* @param props - resource properties
*/

@@ -115,15 +101,9 @@ constructor(scope: cdk.Construct, id: string, props: CfnResourcePolicyProps);

*
* @param inspector - tree inspector to collect and process attributes.
* @external
* @param inspector - tree inspector to collect and process attributes
*
*/
inspect(inspector: cdk.TreeInspector): void;
/**
* @external
*/
protected get cfnProperties(): {
[key: string]: any;
};
/**
* @external
*/
protected renderProperties(props: {

@@ -136,5 +116,7 @@ [key: string]: any;

/**
* Properties for defining a `CfnRotationSchedule`.
* Properties for defining a `CfnRotationSchedule`
*
* @external
* @struct
* @stability external
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-rotationschedule.html

@@ -148,3 +130,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-rotationschedule.html#cfn-secretsmanager-rotationschedule-secretid

@@ -158,3 +139,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-rotationschedule.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda

@@ -164,5 +144,4 @@ */

/**
* `AWS::SecretsManager::RotationSchedule.RotateImmediatelyOnUpdate`.
* `AWS::SecretsManager::RotationSchedule.RotateImmediatelyOnUpdate`
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-rotationschedule.html#cfn-secretsmanager-rotationschedule-rotateimmediatelyonupdate

@@ -172,9 +151,6 @@ */

/**
* The ARN of the Lambda function that can rotate the secret.
* The ARN of the Lambda function that can rotate the secret. If you don't specify this parameter, then the secret must already have the ARN of a Lambda function configured.
*
* If you don't specify this parameter, then the secret must already have the ARN of a Lambda function configured.
*
* To reference a Lambda function also created in this template, use the [Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) function with the function's logical ID.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-rotationschedule.html#cfn-secretsmanager-rotationschedule-rotationlambdaarn

@@ -186,3 +162,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-rotationschedule.html#cfn-secretsmanager-rotationschedule-rotationrules

@@ -193,3 +168,3 @@ */

/**
* A CloudFormation `AWS::SecretsManager::RotationSchedule`.
* A CloudFormation `AWS::SecretsManager::RotationSchedule`
*

@@ -200,4 +175,5 @@ * Configures rotation for a secret. You must already configure the secret with the details of the database or service. If you define both the secret and the database or service in an AWS CloudFormation template, then define the [AWS::SecretsManager::SecretTargetAttachment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html) resource to populate the secret with the connection details of the database or service before you attempt to configure rotation.

*
* @external
* @cloudformationResource AWS::SecretsManager::RotationSchedule
* @stability external
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-rotationschedule.html

@@ -208,4 +184,2 @@ */

* The CloudFormation resource type name for this resource class.
*
* @external
*/

@@ -226,3 +200,2 @@ static readonly CFN_RESOURCE_TYPE_NAME = "AWS::SecretsManager::RotationSchedule";

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-rotationschedule.html#cfn-secretsmanager-rotationschedule-secretid

@@ -236,3 +209,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-rotationschedule.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda

@@ -242,5 +214,4 @@ */

/**
* `AWS::SecretsManager::RotationSchedule.RotateImmediatelyOnUpdate`.
* `AWS::SecretsManager::RotationSchedule.RotateImmediatelyOnUpdate`
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-rotationschedule.html#cfn-secretsmanager-rotationschedule-rotateimmediatelyonupdate

@@ -250,9 +221,6 @@ */

/**
* The ARN of the Lambda function that can rotate the secret.
* The ARN of the Lambda function that can rotate the secret. If you don't specify this parameter, then the secret must already have the ARN of a Lambda function configured.
*
* If you don't specify this parameter, then the secret must already have the ARN of a Lambda function configured.
*
* To reference a Lambda function also created in this template, use the [Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) function with the function's logical ID.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-rotationschedule.html#cfn-secretsmanager-rotationschedule-rotationlambdaarn

@@ -264,3 +232,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-rotationschedule.html#cfn-secretsmanager-rotationschedule-rotationrules

@@ -272,6 +239,5 @@ */

*
* @param scope - scope in which this resource is defined.
* @param id - scoped id of the resource.
* @param props - resource properties.
* @external
* @param scope - scope in which this resource is defined
* @param id - scoped id of the resource
* @param props - resource properties
*/

@@ -282,15 +248,9 @@ constructor(scope: cdk.Construct, id: string, props: CfnRotationScheduleProps);

*
* @param inspector - tree inspector to collect and process attributes.
* @external
* @param inspector - tree inspector to collect and process attributes
*
*/
inspect(inspector: cdk.TreeInspector): void;
/**
* @external
*/
protected get cfnProperties(): {
[key: string]: any;
};
/**
* @external
*/
protected renderProperties(props: {

@@ -302,13 +262,2 @@ [key: string]: any;

}
/**
* A CloudFormation `AWS::SecretsManager::RotationSchedule`.
*
* Configures rotation for a secret. You must already configure the secret with the details of the database or service. If you define both the secret and the database or service in an AWS CloudFormation template, then define the [AWS::SecretsManager::SecretTargetAttachment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html) resource to populate the secret with the connection details of the database or service before you attempt to configure rotation.
*
* > When you configure rotation for a secret, AWS CloudFormation automatically rotates the secret one time.
*
* @external
* @cloudformationResource AWS::SecretsManager::RotationSchedule
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-rotationschedule.html
*/
export declare namespace CfnRotationSchedule {

@@ -320,3 +269,5 @@ /**

*
* @external
* @struct
* @stability external
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html

@@ -326,7 +277,4 @@ */

/**
* The ARN of the KMS key that Secrets Manager uses to encrypt the secret.
* The ARN of the KMS key that Secrets Manager uses to encrypt the secret. If you don't specify this value, then Secrets Manager uses the key `aws/secretsmanager` . If `aws/secretsmanager` doesn't yet exist, then Secrets Manager creates it for you automatically the first time it encrypts the secret value.
*
* If you don't specify this value, then Secrets Manager uses the key `aws/secretsmanager` . If `aws/secretsmanager` doesn't yet exist, then Secrets Manager creates it for you automatically the first time it encrypts the secret value.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda-kmskeyarn

@@ -336,7 +284,4 @@ */

/**
* The ARN of the secret that contains elevated credentials.
* The ARN of the secret that contains elevated credentials. The Lambda rotation function uses this secret for the [Alternating users rotation strategy](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets_strategies.html#rotating-secrets-two-users) .
*
* The Lambda rotation function uses this secret for the [Alternating users rotation strategy](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets_strategies.html#rotating-secrets-two-users) .
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda-mastersecretarn

@@ -348,3 +293,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda-mastersecretkmskeyarn

@@ -356,3 +300,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda-rotationlambdaname

@@ -381,3 +324,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda-rotationtype

@@ -387,7 +329,4 @@ */

/**
* The ARN of the secret that contains elevated credentials.
* The ARN of the secret that contains elevated credentials. The Lambda rotation function uses this secret for the [Alternating users rotation strategy](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets_strategies.html#rotating-secrets-two-users) .
*
* The Lambda rotation function uses this secret for the [Alternating users rotation strategy](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets_strategies.html#rotating-secrets-two-users) .
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda-superusersecretarn

@@ -399,3 +338,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda-superusersecretkmskeyarn

@@ -409,3 +347,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda-vpcsecuritygroupids

@@ -415,7 +352,4 @@ */

/**
* A comma separated list of VPC subnet IDs of the target database network.
* A comma separated list of VPC subnet IDs of the target database network. The Lambda rotation function is in the same subnet group.
*
* The Lambda rotation function is in the same subnet group.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda-vpcsubnetids

@@ -426,13 +360,2 @@ */

}
/**
* A CloudFormation `AWS::SecretsManager::RotationSchedule`.
*
* Configures rotation for a secret. You must already configure the secret with the details of the database or service. If you define both the secret and the database or service in an AWS CloudFormation template, then define the [AWS::SecretsManager::SecretTargetAttachment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html) resource to populate the secret with the connection details of the database or service before you attempt to configure rotation.
*
* > When you configure rotation for a secret, AWS CloudFormation automatically rotates the secret one time.
*
* @external
* @cloudformationResource AWS::SecretsManager::RotationSchedule
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-rotationschedule.html
*/
export declare namespace CfnRotationSchedule {

@@ -442,3 +365,5 @@ /**

*
* @external
* @struct
* @stability external
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-rotationschedule-rotationrules.html

@@ -448,9 +373,6 @@ */

/**
* The number of days between automatic scheduled rotations of the secret.
* The number of days between automatic scheduled rotations of the secret. You can use this value to check that your secret meets your compliance guidelines for how often secrets must be rotated.
*
* You can use this value to check that your secret meets your compliance guidelines for how often secrets must be rotated.
*
* In `DescribeSecret` and `ListSecrets` , this value is calculated from the rotation schedule after every successful rotation. In `RotateSecret` , you can set the rotation schedule in `RotationRules` with `AutomaticallyAfterDays` or `ScheduleExpression` , but not both.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-rotationschedule-rotationrules.html#cfn-secretsmanager-rotationschedule-rotationrules-automaticallyafterdays

@@ -460,5 +382,4 @@ */

/**
* `CfnRotationSchedule.RotationRulesProperty.Duration`.
* `CfnRotationSchedule.RotationRulesProperty.Duration`
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-rotationschedule-rotationrules.html#cfn-secretsmanager-rotationschedule-rotationrules-duration

@@ -468,5 +389,4 @@ */

/**
* `CfnRotationSchedule.RotationRulesProperty.ScheduleExpression`.
* `CfnRotationSchedule.RotationRulesProperty.ScheduleExpression`
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-rotationschedule-rotationrules.html#cfn-secretsmanager-rotationschedule-rotationrules-scheduleexpression

@@ -478,5 +398,7 @@ */

/**
* Properties for defining a `CfnSecret`.
* Properties for defining a `CfnSecret`
*
* @external
* @struct
* @stability external
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html

@@ -488,3 +410,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html#cfn-secretsmanager-secret-description

@@ -500,3 +421,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html#cfn-secretsmanager-secret-generatesecretstring

@@ -514,3 +434,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html#cfn-secretsmanager-secret-kmskeyid

@@ -526,3 +445,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html#cfn-secretsmanager-secret-name

@@ -534,3 +452,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html#cfn-secretsmanager-secret-replicaregions

@@ -540,9 +457,6 @@ */

/**
* The text to encrypt and store in the secret.
* The text to encrypt and store in the secret. We recommend you use a JSON structure of key/value pairs for your secret value.
*
* We recommend you use a JSON structure of key/value pairs for your secret value.
*
* Either `GenerateSecretString` or `SecretString` must have a value, but not both. They cannot both be empty. We recommend that you use the `GenerateSecretString` property to generate a random password.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html#cfn-secretsmanager-secret-secretstring

@@ -552,6 +466,4 @@ */

/**
* A list of tags to attach to the secret.
* A list of tags to attach to the secret. Each tag is a key and value pair of strings in a JSON text string, for example:
*
* Each tag is a key and value pair of strings in a JSON text string, for example:
*
* `[{"Key":"CostCenter","Value":"12345"},{"Key":"environment","Value":"production"}]`

@@ -574,3 +486,2 @@ *

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html#cfn-secretsmanager-secret-tags

@@ -581,3 +492,3 @@ */

/**
* A CloudFormation `AWS::SecretsManager::Secret`.
* A CloudFormation `AWS::SecretsManager::Secret`
*

@@ -594,4 +505,5 @@ * Creates a new secret. A *secret* is a set of credentials, such as a user name and password, that you store in an encrypted form in Secrets Manager. The secret also includes the connection information to access a database or other service, which Secrets Manager doesn't encrypt. A secret in Secrets Manager consists of both the protected secret data and the important information needed to manage the secret.

*
* @external
* @cloudformationResource AWS::SecretsManager::Secret
* @stability external
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html

@@ -602,4 +514,2 @@ */

* The CloudFormation resource type name for this resource class.
*
* @external
*/

@@ -618,3 +528,2 @@ static readonly CFN_RESOURCE_TYPE_NAME = "AWS::SecretsManager::Secret";

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html#cfn-secretsmanager-secret-description

@@ -630,3 +539,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html#cfn-secretsmanager-secret-generatesecretstring

@@ -644,3 +552,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html#cfn-secretsmanager-secret-kmskeyid

@@ -656,3 +563,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html#cfn-secretsmanager-secret-name

@@ -664,3 +570,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html#cfn-secretsmanager-secret-replicaregions

@@ -670,9 +575,6 @@ */

/**
* The text to encrypt and store in the secret.
* The text to encrypt and store in the secret. We recommend you use a JSON structure of key/value pairs for your secret value.
*
* We recommend you use a JSON structure of key/value pairs for your secret value.
*
* Either `GenerateSecretString` or `SecretString` must have a value, but not both. They cannot both be empty. We recommend that you use the `GenerateSecretString` property to generate a random password.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html#cfn-secretsmanager-secret-secretstring

@@ -682,6 +584,4 @@ */

/**
* A list of tags to attach to the secret.
* A list of tags to attach to the secret. Each tag is a key and value pair of strings in a JSON text string, for example:
*
* Each tag is a key and value pair of strings in a JSON text string, for example:
*
* `[{"Key":"CostCenter","Value":"12345"},{"Key":"environment","Value":"production"}]`

@@ -704,3 +604,2 @@ *

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html#cfn-secretsmanager-secret-tags

@@ -712,6 +611,5 @@ */

*
* @param scope - scope in which this resource is defined.
* @param id - scoped id of the resource.
* @param props - resource properties.
* @external
* @param scope - scope in which this resource is defined
* @param id - scoped id of the resource
* @param props - resource properties
*/

@@ -722,15 +620,9 @@ constructor(scope: cdk.Construct, id: string, props?: CfnSecretProps);

*
* @param inspector - tree inspector to collect and process attributes.
* @external
* @param inspector - tree inspector to collect and process attributes
*
*/
inspect(inspector: cdk.TreeInspector): void;
/**
* @external
*/
protected get cfnProperties(): {
[key: string]: any;
};
/**
* @external
*/
protected renderProperties(props: {

@@ -742,28 +634,11 @@ [key: string]: any;

}
/**
* A CloudFormation `AWS::SecretsManager::Secret`.
*
* Creates a new secret. A *secret* is a set of credentials, such as a user name and password, that you store in an encrypted form in Secrets Manager. The secret also includes the connection information to access a database or other service, which Secrets Manager doesn't encrypt. A secret in Secrets Manager consists of both the protected secret data and the important information needed to manage the secret.
*
* For information about creating a secret in the console, see [Create a secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) .
*
* For information about creating a secret using the CLI or SDK, see [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html) .
*
* To specify the encrypted value for the secret, you must include either the `GenerateSecretString` or the `SecretString` property, but not both. We recommend that you use the `GenerateSecretString` property to generate a random password as shown in the examples. You can't generate a secret with a `SecretBinary` secret value using AWS CloudFormation .
*
* > Do not create a dynamic reference using a backslash `(\)` as the final value. AWS CloudFormation cannot resolve those references, which causes a resource failure.
*
* @external
* @cloudformationResource AWS::SecretsManager::Secret
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html
*/
export declare namespace CfnSecret {
/**
* Generates a random password.
* Generates a random password. We recommend that you specify the maximum length and include every character type that the system you are generating a password for can support.
*
* We recommend that you specify the maximum length and include every character type that the system you are generating a password for can support.
*
* *Required permissions:* `secretsmanager:GetRandomPassword` . For more information, see [IAM policy actions for Secrets Manager](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssecretsmanager.html#awssecretsmanager-actions-as-permissions) and [Authentication and access control in Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html) .
*
* @external
* @struct
* @stability external
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-secret-generatesecretstring.html

@@ -775,3 +650,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-secret-generatesecretstring.html#cfn-secretsmanager-secret-generatesecretstring-excludecharacters

@@ -781,7 +655,4 @@ */

/**
* Specifies whether to exclude lowercase letters from the password.
* Specifies whether to exclude lowercase letters from the password. If you don't include this switch, the password can contain lowercase letters.
*
* If you don't include this switch, the password can contain lowercase letters.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-secret-generatesecretstring.html#cfn-secretsmanager-secret-generatesecretstring-excludelowercase

@@ -791,7 +662,4 @@ */

/**
* Specifies whether to exclude numbers from the password.
* Specifies whether to exclude numbers from the password. If you don't include this switch, the password can contain numbers.
*
* If you don't include this switch, the password can contain numbers.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-secret-generatesecretstring.html#cfn-secretsmanager-secret-generatesecretstring-excludenumbers

@@ -801,7 +669,4 @@ */

/**
* Specifies whether to exclude the following punctuation characters from the password: `!
* Specifies whether to exclude the following punctuation characters from the password: `! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~` . If you don't include this switch, the password can contain punctuation.
*
* " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~` . If you don't include this switch, the password can contain punctuation.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-secret-generatesecretstring.html#cfn-secretsmanager-secret-generatesecretstring-excludepunctuation

@@ -811,7 +676,4 @@ */

/**
* Specifies whether to exclude uppercase letters from the password.
* Specifies whether to exclude uppercase letters from the password. If you don't include this switch, the password can contain uppercase letters.
*
* If you don't include this switch, the password can contain uppercase letters.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-secret-generatesecretstring.html#cfn-secretsmanager-secret-generatesecretstring-excludeuppercase

@@ -821,7 +683,4 @@ */

/**
* The JSON key name for the key/value pair, where the value is the generated password.
* The JSON key name for the key/value pair, where the value is the generated password. This pair is added to the JSON structure specified by the `SecretStringTemplate` parameter. If you specify this parameter, then you must also specify `SecretStringTemplate` .
*
* This pair is added to the JSON structure specified by the `SecretStringTemplate` parameter. If you specify this parameter, then you must also specify `SecretStringTemplate` .
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-secret-generatesecretstring.html#cfn-secretsmanager-secret-generatesecretstring-generatestringkey

@@ -831,7 +690,4 @@ */

/**
* Specifies whether to include the space character.
* Specifies whether to include the space character. If you include this switch, the password can contain space characters.
*
* If you include this switch, the password can contain space characters.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-secret-generatesecretstring.html#cfn-secretsmanager-secret-generatesecretstring-includespace

@@ -841,7 +697,4 @@ */

/**
* The length of the password.
* The length of the password. If you don't include this parameter, the default length is 32 characters.
*
* If you don't include this parameter, the default length is 32 characters.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-secret-generatesecretstring.html#cfn-secretsmanager-secret-generatesecretstring-passwordlength

@@ -851,7 +704,4 @@ */

/**
* Specifies whether to include at least one upper and lowercase letter, one number, and one punctuation.
* Specifies whether to include at least one upper and lowercase letter, one number, and one punctuation. If you don't include this switch, the password contains at least one of every character type.
*
* If you don't include this switch, the password contains at least one of every character type.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-secret-generatesecretstring.html#cfn-secretsmanager-secret-generatesecretstring-requireeachincludedtype

@@ -863,3 +713,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-secret-generatesecretstring.html#cfn-secretsmanager-secret-generatesecretstring-secretstringtemplate

@@ -870,19 +719,2 @@ */

}
/**
* A CloudFormation `AWS::SecretsManager::Secret`.
*
* Creates a new secret. A *secret* is a set of credentials, such as a user name and password, that you store in an encrypted form in Secrets Manager. The secret also includes the connection information to access a database or other service, which Secrets Manager doesn't encrypt. A secret in Secrets Manager consists of both the protected secret data and the important information needed to manage the secret.
*
* For information about creating a secret in the console, see [Create a secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) .
*
* For information about creating a secret using the CLI or SDK, see [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html) .
*
* To specify the encrypted value for the secret, you must include either the `GenerateSecretString` or the `SecretString` property, but not both. We recommend that you use the `GenerateSecretString` property to generate a random password as shown in the examples. You can't generate a secret with a `SecretBinary` secret value using AWS CloudFormation .
*
* > Do not create a dynamic reference using a backslash `(\)` as the final value. AWS CloudFormation cannot resolve those references, which causes a resource failure.
*
* @external
* @cloudformationResource AWS::SecretsManager::Secret
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html
*/
export declare namespace CfnSecret {

@@ -892,3 +724,5 @@ /**

*
* @external
* @struct
* @stability external
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-secret-replicaregion.html

@@ -898,7 +732,4 @@ */

/**
* The ARN, key ID, or alias of the KMS key to encrypt the secret.
* The ARN, key ID, or alias of the KMS key to encrypt the secret. If you don't include this field, Secrets Manager uses `aws/secretsmanager` .
*
* If you don't include this field, Secrets Manager uses `aws/secretsmanager` .
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-secret-replicaregion.html#cfn-secretsmanager-secret-replicaregion-kmskeyid

@@ -908,5 +739,4 @@ */

/**
* `CfnSecret.ReplicaRegionProperty.Region`.
* `CfnSecret.ReplicaRegionProperty.Region`
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-secretsmanager-secret-replicaregion.html#cfn-secretsmanager-secret-replicaregion-region

@@ -918,5 +748,7 @@ */

/**
* Properties for defining a `CfnSecretTargetAttachment`.
* Properties for defining a `CfnSecretTargetAttachment`
*
* @external
* @struct
* @stability external
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html

@@ -926,7 +758,4 @@ */

/**
* The ARN or name of the secret.
* The ARN or name of the secret. To reference a secret also created in this template, use the see [Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) function with the secret's logical ID.
*
* To reference a secret also created in this template, use the see [Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) function with the secret's logical ID.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html#cfn-secretsmanager-secrettargetattachment-secretid

@@ -938,3 +767,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html#cfn-secretsmanager-secrettargetattachment-targetid

@@ -944,6 +772,4 @@ */

/**
* A string that defines the type of service or database associated with the secret.
* A string that defines the type of service or database associated with the secret. This value instructs Secrets Manager how to update the secret with the details of the service or database. This value must be one of the following:
*
* This value instructs Secrets Manager how to update the secret with the details of the service or database. This value must be one of the following:
*
* - AWS::RDS::DBInstance

@@ -955,3 +781,2 @@ * - AWS::RDS::DBCluster

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html#cfn-secretsmanager-secrettargetattachment-targettype

@@ -962,3 +787,3 @@ */

/**
* A CloudFormation `AWS::SecretsManager::SecretTargetAttachment`.
* A CloudFormation `AWS::SecretsManager::SecretTargetAttachment`
*

@@ -971,4 +796,5 @@ * The `AWS::SecretsManager::SecretTargetAttachment` resource completes the final link between a Secrets Manager secret and the associated database. This is required because each has a dependency on the other. No matter which one you create first, the other doesn't exist yet. To resolve this, you must create the resources in the following order:

*
* @external
* @cloudformationResource AWS::SecretsManager::SecretTargetAttachment
* @stability external
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html

@@ -979,4 +805,2 @@ */

* The CloudFormation resource type name for this resource class.
*
* @external
*/

@@ -993,7 +817,4 @@ static readonly CFN_RESOURCE_TYPE_NAME = "AWS::SecretsManager::SecretTargetAttachment";

/**
* The ARN or name of the secret.
* The ARN or name of the secret. To reference a secret also created in this template, use the see [Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) function with the secret's logical ID.
*
* To reference a secret also created in this template, use the see [Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) function with the secret's logical ID.
*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html#cfn-secretsmanager-secrettargetattachment-secretid

@@ -1005,3 +826,2 @@ */

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html#cfn-secretsmanager-secrettargetattachment-targetid

@@ -1011,6 +831,4 @@ */

/**
* A string that defines the type of service or database associated with the secret.
* A string that defines the type of service or database associated with the secret. This value instructs Secrets Manager how to update the secret with the details of the service or database. This value must be one of the following:
*
* This value instructs Secrets Manager how to update the secret with the details of the service or database. This value must be one of the following:
*
* - AWS::RDS::DBInstance

@@ -1022,3 +840,2 @@ * - AWS::RDS::DBCluster

*
* @external
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secrettargetattachment.html#cfn-secretsmanager-secrettargetattachment-targettype

@@ -1030,6 +847,5 @@ */

*
* @param scope - scope in which this resource is defined.
* @param id - scoped id of the resource.
* @param props - resource properties.
* @external
* @param scope - scope in which this resource is defined
* @param id - scoped id of the resource
* @param props - resource properties
*/

@@ -1040,15 +856,9 @@ constructor(scope: cdk.Construct, id: string, props: CfnSecretTargetAttachmentProps);

*
* @param inspector - tree inspector to collect and process attributes.
* @external
* @param inspector - tree inspector to collect and process attributes
*
*/
inspect(inspector: cdk.TreeInspector): void;
/**
* @external
*/
protected get cfnProperties(): {
[key: string]: any;
};
/**
* @external
*/
protected renderProperties(props: {

@@ -1055,0 +865,0 @@ [key: string]: any;

{
"name": "@aws-cdk/aws-secretsmanager",
"version": "1.144.0",
"version": "1.145.0",
"description": "The CDK Construct Library for AWS::SecretsManager",

@@ -83,27 +83,27 @@ "main": "lib/index.js",

"devDependencies": {
"@aws-cdk/assertions": "1.144.0",
"@aws-cdk/cdk-build-tools": "1.144.0",
"@aws-cdk/cdk-integ-tools": "1.144.0",
"@aws-cdk/cfn2ts": "1.144.0",
"@aws-cdk/pkglint": "1.144.0",
"@aws-cdk/assertions": "1.145.0",
"@aws-cdk/cdk-build-tools": "1.145.0",
"@aws-cdk/cdk-integ-tools": "1.145.0",
"@aws-cdk/cfn2ts": "1.145.0",
"@aws-cdk/pkglint": "1.145.0",
"@types/jest": "^27.4.0"
},
"dependencies": {
"@aws-cdk/aws-ec2": "1.144.0",
"@aws-cdk/aws-iam": "1.144.0",
"@aws-cdk/aws-kms": "1.144.0",
"@aws-cdk/aws-lambda": "1.144.0",
"@aws-cdk/aws-sam": "1.144.0",
"@aws-cdk/core": "1.144.0",
"@aws-cdk/cx-api": "1.144.0",
"@aws-cdk/aws-ec2": "1.145.0",
"@aws-cdk/aws-iam": "1.145.0",
"@aws-cdk/aws-kms": "1.145.0",
"@aws-cdk/aws-lambda": "1.145.0",
"@aws-cdk/aws-sam": "1.145.0",
"@aws-cdk/core": "1.145.0",
"@aws-cdk/cx-api": "1.145.0",
"constructs": "^3.3.69"
},
"peerDependencies": {
"@aws-cdk/aws-ec2": "1.144.0",
"@aws-cdk/aws-iam": "1.144.0",
"@aws-cdk/aws-kms": "1.144.0",
"@aws-cdk/aws-lambda": "1.144.0",
"@aws-cdk/aws-sam": "1.144.0",
"@aws-cdk/core": "1.144.0",
"@aws-cdk/cx-api": "1.144.0",
"@aws-cdk/aws-ec2": "1.145.0",
"@aws-cdk/aws-iam": "1.145.0",
"@aws-cdk/aws-kms": "1.145.0",
"@aws-cdk/aws-lambda": "1.145.0",
"@aws-cdk/aws-sam": "1.145.0",
"@aws-cdk/core": "1.145.0",
"@aws-cdk/cx-api": "1.145.0",
"constructs": "^3.3.69"

@@ -110,0 +110,0 @@ },

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc