HP.Firmware.Defs.psm1

#
# Copyright 2018-2022 HP Development Company, L.P.
# All Rights Reserved.
#
# NOTICE: All information contained herein is, and remains the property of HP Development Company, L.P.
#
# The intellectual and technical concepts contained herein are proprietary to HP Development Company, L.P
# and may be covered by U.S. and Foreign Patents, patents in process, and are protected by
# trade secret or copyright law. Dissemination of this information or reproduction of this material
# is strictly forbidden unless prior written permission is obtained from HP Development Company, L.P.


Set-StrictMode -Version 3.0
$env:PATH += ";$PSScriptRoot"
Add-Type -TypeDefinition @'
    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;
 
// HP SUREVIEW
public enum sureview_status_t : byte {
    sureview_off = 0xff,
    sureview_on = 0xfe,
    sureview_forced_on = 0xfc,
    sureview_unsupported = 0xfa,
    sureview_unknown = 0
};
 
[Flags]
public enum sureview_capabilities_t : byte{
    touch_ui = 0x01
};
 
 
public enum sureview_desired_state_t : byte {
    sureview_desired_off = 0,
    sureview_desired_on = 1,
    sureview_desired_on_max = 2
} ;
 
 
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct sureview_state_t
{
     [MarshalAs(UnmanagedType.U1)] public sureview_status_t status; // of type sureview_status_t
     [MarshalAs(UnmanagedType.U1)] public byte visibility;
     [MarshalAs(UnmanagedType.U1)] public sureview_capabilities_t capabilities; // of type sureview_capabilities_t
};
 
 
public static class DfmNativeSureView
{
    [DllImport("dfmbios32.dll", EntryPoint = "get_sureview_state", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int get_sureview_state32([In,Out] ref sureview_state_t data, [In,Out] ref int extended_result);
    [DllImport("dfmbios64.dll", EntryPoint = "get_sureview_state", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int get_sureview_state64([In,Out] ref sureview_state_t data, [In,Out] ref int extended_result);
 
    [DllImport("dfmbios32.dll", EntryPoint = "set_sureview_state", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_sureview_state32([In] sureview_desired_state_t on, [In] byte visibility, [In,Out] ref int extended_result);
    [DllImport("dfmbios64.dll", EntryPoint = "set_sureview_state", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_sureview_state64([In] sureview_desired_state_t on, [In] byte visibility, [In,Out] ref int extended_result);
 }
 
// GENERAL FIRMWARE
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct opaque4096_t
{
        [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = 4096)] public byte[] raw;
};
 
public enum authentication_t : uint
{
    auth_t_anonymous = 0,
    auth_t_password = 1,
    auth_t_beam = 2
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 1)]
public struct authentication_data_t {
    [MarshalAs(UnmanagedType.U2)] public ushort password_size;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string password;
 
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct bios_credential_t
{
    [MarshalAs(UnmanagedType.U4)] public authentication_t authentication;
    [MarshalAs(UnmanagedType.Struct)] public authentication_data_t data;
}
 
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
public delegate void ProgressCallback(UInt32 location, UInt32 value1, UInt32 value2, UInt32 state);
 
 
 // AUDIT LOG and LOGO
 
   public enum audit_log_severity_t : uint
    {
        logged_severity_reserved = 0,
        logged_severity_unknown = 1,
        logged_severity_normal = 2,
        logged_severity_low = 3,
        logged_severity_medium = 4,
        logged_severity_high = 5,
        logged_severity_critical = 6,
    }
 
 
    public enum powerstate_t : uint
    {
        S0 = 0,
        S3 = 1,
        S4S5 = 2,
        RESERVED = 3
    }
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct timestamp_t
    {
        public Int16 year;
        public Int16 month;
        public Int16 day_of_week;
        public Int16 day;
        public Int16 hour;
        public Int16 minute;
        public Int16 second;
        public Int16 millisecond;
    }
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct bios_log_entry_t
    {
        [MarshalAs(UnmanagedType.U1)] public byte status;
        [MarshalAs(UnmanagedType.U4)] public UInt32 message_number;
        [MarshalAs(UnmanagedType.Struct)] public timestamp_t timestamp;
        [MarshalAs(UnmanagedType.U4)] public UInt32 timestamp_is_exact;
        [MarshalAs(UnmanagedType.U4)] public powerstate_t system_state_at_event;
        [MarshalAs(UnmanagedType.U4)] public UInt32 source_id;
        [MarshalAs(UnmanagedType.U4)] public UInt32 event_id;
        [MarshalAs(UnmanagedType.U4)] public audit_log_severity_t severity;
        [MarshalAs(UnmanagedType.U1)] public byte data_0;
        [MarshalAs(UnmanagedType.U1)] public byte data_1;
        [MarshalAs(UnmanagedType.U1)] public byte data_2;
        [MarshalAs(UnmanagedType.U1)] public byte data_3;
        [MarshalAs(UnmanagedType.U1)] public byte data_4;
    }
 
    public static class DfmNativeBios
    {
        [DllImport("dfmbios32.dll", EntryPoint = "get_audit_logs", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern UInt32 get_audit_logs_32([Out] bios_log_entry_t[] results, [In,Out] ref UInt32 buffer_size, [In,Out] ref UInt32 records_count, [Out] out UInt32 extended_result);
        [DllImport("dfmbios64.dll", EntryPoint = "get_audit_logs", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern UInt32 get_audit_logs_64([Out] bios_log_entry_t[] results, [In,Out] ref UInt32 buffer_size, [In,Out] ref UInt32 records_count, [Out] out UInt32 extended_result);
        [DllImport("dfmbios32.dll", EntryPoint = "query_enterprise_logo", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern Int32 query_enterprise_logo32([Out] out UInt32 installed, [Out] out UInt32 state, [Out] out UInt32 extended_result);
        [DllImport("dfmbios64.dll", EntryPoint = "query_enterprise_logo", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern Int32 query_enterprise_logo64([Out] out UInt32 installed, [Out] out UInt32 state, [Out] out UInt32 extended_result);
        [DllImport("dfmbios32.dll", EntryPoint = "set_enterprise_logo", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern Int32 set_enterprise_logo32([In] string filename, [In] ref bios_credential_t credentials, [Out] out UInt32 extended_result);
        [DllImport("dfmbios64.dll", EntryPoint = "set_enterprise_logo", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern Int32 set_enterprise_logo64([In] string filename, [In] ref bios_credential_t credentials, [Out] out UInt32 extended_result);
 
 
        [DllImport("dfmbios32.dll", EntryPoint = "clear_enterprise_logo", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern Int32 clear_enterprise_logo32([In] ref bios_credential_t credentials, [Out] out UInt32 extended_result);
        [DllImport("dfmbios64.dll", EntryPoint = "clear_enterprise_logo", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern Int32 clear_enterprise_logo64([In] ref bios_credential_t credentials, [Out] out UInt32 extended_result);
 
        [DllImport("dfmbios64.dll", EntryPoint = "flash_hp_device", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern Int32 flash_hp_device64([In] string firmware_file, [In] ref bios_credential_t credentials, [Out] out UInt32 mi_result, [MarshalAs(UnmanagedType.FunctionPtr)] ProgressCallback callback, [In] string filename_hint, [In] string efi_path, [In] byte[] authorization, [In] UInt32 auth_len, [In] bool delayed, [In] bool no_wait);
        [DllImport("dfmbios32.dll", EntryPoint = "flash_hp_device", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern Int32 flash_hp_device32([In] string firmware_file, [In] ref bios_credential_t credentials, [Out] out UInt32 mi_result,[MarshalAs(UnmanagedType.FunctionPtr)] ProgressCallback callback, [In] string filename_hint, [In] string efi_path, [In] byte[] authorization, [In] UInt32 auth_len, [In] bool delayed, [In] bool no_wait);
 
        [DllImport("dfmbios64.dll", EntryPoint = "online_flash_supported", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern Int32 online_flash_supported64([Out] out UInt32 mi_result);
        [DllImport("dfmbios32.dll", EntryPoint = "online_flash_supported", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern Int32 online_flash_supported32([Out] out UInt32 mi_result);
 
        [DllImport("dfmbios64.dll", EntryPoint = "write_authorization_to_file", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern Int32 write_authorization_to_file64([In] byte[] authorization, [In] UInt32 auth_len, [In] string efi_path);
        [DllImport("dfmbios32.dll", EntryPoint = "write_authorization_to_file", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern Int32 write_authorization_to_file32([In] byte[] authorization, [In] UInt32 auth_len, [In] string efi_path);
 
        [DllImport("dfmbios32.dll", EntryPoint = "get_flash_file_information", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern UInt32 get_flash_file_information32([In] string firmware_file, [Out] out UInt32 is_capsule, [Out] out UInt32 is_for_current_platform);
        [DllImport("dfmbios64.dll", EntryPoint = "get_flash_file_information", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern UInt32 get_flash_file_information64([In] string firmware_file, [Out] out UInt32 is_capsule, [Out] out UInt32 is_for_current_platform);
 
        [DllImport("dfmbios32.dll", EntryPoint = "encrypt_password_to_file", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern UInt32 encrypt_password_to_file32([In] ref bios_credential_t credentials, [In] string firmware_file);
        [DllImport("dfmbios64.dll", EntryPoint = "encrypt_password_to_file", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern UInt32 encrypt_password_to_file64([In] ref bios_credential_t credentials, [In] string firmware_file);
     }
 
// HP SECURE PLATFORM
 
  public enum provisioning_state_t : byte
    {
        NotConfigured = 0,
        Provisioned = 1,
        ProvisioningInProgress = 2
    };
 
    [Flags]
    public enum secureplatform_features_t : uint
    {
    None = 0,
        SureRun = 1,
        SureRecover = 2,
        Auth = 3,
        SureAdmin = 4
    };
 
  public struct PortableFileFormat {
    public DateTime timestamp;
    public string purpose;
        public byte[] Data;
        public byte[] Meta1;
        public byte[] Meta2;
        public byte[] Meta3;
        public byte[] Meta4;
  };
 
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct provisioning_data_t
    {
        [MarshalAs(UnmanagedType.U1)] public provisioning_state_t state;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst=2)] public byte[] subsystem_version; // major minor
        [MarshalAs(UnmanagedType.U2)] public ushort reserved;
        [MarshalAs(UnmanagedType.U4)] public secureplatform_features_t features_in_use;
        [MarshalAs(UnmanagedType.U4)] public UInt32 arp_counter;
        [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = 256)] public byte[] kek_mod;
        [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = 256)] public byte[] sk_mod;
    };
 
  [StructLayout(LayoutKind.Sequential, Pack = 1)]
  public struct sk_provisioning_payload_t {
        [MarshalAs(UnmanagedType.U4)] public uint counter;
        [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = 256)] public byte[] mod;
      } ;
 
 
 
    public static class DfmNativeSecurePlatform
    {
        [DllImport("dfmbios32.dll", EntryPoint = "sp_get_provisioning", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern int get_secureplatform_provisioning32([In,Out] ref provisioning_data_t data, [In,Out] ref int extended_result);
        [DllImport("dfmbios64.dll", EntryPoint = "sp_get_provisioning", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern int get_secureplatform_provisioning64([In,Out] ref provisioning_data_t data, [In,Out] ref int extended_result);
 
        [DllImport("dfmbios32.dll", EntryPoint = "sp_get_ek_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern int get_ek_provisioning_data32([In] byte[] key, [In] int key_length, [In] string password, [In] int password_length, [In,Out] ref opaque4096_t data, [In,Out] ref int data_len, [In,Out] ref int extended_result);
        [DllImport("dfmbios64.dll", EntryPoint = "sp_get_ek_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern int get_ek_provisioning_data64([In] byte[] key, [In] int key_length, [In] string password, [In] int password_length, [In,Out] ref opaque4096_t data, [In,Out] ref int data_len, [In,Out] ref int extended_result);
 
        [DllImport("dfmbios32.dll", EntryPoint = "sp_set_ek_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern int set_ek_provisioning32([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
        [DllImport("dfmbios64.dll", EntryPoint = "sp_set_ek_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern int set_ek_provisioning64([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
 
        [DllImport("dfmbios32.dll", EntryPoint = "sp_set_sk_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern int set_sk_provisioning32([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
        [DllImport("dfmbios64.dll", EntryPoint = "sp_set_sk_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        public static extern int set_sk_provisioning64([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
    };
 
    // HP SureRecover
 
  [StructLayout(LayoutKind.Sequential, Pack = 1)]
  public struct sk_provisioning_t {
    [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = 256)] public byte[] sig;
      public sk_provisioning_payload_t data;
  };
 
  [StructLayout(LayoutKind.Sequential, Pack = 1)]
  public struct surerecover_configuration_t {
    [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = 256)] public byte[] sig;
      public surerecover_configuration_payload_t data;
  };
 
  [StructLayout(LayoutKind.Sequential, Pack = 1)]
  public struct surerecover_configuration_payload_t
  {
    [MarshalAs(UnmanagedType.U4)] public UInt32 arp_counter;
    [MarshalAs(UnmanagedType.U4)] public surerecover_os_flags os_flags;
    [MarshalAs(UnmanagedType.U4)] public surerecover_re_flags re_flags;
  };
 
  [StructLayout(LayoutKind.Sequential, Pack = 1)]
  public struct surerecover_trigger_t {
    [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = 256)] public byte[] sig;
      public surerecover_trigger_payload_t data;
  };
 
  [StructLayout(LayoutKind.Sequential, Pack = 1)]
  public struct surerecover_trigger_payload_t
  {
    [MarshalAs(UnmanagedType.U4)] public UInt32 arp_counter;
    [MarshalAs(UnmanagedType.U4)] public UInt32 bios_trigger_flags;
    [MarshalAs(UnmanagedType.U4)] public UInt32 re_trigger_flags;
    [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = 256)] public byte[] reserved;
  };
 
    [Flags]
    public enum surerecover_day_of_week : byte
    {
    None = 0,
    Sunday = 1,
    Monday = 2,
        Tuesday = 4,
        Wednesday = 8,
        Thursday = 16,
    Friday = 32,
    Saturday = 64,
    EveryWeek = 128
    };
 
    [Flags]
    public enum surerecover_os_flags : uint
    {
    None = 0,
    NetworkBasedRecovery = 1,
    WiFi = 2,
        MobileDeviceSupport = 4,
        SecureStorage = 8,
        ATANormalErase = 16,
    ATACryptographicErase = 32,
    RollbackPrevention = 64
    };
 
 
  [Flags]
  public enum surerecover_prompt_policy : uint
  {
    None = 0,
    PromptBeforeRecovery = 1,
    PromptOnError = 2,
    PromptAfterRecover = 4
  };
 
  [Flags]
  public enum surerecover_erase_policy : uint
  {
    None = 0,
    EraseSecureStorage = 16,
    EraseSystemDrives = 32
  };
 
 
    [Flags]
    public enum surerecover_re_flags : uint
    {
    None = 0,
    DRDVD = 1,
    Reserved1 = 2,
    Reserved2 = 4,
    Reserved3 = 8,
    Reserved4 = 16,
    HPWolfSecurityForBusiness = 32,
    RollbackPrevention = 64
    };
 
 
   [StructLayout(LayoutKind.Sequential, Pack = 1)]
   public struct surerecover_schedule_data_t
  {
    [MarshalAs(UnmanagedType.U1)] public surerecover_day_of_week day_of_week;
    [MarshalAs(UnmanagedType.U1)] public byte hour;
    [MarshalAs(UnmanagedType.U1)] public byte minute;
    [MarshalAs(UnmanagedType.U1)] public byte window_size;
  };
 
 
   [StructLayout(LayoutKind.Sequential, Pack = 1)]
   public struct surerecover_schedule_data_payload_t
  {
    [MarshalAs(UnmanagedType.U4)] public UInt32 nonce;
    public surerecover_schedule_data_t schedule;
  };
   [StructLayout(LayoutKind.Sequential, Pack = 1)]
   public struct surerecover_schedule_payload_t
  {
    [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = 256)] public byte[] sig;
      public surerecover_schedule_data_payload_t data;
  };
 
 
  [StructLayout(LayoutKind.Sequential, Pack = 1)]
  public struct surerecover_state_t
  {
    [MarshalAs(UnmanagedType.ByValArray, SizeConst=2)] public byte[] subsystem_version; // major minor
    [MarshalAs(UnmanagedType.U4)] public UInt32 nonce;
    [MarshalAs(UnmanagedType.U4)] public surerecover_os_flags os_flags;
    [MarshalAs(UnmanagedType.U4)] public surerecover_re_flags re_flags;
    public surerecover_schedule_data_t schedule;
    [MarshalAs(UnmanagedType.U4)] public UInt32 flags;
    [MarshalAs(UnmanagedType.U2)] public UInt16 image_failover;
    [MarshalAs(UnmanagedType.U2)] public UInt16 agent_failover;
  };
 
  [StructLayout(LayoutKind.Sequential, Pack = 1)]
  public struct surerecover_failover_configuration_t
  {
    [MarshalAs(UnmanagedType.U2)] public UInt16 version;
    [MarshalAs(UnmanagedType.BStr)] public string username;
    [MarshalAs(UnmanagedType.BStr)] public string url;
  };
 
  public static class DfmNativeSureRecover
    {
 
    [DllImport("dfmbios32.dll", EntryPoint = "sp_get_osr_state", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int get_surerecover_state32([In,Out] ref surerecover_state_t data, [In,Out] ref int extended_result);
    [DllImport("dfmbios64.dll", EntryPoint = "sp_get_osr_state", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int get_surerecover_state64([In,Out] ref surerecover_state_t data, [In,Out] ref int extended_result);
 
    [DllImport("dfmbios32.dll", EntryPoint = "sp_get_osr_failover", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int get_surerecover_failover_configuration32([In] bool agent, [In] byte index, [In,Out] ref surerecover_failover_configuration_t data, [In,Out] ref int extended_result);
    [DllImport("dfmbios64.dll", EntryPoint = "sp_get_osr_failover", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int get_surerecover_failover_configuration64([In] bool agent, [In] byte index, [In,Out] ref surerecover_failover_configuration_t data, [In,Out] ref int extended_result);
 
    [DllImport("dfmbios32.dll", EntryPoint = "sp_set_osr_deprovision_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_surerecover_deprovision_opaque32([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
    [DllImport("dfmbios64.dll", EntryPoint = "sp_set_osr_deprovision_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_surerecover_deprovision_opaque64([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
 
    [DllImport("dfmbios32.dll", EntryPoint = "sp_set_osr_os_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_surerecover_osr_provisioning32([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
    [DllImport("dfmbios64.dll", EntryPoint = "sp_set_osr_os_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_surerecover_osr_provisioning64([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
 
    [DllImport("dfmbios32.dll", EntryPoint = "sp_set_osr_re_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_surerecover_re_provisioning32([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
    [DllImport("dfmbios64.dll", EntryPoint = "sp_set_osr_re_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_surerecover_re_provisioning64([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
 
    [DllImport("dfmbios32.dll", EntryPoint = "sp_set_failover_os_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_surerecover_osr_failover32([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
    [DllImport("dfmbios64.dll", EntryPoint = "sp_set_failover_os_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_surerecover_osr_failover64([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
 
    [DllImport("dfmbios32.dll", EntryPoint = "sp_set_osr_schedule_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_surerecover_schedule32([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
    [DllImport("dfmbios64.dll", EntryPoint = "sp_set_osr_schedule_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_surerecover_schedule64([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
 
    [DllImport("dfmbios32.dll", EntryPoint = "sp_get_osr_provisioning_opaque", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
    public static extern int get_surerecover_provisioning_opaque32([In] UInt32 nonce, [In] UInt16 version, [In] byte[] ok, [In] UInt32 ok_size, [In] string username, [In] string password, [In] string url, [In,Out] ref opaque4096_t data, [In,Out] ref int data_len, [In,Out] ref int extended_result);
    [DllImport("dfmbios64.dll", EntryPoint = "sp_get_osr_provisioning_opaque", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
    public static extern int get_surerecover_provisioning_opaque64([In] UInt32 nonce, [In] UInt16 version, [In] byte[] ok, [In] UInt32 ok_size, [In] string username, [In] string password, [In] string url, [In,Out] ref opaque4096_t data, [In,Out] ref int data_len, [In,Out] ref int extended_result);
 
    [DllImport("dfmbios32.dll", EntryPoint = "sp_get_osr_failover_opaque", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
    public static extern int get_surerecover_failover_opaque32([In] UInt32 nonce, [In] UInt16 version, [In] byte index, [In] string username, [In] string password, [In] string url, [In,Out] ref opaque4096_t data, [In,Out] ref int data_len, [In,Out] ref int extended_result);
    [DllImport("dfmbios64.dll", EntryPoint = "sp_get_osr_failover_opaque", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
    public static extern int get_surerecover_failover_opaque64([In] UInt32 nonce, [In] UInt16 version, [In] byte index, [In] string username, [In] string password, [In] string url, [In,Out] ref opaque4096_t data, [In,Out] ref int data_len, [In,Out] ref int extended_result);
 
    [DllImport("dfmbios32.dll", EntryPoint = "sp_set_osr_configuration_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_surerecover_configuration32([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
    [DllImport("dfmbios64.dll", EntryPoint = "sp_set_osr_configuration_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_surerecover_configuration64([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
 
    [DllImport("dfmbios32.dll", EntryPoint = "sp_set_osr_trigger_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_surerecover_trigger32([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
    [DllImport("dfmbios64.dll", EntryPoint = "sp_set_osr_trigger_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_surerecover_trigger64([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
 
    [DllImport("dfmbios32.dll", EntryPoint = "sp_osr_raise_service_event_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int raise_surerecover_service_event_opaque32([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
    [DllImport("dfmbios64.dll", EntryPoint = "sp_osr_raise_service_event_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int raise_surerecover_service_event_opaque64([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
 
 
    }
 
  public enum sr_activation_state_t : uint
  {
    Deactivated = 0,
    Activated = 1,
    PermanentlyDisabled = 2,
    Suspended = 3,
    ActivatedNoManifest = 4,
    SecurePlatformNotProvisioned = 5,
    ActivationInProgress = 6,
    RecoveryMode = 7
  }
 
  [Flags]
  public enum sr_config_t : uint
  {
    None = 0,
    HibernateOnHeartbearTimeout = 1
  }
 
  [Flags]
  public enum sr_capabilities_t : uint
  {
    None = 0,
    ManifestEncryptionSupported = 1
  }
 
 
    // HP SureRun
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct surerun_state_t
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst=2)] public byte[] subsystem_version;
        [MarshalAs(UnmanagedType.U4)] public sr_activation_state_t activation_state;
        [MarshalAs(UnmanagedType.U4)] public UInt32 flags;
        [MarshalAs(UnmanagedType.U4)] public sr_capabilities_t capabilities;
        [MarshalAs(UnmanagedType.U4)] public UInt32 max_manifest_size;
        [MarshalAs(UnmanagedType.U4)] public UInt32 command_counter;
        [MarshalAs(UnmanagedType.U4)] public sr_config_t config_flags;
    [MarshalAs(UnmanagedType.BStr)] public string manifest;
    [MarshalAs(UnmanagedType.U4)] public UInt32 manifest_size;
    [MarshalAs(UnmanagedType.U4)] public UInt32 manifest_was_retrieved;
    };
 
    public struct surerun_manifestinfo_t {
    [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = 256)] public byte[] sig;
      public surerun_manifestinfo_payload_t data;
    };
 
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct surerun_manifestinfo_payload_t
    {
        [MarshalAs(UnmanagedType.U4)] public uint counter;
        [MarshalAs(UnmanagedType.U2)] public ushort total_size;
        [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = 32)] public byte[] hash;
    }
 
    public static class DfmNativeSureRun
    {
        [DllImport("dfmbios32.dll", EntryPoint = "sp_get_sr_state", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int get_surerun_state32([In,Out] ref surerun_state_t data, [In,Out] ref int extended_result, bool include_manifest);
        [DllImport("dfmbios64.dll", EntryPoint = "sp_get_sr_state", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int get_surerun_state64([In,Out] ref surerun_state_t data, [In,Out] ref int extended_result, bool include_manifest);
 
        [DllImport("dfmbios32.dll", EntryPoint = "sp_set_sr_manifest_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_surererun_manifest32([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
        [DllImport("dfmbios64.dll", EntryPoint = "sp_set_sr_manifest_opaque", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
    public static extern int set_surererun_manifest64([In] byte[] data, [In] int data_size, [In,Out] ref int extended_result);
    };
 
    public static class DfmNativeQRCode
    {
        [DllImport("dfmbios32.dll", EntryPoint = "create_qrcode", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern int create_qrcode32([In] string data, [In,Out] byte[] qr);
        [DllImport("dfmbios64.dll", EntryPoint = "create_qrcode", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern int create_qrcode64([In] string data, [In,Out] byte[] qr);
 
        [DllImport("dfmbios32.dll", EntryPoint = "get_console_font_height", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern int get_console_font_height32();
        [DllImport("dfmbios64.dll", EntryPoint = "get_console_font_height", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern int get_console_font_height64();
 
        [DllImport("dfmbios32.dll", EntryPoint = "get_console_font_width", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern int get_console_font_width32();
        [DllImport("dfmbios64.dll", EntryPoint = "get_console_font_width", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern int get_console_font_width64();
 
        [DllImport("dfmbios32.dll", EntryPoint = "get_screen_scale", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern float get_screen_scale32();
        [DllImport("dfmbios64.dll", EntryPoint = "get_screen_scale", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern float get_screen_scale64();
    }
 
    public struct RECT
    {
        public int Left;
        public int Top;
        public int Right;
        public int Bottom;
    }
 
    public class Win32Window : IWin32Window
    {
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
 
        private IntPtr _hWnd;
        private int _data;
 
        public int Data
        {
            get { return _data; }
            set { _data = value; }
        }
 
        public Win32Window(IntPtr handle)
        {
            _hWnd = handle;
        }
 
        public IntPtr Handle
        {
            get { return _hWnd; }
        }
    }
 
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct SureAdminSignatureBlockHeader
    {
        public byte Version;
        public UInt16 NameLength;
        public UInt16 ValueLength;
        public byte OneTimeUse;
        public UInt32 Nonce;
        public byte Reserved;
        [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = 16)]
        public byte[] Target;
    }
 
    // hp retail
 
    public enum RetailSmartDockMode : uint
    {
        Fast = 0,
        Pin = 1,
        FastSecure = 2,
        PinSecure = 3,
        Application = 4,
        Unknown = 0xffffffff
    }
 
    public enum RetailSmartDockState : uint
    {
        Undocked = 0,
        Docked = 1,
        Jammed = 2,
        Unknown = 0xffffffff
    }
 
    public enum RetailSmartDockHubState : uint
    {
        None = 0,
        AdvancedConnectivtyBase = 1,
        BasicConnectivityBase = 2,
        Unknown = 0xffffffff
    }
 
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct RetailInformation {
        public UInt32 IsSupported;
        public UInt32 Mode;
        public UInt32 DockState;
        public UInt32 HubState;
        public UInt32 Timeout;
        public UInt32 PinSize;
        public UInt32 BaseLockoutTimer;
        public UInt32 RelockTimer;
        public UInt32 DockCounter;
        public UInt32 UndockCounter;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] Pin;
     }
 
 
 
 
 
 
    public static class DfmNativeRetail
    {
 
            [DllImport("dfmbios32.dll", EntryPoint = "get_retail_dock_configuration", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
            public static extern int get_retail_dock_configuration_32(ref RetailInformation data, [Out] out UInt32 extended_result);
            [DllImport("dfmbios64.dll", EntryPoint = "get_retail_dock_configuration", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
            public static extern int get_retail_dock_configuration_64(ref RetailInformation data, [Out] out UInt32 extended_result);
 
            [DllImport("dfmbios32.dll", EntryPoint = "set_retail_dock_configuration", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
            public static extern int set_retail_dock_configuration_32(ref RetailInformation data, [Out] out UInt32 extended_result);
            [DllImport("dfmbios64.dll", EntryPoint = "set_retail_dock_configuration", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
            public static extern int set_retail_dock_configuration_64(ref RetailInformation data, [Out] out UInt32 extended_result);
 
 
    }
 
'@
 -ReferencedAssemblies 'System.Windows.Forms.dll'






# SIG # Begin signature block
# MIIuAwYJKoZIhvcNAQcCoIIt9DCCLfACAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDTY1f1J64mNyNA
# sDa0a75nl6PpPuCW+wZ/KjlPPE2eh6CCE2wwggXAMIIEqKADAgECAhAP0bvKeWvX
# +N1MguEKmpYxMA0GCSqGSIb3DQEBCwUAMGwxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xKzApBgNV
# BAMTIkRpZ2lDZXJ0IEhpZ2ggQXNzdXJhbmNlIEVWIFJvb3QgQ0EwHhcNMjIwMTEz
# MDAwMDAwWhcNMzExMTA5MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMM
# RGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQD
# ExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqGSIb3DQEBAQUAA4IC
# DwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEppz1Yq3aa
# za57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllV
# cq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT
# +CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd
# 463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+
# EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/CNdaSaTC5qmgZ92k
# J7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtmmnTK3kse5w5j
# rubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7
# f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJU
# KSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+wh
# X8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQAB
# o4IBZjCCAWIwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5n
# P+e6mK4cD08wHwYDVR0jBBgwFoAUsT7DaQP4v0cB1JgmGggC72NkK8MwDgYDVR0P
# AQH/BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUFBwMDMH8GCCsGAQUFBwEBBHMwcTAk
# BggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEkGCCsGAQUFBzAC
# hj1odHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRIaWdoQXNzdXJh
# bmNlRVZSb290Q0EuY3J0MEsGA1UdHwREMEIwQKA+oDyGOmh0dHA6Ly9jcmwzLmRp
# Z2ljZXJ0LmNvbS9EaWdpQ2VydEhpZ2hBc3N1cmFuY2VFVlJvb3RDQS5jcmwwHAYD
# VR0gBBUwEzAHBgVngQwBAzAIBgZngQwBBAEwDQYJKoZIhvcNAQELBQADggEBAEHx
# qRH0DxNHecllao3A7pgEpMbjDPKisedfYk/ak1k2zfIe4R7sD+EbP5HU5A/C5pg0
# /xkPZigfT2IxpCrhKhO61z7H0ZL+q93fqpgzRh9Onr3g7QdG64AupP2uU7SkwaT1
# IY1rzAGt9Rnu15ClMlIr28xzDxj4+87eg3Gn77tRWwR2L62t0+od/P1Tk+WMieNg
# GbngLyOOLFxJy34riDkruQZhiPOuAnZ2dMFkkbiJUZflhX0901emWG4f7vtpYeJa
# 3Cgh6GO6Ps9W7Zrk9wXqyvPsEt84zdp7PiuTUy9cUQBY3pBIowrHC/Q7bVUx8ALM
# R3eWUaNetbxcyEMRoacwggawMIIEmKADAgECAhAIrUCyYNKcTJ9ezam9k67ZMA0G
# CSqGSIb3DQEBDAUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
# bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lDZXJ0
# IFRydXN0ZWQgUm9vdCBHNDAeFw0yMTA0MjkwMDAwMDBaFw0zNjA0MjgyMzU5NTla
# MGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8GA1UE
# AxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcgUlNBNDA5NiBTSEEz
# ODQgMjAyMSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDVtC9C
# 0CiteLdd1TlZG7GIQvUzjOs9gZdwxbvEhSYwn6SOaNhc9es0JAfhS0/TeEP0F9ce
# 2vnS1WcaUk8OoVf8iJnBkcyBAz5NcCRks43iCH00fUyAVxJrQ5qZ8sU7H/Lvy0da
# E6ZMswEgJfMQ04uy+wjwiuCdCcBlp/qYgEk1hz1RGeiQIXhFLqGfLOEYwhrMxe6T
# SXBCMo/7xuoc82VokaJNTIIRSFJo3hC9FFdd6BgTZcV/sk+FLEikVoQ11vkunKoA
# FdE3/hoGlMJ8yOobMubKwvSnowMOdKWvObarYBLj6Na59zHh3K3kGKDYwSNHR7Oh
# D26jq22YBoMbt2pnLdK9RBqSEIGPsDsJ18ebMlrC/2pgVItJwZPt4bRc4G/rJvmM
# 1bL5OBDm6s6R9b7T+2+TYTRcvJNFKIM2KmYoX7BzzosmJQayg9Rc9hUZTO1i4F4z
# 8ujo7AqnsAMrkbI2eb73rQgedaZlzLvjSFDzd5Ea/ttQokbIYViY9XwCFjyDKK05
# huzUtw1T0PhH5nUwjewwk3YUpltLXXRhTT8SkXbev1jLchApQfDVxW0mdmgRQRNY
# mtwmKwH0iU1Z23jPgUo+QEdfyYFQc4UQIyFZYIpkVMHMIRroOBl8ZhzNeDhFMJlP
# /2NPTLuqDQhTQXxYPUez+rbsjDIJAsxsPAxWEQIDAQABo4IBWTCCAVUwEgYDVR0T
# AQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUaDfg67Y7+F8Rhvv+YXsIiGX0TkIwHwYD
# VR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0PAQH/BAQDAgGGMBMG
# A1UdJQQMMAoGCCsGAQUFBwMDMHcGCCsGAQUFBwEBBGswaTAkBggrBgEFBQcwAYYY
# aHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAChjVodHRwOi8vY2Fj
# ZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNydDBDBgNV
# HR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRU
# cnVzdGVkUm9vdEc0LmNybDAcBgNVHSAEFTATMAcGBWeBDAEDMAgGBmeBDAEEATAN
# BgkqhkiG9w0BAQwFAAOCAgEAOiNEPY0Idu6PvDqZ01bgAhql+Eg08yy25nRm95Ry
# sQDKr2wwJxMSnpBEn0v9nqN8JtU3vDpdSG2V1T9J9Ce7FoFFUP2cvbaF4HZ+N3HL
# IvdaqpDP9ZNq4+sg0dVQeYiaiorBtr2hSBh+3NiAGhEZGM1hmYFW9snjdufE5Btf
# Q/g+lP92OT2e1JnPSt0o618moZVYSNUa/tcnP/2Q0XaG3RywYFzzDaju4ImhvTnh
# OE7abrs2nfvlIVNaw8rpavGiPttDuDPITzgUkpn13c5UbdldAhQfQDN8A+KVssIh
# dXNSy0bYxDQcoqVLjc1vdjcshT8azibpGL6QB7BDf5WIIIJw8MzK7/0pNVwfiThV
# 9zeKiwmhywvpMRr/LhlcOXHhvpynCgbWJme3kuZOX956rEnPLqR0kq3bPKSchh/j
# wVYbKyP/j7XqiHtwa+aguv06P0WmxOgWkVKLQcBIhEuWTatEQOON8BUozu3xGFYH
# Ki8QxAwIZDwzj64ojDzLj4gLDb879M4ee47vtevLt/B3E+bnKD+sEq6lLyJsQfmC
# XBVmzGwOysWGw/YmMwwHS6DTBwJqakAwSEs0qFEgu60bhQjiWQ1tygVQK+pKHJ6l
# /aCnHwZ05/LWUpD9r4VIIflXO7ScA+2GRfS0YW6/aOImYIbqyK+p/pQd52MbOoZW
# eE4wggbwMIIE2KADAgECAhAI+qTPsJ3byDJ7SsgX0LBUMA0GCSqGSIb3DQEBCwUA
# MGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8GA1UE
# AxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcgUlNBNDA5NiBTSEEz
# ODQgMjAyMSBDQTEwHhcNMjIwMzA5MDAwMDAwWhcNMjMwMzA5MjM1OTU5WjB1MQsw
# CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAGA1UEBxMJUGFsbyBB
# bHRvMRAwDgYDVQQKEwdIUCBJbmMuMRkwFwYDVQQLExBIUCBDeWJlcnNlY3VyaXR5
# MRAwDgYDVQQDEwdIUCBJbmMuMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC
# AYEA2KwFARbsSL8FnMdZ++xo7iVdqg+ZOY0S2KkvYQdNNcvrcfHTdNpNgf65RuIt
# VQxdJXzmZcAOXJUPjRQRduvFf/I8jqR4UwBLsNoy/sEuQIDCfezNSQz8TPredjUG
# Lr6Y9ie1vYryqJ110Mj6NtXZQidlytEneq3z73Ec7TRFKp8iiiwNpTcbhAq93pq6
# bjnc98ajFUBHJu9Gfk1Or3haR6m7YH0LRLVWm18I2OKrcPLk67hWRj6Aa7/heBkk
# F8TfGCUwGBHhblrprBVECR3M4zTnMygBfxVEzYsdyAytPy0DgqzZ7+rHY0yvgDUx
# Fi/d1SyqNDCf6FBBudNjzw7TULEBHlJjk96xhd1z4X5ctL1kW4duC7Mba6H8A1lI
# qM5qa+8Fr88IJhnl21PlkBp+XAk3lBaeJ/DVpORIv3bhUV8OLae6ElQBGvqQoEY/
# AaNerghhFjiqAhaUG3z3Y7ruhVaCmuw/SMVS79dxESj/J1qHWVnF1tn2a4liq/RY
# VeFTAgMBAAGjggIGMIICAjAfBgNVHSMEGDAWgBRoN+Drtjv4XxGG+/5hewiIZfRO
# QjAdBgNVHQ4EFgQUAjIiVx974XGZre7F5HqNCJiWZbowDgYDVR0PAQH/BAQDAgeA
# MBMGA1UdJQQMMAoGCCsGAQUFBwMDMIG1BgNVHR8Ega0wgaowU6BRoE+GTWh0dHA6
# Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5n
# UlNBNDA5NlNIQTM4NDIwMjFDQTEuY3JsMFOgUaBPhk1odHRwOi8vY3JsNC5kaWdp
# Y2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQwOTZTSEEz
# ODQyMDIxQ0ExLmNybDA+BgNVHSAENzA1MDMGBmeBDAEEATApMCcGCCsGAQUFBwIB
# FhtodHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwgZQGCCsGAQUFBwEBBIGHMIGE
# MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wXAYIKwYBBQUH
# MAKGUGh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRH
# NENvZGVTaWduaW5nUlNBNDA5NlNIQTM4NDIwMjFDQTEuY3J0MAwGA1UdEwEB/wQC
# MAAwDQYJKoZIhvcNAQELBQADggIBAFrOPeL4ph8SmHwwcUQO7nPnapyOS0I50w70
# nVZ9CtrgyA7hiZmVm/CsC1JU8zg1dNyfH7wCDaoMAnqtybcdmhIXc4STwfcpiKOH
# nL3fRQcZ2zCCXmX5lkWYWni9Nqx603JQ8yiUSl1sMyv0Cd4RasOBHnjQuekDDKNT
# QvOiEA3NCZDGEjtIjE+TGqLW2kUEtjxzyr0mnhmidRaHry5C1GKu0mlKExwabOLW
# xGrXj4FPtKmWXZh00lMbbdeHm1Zqn9CTsO6xt8CQXSemcpb7lXY80um71wQO23ub
# tQGDe4QpShomqPmEIVxM5/B6Yih/0Lb8mt60SLfT5EOVS/Dhd86lSHcncL9JLxaq
# WwbQhIwpEa4b3MiZqyemqb0+YIBn5yG43M4oLzRPTo2mPwG19OtnMVZsrcjGEzLz
# EiBb9/YXsf8G5LAh86x2kRKDad35NNNojUJYVBtD7MGEsL37XF+6kWXsp92on2b2
# QLEL/5ZzJHmfrJ8m0TXMb4sMSI2KnHtCvEjG2MIAnjFEvNZ1ZFsKS78mwylDyHL0
# yTuv08JqDuommKgjmyvtLEeb6OYsOnSVQIcyV4XCY1kFA8mDuIsIlbWE3Nyv94Of
# N+4jNKcDzniYb5LmKlXraIM8PjPpYb34DlNpzCDN7/tJuMFsy/NwArj1SiL630mg
# Dm0fS5OgMYIZ7TCCGekCAQEwfTBpMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGln
# aUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBT
# aWduaW5nIFJTQTQwOTYgU0hBMzg0IDIwMjEgQ0ExAhAI+qTPsJ3byDJ7SsgX0LBU
# MA0GCWCGSAFlAwQCAQUAoHwwEAYKKwYBBAGCNwIBDDECMAAwGQYJKoZIhvcNAQkD
# MQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJ
# KoZIhvcNAQkEMSIEINUOe+csNUNDW48TtDHSfNGMrppr9BhVmdEB137Tim4QMA0G
# CSqGSIb3DQEBAQUABIIBgDxEfTU+bVa97hCS9FbJuI2qFvLaCAzi/xzEF1doprAs
# 43UvgmkoOS/BeSVk1gqY4Htc6cNDET9y0SdOMU59mv7XV7mpwz552yax2BzdOnK1
# Jb08oBDI+JMq2oRCDa0uYBinNomRLRs1C+0F4bk52mnSQfbHKYw9FUvC3yLrbNlP
# alcUodSP4yy+L5VSNuP5JjoFCFFOUghGh9cNKAG7sWzR8eFpQRhunrDMZ4h6H0A8
# u8EME2NtjgYZb9mR9GTtwTj8VozW+bwvkBaI0BUlilh6e9ZeBFGSHENZ2n8llpKx
# I/WmoCb/tpxaQ6x00cLTcJEyhYkncNj9gEsdvKzdo4g5zgiKntguEfQzFCnDmkwF
# QF6MNNv6RTSKycwpummySxenEtsfseb+jA9czUXn6GPeYWeeD0CqfGMnxW4cm9dB
# 2+1rOW91rI18PIDqUAvOMJLEYaiDTBqkBdPPza1MvzJ9/DLB5m45hhDJeAqCeJtJ
# HOXCyD2GYMfo/KE678xtvaGCF0Mwghc/BgorBgEEAYI3AwMBMYIXLzCCFysGCSqG
# SIb3DQEHAqCCFxwwghcYAgEDMQ8wDQYJYIZIAWUDBAIBBQAwdwYLKoZIhvcNAQkQ
# AQSgaARmMGQCAQEGCWCGSAGG/WwHATAxMA0GCWCGSAFlAwQCAQUABCBV79Dzy4aT
# q4/OYtpjmVwZfalX6rHFsW7Yw62WoGzbqgIQA++JIW+KTp7XQQsCumuOUBgPMjAy
# MjA5MDcxNzM1MTZaoIITDTCCBsYwggSuoAMCAQICEAp6SoieyZlCkAZjOE2Gl50w
# DQYJKoZIhvcNAQELBQAwYzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0
# LCBJbmMuMTswOQYDVQQDEzJEaWdpQ2VydCBUcnVzdGVkIEc0IFJTQTQwOTYgU0hB
# MjU2IFRpbWVTdGFtcGluZyBDQTAeFw0yMjAzMjkwMDAwMDBaFw0zMzAzMTQyMzU5
# NTlaMEwxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjEkMCIG
# A1UEAxMbRGlnaUNlcnQgVGltZXN0YW1wIDIwMjIgLSAyMIICIjANBgkqhkiG9w0B
# AQEFAAOCAg8AMIICCgKCAgEAuSqWI6ZcvF/WSfAVghj0M+7MXGzj4CUu0jHkPECu
# +6vE43hdflw26vUljUOjges4Y/k8iGnePNIwUQ0xB7pGbumjS0joiUF/DbLW+YTx
# mD4LvwqEEnFsoWImAdPOw2z9rDt+3Cocqb0wxhbY2rzrsvGD0Z/NCcW5QWpFQiNB
# Wvhg02UsPn5evZan8Pyx9PQoz0J5HzvHkwdoaOVENFJfD1De1FksRHTAMkcZW+KY
# Lo/Qyj//xmfPPJOVToTpdhiYmREUxSsMoDPbTSSF6IKU4S8D7n+FAsmG4dUYFLcE
# RfPgOL2ivXpxmOwV5/0u7NKbAIqsHY07gGj+0FmYJs7g7a5/KC7CnuALS8gI0TK7
# g/ojPNn/0oy790Mj3+fDWgVifnAs5SuyPWPqyK6BIGtDich+X7Aa3Rm9n3RBCq+5
# jgnTdKEvsFR2wZBPlOyGYf/bES+SAzDOMLeLD11Es0MdI1DNkdcvnfv8zbHBp8QO
# xO9APhk6AtQxqWmgSfl14ZvoaORqDI/r5LEhe4ZnWH5/H+gr5BSyFtaBocraMJBr
# 7m91wLA2JrIIO/+9vn9sExjfxm2keUmti39hhwVo99Rw40KV6J67m0uy4rZBPeev
# pxooya1hsKBBGBlO7UebYZXtPgthWuo+epiSUc0/yUTngIspQnL3ebLdhOon7v59
# emsCAwEAAaOCAYswggGHMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMBYG
# A1UdJQEB/wQMMAoGCCsGAQUFBwMIMCAGA1UdIAQZMBcwCAYGZ4EMAQQCMAsGCWCG
# SAGG/WwHATAfBgNVHSMEGDAWgBS6FtltTYUvcyl2mi91jGogj57IbzAdBgNVHQ4E
# FgQUjWS3iSH+VlhEhGGn6m8cNo/drw0wWgYDVR0fBFMwUTBPoE2gS4ZJaHR0cDov
# L2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0UlNBNDA5NlNIQTI1
# NlRpbWVTdGFtcGluZ0NBLmNybDCBkAYIKwYBBQUHAQEEgYMwgYAwJAYIKwYBBQUH
# MAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBYBggrBgEFBQcwAoZMaHR0cDov
# L2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0UlNBNDA5NlNI
# QTI1NlRpbWVTdGFtcGluZ0NBLmNydDANBgkqhkiG9w0BAQsFAAOCAgEADS0jdKbR
# 9fjqS5k/AeT2DOSvFp3Zs4yXgimcQ28BLas4tXARv4QZiz9d5YZPvpM63io5WjlO
# 2IRZpbwbmKrobO/RSGkZOFvPiTkdcHDZTt8jImzV3/ZZy6HC6kx2yqHcoSuWuJtV
# qRprfdH1AglPgtalc4jEmIDf7kmVt7PMxafuDuHvHjiKn+8RyTFKWLbfOHzL+lz3
# 5FO/bgp8ftfemNUpZYkPopzAZfQBImXH6l50pls1klB89Bemh2RPPkaJFmMga8vy
# e9A140pwSKm25x1gvQQiFSVwBnKpRDtpRxHT7unHoD5PELkwNuTzqmkJqIt+ZKJl
# lBH7bjLx9bs4rc3AkxHVMnhKSzcqTPNc3LaFwLtwMFV41pj+VG1/calIGnjdRncu
# G3rAM4r4SiiMEqhzzy350yPynhngDZQooOvbGlGglYKOKGukzp123qlzqkhqWUOu
# X+r4DwZCnd8GaJb+KqB0W2Nm3mssuHiqTXBt8CzxBxV+NbTmtQyimaXXFWs1DoXW
# 4CzM4AwkuHxSCx6ZfO/IyMWMWGmvqz3hz8x9Fa4Uv4px38qXsdhH6hyF4EVOEhwU
# KVjMb9N/y77BDkpvIJyu2XMyWQjnLZKhGhH+MpimXSuX4IvTnMxttQ2uR2M4Rxdb
# bxPaahBuH0m3RFu0CAqHWlkEdhGhp3cCExwwggauMIIElqADAgECAhAHNje3JFR8
# 2Ees/ShmKl5bMA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
# BAMTGERpZ2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0yMjAzMjMwMDAwMDBaFw0z
# NzAzMjIyMzU5NTlaMGMxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg
# SW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBHNCBSU0E0MDk2IFNIQTI1
# NiBUaW1lU3RhbXBpbmcgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
# AQDGhjUGSbPBPXJJUVXHJQPE8pE3qZdRodbSg9GeTKJtoLDMg/la9hGhRBVCX6SI
# 82j6ffOciQt/nR+eDzMfUBMLJnOWbfhXqAJ9/UO0hNoR8XOxs+4rgISKIhjf69o9
# xBd/qxkrPkLcZ47qUT3w1lbU5ygt69OxtXXnHwZljZQp09nsad/ZkIdGAHvbREGJ
# 3HxqV3rwN3mfXazL6IRktFLydkf3YYMZ3V+0VAshaG43IbtArF+y3kp9zvU5Emfv
# DqVjbOSmxR3NNg1c1eYbqMFkdECnwHLFuk4fsbVYTXn+149zk6wsOeKlSNbwsDET
# qVcplicu9Yemj052FVUmcJgmf6AaRyBD40NjgHt1biclkJg6OBGz9vae5jtb7IHe
# IhTZgirHkr+g3uM+onP65x9abJTyUpURK1h0QCirc0PO30qhHGs4xSnzyqqWc0Jo
# n7ZGs506o9UD4L/wojzKQtwYSH8UNM/STKvvmz3+DrhkKvp1KCRB7UK/BZxmSVJQ
# 9FHzNklNiyDSLFc1eSuo80VgvCONWPfcYd6T/jnA+bIwpUzX6ZhKWD7TA4j+s4/T
# Xkt2ElGTyYwMO1uKIqjBJgj5FBASA31fI7tk42PgpuE+9sJ0sj8eCXbsq11GdeJg
# o1gJASgADoRU7s7pXcheMBK9Rp6103a50g5rmQzSM7TNsQIDAQABo4IBXTCCAVkw
# EgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUuhbZbU2FL3MpdpovdYxqII+e
# yG8wHwYDVR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0PAQH/BAQD
# AgGGMBMGA1UdJQQMMAoGCCsGAQUFBwMIMHcGCCsGAQUFBwEBBGswaTAkBggrBgEF
# BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAChjVodHRw
# Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNy
# dDBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGln
# aUNlcnRUcnVzdGVkUm9vdEc0LmNybDAgBgNVHSAEGTAXMAgGBmeBDAEEAjALBglg
# hkgBhv1sBwEwDQYJKoZIhvcNAQELBQADggIBAH1ZjsCTtm+YqUQiAX5m1tghQuGw
# GC4QTRPPMFPOvxj7x1Bd4ksp+3CKDaopafxpwc8dB+k+YMjYC+VcW9dth/qEICU0
# MWfNthKWb8RQTGIdDAiCqBa9qVbPFXONASIlzpVpP0d3+3J0FNf/q0+KLHqrhc1D
# X+1gtqpPkWaeLJ7giqzl/Yy8ZCaHbJK9nXzQcAp876i8dU+6WvepELJd6f8oVInw
# 1YpxdmXazPByoyP6wCeCRK6ZJxurJB4mwbfeKuv2nrF5mYGjVoarCkXJ38SNoOeY
# +/umnXKvxMfBwWpx2cYTgAnEtp/Nh4cku0+jSbl3ZpHxcpzpSwJSpzd+k1OsOx0I
# SQ+UzTl63f8lY5knLD0/a6fxZsNBzU+2QJshIUDQtxMkzdwdeDrknq3lNHGS1yZr
# 5Dhzq6YBT70/O3itTK37xJV77QpfMzmHQXh6OOmc4d0j/R0o08f56PGYX/sr2H7y
# Rp11LB4nLCbbbxV7HhmLNriT1ObyF5lZynDwN7+YAN8gFk8n+2BnFqFmut1VwDop
# hrCYoCvtlUG3OtUVmDG0YgkPCr2B2RP+v6TR81fZvAT6gt4y3wSJ8ADNXcL50CN/
# AAvkdgIm2fBldkKmKYcJRyvmfxqkhQ/8mJb2VVQrH4D6wPIOK+XW+6kvRBVK5xMO
# Hds3OBqhK/bt1nz8MIIFjTCCBHWgAwIBAgIQDpsYjvnQLefv21DiCEAYWjANBgkq
# hkiG9w0BAQwFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
# MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBB
# c3N1cmVkIElEIFJvb3QgQ0EwHhcNMjIwODAxMDAwMDAwWhcNMzExMTA5MjM1OTU5
# WjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
# ExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJv
# b3QgRzQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1K
# PDAiMGkz7MKnJS7JIT3yithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2r
# snnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C
# 8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBf
# sXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY
# QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8
# rhsDdV14Ztk6MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaY
# dj1ZXUJ2h4mXaXpI8OCiEhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+
# wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw
# ++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+N
# P8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7F
# wI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo4IBOjCCATYwDwYDVR0TAQH/BAUw
# AwEB/zAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wHwYDVR0jBBgwFoAU
# Reuir/SSy4IxLVGLp6chnfNtyA8wDgYDVR0PAQH/BAQDAgGGMHkGCCsGAQUFBwEB
# BG0wazAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsG
# AQUFBzAChjdodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
# cmVkSURSb290Q0EuY3J0MEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9jcmwzLmRp
# Z2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwEQYDVR0gBAow
# CDAGBgRVHSAAMA0GCSqGSIb3DQEBDAUAA4IBAQBwoL9DXFXnOF+go3QbPbYW1/e/
# Vwe9mqyhhyzshV6pGrsi+IcaaVQi7aSId229GhT0E0p6Ly23OO/0/4C5+KH38nLe
# JLxSA8hO0Cre+i1Wz/n096wwepqLsl7Uz9FDRJtDIeuWcqFItJnLnU+nBgMTdydE
# 1Od/6Fmo8L8vC6bp8jQ87PcDx4eo0kxAGTVGamlUsLihVo7spNU96LHc/RzY9Hda
# XFSMb++hUD38dglohJ9vytsgjTVgHAIDyyCwrFigDkBjxZgiwbJZ9VVrzyerbHbO
# byMt9H5xaiNrIv8SuFQtJ37YOtnwtoeW/VvRXKwYw02fc7cBqZ9Xql4o4rmUMYID
# djCCA3ICAQEwdzBjMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIElu
# Yy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFRydXN0ZWQgRzQgUlNBNDA5NiBTSEEyNTYg
# VGltZVN0YW1waW5nIENBAhAKekqInsmZQpAGYzhNhpedMA0GCWCGSAFlAwQCAQUA
# oIHRMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcN
# MjIwOTA3MTczNTE2WjArBgsqhkiG9w0BCRACDDEcMBowGDAWBBSFCPOGUVyz0wd9
# trS3wH8bSl5B3jAvBgkqhkiG9w0BCQQxIgQgHjJd3kCf/AzyfVDRgnWLU7/0Z5WD
# GyE5N3s0+5A8OfUwNwYLKoZIhvcNAQkQAi8xKDAmMCQwIgQgnaaQFcNJxsGJeEW6
# NYKtcMiPpCk722q+nCvSU5J55jswDQYJKoZIhvcNAQEBBQAEggIAX2ii5nx7KurR
# GPk3C311QfYDB2ugzG85D4vC6pkM1zxsqWuT8IEm4mPc8NTc0/D31/TyzJm8PiVZ
# bQDt5geJ5FY3Z5qMAekqqpU9F3yELbMc10j7cvgVV1V1YZ4Rvx1MwQIGs+poROVa
# OJbJSf0PrvqUStW0DUpj0r2E4IVfgqw9JxZXrBlPG+U4U+H7y0TlbkQ+iu7FjHhV
# NUkiKI63WNpv7XLftzLQHI7Rpw9C9UBUNpNOL1NLytTmAAoQm+A9elhURbePorIW
# nqdFkAkpAygyEcSarbbGVmMciokXQLltaPlzhgbenVzTyt7dVjIMzk+yq2xq0suP
# T9Bd4Yi293lJ8mM2SXA0Lzor2tXWtef2zDu8lD1bWXw+haviV9aKGaZVCoYL1NxV
# PzHMlc4dipiUPyNL5wruMzabh82mazFaPlvmZfZF8HJZ+y/UwEF1cUdgtV+ps8lF
# U7zNQ2bn7K/6ThE9nIS94tHUtWQPzRO2BfO+h9LIuZPeEDS8Z7aohx86eO6KyPHA
# /cDxomfhXB7oOLomg6h9IcAbCABSJnecUrryFukmv0dBStEMh9r3Nd83500o7qPv
# KhSY2eQhVNaBta2l8qOfRtSp/xtdzgEk93w/RAH1wLDPA5mnTSF9K+KsK1zX5EoI
# dZl5GRSXR7gcFBDMSErZay770dXJq+0=
# SIG # End signature block