Merge pull request #23 from Semen8991/beta

Beta
This commit is contained in:
0x10 2019-05-17 23:23:39 +08:00 committed by GitHub
commit cc8a3504df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
61 changed files with 46521 additions and 1798 deletions

View File

@ -1,26 +1,50 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28307.572
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MifareOneTool", "MifareOneTool\MifareOneTool.csproj", "{CDB26016-FC77-403F-B22A-A011F8622FCF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
beta|Any CPU = beta|Any CPU
beta|Mixed Platforms = beta|Mixed Platforms
beta|Win32 = beta|Win32
beta|x86 = beta|x86
Debug|Any CPU = Debug|Any CPU
Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|Win32 = Debug|Win32
Debug|x86 = Debug|x86
MifareOneTool|Any CPU = MifareOneTool|Any CPU
MifareOneTool|Mixed Platforms = MifareOneTool|Mixed Platforms
MifareOneTool|Win32 = MifareOneTool|Win32
MifareOneTool|x86 = MifareOneTool|x86
Release|Any CPU = Release|Any CPU
Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{CDB26016-FC77-403F-B22A-A011F8622FCF}.beta|Any CPU.ActiveCfg = beta|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.beta|Mixed Platforms.ActiveCfg = beta|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.beta|Mixed Platforms.Build.0 = beta|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.beta|Win32.ActiveCfg = beta|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.beta|Win32.Build.0 = beta|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.beta|x86.ActiveCfg = beta|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.beta|x86.Build.0 = beta|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.Debug|Any CPU.ActiveCfg = Debug|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.Debug|Mixed Platforms.Build.0 = Debug|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.Debug|Win32.ActiveCfg = Debug|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.Debug|x86.ActiveCfg = Debug|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.Debug|x86.Build.0 = Debug|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.MifareOneTool|Any CPU.ActiveCfg = MifareOneTool|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.MifareOneTool|Mixed Platforms.ActiveCfg = MifareOneTool|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.MifareOneTool|Mixed Platforms.Build.0 = MifareOneTool|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.MifareOneTool|Win32.ActiveCfg = MifareOneTool|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.MifareOneTool|Win32.Build.0 = MifareOneTool|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.MifareOneTool|x86.ActiveCfg = MifareOneTool|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.MifareOneTool|x86.Build.0 = MifareOneTool|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.Release|Any CPU.ActiveCfg = Release|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.Release|Mixed Platforms.ActiveCfg = Release|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.Release|Mixed Platforms.Build.0 = Release|x86
@ -31,4 +55,7 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {0173FBA9-DDA4-4B2B-A55D-546257C2E727}
EndGlobalSection
EndGlobal

View File

@ -1,4 +1,5 @@
using System;
using MifareOneTool.Properties;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@ -196,7 +197,7 @@ namespace MifareOneTool
}
public Sector(byte[] uid)
{
if (uid.Length != 4) { throw new Exception("不恰当的4字节UID长度"); }
if (uid.Length != 4) { throw new Exception(Resources.4UID长度); }
this._isSector0 = true;
this.Wipe();
byte bcc = (byte)(uid[0] ^ uid[1] ^ uid[2] ^ uid[3]);
@ -240,7 +241,7 @@ namespace MifareOneTool
}
public string Info(int sec)
{
string info = "扇区" + sec.ToString();
string info = Resources. + sec.ToString();
if (Enumerable.SequenceEqual(
new byte[16] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
this._sector[0]) &&
@ -251,15 +252,15 @@ namespace MifareOneTool
new byte[16] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
this._sector[2]))
{
info += " 空扇区";
info += Resources._空扇区;
}
else
{
info += " 有数据";
info += Resources._有数据;
}
if (this.Verify() != 0x00)
{
info += " 有错误";
info += Resources._有错误;
}
return info;
}
@ -333,7 +334,7 @@ namespace MifareOneTool
public S50(byte[] uid)
{
_sectors.Capacity = 16;
if (uid.Length != 4) { throw new Exception("不恰当的4字节UID长度"); }
if (uid.Length != 4) { throw new Exception(Resources.4UID长度); }
for (int i = 0; i < 16; i++)
{
if (i == 0) { _sectors.Add(new Sector(uid)); }
@ -365,17 +366,17 @@ namespace MifareOneTool
}
public void LoadFromMfd(string file)
{
if (!File.Exists(file)) { throw new IOException("加载的文件不存在。"); }
if (new FileInfo(file).Length != 1024) { throw new IOException("加载的S50卡文件大小异常。"); }
if (!File.Exists(file)) { throw new IOException(Resources.); }
if (new FileInfo(file).Length != 1024) { throw new IOException(Resources.S50卡文件大小异常); }
byte[] loadByte = File.ReadAllBytes(file);
this.Wipe();
this.SectorsRaw = (byte[])loadByte;
}
public void LoadFromMctTxt(string file)
{
if (!File.Exists(file)) { throw new IOException("加载的文件不存在。"); }
if (!File.Exists(file)) { throw new IOException(Resources.); }
long fileLength=new FileInfo(file).Length;
if (fileLength < 2200 || fileLength > 2400) { throw new IOException("加载的S50卡文件大小异常。"); }
if (fileLength < 2200 || fileLength > 2400) { throw new IOException(Resources.S50卡文件大小异常); }
List<string> lines = new List<string>(File.ReadAllLines(file));
List<string> invaild = new List<string>();
foreach (string line in lines)
@ -391,7 +392,7 @@ namespace MifareOneTool
}
if (lines.Count != 64)
{
throw new Exception("文件内不是含有64个块数据可能不完整或不兼容。");
throw new Exception(Resources.64_可能不完整或不兼容);
}
this.Wipe();
for (int i = 0; i < lines.Count; i++)
@ -409,7 +410,7 @@ namespace MifareOneTool
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 16; i++)
{
sb.AppendLine("+Sector: " + i.ToString());
sb.AppendLine(Resources._Sector + i.ToString());
for (int j = 0; j < 4; j++)
{
sb.AppendLine(Utils.Hex2Str(this._sectors[i].Block[j]));

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2202
MifareOneTool/Form1.ru.resx Normal file

File diff suppressed because it is too large Load Diff

1615
MifareOneTool/Form1.zh.resx Normal file

File diff suppressed because it is too large Load Diff

View File

@ -28,72 +28,95 @@
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormDiff));
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.button3 = new System.Windows.Forms.Button();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel();
this.tableLayoutPanel1.SuspendLayout();
this.flowLayoutPanel1.SuspendLayout();
this.flowLayoutPanel2.SuspendLayout();
this.SuspendLayout();
//
// richTextBox1
//
this.richTextBox1.BackColor = System.Drawing.Color.Black;
this.richTextBox1.ForeColor = System.Drawing.Color.Orange;
this.richTextBox1.Location = new System.Drawing.Point(12, 74);
this.richTextBox1.BackColor = System.Drawing.Color.AliceBlue;
resources.ApplyResources(this.richTextBox1, "richTextBox1");
this.richTextBox1.ForeColor = System.Drawing.Color.Black;
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.ReadOnly = true;
this.richTextBox1.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.ForcedVertical;
this.richTextBox1.Size = new System.Drawing.Size(469, 474);
this.richTextBox1.TabIndex = 0;
this.richTextBox1.Text = "欢迎使用M1T内置的差异工具\n说明\n点击上方的AB两个按键分别选择MFD文件。\n然后点击“比较”即可看到结果。\n";
this.richTextBox1.TextChanged += new System.EventHandler(this.RichTextBox1_TextChanged);
//
// button1
//
this.button1.Location = new System.Drawing.Point(12, 12);
resources.ApplyResources(this.button1, "button1");
this.button1.BackColor = System.Drawing.Color.White;
this.button1.FlatAppearance.BorderColor = System.Drawing.Color.DodgerBlue;
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(388, 25);
this.button1.TabIndex = 1;
this.button1.Text = "A";
this.button1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.button1.UseVisualStyleBackColor = true;
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
this.button2.Location = new System.Drawing.Point(12, 43);
resources.ApplyResources(this.button2, "button2");
this.button2.BackColor = System.Drawing.Color.White;
this.button2.FlatAppearance.BorderColor = System.Drawing.Color.DodgerBlue;
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(388, 25);
this.button2.TabIndex = 2;
this.button2.Text = "B";
this.button2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.button2.UseVisualStyleBackColor = true;
this.button2.UseVisualStyleBackColor = false;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// button3
//
this.button3.Location = new System.Drawing.Point(406, 12);
resources.ApplyResources(this.button3, "button3");
this.button3.BackColor = System.Drawing.Color.DodgerBlue;
this.button3.FlatAppearance.BorderColor = System.Drawing.Color.DodgerBlue;
this.button3.ForeColor = System.Drawing.Color.White;
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(75, 56);
this.button3.TabIndex = 3;
this.button3.Text = "比较";
this.button3.UseVisualStyleBackColor = true;
this.button3.UseVisualStyleBackColor = false;
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.flowLayoutPanel1, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.button3, 1, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// flowLayoutPanel1
//
resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1");
this.flowLayoutPanel1.Controls.Add(this.button1);
this.flowLayoutPanel1.Controls.Add(this.button2);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
//
// flowLayoutPanel2
//
resources.ApplyResources(this.flowLayoutPanel2, "flowLayoutPanel2");
this.flowLayoutPanel2.Controls.Add(this.tableLayoutPanel1);
this.flowLayoutPanel2.Controls.Add(this.richTextBox1);
this.flowLayoutPanel2.Name = "flowLayoutPanel2";
//
// FormDiff
//
this.AcceptButton = this.button3;
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(493, 560);
this.Controls.Add(this.button3);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Controls.Add(this.richTextBox1);
this.Controls.Add(this.flowLayoutPanel2);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.Name = "FormDiff";
this.Text = "DiffTool";
this.Load += new System.EventHandler(this.FormDiff_Load);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.flowLayoutPanel1.ResumeLayout(false);
this.flowLayoutPanel1.PerformLayout();
this.flowLayoutPanel2.ResumeLayout(false);
this.flowLayoutPanel2.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
@ -103,5 +126,8 @@
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2;
}
}

View File

@ -1,4 +1,5 @@
using System;
using MifareOneTool.Properties;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
@ -26,8 +27,8 @@ namespace MifareOneTool
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.CheckFileExists = true;
ofd.Filter = "MFD文件|*.mfd;*.dump";
ofd.Title = "请选择需要打开的MFD文件(比较A)";
ofd.Filter = Resources.MFD文件_mfd_dump;
ofd.Title = Resources.MFD文件_比较A;
ofd.Multiselect = false;
if (ofd.ShowDialog() == DialogResult.OK)
{
@ -45,7 +46,7 @@ namespace MifareOneTool
}
catch (IOException ioe)
{
MessageBox.Show(ioe.Message, "打开出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show(ioe.Message, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
sa = new S50();
return;
}
@ -64,8 +65,8 @@ namespace MifareOneTool
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.CheckFileExists = true;
ofd.Filter = "MFD文件|*.mfd;*.dump";
ofd.Title = "请选择需要打开的MFD文件(比较B)";
ofd.Filter = Resources.MFD文件_mfd_dump;
ofd.Title = Resources.MFD文件_比较B;
ofd.Multiselect = false;
if (ofd.ShowDialog() == DialogResult.OK)
{
@ -83,7 +84,7 @@ namespace MifareOneTool
}
catch (IOException ioe)
{
MessageBox.Show(ioe.Message, "打开出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show(ioe.Message, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
sb = new S50();
return;
}
@ -98,7 +99,7 @@ namespace MifareOneTool
}
else
{
logAppend("AB文件中一个或两个无效。");
logAppend(Resources.AB文件中一个或两个无效);
}
}
private string Compare()
@ -107,8 +108,8 @@ namespace MifareOneTool
int diffCount = 0;
for (int i = 0; i < 16; i++)
{
stb.AppendLine("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
stb.AppendLine("扇区 " + i.ToString());
stb.AppendLine(Resources.res1);
stb.AppendLine(Resources.0 + i.ToString());
for (int a = 0; a < 4; a++)
{
string res = "";
@ -116,11 +117,11 @@ namespace MifareOneTool
{
if (sa.Sectors[i].Block[a][b] == sb.Sectors[i].Block[a][b])
{
res += "-- ";
res += Resources.res2;
}
else
{
res += "## ";
res += Resources.res3;
}
}
stb.AppendLine("A: " + Utils.Hex2StrWithSpan(sa.Sectors[i].Block[a]));
@ -133,7 +134,12 @@ namespace MifareOneTool
}
}
return "共找到 " + diffCount.ToString() + " 个块不同\n" + stb.ToString();
return Resources. + diffCount.ToString() + Resources._个块不同 + stb.ToString();
}
private void RichTextBox1_TextChanged(object sender, EventArgs e)
{
}
}
}

View File

@ -117,4 +117,700 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="button1.Text" xml:space="preserve">
<value>A</value>
</data>
<data name="button2.Text" xml:space="preserve">
<value>B</value>
</data>
<data name="button3.Text" xml:space="preserve">
<value>比较</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>DiffTool</value>
</data>
<data name="richTextBox1.Lines[0]" xml:space="preserve">
<value>欢迎使用M1T内置的差异工具</value>
</data>
<data name="richTextBox1.Lines[1]" xml:space="preserve">
<value>说明:</value>
</data>
<data name="richTextBox1.Lines[2]" xml:space="preserve">
<value>点击上方的AB两个按键分别选择MFD文件。</value>
</data>
<data name="richTextBox1.Lines[3]" xml:space="preserve">
<value>然后点击“比较”即可看到结果。</value>
</data>
<data name="richTextBox1.Text" xml:space="preserve">
<value>欢迎使用M1T内置的差异工具
说明:
点击上方的AB两个按键分别选择MFD文件。
然后点击“比较”即可看到结果。
</value>
<comment>Previous text: 欢迎使用M1T内置的差异工具
说明:
点击上方的AB两个按键分别选择MFD文件。
然后点击“比较”即可看到结果。
</comment>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="richTextBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="richTextBox1.Font" type="System.Drawing.Font, System.Drawing">
<value>Yu Gothic UI, 9.75pt</value>
</data>
<data name="richTextBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 94</value>
</data>
<data name="richTextBox1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 4, 2, 4</value>
</data>
<data name="richTextBox1.ScrollBars" type="System.Windows.Forms.RichTextBoxScrollBars, System.Windows.Forms">
<value>ForcedVertical</value>
</data>
<data name="richTextBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>402, 288</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="richTextBox1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;richTextBox1.Name" xml:space="preserve">
<value>richTextBox1</value>
</data>
<data name="&gt;&gt;richTextBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;richTextBox1.Parent" xml:space="preserve">
<value>flowLayoutPanel2</value>
</data>
<data name="&gt;&gt;richTextBox1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="button1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="button1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="button1.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
<value>Flat</value>
</data>
<data name="button1.Font" type="System.Drawing.Font, System.Drawing">
<value>Yu Gothic UI, 9.75pt</value>
</data>
<data name="button1.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 4</value>
</data>
<data name="button1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 4, 2, 4</value>
</data>
<data name="button1.Size" type="System.Drawing.Size, System.Drawing">
<value>339, 29</value>
</data>
<data name="button1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="button1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;button1.Name" xml:space="preserve">
<value>button1</value>
</data>
<data name="&gt;&gt;button1.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button1.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;button1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="button2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="button2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="button2.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
<value>Flat</value>
</data>
<data name="button2.Font" type="System.Drawing.Font, System.Drawing">
<value>Yu Gothic UI, 9.75pt</value>
</data>
<data name="button2.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 41</value>
</data>
<data name="button2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 4, 2, 4</value>
</data>
<data name="button2.Size" type="System.Drawing.Size, System.Drawing">
<value>339, 29</value>
</data>
<data name="button2.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="button2.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;button2.Name" xml:space="preserve">
<value>button2</value>
</data>
<data name="&gt;&gt;button2.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button2.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;button2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="button3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="button3.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="button3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="button3.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
<value>Flat</value>
</data>
<data name="button3.Font" type="System.Drawing.Font, System.Drawing">
<value>Yu Gothic UI, 9.75pt</value>
</data>
<data name="button3.Location" type="System.Drawing.Point, System.Drawing">
<value>351, 4</value>
</data>
<data name="button3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 4, 2, 4</value>
</data>
<data name="button3.Size" type="System.Drawing.Size, System.Drawing">
<value>47, 74</value>
</data>
<data name="button3.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;button3.Name" xml:space="preserve">
<value>button3</value>
</data>
<data name="&gt;&gt;button3.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button3.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;button3.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Name" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 4</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 4, 3, 4</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>400, 82</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>flowLayoutPanel2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="flowLayoutPanel1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="button3" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="flowLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="flowLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="flowLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="flowLayoutPanel1.FlowDirection" type="System.Windows.Forms.FlowDirection, System.Windows.Forms">
<value>TopDown</value>
</data>
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 4</value>
</data>
<data name="flowLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 4, 3, 4</value>
</data>
<data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>343, 74</value>
</data>
<data name="flowLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="flowLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="flowLayoutPanel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="flowLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="flowLayoutPanel2.FlowDirection" type="System.Windows.Forms.FlowDirection, System.Windows.Forms">
<value>TopDown</value>
</data>
<data name="flowLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="flowLayoutPanel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 4, 3, 4</value>
</data>
<data name="flowLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>432, 596</value>
</data>
<data name="flowLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;flowLayoutPanel2.Name" xml:space="preserve">
<value>flowLayoutPanel2</value>
</data>
<data name="&gt;&gt;flowLayoutPanel2.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;flowLayoutPanel2.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;flowLayoutPanel2.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>7, 17</value>
</data>
<data name="$this.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="$this.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>432, 596</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Yu Gothic UI, 9.75pt</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEASEgAAAEAIACIVAAAFgAAACgAAABIAAAAkAAAAAEAIAAAAAAAAFEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAA5wAAAGUAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI8AAAD/AAAA/wAAAO0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAjwAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHAAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAABwAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADpAAAAgQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABCAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAA0AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaQAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAACBAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAhwAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AI8AAAD/AAAA/wAAAOoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByAAAAvgAA
AE4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAA/wAAAP8AAAD/AAAA/wAAAO8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAACHAAAA/wAAAP8AAAD/AAAA/wAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAABAAAAgQAAAOgAAADoAAAAgQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAOkAAADpAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAACHAAAA/wAAAP8AAAD/AAAA/wAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAA/wAA
AP8AAAD/AAAA/wAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNAAAAvgAAAHIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADmAAAA/wAAAP8AAACPAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAABpAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAaQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAADwAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAACHAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAAYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAgQAA
AOgAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAABpAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAH8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAADwAAAA/wAAAP8AAACPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlAAAA5wAA
AH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////8AAAD///////////8A
AAD///////////8AAAD///////////8AAAD///////////8AAAD///////////8AAAD///////////8A
AAD///////////8AAAD//8f///////8AAAD//4f///////8AAAD//wf///////8AAAD//gf///////8A
AAD//Af///////8AAAD/+Af///////8AAAD/8Af///////8AAAD/4AAAAAAA//8AAAD/wAAAAAAAf/8A
AAD/gAAAAAAAf/8AAAD/gAAAAAAAf/8AAAD/wAAAAAAAf/8AAAD/4AAAAAAAf/8AAAD/8Af////gf/8A
AAD/+Af////gf/8AAAD//Af////gf/8AAAD//gf////gf/8AAAD//wf////gf/8AAAD//4f////gf/8A
AAD//8f////gf/8AAAD////////gf/8AAAD////////gf/8AAAD////////gf/8AAAD////////gf/8A
AAD////////gf/8AAAD///////////8AAAD///////////8AAAD///////////8AAAD///////////8A
AAD///////////8AAAD///////////8AAAD//w////////8AAAD//gf///////8AAAD//gf///////8A
AAD//gf///////8AAAD//gf///////8AAAD//gf////j//8AAAD//gf////h//8AAAD//gf////g//8A
AAD//gf////gf/8AAAD//gf////gP/8AAAD//gf////gH/8AAAD//gf////gD/8AAAD//gAAAAAAB/8A
AAD//gAAAAAAA/8AAAD//gAAAAAAAf8AAAD//gAAAAAAAf8AAAD//gAAAAAAA/8AAAD//gAAAAAAB/8A
AAD////////gD/8AAAD////////gH/8AAAD////////gP/8AAAD////////gf/8AAAD////////g//8A
AAD////////h//8AAAD////////j//8AAAD///////////8AAAD///////////8AAAD///////////8A
AAD///////////8AAAD///////////8AAAD///////////8AAAD///////////8AAAD///////////8A
AAA=
</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 4, 2, 4</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FormDiff</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -0,0 +1,155 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="button1.Text" xml:space="preserve">
<value>A</value>
</data>
<data name="button2.Text" xml:space="preserve">
<value>В</value>
</data>
<data name="button3.Text" xml:space="preserve">
<value>Сравнить</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Сравнение дампов</value>
</data>
<data name="richTextBox1.Lines[0]" xml:space="preserve">
<value>Добро пожаловать во встроенный инструмент различий M1T!</value>
</data>
<data name="richTextBox1.Lines[1]" xml:space="preserve">
<value>Описание:</value>
</data>
<data name="richTextBox1.Lines[2]" xml:space="preserve">
<value>Нажмите две кнопки AB выше, чтобы выбрать файл MFD.</value>
</data>
<data name="richTextBox1.Lines[3]" xml:space="preserve">
<value>Затем нажмите «Сравнить», чтобы увидеть результаты.</value>
</data>
<data name="richTextBox1.Text" xml:space="preserve">
<value>Добро пожаловать во встроенный инструмент сравнения дампов!
Описание:
1. Нажмите А или В, чтобы выбрать файл MFD.
2. Нажмите «Сравнить», чтобы увидеть результаты.</value>
<comment>Previous text: 欢迎使用M1T内置的差异工具
说明:
点击上方的AB两个按键分别选择MFD文件。
然后点击“比较”即可看到结果。
</comment>
</data>
</root>

View File

@ -0,0 +1,156 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="button1.Text" xml:space="preserve">
<value>A</value>
</data>
<data name="button2.Text" xml:space="preserve">
<value>B</value>
</data>
<data name="button3.Text" xml:space="preserve">
<value>比较</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>DiffTool</value>
</data>
<data name="richTextBox1.Lines[0]" xml:space="preserve">
<value>欢迎使用M1T内置的差异工具</value>
</data>
<data name="richTextBox1.Lines[1]" xml:space="preserve">
<value>说明:</value>
</data>
<data name="richTextBox1.Lines[2]" xml:space="preserve">
<value>点击上方的AB两个按键分别选择MFD文件。</value>
</data>
<data name="richTextBox1.Lines[3]" xml:space="preserve">
<value>然后点击“比较”即可看到结果。</value>
</data>
<data name="richTextBox1.Text" xml:space="preserve">
<value>欢迎使用M1T内置的差异工具
说明:
点击上方的AB两个按键分别选择MFD文件。
然后点击“比较”即可看到结果。
</value>
<comment>Previous text: 欢迎使用M1T内置的差异工具
说明:
点击上方的AB两个按键分别选择MFD文件。
然后点击“比较”即可看到结果。
</comment>
</data>
</root>

View File

@ -29,6 +29,9 @@
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormHTool));
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -52,51 +55,61 @@
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.buttonSaveSectorEdit = new System.Windows.Forms.Button();
this.comboBox4 = new System.Windows.Forms.ComboBox();
this.comboBox3 = new System.Windows.Forms.ComboBox();
this.comboBox2 = new System.Windows.Forms.ComboBox();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.label9 = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.flowLayoutPanel3 = new System.Windows.Forms.FlowLayoutPanel();
this.label6 = new System.Windows.Forms.Label();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.label7 = new System.Windows.Forms.Label();
this.comboBox2 = new System.Windows.Forms.ComboBox();
this.label8 = new System.Windows.Forms.Label();
this.comboBox3 = new System.Windows.Forms.ComboBox();
this.label9 = new System.Windows.Forms.Label();
this.comboBox4 = new System.Windows.Forms.ComboBox();
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
this.label4 = new System.Windows.Forms.Label();
this.keyAEdit = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.keyBEdit = new System.Windows.Forms.TextBox();
this.keyAEdit = new System.Windows.Forms.TextBox();
this.block2Edit = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.block1Edit = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.block0Edit = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
this.labelCurSec = new System.Windows.Forms.Label();
this.buttonSaveSectorEdit = new System.Windows.Forms.Button();
this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel();
this.label1 = new System.Windows.Forms.Label();
this.block0Edit = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.block1Edit = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.block2Edit = new System.Windows.Forms.TextBox();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.s50BindingSource = new System.Windows.Forms.BindingSource(this.components);
this.menuStrip1.SuspendLayout();
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.groupBox2.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.flowLayoutPanel3.SuspendLayout();
this.tableLayoutPanel3.SuspendLayout();
this.flowLayoutPanel1.SuspendLayout();
this.flowLayoutPanel2.SuspendLayout();
this.groupBox3.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.s50BindingSource)).BeginInit();
this.SuspendLayout();
//
// menuStrip1
//
resources.ApplyResources(this.menuStrip1, "menuStrip1");
this.menuStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem,
this.ToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Padding = new System.Windows.Forms.Padding(4, 2, 0, 2);
this.menuStrip1.Size = new System.Drawing.Size(628, 25);
this.menuStrip1.TabIndex = 0;
this.menuStrip1.Text = "menuStrip1";
//
// 文件ToolStripMenuItem
//
resources.ApplyResources(this.ToolStripMenuItem, "文件ToolStripMenuItem");
this.ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem,
this.ToolStripMenuItem,
@ -105,57 +118,45 @@
this.toolStripSeparator1,
this.退ToolStripMenuItem});
this.ToolStripMenuItem.Name = "文件ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
this.ToolStripMenuItem.Text = "文件";
//
// 新建ToolStripMenuItem
//
resources.ApplyResources(this.ToolStripMenuItem, "新建ToolStripMenuItem");
this.ToolStripMenuItem.Name = "新建ToolStripMenuItem";
this.ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
this.ToolStripMenuItem.Size = new System.Drawing.Size(190, 22);
this.ToolStripMenuItem.Text = "新建";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 打开ToolStripMenuItem
//
resources.ApplyResources(this.ToolStripMenuItem, "打开ToolStripMenuItem");
this.ToolStripMenuItem.Name = "打开ToolStripMenuItem";
this.ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
this.ToolStripMenuItem.Size = new System.Drawing.Size(190, 22);
this.ToolStripMenuItem.Text = "打开";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 保存ToolStripMenuItem
//
resources.ApplyResources(this.ToolStripMenuItem, "保存ToolStripMenuItem");
this.ToolStripMenuItem.Name = "保存ToolStripMenuItem";
this.ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
this.ToolStripMenuItem.Size = new System.Drawing.Size(190, 22);
this.ToolStripMenuItem.Text = "保存";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 另存为ToolStripMenuItem
//
resources.ApplyResources(this.ToolStripMenuItem, "另存为ToolStripMenuItem");
this.ToolStripMenuItem.Name = "另存为ToolStripMenuItem";
this.ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
| System.Windows.Forms.Keys.S)));
this.ToolStripMenuItem.Size = new System.Drawing.Size(190, 22);
this.ToolStripMenuItem.Text = "另存为";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// toolStripSeparator1
//
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(187, 6);
//
// 退出ToolStripMenuItem
//
resources.ApplyResources(this.退ToolStripMenuItem, "退出ToolStripMenuItem");
this.退ToolStripMenuItem.Name = "退出ToolStripMenuItem";
this.退ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.X)));
this.退ToolStripMenuItem.Size = new System.Drawing.Size(190, 22);
this.退ToolStripMenuItem.Text = "退出";
this.退ToolStripMenuItem.Click += new System.EventHandler(this.退ToolStripMenuItem_Click);
//
// 工具ToolStripMenuItem
//
resources.ApplyResources(this.ToolStripMenuItem, "工具ToolStripMenuItem");
this.ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.UIDToolStripMenuItem,
this.toolStripSeparator2,
@ -168,418 +169,373 @@
this.toolStripSeparator4,
this.ToolStripMenuItem});
this.ToolStripMenuItem.Name = "工具ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
this.ToolStripMenuItem.Text = "工具";
//
// 修改UIDToolStripMenuItem
//
resources.ApplyResources(this.UIDToolStripMenuItem, "修改UIDToolStripMenuItem");
this.UIDToolStripMenuItem.Name = "修改UIDToolStripMenuItem";
this.UIDToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.U)));
this.UIDToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
this.UIDToolStripMenuItem.Text = "修改UID";
this.UIDToolStripMenuItem.Click += new System.EventHandler(this.UIDToolStripMenuItem_Click);
//
// toolStripSeparator2
//
resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2");
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(209, 6);
//
// 检查全卡ToolStripMenuItem
//
resources.ApplyResources(this.ToolStripMenuItem, "检查全卡ToolStripMenuItem");
this.ToolStripMenuItem.Name = "检查全卡ToolStripMenuItem";
this.ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.J)));
this.ToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
this.ToolStripMenuItem.Text = "检查全卡";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 检查并纠正全卡ToolStripMenuItem
//
resources.ApplyResources(this.ToolStripMenuItem, "检查并纠正全卡ToolStripMenuItem");
this.ToolStripMenuItem.Name = "检查并纠正全卡ToolStripMenuItem";
this.ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.K)));
this.ToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
this.ToolStripMenuItem.Text = "检查并纠正全卡";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// toolStripSeparator3
//
resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(209, 6);
//
// 导入MCT格式ToolStripMenuItem
//
resources.ApplyResources(this.MCT格式ToolStripMenuItem, "导入MCT格式ToolStripMenuItem");
this.MCT格式ToolStripMenuItem.Name = "导入MCT格式ToolStripMenuItem";
this.MCT格式ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.L)));
this.MCT格式ToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
this.MCT格式ToolStripMenuItem.Text = "导入MCT格式";
this.MCT格式ToolStripMenuItem.Click += new System.EventHandler(this.MCT格式ToolStripMenuItem_Click);
//
// 导出为MCT格式ToolStripMenuItem
//
resources.ApplyResources(this.MCT格式ToolStripMenuItem, "导出为MCT格式ToolStripMenuItem");
this.MCT格式ToolStripMenuItem.Name = "导出为MCT格式ToolStripMenuItem";
this.MCT格式ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.M)));
this.MCT格式ToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
this.MCT格式ToolStripMenuItem.Text = "导出为MCT格式";
this.MCT格式ToolStripMenuItem.Click += new System.EventHandler(this.MCT格式ToolStripMenuItem_Click);
//
// 导出密钥字典ToolStripMenuItem
//
resources.ApplyResources(this.ToolStripMenuItem, "导出密钥字典ToolStripMenuItem");
this.ToolStripMenuItem.Name = "导出密钥字典ToolStripMenuItem";
this.ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
this.ToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
this.ToolStripMenuItem.Text = "导出密钥字典";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// toolStripSeparator4
//
resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4");
this.toolStripSeparator4.Name = "toolStripSeparator4";
this.toolStripSeparator4.Size = new System.Drawing.Size(209, 6);
//
// 列出全卡密钥ToolStripMenuItem
//
resources.ApplyResources(this.ToolStripMenuItem, "列出全卡密钥ToolStripMenuItem");
this.ToolStripMenuItem.Name = "列出全卡密钥ToolStripMenuItem";
this.ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I)));
this.ToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
this.ToolStripMenuItem.Text = "列出全卡密钥";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// groupBox1
//
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.BackColor = System.Drawing.Color.DodgerBlue;
this.groupBox1.Controls.Add(this.dataGridView1);
this.groupBox1.Location = new System.Drawing.Point(9, 25);
this.groupBox1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.groupBox1.ForeColor = System.Drawing.Color.White;
this.groupBox1.Name = "groupBox1";
this.groupBox1.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.groupBox1.Size = new System.Drawing.Size(188, 327);
this.groupBox1.TabIndex = 1;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "扇区列表";
//
// dataGridView1
//
resources.ApplyResources(this.dataGridView1, "dataGridView1");
this.dataGridView1.AllowUserToAddRows = false;
this.dataGridView1.AllowUserToDeleteRows = false;
this.dataGridView1.AllowUserToResizeColumns = false;
this.dataGridView1.AllowUserToResizeRows = false;
this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.dataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;
this.dataGridView1.BackgroundColor = System.Drawing.Color.AliceBlue;
this.dataGridView1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle1.BackColor = System.Drawing.Color.AliceBlue;
dataGridViewCellStyle1.Font = new System.Drawing.Font("Yu Gothic UI Semibold", 9.75F, System.Drawing.FontStyle.Bold);
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Column1});
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle2.Font = new System.Drawing.Font("Yu Gothic UI Semibold", 9.75F, System.Drawing.FontStyle.Bold);
dataGridViewCellStyle2.ForeColor = System.Drawing.Color.Black;
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle2;
this.dataGridView1.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically;
this.dataGridView1.Location = new System.Drawing.Point(2, 16);
this.dataGridView1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.dataGridView1.GridColor = System.Drawing.Color.SkyBlue;
this.dataGridView1.MultiSelect = false;
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.ReadOnly = true;
this.dataGridView1.RowHeadersWidth = 20;
this.dataGridView1.RowTemplate.Height = 27;
this.dataGridView1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dataGridView1.Size = new System.Drawing.Size(184, 309);
this.dataGridView1.TabIndex = 0;
this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick);
//
// Column1
//
this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.Column1.HeaderText = "扇区";
resources.ApplyResources(this.Column1, "Column1");
this.Column1.Name = "Column1";
this.Column1.ReadOnly = true;
this.Column1.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
//
// groupBox2
//
this.groupBox2.Controls.Add(this.buttonSaveSectorEdit);
this.groupBox2.Controls.Add(this.comboBox4);
this.groupBox2.Controls.Add(this.comboBox3);
this.groupBox2.Controls.Add(this.comboBox2);
this.groupBox2.Controls.Add(this.comboBox1);
this.groupBox2.Controls.Add(this.label9);
this.groupBox2.Controls.Add(this.label8);
this.groupBox2.Controls.Add(this.label7);
this.groupBox2.Controls.Add(this.label6);
this.groupBox2.Controls.Add(this.label5);
this.groupBox2.Controls.Add(this.keyBEdit);
this.groupBox2.Controls.Add(this.keyAEdit);
this.groupBox2.Controls.Add(this.block2Edit);
this.groupBox2.Controls.Add(this.label4);
this.groupBox2.Controls.Add(this.label3);
this.groupBox2.Controls.Add(this.block1Edit);
this.groupBox2.Controls.Add(this.label2);
this.groupBox2.Controls.Add(this.block0Edit);
this.groupBox2.Controls.Add(this.label1);
this.groupBox2.Controls.Add(this.labelCurSec);
this.groupBox2.Location = new System.Drawing.Point(201, 25);
this.groupBox2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.BackColor = System.Drawing.Color.DodgerBlue;
this.groupBox2.Controls.Add(this.tableLayoutPanel2);
this.groupBox2.ForeColor = System.Drawing.Color.White;
this.groupBox2.Name = "groupBox2";
this.groupBox2.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.groupBox2.Size = new System.Drawing.Size(219, 327);
this.groupBox2.TabIndex = 2;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "扇区信息";
//
// buttonSaveSectorEdit
// tableLayoutPanel2
//
this.buttonSaveSectorEdit.Location = new System.Drawing.Point(110, 13);
this.buttonSaveSectorEdit.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.buttonSaveSectorEdit.Name = "buttonSaveSectorEdit";
this.buttonSaveSectorEdit.Size = new System.Drawing.Size(104, 20);
this.buttonSaveSectorEdit.TabIndex = 20;
this.buttonSaveSectorEdit.Text = "修改扇区(Enter)";
this.buttonSaveSectorEdit.UseVisualStyleBackColor = true;
this.buttonSaveSectorEdit.Click += new System.EventHandler(this.buttonSaveSectorEdit_Click);
resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2");
this.tableLayoutPanel2.BackColor = System.Drawing.Color.White;
this.tableLayoutPanel2.Controls.Add(this.flowLayoutPanel3, 0, 3);
this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel3, 0, 2);
this.tableLayoutPanel2.Controls.Add(this.flowLayoutPanel1, 0, 0);
this.tableLayoutPanel2.Controls.Add(this.flowLayoutPanel2, 0, 1);
this.tableLayoutPanel2.ForeColor = System.Drawing.Color.Black;
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
//
// flowLayoutPanel3
//
resources.ApplyResources(this.flowLayoutPanel3, "flowLayoutPanel3");
this.flowLayoutPanel3.Controls.Add(this.label6);
this.flowLayoutPanel3.Controls.Add(this.comboBox1);
this.flowLayoutPanel3.Controls.Add(this.label7);
this.flowLayoutPanel3.Controls.Add(this.comboBox2);
this.flowLayoutPanel3.Controls.Add(this.label8);
this.flowLayoutPanel3.Controls.Add(this.comboBox3);
this.flowLayoutPanel3.Controls.Add(this.label9);
this.flowLayoutPanel3.Controls.Add(this.comboBox4);
this.flowLayoutPanel3.Name = "flowLayoutPanel3";
//
// label6
//
resources.ApplyResources(this.label6, "label6");
this.label6.Name = "label6";
//
// comboBox1
//
resources.ApplyResources(this.comboBox1, "comboBox1");
this.comboBox1.BackColor = System.Drawing.Color.AliceBlue;
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Items.AddRange(new object[] {
resources.GetString("comboBox1.Items"),
resources.GetString("comboBox1.Items1"),
resources.GetString("comboBox1.Items2"),
resources.GetString("comboBox1.Items3"),
resources.GetString("comboBox1.Items4"),
resources.GetString("comboBox1.Items5"),
resources.GetString("comboBox1.Items6"),
resources.GetString("comboBox1.Items7")});
this.comboBox1.Name = "comboBox1";
this.comboBox1.Validating += new System.ComponentModel.CancelEventHandler(this.comboBox1_Validating);
//
// label7
//
resources.ApplyResources(this.label7, "label7");
this.label7.Name = "label7";
//
// comboBox2
//
resources.ApplyResources(this.comboBox2, "comboBox2");
this.comboBox2.BackColor = System.Drawing.Color.AliceBlue;
this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox2.FormattingEnabled = true;
this.comboBox2.Items.AddRange(new object[] {
resources.GetString("comboBox2.Items"),
resources.GetString("comboBox2.Items1"),
resources.GetString("comboBox2.Items2"),
resources.GetString("comboBox2.Items3"),
resources.GetString("comboBox2.Items4"),
resources.GetString("comboBox2.Items5"),
resources.GetString("comboBox2.Items6"),
resources.GetString("comboBox2.Items7")});
this.comboBox2.Name = "comboBox2";
this.comboBox2.Validating += new System.ComponentModel.CancelEventHandler(this.comboBox1_Validating);
//
// label8
//
resources.ApplyResources(this.label8, "label8");
this.label8.Name = "label8";
//
// comboBox3
//
resources.ApplyResources(this.comboBox3, "comboBox3");
this.comboBox3.BackColor = System.Drawing.Color.AliceBlue;
this.comboBox3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox3.FormattingEnabled = true;
this.comboBox3.Items.AddRange(new object[] {
resources.GetString("comboBox3.Items"),
resources.GetString("comboBox3.Items1"),
resources.GetString("comboBox3.Items2"),
resources.GetString("comboBox3.Items3"),
resources.GetString("comboBox3.Items4"),
resources.GetString("comboBox3.Items5"),
resources.GetString("comboBox3.Items6"),
resources.GetString("comboBox3.Items7")});
this.comboBox3.Name = "comboBox3";
this.comboBox3.Validating += new System.ComponentModel.CancelEventHandler(this.comboBox1_Validating);
//
// label9
//
resources.ApplyResources(this.label9, "label9");
this.label9.Name = "label9";
//
// comboBox4
//
resources.ApplyResources(this.comboBox4, "comboBox4");
this.comboBox4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox4.DropDownWidth = 400;
this.comboBox4.FormattingEnabled = true;
this.comboBox4.Items.AddRange(new object[] {
"[不可逆]KeyA:A写/AC:A只读/KeyB:A读写",
"KeyA:A写/AC:A读写/KeyB:A读写",
"[不可逆]KeyA:不能读写/AC:A只读/KeyB:A读",
"KeyA:B写/AC:A只读B读写/KeyB:B写",
"[不可逆]KeyA:B写/AC:AB只读/KeyB:B写",
"KeyA:不能读写/AC:A只读B读写/KeyB:不能读写",
"[不可逆]KeyA:不能读写/AC:AB只读/KeyB:不能读写",
"[不可逆]KeyA:不能读写/AC:AB只读/KeyB:不能读写(重复了?)"});
this.comboBox4.Location = new System.Drawing.Point(4, 303);
this.comboBox4.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.GetString("comboBox4.Items"),
resources.GetString("comboBox4.Items1"),
resources.GetString("comboBox4.Items2"),
resources.GetString("comboBox4.Items3"),
resources.GetString("comboBox4.Items4"),
resources.GetString("comboBox4.Items5"),
resources.GetString("comboBox4.Items6"),
resources.GetString("comboBox4.Items7")});
this.comboBox4.Name = "comboBox4";
this.comboBox4.Size = new System.Drawing.Size(211, 20);
this.comboBox4.TabIndex = 19;
this.comboBox4.Validating += new System.ComponentModel.CancelEventHandler(this.comboBox1_Validating);
//
// comboBox3
// tableLayoutPanel3
//
this.comboBox3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox3.FormattingEnabled = true;
this.comboBox3.Items.AddRange(new object[] {
"KeyAB读写及增减值",
"[只读]KeyAB读及减值/不可写及增值",
"[只读]KeyAB读/不可写及增减值",
"KeyB读写/不可增减值",
"KeyAB读/KeyB写/不可增减值",
"[只读]KeyB读/不可写及增减值",
"KeyAB读及减值/KeyB写及增值",
"[只读]锁死该扇区"});
this.comboBox3.Location = new System.Drawing.Point(4, 268);
this.comboBox3.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.comboBox3.Name = "comboBox3";
this.comboBox3.Size = new System.Drawing.Size(211, 20);
this.comboBox3.TabIndex = 18;
this.comboBox3.Validating += new System.ComponentModel.CancelEventHandler(this.comboBox1_Validating);
//
// comboBox2
//
this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox2.FormattingEnabled = true;
this.comboBox2.Items.AddRange(new object[] {
"KeyAB读写及增减值",
"[只读]KeyAB读及减值/不可写及增值",
"[只读]KeyAB读/不可写及增减值",
"KeyB读写/不可增减值",
"KeyAB读/KeyB写/不可增减值",
"[只读]KeyB读/不可写及增减值",
"KeyAB读及减值/KeyB写及增值",
"[只读]锁死该扇区"});
this.comboBox2.Location = new System.Drawing.Point(4, 233);
this.comboBox2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.comboBox2.Name = "comboBox2";
this.comboBox2.Size = new System.Drawing.Size(211, 20);
this.comboBox2.TabIndex = 17;
this.comboBox2.Validating += new System.ComponentModel.CancelEventHandler(this.comboBox1_Validating);
//
// comboBox1
//
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Items.AddRange(new object[] {
"KeyAB读写及增减值",
"[只读]KeyAB读及减值/不可写及增值",
"[只读]KeyAB读/不可写及增减值",
"KeyB读写/不可增减值",
"KeyAB读/KeyB写/不可增减值",
"[只读]KeyB读/不可写及增减值",
"KeyAB读及减值/KeyB写及增值",
"[只读]锁死该扇区"});
this.comboBox1.Location = new System.Drawing.Point(4, 198);
this.comboBox1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(211, 20);
this.comboBox1.TabIndex = 16;
this.comboBox1.Validating += new System.ComponentModel.CancelEventHandler(this.comboBox1_Validating);
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(2, 289);
this.label9.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(89, 12);
this.label9.TabIndex = 15;
this.label9.Text = "Key/ACbits权限";
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(4, 254);
this.label8.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(47, 12);
this.label8.TabIndex = 14;
this.label8.Text = "2块权限";
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(2, 218);
this.label7.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(47, 12);
this.label7.TabIndex = 13;
this.label7.Text = "1块权限";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(4, 183);
this.label6.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(47, 12);
this.label6.TabIndex = 12;
this.label6.Text = "0块权限";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(124, 146);
this.label5.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(29, 12);
this.label5.TabIndex = 11;
this.label5.Text = "KeyB";
//
// keyBEdit
//
this.keyBEdit.Location = new System.Drawing.Point(124, 161);
this.keyBEdit.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.keyBEdit.Name = "keyBEdit";
this.keyBEdit.Size = new System.Drawing.Size(91, 21);
this.keyBEdit.TabIndex = 10;
this.keyBEdit.Validating += new System.ComponentModel.CancelEventHandler(this.keyAEdit_Validating);
//
// keyAEdit
//
this.keyAEdit.Location = new System.Drawing.Point(4, 161);
this.keyAEdit.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.keyAEdit.Name = "keyAEdit";
this.keyAEdit.Size = new System.Drawing.Size(91, 21);
this.keyAEdit.TabIndex = 9;
this.keyAEdit.TextChanged += new System.EventHandler(this.keyAEdit_TextChanged);
this.keyAEdit.Validating += new System.ComponentModel.CancelEventHandler(this.keyAEdit_Validating);
//
// block2Edit
//
this.block2Edit.Location = new System.Drawing.Point(4, 124);
this.block2Edit.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.block2Edit.Name = "block2Edit";
this.block2Edit.Size = new System.Drawing.Size(211, 21);
this.block2Edit.TabIndex = 8;
this.block2Edit.Validating += new System.ComponentModel.CancelEventHandler(this.block0Edit_Validating);
resources.ApplyResources(this.tableLayoutPanel3, "tableLayoutPanel3");
this.tableLayoutPanel3.Controls.Add(this.label4, 0, 0);
this.tableLayoutPanel3.Controls.Add(this.keyAEdit, 0, 1);
this.tableLayoutPanel3.Controls.Add(this.label5, 1, 0);
this.tableLayoutPanel3.Controls.Add(this.keyBEdit, 1, 1);
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(4, 146);
this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label4, "label4");
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(29, 12);
this.label4.TabIndex = 7;
this.label4.Text = "KeyA";
//
// label3
// keyAEdit
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(4, 110);
this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(35, 12);
this.label3.TabIndex = 5;
this.label3.Text = "第2块";
resources.ApplyResources(this.keyAEdit, "keyAEdit");
this.keyAEdit.BackColor = System.Drawing.Color.White;
this.keyAEdit.Name = "keyAEdit";
this.keyAEdit.TextChanged += new System.EventHandler(this.keyAEdit_TextChanged);
this.keyAEdit.Validating += new System.ComponentModel.CancelEventHandler(this.keyAEdit_Validating);
//
// block1Edit
// label5
//
this.block1Edit.Location = new System.Drawing.Point(4, 87);
this.block1Edit.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.block1Edit.Name = "block1Edit";
this.block1Edit.Size = new System.Drawing.Size(211, 21);
this.block1Edit.TabIndex = 4;
this.block1Edit.Validating += new System.ComponentModel.CancelEventHandler(this.block0Edit_Validating);
resources.ApplyResources(this.label5, "label5");
this.label5.Name = "label5";
//
// label2
// keyBEdit
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(4, 73);
this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(35, 12);
this.label2.TabIndex = 3;
this.label2.Text = "第1块";
resources.ApplyResources(this.keyBEdit, "keyBEdit");
this.keyBEdit.BackColor = System.Drawing.Color.White;
this.keyBEdit.Name = "keyBEdit";
this.keyBEdit.Validating += new System.ComponentModel.CancelEventHandler(this.keyAEdit_Validating);
//
// block0Edit
// flowLayoutPanel1
//
this.block0Edit.Location = new System.Drawing.Point(4, 50);
this.block0Edit.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.block0Edit.Name = "block0Edit";
this.block0Edit.Size = new System.Drawing.Size(211, 21);
this.block0Edit.TabIndex = 2;
this.block0Edit.Validating += new System.ComponentModel.CancelEventHandler(this.block0Edit_Validating);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(4, 36);
this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(35, 12);
this.label1.TabIndex = 1;
this.label1.Text = "第0块";
resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1");
this.flowLayoutPanel1.Controls.Add(this.labelCurSec);
this.flowLayoutPanel1.Controls.Add(this.buttonSaveSectorEdit);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
//
// labelCurSec
//
this.labelCurSec.AutoSize = true;
this.labelCurSec.Location = new System.Drawing.Point(4, 17);
this.labelCurSec.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.labelCurSec, "labelCurSec");
this.labelCurSec.Name = "labelCurSec";
this.labelCurSec.Size = new System.Drawing.Size(113, 12);
this.labelCurSec.TabIndex = 0;
this.labelCurSec.Text = "当前选定扇区:??";
//
// buttonSaveSectorEdit
//
resources.ApplyResources(this.buttonSaveSectorEdit, "buttonSaveSectorEdit");
this.buttonSaveSectorEdit.BackColor = System.Drawing.Color.DodgerBlue;
this.buttonSaveSectorEdit.FlatAppearance.BorderColor = System.Drawing.Color.DodgerBlue;
this.buttonSaveSectorEdit.ForeColor = System.Drawing.Color.White;
this.buttonSaveSectorEdit.Name = "buttonSaveSectorEdit";
this.buttonSaveSectorEdit.UseVisualStyleBackColor = false;
this.buttonSaveSectorEdit.Click += new System.EventHandler(this.buttonSaveSectorEdit_Click);
//
// flowLayoutPanel2
//
resources.ApplyResources(this.flowLayoutPanel2, "flowLayoutPanel2");
this.flowLayoutPanel2.Controls.Add(this.label1);
this.flowLayoutPanel2.Controls.Add(this.block0Edit);
this.flowLayoutPanel2.Controls.Add(this.label2);
this.flowLayoutPanel2.Controls.Add(this.block1Edit);
this.flowLayoutPanel2.Controls.Add(this.label3);
this.flowLayoutPanel2.Controls.Add(this.block2Edit);
this.flowLayoutPanel2.Name = "flowLayoutPanel2";
//
// label1
//
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
//
// block0Edit
//
resources.ApplyResources(this.block0Edit, "block0Edit");
this.block0Edit.BackColor = System.Drawing.Color.White;
this.block0Edit.Name = "block0Edit";
this.block0Edit.Validating += new System.ComponentModel.CancelEventHandler(this.block0Edit_Validating);
//
// label2
//
resources.ApplyResources(this.label2, "label2");
this.label2.Name = "label2";
//
// block1Edit
//
resources.ApplyResources(this.block1Edit, "block1Edit");
this.block1Edit.BackColor = System.Drawing.Color.White;
this.block1Edit.Name = "block1Edit";
this.block1Edit.Validating += new System.ComponentModel.CancelEventHandler(this.block0Edit_Validating);
//
// label3
//
resources.ApplyResources(this.label3, "label3");
this.label3.Name = "label3";
//
// block2Edit
//
resources.ApplyResources(this.block2Edit, "block2Edit");
this.block2Edit.BackColor = System.Drawing.Color.White;
this.block2Edit.Name = "block2Edit";
this.block2Edit.Validating += new System.ComponentModel.CancelEventHandler(this.block0Edit_Validating);
//
// groupBox3
//
resources.ApplyResources(this.groupBox3, "groupBox3");
this.groupBox3.BackColor = System.Drawing.Color.DodgerBlue;
this.groupBox3.Controls.Add(this.richTextBox1);
this.groupBox3.Location = new System.Drawing.Point(424, 25);
this.groupBox3.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.groupBox3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.groupBox3.ForeColor = System.Drawing.Color.White;
this.groupBox3.Name = "groupBox3";
this.groupBox3.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.groupBox3.Size = new System.Drawing.Size(195, 327);
this.groupBox3.TabIndex = 3;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "输出";
//
// richTextBox1
//
this.richTextBox1.BackColor = System.Drawing.Color.Black;
this.richTextBox1.ForeColor = System.Drawing.Color.Cyan;
this.richTextBox1.Location = new System.Drawing.Point(4, 19);
this.richTextBox1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.richTextBox1, "richTextBox1");
this.richTextBox1.BackColor = System.Drawing.Color.AliceBlue;
this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.richTextBox1.ForeColor = System.Drawing.Color.Black;
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.ReadOnly = true;
this.richTextBox1.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
this.richTextBox1.Size = new System.Drawing.Size(187, 304);
this.richTextBox1.TabIndex = 0;
this.richTextBox1.Text = "欢迎使用M1T的集成编辑器S50HTool\n打开文件请点左上角文件-打开或Ctrl+O\n";
//
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.groupBox1, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.groupBox3, 2, 0);
this.tableLayoutPanel1.Controls.Add(this.groupBox2, 1, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// s50BindingSource
//
@ -588,19 +544,15 @@
// FormHTool
//
this.AcceptButton = this.buttonSaveSectorEdit;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(628, 362);
this.Controls.Add(this.groupBox3);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBox1);
this.BackColor = System.Drawing.Color.White;
this.Controls.Add(this.tableLayoutPanel1);
this.Controls.Add(this.menuStrip1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MainMenuStrip = this.menuStrip1;
this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.MaximizeBox = false;
this.Name = "FormHTool";
this.Text = "S50HTool-beta";
this.Load += new System.EventHandler(this.FormHTool_Load);
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
@ -608,7 +560,19 @@
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.tableLayoutPanel2.ResumeLayout(false);
this.tableLayoutPanel2.PerformLayout();
this.flowLayoutPanel3.ResumeLayout(false);
this.flowLayoutPanel3.PerformLayout();
this.tableLayoutPanel3.ResumeLayout(false);
this.tableLayoutPanel3.PerformLayout();
this.flowLayoutPanel1.ResumeLayout(false);
this.flowLayoutPanel1.PerformLayout();
this.flowLayoutPanel2.ResumeLayout(false);
this.flowLayoutPanel2.PerformLayout();
this.groupBox3.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.s50BindingSource)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@ -663,5 +627,11 @@
private System.Windows.Forms.ToolStripMenuItem MCT格式ToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel3;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
}
}

View File

@ -1,4 +1,5 @@
using System;
using MifareOneTool.Properties;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
@ -30,7 +31,7 @@ namespace MifareOneTool
{
int sectorIndex = dataGridView1.SelectedRows[0].Index;
reloadEdit(sectorIndex);
logAppend("显示扇区" + sectorIndex.ToString());
logAppend(Resources. + sectorIndex.ToString());
}
}
private void logAppend(string msg)
@ -52,10 +53,10 @@ namespace MifareOneTool
this.block2Edit.Text = "";
this.block1Edit.Text = "";
this.block0Edit.Text = "";
this.labelCurSec.Text = "当前选定扇区:??";
this.labelCurSec.Text = Resources.;
return;
}
labelCurSec.Text = "当前选定扇区:" + sectorIndex.ToString();
labelCurSec.Text = Resources.0 + sectorIndex.ToString();
block0Edit.Text = Form1.hex(currentS50.Sectors[sectorIndex].Block[0]);
block1Edit.Text = Form1.hex(currentS50.Sectors[sectorIndex].Block[1]);
block2Edit.Text = Form1.hex(currentS50.Sectors[sectorIndex].Block[2]);
@ -76,7 +77,7 @@ namespace MifareOneTool
^ currentS50.Sectors[sectorIndex].Block[0][2]
^ currentS50.Sectors[sectorIndex].Block[0][3]);
block0Edit.Text = Form1.hex(currentS50.Sectors[sectorIndex].Block[0]);
msg += "该扇区UID校验值错误已经自动为您更正。\n";
msg += Resources.UID校验值错误_已经自动为您更正;
}
if ((res & 0x02) == 0x02)
{
@ -84,7 +85,7 @@ namespace MifareOneTool
comboBox2.SelectedIndex = 0;
comboBox3.SelectedIndex = 0;
comboBox4.SelectedIndex = 1;
msg += "该扇区访问控制位无效,写入将会损坏卡片,已重新设置。\n";
msg += Resources.访_写入将会损坏卡片_已重新设置;
}
if ((res & 0x04) == 0x04)
{
@ -92,7 +93,7 @@ namespace MifareOneTool
comboBox2.SelectedIndex = 0;
comboBox3.SelectedIndex = 0;
comboBox4.SelectedIndex = 1;
msg += "该扇区访问控制位损坏,写入将会损坏卡片,已重新设置。\n";
msg += Resources.访_写入将会损坏卡片_已重新设置;
}
if (res != 0x00) { MessageBox.Show(msg.Trim()); }
@ -104,8 +105,8 @@ namespace MifareOneTool
reloadEdit(-1);
OpenFileDialog ofd = new OpenFileDialog();
ofd.CheckFileExists = true;
ofd.Filter = "MFD文件|*.mfd;*.dump";
ofd.Title = "请选择需要打开的MFD文件";
ofd.Filter = Resources.MFD文件_mfd_dump;
ofd.Title = Resources.MFD文件;
ofd.Multiselect = false;
if (ofd.ShowDialog() == DialogResult.OK)
{
@ -122,12 +123,12 @@ namespace MifareOneTool
}
catch (IOException ioe)
{
MessageBox.Show(ioe.Message, "打开出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show(ioe.Message, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
this.currentS50 = new S50();
return;
}
reloadList();
logAppend("打开了" + ofd.FileName);
logAppend(Resources. + ofd.FileName);
}
private void reloadList()
@ -154,9 +155,9 @@ namespace MifareOneTool
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "写入出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show(ex.Message, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
}
logAppend("已保存到" + currentFilename + "。");
logAppend(Resources. + currentFilename + Resources.res);
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
@ -165,9 +166,9 @@ namespace MifareOneTool
SaveFileDialog ofd = new SaveFileDialog();
ofd.AddExtension = true;
ofd.DefaultExt = ".mfd";
ofd.Title = "请选择MFD文件保存位置及文件名";
ofd.Title = Resources.MFD文件保存位置及文件名;
ofd.OverwritePrompt = true;
ofd.Filter = "MFD文件|*.mfd|DUMP文件|*.dump";
ofd.Filter = Resources.MFD文件_mfd_DUMP文件_dump;
if (ofd.ShowDialog() == DialogResult.OK)
{
filename = ofd.FileName;
@ -182,9 +183,9 @@ namespace MifareOneTool
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "写入出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show(ex.Message, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
}
logAppend("已保存到" + filename + "。");
logAppend(Resources. + filename + Resources.res);
}
private void block0Edit_Validating(object sender, CancelEventArgs e)
@ -232,7 +233,7 @@ namespace MifareOneTool
|| keyAEdit.BackColor != Color.Aquamarine
|| keyBEdit.BackColor != Color.Aquamarine)
{
MessageBox.Show("当前扇区数据仍有错误,不能执行修改。");
MessageBox.Show(Resources._不能执行修改);
return;
}
currentS50.Sectors[currentSector].Block[0] = Utils.Hex2Block(block0Edit.Text.Trim(),16);
@ -257,14 +258,14 @@ namespace MifareOneTool
{
dataGridView1.Rows[i].Cells[0].Value = currentS50.Sectors[i].Info(i);
}
logAppend("已更新扇区" + currentSector.ToString());
logAppend(Resources. + currentSector.ToString());
}
}
private void comboBox1_Validating(object sender, CancelEventArgs e)
{
ComboBox tb = ((ComboBox)sender);
if (tb.SelectedIndex < 0 || tb.Text == "##文件中的值错误##")
if (tb.SelectedIndex < 0 || tb.Text == Resources._文件中的值错误)
{
tb.BackColor = Color.Tomato;
//e.Cancel = true;
@ -280,29 +281,29 @@ namespace MifareOneTool
int[] res = currentS50.Verify();
if (res[16] == 0)
{
MessageBox.Show("该文件一切正常。");
MessageBox.Show(Resources.);
}
else
{
string msg = "该文件存在以下错误:\n";
string msg = Resources.;
for (int i = 0; i < 16; i++)
{
msg += "扇区" + i.ToString() + "\n";
msg += Resources. + i.ToString() + Resources.res4;
if ((res[i] & 0x01) == 0x01)
{
msg += "该扇区UID校验值错误请点击打开扇区0来自动更正。\n";
msg += Resources.UID校验值错误_请点击打开扇区0来自动更正;
}
if ((res[i] & 0x02) == 0x02)
{
msg += "该扇区访问控制位无效,写入将会损坏卡片,请重新设置。\n";
msg += Resources.访_写入将会损坏卡片_请重新设置;
}
if ((res[i] & 0x04) == 0x04)
{
msg += "该扇区访问控制位损坏,写入将会损坏卡片,请重新设置。\n";
msg += Resources.访_写入将会损坏卡片_请重新设置;
}
if (res[i] == 0)
{
msg += "该扇区一切正常。\n";
msg += Resources.;
}
}
richTextBox1.Clear();
@ -316,11 +317,11 @@ namespace MifareOneTool
byte[] buid = new byte[4];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetNonZeroBytes(buid);
string uid = Interaction.InputBox("请输入需要更改的UID卡号共8位十六进制数如E44A3BF1。", "请输入UID号", Form1.hex(buid), -1, -1).Trim();
string uid = Interaction.InputBox(Resources.UID卡号_共8位十六进制数_如E44A3B, Resources.UID号, Form1.hex(buid), -1, -1).Trim();
string pat = "[0-9A-Fa-f]{8}";
if (!Regex.IsMatch(uid, pat))
{
MessageBox.Show("输入的UID号不合法", "InputError", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show(Resources.UID号不合法, Resources.InputError, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
buid = Utils.Hex2Block(uid, 4);
@ -330,7 +331,7 @@ namespace MifareOneTool
currentS50.Sectors[0].Block[0][2] = buid[2];
currentS50.Sectors[0].Block[0][3] = buid[3];
currentS50.Sectors[0].Block[0][4] = bcc;
logAppend("UID已改为" + Form1.hex(buid) + "计算得到BCC=" + Form1.hex(new byte[]{bcc}));
logAppend(Resources.UID已改为 + Form1.hex(buid) + Resources._计算得到BCC + Form1.hex(new byte[]{bcc}));
reloadEdit(0);
}
@ -339,7 +340,7 @@ namespace MifareOneTool
reloadEdit(-1);
this.currentS50 = new S50();
reloadList();
logAppend("已重置并新建卡。");
logAppend(Resources.);
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
@ -348,14 +349,14 @@ namespace MifareOneTool
int[] res = currentS50.Verify();
if (res[16] == 0)
{
MessageBox.Show("该文件一切正常。");
MessageBox.Show(Resources.);
}
else
{
string msg = "该文件存在以下错误:\n";
string msg = Resources.;
for (int i = 0; i < 16; i++)
{
msg += "扇区" + i.ToString() + "\n";
msg += Resources. + i.ToString() + Resources.res4;
if ((res[i] & 0x01) == 0x01)
{
currentS50.Sectors[i].Block[0][4]
@ -364,7 +365,7 @@ namespace MifareOneTool
^ currentS50.Sectors[i].Block[0][2]
^ currentS50.Sectors[i].Block[0][3]);
block0Edit.Text = Form1.hex(currentS50.Sectors[i].Block[0]);
msg += "该扇区UID校验值错误已自动更正。\n";
msg += Resources.UID校验值错误_已自动更正;
}
if ((res[i] & 0x02) == 0x02)
{
@ -372,7 +373,7 @@ namespace MifareOneTool
{
currentS50.Sectors[i].Block[3][j] = defaultAC[j - 6];
}
msg += "该扇区访问控制位无效,写入将会损坏卡片,已重新设置。\n";
msg += Resources.访_写入将会损坏卡片_已重新设置;
}
if ((res[i] & 0x04) == 0x04)
{
@ -380,11 +381,11 @@ namespace MifareOneTool
{
currentS50.Sectors[i].Block[3][j] = defaultAC[j - 6];
}
msg += "该扇区访问控制位损坏,写入将会损坏卡片,已重新设置。\n";
msg += Resources.访_写入将会损坏卡片_已重新设置;
}
if (res[i] == 0)
{
msg += "该扇区一切正常。\n";
msg += Resources.;
}
}
richTextBox1.Clear();
@ -398,9 +399,9 @@ namespace MifareOneTool
SaveFileDialog ofd = new SaveFileDialog();
ofd.AddExtension = true;
ofd.DefaultExt = ".txt";
ofd.Title = "请选择MCT.txt文件保存位置及文件名";
ofd.Title = Resources.MCT_txt文件保存位置及文件名;
ofd.OverwritePrompt = true;
ofd.Filter = "txt文件|*.txt";
ofd.Filter = Resources.txt文件_txt;
if (ofd.ShowDialog() == DialogResult.OK)
{
filename = ofd.FileName;
@ -415,9 +416,9 @@ namespace MifareOneTool
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "写入出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show(ex.Message, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
}
logAppend("已导出MCT文件" + filename + "。");
logAppend(Resources.MCT文件 + filename + "。");
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
@ -426,9 +427,9 @@ namespace MifareOneTool
SaveFileDialog ofd = new SaveFileDialog();
ofd.AddExtension = true;
ofd.DefaultExt = ".dic";
ofd.Title = "请选择密钥字典文件保存位置及文件名";
ofd.Title = Resources.;
ofd.OverwritePrompt = true;
ofd.Filter = "字典文件|*.dic";
ofd.Filter = Resources._dic;
if (ofd.ShowDialog() == DialogResult.OK)
{
filename = ofd.FileName;
@ -438,7 +439,7 @@ namespace MifareOneTool
return;
}
File.WriteAllLines(filename, this.currentS50.KeyListStr().ToArray());
logAppend("已导出密钥字典文件" + filename + "。");
logAppend(Resources. + filename + Resources.res);
}
private void MCT格式ToolStripMenuItem_Click(object sender, EventArgs e)
@ -446,8 +447,8 @@ namespace MifareOneTool
reloadEdit(-1);
OpenFileDialog ofd = new OpenFileDialog();
ofd.CheckFileExists = true;
ofd.Filter = "MCT格式|*.*";
ofd.Title = "请选择需要打开的MCT格式文件";
ofd.Filter = Resources.MCT格式;
ofd.Title = Resources.MCT格式文件;
ofd.Multiselect = false;
if (ofd.ShowDialog() == DialogResult.OK)
{
@ -464,12 +465,12 @@ namespace MifareOneTool
}
catch (IOException ioe)
{
MessageBox.Show(ioe.Message, "打开出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show(ioe.Message, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
this.currentS50 = new S50();
return;
}
reloadList();
logAppend("打开了" + ofd.FileName);
logAppend(Resources. + ofd.FileName);
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
@ -477,7 +478,7 @@ namespace MifareOneTool
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 16; i++)
{
sb.AppendLine("#扇区 " + i.ToString());
sb.AppendLine(Resources._扇区 + i.ToString());
sb.AppendLine("[A] " + Utils.Hex2Str(this.currentS50.Sectors[i].KeyA));
sb.AppendLine("[B] " + Utils.Hex2Str(this.currentS50.Sectors[i].KeyB));
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,702 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="buttonSaveSectorEdit.Text" xml:space="preserve">
<value>Изменить сектор (Enter)</value>
</data>
<data name="Column1.HeaderText" xml:space="preserve">
<value>Cектор </value>
</data>
<data name="comboBox1.Items" xml:space="preserve">
<value>KeyAB читать, писать, увеличивать и уменьшать</value>
<comment>Previous text: KeyAB读写及增减值</comment>
</data>
<data name="comboBox1.Items1" xml:space="preserve">
<value>[только для чтения] KeyAB для чтения и амортизации / недоступен для записи и добавляет ценность</value>
<comment>Previous text: [只读]KeyAB读及减值/不可写及增值</comment>
</data>
<data name="comboBox1.Items2" xml:space="preserve">
<value>[только для чтения] KeyAB для чтения / записи, а также для увеличения или уменьшения</value>
<comment>Previous text: [只读]KeyAB读/不可写及增减值</comment>
</data>
<data name="comboBox1.Items3" xml:space="preserve">
<value>KeyB чтение / запись / не сложение и вычитание</value>
<comment>Previous text: KeyB读写/不可增减值</comment>
</data>
<data name="comboBox1.Items4" xml:space="preserve">
<value>KeyAB чтение / KeyB запись / без увеличения или уменьшения</value>
<comment>Previous text: KeyAB读/KeyB写/不可增减值</comment>
</data>
<data name="comboBox1.Items5" xml:space="preserve">
<value>[Только для чтения] KeyB для чтения / не для записи и увеличения или уменьшения</value>
<comment>Previous text: [只读]KeyB读/不可写及增减值</comment>
</data>
<data name="comboBox1.Items6" xml:space="preserve">
<value>KeyAB чтение и ухудшение / KeyB написание и добавленная стоимость</value>
<comment>Previous text: KeyAB读及减值/KeyB写及增值</comment>
</data>
<data name="comboBox1.Items7" xml:space="preserve">
<value>[только для чтения] заблокировать сектор</value>
<comment>Previous text: [只读]锁死该扇区</comment>
</data>
<data name="comboBox2.Items" xml:space="preserve">
<value>KeyAB читать, писать, увеличивать и уменьшать</value>
<comment>Previous text: KeyAB读写及增减值</comment>
</data>
<data name="comboBox2.Items1" xml:space="preserve">
<value>[только для чтения] KeyAB для чтения и амортизации / недоступен для записи и добавляет ценность</value>
<comment>Previous text: [只读]KeyAB读及减值/不可写及增值</comment>
</data>
<data name="comboBox2.Items2" xml:space="preserve">
<value>[только для чтения] KeyAB для чтения / записи, а также для увеличения или уменьшения</value>
<comment>Previous text: [只读]KeyAB读/不可写及增减值</comment>
</data>
<data name="comboBox2.Items3" xml:space="preserve">
<value>KeyB чтение / запись / не сложение и вычитание</value>
<comment>Previous text: KeyB读写/不可增减值</comment>
</data>
<data name="comboBox2.Items4" xml:space="preserve">
<value>KeyAB чтение / KeyB запись / без увеличения или уменьшения</value>
<comment>Previous text: KeyAB读/KeyB写/不可增减值</comment>
</data>
<data name="comboBox2.Items5" xml:space="preserve">
<value>[Только для чтения] KeyB для чтения / не для записи и увеличения или уменьшения</value>
<comment>Previous text: [只读]KeyB读/不可写及增减值</comment>
</data>
<data name="comboBox2.Items6" xml:space="preserve">
<value>KeyAB чтение и ухудшение / KeyB написание и добавленная стоимость</value>
<comment>Previous text: KeyAB读及减值/KeyB写及增值</comment>
</data>
<data name="comboBox2.Items7" xml:space="preserve">
<value>[только для чтения] заблокировать сектор</value>
<comment>Previous text: [只读]锁死该扇区</comment>
</data>
<data name="comboBox3.Items" xml:space="preserve">
<value>KeyAB читать, писать, увеличивать и уменьшать</value>
<comment>Previous text: KeyAB读写及增减值</comment>
</data>
<data name="comboBox3.Items1" xml:space="preserve">
<value>[только для чтения] KeyAB для чтения и амортизации / недоступен для записи и добавляет ценность</value>
<comment>Previous text: [只读]KeyAB读及减值/不可写及增值</comment>
</data>
<data name="comboBox3.Items2" xml:space="preserve">
<value>[только для чтения] KeyAB для чтения / записи, а также для увеличения или уменьшения</value>
<comment>Previous text: [只读]KeyAB读/不可写及增减值</comment>
</data>
<data name="comboBox3.Items3" xml:space="preserve">
<value>KeyB чтение / запись / не сложение и вычитание</value>
<comment>Previous text: KeyB读写/不可增减值</comment>
</data>
<data name="comboBox3.Items4" xml:space="preserve">
<value>KeyAB чтение / KeyB запись / без увеличения или уменьшения</value>
<comment>Previous text: KeyAB读/KeyB写/不可增减值</comment>
</data>
<data name="comboBox3.Items5" xml:space="preserve">
<value>[Только для чтения] KeyB для чтения / не для записи и увеличения или уменьшения</value>
<comment>Previous text: [只读]KeyB读/不可写及增减值</comment>
</data>
<data name="comboBox3.Items6" xml:space="preserve">
<value>KeyAB чтение и ухудшение / KeyB написание и добавленная стоимость</value>
<comment>Previous text: KeyAB读及减值/KeyB写及增值</comment>
</data>
<data name="comboBox3.Items7" xml:space="preserve">
<value>[только для чтения] заблокировать сектор</value>
<comment>Previous text: [只读]锁死该扇区</comment>
</data>
<data name="comboBox4.Items" xml:space="preserve">
<value>[Необратимый] KeyA: запись / AC: только чтение / KeyB: чтение и запись</value>
<comment>Previous text: [不可逆]KeyA:A写/AC:A只读/KeyB:A读写</comment>
</data>
<data name="comboBox4.Items1" xml:space="preserve">
<value>KeyA: запись / AC: чтение / запись / KeyB: чтение и запись</value>
<comment>Previous text: KeyA:A写/AC:A读写/KeyB:A读写</comment>
</data>
<data name="comboBox4.Items2" xml:space="preserve">
<value>[Необратимый] KeyA: невозможно чтение / запись / AC: только для чтения / KeyB: чтение</value>
<comment>Previous text: [不可逆]KeyA:不能读写/AC:A只读/KeyB:A读</comment>
</data>
<data name="comboBox4.Items3" xml:space="preserve">
<value>KeyA: B запись / AC: A только для чтения B чтение / запись / KeyB: B запись</value>
<comment>Previous text: KeyA:B写/AC:A只读B读写/KeyB:B写</comment>
</data>
<data name="comboBox4.Items4" xml:space="preserve">
<value>[необратимый] KeyA: запись B / AC: только чтение AB / KeyB: запись B</value>
<comment>Previous text: [不可逆]KeyA:B写/AC:AB只读/KeyB:B写</comment>
</data>
<data name="comboBox4.Items5" xml:space="preserve">
<value>KeyA: невозможно чтение / запись / AC: A только для чтения B чтение / запись / KeyB: невозможно чтение или запись</value>
<comment>Previous text: KeyA:不能读写/AC:A只读B读写/KeyB:不能读写</comment>
</data>
<data name="comboBox4.Items6" xml:space="preserve">
<value>[Необратимый] KeyA: невозможно чтение / запись / AC: AB только для чтения / KeyB: невозможно чтение или запись</value>
<comment>Previous text: [不可逆]KeyA:不能读写/AC:AB只读/KeyB:不能读写</comment>
</data>
<data name="comboBox4.Items7" xml:space="preserve">
<value>[Необратимый] KeyA: невозможно чтение / запись / AC: AB только для чтения / KeyB: невозможно чтение или запись (повторяется?)</value>
<comment>Previous text: [不可逆]KeyA:不能读写/AC:AB只读/KeyB:不能读写(重复了?)</comment>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Редактор дампа (бета)</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>Список секторов</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>Информация о секторе</value>
</data>
<data name="groupBox3.Text" xml:space="preserve">
<value>Просмотр</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Блок 0</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Блок 1</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>Блок 2</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>Ключ A</value>
</data>
<data name="label5.Text" xml:space="preserve">
<value>Ключ B</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>Условия доступа блока 0</value>
</data>
<data name="label7.Text" xml:space="preserve">
<value>Условия доступа блока 1</value>
</data>
<data name="label8.Text" xml:space="preserve">
<value>Условия доступа блока 2</value>
</data>
<data name="label9.Text" xml:space="preserve">
<value>Ключ / ACbits разрешение</value>
</data>
<data name="labelCurSec.Text" xml:space="preserve">
<value>Текущий выбранный сектор: ?</value>
</data>
<data name="richTextBox1.Lines[0]" xml:space="preserve">
<value>Добро пожаловать в интегрированный редактор M1T S50HTool!</value>
<comment>Previous text: 欢迎使用M1T的集成编辑器S50HTool</comment>
</data>
<data name="richTextBox1.Lines[1]" xml:space="preserve">
<value>Откройте файл, пожалуйста, нажмите на файл в верхнем левом углу - открыть или Ctrl + O</value>
<comment>Previous text: 打开文件请点左上角文件-打开或Ctrl+O</comment>
</data>
<data name="richTextBox1.Text" xml:space="preserve">
<value>Добро пожаловать в интегрированный редактор дампа!
Чтобы открыть файл, пожалуйста, нажмите на Файл в верхнем левом углу - Открыть или Ctrl + O
Вы можете обновить данные вашей карты.</value>
<comment>Previous text: 欢迎使用M1T的集成编辑器S50HTool
打开文件请点左上角文件-打开或Ctrl+O
</comment>
</data>
<data name="保存ToolStripMenuItem.Text" xml:space="preserve">
<value>Сохранить</value>
</data>
<data name="修改UIDToolStripMenuItem.Text" xml:space="preserve">
<value>Изменить UID</value>
</data>
<data name="列出全卡密钥ToolStripMenuItem.Text" xml:space="preserve">
<value>Перечислите полный ключ карты</value>
</data>
<data name="另存为ToolStripMenuItem.Text" xml:space="preserve">
<value>Сохранить как</value>
</data>
<data name="导入MCT格式ToolStripMenuItem.Text" xml:space="preserve">
<value>Импортировать формат MCT</value>
</data>
<data name="导出为MCT格式ToolStripMenuItem.Text" xml:space="preserve">
<value>Экспорт в формат MCT</value>
</data>
<data name="导出密钥字典ToolStripMenuItem.Text" xml:space="preserve">
<value>Словарь ключей экспорта</value>
</data>
<data name="工具ToolStripMenuItem.Text" xml:space="preserve">
<value>Инструменты</value>
</data>
<data name="打开ToolStripMenuItem.Text" xml:space="preserve">
<value>Открыть</value>
</data>
<data name="文件ToolStripMenuItem.Text" xml:space="preserve">
<value>Файл</value>
</data>
<data name="新建ToolStripMenuItem.Text" xml:space="preserve">
<value>Создать</value>
</data>
<data name="检查全卡ToolStripMenuItem.Text" xml:space="preserve">
<value>Проверка полной карты</value>
</data>
<data name="检查并纠正全卡ToolStripMenuItem.Text" xml:space="preserve">
<value>Проверка и исправление полной карты</value>
</data>
<data name="退出ToolStripMenuItem.Text" xml:space="preserve">
<value>Выход</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="新建ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>226, 22</value>
</data>
<data name="打开ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>226, 22</value>
</data>
<data name="保存ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>226, 22</value>
</data>
<data name="另存为ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>226, 22</value>
</data>
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
<value>223, 6</value>
</data>
<data name="退出ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>226, 22</value>
</data>
<data name="文件ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>48, 20</value>
</data>
<data name="修改UIDToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>336, 22</value>
</data>
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
<value>333, 6</value>
</data>
<data name="检查全卡ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>336, 22</value>
</data>
<data name="检查并纠正全卡ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>336, 22</value>
</data>
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
<value>333, 6</value>
</data>
<data name="导入MCT格式ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>336, 22</value>
</data>
<data name="导出为MCT格式ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>336, 22</value>
</data>
<data name="导出密钥字典ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>336, 22</value>
</data>
<data name="toolStripSeparator4.Size" type="System.Drawing.Size, System.Drawing">
<value>333, 6</value>
</data>
<data name="列出全卡密钥ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>336, 22</value>
</data>
<data name="工具ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 20</value>
</data>
<data name="menuStrip1.Size" type="System.Drawing.Size, System.Drawing">
<value>670, 24</value>
</data>
<data name="dataGridView1.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 19</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="dataGridView1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="dataGridView1.Size" type="System.Drawing.Size, System.Drawing">
<value>186, 560</value>
</data>
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 1</value>
</data>
<data name="groupBox1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="groupBox1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>188, 580</value>
</data>
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 0</value>
</data>
<data name="label6.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 0, 1, 0</value>
</data>
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
<value>147, 15</value>
</data>
<data name="comboBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 16</value>
</data>
<data name="comboBox1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="comboBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>260, 23</value>
</data>
<data name="label7.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 40</value>
</data>
<data name="label7.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 0, 1, 0</value>
</data>
<data name="label7.Size" type="System.Drawing.Size, System.Drawing">
<value>145, 15</value>
</data>
<data name="comboBox2.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 56</value>
</data>
<data name="comboBox2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="comboBox2.Size" type="System.Drawing.Size, System.Drawing">
<value>260, 23</value>
</data>
<data name="label8.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 80</value>
</data>
<data name="label8.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 0, 1, 0</value>
</data>
<data name="label8.Size" type="System.Drawing.Size, System.Drawing">
<value>147, 15</value>
</data>
<data name="comboBox3.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 96</value>
</data>
<data name="comboBox3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="comboBox3.Size" type="System.Drawing.Size, System.Drawing">
<value>260, 23</value>
</data>
<data name="label9.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 120</value>
</data>
<data name="label9.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 0, 1, 0</value>
</data>
<data name="label9.Size" type="System.Drawing.Size, System.Drawing">
<value>154, 15</value>
</data>
<data name="comboBox4.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 136</value>
</data>
<data name="comboBox4.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="comboBox4.Size" type="System.Drawing.Size, System.Drawing">
<value>260, 23</value>
</data>
<data name="flowLayoutPanel3.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 211</value>
</data>
<data name="flowLayoutPanel3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="flowLayoutPanel3.Size" type="System.Drawing.Size, System.Drawing">
<value>274, 348</value>
</data>
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 0</value>
</data>
<data name="label4.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 0, 1, 0</value>
</data>
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 15</value>
</data>
<data name="keyAEdit.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 16</value>
</data>
<data name="keyAEdit.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="keyAEdit.Size" type="System.Drawing.Size, System.Drawing">
<value>135, 23</value>
</data>
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
<value>138, 0</value>
</data>
<data name="label5.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 0, 1, 0</value>
</data>
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
<value>48, 15</value>
</data>
<data name="keyBEdit.Location" type="System.Drawing.Point, System.Drawing">
<value>138, 16</value>
</data>
<data name="keyBEdit.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="keyBEdit.Size" type="System.Drawing.Size, System.Drawing">
<value>135, 23</value>
</data>
<data name="tableLayoutPanel3.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 169</value>
</data>
<data name="tableLayoutPanel3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="tableLayoutPanel3.Size" type="System.Drawing.Size, System.Drawing">
<value>274, 40</value>
</data>
<data name="labelCurSec.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 0</value>
</data>
<data name="labelCurSec.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 0, 1, 0</value>
</data>
<data name="labelCurSec.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 15</value>
</data>
<data name="buttonSaveSectorEdit.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 16</value>
</data>
<data name="buttonSaveSectorEdit.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="buttonSaveSectorEdit.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 27</value>
</data>
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 1</value>
</data>
<data name="flowLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>274, 44</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 0</value>
</data>
<data name="label1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 0, 1, 0</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 15</value>
</data>
<data name="block0Edit.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 16</value>
</data>
<data name="block0Edit.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 40</value>
</data>
<data name="label2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 0, 1, 0</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 15</value>
</data>
<data name="block1Edit.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 56</value>
</data>
<data name="block1Edit.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 80</value>
</data>
<data name="label3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 0, 1, 0</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 15</value>
</data>
<data name="block2Edit.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 96</value>
</data>
<data name="block2Edit.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="flowLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 47</value>
</data>
<data name="flowLayoutPanel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="flowLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>274, 120</value>
</data>
<data name="tableLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 19</value>
</data>
<data name="tableLayoutPanel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>276, 560</value>
</data>
<data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
<value>191, 1</value>
</data>
<data name="groupBox2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="groupBox2.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
<value>278, 580</value>
</data>
<data name="richTextBox1.Font" type="System.Drawing.Font, System.Drawing">
<value>Yu Gothic UI, 9.75pt</value>
</data>
<data name="richTextBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 20</value>
</data>
<data name="richTextBox1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="richTextBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>194, 386</value>
</data>
<data name="groupBox3.Location" type="System.Drawing.Point, System.Drawing">
<value>471, 1</value>
</data>
<data name="groupBox3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="groupBox3.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="groupBox3.Size" type="System.Drawing.Size, System.Drawing">
<value>196, 580</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>668, 582</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="$this.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>670, 432</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
</root>

View File

@ -0,0 +1,360 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="buttonSaveSectorEdit.Text" xml:space="preserve">
<value>修改扇区(Enter)</value>
</data>
<data name="Column1.HeaderText" xml:space="preserve">
<value>扇区</value>
</data>
<data name="comboBox1.Items" xml:space="preserve">
<value>KeyAB читать, писать, увеличивать и уменьшать</value>
<comment>Previous text: KeyAB读写及增减值</comment>
</data>
<data name="comboBox1.Items1" xml:space="preserve">
<value>[только для чтения] KeyAB для чтения и амортизации / недоступен для записи и добавляет ценность</value>
<comment>Previous text: [只读]KeyAB读及减值/不可写及增值</comment>
</data>
<data name="comboBox1.Items2" xml:space="preserve">
<value>[только для чтения] KeyAB для чтения / записи, а также для увеличения или уменьшения</value>
<comment>Previous text: [只读]KeyAB读/不可写及增减值</comment>
</data>
<data name="comboBox1.Items3" xml:space="preserve">
<value>KeyB чтение / запись / не сложение и вычитание</value>
<comment>Previous text: KeyB读写/不可增减值</comment>
</data>
<data name="comboBox1.Items4" xml:space="preserve">
<value>KeyAB чтение / KeyB запись / без увеличения или уменьшения</value>
<comment>Previous text: KeyAB读/KeyB写/不可增减值</comment>
</data>
<data name="comboBox1.Items5" xml:space="preserve">
<value>[Только для чтения] KeyB для чтения / не для записи и увеличения или уменьшения</value>
<comment>Previous text: [只读]KeyB读/不可写及增减值</comment>
</data>
<data name="comboBox1.Items6" xml:space="preserve">
<value>KeyAB чтение и ухудшение / KeyB написание и добавленная стоимость</value>
<comment>Previous text: KeyAB读及减值/KeyB写及增值</comment>
</data>
<data name="comboBox1.Items7" xml:space="preserve">
<value>[только для чтения] заблокировать сектор</value>
<comment>Previous text: [只读]锁死该扇区</comment>
</data>
<data name="comboBox2.Items" xml:space="preserve">
<value>KeyAB читать, писать, увеличивать и уменьшать</value>
<comment>Previous text: KeyAB读写及增减值</comment>
</data>
<data name="comboBox2.Items1" xml:space="preserve">
<value>[только для чтения] KeyAB для чтения и амортизации / недоступен для записи и добавляет ценность</value>
<comment>Previous text: [只读]KeyAB读及减值/不可写及增值</comment>
</data>
<data name="comboBox2.Items2" xml:space="preserve">
<value>[только для чтения] KeyAB для чтения / записи, а также для увеличения или уменьшения</value>
<comment>Previous text: [只读]KeyAB读/不可写及增减值</comment>
</data>
<data name="comboBox2.Items3" xml:space="preserve">
<value>KeyB чтение / запись / не сложение и вычитание</value>
<comment>Previous text: KeyB读写/不可增减值</comment>
</data>
<data name="comboBox2.Items4" xml:space="preserve">
<value>KeyAB чтение / KeyB запись / без увеличения или уменьшения</value>
<comment>Previous text: KeyAB读/KeyB写/不可增减值</comment>
</data>
<data name="comboBox2.Items5" xml:space="preserve">
<value>[Только для чтения] KeyB для чтения / не для записи и увеличения или уменьшения</value>
<comment>Previous text: [只读]KeyB读/不可写及增减值</comment>
</data>
<data name="comboBox2.Items6" xml:space="preserve">
<value>KeyAB чтение и ухудшение / KeyB написание и добавленная стоимость</value>
<comment>Previous text: KeyAB读及减值/KeyB写及增值</comment>
</data>
<data name="comboBox2.Items7" xml:space="preserve">
<value>[только для чтения] заблокировать сектор</value>
<comment>Previous text: [只读]锁死该扇区</comment>
</data>
<data name="comboBox3.Items" xml:space="preserve">
<value>KeyAB читать, писать, увеличивать и уменьшать</value>
<comment>Previous text: KeyAB读写及增减值</comment>
</data>
<data name="comboBox3.Items1" xml:space="preserve">
<value>[только для чтения] KeyAB для чтения и амортизации / недоступен для записи и добавляет ценность</value>
<comment>Previous text: [只读]KeyAB读及减值/不可写及增值</comment>
</data>
<data name="comboBox3.Items2" xml:space="preserve">
<value>[только для чтения] KeyAB для чтения / записи, а также для увеличения или уменьшения</value>
<comment>Previous text: [只读]KeyAB读/不可写及增减值</comment>
</data>
<data name="comboBox3.Items3" xml:space="preserve">
<value>KeyB чтение / запись / не сложение и вычитание</value>
<comment>Previous text: KeyB读写/不可增减值</comment>
</data>
<data name="comboBox3.Items4" xml:space="preserve">
<value>KeyAB чтение / KeyB запись / без увеличения или уменьшения</value>
<comment>Previous text: KeyAB读/KeyB写/不可增减值</comment>
</data>
<data name="comboBox3.Items5" xml:space="preserve">
<value>[Только для чтения] KeyB для чтения / не для записи и увеличения или уменьшения</value>
<comment>Previous text: [只读]KeyB读/不可写及增减值</comment>
</data>
<data name="comboBox3.Items6" xml:space="preserve">
<value>KeyAB чтение и ухудшение / KeyB написание и добавленная стоимость</value>
<comment>Previous text: KeyAB读及减值/KeyB写及增值</comment>
</data>
<data name="comboBox3.Items7" xml:space="preserve">
<value>[только для чтения] заблокировать сектор</value>
<comment>Previous text: [只读]锁死该扇区</comment>
</data>
<data name="comboBox4.Items" xml:space="preserve">
<value>[Необратимый] KeyA: запись / AC: только чтение / KeyB: чтение и запись</value>
<comment>Previous text: [不可逆]KeyA:A写/AC:A只读/KeyB:A读写</comment>
</data>
<data name="comboBox4.Items1" xml:space="preserve">
<value>KeyA: запись / AC: чтение / запись / KeyB: чтение и запись</value>
<comment>Previous text: KeyA:A写/AC:A读写/KeyB:A读写</comment>
</data>
<data name="comboBox4.Items2" xml:space="preserve">
<value>[Необратимый] KeyA: невозможно чтение / запись / AC: только для чтения / KeyB: чтение</value>
<comment>Previous text: [不可逆]KeyA:不能读写/AC:A只读/KeyB:A读</comment>
</data>
<data name="comboBox4.Items3" xml:space="preserve">
<value>KeyA: B запись / AC: A только для чтения B чтение / запись / KeyB: B запись</value>
<comment>Previous text: KeyA:B写/AC:A只读B读写/KeyB:B写</comment>
</data>
<data name="comboBox4.Items4" xml:space="preserve">
<value>[необратимый] KeyA: запись B / AC: только чтение AB / KeyB: запись B</value>
<comment>Previous text: [不可逆]KeyA:B写/AC:AB只读/KeyB:B写</comment>
</data>
<data name="comboBox4.Items5" xml:space="preserve">
<value>KeyA: невозможно чтение / запись / AC: A только для чтения B чтение / запись / KeyB: невозможно чтение или запись</value>
<comment>Previous text: KeyA:不能读写/AC:A只读B读写/KeyB:不能读写</comment>
</data>
<data name="comboBox4.Items6" xml:space="preserve">
<value>[Необратимый] KeyA: невозможно чтение / запись / AC: AB только для чтения / KeyB: невозможно чтение или запись</value>
<comment>Previous text: [不可逆]KeyA:不能读写/AC:AB只读/KeyB:不能读写</comment>
</data>
<data name="comboBox4.Items7" xml:space="preserve">
<value>[Необратимый] KeyA: невозможно чтение / запись / AC: AB только для чтения / KeyB: невозможно чтение или запись (повторяется?)</value>
<comment>Previous text: [不可逆]KeyA:不能读写/AC:AB只读/KeyB:不能读写(重复了?)</comment>
</data>
<data name="$this.Text" xml:space="preserve">
<value>S50HTool-beta</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>扇区列表</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>扇区信息</value>
</data>
<data name="groupBox3.Text" xml:space="preserve">
<value>输出</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>第0块</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>第1块</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>第2块</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>KeyA</value>
</data>
<data name="label5.Text" xml:space="preserve">
<value>KeyB</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>0块权限</value>
</data>
<data name="label7.Text" xml:space="preserve">
<value>1块权限</value>
</data>
<data name="label8.Text" xml:space="preserve">
<value>2块权限</value>
</data>
<data name="label9.Text" xml:space="preserve">
<value>Key/ACbits权限</value>
</data>
<data name="labelCurSec.Text" xml:space="preserve">
<value>当前选定扇区:??</value>
</data>
<data name="menuStrip1.Text" xml:space="preserve">
<value>menuStrip1</value>
</data>
<data name="richTextBox1.Lines[0]" xml:space="preserve">
<value>Добро пожаловать в интегрированный редактор дампа!</value>
<comment>Previous text: 欢迎使用M1T的集成编辑器S50HTool</comment>
</data>
<data name="richTextBox1.Lines[1]" xml:space="preserve">
<value>Чтобы открыть файл, пожалуйста, нажмите на Файл в верхнем левом углу - Открыть или Ctrl + O</value>
<comment>Previous text: 打开文件请点左上角文件-打开或Ctrl+O</comment>
</data>
<data name="richTextBox1.Lines[2]" xml:space="preserve">
<value>Вы можете обновить данные вашей карты.</value>
</data>
<data name="richTextBox1.Text" xml:space="preserve">
<value>欢迎使用M1T的集成编辑器S50HTool
打开文件请点左上角文件-打开或Ctrl+O
</value>
<comment>Previous text: 欢迎使用M1T的集成编辑器S50HTool
打开文件请点左上角文件-打开或Ctrl+O
</comment>
</data>
<data name="保存ToolStripMenuItem.Text" xml:space="preserve">
<value>保存</value>
</data>
<data name="修改UIDToolStripMenuItem.Text" xml:space="preserve">
<value>修改UID</value>
</data>
<data name="列出全卡密钥ToolStripMenuItem.Text" xml:space="preserve">
<value>列出全卡密钥</value>
</data>
<data name="另存为ToolStripMenuItem.Text" xml:space="preserve">
<value>另存为</value>
</data>
<data name="导入MCT格式ToolStripMenuItem.Text" xml:space="preserve">
<value>导入MCT格式</value>
</data>
<data name="导出为MCT格式ToolStripMenuItem.Text" xml:space="preserve">
<value>导出为MCT格式</value>
</data>
<data name="导出密钥字典ToolStripMenuItem.Text" xml:space="preserve">
<value>导出密钥字典</value>
</data>
<data name="工具ToolStripMenuItem.Text" xml:space="preserve">
<value>工具</value>
</data>
<data name="打开ToolStripMenuItem.Text" xml:space="preserve">
<value>打开</value>
</data>
<data name="文件ToolStripMenuItem.Text" xml:space="preserve">
<value>文件</value>
</data>
<data name="新建ToolStripMenuItem.Text" xml:space="preserve">
<value>新建</value>
</data>
<data name="检查全卡ToolStripMenuItem.Text" xml:space="preserve">
<value>检查全卡</value>
</data>
<data name="检查并纠正全卡ToolStripMenuItem.Text" xml:space="preserve">
<value>检查并纠正全卡</value>
</data>
<data name="退出ToolStripMenuItem.Text" xml:space="preserve">
<value>退出</value>
</data>
</root>

View File

@ -28,255 +28,251 @@
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormHardNes));
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.radioKey1B = new System.Windows.Forms.RadioButton();
this.label2 = new System.Windows.Forms.Label();
this.radioKey1A = new System.Windows.Forms.RadioButton();
this.keyEdit = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.sector1 = new System.Windows.Forms.TextBox();
this.keyEdit = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.radioKey2B = new System.Windows.Forms.RadioButton();
this.radioKey2A = new System.Windows.Forms.RadioButton();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.checkBoxColOnly = new System.Windows.Forms.CheckBox();
this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.sector2 = new System.Windows.Forms.TextBox();
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel();
this.label7 = new System.Windows.Forms.Label();
this.groupBox1.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.tableLayoutPanel4.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.tableLayoutPanel3.SuspendLayout();
this.flowLayoutPanel1.SuspendLayout();
this.tableLayoutPanel5.SuspendLayout();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(231, 150);
this.button1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.button1, "button1");
this.button1.BackColor = System.Drawing.Color.DodgerBlue;
this.button1.FlatAppearance.BorderColor = System.Drawing.Color.DodgerBlue;
this.button1.ForeColor = System.Drawing.Color.White;
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(56, 20);
this.button1.TabIndex = 0;
this.button1.Text = "执行!";
this.button1.UseVisualStyleBackColor = true;
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
resources.ApplyResources(this.button2, "button2");
this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.button2.Location = new System.Drawing.Point(170, 150);
this.button2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.button2.FlatAppearance.BorderColor = System.Drawing.Color.DodgerBlue;
this.button2.FlatAppearance.BorderSize = 2;
this.button2.ForeColor = System.Drawing.Color.DodgerBlue;
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(56, 20);
this.button2.TabIndex = 1;
this.button2.Text = "取消";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// groupBox1
//
this.groupBox1.Controls.Add(this.radioKey1B);
this.groupBox1.Controls.Add(this.radioKey1A);
this.groupBox1.Controls.Add(this.label4);
this.groupBox1.Controls.Add(this.label3);
this.groupBox1.Controls.Add(this.sector1);
this.groupBox1.Controls.Add(this.keyEdit);
this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Location = new System.Drawing.Point(9, 10);
this.groupBox1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.BackColor = System.Drawing.Color.DodgerBlue;
this.groupBox1.Controls.Add(this.tableLayoutPanel1);
this.groupBox1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.groupBox1.ForeColor = System.Drawing.Color.White;
this.groupBox1.Name = "groupBox1";
this.groupBox1.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.groupBox1.Size = new System.Drawing.Size(278, 65);
this.groupBox1.TabIndex = 2;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "目标卡-已知信息";
//
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.BackColor = System.Drawing.Color.White;
this.tableLayoutPanel1.Controls.Add(this.radioKey1B, 3, 1);
this.tableLayoutPanel1.Controls.Add(this.label2, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.radioKey1A, 2, 1);
this.tableLayoutPanel1.Controls.Add(this.keyEdit, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.label4, 2, 0);
this.tableLayoutPanel1.Controls.Add(this.label3, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.sector1, 1, 1);
this.tableLayoutPanel1.ForeColor = System.Drawing.Color.DodgerBlue;
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// radioKey1B
//
this.radioKey1B.AutoSize = true;
this.radioKey1B.Location = new System.Drawing.Point(194, 32);
this.radioKey1B.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.radioKey1B, "radioKey1B");
this.radioKey1B.Name = "radioKey1B";
this.radioKey1B.Size = new System.Drawing.Size(47, 16);
this.radioKey1B.TabIndex = 15;
this.radioKey1B.Text = "KeyB";
this.radioKey1B.UseVisualStyleBackColor = true;
//
// radioKey1A
//
this.radioKey1A.AutoSize = true;
this.radioKey1A.Checked = true;
this.radioKey1A.Location = new System.Drawing.Point(145, 32);
this.radioKey1A.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.radioKey1A.Name = "radioKey1A";
this.radioKey1A.Size = new System.Drawing.Size(47, 16);
this.radioKey1A.TabIndex = 14;
this.radioKey1A.TabStop = true;
this.radioKey1A.Text = "KeyA";
this.radioKey1A.UseVisualStyleBackColor = true;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(142, 17);
this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(29, 12);
this.label4.TabIndex = 13;
this.label4.Text = "类型";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(99, 17);
this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(41, 12);
this.label3.TabIndex = 12;
this.label3.Text = "扇区号";
//
// sector1
//
this.sector1.Location = new System.Drawing.Point(101, 31);
this.sector1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.sector1.Name = "sector1";
this.sector1.Size = new System.Drawing.Size(36, 21);
this.sector1.TabIndex = 11;
this.sector1.Text = "0";
//
// keyEdit
//
this.keyEdit.Location = new System.Drawing.Point(7, 31);
this.keyEdit.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.keyEdit.Name = "keyEdit";
this.keyEdit.Size = new System.Drawing.Size(91, 21);
this.keyEdit.TabIndex = 10;
this.keyEdit.Text = "ffffffffffff";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(4, 17);
this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label2, "label2");
this.label2.ForeColor = System.Drawing.Color.MediumBlue;
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(59, 12);
this.label2.TabIndex = 0;
this.label2.Text = "已知的Key";
//
// radioKey1A
//
resources.ApplyResources(this.radioKey1A, "radioKey1A");
this.radioKey1A.Checked = true;
this.radioKey1A.Name = "radioKey1A";
this.radioKey1A.TabStop = true;
this.radioKey1A.UseVisualStyleBackColor = true;
//
// keyEdit
//
this.keyEdit.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
resources.ApplyResources(this.keyEdit, "keyEdit");
this.keyEdit.Name = "keyEdit";
//
// label4
//
resources.ApplyResources(this.label4, "label4");
this.label4.ForeColor = System.Drawing.Color.MediumBlue;
this.label4.Name = "label4";
//
// label3
//
resources.ApplyResources(this.label3, "label3");
this.label3.ForeColor = System.Drawing.Color.MediumBlue;
this.label3.Name = "label3";
//
// sector1
//
resources.ApplyResources(this.sector1, "sector1");
this.sector1.Name = "sector1";
//
// label1
//
this.label1.AutoSize = true;
this.label1.ForeColor = System.Drawing.Color.Blue;
this.label1.Location = new System.Drawing.Point(9, 154);
this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label1, "label1");
this.label1.ForeColor = System.Drawing.Color.MediumBlue;
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(161, 12);
this.label1.TabIndex = 3;
this.label1.Text = "连续工作时请注意设备散热!";
//
// radioKey2B
//
this.radioKey2B.AutoSize = true;
this.radioKey2B.Location = new System.Drawing.Point(194, 32);
this.radioKey2B.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.radioKey2B, "radioKey2B");
this.radioKey2B.Name = "radioKey2B";
this.radioKey2B.Size = new System.Drawing.Size(47, 16);
this.radioKey2B.TabIndex = 15;
this.radioKey2B.Text = "KeyB";
this.radioKey2B.UseVisualStyleBackColor = true;
//
// radioKey2A
//
this.radioKey2A.AutoSize = true;
resources.ApplyResources(this.radioKey2A, "radioKey2A");
this.radioKey2A.Checked = true;
this.radioKey2A.Location = new System.Drawing.Point(145, 32);
this.radioKey2A.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.radioKey2A.Name = "radioKey2A";
this.radioKey2A.Size = new System.Drawing.Size(47, 16);
this.radioKey2A.TabIndex = 14;
this.radioKey2A.TabStop = true;
this.radioKey2A.Text = "KeyA";
this.radioKey2A.UseVisualStyleBackColor = true;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(142, 17);
this.label5.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label5, "label5");
this.label5.ForeColor = System.Drawing.Color.MediumBlue;
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(29, 12);
this.label5.TabIndex = 13;
this.label5.Text = "类型";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(99, 17);
this.label6.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label6, "label6");
this.label6.ForeColor = System.Drawing.Color.MediumBlue;
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(41, 12);
this.label6.TabIndex = 12;
this.label6.Text = "扇区号";
//
// groupBox2
//
this.groupBox2.Controls.Add(this.checkBoxColOnly);
this.groupBox2.Controls.Add(this.radioKey2B);
this.groupBox2.Controls.Add(this.radioKey2A);
this.groupBox2.Controls.Add(this.label5);
this.groupBox2.Controls.Add(this.label6);
this.groupBox2.Controls.Add(this.sector2);
this.groupBox2.Location = new System.Drawing.Point(9, 79);
this.groupBox2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.BackColor = System.Drawing.Color.DodgerBlue;
this.groupBox2.Controls.Add(this.tableLayoutPanel4);
this.groupBox2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.groupBox2.ForeColor = System.Drawing.Color.White;
this.groupBox2.Name = "groupBox2";
this.groupBox2.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.groupBox2.Size = new System.Drawing.Size(278, 65);
this.groupBox2.TabIndex = 16;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "目标扇区解密设置";
this.groupBox2.Enter += new System.EventHandler(this.groupBox2_Enter);
//
// checkBoxColOnly
// tableLayoutPanel4
//
this.checkBoxColOnly.AutoSize = true;
this.checkBoxColOnly.Location = new System.Drawing.Point(5, 19);
this.checkBoxColOnly.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.checkBoxColOnly.Name = "checkBoxColOnly";
this.checkBoxColOnly.Size = new System.Drawing.Size(96, 16);
this.checkBoxColOnly.TabIndex = 17;
this.checkBoxColOnly.Text = "只采集不计算";
this.checkBoxColOnly.UseVisualStyleBackColor = true;
resources.ApplyResources(this.tableLayoutPanel4, "tableLayoutPanel4");
this.tableLayoutPanel4.BackColor = System.Drawing.Color.White;
this.tableLayoutPanel4.Controls.Add(this.tableLayoutPanel2, 1, 0);
this.tableLayoutPanel4.Controls.Add(this.label7, 0, 0);
this.tableLayoutPanel4.ForeColor = System.Drawing.Color.DodgerBlue;
this.tableLayoutPanel4.Name = "tableLayoutPanel4";
//
// tableLayoutPanel2
//
resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2");
this.tableLayoutPanel2.Controls.Add(this.radioKey2B, 3, 1);
this.tableLayoutPanel2.Controls.Add(this.radioKey2A, 2, 1);
this.tableLayoutPanel2.Controls.Add(this.label6, 1, 0);
this.tableLayoutPanel2.Controls.Add(this.label5, 2, 0);
this.tableLayoutPanel2.Controls.Add(this.sector2, 1, 1);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
//
// sector2
//
this.sector2.Location = new System.Drawing.Point(101, 31);
this.sector2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.sector2, "sector2");
this.sector2.Name = "sector2";
this.sector2.Size = new System.Drawing.Size(36, 21);
this.sector2.TabIndex = 11;
//
// tableLayoutPanel3
//
resources.ApplyResources(this.tableLayoutPanel3, "tableLayoutPanel3");
this.tableLayoutPanel3.Controls.Add(this.groupBox1, 0, 0);
this.tableLayoutPanel3.Controls.Add(this.flowLayoutPanel1, 0, 2);
this.tableLayoutPanel3.Controls.Add(this.groupBox2, 0, 1);
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
//
// flowLayoutPanel1
//
resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1");
this.flowLayoutPanel1.Controls.Add(this.label1);
this.flowLayoutPanel1.Controls.Add(this.tableLayoutPanel5);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
//
// tableLayoutPanel5
//
resources.ApplyResources(this.tableLayoutPanel5, "tableLayoutPanel5");
this.tableLayoutPanel5.Controls.Add(this.button2, 0, 0);
this.tableLayoutPanel5.Controls.Add(this.button1, 1, 0);
this.tableLayoutPanel5.Name = "tableLayoutPanel5";
//
// label7
//
resources.ApplyResources(this.label7, "label7");
this.label7.Name = "label7";
//
// FormHardNes
//
this.AcceptButton = this.button1;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White;
this.CancelButton = this.button2;
this.ClientSize = new System.Drawing.Size(296, 179);
this.ControlBox = false;
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.label1);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Controls.Add(this.tableLayoutPanel3);
this.KeyPreview = true;
this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FormHardNes";
this.Text = "初始化HardNested解密";
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.tableLayoutPanel4.ResumeLayout(false);
this.tableLayoutPanel4.PerformLayout();
this.tableLayoutPanel2.ResumeLayout(false);
this.tableLayoutPanel2.PerformLayout();
this.tableLayoutPanel3.ResumeLayout(false);
this.tableLayoutPanel3.PerformLayout();
this.flowLayoutPanel1.ResumeLayout(false);
this.flowLayoutPanel1.PerformLayout();
this.tableLayoutPanel5.ResumeLayout(false);
this.tableLayoutPanel5.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
@ -301,6 +297,12 @@
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.TextBox sector2;
private System.Windows.Forms.TextBox sector1;
private System.Windows.Forms.CheckBox checkBoxColOnly;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private System.Windows.Forms.Label label7;
}
}

View File

@ -1,4 +1,5 @@
using System;
using MifareOneTool.Properties;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
@ -51,11 +52,6 @@ namespace MifareOneTool
return a;
}
public bool collectOnly()
{
return checkBoxColOnly.Checked;
}
private void button2_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
@ -115,11 +111,16 @@ namespace MifareOneTool
}
if (error)
{
MessageBox.Show("设置错误,请修改。");
MessageBox.Show(Resources._请修改);
return;
}
this.DialogResult = DialogResult.Yes;
this.Close();
}
private void groupBox2_Enter(object sender, EventArgs e)
{
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,176 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="button1.Text" xml:space="preserve">
<value>Начать!</value>
</data>
<data name="button2.Text" xml:space="preserve">
<value>Отмена</value>
</data>
<data name="checkBoxColOnly.Text" xml:space="preserve">
<value>Только сбор
не засчитывается</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Расшифровка HardNested</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>Известная информция о карте</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>Настройка расшифровки сектора</value>
</data>
<data name="keyEdit.Lines[0]" xml:space="preserve">
<value>FFFFFFFFFFFF</value>
</data>
<data name="keyEdit.Text" xml:space="preserve">
<value>FFFFFFFFFFFF</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Обратите внимание на устройство
при непрерывной работе!</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Известный ключ</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>Номер сектора</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>Тип ключа</value>
</data>
<data name="label5.Text" xml:space="preserve">
<value>Тип ключа</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>Номер сектора</value>
</data>
<data name="radioKey1A.Text" xml:space="preserve">
<value>Ключ A</value>
</data>
<data name="radioKey1B.Text" xml:space="preserve">
<value>Ключ B</value>
</data>
<data name="radioKey2A.Text" xml:space="preserve">
<value>Ключ A</value>
</data>
<data name="radioKey2B.Text" xml:space="preserve">
<value>Ключ B</value>
</data>
</root>

View File

@ -0,0 +1,186 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="button1.Text" xml:space="preserve">
<value>执行!</value>
</data>
<data name="button2.Text" xml:space="preserve">
<value>取消</value>
</data>
<data name="checkBoxColOnly.Text" xml:space="preserve">
<value>只采集不计算</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Bitsliced Crypto-1 brute-forcer</value>
<comment>Previous text: 初始化HardNested解密</comment>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>目标卡-已知信息</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>目标扇区解密设置</value>
</data>
<data name="keyEdit.Lines[0]" xml:space="preserve">
<value>ffffffffffff</value>
</data>
<data name="keyEdit.Text" xml:space="preserve">
<value>ffffffffffff</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>连续工作时请注意设备散热!</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>已知的Key</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>扇区号</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>类型</value>
</data>
<data name="label5.Text" xml:space="preserve">
<value>类型</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>扇区号</value>
</data>
<data name="label7.Text" xml:space="preserve">
<value>После того, как вы нажмете
кнопку "Начать",
ожидайте около 1 минуты.</value>
</data>
<data name="radioKey1A.Text" xml:space="preserve">
<value>KeyA</value>
</data>
<data name="radioKey1B.Text" xml:space="preserve">
<value>KeyB</value>
</data>
<data name="radioKey2A.Text" xml:space="preserve">
<value>KeyA</value>
</data>
<data name="radioKey2B.Text" xml:space="preserve">
<value>KeyB</value>
</data>
<data name="sector1.Lines[0]" xml:space="preserve">
<value>0</value>
</data>
<data name="sector1.Text" xml:space="preserve">
<value>0</value>
</data>
</root>

View File

@ -48,24 +48,15 @@
// groupBox1
//
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Location = new System.Drawing.Point(12, 12);
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(635, 100);
this.groupBox1.TabIndex = 0;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "说明";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("宋体", 9.5F);
resources.ApplyResources(this.label1, "label1");
this.label1.ForeColor = System.Drawing.Color.Blue;
this.label1.Location = new System.Drawing.Point(6, 17);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(584, 39);
this.label1.TabIndex = 0;
this.label1.Text = "本工具由nfc-mfclassic做少许修改而来。可用于1K大小CUID卡0块损坏的修复。\r\n本工具可以修复SAK写错不认卡类型、ATQA写错不认卡大小" +
"对于BCC写错暂时无能为力。\r\n请准备好你最后一次写入该卡导致0块损坏的卡数据文件如果卡片有加密。";
//
// groupBox2
//
@ -75,106 +66,73 @@
this.groupBox2.Controls.Add(this.label2);
this.groupBox2.Controls.Add(this.buttonKeyWrite);
this.groupBox2.Controls.Add(this.buttonWriteEmpty);
this.groupBox2.Location = new System.Drawing.Point(12, 118);
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(635, 100);
this.groupBox2.TabIndex = 1;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "操作";
//
// buttonClr
//
this.buttonClr.Location = new System.Drawing.Point(585, 33);
resources.ApplyResources(this.buttonClr, "buttonClr");
this.buttonClr.Name = "buttonClr";
this.buttonClr.Size = new System.Drawing.Size(44, 23);
this.buttonClr.TabIndex = 4;
this.buttonClr.Text = "清除";
this.buttonClr.UseVisualStyleBackColor = true;
this.buttonClr.Click += new System.EventHandler(this.buttonClr_Click);
//
// buttonLoadKey
//
this.buttonLoadKey.Location = new System.Drawing.Point(504, 33);
resources.ApplyResources(this.buttonLoadKey, "buttonLoadKey");
this.buttonLoadKey.Name = "buttonLoadKey";
this.buttonLoadKey.Size = new System.Drawing.Size(75, 23);
this.buttonLoadKey.TabIndex = 1;
this.buttonLoadKey.Text = "加载…";
this.buttonLoadKey.UseVisualStyleBackColor = true;
this.buttonLoadKey.Click += new System.EventHandler(this.buttonLoadKey_Click);
//
// keyfileBox
//
this.keyfileBox.Location = new System.Drawing.Point(237, 35);
resources.ApplyResources(this.keyfileBox, "keyfileBox");
this.keyfileBox.Name = "keyfileBox";
this.keyfileBox.Size = new System.Drawing.Size(261, 21);
this.keyfileBox.TabIndex = 3;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(235, 20);
resources.ApplyResources(this.label2, "label2");
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(227, 12);
this.label2.TabIndex = 2;
this.label2.Text = "最后一次写卡导致0块损坏的卡数据文件";
//
// buttonKeyWrite
//
this.buttonKeyWrite.Font = new System.Drawing.Font("宋体", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.buttonKeyWrite.Location = new System.Drawing.Point(121, 20);
resources.ApplyResources(this.buttonKeyWrite, "buttonKeyWrite");
this.buttonKeyWrite.Name = "buttonKeyWrite";
this.buttonKeyWrite.Size = new System.Drawing.Size(83, 74);
this.buttonKeyWrite.TabIndex = 1;
this.buttonKeyWrite.Text = "修复写入\r\n有密码\r\nCUID卡";
this.buttonKeyWrite.UseVisualStyleBackColor = true;
this.buttonKeyWrite.Click += new System.EventHandler(this.buttonKeyWrite_Click);
//
// buttonWriteEmpty
//
this.buttonWriteEmpty.Font = new System.Drawing.Font("宋体", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.buttonWriteEmpty.Location = new System.Drawing.Point(8, 20);
resources.ApplyResources(this.buttonWriteEmpty, "buttonWriteEmpty");
this.buttonWriteEmpty.Name = "buttonWriteEmpty";
this.buttonWriteEmpty.Size = new System.Drawing.Size(83, 74);
this.buttonWriteEmpty.TabIndex = 0;
this.buttonWriteEmpty.Text = "修复写入\r\n无密空白\r\nCUID卡";
this.buttonWriteEmpty.UseVisualStyleBackColor = true;
this.buttonWriteEmpty.Click += new System.EventHandler(this.buttonWriteEmpty_Click);
//
// groupBox3
//
this.groupBox3.Controls.Add(this.logBox);
this.groupBox3.Location = new System.Drawing.Point(12, 224);
resources.ApplyResources(this.groupBox3, "groupBox3");
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(635, 188);
this.groupBox3.TabIndex = 0;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "日志";
//
// logBox
//
this.logBox.BackColor = System.Drawing.Color.Black;
this.logBox.Dock = System.Windows.Forms.DockStyle.Fill;
resources.ApplyResources(this.logBox, "logBox");
this.logBox.ForeColor = System.Drawing.Color.Gold;
this.logBox.Location = new System.Drawing.Point(3, 17);
this.logBox.Name = "logBox";
this.logBox.ReadOnly = true;
this.logBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.ForcedVertical;
this.logBox.Size = new System.Drawing.Size(629, 168);
this.logBox.TabIndex = 0;
this.logBox.Text = resources.GetString("logBox.Text");
//
// FormMFF08
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(659, 424);
this.Controls.Add(this.groupBox3);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBox1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.Name = "FormMFF08";
this.Text = "MFF08 Tool-CUID修复工具";
this.Load += new System.EventHandler(this.FormMFF08_Load);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();

View File

@ -1,4 +1,5 @@
using System;
using MifareOneTool.Properties;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
@ -22,8 +23,8 @@ namespace MifareOneTool
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.CheckFileExists = true;
ofd.Filter = "MFD文件|*.mfd|DUMP文件|*.dump";
ofd.Title = "请选择最后一次写卡导致0块损坏的卡数据文件";
ofd.Filter = Resources.MFD文件_mfd_DUMP文件_dump;
ofd.Title = Resources.0;
ofd.Multiselect = false;
if (ofd.ShowDialog() == DialogResult.OK)
{
@ -66,7 +67,7 @@ namespace MifareOneTool
private void buttonWriteEmpty_Click(object sender, EventArgs e)
{
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
if (lprocess) { MessageBox.Show(Resources._不可执行, Resources., MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
S50 empty = new S50();
empty.ExportToMfd("mff08_empty.kmf");
BackgroundWorker bgw = new BackgroundWorker();
@ -101,17 +102,17 @@ namespace MifareOneTool
process.BeginErrorReadLine();
process.WaitForExit();
lprocess = false;
b.ReportProgress(100, "##运行完毕##");
b.ReportProgress(100, Resources._运行完毕);
}
private void buttonKeyWrite_Click(object sender, EventArgs e)
{
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
if (lprocess) { MessageBox.Show(Resources._不可执行, Resources., MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
S50 empty = new S50();
empty.ExportToMfd("mff08_empty.kmf");
if (keyfileBox.Text == "")
{
MessageBox.Show("您没有给定最后一次写卡导致0块损坏的卡数据文件来作为写卡时的密钥源。\n操作终止。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show(Resources.0, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
BackgroundWorker bgw = new BackgroundWorker();
@ -125,7 +126,7 @@ namespace MifareOneTool
{
if (!File.Exists("nfc-bin/mff08.exe"))
{
MessageBox.Show("无法找到MFF08程序文件。\n操作终止。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show(Resources.MFF08程序文件_操作终止, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}

View File

@ -117,6 +117,54 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="buttonClr.Text" xml:space="preserve">
<value>清除</value>
</data>
<data name="buttonKeyWrite.Text" xml:space="preserve">
<value>修复写入
有密码
CUID卡</value>
</data>
<data name="buttonLoadKey.Text" xml:space="preserve">
<value>加载…</value>
</data>
<data name="buttonWriteEmpty.Text" xml:space="preserve">
<value>修复写入
无密空白
CUID卡</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>MFF08 Tool-CUID修复工具</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>说明</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>操作</value>
</data>
<data name="groupBox3.Text" xml:space="preserve">
<value>日志</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>本工具由nfc-mfclassic做少许修改而来。可用于1K大小CUID卡0块损坏的修复。
本工具可以修复SAK写错不认卡类型、ATQA写错不认卡大小对于BCC写错暂时无能为力。
请准备好你最后一次写入该卡导致0块损坏的卡数据文件如果卡片有加密。</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>最后一次写卡导致0块损坏的卡数据文件</value>
</data>
<data name="logBox.Lines[0]" xml:space="preserve">
<value>每个人使用CUID卡的时候总会因不了解或是不经意犯下一些小错误。</value>
</data>
<data name="logBox.Lines[1]" xml:space="preserve">
<value>比如使用编辑器修改UID却没有改BCCSAK=28的卡片解密后的文件直接写入又或是从S70卡片导入数据写入1K卡却没有更正ATQA。</value>
</data>
<data name="logBox.Lines[2]" xml:space="preserve">
<value>MFF08工具给了你一次修复这些损坏卡片的机会。</value>
</data>
<data name="logBox.Lines[3]" xml:space="preserve">
<value>------------------------------------------------------------------------</value>
</data>
<data name="logBox.Text" xml:space="preserve">
<value>每个人使用CUID卡的时候总会因不了解或是不经意犯下一些小错误。
比如使用编辑器修改UID却没有改BCCSAK=28的卡片解密后的文件直接写入又或是从S70卡片导入数据写入1K卡却没有更正ATQA。
@ -124,5 +172,326 @@ MFF08工具给了你一次修复这些损坏卡片的机会。
------------------------------------------------------------------------
</value>
<comment>Previous text: 每个人使用CUID卡的时候总会因不了解或是不经意犯下一些小错误。
比如使用编辑器修改UID却没有改BCCSAK=28的卡片解密后的文件直接写入又或是从S70卡片导入数据写入1K卡却没有更正ATQA。
MFF08工具给了你一次修复这些损坏卡片的机会。
------------------------------------------------------------------------
</comment>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="label1.Font" type="System.Drawing.Font, System.Drawing">
<value>SimSun, 9.5pt</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 28</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 0, 4, 0</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>850, 57</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 20</value>
</data>
<data name="groupBox1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="groupBox1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>952, 167</value>
</data>
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;groupBox1.Name" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;groupBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;groupBox1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;groupBox1.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="buttonClr.Location" type="System.Drawing.Point, System.Drawing">
<value>878, 55</value>
</data>
<data name="buttonClr.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="buttonClr.Size" type="System.Drawing.Size, System.Drawing">
<value>66, 38</value>
</data>
<data name="buttonClr.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;buttonClr.Name" xml:space="preserve">
<value>buttonClr</value>
</data>
<data name="&gt;&gt;buttonClr.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;buttonClr.Parent" xml:space="preserve">
<value>groupBox2</value>
</data>
<data name="&gt;&gt;buttonClr.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="buttonLoadKey.Location" type="System.Drawing.Point, System.Drawing">
<value>756, 55</value>
</data>
<data name="buttonLoadKey.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="buttonLoadKey.Size" type="System.Drawing.Size, System.Drawing">
<value>112, 38</value>
</data>
<data name="buttonLoadKey.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;buttonLoadKey.Name" xml:space="preserve">
<value>buttonLoadKey</value>
</data>
<data name="&gt;&gt;buttonLoadKey.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;buttonLoadKey.Parent" xml:space="preserve">
<value>groupBox2</value>
</data>
<data name="&gt;&gt;buttonLoadKey.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="keyfileBox.Location" type="System.Drawing.Point, System.Drawing">
<value>356, 58</value>
</data>
<data name="keyfileBox.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="keyfileBox.Size" type="System.Drawing.Size, System.Drawing">
<value>390, 26</value>
</data>
<data name="keyfileBox.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;keyfileBox.Name" xml:space="preserve">
<value>keyfileBox</value>
</data>
<data name="&gt;&gt;keyfileBox.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;keyfileBox.Parent" xml:space="preserve">
<value>groupBox2</value>
</data>
<data name="&gt;&gt;keyfileBox.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>352, 33</value>
</data>
<data name="label2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 0, 4, 0</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>298, 20</value>
</data>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<data name="&gt;&gt;label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>groupBox2</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="buttonKeyWrite.Font" type="System.Drawing.Font, System.Drawing">
<value>SimSun, 11.25pt, style=Bold</value>
</data>
<data name="buttonKeyWrite.Location" type="System.Drawing.Point, System.Drawing">
<value>182, 33</value>
</data>
<data name="buttonKeyWrite.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="buttonKeyWrite.Size" type="System.Drawing.Size, System.Drawing">
<value>124, 123</value>
</data>
<data name="buttonKeyWrite.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;buttonKeyWrite.Name" xml:space="preserve">
<value>buttonKeyWrite</value>
</data>
<data name="&gt;&gt;buttonKeyWrite.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;buttonKeyWrite.Parent" xml:space="preserve">
<value>groupBox2</value>
</data>
<data name="&gt;&gt;buttonKeyWrite.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="buttonWriteEmpty.Font" type="System.Drawing.Font, System.Drawing">
<value>SimSun, 11.25pt, style=Bold</value>
</data>
<data name="buttonWriteEmpty.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 33</value>
</data>
<data name="buttonWriteEmpty.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="buttonWriteEmpty.Size" type="System.Drawing.Size, System.Drawing">
<value>124, 123</value>
</data>
<data name="buttonWriteEmpty.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;buttonWriteEmpty.Name" xml:space="preserve">
<value>buttonWriteEmpty</value>
</data>
<data name="&gt;&gt;buttonWriteEmpty.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;buttonWriteEmpty.Parent" xml:space="preserve">
<value>groupBox2</value>
</data>
<data name="&gt;&gt;buttonWriteEmpty.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 197</value>
</data>
<data name="groupBox2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="groupBox2.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
<value>952, 167</value>
</data>
<data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;groupBox2.Name" xml:space="preserve">
<value>groupBox2</value>
</data>
<data name="&gt;&gt;groupBox2.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;groupBox2.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;groupBox2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="logBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="logBox.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 24</value>
</data>
<data name="logBox.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="logBox.ScrollBars" type="System.Windows.Forms.RichTextBoxScrollBars, System.Windows.Forms">
<value>ForcedVertical</value>
</data>
<data name="logBox.Size" type="System.Drawing.Size, System.Drawing">
<value>944, 284</value>
</data>
<data name="logBox.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;logBox.Name" xml:space="preserve">
<value>logBox</value>
</data>
<data name="&gt;&gt;logBox.Type" xml:space="preserve">
<value>System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;logBox.Parent" xml:space="preserve">
<value>groupBox3</value>
</data>
<data name="&gt;&gt;logBox.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="groupBox3.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 373</value>
</data>
<data name="groupBox3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="groupBox3.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="groupBox3.Size" type="System.Drawing.Size, System.Drawing">
<value>952, 313</value>
</data>
<data name="groupBox3.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;groupBox3.Name" xml:space="preserve">
<value>groupBox3</value>
</data>
<data name="&gt;&gt;groupBox3.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;groupBox3.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;groupBox3.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>9, 20</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>988, 707</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FormMFF08</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -0,0 +1,182 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="buttonClr.Text" xml:space="preserve">
<value>Очистить</value>
</data>
<data name="buttonKeyWrite.Text" xml:space="preserve">
<value>Ремонт написать
Есть пароль
CUID карта</value>
</data>
<data name="buttonLoadKey.Text" xml:space="preserve">
<value>Loading ...</value>
</data>
<data name="buttonWriteEmpty.Text" xml:space="preserve">
<value>Ремонт написать
Нет секретного бланка
CUID карта</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>MFF08 Tool-CUID Ремонт инструмента</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>объяснение</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>операционная</value>
</data>
<data name="groupBox3.Text" xml:space="preserve">
<value>журнал</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Этот инструмент был слегка изменен с помощью nfc-mfclassic. Может быть использован для ремонта 0U блока карты размера 1K.
Этот инструмент можно починить: неверный SAK (не распознанный тип карты), неправильный ATQA (не распознанный размер карты) и BCC невозможно записать неправильно.
Пожалуйста, подготовьте файл данных карты, который вызвал последние 0 повреждений карты (если карта зашифрована).</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>В последний раз при записи карты получено 0 поврежденных файлов данных карты:</value>
</data>
<data name="logBox.Lines[0]" xml:space="preserve">
<value>Когда все используют карту CUID, они всегда делают маленькие ошибки, потому что они не понимают или непреднамеренно.</value>
</data>
<data name="logBox.Lines[1]" xml:space="preserve">
<value>Например, если редактор используется для изменения UID, но BCC не изменяется, файл, дешифрованный картой SAK = 28, записывается напрямую или данные импортируются с карты S70 на карту 1K, но ATQA не исправляется.</value>
</data>
<data name="logBox.Lines[2]" xml:space="preserve">
<value>Инструмент MFF08 дает вам возможность исправить эти поврежденные карты сразу.</value>
</data>
<data name="logBox.Lines[3]" xml:space="preserve">
<value>-------------------------------------------------- ----------------------</value>
</data>
<data name="logBox.Text" xml:space="preserve">
<value>Когда все используют карту CUID, они всегда делают маленькие ошибки, потому что они не понимают или непреднамеренно.
Например, если редактор используется для изменения UID, но BCC не изменяется, файл, дешифрованный картой SAK = 28, записывается напрямую или данные импортируются с карты S70 на карту 1K, но ATQA не исправляется.
Инструмент MFF08 дает вам возможность исправить эти поврежденные карты сразу.
-------------------------------------------------- ----------------------
</value>
<comment>Previous text: 每个人使用CUID卡的时候总会因不了解或是不经意犯下一些小错误。
比如使用编辑器修改UID却没有改BCCSAK=28的卡片解密后的文件直接写入又或是从S70卡片导入数据写入1K卡却没有更正ATQA。
MFF08工具给了你一次修复这些损坏卡片的机会。
------------------------------------------------------------------------
</comment>
</data>
</root>

View File

@ -0,0 +1,182 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="buttonClr.Text" xml:space="preserve">
<value>清除</value>
</data>
<data name="buttonKeyWrite.Text" xml:space="preserve">
<value>修复写入
有密码
CUID卡</value>
</data>
<data name="buttonLoadKey.Text" xml:space="preserve">
<value>加载…</value>
</data>
<data name="buttonWriteEmpty.Text" xml:space="preserve">
<value>修复写入
无密空白
CUID卡</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>MFF08 Tool-CUID修复工具</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>说明</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>操作</value>
</data>
<data name="groupBox3.Text" xml:space="preserve">
<value>日志</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>本工具由nfc-mfclassic做少许修改而来。可用于1K大小CUID卡0块损坏的修复。
本工具可以修复SAK写错不认卡类型、ATQA写错不认卡大小对于BCC写错暂时无能为力。
请准备好你最后一次写入该卡导致0块损坏的卡数据文件如果卡片有加密。</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>最后一次写卡导致0块损坏的卡数据文件</value>
</data>
<data name="logBox.Lines[0]" xml:space="preserve">
<value>每个人使用CUID卡的时候总会因不了解或是不经意犯下一些小错误。</value>
</data>
<data name="logBox.Lines[1]" xml:space="preserve">
<value>比如使用编辑器修改UID却没有改BCCSAK=28的卡片解密后的文件直接写入又或是从S70卡片导入数据写入1K卡却没有更正ATQA。</value>
</data>
<data name="logBox.Lines[2]" xml:space="preserve">
<value>MFF08工具给了你一次修复这些损坏卡片的机会。</value>
</data>
<data name="logBox.Lines[3]" xml:space="preserve">
<value>------------------------------------------------------------------------</value>
</data>
<data name="logBox.Text" xml:space="preserve">
<value>每个人使用CUID卡的时候总会因不了解或是不经意犯下一些小错误。
比如使用编辑器修改UID却没有改BCCSAK=28的卡片解密后的文件直接写入又或是从S70卡片导入数据写入1K卡却没有更正ATQA。
MFF08工具给了你一次修复这些损坏卡片的机会。
------------------------------------------------------------------------
</value>
<comment>Previous text: 每个人使用CUID卡的时候总会因不了解或是不经意犯下一些小错误。
比如使用编辑器修改UID却没有改BCCSAK=28的卡片解密后的文件直接写入又或是从S70卡片导入数据写入1K卡却没有更正ATQA。
MFF08工具给了你一次修复这些损坏卡片的机会。
------------------------------------------------------------------------
</comment>
</data>
</root>

View File

@ -1,4 +1,5 @@
using System;
using MifareOneTool.Properties;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@ -13,7 +14,7 @@ namespace MifareOneTool
class GitHubUpdate
{
public Version localVersion;
public string remoteVersion="未知";
public string remoteVersion=Resources.;
public void Update(string GitHubR)
{
try

View File

@ -35,7 +35,7 @@
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<OutputPath>..\..\Сборки\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@ -44,7 +44,7 @@
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<OutputPath>..\..\Сборки\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@ -52,6 +52,24 @@
<PropertyGroup>
<ApplicationIcon>nfc_128.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'beta|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>..\..\Сборки\Beta\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'MifareOneTool|x86'">
<OutputPath>..\..\Сборки\MifareOneTool\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="Newtonsoft.Json">
@ -107,27 +125,66 @@
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Form1.ru.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Form1.zh.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormDiff.resx">
<DependentUpon>FormDiff.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormDiff.ru.resx">
<DependentUpon>FormDiff.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormDiff.zh.resx">
<DependentUpon>FormDiff.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormHardNes.resx">
<DependentUpon>FormHardNes.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormHardNes.ru.resx">
<DependentUpon>FormHardNes.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormHardNes.zh.resx">
<DependentUpon>FormHardNes.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormHTool.resx">
<DependentUpon>FormHTool.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormHTool.ru.resx">
<DependentUpon>FormHTool.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormHTool.zh.resx">
<DependentUpon>FormHTool.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormMFF08.resx">
<DependentUpon>FormMFF08.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="FormMFF08.ru.resx">
<DependentUpon>FormMFF08.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormMFF08.zh.resx">
<DependentUpon>FormMFF08.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="Properties\Resources.ru.resx">
<DependentUpon>Resources.resx</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.zh.resx">
<DependentUpon>Resources.resx</DependentUpon>
</EmbeddedResource>
<None Include="app.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
@ -162,7 +219,25 @@
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Content Include="MifareOneTool_ml.xml" />
<Content Include="nfc_128.ico" />
<None Include="Resources\round_sync_black_18pt_1x.png" />
<None Include="Resources\outline_info_black_18pt_1x.png" />
<None Include="Resources\round_info_black_18pt_1x.png" />
<None Include="Resources\round_timer_black_18pt_1x.png" />
<None Include="Resources\round_update_black_18pt_1x.png" />
<None Include="Resources\round_update_black_24pt_1x.png" />
<None Include="Resources\round_done_black_48pt_1x.png" />
<None Include="Resources\round_done_black_24pt_1x.png" />
<None Include="Resources\round_done_outline_black_24pt_1x.png" />
<None Include="Resources\round_done_all_black_24pt_1x.png" />
<None Include="Resources\round_done_all_black_36pt_1x.png" />
<None Include="Resources\round_done_all_black_18pt_1x.png" />
<None Include="Resources\round_done_all_black_18pt_2x.png" />
<None Include="Resources\round_clear_black_24dp.png" />
<None Include="Resources\round_done_all_black_36dp.png" />
<None Include="Resources\round_done_all_black_24dp.png" />
<None Include="Resources\round_chevron_right_black_24dp.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
using System;
using MifareOneTool.Properties;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
@ -34,7 +35,7 @@ namespace MifareOneTool
}
else
{
if (MessageBox.Show("您已经运行了MifareOne Tool打开多个本程序可能会造成冲突及不可预料到的错误。\n确认要继续吗", "您正在试图重复运行", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
if (MessageBox.Show(Resources.MifareOne_Tool_打开多个本程序可能, Resources., MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

File diff suppressed because it is too large Load Diff

View File

@ -46,7 +46,7 @@
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
@ -60,6 +60,7 @@
: 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">
@ -68,9 +69,10 @@
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<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">
@ -85,9 +87,10 @@
<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" msdata:Ordinal="1" />
<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">
@ -109,9 +112,533 @@
<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>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.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>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_0_9A_Fa_f_32" xml:space="preserve">
<value>[0-9A-Fa-f]{32}</value>
</data>
<data name="_false" xml:space="preserve">
<value>false</value>
</data>
<data name="_mfd" xml:space="preserve">
<value>.mfd</value>
</data>
<data name="_Nonce收集完毕" xml:space="preserve">
<value>##Nonce收集完毕##</value>
</data>
<data name="_Sector" xml:space="preserve">
<value>+Sector: </value>
</data>
<data name="_true" xml:space="preserve">
<value>true</value>
</data>
<data name="_个块不同" xml:space="preserve">
<value> 个块不同
</value>
</data>
<data name="_已保存" xml:space="preserve">
<value>##已保存-</value>
</data>
<data name="_已自动保存" xml:space="preserve">
<value>##已自动保存-</value>
</data>
<data name="_扇区" xml:space="preserve">
<value>#扇区 </value>
</data>
<data name="_文件中的值错误" xml:space="preserve">
<value>##文件中的值错误##</value>
</data>
<data name="_有数据" xml:space="preserve">
<value> 有数据</value>
</data>
<data name="_有错误" xml:space="preserve">
<value> 有错误</value>
</data>
<data name="_未保存" xml:space="preserve">
<value>##未保存##</value>
</data>
<data name="_程序已被强制停止" xml:space="preserve">
<value>##程序已被强制停止##</value>
</data>
<data name="_空扇区" xml:space="preserve">
<value> 空扇区</value>
</data>
<data name="_缓存文件异常" xml:space="preserve">
<value>##缓存文件异常##</value>
</data>
<data name="_计算得到BCC" xml:space="preserve">
<value>计算得到BCC=</value>
</data>
<data name="_软件版本" xml:space="preserve">
<value>#软件版本 </value>
</data>
<data name="_运行出错" xml:space="preserve">
<value>##运行出错##</value>
</data>
<data name="_运行完毕" xml:space="preserve">
<value>##运行完毕##</value>
</data>
<data name="AB文件中一个或两个无效" xml:space="preserve">
<value>AB文件中一个或两个无效。</value>
</data>
<data name="ACR122U支持已经打开过" xml:space="preserve">
<value>ACR122U支持已经打开过。</value>
</data>
<data name="allow_autoscan" xml:space="preserve">
<value>allow_autoscan = </value>
</data>
<data name="allow_intrusive_scan" xml:space="preserve">
<value>allow_intrusive_scan = </value>
</data>
<data name="device_connstring" xml:space="preserve">
<value>device.connstring = "</value>
</data>
<data name="device_name_NFC_Device" xml:space="preserve">
<value>device.name = "NFC-Device"
</value>
</data>
<data name="DUMP文件_dump_MFD文件_mfd" xml:space="preserve">
<value>DUMP文件|*.dump|MFD文件|*.mfd</value>
</data>
<data name="Information" xml:space="preserve">
<value>Information</value>
</data>
<data name="InputError" xml:space="preserve">
<value>InputError</value>
</data>
<data name="KeyA_B_N" xml:space="preserve">
<value>KeyA/B/N</value>
</data>
<data name="libnfc_conf" xml:space="preserve">
<value>libnfc.conf</value>
</data>
<data name="MCT格式" xml:space="preserve">
<value>MCT格式|*.*</value>
</data>
<data name="MFD文件_mfd_dump" xml:space="preserve">
<value>MFD文件|*.mfd;*.dump</value>
</data>
<data name="MFD文件_mfd_DUMP文件_dump" xml:space="preserve">
<value>MFD文件|*.mfd|DUMP文件|*.dump</value>
</data>
<data name="MifareOne_Tool" xml:space="preserve">
<value>MifareOne Tool</value>
</data>
<data name="MifareOne_Tool_已取消" xml:space="preserve">
<value>MifareOne Tool - отменено</value>
</data>
<data name="MifareOne_Tool_已终止" xml:space="preserve">
<value>MifareOne Tool - 已终止</value>
</data>
<data name="MifareOne_Tool_运行中" xml:space="preserve">
<value>MifareOne Tool - 运行中</value>
</data>
<data name="MifareOne_Tool_运行完毕" xml:space="preserve">
<value>MifareOne Tool - 运行完毕</value>
</data>
<data name="res" xml:space="preserve">
<value>。</value>
</data>
<data name="res0" xml:space="preserve">
<value>
</value>
</data>
<data name="res1" xml:space="preserve">
<value>%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</value>
</data>
<data name="res2" xml:space="preserve">
<value>-- </value>
</data>
<data name="res3" xml:space="preserve">
<value>## </value>
</data>
<data name="res4" xml:space="preserve">
<value>
</value>
</data>
<data name="txt文件_txt" xml:space="preserve">
<value>txt文件|*.txt</value>
</data>
<data name="UID已改为" xml:space="preserve">
<value>UID已改为</value>
</data>
<data name="不恰当的4字节UID长度" xml:space="preserve">
<value>不恰当的4字节UID长度</value>
</data>
<data name="使用KeyA_是_或KeyB_否" xml:space="preserve">
<value>使用KeyA或KeyB</value>
</data>
<data name="使用KeyA_是_或KeyB_否_还是不使用_用于全新白卡_" xml:space="preserve">
<value>使用KeyA或KeyB还是不使用用于全新白卡取消</value>
</data>
<data name="俄语" xml:space="preserve">
<value>俄语</value>
</data>
<data name="共找到" xml:space="preserve">
<value>共找到 </value>
</data>
<data name="写入出错" xml:space="preserve">
<value>写入出错</value>
</data>
<data name="加载的S50卡文件大小异常" xml:space="preserve">
<value>加载的S50卡文件大小异常。</value>
</data>
<data name="加载的文件不存在" xml:space="preserve">
<value>加载的文件不存在。</value>
</data>
<data name="危险操作警告" xml:space="preserve">
<value>危险操作警告</value>
</data>
<data name="同时打开ACR122U支持可能会引起操作速度下降_请确认是否" xml:space="preserve">
<value>同时打开ACR122U支持可能会引起操作速度下降。
请确认是否要继续操作?</value>
</data>
<data name="字典文件_dic" xml:space="preserve">
<value>字典文件|*.dic</value>
</data>
<data name="密钥字典文件_dic" xml:space="preserve">
<value>密钥字典文件|*.dic</value>
</data>
<data name="将自动选择首个设备" xml:space="preserve">
<value>将自动选择首个设备:</value>
</data>
<data name="将要写入的文件存在错误_请用高级模式中的Hex工具打开查看" xml:space="preserve">
<value>将要写入的文件存在错误请用高级模式中的Hex工具打开查看。</value>
</data>
<data name="已保存到" xml:space="preserve">
<value>已保存到</value>
</data>
<data name="已启用CUID空卡写入补丁" xml:space="preserve">
<value>已启用CUID空卡写入补丁</value>
</data>
<data name="已导出MCT文件" xml:space="preserve">
<value>已导出MCT文件</value>
</data>
<data name="已导出密钥字典文件" xml:space="preserve">
<value>已导出密钥字典文件</value>
</data>
<data name="已打开" xml:space="preserve">
<value>已打开。</value>
</data>
<data name="已找到_K" xml:space="preserve">
<value>已找到K=</value>
</data>
<data name="已指定使用该NFC设备" xml:space="preserve">
<value>已指定使用该NFC设备</value>
</data>
<data name="已更新扇区" xml:space="preserve">
<value>已更新扇区</value>
</data>
<data name="已重置并新建卡" xml:space="preserve">
<value>已重置并新建卡。</value>
</data>
<data name="开始执行CUID_FUID卡片写入" xml:space="preserve">
<value>开始执行CUID/FUID卡片写入……</value>
</data>
<data name="开始执行HardNested收集数据" xml:space="preserve">
<value>开始执行HardNested收集数据……</value>
</data>
<data name="开始执行HardNested解密强化卡" xml:space="preserve">
<value>开始执行HardNested解密强化卡……</value>
</data>
<data name="开始执行MFOC解密" xml:space="preserve">
<value>开始执行MFOC解密……</value>
</data>
<data name="开始执行UFUID卡片锁定" xml:space="preserve">
<value>开始执行UFUID卡片锁定……</value>
</data>
<data name="开始执行UID卡片全格" xml:space="preserve">
<value>开始执行UID卡片全格……</value>
</data>
<data name="开始执行UID卡片写入" xml:space="preserve">
<value>开始执行UID卡片写入……</value>
</data>
<data name="开始执行UID卡片设定卡号" xml:space="preserve">
<value>开始执行UID卡片设定卡号……</value>
</data>
<data name="开始执行UID卡片读取" xml:space="preserve">
<value>开始执行UID卡片读取……</value>
</data>
<data name="开始执行全加密卡片爆破" xml:space="preserve">
<value>开始执行全加密卡片爆破……</value>
</data>
<data name="开始执行写入M1卡片" xml:space="preserve">
<value>开始执行写入M1卡片……</value>
</data>
<data name="开始执行字典模式MFOC解密" xml:space="preserve">
<value>开始执行字典模式MFOC解密……</value>
</data>
<data name="开始执行扫描卡片" xml:space="preserve">
<value>开始执行扫描卡片……</value>
</data>
<data name="开始执行格式化M1卡片" xml:space="preserve">
<value>开始执行格式化M1卡片……</value>
</data>
<data name="开始执行检测卡片加密" xml:space="preserve">
<value>开始执行检测卡片加密……</value>
</data>
<data name="开始执行检测设备" xml:space="preserve">
<value>开始执行检测设备……</value>
</data>
<data name="开始执行读取卡片" xml:space="preserve">
<value>开始执行读取卡片……</value>
</data>
<data name="开始执行重置UID卡片卡号" xml:space="preserve">
<value>开始执行重置UID卡片卡号……</value>
</data>
<data name="当前扇区数据仍有错误_不能执行修改" xml:space="preserve">
<value>当前扇区数据仍有错误,不能执行修改。</value>
</data>
<data name="当前选定扇区" xml:space="preserve">
<value>当前选定扇区:??</value>
</data>
<data name="当前选定扇区0" xml:space="preserve">
<value>当前选定扇区:</value>
</data>
<data name="您可以上传到云计算服务节点进行计算" xml:space="preserve">
<value>您可以上传到云计算服务节点进行计算。</value>
</data>
<data name="您已经运行了MifareOne_Tool_打开多个本程序可能" xml:space="preserve">
<value>您已经运行了MifareOne Tool打开多个本程序可能会造成冲突及不可预料到的错误。
确认要继续吗?</value>
</data>
<data name="您正在试图重复运行" xml:space="preserve">
<value>您正在试图重复运行</value>
</data>
<data name="您没有给定最后一次写卡导致0块损坏的卡数据文件来作为写卡时的" xml:space="preserve">
<value>您没有给定最后一次写卡导致0块损坏的卡数据文件来作为写卡时的密钥源。
操作终止。</value>
</data>
<data name="扇区" xml:space="preserve">
<value>扇区</value>
</data>
<data name="扇区0" xml:space="preserve">
<value>扇区 </value>
</data>
<data name="打开了" xml:space="preserve">
<value>打开了</value>
</data>
<data name="打开出错" xml:space="preserve">
<value>打开出错</value>
</data>
<data name="提示信息" xml:space="preserve">
<value>提示信息</value>
</data>
<data name="文件内不是含有64个块数据_可能不完整或不兼容" xml:space="preserve">
<value>文件内不是含有64个块数据可能不完整或不兼容。</value>
</data>
<data name="无密钥" xml:space="preserve">
<value>无密钥</value>
</data>
<data name="无法找到MFF08程序文件_操作终止" xml:space="preserve">
<value>无法找到MFF08程序文件。
操作终止。</value>
</data>
<data name="显示扇区" xml:space="preserve">
<value>显示扇区</value>
</data>
<data name="有任务运行中_不可执行" xml:space="preserve">
<value>有任务运行中,不可执行。</value>
</data>
<data name="未知" xml:space="preserve">
<value>未知</value>
</data>
<data name="未选择有效key_mfd" xml:space="preserve">
<value>未选择有效key.mfd。</value>
</data>
<data name="本地版本" xml:space="preserve">
<value>本地版本 </value>
</data>
<data name="标准" xml:space="preserve">
<value>标准</value>
</data>
<data name="正在使用智能KeyABN" xml:space="preserve">
<value>正在使用智能KeyABN…</value>
</data>
<data name="正在打开ACR122U支持" xml:space="preserve">
<value>正在打开ACR122U支持……</value>
</data>
<data name="正在检索是否存在key_mfd" xml:space="preserve">
<value>正在检索是否存在key.mfd…</value>
</data>
<data name="没有发现任何有效的NFC设备" xml:space="preserve">
<value>没有发现任何有效的NFC设备。</value>
</data>
<data name="秒" xml:space="preserve">
<value>秒</value>
</data>
<data name="空闲" xml:space="preserve">
<value>空闲</value>
</data>
<data name="终端内容已保存至m1t_log文件" xml:space="preserve">
<value>终端内容已保存至m1t.log文件</value>
</data>
<data name="设备串口" xml:space="preserve">
<value>设备串口:</value>
</data>
<data name="设备忙" xml:space="preserve">
<value>设备忙</value>
</data>
<data name="设置错误_请修改" xml:space="preserve">
<value>设置错误,请修改。</value>
</data>
<data name="识别了以下设备" xml:space="preserve">
<value>识别了以下设备:</value>
</data>
<data name="该扇区UID校验值错误_已经自动为您更正" xml:space="preserve">
<value>该扇区UID校验值错误已经自动为您更正。
</value>
</data>
<data name="该扇区UID校验值错误_已自动更正" xml:space="preserve">
<value>该扇区UID校验值错误已自动更正。
</value>
</data>
<data name="该扇区UID校验值错误_请点击打开扇区0来自动更正" xml:space="preserve">
<value>该扇区UID校验值错误请点击打开扇区0来自动更正。
</value>
</data>
<data name="该扇区一切正常" xml:space="preserve">
<value>该扇区一切正常。
</value>
</data>
<data name="该扇区访问控制位损坏_写入将会损坏卡片_已重新设置" xml:space="preserve">
<value>该扇区访问控制位损坏,写入将会损坏卡片,已重新设置。
</value>
</data>
<data name="该扇区访问控制位损坏_写入将会损坏卡片_请重新设置" xml:space="preserve">
<value>该扇区访问控制位损坏,写入将会损坏卡片,请重新设置。
</value>
</data>
<data name="该扇区访问控制位无效_写入将会损坏卡片_已重新设置" xml:space="preserve">
<value>该扇区访问控制位无效,写入将会损坏卡片,已重新设置。
</value>
</data>
<data name="该扇区访问控制位无效_写入将会损坏卡片_请重新设置" xml:space="preserve">
<value>该扇区访问控制位无效,写入将会损坏卡片,请重新设置。
</value>
</data>
<data name="该操作将会清空UID卡内全部数据_清空后不可恢复_请确认是否" xml:space="preserve">
<value>该操作将会清空UID卡内全部数据
清空后不可恢复!请确认是否要继续操作?</value>
</data>
<data name="该操作将会锁死UFUID卡片_锁死后不可恢复_无法再次更改0" xml:space="preserve">
<value>该操作将会锁死UFUID卡片
锁死后不可恢复无法再次更改0块请确认是否要继续操作</value>
</data>
<data name="该文件一切正常" xml:space="preserve">
<value>该文件一切正常。</value>
</data>
<data name="该文件存在以下错误" xml:space="preserve">
<value>该文件存在以下错误:
</value>
</data>
<data name="请检查接线是否正确_驱动是否正常安装_设备电源是否已经打开_" xml:space="preserve">
<value>请检查接线是否正确/驱动是否正常安装/设备电源是否已经打开(对于具有电源开关的型号)。</value>
</data>
<data name="请输入UID号" xml:space="preserve">
<value>请输入UID号</value>
</data>
<data name="请输入已知Key" xml:space="preserve">
<value>请输入已知Key</value>
</data>
<data name="请输入已知的Key_以英文半角逗号分隔" xml:space="preserve">
<value>请输入已知的Key以英文半角逗号分隔。</value>
</data>
<data name="请输入需要写入的UID卡号_共8位十六进制数_如E44A3B" xml:space="preserve">
<value>请输入需要写入的UID卡号共8位十六进制数如E44A3BF1。</value>
</data>
<data name="请输入需要更改的UID卡号_共8位十六进制数_如E44A3B" xml:space="preserve">
<value>请输入需要更改的UID卡号共8位十六进制数如E44A3BF1。</value>
</data>
<data name="请选择MCT_txt文件保存位置及文件名" xml:space="preserve">
<value>请选择MCT.txt文件保存位置及文件名</value>
</data>
<data name="请选择MFD文件保存位置及文件名" xml:space="preserve">
<value>请选择MFD文件保存位置及文件名</value>
</data>
<data name="请选择一个包含目标卡密钥的MFD文件_通常是已经破解出的该卡" xml:space="preserve">
<value>请选择一个包含目标卡密钥的MFD文件通常是已经破解出的该卡的MFD文件</value>
</data>
<data name="请选择密钥字典文件保存位置及文件名" xml:space="preserve">
<value>请选择密钥字典文件保存位置及文件名</value>
</data>
<data name="请选择最后一次写卡导致0块损坏的卡数据文件" xml:space="preserve">
<value>请选择最后一次写卡导致0块损坏的卡数据文件</value>
</data>
<data name="请选择需要写入的MFD文件" xml:space="preserve">
<value>请选择需要写入的MFD文件</value>
</data>
<data name="请选择需要打开的MCT格式文件" xml:space="preserve">
<value>请选择需要打开的MCT格式文件</value>
</data>
<data name="请选择需要打开的MFD文件" xml:space="preserve">
<value>请选择需要打开的MFD文件</value>
</data>
<data name="请选择需要打开的MFD文件_比较A" xml:space="preserve">
<value>请选择需要打开的MFD文件(比较A)</value>
</data>
<data name="请选择需要打开的MFD文件_比较B" xml:space="preserve">
<value>请选择需要打开的MFD文件(比较B)</value>
</data>
<data name="请选择需要打开的密钥字典文件" xml:space="preserve">
<value>请选择需要打开的密钥字典文件</value>
</data>
<data name="输入的UID号不合法" xml:space="preserve">
<value>输入的UID号不合法</value>
</data>
<data name="运行中" xml:space="preserve">
<value>运行中</value>
</data>
<data name="运行时间" xml:space="preserve">
<value>运行时间:</value>
</data>
<data name="选择key_mfd" xml:space="preserve">
<value>选择key.mfd</value>
</data>
<data name="错误" xml:space="preserve">
<value>错误</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="round_chevron_right_black_24dp" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_chevron_right_black_24dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_clear_black_24dp" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_clear_black_24dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_done_all_black_24dp" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_done_all_black_24dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="outline_info_black_18pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\outline_info_black_18pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_done_all_black_18pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_done_all_black_18pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_done_all_black_24pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_done_all_black_24pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_done_black_24pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_done_black_24pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_done_outline_black_24pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_done_outline_black_24pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_info_black_18pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_info_black_18pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_sync_black_18pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_sync_black_18pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_timer_black_18pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_timer_black_18pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_update_black_18pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_update_black_18pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_update_black_24pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_update_black_24pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@ -0,0 +1,560 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_Nonce收集完毕" xml:space="preserve">
<value>## Nonce собрано ##</value>
</data>
<data name="_Sector" xml:space="preserve">
<value>+ Сектор:</value>
</data>
<data name="_个块不同" xml:space="preserve">
<value>разных блоков
</value>
</data>
<data name="_已保存" xml:space="preserve">
<value>## Сохранено -</value>
</data>
<data name="_已自动保存" xml:space="preserve">
<value>## Файл был сохранен автоматически -</value>
</data>
<data name="_扇区" xml:space="preserve">
<value># сектор </value>
</data>
<data name="_文件中的值错误" xml:space="preserve">
<value>## Ошибказначения в файле ###</value>
</data>
<data name="_有数据" xml:space="preserve">
<value>  - есть данные</value>
</data>
<data name="_有错误" xml:space="preserve">
<value> - есть ошибка</value>
</data>
<data name="_未保存" xml:space="preserve">
<value>## Не сохранено ##</value>
</data>
<data name="_程序已被强制停止" xml:space="preserve">
<value>## Программа была вынуждена остановить ##</value>
</data>
<data name="_空扇区" xml:space="preserve">
<value> - пустой сектор</value>
</data>
<data name="_缓存文件异常" xml:space="preserve">
<value>## Исключение файла кэша ##</value>
</data>
<data name="_计算得到BCC" xml:space="preserve">
<value>, рассчитан BCC = </value>
</data>
<data name="_软件版本" xml:space="preserve">
<value>
Версия программы - </value>
</data>
<data name="_运行出错" xml:space="preserve">
<value>## Ошибка запуска ##</value>
</data>
<data name="_运行完毕" xml:space="preserve">
<value>##Операция завершена##</value>
</data>
<data name="AB文件中一个或两个无效" xml:space="preserve">
<value>Один или два файла A/B недействительны.</value>
</data>
<data name="ACR122U支持已经打开过" xml:space="preserve">
<value>Поддержка ACR122U включена.</value>
</data>
<data name="DUMP文件_dump_MFD文件_mfd" xml:space="preserve">
<value>DUMP файл | *.dump | MFD файл | *.mfd</value>
</data>
<data name="Information" xml:space="preserve">
<value>Информация</value>
</data>
<data name="InputError" xml:space="preserve">
<value>Ошибка ввода</value>
</data>
<data name="KeyA_B_N" xml:space="preserve">
<value>Ключ A/B для новых карт</value>
</data>
<data name="MCT格式" xml:space="preserve">
<value>Формат MCT|*.*</value>
</data>
<data name="MFD文件_mfd_dump" xml:space="preserve">
<value>MFD файл | *.mfd; *. Dump</value>
</data>
<data name="MFD文件_mfd_DUMP文件_dump" xml:space="preserve">
<value>Файл MFD|*.mfd|Файл DUMP|*.dump</value>
</data>
<data name="MifareOne_Tool_已取消" xml:space="preserve">
<value>MifareOne - отменено</value>
</data>
<data name="MifareOne_Tool_已终止" xml:space="preserve">
<value>MifareOne Tool - прекращено</value>
</data>
<data name="MifareOne_Tool_运行中" xml:space="preserve">
<value>MifareOne Tool - выполнение операции</value>
</data>
<data name="MifareOne_Tool_运行完毕" xml:space="preserve">
<value>MifareOne Tool - операция завершена</value>
</data>
<data name="res" xml:space="preserve">
<value>.</value>
</data>
<data name="res1" xml:space="preserve">
<value>___________________________________________</value>
</data>
<data name="res4" xml:space="preserve">
<value>
</value>
</data>
<data name="txt文件_txt" xml:space="preserve">
<value>Txt файл|*.txt</value>
</data>
<data name="UID已改为" xml:space="preserve">
<value>UID был изменен на</value>
</data>
<data name="不恰当的4字节UID长度" xml:space="preserve">
<value>Недопустимая длина UID в 4 байта</value>
</data>
<data name="使用KeyA_是_或KeyB_否" xml:space="preserve">
<value>Использовать KeyA (да) или KeyB (нет)?</value>
</data>
<data name="使用KeyA_是_或KeyB_否_还是不使用_用于全新白卡_" xml:space="preserve">
<value>Использовать Ключ A (да) или Ключ B (нет) или нет (отменить) для новых белых карточек?</value>
</data>
<data name="俄语" xml:space="preserve">
<value>Русский</value>
</data>
<data name="共找到" xml:space="preserve">
<value>Найдено </value>
</data>
<data name="写入出错" xml:space="preserve">
<value>Ошибка записи</value>
</data>
<data name="加载的S50卡文件大小异常" xml:space="preserve">
<value>Размер загруженного файла карты S50 не поддерживается.</value>
</data>
<data name="加载的文件不存在" xml:space="preserve">
<value>Загруженный файл не существует.</value>
</data>
<data name="危险操作警告" xml:space="preserve">
<value>Предупреждение об опасной операции</value>
</data>
<data name="同时打开ACR122U支持可能会引起操作速度下降_请确认是否" xml:space="preserve">
<value>Одновременное включение поддержки ACR122U может привести к снижению скорости работы.
Подтвердите, хотите ли вы продолжить?</value>
</data>
<data name="字典文件_dic" xml:space="preserve">
<value>Файл словаря|*.dic</value>
</data>
<data name="密钥字典文件_dic" xml:space="preserve">
<value>Файл словаря ключей|*.dic</value>
</data>
<data name="将自动选择首个设备" xml:space="preserve">
<value>Первое устройство будет выбрано автоматически:</value>
</data>
<data name="将要写入的文件存在错误_请用高级模式中的Hex工具打开查看" xml:space="preserve">
<value>Существует ошибка в файле, который будет записан. Откройте его с помощью редактора дампа в расширенном режиме.</value>
</data>
<data name="已保存到" xml:space="preserve">
<value>Сохранено в</value>
</data>
<data name="已启用CUID空卡写入补丁" xml:space="preserve">
<value>Включить патч для записи на пустую карту CUID</value>
</data>
<data name="已导出MCT文件" xml:space="preserve">
<value>MCT файл был экспортирован</value>
</data>
<data name="已导出密钥字典文件" xml:space="preserve">
<value>Экспортированный файлсловаря ключей</value>
</data>
<data name="已打开" xml:space="preserve">
<value>Открыт.</value>
</data>
<data name="已找到_K" xml:space="preserve">
<value>Файл ключа - </value>
</data>
<data name="已指定使用该NFC设备" xml:space="preserve">
<value>Устройство NFC было указано для использования:</value>
</data>
<data name="已更新扇区" xml:space="preserve">
<value>Обновлен сектор </value>
</data>
<data name="已重置并新建卡" xml:space="preserve">
<value>Сброшена и создана новая карта.</value>
</data>
<data name="开始执行CUID_FUID卡片写入" xml:space="preserve">
<value>Запись CUID/FUID карты ...</value>
</data>
<data name="开始执行HardNested收集数据" xml:space="preserve">
<value>HardNested - сбор данных ...</value>
</data>
<data name="开始执行HardNested解密强化卡" xml:space="preserve">
<value>Запуск расшифровки HardNested...</value>
</data>
<data name="开始执行MFOC解密" xml:space="preserve">
<value>Выполняется расшифровка MFOC ...</value>
</data>
<data name="开始执行UFUID卡片锁定" xml:space="preserve">
<value>Блокировка карты UFUID ...</value>
</data>
<data name="开始执行UID卡片全格" xml:space="preserve">
<value>Форматирование UID...</value>
</data>
<data name="开始执行UID卡片写入" xml:space="preserve">
<value>Начните выполнять запись UID карты ...</value>
</data>
<data name="开始执行UID卡片设定卡号" xml:space="preserve">
<value>Начало записи номера UID...
</value>
</data>
<data name="开始执行UID卡片读取" xml:space="preserve">
<value>Чтение UID...</value>
</data>
<data name="开始执行全加密卡片爆破" xml:space="preserve">
<value>Начало выполнения полной расшифровки карты ...</value>
</data>
<data name="开始执行写入M1卡片" xml:space="preserve">
<value>Запись на карту...</value>
</data>
<data name="开始执行字典模式MFOC解密" xml:space="preserve">
<value>Начало расшифровки MFOC в режиме словаря...</value>
</data>
<data name="开始执行扫描卡片" xml:space="preserve">
<value>Сканирование карт...</value>
</data>
<data name="开始执行格式化M1卡片" xml:space="preserve">
<value>Форматирование карты...</value>
</data>
<data name="开始执行检测卡片加密" xml:space="preserve">
<value>Определение зашифрованных секторов...</value>
</data>
<data name="开始执行检测设备" xml:space="preserve">
<value>Поиск считвателя...</value>
</data>
<data name="开始执行读取卡片" xml:space="preserve">
<value>Чтение карты...</value>
</data>
<data name="开始执行重置UID卡片卡号" xml:space="preserve">
<value>Сброс номера UID ...</value>
</data>
<data name="当前扇区数据仍有错误_不能执行修改" xml:space="preserve">
<value>Текущие данные сектора по-прежнему имеют ошибки и не могут быть изменены.</value>
</data>
<data name="当前选定扇区" xml:space="preserve">
<value>Текущий выбранный сектор: ?</value>
</data>
<data name="当前选定扇区0" xml:space="preserve">
<value>Текущий выбранный сектор: </value>
</data>
<data name="您可以上传到云计算服务节点进行计算" xml:space="preserve">
<value>Вы можете загрузить на узел службы облачных вычислений для расчета.</value>
</data>
<data name="您已经运行了MifareOne_Tool_打开多个本程序可能" xml:space="preserve">
<value>Вы уже запустили MifareOne Tool. Открытие нескольких программ может вызвать конфликты и непредсказуемые ошибки.
Вы уверены, что хотите продолжить?</value>
</data>
<data name="您正在试图重复运行" xml:space="preserve">
<value>Повторный запуск</value>
</data>
<data name="您没有给定最后一次写卡导致0块损坏的卡数据文件来作为写卡时的" xml:space="preserve">
<value>Вы не предоставили файл данных карты, который вызвал 0 блоков повреждения, когда последняя запись была сделана в качестве ключевого источника при записи карты.
Операция прекращена.</value>
</data>
<data name="扇区" xml:space="preserve">
<value>Cектор </value>
</data>
<data name="扇区0" xml:space="preserve">
<value>Сектор </value>
</data>
<data name="打开了" xml:space="preserve">
<value>Открыть</value>
</data>
<data name="打开出错" xml:space="preserve">
<value>Ошибка открытия</value>
</data>
<data name="提示信息" xml:space="preserve">
<value>Совет</value>
</data>
<data name="文件内不是含有64个块数据_可能不完整或不兼容" xml:space="preserve">
<value>Файл не содержит 64 блока данных и может быть неполным или несовместимым.</value>
</data>
<data name="无密钥" xml:space="preserve">
<value>Нет ключа</value>
</data>
<data name="无法找到MFF08程序文件_操作终止" xml:space="preserve">
<value>Не удалось найти программный файл MFF08.
Операция прекращена.</value>
</data>
<data name="显示扇区" xml:space="preserve">
<value>Показать сектор </value>
</data>
<data name="有任务运行中_不可执行" xml:space="preserve">
<value>Операция не может быть выполнена, так как сейчас выполняется другая операция.</value>
</data>
<data name="未知" xml:space="preserve">
<value>неизвестно</value>
</data>
<data name="未选择有效key_mfd" xml:space="preserve">
<value>Действительный key.mfd не был выбран.</value>
</data>
<data name="本地版本" xml:space="preserve">
<value>Версия - </value>
</data>
<data name="标准" xml:space="preserve">
<value>Китайский</value>
</data>
<data name="正在使用智能KeyABN" xml:space="preserve">
<value>Использование файла ключей...</value>
</data>
<data name="正在打开ACR122U支持" xml:space="preserve">
<value>Включена поддержка ACR122U...</value>
</data>
<data name="正在检索是否存在key_mfd" xml:space="preserve">
<value>Поиск key.mfd ...</value>
</data>
<data name="没有发现任何有效的NFC设备" xml:space="preserve">
<value>Не было обнаружено никаких активных устройств NFC.</value>
</data>
<data name="秒" xml:space="preserve">
<value> с.</value>
</data>
<data name="空闲" xml:space="preserve">
<value>Ожидание операции</value>
</data>
<data name="终端内容已保存至m1t_log文件" xml:space="preserve">
<value>Содержимое терминала сохранено в файле m1t.log</value>
</data>
<data name="设备串口" xml:space="preserve">
<value>Последовательный порт устройства:</value>
</data>
<data name="设备忙" xml:space="preserve">
<value>Устройство занято</value>
</data>
<data name="设置错误_请修改" xml:space="preserve">
<value>Неверная настройка, пожалуйста, измените ее.</value>
</data>
<data name="识别了以下设备" xml:space="preserve">
<value>Определены следующие устройства:</value>
</data>
<data name="该扇区UID校验值错误_已经自动为您更正" xml:space="preserve">
<value>Ошибка проверки UID сектора была автоматически исправлена для вас.</value>
</data>
<data name="该扇区UID校验值错误_已自动更正" xml:space="preserve">
<value>Значение проверки UID сектора неверно и было автоматически исправлено.
</value>
</data>
<data name="该扇区UID校验值错误_请点击打开扇区0来自动更正" xml:space="preserve">
<value>Ошибка проверки UID сектора, нажмите, чтобы открыть сектор 0 для автоматического исправления.</value>
</data>
<data name="该扇区一切正常" xml:space="preserve">
<value>В этом секторе все в порядке.</value>
</data>
<data name="该扇区访问控制位损坏_写入将会损坏卡片_已重新设置" xml:space="preserve">
<value>Бит управления доступом сектора является недопустимым, запись повредит карту и была отменена.</value>
</data>
<data name="该扇区访问控制位损坏_写入将会损坏卡片_请重新设置" xml:space="preserve">
<value>Бит контроля доступа к сектору поврежден, и запись повредит карту. Пожалуйста, отмените ее.
</value>
</data>
<data name="该扇区访问控制位无效_写入将会损坏卡片_已重新设置" xml:space="preserve">
<value>Бит управления доступом сектора является недопустимым, запись повредит карту и была отменена.</value>
</data>
<data name="该扇区访问控制位无效_写入将会损坏卡片_请重新设置" xml:space="preserve">
<value>Недопустимый бит контроля доступа к сектору. Запись повредит карту. Пожалуйста, отмените ее.
</value>
</data>
<data name="该操作将会清空UID卡内全部数据_清空后不可恢复_请确认是否" xml:space="preserve">
<value>Это удалит все данные в UID карты!
Восстановление после форматирования невозможно! Пожалуйста, подтвердите, если вы хотите продолжить?</value>
</data>
<data name="该操作将会锁死UFUID卡片_锁死后不可恢复_无法再次更改0" xml:space="preserve">
<value>Это заблокирует карту UFUID!
Восстановление после блокировки будет невозможно! Изменить 0-ой блок будет невозможно! Пожалуйста, подтвердите, если вы хотите продолжить?</value>
</data>
<data name="该文件一切正常" xml:space="preserve">
<value>С файлом все нормально.</value>
</data>
<data name="该文件存在以下错误" xml:space="preserve">
<value>Файл имеет следующую ошибку:
</value>
</data>
<data name="请检查接线是否正确_驱动是否正常安装_设备电源是否已经打开_" xml:space="preserve">
<value>Пожалуйста, проверьте правильность подключения/правильно ли установлен драйвер/питание устройства включено (для моделей с выключателем питания).</value>
</data>
<data name="请输入UID号" xml:space="preserve">
<value>Пожалуйста, введите номер UID</value>
</data>
<data name="请输入已知Key" xml:space="preserve">
<value>Пожалуйста, введите известные ключи</value>
</data>
<data name="请输入已知的Key_以英文半角逗号分隔" xml:space="preserve">
<value>Пожалуйста, введите известные ключи, разделяя их запятой.</value>
</data>
<data name="请输入需要写入的UID卡号_共8位十六进制数_如E44A3B" xml:space="preserve">
<value>Пожалуйста, введите номер карты UID для записи, всего 8 шестнадцатеричных чисел, например, E44A3BF1.</value>
</data>
<data name="请输入需要更改的UID卡号_共8位十六进制数_如E44A3B" xml:space="preserve">
<value>Пожалуйста, введите номер UID для изменения, всего 8 шестнадцатеричных чисел, например E44A3BF1.</value>
</data>
<data name="请选择MCT_txt文件保存位置及文件名" xml:space="preserve">
<value>Пожалуйста, выберите для MCT.txt расположение и имя файла</value>
</data>
<data name="请选择MFD文件保存位置及文件名" xml:space="preserve">
<value>Пожалуйста, выберите место сохранения файла MFD и имя файла</value>
</data>
<data name="请选择一个包含目标卡密钥的MFD文件_通常是已经破解出的该卡" xml:space="preserve">
<value>Выберите файл MFD, содержащий ключ карты (обычно это файл MFD карты, которая была взломана)</value>
</data>
<data name="请选择密钥字典文件保存位置及文件名" xml:space="preserve">
<value>Выберите расположение и имя файла словаря ключей</value>
</data>
<data name="请选择最后一次写卡导致0块损坏的卡数据文件" xml:space="preserve">
<value>Пожалуйста, выберите файл данных карты, который вызвал повреждение последней 0 карты.</value>
</data>
<data name="请选择需要写入的MFD文件" xml:space="preserve">
<value>Пожалуйста, выберите файл MFD для записи</value>
</data>
<data name="请选择需要打开的MCT格式文件" xml:space="preserve">
<value>Пожалуйста, выберите файл формата MCT, который вы хотите открыть.</value>
</data>
<data name="请选择需要打开的MFD文件" xml:space="preserve">
<value>Пожалуйста, выберите файл MFD, который вы хотите открыть.</value>
</data>
<data name="请选择需要打开的MFD文件_比较A" xml:space="preserve">
<value>Пожалуйста, выберите файл MFD, который вы хотите открыть (сравнить A)</value>
</data>
<data name="请选择需要打开的MFD文件_比较B" xml:space="preserve">
<value>Пожалуйста, выберите файл MFD, который вы хотите открыть (сравнит B)</value>
</data>
<data name="请选择需要打开的密钥字典文件" xml:space="preserve">
<value>Пожалуйста, выберите файл словаря ключей, который вы хотите открыть.</value>
</data>
<data name="输入的UID号不合法" xml:space="preserve">
<value>Введенный номер UID недействителен.</value>
</data>
<data name="运行中" xml:space="preserve">
<value>Операция выполняется</value>
</data>
<data name="运行时间" xml:space="preserve">
<value>Время выполнения: </value>
</data>
<data name="选择key_mfd" xml:space="preserve">
<value>Выбрать файл ключей</value>
</data>
<data name="错误" xml:space="preserve">
<value>Ошибка</value>
</data>
</root>

View File

@ -0,0 +1,604 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_0_9A_Fa_f_32" xml:space="preserve">
<value>[0-9A-Fa-f]{32}</value>
</data>
<data name="_false" xml:space="preserve">
<value>false</value>
</data>
<data name="_mfd" xml:space="preserve">
<value>.mfd</value>
</data>
<data name="_Nonce收集完毕" xml:space="preserve">
<value>##Nonce收集完毕##</value>
</data>
<data name="_Sector" xml:space="preserve">
<value>+Sector: </value>
</data>
<data name="_true" xml:space="preserve">
<value>true</value>
</data>
<data name="_个块不同" xml:space="preserve">
<value> 个块不同
</value>
</data>
<data name="_已保存" xml:space="preserve">
<value>##已保存-</value>
</data>
<data name="_已自动保存" xml:space="preserve">
<value>##已自动保存-</value>
</data>
<data name="_扇区" xml:space="preserve">
<value>#扇区 </value>
</data>
<data name="_文件中的值错误" xml:space="preserve">
<value>##文件中的值错误##</value>
</data>
<data name="_有数据" xml:space="preserve">
<value> 有数据</value>
</data>
<data name="_有错误" xml:space="preserve">
<value> 有错误</value>
</data>
<data name="_未保存" xml:space="preserve">
<value>##未保存##</value>
</data>
<data name="_程序已被强制停止" xml:space="preserve">
<value>##程序已被强制停止##</value>
</data>
<data name="_空扇区" xml:space="preserve">
<value> 空扇区</value>
</data>
<data name="_缓存文件异常" xml:space="preserve">
<value>##缓存文件异常##</value>
</data>
<data name="_计算得到BCC" xml:space="preserve">
<value>计算得到BCC=</value>
</data>
<data name="_软件版本" xml:space="preserve">
<value>#软件版本 </value>
</data>
<data name="_运行出错" xml:space="preserve">
<value>##运行出错##</value>
</data>
<data name="_运行完毕" xml:space="preserve">
<value>##运行完毕##</value>
</data>
<data name="AB文件中一个或两个无效" xml:space="preserve">
<value>AB文件中一个或两个无效。</value>
</data>
<data name="ACR122U支持已经打开过" xml:space="preserve">
<value>ACR122U支持已经打开过。</value>
</data>
<data name="allow_autoscan" xml:space="preserve">
<value>allow_autoscan = </value>
</data>
<data name="allow_intrusive_scan" xml:space="preserve">
<value>allow_intrusive_scan = </value>
</data>
<data name="device_connstring" xml:space="preserve">
<value>device.connstring = "</value>
</data>
<data name="device_name_NFC_Device" xml:space="preserve">
<value>device.name = "NFC-Device"
</value>
</data>
<data name="DUMP文件_dump_MFD文件_mfd" xml:space="preserve">
<value>DUMP文件|*.dump|MFD文件|*.mfd</value>
</data>
<data name="Information" xml:space="preserve">
<value>Information</value>
</data>
<data name="InputError" xml:space="preserve">
<value>InputError</value>
</data>
<data name="KeyA_B_N" xml:space="preserve">
<value>KeyA/B/N</value>
</data>
<data name="libnfc_conf" xml:space="preserve">
<value>libnfc.conf</value>
</data>
<data name="MCT格式" xml:space="preserve">
<value>MCT格式|*.*</value>
</data>
<data name="MFD文件_mfd_dump" xml:space="preserve">
<value>MFD文件|*.mfd;*.dump</value>
</data>
<data name="MFD文件_mfd_DUMP文件_dump" xml:space="preserve">
<value>MFD文件|*.mfd|DUMP文件|*.dump</value>
</data>
<data name="MifareOne_Tool" xml:space="preserve">
<value>MifareOne Tool</value>
</data>
<data name="MifareOne_Tool_已取消" xml:space="preserve">
<value>MifareOne Tool - отменено</value>
</data>
<data name="MifareOne_Tool_已终止" xml:space="preserve">
<value>MifareOne Tool - 已终止</value>
</data>
<data name="MifareOne_Tool_运行中" xml:space="preserve">
<value>MifareOne Tool - 运行中</value>
</data>
<data name="MifareOne_Tool_运行完毕" xml:space="preserve">
<value>MifareOne Tool - 运行完毕</value>
</data>
<data name="res" xml:space="preserve">
<value>。</value>
</data>
<data name="res0" xml:space="preserve">
<value>
</value>
</data>
<data name="res1" xml:space="preserve">
<value>%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</value>
</data>
<data name="res2" xml:space="preserve">
<value>-- </value>
</data>
<data name="res3" xml:space="preserve">
<value>## </value>
</data>
<data name="res4" xml:space="preserve">
<value>
</value>
</data>
<data name="txt文件_txt" xml:space="preserve">
<value>txt文件|*.txt</value>
</data>
<data name="UID已改为" xml:space="preserve">
<value>UID已改为</value>
</data>
<data name="不恰当的4字节UID长度" xml:space="preserve">
<value>不恰当的4字节UID长度</value>
</data>
<data name="使用KeyA_是_或KeyB_否" xml:space="preserve">
<value>使用KeyA或KeyB</value>
</data>
<data name="使用KeyA_是_或KeyB_否_还是不使用_用于全新白卡_" xml:space="preserve">
<value>使用KeyA或KeyB还是不使用用于全新白卡取消</value>
</data>
<data name="俄语" xml:space="preserve">
<value>俄语</value>
</data>
<data name="共找到" xml:space="preserve">
<value>共找到 </value>
</data>
<data name="写入出错" xml:space="preserve">
<value>写入出错</value>
</data>
<data name="加载的S50卡文件大小异常" xml:space="preserve">
<value>加载的S50卡文件大小异常。</value>
</data>
<data name="加载的文件不存在" xml:space="preserve">
<value>加载的文件不存在。</value>
</data>
<data name="危险操作警告" xml:space="preserve">
<value>危险操作警告</value>
</data>
<data name="同时打开ACR122U支持可能会引起操作速度下降_请确认是否" xml:space="preserve">
<value>同时打开ACR122U支持可能会引起操作速度下降。
请确认是否要继续操作?</value>
</data>
<data name="字典文件_dic" xml:space="preserve">
<value>字典文件|*.dic</value>
</data>
<data name="密钥字典文件_dic" xml:space="preserve">
<value>密钥字典文件|*.dic</value>
</data>
<data name="将自动选择首个设备" xml:space="preserve">
<value>将自动选择首个设备:</value>
</data>
<data name="将要写入的文件存在错误_请用高级模式中的Hex工具打开查看" xml:space="preserve">
<value>将要写入的文件存在错误请用高级模式中的Hex工具打开查看。</value>
</data>
<data name="已保存到" xml:space="preserve">
<value>已保存到</value>
</data>
<data name="已启用CUID空卡写入补丁" xml:space="preserve">
<value>已启用CUID空卡写入补丁</value>
</data>
<data name="已导出MCT文件" xml:space="preserve">
<value>已导出MCT文件</value>
</data>
<data name="已导出密钥字典文件" xml:space="preserve">
<value>已导出密钥字典文件</value>
</data>
<data name="已打开" xml:space="preserve">
<value>已打开。</value>
</data>
<data name="已找到_K" xml:space="preserve">
<value>已找到K=</value>
</data>
<data name="已指定使用该NFC设备" xml:space="preserve">
<value>已指定使用该NFC设备</value>
</data>
<data name="已更新扇区" xml:space="preserve">
<value>已更新扇区</value>
</data>
<data name="已重置并新建卡" xml:space="preserve">
<value>已重置并新建卡。</value>
</data>
<data name="开始执行CUID_FUID卡片写入" xml:space="preserve">
<value>开始执行CUID/FUID卡片写入……</value>
</data>
<data name="开始执行HardNested收集数据" xml:space="preserve">
<value>开始执行HardNested收集数据……</value>
</data>
<data name="开始执行HardNested解密强化卡" xml:space="preserve">
<value>开始执行HardNested解密强化卡……</value>
</data>
<data name="开始执行MFOC解密" xml:space="preserve">
<value>开始执行MFOC解密……</value>
</data>
<data name="开始执行UFUID卡片锁定" xml:space="preserve">
<value>开始执行UFUID卡片锁定……</value>
</data>
<data name="开始执行UID卡片全格" xml:space="preserve">
<value>开始执行UID卡片全格……</value>
</data>
<data name="开始执行UID卡片写入" xml:space="preserve">
<value>开始执行UID卡片写入……</value>
</data>
<data name="开始执行UID卡片设定卡号" xml:space="preserve">
<value>开始执行UID卡片设定卡号……</value>
</data>
<data name="开始执行UID卡片读取" xml:space="preserve">
<value>开始执行UID卡片读取……</value>
</data>
<data name="开始执行全加密卡片爆破" xml:space="preserve">
<value>开始执行全加密卡片爆破……</value>
</data>
<data name="开始执行写入M1卡片" xml:space="preserve">
<value>开始执行写入M1卡片……</value>
</data>
<data name="开始执行字典模式MFOC解密" xml:space="preserve">
<value>开始执行字典模式MFOC解密……</value>
</data>
<data name="开始执行扫描卡片" xml:space="preserve">
<value>开始执行扫描卡片……</value>
</data>
<data name="开始执行格式化M1卡片" xml:space="preserve">
<value>开始执行格式化M1卡片……</value>
</data>
<data name="开始执行检测卡片加密" xml:space="preserve">
<value>开始执行检测卡片加密……</value>
</data>
<data name="开始执行检测设备" xml:space="preserve">
<value>开始执行检测设备……</value>
</data>
<data name="开始执行读取卡片" xml:space="preserve">
<value>开始执行读取卡片……</value>
</data>
<data name="开始执行重置UID卡片卡号" xml:space="preserve">
<value>开始执行重置UID卡片卡号……</value>
</data>
<data name="当前扇区数据仍有错误_不能执行修改" xml:space="preserve">
<value>当前扇区数据仍有错误,不能执行修改。</value>
</data>
<data name="当前选定扇区" xml:space="preserve">
<value>当前选定扇区:??</value>
</data>
<data name="当前选定扇区0" xml:space="preserve">
<value>当前选定扇区:</value>
</data>
<data name="您可以上传到云计算服务节点进行计算" xml:space="preserve">
<value>您可以上传到云计算服务节点进行计算。</value>
</data>
<data name="您已经运行了MifareOne_Tool_打开多个本程序可能" xml:space="preserve">
<value>您已经运行了MifareOne Tool打开多个本程序可能会造成冲突及不可预料到的错误。
确认要继续吗?</value>
</data>
<data name="您正在试图重复运行" xml:space="preserve">
<value>您正在试图重复运行</value>
</data>
<data name="您没有给定最后一次写卡导致0块损坏的卡数据文件来作为写卡时的" xml:space="preserve">
<value>您没有给定最后一次写卡导致0块损坏的卡数据文件来作为写卡时的密钥源。
操作终止。</value>
</data>
<data name="扇区" xml:space="preserve">
<value>扇区</value>
</data>
<data name="扇区0" xml:space="preserve">
<value>扇区 </value>
</data>
<data name="打开了" xml:space="preserve">
<value>打开了</value>
</data>
<data name="打开出错" xml:space="preserve">
<value>打开出错</value>
</data>
<data name="提示信息" xml:space="preserve">
<value>提示信息</value>
</data>
<data name="文件内不是含有64个块数据_可能不完整或不兼容" xml:space="preserve">
<value>文件内不是含有64个块数据可能不完整或不兼容。</value>
</data>
<data name="无密钥" xml:space="preserve">
<value>无密钥</value>
</data>
<data name="无法找到MFF08程序文件_操作终止" xml:space="preserve">
<value>无法找到MFF08程序文件。
操作终止。</value>
</data>
<data name="显示扇区" xml:space="preserve">
<value>显示扇区</value>
</data>
<data name="有任务运行中_不可执行" xml:space="preserve">
<value>有任务运行中,不可执行。</value>
</data>
<data name="未知" xml:space="preserve">
<value>未知</value>
</data>
<data name="未选择有效key_mfd" xml:space="preserve">
<value>未选择有效key.mfd。</value>
</data>
<data name="本地版本" xml:space="preserve">
<value>本地版本 </value>
</data>
<data name="标准" xml:space="preserve">
<value>标准</value>
</data>
<data name="正在使用智能KeyABN" xml:space="preserve">
<value>正在使用智能KeyABN…</value>
</data>
<data name="正在打开ACR122U支持" xml:space="preserve">
<value>正在打开ACR122U支持……</value>
</data>
<data name="正在检索是否存在key_mfd" xml:space="preserve">
<value>正在检索是否存在key.mfd…</value>
</data>
<data name="没有发现任何有效的NFC设备" xml:space="preserve">
<value>没有发现任何有效的NFC设备。</value>
</data>
<data name="秒" xml:space="preserve">
<value>秒</value>
</data>
<data name="空闲" xml:space="preserve">
<value>空闲</value>
</data>
<data name="终端内容已保存至m1t_log文件" xml:space="preserve">
<value>终端内容已保存至m1t.log文件</value>
</data>
<data name="设备串口" xml:space="preserve">
<value>设备串口:</value>
</data>
<data name="设备忙" xml:space="preserve">
<value>设备忙</value>
</data>
<data name="设置错误_请修改" xml:space="preserve">
<value>设置错误,请修改。</value>
</data>
<data name="识别了以下设备" xml:space="preserve">
<value>识别了以下设备:</value>
</data>
<data name="该扇区UID校验值错误_已经自动为您更正" xml:space="preserve">
<value>该扇区UID校验值错误已经自动为您更正。
</value>
</data>
<data name="该扇区UID校验值错误_已自动更正" xml:space="preserve">
<value>该扇区UID校验值错误已自动更正。
</value>
</data>
<data name="该扇区UID校验值错误_请点击打开扇区0来自动更正" xml:space="preserve">
<value>该扇区UID校验值错误请点击打开扇区0来自动更正。
</value>
</data>
<data name="该扇区一切正常" xml:space="preserve">
<value>该扇区一切正常。
</value>
</data>
<data name="该扇区访问控制位损坏_写入将会损坏卡片_已重新设置" xml:space="preserve">
<value>该扇区访问控制位损坏,写入将会损坏卡片,已重新设置。
</value>
</data>
<data name="该扇区访问控制位损坏_写入将会损坏卡片_请重新设置" xml:space="preserve">
<value>该扇区访问控制位损坏,写入将会损坏卡片,请重新设置。
</value>
</data>
<data name="该扇区访问控制位无效_写入将会损坏卡片_已重新设置" xml:space="preserve">
<value>该扇区访问控制位无效,写入将会损坏卡片,已重新设置。
</value>
</data>
<data name="该扇区访问控制位无效_写入将会损坏卡片_请重新设置" xml:space="preserve">
<value>该扇区访问控制位无效,写入将会损坏卡片,请重新设置。
</value>
</data>
<data name="该操作将会清空UID卡内全部数据_清空后不可恢复_请确认是否" xml:space="preserve">
<value>该操作将会清空UID卡内全部数据
清空后不可恢复!请确认是否要继续操作?</value>
</data>
<data name="该操作将会锁死UFUID卡片_锁死后不可恢复_无法再次更改0" xml:space="preserve">
<value>该操作将会锁死UFUID卡片
锁死后不可恢复无法再次更改0块请确认是否要继续操作</value>
</data>
<data name="该文件一切正常" xml:space="preserve">
<value>该文件一切正常。</value>
</data>
<data name="该文件存在以下错误" xml:space="preserve">
<value>该文件存在以下错误:
</value>
</data>
<data name="请检查接线是否正确_驱动是否正常安装_设备电源是否已经打开_" xml:space="preserve">
<value>请检查接线是否正确/驱动是否正常安装/设备电源是否已经打开(对于具有电源开关的型号)。</value>
</data>
<data name="请输入UID号" xml:space="preserve">
<value>请输入UID号</value>
</data>
<data name="请输入已知Key" xml:space="preserve">
<value>请输入已知Key</value>
</data>
<data name="请输入已知的Key_以英文半角逗号分隔" xml:space="preserve">
<value>请输入已知的Key以英文半角逗号分隔。</value>
</data>
<data name="请输入需要写入的UID卡号_共8位十六进制数_如E44A3B" xml:space="preserve">
<value>请输入需要写入的UID卡号共8位十六进制数如E44A3BF1。</value>
</data>
<data name="请输入需要更改的UID卡号_共8位十六进制数_如E44A3B" xml:space="preserve">
<value>请输入需要更改的UID卡号共8位十六进制数如E44A3BF1。</value>
</data>
<data name="请选择MCT_txt文件保存位置及文件名" xml:space="preserve">
<value>请选择MCT.txt文件保存位置及文件名</value>
</data>
<data name="请选择MFD文件保存位置及文件名" xml:space="preserve">
<value>请选择MFD文件保存位置及文件名</value>
</data>
<data name="请选择一个包含目标卡密钥的MFD文件_通常是已经破解出的该卡" xml:space="preserve">
<value>请选择一个包含目标卡密钥的MFD文件通常是已经破解出的该卡的MFD文件</value>
</data>
<data name="请选择密钥字典文件保存位置及文件名" xml:space="preserve">
<value>请选择密钥字典文件保存位置及文件名</value>
</data>
<data name="请选择最后一次写卡导致0块损坏的卡数据文件" xml:space="preserve">
<value>请选择最后一次写卡导致0块损坏的卡数据文件</value>
</data>
<data name="请选择需要写入的MFD文件" xml:space="preserve">
<value>请选择需要写入的MFD文件</value>
</data>
<data name="请选择需要打开的MCT格式文件" xml:space="preserve">
<value>请选择需要打开的MCT格式文件</value>
</data>
<data name="请选择需要打开的MFD文件" xml:space="preserve">
<value>请选择需要打开的MFD文件</value>
</data>
<data name="请选择需要打开的MFD文件_比较A" xml:space="preserve">
<value>请选择需要打开的MFD文件(比较A)</value>
</data>
<data name="请选择需要打开的MFD文件_比较B" xml:space="preserve">
<value>请选择需要打开的MFD文件(比较B)</value>
</data>
<data name="请选择需要打开的密钥字典文件" xml:space="preserve">
<value>请选择需要打开的密钥字典文件</value>
</data>
<data name="输入的UID号不合法" xml:space="preserve">
<value>输入的UID号不合法</value>
</data>
<data name="运行中" xml:space="preserve">
<value>运行中</value>
</data>
<data name="运行时间" xml:space="preserve">
<value>运行时间:</value>
</data>
<data name="选择key_mfd" xml:space="preserve">
<value>选择key.mfd</value>
</data>
<data name="错误" xml:space="preserve">
<value>错误</value>
</data>
</root>

View File

@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
@ -12,7 +12,7 @@ namespace MifareOneTool.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@ -175,5 +175,17 @@ namespace MifareOneTool.Properties {
this["CuidKeyOver"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string Language {
get {
return ((string)(this["Language"]));
}
set {
this["Language"] = value;
}
}
}
}

View File

@ -41,5 +41,8 @@
<Setting Name="CuidKeyOver" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="Language" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

View File

@ -0,0 +1,286 @@
using MultiLang;
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Reflection;
using System.Globalization;
using System.IO;
using System.IO.IsolatedStorage;
using System.Threading;
using System.Text;
using System.Xml;
using System.Collections.Generic;
namespace MultiLang
{
public partial class SelectLanguage : Form
{
public SelectLanguage()
{
InitializeComponent();
}
//----------------------------------------------
//Enums
//----------------------------------------------
public enum enumStartupMode
{
UseDefaultCulture = 0,
UseSavedCulture = 1,
ShowDialog = 2
}
private enum enumCultureMatch
{
None = 0,
Language = 1,
Neutral = 2,
Region = 3
}
//----------------------------------------------
//Member Variables
//----------------------------------------------
private enumStartupMode StartupMode;
private CultureInfo SelectedCulture;
// The array of supported cultures is updated automatically by Multi-Language for Visual Studio
private static string[] SupportedCultures = { "ru", "zh" } ; //MLHIDE
//----------------------------------------------
//Public Methods
//----------------------------------------------
public void LoadSettingsAndShow()
{
LoadSettingsAndShow(false);
}
public void LoadSettingsAndShow(Boolean ForceShow)
{
LoadSettings();
if (ForceShow || (StartupMode == enumStartupMode.ShowDialog))
{
this.ShowDialog();
if (lstCultures.SelectedItem != null)
{
SelectedCulture = (CultureInfo)lstCultures.SelectedItem;
}
SaveSettings();
}
if (StartupMode != enumStartupMode.UseDefaultCulture)
{
if (SelectedCulture != null)
{
// Actually change the culture of the current thread.
Thread.CurrentThread.CurrentUICulture = SelectedCulture;
if (ForceShow)
{
#if true
// The code generated by VS.NET cannot be used to change the
// language of an active form. Show a message to this effect.
MessageBox.Show("The settings have been saved.\n" +
"The language change will take full effect the next time you start the program.",
"Select language",
MessageBoxButtons.OK);
#else
MLRuntime.MLRuntime.BroadcastLanguageChanged() ;
#endif
}
}
}
}
//----------------------------------------------
//Private Methods
//----------------------------------------------
//
// SaveSettings and LoadSettings use an XML file, saved in so called
// Isolated Storage.
//
// I'm not convinced that this is really the best way or the best place
// to store this information, but it's certainly a .NET way to do it.
//
private void LoadSettings()
{
// Set the defaults
StartupMode = enumStartupMode.ShowDialog;
SelectedCulture = Thread.CurrentThread.CurrentUICulture;
// Create an IsolatedStorageFile object and get the store
// for this application.
IsolatedStorageFile isoStorage = IsolatedStorageFile.GetUserStoreForDomain();
// Check whether the file exists
if (isoStorage.GetFileNames("CultureSettings.xml").Length > 0) //MLHIDE
{
// Create isoStorage StreamReader.
StreamReader stmReader = new StreamReader
(new IsolatedStorageFileStream
("CultureSettings.xml",
FileMode.Open,
isoStorage)); //MLHIDE
XmlTextReader xmlReader = new XmlTextReader(stmReader);
// Loop through the XML file until all Nodes have been read and processed.
while (xmlReader.Read())
{
switch (xmlReader.Name)
{
case "StartupMode": //MLHIDE
StartupMode = (enumStartupMode)int.Parse(xmlReader.ReadString());
break;
case "Culture": //MLHIDE
String CultName = xmlReader.ReadString();
CultureInfo CultInfo = new CultureInfo(CultName);
SelectedCulture = CultInfo;
break;
}
}
// Close the reader
xmlReader.Close();
stmReader.Close();
}
isoStorage.Close();
}
private void SaveSettings()
{
// Get an isolated store for user, domain, and assembly and put it into
// an IsolatedStorageFile object.
IsolatedStorageFile isoStorage = IsolatedStorageFile.GetUserStoreForDomain();
// Create isoStorage StreamWriter and assign it to an XmlTextWriter variable.
IsolatedStorageFileStream stmWriter = new IsolatedStorageFileStream("CultureSettings.xml", FileMode.Create, isoStorage); //MLHIDE
XmlTextWriter writer = new XmlTextWriter(stmWriter, Encoding.UTF8);
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();
writer.WriteStartElement("CultureSettings"); //MLHIDE
writer.WriteStartElement("StartupMode"); //MLHIDE
writer.WriteString(((int)StartupMode).ToString());
writer.WriteEndElement();
writer.WriteStartElement("Culture"); //MLHIDE
writer.WriteString(SelectedCulture.Name);
writer.WriteEndElement();
writer.WriteEndElement();
writer.Flush();
writer.Close();
stmWriter.Close();
isoStorage.Close();
}
private void SelectLanguage_Load(object sender, System.EventArgs e)
{
enumCultureMatch Match = enumCultureMatch.None;
enumCultureMatch NewMatch = enumCultureMatch.None;
// Version 1 detected which subdirectories are present.
// String AsmLocation = Assembly.GetExecutingAssembly ( ).Location;
// String AsmPath = Path.GetDirectoryName ( AsmLocation );
// List<String> DirList = new List<String> ( );
//
// DirList.AddRange ( Directory.GetDirectories ( AsmPath, "??" ) );
// DirList.AddRange ( Directory.GetDirectories ( AsmPath, "??-??*" ) );
//
// foreach ( String SubDirName in DirList )
// {
// try
// {
// String BaseName = Path.GetFileName ( SubDirName );
// CultureInfo Cult = new CultureInfo ( BaseName );
// Version 2 used the SupportedCultures array in MlString.h,
// which is autoamatically updated by Multi-Language for Visual Studio
// foreach ( String IetfTag in ml.SupportedCultures )
// Version 3 uses the SupportedCultures array in this file,
// which is autoamatically updated by Multi-Language for Visual Studio
foreach (String IetfTag in SupportedCultures)
{
try
{
CultureInfo Cult = new CultureInfo(IetfTag);
// Note: The property lstCultures.DisplayName is set to "NativeName" in order to
// show language name in its own language.
lstCultures.Items.Add(Cult);
// The rest of this logic is just to find the nearest match to the
// current UI culture.
// How well does this culture match?
if (SelectedCulture.Equals(Cult))
{
NewMatch = enumCultureMatch.Region;
}
else if (Cult.TwoLetterISOLanguageName == SelectedCulture.TwoLetterISOLanguageName)
{
if (Cult.IsNeutralCulture)
NewMatch = enumCultureMatch.Neutral;
else
NewMatch = enumCultureMatch.Language;
}
// Is that better than the best match so far?
if (NewMatch > Match)
{
Match = NewMatch;
lstCultures.SelectedItem = Cult;
}
}
catch
{
}
}
switch (StartupMode)
{
case enumStartupMode.ShowDialog:
rbShow.Checked = true;
break;
case enumStartupMode.UseDefaultCulture:
rbDefault.Checked = true;
break;
case enumStartupMode.UseSavedCulture:
rbSelected.Checked = true;
break;
}
}
private void btOK_Click(object sender, System.EventArgs e)
{
if (lstCultures.SelectedItem != null)
{
SelectedCulture = (CultureInfo)lstCultures.SelectedItem;
}
this.Close();
}
private void OnStartup_CheckedChanged(object sender, System.EventArgs e)
{
if (rbShow.Checked)
StartupMode = enumStartupMode.ShowDialog;
else if (rbSelected.Checked)
StartupMode = enumStartupMode.UseSavedCulture;
else if (rbDefault.Checked)
StartupMode = enumStartupMode.UseDefaultCulture;
}
}
}

161
MifareOneTool/SelectLanguage.designer.cs generated Normal file
View File

@ -0,0 +1,161 @@
namespace MultiLang
{
partial class SelectLanguage
{
/// <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.rbSelected = new System.Windows.Forms.RadioButton();
this.rbShow = new System.Windows.Forms.RadioButton();
this.lblStartup = new System.Windows.Forms.Label();
this.rbDefault = new System.Windows.Forms.RadioButton();
this.lstCultures = new System.Windows.Forms.ListBox();
this.btOK = new System.Windows.Forms.Button();
this.Panel1 = new System.Windows.Forms.Panel();
this.Panel1.SuspendLayout();
this.SuspendLayout();
//
// rbSelected
//
this.rbSelected.AccessibleDescription = "";
this.rbSelected.AccessibleName = "";
this.rbSelected.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.rbSelected.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.rbSelected.Location = new System.Drawing.Point(4, 40);
this.rbSelected.Name = "rbSelected";
this.rbSelected.Size = new System.Drawing.Size(209, 20);
this.rbSelected.TabIndex = 2;
this.rbSelected.Text = "Use the selected language";
this.rbSelected.CheckedChanged += new System.EventHandler(this.OnStartup_CheckedChanged);
//
// rbShow
//
this.rbShow.AccessibleDescription = "";
this.rbShow.AccessibleName = "";
this.rbShow.Checked = true;
this.rbShow.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.rbShow.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.rbShow.Location = new System.Drawing.Point(4, 20);
this.rbShow.Name = "rbShow";
this.rbShow.Size = new System.Drawing.Size(209, 20);
this.rbShow.TabIndex = 1;
this.rbShow.TabStop = true;
this.rbShow.Text = "Show this form again";
this.rbShow.CheckedChanged += new System.EventHandler(this.OnStartup_CheckedChanged);
//
// lblStartup
//
this.lblStartup.AccessibleDescription = "";
this.lblStartup.AccessibleName = "";
this.lblStartup.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.lblStartup.Location = new System.Drawing.Point(4, 3);
this.lblStartup.Name = "lblStartup";
this.lblStartup.Size = new System.Drawing.Size(209, 17);
this.lblStartup.TabIndex = 0;
this.lblStartup.Text = "Next time ...";
//
// rbDefault
//
this.rbDefault.AccessibleDescription = "";
this.rbDefault.AccessibleName = "";
this.rbDefault.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.rbDefault.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.rbDefault.Location = new System.Drawing.Point(4, 60);
this.rbDefault.Name = "rbDefault";
this.rbDefault.Size = new System.Drawing.Size(209, 20);
this.rbDefault.TabIndex = 3;
this.rbDefault.Text = "Use the default language";
this.rbDefault.CheckedChanged += new System.EventHandler(this.OnStartup_CheckedChanged);
//
// lstCultures
//
this.lstCultures.AccessibleDescription = "";
this.lstCultures.AccessibleName = "";
this.lstCultures.DisplayMember = "NativeName";
this.lstCultures.Font = new System.Drawing.Font("Arial", 9.75F);
this.lstCultures.IntegralHeight = false;
this.lstCultures.ItemHeight = 16;
this.lstCultures.Location = new System.Drawing.Point(4, 4);
this.lstCultures.Name = "lstCultures";
this.lstCultures.Size = new System.Drawing.Size(264, 220);
this.lstCultures.TabIndex = 7;
this.lstCultures.DoubleClick += new System.EventHandler(this.btOK_Click);
//
// btOK
//
this.btOK.AccessibleDescription = "";
this.btOK.AccessibleName = "";
this.btOK.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.btOK.Location = new System.Drawing.Point(180, 316);
this.btOK.Name = "btOK";
this.btOK.Size = new System.Drawing.Size(90, 32);
this.btOK.TabIndex = 8;
this.btOK.Text = "OK";
this.btOK.Click += new System.EventHandler(this.btOK_Click);
//
// Panel1
//
this.Panel1.AccessibleDescription = "";
this.Panel1.AccessibleName = "";
this.Panel1.BackColor = System.Drawing.SystemColors.Control;
this.Panel1.Controls.Add(this.rbDefault);
this.Panel1.Controls.Add(this.rbSelected);
this.Panel1.Controls.Add(this.rbShow);
this.Panel1.Controls.Add(this.lblStartup);
this.Panel1.Location = new System.Drawing.Point(4, 228);
this.Panel1.Name = "Panel1";
this.Panel1.Size = new System.Drawing.Size(264, 84);
this.Panel1.TabIndex = 9;
//
// SelectLanguage
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(272, 352);
this.Controls.Add(this.lstCultures);
this.Controls.Add(this.btOK);
this.Controls.Add(this.Panel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Name = "SelectLanguage";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "SelectLanguage";
this.Load += new System.EventHandler(this.SelectLanguage_Load);
this.Panel1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
internal System.Windows.Forms.RadioButton rbSelected;
internal System.Windows.Forms.RadioButton rbShow;
internal System.Windows.Forms.Label lblStartup;
internal System.Windows.Forms.RadioButton rbDefault;
internal System.Windows.Forms.ListBox lstCultures;
internal System.Windows.Forms.Button btOK;
internal System.Windows.Forms.Panel Panel1;
}
}

View 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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -53,6 +53,9 @@
<setting name="CuidKeyOver" serializeAs="String">
<value>True</value>
</setting>
<setting name="Language" serializeAs="String">
<value />
</setting>
</MifareOneTool.Properties.Settings>
</userSettings>
</configuration>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff