UNPKG

@cdktf/provider-aws

Version:

Prebuilt aws Provider for Terraform CDK (cdktf)

1,165 lines 154 kB
"use strict"; var _a, _b, _c, _d, _e, _f; Object.defineProperty(exports, "__esModule", { value: true }); exports.Elb = exports.ElbTimeoutsOutputReference = exports.ElbListenerList = exports.ElbListenerOutputReference = exports.ElbHealthCheckOutputReference = exports.ElbAccessLogsOutputReference = void 0; exports.elbAccessLogsToTerraform = elbAccessLogsToTerraform; exports.elbAccessLogsToHclTerraform = elbAccessLogsToHclTerraform; exports.elbHealthCheckToTerraform = elbHealthCheckToTerraform; exports.elbHealthCheckToHclTerraform = elbHealthCheckToHclTerraform; exports.elbListenerToTerraform = elbListenerToTerraform; exports.elbListenerToHclTerraform = elbListenerToHclTerraform; exports.elbTimeoutsToTerraform = elbTimeoutsToTerraform; exports.elbTimeoutsToHclTerraform = elbTimeoutsToHclTerraform; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const cdktf = require("cdktf"); function elbAccessLogsToTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } return { bucket: cdktf.stringToTerraform(struct.bucket), bucket_prefix: cdktf.stringToTerraform(struct.bucketPrefix), enabled: cdktf.booleanToTerraform(struct.enabled), interval: cdktf.numberToTerraform(struct.interval), }; } function elbAccessLogsToHclTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } const attrs = { bucket: { value: cdktf.stringToHclTerraform(struct.bucket), isBlock: false, type: "simple", storageClassType: "string", }, bucket_prefix: { value: cdktf.stringToHclTerraform(struct.bucketPrefix), isBlock: false, type: "simple", storageClassType: "string", }, enabled: { value: cdktf.booleanToHclTerraform(struct.enabled), isBlock: false, type: "simple", storageClassType: "boolean", }, interval: { value: cdktf.numberToHclTerraform(struct.interval), isBlock: false, type: "simple", storageClassType: "number", }, }; // remove undefined attributes return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined)); } class ElbAccessLogsOutputReference extends cdktf.ComplexObject { /** * @param terraformResource The parent resource * @param terraformAttribute The attribute on the parent resource this class is referencing */ constructor(terraformResource, terraformAttribute) { super(terraformResource, terraformAttribute, false, 0); this.isEmptyObject = false; } get internalValue() { let hasAnyValues = this.isEmptyObject; const internalValueResult = {}; if (this._bucket !== undefined) { hasAnyValues = true; internalValueResult.bucket = this._bucket; } if (this._bucketPrefix !== undefined) { hasAnyValues = true; internalValueResult.bucketPrefix = this._bucketPrefix; } if (this._enabled !== undefined) { hasAnyValues = true; internalValueResult.enabled = this._enabled; } if (this._interval !== undefined) { hasAnyValues = true; internalValueResult.interval = this._interval; } return hasAnyValues ? internalValueResult : undefined; } set internalValue(value) { if (value === undefined) { this.isEmptyObject = false; this._bucket = undefined; this._bucketPrefix = undefined; this._enabled = undefined; this._interval = undefined; } else { this.isEmptyObject = Object.keys(value).length === 0; this._bucket = value.bucket; this._bucketPrefix = value.bucketPrefix; this._enabled = value.enabled; this._interval = value.interval; } } get bucket() { return this.getStringAttribute('bucket'); } set bucket(value) { this._bucket = value; } // Temporarily expose input value. Use with caution. get bucketInput() { return this._bucket; } get bucketPrefix() { return this.getStringAttribute('bucket_prefix'); } set bucketPrefix(value) { this._bucketPrefix = value; } resetBucketPrefix() { this._bucketPrefix = undefined; } // Temporarily expose input value. Use with caution. get bucketPrefixInput() { return this._bucketPrefix; } get enabled() { return this.getBooleanAttribute('enabled'); } set enabled(value) { this._enabled = value; } resetEnabled() { this._enabled = undefined; } // Temporarily expose input value. Use with caution. get enabledInput() { return this._enabled; } get interval() { return this.getNumberAttribute('interval'); } set interval(value) { this._interval = value; } resetInterval() { this._interval = undefined; } // Temporarily expose input value. Use with caution. get intervalInput() { return this._interval; } } exports.ElbAccessLogsOutputReference = ElbAccessLogsOutputReference; _a = JSII_RTTI_SYMBOL_1; ElbAccessLogsOutputReference[_a] = { fqn: "@cdktf/provider-aws.elb.ElbAccessLogsOutputReference", version: "21.22.1" }; function elbHealthCheckToTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } return { healthy_threshold: cdktf.numberToTerraform(struct.healthyThreshold), interval: cdktf.numberToTerraform(struct.interval), target: cdktf.stringToTerraform(struct.target), timeout: cdktf.numberToTerraform(struct.timeout), unhealthy_threshold: cdktf.numberToTerraform(struct.unhealthyThreshold), }; } function elbHealthCheckToHclTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } const attrs = { healthy_threshold: { value: cdktf.numberToHclTerraform(struct.healthyThreshold), isBlock: false, type: "simple", storageClassType: "number", }, interval: { value: cdktf.numberToHclTerraform(struct.interval), isBlock: false, type: "simple", storageClassType: "number", }, target: { value: cdktf.stringToHclTerraform(struct.target), isBlock: false, type: "simple", storageClassType: "string", }, timeout: { value: cdktf.numberToHclTerraform(struct.timeout), isBlock: false, type: "simple", storageClassType: "number", }, unhealthy_threshold: { value: cdktf.numberToHclTerraform(struct.unhealthyThreshold), isBlock: false, type: "simple", storageClassType: "number", }, }; // remove undefined attributes return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined)); } class ElbHealthCheckOutputReference extends cdktf.ComplexObject { /** * @param terraformResource The parent resource * @param terraformAttribute The attribute on the parent resource this class is referencing */ constructor(terraformResource, terraformAttribute) { super(terraformResource, terraformAttribute, false, 0); this.isEmptyObject = false; } get internalValue() { let hasAnyValues = this.isEmptyObject; const internalValueResult = {}; if (this._healthyThreshold !== undefined) { hasAnyValues = true; internalValueResult.healthyThreshold = this._healthyThreshold; } if (this._interval !== undefined) { hasAnyValues = true; internalValueResult.interval = this._interval; } if (this._target !== undefined) { hasAnyValues = true; internalValueResult.target = this._target; } if (this._timeout !== undefined) { hasAnyValues = true; internalValueResult.timeout = this._timeout; } if (this._unhealthyThreshold !== undefined) { hasAnyValues = true; internalValueResult.unhealthyThreshold = this._unhealthyThreshold; } return hasAnyValues ? internalValueResult : undefined; } set internalValue(value) { if (value === undefined) { this.isEmptyObject = false; this._healthyThreshold = undefined; this._interval = undefined; this._target = undefined; this._timeout = undefined; this._unhealthyThreshold = undefined; } else { this.isEmptyObject = Object.keys(value).length === 0; this._healthyThreshold = value.healthyThreshold; this._interval = value.interval; this._target = value.target; this._timeout = value.timeout; this._unhealthyThreshold = value.unhealthyThreshold; } } get healthyThreshold() { return this.getNumberAttribute('healthy_threshold'); } set healthyThreshold(value) { this._healthyThreshold = value; } // Temporarily expose input value. Use with caution. get healthyThresholdInput() { return this._healthyThreshold; } get interval() { return this.getNumberAttribute('interval'); } set interval(value) { this._interval = value; } // Temporarily expose input value. Use with caution. get intervalInput() { return this._interval; } get target() { return this.getStringAttribute('target'); } set target(value) { this._target = value; } // Temporarily expose input value. Use with caution. get targetInput() { return this._target; } get timeout() { return this.getNumberAttribute('timeout'); } set timeout(value) { this._timeout = value; } // Temporarily expose input value. Use with caution. get timeoutInput() { return this._timeout; } get unhealthyThreshold() { return this.getNumberAttribute('unhealthy_threshold'); } set unhealthyThreshold(value) { this._unhealthyThreshold = value; } // Temporarily expose input value. Use with caution. get unhealthyThresholdInput() { return this._unhealthyThreshold; } } exports.ElbHealthCheckOutputReference = ElbHealthCheckOutputReference; _b = JSII_RTTI_SYMBOL_1; ElbHealthCheckOutputReference[_b] = { fqn: "@cdktf/provider-aws.elb.ElbHealthCheckOutputReference", version: "21.22.1" }; function elbListenerToTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } return { instance_port: cdktf.numberToTerraform(struct.instancePort), instance_protocol: cdktf.stringToTerraform(struct.instanceProtocol), lb_port: cdktf.numberToTerraform(struct.lbPort), lb_protocol: cdktf.stringToTerraform(struct.lbProtocol), ssl_certificate_id: cdktf.stringToTerraform(struct.sslCertificateId), }; } function elbListenerToHclTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } const attrs = { instance_port: { value: cdktf.numberToHclTerraform(struct.instancePort), isBlock: false, type: "simple", storageClassType: "number", }, instance_protocol: { value: cdktf.stringToHclTerraform(struct.instanceProtocol), isBlock: false, type: "simple", storageClassType: "string", }, lb_port: { value: cdktf.numberToHclTerraform(struct.lbPort), isBlock: false, type: "simple", storageClassType: "number", }, lb_protocol: { value: cdktf.stringToHclTerraform(struct.lbProtocol), isBlock: false, type: "simple", storageClassType: "string", }, ssl_certificate_id: { value: cdktf.stringToHclTerraform(struct.sslCertificateId), isBlock: false, type: "simple", storageClassType: "string", }, }; // remove undefined attributes return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined)); } class ElbListenerOutputReference extends cdktf.ComplexObject { /** * @param terraformResource The parent resource * @param terraformAttribute The attribute on the parent resource this class is referencing * @param complexObjectIndex the index of this item in the list * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index) */ constructor(terraformResource, terraformAttribute, complexObjectIndex, complexObjectIsFromSet) { super(terraformResource, terraformAttribute, complexObjectIsFromSet, complexObjectIndex); this.isEmptyObject = false; } get internalValue() { if (this.resolvableValue) { return this.resolvableValue; } let hasAnyValues = this.isEmptyObject; const internalValueResult = {}; if (this._instancePort !== undefined) { hasAnyValues = true; internalValueResult.instancePort = this._instancePort; } if (this._instanceProtocol !== undefined) { hasAnyValues = true; internalValueResult.instanceProtocol = this._instanceProtocol; } if (this._lbPort !== undefined) { hasAnyValues = true; internalValueResult.lbPort = this._lbPort; } if (this._lbProtocol !== undefined) { hasAnyValues = true; internalValueResult.lbProtocol = this._lbProtocol; } if (this._sslCertificateId !== undefined) { hasAnyValues = true; internalValueResult.sslCertificateId = this._sslCertificateId; } return hasAnyValues ? internalValueResult : undefined; } set internalValue(value) { if (value === undefined) { this.isEmptyObject = false; this.resolvableValue = undefined; this._instancePort = undefined; this._instanceProtocol = undefined; this._lbPort = undefined; this._lbProtocol = undefined; this._sslCertificateId = undefined; } else if (cdktf.Tokenization.isResolvable(value)) { this.isEmptyObject = false; this.resolvableValue = value; } else { this.isEmptyObject = Object.keys(value).length === 0; this.resolvableValue = undefined; this._instancePort = value.instancePort; this._instanceProtocol = value.instanceProtocol; this._lbPort = value.lbPort; this._lbProtocol = value.lbProtocol; this._sslCertificateId = value.sslCertificateId; } } get instancePort() { return this.getNumberAttribute('instance_port'); } set instancePort(value) { this._instancePort = value; } // Temporarily expose input value. Use with caution. get instancePortInput() { return this._instancePort; } get instanceProtocol() { return this.getStringAttribute('instance_protocol'); } set instanceProtocol(value) { this._instanceProtocol = value; } // Temporarily expose input value. Use with caution. get instanceProtocolInput() { return this._instanceProtocol; } get lbPort() { return this.getNumberAttribute('lb_port'); } set lbPort(value) { this._lbPort = value; } // Temporarily expose input value. Use with caution. get lbPortInput() { return this._lbPort; } get lbProtocol() { return this.getStringAttribute('lb_protocol'); } set lbProtocol(value) { this._lbProtocol = value; } // Temporarily expose input value. Use with caution. get lbProtocolInput() { return this._lbProtocol; } get sslCertificateId() { return this.getStringAttribute('ssl_certificate_id'); } set sslCertificateId(value) { this._sslCertificateId = value; } resetSslCertificateId() { this._sslCertificateId = undefined; } // Temporarily expose input value. Use with caution. get sslCertificateIdInput() { return this._sslCertificateId; } } exports.ElbListenerOutputReference = ElbListenerOutputReference; _c = JSII_RTTI_SYMBOL_1; ElbListenerOutputReference[_c] = { fqn: "@cdktf/provider-aws.elb.ElbListenerOutputReference", version: "21.22.1" }; class ElbListenerList extends cdktf.ComplexList { /** * @param terraformResource The parent resource * @param terraformAttribute The attribute on the parent resource this class is referencing * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index) */ constructor(terraformResource, terraformAttribute, wrapsSet) { super(terraformResource, terraformAttribute, wrapsSet); this.terraformResource = terraformResource; this.terraformAttribute = terraformAttribute; this.wrapsSet = wrapsSet; } /** * @param index the index of the item to return */ get(index) { return new ElbListenerOutputReference(this.terraformResource, this.terraformAttribute, index, this.wrapsSet); } } exports.ElbListenerList = ElbListenerList; _d = JSII_RTTI_SYMBOL_1; ElbListenerList[_d] = { fqn: "@cdktf/provider-aws.elb.ElbListenerList", version: "21.22.1" }; function elbTimeoutsToTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } return { create: cdktf.stringToTerraform(struct.create), update: cdktf.stringToTerraform(struct.update), }; } function elbTimeoutsToHclTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } const attrs = { create: { value: cdktf.stringToHclTerraform(struct.create), isBlock: false, type: "simple", storageClassType: "string", }, update: { value: cdktf.stringToHclTerraform(struct.update), isBlock: false, type: "simple", storageClassType: "string", }, }; // remove undefined attributes return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined)); } class ElbTimeoutsOutputReference extends cdktf.ComplexObject { /** * @param terraformResource The parent resource * @param terraformAttribute The attribute on the parent resource this class is referencing */ constructor(terraformResource, terraformAttribute) { super(terraformResource, terraformAttribute, false); this.isEmptyObject = false; } get internalValue() { if (this.resolvableValue) { return this.resolvableValue; } let hasAnyValues = this.isEmptyObject; const internalValueResult = {}; if (this._create !== undefined) { hasAnyValues = true; internalValueResult.create = this._create; } if (this._update !== undefined) { hasAnyValues = true; internalValueResult.update = this._update; } return hasAnyValues ? internalValueResult : undefined; } set internalValue(value) { if (value === undefined) { this.isEmptyObject = false; this.resolvableValue = undefined; this._create = undefined; this._update = undefined; } else if (cdktf.Tokenization.isResolvable(value)) { this.isEmptyObject = false; this.resolvableValue = value; } else { this.isEmptyObject = Object.keys(value).length === 0; this.resolvableValue = undefined; this._create = value.create; this._update = value.update; } } get create() { return this.getStringAttribute('create'); } set create(value) { this._create = value; } resetCreate() { this._create = undefined; } // Temporarily expose input value. Use with caution. get createInput() { return this._create; } get update() { return this.getStringAttribute('update'); } set update(value) { this._update = value; } resetUpdate() { this._update = undefined; } // Temporarily expose input value. Use with caution. get updateInput() { return this._update; } } exports.ElbTimeoutsOutputReference = ElbTimeoutsOutputReference; _e = JSII_RTTI_SYMBOL_1; ElbTimeoutsOutputReference[_e] = { fqn: "@cdktf/provider-aws.elb.ElbTimeoutsOutputReference", version: "21.22.1" }; /** * Represents a {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/elb aws_elb} */ class Elb extends cdktf.TerraformResource { // ============== // STATIC Methods // ============== /** * Generates CDKTF code for importing a Elb resource upon running "cdktf plan <stack-name>" * @param scope The scope in which to define this construct * @param importToId The construct id used in the generated config for the Elb to import * @param importFromId The id of the existing Elb that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/elb#import import section} in the documentation of this resource for the id to use * @param provider? Optional instance of the provider where the Elb to import is found */ static generateConfigForImport(scope, importToId, importFromId, provider) { return new cdktf.ImportableResource(scope, importToId, { terraformResourceType: "aws_elb", importId: importFromId, provider }); } // =========== // INITIALIZER // =========== /** * Create a new {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/elb aws_elb} Resource * * @param scope The scope in which to define this construct * @param id The scoped construct ID. Must be unique amongst siblings in the same scope * @param options ElbConfig */ constructor(scope, id, config) { super(scope, id, { terraformResourceType: 'aws_elb', terraformGeneratorMetadata: { providerName: 'aws', providerVersion: '6.25.0', providerVersionConstraint: '~> 6.0' }, provider: config.provider, dependsOn: config.dependsOn, count: config.count, lifecycle: config.lifecycle, provisioners: config.provisioners, connection: config.connection, forEach: config.forEach }); // access_logs - computed: false, optional: true, required: false this._accessLogs = new ElbAccessLogsOutputReference(this, "access_logs"); // health_check - computed: false, optional: true, required: false this._healthCheck = new ElbHealthCheckOutputReference(this, "health_check"); // listener - computed: false, optional: false, required: true this._listener = new ElbListenerList(this, "listener", true); // timeouts - computed: false, optional: true, required: false this._timeouts = new ElbTimeoutsOutputReference(this, "timeouts"); this._availabilityZones = config.availabilityZones; this._connectionDraining = config.connectionDraining; this._connectionDrainingTimeout = config.connectionDrainingTimeout; this._crossZoneLoadBalancing = config.crossZoneLoadBalancing; this._desyncMitigationMode = config.desyncMitigationMode; this._id = config.id; this._idleTimeout = config.idleTimeout; this._instances = config.instances; this._internal = config.internal; this._name = config.name; this._namePrefix = config.namePrefix; this._region = config.region; this._securityGroups = config.securityGroups; this._sourceSecurityGroup = config.sourceSecurityGroup; this._subnets = config.subnets; this._tags = config.tags; this._tagsAll = config.tagsAll; this._accessLogs.internalValue = config.accessLogs; this._healthCheck.internalValue = config.healthCheck; this._listener.internalValue = config.listener; this._timeouts.internalValue = config.timeouts; } // ========== // ATTRIBUTES // ========== // arn - computed: true, optional: false, required: false get arn() { return this.getStringAttribute('arn'); } get availabilityZones() { return cdktf.Fn.tolist(this.getListAttribute('availability_zones')); } set availabilityZones(value) { this._availabilityZones = value; } resetAvailabilityZones() { this._availabilityZones = undefined; } // Temporarily expose input value. Use with caution. get availabilityZonesInput() { return this._availabilityZones; } get connectionDraining() { return this.getBooleanAttribute('connection_draining'); } set connectionDraining(value) { this._connectionDraining = value; } resetConnectionDraining() { this._connectionDraining = undefined; } // Temporarily expose input value. Use with caution. get connectionDrainingInput() { return this._connectionDraining; } get connectionDrainingTimeout() { return this.getNumberAttribute('connection_draining_timeout'); } set connectionDrainingTimeout(value) { this._connectionDrainingTimeout = value; } resetConnectionDrainingTimeout() { this._connectionDrainingTimeout = undefined; } // Temporarily expose input value. Use with caution. get connectionDrainingTimeoutInput() { return this._connectionDrainingTimeout; } get crossZoneLoadBalancing() { return this.getBooleanAttribute('cross_zone_load_balancing'); } set crossZoneLoadBalancing(value) { this._crossZoneLoadBalancing = value; } resetCrossZoneLoadBalancing() { this._crossZoneLoadBalancing = undefined; } // Temporarily expose input value. Use with caution. get crossZoneLoadBalancingInput() { return this._crossZoneLoadBalancing; } get desyncMitigationMode() { return this.getStringAttribute('desync_mitigation_mode'); } set desyncMitigationMode(value) { this._desyncMitigationMode = value; } resetDesyncMitigationMode() { this._desyncMitigationMode = undefined; } // Temporarily expose input value. Use with caution. get desyncMitigationModeInput() { return this._desyncMitigationMode; } // dns_name - computed: true, optional: false, required: false get dnsName() { return this.getStringAttribute('dns_name'); } get id() { return this.getStringAttribute('id'); } set id(value) { this._id = value; } resetId() { this._id = undefined; } // Temporarily expose input value. Use with caution. get idInput() { return this._id; } get idleTimeout() { return this.getNumberAttribute('idle_timeout'); } set idleTimeout(value) { this._idleTimeout = value; } resetIdleTimeout() { this._idleTimeout = undefined; } // Temporarily expose input value. Use with caution. get idleTimeoutInput() { return this._idleTimeout; } get instances() { return cdktf.Fn.tolist(this.getListAttribute('instances')); } set instances(value) { this._instances = value; } resetInstances() { this._instances = undefined; } // Temporarily expose input value. Use with caution. get instancesInput() { return this._instances; } get internal() { return this.getBooleanAttribute('internal'); } set internal(value) { this._internal = value; } resetInternal() { this._internal = undefined; } // Temporarily expose input value. Use with caution. get internalInput() { return this._internal; } get name() { return this.getStringAttribute('name'); } set name(value) { this._name = value; } resetName() { this._name = undefined; } // Temporarily expose input value. Use with caution. get nameInput() { return this._name; } get namePrefix() { return this.getStringAttribute('name_prefix'); } set namePrefix(value) { this._namePrefix = value; } resetNamePrefix() { this._namePrefix = undefined; } // Temporarily expose input value. Use with caution. get namePrefixInput() { return this._namePrefix; } get region() { return this.getStringAttribute('region'); } set region(value) { this._region = value; } resetRegion() { this._region = undefined; } // Temporarily expose input value. Use with caution. get regionInput() { return this._region; } get securityGroups() { return cdktf.Fn.tolist(this.getListAttribute('security_groups')); } set securityGroups(value) { this._securityGroups = value; } resetSecurityGroups() { this._securityGroups = undefined; } // Temporarily expose input value. Use with caution. get securityGroupsInput() { return this._securityGroups; } get sourceSecurityGroup() { return this.getStringAttribute('source_security_group'); } set sourceSecurityGroup(value) { this._sourceSecurityGroup = value; } resetSourceSecurityGroup() { this._sourceSecurityGroup = undefined; } // Temporarily expose input value. Use with caution. get sourceSecurityGroupInput() { return this._sourceSecurityGroup; } // source_security_group_id - computed: true, optional: false, required: false get sourceSecurityGroupId() { return this.getStringAttribute('source_security_group_id'); } get subnets() { return cdktf.Fn.tolist(this.getListAttribute('subnets')); } set subnets(value) { this._subnets = value; } resetSubnets() { this._subnets = undefined; } // Temporarily expose input value. Use with caution. get subnetsInput() { return this._subnets; } get tags() { return this.getStringMapAttribute('tags'); } set tags(value) { this._tags = value; } resetTags() { this._tags = undefined; } // Temporarily expose input value. Use with caution. get tagsInput() { return this._tags; } get tagsAll() { return this.getStringMapAttribute('tags_all'); } set tagsAll(value) { this._tagsAll = value; } resetTagsAll() { this._tagsAll = undefined; } // Temporarily expose input value. Use with caution. get tagsAllInput() { return this._tagsAll; } // zone_id - computed: true, optional: false, required: false get zoneId() { return this.getStringAttribute('zone_id'); } get accessLogs() { return this._accessLogs; } putAccessLogs(value) { this._accessLogs.internalValue = value; } resetAccessLogs() { this._accessLogs.internalValue = undefined; } // Temporarily expose input value. Use with caution. get accessLogsInput() { return this._accessLogs.internalValue; } get healthCheck() { return this._healthCheck; } putHealthCheck(value) { this._healthCheck.internalValue = value; } resetHealthCheck() { this._healthCheck.internalValue = undefined; } // Temporarily expose input value. Use with caution. get healthCheckInput() { return this._healthCheck.internalValue; } get listener() { return this._listener; } putListener(value) { this._listener.internalValue = value; } // Temporarily expose input value. Use with caution. get listenerInput() { return this._listener.internalValue; } get timeouts() { return this._timeouts; } putTimeouts(value) { this._timeouts.internalValue = value; } resetTimeouts() { this._timeouts.internalValue = undefined; } // Temporarily expose input value. Use with caution. get timeoutsInput() { return this._timeouts.internalValue; } // ========= // SYNTHESIS // ========= synthesizeAttributes() { return { availability_zones: cdktf.listMapper(cdktf.stringToTerraform, false)(this._availabilityZones), connection_draining: cdktf.booleanToTerraform(this._connectionDraining), connection_draining_timeout: cdktf.numberToTerraform(this._connectionDrainingTimeout), cross_zone_load_balancing: cdktf.booleanToTerraform(this._crossZoneLoadBalancing), desync_mitigation_mode: cdktf.stringToTerraform(this._desyncMitigationMode), id: cdktf.stringToTerraform(this._id), idle_timeout: cdktf.numberToTerraform(this._idleTimeout), instances: cdktf.listMapper(cdktf.stringToTerraform, false)(this._instances), internal: cdktf.booleanToTerraform(this._internal), name: cdktf.stringToTerraform(this._name), name_prefix: cdktf.stringToTerraform(this._namePrefix), region: cdktf.stringToTerraform(this._region), security_groups: cdktf.listMapper(cdktf.stringToTerraform, false)(this._securityGroups), source_security_group: cdktf.stringToTerraform(this._sourceSecurityGroup), subnets: cdktf.listMapper(cdktf.stringToTerraform, false)(this._subnets), tags: cdktf.hashMapper(cdktf.stringToTerraform)(this._tags), tags_all: cdktf.hashMapper(cdktf.stringToTerraform)(this._tagsAll), access_logs: elbAccessLogsToTerraform(this._accessLogs.internalValue), health_check: elbHealthCheckToTerraform(this._healthCheck.internalValue), listener: cdktf.listMapper(elbListenerToTerraform, true)(this._listener.internalValue), timeouts: elbTimeoutsToTerraform(this._timeouts.internalValue), }; } synthesizeHclAttributes() { const attrs = { availability_zones: { value: cdktf.listMapperHcl(cdktf.stringToHclTerraform, false)(this._availabilityZones), isBlock: false, type: "set", storageClassType: "stringList", }, connection_draining: { value: cdktf.booleanToHclTerraform(this._connectionDraining), isBlock: false, type: "simple", storageClassType: "boolean", }, connection_draining_timeout: { value: cdktf.numberToHclTerraform(this._connectionDrainingTimeout), isBlock: false, type: "simple", storageClassType: "number", }, cross_zone_load_balancing: { value: cdktf.booleanToHclTerraform(this._crossZoneLoadBalancing), isBlock: false, type: "simple", storageClassType: "boolean", }, desync_mitigation_mode: { value: cdktf.stringToHclTerraform(this._desyncMitigationMode), isBlock: false, type: "simple", storageClassType: "string", }, id: { value: cdktf.stringToHclTerraform(this._id), isBlock: false, type: "simple", storageClassType: "string", }, idle_timeout: { value: cdktf.numberToHclTerraform(this._idleTimeout), isBlock: false, type: "simple", storageClassType: "number", }, instances: { value: cdktf.listMapperHcl(cdktf.stringToHclTerraform, false)(this._instances), isBlock: false, type: "set", storageClassType: "stringList", }, internal: { value: cdktf.booleanToHclTerraform(this._internal), isBlock: false, type: "simple", storageClassType: "boolean", }, name: { value: cdktf.stringToHclTerraform(this._name), isBlock: false, type: "simple", storageClassType: "string", }, name_prefix: { value: cdktf.stringToHclTerraform(this._namePrefix), isBlock: false, type: "simple", storageClassType: "string", }, region: { value: cdktf.stringToHclTerraform(this._region), isBlock: false, type: "simple", storageClassType: "string", }, security_groups: { value: cdktf.listMapperHcl(cdktf.stringToHclTerraform, false)(this._securityGroups), isBlock: false, type: "set", storageClassType: "stringList", }, source_security_group: { value: cdktf.stringToHclTerraform(this._sourceSecurityGroup), isBlock: false, type: "simple", storageClassType: "string", }, subnets: { value: cdktf.listMapperHcl(cdktf.stringToHclTerraform, false)(this._subnets), isBlock: false, type: "set", storageClassType: "stringList", }, tags: { value: cdktf.hashMapperHcl(cdktf.stringToHclTerraform)(this._tags), isBlock: false, type: "map", storageClassType: "stringMap", }, tags_all: { value: cdktf.hashMapperHcl(cdktf.stringToHclTerraform)(this._tagsAll), isBlock: false, type: "map", storageClassType: "stringMap", }, access_logs: { value: elbAccessLogsToHclTerraform(this._accessLogs.internalValue), isBlock: true, type: "list", storageClassType: "ElbAccessLogsList", }, health_check: { value: elbHealthCheckToHclTerraform(this._healthCheck.internalValue), isBlock: true, type: "list", storageClassType: "ElbHealthCheckList", }, listener: { value: cdktf.listMapperHcl(elbListenerToHclTerraform, true)(this._listener.internalValue), isBlock: true, type: "set", storageClassType: "ElbListenerList", }, timeouts: { value: elbTimeoutsToHclTerraform(this._timeouts.internalValue), isBlock: true, type: "struct", storageClassType: "ElbTimeouts", }, }; // remove undefined attributes return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined)); } } exports.Elb = Elb; _f = JSII_RTTI_SYMBOL_1; Elb[_f] = { fqn: "@cdktf/provider-aws.elb.Elb", version: "21.22.1" }; // ================= // STATIC PROPERTIES // ================= Elb.tfResourceType = "aws_elb"; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWxiL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFtSUEsNERBV0M7QUFHRCxrRUFrQ0M7QUF3SUQsOERBWUM7QUFHRCxvRUF3Q0M7QUFrSkQsd0RBWUM7QUFHRCw4REF3Q0M7QUF5S0Qsd0RBU0M7QUFHRCw4REFzQkM7O0FBN3ZCRCwrQkFBK0I7QUEwSC9CLFNBQWdCLHdCQUF3QixDQUFDLE1BQXFEO0lBQzVGLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFBQyxPQUFPLE1BQU0sQ0FBQztJQUFDLENBQUM7SUFDNUYsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLG9IQUFvSCxDQUFDLENBQUM7SUFDeEksQ0FBQztJQUNELE9BQU87UUFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxNQUFNLENBQUM7UUFDL0MsYUFBYSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsWUFBWSxDQUFDO1FBQzVELE9BQU8sRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTyxDQUFDLE9BQU8sQ0FBQztRQUNsRCxRQUFRLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxRQUFRLENBQUM7S0FDcEQsQ0FBQTtBQUNILENBQUM7QUFHRCxTQUFnQiwyQkFBMkIsQ0FBQyxNQUFxRDtJQUMvRixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQUMsT0FBTyxNQUFNLENBQUM7SUFBQyxDQUFDO0lBQzVGLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvSEFBb0gsQ0FBQyxDQUFDO0lBQ3hJLENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRztRQUNaLE1BQU0sRUFBRTtZQUNOLEtBQUssRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsTUFBTyxDQUFDLE1BQU0sQ0FBQztZQUNqRCxPQUFPLEVBQUUsS0FBSztZQUNkLElBQUksRUFBRSxRQUFRO1lBQ2QsZ0JBQWdCLEVBQUUsUUFBUTtTQUMzQjtRQUNELGFBQWEsRUFBRTtZQUNiLEtBQUssRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsTUFBTyxDQUFDLFlBQVksQ0FBQztZQUN2RCxPQUFPLEVBQUUsS0FBSztZQUNkLElBQUksRUFBRSxRQUFRO1lBQ2QsZ0JBQWdCLEVBQUUsUUFBUTtTQUMzQjtRQUNELE9BQU8sRUFBRTtZQUNQLEtBQUssRUFBRSxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBTyxDQUFDLE9BQU8sQ0FBQztZQUNuRCxPQUFPLEVBQUUsS0FBSztZQUNkLElBQUksRUFBRSxRQUFRO1lBQ2QsZ0JBQWdCLEVBQUUsU0FBUztTQUM1QjtRQUNELFFBQVEsRUFBRTtZQUNSLEtBQUssRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsTUFBTyxDQUFDLFFBQVEsQ0FBQztZQUNuRCxPQUFPLEVBQUUsS0FBSztZQUNkLElBQUksRUFBRSxRQUFRO1lBQ2QsZ0JBQWdCLEVBQUUsUUFBUTtTQUMzQjtLQUNGLENBQUM7SUFFRiw4QkFBOEI7SUFDOUIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzVILENBQUM7QUFFRCxNQUFhLDRCQUE2QixTQUFRLEtBQUssQ0FBQyxhQUFhO0lBR25FOzs7TUFHRTtJQUNGLFlBQW1CLGlCQUE2QyxFQUFFLGtCQUEwQjtRQUMxRixLQUFLLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBUGpELGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBUTlCLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN0QyxNQUFNLG1CQUFtQixHQUFRLEVBQUUsQ0FBQztRQUNwQyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0IsWUFBWSxHQUFHLElBQUksQ0FBQztZQUNwQixtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3JDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDcEIsbUJBQW1CLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDeEQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLG1CQUFtQixDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDakMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUNwQixtQkFBbUIsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQVcsYUFBYSxDQUFDLEtBQWdDO1FBQ3ZELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1lBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1lBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzdCLENBQUM7YUFDSSxDQUFDO1lBQ0osSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBSUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELElBQVcsTUFBTSxDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUNELG9EQUFvRDtJQUNwRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFJRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELElBQVcsWUFBWSxDQUFDLEtBQWE7UUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUNNLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBQ0Qsb0RBQW9EO0lBQ3BELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBSUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxJQUFXLE9BQU8sQ0FBQyxLQUFrQztRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBQ00sWUFBWTtRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUM1QixDQUFDO0lBQ0Qsb0RBQW9EO0lBQ3BELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUlELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsSUFBVyxRQUFRLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBQ00sYUFBYTtRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBQ0Qsb0RBQW9EO0lBQ3BELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQzs7QUE3R0gsb0VBOEdDOzs7QUF3QkQsU0FBZ0IseUJBQXlCLENBQUMsTUFBdUQ7SUFDL0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sTUFBTSxDQUFDO0lBQUMsQ0FBQztJQUM1RixJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsb0hBQW9ILENBQUMsQ0FBQztJQUN4SSxDQUFDO0lBQ0QsT0FBTztRQUNMLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDcEUsUUFBUSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsUUFBUSxDQUFDO1FBQ25ELE1BQU0sRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTyxDQUFDLE1BQU0sQ0FBQztRQUMvQyxPQUFPLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxPQUFPLENBQUM7UUFDakQsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxrQkFBa0IsQ0FBQztLQUN6RSxDQUFBO0FBQ0gsQ0FBQztBQUdELFNBQWdCLDRCQUE0QixDQUFDLE1BQXVEO0lBQ2xHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFBQyxPQUFPLE1BQU0sQ0FBQztJQUFDLENBQUM7SUFDNUYsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLG9IQUFvSCxDQUFDLENBQUM7SUFDeEksQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFHO1FBQ1osaUJBQWlCLEVBQUU7WUFDakIsS0FBSyxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxNQUFPLENBQUMsZ0JBQWdCLENBQUM7WUFDM0QsT0FBTyxFQUFFLEtBQUs7WUFDZCxJQUFJLEVBQUUsUUFBUTtZQUNkLGdCQUFnQixFQUFFLFFBQVE7U0FDM0I7UUFDRCxRQUFRLEVBQUU7WUFDUixLQUFLLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE1BQU8sQ0FBQyxRQUFRLENBQUM7WUFDbkQsT0FBTyxFQUFFLEtBQUs7WUFDZCxJQUFJLEVBQUUsUUFBUTtZQUNkLGdCQUFnQixFQUFFLFFBQVE7U0FDM0I7UUFDRCxNQUFNLEVBQUU7WUFDTixLQUFLLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE1BQU8sQ0FBQyxNQUFNLENBQUM7WUFDakQsT0FBTyxFQUFFLEtBQUs7WUFDZCxJQUFJLEVBQUUsUUFBUTtZQUNkLGdCQUFnQixFQUFFLFFBQVE7U0FDM0I7UUFDRCxPQUFPLEVBQUU7WUFDUCxLQUFLLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE1BQU8sQ0FBQyxPQUFPLENBQUM7WUFDbEQ