Checkpoint micasad code for portable app on windows.
This commit is contained in:
parent
411e95b4f0
commit
20ae282ddb
24
CASA/micasad/cache/SecretStore.cs
vendored
24
CASA/micasad/cache/SecretStore.cs
vendored
@ -708,6 +708,30 @@ namespace sscs.cache
|
||||
{
|
||||
keyChainList.Remove(id);
|
||||
return true;
|
||||
}
|
||||
|
||||
internal KeyChain GetKeyChainDefault(bool bCreateIfNotFound)
|
||||
{
|
||||
KeyChain kc;
|
||||
|
||||
try
|
||||
{
|
||||
kc = GetKeyChainDefault();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (bCreateIfNotFound)
|
||||
{
|
||||
kc = new KeyChain("SSCS_SESSION_KEY_CHAIN_ID\0");
|
||||
AddKeyChain(kc);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
return kc;
|
||||
}
|
||||
|
||||
internal KeyChain GetKeyChainDefault()
|
||||
|
@ -66,9 +66,15 @@ namespace sscs.common
|
||||
{
|
||||
return sessionManager;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
internal static SecretStore CreateUserSession(UserIdentifier userId)
|
||||
{
|
||||
return CreateUserSession(userId, null);
|
||||
}
|
||||
|
||||
internal static SecretStore CreateUserSession(UserIdentifier userId)
|
||||
internal static SecretStore CreateUserSession(UserIdentifier userId, string userHome)
|
||||
{
|
||||
CSSSLogger.ExecutionTrace(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
SecretStore ss;
|
||||
@ -84,7 +90,16 @@ namespace sscs.common
|
||||
{
|
||||
// Would create either windows/unix user
|
||||
// depending on the platform.
|
||||
User user = User.CreateUser(userId);
|
||||
User user;
|
||||
if (userHome != null)
|
||||
{
|
||||
user = User.CreateUser(userId, userHome);
|
||||
}
|
||||
else
|
||||
{
|
||||
user = User.CreateUser(userId);
|
||||
}
|
||||
|
||||
mutex.WaitOne();
|
||||
sessionTable.Add(userId,user);
|
||||
mutex.ReleaseMutex();
|
||||
|
@ -55,6 +55,20 @@ namespace sscs.common
|
||||
return secretStore;
|
||||
}
|
||||
|
||||
internal static User CreateUser(UserIdentifier userId, string userHome)
|
||||
{
|
||||
User user = null;
|
||||
#if LINUX
|
||||
user = new UnixUser(userId);
|
||||
#endif
|
||||
#if W32
|
||||
user = new WinUser(userId, userHome);
|
||||
#endif
|
||||
return user;
|
||||
|
||||
}
|
||||
|
||||
|
||||
internal static User CreateUser(UserIdentifier userId)
|
||||
{
|
||||
User user = null;
|
||||
|
@ -39,6 +39,14 @@ namespace sscs.common
|
||||
{
|
||||
}
|
||||
|
||||
internal WinUser(UserIdentifier winUserId, string userHome)
|
||||
{
|
||||
userId = winUserId;
|
||||
secretStore = new SecretStore(this);
|
||||
m_sUserHome = userHome;
|
||||
}
|
||||
|
||||
|
||||
internal WinUser(UserIdentifier winUserId)
|
||||
{
|
||||
userId = winUserId;
|
||||
@ -115,8 +123,5 @@ namespace sscs.common
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
256
CASA/micasad/init/UserInfo.cs
Normal file
256
CASA/micasad/init/UserInfo.cs
Normal file
@ -0,0 +1,256 @@
|
||||
// Begin of code sample
|
||||
using System;
|
||||
using System.Text;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.Permissions;
|
||||
using System.Security.Principal;
|
||||
using System.Diagnostics;
|
||||
|
||||
// Forward declarations
|
||||
using LUID = System.Int64;
|
||||
using HANDLE = System.IntPtr;
|
||||
|
||||
namespace sscs.init
|
||||
{
|
||||
class UserInfo
|
||||
{
|
||||
public const int TOKEN_QUERY = 0X00000008;
|
||||
|
||||
const int ERROR_NO_MORE_ITEMS = 259;
|
||||
|
||||
enum TOKEN_INFORMATION_CLASS
|
||||
{
|
||||
TokenUser = 1,
|
||||
TokenGroups,
|
||||
TokenPrivileges,
|
||||
TokenOwner,
|
||||
TokenPrimaryGroup,
|
||||
TokenDefaultDacl,
|
||||
TokenSource,
|
||||
TokenType,
|
||||
TokenImpersonationLevel,
|
||||
TokenStatistics,
|
||||
TokenRestrictedSids,
|
||||
TokenSessionId
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct _LUID
|
||||
{
|
||||
public int LowPart;
|
||||
public int HighPart;
|
||||
} //LUID, *PLUID;
|
||||
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct TOKEN_STATISTICS
|
||||
{
|
||||
public _LUID TokenId;
|
||||
public _LUID AuthenticationId;
|
||||
public int ExpirationTime;
|
||||
public int TokenType; // enum ini in 1 TOKEN_TYPE
|
||||
public int ImpersonationLevel; //SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
|
||||
public int DynamicCharged; ////DWORD
|
||||
public int DynamicAvailable; //DWORD
|
||||
public int GroupCount; //DWORD
|
||||
public int PrivilegeCount; //DWORD
|
||||
public _LUID ModifiedId;
|
||||
}// TOKEN_STATISTICS, *PTOKEN_STATISTICS;
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
struct TOKEN_USER
|
||||
{
|
||||
public _SID_AND_ATTRIBUTES User;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct _SID_AND_ATTRIBUTES
|
||||
{
|
||||
public IntPtr Sid;
|
||||
public int Attributes;
|
||||
}
|
||||
[DllImport("advapi32")]
|
||||
static extern bool OpenProcessToken(
|
||||
HANDLE ProcessHandle, // handle to process
|
||||
int DesiredAccess, // desired access to process
|
||||
ref IntPtr TokenHandle // handle to open access token
|
||||
);
|
||||
|
||||
[DllImport("kernel32")]
|
||||
static extern HANDLE GetCurrentProcess();
|
||||
|
||||
[DllImport("advapi32", CharSet = CharSet.Auto)]
|
||||
static extern bool GetTokenInformation(
|
||||
HANDLE hToken,
|
||||
TOKEN_INFORMATION_CLASS tokenInfoClass,
|
||||
IntPtr TokenInformation,
|
||||
int tokeInfoLength,
|
||||
ref int reqLength);
|
||||
|
||||
[DllImport("kernel32")]
|
||||
static extern bool CloseHandle(HANDLE handle);
|
||||
|
||||
[DllImport("advapi32", CharSet = CharSet.Auto)]
|
||||
static extern bool LookupAccountSid
|
||||
(
|
||||
[In, MarshalAs(UnmanagedType.LPTStr)] string lpSystemName, // name of local or remote computer
|
||||
IntPtr pSid, // security identifier
|
||||
StringBuilder Account, // account name buffer
|
||||
ref int cbName, // size of account name buffer
|
||||
StringBuilder DomainName, // domain name
|
||||
ref int cbDomainName, // size of domain name buffer
|
||||
ref int peUse // SID type
|
||||
// ref _SID_NAME_USE peUse // SID type
|
||||
);
|
||||
|
||||
[DllImport("advapi32", CharSet = CharSet.Auto)]
|
||||
static extern bool ConvertSidToStringSid(
|
||||
IntPtr pSID,
|
||||
[In, Out, MarshalAs(UnmanagedType.LPTStr)] ref string pStringSid);
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
public static extern uint GetLastError();
|
||||
|
||||
|
||||
static void DumpUserInfo(HANDLE pToken)
|
||||
{
|
||||
int Access = TOKEN_QUERY;
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendFormat("\nToken dump performed on {0}\n\n", DateTime.Now);
|
||||
HANDLE procToken = IntPtr.Zero;
|
||||
if (OpenProcessToken(pToken, Access, ref procToken))
|
||||
{
|
||||
sb.Append("Process Token:\n");
|
||||
sb.Append(PerformDump(procToken));
|
||||
CloseHandle(procToken);
|
||||
}
|
||||
Console.WriteLine(sb.ToString());
|
||||
}
|
||||
|
||||
static StringBuilder PerformDump(HANDLE token)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
TOKEN_USER tokUser;
|
||||
const int bufLength = 256;
|
||||
IntPtr tu = Marshal.AllocHGlobal(bufLength);
|
||||
int cb = bufLength;
|
||||
GetTokenInformation(token, TOKEN_INFORMATION_CLASS.TokenUser, tu, cb, ref cb);
|
||||
tokUser = (TOKEN_USER)Marshal.PtrToStructure(tu, typeof(TOKEN_USER));
|
||||
sb.Append(DumpAccountSid(tokUser.User.Sid));
|
||||
|
||||
Marshal.FreeHGlobal(tu);
|
||||
return sb;
|
||||
}
|
||||
|
||||
|
||||
static string GetSID(HANDLE token)
|
||||
{
|
||||
TOKEN_USER tokUser;
|
||||
const int bufLength = 256;
|
||||
IntPtr tu = Marshal.AllocHGlobal(bufLength);
|
||||
int cb = bufLength;
|
||||
if (GetTokenInformation(token, TOKEN_INFORMATION_CLASS.TokenUser, tu, cb, ref cb))
|
||||
{
|
||||
tokUser = (TOKEN_USER)Marshal.PtrToStructure(tu, typeof(TOKEN_USER));
|
||||
Marshal.FreeHGlobal(tu);
|
||||
|
||||
string SidString = "";
|
||||
ConvertSidToStringSid(tokUser.User.Sid, ref SidString);
|
||||
if (SidString.Length > 0)
|
||||
{
|
||||
return SidString;
|
||||
}
|
||||
else
|
||||
{
|
||||
return DumpAccountSid(tokUser.User.Sid);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint error = GetLastError();
|
||||
}
|
||||
|
||||
Marshal.FreeHGlobal(tu);
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
|
||||
internal static void GetLUID(ref int lowPart, ref int highPart, ref string sSID)
|
||||
{
|
||||
// first open our process token
|
||||
int Access = TOKEN_QUERY;
|
||||
HANDLE procToken = IntPtr.Zero;
|
||||
|
||||
Process proc = Process.GetCurrentProcess();
|
||||
if (OpenProcessToken(proc.Handle, Access, ref procToken))
|
||||
{
|
||||
GetLUID(procToken, ref lowPart, ref highPart);
|
||||
sSID = GetSID(procToken);
|
||||
CloseHandle(procToken);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void GetLUID(HANDLE token, ref int lowPart, ref int highPart)
|
||||
{
|
||||
TOKEN_USER tokUser;
|
||||
const int bufLength = 256;
|
||||
IntPtr tu = Marshal.AllocHGlobal(bufLength);
|
||||
int cb = bufLength;
|
||||
TOKEN_STATISTICS stats;
|
||||
if (GetTokenInformation(token, TOKEN_INFORMATION_CLASS.TokenStatistics, tu, cb, ref cb))
|
||||
{
|
||||
stats = (TOKEN_STATISTICS)Marshal.PtrToStructure(tu, typeof(TOKEN_STATISTICS));
|
||||
// copy low and high part
|
||||
lowPart = stats.AuthenticationId.LowPart;
|
||||
highPart = stats.AuthenticationId.HighPart;
|
||||
}
|
||||
|
||||
Marshal.FreeHGlobal(tu);
|
||||
|
||||
}
|
||||
static string DumpAccountSid(IntPtr SID)
|
||||
{
|
||||
int cchAccount = 0;
|
||||
int cchDomain = 0;
|
||||
int snu = 0;
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
// Caller allocated buffer
|
||||
StringBuilder Account = null;
|
||||
StringBuilder Domain = null;
|
||||
bool ret = LookupAccountSid(null, SID, Account, ref cchAccount, Domain, ref cchDomain, ref snu);
|
||||
if (ret == true)
|
||||
if (Marshal.GetLastWin32Error() == ERROR_NO_MORE_ITEMS)
|
||||
return "Error";
|
||||
try
|
||||
{
|
||||
Account = new StringBuilder(cchAccount);
|
||||
Domain = new StringBuilder(cchDomain);
|
||||
ret = LookupAccountSid(null, SID, Account, ref cchAccount, Domain, ref cchDomain, ref snu);
|
||||
if (ret)
|
||||
{
|
||||
sb.Append(Domain);
|
||||
sb.Append(@"\\");
|
||||
sb.Append(Account);
|
||||
}
|
||||
else
|
||||
Console.WriteLine("logon account (no name) ");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
}
|
||||
string SidString = null;
|
||||
ConvertSidToStringSid(SID, ref SidString);
|
||||
sb.Append("\nSID: ");
|
||||
sb.Append(SidString);
|
||||
return SidString;
|
||||
}
|
||||
}
|
||||
}
|
||||
// End of code sample
|
@ -32,6 +32,7 @@ using System.Configuration.Install ;
|
||||
using sscs.communication;
|
||||
using sscs.constants;
|
||||
using sscs.common;
|
||||
using sscs.winforms;
|
||||
|
||||
namespace sscs.init
|
||||
{
|
||||
@ -110,9 +111,15 @@ namespace sscs.init
|
||||
return;
|
||||
}
|
||||
|
||||
if (opt != null && opt.ToLower() == "/standalone")
|
||||
foreach (string arg in args)
|
||||
{
|
||||
System.Diagnostics.Trace.WriteLine("arg: " + arg);
|
||||
}
|
||||
|
||||
if (opt != null
|
||||
&& (opt.ToLower() == "/standalone" || opt.ToLower() == "/s"))
|
||||
{
|
||||
MainInternal(args);
|
||||
MainInternal(args);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -213,7 +220,15 @@ namespace sscs.init
|
||||
CSSSLogger.DbgLog("Checking service: " + x.DisplayName);
|
||||
if (x.Status==System.ServiceProcess.ServiceControllerStatus.Stopped)
|
||||
{
|
||||
x.Start();
|
||||
try
|
||||
{
|
||||
x.Start();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
System.Diagnostics.Trace.WriteLine(e.ToString());
|
||||
System.Diagnostics.Trace.WriteLine(e.StackTrace.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -276,11 +291,20 @@ namespace sscs.init
|
||||
|
||||
CSSSLogger.DbgLog("Client Side SecretStore Service has started.");
|
||||
|
||||
server = CommunicationFactory.CreateCommunicationEndPoint();
|
||||
if (true)
|
||||
{
|
||||
System.Windows.Forms.Application.Run(new MiCasaForm(args));
|
||||
System.Windows.Forms.Application.Exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
server = CommunicationFactory.CreateCommunicationEndPoint();
|
||||
|
||||
listeningThread = new Thread(new ThreadStart(StartServer));
|
||||
listeningThread.Start();
|
||||
listeningThread.Join();
|
||||
}
|
||||
|
||||
listeningThread = new Thread(new ThreadStart(StartServer));
|
||||
listeningThread.Start();
|
||||
listeningThread.Join();
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
|
@ -17,7 +17,7 @@
|
||||
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
|
||||
<DefaultTargetSchema>IE50</DefaultTargetSchema>
|
||||
<DelaySign>false</DelaySign>
|
||||
<OutputType>Exe</OutputType>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>sscs</RootNamespace>
|
||||
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
|
||||
<StartupObject>sscs.init.WinSecretStoreClientService</StartupObject>
|
||||
@ -208,6 +208,7 @@
|
||||
<Compile Include="init\ProjectInstaller.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="init\UserInfo.cs" />
|
||||
<Compile Include="init\WinSecretStoreClientService.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
@ -286,14 +287,56 @@
|
||||
<Compile Include="verbs\WriteSecret.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="winforms\ChangeMasterPasswordForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="winforms\ChangeMasterPasswordForm.Designer.cs">
|
||||
<DependentUpon>ChangeMasterPasswordForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="winforms\EditSecretForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="winforms\EditSecretForm.Designer.cs">
|
||||
<DependentUpon>EditSecretForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="winforms\MasterPasswordForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="winforms\MasterPasswordForm.Designer.cs">
|
||||
<DependentUpon>MasterPasswordForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="winforms\MiCasaForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="winforms\MiCasaForm.Designer.cs">
|
||||
<DependentUpon>MiCasaForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="winforms\WinCommon.cs" />
|
||||
<EmbeddedResource Include="init\ProjectInstaller.resx">
|
||||
<DependentUpon>ProjectInstaller.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="init\WinSecretStoreClientService.resx">
|
||||
<DependentUpon>WinSecretStoreClientService.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="winforms\ChangeMasterPasswordForm.resx">
|
||||
<DependentUpon>ChangeMasterPasswordForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="winforms\EditSecretForm.resx">
|
||||
<DependentUpon>EditSecretForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="winforms\MasterPasswordForm.resx">
|
||||
<DependentUpon>MasterPasswordForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="winforms\MiCasaForm.resx">
|
||||
<DependentUpon>MiCasaForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
<Folder Include="startup\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
|
187
CASA/micasad/winforms/ChangeMasterPasswordForm.Designer.cs
generated
Normal file
187
CASA/micasad/winforms/ChangeMasterPasswordForm.Designer.cs
generated
Normal file
@ -0,0 +1,187 @@
|
||||
namespace sscs.winforms
|
||||
{
|
||||
partial class ChangeMasterPasswordForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.textBoxMP1 = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.labelError = new System.Windows.Forms.Label();
|
||||
this.buttonCancel = new System.Windows.Forms.Button();
|
||||
this.textBoxDescription = new System.Windows.Forms.TextBox();
|
||||
this.buttonOk = new System.Windows.Forms.Button();
|
||||
this.textBoxCurMP = new System.Windows.Forms.TextBox();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.textBoxMP2 = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// textBoxMP1
|
||||
//
|
||||
this.textBoxMP1.Location = new System.Drawing.Point(115, 54);
|
||||
this.textBoxMP1.Name = "textBoxMP1";
|
||||
this.textBoxMP1.Size = new System.Drawing.Size(161, 20);
|
||||
this.textBoxMP1.TabIndex = 3;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(28, 58);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(81, 13);
|
||||
this.label2.TabIndex = 2;
|
||||
this.label2.Text = "New Password:";
|
||||
//
|
||||
// labelError
|
||||
//
|
||||
this.labelError.AutoSize = true;
|
||||
this.labelError.ForeColor = System.Drawing.Color.Red;
|
||||
this.labelError.Location = new System.Drawing.Point(56, 62);
|
||||
this.labelError.Name = "labelError";
|
||||
this.labelError.Size = new System.Drawing.Size(0, 13);
|
||||
this.labelError.TabIndex = 13;
|
||||
//
|
||||
// buttonCancel
|
||||
//
|
||||
this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonCancel.Location = new System.Drawing.Point(205, 201);
|
||||
this.buttonCancel.Name = "buttonCancel";
|
||||
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonCancel.TabIndex = 12;
|
||||
this.buttonCancel.Text = "Cancel";
|
||||
this.buttonCancel.UseVisualStyleBackColor = true;
|
||||
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
|
||||
//
|
||||
// textBoxDescription
|
||||
//
|
||||
this.textBoxDescription.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.textBoxDescription.Location = new System.Drawing.Point(123, 10);
|
||||
this.textBoxDescription.Multiline = true;
|
||||
this.textBoxDescription.Name = "textBoxDescription";
|
||||
this.textBoxDescription.ReadOnly = true;
|
||||
this.textBoxDescription.Size = new System.Drawing.Size(167, 33);
|
||||
this.textBoxDescription.TabIndex = 14;
|
||||
this.textBoxDescription.Text = "You can change your Master Password using this form";
|
||||
//
|
||||
// buttonOk
|
||||
//
|
||||
this.buttonOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonOk.Location = new System.Drawing.Point(119, 201);
|
||||
this.buttonOk.Name = "buttonOk";
|
||||
this.buttonOk.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonOk.TabIndex = 11;
|
||||
this.buttonOk.Text = "Ok";
|
||||
this.buttonOk.UseVisualStyleBackColor = true;
|
||||
this.buttonOk.Click += new System.EventHandler(this.buttonOk_Click);
|
||||
//
|
||||
// textBoxCurMP
|
||||
//
|
||||
this.textBoxCurMP.Location = new System.Drawing.Point(115, 24);
|
||||
this.textBoxCurMP.Name = "textBoxCurMP";
|
||||
this.textBoxCurMP.PasswordChar = '*';
|
||||
this.textBoxCurMP.Size = new System.Drawing.Size(161, 20);
|
||||
this.textBoxCurMP.TabIndex = 1;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.groupBox1.Controls.Add(this.textBoxMP2);
|
||||
this.groupBox1.Controls.Add(this.label3);
|
||||
this.groupBox1.Controls.Add(this.textBoxMP1);
|
||||
this.groupBox1.Controls.Add(this.label2);
|
||||
this.groupBox1.Controls.Add(this.textBoxCurMP);
|
||||
this.groupBox1.Controls.Add(this.label1);
|
||||
this.groupBox1.Location = new System.Drawing.Point(4, 78);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(282, 112);
|
||||
this.groupBox1.TabIndex = 10;
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
// textBoxMP2
|
||||
//
|
||||
this.textBoxMP2.Location = new System.Drawing.Point(115, 83);
|
||||
this.textBoxMP2.Name = "textBoxMP2";
|
||||
this.textBoxMP2.Size = new System.Drawing.Size(161, 20);
|
||||
this.textBoxMP2.TabIndex = 5;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(6, 87);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(103, 13);
|
||||
this.label3.TabIndex = 4;
|
||||
this.label3.Text = "Re-enter Password:";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(18, 27);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(93, 13);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Current Password:";
|
||||
//
|
||||
// ChangeMasterPasswordForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(292, 234);
|
||||
this.Controls.Add(this.labelError);
|
||||
this.Controls.Add(this.buttonCancel);
|
||||
this.Controls.Add(this.textBoxDescription);
|
||||
this.Controls.Add(this.buttonOk);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "ChangeMasterPasswordForm";
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
|
||||
this.Text = "Change Master Password";
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TextBox textBoxMP1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label labelError;
|
||||
private System.Windows.Forms.Button buttonCancel;
|
||||
private System.Windows.Forms.TextBox textBoxDescription;
|
||||
private System.Windows.Forms.Button buttonOk;
|
||||
private System.Windows.Forms.TextBox textBoxCurMP;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.TextBox textBoxMP2;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label label1;
|
||||
}
|
||||
}
|
88
CASA/micasad/winforms/ChangeMasterPasswordForm.cs
Normal file
88
CASA/micasad/winforms/ChangeMasterPasswordForm.cs
Normal file
@ -0,0 +1,88 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using sscs.cache;
|
||||
|
||||
namespace sscs.winforms
|
||||
{
|
||||
public partial class ChangeMasterPasswordForm : Form
|
||||
{
|
||||
private SecretStore m_ss;
|
||||
|
||||
public ChangeMasterPasswordForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
internal void SetSecretStore(SecretStore ss)
|
||||
{
|
||||
m_ss = ss;
|
||||
}
|
||||
|
||||
private void buttonOk_Click(object sender, EventArgs e)
|
||||
{
|
||||
// check current
|
||||
if (textBoxCurMP == null)
|
||||
{
|
||||
DisplayError("Enter your current Master Password");
|
||||
return;
|
||||
}
|
||||
|
||||
if (textBoxCurMP.Text.Length < 8)
|
||||
{
|
||||
DisplayError("Master Password must be at least 8 characters");
|
||||
return;
|
||||
}
|
||||
|
||||
if (textBoxMP1.Text == null)
|
||||
{
|
||||
DisplayError("Please enter and new Master Password");
|
||||
return;
|
||||
}
|
||||
|
||||
if (textBoxMP1.Text.Length < 8)
|
||||
{
|
||||
DisplayError("New Master Password must be at least 8 characters");
|
||||
return;
|
||||
}
|
||||
|
||||
// verify match
|
||||
if (!textBoxMP1.Text.Equals(textBoxMP2.Text))
|
||||
{
|
||||
DisplayError("New Master Passwords do not match");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!m_ss.SetMasterPassword(textBoxCurMP.Text))
|
||||
{
|
||||
DisplayError("Current Master Password is not correct");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// success
|
||||
m_ss.ChangeMasterPassword(textBoxCurMP.Text, textBoxMP1.Text);
|
||||
CloseWindow();
|
||||
|
||||
}
|
||||
|
||||
private void CloseWindow()
|
||||
{
|
||||
this.Dispose();
|
||||
}
|
||||
|
||||
private void DisplayError(string sMessage)
|
||||
{
|
||||
labelError.Text = sMessage;
|
||||
}
|
||||
|
||||
private void buttonCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
CloseWindow();
|
||||
}
|
||||
}
|
||||
}
|
120
CASA/micasad/winforms/ChangeMasterPasswordForm.resx
Normal file
120
CASA/micasad/winforms/ChangeMasterPasswordForm.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
304
CASA/micasad/winforms/EditSecretForm.Designer.cs
generated
Normal file
304
CASA/micasad/winforms/EditSecretForm.Designer.cs
generated
Normal file
@ -0,0 +1,304 @@
|
||||
namespace sscs.winforms
|
||||
{
|
||||
partial class EditSecretForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EditSecretForm));
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.tbSecretID = new System.Windows.Forms.TextBox();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.listViewKeyValues = new System.Windows.Forms.ListView();
|
||||
this.Key = new System.Windows.Forms.ColumnHeader();
|
||||
this.Value = new System.Windows.Forms.ColumnHeader();
|
||||
this.Linked = new System.Windows.Forms.ColumnHeader();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.tbNewValue = new System.Windows.Forms.TextBox();
|
||||
this.tbNewKey = new System.Windows.Forms.TextBox();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.button3 = new System.Windows.Forms.Button();
|
||||
this.button4 = new System.Windows.Forms.Button();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label1.Location = new System.Drawing.Point(9, 9);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(216, 13);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Manage Secrets and Key-Value pairs";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(85, 53);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(0, 13);
|
||||
this.label2.TabIndex = 1;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label3.Location = new System.Drawing.Point(9, 93);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(65, 13);
|
||||
this.label3.TabIndex = 2;
|
||||
this.label3.Text = "Secret ID:";
|
||||
//
|
||||
// tbSecretID
|
||||
//
|
||||
this.tbSecretID.Enabled = false;
|
||||
this.tbSecretID.Location = new System.Drawing.Point(13, 110);
|
||||
this.tbSecretID.Name = "tbSecretID";
|
||||
this.tbSecretID.Size = new System.Drawing.Size(364, 20);
|
||||
this.tbSecretID.TabIndex = 3;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.AutoSize = true;
|
||||
this.groupBox1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.groupBox1.BackColor = System.Drawing.SystemColors.ControlDark;
|
||||
this.groupBox1.Controls.Add(this.listViewKeyValues);
|
||||
this.groupBox1.Controls.Add(this.button2);
|
||||
this.groupBox1.Controls.Add(this.button1);
|
||||
this.groupBox1.Controls.Add(this.label6);
|
||||
this.groupBox1.Controls.Add(this.tbNewValue);
|
||||
this.groupBox1.Controls.Add(this.tbNewKey);
|
||||
this.groupBox1.Controls.Add(this.label5);
|
||||
this.groupBox1.Controls.Add(this.label4);
|
||||
this.groupBox1.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
|
||||
this.groupBox1.Location = new System.Drawing.Point(15, 143);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(361, 223);
|
||||
this.groupBox1.TabIndex = 4;
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
// listViewKeyValues
|
||||
//
|
||||
this.listViewKeyValues.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.listViewKeyValues.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.Key,
|
||||
this.Value,
|
||||
this.Linked});
|
||||
this.listViewKeyValues.FullRowSelect = true;
|
||||
this.listViewKeyValues.GridLines = true;
|
||||
this.listViewKeyValues.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
||||
this.listViewKeyValues.LabelEdit = true;
|
||||
this.listViewKeyValues.Location = new System.Drawing.Point(3, 93);
|
||||
this.listViewKeyValues.Name = "listViewKeyValues";
|
||||
this.listViewKeyValues.Size = new System.Drawing.Size(312, 111);
|
||||
this.listViewKeyValues.Sorting = System.Windows.Forms.SortOrder.Ascending;
|
||||
this.listViewKeyValues.TabIndex = 12;
|
||||
this.listViewKeyValues.UseCompatibleStateImageBehavior = false;
|
||||
this.listViewKeyValues.View = System.Windows.Forms.View.Details;
|
||||
this.listViewKeyValues.MouseClick += new System.Windows.Forms.MouseEventHandler(this.listViewKeyValues_MouseClick);
|
||||
//
|
||||
// Key
|
||||
//
|
||||
this.Key.Text = "Key";
|
||||
//
|
||||
// Value
|
||||
//
|
||||
this.Value.Text = "Value";
|
||||
//
|
||||
// Linked
|
||||
//
|
||||
this.Linked.Text = "Linked";
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.button2.Location = new System.Drawing.Point(321, 92);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(34, 31);
|
||||
this.button2.TabIndex = 11;
|
||||
this.button2.Text = "-";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
this.button2.Click += new System.EventHandler(this.button2_Click);
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.button1.Location = new System.Drawing.Point(321, 31);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(34, 31);
|
||||
this.button1.TabIndex = 10;
|
||||
this.button1.Text = "+";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label6.Location = new System.Drawing.Point(6, 71);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(99, 13);
|
||||
this.label6.TabIndex = 8;
|
||||
this.label6.Text = "Key-Value pairs:";
|
||||
//
|
||||
// tbNewValue
|
||||
//
|
||||
this.tbNewValue.Location = new System.Drawing.Point(163, 33);
|
||||
this.tbNewValue.Name = "tbNewValue";
|
||||
this.tbNewValue.Size = new System.Drawing.Size(152, 20);
|
||||
this.tbNewValue.TabIndex = 7;
|
||||
//
|
||||
// tbNewKey
|
||||
//
|
||||
this.tbNewKey.Location = new System.Drawing.Point(9, 33);
|
||||
this.tbNewKey.Name = "tbNewKey";
|
||||
this.tbNewKey.Size = new System.Drawing.Size(148, 20);
|
||||
this.tbNewKey.TabIndex = 5;
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label5.Location = new System.Drawing.Point(161, 16);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(43, 13);
|
||||
this.label5.TabIndex = 6;
|
||||
this.label5.Text = "Value:";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label4.Location = new System.Drawing.Point(6, 16);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(32, 13);
|
||||
this.label4.TabIndex = 5;
|
||||
this.label4.Text = "Key:";
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
this.checkBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.checkBox1.AutoSize = true;
|
||||
this.checkBox1.Location = new System.Drawing.Point(21, 385);
|
||||
this.checkBox1.Name = "checkBox1";
|
||||
this.checkBox1.Size = new System.Drawing.Size(145, 17);
|
||||
this.checkBox1.TabIndex = 5;
|
||||
this.checkBox1.Text = "Show Values in clear text";
|
||||
this.checkBox1.UseVisualStyleBackColor = true;
|
||||
this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
|
||||
//
|
||||
// button3
|
||||
//
|
||||
this.button3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.button3.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.button3.Location = new System.Drawing.Point(209, 400);
|
||||
this.button3.Name = "button3";
|
||||
this.button3.Size = new System.Drawing.Size(87, 31);
|
||||
this.button3.TabIndex = 12;
|
||||
this.button3.Text = "Cancel";
|
||||
this.button3.UseVisualStyleBackColor = true;
|
||||
this.button3.Click += new System.EventHandler(this.button3_Click);
|
||||
//
|
||||
// button4
|
||||
//
|
||||
this.button4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.button4.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.button4.Location = new System.Drawing.Point(302, 400);
|
||||
this.button4.Name = "button4";
|
||||
this.button4.Size = new System.Drawing.Size(87, 31);
|
||||
this.button4.TabIndex = 13;
|
||||
this.button4.Text = "Ok";
|
||||
this.button4.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label7.Location = new System.Drawing.Point(10, 40);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(442, 13);
|
||||
this.label7.TabIndex = 14;
|
||||
this.label7.Text = "To change a value, click the key you want to change and enter a new value";
|
||||
//
|
||||
// EditSecretForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(409, 441);
|
||||
this.Controls.Add(this.label7);
|
||||
this.Controls.Add(this.button4);
|
||||
this.Controls.Add(this.button3);
|
||||
this.Controls.Add(this.checkBox1);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Controls.Add(this.tbSecretID);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "EditSecretForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "EditSecretForm";
|
||||
this.TopMost = true;
|
||||
this.Load += new System.EventHandler(this.EditSecretForm_Load);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.TextBox tbSecretID;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.TextBox tbNewValue;
|
||||
private System.Windows.Forms.TextBox tbNewKey;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.CheckBox checkBox1;
|
||||
private System.Windows.Forms.Button button3;
|
||||
private System.Windows.Forms.Button button4;
|
||||
private System.Windows.Forms.ListView listViewKeyValues;
|
||||
private System.Windows.Forms.ColumnHeader Key;
|
||||
private System.Windows.Forms.ColumnHeader Linked;
|
||||
private System.Windows.Forms.ColumnHeader Value;
|
||||
private System.Windows.Forms.Label label7;
|
||||
}
|
||||
}
|
159
CASA/micasad/winforms/EditSecretForm.cs
Normal file
159
CASA/micasad/winforms/EditSecretForm.cs
Normal file
@ -0,0 +1,159 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using sscs.cache;
|
||||
|
||||
namespace sscs.winforms
|
||||
{
|
||||
public partial class EditSecretForm : Form
|
||||
{
|
||||
internal SecretStore m_ss = null;
|
||||
internal string m_keychainId = null;
|
||||
internal Secret curSecret = null;
|
||||
|
||||
public EditSecretForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
internal void SetID(SecretStore ss, string sKeyChain, string sSecretID)
|
||||
{
|
||||
m_ss = ss;
|
||||
tbSecretID.Text = sSecretID;
|
||||
if (sKeyChain != null)
|
||||
{
|
||||
m_keychainId = sKeyChain;
|
||||
}
|
||||
ShowKeyValues(sSecretID);
|
||||
}
|
||||
|
||||
private void ShowKeyValues(string sSecretID)
|
||||
{
|
||||
listViewKeyValues.Items.Clear();
|
||||
|
||||
// add current keyvalues
|
||||
KeyChain kc;
|
||||
|
||||
if (m_keychainId == null)
|
||||
{
|
||||
kc = m_ss.GetKeyChainDefault(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
kc = m_ss.GetKeyChain(m_keychainId);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Secret secret = kc.GetSecret(sSecretID);
|
||||
curSecret = secret;
|
||||
ArrayList al = secret.GetKeyList();
|
||||
for (int i = 0; i < al.Count; i++)
|
||||
{
|
||||
string[] stuff = new string[3];
|
||||
string sKey = (string)al[i];
|
||||
|
||||
stuff[0] = sKey;
|
||||
|
||||
KeyValue kv = secret.GetKeyValue(sKey);
|
||||
if (checkBox1.Checked)
|
||||
{
|
||||
stuff[1] = kv.GetValue();
|
||||
}
|
||||
else
|
||||
{
|
||||
stuff[1] = "************";
|
||||
}
|
||||
|
||||
Hashtable ht = secret.GetLinkedKeys(sKey);
|
||||
if (ht != null && ht.Count > 0)
|
||||
{
|
||||
stuff[2] = "Yes";
|
||||
}
|
||||
else
|
||||
{
|
||||
stuff[2] = "No";
|
||||
}
|
||||
|
||||
ListViewItem item = new ListViewItem(stuff);
|
||||
listViewKeyValues.Items.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void EditSecretForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void button3_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Dispose();
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
if (tbNewKey.Text != null && tbNewKey.Text.Length > 0
|
||||
&& tbNewValue.Text != null && tbNewValue.Text.Length > 0)
|
||||
{
|
||||
string[] newKeyValue = new string[3];
|
||||
newKeyValue[0] = tbNewKey.Text;
|
||||
newKeyValue[1] = tbNewValue.Text;
|
||||
newKeyValue[2] = "No";
|
||||
|
||||
ListViewItem item = new ListViewItem(newKeyValue);
|
||||
listViewKeyValues.Items.Add(item);
|
||||
|
||||
tbNewKey.Text = tbNewValue.Text = "";
|
||||
}
|
||||
}
|
||||
|
||||
private void checkBox1_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (checkBox1.Checked)
|
||||
{
|
||||
if (WinCommon.VerifyMasterPassword(m_ss, "Enter your Master Password to view values"))
|
||||
{
|
||||
ShowKeyValues(tbSecretID.Text + '\0');
|
||||
}
|
||||
else
|
||||
{
|
||||
checkBox1.Checked = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowKeyValues(tbSecretID.Text + '\0');
|
||||
}
|
||||
}
|
||||
|
||||
private void listViewKeyValues_MouseClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
ListView.SelectedListViewItemCollection coll = listViewKeyValues.SelectedItems;
|
||||
ListViewItem item = coll[0];
|
||||
|
||||
tbNewKey.Text = item.Text;
|
||||
KeyValue kv = curSecret.GetKeyValue(item.Text);
|
||||
if (checkBox1.Checked)
|
||||
{
|
||||
tbNewValue.Text = kv.GetValue();
|
||||
}
|
||||
}
|
||||
|
||||
private void button2_Click(object sender, EventArgs e)
|
||||
{
|
||||
ListView.SelectedListViewItemCollection coll = listViewKeyValues.SelectedItems;
|
||||
if (coll.Count > 0)
|
||||
{
|
||||
ListViewItem item = coll[0];
|
||||
listViewKeyValues.Items.Remove(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
546
CASA/micasad/winforms/EditSecretForm.resx
Normal file
546
CASA/micasad/winforms/EditSecretForm.resx
Normal file
@ -0,0 +1,546 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAkAMDAQAAEABABoBgAAlgAAACAgEAABAAQA6AIAAP4GAAAQEBAAAQAEACgBAADmCQAAMDAAAAEA
|
||||
CACoDgAADgsAACAgAAABAAgAqAgAALYZAAAQEAAAAQAIAGgFAABeIgAAMDAAAAEAIACoJQAAxicAACAg
|
||||
AAABACAAqBAAAG5NAAAQEAAAAQAgAGgEAAAWXgAAKAAAADAAAABgAAAAAQAEAAAAAAAAAAAAAAAAAAAA
|
||||
AAAQAAAAAAAAAAAAAACAAAAAAIAAAICAAAAAAIAAgACAAACAgACAgIAAwMDAAP8AAAAA/wAA//8AAAAA
|
||||
/wD/AP8AAP//AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAId3eAAAAAAAAAAAAAAAAAAAAAAAAAAA+HeId48AAAAAAAAAAAAAAAAAAAAAAA
|
||||
D4eO6IiHeAAAAAAAAAAAAAAAAHd3d3d3B36IiIiIhwAAAAAAAAAAAAAAAH////+HfoiIiIiIiId///8A
|
||||
AAAAAAAAAH////d+6IiIiIiIiHd3j/8AAAAAAAAAAH//+HjuiIiIiIiIh3B3d48AAAAAAAAAAH/4d+7o
|
||||
iIiIiIiIh3B3fncAAAAAAAAAAHh37uiIiIiIj4iIh3AHeOh4AAAAAAAACHfu7oiIiIiP//+IiHcHd4jn
|
||||
gAAAAAAAh47uiIiIiIj/////iHcHd4iIeAAAAAAAiO7oiIiIiP///////4dwd4iIdwAAAAAIfuiIiIiI
|
||||
j/////////iHeIiIdwAAAAh3iIiIiIiI/////////4iIiIiIdwAAAId4iIiIiIj/////////iIiIjoiI
|
||||
dwAA+HiIiIiIiI//////////iIiHiI7odwAAh4iIeHiIj/////////+IiId3fo53jwAAeIh48HeP////
|
||||
/////4iIiOiIjocPAAAAd3dwAHh4/////////4iIh4joh4hwAAAAAHeAAH/4eP/////4iIeIh4jneP9w
|
||||
AAAAAHd/AH//iI////+IiHd4iOd4//9wAAAAcHcHgH///4eP//iIiIh36Hj///9wAAAAh3gAB3////+H
|
||||
j4iIiIiIeP////9wAAAACAdwAA////hwB4iIiI53j/////9wAAAAAId4cA///4AAAAiIjneP//////9w
|
||||
AAAAAA+Hd3///4AAd3d3d4////////9wAAAAAAAPh3////h3eIj4j/////////9wAAAAAAAAAH////+I
|
||||
j/////////////9wAAAAAAAAAH//////+IiIiIiIiIiIj/9wAAAAAAAAAI/4iIiP////////////j/9w
|
||||
AAAAAAAAAI////////////////////9wAAAAAAAAAI////////////////////9wAAAAAAAAAI//////
|
||||
+IiIiIiIiIiIj/9wAAAAAAAAAI/4iIiP////////////j/9wAAAAAAAAAI////////////////////9w
|
||||
AAAAAAAAAI////////////////////9wAAAAAAAAAIMzMzMzMzMzMzMzMzMzMzNwAAAAAAAAAIiIiIiI
|
||||
iIiId3d3dzMzMzNwAAAAAAAAAIiIiIiIiIiId3d3dzMzMzNwAAAAAAAAAIiIiIiIiIiId3d3dzMzMzNw
|
||||
AAAAAAAAAIiIiIiIh3d3d3d3d3d3d3dwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////9fjf//////////////gf////////4Af///////
|
||||
+AA//////8AAAAAf////wAAAAB//wP/AAAAAH//A/8AAAAAf/8D/wAAAAB//wP/AAAAAD//A/4AAAAAH
|
||||
/8D/AAAAAAP/gP8AAAAAA/8A/gAAAAAD/wD4AAAAAAP+APAAAAAAA/gAwAAAAAAD8ADAAAAAAAPAAMBA
|
||||
AAAAD8AAwcAAAAAfwEDBwAAAAB/BwMDAAAAAH8HAwEAAAAAfwMDAAAAAAB/AQOAAAAAAH8AA8AAAAAAf
|
||||
4AD4AAAAAB/wAP4AAAAAH/gA/8AAAAAf/gD/wAAAAB//wP/AAAAAH//A/8AAAAAf/8D/wAAAAB//wP/A
|
||||
AAAAH//A/8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf
|
||||
/8D/wAAAAB//wP/////////A//////////////////////////////////////////8oAAAAIAAAAEAA
|
||||
AAABAAQAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAIAAAAAAgAAAgIAAAAAAgACAAIAAAICAAICA
|
||||
gADAwMAA/wAAAAD/AAD//wAAAAD/AP8A/wAA//8A////AAAAAAAAAAAPh4ePAAAAAAAAAAAAAAAPh47u
|
||||
h48AAAAAAAABEREREYiOiO5xERERAAAAB///h3iIjoiI6HeP9wAAAAf/+HiIiIiIiIcXeIcAAAAH+HiI
|
||||
iIiPiIiHB3hxAAAA8XiIiIiIj/+Ihxd454AAAIeIiIiIiP//+OgReO54AAh4iIiIiP/////4h3iOhw+H
|
||||
iIiIiI///////46IiIf3eIiIiI///////4iIjo7neIh4iIj///////iIiIiOeIiIgY////////iIiIiO
|
||||
h4B4fweI///////4iIiIh4cAF3AH+Ij///+IiIiOh4/3ABcYB//4iP/4iIiOh4//9wB3EHf///h4iOiI
|
||||
h4j///cAgXEA//+HAXju6Hj////4AA93d///cRF4iHj/////+AAACIf//4d4j4j///////gAAAAI////
|
||||
j//////////4AAAACP////iIiIiIiIiP+AAAAAj4iIj/////////j/gAAAAI///////////////4AAAA
|
||||
CP////iIiIiIiIiP+AAAAAj4iIj/////////j/gAAAAI///////////////4AAAACDMzMzMzMzMzMzMz
|
||||
OAAAAAiIiIiIiId3d3czMzgAAAAIiIiIiIiHd3d3MzM4AAAACIiIiIiId3d3d3d3eAAAAAAAAAAAAAAA
|
||||
AAAAAAAA//4D///4AP/4AAAD+AAAA/gAAAP4AAAD8AAAAfAAAADgAAAAgAAAAAAAAAAAAAAAAAAAAQgA
|
||||
AAMYAAADCAAAAwAAAAMAAAADgAAAA+AAAAP4AAAD+AAAA/gAAAP4AAAD+AAAA/gAAAP4AAAD+AAAA/gA
|
||||
AAP4AAAD+AAAA/////8oAAAAEAAAACAAAAABAAQAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAIAA
|
||||
AAAAgAAAgIAAAAAAgACAAIAAAICAAICAgADAwMAA/wAAAAD/AAD//wAAAAD/AP8A/wAA//8A////AAAA
|
||||
AAiIiAAAAHd3eI7nd3AAiIj4jud3cAB4iIj/iAeICI+I////iOeHj/////ju53h4///4iOh/d4+I/4jo
|
||||
iHB3f/h4iIj/cPh/93iI//9wAI/4/////3AAj///////cACP//////9wAIiIh3dzM3AAiIiHd3MzcACI
|
||||
iIiId3dw/g///8AB/g/AAcABwADAAYAAwAAAAIAAAAAAAAABAAAAAQABAAEAAcABAAHAAcABwAHAAcAB
|
||||
wAHAAcABwAHAASgAAAAwAAAAYAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAgIAqp5WAPLK
|
||||
pgACXlYAVp7WAFbe/gD+vn4AAl5+AP7e1gACPioAgoKCAFb+/gCqfioAVr7WAFZ+fgACPlYAAh4qAMLe
|
||||
wgCq3tYApqKiAPL6/gBWnqoAqr7WAKqefgBWXlYAVl5+AFY+KgCq/v4Aqn5WAFa+/gBWfqoAVj5WAFYe
|
||||
KgD+3qoAqt7+AKq+qgD+/v4Aqp6qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJiYmJiYm
|
||||
JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYm
|
||||
JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJhYZDhkZ
|
||||
CCYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYICg4EHR0EDhMUJiYmJiYmJiYm
|
||||
JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJBMODQUdDR0dHRUZJSYmJiYmJiYmJiYmJiYmJiYmJiYm
|
||||
JiYmJhgYGBgYGBgYGBgaHxUFIiINDQ0NHR0NHgkgGhoaGhoaGiYmJiYmJiYmJiYmJiYmJhgkJCQkJCQk
|
||||
EQ4VBSIiIiIdDQ0NDQ0dHQ0OCggkJCQkGiYmJiYmJiYmJiYmJiYmJhgkJCQkJAgKDgUFIiIiIiIiDQ0N
|
||||
DQ0NDRUOHhkTFCQkGiYmJiYmJiYmJiYmJiYmJhgkJCQUEw4NBQUiIiIiIiIiHQ0NDQ0NBBkQDx4EGSUU
|
||||
GiYmJiYmJiYmJiYmJiYmJhgkFCMOBAUFBSIiIiIiIiIbIg0NDQ0NBBkQDwMVHR4OICYmJiYmJiYmJiYm
|
||||
JiYmJhgWChUFBQUiIiIiIiIiIiIbFCIiDQ0NBB4JEBkHDR0NByMmJiYmJiYmJiYmJiYmERoeBQsFBSIi
|
||||
IiIiIiIiGxsUFBQUIh0NDR4PEBkDFR0dHQ4RJiYmJiYmJiYmJiYIGQ0FBQUiIiIiIiIiIiIbFBQUFBQk
|
||||
JBQiHQQZJg8DFR0NHQ0ZESYmJiYmJiYmJiYTDQsFBSIiIiIiIiIiIhsUFBQUFCQkFBQUFCIEBw8HBB0N
|
||||
DR0eCiYmJiYmJiYmJiUYBQUiIiIiIiIiIiIbFBQUFBQkJCQUFBQUFBQiHQQEDQ0NDR0EGSYmJiYmJiYR
|
||||
GB8KIiIiIiIiIiIiGxsUFBQUFCQkFBQUFBQUGxsbIiIdDQ0NDR0EGSYmJiYmJiMfChMjEiIiIiIiIiIb
|
||||
FBQUFBQkJCQUFBQUFBQbGxsiDQ0iBQ0NDR0EGSYmJiYkIxgTIxYlEyIbIiIiIhsUFBQUFCQkFBQUFBQU
|
||||
FBsbIg0iDQQdIiIFHQ0OCiYmJiYjGCMjFhMKCg4bGyIiGxQUFBQUJCQUFBQUFBQUGyINDQ0EBAQEHSIF
|
||||
FQ4jFCYmJiYKEyMTCgokJh8KGxQUFBQUFCQkJBQUFBQUFCIiDQ0NDR0iDQ0NBQ0OEBQmJiYmJiYYCgoK
|
||||
GCYmJgojCiMUFBQUJCQUFBQUFBQUFCINDSIiBA0NBRsNDgoIGiYmJiYmJiYaEAofEyYmJgokCBMKESQk
|
||||
JBQUFBQUFBsWIiIEDSINBA0dBRUKFiQkGiYmJiYmJiYaJgoaHxQmJgokJCQIEwoUJBQUFBQUIg0NDQQE
|
||||
BA0iIgUVDiMUJCQkGiYmJiYmJiYYEAofEB8RJgokJCQkJBEKExQUFBsiDRYiIiINBAQFDQ4lFCQkJCQk
|
||||
GiYmJiYmJiYRGB8KEBAQChgkJCQkJCQUEQojGxsNDSIiIh0iIg0OExQkJCQkJCQkGiYmJiYmJiYmCBoZ
|
||||
ChAQEBAkJCQkJCQRChoQGRYiDQ0NDQ0FFQoIJCQkJCQkJCQkHyYmJiYmJiYmJhEfGAofEBAkJCQkJBEQ
|
||||
EBAQJhojIiIiBRUOFiQkJCQkJCQkJCQkHyYmJiYmJiYmJiYUChgKChgkJCQkJAgaIBofGAoKChUVDhMk
|
||||
JCQkJCQkJCQkJCQkHyYmJiYmJiYmJiYmJggTChgkJCQkJBQTGAoKCiUIJBEjFCQkJCQkJCQkJCQkJCQk
|
||||
HyYmJiYmJiYmJiYmJiYmJgokJCQkJCQUIxMRJCQkJCQkJCQkJCQkJCQkJCQkJCQkHyYmJiYmJiYmJiYm
|
||||
JiYmJgokJCQkJCQkJCQkFhYWFhYWFhYWFhYWFhYWFhYWJCQkHyYmJiYmJiYmJiYmJiYmJgokJBMWFhMT
|
||||
FiQkFCQkJCQkJCQkJCQkJCQkJCQWJCQkHyYmJiYmJiYmJiYmJiYmJgokJCQkJCQkJCQkFBQUFBQUFBQU
|
||||
FBQUFBQUFBQUJCQkGCYmJiYmJiYmJiYmJiYmJgokJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk
|
||||
GCYmJiYmJiYmJiYmJiYmJgokJCQkJCQkJCQkFhYWFhYWFhYWFhYWFhYWFhYWJCQkGCYmJiYmJiYmJiYm
|
||||
JiYmJhMkJBMWExMWEyQkFCQkJCQkJCQkJCQkJCQkJCQWJCQkGCYmJiYmJiYmJiYmJiYmJhMkJCQkJCQk
|
||||
JCQkFBQUFBQUFBQUFBQUFBQUFBQUJCQkGCYmJiYmJiYmJiYmJiYmJhMkJCQkJCQkJCQkJCQkJCQkJCQk
|
||||
JCQkJCQkJCQkJCQkGCYmJiYmJiYmJiYmJiYmJhMMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM
|
||||
GCYmJiYmJiYmJiYmJiYmJhMhISEhAgICAgICBgYGBgYXFwEBAQEBHBwcHAwMDAwMGCYmJiYmJiYmJiYm
|
||||
JiYmJhMhISEhAgICAgIGBgYGBhcXFwEBAQEcHBwcHAwMDAwMGCYmJiYmJiYmJiYmJiYmJhMhISEhAgIC
|
||||
AgIGBgYGBgYXFwEBAQEBHBwcHAwMDAwMGCYmJiYmJiYmJiYmJiYmJhMTExMTExMTCgoKCgoKCgoKCgoK
|
||||
GBgYGBgYGBgYGBgYGCYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYm
|
||||
JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYm
|
||||
JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYm
|
||||
JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYm
|
||||
JiYmJiYmJiYmJiYmJiYmJiYm////////X43//////////////4H////////+AH////////gAP//////A
|
||||
AAAAH////8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf/8D/wAAAAA//wP+AAAAAB//A/wAAAAAD
|
||||
/4D/AAAAAAP/AP4AAAAAA/8A+AAAAAAD/gDwAAAAAAP4AMAAAAAAA/AAwAAAAAADwADAQAAAAA/AAMHA
|
||||
AAAAH8BAwcAAAAAfwcDAwAAAAB/BwMBAAAAAH8DAwAAAAAAfwEDgAAAAAB/AAPAAAAAAH+AA+AAAAAAf
|
||||
8AD+AAAAAB/4AP/AAAAAH/4A/8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf/8D/wAAAAB//wP/A
|
||||
AAAAH//A/8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf
|
||||
/8D/////////wP//////////////////////////////////////////KAAAACAAAABAAAAAAQAIAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAICAgCqnlYA8sqmAAJeVgBWntYAVt7+AP6+fgACXn4A/t7WAFY+
|
||||
KgCCgoIAqn4qAFa+1gCq/v4AVn5+APL6/gACHioAwt7CAKre1gCmoqIAAj5WAFaeqgCqvtYA/p5+AFZe
|
||||
VgBWXn4A/t7+AKp+VgBWvv4AVn6qAP7+/gBWHioA/t6qAKre/gCqvqoAVj5WAKqeqgAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJSUlJSUlJSUlJSUlJSUPEw4EDhMIJSUlJSUlJSUlJSUl
|
||||
JSUlJSUlJSUlJSUeIg4MBRwcBA4THiUlJSUlJSUlJSUlJSUJCQkJCQkJHyMMISEcDAwcHAQUHwkJCQkJ
|
||||
JSUlJSUlJRgeHh4eEQoVBSEhIRwMDAwMHAQZChEeHhglJSUlJSUlGB4eGhMVBSEhISEhIQwMDAwEGRQd
|
||||
HRMIGCUlJSUlJSUYDyQdDAUhISEhISENIQwMDAQZEAMVDA4jJSUlJSUlHiMODAUFISEhISEhDQ8PDyEM
|
||||
DB0QFBkMBR0kJSUlJSUTFQUFISEhISEhIQ0PDw8eHiEcBBQQBwQcHB0iJSUlCB0NBSEhISEhISEPDw8P
|
||||
Hh4PDw8hFQcODAwcDA4lHiQYFSEhISEhISENDw8PDx4PDw8PDw8NBQwMDAwMHQ8KGCQSISEhISEhDQ8P
|
||||
Dx4eDw8PDw8NDSEMIRwMHBwOCgoRIgoVDSEhIQ8PDw8eHg8PDw8PISEMDAQMIQUcHRMTIhMKESMWDw8P
|
||||
Dw8eHg8PDw8PDSEMDAwMDAwFFRgRJQoKCh4lChMTDx4eHh4PDw8PDw0MDCEMDAUhDA4iCiUlCRgKJSUK
|
||||
HhETIg8eDw8PDyEWDAQMBQwcDB0kDx4KJSUJGRATJQoeHh4RExYPDw0hDCEWDAQcIRUTCB4eHgolJRgK
|
||||
IyUYGB4eHh4eIgoSDQwcISEhIRUKCB4eHh4eCiUlERgKIxAQHh4eHhYYEBAKEhwcHBUKER4eHh4eHh4K
|
||||
JSUlCAoKGRgeHh4eGBAJCRgKFQwKIg8eHh4eHh4eHgolJSUlJREKGB4eHh4WGAoKJAgIFg8eHh4eHh4e
|
||||
Hh4eCiUlJSUlJSUKDx4eHh4PCB4eHh4eHh4eHh4eHh4eHh4KJSUlJSUlJQoeHh4eHh4eERERERERERER
|
||||
EREREREeHgolJSUlJSUlEx4RIhEiER4ICAgICAgICAgICAgIER4eEyUlJSUlJSUTHh4eHh4eHh4eHh4e
|
||||
Hh4eHh4eHh4eHh4TJSUlJSUlJRMeHh4eHh4eEREREREREREREREREREeHhMlJSUlJSUlEx4RFiIRFh4I
|
||||
CAgICAgICAgICAgIER4eEyUlJSUlJSUTHh4eDx4eHh4eHh4eHh4eHh4eHh4PHh4TJSUlJSUlJRMLCwsL
|
||||
CwsLCwsLCwsLCwsLCwsLCwsLCxMlJSUlJSUlEyAgICAgIAICBgYGBhcBAQEBGxsLCwsLEyUlJSUlJSUT
|
||||
ICAgICAgAgIGBgYGFwEBAQEbGwsLCwsTJSUlJSUlJRMTExMTEwoKCgoKCgoKCgoKChgYGBgYGBMlJSUl
|
||||
JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUl//4D///4AP/4AAAD+AAAA/gAAAP4AAAD8AAAAfAA
|
||||
AADgAAAAgAAAAAAAAAAAAAAAAAAAAQgAAAMYAAADCAAAAwAAAAMAAAADgAAAA+AAAAP4AAAD+AAAA/gA
|
||||
AAP4AAAD+AAAA/gAAAP4AAAD+AAAA/gAAAP4AAAD+AAAA/////8oAAAAEAAAACAAAAABAAgAAAAAAAAA
|
||||
AAAAAAAAAAAAAAABAAAAAAAAAh4qAKqeVgBWntYAql4qAFbe/gBWnqoAVn5+AMLewgCmoqIAVj4qAFa+
|
||||
1gCqfioA8vr+AKq+qgCq/v4AVn6qAAI+VgCqvtYA/r5+AFZeVgCq3v4AgoKCAP7e1gCqnqoAVr7+AKp+
|
||||
VgD+/v4A8sqmAFY+VgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0dHR0dHR0NBQoIFh0dHR0dHRUVFRMGFAQYGA8TExMdHR0IFggK
|
||||
DhQUGBgPEAUcHR0dBgoUFBQUDAwUAgAFChcdFwoOFBQODAwaDA4CAhgFCBwRDg4MDBoMDA4UGAQEBRwI
|
||||
FRcMGhoMDBQKCgQCEwwcFQgaEREMDhQKGAoIFhMdFRwJDAwIExEECgUHGhoTHQwIExoaFRMICA0aGhoa
|
||||
Ex0dHQgMFhYWFhYWFhYWGhMdHR0IGhoaGhoaGhoaGhoTHR0dCBoWFgwMDAwMDAwaEx0dHQgbGxISEgEB
|
||||
GQsLAxMdHR0IGxsSEhIBARkLCwMTHR0dCAgICAgICAgVFRUVFR3+D1ybwAH+D8ABwAHAAMABgADAAAAA
|
||||
gAAAAAAAAAEAAAABAAEAAQABwAEAAcABwAHAAcABwAHAAcABwAHAAcABKAAAADAAAABgAAAAAQAgAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4Eyw2ui9xi/krZXzyDB0jogAAACUAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQ0YG347cIDZT6/U/1DD8v9Rwu7/Qp7C/yJR
|
||||
Zc0HEhZsAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIECgtlMFtozWa60P984/7/WMn2/026
|
||||
5/9Qvur/U8f1/1HA7P87jq/5Gj9NvwABAVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AABYV1L/WFdS/1dWUf9XVlH/VlVQ/1VUT/9UU07/U1JN/1JRS/9QUEr/OTk1/yxDSf9Yo7n/e+L1/4ns
|
||||
//+C3/7/VL3n/0q45P9OuuX/Trrl/1C/6/9Tw/H/Trnj/zd8l/8gMDX/Ly4p/zs5M/86ODL/OTcx/zg2
|
||||
Mf84NTD/NzUv/zc1L/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAABYV1L//////////////////////////////////v7+/9PT0/9lcnb/VJir/3Xb
|
||||
8/+C6P//huT//43j//+Q4v3/YMXs/0e34/9PuuX/Trrl/0665f9Ou+b/UL7q/1LD8P9Ltt7/PnqT/3F6
|
||||
ff/i4+T//////////////////////zc1L/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYV1L///////////////////////7+/v/k5OT/fYWI/0uD
|
||||
lP9u0+z/f+n//4Dh//+H4f//juP//5Xm//+g6P//gdX1/0i35P9MueX/Trrl/0665f9OuuX/Trrl/063
|
||||
4v9Bk7b/MnKN/zV9mv89a37/kZaX/+vs7P///////////zc1L/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYV1L/////////////////6+vr/5uf
|
||||
of9MdYL/Y8Pf/33s//9+4///gt///4rh//+R4///meX//6Dn//+r6///qun9/2fH7P9DteL/Tbnk/0+6
|
||||
5f9OuuX/T73o/0ekyv8uYXn/EB8o/x9FVv87jKz/QZ3B/0tpdf+tr7D/7+/v/zc1L/8AAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZWFP///////Ly
|
||||
8v+tsLH/WXR+/1Wqwv946f//fef//37e//+G4P//juP//5Xj//+c5v//o+j//6vq//+z7P//wvL//67n
|
||||
+v9hw+n/QbTi/0i35P9OuuX/T73p/0WexP8yaoT/Cxcc/x1AT/8lUmX/PpW3/1bN+/84hKP/YHN5/ysq
|
||||
Jf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AABaWVX/wcHB/2t9hP9Gkqb/b9///3vs//983///gt7//4ni//+R5P//mOX//5/m//+n6f//ruv//7bt
|
||||
//++7///yPH//9f3///E7vr/gM/u/0y55f9AteP/S7vm/0qq0P85fJr/FzE9/xQrNv8vZH3/J1pu/0y1
|
||||
3/9Xz///Tbji/ylbbv8DBwlQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAACYyPD//SoeX/2bR6/968P//euT//33d//+F4P//jeL//5Tk//+b5v//o+j//6rp
|
||||
//+y6///uu7//8Lw///K8f//0vP//9r2///t/f//8fz//8Lo9v93y+v/Rrfk/0Kz4P8+jK7/JEtd/wkT
|
||||
GP8wZoD/JVJl/0Gavf9RwO3/UsPw/1PH9v8pYHfmAAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAIyJJVstcw9X/de3//3no//973v//gd///4fh//+P4///luX//57n
|
||||
//+m6f//rev//7Xs//++7///xfH//83z///V9f//3/f//+b5///w+v/////////////t+f3/q+D0/2XG
|
||||
6/8/p9P/LGeC/wgOEf8hRVf/JVJl/z2Ttf9Rwe7/Trrk/1HC7/9NuOP/FTI/twABADIAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRYcaFazy/9++f//eN///33d//+E4f//jOL//5Lj
|
||||
//+a5v//oej//6np//+x6///uO3//8Hu///J8f//0vP//9r1///h9///6vr///X8///8/v//+/7///X9
|
||||
///0/f//7/z//8/x/P+S2/f/TKXJ/yFZc/8cPk7/Jlhs/0es0/9QwOz/Trrl/0675v9TxvT/NX2b8Awa
|
||||
II8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKDtC2HDQ7P9+6P//gN7//4jh
|
||||
//+P5P//l+b//53n//+l6P//rOv//7Ts//+87v//xPD//8zx///V9f//3vb//+b4///v+///+P7///z/
|
||||
///4/f//8fz//+n5///i9///3Pb//9v3///S9f//suv9/3nL6/9EnsH/QKXN/0686P9Ou+b/Trrl/066
|
||||
5f9SwvD/RKLH/yFPYdQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBISEq1JRUP1goyQ/4fZ
|
||||
8f+B5f//iuH//5Lk//+Z5v//oej//6jp//+w6///t+7//7/w///H8v//0PT//9j1///h9///6/r///P8
|
||||
///7/v//+/7///T9///u+///5vn//9/2///Y9f//0PP//8vy///G8v//wfH//6nn/v+G2vn/Zsrw/0y5
|
||||
5P9MuOT/Trrl/0665P9Swu//R6rR/yhgducAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQFOLi0t5HNx
|
||||
cf+opKL/wr+//6HX6P+L6P//lOT//5zn//+l6P//rOr//7Pr//+77f//w/D//8zy///U9P//3Pb//+T3
|
||||
///u+///+P3///z+///5/v//8fv//+v6///k+f//3Pf//9T1///O8v//x/L//8Hw/v+88P//s+v7/2y/
|
||||
4P9avub/k+P+/37Y9/9XwOn/TLjk/0655P9TxvT/R6fO/yRWat8AAAAAAAAAAAAAAAAAAAAAAAAAAwAA
|
||||
AEZCQUHrmZeW/7y7uv/Ixsf/sayq/4OWnviN2O3/pvP//6bo//+v6///uO3//77u///G8P//z/P//9j1
|
||||
///g9///6Pn///L7///6/v//+/////b9///u+///5/n//+D4///Z9v//0fP//87z///I8///wPL//5vY
|
||||
7v92yOf/gNPx/2C52v9Fps7/Z8nv/4/m//+D3/z/Z9H2/1jL9v9QvOj/KmR84gsZIIoAAAAAAAAAAAAA
|
||||
AAAAAAAABQUFRDw7O8yzsrL/wL+//8C/wP+WlZb8Pj08qwAAAHBScHj/t/v9/774//+67v//wu///8rx
|
||||
///T8///2/b//+T5///t+///9/3///7+///6/v//8vv//+r6///j+f//3Pb//9X1///P9P//z/X//7/w
|
||||
/v+W2vL/fcrl/2zA4f9fs9X/Va7R/1Ks0f9WrM3/RKbO/2nL8f+E7v//euX8/1Kkvf8eRFHBAAMESwAA
|
||||
AAoAAAAAAAAAAAAAAAAAAAAAMzMzsJiYmPewsLD/paSm/3x7fPcSEhJ/AAAAAwAAAABIR0b/b4uT/8Lx
|
||||
8//Z////0/n//9X0///e9v//6Pn///L8///6/v///f////f+///u+///5/n//+H3///Z9v//0/T//83z
|
||||
///C7/3/sOj6/3/J5f9csdP/abnZ/0213/97z+3/m+b7/3fL6f9et9r/Wbjd/2nR9P9fu9D/WH+L/ygp
|
||||
Jv8AAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS0pK5HFwcv9zcnT/iIiK/g4ODp8AAAAAAAAAAAAA
|
||||
AABvbmr/t7e3/3R/gv+hu73/5f////T////t+///9v3///3////7/v//8/z//+v7///l+P//3fb//9f1
|
||||
///S9P//0Pf//9D5//+z5fT/W7rg/1264P+e3vH/g9Ty/0qv2P9tw+P/bMjn/3ra+P+L9v//bcvp/1KF
|
||||
lP+EjZD/2tra/0E/Of8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHx4g6CEgI/93dnj/TU1P/QAA
|
||||
AGcAAAAAAAAAAAAAAABxcG3//////+fn5/+anJ3/foSH/8vT0/////////////f+///v+///6Pn//+L3
|
||||
///a9v//1PT//9b4///G8f//j8/n/4bU7v+G1PD/T6nO/1K23f+R5f//eMvo/1Kr0P9duNv/Ysfu/27T
|
||||
8v9NkJ7/dIKH/8bGxv///////////0JAO/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkK1xEQ
|
||||
E/96eXv/Ozo+/wUFB78AAAANAAAAAAAAAAB0c3D/////////////////3t7e/5CRkf+PkI//5+3v////
|
||||
///p+///3fX//9f0///S9P//zPT//5nc9P9wvdz/fb/a/2a31v9LqM7/Vq7R/02ozf9St+D/gNf1/4Tk
|
||||
+P933fz/VqC5/2R6gP+4urv/9vb2/////////////////0RBPf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAgIClwsKDe53d3r/T05R/xUUF/4ICAi2AQICKAAAAAB3dnL///////////////////////v7
|
||||
+//T09P/foCA/5Wgo//f+fv/4P///87z///J8f//htbz/1Wz2v+MzOP/p+f5/6Lm+P+N1/H/csTh/1So
|
||||
zP9Vr9T/feD//2m+0/9Vdn7/qayt/+3t7f///////////////////////////0VDPv8AAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAKwEAAatDQ0b/jIuN/yMiJv8aGR3/EBAS4wQEBIpgYFz//v7+////
|
||||
////////////////////////9vb2/8rLy/9scXL/mre+/8n5/f/C9f//X7XZ/1S54v+g5/z/p+3//5Di
|
||||
/f9wyu3/gNj1/4np+v9yyuL/UXuJ/4+Tlf/r6+v//////////////////////////////////////0ZE
|
||||
P/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMEAwXPbWtu/4OChP8oJiv/Gxof/xoZ
|
||||
HP4XFhn////////////////////////////+/v7/1dXV/3Rzc/8xMTH/FBUX/1lsc/+eztn/ldjs/1y0
|
||||
1v9VtNn/Xrjb/1a02P9gvt//dtLq/1qUov90fH//3t7e//7+/v//////////////////////////////
|
||||
/////////////0dGQP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnBAMFtmFh
|
||||
Y/iNjI3/S0pO/ygnK/8fHiH////////////////////////////U1NX/GBcb/xoZHf8cGx//GBcb/xMO
|
||||
Ev81OD7/k7W//5zd6/+E1/X/gNr4/3vW8P9oq7z/YnV6/8PDw///////////////////////////////
|
||||
/////////////////////////////0lHQv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAACAAAAHM1NTXQfHt8+Ht6fP9gX2L////////////////////////////e3t7/MTA0/y8t
|
||||
Mv81NDj/R0ZJ/19fYf9zcXL/e3Z1/3N9gP9qlaH/b6e1/2J+hv+lpaX/////////////////////////
|
||||
/////////////////////////////////////////////0tJQ/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAaTExMaplZWT/////////////////////////
|
||||
///19fb/lJSW/2VlZ/91dHX/hISE/4mJif+pqan/29vb///////U1NT/v7+///Ly8v//////////////
|
||||
/////////////////////////////////////////////////////////////0xKRf8AAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABycW7/////////
|
||||
////////////////////////8fHx/7i4t/+hoqH/0tLS//r6+v//////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////0xM
|
||||
Rv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AACJiIX//////////////////////////////////////////////////////8fHxv/Hx8b/x8fG/8fH
|
||||
xv/Hx8b/x8fG/8fHxv/Hx8b/x8fG/8fHxv/Hx8b/x8fG/8fHxv/Hx8b/x8fG/8fHxv/Hx8b/x8fG////
|
||||
/////////////05NSP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAACLiof///////////+Uk5H/x8fG/8fHxv+Uk5H/lJOR/8fHxv///////////+vr
|
||||
6v//////////////////////////////////////////////////////////////////////////////
|
||||
////////x8fG/////////////////1BOSf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNjIn/////////////////////////////////////////
|
||||
/////////////+vr6v/r6+r/6+vq/+vr6v/r6+r/6+vq/+vr6v/r6+r/6+vq/+vr6v/r6+r/6+vq/+vr
|
||||
6v/r6+r/6+vq/+vr6v/r6+r/6+vq/////////////////1BQSv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPjoz/////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////1JRTP8AAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSkY7/////////
|
||||
/////////////////////////////////////////////8fHxv/Hx8b/x8fG/8fHxv/Hx8b/x8fG/8fH
|
||||
xv/Hx8b/x8fG/8fHxv/Hx8b/x8fG/8fHxv/Hx8b/x8fG/8fHxv/Hx8b/x8fG/////////////////1NS
|
||||
TP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AACUk5H///////////+Uk5H/x8fG/5STkf+Uk5H/x8fG/5STkf///////////+vr6v//////////////
|
||||
////////////////////////////////////////////////////////////////////////x8fG////
|
||||
/////////////1RTTv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAACWlZP//////////////////////////////////////////////////////+vr
|
||||
6v/r6+r/6+vq/+vr6v/r6+r/6+vq/+vr6v/r6+r/6+vq/+vr6v/r6+r/6+vq/+vr6v/r6+r/6+vq/+vr
|
||||
6v/r6+r/6+vq/////////////////1VUT/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXlpT/////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////1ZVUP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZmJb/qnc1/6p3Nf+qdzX/qnc1/6p3
|
||||
Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3
|
||||
Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/1dWUf8AAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACamZf/9dmn//XZ
|
||||
p//12af/89el//HUov/v0p7/7c+b/+vLl//oyJP/5cSP/+LAiv/eu4X/27iA/9i0fP/Vr3b/0apx/86m
|
||||
bP/Komb/x5xh/8SZXP/AlFf/vZBS/7qLTf+3iEn/tYRF/7KBQP+vfz3/rXw6/6t5OP+qdzX/qnc1/1dX
|
||||
Uf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AACcm5n/9dmn//XZp//12af/89ek//HUov/v0p7/7s+b/+vMmP/oyJP/5cSO/+HAiv/fvIX/27eA/9iz
|
||||
e//Ur3b/0apw/86ma//KoWb/x51h/8OZXP/AlFf/vY9S/7qMTf+3iEn/tIRF/7KBQf+wfj3/rXs7/6x5
|
||||
N/+qdzX/qnc1/1hXUv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAACdnJr/9dmn//XZp//12af/9Nel//LVov/w0Z7/7c+c/+vMl//oyJP/5cSO/+HA
|
||||
iv/fvIX/3LeA/9ize//Vr3b/0apx/86mbP/KoWb/xp1h/8SYW//AlFb/vZBS/7qMTv+3iEj/tIRF/7KB
|
||||
QP+wfj3/rnw6/6t5N/+qdzX/qnc1/1hXUv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACdnJr/nZya/5ybmP+amZf/mJiW/5eWlP+Uk5H/kpGP/5CO
|
||||
jP+NjYn/iomH/4iHhP+FhID/goF9/39+e/98e3j/eXh1/3Z1cv9zc2//cW9s/21saP9qaWb/aGdj/2Vk
|
||||
YP9jYl7/YWBc/15dWP9cXFf/W1pV/1lYVP9YV1L/WFdS/1hXUv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
|
||||
/////wAA//////////////+B/////////gB////////4AD//////wAAAAB/////AAAAAH//A/8AAAAAf
|
||||
/8D/wAAAAB//wP/AAAAAH//A/8AAAAAP/8D/gAAAAAf/wP8AAAAAA/+A/wAAAAAD/wD+AAAAAAP/APgA
|
||||
AAAAA/4A8AAAAAAD+ADAAAAAAAPwAMAAAAAAA8AAwEAAAAAPwADBwAAAAB/AQMHAAAAAH8HAwMAAAAAf
|
||||
wcDAQAAAAB/AwMAAAAAAH8BA4AAAAAAfwADwAAAAAB/gAPgAAAAAH/AA/gAAAAAf+AD/wAAAAB/+AP/A
|
||||
AAAAH//A/8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf
|
||||
/8D/wAAAAB//wP/AAAAAH//A/8AAAAAf/8D/wAAAAB//wP/AAAAAH//A/////////8D/////////////
|
||||
/////////////////////////////ygAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAASEyUqbzJwiOhCoMb/L3GK7A8iK3oAAQIXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAACBg8RUjdnc8RrxNv+XdD8/1HE8/9Uyvj/SK3V/yZdcsoGERReCRQYAwAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NTD/ODUw/zg1MP84NTD/ODUw/zg1
|
||||
MP84NTD/Li4r/ytCSP9fssX/huz//4zq//9Ywev/Sbfj/0+75/9SxPH/U8Ty/0Oewv8nRlH/Kywq/zg1
|
||||
MP84NTD/ODUw/zg1MP84NTD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF5dWP/9/f3/////////
|
||||
////////2NjY/3yNkv9cobL/e+P8/4fq//+N5P//meb//2/M8P9GtuP/T7rl/0665f9Ou+b/U8Px/0mr
|
||||
0/82b4f/cIaO/9HS0v//////+vr6/15dWP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYWBc//39
|
||||
/f//////6urr/5Ganf9alqX/dN3x/4Xu//+I5P//j+L//5nm//+p6///oOT7/1O95/9DteP/Trrl/1C9
|
||||
6P9Lr9j/LF51/xs6Sf81fZr/Romj/4iTmP/g4OD/YWBc/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AABjYl7/8vLy/6Ooqv9dipj/aM7j/3/t//+D5f//i+L//5Tj//+f5///qer//7Ps///H8///peL3/1W9
|
||||
5v8+s+L/Srzp/0yt1f8sXXT/DyAo/yVRZP9Bmrz/T7zn/059kP9ERkT/AAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAk1PTf9nho//W7nL/3nt//9/5v//hd7//4/j//+Z5v//ouj//63q//+47v//wvD//87y
|
||||
///h+v//0fD6/4nR7v9Mu+b/QrPg/zh+nP8TJi//I0te/yxlfP9PvOf/V9D//z6Nrf8JExleAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAANHiRtTJ2q/3Tq/P9+7f//geH//4jg//+S5P//nef//6fq//+x7P//ve7//8fy
|
||||
///R9P//3fb//+r5/////////f7//8fq9/90zvD/QKLN/xQ3Rv8VKjX/KFtv/0is0/9Swu//Vs///zBy
|
||||
jeEBAgJBAAAAAAAAAAAAAAAAAAAAJDdyhNWA+v//fuT//4Tg//+O4///l+X//6Ho//+s6v//tu3//8Hv
|
||||
///M8v//2PX//+L3///v+///+v3///r+///1/f//8/3//9/4//+j4/r/U6C//yRZcP8vdpL/Trvn/0+8
|
||||
5/9Rwu//SrHa/xo8SbMAAAAAAAAAAgcGBVUyLi3Lc6u8/4Lr//+H4f//kuT//5zn//+m6P//sOz//7ru
|
||||
///F8f//0PP//9z2///p+f//9fz///v+///3/f//7fv//+P3///Y9P//1PX//9L3//+28P//etHy/1S+
|
||||
5/9KuOX/Tbnk/1C96f9PvOj/LnCJ5AAAAAkVFBSTY2Fg+rKppv+30tv/kOr//5Tm//+g5///q+r//7Tr
|
||||
//+/7///yvL//9X1///g9///7vv///r+///7/v//8/v//+n6///e+P//1fX//8/1///E8f7/u/D+/5vc
|
||||
8/9mwun/h9/9/2vM8P9OueX/UcPw/1LB7v8rZX3jHh4ejJCOjf/JyMj/vrq6/2tsbdt1q7j/s/7//6/s
|
||||
//+57P//xO///8/z///b9v//5vn///P7///8/v//9/7//+77///k+P//2fb//9P1///M9P//tuz6/5XX
|
||||
7f9twOD/Yrvd/0mnzP9gwOX/ieb//3rn//9ayPD/Lm+J3AkXHWqMjIzsv76+/56dn/84ODiYAAAAKUdM
|
||||
TP+ayc3/0////9H6///T8///4Pf//+37///5/v///P////T8///p+f//3/f//9f1///O8///w/H+/5XW
|
||||
7v9rvNv/XLjd/3DF5f92yeX/XbTX/1W34P9v2vj/Yq28/0JTV/8BAwMtAAAAAHZ1d/eHhoj/Ly8vrQAA
|
||||
AAMAAAAAeHd0/5yfoP+Lnp//1+/v//r////3////+/////n9///v/P//5Pj//933///Z9///zPT+/8X0
|
||||
/f96yef/Yr3h/5DY8P9VtNv/aMDi/3zb+v+E7P7/Y7bQ/2mIkf+6vLz/eXh1/wAAAAAAAAAANDM192Vl
|
||||
aP8JCAmTAAAAAAAAAAB8e3j//v39/9jY2P+Vl5n/r7Ky//j5+f//////6vn//+D2///Z9v//0vb//6/k
|
||||
9v+Ex+L/ccXj/1Su0v9TtNr/f9b0/27G5P9pzvL/X7na/2KOl/+mqqv/9fX1//v7+v98e3j/AAAAAAAA
|
||||
AAAsKy3yamls/xUUF+8BAgJhAAAAAH9+e//+/v3////////////Kysr/kpSU/7vCxP/q////2/z//8vz
|
||||
//+I1PD/ccDe/5bX7P+Czuj/ar3d/0+ozf9myO7/geD3/2GYpv+UnJ7/6Ojo////////////+/v6/39+
|
||||
e/8AAAAAAAAAAA0MDrNvbnH/SklN/w4NEfwICQqsXVxZ//r6+v/9/f3////////////7+/v/sbKy/3J9
|
||||
f/+12t//vvb//1a13f93y+r/oOf5/4LW9P+A3Pv/gd30/16dr/+AjZL/39/f////////////////////
|
||||
///7+/v/goF9/wAAAAAAAAAAAAAAJyIhIsh6eHv/UU9S/x8eI/8bGhz//v7+/////////////////8XF
|
||||
xv9UU1X/FhMW/yMmK/9xj5j/k9bp/2/K7P9qyOz/aMnq/2Cqv/9zi5H/yMnK////////////////////
|
||||
//////////////v7+/+FhID/AAAAAAAAAAAAAAAAAAAAGxgYGZJjY2Psa2pt/1RTVf/8/Pz/////////
|
||||
////////YmFk/yYlKv8yMTX/Pzw//1lUV/9/ioz/dqOw/3K5zf9ri5P/t7y9//n5+f//////////////
|
||||
////////////////////////+/v7/4iHhP8AAAAAAAAAAAAAAAAAAAAAAAAAAAMDAzIpKSmEZWVl//7+
|
||||
/v/////////////////Dw8P/YWBj/3V0df+MjIz/rKur/+bm5v/f4OD/wMHB//Dw8P//////////////
|
||||
///////////////////////////////////7+/v/iomH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AACJiYX/9fX1///////////////////////u7u7/2tra////////////////////////////////////
|
||||
//////////////////////////////////////////////v7+/+NjYn/AAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAJCOjP/8/Pz//f39//7+/v/+/v7//v7+//39/f/7+/v/0NDP/9DQz//Q0M//0NDP/9DQ
|
||||
z//Q0M//0NDP/9DQz//Q0M//0NDP/9DQz//Q0M//0NDP/9DQz///////+/v7/5COjP8AAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAkpGP///////U1NP/sbCv/8/Pzv+xsK//19bW///////o6Oj/5OTj/+jo
|
||||
6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/l5eX/0NDP///////7+/v/kpGP/wAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUk5H//v7+////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////v7
|
||||
+/+Uk5H/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJeWlP/+/v7/////////////////////////
|
||||
////////0dHQ/9HR0P/R0dD/0dHQ/9HR0P/R0dD/0dHQ/9HR0P/R0dD/0dHQ/9HR0P/R0dD/0dHQ/9HR
|
||||
0P//////+/v7/5eWlP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJiW///////U1NP/yMjI/7Oy
|
||||
sf/JyMj/xMTC///////p6ej/5eXk/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
|
||||
6f/m5ub/0dHQ///////7+/v/mJiW/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACamZf///////7/
|
||||
///8////+Pz///z////7//////////3////5/f//+v7///r+///6/v//+v7///r+///6/v//+v7///r+
|
||||
///6/v//+v7///n9///4/P////////////+amZf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyb
|
||||
mP+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3
|
||||
Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/6p3Nf+qdzX/qnc1/5ybmP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAnZya///irv//46///+Gs//zeqP/52qP/9tae//LQl//ty5D/6cSK/+S+gv/ft3z/2rFz/9aq
|
||||
bP/QpGT/zJ5d/8eXVf/DkU7/v4xI/7qHQv+3gjz/tH44/7J7NP+ueTT/nZya/wAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAACdnJr//+Ku///jr///4az//N6o//nao//21p7/8tCX/+3LkP/pxIr/5L6C/9+3
|
||||
fP/asXP/1qps/9CkZP/Mnl3/x5dV/8ORTv+/jEj/uodC/7eCPP+0fjj/sns0/655NP+dnJr/AAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJybmP+amZf/mJiW/5eWlP+Uk5H/kpGP/5COjP+NjYn/iomH/4iH
|
||||
hP+FhID/goF9/39+e/98e3j/eXh1/3Z1cv9zc2//cW9s/21saP9qaWb/aGdj/2VkYP9jYl7/YWBc/5yb
|
||||
mP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAA//4D///4AP/4AAAD+AAAA/gAAAP4AAAD8AAAAfAAAADgAAAAgAAAAAAA
|
||||
AAAAAAAAAAAAAQgAAAMYAAADCAAAAwAAAAMAAAADgAAAA+AAAAP4AAAD+AAAA/gAAAP4AAAD+AAAA/gA
|
||||
AAP4AAAD+AAAA/gAAAP4AAAD+AAAA/////8oAAAAEAAAACAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMmKU9DjabLRqvS8CJQY5UGEBMhAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAf357/3x7eP95eHX/YGNi/094gP+A2uv/fuD//0i86/9TxvT/P4ik/0FQ
|
||||
Vf9bW1j/Xl1Y/wAAAAAAAAAAAAAAAJ2cmv/d3t//haKp/3DI2f+P8P//oOz//7Dr/f9qxur/Qrvs/zmH
|
||||
qP8jTWD/WZOp/0dOTv8AAAAAAAAAAAAAAABnc3T/a7zJ/4Pt//+U6///pOn//7ru///U9f//6Pn9/6ni
|
||||
+P9MocT/ES49/z6Ss/9Pvun/ESgxYgAAAAAUEhNacsTT/472//+Z5f//rev//8Lw///c9v//8/v///v+
|
||||
///1/v//yvT//2iqw/9EpMn/U8r7/zyOruM8OzqGS0pN/4y2wP+q9///ufD//8zy///m+f//+f7///P8
|
||||
///i+v//xvD9/6Tg8/91yev/c9r+/2HQ9v8tbIa9S0pN/0xLS4+AgH7/l6+v/+D6+//9////+f///+37
|
||||
///Y9v7/rOP1/3rJ5/9mw+j/cNLx/2WtxP9FUlP/AggKDktKTfoLCwx+nZya//////+/wMD/yMjI/+3/
|
||||
//++8f//k9Xs/2/E5P9oyu7/bLvV/4egqP/e39//YWBc/wAAAAArKiyhSkpN/z8+P//s7Oz/9vb2/6Ki
|
||||
ov9cZWf/h8TY/37Z+v91yeT/fKCq/87R0v///////////2FgXP8AAAAAAAAABysrK29fX1//////////
|
||||
//+Af4H/WldY/5OVl/+UqK3/tr2///////////////////////9hYFz/AAAAAAAAAAAAAAAAm5qY//Pz
|
||||
8//k5OT/4ODg/+Tk5P/m5ub/6Ojo/+jo6P/o6Oj/6Ojo/+bm5f//////YWBc/wAAAAAAAAAAAAAAAJ2c
|
||||
mv///////////////////////////////////////////////////////////2FgXP8AAAAAAAAAAAAA
|
||||
AACdnJr//////+bm5v/m5ub/8vT2/+Xp7v/o7PD/6Ozw/+js8P/o7PH/5enu//////9hYFz/AAAAAAAA
|
||||
AAAAAAAAnZya/+nMmP/vzZX/6MWM/+C7f//XsHP/z6Rm/8aYWP+9jUr/tYI9/655M/+pbiL/YWBc/wAA
|
||||
AAAAAAAAAAAAAJ2cmv/pzJj/782V/+jFjP/gu3//17Bz/8+kZv/GmFj/vY1K/7WCPf+ueTP/qW4i/2Fg
|
||||
XP8AAAAAAAAAAAAAAACdnJr/nZya/5ybmP+amZf/mJiW/5eWlP+Uk5H/kpGP/5COjP+NjYn/iomH/4iH
|
||||
hP+FhID/AAAAAP4PSbvAAQAAwAF8wMAAwAGAAMAAAACAAAAAAAAAAQAAAAEAAQABAAHAAQABwAHAAcAB
|
||||
wAHAAcABwAHAAcABAAQ=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
194
CASA/micasad/winforms/MasterPasswordForm.Designer.cs
generated
Normal file
194
CASA/micasad/winforms/MasterPasswordForm.Designer.cs
generated
Normal file
@ -0,0 +1,194 @@
|
||||
namespace sscs.winforms
|
||||
{
|
||||
partial class MasterPasswordForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.numericUpDownRemberFor = new System.Windows.Forms.NumericUpDown();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.textBoxMP2 = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.textBoxMP1 = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.labelError = new System.Windows.Forms.Label();
|
||||
this.textBoxDescription = new System.Windows.Forms.TextBox();
|
||||
this.groupBox1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numericUpDownRemberFor)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.groupBox1.Controls.Add(this.numericUpDownRemberFor);
|
||||
this.groupBox1.Controls.Add(this.label4);
|
||||
this.groupBox1.Controls.Add(this.textBoxMP2);
|
||||
this.groupBox1.Controls.Add(this.label2);
|
||||
this.groupBox1.Controls.Add(this.textBoxMP1);
|
||||
this.groupBox1.Controls.Add(this.label1);
|
||||
this.groupBox1.Location = new System.Drawing.Point(12, 66);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(282, 60);
|
||||
this.groupBox1.TabIndex = 0;
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
// numericUpDownRemberFor
|
||||
//
|
||||
this.numericUpDownRemberFor.Location = new System.Drawing.Point(115, 93);
|
||||
this.numericUpDownRemberFor.Name = "numericUpDownRemberFor";
|
||||
this.numericUpDownRemberFor.Size = new System.Drawing.Size(51, 20);
|
||||
this.numericUpDownRemberFor.TabIndex = 5;
|
||||
this.numericUpDownRemberFor.Visible = false;
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(33, 95);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(76, 13);
|
||||
this.label4.TabIndex = 4;
|
||||
this.label4.Text = "Remember for:";
|
||||
this.label4.Visible = false;
|
||||
//
|
||||
// textBoxMP2
|
||||
//
|
||||
this.textBoxMP2.Location = new System.Drawing.Point(115, 58);
|
||||
this.textBoxMP2.Name = "textBoxMP2";
|
||||
this.textBoxMP2.Size = new System.Drawing.Size(161, 20);
|
||||
this.textBoxMP2.TabIndex = 3;
|
||||
this.textBoxMP2.Visible = false;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(6, 62);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(103, 13);
|
||||
this.label2.TabIndex = 2;
|
||||
this.label2.Text = "Re-enter Password:";
|
||||
this.label2.Visible = false;
|
||||
//
|
||||
// textBoxMP1
|
||||
//
|
||||
this.textBoxMP1.Location = new System.Drawing.Point(115, 24);
|
||||
this.textBoxMP1.Name = "textBoxMP1";
|
||||
this.textBoxMP1.PasswordChar = '*';
|
||||
this.textBoxMP1.Size = new System.Drawing.Size(161, 20);
|
||||
this.textBoxMP1.TabIndex = 1;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(18, 27);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(91, 13);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Master Password:";
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.button1.Location = new System.Drawing.Point(127, 138);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
||||
this.button1.TabIndex = 4;
|
||||
this.button1.Text = "Ok";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.button2.Location = new System.Drawing.Point(213, 138);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(75, 23);
|
||||
this.button2.TabIndex = 5;
|
||||
this.button2.Text = "Cancel";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
this.button2.Click += new System.EventHandler(this.button2_Click);
|
||||
//
|
||||
// labelError
|
||||
//
|
||||
this.labelError.AutoSize = true;
|
||||
this.labelError.ForeColor = System.Drawing.Color.Red;
|
||||
this.labelError.Location = new System.Drawing.Point(64, 50);
|
||||
this.labelError.Name = "labelError";
|
||||
this.labelError.Size = new System.Drawing.Size(0, 13);
|
||||
this.labelError.TabIndex = 7;
|
||||
//
|
||||
// textBoxDescription
|
||||
//
|
||||
this.textBoxDescription.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.textBoxDescription.Location = new System.Drawing.Point(21, 12);
|
||||
this.textBoxDescription.Multiline = true;
|
||||
this.textBoxDescription.Name = "textBoxDescription";
|
||||
this.textBoxDescription.ReadOnly = true;
|
||||
this.textBoxDescription.Size = new System.Drawing.Size(267, 33);
|
||||
this.textBoxDescription.TabIndex = 9;
|
||||
this.textBoxDescription.Text = "Description";
|
||||
//
|
||||
// MasterPasswordForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(306, 178);
|
||||
this.Controls.Add(this.textBoxDescription);
|
||||
this.Controls.Add(this.labelError);
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "MasterPasswordForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Master Password";
|
||||
this.TopMost = true;
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numericUpDownRemberFor)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.TextBox textBoxMP2;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox textBoxMP1;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.NumericUpDown numericUpDownRemberFor;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Label labelError;
|
||||
private System.Windows.Forms.TextBox textBoxDescription;
|
||||
}
|
||||
}
|
58
CASA/micasad/winforms/MasterPasswordForm.cs
Normal file
58
CASA/micasad/winforms/MasterPasswordForm.cs
Normal file
@ -0,0 +1,58 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using sscs.cache;
|
||||
|
||||
namespace sscs.winforms
|
||||
{
|
||||
|
||||
public delegate void MasterPasswordEventHandler(string sMasterPassword, bool bIsValid);
|
||||
|
||||
public partial class MasterPasswordForm : Form
|
||||
{
|
||||
public event MasterPasswordEventHandler MasterPasswordVerified;
|
||||
|
||||
public MasterPasswordForm(string sDescription)
|
||||
{
|
||||
InitializeComponent();
|
||||
if (sDescription != null)
|
||||
{
|
||||
textBoxDescription.Text = sDescription;
|
||||
}
|
||||
else
|
||||
{
|
||||
textBoxDescription.Text = "";
|
||||
}
|
||||
}
|
||||
|
||||
internal void SetErrorMessage(string sMessage)
|
||||
{
|
||||
labelError.Text = sMessage;
|
||||
}
|
||||
|
||||
private void button2_Click(object sender, EventArgs e)
|
||||
{
|
||||
// user cancel
|
||||
MasterPasswordVerified(null, false);
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
SetErrorMessage("");
|
||||
|
||||
if (textBoxMP1.Text != null && textBoxMP1.Text.Length > 0)
|
||||
{
|
||||
// signal event handlers
|
||||
MasterPasswordVerified(textBoxMP1.Text, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetErrorMessage("Please enter your Master Password");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
120
CASA/micasad/winforms/MasterPasswordForm.resx
Normal file
120
CASA/micasad/winforms/MasterPasswordForm.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
689
CASA/micasad/winforms/MiCasaForm.Designer.cs
generated
Normal file
689
CASA/micasad/winforms/MiCasaForm.Designer.cs
generated
Normal file
@ -0,0 +1,689 @@
|
||||
namespace sscs.winforms
|
||||
{
|
||||
partial class MiCasaForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (true)
|
||||
{
|
||||
return;
|
||||
}else{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MiCasaForm));
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
|
||||
this.contextMenuStripNotify = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.cmOpen = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.cmLock = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.cmUnlock = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.cmExit = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.listBox1 = new System.Windows.Forms.ListBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.button3 = new System.Windows.Forms.Button();
|
||||
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
|
||||
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.newSecretToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.newKeyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.refreshStoresToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.lockSecretsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.unlockSecretsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.destroySecretsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.exportSecretsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.importSecretsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.quitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.linkToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.changeMasterPasswordToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.preferencesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.policyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.contentsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.aboutCasaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
this.pictureBox2 = new System.Windows.Forms.PictureBox();
|
||||
this.listViewNative = new System.Windows.Forms.ListView();
|
||||
this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
|
||||
this.columnHeader2 = new System.Windows.Forms.ColumnHeader();
|
||||
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
|
||||
this.labelNativeInfo = new System.Windows.Forms.Label();
|
||||
this.comboBoxProfile = new System.Windows.Forms.ComboBox();
|
||||
this.comboBoxKeyChains = new System.Windows.Forms.ComboBox();
|
||||
this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.newToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.viewToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.deleteToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
|
||||
this.profilesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.newToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.contextMenuStripNotify.SuspendLayout();
|
||||
this.menuStrip1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
|
||||
this.contextMenuStrip.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.button1.Location = new System.Drawing.Point(12, 84);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
||||
this.button1.TabIndex = 1;
|
||||
this.button1.Text = "Start";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// notifyIcon1
|
||||
//
|
||||
this.notifyIcon1.BalloonTipText = "CASA";
|
||||
this.notifyIcon1.ContextMenuStrip = this.contextMenuStripNotify;
|
||||
this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
|
||||
this.notifyIcon1.Text = "notifyIcon1";
|
||||
this.notifyIcon1.Visible = true;
|
||||
this.notifyIcon1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseDoubleClick);
|
||||
//
|
||||
// contextMenuStripNotify
|
||||
//
|
||||
this.contextMenuStripNotify.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.cmOpen,
|
||||
this.toolStripSeparator8,
|
||||
this.cmLock,
|
||||
this.cmUnlock,
|
||||
this.toolStripSeparator9,
|
||||
this.cmExit});
|
||||
this.contextMenuStripNotify.Name = "contextMenuStripNotify";
|
||||
this.contextMenuStripNotify.ShowImageMargin = false;
|
||||
this.contextMenuStripNotify.Size = new System.Drawing.Size(143, 104);
|
||||
//
|
||||
// cmOpen
|
||||
//
|
||||
this.cmOpen.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
|
||||
this.cmOpen.Name = "cmOpen";
|
||||
this.cmOpen.Size = new System.Drawing.Size(142, 22);
|
||||
this.cmOpen.Text = "Open Manager";
|
||||
this.cmOpen.Click += new System.EventHandler(this.cmOpen_Click);
|
||||
//
|
||||
// toolStripSeparator8
|
||||
//
|
||||
this.toolStripSeparator8.Name = "toolStripSeparator8";
|
||||
this.toolStripSeparator8.Size = new System.Drawing.Size(139, 6);
|
||||
//
|
||||
// cmLock
|
||||
//
|
||||
this.cmLock.Name = "cmLock";
|
||||
this.cmLock.Size = new System.Drawing.Size(142, 22);
|
||||
this.cmLock.Text = "Lock Secrets";
|
||||
this.cmLock.Click += new System.EventHandler(this.cmLock_Click);
|
||||
//
|
||||
// cmUnlock
|
||||
//
|
||||
this.cmUnlock.Enabled = false;
|
||||
this.cmUnlock.Name = "cmUnlock";
|
||||
this.cmUnlock.Size = new System.Drawing.Size(142, 22);
|
||||
this.cmUnlock.Text = "UnLock Secrets";
|
||||
//
|
||||
// toolStripSeparator9
|
||||
//
|
||||
this.toolStripSeparator9.Name = "toolStripSeparator9";
|
||||
this.toolStripSeparator9.Size = new System.Drawing.Size(139, 6);
|
||||
//
|
||||
// cmExit
|
||||
//
|
||||
this.cmExit.Name = "cmExit";
|
||||
this.cmExit.Size = new System.Drawing.Size(142, 22);
|
||||
this.cmExit.Text = "Exit";
|
||||
this.cmExit.Click += new System.EventHandler(this.cmExit_Click);
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.Location = new System.Drawing.Point(373, 84);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(75, 23);
|
||||
this.button2.TabIndex = 2;
|
||||
this.button2.Text = ">>";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
this.button2.Click += new System.EventHandler(this.button2_Click);
|
||||
//
|
||||
// listBox1
|
||||
//
|
||||
this.listBox1.BackColor = System.Drawing.Color.White;
|
||||
this.listBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.listBox1.ItemHeight = 16;
|
||||
this.listBox1.Location = new System.Drawing.Point(12, 119);
|
||||
this.listBox1.Name = "listBox1";
|
||||
this.listBox1.Size = new System.Drawing.Size(436, 228);
|
||||
this.listBox1.Sorted = true;
|
||||
this.listBox1.TabIndex = 3;
|
||||
this.listBox1.Visible = false;
|
||||
this.listBox1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listBox1_MouseDoubleClick);
|
||||
this.listBox1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.listBox1_MouseClick);
|
||||
this.listBox1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.listBox1_MouseUp);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(313, 22);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(10, 13);
|
||||
this.label2.TabIndex = 4;
|
||||
this.label2.Text = " ";
|
||||
//
|
||||
// button3
|
||||
//
|
||||
this.button3.Location = new System.Drawing.Point(145, 469);
|
||||
this.button3.Name = "button3";
|
||||
this.button3.Size = new System.Drawing.Size(129, 23);
|
||||
this.button3.TabIndex = 5;
|
||||
this.button3.Text = "Start Logging";
|
||||
this.button3.UseVisualStyleBackColor = true;
|
||||
this.button3.Visible = false;
|
||||
this.button3.Click += new System.EventHandler(this.button3_Click);
|
||||
//
|
||||
// menuStrip1
|
||||
//
|
||||
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.fileToolStripMenuItem,
|
||||
this.editToolStripMenuItem,
|
||||
this.optionsToolStripMenuItem,
|
||||
this.profilesToolStripMenuItem,
|
||||
this.helpToolStripMenuItem});
|
||||
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.menuStrip1.Name = "menuStrip1";
|
||||
this.menuStrip1.Size = new System.Drawing.Size(459, 24);
|
||||
this.menuStrip1.TabIndex = 6;
|
||||
this.menuStrip1.Text = "menuStrip1";
|
||||
//
|
||||
// fileToolStripMenuItem
|
||||
//
|
||||
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.newToolStripMenuItem,
|
||||
this.refreshStoresToolStripMenuItem,
|
||||
this.toolStripSeparator1,
|
||||
this.lockSecretsToolStripMenuItem,
|
||||
this.unlockSecretsToolStripMenuItem,
|
||||
this.destroySecretsToolStripMenuItem,
|
||||
this.toolStripSeparator2,
|
||||
this.exportSecretsToolStripMenuItem,
|
||||
this.importSecretsToolStripMenuItem,
|
||||
this.toolStripSeparator3,
|
||||
this.quitToolStripMenuItem});
|
||||
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
||||
this.fileToolStripMenuItem.Size = new System.Drawing.Size(35, 20);
|
||||
this.fileToolStripMenuItem.Text = "File";
|
||||
//
|
||||
// newToolStripMenuItem
|
||||
//
|
||||
this.newToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.newSecretToolStripMenuItem,
|
||||
this.newKeyToolStripMenuItem});
|
||||
this.newToolStripMenuItem.Name = "newToolStripMenuItem";
|
||||
this.newToolStripMenuItem.Size = new System.Drawing.Size(176, 22);
|
||||
this.newToolStripMenuItem.Text = "New";
|
||||
//
|
||||
// newSecretToolStripMenuItem
|
||||
//
|
||||
this.newSecretToolStripMenuItem.Name = "newSecretToolStripMenuItem";
|
||||
this.newSecretToolStripMenuItem.Size = new System.Drawing.Size(140, 22);
|
||||
this.newSecretToolStripMenuItem.Text = "New Secret";
|
||||
//
|
||||
// newKeyToolStripMenuItem
|
||||
//
|
||||
this.newKeyToolStripMenuItem.Name = "newKeyToolStripMenuItem";
|
||||
this.newKeyToolStripMenuItem.Size = new System.Drawing.Size(140, 22);
|
||||
this.newKeyToolStripMenuItem.Text = "New Key";
|
||||
//
|
||||
// refreshStoresToolStripMenuItem
|
||||
//
|
||||
this.refreshStoresToolStripMenuItem.Name = "refreshStoresToolStripMenuItem";
|
||||
this.refreshStoresToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F5;
|
||||
this.refreshStoresToolStripMenuItem.Size = new System.Drawing.Size(176, 22);
|
||||
this.refreshStoresToolStripMenuItem.Text = "Refresh Stores";
|
||||
this.refreshStoresToolStripMenuItem.Click += new System.EventHandler(this.refreshStoresToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(173, 6);
|
||||
//
|
||||
// lockSecretsToolStripMenuItem
|
||||
//
|
||||
this.lockSecretsToolStripMenuItem.Name = "lockSecretsToolStripMenuItem";
|
||||
this.lockSecretsToolStripMenuItem.Size = new System.Drawing.Size(176, 22);
|
||||
this.lockSecretsToolStripMenuItem.Text = "Lock Secrets";
|
||||
this.lockSecretsToolStripMenuItem.Click += new System.EventHandler(this.lockSecretsToolStripMenuItem_Click);
|
||||
//
|
||||
// unlockSecretsToolStripMenuItem
|
||||
//
|
||||
this.unlockSecretsToolStripMenuItem.Enabled = false;
|
||||
this.unlockSecretsToolStripMenuItem.Name = "unlockSecretsToolStripMenuItem";
|
||||
this.unlockSecretsToolStripMenuItem.Size = new System.Drawing.Size(176, 22);
|
||||
this.unlockSecretsToolStripMenuItem.Text = "Unlock Secrets";
|
||||
this.unlockSecretsToolStripMenuItem.Click += new System.EventHandler(this.unlockSecretsToolStripMenuItem_Click);
|
||||
//
|
||||
// destroySecretsToolStripMenuItem
|
||||
//
|
||||
this.destroySecretsToolStripMenuItem.Name = "destroySecretsToolStripMenuItem";
|
||||
this.destroySecretsToolStripMenuItem.Size = new System.Drawing.Size(176, 22);
|
||||
this.destroySecretsToolStripMenuItem.Text = "Destroy Secrets";
|
||||
this.destroySecretsToolStripMenuItem.Click += new System.EventHandler(this.destroySecretsToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(173, 6);
|
||||
//
|
||||
// exportSecretsToolStripMenuItem
|
||||
//
|
||||
this.exportSecretsToolStripMenuItem.Name = "exportSecretsToolStripMenuItem";
|
||||
this.exportSecretsToolStripMenuItem.Size = new System.Drawing.Size(176, 22);
|
||||
this.exportSecretsToolStripMenuItem.Text = "Export Secrets";
|
||||
this.exportSecretsToolStripMenuItem.Click += new System.EventHandler(this.exportSecretsToolStripMenuItem_Click);
|
||||
//
|
||||
// importSecretsToolStripMenuItem
|
||||
//
|
||||
this.importSecretsToolStripMenuItem.Name = "importSecretsToolStripMenuItem";
|
||||
this.importSecretsToolStripMenuItem.Size = new System.Drawing.Size(176, 22);
|
||||
this.importSecretsToolStripMenuItem.Text = "Import Secrets";
|
||||
this.importSecretsToolStripMenuItem.Click += new System.EventHandler(this.importSecretsToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator3
|
||||
//
|
||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||
this.toolStripSeparator3.Size = new System.Drawing.Size(173, 6);
|
||||
//
|
||||
// quitToolStripMenuItem
|
||||
//
|
||||
this.quitToolStripMenuItem.Name = "quitToolStripMenuItem";
|
||||
this.quitToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Q)));
|
||||
this.quitToolStripMenuItem.Size = new System.Drawing.Size(176, 22);
|
||||
this.quitToolStripMenuItem.Text = "Exit";
|
||||
this.quitToolStripMenuItem.Click += new System.EventHandler(this.quitToolStripMenuItem_Click);
|
||||
//
|
||||
// editToolStripMenuItem
|
||||
//
|
||||
this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.viewToolStripMenuItem,
|
||||
this.linkToolStripMenuItem,
|
||||
this.copyToolStripMenuItem,
|
||||
this.toolStripSeparator4,
|
||||
this.deleteToolStripMenuItem});
|
||||
this.editToolStripMenuItem.Name = "editToolStripMenuItem";
|
||||
this.editToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
|
||||
this.editToolStripMenuItem.Text = "Edit";
|
||||
//
|
||||
// viewToolStripMenuItem
|
||||
//
|
||||
this.viewToolStripMenuItem.Name = "viewToolStripMenuItem";
|
||||
this.viewToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F2;
|
||||
this.viewToolStripMenuItem.Size = new System.Drawing.Size(138, 22);
|
||||
this.viewToolStripMenuItem.Text = "View";
|
||||
//
|
||||
// linkToolStripMenuItem
|
||||
//
|
||||
this.linkToolStripMenuItem.Name = "linkToolStripMenuItem";
|
||||
this.linkToolStripMenuItem.Size = new System.Drawing.Size(138, 22);
|
||||
this.linkToolStripMenuItem.Text = "Link";
|
||||
//
|
||||
// copyToolStripMenuItem
|
||||
//
|
||||
this.copyToolStripMenuItem.Enabled = false;
|
||||
this.copyToolStripMenuItem.Name = "copyToolStripMenuItem";
|
||||
this.copyToolStripMenuItem.Size = new System.Drawing.Size(138, 22);
|
||||
this.copyToolStripMenuItem.Text = "Copy";
|
||||
//
|
||||
// toolStripSeparator4
|
||||
//
|
||||
this.toolStripSeparator4.Name = "toolStripSeparator4";
|
||||
this.toolStripSeparator4.Size = new System.Drawing.Size(135, 6);
|
||||
//
|
||||
// deleteToolStripMenuItem
|
||||
//
|
||||
this.deleteToolStripMenuItem.Name = "deleteToolStripMenuItem";
|
||||
this.deleteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Delete;
|
||||
this.deleteToolStripMenuItem.Size = new System.Drawing.Size(138, 22);
|
||||
this.deleteToolStripMenuItem.Text = "Delete";
|
||||
//
|
||||
// optionsToolStripMenuItem
|
||||
//
|
||||
this.optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.changeMasterPasswordToolStripMenuItem,
|
||||
this.toolStripSeparator5,
|
||||
this.preferencesToolStripMenuItem,
|
||||
this.toolStripSeparator6,
|
||||
this.policyToolStripMenuItem});
|
||||
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
|
||||
this.optionsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.O)));
|
||||
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(56, 20);
|
||||
this.optionsToolStripMenuItem.Text = "Options";
|
||||
//
|
||||
// changeMasterPasswordToolStripMenuItem
|
||||
//
|
||||
this.changeMasterPasswordToolStripMenuItem.Name = "changeMasterPasswordToolStripMenuItem";
|
||||
this.changeMasterPasswordToolStripMenuItem.Size = new System.Drawing.Size(207, 22);
|
||||
this.changeMasterPasswordToolStripMenuItem.Text = "Change Master Password";
|
||||
this.changeMasterPasswordToolStripMenuItem.Click += new System.EventHandler(this.changeMasterPasswordToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator5
|
||||
//
|
||||
this.toolStripSeparator5.Name = "toolStripSeparator5";
|
||||
this.toolStripSeparator5.Size = new System.Drawing.Size(204, 6);
|
||||
//
|
||||
// preferencesToolStripMenuItem
|
||||
//
|
||||
this.preferencesToolStripMenuItem.Name = "preferencesToolStripMenuItem";
|
||||
this.preferencesToolStripMenuItem.Size = new System.Drawing.Size(207, 22);
|
||||
this.preferencesToolStripMenuItem.Text = "Preferences";
|
||||
//
|
||||
// toolStripSeparator6
|
||||
//
|
||||
this.toolStripSeparator6.Name = "toolStripSeparator6";
|
||||
this.toolStripSeparator6.Size = new System.Drawing.Size(204, 6);
|
||||
//
|
||||
// policyToolStripMenuItem
|
||||
//
|
||||
this.policyToolStripMenuItem.Name = "policyToolStripMenuItem";
|
||||
this.policyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F3;
|
||||
this.policyToolStripMenuItem.Size = new System.Drawing.Size(207, 22);
|
||||
this.policyToolStripMenuItem.Text = "Policies";
|
||||
//
|
||||
// helpToolStripMenuItem
|
||||
//
|
||||
this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.contentsToolStripMenuItem,
|
||||
this.aboutCasaToolStripMenuItem});
|
||||
this.helpToolStripMenuItem.Enabled = false;
|
||||
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
|
||||
this.helpToolStripMenuItem.Size = new System.Drawing.Size(40, 20);
|
||||
this.helpToolStripMenuItem.Text = "Help";
|
||||
//
|
||||
// contentsToolStripMenuItem
|
||||
//
|
||||
this.contentsToolStripMenuItem.Name = "contentsToolStripMenuItem";
|
||||
this.contentsToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F1;
|
||||
this.contentsToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
|
||||
this.contentsToolStripMenuItem.Text = "Contents";
|
||||
//
|
||||
// aboutCasaToolStripMenuItem
|
||||
//
|
||||
this.aboutCasaToolStripMenuItem.Name = "aboutCasaToolStripMenuItem";
|
||||
this.aboutCasaToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
|
||||
this.aboutCasaToolStripMenuItem.Text = "About Casa";
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox1.BackgroundImage")));
|
||||
this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.pictureBox1.Location = new System.Drawing.Point(0, 22);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(361, 56);
|
||||
this.pictureBox1.TabIndex = 7;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// pictureBox2
|
||||
//
|
||||
this.pictureBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.pictureBox2.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox2.BackgroundImage")));
|
||||
this.pictureBox2.Location = new System.Drawing.Point(359, 22);
|
||||
this.pictureBox2.Name = "pictureBox2";
|
||||
this.pictureBox2.Size = new System.Drawing.Size(112, 56);
|
||||
this.pictureBox2.TabIndex = 8;
|
||||
this.pictureBox2.TabStop = false;
|
||||
//
|
||||
// listViewNative
|
||||
//
|
||||
this.listViewNative.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.columnHeader1,
|
||||
this.columnHeader2});
|
||||
this.listViewNative.Location = new System.Drawing.Point(13, 377);
|
||||
this.listViewNative.Name = "listViewNative";
|
||||
this.listViewNative.Size = new System.Drawing.Size(434, 86);
|
||||
this.listViewNative.TabIndex = 9;
|
||||
this.listViewNative.UseCompatibleStateImageBehavior = false;
|
||||
this.listViewNative.View = System.Windows.Forms.View.List;
|
||||
this.listViewNative.Visible = false;
|
||||
//
|
||||
// columnHeader1
|
||||
//
|
||||
this.columnHeader1.Text = "";
|
||||
//
|
||||
// openFileDialog1
|
||||
//
|
||||
this.openFileDialog1.FileName = "openFileDialog1";
|
||||
this.openFileDialog1.Filter = "*.casa|";
|
||||
//
|
||||
// labelNativeInfo
|
||||
//
|
||||
this.labelNativeInfo.AutoSize = true;
|
||||
this.labelNativeInfo.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.labelNativeInfo.Location = new System.Drawing.Point(142, 360);
|
||||
this.labelNativeInfo.Name = "labelNativeInfo";
|
||||
this.labelNativeInfo.Size = new System.Drawing.Size(143, 13);
|
||||
this.labelNativeInfo.TabIndex = 10;
|
||||
this.labelNativeInfo.Text = ":: Native Information ::";
|
||||
this.labelNativeInfo.Visible = false;
|
||||
//
|
||||
// comboBoxProfile
|
||||
//
|
||||
this.comboBoxProfile.FormattingEnabled = true;
|
||||
this.comboBoxProfile.Location = new System.Drawing.Point(261, 86);
|
||||
this.comboBoxProfile.Name = "comboBoxProfile";
|
||||
this.comboBoxProfile.Size = new System.Drawing.Size(107, 21);
|
||||
this.comboBoxProfile.TabIndex = 11;
|
||||
this.comboBoxProfile.Visible = false;
|
||||
this.comboBoxProfile.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
|
||||
//
|
||||
// comboBoxKeyChains
|
||||
//
|
||||
this.comboBoxKeyChains.FormattingEnabled = true;
|
||||
this.comboBoxKeyChains.Location = new System.Drawing.Point(93, 86);
|
||||
this.comboBoxKeyChains.Name = "comboBoxKeyChains";
|
||||
this.comboBoxKeyChains.Size = new System.Drawing.Size(161, 21);
|
||||
this.comboBoxKeyChains.TabIndex = 12;
|
||||
this.comboBoxKeyChains.SelectedIndexChanged += new System.EventHandler(this.comboBoxKeyChains_SelectedIndexChanged);
|
||||
//
|
||||
// contextMenuStrip
|
||||
//
|
||||
this.contextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.newToolStripMenuItem1,
|
||||
this.viewToolStripMenuItem1,
|
||||
this.toolStripSeparator7,
|
||||
this.deleteToolStripMenuItem1});
|
||||
this.contextMenuStrip.Name = "contextMenuStrip";
|
||||
this.contextMenuStrip.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
|
||||
this.contextMenuStrip.ShowImageMargin = false;
|
||||
this.contextMenuStrip.Size = new System.Drawing.Size(92, 76);
|
||||
//
|
||||
// newToolStripMenuItem1
|
||||
//
|
||||
this.newToolStripMenuItem1.Name = "newToolStripMenuItem1";
|
||||
this.newToolStripMenuItem1.Size = new System.Drawing.Size(91, 22);
|
||||
this.newToolStripMenuItem1.Text = "New";
|
||||
//
|
||||
// viewToolStripMenuItem1
|
||||
//
|
||||
this.viewToolStripMenuItem1.Name = "viewToolStripMenuItem1";
|
||||
this.viewToolStripMenuItem1.Size = new System.Drawing.Size(91, 22);
|
||||
this.viewToolStripMenuItem1.Text = "View";
|
||||
//
|
||||
// toolStripSeparator7
|
||||
//
|
||||
this.toolStripSeparator7.Name = "toolStripSeparator7";
|
||||
this.toolStripSeparator7.Size = new System.Drawing.Size(88, 6);
|
||||
//
|
||||
// deleteToolStripMenuItem1
|
||||
//
|
||||
this.deleteToolStripMenuItem1.Name = "deleteToolStripMenuItem1";
|
||||
this.deleteToolStripMenuItem1.Size = new System.Drawing.Size(91, 22);
|
||||
this.deleteToolStripMenuItem1.Text = "Delete";
|
||||
//
|
||||
// saveFileDialog
|
||||
//
|
||||
this.saveFileDialog.CheckFileExists = true;
|
||||
//
|
||||
// profilesToolStripMenuItem
|
||||
//
|
||||
this.profilesToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.newToolStripMenuItem2,
|
||||
this.toolStripSeparator10});
|
||||
this.profilesToolStripMenuItem.Name = "profilesToolStripMenuItem";
|
||||
this.profilesToolStripMenuItem.Size = new System.Drawing.Size(54, 20);
|
||||
this.profilesToolStripMenuItem.Text = "Profiles";
|
||||
this.profilesToolStripMenuItem.Visible = false;
|
||||
//
|
||||
// newToolStripMenuItem2
|
||||
//
|
||||
this.newToolStripMenuItem2.Name = "newToolStripMenuItem2";
|
||||
this.newToolStripMenuItem2.Size = new System.Drawing.Size(158, 22);
|
||||
this.newToolStripMenuItem2.Text = "New";
|
||||
//
|
||||
// toolStripSeparator10
|
||||
//
|
||||
this.toolStripSeparator10.Name = "toolStripSeparator10";
|
||||
this.toolStripSeparator10.Size = new System.Drawing.Size(149, 6);
|
||||
//
|
||||
// MiCasaForm
|
||||
//
|
||||
this.AcceptButton = this.button1;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.AutoSize = true;
|
||||
this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.BackColor = System.Drawing.Color.Gainsboro;
|
||||
this.ClientSize = new System.Drawing.Size(459, 510);
|
||||
this.Controls.Add(this.comboBoxKeyChains);
|
||||
this.Controls.Add(this.comboBoxProfile);
|
||||
this.Controls.Add(this.labelNativeInfo);
|
||||
this.Controls.Add(this.listViewNative);
|
||||
this.Controls.Add(this.pictureBox2);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.listBox1);
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.button3);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.menuStrip1);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MainMenuStrip = this.menuStrip1;
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "MiCasaForm";
|
||||
this.Text = "MiCasa";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MiCasaForm_FormClosing);
|
||||
this.contextMenuStripNotify.ResumeLayout(false);
|
||||
this.menuStrip1.ResumeLayout(false);
|
||||
this.menuStrip1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
|
||||
this.contextMenuStrip.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.NotifyIcon notifyIcon1;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.ToolTip toolTip1;
|
||||
private System.Windows.Forms.ListBox listBox1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Button button3;
|
||||
private System.Windows.Forms.MenuStrip menuStrip1;
|
||||
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
private System.Windows.Forms.PictureBox pictureBox2;
|
||||
private System.Windows.Forms.ListView listViewNative;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader1;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader2;
|
||||
private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem newSecretToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem newKeyToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem refreshStoresToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.ToolStripMenuItem lockSecretsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem unlockSecretsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem destroySecretsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
||||
private System.Windows.Forms.ToolStripMenuItem exportSecretsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem importSecretsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
||||
private System.Windows.Forms.ToolStripMenuItem quitToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem viewToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem linkToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
||||
private System.Windows.Forms.ToolStripMenuItem deleteToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem changeMasterPasswordToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem preferencesToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem policyToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem contentsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem aboutCasaToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
|
||||
private System.Windows.Forms.OpenFileDialog openFileDialog1;
|
||||
private System.Windows.Forms.Label labelNativeInfo;
|
||||
private System.Windows.Forms.ComboBox comboBoxProfile;
|
||||
private System.Windows.Forms.ComboBox comboBoxKeyChains;
|
||||
private System.Windows.Forms.ContextMenuStrip contextMenuStrip;
|
||||
private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem1;
|
||||
private System.Windows.Forms.ToolStripMenuItem viewToolStripMenuItem1;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator7;
|
||||
private System.Windows.Forms.ToolStripMenuItem deleteToolStripMenuItem1;
|
||||
private System.Windows.Forms.ContextMenuStrip contextMenuStripNotify;
|
||||
private System.Windows.Forms.ToolStripMenuItem cmOpen;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator8;
|
||||
private System.Windows.Forms.ToolStripMenuItem cmLock;
|
||||
private System.Windows.Forms.ToolStripMenuItem cmUnlock;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator9;
|
||||
private System.Windows.Forms.ToolStripMenuItem cmExit;
|
||||
private System.Windows.Forms.SaveFileDialog saveFileDialog;
|
||||
private System.Windows.Forms.ToolStripMenuItem profilesToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem2;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator10;
|
||||
}
|
||||
}
|
566
CASA/micasad/winforms/MiCasaForm.cs
Normal file
566
CASA/micasad/winforms/MiCasaForm.cs
Normal file
@ -0,0 +1,566 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Threading;
|
||||
using System.Diagnostics;
|
||||
|
||||
using sscs.cache;
|
||||
using sscs.common;
|
||||
using sscs.communication;
|
||||
using sscs.init;
|
||||
using sscs.winforms;
|
||||
|
||||
namespace sscs.winforms
|
||||
{
|
||||
public partial class MiCasaForm : Form
|
||||
{
|
||||
System.Threading.Thread listeningThread;
|
||||
private static Communication server;
|
||||
private bool bLogging = false;
|
||||
SecretStore m_ss;
|
||||
private static string mSelectedKeyChainID = null;
|
||||
UserIdentifier userId;
|
||||
string path;
|
||||
|
||||
ToolStripMenuItem currSelectedMenuItem = null;
|
||||
|
||||
public MiCasaForm(string[] args)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// get our LUID
|
||||
int low = 0;
|
||||
int high = 0;
|
||||
string sid = "";
|
||||
|
||||
#if W32
|
||||
UserInfo.GetLUID(ref low, ref high, ref sid);
|
||||
userId = new WinUserIdentifier(low, high, sid);
|
||||
#else
|
||||
userId = new UnixUserIdentifier(0);
|
||||
#endif
|
||||
// set home directory to process path
|
||||
Process proc = Process.GetCurrentProcess();
|
||||
path = proc.MainModule.FileName;
|
||||
path = path.Substring(0, path.LastIndexOf("\\"));
|
||||
|
||||
string profiledir = null;
|
||||
// add profile directory if one is specified
|
||||
for (int i = 0; i < args.Length; i++)
|
||||
{
|
||||
if (args[i].ToLower().StartsWith("/p:"))
|
||||
{
|
||||
profiledir = args[i].ToLower().Substring(args[i].IndexOf(":") + 1);
|
||||
profiledir.Trim();
|
||||
}
|
||||
}
|
||||
|
||||
if (profiledir == null)
|
||||
{
|
||||
profiledir = "~home";
|
||||
m_ss = SessionManager.CreateUserSession(userId);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
// create dir for this profile.
|
||||
System.IO.Directory.CreateDirectory(path + "/profile/" + profiledir);
|
||||
|
||||
// start session using this profile
|
||||
m_ss = SessionManager.CreateUserSession(userId, path + "/profile/" + profiledir);
|
||||
|
||||
|
||||
// enum current profiles
|
||||
string[] profiles = System.IO.Directory.GetDirectories(path + "/profile");
|
||||
|
||||
ToolStripMenuItem[] tsmi = new ToolStripMenuItem[profiles.Length];
|
||||
for (int i = 0; i < profiles.Length; i++)
|
||||
{
|
||||
comboBoxProfile.Items.Add(profiles[i].Substring(profiles[i].LastIndexOf("\\") + 1));
|
||||
string sProfileName = profiles[i].Substring(profiles[i].LastIndexOf("\\") + 1);
|
||||
tsmi[i] = new ToolStripMenuItem(sProfileName);
|
||||
if (sProfileName.Equals(profiledir))
|
||||
{
|
||||
tsmi[i].Checked = true;
|
||||
currSelectedMenuItem = tsmi[i];
|
||||
//tsmi[i].CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
}
|
||||
tsmi[i].Click += new EventHandler(MiCasaForm_Click);
|
||||
|
||||
}
|
||||
|
||||
profilesToolStripMenuItem.DropDownItems.AddRange(tsmi);
|
||||
profilesToolStripMenuItem.Visible = true;
|
||||
|
||||
|
||||
|
||||
// add submenus
|
||||
//this.profilesToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
//this.defaultToolStripMenuItem,
|
||||
//this.newToolStripMenuItem2});
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (WinCommon.VerifyMasterPassword(m_ss, "Enter your Master Password for:"+profiledir))
|
||||
{
|
||||
server = CommunicationFactory.CreateCommunicationEndPoint();
|
||||
listeningThread = new Thread(new ThreadStart(StartServer));
|
||||
listeningThread.Start();
|
||||
button1.Text = "Stop";
|
||||
EnumKeyChains();
|
||||
}
|
||||
}
|
||||
|
||||
void MiCasaForm_Click(object sender, EventArgs e)
|
||||
{
|
||||
// uncheck cur
|
||||
if (currSelectedMenuItem != null)
|
||||
{
|
||||
currSelectedMenuItem.Checked = false;
|
||||
}
|
||||
|
||||
currSelectedMenuItem = (ToolStripMenuItem)sender;
|
||||
currSelectedMenuItem.Checked = true;
|
||||
|
||||
|
||||
string profiledir = currSelectedMenuItem.Text;
|
||||
if (m_ss != null)
|
||||
{
|
||||
SessionManager.RemoveUserSession(userId, true);
|
||||
}
|
||||
|
||||
// start session using this profile
|
||||
m_ss = SessionManager.CreateUserSession(userId, path + "/profile/" + profiledir);
|
||||
|
||||
// set master password
|
||||
string sPassword = WinCommon.GetMasterPasswordFromUser(m_ss, true, "Enter your Master Password for:" + profiledir);
|
||||
if (sPassword == null)
|
||||
{
|
||||
currSelectedMenuItem.Checked = false;
|
||||
}
|
||||
|
||||
mSelectedKeyChainID = null;
|
||||
RefreshStore();
|
||||
}
|
||||
|
||||
|
||||
private static void StartServer()
|
||||
{
|
||||
server.StartCommunicationEndPoint();
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
if (server == null)
|
||||
{
|
||||
button1.Text = "starting server";
|
||||
server = CommunicationFactory.CreateCommunicationEndPoint();
|
||||
|
||||
listeningThread = new Thread(new ThreadStart(StartServer));
|
||||
listeningThread.Start();
|
||||
button1.Text = "Stop";
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
server.CloseCommunicationEndPoint();
|
||||
listeningThread.Abort();
|
||||
StopMicasa();
|
||||
}
|
||||
|
||||
//Application.Exit();
|
||||
}
|
||||
|
||||
private void StopMicasa()
|
||||
{
|
||||
// kill all running versions of CASA manager
|
||||
System.Diagnostics.Process[] proc = System.Diagnostics.Process.GetProcessesByName("CASAManager");
|
||||
for (int i = 0; i < proc.Length; i++)
|
||||
{
|
||||
try
|
||||
{
|
||||
proc[i].Kill();
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
notifyIcon1.Dispose();
|
||||
System.Diagnostics.Process curProc = System.Diagnostics.Process.GetCurrentProcess();
|
||||
curProc.Kill();
|
||||
}
|
||||
|
||||
private void MiCasaForm_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
if (server != null)
|
||||
{
|
||||
server.CloseCommunicationEndPoint();
|
||||
listeningThread.Abort();
|
||||
listeningThread = null;
|
||||
server = null;
|
||||
}
|
||||
StopMicasa();
|
||||
}
|
||||
|
||||
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void button2_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!listBox1.Visible)
|
||||
{
|
||||
listBox1.Visible = true;
|
||||
listViewNative.Visible = true;
|
||||
labelNativeInfo.Visible = true;
|
||||
//button3.Visible = true;
|
||||
button2.Text = "<<";
|
||||
RefreshStore();
|
||||
}
|
||||
else
|
||||
{
|
||||
listBox1.Visible = false;
|
||||
listViewNative.Visible = false;
|
||||
labelNativeInfo.Visible = false;
|
||||
button3.Visible = false;
|
||||
button2.Text = ">>";
|
||||
}
|
||||
}
|
||||
|
||||
private void button3_Click(object sender, EventArgs e)
|
||||
{
|
||||
listBox1.Items.Add("-----------------------");
|
||||
if (!bLogging)
|
||||
{
|
||||
//DebugStream ds = new DebugStream(listBox1);
|
||||
//Debug.Listeners.Add(new TextWriterTraceListener(ds));
|
||||
listBox1.Items.Add("Logging started");
|
||||
button3.Text = "Stop logging";
|
||||
}
|
||||
else
|
||||
{
|
||||
listBox1.Items.Add("Logging stopped");
|
||||
button3.Text = "Start logging";
|
||||
}
|
||||
listBox1.Items.Add("-----------------------");
|
||||
bLogging = !bLogging;
|
||||
}
|
||||
|
||||
private void RefreshStore()
|
||||
{
|
||||
listBox1.Items.Clear();
|
||||
if (!m_ss.IsStoreLocked())
|
||||
{
|
||||
KeyChain kc;
|
||||
if (mSelectedKeyChainID == null)
|
||||
{
|
||||
kc = m_ss.GetKeyChainDefault(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
kc = m_ss.GetKeyChain(mSelectedKeyChainID);
|
||||
}
|
||||
|
||||
EnumKeyChains();
|
||||
|
||||
IDictionaryEnumerator etor1 = (IDictionaryEnumerator)kc.GetAllSecrets();
|
||||
while (etor1.MoveNext())
|
||||
{
|
||||
string sID = (string)etor1.Key;
|
||||
listBox1.Items.Add((sID));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void EnumKeyChains()
|
||||
{
|
||||
// clear current list
|
||||
comboBoxKeyChains.Items.Clear();
|
||||
|
||||
// display keychain IDs
|
||||
IDictionaryEnumerator etor = (IDictionaryEnumerator)m_ss.GetKeyChainEnumerator();
|
||||
while (etor.MoveNext())
|
||||
{
|
||||
//keyChainIds.Append((string)etor.Key,0,(((string)(etor.Key)).Length)-1);
|
||||
comboBoxKeyChains.Items.Add((string)etor.Key);
|
||||
}
|
||||
}
|
||||
|
||||
private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
Console.WriteLine(listBox1.SelectedItem);
|
||||
// show the Edit Form
|
||||
EditSecretForm esf = new EditSecretForm();
|
||||
esf.SetID(m_ss, mSelectedKeyChainID, listBox1.SelectedItem.ToString());
|
||||
esf.Show();
|
||||
}
|
||||
|
||||
|
||||
private void listBox1_MouseClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
// show native info
|
||||
listViewNative.Clear();
|
||||
|
||||
string[] info = new string[2];
|
||||
info[0] = "Created:" + DateTime.Now.ToLongTimeString();
|
||||
info[1] = DateTime.Now.ToShortTimeString();
|
||||
|
||||
ListViewItem item = new ListViewItem(info);
|
||||
listViewNative.Items.Add(item);
|
||||
|
||||
}
|
||||
|
||||
private void refreshStoresToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
RefreshStore();
|
||||
}
|
||||
|
||||
private void lockSecretsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
m_ss.LockStore();
|
||||
SetupGUI(true);
|
||||
RefreshStore();
|
||||
}
|
||||
|
||||
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
ComboBox cb = (ComboBox)sender;
|
||||
string profiledir = (string)cb.SelectedItem;
|
||||
|
||||
|
||||
// create dir for this profile.
|
||||
//System.IO.Directory.CreateDirectory(path + "/profile/" + profiledir);
|
||||
if (m_ss != null)
|
||||
{
|
||||
SessionManager.RemoveUserSession(userId, true);
|
||||
}
|
||||
|
||||
// start session using this profile
|
||||
m_ss = SessionManager.CreateUserSession(userId, path + "/profile/" + profiledir);
|
||||
|
||||
// set master password
|
||||
WinCommon.GetMasterPasswordFromUser(m_ss, true, "Enter your Master Password for:" + profiledir);
|
||||
mSelectedKeyChainID = null;
|
||||
RefreshStore();
|
||||
|
||||
}
|
||||
|
||||
private void comboBoxKeyChains_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
ComboBox cb = (ComboBox)sender;
|
||||
string keychainID = (string)cb.SelectedItem;
|
||||
if (keychainID != null)
|
||||
{
|
||||
mSelectedKeyChainID = keychainID;
|
||||
RefreshStore();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void listBox1_MouseUp(object sender, MouseEventArgs e)
|
||||
{
|
||||
|
||||
if (e.Button == MouseButtons.Right)
|
||||
{
|
||||
Point p = this.Location;
|
||||
p.Offset(e.Location.X + 10, e.Location.Y + 150);
|
||||
contextMenuStrip.Show(p);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void cmLock_Click(object sender, EventArgs e)
|
||||
{
|
||||
m_ss.LockStore();
|
||||
RefreshStore();
|
||||
}
|
||||
|
||||
private void cmExit_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void cmOpen_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void exportSecretsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
// open a verify master password form
|
||||
byte[] baIV = null;
|
||||
string sMasterPassword = WinCommon.GetMasterPasswordFromUser(m_ss, true, null);
|
||||
|
||||
if (sMasterPassword != null)
|
||||
{
|
||||
saveFileDialog.InitialDirectory = @"c:\";
|
||||
try
|
||||
{
|
||||
saveFileDialog.FileName = "";
|
||||
saveFileDialog.DefaultExt = "casa";
|
||||
saveFileDialog.ShowDialog();
|
||||
string sFilePath = saveFileDialog.FileName;
|
||||
if (sFilePath != null)
|
||||
{
|
||||
// save it
|
||||
|
||||
byte[] baSecrets = m_ss.GetSecrets(sMasterPassword, ref baIV);
|
||||
|
||||
// write em out
|
||||
FileStream fs = new FileStream(sFilePath, FileMode.Create);
|
||||
|
||||
// if a IV was set, write it out.
|
||||
if (baIV != null)
|
||||
{
|
||||
fs.Write(baIV, 0, 16);
|
||||
}
|
||||
|
||||
// write the secrets now
|
||||
fs.Write(baSecrets, 0, baSecrets.Length);
|
||||
fs.Flush();
|
||||
fs.Close();
|
||||
}
|
||||
}
|
||||
catch (Exception e1)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void importSecretsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
byte[] baIV = new byte[16];
|
||||
byte[] baXMLSecrets = null;
|
||||
openFileDialog1.InitialDirectory = @"c:\";
|
||||
|
||||
try
|
||||
{
|
||||
openFileDialog1.FileName = "";
|
||||
openFileDialog1.DefaultExt = "casa";
|
||||
openFileDialog1.ShowDialog();
|
||||
string sFilePath = openFileDialog1.FileName;
|
||||
if (sFilePath != null && sFilePath.Length > 0)
|
||||
{
|
||||
string sMasterPassword = WinCommon.GetMasterPasswordFromUser(m_ss, false, "Enter Master Password that Encypts this file");
|
||||
|
||||
// let's read it
|
||||
FileStream fs = new FileStream(sFilePath, FileMode.Open);
|
||||
int iBytes = 0;
|
||||
|
||||
// if a master password was sent, read the first 16 bytes as IV.
|
||||
if (sMasterPassword != null)
|
||||
{
|
||||
baXMLSecrets = new byte[fs.Length - 16];
|
||||
iBytes = fs.Read(baIV, 0, 16);
|
||||
iBytes = fs.Read(baXMLSecrets, 0, (int)fs.Length - 16);
|
||||
}
|
||||
else
|
||||
{
|
||||
baXMLSecrets = new byte[fs.Length];
|
||||
iBytes = fs.Read(baXMLSecrets, 0, (int)fs.Length);
|
||||
}
|
||||
|
||||
fs.Flush();
|
||||
fs.Close();
|
||||
m_ss.MergeXMLSecrets(baXMLSecrets, sMasterPassword, baIV);
|
||||
RefreshStore();
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception e1)
|
||||
{
|
||||
|
||||
Console.WriteLine(e1.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
private void destroySecretsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
// get the current keychain
|
||||
KeyChain kc;
|
||||
if (mSelectedKeyChainID != null)
|
||||
{
|
||||
kc = m_ss.GetKeyChain(mSelectedKeyChainID);
|
||||
}
|
||||
else
|
||||
{
|
||||
kc = m_ss.GetKeyChainDefault();
|
||||
}
|
||||
|
||||
if (kc != null)
|
||||
{
|
||||
kc.RemoveAllSecrets();
|
||||
RefreshStore();
|
||||
}
|
||||
}
|
||||
|
||||
private void unlockSecretsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
string sMasterPassword = WinCommon.GetMasterPasswordFromUser(m_ss, true, "Enter your Master Password to unlock your secrets");
|
||||
if (sMasterPassword != null)
|
||||
{
|
||||
m_ss.UnlockStore(null, sMasterPassword);
|
||||
SetupGUI(false);
|
||||
RefreshStore();
|
||||
}
|
||||
}
|
||||
|
||||
private void SetupGUI(bool bLock)
|
||||
{
|
||||
newToolStripMenuItem.Enabled = !bLock;
|
||||
newSecretToolStripMenuItem.Enabled = !bLock;
|
||||
refreshStoresToolStripMenuItem.Enabled = !bLock;
|
||||
lockSecretsToolStripMenuItem.Enabled = !bLock;
|
||||
unlockSecretsToolStripMenuItem.Enabled = bLock;
|
||||
destroySecretsToolStripMenuItem.Enabled = !bLock;
|
||||
importSecretsToolStripMenuItem.Enabled = !bLock;
|
||||
exportSecretsToolStripMenuItem.Enabled = !bLock;
|
||||
|
||||
editToolStripMenuItem.Enabled = !bLock;
|
||||
optionsToolStripMenuItem.Enabled = !bLock;
|
||||
|
||||
listBox1.Enabled = !bLock;
|
||||
|
||||
comboBoxKeyChains.Enabled = !bLock;
|
||||
comboBoxProfile.Enabled = !bLock;
|
||||
}
|
||||
|
||||
private void quitToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
server.CloseCommunicationEndPoint();
|
||||
listeningThread.Abort();
|
||||
StopMicasa();
|
||||
}
|
||||
|
||||
private void changeMasterPasswordToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
ChangeMasterPasswordForm cmp = new ChangeMasterPasswordForm();
|
||||
cmp.SetSecretStore(m_ss);
|
||||
cmp.ShowDialog();
|
||||
|
||||
/*
|
||||
// verify current password
|
||||
string sCurPassword = WinCommon.GetMasterPasswordFromUser(m_ss, true, "Enter current Master Password");
|
||||
|
||||
if (sCurPassword != null && sCurPassword.Length > 0)
|
||||
{
|
||||
string sNewPassword = WinCommon.GetMasterPasswordFromUser(m_ss, false, "Enter a new Master Password");
|
||||
if (sNewPassword != null && sNewPassword.Length > 0)
|
||||
{
|
||||
m_ss.ChangeMasterPassword(sCurPassword, sNewPassword);
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
1074
CASA/micasad/winforms/MiCasaForm.resx
Normal file
1074
CASA/micasad/winforms/MiCasaForm.resx
Normal file
File diff suppressed because it is too large
Load Diff
100
CASA/micasad/winforms/WinCommon.cs
Normal file
100
CASA/micasad/winforms/WinCommon.cs
Normal file
@ -0,0 +1,100 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using sscs.cache;
|
||||
using sscs.winforms;
|
||||
|
||||
namespace sscs.winforms
|
||||
{
|
||||
class WinCommon
|
||||
{
|
||||
private static bool m_bVerify = true;
|
||||
private static bool m_bIsVerifing = true;
|
||||
private static bool m_bIsValid = false;
|
||||
private static string m_sMasterPassword;
|
||||
|
||||
private static SecretStore m_ss;
|
||||
private static MasterPasswordForm mp;
|
||||
|
||||
private static string VerifyAndReturnMasterPassword(SecretStore ss)
|
||||
{
|
||||
if (VerifyMasterPassword(ss, null))
|
||||
{
|
||||
return m_sMasterPassword;
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static string GetMasterPasswordFromUser(SecretStore ss, bool bVerify, string sDecription)
|
||||
{
|
||||
m_sMasterPassword = null;
|
||||
m_bVerify = bVerify;
|
||||
VerifyMasterPassword(ss, sDecription);
|
||||
return m_sMasterPassword;
|
||||
}
|
||||
|
||||
public static bool VerifyMasterPassword(SecretStore ss, string sDecription)
|
||||
{
|
||||
|
||||
m_bIsVerifing = true;
|
||||
m_ss = ss;
|
||||
|
||||
// open the form
|
||||
mp = new MasterPasswordForm(sDecription);
|
||||
mp.MasterPasswordVerified += new MasterPasswordEventHandler(mp_MasterPasswordVerified);
|
||||
mp.Show();
|
||||
Console.WriteLine();
|
||||
while (m_bIsVerifing)
|
||||
{
|
||||
System.Windows.Forms.Application.DoEvents();
|
||||
System.Threading.Thread.Sleep(100);
|
||||
}
|
||||
|
||||
mp.Dispose();
|
||||
return m_bIsValid;
|
||||
|
||||
}
|
||||
|
||||
static void mp_MasterPasswordVerified(string sMasterPassword, bool bIsValid)
|
||||
{
|
||||
//Console.WriteLine(sMasterPassword);
|
||||
if (sMasterPassword != null)
|
||||
{
|
||||
if (sMasterPassword.Length < 8)
|
||||
{
|
||||
mp.SetErrorMessage("Master Password must be a least 8 characters");
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_bVerify)
|
||||
{
|
||||
if (m_ss.SetMasterPassword(sMasterPassword))
|
||||
{
|
||||
m_sMasterPassword = sMasterPassword;
|
||||
m_bIsValid = true;
|
||||
m_bIsVerifing = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
mp.SetErrorMessage("Master Password not correct");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_sMasterPassword = sMasterPassword;
|
||||
m_bIsVerifing = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_bIsValid = false;
|
||||
m_bIsVerifing = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user