From 859ac87c17c3b25a7fc9033fd06f64c4b2ac49ff Mon Sep 17 00:00:00 2001 From: brianga Date: Thu, 31 Oct 2019 15:24:29 -0600 Subject: [PATCH 1/2] Fix Issue 4 Fix Issue 4 * Added in library for signing the generated RDP file * Library requires the certificate to have a friendly name for it to show up in the drop down. No friendly name, no certificate in dropdown * Library detects the rdpsign.exe version to determine proper arguments (/sha1 or /sha256) * Updated RemoteApp Tool to use new library and sign the RDP file after it is created * Added in logic around the signing to prevent editing after creating the RDP file if signed * Library allows for creating an unsigned backup along with the signed version, added ability to do the same in RemoteApp Tool * Updated RemoteApp tool to use Visual Studio 2019, but allows for support back to some pervious versions * Tested on Windows 10 and Windows Server 2008 R2 and was successful on both --- RDPSign/My Project/Application.Designer.vb | 13 + RDPSign/My Project/Application.myapp | 10 + RDPSign/My Project/AssemblyInfo.vb | 35 +++ RDPSign/My Project/Resources.Designer.vb | 63 ++++ RDPSign/My Project/Resources.resx | 117 ++++++++ RDPSign/My Project/Settings.Designer.vb | 73 +++++ RDPSign/My Project/Settings.settings | 7 + RDPSign/RDPSign.vb | 125 ++++++++ RDPSign/RDPSign.vbproj | 106 +++++++ remoteapp-tool/RemoteApp Tool.sln | 14 +- remoteapp-tool/RemoteApp Tool.vbproj | 4 + ...emoteAppCreateClientConnection.Designer.vb | 84 +++++- .../RemoteAppCreateClientConnection.resx | 272 +++++++++--------- .../RemoteAppCreateClientConnection.vb | 31 ++ .../RemoteAppEditWindow.Designer.vb | 4 +- remoteapp-tool/RemoteAppEditWindow.resx | 266 ++++++++--------- 16 files changed, 946 insertions(+), 278 deletions(-) create mode 100644 RDPSign/My Project/Application.Designer.vb create mode 100644 RDPSign/My Project/Application.myapp create mode 100644 RDPSign/My Project/AssemblyInfo.vb create mode 100644 RDPSign/My Project/Resources.Designer.vb create mode 100644 RDPSign/My Project/Resources.resx create mode 100644 RDPSign/My Project/Settings.Designer.vb create mode 100644 RDPSign/My Project/Settings.settings create mode 100644 RDPSign/RDPSign.vb create mode 100644 RDPSign/RDPSign.vbproj diff --git a/RDPSign/My Project/Application.Designer.vb b/RDPSign/My Project/Application.Designer.vb new file mode 100644 index 0000000..88dd01c --- /dev/null +++ b/RDPSign/My Project/Application.Designer.vb @@ -0,0 +1,13 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + diff --git a/RDPSign/My Project/Application.myapp b/RDPSign/My Project/Application.myapp new file mode 100644 index 0000000..758895d --- /dev/null +++ b/RDPSign/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + false + false + 0 + true + 0 + 1 + true + diff --git a/RDPSign/My Project/AssemblyInfo.vb b/RDPSign/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..75057f9 --- /dev/null +++ b/RDPSign/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' General Information about an assembly is controlled through the following +' set of attributes. Change these attribute values to modify the information +' associated with an assembly. + +' Review the values of the assembly attributes + + + + + + + + + + +'The following GUID is for the ID of the typelib if this project is exposed to COM + + +' Version information for an assembly consists of the following four values: +' +' Major Version +' Minor Version +' Build Number +' Revision +' +' You can specify all the values or you can default the Build and Revision Numbers +' by using the '*' as shown below: +' + + + diff --git a/RDPSign/My Project/Resources.Designer.vb b/RDPSign/My Project/Resources.Designer.vb new file mode 100644 index 0000000..2e1730e --- /dev/null +++ b/RDPSign/My Project/Resources.Designer.vb @@ -0,0 +1,63 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + 'This class was auto-generated by the StronglyTypedResourceBuilder + 'class via a tool like ResGen or Visual Studio. + 'To add or remove a member, edit your .ResX file then rerun ResGen + 'with the /str option, or rebuild your VS project. + ''' + ''' A strongly-typed resource class, for looking up localized strings, etc. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' Returns the cached ResourceManager instance used by this class. + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("RDPSign.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' Overrides the current thread's CurrentUICulture property for all + ''' resource lookups using this strongly typed resource class. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/RDPSign/My Project/Resources.resx b/RDPSign/My Project/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/RDPSign/My Project/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RDPSign/My Project/Settings.Designer.vb b/RDPSign/My Project/Settings.Designer.vb new file mode 100644 index 0000000..d1e8261 --- /dev/null +++ b/RDPSign/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) + +#Region "My.Settings Auto-Save Functionality" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.RDPSign.My.MySettings + Get + Return Global.RDPSign.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/RDPSign/My Project/Settings.settings b/RDPSign/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/RDPSign/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/RDPSign/RDPSign.vb b/RDPSign/RDPSign.vb new file mode 100644 index 0000000..490e31f --- /dev/null +++ b/RDPSign/RDPSign.vb @@ -0,0 +1,125 @@ +Public Class RDPSign + Public ErrorNumber As Integer = 0 + Public ErrorString As String = "" + Sub main() + + End Sub + + ''' + ''' Get all Certificate friendly names + ''' + ''' String array of Certificate friendly names + Function GetCertificateFriendlyName() + Dim CertStoreLM As Security.Cryptography.X509Certificates.X509Store + Dim CertStoreCU As Security.Cryptography.X509Certificates.X509Store + CertStoreLM = GetCertificateStoreLM() + CertStoreCU = GetCertificateStoreCU() + + Dim FriendlyNames(CertStoreLM.Certificates.Count + CertStoreCU.Certificates.Count) As String + Dim Counter As Integer = 0 + For Each Certificate In CertStoreLM.Certificates + If Certificate.FriendlyName IsNot "" Then + FriendlyNames(Counter) = Certificate.FriendlyName + Counter = Counter + 1 + End If + Next + For Each Certificate In CertStoreCU.Certificates + If Certificate.FriendlyName IsNot "" Then + FriendlyNames(Counter) = Certificate.FriendlyName + Counter = Counter + 1 + End If + Next + Array.Resize(FriendlyNames, Counter) + Return FriendlyNames + End Function + + ''' + ''' Open the Local Machine certificate store and return it to the calling function/sub + ''' + ''' Certificate Store + Function GetCertificateStoreLM() + Dim CertStore As New Security.Cryptography.X509Certificates.X509Store(Security.Cryptography.X509Certificates.StoreLocation.LocalMachine) + CertStore.Open(Security.Cryptography.X509Certificates.OpenFlags.ReadOnly) + Return CertStore + End Function + + ''' + ''' Open the Current User certificate store and return it to the calling function/sub + ''' + ''' Certificate Store + Function GetCertificateStoreCU() + Dim CertStore As New Security.Cryptography.X509Certificates.X509Store(Security.Cryptography.X509Certificates.StoreLocation.CurrentUser) + CertStore.Open(Security.Cryptography.X509Certificates.OpenFlags.ReadOnly) + Return CertStore + End Function + + ''' + ''' Given a friendly name, find and return the associated thumbprint + ''' + ''' String of the Friendly Name of a certificate + ''' String of the thumbprint of the certificate + Function GetThumbprint(FriendlyName As String) + Dim Thumbprint As String + Dim CertStoreLM As Security.Cryptography.X509Certificates.X509Store + CertStoreLM = GetCertificateStoreLM() + For Each certificate In CertStoreLM.Certificates + If certificate.FriendlyName = FriendlyName Then + Thumbprint = certificate.Thumbprint + CertStoreLM.Close() + Return Thumbprint + End If + Next + CertStoreLM.Close() + Dim CertStoreCU As Security.Cryptography.X509Certificates.X509Store + CertStoreCU = GetCertificateStoreCU() + For Each certificate In CertStoreCU.Certificates + If certificate.FriendlyName = FriendlyName Then + Thumbprint = certificate.Thumbprint + CertStoreCU.Close() + Return Thumbprint + End If + Next + ' We could get here if something went wrong such as Certificate was removed from certificate store after it was loaded into the application + ' return an invalid thumbprint + Return "0000" + End Function + + ''' + ''' Sign an RDP file and make a backup of the unsigned one if requested + ''' + ''' Thumbprint used to sign RDP file + ''' Location of RDP file + ''' Boolean indicating if a backup should be created or not + Sub SignRDP(Thumbprint As String, RDPFileLocation As String, CreateBackup As Boolean) + If Thumbprint = "0000" Then + 'Invalid thumbprint, this should be handled on the application side, but just as a safety, return without doing any work if invalid thumbprint sent + Return + End If + If CreateBackup Then + Dim BackupFile = System.IO.Path.GetDirectoryName(RDPFileLocation) & "\" & System.IO.Path.GetFileNameWithoutExtension(RDPFileLocation) & "-Unsigned.rdp" + System.IO.File.Copy(RDPFileLocation, BackupFile, True) 'backup file with overwrite + End If + + 'If we get here, we should be good to run the command to sign the RDP file. + Dim Command As String = "C:\Windows\System32\rdpsign.exe" + Dim Arguments As String + Dim FileVersionInfo As FileVersionInfo = FileVersionInfo.GetVersionInfo(Command) + ' On my windows 10 computer, the argument is /sha256 instead of /sha1. /sha1 doesn't work. + ' On my windows 10 computer, the Product parts come in at 10.0.18362.1 + ' On a Windows Server 2008 R2 server I have access to, the argument is /sha1. + ' On a Windows Server 2008 R2 server I have access to, the Product parts come in at 6.1.7601.17514 which is lower than the windows 10 ones. + ' I do not have other versions of windows to test, so will need external testing for this. + ' Not sure where the version number switches over, but also not sure how to determine which method to use otherwise + If (FileVersionInfo.ProductMajorPart >= 10) Then + Arguments = " /sha256 " & Thumbprint & " """ & RDPFileLocation & """" + + Else + Arguments = " /sha1 " & Thumbprint & " """ & RDPFileLocation & """" + End If + Dim StartInfo As New ProcessStartInfo + StartInfo.FileName = Command + StartInfo.Arguments = Arguments + StartInfo.WindowStyle = ProcessWindowStyle.Hidden + Process.Start(StartInfo) + End Sub +End Class diff --git a/RDPSign/RDPSign.vbproj b/RDPSign/RDPSign.vbproj new file mode 100644 index 0000000..0c6503e --- /dev/null +++ b/RDPSign/RDPSign.vbproj @@ -0,0 +1,106 @@ + + + + + Debug + AnyCPU + {57DABB69-B1D3-445F-91E7-B0412ABAC218} + Library + RDPSign + RDPSign + 512 + Windows + v4.0 + true + + + + true + full + true + true + bin\Debug\ + RDPSign.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + pdbonly + false + true + true + bin\Release\ + RDPSign.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + On + + + Binary + + + Off + + + On + + + + + + + + + + + + + + + + + + + + + + + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + \ No newline at end of file diff --git a/remoteapp-tool/RemoteApp Tool.sln b/remoteapp-tool/RemoteApp Tool.sln index 0c0c61a..43e251d 100644 --- a/remoteapp-tool/RemoteApp Tool.sln +++ b/remoteapp-tool/RemoteApp Tool.sln @@ -1,9 +1,12 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Express 2012 for Windows Desktop +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29424.173 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "RemoteApp Tool", "RemoteApp Tool.vbproj", "{2D140FE4-0794-43AC-BE7B-9D918B3F9C61}" ProjectSection(ProjectDependencies) = postProject {785B6808-B2FE-4C18-9D63-6DAB46482374} = {785B6808-B2FE-4C18-9D63-6DAB46482374} + {57DABB69-B1D3-445F-91E7-B0412ABAC218} = {57DABB69-B1D3-445F-91E7-B0412ABAC218} {E1CB5F9C-230F-4967-8F19-335F8E4A4906} = {E1CB5F9C-230F-4967-8F19-335F8E4A4906} {258307D5-A407-4622-BF1A-BDCA8E3D2FAA} = {258307D5-A407-4622-BF1A-BDCA8E3D2FAA} EndProjectSection @@ -19,6 +22,8 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "RDP2MSI", "..\RDP2MSI\RDP2M EndProject Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "RDPFileLib", "..\RDPFileLib\RDPFileLib.vbproj", "{258307D5-A407-4622-BF1A-BDCA8E3D2FAA}" EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "RDPSign", "..\RDPSign\RDPSign.vbproj", "{57DABB69-B1D3-445F-91E7-B0412ABAC218}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -45,8 +50,15 @@ Global {258307D5-A407-4622-BF1A-BDCA8E3D2FAA}.Debug|Any CPU.Build.0 = Debug|Any CPU {258307D5-A407-4622-BF1A-BDCA8E3D2FAA}.Release|Any CPU.ActiveCfg = Release|Any CPU {258307D5-A407-4622-BF1A-BDCA8E3D2FAA}.Release|Any CPU.Build.0 = Release|Any CPU + {57DABB69-B1D3-445F-91E7-B0412ABAC218}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {57DABB69-B1D3-445F-91E7-B0412ABAC218}.Debug|Any CPU.Build.0 = Debug|Any CPU + {57DABB69-B1D3-445F-91E7-B0412ABAC218}.Release|Any CPU.ActiveCfg = Release|Any CPU + {57DABB69-B1D3-445F-91E7-B0412ABAC218}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {A28F1460-A9C1-44A4-A7C9-D8C210745F31} + EndGlobalSection EndGlobal diff --git a/remoteapp-tool/RemoteApp Tool.vbproj b/remoteapp-tool/RemoteApp Tool.vbproj index bd5dde1..6f10e15 100644 --- a/remoteapp-tool/RemoteApp Tool.vbproj +++ b/remoteapp-tool/RemoteApp Tool.vbproj @@ -276,6 +276,10 @@ {258307d5-a407-4622-bf1a-bdca8e3d2faa} RDPFileLib + + {57dabb69-b1d3-445f-91e7-b0412abac218} + RDPSign + {785b6808-b2fe-4c18-9d63-6dab46482374} RemoteAppLib diff --git a/remoteapp-tool/RemoteAppCreateClientConnection.Designer.vb b/remoteapp-tool/RemoteAppCreateClientConnection.Designer.vb index e532e3f..6fcae72 100644 --- a/remoteapp-tool/RemoteAppCreateClientConnection.Designer.vb +++ b/remoteapp-tool/RemoteAppCreateClientConnection.Designer.vb @@ -67,12 +67,18 @@ Partial Class RemoteAppCreateClientConnection Me.FileTypesGroupBox = New System.Windows.Forms.GroupBox() Me.FTACountLabel = New System.Windows.Forms.Label() Me.DisabledFTACheckBox = New System.Windows.Forms.CheckBox() + Me.GroupBoxSignRDP = New System.Windows.Forms.GroupBox() + Me.CertificateComboBox = New System.Windows.Forms.ComboBox() + Me.CertificateLabel = New System.Windows.Forms.Label() + Me.CheckBoxSignRDPDisabled = New System.Windows.Forms.CheckBox() + Me.CheckBoxCreateSignedAndUnsigned = New System.Windows.Forms.CheckBox() Me.ServerGroupBox.SuspendLayout() Me.RDGWGroupBox.SuspendLayout() Me.ClientConnectionGroupBox.SuspendLayout() Me.MSIGroupBox.SuspendLayout() Me.Panel1.SuspendLayout() Me.FileTypesGroupBox.SuspendLayout() + Me.GroupBoxSignRDP.SuspendLayout() Me.SuspendLayout() ' 'EditAfterSave @@ -107,7 +113,7 @@ Partial Class RemoteAppCreateClientConnection Me.CreateButton.Font = New System.Drawing.Font("Segoe UI", 9.0!) Me.CreateButton.ImageIndex = 6 Me.CreateButton.ImageList = Me.SmallerIcons - Me.CreateButton.Location = New System.Drawing.Point(416, 482) + Me.CreateButton.Location = New System.Drawing.Point(416, 546) Me.CreateButton.Name = "CreateButton" Me.CreateButton.Size = New System.Drawing.Size(80, 29) Me.CreateButton.TabIndex = 8 @@ -128,7 +134,7 @@ Partial Class RemoteAppCreateClientConnection Me.CancelEditButton.Font = New System.Drawing.Font("Segoe UI", 9.0!) Me.CancelEditButton.ImageIndex = 4 Me.CancelEditButton.ImageList = Me.SmallerIcons - Me.CancelEditButton.Location = New System.Drawing.Point(343, 482) + Me.CancelEditButton.Location = New System.Drawing.Point(343, 546) Me.CancelEditButton.Name = "CancelEditButton" Me.CancelEditButton.Size = New System.Drawing.Size(67, 29) Me.CancelEditButton.TabIndex = 7 @@ -397,7 +403,7 @@ Partial Class RemoteAppCreateClientConnection Me.TopLevelRadioButton.AutoSize = True Me.TopLevelRadioButton.Location = New System.Drawing.Point(366, 17) Me.TopLevelRadioButton.Name = "TopLevelRadioButton" - Me.TopLevelRadioButton.Size = New System.Drawing.Size(72, 19) + Me.TopLevelRadioButton.Size = New System.Drawing.Size(71, 19) Me.TopLevelRadioButton.TabIndex = 4 Me.TopLevelRadioButton.Text = "Top level" Me.TopLevelRadioButton.UseVisualStyleBackColor = True @@ -489,7 +495,7 @@ Partial Class RemoteAppCreateClientConnection Me.ResetButton.Font = New System.Drawing.Font("Segoe UI", 9.0!) Me.ResetButton.ImageIndex = 3 Me.ResetButton.ImageList = Me.SmallerIcons - Me.ResetButton.Location = New System.Drawing.Point(126, 482) + Me.ResetButton.Location = New System.Drawing.Point(126, 546) Me.ResetButton.Name = "ResetButton" Me.ResetButton.Size = New System.Drawing.Size(121, 29) Me.ResetButton.TabIndex = 6 @@ -504,7 +510,7 @@ Partial Class RemoteAppCreateClientConnection Me.SaveButton.Font = New System.Drawing.Font("Segoe UI", 9.0!) Me.SaveButton.ImageIndex = 0 Me.SaveButton.ImageList = Me.SmallerIcons - Me.SaveButton.Location = New System.Drawing.Point(12, 482) + Me.SaveButton.Location = New System.Drawing.Point(12, 546) Me.SaveButton.Name = "SaveButton" Me.SaveButton.Size = New System.Drawing.Size(108, 29) Me.SaveButton.TabIndex = 5 @@ -543,6 +549,64 @@ Partial Class RemoteAppCreateClientConnection Me.DisabledFTACheckBox.Text = "Disabled" Me.DisabledFTACheckBox.UseVisualStyleBackColor = True ' + 'GroupBoxSignRDP + ' + Me.GroupBoxSignRDP.Controls.Add(Me.CheckBoxCreateSignedAndUnsigned) + Me.GroupBoxSignRDP.Controls.Add(Me.CertificateComboBox) + Me.GroupBoxSignRDP.Controls.Add(Me.CertificateLabel) + Me.GroupBoxSignRDP.Controls.Add(Me.CheckBoxSignRDPDisabled) + Me.GroupBoxSignRDP.Location = New System.Drawing.Point(12, 477) + Me.GroupBoxSignRDP.Name = "GroupBoxSignRDP" + Me.GroupBoxSignRDP.Size = New System.Drawing.Size(482, 63) + Me.GroupBoxSignRDP.TabIndex = 4 + Me.GroupBoxSignRDP.TabStop = False + Me.GroupBoxSignRDP.Text = "Sign RDP" + ' + 'CertificateComboBox + ' + Me.CertificateComboBox.BackColor = System.Drawing.Color.WhiteSmoke + Me.CertificateComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.CertificateComboBox.Enabled = False + Me.CertificateComboBox.FormattingEnabled = True + Me.CertificateComboBox.Location = New System.Drawing.Point(268, 25) + Me.CertificateComboBox.Name = "CertificateComboBox" + Me.CertificateComboBox.Size = New System.Drawing.Size(191, 23) + Me.CertificateComboBox.TabIndex = 24 + ' + 'CertificateLabel + ' + Me.CertificateLabel.AutoSize = True + Me.CertificateLabel.Location = New System.Drawing.Point(205, 28) + Me.CertificateLabel.Name = "CertificateLabel" + Me.CertificateLabel.Size = New System.Drawing.Size(64, 15) + Me.CertificateLabel.TabIndex = 23 + Me.CertificateLabel.Text = "Certificate:" + ' + 'CheckBoxSignRDPDisabled + ' + Me.CheckBoxSignRDPDisabled.AutoSize = True + Me.CheckBoxSignRDPDisabled.Checked = True + Me.CheckBoxSignRDPDisabled.CheckState = System.Windows.Forms.CheckState.Checked + Me.CheckBoxSignRDPDisabled.Location = New System.Drawing.Point(10, 22) + Me.CheckBoxSignRDPDisabled.Name = "CheckBoxSignRDPDisabled" + Me.CheckBoxSignRDPDisabled.Size = New System.Drawing.Size(71, 19) + Me.CheckBoxSignRDPDisabled.TabIndex = 0 + Me.CheckBoxSignRDPDisabled.Text = "Disabled" + Me.CheckBoxSignRDPDisabled.UseVisualStyleBackColor = True + ' + 'CheckBoxCreateSignedAndUnsigned + ' + Me.CheckBoxCreateSignedAndUnsigned.AutoSize = True + Me.CheckBoxCreateSignedAndUnsigned.Checked = True + Me.CheckBoxCreateSignedAndUnsigned.CheckState = System.Windows.Forms.CheckState.Checked + Me.CheckBoxCreateSignedAndUnsigned.Enabled = False + Me.CheckBoxCreateSignedAndUnsigned.Location = New System.Drawing.Point(10, 38) + Me.CheckBoxCreateSignedAndUnsigned.Name = "CheckBoxCreateSignedAndUnsigned" + Me.CheckBoxCreateSignedAndUnsigned.Size = New System.Drawing.Size(175, 19) + Me.CheckBoxCreateSignedAndUnsigned.TabIndex = 25 + Me.CheckBoxCreateSignedAndUnsigned.Text = "Create Signed and Unsigned" + Me.CheckBoxCreateSignedAndUnsigned.UseVisualStyleBackColor = True + ' 'RemoteAppCreateClientConnection ' Me.AcceptButton = Me.CreateButton @@ -550,7 +614,8 @@ Partial Class RemoteAppCreateClientConnection Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.BackColor = System.Drawing.Color.White Me.CancelButton = Me.CancelEditButton - Me.ClientSize = New System.Drawing.Size(507, 523) + Me.ClientSize = New System.Drawing.Size(507, 587) + Me.Controls.Add(Me.GroupBoxSignRDP) Me.Controls.Add(Me.FileTypesGroupBox) Me.Controls.Add(Me.MSIGroupBox) Me.Controls.Add(Me.ClientConnectionGroupBox) @@ -579,6 +644,8 @@ Partial Class RemoteAppCreateClientConnection Me.Panel1.PerformLayout() Me.FileTypesGroupBox.ResumeLayout(False) Me.FileTypesGroupBox.PerformLayout() + Me.GroupBoxSignRDP.ResumeLayout(False) + Me.GroupBoxSignRDP.PerformLayout() Me.ResumeLayout(False) End Sub @@ -625,4 +692,9 @@ Partial Class RemoteAppCreateClientConnection Friend WithEvents FileTypesGroupBox As System.Windows.Forms.GroupBox Friend WithEvents DisabledFTACheckBox As System.Windows.Forms.CheckBox Friend WithEvents FTACountLabel As System.Windows.Forms.Label + Friend WithEvents GroupBoxSignRDP As GroupBox + Friend WithEvents CheckBoxSignRDPDisabled As CheckBox + Friend WithEvents CertificateComboBox As ComboBox + Friend WithEvents CertificateLabel As Label + Friend WithEvents CheckBoxCreateSignedAndUnsigned As CheckBox End Class diff --git a/remoteapp-tool/RemoteAppCreateClientConnection.resx b/remoteapp-tool/RemoteAppCreateClientConnection.resx index f652c5b..a2a3999 100644 --- a/remoteapp-tool/RemoteAppCreateClientConnection.resx +++ b/remoteapp-tool/RemoteAppCreateClientConnection.resx @@ -124,152 +124,152 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2 - IQAAAk1TRnQBSQFMAgEBBwEAAdABAQHQAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADy + IQAAAk1TRnQBSQFMAgEBBwEAAeABAQHgAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA AwABIAMAAQEBAAEgBgABIF4AAyABLwMjATMDIwEzAyMBMwMjATMDIwEzAyMBMwMjATMDIwEzAxkBIysA - AQEDQgF0A1gBwQNYAe8DWAHvA1gBwQNCAXQDAAEBUAADKgFBAwYBCBgAAwYBCAMqAUEUAAMIAQsBagFh - AVQB8AG2AYQBPgH/AbUBgwE6Af8BtgGCATkB/wG2AYIBOQH/AbYBggE5Af8BtgGCATkB/wG1AYMBOgH/ - AbYBhAE+Af8CWgFYAcAnAAEBA1oBwAOLAf8BuQK6Af8D3AH/A9kB/wO1Af8BhgKHAf8DWgHAAwABAUgA - AyoBQQFAAT0B8gH/AkABwQH9AwYBCBAAAwYBCAIrAbUB/AEiASAB6gH/AyoBQRAAAykBPwG2AYQBPiH/ - AbYBhAE+Af8YAAG5Ar8B/wG5Ar8B/wGyArcB/wGLAY0BjgH/AY0BjgGNAf8BxQHgAcsB/wHOAeMB0gH/ - Ae4C7wH/AewB7QHsAf8B6gLpAf8D5wH/A4cB/wNCAXREAAMqAUEBSQFHAfUB/wFUAVIB+gH/AUkBRgH2 - Af8BMgExAbkB/AMGAQgIAAMGAQgCKwG2AfwBMgEwAfEB/wE9ATsB9gH/ASIBIAHqAf8DKgFBDAADJwE7 - AbUBgwE6Bf8BAAExAfIB/wEDAVcB8wH/ARYBmgH2Af8BGgGmAfgB/wEJAWYB9AH/AQABLAHyBf8BtQGD - AToB/xgAA0cBggPYAf8BzQHUAdUB/wFvAXABcQH/A8MB/wFdAbkBbAH/AQABjgEUAf8B3QHrAeAB/wPx - Af8B1wHlAdoB/wHfAecB4QH/ArcBuAH/A1gBwUQAAx4BKwFMAUkB9gH/AVYBUwH6Af8BYgFhAv8BSgFH - AfYB/wEyATEBuQH8AwYBCAMGAQgCKwG3AfwBOAE2AfIB/wFUAVMC/wE7ATkB9AH/ASABHgHpAf8DHgEr - DAADJAE2AbYBgwE6Bf8BHAFDAfIB/wEmAWoB8gH/AR8BkwH0Af8BIwGaAfQB/wEWAWgB8QH/AQABLwHw - Bf8BtgGDATkB/wMjATMDIwEzAxkBIxAAAyQBNgNHAYIDUQH/A+wB/wP7Af8BEwGYASkB/wFIAbABWQH/ - A/UB/wEAAZABGAH/AVABsQFgAf8B3gHfAd4B/wNYAe9IAAMeASsBTAFKAfYB/wFXAVQB+gH/AWUBYgL/ - AUsBSQH2Af8BMwEyAbkB/AJAAcAB/QFBAT4B9AH/AVkBWAL/AUEBPwH1Af8BJwElAesB/wMeASsIAAMZ - BCMBMwMxAU8BtgGDAToD/wH8Af8BEAEwAfAB/wFCAXAB8gH/AUMBkwH0Af8BKAGDAfIB/wEMAU4B8AH/ - AQABJAHwA/8B+wH/AbUBgAE2Af8BtQGDAT0B/wG2AYQBPwH/AloBWAHAA0gBhgG+AsQB/wG8AsEB/wG5 - Ab0BvgH/AbcBugG7Af8BtAK4Af8DUgH/A+4B/wFiAb0BcAH/AQkBlAEgAf8B5QHxAeYB/wEAAZABFwH/ - ARcBmgEtAf8B6QHvAeoB/wPiAf8DWAHvTAADHgErAU0BSwH2Af8BWAFVAfoB/wFlAWMC/wFkAWEC/wFh - AV8C/wFfAV0C/wFIAUYB9wH/ATABLgHuAf8DHgErDAACWgFYAcABtQGFAUAB/wG1AYQBPwH/AbUBggE3 - A/8B+wH/AQEBFQHuAf8BMQFTAfAB/wFOAYUB8wH/AWUBlQH0Af8BgwGaAfYB/wGAAY0B+QP/AfkB/wG1 - AW0BMQn/AbYBhAE+Af8BygHSAdMB/wHJAdIB0wH/AckB0AHTAf8ByAHRAdIB/wHHAdAB0QH/AcYB0AHR - Af8BbwJyAf8DxgH/Ac8B6QHUAf8B5gH0AekB/wH9Av4B/wHLAeYBzwH/AQABjQESAf8BVAG1AWQB/wHA - AcEBwAH/A1gBwVAAAx4BKwFOAUwB9wH/AWoBZwL/AUoBRwL/AUgBRQL/AWMBYQL/ATkBNwHwAf8DHgEr - EAABtQGEAT8F/wH2AfAB6QH/AbIBcAE0A/8B/QH/AgAB7AH/AR4BMQHtAf8BOgFRAfAB/wFNAWQB8gH/ - AV0BbAH0Af8BYwFmAfYD/wH8Af8BvAFtATEB/wEAAa4BgAX/AbYBggE8Af8BygHSAdQB/wGsAq8B/wGG - AgAB/wGLAgAB/wGHAgAB/wGLAgAB/wGGAh0B/wOQAf8B8gH5AfMJ/wH+Af8B/gH/AcsB5wHRAf8BqwHR - AbIB/wOPAf8DQgF0UAADBgEIAUoBSQHKAf0BbgFqAv8BTwFMAv8BTAFJAv8BZwFlAv8CQAHDAf0DBgEI - EAABtAGCATwF/wHnAZsBJgH/AbEBcAE3Bf8CAAHtAf8CAAHuAf8BGAEfAfAB/wEuATYB8gH/AUEBQwH1 - Af8BTwFOAfcF/wHAAW4BNAH/AQABrQGBBf8BtgGCATwB/wHMAdMB1QH/AaoBrAGtAf8BmwEcARIB/wGc - ASABFAH/AZsBCAEAAf8BqAEIAQAB/wGyAQoBAAH/AZwBcgFtAf8DkAH/A8YB/wPuAf8D7gH/A8YB/wOQ - Af8DWgHAAwABAUwAAwYBCAFXAVMBvQH8AWEBXgH7Af8BgAFvAv8BbwFsAv8BbQFqAv8BagFoAv8BTwFN - AfcB/wE1ATMBuQH8AwYBCAwAAbMBggE9Bf8B5gGeAS8B/wGvAYABPQP/AfYD/wHtA/8B6wP/AeoD/wHq - A/8B6gP/AewD/wHzAf8BwgFuATUB/wEAAasBbwX/AbYBggE8Af8BzAHTAdUB/wGoAqoB/wGlATQBKgH/ - AZ8BHwEUAf8BowEHAQAB/wGyAQoBAAH/AcABEAEAAf8B3wFqAVgB/wG3AYoBggH/AYgBZgFiAf8BWAFS - AVEB/wFXAVEBTwH/AXECdAH/AY8CkAH/AwABAUwAAwYBCAFfAVwBvwH8AWgBZQH9Af8BhgGCAv8BZwFk - AfwB/wFVAVMB+AH/AVEBTgH3Af8BXgFbAfoB/wFsAWoC/wFRAU4B9wH/ATUBNAG5AfwDBgEICAABswGC - AT0F/wHyAaEBIgH/Ab0BiwFGAf8BrwGAAT8B/wGvAXABOQH/AbABbwE3Af8BrwFuATUB/wGxAW4BMwH/ - AbcBcAE2Af8BvQFwATYB/wHBAW8BNgH/AaYBnwFjAf8BZgHTAb0F/wG1AYIBPAH/Ac4B1AHVAf8BogKk - Af8BrAE7ATIB/wGhARIBBQH/Aa0BBgEAAf8BvgENAQAB/wHPAR0BAwH/AfABmgGLAf8B9wG0AagB/wH5 - Aa4BngH/Af4BtQGnAf8B+AGlAZIB/wHCAc4BzwH/AaoCrAH/TAADBgEIAVcBVAHSAf0BbgFrAf4B/wGK - AYcC/wFtAWoB/QH/AV0BWgH7Af8DHgErAx4BKwFSAU8B+AH/AV8BXQH6Af8BbgFrAv8BUgFQAfcB/wE2 - ATQBugH8AwQBBQQAAbMBggE9Bf8B8QGXAQ0B/wH4AbIBQwH/Af0BwQFjAf8B/gHKAYIB/wH+Ac4BigH/ - Af0BywGFBf8BvAFwATkB/wEeAcABoAH/AT4ByAGqAf8BVAHJAa8B/wFcAcoBsAX/AbUBgQE7Af8BzQHU - AdYB/wGhAqMB/wGoASIBGAH/AasBCgEAAf8BwgEQAQAB/wHVAQ8BAAH/AeoBNwEaAf8B/gHBAbQC/wHK - Ab0C/wHJAbgC/wHPAcAB/wH8Ab8BqwH/AcMBzgHPAf8BrAGuAa8B/0wAAxYBHwFrAWgC/wGBAW8C/wGB - AW8B/gH/AWUBYgH9Af8DHgErCAADHgErAVMBUAH4Af8BYAFeAfsB/wFvAW0C/wFTAVAB+AH/A0ABbwMB - AQIBswGDAT0F/wHsAYoBAAH/AfEBoQEnAf8B9QGxAUYB/wH2AbkBVwH/AfcBvwFjAf8B9gG/AWMF/wG6 - AW0BNQH/AQUBrwGLAf8BJQG2AZMB/wE6AboBnQH/AUoBwQGlBf8BtQGCATwB/wHOAdQB1gH/AaACoQH/ - AagBBQEAAf8BuQEJAQAB/wHQARgBAAH/AeIBDgEAAf8B+AFhAUwC/wHmAeAC/wHgAdgC/wHlAdwC/wHr - AeIB/wH9AdUByAH/AcQBzgHQAf8BrwKyAf9QAAMWAR8BawFoAv8BagFnAf4B/wMeASsQAAMeASsBVQFS - AfgB/wFbAVkB+QH/AVMBUgFTAagDHQEpBAABtAGDAT4F/wHpAW4BAAH/Ae0BjwEAAf8B7wGeAR0B/wHx - AagBMwH/AfMBrwFCAf8B9AG1AU8F/wG0AW0BNQP/AfsD/wH2A/8B8wP/AfID/wH4Af8BtQGEAUAB/wHO - AdQB1gH/AaACoQH/Aa0CAAH/AcQBAwEAAf8B2gEGAQAB/wHyAQoBAAL/AYgBYAL/AdQBvgL/AcYBqgL/ + AQEDQgF0A1gBwQNYAe8DWAHvA1gBwQNCAXQDAAEBUAADKgFBAwYBCBgAAwYBCAMqAUEUAAMIAQsBaAFd + AVQB8AG2AYQBPAH/AbUBgwE4Af8BtgGCATcB/wG2AYIBNwH/AbYBggE3Af8BtgGCATcB/wG1AYMBOAH/ + AbYBhAE8Af8CWgFYAcAnAAEBA1oBwAOLAf8BuQK6Af8D3AH/A9kB/wO1Af8BhgKHAf8DWgHAAwABAUgA + AyoBQQE+ATsB8gH/AkABvQH9AwYBCBAAAwYBCAIrAbEB/AEgAR4B6gH/AyoBQRAAAykBPwG2AYQBPCH/ + AbYBhAE8Af8YAAG5Ar8B/wG5Ar8B/wGyArcB/wGLAY0BjgH/AY0BjgGNAf8BxQHgAcsB/wHOAeMB0gH/ + Ae4C7wH/AewB7QHsAf8B6gLpAf8D5wH/A4cB/wNCAXREAAMqAUEBRwFFAfUB/wFSAVAB+gH/AUcBRAH2 + Af8BMAEvAbUB/AMGAQgIAAMGAQgCKwGyAfwBMAEuAfEB/wE7ATkB9gH/ASABHgHqAf8DKgFBDAADJwE7 + AbUBgwE4Bf8BAAEvAfIB/wEBAVUB8wH/ARQBmgH2Af8BGAGmAfgB/wEHAWQB9AH/AQABKgHyBf8BtQGD + ATgB/xgAA0cBggPYAf8BzQHUAdUB/wFtAW4BbwH/A8MB/wFbAbkBagH/AQABjgESAf8B3QHrAeAB/wPx + Af8B1wHlAdoB/wHfAecB4QH/ArcBuAH/A1gBwUQAAx4BKwFKAUcB9gH/AVQBUQH6Af8BYAFfAv8BSAFF + AfYB/wEwAS8BtQH8AwYBCAMGAQgCKwGzAfwBNgE0AfIB/wFSAVEC/wE5ATcB9AH/AR4BHAHpAf8DHgEr + DAADJAE2AbYBgwE4Bf8BGgFBAfIB/wEkAWgB8gH/AR0BkwH0Af8BIQGaAfQB/wEUAWYB8QH/AQABLQHw + Bf8BtgGDATcB/wMjATMDIwEzAxkBIxAAAyQBNgNHAYIDTwH/A+wB/wP7Af8BEQGYAScB/wFGAbABVwH/ + A/UB/wEAAZABFgH/AU4BsQFeAf8B3gHfAd4B/wNYAe9IAAMeASsBSgFIAfYB/wFVAVIB+gH/AWMBYAL/ + AUkBRwH2Af8BMQEwAbUB/AJAAb0B/QE/ATwB9AH/AVcBVgL/AT8BPQH1Af8BJQEjAesB/wMeASsIAAMZ + BCMBMwMxAU8BtgGDATgD/wH8Af8BDgEuAfAB/wFAAW4B8gH/AUEBkwH0Af8BJgGDAfIB/wEKAUwB8AH/ + AQABIgHwA/8B+wH/AbUBgAE0Af8BtQGDATsB/wG2AYQBPQH/AloBWAHAA0gBhgG+AsQB/wG8AsEB/wG5 + Ab0BvgH/AbcBugG7Af8BtAK4Af8DUAH/A+4B/wFgAb0BbgH/AQcBlAEeAf8B5QHxAeYB/wEAAZABFQH/ + ARUBmgErAf8B6QHvAeoB/wPiAf8DWAHvTAADHgErAUsBSQH2Af8BVgFTAfoB/wFjAWEC/wFiAV8C/wFf + AV0C/wFdAVsC/wFGAUQB9wH/AS4BLAHuAf8DHgErDAACWgFYAcABtQGFAT4B/wG1AYQBPQH/AbUBggE1 + A/8B+wH/AQABEwHuAf8BLwFRAfAB/wFMAYUB8wH/AWMBlQH0Af8BgwGaAfYB/wGAAY0B+QP/AfkB/wG1 + AWsBLwn/AbYBhAE8Af8BygHSAdMB/wHJAdIB0wH/AckB0AHTAf8ByAHRAdIB/wHHAdAB0QH/AcYB0AHR + Af8BbQJwAf8DxgH/Ac8B6QHUAf8B5gH0AekB/wH9Av4B/wHLAeYBzwH/AQABjQEQAf8BUgG1AWIB/wHA + AcEBwAH/A1gBwVAAAx4BKwFMAUoB9wH/AWgBZQL/AUgBRQL/AUYBQwL/AWEBXwL/ATcBNQHwAf8DHgEr + EAABtQGEAT0F/wH2AfAB6QH/AbIBbgEyA/8B/QH/AgAB7AH/ARwBLwHtAf8BOAFPAfAB/wFLAWIB8gH/ + AVsBagH0Af8BYQFkAfYD/wH8Af8BvAFrAS8B/wEAAa4BgAX/AbYBggE6Af8BygHSAdQB/wGsAq8B/wGG + AgAB/wGLAgAB/wGHAgAB/wGLAgAB/wGGAhsB/wOQAf8B8gH5AfMJ/wH+Af8B/gH/AcsB5wHRAf8BqwHR + AbIB/wOPAf8DQgF0UAADBgEIAUgBRwHEAf0BbAFoAv8BTQFKAv8BSgFHAv8BZQFjAv8CQAG+Af0DBgEI + EAABtAGCAToF/wHnAZsBJAH/AbEBbgE1Bf8CAAHtAf8CAAHuAf8BFgEdAfAB/wEsATQB8gH/AT8BQQH1 + Af8BTQFMAfcF/wHAAWwBMgH/AQABrQGBBf8BtgGCAToB/wHMAdMB1QH/AaoBrAGtAf8BmwEaARAB/wGc + AR4BEgH/AZsBBgEAAf8BqAEGAQAB/wGyAQgBAAH/AZwBcAFrAf8DkAH/A8YB/wPuAf8D7gH/A8YB/wOQ + Af8DWgHAAwABAUwAAwYBCAFVAU8BuQH8AV8BXAH7Af8BgAFtAv8BbQFqAv8BawFoAv8BaAFmAv8BTQFL + AfcB/wEzATEBtQH8AwYBCAwAAbMBggE7Bf8B5gGeAS0B/wGvAYABOwP/AfYD/wHtA/8B6wP/AeoD/wHq + A/8B6gP/AewD/wHzAf8BwgFsATMB/wEAAasBbQX/AbYBggE6Af8BzAHTAdUB/wGoAqoB/wGlATIBKAH/ + AZ8BHQESAf8BowEFAQAB/wGyAQgBAAH/AcABDgEAAf8B3wFoAVYB/wG3AYoBggH/AYgBZAFgAf8BVgFQ + AU8B/wFVAU8BTQH/AW8CcgH/AY8CkAH/AwABAUwAAwYBCAFdAVoBuwH8AWYBYwH9Af8BhgGCAv8BZQFi + AfwB/wFTAVEB+AH/AU8BTAH3Af8BXAFZAfoB/wFqAWgC/wFPAUwB9wH/ATMBMgG1AfwDBgEICAABswGC + ATsF/wHyAaEBIAH/Ab0BiwFEAf8BrwGAAT0B/wGvAW4BNwH/AbABbQE1Af8BrwFsATMB/wGxAWwBMQH/ + AbcBbgE0Af8BvQFuATQB/wHBAW0BNAH/AaYBnwFhAf8BZAHTAb0F/wG1AYIBOgH/Ac4B1AHVAf8BogKk + Af8BrAE5ATAB/wGhARABAwH/Aa0BBAEAAf8BvgELAQAB/wHPARsBAQH/AfABmgGLAf8B9wG0AagB/wH5 + Aa4BngH/Af4BtQGnAf8B+AGlAZIB/wHCAc4BzwH/AaoCrAH/TAADBgEIAVQBUgHMAf0BbAFpAf4B/wGK + AYcC/wFrAWgB/QH/AVsBWAH7Af8DHgErAx4BKwFQAU0B+AH/AV0BWwH6Af8BbAFpAv8BUAFOAfcB/wE0 + ATIBtgH8AwQBBQQAAbMBggE7Bf8B8QGXAQsB/wH4AbIBQQH/Af0BwQFhAf8B/gHKAYIB/wH+Ac4BigH/ + Af0BywGFBf8BvAFuATcB/wEcAcABoAH/ATwByAGqAf8BUgHJAa8B/wFaAcoBsAX/AbUBgQE5Af8BzQHU + AdYB/wGhAqMB/wGoASABFgH/AasBCAEAAf8BwgEOAQAB/wHVAQ0BAAH/AeoBNQEYAf8B/gHBAbQC/wHK + Ab0C/wHJAbgC/wHPAcAB/wH8Ab8BqwH/AcMBzgHPAf8BrAGuAa8B/0wAAxYBHwFpAWYC/wGBAW0C/wGB + AW0B/gH/AWMBYAH9Af8DHgErCAADHgErAVEBTgH4Af8BXgFcAfsB/wFtAWsC/wFRAU4B+AH/A0ABbwMB + AQIBswGDATsF/wHsAYoBAAH/AfEBoQElAf8B9QGxAUQB/wH2AbkBVQH/AfcBvwFhAf8B9gG/AWEF/wG6 + AWsBMwH/AQMBrwGLAf8BIwG2AZMB/wE4AboBnQH/AUgBwQGlBf8BtQGCAToB/wHOAdQB1gH/AaACoQH/ + AagBAwEAAf8BuQEHAQAB/wHQARYBAAH/AeIBDAEAAf8B+AFfAUoC/wHmAeAC/wHgAdgC/wHlAdwC/wHr + AeIB/wH9AdUByAH/AcQBzgHQAf8BrwKyAf9QAAMWAR8BaQFmAv8BaAFlAf4B/wMeASsQAAMeASsBUwFQ + AfgB/wFZAVcB+QH/AVMBUgFTAagDHQEpBAABtAGDATwF/wHpAWwBAAH/Ae0BjwEAAf8B7wGeARsB/wHx + AagBMQH/AfMBrwFAAf8B9AG1AU0F/wG0AWsBMwP/AfsD/wH2A/8B8wP/AfID/wH4Af8BtQGEAT4B/wHO + AdQB1gH/AaACoQH/Aa0CAAH/AcQBAQEAAf8B2gEEAQAB/wHyAQgBAAL/AYgBXgL/AdQBvgL/AcYBqgL/ AcQBpgL/AcABnwH/AfsBrwGNAf8BxQHOAdAB/wGxAbQBtQH/VAADFgEfAx4BKxgAAx4BKwNAAW8DKQE+ - CAABtQGFAUED/wH8A/8B/Qf/Af4D/wH8A/8B+gP/AfcD/wH5Af8BtAGCATwB/wG2AYQBPwH/AbYBgwE9 - Af8BtQGCAT0B/wG1AYMBPQH/AbUBhAFAAf8DVQGwAc4B1AHWAf8BoAKhAf8BoAKhAf8BoAKhAf8BoQGi + CAABtQGFAT8D/wH8A/8B/Qf/Af4D/wH8A/8B+gP/AfcD/wH5Af8BtAGCAToB/wG2AYQBPQH/AbYBgwE7 + Af8BtQGCATsB/wG1AYMBOwH/AbUBhAE+Af8DVQGwAc4B1AHWAf8BoAKhAf8BoAKhAf8BoAKhAf8BoQGi AaMB/wGjAqUB/wGlAqcB/wGsAq8B/wGvArEB/wGxAbQBtQH/AbQCuAH/AbYBuwG8Af8BxQHPAdEB/wGz - AbcBuAH/eAADBwEKDAABaAFiAVgB7wG1AYUBQQH/AbMBgwE/Af8BswGDAT8B/wGzAYMBPwH/AbMBgwE+ - Af8BswGDAT4B/wGzAYMBPgH/AbUBhAFAAf8CZAFcAecYAANDAXgBzgHUAdYB/wHOAdQB1gH/Ac4B1AHW + AbcBuAH/eAADBwEKDAABZQFiAVgB7wG1AYUBPwH/AbMBgwE9Af8BswGDAT0B/wGzAYMBPQH/AbMBgwE8 + Af8BswGDATwB/wGzAYMBPAH/AbUBhAE+Af8CZAFcAecYAANDAXgBzgHUAdYB/wHOAdQB1gH/Ac4B1AHW Af8BzQHUAdYB/wHNAdMB1QH/Ac0B0wHVAf8BygHSAdQB/wHKAdIB0wH/AckB0QHTAf8ByAHRAdIB/wHH AdAB0QH/AcYBzwHRAf8DTgGVTAADHwEtAzABSwMvAUoDLwFKAy8BSQMyAVEDNgFZAzYBWQM2AVkDNgFZ AzYBWQM1AVcDMQFOAyYBOQsAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wMAAf8DAAH/GAADFAEcAyABLgMg - AS4DIAEuASIBJQExAf8DWQHHA0IBdAM3AVsDNQFYAzMBUgMvAUoDKwFCAyABLgMUARxIAANSAaQE/wH1 - AfQB8wH/AfYB9QH0Bf8BRAFDAUUB/wEbARoBHQX/AfsC+gH/AvsB+gH/AfsC+gX/ApYBlwH/A1oB2AgA + AS4DIAEuASABIwEvAf8DWQHHA0IBdAM3AVsDNQFYAzMBUgMvAUoDKwFCAyABLgMUARxIAANSAaQE/wH1 + AfQB8wH/AfYB9QH0Bf8BQgFBAUMB/wEZARgBGwX/AfsC+gH/AvsB+gH/AfsC+gX/ApYBlwH/A1oB2AgA A4YB/wPAAf8DAAH/AwAB/wOGCf8DwAH/AQAD/wEAAf8BAAH/AwAB/xgAAeIBuAGZAf8B4gG5AZgB/wHi - AbgBmQH/AU8BXgGdAf8BRwFXAZIB/wFDAVIBkgH/ATIBVQGeAf8BygGsAZgB/wHiAbgBmAH/AeIBuQGZ - Af8B4gG5AZgB/wHiAbgBmAH/GAADDAEQA0QBewJdAVoBygFiAVkBQAH1AWIBXgE2AfYCXAFZAcwDRQF9 - Aw0BERQAA1ABngH7AfoB+QH/Ae4C7QH/AfAB7wHuAf8B/gH9AfwB/wFDAUIBRAH/ARoBGQEbAf8C8AHv + AbgBmQH/AU0BXAGdAf8BRQFVAZIB/wFBAVABkgH/ATABUwGeAf8BygGsAZgB/wHiAbgBmAH/AeIBuQGZ + Af8B4gG5AZgB/wHiAbgBmAH/GAADDAEQA0QBewJdAVoBygFeAVkBQgH1AWIBXgE4AfYCXAFZAcwDRQF9 + Aw0BERQAA1ABngH7AfoB+QH/Ae4C7QH/AfAB7wHuAf8B/gH9AfwB/wFBAUABQgH/ARgBFwEZAf8C8AHv Af8C6AHnAf8C6AHnAf8C6AHnAf8B9QH0AfMB/wGPAY4BjwH/A1oB5AgAA4YB/wPAAf8DAAH/A4YB/wPA Af8DwAX/A8AB/wEAAf8BAAH/A8AB/wPAAf8DAAH/FAAB4wG7AZsB/wH4AeABvgH/AfgB4AG+Af8BmwGf - Aa4B/wFbAW0BqQH/AUkBZQGgAf8BAAFcAbAB/wEAAWUBvwH/AfgB4QG+Af8B+AHgAb8B/wH4AeEBvgH/ - AeMBugGaAf8UAAM0AVQCXQFNAfABgAFWAQEB/wGAAVYBAQH/AYABVgEBAf8BgAFWAQEB/wGAAVYBAQH/ - AWQBXwFKAfMCWAFWAcEDIQEwEAADUAGeAfsC+gH/Ae8B7gHtAf8C8AHvAf8B/gH9AfwB/wGGAYQBhQH/ - AScBJgEnAf8C9QH0Af8C7QHsAf8C7QHsAf8B7gHtAewB/wL6AfkB/wGUAZMBlAH/A1sB4QgAA4YB/wPA + Aa4B/wFZAWsBqQH/AUcBYwGgAf8BAAFaAbAB/wEAAWMBvwH/AfgB4QG+Af8B+AHgAb8B/wH4AeEBvgH/ + AeMBugGaAf8UAAM0AVQCXQFOAfABgAFUAQAB/wGAAVQBAAH/AYABVAEAAf8BgAFUAQAB/wGAAVQBAAH/ + AWABXwFMAfMCWAFWAcEDIQEwEAADUAGeAfsC+gH/Ae8B7gHtAf8C8AHvAf8B/gH9AfwB/wGGAYQBhQH/ + ASUBJAElAf8C9QH0Af8C7QHsAf8C7QHsAf8B7gHtAewB/wL6AfkB/wGUAZMBlAH/A1sB4QgAA4YB/wPA Af8DAAH/A4YB/wPAAf8DwAH/A8AB/wMAAf8BAAH/AQAD/wEAA/8BAAH/AwAB/xQAAeQBvQGcAf8B+AHh - Ab8B/wHzAdYBsgH/AcIBuAGuAf8BSAFoAawB/wEaAcAB+AH/AQABlwHXAf8BAAFnAdQB/wEAAWcBwQH/ - AfMB1gGyAf8B+AHhAb8B/wHkAb0BnQH/EAADNAFUAYQBWQECAf8BhwFcAQMB/wGHAVwBAwH/AYcBXAED - Af8BhwFcAQMB/wF/AWsBEgH+AWEBXQFOAfACWgFXAcUDSwGOAjUBNAFVAwoBDQwAA1ABngH9AfwB+wH/ - AvAB7wH/AfIC8QH/Af4C/QH/AZIBkAGRAf8BGQEXARgB/wGsAasBqgH/AawBqwGqAf8BrAGrAaoB/wGq - AqkB/wGtAawBqwH/ATEBLwEwAf8DWwHhCAADhgH/A8AB/wMAAf8DhgH/A8AB/wPAA/8BAAH/AwAB/wMA - Af8DwAH/A8AB/wMAAf8UAAHmAcABnwH/AfgB4gHBAf8B2QG+AZ0B/wHZAb4BngH/AZYBpwGrAf8BAAFj - AcQB/wEVAdMC/wEAAbMB7gH/AQABZwHUAf8BAAFpAcIB/wH4AeEBwAH/AeYBwAGfAf8MAAMNARIBYQFd - AU4B8AGQAWMBBgH/AZABYwEGAf8BkAFjAQYB/wGZAWoBBgH/AZYBaAEEAf8BZgFgAVkB6wJZAVYBvgNI - AYYCMQEwAU0DFAEcAwEBAgwAA1ABngH+Av0B/wHyAfEB8AH/AvMB8gL/Av4B/wGdApwB/wEQAg4B/wEd - ARsBGgH/AR8BHAEbAf8BHwIcAf8BHAIaAf8BFAISAf8BBgEEAQYB/wNbAeEIAAOGBf8DAAH/A4YD/wEA - Af8DwAP/AQAB/wEAB/8DwAH/A8AB/wMAAf8DAAH/AwAB/wwAAecBwwGiAf8B+AHjAcIB/wH2Ad0BugH/ - AfgB4wHDAf8B+AHjAcIB/wG2AcUBwwH/AQABYwHEAf8BFQHTAv8BFgHGAfYB/wEAAWcB1AH/AQABbQHK - Af8B6AHDAaIB/wMAAQEIAANFAX0BmQFqAQcB/wGZAWsBCAH/AZoBawEIAf8BbgFkAVEB8QM7AWMDDQER - AwoBDQMkATUDKwFCAxABFgMAAQEQAANQAZ4C/wH+Af8B8wLyAf8C9AHzA/8B/gH/AaMCogH/ARsBGAEX - Af8BQwFBAT8B/wHPAc4BzQH/AccBxQHEAf8BqQGnAaYB/wGdAZsBmgH/AYsBiQGKAf8DWwHhCAADhgX/ - AwAB/wPAAf8DhgP/AQAD/wEAAf8BAAv/AwAB/wPAAf8DwAH/A8AB/wMAAf8IAAHqAcYBpAH/AfgB5AHE - Af8B3AHCAaQB/wHcAcQBpgH/AdwBxAGmAf8B3AHFAaYB/wGhAa4BrwH/AQABYwHEAf8BmAHsAv8BFgHG - AfYB/wEAAWcB1AH/Am8BZgH/AygBPAgAAlwBWgHNAaMBggELAf8BowGCAQsB/wGlAYMBCgH/AzsBYxAA - AwQBBRgAA1ABngT/AfQC8wH/A/UF/wGoAaYBpQH/ARMCEAH/ATUCNAH/AeYC5QH/AfEC8AH/AacBpgGl - Af8BPQE6ATkB/wGaApgB/wNcAecIAAOGBf8DAAH/A8AB/wPAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wOG - Af8DhgH/A4YB/wPAAf8DAAH/CAAB7AHKAagB/wH4AeUBxgH/AfkB5AHGAf8B+QHlAcUB/wH5AeQBxgH/ - AfgB5AHGAf8B9wHjAcUB/wG8AcgBxgH/AQABYwHEAf8BlgHqAf4B/wK3AawB/wFfAWABUgH/Am8BZgH/ - CAABbQFiAUIB9QGuAYsBDQH/Aa4BiwENAf8BnwFvAQgB/wMNAREsAANQAZ4E/wL1AfQB/wL3AfYF/wGs - AqoB/wEYARYBFQH/ATYBNAE1Af8BzwHNAcwB/wHUAdIB0QH/AbQCsgH/AaoBpwGmAf8DagH5A1cBvQgA - A4YB/wOGAf8DAAH/A8AB/wPAAf8DhgH/A4YB/wOGAf8DhgH/A4YB/wOGAf8DhgH/A4YB/wPAAf8DAAH/ - CAAB7gHNAasB/wH4AeYBxwH/Ad8ByAGqAf8B3gHIAaoB/wHfAcgBqwH/Ad8BxwGrAf8B2wHDAaYB/wHa - AcIBpAH/AasBsAGrAf8BjgGPAYQB/wHgAeIB0wH/AokBcAH/AQgBVgHeAf8BVQFcAWYB6gQAAW8BZAFC - AfUBuQGUARAB/wG5AZQBEAH/AacBhAEKAf8DDQERCAADTAGSAakBhgEKAf8BowGCAQkB/wGjAYIBCQH/ - AaMBggEJAf8BowGCAQkB/wFtAV8BSgHzCAADUAGeBP8B9wL2Af8D+AH/A/oB/wPwAf8B6gLpAf8D8AH/ - A/cB/wP2Af8C+gH5Af8DWAG5AxcBIAMHAQkEAAOGCf8DhgH/A8AB/wPAAf8DhgH/A8AB/wPAAf8DwAH/ - A8AB/wPAAf8DwAH/A8AB/wOGAf8DAAH/CAAB8AHQAa0B/wH5AeYByQH/AfgB5gHJAf8B+QHmAckB/wH5 - AeYByQH/AfcB5QHJAf8B8AHZAb0B/wHpAc8BswH/AegBzgGyAf8BzAG5Aa8B/wKJAXAB/wFFAZYB6gH/ - ATMBhQHgAf8BWgJdAdMEAAJcAVoBzQHDAZwBEgH/AcMBnAESAf8BvwGYAREB/wM7AWMIAAMMARACWwFY - AssBogEUAf8BwwGcARIB/wHDAZwBEgH/AcMBnAESAf8BqQGGAQoB/wgAA1ABngT/AvgB9wH/A/kB/wP6 - Af8C/gH9Ff8DVgGrEAADhgH/A4YB/wOGAf8DhgH/A8AB/wOGAf8BzAI+Av8BzAE+Af8BzAGZAQsB/wHM - AZkBAAL/AT4BCwH/AcwBPgELBf8DhgH/AwAB/wgAAfEB0wGxAf8B+QHnAcsB/wHiAcwBsAH/AeIBywGv - Af8B4QHMAa8B/wHhAcoBrwH/AdcBvgGhAf8B1QG6AZwB/wHUAbkBnQH/AdQBuQGdAf8BtgGvAbQB/wFl - AZIBxAH/A0gBhggAAkYBRQF+AdIBqAEVAf8BzQGkARUB/wHNAaQBFQH/AXIBawFTAfEDOwFjAw0BEQMN - AREDQQFyAb8BmAEQAf8BzQGkARUB/wHNAaQBFQH/Ac0BpAEVAf8BsAGMAQwB/wgAA1ABngT/AvkB+AH/ - A/oB/wP8Af8D/QH/A/4F/wH8Av0B/wH0AvUB/wP6Af8DVgGzGAADhgn/A4YB/wHMAj4D/wE+Av8BzAE+ - Af8BzAGZAQsB/wHMAZkBAAL/AT4BCwX/A4YB/wMAAf8IAAHzAdcBtAH/AfkB5wHMAf8B+AHnAcwB/wH5 - AegBzAH/AfkB6AHMAf8B9wHlAcoB/wHnAc8BtQH/AfIB3gHGAf8B8wHgAcgB/wH3AegB0wH/A1oBxQHv - AdABrgH/AwEBAgMAAQEEAAMPARQBagFmAU4B8AHYAa0BFwH/AdcBrAEXAf8B1wGsARcB/wHRAacBFQH/ - Ab0BlwEPAf8BvQGXAQ8B/wHRAacBFQH/AdcBrAEXAf8B1wGsARcB/wHXAawBFwH/AdcBrAEXAf8BtgGR - AQ0B/wgAA1ABngT/A/oB/wP8Af8D/QH/A/4F/wH+Af8B/gH/A+oB/wLXAdgB/wHdAt4B/wM7AWQcAAOG - Af8DhgH/A4YB/wHMAj4D/wE+A/8BPgL/AcwBPgH/AcwBmQELAf8BzAGZAQAF/wOGAf8DAAH/CAAB9AHZ - AbUB/wH5AegBzQH/AeQBzwG0Af8B5AHPAbQB/wHkAc8BtAH/AeMBzgGzAf8B3QHGAakB/wH5AegBzgH/ - AfkB6AHOAf8DXAHMAfEB0wGxAf8DJgE4EAACNQE0AVUB2wGxARcB/wHfAbMBGQH/Ad4BswEZAf8B3gGz - ARkB/wHeAbMBGQH/Ad4BswEZAf8B3gGzARkB/wHeAbMBGQH/Ad8BswEZAf8B3AGyARcB/wHmAboBGwH/ - AbsBlQEPAf8IAANQAZ4E/wP8Af8D/Qn/A/0B/wL6AfsB/wHrAuwB/wL6AfsB/wNCAXMoAAOGAf8BzAI+ - Av8BzAE+A/8BPgP/AT4C/wHMAT4B/wHMAZkBCwX/A4YB/wMAAf8IAAH2AdsBuAH/AfkB6QHPAf8B+QHp - Ac4B/wH5AegBzgH/AfgB6AHOAf8B9gHlAcwB/wHuAdoBvwH/AfkB6AHOAf8DYAHeAfQB2QG1Af8DJgE4 - GAACNQE0AVUBbAFoAU4B8AHtAcIBHQH/AeYBuQEbAf8B5gG4ARsB/wHmAbgBGwH/AeYBuQEbAf8B7QHC - AR0B/wF3AW8BUwHxAjoBOQFgAlsBWAHLAccBoAESAf8IAANUAaYc/wHrAuwB/wNCAXMsAAOGAf8BzAI+ - Af8BzAE+AQsB/wHMAT4BCwH/AcwBPgELAf8BzAE+AQsB/wHMAT4BCwX/A4YB/wMAAf8IAAH3Ad0BugH/ - AfkB6QHPAf8B+QHpAc8B/wH5AekBzwH/AfkB6QHPAf8B9wHmAc0B/wHtAdgBvQH/AfkB6AHOAf8B9wHd - AbgB/wMmATggAAMMARADRQF9AlwBWQHMAZIBggE+AfgBkAGIATsB+QJeAVwBzgJGAUUBfgMNARIEAAMM - ARADTAGSCAADJgQ4AVwDOAFcAzgBXAM4AVwDOAFcAzgBXAM4AVwDKQE/MAADhgH/A9cB/wPXAf8D1wH/ - A9cB/wPXAf8D1wH/A9cB/wOGAf8DAAH/CAAB+AHfAbsB/wH4Ad8BuwH/AfgB3wG7Af8B+AHfAbsB/wH4 - Ad8BuwH/AfgB3wG7Af8B+AHfAbsB/wH4Ad8BuwH/AyYBOFQAAUIBTQE+BwABPgMAASgDAAFAAwABIAMA - AQEBAAEBBgABARYAA/8BAAL/AeABBwH+AQECAALnAcABBwH8AwACwwHAAQcB4AMAAoEBwAEHAeADAAGA - AQEBwAEAAfADAAHAAQMGAAHgAQcGAAHwAQ8GAAHwAQ8GAAHgAQcDAAEBAgABwAEDAwABAwIAAYABAQMA - AQMCAAGBAYADAAEDAgABwwHBAwABAwIAAecB4wMAAQMCAAH/AfcBAAE/AQABAwIAAYABAQGMAR8BgAEB - Av8BgAEBAYABDwHAAQMB8AEPAYABAQGAAQcBwAEDAeABBwGAAQEBgAEHAcABAwHAAQMBgAEBAYABBwHA - AQMBgAEDAYABAQGAAQEBwAEBAYABBwGAAQEBgAEAAcABAQGDAd8BgAEBAYABAAHAAQEBgwH/AYABAQGA - AQABwAEAAYMBAQGAAQECAAHAAQABgwEBAYABBwGAAQABwAEBAYABAQGAAQcB4AEAAcABAAGAAQEBgAEH - AfABAAHAAQMBwAEBAYABDwH8AQABwAEHAeABAQGAAR8B/AEAAcABDwHwAQkBgAE/AfwBAAHAAR8C/ws= + Ab8B/wHzAdYBsgH/AcIBuAGuAf8BRgFmAawB/wEYAcAB+AH/AQABlwHXAf8BAAFlAdQB/wEAAWUBwQH/ + AfMB1gGyAf8B+AHhAb8B/wHkAb0BnQH/EAADNAFUAYQBVwEAAf8BhwFaAQEB/wGHAVoBAQH/AYcBWgEB + Af8BhwFaAQEB/wF/AWsBEgH+Al0BTgHwAloBVwHFA0sBjgI1ATQBVQMKAQ0MAANQAZ4B/QH8AfsB/wLw + Ae8B/wHyAvEB/wH+Av0B/wGSAZABkQH/ARcBFQEWAf8BrAGrAaoB/wGsAasBqgH/AawBqwGqAf8BqgKp + Af8BrQGsAasB/wEvAS0BLgH/A1sB4QgAA4YB/wPAAf8DAAH/A4YB/wPAAf8DwAP/AQAB/wMAAf8DAAH/ + A8AB/wPAAf8DAAH/FAAB5gHAAZ8B/wH4AeIBwQH/AdkBvgGdAf8B2QG+AZ4B/wGWAacBqwH/AQABYQHE + Af8BEwHTAv8BAAGzAe4B/wEAAWUB1AH/AQABZwHCAf8B+AHhAcAB/wHmAcABnwH/DAADDQESAl0BTgHw + AZABYQEEAf8BkAFhAQQB/wGQAWEBBAH/AZkBaAEEAf8BlgFmAQIB/wFjAWABWQHrAlkBVgG+A0gBhgIx + ATABTQMUARwDAQECDAADUAGeAf4C/QH/AfIB8QHwAf8C8wHyAv8C/gH/AZ0CnAH/AQ4CDAH/ARsBGQEY + Af8BHQEaARkB/wEdAhoB/wEaAhgB/wESAhAB/wEEAQIBBAH/A1sB4QgAA4YF/wMAAf8DhgP/AQAB/wPA + A/8BAAH/AQAH/wPAAf8DwAH/AwAB/wMAAf8DAAH/DAAB5wHDAaIB/wH4AeMBwgH/AfYB3QG6Af8B+AHj + AcMB/wH4AeMBwgH/AbYBxQHDAf8BAAFhAcQB/wETAdMC/wEUAcYB9gH/AQABZQHUAf8BAAFrAcoB/wHo + AcMBogH/AwABAQgAA0UBfQGZAWgBBQH/AZkBaQEGAf8BmgFpAQYB/wFrAWQBUwHxAzsBYwMNAREDCgEN + AyQBNQMrAUIDEAEWAwABARAAA1ABngL/Af4B/wHzAvIB/wL0AfMD/wH+Af8BowKiAf8BGQEWARUB/wFB + AT8BPQH/Ac8BzgHNAf8BxwHFAcQB/wGpAacBpgH/AZ0BmwGaAf8BiwGJAYoB/wNbAeEIAAOGBf8DAAH/ + A8AB/wOGA/8BAAP/AQAB/wEAC/8DAAH/A8AB/wPAAf8DwAH/AwAB/wgAAeoBxgGkAf8B+AHkAcQB/wHc + AcIBpAH/AdwBxAGmAf8B3AHEAaYB/wHcAcUBpgH/AaEBrgGvAf8BAAFhAcQB/wGYAewC/wEUAcYB9gH/ + AQABZQHUAf8CbQFkAf8DKAE8CAACXAFaAc0BowGCAQkB/wGjAYIBCQH/AaUBgwEIAf8DOwFjEAADBAEF + GAADUAGeBP8B9ALzAf8D9QX/AagBpgGlAf8BEQIOAf8BMwIyAf8B5gLlAf8B8QLwAf8BpwGmAaUB/wE7 + ATgBNwH/AZoCmAH/A1wB5wgAA4YF/wMAAf8DwAH/A8AB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A4YB/wOG + Af8DhgH/A8AB/wMAAf8IAAHsAcoBqAH/AfgB5QHGAf8B+QHkAcYB/wH5AeUBxQH/AfkB5AHGAf8B+AHk + AcYB/wH3AeMBxQH/AbwByAHGAf8BAAFhAcQB/wGWAeoB/gH/ArcBrAH/AV0BXgFQAf8CbQFkAf8IAAFr + AV4BQgH1Aa4BiwELAf8BrgGLAQsB/wGfAW0BBgH/Aw0BESwAA1ABngT/AvUB9AH/AvcB9gX/AawCqgH/ + ARYBFAETAf8BNAEyATMB/wHPAc0BzAH/AdQB0gHRAf8BtAKyAf8BqgGnAaYB/wNqAfkDVwG9CAADhgH/ + A4YB/wMAAf8DwAH/A8AB/wOGAf8DhgH/A4YB/wOGAf8DhgH/A4YB/wOGAf8DhgH/A8AB/wMAAf8IAAHu + Ac0BqwH/AfgB5gHHAf8B3wHIAaoB/wHeAcgBqgH/Ad8ByAGrAf8B3wHHAasB/wHbAcMBpgH/AdoBwgGk + Af8BqwGwAasB/wGOAY8BhAH/AeAB4gHTAf8CiQFuAf8BBgFUAd4B/wFVAVwBZAHqBAABbQFgAUIB9QG5 + AZQBDgH/AbkBlAEOAf8BpwGEAQgB/wMNAREIAANMAZIBqQGGAQgB/wGjAYIBBwH/AaMBggEHAf8BowGC + AQcB/wGjAYIBBwH/AWsBXwFMAfMIAANQAZ4E/wH3AvYB/wP4Af8D+gH/A/AB/wHqAukB/wPwAf8D9wH/ + A/YB/wL6AfkB/wNYAbkDFwEgAwcBCQQAA4YJ/wOGAf8DwAH/A8AB/wOGAf8DwAH/A8AB/wPAAf8DwAH/ + A8AB/wPAAf8DwAH/A4YB/wMAAf8IAAHwAdABrQH/AfkB5gHJAf8B+AHmAckB/wH5AeYByQH/AfkB5gHJ + Af8B9wHlAckB/wHwAdkBvQH/AekBzwGzAf8B6AHOAbIB/wHMAbkBrwH/AokBbgH/AUMBlgHqAf8BMQGF + AeAB/wFaAl0B0wQAAlwBWgHNAcMBnAEQAf8BwwGcARAB/wG/AZgBDwH/AzsBYwgAAwwBEAJbAVgCywGi + ARIB/wHDAZwBEAH/AcMBnAEQAf8BwwGcARAB/wGpAYYBCAH/CAADUAGeBP8C+AH3Af8D+QH/A/oB/wL+ + Af0V/wNWAasQAAOGAf8DhgH/A4YB/wOGAf8DwAH/A4YB/wHMAjwC/wHMATwB/wHMAZkBCQH/AcwBmQEA + Av8BPAEJAf8BzAE8AQkF/wOGAf8DAAH/CAAB8QHTAbEB/wH5AecBywH/AeIBzAGwAf8B4gHLAa8B/wHh + AcwBrwH/AeEBygGvAf8B1wG+AaEB/wHVAboBnAH/AdQBuQGdAf8B1AG5AZ0B/wG2Aa8BtAH/AWMBkgHE + Af8DSAGGCAACRgFFAX4B0gGoARMB/wHNAaQBEwH/Ac0BpAETAf8BbwFnAVMB8QM7AWMDDQERAw0BEQNB + AXIBvwGYAQ4B/wHNAaQBEwH/Ac0BpAETAf8BzQGkARMB/wGwAYwBCgH/CAADUAGeBP8C+QH4Af8D+gH/ + A/wB/wP9Af8D/gX/AfwC/QH/AfQC9QH/A/oB/wNWAbMYAAOGCf8DhgH/AcwCPAP/ATwC/wHMATwB/wHM + AZkBCQH/AcwBmQEAAv8BPAEJBf8DhgH/AwAB/wgAAfMB1wG0Af8B+QHnAcwB/wH4AecBzAH/AfkB6AHM + Af8B+QHoAcwB/wH3AeUBygH/AecBzwG1Af8B8gHeAcYB/wHzAeAByAH/AfcB6AHTAf8DWgHFAe8B0AGu + Af8DAQECAwABAQQAAw8BFAFoAWMBTgHwAdgBrQEVAf8B1wGsARUB/wHXAawBFQH/AdEBpwETAf8BvQGX + AQ0B/wG9AZcBDQH/AdEBpwETAf8B1wGsARUB/wHXAawBFQH/AdcBrAEVAf8B1wGsARUB/wG2AZEBCwH/ + CAADUAGeBP8D+gH/A/wB/wP9Af8D/gX/Af4B/wH+Af8D6gH/AtcB2AH/Ad0C3gH/AzsBZBwAA4YB/wOG + Af8DhgH/AcwCPAP/ATwD/wE8Av8BzAE8Af8BzAGZAQkB/wHMAZkBAAX/A4YB/wMAAf8IAAH0AdkBtQH/ + AfkB6AHNAf8B5AHPAbQB/wHkAc8BtAH/AeQBzwG0Af8B4wHOAbMB/wHdAcYBqQH/AfkB6AHOAf8B+QHo + Ac4B/wNcAcwB8QHTAbEB/wMmATgQAAI1ATQBVQHbAbEBFQH/Ad8BswEXAf8B3gGzARcB/wHeAbMBFwH/ + Ad4BswEXAf8B3gGzARcB/wHeAbMBFwH/Ad4BswEXAf8B3wGzARcB/wHcAbIBFQH/AeYBugEZAf8BuwGV + AQ0B/wgAA1ABngT/A/wB/wP9Cf8D/QH/AvoB+wH/AesC7AH/AvoB+wH/A0IBcygAA4YB/wHMAjwC/wHM + ATwD/wE8A/8BPAL/AcwBPAH/AcwBmQEJBf8DhgH/AwAB/wgAAfYB2wG4Af8B+QHpAc8B/wH5AekBzgH/ + AfkB6AHOAf8B+AHoAc4B/wH2AeUBzAH/Ae4B2gG/Af8B+QHoAc4B/wNgAd4B9AHZAbUB/wMmATgYAAI1 + ATQBVQFpAWYBTgHwAe0BwgEbAf8B5gG5ARkB/wHmAbgBGQH/AeYBuAEZAf8B5gG5ARkB/wHtAcIBGwH/ + AXIBbQFTAfECOgE5AWACWwFYAcsBxwGgARAB/wgAA1QBphz/AesC7AH/A0IBcywAA4YB/wHMAjwB/wHM + ATwBCQH/AcwBPAEJAf8BzAE8AQkB/wHMATwBCQH/AcwBPAEJBf8DhgH/AwAB/wgAAfcB3QG6Af8B+QHp + Ac8B/wH5AekBzwH/AfkB6QHPAf8B+QHpAc8B/wH3AeYBzQH/Ae0B2AG9Af8B+QHoAc4B/wH3Ad0BuAH/ + AyYBOCAAAwwBEANFAX0CXAFZAcwBjQF+AT4B+AGNAYYBPwH5Al4BXAHOAkYBRQF+Aw0BEgQAAwwBEANM + AZIIAAMmBDgBXAM4AVwDOAFcAzgBXAM4AVwDOAFcAzgBXAMpAT8wAAOGAf8D1wH/A9cB/wPXAf8D1wH/ + A9cB/wPXAf8D1wH/A4YB/wMAAf8IAAH4Ad8BuwH/AfgB3wG7Af8B+AHfAbsB/wH4Ad8BuwH/AfgB3wG7 + Af8B+AHfAbsB/wH4Ad8BuwH/AfgB3wG7Af8DJgE4VAABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEA + AQEGAAEBFgAD/wEAAv8B4AEHAf4BAQIAAucBwAEHAfwDAALDAcABBwHgAwACgQHAAQcB4AMAAYABAQHA + AQAB8AMAAcABAwYAAeABBwYAAfABDwYAAfABDwYAAeABBwMAAQECAAHAAQMDAAEDAgABgAEBAwABAwIA + AYEBgAMAAQMCAAHDAcEDAAEDAgAB5wHjAwABAwIAAf8B9wEAAT8BAAEDAgABgAEBAYwBHwGAAQEC/wGA + AQEBgAEPAcABAwHwAQ8BgAEBAYABBwHAAQMB4AEHAYABAQGAAQcBwAEDAcABAwGAAQEBgAEHAcABAwGA + AQMBgAEBAYABAQHAAQEBgAEHAYABAQGAAQABwAEBAYMB3wGAAQEBgAEAAcABAQGDAf8BgAEBAYABAAHA + AQABgwEBAYABAQIAAcABAAGDAQEBgAEHAYABAAHAAQEBgAEBAYABBwHgAQABwAEAAYABAQGAAQcB8AEA + AcABAwHAAQEBgAEPAfwBAAHAAQcB4AEBAYABHwH8AQABwAEPAfABCQGAAT8B/AEAAcABHwL/Cw== diff --git a/remoteapp-tool/RemoteAppCreateClientConnection.vb b/remoteapp-tool/RemoteAppCreateClientConnection.vb index 046dbe9..cba640f 100644 --- a/remoteapp-tool/RemoteAppCreateClientConnection.vb +++ b/remoteapp-tool/RemoteAppCreateClientConnection.vb @@ -8,6 +8,7 @@ Public Class RemoteAppCreateClientConnection RemoteApp = SelectedRemoteApp + Dim rdpSign As New RDPSign.RDPSign Dim RemoteAppShortName = RemoteApp.Name Me.Text = "Create Client Connection for " & RemoteAppShortName @@ -34,6 +35,8 @@ Public Class RemoteAppCreateClientConnection If Not RemoteApp.FileTypeAssociations Is Nothing Then _ FTACountLabel.Text = "Count: " & RemoteApp.FileTypeAssociations.Count + CertificateComboBox.Items.AddRange(rdpSign.GetCertificateFriendlyName) + Me.RDPRadioButton.Focus() HelpSystem.SetupTips(Me) Me.ShowDialog() @@ -285,6 +288,12 @@ Public Class RemoteAppCreateClientConnection RDPfile.SaveRDPfile(RDPPath) + If Not CheckBoxSignRDPDisabled.Checked Then + Dim rdpSign As New RDPSign.RDPSign + Dim Thumbprint As String = rdpSign.GetThumbprint(CertificateComboBox.Text) + rdpSign.SignRDP(Thumbprint, RDPPath, CheckBoxCreateSignedAndUnsigned.Checked) + End If + End Sub Private Function GetFlatFileTypesList(AppName As String, Optional Delim As String = ",") As String @@ -354,4 +363,26 @@ Public Class RemoteAppCreateClientConnection End If End Sub + Private Sub CheckBoxSignRDPDisabled_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBoxSignRDPDisabled.CheckedChanged + CertificateComboBox.Enabled = Not CheckBoxSignRDPDisabled.Checked + CheckBoxCreateSignedAndUnsigned.Enabled = Not CheckBoxSignRDPDisabled.Checked + If (EditAfterSave.Checked And Not CheckBoxSignRDPDisabled.Checked) Then + If MessageBox.Show("Cannot edit after save and sign the RDP file. Do you want the RDP file to be signed?", "Sign RDP", MessageBoxButtons.YesNo) = DialogResult.Yes Then + EditAfterSave.Checked = False + Else + CheckBoxSignRDPDisabled.Checked = True + End If + End If + End Sub + + Private Sub EditAfterSave_CheckedChanged(sender As Object, e As EventArgs) Handles EditAfterSave.CheckedChanged + If (EditAfterSave.Checked And Not CheckBoxSignRDPDisabled.Checked) Then + If MessageBox.Show("Cannot edit after save and sign the RDP file. Do you want to edit after saving?", "Edit After Save", MessageBoxButtons.YesNo) = DialogResult.Yes Then + CheckBoxSignRDPDisabled.Checked = True + Else + EditAfterSave.Checked = False + End If + End If + + End Sub End Class \ No newline at end of file diff --git a/remoteapp-tool/RemoteAppEditWindow.Designer.vb b/remoteapp-tool/RemoteAppEditWindow.Designer.vb index 0994e5c..506691d 100644 --- a/remoteapp-tool/RemoteAppEditWindow.Designer.vb +++ b/remoteapp-tool/RemoteAppEditWindow.Designer.vb @@ -151,7 +151,7 @@ Partial Class RemoteAppEditWindow Me.Label11.Font = New System.Drawing.Font("Segoe UI", 9.0!) Me.Label11.Location = New System.Drawing.Point(243, 103) Me.Label11.Name = "Label11" - Me.Label11.Size = New System.Drawing.Size(64, 15) + Me.Label11.Size = New System.Drawing.Size(65, 15) Me.Label11.TabIndex = 13 Me.Label11.Text = "Icon Index:" ' @@ -160,7 +160,7 @@ Partial Class RemoteAppEditWindow Me.Label10.AutoSize = True Me.Label10.Location = New System.Drawing.Point(232, 160) Me.Label10.Name = "Label10" - Me.Label10.Size = New System.Drawing.Size(83, 15) + Me.Label10.Size = New System.Drawing.Size(82, 15) Me.Label10.TabIndex = 21 Me.Label10.Text = "TSWebAccess:" ' diff --git a/remoteapp-tool/RemoteAppEditWindow.resx b/remoteapp-tool/RemoteAppEditWindow.resx index 6a9a9f0..3e3a8a0 100644 --- a/remoteapp-tool/RemoteAppEditWindow.resx +++ b/remoteapp-tool/RemoteAppEditWindow.resx @@ -125,152 +125,152 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAg - JAAAAk1TRnQBSQFMAgEBCQEAAUgBAQFIAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA - AwABMAMAAQEBAAEgBgABMP8AHwADKgFBAwYBCBgAAwYBCAMqAUHUAAMqAUEBQAE9AfIB/wJAAcEB/QMG - AQgQAAMGAQgCKwG1AfwBIgEgAeoB/wMqAUHMAAMqAUEBSQFHAfUB/wFUAVIB+gH/AUkBRgH2Af8BMgEx - AbkB/AMGAQgIAAMGAQgCKwG2AfwBMgEwAfEB/wE9ATsB9gH/ASIBIAHqAf8DKgFByAADHgErAUwBSQH2 - Af8BVgFTAfoB/wFiAWEC/wFKAUcB9gH/ATIBMQG5AfwDBgEIAwYBCAIrAbcB/AE4ATYB8gH/AVQBUwL/ - ATsBOQH0Af8BIAEeAekB/wMeASvMAAMeASsBTAFKAfYB/wFXAVQB+gH/AWUBYgL/AUsBSQH2Af8BMwEy - AbkB/AJAAcAB/QFBAT4B9AH/AVkBWAL/AUEBPwH1Af8BJwElAesB/wMeASvUAAMeASsBTQFLAfYB/wFY - AVUB+gH/AWUBYwL/AWQBYQL/AWEBXwL/AV8BXQL/AUgBRgH3Af8BMAEuAe4B/wMeASvcAAMeASsBTgFM - AfcB/wFqAWcC/wFKAUcC/wFIAUUC/wFjAWEC/wE5ATcB8AH/Ax4BK+AAAwYBCAFKAUkBygH9AW4BagL/ - AU8BTAL/AUwBSQL/AWcBZQL/AkABwwH9AwYBCNwAAwYBCAFXAVMBvQH8AWEBXgH7Af8BgAFvAv8BbwFs - Av8BbQFqAv8BagFoAv8BTwFNAfcB/wE1ATMBuQH8AwYBCNQAAwYBCAFfAVwBvwH8AWgBZQH9Af8BhgGC - Av8BZwFkAfwB/wFVAVMB+AH/AVEBTgH3Af8BXgFbAfoB/wFsAWoC/wFRAU4B9wH/ATUBNAG5AfwDBgEI - zAADBgEIAVcBVAHSAf0BbgFrAf4B/wGKAYcC/wFtAWoB/QH/AV0BWgH7Af8DHgErAx4BKwFSAU8B+AH/ - AV8BXQH6Af8BbgFrAv8BUgFQAfcB/wE2ATQBugH8AwQBBcgAAxYBHwFrAWgC/wGBAW8C/wGBAW8B/gH/ - AWUBYgH9Af8DHgErCAADHgErAVMBUAH4Af8BYAFeAfsB/wFvAW0C/wFTAVAB+AH/A0ABbwMBAQLIAAMW - AR8BawFoAv8BagFnAf4B/wMeASsQAAMeASsBVQFSAfgB/wFbAVkB+QH/AVMBUgFTAagDHQEp0AADFgEf + JAAAAk1TRnQBSQFMAgEBCQEAAVABAQFQAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABMAMAAQEBAAEgBgABMP8AHwADKgFBAwYBCBgAAwYBCAMqAUHUAAMqAUEBPwE8AfIB/wJAAb4B/QMG + AQgQAAMGAQgCKwGzAfwBIQEfAeoB/wMqAUHMAAMqAUEBSAFGAfUB/wFTAVEB+gH/AUgBRQH2Af8BMQEw + AbcB/AMGAQgIAAMGAQgCKwG0AfwBMQEvAfEB/wE8AToB9gH/ASEBHwHqAf8DKgFByAADHgErAUsBSAH2 + Af8BVQFSAfoB/wFhAWAC/wFJAUYB9gH/ATEBMAG3AfwDBgEIAwYBCAIrAbUB/AE3ATUB8gH/AVMBUgL/ + AToBOAH0Af8BHwEdAekB/wMeASvMAAMeASsBSwFJAfYB/wFWAVMB+gH/AWQBYQL/AUoBSAH2Af8BMgEx + AbcB/AJAAb4B/QFAAT0B9AH/AVgBVwL/AUABPgH1Af8BJgEkAesB/wMeASvUAAMeASsBTAFKAfYB/wFX + AVQB+gH/AWQBYgL/AWMBYAL/AWABXgL/AV4BXAL/AUcBRQH3Af8BLwEtAe4B/wMeASvcAAMeASsBTQFL + AfcB/wFpAWYC/wFJAUYC/wFHAUQC/wFiAWAC/wE4ATYB8AH/Ax4BK+AAAwYBCAFJAUgBxwH9AW0BaQL/ + AU4BSwL/AUsBSAL/AWYBZAL/AkABwAH9AwYBCNwAAwYBCAFWAVEBuwH8AWABXQH7Af8BgAFuAv8BbgFr + Av8BbAFpAv8BaQFnAv8BTgFMAfcB/wE0ATIBtwH8AwYBCNQAAwYBCAFeAVsBvQH8AWcBZAH9Af8BhgGC + Av8BZgFjAfwB/wFUAVIB+AH/AVABTQH3Af8BXQFaAfoB/wFrAWkC/wFQAU0B9wH/ATQBMwG3AfwDBgEI + zAADBgEIAVUBUwHPAf0BbQFqAf4B/wGKAYcC/wFsAWkB/QH/AVwBWQH7Af8DHgErAx4BKwFRAU4B+AH/ + AV4BXAH6Af8BbQFqAv8BUQFPAfcB/wE1ATMBuAH8AwQBBcgAAxYBHwFqAWcC/wGBAW4C/wGBAW4B/gH/ + AWQBYQH9Af8DHgErCAADHgErAVIBTwH4Af8BXwFdAfsB/wFuAWwC/wFSAU8B+AH/A0ABbwMBAQLIAAMW + AR8BagFnAv8BaQFmAf4B/wMeASsQAAMeASsBVAFRAfgB/wFaAVgB+QH/AVMBUgFTAagDHQEp0AADFgEf Ax4BKxgAAx4BKwNAAW8DKQE++AADBwEK2AADIAEvAyMBMwMjATMDIwEzAyMBMwMjATMDIwEzAyMBMwMj ATMDGQEjGAADIAEvAyMBMwMjATMDIwEzAyMBMwMjATMDIwEzAyMBMwMjATMDGQEjUAADFAEcAyABLgMg - AS4DIAEuASIBJQExAf8DWQHHA0IBdAM3AVsDNQFYAzMBUgMvAUoDKwFCAyABLgMUARwMAAMIAQsBaQFf - AVQB8AG2AYQBPQH/AbUBgwE5Af8BtgGCATgB/wG2AYIBOAH/AbYBggE4Af8BtgGCATgB/wG1AYMBOQH/ - AbYBhAE9Af8CWgFYAcAUAAMIAQsBaQFfAVQB8AG1AYQBPQH/AbUBgQE6Af8BtgGBAToB/wG2AYEBOgH/ - AbYBgQE6Af8BtgGBAToB/wG1AYEBOgH/AbUBhAE9Af8CWgFYAcBUAAHiAbgBmQH/AeIBuQGYAf8B4gG4 - AZkB/wFPAV4BnQH/AUcBVwGSAf8BQwFSAZIB/wEyAVUBngH/AcoBrAGYAf8B4gG4AZgB/wHiAbkBmQH/ - AeIBuQGYAf8B4gG4AZgB/xAAAykBPwG2AYQBPSH/AbYBhAE9Af8UAAMpAT8BtQGEAT0h/wG1AYQBPQH/ + AS4DIAEuASEBJAEwAf8DWQHHA0IBdAM3AVsDNQFYAzMBUgMvAUoDKwFCAyABLgMUARwMAAMIAQsBaAFd + AVQB8AG2AYQBPAH/AbUBgwE4Af8BtgGCATcB/wG2AYIBNwH/AbYBggE3Af8BtgGCATcB/wG1AYMBOAH/ + AbYBhAE8Af8CWgFYAcAUAAMIAQsBaAFdAVQB8AG1AYQBPAH/AbUBgQE5Af8BtgGBATkB/wG2AYEBOQH/ + AbYBgQE5Af8BtgGBATkB/wG1AYEBOQH/AbUBhAE8Af8CWgFYAcBUAAHiAbgBmQH/AeIBuQGYAf8B4gG4 + AZkB/wFOAV0BnQH/AUYBVgGSAf8BQgFRAZIB/wExAVQBngH/AcoBrAGYAf8B4gG4AZgB/wHiAbkBmQH/ + AeIBuQGYAf8B4gG4AZgB/xAAAykBPwG2AYQBPCH/AbYBhAE8Af8UAAMpAT8BtQGEATwh/wG1AYQBPAH/ GAADEgEYA00BlQMAAf8EAAMBAQIIAAMBAQIcAAHjAbsBmwH/AfgB4AG+Af8B+AHgAb4B/wGbAZ8BrgH/ - AVsBbQGpAf8BSQFlAaAB/wEAAVwBsAH/AQABZQG/Af8B+AHhAb4B/wH4AeABvwH/AfgB4QG+Af8B4wG6 - AZoB/xAAAycBOwG1AYMBOQX/AQABMAHyAf8BAgFWAfMB/wEVAZoB9gH/ARkBpgH4Af8BCAFlAfQB/wEA - ASsB8gX/AbUBgwE5Af8UAAMnATsBtQGCATsF/wEMAaMBZgH/ARcBpgFqAf8BGQGnAWwB/wEbAagBbAH/ - ARoBqQFrAf8BDgGlAWcF/wG1AYIBOwH/EAADHAEoA0gBhQMzAfYDAAH/AwAB/zAAAeQBvQGcAf8B+AHh - Ab8B/wHzAdYBsgH/AcIBuAGuAf8BSAFoAawB/wEaAcAB+AH/AQABlwHXAf8BAAFnAdQB/wEAAWcBwQH/ - AfMB1gGyAf8B+AHhAb8B/wHkAb0BnQH/EAADJAE2AbYBgwE5Bf8BGwFCAfIB/wElAWkB8gH/AR4BkwH0 - Af8BIgGaAfQB/wEVAWcB8QH/AQABLgHwBf8BtgGDATgB/wMjATMDIwEzAxkBIwgAAyQBNgG1AYEBOwX/ - AR4BvQGNAf8BKAG/AZIB/wEtAcEBlAH/ATUBxgGWAf8BEwFMAYwB/wEpAcMBjwX/AbUBgQE6Af8DIwEz - AyMBMwMZASMEAAMmAfkDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/xQA - AeYBwAGfAf8B+AHiAcEB/wHZAb4BnQH/AdkBvgGeAf8BlgGnAasB/wEAAWMBxAH/ARUB0wL/AQABswHu - Af8BAAFnAdQB/wEAAWkBwgH/AfgB4QHAAf8B5gHAAZ8B/wgAAxkEIwEzAzEBTwG2AYMBOQP/AfwB/wEP - AS8B8AH/AUEBbwHyAf8BQgGTAfQB/wEnAYMB8gH/AQsBTQHwAf8BAAEjAfAD/wH7Af8BtQGAATUB/wG1 - AYMBPAH/AbYBhAE+Af8CWgFYAcADGQQjATMDMQFPAbQBgQE6Bv8B4QGoAv8B4wGtAv8B5gGwAf8BxAHO - AZ8B/wEKAYYBgAH/AcABzAGZBf8BtAFvATYB/wG1AYMBPAH/AbYBhAE+Af8CWgFYAcAEAAMHAQkDQAFx - AyYB+QMAAf8DAAH/GwAB/xQAAecBwwGiAf8B+AHjAcIB/wH2Ad0BugH/AfgB4wHDAf8B+AHjAcIB/wG2 - AcUBwwH/AQABYwHEAf8BFQHTAv8BFgHGAfYB/wEAAWcB1AH/AQABbQHKAf8B6AHDAaIB/wMAAQEEAAJa - AVgBwAG1AYUBPwH/AbUBhAE+Af8BtQGCATYD/wH7Af8BAAEUAe4B/wEwAVIB8AH/AU0BhQHzAf8BZAGV - AfQB/wGDAZoB9gH/AYABjQH5A/8B+QH/AbUBbAEwCf8BtgGEAT0B/wJaAVgBwAG2AYUBPwH/AbYBhAE+ - Af8BswFvATcG/wHZAZQC/wHbAZoC/wHeAaAB/wEEAZ8BggH/ARIBogGDAf8BBAGdAW0F/wG1AWsBMQn/ - AbUBhAE9Af8MAAMLAQ8DSAGFAwAB/xsAAf8UAAHqAcYBpAH/AfgB5AHEAf8B3AHCAaQB/wHcAcQBpgH/ - AdwBxAGmAf8B3AHFAaYB/wGhAa4BrwH/AQABYwHEAf8BmAHsAv8BFgHGAfYB/wEAAWcB1AH/Am8BZgH/ - AygBPAQAAbUBhAE+Bf8B9gHwAekB/wGyAW8BMwP/Af0B/wIAAewB/wEdATAB7QH/ATkBUAHwAf8BTAFj - AfIB/wFcAWsB9AH/AWIBZQH2A/8B/AH/AbwBbAEwAf8BAAGuAYAF/wG2AYIBOwH/AbYBhAE+Bf8B/AHv - AecB/wG0AWwBMgX/AQQBuAL/AWcBxQHfAv8B1wGNAf8BOgGvAYsB/wESAakBiwH/ATkBrQGGBf8BugFr - ATIB/wEFAacBbAX/AbUBggE7Af8zAAH/FAAB7AHKAagB/wH4AeUBxgH/AfkB5AHGAf8B+QHlAcUB/wH5 - AeQBxgH/AfgB5AHGAf8B9wHjAcUB/wG8AcgBxgH/AQABYwHEAf8BlgHqAf4B/wK3AawB/wFfAWABUgH/ - Am8BZgH/BAABtAGCATsF/wHnAZsBJQH/AbEBbwE2Bf8CAAHtAf8CAAHuAf8BFwEeAfAB/wEtATUB8gH/ - AUABQgH1Af8BTgFNAfcF/wHAAW0BMwH/AQABrQGBBf8BtgGCATsB/wG1AYIBOwX/ASwBnQFgAf8BtwFs - ATMF/wFqAccB0AH/AQwByQP/Ac0BagH/AccBwwGFAf8BBwGvAZQB/wHGAcIBgQX/AbsBbAEzAf8BHAHC - AZMF/wG1AYEBOwH/FwABARsAAf8UAAHuAc0BqwH/AfgB5gHHAf8B3wHIAaoB/wHeAcgBqgH/Ad8ByAGr - Af8B3wHHAasB/wHbAcMBpgH/AdoBwgGkAf8BqwGwAasB/wGOAY8BhAH/AeAB4gHTAf8CiQFwAf8BCAFW - Ad4B/wFVAVwBZgHqAbMBggE8Bf8B5gGeAS4B/wGvAYABPAP/AfYD/wHtA/8B6wP/AeoD/wHqA/8B6gP/ - AewD/wHzAf8BwgFtATQB/wEAAasBbgX/AbYBggE7Af8BtAGCATsF/wE5Aa8BbwH/AbYBbQE2A/8B9AL/ - Af4B7QL/Af4B7QL/Af4B8gL/Af4B9AP/AfQC/wH+AfQD/wH3Af8BvQFuATYB/wGzAcsBnAX/AbUBggE7 + AVoBbAGpAf8BSAFkAaAB/wEAAVsBsAH/AQABZAG/Af8B+AHhAb4B/wH4AeABvwH/AfgB4QG+Af8B4wG6 + AZoB/xAAAycBOwG1AYMBOAX/AQABLwHyAf8BAQFVAfMB/wEUAZoB9gH/ARgBpgH4Af8BBwFkAfQB/wEA + ASoB8gX/AbUBgwE4Af8UAAMnATsBtQGCAToF/wELAaMBZQH/ARYBpgFpAf8BGAGnAWsB/wEaAagBawH/ + ARkBqQFqAf8BDQGlAWYF/wG1AYIBOgH/EAADHAEoA0gBhQM0AfYDAAH/AwAB/zAAAeQBvQGcAf8B+AHh + Ab8B/wHzAdYBsgH/AcIBuAGuAf8BRwFnAawB/wEZAcAB+AH/AQABlwHXAf8BAAFmAdQB/wEAAWYBwQH/ + AfMB1gGyAf8B+AHhAb8B/wHkAb0BnQH/EAADJAE2AbYBgwE4Bf8BGgFBAfIB/wEkAWgB8gH/AR0BkwH0 + Af8BIQGaAfQB/wEUAWYB8QH/AQABLQHwBf8BtgGDATcB/wMjATMDIwEzAxkBIwgAAyQBNgG1AYEBOgX/ + AR0BvQGNAf8BJwG/AZIB/wEsAcEBlAH/ATQBxgGWAf8BEgFLAYwB/wEoAcMBjwX/AbUBgQE5Af8DIwEz + AyMBMwMZASMEAAMnAfkDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/xQA + AeYBwAGfAf8B+AHiAcEB/wHZAb4BnQH/AdkBvgGeAf8BlgGnAasB/wEAAWIBxAH/ARQB0wL/AQABswHu + Af8BAAFmAdQB/wEAAWgBwgH/AfgB4QHAAf8B5gHAAZ8B/wgAAxkEIwEzAzEBTwG2AYMBOAP/AfwB/wEO + AS4B8AH/AUABbgHyAf8BQQGTAfQB/wEmAYMB8gH/AQoBTAHwAf8BAAEiAfAD/wH7Af8BtQGAATQB/wG1 + AYMBOwH/AbYBhAE9Af8CWgFYAcADGQQjATMDMQFPAbQBgQE5Bv8B4QGoAv8B4wGtAv8B5gGwAf8BxAHO + AZ8B/wEJAYYBgAH/AcABzAGZBf8BtAFuATUB/wG1AYMBOwH/AbYBhAE9Af8CWgFYAcAEAAMHAQkDQAFx + AycB+QMAAf8DAAH/GwAB/xQAAecBwwGiAf8B+AHjAcIB/wH2Ad0BugH/AfgB4wHDAf8B+AHjAcIB/wG2 + AcUBwwH/AQABYgHEAf8BFAHTAv8BFQHGAfYB/wEAAWYB1AH/AQABbAHKAf8B6AHDAaIB/wMAAQEEAAJa + AVgBwAG1AYUBPgH/AbUBhAE9Af8BtQGCATUD/wH7Af8BAAETAe4B/wEvAVEB8AH/AUwBhQHzAf8BYwGV + AfQB/wGDAZoB9gH/AYABjQH5A/8B+QH/AbUBawEvCf8BtgGEATwB/wJaAVgBwAG2AYUBPgH/AbYBhAE9 + Af8BswFuATYG/wHZAZQC/wHbAZoC/wHeAaAB/wEDAZ8BggH/AREBogGDAf8BAwGdAWwF/wG1AWoBMAn/ + AbUBhAE8Af8MAAMLAQ8DSAGFAwAB/xsAAf8UAAHqAcYBpAH/AfgB5AHEAf8B3AHCAaQB/wHcAcQBpgH/ + AdwBxAGmAf8B3AHFAaYB/wGhAa4BrwH/AQABYgHEAf8BmAHsAv8BFQHGAfYB/wEAAWYB1AH/Am4BZQH/ + AygBPAQAAbUBhAE9Bf8B9gHwAekB/wGyAW4BMgP/Af0B/wIAAewB/wEcAS8B7QH/ATgBTwHwAf8BSwFi + AfIB/wFbAWoB9AH/AWEBZAH2A/8B/AH/AbwBawEvAf8BAAGuAYAF/wG2AYIBOgH/AbYBhAE9Bf8B/AHv + AecB/wG0AWsBMQX/AQMBuAL/AWYBxQHfAv8B1wGNAf8BOQGvAYsB/wERAakBiwH/ATgBrQGGBf8BugFq + ATEB/wEEAacBawX/AbUBggE6Af8zAAH/FAAB7AHKAagB/wH4AeUBxgH/AfkB5AHGAf8B+QHlAcUB/wH5 + AeQBxgH/AfgB5AHGAf8B9wHjAcUB/wG8AcgBxgH/AQABYgHEAf8BlgHqAf4B/wK3AawB/wFeAV8BUQH/ + Am4BZQH/BAABtAGCAToF/wHnAZsBJAH/AbEBbgE1Bf8CAAHtAf8CAAHuAf8BFgEdAfAB/wEsATQB8gH/ + AT8BQQH1Af8BTQFMAfcF/wHAAWwBMgH/AQABrQGBBf8BtgGCAToB/wG1AYIBOgX/ASsBnQFfAf8BtwFr + ATIF/wFpAccB0AH/AQsByQP/Ac0BaQH/AccBwwGFAf8BBgGvAZQB/wHGAcIBgQX/AbsBawEyAf8BGwHC + AZMF/wG1AYEBOgH/FwABARsAAf8UAAHuAc0BqwH/AfgB5gHHAf8B3wHIAaoB/wHeAcgBqgH/Ad8ByAGr + Af8B3wHHAasB/wHbAcMBpgH/AdoBwgGkAf8BqwGwAasB/wGOAY8BhAH/AeAB4gHTAf8CiQFvAf8BBwFV + Ad4B/wFVAVwBZQHqAbMBggE7Bf8B5gGeAS0B/wGvAYABOwP/AfYD/wHtA/8B6wP/AeoD/wHqA/8B6gP/ + AewD/wHzAf8BwgFsATMB/wEAAasBbQX/AbYBggE6Af8BtAGCAToF/wE4Aa8BbgH/AbYBbAE1A/8B9AL/ + Af4B7QL/Af4B7QL/Af4B8gL/Af4B9AP/AfQC/wH+AfQD/wH3Af8BvQFtATUB/wGzAcsBnAX/AbUBggE6 Af8zAAH/FAAB8AHQAa0B/wH5AeYByQH/AfgB5gHJAf8B+QHmAckB/wH5AeYByQH/AfcB5QHJAf8B8AHZ - Ab0B/wHpAc8BswH/AegBzgGyAf8BzAG5Aa8B/wKJAXAB/wFFAZYB6gH/ATMBhQHgAf8BWgJdAdMBswGC - ATwF/wHyAaEBIQH/Ab0BiwFFAf8BrwGAAT4B/wGvAW8BOAH/AbABbgE2Af8BrwFtATQB/wGxAW0BMgH/ - AbcBbwE1Af8BvQFvATUB/wHBAW4BNQH/AaYBnwFiAf8BZQHTAb0F/wG1AYIBOwH/AbQBgQE7Bv8B3wGl - Af8BwwGQAUoB/wG0AWwBNgH/Ab0BbgE2Af8BwQFuATYB/wG8AW0BNAH/AbQBbAE0Af8BsgFuATYB/wG0 - AW4BNwH/Ab4BbwE4Af8BhAGOAVIB/wEAAZ4BbwX/AbUBggE7Af8bAAEBEwABAQMAAf8UAAHxAdMBsQH/ + Ab0B/wHpAc8BswH/AegBzgGyAf8BzAG5Aa8B/wKJAW8B/wFEAZYB6gH/ATIBhQHgAf8BWgJdAdMBswGC + ATsF/wHyAaEBIAH/Ab0BiwFEAf8BrwGAAT0B/wGvAW4BNwH/AbABbQE1Af8BrwFsATMB/wGxAWwBMQH/ + AbcBbgE0Af8BvQFuATQB/wHBAW0BNAH/AaYBnwFhAf8BZAHTAb0F/wG1AYIBOgH/AbQBgQE6Bv8B3wGl + Af8BwwGQAUkB/wG0AWsBNQH/Ab0BbQE1Af8BwQFtATUB/wG8AWwBMwH/AbQBawEzAf8BsgFtATUB/wG0 + AW0BNgH/Ab4BbgE3Af8BhAGOAVEB/wEAAZ4BbgX/AbUBggE6Af8bAAEBEwABAQMAAf8UAAHxAdMBsQH/ AfkB5wHLAf8B4gHMAbAB/wHiAcsBrwH/AeEBzAGvAf8B4QHKAa8B/wHXAb4BoQH/AdUBugGcAf8B1AG5 - AZ0B/wHUAbkBnQH/AbYBrwG0Af8BZQGSAcQB/wNIAYYEAAGzAYIBPAX/AfEBlwEMAf8B+AGyAUIB/wH9 - AcEBYgH/Af4BygGCAf8B/gHOAYoB/wH9AcsBhQX/AbwBbwE4Af8BHQHAAaAB/wE9AcgBqgH/AVMByQGv - Af8BWwHKAbAF/wG1AYEBOgH/AbQBgQE6Bv8B2wGXAv8B3wGeAv8B5AGmAf8BAAGjAYcB/wEJAaQBiAH/ - AQABoQGDBf8BsgFuATgC/wHgAZsB/wEyAbMBkQH/AQoBqgGOAf8BNgGtAYYF/wG1AYIBOwH/MwAB/xQA + AZ0B/wHUAbkBnQH/AbYBrwG0Af8BZAGSAcQB/wNIAYYEAAGzAYIBOwX/AfEBlwELAf8B+AGyAUEB/wH9 + AcEBYQH/Af4BygGCAf8B/gHOAYoB/wH9AcsBhQX/AbwBbgE3Af8BHAHAAaAB/wE8AcgBqgH/AVIByQGv + Af8BWgHKAbAF/wG1AYEBOQH/AbQBgQE5Bv8B2wGXAv8B3wGeAv8B5AGmAf8BAAGjAYcB/wEIAaQBiAH/ + AQABoQGDBf8BsgFtATcC/wHgAZsB/wExAbMBkQH/AQkBqgGOAf8BNQGtAYYF/wG1AYIBOgH/MwAB/xQA AfMB1wG0Af8B+QHnAcwB/wH4AecBzAH/AfkB6AHMAf8B+QHoAcwB/wH3AeUBygH/AecBzwG1Af8B8gHe - AcYB/wHzAeAByAH/AfcB6AHTAf8DWgHFAe8B0AGuAf8DAQECAwABAQGzAYMBPAX/AewBigEAAf8B8QGh - ASYB/wH1AbEBRQH/AfYBuQFWAf8B9wG/AWIB/wH2Ab8BYgX/AboBbAE0Af8BBAGvAYsB/wEkAbYBkwH/ - ATkBugGdAf8BSQHBAaUF/wG1AYIBOwH/AbUBgQE6Bf8BBQG5Av8BaAHGAeAC/wHZAY4B/wE5AbABjAH/ - AREBqgGMAf8BOAGuAYcF/wGwAWsBNAL/AdQBhgH/AsUBiAH/AQYBrwGUAf8BxgHCAYEF/wG0AYIBOwH/ + AcYB/wHzAeAByAH/AfcB6AHTAf8DWgHFAe8B0AGuAf8DAQECAwABAQGzAYMBOwX/AewBigEAAf8B8QGh + ASUB/wH1AbEBRAH/AfYBuQFVAf8B9wG/AWEB/wH2Ab8BYQX/AboBawEzAf8BAwGvAYsB/wEjAbYBkwH/ + ATgBugGdAf8BSAHBAaUF/wG1AYIBOgH/AbUBgQE5Bf8BBAG5Av8BZwHGAeAC/wHZAY4B/wE4AbABjAH/ + ARABqgGMAf8BNwGuAYcF/wGwAWoBMwL/AdQBhgH/AsUBiAH/AQUBrwGUAf8BxgHCAYEF/wG0AYIBOgH/ SAAB9AHZAbUB/wH5AegBzQH/AeQBzwG0Af8B5AHPAbQB/wHkAc8BtAH/AeMBzgGzAf8B3QHGAakB/wH5 - AegBzgH/AfkB6AHOAf8DXAHMAfEB0wGxAf8DJgE4CAABtAGDAT0F/wHpAW0BAAH/Ae0BjwEAAf8B7wGe - ARwB/wHxAagBMgH/AfMBrwFBAf8B9AG1AU4F/wG0AWwBNAP/AfsD/wH2A/8B8wP/AfID/wH4Af8BtQGE - AT8B/wG1AYIBOwX/AWoBxwHQAf8BDAHJA/8BzQFqAf8BxwHDAYUB/wEHAa8BlAH/AcYBwgGBBf8BrwFr - ATQD/wH7A/8B9wP/AfUD/wH0A/8B+QH/AbUBhAE/Af9IAAH2AdsBuAH/AfkB6QHPAf8B+QHpAc4B/wH5 + AegBzgH/AfkB6AHOAf8DXAHMAfEB0wGxAf8DJgE4CAABtAGDATwF/wHpAWwBAAH/Ae0BjwEAAf8B7wGe + ARsB/wHxAagBMQH/AfMBrwFAAf8B9AG1AU0F/wG0AWsBMwP/AfsD/wH2A/8B8wP/AfID/wH4Af8BtQGE + AT4B/wG1AYIBOgX/AWkBxwHQAf8BCwHJA/8BzQFpAf8BxwHDAYUB/wEGAa8BlAH/AcYBwgGBBf8BrwFq + ATMD/wH7A/8B9wP/AfUD/wH0A/8B+QH/AbUBhAE+Af9IAAH2AdsBuAH/AfkB6QHPAf8B+QHpAc4B/wH5 AegBzgH/AfgB6AHOAf8B9gHlAcwB/wHuAdoBvwH/AfkB6AHOAf8DYAHeAfQB2QG1Af8DJgE4DAABtQGF - AUAD/wH8A/8B/Qf/Af4D/wH8A/8B+gP/AfcD/wH5Af8BtAGCATsB/wG2AYQBPgH/AbYBgwE8Af8BtQGC - ATwB/wG1AYMBPAH/AbUBhAE/Af8DVQGwAbUBhAE+A/8B9wL/Af4B7gL/Af4B7wL/Af4B8wP/AfUD/wH1 - A/8B9AP/AfgB/wGzAYIBOwH/AbQBhAE+Af8BtAGDAT0B/wG1AYIBPAH/AbQBgwE8Af8BtQGEAT8B/wNV + AT8D/wH8A/8B/Qf/Af4D/wH8A/8B+gP/AfcD/wH5Af8BtAGCAToB/wG2AYQBPQH/AbYBgwE7Af8BtQGC + ATsB/wG1AYMBOwH/AbUBhAE+Af8DVQGwAbUBhAE9A/8B9wL/Af4B7gL/Af4B7wL/Af4B8wP/AfUD/wH1 + A/8B9AP/AfgB/wGzAYIBOgH/AbQBhAE9Af8BtAGDATwB/wG1AYIBOwH/AbQBgwE7Af8BtQGEAT4B/wNV AbBIAAH3Ad0BugH/AfkB6QHPAf8B+QHpAc8B/wH5AekBzwH/AfkB6QHPAf8B9wHmAc0B/wHtAdgBvQH/ - AfkB6AHOAf8B9wHdAbgB/wMmATgQAAFmAWIBWAHvAbUBhQFAAf8BswGDAT4B/wGzAYMBPgH/AbMBgwE+ - Af8BswGDAT0B/wGzAYMBPQH/AbMBgwE9Af8BtQGEAT8B/wJkAVwB5xgAAWYBYgFYAe8BtQGEAT8B/wG1 - AYIBOwH/AbUBggE7Af8BtAGCATwB/wG0AYIBPAH/AbUBggE8Af8BtAGDATwB/wG1AYQBPwH/AmQBXAHn + AfkB6AHOAf8B9wHdAbgB/wMmATgQAAFlAWIBWAHvAbUBhQE/Af8BswGDAT0B/wGzAYMBPQH/AbMBgwE9 + Af8BswGDATwB/wGzAYMBPAH/AbMBgwE8Af8BtQGEAT4B/wJkAVwB5xgAAWUBYgFYAe8BtQGEAT4B/wG1 + AYIBOgH/AbUBggE6Af8BtAGCATsB/wG0AYIBOwH/AbUBggE7Af8BtAGDATsB/wG1AYQBPgH/AmQBXAHn YAAB+AHfAbsB/wH4Ad8BuwH/AfgB3wG7Af8B+AHfAbsB/wH4Ad8BuwH/AfgB3wG7Af8B+AHfAbsB/wH4 - Ad8BuwH/AyYBODwAAwUBBwNCAXQDAgEDEAADIwEzARoBUAGWAf8BFwFSAZMB/wEaAVABlQH/ARoBUQGT - Af8BGQFRAZUB/wEaAVEBkwH/yAADRQF9AVsCXgHQAwwBEBAAARsBUQGWAf8BTgG9Ad8B/wFRAbwB4QH/ - AU4BvgHcAf8BUwG+AeEB/wFMAb0B3wH/AZsB2gHuAf8BIAFRAZgB/wEdAVABlwH/AR8BVgGYAf8BHQFU - AZYB/wEaAVIBlAH/AyMBM6wAA1ABnQEAAb8C/wFZAmcB8gMYASIQAAEgAVIBlQH/AU0BvwHfAf8BUAG+ - Ad8B/wFRAb8B4QH/AU8BvgHgAf8BTgG/AeEB/wGgAdkB8gH/ASkBjwG7Af8BjAG+AdIB/wFHAbEBzAH/ - ATkBpwHJAf8BSAHIAeMB/wEtAZQBtgH/A0UBfUQAA1IBqQHDAY4BWAH/AcABiwFWAf8BvgGIAVQB/wG7 - AYUBUQH/AbkBgwFPAf8BtAFuAUwB/wGyAWwBSgH/AbEBawFIAf8BrgFpAUcB/wGtAWYBRgH/AasBZQFE - Af8BqQFjAUMB/wGpAWEBQQH/A1IBqRAAA1EBogFSAlMBqAM9AWkDIQEwAxQBGwNVAbUBAAHGAv8BAAHF - Av8BXAJhAdwDFAEcAwYBCAwAARwBVgGTAf8BUAG+Ad8B/wFOAcEB3gH/AVIBvwHdAf8BUwG+AeEB/wFU - AbsB3QH/AZ0B2gHuAf8BLQGXAbYB/wFYAb8B3gH/AU8BuAHVAf8BRAGrAc4B/wFRAb0B5AH/ATABkgG5 - Af8DOAFcAyMBMwgAA8AB/wNLAf8DwAH/BAADwAH/A0sB/wPAAf8EAAPAAf8DSwH/A8AB/wwAAcgBkgFc - Bf8BxwHIAv8BxwHIBv8B1QHtAdgB/wHVAe0B2AX/A+gB/wPpBf8D6gH/A+sF/wGpAWIBQQH/EAADQAFw - AQcB1wL/AQYB2AL/AQABxwH+Af8BTgJdAfABAQHLAf4B/wEAAcgB/QH/AQAByAL/AVwCXgHOAwoBDgML - AQ8DAwEECAABHgFSAZcB/wFVAbwB3gH/AVQBvgHdAf8BVQG/Ad4B/wFVAb0B3AH/AYcByQHiAf8BpQHg - AfQB/wErAZkBuwH/AYYByAHhAf8BhAHAAd4B/wFTAbsB1wH/AYoBzwHqAf8BLAGWAb0B/wMjATMMAANL - Af8DAAH/A0sB/wQAA0sB/wMAAf8DSwH/BAADSwH/AwAB/wNLAf8MAAHKAZQBXgX/AVsBXwH+Af8BWwFf - Af4B/wP8Af8BkAHPAZkB/wGQAc8BmQH/A/wB/wPRAf8D0QH/A/sB/wPRAf8D0QX/AaoBYwFDAf8QAAMg - AS8BCgHSAf0B/wEKAdEB/QH/AQoB0gH+Af8BCQHSAv8BBgHNAf0B/wEDAcwB/QH/AQABzQL/A1YBtgQA - AwgBCwMEAQYDAAEBBAABHwFXAZcB/wFYAcgB5AH/AYEBxgHnAf8BWAHFAeIB/wGAAcoB5AH/AZQB0wHv - Af8BrgHjAfgB/wEzAZ0BvgH/AYsBzQHmAf8BjAHMAeUB/wGJAcYB4AH/AZcB2gHvAf8BMwGaAb0B/xAA - A8AB/wNLAf8DwAH/BAADwAH/A0sB/wPAAf8EAAPAAf8DSwH/A8AB/wwAAcwBlwFfBf8D/gH/A/0B/wP9 - Af8D/QH/A/wB/wP8Af8D/AH/A/wB/wP7Af8D+wH/A/sF/wGsAWUBRAH/EAADBAEFAV4CYQHaAQ4B1gH9 - Af8BDwHWAf0B/wENAdQB/QH/AQsB0gH9Af8BCAHQAf0B/wEGAdEB/gH/AVgCYQHmAyoBQAsAAQEEAAEh - AVgBmgH/AYsB0AHrAf8BjQHQAesB/wGNAdEB6AH/AY4B0QHoAf8BpAHcAfUB/wGyAecB9AH/AckB9wL/ - AT0BowG/Af8BpgHZAfMB/wGWAc8B6AH/AawB6QHrAf8BOQGeAcIB/0gAAdEBnAFjBf8B6wGwAVAB/wHr - AbABUAH/A/4B/wPRAf8D0QH/A/0B/wFjAaoC/wFjAaoC/wP8Af8BVwHVAfAB/wFXAdUB8AX/AbABagFI - Af8UAANWAbQBHwHeAf0B/wESAdoB/QH/ARMB2QH9Af8BEAHXAf0B/wENAdQB/QH/AQoB0QH9Af8BCAHS - Av8BAQHTAv8DSwGOAwoBDQgAASMBggGdAf8BoQHaAfMB/wGmAdwB8wH/AacB3QH0Af8BpgHcAfUB/wGq - AeMB+AH/AcUB7wL/Ac0B9gL/AUYBpgHFAf8BrwHjAfAB/wGsAecB+wH/AUIBowHGAf9MAAHUAZ4BZQX/ - AesBsAFQAf8B6wGwAVAF/wPRAf8D0QH/A/4B/wFjAaoC/wFjAaoC/wP9Af8BVwHVAfAB/wFXAdUB8AX/ - AbIBbAFKAf8QAANKAYoBhQHrAf4B/wGDAesB/gH/AR8B4AH9Af8BFgHdAf0B/wEWAdsB/QH/ARIB2AH9 - Af8BCwHVAf0B/wEKAdEB/QH/ARMB1AL/ASsB8gL/AVYCWAHBAwoBDQQAASUBggGgAf8BsQHjAfcB/wG2 - AeAB9wH/AbEB4AH2Af8BtAHjAfkB/wGxAeYB+gH/AcIB7wH8Af8B0AH7Af4B/wFJAa4BxgH/AbgB5QH6 - Af8BwwHyAv8BSgGqAckB/0wAAdUBoAFmFf8D/gH/A/4B/wP+Af8D/QH/A/0B/wP9Af8D/QX/AbUBbgFM - Af8MAAM1AVYBXAFwAXIB+AGZAfEB/gH/AbYB9QH+Af8BUAHqAf4B/wEYAeAB/QH/ARoB3wH9Af8BGAHc - Af0B/wEsAd4B/QH/ATEB5QH+Af8BVwJaAb0DLAFEAwcBCgMAAQEEAAEsAYgBowH/AbsB7QH5Af8BvQHw + Ad8BuwH/AyYBODwAAwUBBwNCAXQDAgEDEAADIwEzARkBTwGWAf8BFgFRAZMB/wEZAU8BlQH/ARkBUAGT + Af8BGAFQAZUB/wEZAVABkwH/yAADRQF9AVsCXgHQAwwBEBAAARoBUAGWAf8BTQG9Ad8B/wFQAbwB4QH/ + AU0BvgHcAf8BUgG+AeEB/wFLAb0B3wH/AZsB2gHuAf8BHwFQAZgB/wEcAU8BlwH/AR4BVQGYAf8BHAFT + AZYB/wEZAVEBlAH/AyMBM6wAA1ABnQEAAb8C/wFZAmcB8gMYASIQAAEfAVEBlQH/AUwBvwHfAf8BTwG+ + Ad8B/wFQAb8B4QH/AU4BvgHgAf8BTQG/AeEB/wGgAdkB8gH/ASgBjwG7Af8BjAG+AdIB/wFGAbEBzAH/ + ATgBpwHJAf8BRwHIAeMB/wEsAZQBtgH/A0UBfUQAA1IBqQHDAY4BVwH/AcABiwFVAf8BvgGIAVMB/wG7 + AYUBUAH/AbkBgwFOAf8BtAFtAUsB/wGyAWsBSQH/AbEBagFHAf8BrgFoAUYB/wGtAWUBRQH/AasBZAFD + Af8BqQFiAUIB/wGpAWABQAH/A1IBqRAAA1EBogFSAlMBqAM9AWkDIQEwAxQBGwNVAbUBAAHGAv8BAAHF + Av8BXAJhAdwDFAEcAwYBCAwAARsBVQGTAf8BTwG+Ad8B/wFNAcEB3gH/AVEBvwHdAf8BUgG+AeEB/wFT + AbsB3QH/AZ0B2gHuAf8BLAGXAbYB/wFXAb8B3gH/AU4BuAHVAf8BQwGrAc4B/wFQAb0B5AH/AS8BkgG5 + Af8DOAFcAyMBMwgAA8AB/wNKAf8DwAH/BAADwAH/A0oB/wPAAf8EAAPAAf8DSgH/A8AB/wwAAcgBkgFb + Bf8BxwHIAv8BxwHIBv8B1QHtAdgB/wHVAe0B2AX/A+gB/wPpBf8D6gH/A+sF/wGpAWEBQAH/EAADQAFw + AQYB1wL/AQUB2AL/AQABxwH+Af8BTgJdAfABAAHLAf4B/wEAAcgB/QH/AQAByAL/AVwCXgHOAwoBDgML + AQ8DAwEECAABHQFRAZcB/wFUAbwB3gH/AVMBvgHdAf8BVAG/Ad4B/wFUAb0B3AH/AYcByQHiAf8BpQHg + AfQB/wEqAZkBuwH/AYYByAHhAf8BhAHAAd4B/wFSAbsB1wH/AYoBzwHqAf8BKwGWAb0B/wMjATMMAANK + Af8DAAH/A0oB/wQAA0oB/wMAAf8DSgH/BAADSgH/AwAB/wNKAf8MAAHKAZQBXQX/AVoBXgH+Af8BWgFe + Af4B/wP8Af8BkAHPAZkB/wGQAc8BmQH/A/wB/wPRAf8D0QH/A/sB/wPRAf8D0QX/AaoBYgFCAf8QAAMg + AS8BCQHSAf0B/wEJAdEB/QH/AQkB0gH+Af8BCAHSAv8BBQHNAf0B/wECAcwB/QH/AQABzQL/A1YBtgQA + AwgBCwMEAQYDAAEBBAABHgFWAZcB/wFXAcgB5AH/AYEBxgHnAf8BVwHFAeIB/wGAAcoB5AH/AZQB0wHv + Af8BrgHjAfgB/wEyAZ0BvgH/AYsBzQHmAf8BjAHMAeUB/wGJAcYB4AH/AZcB2gHvAf8BMgGaAb0B/xAA + A8AB/wNKAf8DwAH/BAADwAH/A0oB/wPAAf8EAAPAAf8DSgH/A8AB/wwAAcwBlwFeBf8D/gH/A/0B/wP9 + Af8D/QH/A/wB/wP8Af8D/AH/A/wB/wP7Af8D+wH/A/sF/wGsAWQBQwH/EAADBAEFAV4CYQHaAQ0B1gH9 + Af8BDgHWAf0B/wEMAdQB/QH/AQoB0gH9Af8BBwHQAf0B/wEFAdEB/gH/AVgCYQHmAyoBQAsAAQEEAAEg + AVcBmgH/AYsB0AHrAf8BjQHQAesB/wGNAdEB6AH/AY4B0QHoAf8BpAHcAfUB/wGyAecB9AH/AckB9wL/ + ATwBowG/Af8BpgHZAfMB/wGWAc8B6AH/AawB6QHrAf8BOAGeAcIB/0gAAdEBnAFiBf8B6wGwAU8B/wHr + AbABTwH/A/4B/wPRAf8D0QH/A/0B/wFiAaoC/wFiAaoC/wP8Af8BVgHVAfAB/wFWAdUB8AX/AbABaQFH + Af8UAANWAbQBHgHeAf0B/wERAdoB/QH/ARIB2QH9Af8BDwHXAf0B/wEMAdQB/QH/AQkB0QH9Af8BBwHS + Av8BAAHTAv8DSwGOAwoBDQgAASIBggGdAf8BoQHaAfMB/wGmAdwB8wH/AacB3QH0Af8BpgHcAfUB/wGq + AeMB+AH/AcUB7wL/Ac0B9gL/AUUBpgHFAf8BrwHjAfAB/wGsAecB+wH/AUEBowHGAf9MAAHUAZ4BZAX/ + AesBsAFPAf8B6wGwAU8F/wPRAf8D0QH/A/4B/wFiAaoC/wFiAaoC/wP9Af8BVgHVAfAB/wFWAdUB8AX/ + AbIBawFJAf8QAANKAYoBhQHrAf4B/wGDAesB/gH/AR4B4AH9Af8BFQHdAf0B/wEVAdsB/QH/AREB2AH9 + Af8BCgHVAf0B/wEJAdEB/QH/ARIB1AL/ASoB8gL/AVYCWAHBAwoBDQQAASQBggGgAf8BsQHjAfcB/wG2 + AeAB9wH/AbEB4AH2Af8BtAHjAfkB/wGxAeYB+gH/AcIB7wH8Af8B0AH7Af4B/wFIAa4BxgH/AbgB5QH6 + Af8BwwHyAv8BSQGqAckB/0wAAdUBoAFlFf8D/gH/A/4B/wP+Af8D/QH/A/0B/wP9Af8D/QX/AbUBbQFL + Af8MAAM1AVYBXAFvAXEB+AGZAfEB/gH/AbYB9QH+Af8BTwHqAf4B/wEXAeAB/QH/ARkB3wH9Af8BFwHc + Af0B/wErAd4B/QH/ATAB5QH+Af8BVwJaAb0DLAFEAwcBCgMAAQEEAAErAYgBowH/AbsB7QH5Af8BvQHw AfoB/wG8Ae4B+gH/AcMB7QH6Af8BxQHzAfoB/wHBAfIB/AH/AdQB+gH+Af8BgQG4Ac0B/wHKAesB+wH/ - AcoB9AL/AYMBugHPAf9MAAHYAaIBaQX/A9EB/wPRBf8B6wGwAVAB/wHrAbABUAX/AZABzwGZAf8BkAHP - AZkB/wP+Af8D0QH/A9EF/wG3AYEBTgH/CAADCgEOAVgCXgHdAZMB8wH+Af8BrwH1Af4B/wGyAfUC/wGd - AfIC/wGgAfEB/gH/AR4B5AH9Af8BKgHdAfwB/wFaAl0BygMyAVEPAAEBBAABMgGIAacB/wHFAewB+gH/ + AcoB9AL/AYMBugHPAf9MAAHYAaIBaAX/A9EB/wPRBf8B6wGwAU8B/wHrAbABTwX/AZABzwGZAf8BkAHP + AZkB/wP+Af8D0QH/A9EF/wG3AYEBTQH/CAADCgEOAVgCXgHdAZMB8wH+Af8BrwH1Af4B/wGyAfUC/wGd + AfIC/wGgAfEB/gH/AR0B5AH9Af8BKQHdAfwB/wFaAl0BygMyAVEPAAEBBAABMQGIAacB/wHFAewB+gH/ AcQB7wH4Af8BwwHtAfkB/wHDAewB+wH/AcUB9wH9Af8ByQHwAf4B/wHXAfwB+gH/AY0BuwHdAf8B1QHw - Af4B/wHSAfgB/QH/AYYBvAHVAf9MAAHZAaMBaQX/A9EB/wPRBf8B6wGwAVAB/wHrAbABUAX/AZABzwGZ - Af8BkAHPAZkB/wP+Af8D0QH/A9EF/wG6AYUBUAH/CAABQQJCAXMDYQHhA1sBxgNVAbADTAGTA14BzgHt - Af0C/wGJAfEC/wElAdIB+AH/Ay4BRxgAATIBiQGlAf8ByAH3Av8BzwH5Av8B0wH3Af0B/wHTAfsC/wHV - AfgB/AH/AdwB+gL/AeAB+AH+Af8BiQHCAdcB/wHTAe0B/QH/AdUB9gL/AZQBvgHVAf9MAAHbAaQBajX/ - Ab0BhwFTAf8cAAMcAScBawJ6AfkByQH5Av8BWgJhAeQDBgEIGAABMgGMAaYB/wFHAacBxgH/AUQBqQHH - Af8BSAGmAcUB/wFSAawBzAH/AVgBuwHTAf8BigG9AdEB/wGQAcEB1wH/AdgB8wH9Af8B0gHyAfgB/wHd - AfoC/wGUAcMB2AH/TAAB3AGnAWsB/wHcAacBawH/AdwBpwFrAf8B3AGnAWsB/wHcAacBawH/AdwBpwFr - Af8B3AGnAWsB/wHcAacBawH/AdwBpwFrAf8B3AGnAWsB/wHcAacBawH/AdwBpwFrAf8B3AGnAWsB/wHc - AacBawH/AcABiwFWAf8gAAM9AWgBpQHoAfsB/wFNAk4BlRwAAyMBMwE7AZIBqgH/AdIB9QL/AdUB+QL/ - AdMB+QH9Af8B3gH7Av8B3wH5Av8B3QH2Av8B5AH6Av8B3gH9AfwB/wHdAfwB+wH/AZcBwwHaAf9MAAG5 + Af4B/wHSAfgB/QH/AYYBvAHVAf9MAAHZAaMBaAX/A9EB/wPRBf8B6wGwAU8B/wHrAbABTwX/AZABzwGZ + Af8BkAHPAZkB/wP+Af8D0QH/A9EF/wG6AYUBTwH/CAABQQJCAXMDYQHhA1sBxgNVAbADTAGTA14BzgHt + Af0C/wGJAfEC/wEkAdIB+AH/Ay4BRxgAATEBiQGlAf8ByAH3Av8BzwH5Av8B0wH3Af0B/wHTAfsC/wHV + AfgB/AH/AdwB+gL/AeAB+AH+Af8BiQHCAdcB/wHTAe0B/QH/AdUB9gL/AZQBvgHVAf9MAAHbAaQBaTX/ + Ab0BhwFSAf8cAAMcAScBagJ3AfkByQH5Av8BWgJhAeQDBgEIGAABMQGMAaYB/wFGAacBxgH/AUMBqQHH + Af8BRwGmAcUB/wFRAawBzAH/AVcBuwHTAf8BigG9AdEB/wGQAcEB1wH/AdgB8wH9Af8B0gHyAfgB/wHd + AfoC/wGUAcMB2AH/TAAB3AGnAWoB/wHcAacBagH/AdwBpwFqAf8B3AGnAWoB/wHcAacBagH/AdwBpwFq + Af8B3AGnAWoB/wHcAacBagH/AdwBpwFqAf8B3AGnAWoB/wHcAacBagH/AdwBpwFqAf8B3AGnAWoB/wHc + AacBagH/AcABiwFVAf8gAAM9AWgBpQHoAfsB/wFNAk4BlRwAAyMBMwE6AZIBqgH/AdIB9QL/AdUB+QL/ + AdMB+QH9Af8B3gH7Av8B3wH5Av8B3QH2Av8B5AH6Av8B3gH9AfwB/wHdAfwB+wH/AZcBwwHaAf9MAAG4 AagBhQH9AegBuQGSAf8B6AG5AZIB/wHoAbkBkgH/AegBuQGSAf8B6AG5AZIB/wHoAbkBkgH/AegBuQGS - Af8B6AG5AZIB/wHoAbkBkgH/AegBuQGSAf8B6AG5AZIB/wHoAbkBkgH/AegBuQGSAf8BsAGQAVIB/SQA - A1YBtAMtAUUgAAMjATMBSwGsAckB/wFSAbABywH/AVYBswHRAf8BjgG+AdYB/wGRAcQB2AH/AZ0BxgHd - Af8BmgHHAdwB/wGYAckB3wH/AZsBxgHZAf8DIwEzTAADPgFrAX0BcwFlAfQB3AGnAWsB/wHcAaYBagH/ - AdoBpAFqAf8B2AGiAWkB/wHVAaABZgH/AdQBngFlAf8B0gGdAWMB/wHPAZoBYgH/Ac4BmQFgAf8BywGW - AV8B/wHJAZQBXAH/AXkBagFlAfQDPgFrJAADGgElAw0BEdgAAUIBTQE+BwABPgMAASgDAAFAAwABMAMA + Af8B6AG5AZIB/wHoAbkBkgH/AegBuQGSAf8B6AG5AZIB/wHoAbkBkgH/AegBuQGSAf8BrwGQAVEB/SQA + A1YBtAMtAUUgAAMjATMBSgGsAckB/wFRAbABywH/AVUBswHRAf8BjgG+AdYB/wGRAcQB2AH/AZ0BxgHd + Af8BmgHHAdwB/wGYAckB3wH/AZsBxgHZAf8DIwEzTAADPgFrAXsBcAFlAfQB3AGnAWoB/wHcAaYBaQH/ + AdoBpAFpAf8B2AGiAWgB/wHVAaABZQH/AdQBngFkAf8B0gGdAWIB/wHPAZoBYQH/Ac4BmQFfAf8BywGW + AV4B/wHJAZQBWwH/AXcBZwFlAfQDPgFrJAADGgElAw0BEdgAAUIBTQE+BwABPgMAASgDAAFAAwABMAMA AQEBAAEBBQABgAEBFgAD/wEAAv8GAALnBgACwwYAAoEGAAGAAQEGAAHAAQMGAAHgAQcGAAHwAQ8GAAHw AQ8GAAHgAQcGAAHAAQMGAAGAAQEGAAGBAYAGAAHDAcEGAAHnAeMGAAH/AfcGAAHgAQcB4AEHAv8BgAEB AcABBwHAAQcC/wHAAQMBwAEHAcABBwHiAd8BwAEDAcABBwHAAQcBgwH/AcABAwHAAQABwAEAAYABBwHA From 82fb8da574f705902752d7f94206e20234a8fe2d Mon Sep 17 00:00:00 2001 From: Kim Date: Sun, 10 Nov 2019 22:51:14 +1100 Subject: [PATCH 2/2] Fixes issue 4 Fixes issue 4 Rebased off of host master to reduce the chance of a merge conflict * rdpsign.vb: updated to dynamically determine the path to rdpsign.exe * rdpsign.vb: updated to show an error if rdpsign.exe cannot be found (now imports system.windows.forms for MessageBox) * Create Client Connection window: Made some visual + text changes * Create Client Connection window: Disable the signing section if rdpsign.exe not detected or if no certificates are found * Create Client Connection window: Change "Disabled" checkbox text to "Sign RDP file" and reverse its logic (so that checked = sign rdp file) * Create Client Connection window: "Create Signed and Unsigned" checkbox is disabled + unticked if generating an MSI * Create Client Connection window: Certificate ComboBox defaults to the first certificate rather than blank * Create Client Connection window: Updated the save/reset settings to include the new signing section * Create Client Connection window: Updated the Tab-Order --- RDPSign/RDPSign.vb | 51 +-- RDPSign/RDPSign.vbproj | 1 + remoteapp-tool/App.config | 9 + .../My Project/Settings.Designer.vb | 40 ++- remoteapp-tool/My Project/Settings.settings | 9 + ...emoteAppCreateClientConnection.Designer.vb | 114 ++++--- .../RemoteAppCreateClientConnection.resx | 290 +++++++++--------- .../RemoteAppCreateClientConnection.vb | 75 +++-- 8 files changed, 347 insertions(+), 242 deletions(-) diff --git a/RDPSign/RDPSign.vb b/RDPSign/RDPSign.vb index 490e31f..303149b 100644 --- a/RDPSign/RDPSign.vb +++ b/RDPSign/RDPSign.vb @@ -1,6 +1,9 @@ -Public Class RDPSign +Imports System.Windows.Forms + +Public Class RDPSign Public ErrorNumber As Integer = 0 Public ErrorString As String = "" + Sub main() End Sub @@ -101,25 +104,37 @@ End If 'If we get here, we should be good to run the command to sign the RDP file. - Dim Command As String = "C:\Windows\System32\rdpsign.exe" - Dim Arguments As String - Dim FileVersionInfo As FileVersionInfo = FileVersionInfo.GetVersionInfo(Command) - ' On my windows 10 computer, the argument is /sha256 instead of /sha1. /sha1 doesn't work. - ' On my windows 10 computer, the Product parts come in at 10.0.18362.1 - ' On a Windows Server 2008 R2 server I have access to, the argument is /sha1. - ' On a Windows Server 2008 R2 server I have access to, the Product parts come in at 6.1.7601.17514 which is lower than the windows 10 ones. - ' I do not have other versions of windows to test, so will need external testing for this. - ' Not sure where the version number switches over, but also not sure how to determine which method to use otherwise - If (FileVersionInfo.ProductMajorPart >= 10) Then - Arguments = " /sha256 " & Thumbprint & " """ & RDPFileLocation & """" + Dim Command As String = GetSysDir() & "\rdpsign.exe" + If My.Computer.FileSystem.FileExists(Command) Then + Dim Arguments As String + Dim FileVersionInfo As FileVersionInfo = FileVersionInfo.GetVersionInfo(Command) + ' On my windows 10 computer, the argument is /sha256 instead of /sha1. /sha1 doesn't work. + ' On my windows 10 computer, the Product parts come in at 10.0.18362.1 + ' On a Windows Server 2008 R2 server I have access to, the argument is /sha1. + ' On a Windows Server 2008 R2 server I have access to, the Product parts come in at 6.1.7601.17514 which is lower than the windows 10 ones. + ' I do not have other versions of windows to test, so will need external testing for this. + ' Not sure where the version number switches over, but also not sure how to determine which method to use otherwise + If (FileVersionInfo.ProductMajorPart >= 10) Then + Arguments = " /sha256 " & Thumbprint & " """ & RDPFileLocation & """" + Else + Arguments = " /sha1 " & Thumbprint & " """ & RDPFileLocation & """" + End If + Dim StartInfo As New ProcessStartInfo + StartInfo.FileName = Command + StartInfo.Arguments = Arguments + StartInfo.WindowStyle = ProcessWindowStyle.Hidden + Process.Start(StartInfo) Else - Arguments = " /sha1 " & Thumbprint & " """ & RDPFileLocation & """" + MessageBox.Show("RDPSign executable not found:" & vbNewLine & vbNewLine & Command, My.Application.Info.AssemblyName, MessageBoxButtons.OK, MessageBoxIcon.Error) End If - Dim StartInfo As New ProcessStartInfo - StartInfo.FileName = Command - StartInfo.Arguments = Arguments - StartInfo.WindowStyle = ProcessWindowStyle.Hidden - Process.Start(StartInfo) + End Sub + + Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long + + Function GetSysDir() As String + Return Environment.SystemDirectory.ToString + End Function + End Class diff --git a/RDPSign/RDPSign.vbproj b/RDPSign/RDPSign.vbproj index 0c6503e..0733cbf 100644 --- a/RDPSign/RDPSign.vbproj +++ b/RDPSign/RDPSign.vbproj @@ -48,6 +48,7 @@ + diff --git a/remoteapp-tool/App.config b/remoteapp-tool/App.config index 947e0e1..1fc2692 100644 --- a/remoteapp-tool/App.config +++ b/remoteapp-tool/App.config @@ -67,6 +67,15 @@ False + + False + + + False + + + 0 + diff --git a/remoteapp-tool/My Project/Settings.Designer.vb b/remoteapp-tool/My Project/Settings.Designer.vb index b5bc9fb..f815b00 100644 --- a/remoteapp-tool/My Project/Settings.Designer.vb +++ b/remoteapp-tool/My Project/Settings.Designer.vb @@ -15,7 +15,7 @@ Option Explicit On Namespace My _ Partial Friend NotInheritable Class MySettings Inherits Global.System.Configuration.ApplicationSettingsBase @@ -29,7 +29,7 @@ Namespace My Private Shared addedHandlerLockObject As New Object _ - Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) + Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) If My.Application.SaveMySettingsOnExit Then My.Settings.Save() End If @@ -281,6 +281,42 @@ Namespace My Me("SavedDisableFTA") = value End Set End Property + + _ + Public Property SavedSignRDP() As Boolean + Get + Return CType(Me("SavedSignRDP"),Boolean) + End Get + Set + Me("SavedSignRDP") = value + End Set + End Property + + _ + Public Property SavedSignedAndUnsigned() As Boolean + Get + Return CType(Me("SavedSignedAndUnsigned"),Boolean) + End Get + Set + Me("SavedSignedAndUnsigned") = value + End Set + End Property + + _ + Public Property SavedCertSelected() As Integer + Get + Return CType(Me("SavedCertSelected"),Integer) + End Get + Set + Me("SavedCertSelected") = value + End Set + End Property End Class End Namespace diff --git a/remoteapp-tool/My Project/Settings.settings b/remoteapp-tool/My Project/Settings.settings index ecf7582..84933ab 100644 --- a/remoteapp-tool/My Project/Settings.settings +++ b/remoteapp-tool/My Project/Settings.settings @@ -59,5 +59,14 @@ False + + False + + + False + + + 0 + \ No newline at end of file diff --git a/remoteapp-tool/RemoteAppCreateClientConnection.Designer.vb b/remoteapp-tool/RemoteAppCreateClientConnection.Designer.vb index 6fcae72..b7198b8 100644 --- a/remoteapp-tool/RemoteAppCreateClientConnection.Designer.vb +++ b/remoteapp-tool/RemoteAppCreateClientConnection.Designer.vb @@ -68,10 +68,10 @@ Partial Class RemoteAppCreateClientConnection Me.FTACountLabel = New System.Windows.Forms.Label() Me.DisabledFTACheckBox = New System.Windows.Forms.CheckBox() Me.GroupBoxSignRDP = New System.Windows.Forms.GroupBox() + Me.CheckBoxCreateSignedAndUnsigned = New System.Windows.Forms.CheckBox() Me.CertificateComboBox = New System.Windows.Forms.ComboBox() Me.CertificateLabel = New System.Windows.Forms.Label() - Me.CheckBoxSignRDPDisabled = New System.Windows.Forms.CheckBox() - Me.CheckBoxCreateSignedAndUnsigned = New System.Windows.Forms.CheckBox() + Me.CheckBoxSignRDPEnabled = New System.Windows.Forms.CheckBox() Me.ServerGroupBox.SuspendLayout() Me.RDGWGroupBox.SuspendLayout() Me.ClientConnectionGroupBox.SuspendLayout() @@ -83,6 +83,7 @@ Partial Class RemoteAppCreateClientConnection ' 'EditAfterSave ' + Me.EditAfterSave.BackColor = System.Drawing.Color.Transparent Me.EditAfterSave.ImageIndex = 2 Me.EditAfterSave.ImageList = Me.SmallerIcons Me.EditAfterSave.Location = New System.Drawing.Point(313, 13) @@ -91,7 +92,7 @@ Partial Class RemoteAppCreateClientConnection Me.EditAfterSave.TabIndex = 2 Me.EditAfterSave.Text = "Manually edit RDP file" Me.EditAfterSave.TextImageRelation = System.Windows.Forms.TextImageRelation.TextBeforeImage - Me.EditAfterSave.UseVisualStyleBackColor = True + Me.EditAfterSave.UseVisualStyleBackColor = False ' 'SmallerIcons ' @@ -113,10 +114,10 @@ Partial Class RemoteAppCreateClientConnection Me.CreateButton.Font = New System.Drawing.Font("Segoe UI", 9.0!) Me.CreateButton.ImageIndex = 6 Me.CreateButton.ImageList = Me.SmallerIcons - Me.CreateButton.Location = New System.Drawing.Point(416, 546) + Me.CreateButton.Location = New System.Drawing.Point(416, 555) Me.CreateButton.Name = "CreateButton" Me.CreateButton.Size = New System.Drawing.Size(80, 29) - Me.CreateButton.TabIndex = 8 + Me.CreateButton.TabIndex = 9 Me.CreateButton.Text = "Create..." Me.CreateButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText Me.CreateButton.UseVisualStyleBackColor = False @@ -134,10 +135,10 @@ Partial Class RemoteAppCreateClientConnection Me.CancelEditButton.Font = New System.Drawing.Font("Segoe UI", 9.0!) Me.CancelEditButton.ImageIndex = 4 Me.CancelEditButton.ImageList = Me.SmallerIcons - Me.CancelEditButton.Location = New System.Drawing.Point(343, 546) + Me.CancelEditButton.Location = New System.Drawing.Point(343, 555) Me.CancelEditButton.Name = "CancelEditButton" Me.CancelEditButton.Size = New System.Drawing.Size(67, 29) - Me.CancelEditButton.TabIndex = 7 + Me.CancelEditButton.TabIndex = 8 Me.CancelEditButton.Text = "Cancel" Me.CancelEditButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText Me.CancelEditButton.UseVisualStyleBackColor = False @@ -164,7 +165,7 @@ Partial Class RemoteAppCreateClientConnection Me.Label13.Location = New System.Drawing.Point(7, 54) Me.Label13.Name = "Label13" Me.Label13.Size = New System.Drawing.Size(101, 15) - Me.Label13.TabIndex = 104 + Me.Label13.TabIndex = 4 Me.Label13.Text = "Alternative server:" ' 'Label14 @@ -173,7 +174,7 @@ Partial Class RemoteAppCreateClientConnection Me.Label14.Location = New System.Drawing.Point(382, 25) Me.Label14.Name = "Label14" Me.Label14.Size = New System.Drawing.Size(32, 15) - Me.Label14.TabIndex = 105 + Me.Label14.TabIndex = 2 Me.Label14.Text = "Port:" ' 'Label12 @@ -182,7 +183,7 @@ Partial Class RemoteAppCreateClientConnection Me.Label12.Location = New System.Drawing.Point(7, 25) Me.Label12.Name = "Label12" Me.Label12.Size = New System.Drawing.Size(85, 15) - Me.Label12.TabIndex = 106 + Me.Label12.TabIndex = 0 Me.Label12.Text = "Server address:" ' 'ServerPort @@ -190,7 +191,7 @@ Partial Class RemoteAppCreateClientConnection Me.ServerPort.Location = New System.Drawing.Point(420, 22) Me.ServerPort.Name = "ServerPort" Me.ServerPort.Size = New System.Drawing.Size(53, 23) - Me.ServerPort.TabIndex = 1 + Me.ServerPort.TabIndex = 3 Me.ServerPort.Text = "3389" ' 'AltServerAddress @@ -198,14 +199,14 @@ Partial Class RemoteAppCreateClientConnection Me.AltServerAddress.Location = New System.Drawing.Point(121, 51) Me.AltServerAddress.Name = "AltServerAddress" Me.AltServerAddress.Size = New System.Drawing.Size(352, 23) - Me.AltServerAddress.TabIndex = 2 + Me.AltServerAddress.TabIndex = 5 ' 'ServerAddress ' Me.ServerAddress.Location = New System.Drawing.Point(121, 22) Me.ServerAddress.Name = "ServerAddress" Me.ServerAddress.Size = New System.Drawing.Size(255, 23) - Me.ServerAddress.TabIndex = 0 + Me.ServerAddress.TabIndex = 1 ' 'RDGWGroupBox ' @@ -228,7 +229,7 @@ Partial Class RemoteAppCreateClientConnection Me.AttemptDirectCheckBox.Location = New System.Drawing.Point(10, 76) Me.AttemptDirectCheckBox.Name = "AttemptDirectCheckBox" Me.AttemptDirectCheckBox.Size = New System.Drawing.Size(326, 19) - Me.AttemptDirectCheckBox.TabIndex = 2 + Me.AttemptDirectCheckBox.TabIndex = 3 Me.AttemptDirectCheckBox.Text = "Only use RD Gateway if direct connection is unsuccessful" Me.AttemptDirectCheckBox.UseVisualStyleBackColor = True ' @@ -249,7 +250,7 @@ Partial Class RemoteAppCreateClientConnection Me.RDGWLabel.Location = New System.Drawing.Point(7, 50) Me.RDGWLabel.Name = "RDGWLabel" Me.RDGWLabel.Size = New System.Drawing.Size(116, 15) - Me.RDGWLabel.TabIndex = 110 + Me.RDGWLabel.TabIndex = 1 Me.RDGWLabel.Text = "RD Gateway address:" ' 'GatewayAddress @@ -258,7 +259,7 @@ Partial Class RemoteAppCreateClientConnection Me.GatewayAddress.Location = New System.Drawing.Point(145, 47) Me.GatewayAddress.Name = "GatewayAddress" Me.GatewayAddress.Size = New System.Drawing.Size(328, 23) - Me.GatewayAddress.TabIndex = 1 + Me.GatewayAddress.TabIndex = 2 ' 'ClientConnectionGroupBox ' @@ -299,6 +300,7 @@ Partial Class RemoteAppCreateClientConnection ' 'CreateRAWebIcon ' + Me.CreateRAWebIcon.BackColor = System.Drawing.Color.Transparent Me.CreateRAWebIcon.ImageIndex = 5 Me.CreateRAWebIcon.ImageList = Me.SmallerIcons Me.CreateRAWebIcon.Location = New System.Drawing.Point(313, 36) @@ -307,7 +309,7 @@ Partial Class RemoteAppCreateClientConnection Me.CreateRAWebIcon.TabIndex = 3 Me.CreateRAWebIcon.Text = "Create icon files" Me.CreateRAWebIcon.TextImageRelation = System.Windows.Forms.TextImageRelation.TextBeforeImage - Me.CreateRAWebIcon.UseVisualStyleBackColor = True + Me.CreateRAWebIcon.UseVisualStyleBackColor = False ' 'FTAButton ' @@ -317,7 +319,7 @@ Partial Class RemoteAppCreateClientConnection Me.FTAButton.Location = New System.Drawing.Point(301, 22) Me.FTAButton.Name = "FTAButton" Me.FTAButton.Size = New System.Drawing.Size(172, 29) - Me.FTAButton.TabIndex = 1 + Me.FTAButton.TabIndex = 2 Me.FTAButton.Text = "File type associations..." Me.FTAButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText Me.FTAButton.UseVisualStyleBackColor = False @@ -373,7 +375,7 @@ Partial Class RemoteAppCreateClientConnection Me.Panel1.Location = New System.Drawing.Point(89, 76) Me.Panel1.Name = "Panel1" Me.Panel1.Size = New System.Drawing.Size(200, 26) - Me.Panel1.TabIndex = 112 + Me.Panel1.TabIndex = 9 ' 'PerMachineRadioButton ' @@ -403,7 +405,7 @@ Partial Class RemoteAppCreateClientConnection Me.TopLevelRadioButton.AutoSize = True Me.TopLevelRadioButton.Location = New System.Drawing.Point(366, 17) Me.TopLevelRadioButton.Name = "TopLevelRadioButton" - Me.TopLevelRadioButton.Size = New System.Drawing.Size(71, 19) + Me.TopLevelRadioButton.Size = New System.Drawing.Size(72, 19) Me.TopLevelRadioButton.TabIndex = 4 Me.TopLevelRadioButton.Text = "Top level" Me.TopLevelRadioButton.UseVisualStyleBackColor = True @@ -495,10 +497,10 @@ Partial Class RemoteAppCreateClientConnection Me.ResetButton.Font = New System.Drawing.Font("Segoe UI", 9.0!) Me.ResetButton.ImageIndex = 3 Me.ResetButton.ImageList = Me.SmallerIcons - Me.ResetButton.Location = New System.Drawing.Point(126, 546) + Me.ResetButton.Location = New System.Drawing.Point(126, 555) Me.ResetButton.Name = "ResetButton" Me.ResetButton.Size = New System.Drawing.Size(121, 29) - Me.ResetButton.TabIndex = 6 + Me.ResetButton.TabIndex = 7 Me.ResetButton.Text = "Reset to default" Me.ResetButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText Me.ResetButton.UseVisualStyleBackColor = False @@ -510,10 +512,10 @@ Partial Class RemoteAppCreateClientConnection Me.SaveButton.Font = New System.Drawing.Font("Segoe UI", 9.0!) Me.SaveButton.ImageIndex = 0 Me.SaveButton.ImageList = Me.SmallerIcons - Me.SaveButton.Location = New System.Drawing.Point(12, 546) + Me.SaveButton.Location = New System.Drawing.Point(12, 555) Me.SaveButton.Name = "SaveButton" Me.SaveButton.Size = New System.Drawing.Size(108, 29) - Me.SaveButton.TabIndex = 5 + Me.SaveButton.TabIndex = 6 Me.SaveButton.Text = "Save settings" Me.SaveButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText Me.SaveButton.UseVisualStyleBackColor = False @@ -536,7 +538,7 @@ Partial Class RemoteAppCreateClientConnection Me.FTACountLabel.Location = New System.Drawing.Point(154, 29) Me.FTACountLabel.Name = "FTACountLabel" Me.FTACountLabel.Size = New System.Drawing.Size(52, 15) - Me.FTACountLabel.TabIndex = 2 + Me.FTACountLabel.TabIndex = 1 Me.FTACountLabel.Text = "Count: 0" ' 'DisabledFTACheckBox @@ -554,58 +556,52 @@ Partial Class RemoteAppCreateClientConnection Me.GroupBoxSignRDP.Controls.Add(Me.CheckBoxCreateSignedAndUnsigned) Me.GroupBoxSignRDP.Controls.Add(Me.CertificateComboBox) Me.GroupBoxSignRDP.Controls.Add(Me.CertificateLabel) - Me.GroupBoxSignRDP.Controls.Add(Me.CheckBoxSignRDPDisabled) + Me.GroupBoxSignRDP.Controls.Add(Me.CheckBoxSignRDPEnabled) Me.GroupBoxSignRDP.Location = New System.Drawing.Point(12, 477) Me.GroupBoxSignRDP.Name = "GroupBoxSignRDP" - Me.GroupBoxSignRDP.Size = New System.Drawing.Size(482, 63) - Me.GroupBoxSignRDP.TabIndex = 4 + Me.GroupBoxSignRDP.Size = New System.Drawing.Size(482, 68) + Me.GroupBoxSignRDP.TabIndex = 5 Me.GroupBoxSignRDP.TabStop = False - Me.GroupBoxSignRDP.Text = "Sign RDP" + Me.GroupBoxSignRDP.Text = "Digital Signing" + ' + 'CheckBoxCreateSignedAndUnsigned + ' + Me.CheckBoxCreateSignedAndUnsigned.AutoSize = True + Me.CheckBoxCreateSignedAndUnsigned.Location = New System.Drawing.Point(10, 41) + Me.CheckBoxCreateSignedAndUnsigned.Name = "CheckBoxCreateSignedAndUnsigned" + Me.CheckBoxCreateSignedAndUnsigned.Size = New System.Drawing.Size(175, 19) + Me.CheckBoxCreateSignedAndUnsigned.TabIndex = 1 + Me.CheckBoxCreateSignedAndUnsigned.Text = "Create Signed and Unsigned" + Me.CheckBoxCreateSignedAndUnsigned.UseVisualStyleBackColor = True ' 'CertificateComboBox ' Me.CertificateComboBox.BackColor = System.Drawing.Color.WhiteSmoke Me.CertificateComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList - Me.CertificateComboBox.Enabled = False Me.CertificateComboBox.FormattingEnabled = True - Me.CertificateComboBox.Location = New System.Drawing.Point(268, 25) + Me.CertificateComboBox.Location = New System.Drawing.Point(282, 25) Me.CertificateComboBox.Name = "CertificateComboBox" Me.CertificateComboBox.Size = New System.Drawing.Size(191, 23) - Me.CertificateComboBox.TabIndex = 24 + Me.CertificateComboBox.TabIndex = 3 ' 'CertificateLabel ' Me.CertificateLabel.AutoSize = True - Me.CertificateLabel.Location = New System.Drawing.Point(205, 28) + Me.CertificateLabel.Location = New System.Drawing.Point(212, 28) Me.CertificateLabel.Name = "CertificateLabel" Me.CertificateLabel.Size = New System.Drawing.Size(64, 15) - Me.CertificateLabel.TabIndex = 23 + Me.CertificateLabel.TabIndex = 2 Me.CertificateLabel.Text = "Certificate:" ' - 'CheckBoxSignRDPDisabled + 'CheckBoxSignRDPEnabled ' - Me.CheckBoxSignRDPDisabled.AutoSize = True - Me.CheckBoxSignRDPDisabled.Checked = True - Me.CheckBoxSignRDPDisabled.CheckState = System.Windows.Forms.CheckState.Checked - Me.CheckBoxSignRDPDisabled.Location = New System.Drawing.Point(10, 22) - Me.CheckBoxSignRDPDisabled.Name = "CheckBoxSignRDPDisabled" - Me.CheckBoxSignRDPDisabled.Size = New System.Drawing.Size(71, 19) - Me.CheckBoxSignRDPDisabled.TabIndex = 0 - Me.CheckBoxSignRDPDisabled.Text = "Disabled" - Me.CheckBoxSignRDPDisabled.UseVisualStyleBackColor = True - ' - 'CheckBoxCreateSignedAndUnsigned - ' - Me.CheckBoxCreateSignedAndUnsigned.AutoSize = True - Me.CheckBoxCreateSignedAndUnsigned.Checked = True - Me.CheckBoxCreateSignedAndUnsigned.CheckState = System.Windows.Forms.CheckState.Checked - Me.CheckBoxCreateSignedAndUnsigned.Enabled = False - Me.CheckBoxCreateSignedAndUnsigned.Location = New System.Drawing.Point(10, 38) - Me.CheckBoxCreateSignedAndUnsigned.Name = "CheckBoxCreateSignedAndUnsigned" - Me.CheckBoxCreateSignedAndUnsigned.Size = New System.Drawing.Size(175, 19) - Me.CheckBoxCreateSignedAndUnsigned.TabIndex = 25 - Me.CheckBoxCreateSignedAndUnsigned.Text = "Create Signed and Unsigned" - Me.CheckBoxCreateSignedAndUnsigned.UseVisualStyleBackColor = True + Me.CheckBoxSignRDPEnabled.AutoSize = True + Me.CheckBoxSignRDPEnabled.Location = New System.Drawing.Point(10, 22) + Me.CheckBoxSignRDPEnabled.Name = "CheckBoxSignRDPEnabled" + Me.CheckBoxSignRDPEnabled.Size = New System.Drawing.Size(93, 19) + Me.CheckBoxSignRDPEnabled.TabIndex = 0 + Me.CheckBoxSignRDPEnabled.Text = "Sign RDP file" + Me.CheckBoxSignRDPEnabled.UseVisualStyleBackColor = True ' 'RemoteAppCreateClientConnection ' @@ -614,7 +610,7 @@ Partial Class RemoteAppCreateClientConnection Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.BackColor = System.Drawing.Color.White Me.CancelButton = Me.CancelEditButton - Me.ClientSize = New System.Drawing.Size(507, 587) + Me.ClientSize = New System.Drawing.Size(507, 596) Me.Controls.Add(Me.GroupBoxSignRDP) Me.Controls.Add(Me.FileTypesGroupBox) Me.Controls.Add(Me.MSIGroupBox) @@ -693,7 +689,7 @@ Partial Class RemoteAppCreateClientConnection Friend WithEvents DisabledFTACheckBox As System.Windows.Forms.CheckBox Friend WithEvents FTACountLabel As System.Windows.Forms.Label Friend WithEvents GroupBoxSignRDP As GroupBox - Friend WithEvents CheckBoxSignRDPDisabled As CheckBox + Friend WithEvents CheckBoxSignRDPEnabled As CheckBox Friend WithEvents CertificateComboBox As ComboBox Friend WithEvents CertificateLabel As Label Friend WithEvents CheckBoxCreateSignedAndUnsigned As CheckBox diff --git a/remoteapp-tool/RemoteAppCreateClientConnection.resx b/remoteapp-tool/RemoteAppCreateClientConnection.resx index a2a3999..e7ffc8f 100644 --- a/remoteapp-tool/RemoteAppCreateClientConnection.resx +++ b/remoteapp-tool/RemoteAppCreateClientConnection.resx @@ -124,152 +124,152 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADy - IQAAAk1TRnQBSQFMAgEBBwEAAeABAQHgAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADW + IQAAAk1TRnQBSQFMAgEBBwEAAQgBAgEIAQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA AwABIAMAAQEBAAEgBgABIF4AAyABLwMjATMDIwEzAyMBMwMjATMDIwEzAyMBMwMjATMDIwEzAxkBIysA - AQEDQgF0A1gBwQNYAe8DWAHvA1gBwQNCAXQDAAEBUAADKgFBAwYBCBgAAwYBCAMqAUEUAAMIAQsBaAFd - AVQB8AG2AYQBPAH/AbUBgwE4Af8BtgGCATcB/wG2AYIBNwH/AbYBggE3Af8BtgGCATcB/wG1AYMBOAH/ - AbYBhAE8Af8CWgFYAcAnAAEBA1oBwAOLAf8BuQK6Af8D3AH/A9kB/wO1Af8BhgKHAf8DWgHAAwABAUgA - AyoBQQE+ATsB8gH/AkABvQH9AwYBCBAAAwYBCAIrAbEB/AEgAR4B6gH/AyoBQRAAAykBPwG2AYQBPCH/ - AbYBhAE8Af8YAAG5Ar8B/wG5Ar8B/wGyArcB/wGLAY0BjgH/AY0BjgGNAf8BxQHgAcsB/wHOAeMB0gH/ - Ae4C7wH/AewB7QHsAf8B6gLpAf8D5wH/A4cB/wNCAXREAAMqAUEBRwFFAfUB/wFSAVAB+gH/AUcBRAH2 - Af8BMAEvAbUB/AMGAQgIAAMGAQgCKwGyAfwBMAEuAfEB/wE7ATkB9gH/ASABHgHqAf8DKgFBDAADJwE7 - AbUBgwE4Bf8BAAEvAfIB/wEBAVUB8wH/ARQBmgH2Af8BGAGmAfgB/wEHAWQB9AH/AQABKgHyBf8BtQGD - ATgB/xgAA0cBggPYAf8BzQHUAdUB/wFtAW4BbwH/A8MB/wFbAbkBagH/AQABjgESAf8B3QHrAeAB/wPx - Af8B1wHlAdoB/wHfAecB4QH/ArcBuAH/A1gBwUQAAx4BKwFKAUcB9gH/AVQBUQH6Af8BYAFfAv8BSAFF - AfYB/wEwAS8BtQH8AwYBCAMGAQgCKwGzAfwBNgE0AfIB/wFSAVEC/wE5ATcB9AH/AR4BHAHpAf8DHgEr - DAADJAE2AbYBgwE4Bf8BGgFBAfIB/wEkAWgB8gH/AR0BkwH0Af8BIQGaAfQB/wEUAWYB8QH/AQABLQHw - Bf8BtgGDATcB/wMjATMDIwEzAxkBIxAAAyQBNgNHAYIDTwH/A+wB/wP7Af8BEQGYAScB/wFGAbABVwH/ - A/UB/wEAAZABFgH/AU4BsQFeAf8B3gHfAd4B/wNYAe9IAAMeASsBSgFIAfYB/wFVAVIB+gH/AWMBYAL/ - AUkBRwH2Af8BMQEwAbUB/AJAAb0B/QE/ATwB9AH/AVcBVgL/AT8BPQH1Af8BJQEjAesB/wMeASsIAAMZ - BCMBMwMxAU8BtgGDATgD/wH8Af8BDgEuAfAB/wFAAW4B8gH/AUEBkwH0Af8BJgGDAfIB/wEKAUwB8AH/ - AQABIgHwA/8B+wH/AbUBgAE0Af8BtQGDATsB/wG2AYQBPQH/AloBWAHAA0gBhgG+AsQB/wG8AsEB/wG5 - Ab0BvgH/AbcBugG7Af8BtAK4Af8DUAH/A+4B/wFgAb0BbgH/AQcBlAEeAf8B5QHxAeYB/wEAAZABFQH/ - ARUBmgErAf8B6QHvAeoB/wPiAf8DWAHvTAADHgErAUsBSQH2Af8BVgFTAfoB/wFjAWEC/wFiAV8C/wFf - AV0C/wFdAVsC/wFGAUQB9wH/AS4BLAHuAf8DHgErDAACWgFYAcABtQGFAT4B/wG1AYQBPQH/AbUBggE1 - A/8B+wH/AQABEwHuAf8BLwFRAfAB/wFMAYUB8wH/AWMBlQH0Af8BgwGaAfYB/wGAAY0B+QP/AfkB/wG1 - AWsBLwn/AbYBhAE8Af8BygHSAdMB/wHJAdIB0wH/AckB0AHTAf8ByAHRAdIB/wHHAdAB0QH/AcYB0AHR - Af8BbQJwAf8DxgH/Ac8B6QHUAf8B5gH0AekB/wH9Av4B/wHLAeYBzwH/AQABjQEQAf8BUgG1AWIB/wHA - AcEBwAH/A1gBwVAAAx4BKwFMAUoB9wH/AWgBZQL/AUgBRQL/AUYBQwL/AWEBXwL/ATcBNQHwAf8DHgEr - EAABtQGEAT0F/wH2AfAB6QH/AbIBbgEyA/8B/QH/AgAB7AH/ARwBLwHtAf8BOAFPAfAB/wFLAWIB8gH/ - AVsBagH0Af8BYQFkAfYD/wH8Af8BvAFrAS8B/wEAAa4BgAX/AbYBggE6Af8BygHSAdQB/wGsAq8B/wGG - AgAB/wGLAgAB/wGHAgAB/wGLAgAB/wGGAhsB/wOQAf8B8gH5AfMJ/wH+Af8B/gH/AcsB5wHRAf8BqwHR - AbIB/wOPAf8DQgF0UAADBgEIAUgBRwHEAf0BbAFoAv8BTQFKAv8BSgFHAv8BZQFjAv8CQAG+Af0DBgEI - EAABtAGCAToF/wHnAZsBJAH/AbEBbgE1Bf8CAAHtAf8CAAHuAf8BFgEdAfAB/wEsATQB8gH/AT8BQQH1 - Af8BTQFMAfcF/wHAAWwBMgH/AQABrQGBBf8BtgGCAToB/wHMAdMB1QH/AaoBrAGtAf8BmwEaARAB/wGc - AR4BEgH/AZsBBgEAAf8BqAEGAQAB/wGyAQgBAAH/AZwBcAFrAf8DkAH/A8YB/wPuAf8D7gH/A8YB/wOQ - Af8DWgHAAwABAUwAAwYBCAFVAU8BuQH8AV8BXAH7Af8BgAFtAv8BbQFqAv8BawFoAv8BaAFmAv8BTQFL - AfcB/wEzATEBtQH8AwYBCAwAAbMBggE7Bf8B5gGeAS0B/wGvAYABOwP/AfYD/wHtA/8B6wP/AeoD/wHq - A/8B6gP/AewD/wHzAf8BwgFsATMB/wEAAasBbQX/AbYBggE6Af8BzAHTAdUB/wGoAqoB/wGlATIBKAH/ - AZ8BHQESAf8BowEFAQAB/wGyAQgBAAH/AcABDgEAAf8B3wFoAVYB/wG3AYoBggH/AYgBZAFgAf8BVgFQ - AU8B/wFVAU8BTQH/AW8CcgH/AY8CkAH/AwABAUwAAwYBCAFdAVoBuwH8AWYBYwH9Af8BhgGCAv8BZQFi - AfwB/wFTAVEB+AH/AU8BTAH3Af8BXAFZAfoB/wFqAWgC/wFPAUwB9wH/ATMBMgG1AfwDBgEICAABswGC - ATsF/wHyAaEBIAH/Ab0BiwFEAf8BrwGAAT0B/wGvAW4BNwH/AbABbQE1Af8BrwFsATMB/wGxAWwBMQH/ - AbcBbgE0Af8BvQFuATQB/wHBAW0BNAH/AaYBnwFhAf8BZAHTAb0F/wG1AYIBOgH/Ac4B1AHVAf8BogKk - Af8BrAE5ATAB/wGhARABAwH/Aa0BBAEAAf8BvgELAQAB/wHPARsBAQH/AfABmgGLAf8B9wG0AagB/wH5 - Aa4BngH/Af4BtQGnAf8B+AGlAZIB/wHCAc4BzwH/AaoCrAH/TAADBgEIAVQBUgHMAf0BbAFpAf4B/wGK - AYcC/wFrAWgB/QH/AVsBWAH7Af8DHgErAx4BKwFQAU0B+AH/AV0BWwH6Af8BbAFpAv8BUAFOAfcB/wE0 - ATIBtgH8AwQBBQQAAbMBggE7Bf8B8QGXAQsB/wH4AbIBQQH/Af0BwQFhAf8B/gHKAYIB/wH+Ac4BigH/ - Af0BywGFBf8BvAFuATcB/wEcAcABoAH/ATwByAGqAf8BUgHJAa8B/wFaAcoBsAX/AbUBgQE5Af8BzQHU - AdYB/wGhAqMB/wGoASABFgH/AasBCAEAAf8BwgEOAQAB/wHVAQ0BAAH/AeoBNQEYAf8B/gHBAbQC/wHK - Ab0C/wHJAbgC/wHPAcAB/wH8Ab8BqwH/AcMBzgHPAf8BrAGuAa8B/0wAAxYBHwFpAWYC/wGBAW0C/wGB - AW0B/gH/AWMBYAH9Af8DHgErCAADHgErAVEBTgH4Af8BXgFcAfsB/wFtAWsC/wFRAU4B+AH/A0ABbwMB - AQIBswGDATsF/wHsAYoBAAH/AfEBoQElAf8B9QGxAUQB/wH2AbkBVQH/AfcBvwFhAf8B9gG/AWEF/wG6 - AWsBMwH/AQMBrwGLAf8BIwG2AZMB/wE4AboBnQH/AUgBwQGlBf8BtQGCAToB/wHOAdQB1gH/AaACoQH/ - AagBAwEAAf8BuQEHAQAB/wHQARYBAAH/AeIBDAEAAf8B+AFfAUoC/wHmAeAC/wHgAdgC/wHlAdwC/wHr - AeIB/wH9AdUByAH/AcQBzgHQAf8BrwKyAf9QAAMWAR8BaQFmAv8BaAFlAf4B/wMeASsQAAMeASsBUwFQ - AfgB/wFZAVcB+QH/AVMBUgFTAagDHQEpBAABtAGDATwF/wHpAWwBAAH/Ae0BjwEAAf8B7wGeARsB/wHx - AagBMQH/AfMBrwFAAf8B9AG1AU0F/wG0AWsBMwP/AfsD/wH2A/8B8wP/AfID/wH4Af8BtQGEAT4B/wHO - AdQB1gH/AaACoQH/Aa0CAAH/AcQBAQEAAf8B2gEEAQAB/wHyAQgBAAL/AYgBXgL/AdQBvgL/AcYBqgL/ - AcQBpgL/AcABnwH/AfsBrwGNAf8BxQHOAdAB/wGxAbQBtQH/VAADFgEfAx4BKxgAAx4BKwNAAW8DKQE+ - CAABtQGFAT8D/wH8A/8B/Qf/Af4D/wH8A/8B+gP/AfcD/wH5Af8BtAGCAToB/wG2AYQBPQH/AbYBgwE7 - Af8BtQGCATsB/wG1AYMBOwH/AbUBhAE+Af8DVQGwAc4B1AHWAf8BoAKhAf8BoAKhAf8BoAKhAf8BoQGi - AaMB/wGjAqUB/wGlAqcB/wGsAq8B/wGvArEB/wGxAbQBtQH/AbQCuAH/AbYBuwG8Af8BxQHPAdEB/wGz - AbcBuAH/eAADBwEKDAABZQFiAVgB7wG1AYUBPwH/AbMBgwE9Af8BswGDAT0B/wGzAYMBPQH/AbMBgwE8 - Af8BswGDATwB/wGzAYMBPAH/AbUBhAE+Af8CZAFcAecYAANDAXgBzgHUAdYB/wHOAdQB1gH/Ac4B1AHW - Af8BzQHUAdYB/wHNAdMB1QH/Ac0B0wHVAf8BygHSAdQB/wHKAdIB0wH/AckB0QHTAf8ByAHRAdIB/wHH - AdAB0QH/AcYBzwHRAf8DTgGVTAADHwEtAzABSwMvAUoDLwFKAy8BSQMyAVEDNgFZAzYBWQM2AVkDNgFZ - AzYBWQM1AVcDMQFOAyYBOQsAAf8DAAH/AwAB/wsAAf8DAAH/AwAB/wMAAf8DAAH/GAADFAEcAyABLgMg - AS4DIAEuASABIwEvAf8DWQHHA0IBdAM3AVsDNQFYAzMBUgMvAUoDKwFCAyABLgMUARxIAANSAaQE/wH1 - AfQB8wH/AfYB9QH0Bf8BQgFBAUMB/wEZARgBGwX/AfsC+gH/AvsB+gH/AfsC+gX/ApYBlwH/A1oB2AgA - A4YB/wPAAf8DAAH/AwAB/wOGCf8DwAH/AQAD/wEAAf8BAAH/AwAB/xgAAeIBuAGZAf8B4gG5AZgB/wHi - AbgBmQH/AU0BXAGdAf8BRQFVAZIB/wFBAVABkgH/ATABUwGeAf8BygGsAZgB/wHiAbgBmAH/AeIBuQGZ - Af8B4gG5AZgB/wHiAbgBmAH/GAADDAEQA0QBewJdAVoBygFeAVkBQgH1AWIBXgE4AfYCXAFZAcwDRQF9 - Aw0BERQAA1ABngH7AfoB+QH/Ae4C7QH/AfAB7wHuAf8B/gH9AfwB/wFBAUABQgH/ARgBFwEZAf8C8AHv - Af8C6AHnAf8C6AHnAf8C6AHnAf8B9QH0AfMB/wGPAY4BjwH/A1oB5AgAA4YB/wPAAf8DAAH/A4YB/wPA - Af8DwAX/A8AB/wEAAf8BAAH/A8AB/wPAAf8DAAH/FAAB4wG7AZsB/wH4AeABvgH/AfgB4AG+Af8BmwGf - Aa4B/wFZAWsBqQH/AUcBYwGgAf8BAAFaAbAB/wEAAWMBvwH/AfgB4QG+Af8B+AHgAb8B/wH4AeEBvgH/ - AeMBugGaAf8UAAM0AVQCXQFOAfABgAFUAQAB/wGAAVQBAAH/AYABVAEAAf8BgAFUAQAB/wGAAVQBAAH/ - AWABXwFMAfMCWAFWAcEDIQEwEAADUAGeAfsC+gH/Ae8B7gHtAf8C8AHvAf8B/gH9AfwB/wGGAYQBhQH/ - ASUBJAElAf8C9QH0Af8C7QHsAf8C7QHsAf8B7gHtAewB/wL6AfkB/wGUAZMBlAH/A1sB4QgAA4YB/wPA - Af8DAAH/A4YB/wPAAf8DwAH/A8AB/wMAAf8BAAH/AQAD/wEAA/8BAAH/AwAB/xQAAeQBvQGcAf8B+AHh - Ab8B/wHzAdYBsgH/AcIBuAGuAf8BRgFmAawB/wEYAcAB+AH/AQABlwHXAf8BAAFlAdQB/wEAAWUBwQH/ - AfMB1gGyAf8B+AHhAb8B/wHkAb0BnQH/EAADNAFUAYQBVwEAAf8BhwFaAQEB/wGHAVoBAQH/AYcBWgEB - Af8BhwFaAQEB/wF/AWsBEgH+Al0BTgHwAloBVwHFA0sBjgI1ATQBVQMKAQ0MAANQAZ4B/QH8AfsB/wLw - Ae8B/wHyAvEB/wH+Av0B/wGSAZABkQH/ARcBFQEWAf8BrAGrAaoB/wGsAasBqgH/AawBqwGqAf8BqgKp - Af8BrQGsAasB/wEvAS0BLgH/A1sB4QgAA4YB/wPAAf8DAAH/A4YB/wPAAf8DwAP/AQAB/wMAAf8DAAH/ - A8AB/wPAAf8DAAH/FAAB5gHAAZ8B/wH4AeIBwQH/AdkBvgGdAf8B2QG+AZ4B/wGWAacBqwH/AQABYQHE - Af8BEwHTAv8BAAGzAe4B/wEAAWUB1AH/AQABZwHCAf8B+AHhAcAB/wHmAcABnwH/DAADDQESAl0BTgHw - AZABYQEEAf8BkAFhAQQB/wGQAWEBBAH/AZkBaAEEAf8BlgFmAQIB/wFjAWABWQHrAlkBVgG+A0gBhgIx - ATABTQMUARwDAQECDAADUAGeAf4C/QH/AfIB8QHwAf8C8wHyAv8C/gH/AZ0CnAH/AQ4CDAH/ARsBGQEY - Af8BHQEaARkB/wEdAhoB/wEaAhgB/wESAhAB/wEEAQIBBAH/A1sB4QgAA4YF/wMAAf8DhgP/AQAB/wPA - A/8BAAH/AQAH/wPAAf8DwAH/AwAB/wMAAf8DAAH/DAAB5wHDAaIB/wH4AeMBwgH/AfYB3QG6Af8B+AHj - AcMB/wH4AeMBwgH/AbYBxQHDAf8BAAFhAcQB/wETAdMC/wEUAcYB9gH/AQABZQHUAf8BAAFrAcoB/wHo - AcMBogH/AwABAQgAA0UBfQGZAWgBBQH/AZkBaQEGAf8BmgFpAQYB/wFrAWQBUwHxAzsBYwMNAREDCgEN - AyQBNQMrAUIDEAEWAwABARAAA1ABngL/Af4B/wHzAvIB/wL0AfMD/wH+Af8BowKiAf8BGQEWARUB/wFB - AT8BPQH/Ac8BzgHNAf8BxwHFAcQB/wGpAacBpgH/AZ0BmwGaAf8BiwGJAYoB/wNbAeEIAAOGBf8DAAH/ - A8AB/wOGA/8BAAP/AQAB/wEAC/8DAAH/A8AB/wPAAf8DwAH/AwAB/wgAAeoBxgGkAf8B+AHkAcQB/wHc - AcIBpAH/AdwBxAGmAf8B3AHEAaYB/wHcAcUBpgH/AaEBrgGvAf8BAAFhAcQB/wGYAewC/wEUAcYB9gH/ - AQABZQHUAf8CbQFkAf8DKAE8CAACXAFaAc0BowGCAQkB/wGjAYIBCQH/AaUBgwEIAf8DOwFjEAADBAEF - GAADUAGeBP8B9ALzAf8D9QX/AagBpgGlAf8BEQIOAf8BMwIyAf8B5gLlAf8B8QLwAf8BpwGmAaUB/wE7 - ATgBNwH/AZoCmAH/A1wB5wgAA4YF/wMAAf8DwAH/A8AB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A4YB/wOG - Af8DhgH/A8AB/wMAAf8IAAHsAcoBqAH/AfgB5QHGAf8B+QHkAcYB/wH5AeUBxQH/AfkB5AHGAf8B+AHk - AcYB/wH3AeMBxQH/AbwByAHGAf8BAAFhAcQB/wGWAeoB/gH/ArcBrAH/AV0BXgFQAf8CbQFkAf8IAAFr - AV4BQgH1Aa4BiwELAf8BrgGLAQsB/wGfAW0BBgH/Aw0BESwAA1ABngT/AvUB9AH/AvcB9gX/AawCqgH/ - ARYBFAETAf8BNAEyATMB/wHPAc0BzAH/AdQB0gHRAf8BtAKyAf8BqgGnAaYB/wNqAfkDVwG9CAADhgH/ - A4YB/wMAAf8DwAH/A8AB/wOGAf8DhgH/A4YB/wOGAf8DhgH/A4YB/wOGAf8DhgH/A8AB/wMAAf8IAAHu - Ac0BqwH/AfgB5gHHAf8B3wHIAaoB/wHeAcgBqgH/Ad8ByAGrAf8B3wHHAasB/wHbAcMBpgH/AdoBwgGk - Af8BqwGwAasB/wGOAY8BhAH/AeAB4gHTAf8CiQFuAf8BBgFUAd4B/wFVAVwBZAHqBAABbQFgAUIB9QG5 - AZQBDgH/AbkBlAEOAf8BpwGEAQgB/wMNAREIAANMAZIBqQGGAQgB/wGjAYIBBwH/AaMBggEHAf8BowGC - AQcB/wGjAYIBBwH/AWsBXwFMAfMIAANQAZ4E/wH3AvYB/wP4Af8D+gH/A/AB/wHqAukB/wPwAf8D9wH/ - A/YB/wL6AfkB/wNYAbkDFwEgAwcBCQQAA4YJ/wOGAf8DwAH/A8AB/wOGAf8DwAH/A8AB/wPAAf8DwAH/ - A8AB/wPAAf8DwAH/A4YB/wMAAf8IAAHwAdABrQH/AfkB5gHJAf8B+AHmAckB/wH5AeYByQH/AfkB5gHJ - Af8B9wHlAckB/wHwAdkBvQH/AekBzwGzAf8B6AHOAbIB/wHMAbkBrwH/AokBbgH/AUMBlgHqAf8BMQGF - AeAB/wFaAl0B0wQAAlwBWgHNAcMBnAEQAf8BwwGcARAB/wG/AZgBDwH/AzsBYwgAAwwBEAJbAVgCywGi - ARIB/wHDAZwBEAH/AcMBnAEQAf8BwwGcARAB/wGpAYYBCAH/CAADUAGeBP8C+AH3Af8D+QH/A/oB/wL+ - Af0V/wNWAasQAAOGAf8DhgH/A4YB/wOGAf8DwAH/A4YB/wHMAjwC/wHMATwB/wHMAZkBCQH/AcwBmQEA - Av8BPAEJAf8BzAE8AQkF/wOGAf8DAAH/CAAB8QHTAbEB/wH5AecBywH/AeIBzAGwAf8B4gHLAa8B/wHh - AcwBrwH/AeEBygGvAf8B1wG+AaEB/wHVAboBnAH/AdQBuQGdAf8B1AG5AZ0B/wG2Aa8BtAH/AWMBkgHE - Af8DSAGGCAACRgFFAX4B0gGoARMB/wHNAaQBEwH/Ac0BpAETAf8BbwFnAVMB8QM7AWMDDQERAw0BEQNB - AXIBvwGYAQ4B/wHNAaQBEwH/Ac0BpAETAf8BzQGkARMB/wGwAYwBCgH/CAADUAGeBP8C+QH4Af8D+gH/ - A/wB/wP9Af8D/gX/AfwC/QH/AfQC9QH/A/oB/wNWAbMYAAOGCf8DhgH/AcwCPAP/ATwC/wHMATwB/wHM - AZkBCQH/AcwBmQEAAv8BPAEJBf8DhgH/AwAB/wgAAfMB1wG0Af8B+QHnAcwB/wH4AecBzAH/AfkB6AHM - Af8B+QHoAcwB/wH3AeUBygH/AecBzwG1Af8B8gHeAcYB/wHzAeAByAH/AfcB6AHTAf8DWgHFAe8B0AGu - Af8DAQECAwABAQQAAw8BFAFoAWMBTgHwAdgBrQEVAf8B1wGsARUB/wHXAawBFQH/AdEBpwETAf8BvQGX - AQ0B/wG9AZcBDQH/AdEBpwETAf8B1wGsARUB/wHXAawBFQH/AdcBrAEVAf8B1wGsARUB/wG2AZEBCwH/ - CAADUAGeBP8D+gH/A/wB/wP9Af8D/gX/Af4B/wH+Af8D6gH/AtcB2AH/Ad0C3gH/AzsBZBwAA4YB/wOG - Af8DhgH/AcwCPAP/ATwD/wE8Av8BzAE8Af8BzAGZAQkB/wHMAZkBAAX/A4YB/wMAAf8IAAH0AdkBtQH/ - AfkB6AHNAf8B5AHPAbQB/wHkAc8BtAH/AeQBzwG0Af8B4wHOAbMB/wHdAcYBqQH/AfkB6AHOAf8B+QHo - Ac4B/wNcAcwB8QHTAbEB/wMmATgQAAI1ATQBVQHbAbEBFQH/Ad8BswEXAf8B3gGzARcB/wHeAbMBFwH/ - Ad4BswEXAf8B3gGzARcB/wHeAbMBFwH/Ad4BswEXAf8B3wGzARcB/wHcAbIBFQH/AeYBugEZAf8BuwGV - AQ0B/wgAA1ABngT/A/wB/wP9Cf8D/QH/AvoB+wH/AesC7AH/AvoB+wH/A0IBcygAA4YB/wHMAjwC/wHM - ATwD/wE8A/8BPAL/AcwBPAH/AcwBmQEJBf8DhgH/AwAB/wgAAfYB2wG4Af8B+QHpAc8B/wH5AekBzgH/ - AfkB6AHOAf8B+AHoAc4B/wH2AeUBzAH/Ae4B2gG/Af8B+QHoAc4B/wNgAd4B9AHZAbUB/wMmATgYAAI1 - ATQBVQFpAWYBTgHwAe0BwgEbAf8B5gG5ARkB/wHmAbgBGQH/AeYBuAEZAf8B5gG5ARkB/wHtAcIBGwH/ - AXIBbQFTAfECOgE5AWACWwFYAcsBxwGgARAB/wgAA1QBphz/AesC7AH/A0IBcywAA4YB/wHMAjwB/wHM - ATwBCQH/AcwBPAEJAf8BzAE8AQkB/wHMATwBCQH/AcwBPAEJBf8DhgH/AwAB/wgAAfcB3QG6Af8B+QHp - Ac8B/wH5AekBzwH/AfkB6QHPAf8B+QHpAc8B/wH3AeYBzQH/Ae0B2AG9Af8B+QHoAc4B/wH3Ad0BuAH/ - AyYBOCAAAwwBEANFAX0CXAFZAcwBjQF+AT4B+AGNAYYBPwH5Al4BXAHOAkYBRQF+Aw0BEgQAAwwBEANM - AZIIAAMmBDgBXAM4AVwDOAFcAzgBXAM4AVwDOAFcAzgBXAMpAT8wAAOGAf8D1wH/A9cB/wPXAf8D1wH/ - A9cB/wPXAf8D1wH/A4YB/wMAAf8IAAH4Ad8BuwH/AfgB3wG7Af8B+AHfAbsB/wH4Ad8BuwH/AfgB3wG7 - Af8B+AHfAbsB/wH4Ad8BuwH/AfgB3wG7Af8DJgE4VAABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEA - AQEGAAEBFgAD/wEAAv8B4AEHAf4BAQIAAucBwAEHAfwDAALDAcABBwHgAwACgQHAAQcB4AMAAYABAQHA - AQAB8AMAAcABAwYAAeABBwYAAfABDwYAAfABDwYAAeABBwMAAQECAAHAAQMDAAEDAgABgAEBAwABAwIA - AYEBgAMAAQMCAAHDAcEDAAEDAgAB5wHjAwABAwIAAf8B9wEAAT8BAAEDAgABgAEBAYwBHwGAAQEC/wGA - AQEBgAEPAcABAwHwAQ8BgAEBAYABBwHAAQMB4AEHAYABAQGAAQcBwAEDAcABAwGAAQEBgAEHAcABAwGA - AQMBgAEBAYABAQHAAQEBgAEHAYABAQGAAQABwAEBAYMB3wGAAQEBgAEAAcABAQGDAf8BgAEBAYABAAHA - AQABgwEBAYABAQIAAcABAAGDAQEBgAEHAYABAAHAAQEBgAEBAYABBwHgAQABwAEAAYABAQGAAQcB8AEA - AcABAwHAAQEBgAEPAfwBAAHAAQcB4AEBAYABHwH8AQABwAEPAfABCQGAAT8B/AEAAcABHwL/Cw== + AQEDQgF0A1gBwQNYAe8DWAHvA1gBwQNCAXQDAAEBUAADKgFBAwYBCBgAAwYBCAMqAUEUAAMIAQsBYQFd + AVQB8AG2AYQBNwH/AbUBgwEzAf8BtgGCATIB/wG2AYIBMgH/AbYBggEyAf8BtgGCATIB/wG1AYMBMwH/ + AbYBhAE3Af8CWgFYAcAnAAEBA1oBwAOLAf8BuQK6Af8D3AH/A9kB/wO1Af8BhgKHAf8DWgHAAwABAUgA + AyoBQQE5ATYB8gH/AkABuAH9AwYBCBAAAwYBCAIrAaYB/AEbARkB6gH/AyoBQRAAAykBPwG2AYQBNyH/ + AbYBhAE3Af8YAAG5Ar8B/wG5Ar8B/wGyArcB/wGLAY0BjgH/AY0BjgGNAf8BxQHgAcsB/wHOAeMB0gH/ + Ae4C7wH/AewB7QHsAf8B6gLpAf8D5wH/A4cB/wNCAXREAAMqAUEBQgFAAfUB/wFNAUsB+gH/AUIBPwH2 + Af8CKwGrAfwDBgEICAADBgEIAisBpwH8ASsBKQHxAf8BNgE0AfYB/wEbARkB6gH/AyoBQQwAAycBOwG1 + AYMBMwX/AQABKgHyAf8BAAFQAfMB/wEPAZoB9gH/ARMBpgH4Af8BAgFfAfQB/wEAASUB8gX/AbUBgwEz + Af8YAANHAYID2AH/Ac0B1AHVAf8BaAFpAWoB/wPDAf8BVgG5AWUB/wEAAY4BDQH/Ad0B6wHgAf8D8QH/ + AdcB5QHaAf8B3wHnAeEB/wK3AbgB/wNYAcFEAAMeASsBRQFCAfYB/wFPAUwB+gH/AVsBWgL/AUMBQAH2 + Af8CKwGrAfwDBgEIAwYBCAIrAakB/AExAS8B8gH/AU0BTAL/ATQBMgH0Af8BGQEXAekB/wMeASsMAAMk + ATYBtgGDATMF/wEVATwB8gH/AR8BYwHyAf8BGAGTAfQB/wEcAZoB9AH/AQ8BYQHxAf8BAAEoAfAF/wG2 + AYMBMgH/AyMBMwMjATMDGQEjEAADJAE2A0cBggNKAf8D7AH/A/sB/wEMAZgBIgH/AUEBsAFSAf8D9QH/ + AQABkAERAf8BSQGxAVkB/wHeAd8B3gH/A1gB70gAAx4BKwFFAUMB9gH/AVABTQH6Af8BXgFbAv8BRAFC + AfYB/wEsASsBqwH8AkABuAH9AToBNwH0Af8BUgFRAv8BOgE4AfUB/wEgAR4B6wH/Ax4BKwgAAxkEIwEz + AzEBTwG2AYMBMwP/AfwB/wEJASkB8AH/ATsBaQHyAf8BPAGTAfQB/wEhAYMB8gH/AQUBRwHwAf8BAAEd + AfAD/wH7Af8BtQGAAS8B/wG1AYMBNgH/AbYBhAE4Af8CWgFYAcADSAGGAb4CxAH/AbwCwQH/AbkBvQG+ + Af8BtwG6AbsB/wG0ArgB/wNLAf8D7gH/AVsBvQFpAf8BAgGUARkB/wHlAfEB5gH/AQABkAEQAf8BEAGa + ASYB/wHpAe8B6gH/A+IB/wNYAe9MAAMeASsBRgFEAfYB/wFRAU4B+gH/AV4BXAL/AV0BWgL/AVoBWAL/ + AVgBVgL/AUEBPwH3Af8BKQEnAe4B/wMeASsMAAJaAVgBwAG1AYUBOQH/AbUBhAE4Af8BtQGCATAD/wH7 + Af8BAAEOAe4B/wEqAUwB8AH/AUcBhQHzAf8BXgGVAfQB/wGDAZoB9gH/AYABjQH5A/8B+QH/AbUBZgEq + Cf8BtgGEATcB/wHKAdIB0wH/AckB0gHTAf8ByQHQAdMB/wHIAdEB0gH/AccB0AHRAf8BxgHQAdEB/wFo + AmsB/wPGAf8BzwHpAdQB/wHmAfQB6QH/Af0C/gH/AcsB5gHPAf8BAAGNAQsB/wFNAbUBXQH/AcABwQHA + Af8DWAHBUAADHgErAUcBRQH3Af8BYwFgAv8BQwFAAv8BQQE+Av8BXAFaAv8BMgEwAfAB/wMeASsQAAG1 + AYQBOAX/AfYB8AHpAf8BsgFpAS0D/wH9Af8CAAHsAf8BFwEqAe0B/wEzAUoB8AH/AUYBXQHyAf8BVgFl + AfQB/wFcAV8B9gP/AfwB/wG8AWYBKgH/AQABrgGABf8BtgGCATUB/wHKAdIB1AH/AawCrwH/AYYCAAH/ + AYsCAAH/AYcCAAH/AYsCAAH/AYYCFgH/A5AB/wHyAfkB8wn/Af4B/wH+Af8BywHnAdEB/wGrAdEBsgH/ + A48B/wNCAXRQAAMGAQgBQwFCAbsB/QFnAWMC/wFIAUUC/wFFAUIC/wFgAV4C/wJAAbkB/QMGAQgQAAG0 + AYIBNQX/AecBmwEfAf8BsQFpATAF/wIAAe0B/wIAAe4B/wERARgB8AH/AScBLwHyAf8BOgE8AfUB/wFI + AUcB9wX/AcABZwEtAf8BAAGtAYEF/wG2AYIBNQH/AcwB0wHVAf8BqgGsAa0B/wGbARUBCwH/AZwBGQEN + Af8BmwEBAQAB/wGoAQEBAAH/AbIBAwEAAf8BnAFrAWYB/wOQAf8DxgH/A+4B/wPuAf8DxgH/A5AB/wNa + AcADAAEBTAADBgEIAUsBRQGvAfwBWgFXAfsB/wGAAWgC/wFoAWUC/wFmAWMC/wFjAWEC/wFIAUYB9wH/ + AS4BLAGrAfwDBgEIDAABswGCATYF/wHmAZ4BKAH/Aa8BgAE2A/8B9gP/Ae0D/wHrA/8B6gP/AeoD/wHq + A/8B7AP/AfMB/wHCAWcBLgH/AQABqwFoBf8BtgGCATUB/wHMAdMB1QH/AagCqgH/AaUBLQEjAf8BnwEY + AQ0B/wGjAgAB/wGyAQMBAAH/AcABCQEAAf8B3wFjAVEB/wG3AYoBggH/AYgBXwFbAf8BUQFLAUoB/wFQ + AUoBSAH/AWoCbQH/AY8CkAH/AwABAUwAAwYBCAFYAVUBsQH8AWEBXgH9Af8BhgGCAv8BYAFdAfwB/wFO + AUwB+AH/AUoBRwH3Af8BVwFUAfoB/wFlAWMC/wFKAUcB9wH/AS4BLQGrAfwDBgEICAABswGCATYF/wHy + AaEBGwH/Ab0BiwE/Af8BrwGAATgB/wGvAWkBMgH/AbABaAEwAf8BrwFnAS4B/wGxAWcBLAH/AbcBaQEv + Af8BvQFpAS8B/wHBAWgBLwH/AaYBnwFcAf8BXwHTAb0F/wG1AYIBNQH/Ac4B1AHVAf8BogKkAf8BrAE0 + ASsB/wGhAQsBAAH/Aa0CAAH/Ab4BBgEAAf8BzwEWAQAB/wHwAZoBiwH/AfcBtAGoAf8B+QGuAZ4B/wH+ + AbUBpwH/AfgBpQGSAf8BwgHOAc8B/wGqAqwB/0wAAwYBCAFPAU0BvgH9AWcBZAH+Af8BigGHAv8BZgFj + Af0B/wFWAVMB+wH/Ax4BKwMeASsBSwFIAfgB/wFYAVYB+gH/AWcBZAL/AUsBSQH3Af8BLwEtAawB/AME + AQUEAAGzAYIBNgX/AfEBlwEGAf8B+AGyATwB/wH9AcEBXAH/Af4BygGCAf8B/gHOAYoB/wH9AcsBhQX/ + AbwBaQEyAf8BFwHAAaAB/wE3AcgBqgH/AU0ByQGvAf8BVQHKAbAF/wG1AYEBNAH/Ac0B1AHWAf8BoQKj + Af8BqAEbAREB/wGrAQMBAAH/AcIBCQEAAf8B1QEIAQAB/wHqATABEwH/Af4BwQG0Av8BygG9Av8ByQG4 + Av8BzwHAAf8B/AG/AasB/wHDAc4BzwH/AawBrgGvAf9MAAMWAR8BZAFhAv8BgQFoAv8BgQFoAf4B/wFe + AVsB/QH/Ax4BKwgAAx4BKwFMAUkB+AH/AVkBVwH7Af8BaAFmAv8BTAFJAfgB/wNAAW8DAQECAbMBgwE2 + Bf8B7AGKAQAB/wHxAaEBIAH/AfUBsQE/Af8B9gG5AVAB/wH3Ab8BXAH/AfYBvwFcBf8BugFmAS4B/wEA + Aa8BiwH/AR4BtgGTAf8BMwG6AZ0B/wFDAcEBpQX/AbUBggE1Af8BzgHUAdYB/wGgAqEB/wGoAgAB/wG5 + AQIBAAH/AdABEQEAAf8B4gEHAQAB/wH4AVoBRQL/AeYB4AL/AeAB2AL/AeUB3AL/AesB4gH/Af0B1QHI + Af8BxAHOAdAB/wGvArIB/1AAAxYBHwFkAWEC/wFjAWAB/gH/Ax4BKxAAAx4BKwFOAUsB+AH/AVQBUgH5 + Af8BUwFSAVMBqAMdASkEAAG0AYMBNwX/AekBZwEAAf8B7QGPAQAB/wHvAZ4BFgH/AfEBqAEsAf8B8wGv + ATsB/wH0AbUBSAX/AbQBZgEuA/8B+wP/AfYD/wHzA/8B8gP/AfgB/wG1AYQBOQH/Ac4B1AHWAf8BoAKh + Af8BrQIAAf8BxAIAAf8B2gIAAf8B8gEDAQAC/wGIAVkC/wHUAb4C/wHGAaoC/wHEAaYC/wHAAZ8B/wH7 + Aa8BjQH/AcUBzgHQAf8BsQG0AbUB/1QAAxYBHwMeASsYAAMeASsDQAFvAykBPggAAbUBhQE6A/8B/AP/ + Af0H/wH+A/8B/AP/AfoD/wH3A/8B+QH/AbQBggE1Af8BtgGEATgB/wG2AYMBNgH/AbUBggE2Af8BtQGD + ATYB/wG1AYQBOQH/A1UBsAHOAdQB1gH/AaACoQH/AaACoQH/AaACoQH/AaEBogGjAf8BowKlAf8BpQKn + Af8BrAKvAf8BrwKxAf8BsQG0AbUB/wG0ArgB/wG2AbsBvAH/AcUBzwHRAf8BswG3AbgB/3gAAwcBCgwA + AmIBWAHvAbUBhQE6Af8BswGDATgB/wGzAYMBOAH/AbMBgwE4Af8BswGDATcB/wGzAYMBNwH/AbMBgwE3 + Af8BtQGEATkB/wJkAVwB5xgAA0MBeAHOAdQB1gH/Ac4B1AHWAf8BzgHUAdYB/wHNAdQB1gH/Ac0B0wHV + Af8BzQHTAdUB/wHKAdIB1AH/AcoB0gHTAf8ByQHRAdMB/wHIAdEB0gH/AccB0AHRAf8BxgHPAdEB/wNO + AZVMAAMfAS0DMAFLAy8BSgMvAUoDLwFJAzIBUQM2AVkDNgFZAzYBWQM2AVkDNgFZAzUBVwMxAU4DJgE5 + CwAB/wMAAf8DAAH/CwAB/wMAAf8DAAH/AwAB/wMAAf8YAAMUARwDIAEuAyABLgMgAS4BGwEeASoB/wNZ + AccDQgF0AzcBWwM1AVgDMwFSAy8BSgMrAUIDIAEuAxQBHEgAA1IBpAT/AfUB9AHzAf8B9gH1AfQF/wE9 + ATwBPgH/ARQBEwEWBf8B+wL6Af8C+wH6Af8B+wL6Bf8ClgGXAf8DWgHYCAADhgH/A8AB/wMAAf8DAAH/ + A4YJ/wPAAf8BAAP/AQAB/wEAAf8DAAH/GAAB4gG4AZkB/wHiAbkBmAH/AeIBuAGZAf8BSAFXAZ0B/wFA + AVABkgH/ATwBSwGSAf8BKwFOAZ4B/wHKAawBmAH/AeIBuAGYAf8B4gG5AZkB/wHiAbkBmAH/AeIBuAGY + Af8YAAMMARADRAF7Al0BWgHKAlkBQgH1AWIBXgFBAfYCXAFZAcwDRQF9Aw0BERQAA1ABngH7AfoB+QH/ + Ae4C7QH/AfAB7wHuAf8B/gH9AfwB/wE8ATsBPQH/ARMBEgEUAf8C8AHvAf8C6AHnAf8C6AHnAf8C6AHn + Af8B9QH0AfMB/wGPAY4BjwH/A1oB5AgAA4YB/wPAAf8DAAH/A4YB/wPAAf8DwAX/A8AB/wEAAf8BAAH/ + A8AB/wPAAf8DAAH/FAAB4wG7AZsB/wH4AeABvgH/AfgB4AG+Af8BmwGfAa4B/wFUAWYBqQH/AUIBXgGg + Af8BAAFVAbAB/wEAAV4BvwH/AfgB4QG+Af8B+AHgAb8B/wH4AeEBvgH/AeMBugGaAf8UAAM0AVQCXQFO + AfABgAFPAQAB/wGAAU8BAAH/AYABTwEAAf8BgAFPAQAB/wGAAU8BAAH/Al8BTAHzAlgBVgHBAyEBMBAA + A1ABngH7AvoB/wHvAe4B7QH/AvAB7wH/Af4B/QH8Af8BhgGEAYUB/wEgAR8BIAH/AvUB9AH/Au0B7AH/ + Au0B7AH/Ae4B7QHsAf8C+gH5Af8BlAGTAZQB/wNbAeEIAAOGAf8DwAH/AwAB/wOGAf8DwAH/A8AB/wPA + Af8DAAH/AQAB/wEAA/8BAAP/AQAB/wMAAf8UAAHkAb0BnAH/AfgB4QG/Af8B8wHWAbIB/wHCAbgBrgH/ + AUEBYQGsAf8BEwHAAfgB/wEAAZcB1wH/AQABYAHUAf8BAAFgAcEB/wHzAdYBsgH/AfgB4QG/Af8B5AG9 + AZ0B/xAAAzQBVAGEAVIBAAH/AYcBVQEAAf8BhwFVAQAB/wGHAVUBAAH/AYcBVQEAAf8BfwFrARIB/gJd + AU4B8AJaAVcBxQNLAY4CNQE0AVUDCgENDAADUAGeAf0B/AH7Af8C8AHvAf8B8gLxAf8B/gL9Af8BkgGQ + AZEB/wESARABEQH/AawBqwGqAf8BrAGrAaoB/wGsAasBqgH/AaoCqQH/Aa0BrAGrAf8BKgEoASkB/wNb + AeEIAAOGAf8DwAH/AwAB/wOGAf8DwAH/A8AD/wEAAf8DAAH/AwAB/wPAAf8DwAH/AwAB/xQAAeYBwAGf + Af8B+AHiAcEB/wHZAb4BnQH/AdkBvgGeAf8BlgGnAasB/wEAAVwBxAH/AQ4B0wL/AQABswHuAf8BAAFg + AdQB/wEAAWIBwgH/AfgB4QHAAf8B5gHAAZ8B/wwAAw0BEgJdAU4B8AGQAVwBAAH/AZABXAEAAf8BkAFc + AQAB/wGZAWMBAAH/AZYBYQEAAf8CYAFZAesCWQFWAb4DSAGGAjEBMAFNAxQBHAMBAQIMAANQAZ4B/gL9 + Af8B8gHxAfAB/wLzAfIC/wL+Af8BnQKcAf8BCQIHAf8BFgEUARMB/wEYARUBFAH/ARgCFQH/ARUCEwH/ + AQ0CCwH/AwAB/wNbAeEIAAOGBf8DAAH/A4YD/wEAAf8DwAP/AQAB/wEAB/8DwAH/A8AB/wMAAf8DAAH/ + AwAB/wwAAecBwwGiAf8B+AHjAcIB/wH2Ad0BugH/AfgB4wHDAf8B+AHjAcIB/wG2AcUBwwH/AQABXAHE + Af8BDgHTAv8BDwHGAfYB/wEAAWAB1AH/AQABZgHKAf8B6AHDAaIB/wMAAQEIAANFAX0BmQFjAQAB/wGZ + AWQBAQH/AZoBZAEBAf8CZAFTAfEDOwFjAw0BEQMKAQ0DJAE1AysBQgMQARYDAAEBEAADUAGeAv8B/gH/ + AfMC8gH/AvQB8wP/Af4B/wGjAqIB/wEUAREBEAH/ATwBOgE4Af8BzwHOAc0B/wHHAcUBxAH/AakBpwGm + Af8BnQGbAZoB/wGLAYkBigH/A1sB4QgAA4YF/wMAAf8DwAH/A4YD/wEAA/8BAAH/AQAL/wMAAf8DwAH/ + A8AB/wPAAf8DAAH/CAAB6gHGAaQB/wH4AeQBxAH/AdwBwgGkAf8B3AHEAaYB/wHcAcQBpgH/AdwBxQGm + Af8BoQGuAa8B/wEAAVwBxAH/AZgB7AL/AQ8BxgH2Af8BAAFgAdQB/wJoAV8B/wMoATwIAAJcAVoBzQGj + AYIBBAH/AaMBggEEAf8BpQGDAQMB/wM7AWMQAAMEAQUYAANQAZ4E/wH0AvMB/wP1Bf8BqAGmAaUB/wEM + AgkB/wEuAi0B/wHmAuUB/wHxAvAB/wGnAaYBpQH/ATYBMwEyAf8BmgKYAf8DXAHnCAADhgX/AwAB/wPA + Af8DwAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DhgH/A4YB/wOGAf8DwAH/AwAB/wgAAewBygGoAf8B+AHl + AcYB/wH5AeQBxgH/AfkB5QHFAf8B+QHkAcYB/wH4AeQBxgH/AfcB4wHFAf8BvAHIAcYB/wEAAVwBxAH/ + AZYB6gH+Af8CtwGsAf8BWAFZAUsB/wJoAV8B/wgAAWYBWQFCAfUBrgGLAQYB/wGuAYsBBgH/AZ8BaAEB + Af8DDQERLAADUAGeBP8C9QH0Af8C9wH2Bf8BrAKqAf8BEQEPAQ4B/wEvAS0BLgH/Ac8BzQHMAf8B1AHS + AdEB/wG0ArIB/wGqAacBpgH/A2oB+QNXAb0IAAOGAf8DhgH/AwAB/wPAAf8DwAH/A4YB/wOGAf8DhgH/ + A4YB/wOGAf8DhgH/A4YB/wOGAf8DwAH/AwAB/wgAAe4BzQGrAf8B+AHmAccB/wHfAcgBqgH/Ad4ByAGq + Af8B3wHIAasB/wHfAccBqwH/AdsBwwGmAf8B2gHCAaQB/wGrAbABqwH/AY4BjwGEAf8B4AHiAdMB/wKJ + AWkB/wEBAU8B3gH/AVUBXAFeAeoEAAFoAVkBQgH1AbkBlAEJAf8BuQGUAQkB/wGnAYQBAwH/Aw0BEQgA + A0wBkgGpAYYBAwH/AaMBggECAf8BowGCAQIB/wGjAYIBAgH/AaMBggECAf8BYgFfAUwB8wgAA1ABngT/ + AfcC9gH/A/gB/wP6Af8D8AH/AeoC6QH/A/AB/wP3Af8D9gH/AvoB+QH/A1gBuQMXASADBwEJBAADhgn/ + A4YB/wPAAf8DwAH/A4YB/wPAAf8DwAH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DhgH/AwAB/wgAAfAB0AGt + Af8B+QHmAckB/wH4AeYByQH/AfkB5gHJAf8B+QHmAckB/wH3AeUByQH/AfAB2QG9Af8B6QHPAbMB/wHo + Ac4BsgH/AcwBuQGvAf8CiQFpAf8BPgGWAeoB/wEsAYUB4AH/AVoCXQHTBAACXAFaAc0BwwGcAQsB/wHD + AZwBCwH/Ab8BmAEKAf8DOwFjCAADDAEQAlsBWALLAaIBDQH/AcMBnAELAf8BwwGcAQsB/wHDAZwBCwH/ + AakBhgEDAf8IAANQAZ4E/wL4AfcB/wP5Af8D+gH/Av4B/RX/A1YBqxAAA4YB/wOGAf8DhgH/A4YB/wPA + Af8DhgH/AcwCNwL/AcwBNwH/AcwBmQEEAf8BzAGZAQAC/wE3AQQB/wHMATcBBAX/A4YB/wMAAf8IAAHx + AdMBsQH/AfkB5wHLAf8B4gHMAbAB/wHiAcsBrwH/AeEBzAGvAf8B4QHKAa8B/wHXAb4BoQH/AdUBugGc + Af8B1AG5AZ0B/wHUAbkBnQH/AbYBrwG0Af8BXgGSAcQB/wNIAYYIAAJGAUUBfgHSAagBDgH/Ac0BpAEO + Af8BzQGkAQ4B/wFnAWQBUwHxAzsBYwMNAREDDQERA0EBcgG/AZgBCQH/Ac0BpAEOAf8BzQGkAQ4B/wHN + AaQBDgH/AbABjAEFAf8IAANQAZ4E/wL5AfgB/wP6Af8D/AH/A/0B/wP+Bf8B/AL9Af8B9AL1Af8D+gH/ + A1YBsxgAA4YJ/wOGAf8BzAI3A/8BNwL/AcwBNwH/AcwBmQEEAf8BzAGZAQAC/wE3AQQF/wOGAf8DAAH/ + CAAB8wHXAbQB/wH5AecBzAH/AfgB5wHMAf8B+QHoAcwB/wH5AegBzAH/AfcB5QHKAf8B5wHPAbUB/wHy + Ad4BxgH/AfMB4AHIAf8B9wHoAdMB/wNaAcUB7wHQAa4B/wMBAQIDAAEBBAADDwEUAWEBXQFOAfAB2AGt + ARAB/wHXAawBEAH/AdcBrAEQAf8B0QGnAQ4B/wG9AZcBCAH/Ab0BlwEIAf8B0QGnAQ4B/wHXAawBEAH/ + AdcBrAEQAf8B1wGsARAB/wHXAawBEAH/AbYBkQEGAf8IAANQAZ4E/wP6Af8D/AH/A/0B/wP+Bf8B/gH/ + Af4B/wPqAf8C1wHYAf8B3QLeAf8DOwFkHAADhgH/A4YB/wOGAf8BzAI3A/8BNwP/ATcC/wHMATcB/wHM + AZkBBAH/AcwBmQEABf8DhgH/AwAB/wgAAfQB2QG1Af8B+QHoAc0B/wHkAc8BtAH/AeQBzwG0Af8B5AHP + AbQB/wHjAc4BswH/Ad0BxgGpAf8B+QHoAc4B/wH5AegBzgH/A1wBzAHxAdMBsQH/AyYBOBAAAjUBNAFV + AdsBsQEQAf8B3wGzARIB/wHeAbMBEgH/Ad4BswESAf8B3gGzARIB/wHeAbMBEgH/Ad4BswESAf8B3gGz + ARIB/wHfAbMBEgH/AdwBsgEQAf8B5gG6ARQB/wG7AZUBCAH/CAADUAGeBP8D/AH/A/0J/wP9Af8C+gH7 + Af8B6wLsAf8C+gH7Af8DQgFzKAADhgH/AcwCNwL/AcwBNwP/ATcD/wE3Av8BzAE3Af8BzAGZAQQF/wOG + Af8DAAH/CAAB9gHbAbgB/wH5AekBzwH/AfkB6QHOAf8B+QHoAc4B/wH4AegBzgH/AfYB5QHMAf8B7gHa + Ab8B/wH5AegBzgH/A2AB3gH0AdkBtQH/AyYBOBgAAjUBNAFVAWMBXQFOAfAB7QHCARYB/wHmAbkBFAH/ + AeYBuAEUAf8B5gG4ARQB/wHmAbkBFAH/Ae0BwgEWAf8BawFkAVMB8QI6ATkBYAJbAVgBywHHAaABCwH/ + CAADVAGmHP8B6wLsAf8DQgFzLAADhgH/AcwCNwH/AcwBNwEEAf8BzAE3AQQB/wHMATcBBAH/AcwBNwEE + Af8BzAE3AQQF/wOGAf8DAAH/CAAB9wHdAboB/wH5AekBzwH/AfkB6QHPAf8B+QHpAc8B/wH5AekBzwH/ + AfcB5gHNAf8B7QHYAb0B/wH5AegBzgH/AfcB3QG4Af8DJgE4IAADDAEQA0UBfQJcAVkBzAF+AXkBPgH4 + AYgBgQFBAfkCXgFcAc4CRgFFAX4DDQESBAADDAEQA0wBkggAAyYEOAFcAzgBXAM4AVwDOAFcAzgBXAM4 + AVwDOAFcAykBPzAAA4YB/wPXAf8D1wH/A9cB/wPXAf8D1wH/A9cB/wPXAf8DhgH/AwAB/wgAAfgB3wG7 + Af8B+AHfAbsB/wH4Ad8BuwH/AfgB3wG7Af8B+AHfAbsB/wH4Ad8BuwH/AfgB3wG7Af8B+AHfAbsB/wMm + AThUAAFCAU0BPgcAAT4DAAEoAwABQAMAASADAAEBAQABAQYAAQEWAAP/AQAC/wHgAQcB/gEBAgAC5wHA + AQcB/AMAAsMBwAEHAeADAAKBAcABBwHgAwABgAEBAcABAAHwAwABwAEDBgAB4AEHBgAB8AEPBgAB8AEP + BgAB4AEHAwABAQIAAcABAwMAAQMCAAGAAQEDAAEDAgABgQGAAwABAwIAAcMBwQMAAQMCAAHnAeMDAAED + AgAB/wH3AQABPwEAAQMCAAGAAQEBjAEfAYABAQL/AYABAQGAAQ8BwAEDAfABDwGAAQEBgAEHAcABAwHg + AQcBgAEBAYABBwHAAQMBwAEDAYABAQGAAQcBwAEDAYABAwGAAQEBgAEBAcABAQGAAQcBgAEBAYABAAHA + AQEBgwHfAYABAQGAAQABwAEBAYMB/wGAAQEBgAEAAcABAAGDAQEBgAEBAgABwAEAAYMBAQGAAQcBgAEA + AcABAQGAAQEBgAEHAeABAAHAAQABgAEBAYABBwHwAQABwAEDAcABAQGAAQ8B/AEAAcABBwHgAQEBgAEf + AfwBAAHAAQ8B8AEJAYABPwH8AQABwAEfAv8L diff --git a/remoteapp-tool/RemoteAppCreateClientConnection.vb b/remoteapp-tool/RemoteAppCreateClientConnection.vb index cba640f..f0999ca 100644 --- a/remoteapp-tool/RemoteAppCreateClientConnection.vb +++ b/remoteapp-tool/RemoteAppCreateClientConnection.vb @@ -12,6 +12,8 @@ Public Class RemoteAppCreateClientConnection Dim RemoteAppShortName = RemoteApp.Name Me.Text = "Create Client Connection for " & RemoteAppShortName + CertificateComboBox.Items.AddRange(rdpSign.GetCertificateFriendlyName) + SetCCWindowSettings() If Me.ServerAddress.Text = "" Then Me.ServerAddress.Text = System.Net.Dns.GetHostName @@ -32,11 +34,15 @@ Public Class RemoteAppCreateClientConnection MSIRadioButton.Text = "MSI installer (requires WiX Toolset)" End If + If Not My.Computer.FileSystem.FileExists(GetSysDir() & "\rdpsign.exe") Then + GroupBoxSignRDP.Enabled = False + GroupBoxSignRDP.Text += " (requires rdpsign.exe)" + GroupBoxSignRDP.Tag = "noexe" + End If + If Not RemoteApp.FileTypeAssociations Is Nothing Then _ FTACountLabel.Text = "Count: " & RemoteApp.FileTypeAssociations.Count - CertificateComboBox.Items.AddRange(rdpSign.GetCertificateFriendlyName) - Me.RDPRadioButton.Focus() HelpSystem.SetupTips(Me) Me.ShowDialog() @@ -62,6 +68,9 @@ Public Class RemoteAppCreateClientConnection My.Settings.SavedCreateRAWebIcon = False My.Settings.SavedMSIPerUser = False My.Settings.SavedDisableFTA = False + My.Settings.SavedSignRDP = False + My.Settings.SavedSignedAndUnsigned = False + My.Settings.SavedCertSelected = 0 End Sub Sub SaveCCWindowSettings() @@ -81,6 +90,9 @@ Public Class RemoteAppCreateClientConnection My.Settings.SavedCreateRAWebIcon = CreateRAWebIcon.Checked My.Settings.SavedMSIPerUser = PerUserRadioButton.Checked My.Settings.SavedDisableFTA = DisabledFTACheckBox.Checked + My.Settings.SavedSignRDP = CheckBoxSignRDPEnabled.Checked + My.Settings.SavedSignedAndUnsigned = CheckBoxCreateSignedAndUnsigned.Checked + My.Settings.SavedCertSelected = CertificateComboBox.SelectedIndex End Sub Sub SetCCWindowSettings() @@ -119,6 +131,20 @@ Public Class RemoteAppCreateClientConnection PerMachineRadioButton.Checked = False PerUserRadioButton.Checked = True End If + + CheckBoxSignRDPEnabled.Checked = My.Settings.SavedSignRDP + CertificateComboBox.Enabled = My.Settings.SavedSignRDP + CheckBoxCreateSignedAndUnsigned.Checked = My.Settings.SavedSignedAndUnsigned + + If CertificateComboBox.Items.Count >= (My.Settings.SavedCertSelected + 1) Then + CertificateComboBox.SelectedIndex() = My.Settings.SavedCertSelected + ElseIf CertificateComboBox.Items.Count > 0 Then + CertificateComboBox.SelectedIndex() = 0 + ElseIf Not GroupBoxSignRDP.Tag = "noexe" Then + GroupBoxSignRDP.Text += " (No certificates found)" + GroupBoxSignRDP.Enabled = False + End If + End Sub Private Sub UseRDGatewayCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles UseRDGatewayCheckBox.CheckedChanged @@ -140,8 +166,11 @@ Public Class RemoteAppCreateClientConnection If RDPRadioButton.Checked Then CreateButton.ImageIndex = 6 + CheckBoxCreateSignedAndUnsigned.Enabled = True Else CreateButton.ImageIndex = 1 + CheckBoxCreateSignedAndUnsigned.Enabled = False + CheckBoxCreateSignedAndUnsigned.Checked = False End If End Sub @@ -150,15 +179,20 @@ Public Class RemoteAppCreateClientConnection Dim MSIPath = "" Dim TempMSIPath = "" + If CheckBoxSignRDPEnabled.Checked And CertificateComboBox.SelectedItem = "" Then + MessageBox.Show("You must select a certificate to sign the RDP file.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) + Return + End If + If DisabledFTACheckBox.Checked And Not RemoteApp.FileTypeAssociations Is Nothing Then RemoteApp.FileTypeAssociations.Clear() If RDPRadioButton.Checked Then FileSaveRDP.FileName = RemoteApp.Name - If Not FileSaveRDP.ShowDialog() = Windows.Forms.DialogResult.OK Then Exit Sub + If Not FileSaveRDP.ShowDialog() = Windows.Forms.DialogResult.OK Then Return RDPPath = FileSaveRDP.FileName Else FileSaveMSI.FileName = RemoteApp.Name - If Not FileSaveMSI.ShowDialog() = Windows.Forms.DialogResult.OK Then Exit Sub + If Not FileSaveMSI.ShowDialog() = Windows.Forms.DialogResult.OK Then Return MSIPath = FileSaveMSI.FileName RDPPath = Environment.GetEnvironmentVariable("TEMP") & "\" & RemoteApp.Name & ".rdp" TempMSIPath = Environment.GetEnvironmentVariable("TEMP") & "\" & RemoteApp.Name & ".msi" @@ -189,6 +223,7 @@ Public Class RemoteAppCreateClientConnection ExtractFTIcon(ProductFileName, FTA) Next End If + Me.Close() Else '!!!!!!! If it's an MSI Dim RDP As New RDP2MSIlib.RDP @@ -225,9 +260,8 @@ Public Class RemoteAppCreateClientConnection RDP.CreateMSI(MSIPath) DeleteFiles(FilesToDelete) - + Me.Close() End If - Me.Close() End Sub Private Sub ExtractFTIcon(ProductFileName As String, FTA As RemoteAppLib.FileTypeAssociation) @@ -288,7 +322,7 @@ Public Class RemoteAppCreateClientConnection RDPfile.SaveRDPfile(RDPPath) - If Not CheckBoxSignRDPDisabled.Checked Then + If CheckBoxSignRDPEnabled.Checked Then Dim rdpSign As New RDPSign.RDPSign Dim Thumbprint As String = rdpSign.GetThumbprint(CertificateComboBox.Text) rdpSign.SignRDP(Thumbprint, RDPPath, CheckBoxCreateSignedAndUnsigned.Checked) @@ -315,7 +349,7 @@ Public Class RemoteAppCreateClientConnection End Function Private Sub FTAButton_Click(sender As Object, e As EventArgs) Handles FTAButton.Click - MessageBox.Show(Me, "Changes made here to File Type Associations are for this client connection only and will not be saved for next time." & vbCrLf & vbCrLf & _ + MessageBox.Show(Me, "Changes made here to File Type Associations are for this client connection only and will not be saved for next time." & vbCrLf & vbCrLf & "To make permanent changes to the File Type Associations for this RemoteApp, edit the RemoteApp.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information) RemoteApp = RemoteAppFileTypeAssociation.EditFileTypes(RemoteApp) If Not RemoteApp.FileTypeAssociations Is Nothing Then _ @@ -363,26 +397,31 @@ Public Class RemoteAppCreateClientConnection End If End Sub - Private Sub CheckBoxSignRDPDisabled_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBoxSignRDPDisabled.CheckedChanged - CertificateComboBox.Enabled = Not CheckBoxSignRDPDisabled.Checked - CheckBoxCreateSignedAndUnsigned.Enabled = Not CheckBoxSignRDPDisabled.Checked - If (EditAfterSave.Checked And Not CheckBoxSignRDPDisabled.Checked) Then - If MessageBox.Show("Cannot edit after save and sign the RDP file. Do you want the RDP file to be signed?", "Sign RDP", MessageBoxButtons.YesNo) = DialogResult.Yes Then - EditAfterSave.Checked = False + Private Sub CheckBoxSignRDPEnabled_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBoxSignRDPEnabled.CheckedChanged + CertificateComboBox.Enabled = CheckBoxSignRDPEnabled.Checked + If (EditAfterSave.Checked And CheckBoxSignRDPEnabled.Checked) Then + If MessageBox.Show("You have selected ""Sign RDP file"" and ""Manually edit RDP file""." & vbCrLf & vbCrLf & "If you save any changes to a signed RDP file it will stop working." & vbCrLf & vbCrLf & "Are you sure you want the RDP file to be signed?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then + CheckBoxSignRDPEnabled.Checked = True Else - CheckBoxSignRDPDisabled.Checked = True + CheckBoxSignRDPEnabled.Checked = False End If End If End Sub Private Sub EditAfterSave_CheckedChanged(sender As Object, e As EventArgs) Handles EditAfterSave.CheckedChanged - If (EditAfterSave.Checked And Not CheckBoxSignRDPDisabled.Checked) Then - If MessageBox.Show("Cannot edit after save and sign the RDP file. Do you want to edit after saving?", "Edit After Save", MessageBoxButtons.YesNo) = DialogResult.Yes Then - CheckBoxSignRDPDisabled.Checked = True + If (EditAfterSave.Checked And CheckBoxSignRDPEnabled.Checked) Then + If MessageBox.Show("You have selected ""Sign RDP file"" and ""Manually edit RDP file""." & vbCrLf & vbCrLf & "If you save any changes to a signed RDP file it will stop working." & vbCrLf & vbCrLf & "Are you sure you want to edit after saving?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then + EditAfterSave.Checked = True Else EditAfterSave.Checked = False End If End If End Sub + + Private Sub CheckBoxCreateSignedAndUnsigned_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBoxCreateSignedAndUnsigned.CheckedChanged + If CheckBoxCreateSignedAndUnsigned.Checked = True Then + CheckBoxSignRDPEnabled.Checked = True + End If + End Sub End Class \ No newline at end of file