VaporShell.NetworkFirewall.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 'NetworkFirewallRuleGroupActionDefinition'"

class NetworkFirewallRuleGroupActionDefinition : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupActionDefinition'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-actiondefinition.html'

    hidden [object] $_publishMetricAction

    [NetworkFirewallRuleGroupPublishMetricAction] $PublishMetricAction

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

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupTCPFlagField'"

class NetworkFirewallRuleGroupTCPFlagField : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupTCPFlagField'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-tcpflagfield.html'

    hidden [object] $_flags
    hidden [object] $_masks

    [string[]] $Flags
    [string[]] $Masks

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Flags -Value {
            $this._flags
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._flags = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Masks -Value {
            $this._masks
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._masks = @($value)
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupDimension'"

class NetworkFirewallRuleGroupDimension : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupDimension'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-dimension.html'

    hidden [object] $_value

    [string] $Value

    hidden [void] _addAccessors() {
        $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
            }
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupStatelessRulesAndCustomActions'"

class NetworkFirewallRuleGroupStatelessRulesAndCustomActions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupStatelessRulesAndCustomActions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrulesandcustomactions.html'

    hidden [object] $_statelessRules
    hidden [object] $_customActions

    [NetworkFirewallRuleGroupStatelessRule[]] $StatelessRules
    [NetworkFirewallRuleGroupCustomAction[]] $CustomActions

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatelessRules -Value {
            $this._statelessRules
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupStatelessRule], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._statelessRules = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomActions -Value {
            $this._customActions
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupCustomAction], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._customActions = $value
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallFirewallPolicyPublishMetricAction'"

class NetworkFirewallFirewallPolicyPublishMetricAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallFirewallPolicyPublishMetricAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-publishmetricaction.html'

    hidden [object] $_dimensions

    [NetworkFirewallFirewallPolicyDimension[]] $Dimensions

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

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupRuleOption'"

class NetworkFirewallRuleGroupRuleOption : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupRuleOption'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruleoption.html'

    hidden [object] $_keyword
    hidden [object] $_settings

    [string] $Keyword
    [string[]] $Settings

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

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupRuleGroup'"

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

    hidden [object] $_ruleVariables
    hidden [object] $_rulesSource
    hidden [object] $_statefulRuleOptions

    [NetworkFirewallRuleGroupRuleVariables] $RuleVariables
    [NetworkFirewallRuleGroupRulesSource] $RulesSource
    [NetworkFirewallRuleGroupStatefulRuleOptions] $StatefulRuleOptions

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name RuleVariables -Value {
            $this._ruleVariables
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupRuleVariables], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ruleVariables = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RulesSource -Value {
            $this._rulesSource
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupRulesSource], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rulesSource = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatefulRuleOptions -Value {
            $this._statefulRuleOptions
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupStatefulRuleOptions], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statefulRuleOptions = $value
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupRulesSourceList'"

class NetworkFirewallRuleGroupRulesSourceList : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupRulesSourceList'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessourcelist.html'

    hidden [object] $_targets
    hidden [object] $_targetTypes
    hidden [object] $_generatedRulesType

    [string[]] $Targets
    [string[]] $TargetTypes
    [string] $GeneratedRulesType

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

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupPortRange'"

class NetworkFirewallRuleGroupPortRange : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupPortRange'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-portrange.html'

    hidden [object] $_fromPort
    hidden [object] $_toPort

    [int] $FromPort
    [int] $ToPort

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FromPort -Value {
            $this._fromPort
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fromPort = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ToPort -Value {
            $this._toPort
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._toPort = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupStatefulRuleOptions'"

class NetworkFirewallRuleGroupStatefulRuleOptions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupStatefulRuleOptions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statefulruleoptions.html'

    hidden [object] $_ruleOrder

    [string] $RuleOrder

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

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupPortSet'"

class NetworkFirewallRuleGroupPortSet : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupPortSet'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-portset.html'

    hidden [object] $_definition

    [string[]] $Definition

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

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupMatchAttributes'"

class NetworkFirewallRuleGroupMatchAttributes : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupMatchAttributes'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-matchattributes.html'

    hidden [object] $_sources
    hidden [object] $_destinations
    hidden [object] $_sourcePorts
    hidden [object] $_destinationPorts
    hidden [object] $_protocols
    hidden [object] $_tCPFlags

    [NetworkFirewallRuleGroupAddress[]] $Sources
    [NetworkFirewallRuleGroupAddress[]] $Destinations
    [NetworkFirewallRuleGroupPortRange[]] $SourcePorts
    [NetworkFirewallRuleGroupPortRange[]] $DestinationPorts
    [int[]] $Protocols
    [NetworkFirewallRuleGroupTCPFlagField[]] $TCPFlags

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Sources -Value {
            $this._sources
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupAddress], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._sources = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Destinations -Value {
            $this._destinations
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupAddress], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._destinations = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourcePorts -Value {
            $this._sourcePorts
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupPortRange], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._sourcePorts = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DestinationPorts -Value {
            $this._destinationPorts
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupPortRange], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._destinationPorts = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Protocols -Value {
            $this._protocols
        } -SecondValue {
            param([ValidateType(([int], [string], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._protocols = if ($cast = @($value) -as [int]) {
                $cast
            }
            else {
                @($value)
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TCPFlags -Value {
            $this._tCPFlags
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupTCPFlagField], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._tCPFlags = $value
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupRuleVariables'"

class NetworkFirewallRuleGroupRuleVariables : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupRuleVariables'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulevariables.html'

    hidden [object] $_iPSets
    hidden [object] $_portSets

    [NetworkFirewallRuleGroupIPSet] $IPSets
    [NetworkFirewallRuleGroupPortSet] $PortSets

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name IPSets -Value {
            $this._iPSets
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupIPSet], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iPSets = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PortSets -Value {
            $this._portSets
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupPortSet], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._portSets = $value
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupPublishMetricAction'"

class NetworkFirewallRuleGroupPublishMetricAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupPublishMetricAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-publishmetricaction.html'

    hidden [object] $_dimensions

    [NetworkFirewallRuleGroupDimension[]] $Dimensions

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

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupAddress'"

class NetworkFirewallRuleGroupAddress : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupAddress'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-address.html'

    hidden [object] $_addressDefinition

    [string] $AddressDefinition

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

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupStatefulRule'"

class NetworkFirewallRuleGroupStatefulRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupStatefulRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statefulrule.html'

    hidden [object] $_action
    hidden [object] $_header
    hidden [object] $_ruleOptions

    [string] $Action
    [NetworkFirewallRuleGroupHeader] $Header
    [NetworkFirewallRuleGroupRuleOption[]] $RuleOptions

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

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

Write-Verbose "Importing class 'NetworkFirewallFirewallPolicyCustomAction'"

class NetworkFirewallFirewallPolicyCustomAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallFirewallPolicyCustomAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-customaction.html'

    hidden [object] $_actionName
    hidden [object] $_actionDefinition

    [string] $ActionName
    [NetworkFirewallFirewallPolicyActionDefinition] $ActionDefinition

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

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

Write-Verbose "Importing class 'NetworkFirewallLoggingConfigurationLogDestinationConfig'"

class NetworkFirewallLoggingConfigurationLogDestinationConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallLoggingConfigurationLogDestinationConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-logdestinationconfig.html'

    hidden [object] $_logType
    hidden [object] $_logDestinationType
    hidden [object] $_logDestination

    [string] $LogType
    [string] $LogDestinationType
    [string] $LogDestination

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

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupHeader'"

class NetworkFirewallRuleGroupHeader : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupHeader'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-header.html'

    hidden [object] $_protocol
    hidden [object] $_source
    hidden [object] $_sourcePort
    hidden [object] $_direction
    hidden [object] $_destination
    hidden [object] $_destinationPort

    [string] $Protocol
    [string] $Source
    [string] $SourcePort
    [string] $Direction
    [string] $Destination
    [string] $DestinationPort

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Protocol -Value {
            $this._protocol
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._protocol = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Source -Value {
            $this._source
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._source = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourcePort -Value {
            $this._sourcePort
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sourcePort = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Direction -Value {
            $this._direction
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._direction = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Destination -Value {
            $this._destination
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._destination = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DestinationPort -Value {
            $this._destinationPort
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._destinationPort = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallFirewallPolicyStatelessRuleGroupReference'"

class NetworkFirewallFirewallPolicyStatelessRuleGroupReference : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallFirewallPolicyStatelessRuleGroupReference'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statelessrulegroupreference.html'

    hidden [object] $_resourceArn
    hidden [object] $_priority

    [string] $ResourceArn
    [int] $Priority

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceArn -Value {
            $this._resourceArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._resourceArn = 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
            }
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallFirewallPolicyStatefulRuleGroupReference'"

class NetworkFirewallFirewallPolicyStatefulRuleGroupReference : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallFirewallPolicyStatefulRuleGroupReference'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statefulrulegroupreference.html'

    hidden [object] $_resourceArn
    hidden [object] $_priority

    [string] $ResourceArn
    [int] $Priority

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceArn -Value {
            $this._resourceArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._resourceArn = 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
            }
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupRuleDefinition'"

class NetworkFirewallRuleGroupRuleDefinition : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupRuleDefinition'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruledefinition.html'

    hidden [object] $_matchAttributes
    hidden [object] $_actions

    [NetworkFirewallRuleGroupMatchAttributes] $MatchAttributes
    [string[]] $Actions

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MatchAttributes -Value {
            $this._matchAttributes
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupMatchAttributes], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._matchAttributes = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Actions -Value {
            $this._actions
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._actions = @($value)
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallFirewallPolicyActionDefinition'"

class NetworkFirewallFirewallPolicyActionDefinition : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallFirewallPolicyActionDefinition'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-actiondefinition.html'

    hidden [object] $_publishMetricAction

    [NetworkFirewallFirewallPolicyPublishMetricAction] $PublishMetricAction

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

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

Write-Verbose "Importing class 'NetworkFirewallFirewallSubnetMapping'"

class NetworkFirewallFirewallSubnetMapping : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallFirewallSubnetMapping'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewall-subnetmapping.html'

    hidden [object] $_subnetId

    [string] $SubnetId

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

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

Write-Verbose "Importing class 'NetworkFirewallFirewallPolicyDimension'"

class NetworkFirewallFirewallPolicyDimension : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallFirewallPolicyDimension'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-dimension.html'

    hidden [object] $_value

    [string] $Value

    hidden [void] _addAccessors() {
        $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
            }
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupStatelessRule'"

class NetworkFirewallRuleGroupStatelessRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupStatelessRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrule.html'

    hidden [object] $_ruleDefinition
    hidden [object] $_priority

    [NetworkFirewallRuleGroupRuleDefinition] $RuleDefinition
    [int] $Priority

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name RuleDefinition -Value {
            $this._ruleDefinition
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupRuleDefinition], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ruleDefinition = $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
            }
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallFirewallPolicyFirewallPolicy'"

class NetworkFirewallFirewallPolicyFirewallPolicy : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallFirewallPolicyFirewallPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-firewallpolicy.html'

    hidden [object] $_statelessDefaultActions
    hidden [object] $_statelessFragmentDefaultActions
    hidden [object] $_statelessCustomActions
    hidden [object] $_statelessRuleGroupReferences
    hidden [object] $_statefulRuleGroupReferences
    hidden [object] $_statefulDefaultActions
    hidden [object] $_statefulEngineOptions

    [string[]] $StatelessDefaultActions
    [string[]] $StatelessFragmentDefaultActions
    [NetworkFirewallFirewallPolicyCustomAction[]] $StatelessCustomActions
    [NetworkFirewallFirewallPolicyStatelessRuleGroupReference[]] $StatelessRuleGroupReferences
    [NetworkFirewallFirewallPolicyStatefulRuleGroupReference[]] $StatefulRuleGroupReferences
    [string[]] $StatefulDefaultActions
    [NetworkFirewallFirewallPolicyStatefulEngineOptions] $StatefulEngineOptions

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatelessDefaultActions -Value {
            $this._statelessDefaultActions
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._statelessDefaultActions = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatelessFragmentDefaultActions -Value {
            $this._statelessFragmentDefaultActions
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._statelessFragmentDefaultActions = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatelessCustomActions -Value {
            $this._statelessCustomActions
        } -SecondValue {
            param([ValidateType(([NetworkFirewallFirewallPolicyCustomAction], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._statelessCustomActions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatelessRuleGroupReferences -Value {
            $this._statelessRuleGroupReferences
        } -SecondValue {
            param([ValidateType(([NetworkFirewallFirewallPolicyStatelessRuleGroupReference], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._statelessRuleGroupReferences = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatefulRuleGroupReferences -Value {
            $this._statefulRuleGroupReferences
        } -SecondValue {
            param([ValidateType(([NetworkFirewallFirewallPolicyStatefulRuleGroupReference], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._statefulRuleGroupReferences = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatefulDefaultActions -Value {
            $this._statefulDefaultActions
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._statefulDefaultActions = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatefulEngineOptions -Value {
            $this._statefulEngineOptions
        } -SecondValue {
            param([ValidateType(([NetworkFirewallFirewallPolicyStatefulEngineOptions], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statefulEngineOptions = $value
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupIPSet'"

class NetworkFirewallRuleGroupIPSet : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupIPSet'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ipset.html'

    hidden [object] $_definition

    [string[]] $Definition

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

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

Write-Verbose "Importing class 'NetworkFirewallLoggingConfigurationLoggingConfiguration'"

class NetworkFirewallLoggingConfigurationLoggingConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallLoggingConfigurationLoggingConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-loggingconfiguration.html'

    hidden [object] $_logDestinationConfigs

    [NetworkFirewallLoggingConfigurationLogDestinationConfig[]] $LogDestinationConfigs

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

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

Write-Verbose "Importing class 'NetworkFirewallFirewallPolicyStatefulEngineOptions'"

class NetworkFirewallFirewallPolicyStatefulEngineOptions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallFirewallPolicyStatefulEngineOptions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statefulengineoptions.html'

    hidden [object] $_ruleOrder

    [string] $RuleOrder

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

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupCustomAction'"

class NetworkFirewallRuleGroupCustomAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupCustomAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-customaction.html'

    hidden [object] $_actionName
    hidden [object] $_actionDefinition

    [string] $ActionName
    [NetworkFirewallRuleGroupActionDefinition] $ActionDefinition

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

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroupRulesSource'"

class NetworkFirewallRuleGroupRulesSource : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSNetworkFirewallRuleGroupRulesSource'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessource.html'

    hidden [object] $_rulesString
    hidden [object] $_rulesSourceList
    hidden [object] $_statefulRules
    hidden [object] $_statelessRulesAndCustomActions

    [string] $RulesString
    [NetworkFirewallRuleGroupRulesSourceList] $RulesSourceList
    [NetworkFirewallRuleGroupStatefulRule[]] $StatefulRules
    [NetworkFirewallRuleGroupStatelessRulesAndCustomActions] $StatelessRulesAndCustomActions

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name RulesString -Value {
            $this._rulesString
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rulesString = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RulesSourceList -Value {
            $this._rulesSourceList
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupRulesSourceList], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rulesSourceList = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatefulRules -Value {
            $this._statefulRules
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupStatefulRule], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._statefulRules = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatelessRulesAndCustomActions -Value {
            $this._statelessRulesAndCustomActions
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupStatelessRulesAndCustomActions], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statelessRulesAndCustomActions = $value
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallFirewallPolicy'"

class NetworkFirewallFirewallPolicy : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSNetworkFirewallFirewallPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewallpolicy.html'

    hidden [string[]] $_attributes = @('FirewallPolicyArn','FirewallPolicyId')
    hidden [object] $_condition

    [string] $Type = 'AWS::NetworkFirewall::FirewallPolicy'
    [string] $FirewallPolicyName
    [NetworkFirewallFirewallPolicyFirewallPolicy] $FirewallPolicy
    [string] $Description
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name FirewallPolicyName -Value {
            $this.Properties['FirewallPolicyName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['FirewallPolicyName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FirewallPolicy -Value {
            $this.Properties['FirewallPolicy']
        } -SecondValue {
            param([ValidateType(([NetworkFirewallFirewallPolicyFirewallPolicy], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['FirewallPolicy'] = $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 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
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallFirewall'"

class NetworkFirewallFirewall : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSNetworkFirewallFirewall'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html'

    hidden [string[]] $_attributes = @('FirewallArn','FirewallId','EndpointIds')
    hidden [object] $_condition

    [string] $Type = 'AWS::NetworkFirewall::Firewall'
    [string] $FirewallName
    [string] $FirewallPolicyArn
    [string] $VpcId
    [NetworkFirewallFirewallSubnetMapping[]] $SubnetMappings
    [bool] $DeleteProtection
    [bool] $SubnetChangeProtection
    [bool] $FirewallPolicyChangeProtection
    [string] $Description
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name FirewallName -Value {
            $this.Properties['FirewallName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['FirewallName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FirewallPolicyArn -Value {
            $this.Properties['FirewallPolicyArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['FirewallPolicyArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VpcId -Value {
            $this.Properties['VpcId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VpcId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubnetMappings -Value {
            $this.Properties['SubnetMappings']
        } -SecondValue {
            param([ValidateType(([NetworkFirewallFirewallSubnetMapping], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['SubnetMappings'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeleteProtection -Value {
            $this.Properties['DeleteProtection']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DeleteProtection'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubnetChangeProtection -Value {
            $this.Properties['SubnetChangeProtection']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SubnetChangeProtection'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FirewallPolicyChangeProtection -Value {
            $this.Properties['FirewallPolicyChangeProtection']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['FirewallPolicyChangeProtection'] = $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 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
        }
    }

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

Write-Verbose "Importing class 'NetworkFirewallLoggingConfiguration'"

class NetworkFirewallLoggingConfiguration : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSNetworkFirewallLoggingConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-loggingconfiguration.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::NetworkFirewall::LoggingConfiguration'
    [string] $FirewallName
    [string] $FirewallArn
    [NetworkFirewallLoggingConfigurationLoggingConfiguration] $LoggingConfiguration
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'NetworkFirewallRuleGroup'"

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

    hidden [string[]] $_attributes = @('RuleGroupArn','RuleGroupId')
    hidden [object] $_condition

    [string] $Type = 'AWS::NetworkFirewall::RuleGroup'
    [string] $RuleGroupName
    [NetworkFirewallRuleGroupRuleGroup] $RuleGroup
    [string] $RuleGroupType
    [int] $Capacity
    [string] $Description
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name RuleGroupName -Value {
            $this.Properties['RuleGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RuleGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RuleGroup -Value {
            $this.Properties['RuleGroup']
        } -SecondValue {
            param([ValidateType(([NetworkFirewallRuleGroupRuleGroup], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RuleGroup'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RuleGroupType -Value {
            $this.Properties['RuleGroupType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RuleGroupType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $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 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
        }
    }

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