瀏覽代碼

当NG时,针对惠州工厂弹出密码解锁框。

sat23 3 年之前
父節點
當前提交
a331e7f599
共有 11 個文件被更改,包括 663 次插入133 次删除
  1. 1 0
      .gitignore
  2. 24 4
      Business/CommonMethod.cs
  3. 9 0
      MOKA Factory Tools.csproj
  4. 1 1
      Properties/AssemblyInfo.cs
  5. 3 0
      Views/Login.Designer.cs
  6. 30 0
      Views/Login.cs
  7. 128 128
      Views/Login.resx
  8. 29 0
      Views/OperationPanel.cs
  9. 85 0
      Views/Verify.Designer.cs
  10. 38 0
      Views/Verify.cs
  11. 315 0
      Views/Verify.resx

+ 1 - 0
.gitignore

@@ -5,3 +5,4 @@
 /obj
 /bin
 /.vs
+*.exe

+ 24 - 4
Business/CommonMethod.cs

@@ -37,6 +37,28 @@ namespace MOKA_Factory_Tools
         private static string lastOrder = "";
         private static List<string> ListACASSN = new List<string>();
 
+        private static LoginInput loginInput = new LoginInput();
+
+        /// <summary>
+        /// 保存登录信息;
+        /// </summary>
+        /// <param name="strAccount"></param>
+        /// <param name="strPssword"></param>
+        public static void SaveLoginInfo(string strAccount, string strPssword)
+        {
+            loginInput.account = strAccount;
+            loginInput.password = strPssword;
+        }
+
+        /// <summary>
+        /// 获取登录账号;
+        /// </summary>
+        /// <returns></returns>
+        public static string GetLoginAccout()
+        {
+            return loginInput.account;
+        }
+
         public static string ReadProfileString(string lpApplicationName, string lpKeyName, string lpDefault)
         {
             StringBuilder MyString = new StringBuilder(256);
@@ -2186,13 +2208,14 @@ namespace MOKA_Factory_Tools
             {
                 try
                 {
+                    hResult.Html = utf8_gb2312(hResult.Html);
                     using (JsonTextReader reader = new JsonTextReader(new StringReader(hResult.Html)))
                     {
                         JObject jObject = (JObject)JToken.ReadFrom(reader);
                         reader.Close();
 
                         bool bResult = jObject["Result"].Value<bool>();
-                        msg = utf8_gb2312(jObject["EroMsg"].Value<string>());
+                        msg = jObject["EroMsg"].Value<string>();
 
                         if (bResult)
                         {
@@ -2261,20 +2284,17 @@ namespace MOKA_Factory_Tools
                         }
 
                         Log.WriteInfoLog("ReportDataBurningResultToMES error:" + hResult.StatusDescription + "\r\n" + hResult.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata);
-                        return false;
                     }
                 }
                 catch (Exception)
                 {
                     Log.WriteErrorLog("ReportDataBurningResultToMES error:" + hResult.StatusDescription + "\r\n" + hResult.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata);
-                    return false;
                     throw;
                 }
             }
             else
             {
                 Log.WriteInfoLog("ReportDataBurningResultToMES error:" + hResult.StatusDescription + "\r\n" + hResult.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata);
-                return false;
             }
 
             return false;

+ 9 - 0
MOKA Factory Tools.csproj

@@ -160,6 +160,12 @@
     <Compile Include="Models\StructList.cs" />
     <Compile Include="LogHelper\Writelog.cs" />
     <Compile Include="Http\Xmlconfig.cs" />
+    <Compile Include="Views\Verify.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Views\Verify.Designer.cs">
+      <DependentUpon>Verify.cs</DependentUpon>
+    </Compile>
     <EmbeddedResource Include="Views\CreateDBManually.resx">
       <DependentUpon>CreateDBManually.cs</DependentUpon>
     </EmbeddedResource>
@@ -216,6 +222,9 @@
       <DependentUpon>Resources.resx</DependentUpon>
       <DesignTime>True</DesignTime>
     </Compile>
+    <EmbeddedResource Include="Views\Verify.resx">
+      <DependentUpon>Verify.cs</DependentUpon>
+    </EmbeddedResource>
     <None Include="app.config" />
     <None Include="app.manifest" />
     <None Include="Config.json" />

+ 1 - 1
Properties/AssemblyInfo.cs

@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
 //通过使用 "*",如下所示:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.0.6.7")]
+[assembly: AssemblyVersion("3.0.6.8")]
 [assembly: AssemblyFileVersion("1.0.0.1")]

+ 3 - 0
Views/Login.Designer.cs

@@ -74,11 +74,13 @@
             // 
             resources.ApplyResources(this.PwdText, "PwdText");
             this.PwdText.Name = "PwdText";
+            this.PwdText.KeyDown += new System.Windows.Forms.KeyEventHandler(this.PwdText_KeyDown);
             // 
             // LineText
             // 
             resources.ApplyResources(this.LineText, "LineText");
             this.LineText.Name = "LineText";
+            this.LineText.KeyDown += new System.Windows.Forms.KeyEventHandler(this.LineText_KeyDown);
             // 
             // skinLabel3
             // 
@@ -105,6 +107,7 @@
             this.MinimizeBox = false;
             this.Name = "login";
             this.Load += new System.EventHandler(this.login_Load);
+            this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.login_KeyDown);
             this.ResumeLayout(false);
             this.PerformLayout();
 

+ 30 - 0
Views/Login.cs

@@ -167,6 +167,9 @@ namespace MOKA_Factory_Tools
             {               
                 enable = 2;
             }
+
+            // 保存登录信息;
+            CommonMethod.SaveLoginInfo(AccountText.Text, PwdText.Text);
             CommonMethod.FactoryName = loginOutput1.factoryname;
             UpgradeMsgList upgradeMsgList = new UpgradeMsgList();
             var FactoryNum = loginOutput1.factorynum;
@@ -279,5 +282,32 @@ namespace MOKA_Factory_Tools
                 Application.Exit();
             }
         }
+
+        private void login_KeyDown(object sender, KeyEventArgs e)
+        {
+            // 判断是否回车登录;
+            if (e.KeyCode == Keys.Enter)
+            {
+                OnBtnLogin(sender, e);
+            }
+        }
+
+        private void PwdText_KeyDown(object sender, KeyEventArgs e)
+        {
+            // 判断是否回车登录;
+            if (e.KeyCode == Keys.Enter)
+            {
+                OnBtnLogin(sender, e);
+            }
+        }
+
+        private void LineText_KeyDown(object sender, KeyEventArgs e)
+        {
+            // 判断是否回车登录;
+            if (e.KeyCode == Keys.Enter)
+            {
+                OnBtnLogin(sender, e);
+            }
+        }
     }
 }

+ 128 - 128
Views/Login.resx

@@ -117,155 +117,125 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <data name="&gt;&gt;LineText.Type" xml:space="preserve">
-    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  <data name="&gt;&gt;PwdText.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;skinLabel3.Type" xml:space="preserve">
+    <value>CCWin.SkinControl.SkinLabel, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <data name="skinLabel2.Location" type="System.Drawing.Point, System.Drawing">
     <value>19, 135</value>
   </data>
-  <data name="textBox1.Location" type="System.Drawing.Point, System.Drawing">
-    <value>64, 123</value>
-  </data>
-  <data name="BtnLogin.Text" xml:space="preserve">
-    <value>Confirm</value>
-  </data>
-  <data name="&gt;&gt;BtnLogin.Parent" xml:space="preserve">
-    <value>$this</value>
-  </data>
-  <data name="skinLabel1.Font" type="System.Drawing.Font, System.Drawing">
-    <value>微软雅黑, 9pt</value>
+  <data name="&gt;&gt;$this.Type" xml:space="preserve">
+    <value>CCWin.Skin_Color, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
   </data>
   <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-  <data name="LineText.TabIndex" type="System.Int32, mscorlib">
-    <value>5</value>
-  </data>
-  <data name="skinLabel2.Font" type="System.Drawing.Font, System.Drawing">
-    <value>微软雅黑, 9pt</value>
-  </data>
-  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-  <data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
-    <value>2, 2, 2, 2</value>
-  </data>
-  <data name="&gt;&gt;AccountText.Parent" xml:space="preserve">
-    <value>$this</value>
-  </data>
-  <data name="&gt;&gt;textBox1.Type" xml:space="preserve">
-    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  <data name="skinLabel2.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
   </data>
-  <data name="skinLabel1.Location" type="System.Drawing.Point, System.Drawing">
-    <value>19, 79</value>
+  <data name="&gt;&gt;PwdText.Name" xml:space="preserve">
+    <value>PwdText</value>
   </data>
-  <data name="&gt;&gt;LineText.Name" xml:space="preserve">
-    <value>LineText</value>
+  <data name="&gt;&gt;textBox1.Name" xml:space="preserve">
+    <value>textBox1</value>
   </data>
-  <data name="&gt;&gt;PwdText.ZOrder" xml:space="preserve">
-    <value>2</value>
+  <data name="&gt;&gt;BtnLogin.Type" xml:space="preserve">
+    <value>CCWin.SkinControl.SkinButton, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
   </data>
-  <data name="&gt;&gt;skinLabel1.Name" xml:space="preserve">
-    <value>skinLabel1</value>
+  <data name="&gt;&gt;skinLabel3.ZOrder" xml:space="preserve">
+    <value>0</value>
   </data>
-  <data name="skinLabel2.TabIndex" type="System.Int32, mscorlib">
-    <value>2</value>
+  <data name="skinLabel2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>78, 20</value>
   </data>
-  <data name="&gt;&gt;AccountText.ZOrder" xml:space="preserve">
-    <value>3</value>
+  <data name="skinLabel2.Font" type="System.Drawing.Font, System.Drawing">
+    <value>微软雅黑, 9pt</value>
   </data>
   <data name="BtnLogin.TabIndex" type="System.Int32, mscorlib">
     <value>0</value>
   </data>
-  <data name="&gt;&gt;BtnLogin.Name" xml:space="preserve">
-    <value>BtnLogin</value>
-  </data>
-  <data name="&gt;&gt;textBox1.Name" xml:space="preserve">
-    <value>textBox1</value>
-  </data>
-  <data name="BtnLogin.Size" type="System.Drawing.Size, System.Drawing">
-    <value>110, 42</value>
+  <data name="&gt;&gt;LineText.ZOrder" xml:space="preserve">
+    <value>1</value>
   </data>
-  <data name="skinLabel2.AutoSize" type="System.Boolean, mscorlib">
-    <value>True</value>
+  <data name="&gt;&gt;skinLabel2.Name" xml:space="preserve">
+    <value>skinLabel2</value>
   </data>
   <data name="skinLabel1.TabIndex" type="System.Int32, mscorlib">
     <value>1</value>
   </data>
+  <data name="skinLabel1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>70, 20</value>
+  </data>
   <data name="skinLabel1.AutoSize" type="System.Boolean, mscorlib">
     <value>True</value>
   </data>
-  <data name="&gt;&gt;PwdText.Parent" xml:space="preserve">
-    <value>$this</value>
+  <data name="skinLabel3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>19, 126</value>
   </data>
-  <data name="&gt;&gt;skinLabel2.ZOrder" xml:space="preserve">
-    <value>4</value>
+  <data name="&gt;&gt;LineText.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;skinLabel2.Parent" xml:space="preserve">
-    <value>$this</value>
+  <data name="BtnLogin.Size" type="System.Drawing.Size, System.Drawing">
+    <value>110, 42</value>
   </data>
-  <data name="&gt;&gt;skinLabel1.Parent" xml:space="preserve">
+  <data name="&gt;&gt;AccountText.Parent" xml:space="preserve">
     <value>$this</value>
   </data>
-  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
-    <value>8, 15</value>
-  </data>
-  <data name="AccountText.Location" type="System.Drawing.Point, System.Drawing">
-    <value>113, 79</value>
-  </data>
-  <data name="AccountText.TabIndex" type="System.Int32, mscorlib">
-    <value>3</value>
-  </data>
-  <data name="&gt;&gt;skinLabel2.Type" xml:space="preserve">
-    <value>CCWin.SkinControl.SkinLabel, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
-  </data>
-  <data name="&gt;&gt;skinLabel3.Type" xml:space="preserve">
-    <value>CCWin.SkinControl.SkinLabel, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
+  <data name="skinLabel3.TabIndex" type="System.Int32, mscorlib">
+    <value>6</value>
   </data>
-  <data name="skinLabel2.Size" type="System.Drawing.Size, System.Drawing">
-    <value>78, 20</value>
+  <data name="&gt;&gt;BtnLogin.Name" xml:space="preserve">
+    <value>BtnLogin</value>
   </data>
-  <data name="&gt;&gt;textBox1.Parent" xml:space="preserve">
-    <value>$this</value>
+  <data name="&gt;&gt;LineText.Name" xml:space="preserve">
+    <value>LineText</value>
   </data>
-  <data name="&gt;&gt;skinLabel3.ZOrder" xml:space="preserve">
-    <value>0</value>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 2, 2, 2</value>
   </data>
   <data name="&gt;&gt;skinLabel3.Parent" xml:space="preserve">
     <value>$this</value>
   </data>
-  <data name="&gt;&gt;skinLabel1.Type" xml:space="preserve">
-    <value>CCWin.SkinControl.SkinLabel, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
-  </data>
-  <data name="&gt;&gt;BtnLogin.Type" xml:space="preserve">
-    <value>CCWin.SkinControl.SkinButton, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
+  <data name="&gt;&gt;skinLabel3.Name" xml:space="preserve">
+    <value>skinLabel3</value>
   </data>
-  <data name="&gt;&gt;$this.Name" xml:space="preserve">
-    <value>login</value>
+  <data name="AccountText.Size" type="System.Drawing.Size, System.Drawing">
+    <value>207, 25</value>
   </data>
   <data name="&gt;&gt;skinLabel1.ZOrder" xml:space="preserve">
     <value>5</value>
   </data>
-  <data name="&gt;&gt;AccountText.Name" xml:space="preserve">
-    <value>AccountText</value>
+  <data name="&gt;&gt;PwdText.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;PwdText.Name" xml:space="preserve">
-    <value>PwdText</value>
+  <data name="&gt;&gt;skinLabel1.Name" xml:space="preserve">
+    <value>skinLabel1</value>
   </data>
-  <data name="&gt;&gt;PwdText.Type" xml:space="preserve">
+  <data name="$this.Text" xml:space="preserve">
+    <value>login</value>
+  </data>
+  <data name="&gt;&gt;textBox1.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;BtnLogin.ZOrder" xml:space="preserve">
-    <value>6</value>
+  <data name="&gt;&gt;skinLabel2.Parent" xml:space="preserve">
+    <value>$this</value>
   </data>
-  <data name="skinLabel1.Size" type="System.Drawing.Size, System.Drawing">
-    <value>70, 20</value>
+  <data name="AccountText.Location" type="System.Drawing.Point, System.Drawing">
+    <value>113, 79</value>
   </data>
-  <data name="PwdText.TabIndex" type="System.Int32, mscorlib">
-    <value>4</value>
+  <data name="skinLabel1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>19, 79</value>
   </data>
-  <data name="&gt;&gt;skinLabel2.Name" xml:space="preserve">
-    <value>skinLabel2</value>
+  <data name="&gt;&gt;LineText.Parent" xml:space="preserve">
+    <value>$this</value>
   </data>
-  <data name="skinLabel3.TabIndex" type="System.Int32, mscorlib">
-    <value>6</value>
+  <data name="&gt;&gt;AccountText.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="LineText.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
   </data>
   <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
@@ -461,59 +431,89 @@
         AAD///////8AAP///////wAA////////AAD///////8AAA==
 </value>
   </data>
-  <data name="textBox1.TabIndex" type="System.Int32, mscorlib">
-    <value>5</value>
+  <data name="textBox1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>64, 123</value>
   </data>
-  <data name="PwdText.Size" type="System.Drawing.Size, System.Drawing">
-    <value>207, 25</value>
+  <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
+    <value>364, 243</value>
   </data>
-  <data name="skinLabel1.Text" xml:space="preserve">
-    <value>Account</value>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>8, 15</value>
   </data>
-  <data name="&gt;&gt;skinLabel3.Name" xml:space="preserve">
-    <value>skinLabel3</value>
+  <data name="&gt;&gt;$this.Name" xml:space="preserve">
+    <value>login</value>
   </data>
   <data name="LineText.Location" type="System.Drawing.Point, System.Drawing">
     <value>64, 122</value>
   </data>
-  <data name="$this.Text" xml:space="preserve">
-    <value>login</value>
+  <data name="PwdText.PasswordChar" type="System.Char, mscorlib" xml:space="preserve">
+    <value>*</value>
   </data>
-  <data name="&gt;&gt;LineText.ZOrder" xml:space="preserve">
-    <value>1</value>
+  <data name="&gt;&gt;skinLabel1.Type" xml:space="preserve">
+    <value>CCWin.SkinControl.SkinLabel, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BtnLogin.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="skinLabel1.Font" type="System.Drawing.Font, System.Drawing">
+    <value>微软雅黑, 9pt</value>
+  </data>
+  <data name="AccountText.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
   </data>
   <data name="&gt;&gt;textBox1.ZOrder" xml:space="preserve">
     <value>1</value>
   </data>
-  <data name="skinLabel3.Location" type="System.Drawing.Point, System.Drawing">
-    <value>19, 126</value>
+  <data name="&gt;&gt;skinLabel2.Type" xml:space="preserve">
+    <value>CCWin.SkinControl.SkinLabel, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
   </data>
-  <data name="BtnLogin.Location" type="System.Drawing.Point, System.Drawing">
-    <value>149, 174</value>
+  <data name="&gt;&gt;skinLabel2.ZOrder" xml:space="preserve">
+    <value>4</value>
   </data>
-  <data name="AccountText.Size" type="System.Drawing.Size, System.Drawing">
+  <data name="PwdText.Size" type="System.Drawing.Size, System.Drawing">
     <value>207, 25</value>
   </data>
-  <data name="PwdText.PasswordChar" type="System.Char, mscorlib" xml:space="preserve">
-    <value>*</value>
+  <data name="&gt;&gt;skinLabel1.Parent" xml:space="preserve">
+    <value>$this</value>
   </data>
-  <data name="&gt;&gt;AccountText.Type" xml:space="preserve">
-    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  <data name="skinLabel2.Text" xml:space="preserve">
+    <value>Password
+</value>
+  </data>
+  <data name="skinLabel1.Text" xml:space="preserve">
+    <value>Account</value>
+  </data>
+  <data name="skinLabel2.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="&gt;&gt;textBox1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;AccountText.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="BtnLogin.Text" xml:space="preserve">
+    <value>Confirm</value>
+  </data>
+  <data name="BtnLogin.Location" type="System.Drawing.Point, System.Drawing">
+    <value>149, 174</value>
+  </data>
+  <data name="&gt;&gt;PwdText.ZOrder" xml:space="preserve">
+    <value>2</value>
   </data>
   <data name="PwdText.Location" type="System.Drawing.Point, System.Drawing">
     <value>113, 130</value>
   </data>
-  <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
-    <value>364, 243</value>
+  <data name="PwdText.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
   </data>
-  <data name="&gt;&gt;$this.Type" xml:space="preserve">
-    <value>CCWin.Skin_Color, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
+  <data name="&gt;&gt;AccountText.Name" xml:space="preserve">
+    <value>AccountText</value>
   </data>
-  <data name="skinLabel2.Text" xml:space="preserve">
-    <value>Password
-</value>
+  <data name="textBox1.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
   </data>
-  <data name="&gt;&gt;LineText.Parent" xml:space="preserve">
+  <data name="&gt;&gt;BtnLogin.Parent" xml:space="preserve">
     <value>$this</value>
   </data>
   <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+ 29 - 0
Views/OperationPanel.cs

@@ -64,6 +64,26 @@ namespace MOKA_Factory_Tools
         //自动key提取事件
         public event AutoKeyRequireDelegate AutoKeyRequire;
 
+        //定义一个委托  调用Verify窗口;
+        delegate void ShowVerifyCallback();
+
+        //委托方法
+        private void ShowVerifyDailog()
+        {
+            //右下角消息框Form
+            Verify dlg = new Verify();
+            dlg.ShowDialog();
+        }
+
+        //调用委托
+        private void ShowVerifyDelegate()
+        {
+            //创建委托
+            ShowVerifyCallback wt = new ShowVerifyCallback(ShowVerifyDailog);
+            //这段代码在主窗体类里面写着,this指主窗体
+            this.Invoke(wt, new Object[] { });
+        }
+
         public OperationPanel(Main form1, SQLiteConnection localDB, SQLiteConnection errorDB, MidAddress midAddress1, FunctionSetting functionSetting, WriteCheck writeCheck1, ReadCheck readCheck1, WriteDone writeDone1, bool preload, MidList midList1, string order)
         {
             InitializeComponent();
@@ -5017,7 +5037,9 @@ namespace MOKA_Factory_Tools
 
                     }
                 }
+                // 上报完成后,更新本地数据库Key的数量;
                 UploadCopyCount();
+                // 同时,在线更新Key数量;
                 UpdateKeys(midListNow.keytype, false);
             }
 
@@ -5056,6 +5078,13 @@ namespace MOKA_Factory_Tools
                         CommonMethod.WriteProfileString("MOKAFactoryTools", "GFailCount", (++lastCount).ToString());
                     }
                 }
+
+                // NG的情况,要弹出密码输入框;
+                if ( CommonMethod.GetLoginAccout().Equals("Huizhou",StringComparison.OrdinalIgnoreCase) )
+                {
+                    // 如果是惠州工厂,启动NG弹密码框功能;
+                    ShowVerifyDelegate();
+                }
             }
             // 上报抄写结果到MES系统中;
             string strOutMsg;

+ 85 - 0
Views/Verify.Designer.cs

@@ -0,0 +1,85 @@
+namespace MOKA_Factory_Tools
+{
+    partial class Verify
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Verify));
+            this.skinLabel1 = new CCWin.SkinControl.SkinLabel();
+            this.TB_PASSWORD = new System.Windows.Forms.TextBox();
+            this.SuspendLayout();
+            // 
+            // skinLabel1
+            // 
+            this.skinLabel1.AutoSize = true;
+            this.skinLabel1.BackColor = System.Drawing.Color.Transparent;
+            this.skinLabel1.BorderColor = System.Drawing.Color.White;
+            this.skinLabel1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.skinLabel1.Location = new System.Drawing.Point(39, 86);
+            this.skinLabel1.Name = "skinLabel1";
+            this.skinLabel1.Size = new System.Drawing.Size(138, 21);
+            this.skinLabel1.TabIndex = 0;
+            this.skinLabel1.Text = "请输入解锁密码:";
+            // 
+            // TB_PASSWORD
+            // 
+            this.TB_PASSWORD.Location = new System.Drawing.Point(183, 86);
+            this.TB_PASSWORD.Name = "TB_PASSWORD";
+            this.TB_PASSWORD.PasswordChar = '*';
+            this.TB_PASSWORD.Size = new System.Drawing.Size(151, 21);
+            this.TB_PASSWORD.TabIndex = 1;
+            this.TB_PASSWORD.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown);
+            // 
+            // Verify
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
+            this.CanResize = false;
+            this.CaptionBackColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
+            this.CaptionBackColorTop = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
+            this.ClientSize = new System.Drawing.Size(392, 168);
+            this.ControlBox = false;
+            this.Controls.Add(this.TB_PASSWORD);
+            this.Controls.Add(this.skinLabel1);
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.Name = "Verify";
+            this.Text = "Verify";
+            this.Load += new System.EventHandler(this.Verify_Load);
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private CCWin.SkinControl.SkinLabel skinLabel1;
+        private System.Windows.Forms.TextBox TB_PASSWORD;
+    }
+}

+ 38 - 0
Views/Verify.cs

@@ -0,0 +1,38 @@
+using CCWin;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace MOKA_Factory_Tools
+{
+    public partial class Verify : Skin_Color
+    {
+        public Verify()
+        {
+            InitializeComponent();
+        }
+
+        private void Verify_Load(object sender, EventArgs e)
+        {
+
+        }
+
+        private void textBox1_KeyDown(object sender, KeyEventArgs e)
+        {
+            // 判断是否回车登录;
+            if (e.KeyCode == Keys.Enter)
+            {
+                if ( TB_PASSWORD.Text == "123456" )
+                {
+                    this.Close();
+                }
+            }
+        }
+    }
+}

+ 315 - 0
Views/Verify.resx

@@ -0,0 +1,315 @@
+<?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>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAABAAMAEBAQAAEABAAoAQAANgAAABAQAAABAAgAaAUAAF4BAAAwMAAAAQAgAKglAADGBgAAKAAAABAA
+        AAAgAAAAAQAEAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA
+        AACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAdnR3AAAAAHbGRmxoAAAHZHZWR0
+        ZwAHxnRsdkbGcAZkbHZGVnRgdHR2hGxkZWh2xkeGVnRsZ2R2R/iHxnZGZWxmjH9kZWV8Z0f2eGVsZ3ZG
+        RoiMZlZIBlZ8ZGdGx2AIRkZWxlZkgAB8dsZ0ZWcAAAhGdGRmgAAAAAdlZ4AAAPgfAADgBwAAwAMAAIAB
+        AACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAIABAADAAwAA4AcAAPgfAAAoAAAAEAAAACAA
+        AAABAAgAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAAI5LIACOTCEAkE8lAJRULACWWDAAmV02AJ1k
+        PwCeZkEAp3NSAKh0UwCqeFcArn9hALuTegC8lXsAzrGfAM+zoQDSt6cA2MGyANzIuwDl1s0A59nPAOnc
+        1ADy6uUA9/LvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAADggDAwgOAAAAAAAAAAAOAgICAgIC
+        AgIOAAAAAAALAgICAgICAgICAgsAAAAOAgICAgICAgICAgICDgAAAgICAQEBAQEBAQEBAQIADgICAQEF
+        DwIBAQEBAQECDggCAgEBBhQCAQEBAQEBAggDAgIBAQYYExIMAQEBAQIDAwICAQEGFAQHFwMCAQEBAwgC
+        AgEBBhYICxcCAgEBAQgOAgIBAQQREQ8JAQEBAQIOAAICAQICAQEBAQEBAQECAAAOAQEBAQEBAQEBAQEB
+        DgAAAAsCAQEBAQEBAQEBCwAAAAAADgIBAQEBAQECDQAAAAAAAAAADggDAwgOAAAAAAD4HwAA4AcAAMAD
+        AACAAQAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIABAACAAQAAwAMAAOAHAAD4HwAAKAAAADAA
+        AABgAAAAAQAgAAAAAACAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOSyACjksgI49MIliOSyGPjkwhtY5L
+        INuOSyDrjksg+I5LIPiOSyDrjksg245MIbaOSyGPj0wiWI5LICOOSyACAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjkshGo5LIG2OSyDFjksg8I5L
+        IP6OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUog/o5LIPCOSyDFjksgbY5L
+        IRoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI5LIBuOSyCMjksg6o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o5LIOqOSyCMjksgGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOSyAMj0wgdI1L
+        IPOOSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jksg849MIHOOSyAMAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI9L
+        IC2OSyDGjksg/Y1KH/6OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jksg/45LH/2OSyDFj0sgLQAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAjksgT45LIOyNSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jksg7I5LIE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAI5LIAGRTCFrjkog+I5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD/jksg/45KIPiRTCFrjksgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJFMIWuOSyD4jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD4kUwhawAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjksgT45KIPiNSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jkog+I5L
+        IE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPSyAtjksg7I5LIP+OSyD/jUof/o5L
+        IP+OSyD/jksg/41KH/6OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41K
+        H/6OSyD/jksg/45LIOyPSyAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI5LIAyOSyDGjUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyDFjksgDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI5M
+        IHOOSyD9jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD9jkwgcwAAAAAAAAAAAAAAAAAA
+        AAAAAAAAjksgG45LIPONSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jksg845L
+        IBsAAAAAAAAAAAAAAAAAAAAAjksgjI5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41K
+        H/6OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41K
+        H/6OSyD/jksg/45LIIwAAAAAAAAAAAAAAACOSyEajksg6o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o5LIOqOSyEaAAAAAAAAAACOSyBtjUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5LIP+OSyD/llgw/qp4V/+qeFf/l1ky/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyBsAAAAAI5LIAKOSyDFjUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5LIP+OSyD/r4Bi/v//
+        ////////s4Zp/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyDFjksgAo5L
+        ICOOSyDwjUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+r4Bi/v7+/v7+/v7+s4Zp/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6OSyDwjksgI49MIliOSyD+jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41K
+        H/6OSyD/jUof/o5LIP+OSyD/r4Bi/v//////////s4Zp/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD+j0wiWI5LIY+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jksg/41KH/6OSyD/jUof/o5LIP+OSyD/r4Bi/v//////////s4Zp/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jkshjo5MIbWNSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+r4Bi/v7+/v7+/v7+s4Zp/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jkwhtY5LINuOSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5LIP+OSyD/r4Bi/v//
+        ////////vZd+/p1kP/+dZD//nWM//pxiPf+YWjP/j0wi/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg245L
+        IOuOSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5L
+        IP+OSyD/r4Bi/v//////////+vj2/vj18v/49fL/+PTy/vj08f/18O3/7OHa/smplP+ZXjf/jUof/o5L
+        IP+OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41K
+        H/6OSyD/jksg645LIPiNSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+r4Bi/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+
+        /v7u5N3+nmQ//o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jksg+I5LIPiOSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jksg/41KH/6OSyD/jUof/o5LIP+OSyD/r4Bi/v//////////v5qC/qBoRP+gaET/oGhE/qRv
+        Tf+zhmn/3cm8/v//////////3Mi7/o5LIP+OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg+I5LIOuOSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5LIP+OSyD/r4Bi/v//////////s4Zp/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/kE8l/ufZ0P///////Pr5/pNTKv+OSyD/jksg/41KH/6OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg645LINuNSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+r4Bi/v7+
+        /v7+/v7+s4Zp/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/sqrl/7+/v7+/v7+/p9mQv6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jksg245M
+        IbaOSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5L
+        IP+OSyD/r4Bi/v//////////s4Zp/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/s+yoP///////v7+/p1j
+        Pv+OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41K
+        H/6OSyD/jkwhtY5LIY+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41K
+        H/6OSyD/jUof/o5LIP+OSyD/r4Bi/v//////////s4Zp/o5LIP+OSyD/jUof/o5LIP+OSyD/ml85/vLr
+        5v//////+PTy/pBPJP+OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD/jkshjo9MIliNSiD+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+r4Bi/v7+/v7+/v7+07qq/r6ZgP6+mYD+vpiA/sOf
+        if7RtqX+8uvm/v7+/v7+/v7+z7Kg/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSiD+j0wiWI5LICOOSyDwjUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5LIP+OSyD/r4Bi/v///////////v7+/v//
+        /////////v7+/v///////////v7+/v79/f/axbf/k1Qr/o5LIP+OSyD/jksg/41KH/6OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyDwjksgI45LIAKOSyDFjUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5LIP+OSyD/qXdW/urd
+        1v/q3db/6t3V/urd1v/q3db/6t3V/ujb0//h0MX/0LSi/qx8Xf+RUCb/jUof/o5LIP+OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyDFjksgAgAA
+        AACOSyBtjUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41K
+        H/6OSyBsAAAAAAAAAACOSyEajksg6o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o5LIOqOSyEaAAAAAAAAAAAAAAAAjksgjI5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jksg/41KH/6OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD/jksg/45LIIwAAAAAAAAAAAAAAAAAAAAAjksgG45LIPOOSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg845LIBsAAAAAAAAAAAAAAAAAAAAAAAAAAI9M
+        IHOOSx/9jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6OSx/9j0wgcwAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAI5LIAyOSyDFjUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyDFjksgDAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPSyAtjksg7I5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41K
+        H/6OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/41KH/6OSyD/jksg/45L
+        IOyPSyAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjksgT45KIPiNSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jkog+I5LIE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJFM
+        IWuOSyD4jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD4kUwhawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAI5LIAGRTCFrjkog+I5LIP+OSyD/jksg/41KH/6OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41K
+        H/6OSyD/jksg/41KH/6OSyD/jksg/45KIPiRTSFrjksgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjksgT45LIOyNSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jksg7I5LIE8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI9LIC2OSyDFjksg/Y1K
+        H/6OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jksg/45LH/2OSyDFjkwgLQAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AACOSyAMjkwgc45LIPOOSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5L
+        IP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jksg/41KH/6OSyD/jksg845MIHOOSyAMAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAI5LIBuOSyCMjksg6o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1K
+        H/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o1KH/6NSh/+jUof/o5LIOqOSyCMjksgGwAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjkshGo5LIGyOSyDFjksg8I5L
+        IP6OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUof/o5LIP+OSyD/jUog/o5LIPCOSyDFjksgbI5L
+        IRoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AACOSyACjksgI49MIliOSyGOjkwhtY5LINuOSyDrjksg+I5LIPiOSyDrjksg2o5MIbWOSyGOj0wiWI5L
+        ICOOSyACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAP//AAD//wAA//wAAD//AAD/8AAAD/8AAP/AAAAD/wAA/4AAAAH/AAD/AAAAAP8AAPwA
+        AAAAPwAA/AAAAAA/AAD4AAAAAB8AAPAAAAAADwAA4AAAAAAHAADgAAAAAAcAAMAAAAAAAwAAwAAAAAAD
+        AACAAAAAAAEAAIAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAEAAIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAOAA
+        AAAABwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAHwAA/AAAAAA/AAD8AAAAAD8AAP8AAAAA/wAA/4AAAAH/
+        AAD/wAAAA/8AAP/wAAAP/wAA//wAAD//AAD//wAA//8AAA==
+</value>
+  </data>
+</root>