VaporShell.Backup.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 'BackupBackupPlanCopyActionResourceType'"

class BackupBackupPlanCopyActionResourceType : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBackupBackupPlanCopyActionResourceType'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-copyactionresourcetype.html'

    hidden [object] $_lifecycle
    hidden [object] $_destinationBackupVaultArn

    [BackupBackupPlanLifecycleResourceType] $Lifecycle
    [string] $DestinationBackupVaultArn

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

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

Write-Verbose "Importing class 'BackupFrameworkFrameworkControl'"

class BackupFrameworkFrameworkControl : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBackupFrameworkFrameworkControl'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-framework-frameworkcontrol.html'

    hidden [object] $_controlName
    hidden [object] $_controlInputParameters
    hidden [VSJson] $_controlScope

    [string] $ControlName
    [BackupFrameworkControlInputParameter[]] $ControlInputParameters
    [VSJson] $ControlScope

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ControlName -Value {
            $this._controlName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._controlName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ControlInputParameters -Value {
            $this._controlInputParameters
        } -SecondValue {
            param([ValidateType(([BackupFrameworkControlInputParameter], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._controlInputParameters = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ControlScope -Value {
            $this._controlScope
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._controlScope = [VSJson]::Transform($value)
            Write-Debug $this._controlScope
        }
    }

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

Write-Verbose "Importing class 'BackupBackupSelectionConditionResourceType'"

class BackupBackupSelectionConditionResourceType : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBackupBackupSelectionConditionResourceType'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupselection-conditionresourcetype.html'

    hidden [object] $_conditionKey
    hidden [object] $_conditionValue
    hidden [object] $_conditionType

    [string] $ConditionKey
    [string] $ConditionValue
    [string] $ConditionType

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

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

Write-Verbose "Importing class 'BackupBackupVaultNotificationObjectType'"

class BackupBackupVaultNotificationObjectType : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBackupBackupVaultNotificationObjectType'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupvault-notificationobjecttype.html'

    hidden [object] $_backupVaultEvents
    hidden [object] $_sNSTopicArn

    [string[]] $BackupVaultEvents
    [string] $SNSTopicArn

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

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

Write-Verbose "Importing class 'BackupBackupPlanAdvancedBackupSettingResourceType'"

class BackupBackupPlanAdvancedBackupSettingResourceType : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBackupBackupPlanAdvancedBackupSettingResourceType'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-advancedbackupsettingresourcetype.html'

    hidden [VSJson] $_backupOptions
    hidden [object] $_resourceType

    [VSJson] $BackupOptions
    [string] $ResourceType

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name BackupOptions -Value {
            $this._backupOptions
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._backupOptions = [VSJson]::Transform($value)
            Write-Debug $this._backupOptions
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceType -Value {
            $this._resourceType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._resourceType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'BackupBackupPlanLifecycleResourceType'"

class BackupBackupPlanLifecycleResourceType : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBackupBackupPlanLifecycleResourceType'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-lifecycleresourcetype.html'

    hidden [object] $_moveToColdStorageAfterDays
    hidden [object] $_deleteAfterDays

    [double] $MoveToColdStorageAfterDays
    [double] $DeleteAfterDays

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MoveToColdStorageAfterDays -Value {
            $this._moveToColdStorageAfterDays
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._moveToColdStorageAfterDays = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeleteAfterDays -Value {
            $this._deleteAfterDays
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deleteAfterDays = $value
        }
    }

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

Write-Verbose "Importing class 'BackupBackupSelectionBackupSelectionResourceType'"

class BackupBackupSelectionBackupSelectionResourceType : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBackupBackupSelectionBackupSelectionResourceType'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupselection-backupselectionresourcetype.html'

    hidden [object] $_iamRoleArn
    hidden [object] $_listOfTags
    hidden [object] $_resources
    hidden [object] $_selectionName
    hidden [object] $_notResources
    hidden [VSJson] $_conditions

    [string] $IamRoleArn
    [BackupBackupSelectionConditionResourceType[]] $ListOfTags
    [string[]] $Resources
    [string] $SelectionName
    [string[]] $NotResources
    [VSJson] $Conditions

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name IamRoleArn -Value {
            $this._iamRoleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iamRoleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ListOfTags -Value {
            $this._listOfTags
        } -SecondValue {
            param([ValidateType(([BackupBackupSelectionConditionResourceType], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._listOfTags = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Resources -Value {
            $this._resources
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._resources = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SelectionName -Value {
            $this._selectionName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._selectionName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NotResources -Value {
            $this._notResources
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._notResources = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Conditions -Value {
            $this._conditions
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._conditions = [VSJson]::Transform($value)
            Write-Debug $this._conditions
        }
    }

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

Write-Verbose "Importing class 'BackupBackupPlanBackupPlanResourceType'"

class BackupBackupPlanBackupPlanResourceType : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBackupBackupPlanBackupPlanResourceType'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupplanresourcetype.html'

    hidden [object] $_backupPlanName
    hidden [object] $_advancedBackupSettings
    hidden [object] $_backupPlanRule

    [string] $BackupPlanName
    [BackupBackupPlanAdvancedBackupSettingResourceType[]] $AdvancedBackupSettings
    [BackupBackupPlanBackupRuleResourceType[]] $BackupPlanRule

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

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

Write-Verbose "Importing class 'BackupBackupVaultLockConfigurationType'"

class BackupBackupVaultLockConfigurationType : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBackupBackupVaultLockConfigurationType'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupvault-lockconfigurationtype.html'

    hidden [object] $_minRetentionDays
    hidden [object] $_maxRetentionDays
    hidden [object] $_changeableForDays

    [double] $MinRetentionDays
    [double] $MaxRetentionDays
    [double] $ChangeableForDays

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinRetentionDays -Value {
            $this._minRetentionDays
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._minRetentionDays = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxRetentionDays -Value {
            $this._maxRetentionDays
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxRetentionDays = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ChangeableForDays -Value {
            $this._changeableForDays
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._changeableForDays = $value
        }
    }

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

Write-Verbose "Importing class 'BackupBackupPlanBackupRuleResourceType'"

class BackupBackupPlanBackupRuleResourceType : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBackupBackupPlanBackupRuleResourceType'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupruleresourcetype.html'

    hidden [object] $_ruleName
    hidden [object] $_targetBackupVault
    hidden [object] $_startWindowMinutes
    hidden [object] $_completionWindowMinutes
    hidden [object] $_scheduleExpression
    hidden [object] $_recoveryPointTags
    hidden [object] $_copyActions
    hidden [object] $_lifecycle
    hidden [object] $_enableContinuousBackup

    [string] $RuleName
    [string] $TargetBackupVault
    [double] $StartWindowMinutes
    [double] $CompletionWindowMinutes
    [string] $ScheduleExpression
    [string] $RecoveryPointTags
    [BackupBackupPlanCopyActionResourceType[]] $CopyActions
    [BackupBackupPlanLifecycleResourceType] $Lifecycle
    [bool] $EnableContinuousBackup

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name RuleName -Value {
            $this._ruleName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ruleName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetBackupVault -Value {
            $this._targetBackupVault
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetBackupVault = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StartWindowMinutes -Value {
            $this._startWindowMinutes
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._startWindowMinutes = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CompletionWindowMinutes -Value {
            $this._completionWindowMinutes
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._completionWindowMinutes = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScheduleExpression -Value {
            $this._scheduleExpression
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scheduleExpression = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RecoveryPointTags -Value {
            $this._recoveryPointTags
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._recoveryPointTags = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CopyActions -Value {
            $this._copyActions
        } -SecondValue {
            param([ValidateType(([BackupBackupPlanCopyActionResourceType], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._copyActions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Lifecycle -Value {
            $this._lifecycle
        } -SecondValue {
            param([ValidateType(([BackupBackupPlanLifecycleResourceType], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._lifecycle = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnableContinuousBackup -Value {
            $this._enableContinuousBackup
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enableContinuousBackup = $value
        }
    }

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

Write-Verbose "Importing class 'BackupFrameworkControlInputParameter'"

class BackupFrameworkControlInputParameter : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSBackupFrameworkControlInputParameter'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-framework-controlinputparameter.html'

    hidden [object] $_parameterName
    hidden [object] $_parameterValue

    [string] $ParameterName
    [string] $ParameterValue

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

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

Write-Verbose "Importing class 'BackupBackupPlan'"

class BackupBackupPlan : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSBackupBackupPlan'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-backup-backupplan.html'

    hidden [string[]] $_attributes = @('BackupPlanArn','BackupPlanId','VersionId')
    hidden [object] $_condition

    [string] $Type = 'AWS::Backup::BackupPlan'
    [BackupBackupPlanBackupPlanResourceType] $BackupPlan
    [string] $BackupPlanTags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'BackupFramework'"

class BackupFramework : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSBackupFramework'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-backup-framework.html'

    hidden [string[]] $_attributes = @('FrameworkArn','DeploymentStatus','CreationTime','FrameworkStatus')
    hidden [object] $_condition

    [string] $Type = 'AWS::Backup::Framework'
    [string] $FrameworkName
    [string] $FrameworkDescription
    [BackupFrameworkFrameworkControl[]] $FrameworkControls
    [VSTag[]] $FrameworkTags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name FrameworkName -Value {
            $this.Properties['FrameworkName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['FrameworkName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FrameworkDescription -Value {
            $this.Properties['FrameworkDescription']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['FrameworkDescription'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FrameworkControls -Value {
            $this.Properties['FrameworkControls']
        } -SecondValue {
            param([ValidateType(([BackupFrameworkFrameworkControl], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['FrameworkControls'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FrameworkTags -Value {
            $this.Properties['FrameworkTags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['FrameworkTags'] = [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
        }
    }

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

Write-Verbose "Importing class 'BackupBackupVault'"

class BackupBackupVault : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSBackupBackupVault'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-backup-backupvault.html'

    hidden [string[]] $_attributes = @('BackupVaultName','BackupVaultArn')
    hidden [object] $_condition

    [string] $Type = 'AWS::Backup::BackupVault'
    [VSJson] $AccessPolicy
    [string] $BackupVaultName
    [string] $BackupVaultTags
    [string] $EncryptionKeyArn
    [BackupBackupVaultNotificationObjectType] $Notifications
    [BackupBackupVaultLockConfigurationType] $LockConfiguration
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessPolicy -Value {
            $this.Properties['AccessPolicy']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['AccessPolicy'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['AccessPolicy']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BackupVaultName -Value {
            $this.Properties['BackupVaultName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['BackupVaultName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BackupVaultTags -Value {
            $this.Properties['BackupVaultTags']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['BackupVaultTags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EncryptionKeyArn -Value {
            $this.Properties['EncryptionKeyArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EncryptionKeyArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Notifications -Value {
            $this.Properties['Notifications']
        } -SecondValue {
            param([ValidateType(([BackupBackupVaultNotificationObjectType], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Notifications'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LockConfiguration -Value {
            $this.Properties['LockConfiguration']
        } -SecondValue {
            param([ValidateType(([BackupBackupVaultLockConfigurationType], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LockConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'BackupReportPlan'"

class BackupReportPlan : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSBackupReportPlan'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-backup-reportplan.html'

    hidden [string[]] $_attributes = @('ReportPlanArn')
    hidden [object] $_condition

    [string] $Type = 'AWS::Backup::ReportPlan'
    [string] $ReportPlanName
    [string] $ReportPlanDescription
    [VSTag[]] $ReportPlanTags
    [VSJson] $ReportDeliveryChannel
    [VSJson] $ReportSetting
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReportPlanName -Value {
            $this.Properties['ReportPlanName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ReportPlanName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReportPlanDescription -Value {
            $this.Properties['ReportPlanDescription']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ReportPlanDescription'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReportPlanTags -Value {
            $this.Properties['ReportPlanTags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['ReportPlanTags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReportDeliveryChannel -Value {
            $this.Properties['ReportDeliveryChannel']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['ReportDeliveryChannel'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['ReportDeliveryChannel']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReportSetting -Value {
            $this.Properties['ReportSetting']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['ReportSetting'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['ReportSetting']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'BackupBackupSelection'"

class BackupBackupSelection : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSBackupBackupSelection'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-backup-backupselection.html'

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

    [string] $Type = 'AWS::Backup::BackupSelection'
    [string] $BackupPlanId
    [BackupBackupSelectionBackupSelectionResourceType] $BackupSelection
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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