VaporShell.WAFv2.Classes.ps1

using namespace System
using namespace System.Collections
using namespace System.Collections.Generic
using namespace System.IO
using namespace System.Management.Automation
[CmdletBinding()]
Param()

Write-Verbose "Importing class 'WAFv2RuleGroupJsonMatchPattern'"

class WAFv2RuleGroupJsonMatchPattern : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupJsonMatchPattern'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-jsonmatchpattern.html'

    hidden [VSJson] $_all
    hidden [object] $_includedPaths

    [VSJson] $All
    [string[]] $IncludedPaths

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name All -Value {
            $this._all
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._all = [VSJson]::Transform($value)
            Write-Debug $this._all
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IncludedPaths -Value {
            $this._includedPaths
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._includedPaths = @($value)
        }
    }

    WAFv2RuleGroupJsonMatchPattern() : base() {}
    WAFv2RuleGroupJsonMatchPattern([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupJsonMatchPattern([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupXssMatchStatement'"

class WAFv2RuleGroupXssMatchStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupXssMatchStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-xssmatchstatement.html'

    hidden [object] $_fieldToMatch
    hidden [object] $_textTransformations

    [WAFv2RuleGroupFieldToMatch] $FieldToMatch
    [WAFv2RuleGroupTextTransformation[]] $TextTransformations

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FieldToMatch -Value {
            $this._fieldToMatch
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupFieldToMatch], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fieldToMatch = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TextTransformations -Value {
            $this._textTransformations
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupTextTransformation], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._textTransformations = $value
        }
    }

    WAFv2RuleGroupXssMatchStatement() : base() {}
    WAFv2RuleGroupXssMatchStatement([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupXssMatchStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLCustomRequestHandling'"

class WAFv2WebACLCustomRequestHandling : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLCustomRequestHandling'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-customrequesthandling.html'

    hidden [object] $_insertHeaders

    [WAFv2WebACLCustomHTTPHeader[]] $InsertHeaders

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name InsertHeaders -Value {
            $this._insertHeaders
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLCustomHTTPHeader], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._insertHeaders = $value
        }
    }

    WAFv2WebACLCustomRequestHandling() : base() {}
    WAFv2WebACLCustomRequestHandling([IDictionary] $props) : base($props) {}
    WAFv2WebACLCustomRequestHandling([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLManagedRuleGroupStatement'"

class WAFv2WebACLManagedRuleGroupStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLManagedRuleGroupStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-managedrulegroupstatement.html'

    hidden [object] $_name
    hidden [object] $_vendorName
    hidden [object] $_excludedRules
    hidden [object] $_scopeDownStatement

    [string] $Name
    [string] $VendorName
    [WAFv2WebACLExcludedRule[]] $ExcludedRules
    [WAFv2WebACLStatement] $ScopeDownStatement

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VendorName -Value {
            $this._vendorName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._vendorName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ExcludedRules -Value {
            $this._excludedRules
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLExcludedRule], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._excludedRules = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScopeDownStatement -Value {
            $this._scopeDownStatement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scopeDownStatement = $value
        }
    }

    WAFv2WebACLManagedRuleGroupStatement() : base() {}
    WAFv2WebACLManagedRuleGroupStatement([IDictionary] $props) : base($props) {}
    WAFv2WebACLManagedRuleGroupStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLTextTransformation'"

class WAFv2WebACLTextTransformation : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLTextTransformation'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-texttransformation.html'

    hidden [object] $_priority
    hidden [object] $_type

    [int] $Priority
    [string] $Type

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Priority -Value {
            $this._priority
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._priority = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2WebACLTextTransformation() : base() {}
    WAFv2WebACLTextTransformation([IDictionary] $props) : base($props) {}
    WAFv2WebACLTextTransformation([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLAllowAction'"

class WAFv2WebACLAllowAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLAllowAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-allowaction.html'

    hidden [object] $_customRequestHandling

    [WAFv2WebACLCustomRequestHandling] $CustomRequestHandling

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomRequestHandling -Value {
            $this._customRequestHandling
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLCustomRequestHandling], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._customRequestHandling = $value
        }
    }

    WAFv2WebACLAllowAction() : base() {}
    WAFv2WebACLAllowAction([IDictionary] $props) : base($props) {}
    WAFv2WebACLAllowAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLDefaultAction'"

class WAFv2WebACLDefaultAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLDefaultAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-defaultaction.html'

    hidden [object] $_allow
    hidden [object] $_block

    [WAFv2WebACLAllowAction] $Allow
    [WAFv2WebACLBlockAction] $Block

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Allow -Value {
            $this._allow
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLAllowAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._allow = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Block -Value {
            $this._block
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLBlockAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._block = $value
        }
    }

    WAFv2WebACLDefaultAction() : base() {}
    WAFv2WebACLDefaultAction([IDictionary] $props) : base($props) {}
    WAFv2WebACLDefaultAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLXssMatchStatement'"

class WAFv2WebACLXssMatchStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLXssMatchStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-xssmatchstatement.html'

    hidden [object] $_fieldToMatch
    hidden [object] $_textTransformations

    [WAFv2WebACLFieldToMatch] $FieldToMatch
    [WAFv2WebACLTextTransformation[]] $TextTransformations

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FieldToMatch -Value {
            $this._fieldToMatch
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLFieldToMatch], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fieldToMatch = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TextTransformations -Value {
            $this._textTransformations
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLTextTransformation], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._textTransformations = $value
        }
    }

    WAFv2WebACLXssMatchStatement() : base() {}
    WAFv2WebACLXssMatchStatement([IDictionary] $props) : base($props) {}
    WAFv2WebACLXssMatchStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLByteMatchStatement'"

class WAFv2WebACLByteMatchStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLByteMatchStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-bytematchstatement.html'

    hidden [object] $_searchString
    hidden [object] $_searchStringBase64
    hidden [object] $_fieldToMatch
    hidden [object] $_textTransformations
    hidden [object] $_positionalConstraint

    [string] $SearchString
    [string] $SearchStringBase64
    [WAFv2WebACLFieldToMatch] $FieldToMatch
    [WAFv2WebACLTextTransformation[]] $TextTransformations
    [string] $PositionalConstraint

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SearchString -Value {
            $this._searchString
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._searchString = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SearchStringBase64 -Value {
            $this._searchStringBase64
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._searchStringBase64 = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FieldToMatch -Value {
            $this._fieldToMatch
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLFieldToMatch], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fieldToMatch = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TextTransformations -Value {
            $this._textTransformations
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLTextTransformation], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._textTransformations = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PositionalConstraint -Value {
            $this._positionalConstraint
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._positionalConstraint = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2WebACLByteMatchStatement() : base() {}
    WAFv2WebACLByteMatchStatement([IDictionary] $props) : base($props) {}
    WAFv2WebACLByteMatchStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupLabelMatchStatement'"

class WAFv2RuleGroupLabelMatchStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupLabelMatchStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-labelmatchstatement.html'

    hidden [object] $_scope
    hidden [object] $_key

    [string] $Scope
    [string] $Key

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Scope -Value {
            $this._scope
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scope = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2RuleGroupLabelMatchStatement() : base() {}
    WAFv2RuleGroupLabelMatchStatement([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupLabelMatchStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLForwardedIPConfiguration'"

class WAFv2WebACLForwardedIPConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLForwardedIPConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-forwardedipconfiguration.html'

    hidden [object] $_headerName
    hidden [object] $_fallbackBehavior

    [string] $HeaderName
    [string] $FallbackBehavior

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name HeaderName -Value {
            $this._headerName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._headerName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FallbackBehavior -Value {
            $this._fallbackBehavior
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fallbackBehavior = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2WebACLForwardedIPConfiguration() : base() {}
    WAFv2WebACLForwardedIPConfiguration([IDictionary] $props) : base($props) {}
    WAFv2WebACLForwardedIPConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLOrStatement'"

class WAFv2WebACLOrStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLOrStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-orstatement.html'

    hidden [object] $_statements

    [WAFv2WebACLStatement[]] $Statements

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Statements -Value {
            $this._statements
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLStatement], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._statements = $value
        }
    }

    WAFv2WebACLOrStatement() : base() {}
    WAFv2WebACLOrStatement([IDictionary] $props) : base($props) {}
    WAFv2WebACLOrStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupRuleAction'"

class WAFv2RuleGroupRuleAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupRuleAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ruleaction.html'

    hidden [VSJson] $_allow
    hidden [VSJson] $_block
    hidden [VSJson] $_count

    [VSJson] $Allow
    [VSJson] $Block
    [VSJson] $Count

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Allow -Value {
            $this._allow
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._allow = [VSJson]::Transform($value)
            Write-Debug $this._allow
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Block -Value {
            $this._block
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._block = [VSJson]::Transform($value)
            Write-Debug $this._block
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Count -Value {
            $this._count
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._count = [VSJson]::Transform($value)
            Write-Debug $this._count
        }
    }

    WAFv2RuleGroupRuleAction() : base() {}
    WAFv2RuleGroupRuleAction([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupRuleAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLLabel'"

class WAFv2WebACLLabel : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLLabel'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-label.html'

    hidden [object] $_name

    [string] $Name

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2WebACLLabel() : base() {}
    WAFv2WebACLLabel([IDictionary] $props) : base($props) {}
    WAFv2WebACLLabel([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLCustomHTTPHeader'"

class WAFv2WebACLCustomHTTPHeader : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLCustomHTTPHeader'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-customhttpheader.html'

    hidden [object] $_name
    hidden [object] $_value

    [string] $Name
    [string] $Value

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2WebACLCustomHTTPHeader() : base() {}
    WAFv2WebACLCustomHTTPHeader([IDictionary] $props) : base($props) {}
    WAFv2WebACLCustomHTTPHeader([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLRegexPatternSetReferenceStatement'"

class WAFv2WebACLRegexPatternSetReferenceStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLRegexPatternSetReferenceStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-regexpatternsetreferencestatement.html'

    hidden [object] $_arn
    hidden [object] $_fieldToMatch
    hidden [object] $_textTransformations

    [string] $Arn
    [WAFv2WebACLFieldToMatch] $FieldToMatch
    [WAFv2WebACLTextTransformation[]] $TextTransformations

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Arn -Value {
            $this._arn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._arn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FieldToMatch -Value {
            $this._fieldToMatch
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLFieldToMatch], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fieldToMatch = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TextTransformations -Value {
            $this._textTransformations
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLTextTransformation], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._textTransformations = $value
        }
    }

    WAFv2WebACLRegexPatternSetReferenceStatement() : base() {}
    WAFv2WebACLRegexPatternSetReferenceStatement([IDictionary] $props) : base($props) {}
    WAFv2WebACLRegexPatternSetReferenceStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupStatement'"

class WAFv2RuleGroupStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html'

    hidden [object] $_byteMatchStatement
    hidden [object] $_sqliMatchStatement
    hidden [object] $_xssMatchStatement
    hidden [object] $_sizeConstraintStatement
    hidden [object] $_geoMatchStatement
    hidden [object] $_iPSetReferenceStatement
    hidden [object] $_regexPatternSetReferenceStatement
    hidden [object] $_rateBasedStatement
    hidden [object] $_andStatement
    hidden [object] $_orStatement
    hidden [object] $_notStatement
    hidden [object] $_labelMatchStatement

    [WAFv2RuleGroupByteMatchStatement] $ByteMatchStatement
    [WAFv2RuleGroupSqliMatchStatement] $SqliMatchStatement
    [WAFv2RuleGroupXssMatchStatement] $XssMatchStatement
    [WAFv2RuleGroupSizeConstraintStatement] $SizeConstraintStatement
    [WAFv2RuleGroupGeoMatchStatement] $GeoMatchStatement
    [WAFv2RuleGroupIPSetReferenceStatement] $IPSetReferenceStatement
    [WAFv2RuleGroupRegexPatternSetReferenceStatement] $RegexPatternSetReferenceStatement
    [WAFv2RuleGroupRateBasedStatement] $RateBasedStatement
    [WAFv2RuleGroupAndStatement] $AndStatement
    [WAFv2RuleGroupOrStatement] $OrStatement
    [WAFv2RuleGroupNotStatement] $NotStatement
    [WAFv2RuleGroupLabelMatchStatement] $LabelMatchStatement

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ByteMatchStatement -Value {
            $this._byteMatchStatement
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupByteMatchStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._byteMatchStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SqliMatchStatement -Value {
            $this._sqliMatchStatement
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupSqliMatchStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sqliMatchStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name XssMatchStatement -Value {
            $this._xssMatchStatement
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupXssMatchStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._xssMatchStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SizeConstraintStatement -Value {
            $this._sizeConstraintStatement
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupSizeConstraintStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sizeConstraintStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name GeoMatchStatement -Value {
            $this._geoMatchStatement
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupGeoMatchStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._geoMatchStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IPSetReferenceStatement -Value {
            $this._iPSetReferenceStatement
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupIPSetReferenceStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iPSetReferenceStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RegexPatternSetReferenceStatement -Value {
            $this._regexPatternSetReferenceStatement
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupRegexPatternSetReferenceStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._regexPatternSetReferenceStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RateBasedStatement -Value {
            $this._rateBasedStatement
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupRateBasedStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rateBasedStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AndStatement -Value {
            $this._andStatement
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupAndStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._andStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OrStatement -Value {
            $this._orStatement
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupOrStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._orStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NotStatement -Value {
            $this._notStatement
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupNotStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._notStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LabelMatchStatement -Value {
            $this._labelMatchStatement
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupLabelMatchStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._labelMatchStatement = $value
        }
    }

    WAFv2RuleGroupStatement() : base() {}
    WAFv2RuleGroupStatement([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupLabelSummary'"

class WAFv2RuleGroupLabelSummary : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupLabelSummary'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-labelsummary.html'

    hidden [object] $_name

    [string] $Name

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2RuleGroupLabelSummary() : base() {}
    WAFv2RuleGroupLabelSummary([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupLabelSummary([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLIPSetForwardedIPConfiguration'"

class WAFv2WebACLIPSetForwardedIPConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLIPSetForwardedIPConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ipsetforwardedipconfiguration.html'

    hidden [object] $_headerName
    hidden [object] $_fallbackBehavior
    hidden [object] $_position

    [string] $HeaderName
    [string] $FallbackBehavior
    [string] $Position

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name HeaderName -Value {
            $this._headerName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._headerName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FallbackBehavior -Value {
            $this._fallbackBehavior
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fallbackBehavior = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Position -Value {
            $this._position
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._position = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2WebACLIPSetForwardedIPConfiguration() : base() {}
    WAFv2WebACLIPSetForwardedIPConfiguration([IDictionary] $props) : base($props) {}
    WAFv2WebACLIPSetForwardedIPConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLCustomResponseBody'"

class WAFv2WebACLCustomResponseBody : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLCustomResponseBody'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-customresponsebody.html'

    hidden [object] $_contentType
    hidden [object] $_content

    [string] $ContentType
    [string] $Content

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContentType -Value {
            $this._contentType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._contentType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Content -Value {
            $this._content
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._content = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2WebACLCustomResponseBody() : base() {}
    WAFv2WebACLCustomResponseBody([IDictionary] $props) : base($props) {}
    WAFv2WebACLCustomResponseBody([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLStatement'"

class WAFv2WebACLStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html'

    hidden [object] $_byteMatchStatement
    hidden [object] $_sqliMatchStatement
    hidden [object] $_xssMatchStatement
    hidden [object] $_sizeConstraintStatement
    hidden [object] $_geoMatchStatement
    hidden [object] $_ruleGroupReferenceStatement
    hidden [object] $_iPSetReferenceStatement
    hidden [object] $_regexPatternSetReferenceStatement
    hidden [object] $_managedRuleGroupStatement
    hidden [object] $_rateBasedStatement
    hidden [object] $_andStatement
    hidden [object] $_orStatement
    hidden [object] $_notStatement
    hidden [object] $_labelMatchStatement

    [WAFv2WebACLByteMatchStatement] $ByteMatchStatement
    [WAFv2WebACLSqliMatchStatement] $SqliMatchStatement
    [WAFv2WebACLXssMatchStatement] $XssMatchStatement
    [WAFv2WebACLSizeConstraintStatement] $SizeConstraintStatement
    [WAFv2WebACLGeoMatchStatement] $GeoMatchStatement
    [WAFv2WebACLRuleGroupReferenceStatement] $RuleGroupReferenceStatement
    [WAFv2WebACLIPSetReferenceStatement] $IPSetReferenceStatement
    [WAFv2WebACLRegexPatternSetReferenceStatement] $RegexPatternSetReferenceStatement
    [WAFv2WebACLManagedRuleGroupStatement] $ManagedRuleGroupStatement
    [WAFv2WebACLRateBasedStatement] $RateBasedStatement
    [WAFv2WebACLAndStatement] $AndStatement
    [WAFv2WebACLOrStatement] $OrStatement
    [WAFv2WebACLNotStatement] $NotStatement
    [WAFv2WebACLLabelMatchStatement] $LabelMatchStatement

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ByteMatchStatement -Value {
            $this._byteMatchStatement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLByteMatchStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._byteMatchStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SqliMatchStatement -Value {
            $this._sqliMatchStatement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLSqliMatchStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sqliMatchStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name XssMatchStatement -Value {
            $this._xssMatchStatement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLXssMatchStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._xssMatchStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SizeConstraintStatement -Value {
            $this._sizeConstraintStatement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLSizeConstraintStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sizeConstraintStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name GeoMatchStatement -Value {
            $this._geoMatchStatement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLGeoMatchStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._geoMatchStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RuleGroupReferenceStatement -Value {
            $this._ruleGroupReferenceStatement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLRuleGroupReferenceStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ruleGroupReferenceStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IPSetReferenceStatement -Value {
            $this._iPSetReferenceStatement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLIPSetReferenceStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iPSetReferenceStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RegexPatternSetReferenceStatement -Value {
            $this._regexPatternSetReferenceStatement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLRegexPatternSetReferenceStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._regexPatternSetReferenceStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ManagedRuleGroupStatement -Value {
            $this._managedRuleGroupStatement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLManagedRuleGroupStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._managedRuleGroupStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RateBasedStatement -Value {
            $this._rateBasedStatement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLRateBasedStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rateBasedStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AndStatement -Value {
            $this._andStatement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLAndStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._andStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OrStatement -Value {
            $this._orStatement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLOrStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._orStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NotStatement -Value {
            $this._notStatement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLNotStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._notStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LabelMatchStatement -Value {
            $this._labelMatchStatement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLLabelMatchStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._labelMatchStatement = $value
        }
    }

    WAFv2WebACLStatement() : base() {}
    WAFv2WebACLStatement([IDictionary] $props) : base($props) {}
    WAFv2WebACLStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupFieldToMatch'"

class WAFv2RuleGroupFieldToMatch : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupFieldToMatch'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html'

    hidden [VSJson] $_singleHeader
    hidden [VSJson] $_singleQueryArgument
    hidden [VSJson] $_allQueryArguments
    hidden [VSJson] $_uriPath
    hidden [VSJson] $_queryString
    hidden [VSJson] $_body
    hidden [VSJson] $_method
    hidden [object] $_jsonBody

    [VSJson] $SingleHeader
    [VSJson] $SingleQueryArgument
    [VSJson] $AllQueryArguments
    [VSJson] $UriPath
    [VSJson] $QueryString
    [VSJson] $Body
    [VSJson] $Method
    [WAFv2RuleGroupJsonBody] $JsonBody

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SingleHeader -Value {
            $this._singleHeader
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._singleHeader = [VSJson]::Transform($value)
            Write-Debug $this._singleHeader
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SingleQueryArgument -Value {
            $this._singleQueryArgument
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._singleQueryArgument = [VSJson]::Transform($value)
            Write-Debug $this._singleQueryArgument
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllQueryArguments -Value {
            $this._allQueryArguments
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._allQueryArguments = [VSJson]::Transform($value)
            Write-Debug $this._allQueryArguments
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UriPath -Value {
            $this._uriPath
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._uriPath = [VSJson]::Transform($value)
            Write-Debug $this._uriPath
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name QueryString -Value {
            $this._queryString
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._queryString = [VSJson]::Transform($value)
            Write-Debug $this._queryString
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Body -Value {
            $this._body
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._body = [VSJson]::Transform($value)
            Write-Debug $this._body
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Method -Value {
            $this._method
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._method = [VSJson]::Transform($value)
            Write-Debug $this._method
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name JsonBody -Value {
            $this._jsonBody
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupJsonBody], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._jsonBody = $value
        }
    }

    WAFv2RuleGroupFieldToMatch() : base() {}
    WAFv2RuleGroupFieldToMatch([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupFieldToMatch([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLBlockAction'"

class WAFv2WebACLBlockAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLBlockAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-blockaction.html'

    hidden [object] $_customResponse

    [WAFv2WebACLCustomResponse] $CustomResponse

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomResponse -Value {
            $this._customResponse
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLCustomResponse], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._customResponse = $value
        }
    }

    WAFv2WebACLBlockAction() : base() {}
    WAFv2WebACLBlockAction([IDictionary] $props) : base($props) {}
    WAFv2WebACLBlockAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupIPSetReferenceStatement'"

class WAFv2RuleGroupIPSetReferenceStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupIPSetReferenceStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ipsetreferencestatement.html'

    hidden [object] $_arn
    hidden [object] $_iPSetForwardedIPConfig

    [string] $Arn
    [WAFv2RuleGroupIPSetForwardedIPConfiguration] $IPSetForwardedIPConfig

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Arn -Value {
            $this._arn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._arn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IPSetForwardedIPConfig -Value {
            $this._iPSetForwardedIPConfig
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupIPSetForwardedIPConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iPSetForwardedIPConfig = $value
        }
    }

    WAFv2RuleGroupIPSetReferenceStatement() : base() {}
    WAFv2RuleGroupIPSetReferenceStatement([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupIPSetReferenceStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLRuleGroupReferenceStatement'"

class WAFv2WebACLRuleGroupReferenceStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLRuleGroupReferenceStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rulegroupreferencestatement.html'

    hidden [object] $_arn
    hidden [object] $_excludedRules

    [string] $Arn
    [WAFv2WebACLExcludedRule[]] $ExcludedRules

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Arn -Value {
            $this._arn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._arn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ExcludedRules -Value {
            $this._excludedRules
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLExcludedRule], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._excludedRules = $value
        }
    }

    WAFv2WebACLRuleGroupReferenceStatement() : base() {}
    WAFv2WebACLRuleGroupReferenceStatement([IDictionary] $props) : base($props) {}
    WAFv2WebACLRuleGroupReferenceStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLLabelMatchStatement'"

class WAFv2WebACLLabelMatchStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLLabelMatchStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-labelmatchstatement.html'

    hidden [object] $_scope
    hidden [object] $_key

    [string] $Scope
    [string] $Key

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Scope -Value {
            $this._scope
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scope = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2WebACLLabelMatchStatement() : base() {}
    WAFv2WebACLLabelMatchStatement([IDictionary] $props) : base($props) {}
    WAFv2WebACLLabelMatchStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLJsonMatchPattern'"

class WAFv2WebACLJsonMatchPattern : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLJsonMatchPattern'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-jsonmatchpattern.html'

    hidden [VSJson] $_all
    hidden [object] $_includedPaths

    [VSJson] $All
    [string[]] $IncludedPaths

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name All -Value {
            $this._all
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._all = [VSJson]::Transform($value)
            Write-Debug $this._all
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IncludedPaths -Value {
            $this._includedPaths
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._includedPaths = @($value)
        }
    }

    WAFv2WebACLJsonMatchPattern() : base() {}
    WAFv2WebACLJsonMatchPattern([IDictionary] $props) : base($props) {}
    WAFv2WebACLJsonMatchPattern([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLAndStatement'"

class WAFv2WebACLAndStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLAndStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-andstatement.html'

    hidden [object] $_statements

    [WAFv2WebACLStatement[]] $Statements

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Statements -Value {
            $this._statements
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLStatement], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._statements = $value
        }
    }

    WAFv2WebACLAndStatement() : base() {}
    WAFv2WebACLAndStatement([IDictionary] $props) : base($props) {}
    WAFv2WebACLAndStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupRateBasedStatement'"

class WAFv2RuleGroupRateBasedStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupRateBasedStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatement.html'

    hidden [object] $_limit
    hidden [object] $_aggregateKeyType
    hidden [object] $_scopeDownStatement
    hidden [object] $_forwardedIPConfig

    [int] $Limit
    [string] $AggregateKeyType
    [WAFv2RuleGroupStatement] $ScopeDownStatement
    [WAFv2RuleGroupForwardedIPConfiguration] $ForwardedIPConfig

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Limit -Value {
            $this._limit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._limit = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AggregateKeyType -Value {
            $this._aggregateKeyType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._aggregateKeyType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScopeDownStatement -Value {
            $this._scopeDownStatement
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scopeDownStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ForwardedIPConfig -Value {
            $this._forwardedIPConfig
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupForwardedIPConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._forwardedIPConfig = $value
        }
    }

    WAFv2RuleGroupRateBasedStatement() : base() {}
    WAFv2RuleGroupRateBasedStatement([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupRateBasedStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLCountAction'"

class WAFv2WebACLCountAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLCountAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-countaction.html'

    hidden [object] $_customRequestHandling

    [WAFv2WebACLCustomRequestHandling] $CustomRequestHandling

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomRequestHandling -Value {
            $this._customRequestHandling
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLCustomRequestHandling], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._customRequestHandling = $value
        }
    }

    WAFv2WebACLCountAction() : base() {}
    WAFv2WebACLCountAction([IDictionary] $props) : base($props) {}
    WAFv2WebACLCountAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLSizeConstraintStatement'"

class WAFv2WebACLSizeConstraintStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLSizeConstraintStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sizeconstraintstatement.html'

    hidden [object] $_fieldToMatch
    hidden [object] $_comparisonOperator
    hidden [object] $_size
    hidden [object] $_textTransformations

    [WAFv2WebACLFieldToMatch] $FieldToMatch
    [string] $ComparisonOperator
    [double] $Size
    [WAFv2WebACLTextTransformation[]] $TextTransformations

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FieldToMatch -Value {
            $this._fieldToMatch
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLFieldToMatch], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fieldToMatch = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ComparisonOperator -Value {
            $this._comparisonOperator
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._comparisonOperator = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Size -Value {
            $this._size
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._size = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TextTransformations -Value {
            $this._textTransformations
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLTextTransformation], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._textTransformations = $value
        }
    }

    WAFv2WebACLSizeConstraintStatement() : base() {}
    WAFv2WebACLSizeConstraintStatement([IDictionary] $props) : base($props) {}
    WAFv2WebACLSizeConstraintStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLFieldToMatch'"

class WAFv2WebACLFieldToMatch : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLFieldToMatch'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html'

    hidden [VSJson] $_singleHeader
    hidden [VSJson] $_singleQueryArgument
    hidden [VSJson] $_allQueryArguments
    hidden [VSJson] $_uriPath
    hidden [VSJson] $_queryString
    hidden [VSJson] $_body
    hidden [VSJson] $_method
    hidden [object] $_jsonBody

    [VSJson] $SingleHeader
    [VSJson] $SingleQueryArgument
    [VSJson] $AllQueryArguments
    [VSJson] $UriPath
    [VSJson] $QueryString
    [VSJson] $Body
    [VSJson] $Method
    [WAFv2WebACLJsonBody] $JsonBody

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SingleHeader -Value {
            $this._singleHeader
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._singleHeader = [VSJson]::Transform($value)
            Write-Debug $this._singleHeader
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SingleQueryArgument -Value {
            $this._singleQueryArgument
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._singleQueryArgument = [VSJson]::Transform($value)
            Write-Debug $this._singleQueryArgument
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllQueryArguments -Value {
            $this._allQueryArguments
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._allQueryArguments = [VSJson]::Transform($value)
            Write-Debug $this._allQueryArguments
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UriPath -Value {
            $this._uriPath
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._uriPath = [VSJson]::Transform($value)
            Write-Debug $this._uriPath
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name QueryString -Value {
            $this._queryString
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._queryString = [VSJson]::Transform($value)
            Write-Debug $this._queryString
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Body -Value {
            $this._body
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._body = [VSJson]::Transform($value)
            Write-Debug $this._body
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Method -Value {
            $this._method
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._method = [VSJson]::Transform($value)
            Write-Debug $this._method
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name JsonBody -Value {
            $this._jsonBody
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLJsonBody], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._jsonBody = $value
        }
    }

    WAFv2WebACLFieldToMatch() : base() {}
    WAFv2WebACLFieldToMatch([IDictionary] $props) : base($props) {}
    WAFv2WebACLFieldToMatch([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLSqliMatchStatement'"

class WAFv2WebACLSqliMatchStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLSqliMatchStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sqlimatchstatement.html'

    hidden [object] $_fieldToMatch
    hidden [object] $_textTransformations

    [WAFv2WebACLFieldToMatch] $FieldToMatch
    [WAFv2WebACLTextTransformation[]] $TextTransformations

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FieldToMatch -Value {
            $this._fieldToMatch
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLFieldToMatch], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fieldToMatch = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TextTransformations -Value {
            $this._textTransformations
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLTextTransformation], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._textTransformations = $value
        }
    }

    WAFv2WebACLSqliMatchStatement() : base() {}
    WAFv2WebACLSqliMatchStatement([IDictionary] $props) : base($props) {}
    WAFv2WebACLSqliMatchStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLGeoMatchStatement'"

class WAFv2WebACLGeoMatchStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLGeoMatchStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-geomatchstatement.html'

    hidden [object] $_countryCodes
    hidden [object] $_forwardedIPConfig

    [string[]] $CountryCodes
    [WAFv2WebACLForwardedIPConfiguration] $ForwardedIPConfig

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CountryCodes -Value {
            $this._countryCodes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._countryCodes = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ForwardedIPConfig -Value {
            $this._forwardedIPConfig
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLForwardedIPConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._forwardedIPConfig = $value
        }
    }

    WAFv2WebACLGeoMatchStatement() : base() {}
    WAFv2WebACLGeoMatchStatement([IDictionary] $props) : base($props) {}
    WAFv2WebACLGeoMatchStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupVisibilityConfig'"

class WAFv2RuleGroupVisibilityConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupVisibilityConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-visibilityconfig.html'

    hidden [object] $_sampledRequestsEnabled
    hidden [object] $_cloudWatchMetricsEnabled
    hidden [object] $_metricName

    [bool] $SampledRequestsEnabled
    [bool] $CloudWatchMetricsEnabled
    [string] $MetricName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SampledRequestsEnabled -Value {
            $this._sampledRequestsEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sampledRequestsEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloudWatchMetricsEnabled -Value {
            $this._cloudWatchMetricsEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cloudWatchMetricsEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricName -Value {
            $this._metricName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2RuleGroupVisibilityConfig() : base() {}
    WAFv2RuleGroupVisibilityConfig([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupVisibilityConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupGeoMatchStatement'"

class WAFv2RuleGroupGeoMatchStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupGeoMatchStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-geomatchstatement.html'

    hidden [object] $_countryCodes
    hidden [object] $_forwardedIPConfig

    [string[]] $CountryCodes
    [WAFv2RuleGroupForwardedIPConfiguration] $ForwardedIPConfig

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CountryCodes -Value {
            $this._countryCodes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._countryCodes = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ForwardedIPConfig -Value {
            $this._forwardedIPConfig
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupForwardedIPConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._forwardedIPConfig = $value
        }
    }

    WAFv2RuleGroupGeoMatchStatement() : base() {}
    WAFv2RuleGroupGeoMatchStatement([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupGeoMatchStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupAndStatement'"

class WAFv2RuleGroupAndStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupAndStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-andstatement.html'

    hidden [object] $_statements

    [WAFv2RuleGroupStatement[]] $Statements

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Statements -Value {
            $this._statements
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupStatement], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._statements = $value
        }
    }

    WAFv2RuleGroupAndStatement() : base() {}
    WAFv2RuleGroupAndStatement([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupAndStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLRuleAction'"

class WAFv2WebACLRuleAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLRuleAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ruleaction.html'

    hidden [object] $_allow
    hidden [object] $_block
    hidden [object] $_count

    [WAFv2WebACLAllowAction] $Allow
    [WAFv2WebACLBlockAction] $Block
    [WAFv2WebACLCountAction] $Count

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Allow -Value {
            $this._allow
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLAllowAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._allow = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Block -Value {
            $this._block
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLBlockAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._block = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Count -Value {
            $this._count
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLCountAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._count = $value
        }
    }

    WAFv2WebACLRuleAction() : base() {}
    WAFv2WebACLRuleAction([IDictionary] $props) : base($props) {}
    WAFv2WebACLRuleAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupIPSetForwardedIPConfiguration'"

class WAFv2RuleGroupIPSetForwardedIPConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupIPSetForwardedIPConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ipsetforwardedipconfiguration.html'

    hidden [object] $_headerName
    hidden [object] $_fallbackBehavior
    hidden [object] $_position

    [string] $HeaderName
    [string] $FallbackBehavior
    [string] $Position

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name HeaderName -Value {
            $this._headerName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._headerName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FallbackBehavior -Value {
            $this._fallbackBehavior
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fallbackBehavior = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Position -Value {
            $this._position
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._position = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2RuleGroupIPSetForwardedIPConfiguration() : base() {}
    WAFv2RuleGroupIPSetForwardedIPConfiguration([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupIPSetForwardedIPConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLJsonBody'"

class WAFv2WebACLJsonBody : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLJsonBody'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-jsonbody.html'

    hidden [object] $_matchPattern
    hidden [object] $_matchScope
    hidden [object] $_invalidFallbackBehavior

    [WAFv2WebACLJsonMatchPattern] $MatchPattern
    [string] $MatchScope
    [string] $InvalidFallbackBehavior

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MatchPattern -Value {
            $this._matchPattern
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLJsonMatchPattern], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._matchPattern = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MatchScope -Value {
            $this._matchScope
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._matchScope = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InvalidFallbackBehavior -Value {
            $this._invalidFallbackBehavior
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._invalidFallbackBehavior = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2WebACLJsonBody() : base() {}
    WAFv2WebACLJsonBody([IDictionary] $props) : base($props) {}
    WAFv2WebACLJsonBody([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLNotStatement'"

class WAFv2WebACLNotStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLNotStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-notstatement.html'

    hidden [object] $_statement

    [WAFv2WebACLStatement] $Statement

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Statement -Value {
            $this._statement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statement = $value
        }
    }

    WAFv2WebACLNotStatement() : base() {}
    WAFv2WebACLNotStatement([IDictionary] $props) : base($props) {}
    WAFv2WebACLNotStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupTextTransformation'"

class WAFv2RuleGroupTextTransformation : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupTextTransformation'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-texttransformation.html'

    hidden [object] $_priority
    hidden [object] $_type

    [int] $Priority
    [string] $Type

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Priority -Value {
            $this._priority
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._priority = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2RuleGroupTextTransformation() : base() {}
    WAFv2RuleGroupTextTransformation([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupTextTransformation([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupByteMatchStatement'"

class WAFv2RuleGroupByteMatchStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupByteMatchStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-bytematchstatement.html'

    hidden [object] $_searchString
    hidden [object] $_searchStringBase64
    hidden [object] $_fieldToMatch
    hidden [object] $_textTransformations
    hidden [object] $_positionalConstraint

    [string] $SearchString
    [string] $SearchStringBase64
    [WAFv2RuleGroupFieldToMatch] $FieldToMatch
    [WAFv2RuleGroupTextTransformation[]] $TextTransformations
    [string] $PositionalConstraint

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SearchString -Value {
            $this._searchString
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._searchString = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SearchStringBase64 -Value {
            $this._searchStringBase64
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._searchStringBase64 = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FieldToMatch -Value {
            $this._fieldToMatch
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupFieldToMatch], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fieldToMatch = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TextTransformations -Value {
            $this._textTransformations
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupTextTransformation], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._textTransformations = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PositionalConstraint -Value {
            $this._positionalConstraint
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._positionalConstraint = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2RuleGroupByteMatchStatement() : base() {}
    WAFv2RuleGroupByteMatchStatement([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupByteMatchStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupRegexPatternSetReferenceStatement'"

class WAFv2RuleGroupRegexPatternSetReferenceStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupRegexPatternSetReferenceStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-regexpatternsetreferencestatement.html'

    hidden [object] $_arn
    hidden [object] $_fieldToMatch
    hidden [object] $_textTransformations

    [string] $Arn
    [WAFv2RuleGroupFieldToMatch] $FieldToMatch
    [WAFv2RuleGroupTextTransformation[]] $TextTransformations

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Arn -Value {
            $this._arn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._arn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FieldToMatch -Value {
            $this._fieldToMatch
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupFieldToMatch], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fieldToMatch = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TextTransformations -Value {
            $this._textTransformations
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupTextTransformation], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._textTransformations = $value
        }
    }

    WAFv2RuleGroupRegexPatternSetReferenceStatement() : base() {}
    WAFv2RuleGroupRegexPatternSetReferenceStatement([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupRegexPatternSetReferenceStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupOrStatement'"

class WAFv2RuleGroupOrStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupOrStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-orstatement.html'

    hidden [object] $_statements

    [WAFv2RuleGroupStatement[]] $Statements

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Statements -Value {
            $this._statements
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupStatement], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._statements = $value
        }
    }

    WAFv2RuleGroupOrStatement() : base() {}
    WAFv2RuleGroupOrStatement([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupOrStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLOverrideAction'"

class WAFv2WebACLOverrideAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLOverrideAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-overrideaction.html'

    hidden [VSJson] $_count
    hidden [VSJson] $_none

    [VSJson] $Count
    [VSJson] $None

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Count -Value {
            $this._count
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._count = [VSJson]::Transform($value)
            Write-Debug $this._count
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name None -Value {
            $this._none
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._none = [VSJson]::Transform($value)
            Write-Debug $this._none
        }
    }

    WAFv2WebACLOverrideAction() : base() {}
    WAFv2WebACLOverrideAction([IDictionary] $props) : base($props) {}
    WAFv2WebACLOverrideAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupRule'"

class WAFv2RuleGroupRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-rule.html'

    hidden [object] $_name
    hidden [object] $_priority
    hidden [object] $_statement
    hidden [object] $_action
    hidden [object] $_ruleLabels
    hidden [object] $_visibilityConfig

    [string] $Name
    [int] $Priority
    [WAFv2RuleGroupStatement] $Statement
    [WAFv2RuleGroupRuleAction] $Action
    [WAFv2RuleGroupLabel[]] $RuleLabels
    [WAFv2RuleGroupVisibilityConfig] $VisibilityConfig

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Priority -Value {
            $this._priority
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._priority = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Statement -Value {
            $this._statement
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Action -Value {
            $this._action
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupRuleAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._action = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RuleLabels -Value {
            $this._ruleLabels
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupLabel], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._ruleLabels = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VisibilityConfig -Value {
            $this._visibilityConfig
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupVisibilityConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._visibilityConfig = $value
        }
    }

    WAFv2RuleGroupRule() : base() {}
    WAFv2RuleGroupRule([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupRule([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupJsonBody'"

class WAFv2RuleGroupJsonBody : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupJsonBody'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-jsonbody.html'

    hidden [object] $_matchPattern
    hidden [object] $_matchScope
    hidden [object] $_invalidFallbackBehavior

    [WAFv2RuleGroupJsonMatchPattern] $MatchPattern
    [string] $MatchScope
    [string] $InvalidFallbackBehavior

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MatchPattern -Value {
            $this._matchPattern
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupJsonMatchPattern], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._matchPattern = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MatchScope -Value {
            $this._matchScope
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._matchScope = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InvalidFallbackBehavior -Value {
            $this._invalidFallbackBehavior
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._invalidFallbackBehavior = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2RuleGroupJsonBody() : base() {}
    WAFv2RuleGroupJsonBody([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupJsonBody([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLRule'"

class WAFv2WebACLRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rule.html'

    hidden [object] $_name
    hidden [object] $_priority
    hidden [object] $_statement
    hidden [object] $_action
    hidden [object] $_overrideAction
    hidden [object] $_ruleLabels
    hidden [object] $_visibilityConfig

    [string] $Name
    [int] $Priority
    [WAFv2WebACLStatement] $Statement
    [WAFv2WebACLRuleAction] $Action
    [WAFv2WebACLOverrideAction] $OverrideAction
    [WAFv2WebACLLabel[]] $RuleLabels
    [WAFv2WebACLVisibilityConfig] $VisibilityConfig

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Priority -Value {
            $this._priority
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._priority = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Statement -Value {
            $this._statement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Action -Value {
            $this._action
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLRuleAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._action = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OverrideAction -Value {
            $this._overrideAction
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLOverrideAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._overrideAction = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RuleLabels -Value {
            $this._ruleLabels
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLLabel], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._ruleLabels = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VisibilityConfig -Value {
            $this._visibilityConfig
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLVisibilityConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._visibilityConfig = $value
        }
    }

    WAFv2WebACLRule() : base() {}
    WAFv2WebACLRule([IDictionary] $props) : base($props) {}
    WAFv2WebACLRule([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupCustomResponseBody'"

class WAFv2RuleGroupCustomResponseBody : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupCustomResponseBody'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-customresponsebody.html'

    hidden [object] $_contentType
    hidden [object] $_content

    [string] $ContentType
    [string] $Content

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContentType -Value {
            $this._contentType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._contentType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Content -Value {
            $this._content
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._content = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2RuleGroupCustomResponseBody() : base() {}
    WAFv2RuleGroupCustomResponseBody([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupCustomResponseBody([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLCustomResponse'"

class WAFv2WebACLCustomResponse : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLCustomResponse'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-customresponse.html'

    hidden [object] $_responseCode
    hidden [object] $_customResponseBodyKey
    hidden [object] $_responseHeaders

    [int] $ResponseCode
    [string] $CustomResponseBodyKey
    [WAFv2WebACLCustomHTTPHeader[]] $ResponseHeaders

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponseCode -Value {
            $this._responseCode
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._responseCode = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomResponseBodyKey -Value {
            $this._customResponseBodyKey
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._customResponseBodyKey = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponseHeaders -Value {
            $this._responseHeaders
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLCustomHTTPHeader], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._responseHeaders = $value
        }
    }

    WAFv2WebACLCustomResponse() : base() {}
    WAFv2WebACLCustomResponse([IDictionary] $props) : base($props) {}
    WAFv2WebACLCustomResponse([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupLabel'"

class WAFv2RuleGroupLabel : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupLabel'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-label.html'

    hidden [object] $_name

    [string] $Name

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2RuleGroupLabel() : base() {}
    WAFv2RuleGroupLabel([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupLabel([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLRateBasedStatement'"

class WAFv2WebACLRateBasedStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLRateBasedStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatement.html'

    hidden [object] $_limit
    hidden [object] $_aggregateKeyType
    hidden [object] $_scopeDownStatement
    hidden [object] $_forwardedIPConfig

    [int] $Limit
    [string] $AggregateKeyType
    [WAFv2WebACLStatement] $ScopeDownStatement
    [WAFv2WebACLForwardedIPConfiguration] $ForwardedIPConfig

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Limit -Value {
            $this._limit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._limit = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AggregateKeyType -Value {
            $this._aggregateKeyType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._aggregateKeyType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScopeDownStatement -Value {
            $this._scopeDownStatement
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scopeDownStatement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ForwardedIPConfig -Value {
            $this._forwardedIPConfig
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLForwardedIPConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._forwardedIPConfig = $value
        }
    }

    WAFv2WebACLRateBasedStatement() : base() {}
    WAFv2WebACLRateBasedStatement([IDictionary] $props) : base($props) {}
    WAFv2WebACLRateBasedStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLExcludedRule'"

class WAFv2WebACLExcludedRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLExcludedRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-excludedrule.html'

    hidden [object] $_name

    [string] $Name

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2WebACLExcludedRule() : base() {}
    WAFv2WebACLExcludedRule([IDictionary] $props) : base($props) {}
    WAFv2WebACLExcludedRule([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLVisibilityConfig'"

class WAFv2WebACLVisibilityConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLVisibilityConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-visibilityconfig.html'

    hidden [object] $_sampledRequestsEnabled
    hidden [object] $_cloudWatchMetricsEnabled
    hidden [object] $_metricName

    [bool] $SampledRequestsEnabled
    [bool] $CloudWatchMetricsEnabled
    [string] $MetricName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SampledRequestsEnabled -Value {
            $this._sampledRequestsEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sampledRequestsEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloudWatchMetricsEnabled -Value {
            $this._cloudWatchMetricsEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cloudWatchMetricsEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricName -Value {
            $this._metricName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2WebACLVisibilityConfig() : base() {}
    WAFv2WebACLVisibilityConfig([IDictionary] $props) : base($props) {}
    WAFv2WebACLVisibilityConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLIPSetReferenceStatement'"

class WAFv2WebACLIPSetReferenceStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2WebACLIPSetReferenceStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ipsetreferencestatement.html'

    hidden [object] $_arn
    hidden [object] $_iPSetForwardedIPConfig

    [string] $Arn
    [WAFv2WebACLIPSetForwardedIPConfiguration] $IPSetForwardedIPConfig

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Arn -Value {
            $this._arn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._arn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IPSetForwardedIPConfig -Value {
            $this._iPSetForwardedIPConfig
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLIPSetForwardedIPConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iPSetForwardedIPConfig = $value
        }
    }

    WAFv2WebACLIPSetReferenceStatement() : base() {}
    WAFv2WebACLIPSetReferenceStatement([IDictionary] $props) : base($props) {}
    WAFv2WebACLIPSetReferenceStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupSqliMatchStatement'"

class WAFv2RuleGroupSqliMatchStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupSqliMatchStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sqlimatchstatement.html'

    hidden [object] $_fieldToMatch
    hidden [object] $_textTransformations

    [WAFv2RuleGroupFieldToMatch] $FieldToMatch
    [WAFv2RuleGroupTextTransformation[]] $TextTransformations

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FieldToMatch -Value {
            $this._fieldToMatch
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupFieldToMatch], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fieldToMatch = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TextTransformations -Value {
            $this._textTransformations
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupTextTransformation], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._textTransformations = $value
        }
    }

    WAFv2RuleGroupSqliMatchStatement() : base() {}
    WAFv2RuleGroupSqliMatchStatement([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupSqliMatchStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupNotStatement'"

class WAFv2RuleGroupNotStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupNotStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-notstatement.html'

    hidden [object] $_statement

    [WAFv2RuleGroupStatement] $Statement

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Statement -Value {
            $this._statement
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupStatement], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statement = $value
        }
    }

    WAFv2RuleGroupNotStatement() : base() {}
    WAFv2RuleGroupNotStatement([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupNotStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupForwardedIPConfiguration'"

class WAFv2RuleGroupForwardedIPConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupForwardedIPConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-forwardedipconfiguration.html'

    hidden [object] $_headerName
    hidden [object] $_fallbackBehavior

    [string] $HeaderName
    [string] $FallbackBehavior

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name HeaderName -Value {
            $this._headerName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._headerName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FallbackBehavior -Value {
            $this._fallbackBehavior
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fallbackBehavior = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    WAFv2RuleGroupForwardedIPConfiguration() : base() {}
    WAFv2RuleGroupForwardedIPConfiguration([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupForwardedIPConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroupSizeConstraintStatement'"

class WAFv2RuleGroupSizeConstraintStatement : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSWAFv2RuleGroupSizeConstraintStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sizeconstraintstatement.html'

    hidden [object] $_fieldToMatch
    hidden [object] $_comparisonOperator
    hidden [object] $_size
    hidden [object] $_textTransformations

    [WAFv2RuleGroupFieldToMatch] $FieldToMatch
    [string] $ComparisonOperator
    [double] $Size
    [WAFv2RuleGroupTextTransformation[]] $TextTransformations

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FieldToMatch -Value {
            $this._fieldToMatch
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupFieldToMatch], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fieldToMatch = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ComparisonOperator -Value {
            $this._comparisonOperator
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._comparisonOperator = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Size -Value {
            $this._size
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._size = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TextTransformations -Value {
            $this._textTransformations
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupTextTransformation], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._textTransformations = $value
        }
    }

    WAFv2RuleGroupSizeConstraintStatement() : base() {}
    WAFv2RuleGroupSizeConstraintStatement([IDictionary] $props) : base($props) {}
    WAFv2RuleGroupSizeConstraintStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RegexPatternSet'"

class WAFv2RegexPatternSet : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSWAFv2RegexPatternSet'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-regexpatternset.html'

    hidden [string[]] $_attributes = @('Arn','Id')
    hidden [object] $_condition

    [string] $Type = 'AWS::WAFv2::RegexPatternSet'
    [string] $Description
    [string] $Name
    [string[]] $RegularExpressionList
    [string] $Scope
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RegularExpressionList -Value {
            $this.Properties['RegularExpressionList']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['RegularExpressionList'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Scope -Value {
            $this.Properties['Scope']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Scope'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    WAFv2RegexPatternSet() : base() {}
    WAFv2RegexPatternSet([IDictionary] $props) : base($props) {}
    WAFv2RegexPatternSet([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2IPSet'"

class WAFv2IPSet : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSWAFv2IPSet'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-ipset.html'

    hidden [string[]] $_attributes = @('Arn','Id')
    hidden [object] $_condition

    [string] $Type = 'AWS::WAFv2::IPSet'
    [string] $Description
    [string] $Name
    [string] $Scope
    [string] $IPAddressVersion
    [string[]] $Addresses
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Scope -Value {
            $this.Properties['Scope']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Scope'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IPAddressVersion -Value {
            $this.Properties['IPAddressVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IPAddressVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Addresses -Value {
            $this.Properties['Addresses']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Addresses'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    WAFv2IPSet() : base() {}
    WAFv2IPSet([IDictionary] $props) : base($props) {}
    WAFv2IPSet([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACLAssociation'"

class WAFv2WebACLAssociation : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSWAFv2WebACLAssociation'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webaclassociation.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::WAFv2::WebACLAssociation'
    [string] $ResourceArn
    [string] $WebACLArn
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceArn -Value {
            $this.Properties['ResourceArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ResourceArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WebACLArn -Value {
            $this.Properties['WebACLArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['WebACLArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    WAFv2WebACLAssociation() : base() {}
    WAFv2WebACLAssociation([IDictionary] $props) : base($props) {}
    WAFv2WebACLAssociation([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2WebACL'"

class WAFv2WebACL : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSWAFv2WebACL'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html'

    hidden [string[]] $_attributes = @('Arn','Capacity','Id','LabelNamespace')
    hidden [object] $_condition

    [string] $Type = 'AWS::WAFv2::WebACL'
    [WAFv2WebACLDefaultAction] $DefaultAction
    [string] $Description
    [string] $Name
    [string] $Scope
    [WAFv2WebACLRule[]] $Rules
    [WAFv2WebACLVisibilityConfig] $VisibilityConfig
    [VSTag[]] $Tags
    [WAFv2WebACLCustomResponseBody] $CustomResponseBodies
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultAction -Value {
            $this.Properties['DefaultAction']
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLDefaultAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DefaultAction'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Scope -Value {
            $this.Properties['Scope']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Scope'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Rules -Value {
            $this.Properties['Rules']
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLRule], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Rules'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VisibilityConfig -Value {
            $this.Properties['VisibilityConfig']
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLVisibilityConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VisibilityConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomResponseBodies -Value {
            $this.Properties['CustomResponseBodies']
        } -SecondValue {
            param([ValidateType(([WAFv2WebACLCustomResponseBody], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CustomResponseBodies'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    WAFv2WebACL() : base() {}
    WAFv2WebACL([IDictionary] $props) : base($props) {}
    WAFv2WebACL([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'WAFv2RuleGroup'"

class WAFv2RuleGroup : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSWAFv2RuleGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html'

    hidden [string[]] $_attributes = @('Arn','Id','LabelNamespace','AvailableLabels','ConsumedLabels')
    hidden [object] $_condition

    [string] $Type = 'AWS::WAFv2::RuleGroup'
    [int] $Capacity
    [string] $Description
    [string] $Name
    [string] $Scope
    [WAFv2RuleGroupRule[]] $Rules
    [WAFv2RuleGroupVisibilityConfig] $VisibilityConfig
    [VSTag[]] $Tags
    [WAFv2RuleGroupCustomResponseBody] $CustomResponseBodies
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Capacity -Value {
            $this.Properties['Capacity']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Capacity'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Scope -Value {
            $this.Properties['Scope']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Scope'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Rules -Value {
            $this.Properties['Rules']
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupRule], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Rules'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VisibilityConfig -Value {
            $this.Properties['VisibilityConfig']
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupVisibilityConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VisibilityConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomResponseBodies -Value {
            $this.Properties['CustomResponseBodies']
        } -SecondValue {
            param([ValidateType(([WAFv2RuleGroupCustomResponseBody], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CustomResponseBodies'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    WAFv2RuleGroup() : base() {}
    WAFv2RuleGroup([IDictionary] $props) : base($props) {}
    WAFv2RuleGroup([psobject] $props) : base($props) {}
}