scripts/Group.ps1

# Group.ps1: This is an autogenerated file. Part of Nimble Group Management SDK. All edits to this file will be lost!
#
# © Copyright 2017 Hewlett Packard Enterprise Development LP.


function Get-NSGroup {
  # .ExternalHelp ../NimPSSDK.psm1-help.xml
  [CmdletBinding(DefaultParameterSetName='id')]
  param(
    [Parameter(ParameterSetName='id')]
    [Parameter(ParameterSetName='nonId')]
    [ValidateSet('id','name','smtp_server','smtp_port','smtp_auth_enabled','smtp_auth_username','smtp_auth_password','smtp_encrypt_type','autosupport_enabled','allow_analytics_gui','allow_support_tunnel','proxy_server','proxy_port','proxy_username','proxy_password','alert_to_email_addrs','send_alert_to_support','alert_from_email_addr','alert_min_level','isns_enabled','isns_server','isns_port','snmp_trap_enabled','snmp_trap_host','snmp_trap_port','snmp_get_enabled','snmp_community','snmp_get_port','snmp_sys_contact','snmp_sys_location','domain_name','dns_servers','ntp_server','timezone','user_inactivity_timeout','syslogd_enabled','syslogd_server','syslogd_port','syslogd_servers','vvol_enabled','iscsi_enabled','fc_enabled','unique_name_enabled','access_protocol_list','group_target_enabled','default_iscsi_target_scope','tdz_enabled','tdz_prefix','group_target_name','default_volume_reserve','default_volume_warn_level','default_volume_limit','default_snap_reserve','default_snap_warn_level','default_snap_limit','default_snap_limit_percent','alarms_enabled','vss_validation_timeout','auto_switchover_enabled','software_subscription_enabled','auto_switchover_messages','merge_state','merge_group_name','tlsv1_enabled','cc_mode_enabled','group_snapshot_ttl','autoclean_unmanaged_snapshots_ttl_unit','autoclean_unmanaged_snapshots_enabled','leader_array_name','leader_array_serial','management_service_backup_array_name','management_service_backup_status','failover_mode','witness_status','member_list','compressed_vol_usage_bytes','compressed_snap_usage_bytes','uncompressed_vol_usage_bytes','uncompressed_snap_usage_bytes','usable_capacity_bytes','usage','raw_capacity','usable_cache_capacity','raw_cache_capacity','snap_usage_populated','pending_deletes','num_connections','vol_compression_ratio','snap_compression_ratio','compression_ratio','dedupe_ratio','clone_ratio','vol_thin_provisioning_ratio','savings_ratio','data_reduction_ratio','savings_dedupe','savings_compression','savings_clone','savings_vol_thin_provisioning','savings_data_reduction','savings','free_space','unused_reserve_bytes','usage_valid','space_info_valid','version_current','version_target','version_rollback','update_state','update_start_time','update_end_time','update_array_names','update_progress_msg','update_error_code','update_downloading','update_download_error_code','update_download_start_time','update_download_end_time','iscsi_automatic_connection_method','iscsi_connection_rebalancing','repl_throttled_bandwidth','repl_throttled_bandwidth_kbps','repl_throttle_list','volume_migration_status','array_unassign_migration_status','data_rebalance_status','scsi_vendor_id','encryption_config','last_login','num_snaps','num_snapcolls','date','login_banner_message','login_banner_after_auth','login_banner_reset','snap_retn_meter_high','snap_retn_meter_very_high')]
    [string[]]$fields,

    [Parameter(ParameterSetName='id')]
    [ValidatePattern('([0-9a-f]{2})([0-9a-f]{16})([0-9a-f]{16})([0-9a-f]{8})')]
    [string] $id,

    [Parameter(ParameterSetName='nonId')]
    [string]$name,

    [Parameter(ParameterSetName='nonId')]
    [string]$smtp_server,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$smtp_port,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$smtp_auth_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$smtp_auth_username,

    [Parameter(ParameterSetName='nonId')]
    [string]$smtp_auth_password,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'starttls', 'none', 'ssl')]
    [string]$smtp_encrypt_type,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$autosupport_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$allow_analytics_gui,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$allow_support_tunnel,

    [Parameter(ParameterSetName='nonId')]
    [string]$proxy_server,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$proxy_port,

    [Parameter(ParameterSetName='nonId')]
    [string]$proxy_username,

    [Parameter(ParameterSetName='nonId')]
    [string]$proxy_password,

    [Parameter(ParameterSetName='nonId')]
    [string]$alert_to_email_addrs,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$send_alert_to_support,

    [Parameter(ParameterSetName='nonId')]
    [string]$alert_from_email_addr,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'critical', 'warning', 'info', 'notice')]
    [string]$alert_min_level,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$isns_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$isns_server,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$isns_port,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$snmp_trap_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$snmp_trap_host,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$snmp_trap_port,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$snmp_get_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$snmp_community,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$snmp_get_port,

    [Parameter(ParameterSetName='nonId')]
    [string]$snmp_sys_contact,

    [Parameter(ParameterSetName='nonId')]
    [string]$snmp_sys_location,

    [Parameter(ParameterSetName='nonId')]
    [string]$domain_name,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$dns_servers,

    [Parameter(ParameterSetName='nonId')]
    [string]$ntp_server,

    [Parameter(ParameterSetName='nonId')]
    [string]$timezone,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$user_inactivity_timeout,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$syslogd_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$syslogd_server,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$syslogd_port,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$syslogd_servers,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$vvol_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$iscsi_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$fc_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$unique_name_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$access_protocol_list,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$group_target_enabled,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'volume', 'group')]
    [string]$default_iscsi_target_scope,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$tdz_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$tdz_prefix,

    [Parameter(ParameterSetName='nonId')]
    [string]$group_target_name,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_volume_reserve,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_volume_warn_level,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_volume_limit,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_snap_reserve,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_snap_warn_level,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_snap_limit,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_snap_limit_percent,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$alarms_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$vss_validation_timeout,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$auto_switchover_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$software_subscription_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$auto_switchover_messages,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'dest_db_done', 'dest_db', 'dest_reassigned', 'src_quiesced', 'none', 'dest_relinquish', 'src_reassigned', 'dest_start', 'src_start', 'src_quiesce_failed', 'dest_merge_validation', 'src_reassign_failed', 'dest_db_failed')]
    [string]$merge_state,

    [Parameter(ParameterSetName='nonId')]
    [string]$merge_group_name,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$tlsv1_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$cc_mode_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$group_snapshot_ttl,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$autoclean_unmanaged_snapshots_ttl_unit,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$autoclean_unmanaged_snapshots_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$leader_array_name,

    [Parameter(ParameterSetName='nonId')]
    [string]$leader_array_serial,

    [Parameter(ParameterSetName='nonId')]
    [string]$management_service_backup_array_name,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'in_sync', 'remove_in_progress', 'yet_to_setup', 'unsetup_in_progress', 'setup_in_progress', 'out_of_sync', 'add_in_progress', 'setup_failed')]
    [string]$management_service_backup_status,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'Manual', 'Automatic')]
    [string]$failover_mode,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$witness_status,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$member_list,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$compressed_vol_usage_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$compressed_snap_usage_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$uncompressed_vol_usage_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$uncompressed_snap_usage_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$usable_capacity_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$usage,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$raw_capacity,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$usable_cache_capacity,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$raw_cache_capacity,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$snap_usage_populated,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$pending_deletes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$num_connections,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$vol_compression_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$snap_compression_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$compression_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$dedupe_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$clone_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$vol_thin_provisioning_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$savings_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$data_reduction_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings_dedupe,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings_compression,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings_clone,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings_vol_thin_provisioning,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings_data_reduction,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$free_space,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$unused_reserve_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$usage_valid,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$space_info_valid,

    [Parameter(ParameterSetName='nonId')]
    [string]$version_current,

    [Parameter(ParameterSetName='nonId')]
    [string]$version_target,

    [Parameter(ParameterSetName='nonId')]
    [string]$version_rollback,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'normal', 'paused', 'updating', 'invalid', 'timed_out', 'failed')]
    [string]$update_state,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$update_start_time,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$update_end_time,

    [Parameter(ParameterSetName='nonId')]
    [string]$update_array_names,

    [Parameter(ParameterSetName='nonId')]
    [string]$update_progress_msg,

    [Parameter(ParameterSetName='nonId')]
    [string]$update_error_code,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$update_downloading,

    [Parameter(ParameterSetName='nonId')]
    [string]$update_download_error_code,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$update_download_start_time,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$update_download_end_time,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$iscsi_automatic_connection_method,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$iscsi_connection_rebalancing,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$repl_throttled_bandwidth,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$repl_throttled_bandwidth_kbps,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$repl_throttle_list,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$volume_migration_status,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$array_unassign_migration_status,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$data_rebalance_status,

    [Parameter(ParameterSetName='nonId')]
    [string]$scsi_vendor_id,

    [Parameter(ParameterSetName='nonId')]
    [Object]$encryption_config,

    [Parameter(ParameterSetName='nonId')]
    [string]$last_login,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$num_snaps,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$num_snapcolls,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$date,

    [Parameter(ParameterSetName='nonId')]
    [string]$login_banner_message,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$login_banner_after_auth,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$login_banner_reset,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$snap_retn_meter_high,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$snap_retn_meter_very_high

  )

  process
  {
    $API = 'groups'
    $Param = @{
      ObjectName = 'Group'
      APIPath = 'groups'
    }

    if ($fields)
    {
        $Param.Fields = $fields
    }

    if ($id)
    {
        # Get a single object for given Id.
        $Param.Id = $id
        $ResponseObject = Get-NimbleStorageAPIObject @Param
        return $ResponseObject
    }
    else
    {
        # Get list of objects matching the given filter.
        $Param.Filter = @{}
        $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
        foreach ($key in $ParameterList.keys)
        {
            if ($key.ToLower() -ne 'fields')
            {
                $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
                if($var -and ($PSBoundParameters.ContainsKey($key)))
                {
                    $Param.Filter.Add("$($var.name)", ($var.value))
                }
            }
        }
        $ResponseObjectList = Get-NimbleStorageAPIObjectList @Param
        return $ResponseObjectList
    }
  }
}

function Set-NSGroup {
  # .ExternalHelp ../NimPSSDK.psm1-help.xml
  [CmdletBinding()]
  param(

    [Parameter(ValueFromPipeline=$True, ValueFromPipelineByPropertyName=$True, Mandatory = $True, ParameterSetName='all')]
    [string]$id,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $name,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $smtp_server,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $smtp_port,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $smtp_auth_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $smtp_auth_username,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $smtp_auth_password,

    [Parameter(ParameterSetName='all')]
    [ValidateSet( 'starttls', 'none', 'ssl')]
    [string] $smtp_encrypt_type,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $autosupport_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $allow_analytics_gui,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $allow_support_tunnel,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $proxy_server,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $proxy_port,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $proxy_username,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $proxy_password,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $alert_to_email_addrs,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $send_alert_to_support,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $alert_from_email_addr,

    [Parameter(ParameterSetName='all')]
    [ValidateSet( 'critical', 'warning', 'info', 'notice')]
    [string] $alert_min_level,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $isns_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $isns_server,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $isns_port,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $snmp_trap_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $snmp_trap_host,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $snmp_trap_port,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $snmp_get_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $snmp_community,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $snmp_get_port,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $snmp_sys_contact,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $snmp_sys_location,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $domain_name,

    [Parameter(ParameterSetName='all')]
    [Object[]] $dns_servers,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $ntp_server,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $timezone,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $user_inactivity_timeout,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $syslogd_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $syslogd_server,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $syslogd_port,

    [Parameter(ParameterSetName='all')]
    [Object[]] $syslogd_servers,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $vvol_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $iscsi_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $fc_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $unique_name_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $group_target_enabled,

    [Parameter(ParameterSetName='all')]
    [ValidateSet( 'volume', 'group')]
    [string] $default_iscsi_target_scope,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $tdz_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $tdz_prefix,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $group_target_name,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_volume_reserve,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_volume_warn_level,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_volume_limit,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_snap_reserve,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_snap_warn_level,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_snap_limit,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_snap_limit_percent,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $alarms_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $vss_validation_timeout,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $auto_switchover_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $software_subscription_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $tlsv1_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $cc_mode_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $group_snapshot_ttl,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $autoclean_unmanaged_snapshots_ttl_unit,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $autoclean_unmanaged_snapshots_enabled,

    [Parameter(ParameterSetName='all')]
    [Object[]] $repl_throttle_list,

    [Parameter(ParameterSetName='all')]
    [Object] $encryption_config,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $date,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $login_banner_message,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $login_banner_after_auth,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $login_banner_reset

  )

    process {
        # Gather request params based on user input.
        $RequestData = @{}
        $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
        foreach ($key in $ParameterList.keys)
        {
            if ($key.ToLower() -ne 'id')
            {
                $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
                if($var -and ($PSBoundParameters.ContainsKey($key)))
                {
                    $RequestData.Add("$($var.name)", ($var.value))
                }
            }
        }
        $Params = @{
            ObjectName = 'Group'
            APIPath = 'groups'
            Id = $id
            Properties = $RequestData
        }

        $ResponseObject = Set-NimbleStorageAPIObject @Params
        return $ResponseObject
    }
}


function Reset-NSGroup {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'reboot'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Stop-NSGroup {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$force

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'halt'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Test-NSGroupAlert {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [ValidateSet( 'critical', 'warning', 'info', 'notice')]
    [string]$level

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'test_alert'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Test-NSGroupSoftwareUpdate {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[long]]$skip_precheck_mask

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'software_update_precheck'
        ReturnType = 'NsSoftwareUpdateReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Start-NSGroupSoftwareUpdate {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[long]]$skip_start_check_mask

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'software_update_start'
        ReturnType = 'NsSoftwareUpdateReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Start-NSGroupSoftwareDownload {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$version,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$force

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'software_download'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Stop-NSGroupSoftwareDownload {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'software_cancel_download'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Resume-NSGroupSoftwareUpdate {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'software_update_resume'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Get-NSGroupDiscoveredList {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [AllowEmptyString()]
    [string]$group_name

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'get_group_discovered_list'
        ReturnType = 'NsDiscoveredGroupListReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Test-NSGroupMerge {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_group_name,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_group_ip,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_username,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_password,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [AllowEmptyString()]
    [string]$src_passphrase,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$skip_secondary_mgmt_ip

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'validate_merge'
        ReturnType = 'NsGroupMergeReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Merge-NSGroup {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_group_name,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_group_ip,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_username,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_password,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [AllowEmptyString()]
    [string]$src_passphrase,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$force,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$skip_secondary_mgmt_ip

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'merge'
        ReturnType = 'NsGroupMergeReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Get-NSGroupgetEULA {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [ValidateSet( 'en')]
    [string]$locale,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [ValidateSet( 'html', 'text')]
    [string]$format,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [ValidateSet( 'software', 'setup')]
    [string]$phase,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$force

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'get_eula'
        ReturnType = 'NsEulaReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Test-NSGroupMigrate {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'check_migrate'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Move-NSGroup {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'migrate'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Get-NSGroupTimeZoneList {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'get_timezone_list'
        ReturnType = 'NsTimezonesReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}


# SIG # Begin signature block
# MIIhEwYJKoZIhvcNAQcCoIIhBDCCIQACAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCLRWOjV0M9qHqS
# 63VvCYT7pyXMUofNw5Gym8PtqoCyUqCCEKwwggUqMIIEEqADAgECAhEAvNU51iSY
# 0pIemSd4RhoKzjANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJHQjEbMBkGA1UE
# CBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQK
# Ew9TZWN0aWdvIExpbWl0ZWQxJDAiBgNVBAMTG1NlY3RpZ28gUlNBIENvZGUgU2ln
# bmluZyBDQTAeFw0yMTA1MjgwMDAwMDBaFw0yMjA1MjgyMzU5NTlaMIGQMQswCQYD
# VQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTESMBAGA1UEBwwJUGFsbyBBbHRv
# MSswKQYDVQQKDCJIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBDb21wYW55MSsw
# KQYDVQQDDCJIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBDb21wYW55MIIBIjAN
# BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyo5MH8CMlPL4CA+tkPZO/A7zvMst
# 2DmdLgU7GJoMsXv8PYnYJzxb/ILnmaCIlCCimzZ7YmtuS1F0kMQLedMu0CyY92SW
# 0CCqJRMICtIE/ahCIPAHcN3dHjc/CNAezTGvMoqh3oSOGW4KbDk8buzIyVp6O4E8
# Q4SBKjo3Ly+yzBT63Oak+C7GTu7en0r50BPel7STQEaAPLEQbBJCafvCyZwHzF1l
# NzPWcnSITN7x9FIJ5H1quYnMhxWaDXY0GXZLW9UoNG0u87Emz3gBCxNrQf6y89qu
# wEF4IGDFL0l/PmHN70HXCOHWJhydRjAm7JER80NaBSqKWuDX+BPE63pQ/QIDAQAB
# o4IBkDCCAYwwHwYDVR0jBBgwFoAUDuE6qFM6MdWKvsG7rWcaA4WtNA4wHQYDVR0O
# BBYEFBLk4qaHNH/WpWNTozuiAfRQ3keeMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMB
# Af8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMBEGCWCGSAGG+EIBAQQEAwIEEDBK
# BgNVHSAEQzBBMDUGDCsGAQQBsjEBAgEDAjAlMCMGCCsGAQUFBwIBFhdodHRwczov
# L3NlY3RpZ28uY29tL0NQUzAIBgZngQwBBAEwQwYDVR0fBDwwOjA4oDagNIYyaHR0
# cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ29kZVNpZ25pbmdDQS5jcmww
# cwYIKwYBBQUHAQEEZzBlMD4GCCsGAQUFBzAChjJodHRwOi8vY3J0LnNlY3RpZ28u
# Y29tL1NlY3RpZ29SU0FDb2RlU2lnbmluZ0NBLmNydDAjBggrBgEFBQcwAYYXaHR0
# cDovL29jc3Auc2VjdGlnby5jb20wDQYJKoZIhvcNAQELBQADggEBAHrs/rf97Zyr
# AqyaXhXV58W3q38egR7o5Dxyd8cIDBunhxY1v3e4syOmVU+APjU+49XThv1EHmt1
# Tbhi/NR+ZLBKwVH6rls7WiIQXGT4idWaFFItOlC5SaW0HLbEBLpCK/gva9aZzXfs
# EbgIgzBTqxmfpdIseptvdN5F6WIoPLRMaLJH4oCm0V2E5joqYawXunj0TNWzPoah
# Otq9x+Q8cinHNOXeqFVAfsQg8DdxX/xsVGyNl/TDU59+/VFZynHWneXi8ND8I6om
# iFuzPzKpr7vMiOveAs2wjrdxnaU+4HBL4E2g2WitRi890cmUaTLQrvNM52afdDEk
# 538pYKjmCUgwggWBMIIEaaADAgECAhA5ckQ6+SK3UdfTbBDdMTWVMA0GCSqGSIb3
# DQEBDAUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNoZXN0
# ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVk
# MSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2VydmljZXMwHhcNMTkwMzEyMDAw
# MDAwWhcNMjgxMjMxMjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5l
# dyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNF
# UlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh
# dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCA
# EmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B3PHTsdZ7
# NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkYtJHUYmTb
# f6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/Fp0YvVGO
# NaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2VN3I5xI6
# Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT79uq/nRO
# acdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6c0Plfg6l
# ZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmTYo61Zs8l
# iM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97lc6wjOy0A
# vzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4eeUB9XVKg+
# /XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeEHg9j1uli
# utZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo4HyMIHvMB8GA1Ud
# IwQYMBaAFKARCiM+lvEH7OKvKe+CpX/QMKS0MB0GA1UdDgQWBBRTeb9aqitKz1SA
# 4dibwJ3ysgNmyzAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zARBgNV
# HSAECjAIMAYGBFUdIAAwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5jb21v
# ZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNAYIKwYBBQUHAQEE
# KDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZI
# hvcNAQEMBQADggEBABiHUdx0IT2ciuAntzPQLszs8ObLXhHeIm+bdY6ecv7k1v6q
# H5yWLe8DSn6u9I1vcjxDO8A/67jfXKqpxq7y/Njuo3tD9oY2fBTgzfT3P/7euLSK
# 8JGW/v1DZH79zNIBoX19+BkZyUIrE79Yi7qkomYEdoiRTgyJFM6iTckys7roFBq8
# cfFb8EELmAAKIgMQ5Qyx+c2SNxntO/HkOrb5RRMmda+7qu8/e3c70sQCkT0ZANMX
# XDnbP3sYDUXNk4WWL13fWRZPP1G91UUYP+1KjugGYXQjFrUNUHMnREd/EF2JKmuF
# MRTE6KlqTIC8anjPuH+OdnKZDJ3+15EIFqGjX5UwggX1MIID3aADAgECAhAdokgw
# b5smGNCC4JZ9M9NqMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEG
# A1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoT
# FVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBD
# ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEy
# MzU5NTlaMHwxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0
# ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDEk
# MCIGA1UEAxMbU2VjdGlnbyBSU0EgQ29kZSBTaWduaW5nIENBMIIBIjANBgkqhkiG
# 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhiKNMoV6GJ9J8JYvYwgeLdx8nxTP4ya2JWYp
# QIZURnQxYsUQ7bKHJ6aZy5UwwFb1pHXGqQ5QYqVRkRBq4Etirv3w+Bisp//uLjMg
# +gwZiahse60Aw2Gh3GllbR9uJ5bXl1GGpvQn5Xxqi5UeW2DVftcWkpwAL2j3l+1q
# cr44O2Pej79uTEFdEiAIWeg5zY/S1s8GtFcFtk6hPldrH5i8xGLWGwuNx2YbSp+d
# gcRyQLXiX+8LRf+jzhemLVWwt7C8VGqdvI1WU8bwunlQSSz3A7n+L2U18iLqLAev
# Rtn5RhzcjHxxKPP+p8YU3VWRbooRDd8GJJV9D6ehfDrahjVh0wIDAQABo4IBZDCC
# AWAwHwYDVR0jBBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFA7h
# OqhTOjHVir7Bu61nGgOFrTQOMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAG
# AQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMDBggrBgEFBQcDCDARBgNVHSAECjAI
# MAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2VydHJ1c3Qu
# Y29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsG
# AQUFBwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29t
# L1VTRVJUcnVzdFJTQUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8v
# b2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUAA4ICAQBNY1DtRzRKYaTb
# 3moqjJvxAAAeHWJ7Otcywvaz4GOz+2EAiJobbRAHBE++uOqJeCLrD0bs80ZeQEaJ
# EvQLd1qcKkE6/Nb06+f3FZUzw6GDKLfeL+SU94Uzgy1KQEi/msJPSrGPJPSzgTfT
# t2SwpiNqWWhSQl//BOvhdGV5CPWpk95rcUCZlrp48bnI4sMIFrGrY1rIFYBtdF5K
# dX6luMNstc/fSnmHXMdATWM19jDTz7UKDgsEf6BLrrujpdCEAJM+U100pQA1aWy+
# nyAlEA0Z+1CQYb45j3qOTfafDh7+B1ESZoMmGUiVzkrJwX/zOgWb+W/fiH/AI57S
# HkN6RTHBnE2p8FmyWRnoao0pBAJ3fEtLzXC+OrJVWng+vLtvAxAldxU0ivk2zEOS
# 5LpP8WKTKCVXKftRGcehJUBqhFfGsp2xvBwK2nxnfn0u6ShMGH7EezFBcZpLKewL
# PVdQ0srd/Z4FUeVEeN0B3rF1mA1UJP3wTuPi+IO9crrLPTru8F4XkmhtyGH5pvEq
# CgulufSe7pgyBYWe6/mDKdPGLH29OncuizdCoGqC7TtKqpQQpOEN+BfFtlp5MxiS
# 47V1+KHpjgolHuQe8Z9ahyP/n6RRnvs5gBHN27XEp6iAb+VT1ODjosLSWxr6MiYt
# aldwHDykWC6j81tLB9wyWfOHpxptWDGCD70wgg+5AgEBMIGRMHwxCzAJBgNVBAYT
# AkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZv
# cmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDEkMCIGA1UEAxMbU2VjdGlnbyBS
# U0EgQ29kZSBTaWduaW5nIENBAhEAvNU51iSY0pIemSd4RhoKzjANBglghkgBZQME
# AgEFAKB8MBAGCisGAQQBgjcCAQwxAjAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3
# AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3DQEJBDEi
# BCCSdAg2+KlHCdR8tVk373VIeN2cXAmtKrimw/gzgIxaXzANBgkqhkiG9w0BAQEF
# AASCAQC3ITeI3hht0I2B67fI9xT+ZLg3FULIN30ZPoLXawmxCPNjA0nX4oRyPU+T
# 4n2bBMw3bJvXAjW1kCzKP2aekxxwxG+K427Jke6s9DGUl6/LwFaZyBdaE9+VFvTh
# kEL8wC9AjiinvQe2H86SC8nBgzYZq/VEM4GTuGE9LnGw65pUvF/+RKtCTVrI/kM4
# MW8RsgQEuYnGKpjtheaWGEWKr+G1XuGttnAm4IjEbSoBksMkShAWefoqcv5xP//g
# OqQFknW4lN1dXWDtZQxLtODwdKfIF+pcEBw95N2Zr1SEUNnn4O0EM+AYASA9zkR/
# LNp/on+jHAxjZIU2ON2qqou58Q4KoYINfjCCDXoGCisGAQQBgjcDAwExgg1qMIIN
# ZgYJKoZIhvcNAQcCoIINVzCCDVMCAQMxDzANBglghkgBZQMEAgEFADB4BgsqhkiG
# 9w0BCRABBKBpBGcwZQIBAQYJYIZIAYb9bAcBMDEwDQYJYIZIAWUDBAIBBQAEILJi
# NJmIumb3Ul0pkPv0Hc/h4uUDjJR9ncMGBGRCT54kAhEA7X+IV/PX+xPCYLztGXyb
# NhgPMjAyMjAyMTEwMjA0MDhaoIIKNzCCBP4wggPmoAMCAQICEA1CSuC+Ooj/YEAh
# zhQA8N0wDQYJKoZIhvcNAQELBQAwcjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERp
# Z2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTExMC8GA1UEAxMo
# RGlnaUNlcnQgU0hBMiBBc3N1cmVkIElEIFRpbWVzdGFtcGluZyBDQTAeFw0yMTAx
# MDEwMDAwMDBaFw0zMTAxMDYwMDAwMDBaMEgxCzAJBgNVBAYTAlVTMRcwFQYDVQQK
# Ew5EaWdpQ2VydCwgSW5jLjEgMB4GA1UEAxMXRGlnaUNlcnQgVGltZXN0YW1wIDIw
# MjEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDC5mGEZ8WK9Q0IpEXK
# Y2tR1zoRQr0KdXVNlLQMULUmEP4dyG+RawyW5xpcSO9E5b+bYc0VkWJauP9nC5xj
# /TZqgfop+N0rcIXeAhjzeG28ffnHbQk9vmp2h+mKvfiEXR52yeTGdnY6U9HR01o2
# j8aj4S8bOrdh1nPsTm0zinxdRS1LsVDmQTo3VobckyON91Al6GTm3dOPL1e1hyDr
# Do4s1SPa9E14RuMDgzEpSlwMMYpKjIjF9zBa+RSvFV9sQ0kJ/SYjU/aNY+gaq1ux
# HTDCm2mCtNv8VlS8H6GHq756WwogL0sJyZWnjbL61mOLTqVyHO6fegFz+BnW/g1J
# hL0BAgMBAAGjggG4MIIBtDAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADAW
# BgNVHSUBAf8EDDAKBggrBgEFBQcDCDBBBgNVHSAEOjA4MDYGCWCGSAGG/WwHATAp
# MCcGCCsGAQUFBwIBFhtodHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwHwYDVR0j
# BBgwFoAU9LbhIB3+Ka7S5GGlsqIlssgXNW4wHQYDVR0OBBYEFDZEho6kurBmvrwo
# LR1ENt3janq8MHEGA1UdHwRqMGgwMqAwoC6GLGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0
# LmNvbS9zaGEyLWFzc3VyZWQtdHMuY3JsMDKgMKAuhixodHRwOi8vY3JsNC5kaWdp
# Y2VydC5jb20vc2hhMi1hc3N1cmVkLXRzLmNybDCBhQYIKwYBBQUHAQEEeTB3MCQG
# CCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTwYIKwYBBQUHMAKG
# Q2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVk
# SURUaW1lc3RhbXBpbmdDQS5jcnQwDQYJKoZIhvcNAQELBQADggEBAEgc3LXpmiO8
# 5xrnIA6OZ0b9QnJRdAojR6OrktIlxHBZvhSg5SeBpU0UFRkHefDRBMOG2Tu9/kQC
# Zk3taaQP9rhwz2Lo9VFKeHk2eie38+dSn5On7UOee+e03UEiifuHokYDTvz0/rdk
# d2NfI1Jpg4L6GlPtkMyNoRdzDfTzZTlwS/Oc1np72gy8PTLQG8v1Yfx1CAB2vIEO
# +MDhXM/EEXLnG2RJ2CKadRVC9S0yOIHa9GCiurRS+1zgYSQlT7LfySmoc0NR2r1j
# 1h9bm/cuG08THfdKDXF+l7f0P4TrweOjSaH6zqe/Vs+6WXZhiV9+p7SOZ3j5Npjh
# yyjaW4emii8wggUxMIIEGaADAgECAhAKoSXW1jIbfkHkBdo2l8IVMA0GCSqGSIb3
# DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAX
# BgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNVBAMTG0RpZ2lDZXJ0IEFzc3Vy
# ZWQgSUQgUm9vdCBDQTAeFw0xNjAxMDcxMjAwMDBaFw0zMTAxMDcxMjAwMDBaMHIx
# CzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
# dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJ
# RCBUaW1lc3RhbXBpbmcgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
# AQC90DLuS82Pf92puoKZxTlUKFe2I0rEDgdFM1EQfdD5fU1ofue2oPSNs4jkl79j
# IZCYvxO8V9PD4X4I1moUADj3Lh477sym9jJZ/l9lP+Cb6+NGRwYaVX4LJ37AovWg
# 4N4iPw7/fpX786O6Ij4YrBHk8JkDbTuFfAnT7l3ImgtU46gJcWvgzyIQD3XPcXJO
# Cq3fQDpct1HhoXkUxk0kIzBdvOw8YGqsLwfM/fDqR9mIUF79Zm5WYScpiYRR5oLn
# RlD9lCosp+R1PrqYD4R/nzEU1q3V8mTLex4F0IQZchfxFwbvPc3WTe8GQv2iUypP
# hR3EHTyvz9qsEPXdrKzpVv+TAgMBAAGjggHOMIIByjAdBgNVHQ4EFgQU9LbhIB3+
# Ka7S5GGlsqIlssgXNW4wHwYDVR0jBBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8w
# EgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYI
# KwYBBQUHAwgweQYIKwYBBQUHAQEEbTBrMCQGCCsGAQUFBzABhhhodHRwOi8vb2Nz
# cC5kaWdpY2VydC5jb20wQwYIKwYBBQUHMAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2lj
# ZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgw
# OqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ
# RFJvb3RDQS5jcmwwOqA4oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdp
# Q2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwUAYDVR0gBEkwRzA4BgpghkgBhv1sAAIE
# MCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCwYJ
# YIZIAYb9bAcBMA0GCSqGSIb3DQEBCwUAA4IBAQBxlRLpUYdWac3v3dp8qmN6s3jP
# BjdAhO9LhL/KzwMC/cWnww4gQiyvd/MrHwwhWiq3BTQdaq6Z+CeiZr8JqmDfdqQ6
# kw/4stHYfBli6F6CJR7Euhx7LCHi1lssFDVDBGiy23UC4HLHmNY8ZOUfSBAYX4k4
# YU1iRiSHY4yRUiyvKYnleB/WCxSlgNcSR3CzddWThZN+tpJn+1Nhiaj1a5bA9Fhp
# DXzIAbG5KHW3mWOFIoxhynmUfln8jA/jb7UBJrZspe6HUSHkWGCbugwtK22ixH67
# xCUrRwIIfEmuE7bhfEJCKMYYVs9BNLZmXbZ0e/VWMyIvIjayS6JKldj1po5SMYIC
# hjCCAoICAQEwgYYwcjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IElu
# YzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTExMC8GA1UEAxMoRGlnaUNlcnQg
# U0hBMiBBc3N1cmVkIElEIFRpbWVzdGFtcGluZyBDQQIQDUJK4L46iP9gQCHOFADw
# 3TANBglghkgBZQMEAgEFAKCB0TAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQw
# HAYJKoZIhvcNAQkFMQ8XDTIyMDIxMTAyMDQwOFowKwYLKoZIhvcNAQkQAgwxHDAa
# MBgwFgQU4deCqOGRvu9ryhaRtaq0lKYkm/MwLwYJKoZIhvcNAQkEMSIEIJlgVq+U
# 11zfy/CX5mlM1HY6YRCtyngvbRsgr6smUseZMDcGCyqGSIb3DQEJEAIvMSgwJjAk
# MCIEILMQkAa8CtmDB5FXKeBEA0Fcg+MpK2FPJpZMjTVx7PWpMA0GCSqGSIb3DQEB
# AQUABIIBAGLQZ4LTu32rveoNmHE6D6nkHC9BdtTZJc2lLmHfG20FXd1v35DJEPW0
# e0U1ezb+TrNP0EnYlErytWoaJ6gJwUexkG2H1N37h5UPkospVZyRM9k2ESvqF5/W
# zBL7tZp85REY2N0QGxJN2mJQOJi16j5OZiQ62KaYh3y0+Q2bPq6cp3tbU8hSG+pC
# pwtR1TcvcxeUqWVN6Ac8t89CRtAxNn2yx75VOH9j6Ajigi6cPft6V9s3qxDZT0LD
# g3YWeAyb7hEq2U+vMHQ326TwHF7c1TQmsyy231PjOnRzgqKoYEDiiYx0zmACxm/w
# SC3Tp67WZIINdgO28qNwjJuvPOAQwEo=
# SIG # End signature block