diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/283bc489-32a5-44a9-9e7f-8efa487fd57d.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/283bc489-32a5-44a9-9e7f-8efa487fd57d.vsidx new file mode 100644 index 0000000..cdb7c57 Binary files /dev/null and b/LeatherProject/.vs/LeatherApp/FileContentIndex/283bc489-32a5-44a9-9e7f-8efa487fd57d.vsidx differ diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/3a805508-2b96-4f21-8053-561ed0dbedcc.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/3a805508-2b96-4f21-8053-561ed0dbedcc.vsidx deleted file mode 100644 index c5bf6ce..0000000 Binary files a/LeatherProject/.vs/LeatherApp/FileContentIndex/3a805508-2b96-4f21-8053-561ed0dbedcc.vsidx and /dev/null differ diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/5fde8f5a-76dc-4613-9869-e0a775cb3903.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/5fde8f5a-76dc-4613-9869-e0a775cb3903.vsidx deleted file mode 100644 index eefbeb4..0000000 Binary files a/LeatherProject/.vs/LeatherApp/FileContentIndex/5fde8f5a-76dc-4613-9869-e0a775cb3903.vsidx and /dev/null differ diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/7c73ce9d-0b29-4319-abb2-30e91c35822f.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/7c73ce9d-0b29-4319-abb2-30e91c35822f.vsidx new file mode 100644 index 0000000..f16c26e Binary files /dev/null and b/LeatherProject/.vs/LeatherApp/FileContentIndex/7c73ce9d-0b29-4319-abb2-30e91c35822f.vsidx differ diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/8149d271-bc96-416d-ba73-32416bb7ad1f.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/8149d271-bc96-416d-ba73-32416bb7ad1f.vsidx new file mode 100644 index 0000000..8921635 Binary files /dev/null and b/LeatherProject/.vs/LeatherApp/FileContentIndex/8149d271-bc96-416d-ba73-32416bb7ad1f.vsidx differ diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/873b852a-1096-4c86-b7ec-ea5fea8d5bc6.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/873b852a-1096-4c86-b7ec-ea5fea8d5bc6.vsidx deleted file mode 100644 index 868ff89..0000000 Binary files a/LeatherProject/.vs/LeatherApp/FileContentIndex/873b852a-1096-4c86-b7ec-ea5fea8d5bc6.vsidx and /dev/null differ diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/9a073f22-9779-4f76-8168-1979c30ff526.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/9a073f22-9779-4f76-8168-1979c30ff526.vsidx new file mode 100644 index 0000000..76518bc Binary files /dev/null and b/LeatherProject/.vs/LeatherApp/FileContentIndex/9a073f22-9779-4f76-8168-1979c30ff526.vsidx differ diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/ac850e4f-3283-430a-85cb-f04f34b3cc34.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/ac850e4f-3283-430a-85cb-f04f34b3cc34.vsidx deleted file mode 100644 index e5d360d..0000000 Binary files a/LeatherProject/.vs/LeatherApp/FileContentIndex/ac850e4f-3283-430a-85cb-f04f34b3cc34.vsidx and /dev/null differ diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/bfdae01c-0f5b-47f1-a6ea-0deb71846242.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/bfdae01c-0f5b-47f1-a6ea-0deb71846242.vsidx deleted file mode 100644 index 48cad70..0000000 Binary files a/LeatherProject/.vs/LeatherApp/FileContentIndex/bfdae01c-0f5b-47f1-a6ea-0deb71846242.vsidx and /dev/null differ diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/e187d4d9-07c7-4608-8129-68279151ed66.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/e187d4d9-07c7-4608-8129-68279151ed66.vsidx new file mode 100644 index 0000000..6dc8886 Binary files /dev/null and b/LeatherProject/.vs/LeatherApp/FileContentIndex/e187d4d9-07c7-4608-8129-68279151ed66.vsidx differ diff --git a/LeatherProject/HttpTestApp/App.config b/LeatherProject/HttpTestApp/App.config new file mode 100644 index 0000000..3916e0e --- /dev/null +++ b/LeatherProject/HttpTestApp/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LeatherProject/HttpTestApp/Form1.Designer.cs b/LeatherProject/HttpTestApp/Form1.Designer.cs new file mode 100644 index 0000000..79dd008 --- /dev/null +++ b/LeatherProject/HttpTestApp/Form1.Designer.cs @@ -0,0 +1,130 @@ +namespace HttpTestApp +{ + partial class Form1 + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.textBox1 = new System.Windows.Forms.TextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.button2 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(12, 12); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(441, 91); + this.textBox1.TabIndex = 0; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(89, 219); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 1; + this.button1.Text = "查询"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(10, 127); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(35, 12); + this.label1.TabIndex = 2; + this.label1.Text = "批号:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(10, 161); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(35, 12); + this.label2.TabIndex = 3; + this.label2.Text = "卷号:"; + // + // textBox2 + // + this.textBox2.Location = new System.Drawing.Point(51, 124); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(153, 21); + this.textBox2.TabIndex = 4; + // + // textBox3 + // + this.textBox3.Location = new System.Drawing.Point(51, 158); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(153, 21); + this.textBox3.TabIndex = 5; + // + // button2 + // + this.button2.Location = new System.Drawing.Point(322, 219); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(75, 23); + this.button2.TabIndex = 6; + this.button2.Text = "下载"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(465, 256); + this.Controls.Add(this.button2); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox1); + this.Name = "Form1"; + this.Text = "服务器测试程序"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.Button button2; + } +} + diff --git a/LeatherProject/HttpTestApp/Form1.cs b/LeatherProject/HttpTestApp/Form1.cs new file mode 100644 index 0000000..a9171a8 --- /dev/null +++ b/LeatherProject/HttpTestApp/Form1.cs @@ -0,0 +1,157 @@ +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace HttpTestApp +{ + public partial class Form1 : Form + { + string SIP = "172.16.21.210";//"172.30.8.2";//"172.16.21.210"; + public Form1() + { + InitializeComponent(); + } + + private void button1_Click(object sender, EventArgs e) + { + JObject parm = new JObject() + { + {"batch",textBox2.Text }, + {"reel",textBox3.Text } + }; + + //从主机台取缺陷文件名列表和JSON数组 + var obj = getDefectFromBatchReel(parm); + if (obj.Value("code") != 200) + throw new Exception(obj.Value("data")); + // + var defectInfo = obj.Value("data"); //文件名列表(主机台已对文件名排序,这里不需再排序(主机台按各自index进行的排序,比对在缺陷文件名后面) + if (defectInfo.Count < 1) + throw new Exception("主机台缺陷文件已不存在!"); + textBox1.Text = ""; + for (int i = 0; i < defectInfo.Count; i++) + { + textBox1.AppendText(defectInfo[i].ToString() + "\r\n"); + } + + } + + /// + /// date,sn + /// + /// + /// + /// + private JObject getDefectFromBatchReel(JObject req) + { + + JObject resp = postSync($"http://{SIP}:10086" + "/api/query_table", req.ToString()); + if (!resp.Value("success"))//框架库内 + throw new Exception(resp.Value("data"));//框架库内 + + //成功接收返回 + JObject obj = JObject.Parse(resp.Value("data")); + return obj; + } + //HttpClient方式 + private JObject postSync(string url, string json, bool recvResp = true, bool isJson = true) + { + JObject resp = new JObject(); + try + { + HttpClient http = new HttpClient(); + StringContent dataContent; + //第一种方式:data是json格式 + if (isJson) + dataContent = new StringContent(json, System.Text.Encoding.UTF8, "application/json"); // {"PageNum":"1","PageSIze":"20","info":"311011500300661"} + else + { + // 第二种方式:form表单提交 内容post 提交都在StringContent请求body中添加 + string lsUrlEncodeStr = json2Params(JObject.Parse(json)); + dataContent = new StringContent(lsUrlEncodeStr, System.Text.Encoding.UTF8, "application/x-www-form-urlencoded"); //PageNum=1&PageSize=20&info=311011500300661 + } + + http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "token"); + var taskstr = http.PostAsync(url, dataContent).Result.Content.ReadAsStringAsync(); + //API.OutputDebugString("wlq postSync:url=" + url + ";resp=" + taskstr.Result); + //读取返回数据 + //return taskstr.Result; + if (recvResp) + { + resp.Add("data", taskstr.Result); + resp.Add("success", true); + } + else + { + resp.Add("data", ""); + resp.Add("success", true); + } + } + catch (Exception ex) + { + resp.Add("success", false); + resp.Add("data", ex.Message); + } + + return resp; + } + + private string json2Params(JObject json) + { + string result = ""; + IEnumerable properties = json.Properties(); + foreach (JProperty item in properties) + { + result += item.Name.ToString() + "=" + item.Value.ToString() + "&"; + // item.Name 为 键 + // item.Value 为 值 + } + + result = result.Substring(0, result.Length - 1); + //string result1 = WebUtility.UrlEncode(result);//转义字符大写 + ////string result2 = HttpUtility.UrlEncode(result);//转义字符小写 + return result; + } + + private void button2_Click(object sender, EventArgs e) + { + JObject parm = new JObject() + { + {"batch",textBox2.Text }, + {"reel",textBox3.Text } + }; + var obj = getDefectFromBatchReelToExcel(parm); + var datas = Convert.FromBase64String(obj.Value("data")); + //var datas = resp.Value("data"); + + string path = $"{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx"; + File.WriteAllBytes(path, datas); + return; + } + + + private JObject getDefectFromBatchReelToExcel(JObject req) + { + JObject resp = postSync($"http://{SIP}:10086" + "/api/get_defect_from_batch_reel", req.ToString()); + if (!resp.Value("success"))//框架库内 + throw new Exception(resp.Value("data"));//框架库内 + + //成功接收返回 + JObject obj = JObject.Parse(resp.Value("data")); + return obj; + //var bmp = (new MemoryStream(Convert.FromBase64String(resp.Value("data")))); + //var strDAta = resp.Value("data"); + + } + } +} diff --git a/LeatherProject/HttpTestApp/Form1.resx b/LeatherProject/HttpTestApp/Form1.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/LeatherProject/HttpTestApp/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/LeatherProject/HttpTestApp/HttpTestApp.csproj b/LeatherProject/HttpTestApp/HttpTestApp.csproj new file mode 100644 index 0000000..68496e5 --- /dev/null +++ b/LeatherProject/HttpTestApp/HttpTestApp.csproj @@ -0,0 +1,84 @@ + + + + + Debug + AnyCPU + {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376} + WinExe + HttpTestApp + HttpTestApp + v4.8 + 512 + true + true + + + x64 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + \ No newline at end of file diff --git a/LeatherProject/HttpTestApp/Program.cs b/LeatherProject/HttpTestApp/Program.cs new file mode 100644 index 0000000..3d0efe5 --- /dev/null +++ b/LeatherProject/HttpTestApp/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace HttpTestApp +{ + internal static class Program + { + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/LeatherProject/HttpTestApp/Properties/AssemblyInfo.cs b/LeatherProject/HttpTestApp/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7ade4e1 --- /dev/null +++ b/LeatherProject/HttpTestApp/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("HttpTestApp")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("HttpTestApp")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("9ccdbb60-3a3b-4b52-bd97-cd1edb1d5376")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LeatherProject/HttpTestApp/Properties/Resources.Designer.cs b/LeatherProject/HttpTestApp/Properties/Resources.Designer.cs new file mode 100644 index 0000000..dc3716c --- /dev/null +++ b/LeatherProject/HttpTestApp/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本: 4.0.30319.42000 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace HttpTestApp.Properties +{ + + + /// + /// 强类型资源类,用于查找本地化字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// 返回此类使用的缓存 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HttpTestApp.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 重写当前线程的 CurrentUICulture 属性,对 + /// 使用此强类型资源类的所有资源查找执行重写。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/LeatherProject/HttpTestApp/Properties/Resources.resx b/LeatherProject/HttpTestApp/Properties/Resources.resx new file mode 100644 index 0000000..ffecec8 --- /dev/null +++ b/LeatherProject/HttpTestApp/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/LeatherProject/HttpTestApp/Properties/Settings.Designer.cs b/LeatherProject/HttpTestApp/Properties/Settings.Designer.cs new file mode 100644 index 0000000..63782bd --- /dev/null +++ b/LeatherProject/HttpTestApp/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace HttpTestApp.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/LeatherProject/HttpTestApp/Properties/Settings.settings b/LeatherProject/HttpTestApp/Properties/Settings.settings new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ b/LeatherProject/HttpTestApp/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/LeatherProject/HttpTestApp/bin/Debug.rar b/LeatherProject/HttpTestApp/bin/Debug.rar new file mode 100644 index 0000000..39042a3 Binary files /dev/null and b/LeatherProject/HttpTestApp/bin/Debug.rar differ diff --git a/LeatherProject/HttpTestApp/bin/Debug/20241203113313.xlsx b/LeatherProject/HttpTestApp/bin/Debug/20241203113313.xlsx new file mode 100644 index 0000000..13358fb Binary files /dev/null and b/LeatherProject/HttpTestApp/bin/Debug/20241203113313.xlsx differ diff --git a/LeatherProject/HttpTestApp/bin/Debug/HttpTestApp.exe.config b/LeatherProject/HttpTestApp/bin/Debug/HttpTestApp.exe.config new file mode 100644 index 0000000..3916e0e --- /dev/null +++ b/LeatherProject/HttpTestApp/bin/Debug/HttpTestApp.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LeatherProject/HttpTestApp/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs b/LeatherProject/HttpTestApp/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs new file mode 100644 index 0000000..3cf0af3 --- /dev/null +++ b/LeatherProject/HttpTestApp/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] diff --git a/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.Form1.resources b/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.Form1.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.Form1.resources differ diff --git a/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.Properties.Resources.resources b/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.Properties.Resources.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.Properties.Resources.resources differ diff --git a/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.csproj.CopyComplete b/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 diff --git a/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.csproj.FileListAbsolute.txt b/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..5dbd341 --- /dev/null +++ b/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.csproj.FileListAbsolute.txt @@ -0,0 +1,12 @@ +E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\bin\Debug\HttpTestApp.exe.config +E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\bin\Debug\HttpTestApp.exe +E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\bin\Debug\HttpTestApp.pdb +E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\bin\Debug\Newtonsoft.Json.dll +E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\obj\Debug\HttpTestApp.csproj.AssemblyReference.cache +E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\obj\Debug\HttpTestApp.Form1.resources +E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\obj\Debug\HttpTestApp.Properties.Resources.resources +E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\obj\Debug\HttpTestApp.csproj.GenerateResource.cache +E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\obj\Debug\HttpTestApp.csproj.CoreCompileInputs.cache +E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\obj\Debug\HttpTestApp.csproj.CopyComplete +E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\obj\Debug\HttpTestApp.exe +E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\obj\Debug\HttpTestApp.pdb diff --git a/LeatherProject/LeatherApp.sln b/LeatherProject/LeatherApp.sln index fcae157..2e8fa74 100644 --- a/LeatherProject/LeatherApp.sln +++ b/LeatherProject/LeatherApp.sln @@ -15,6 +15,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GeBoShi", "GeBoShi\GeBoShi. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServerApp", "ServerApp\ServerApp.csproj", "{F1876CE2-8446-4EAE-8707-FE4BB19A1C18}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HttpTestApp", "HttpTestApp\HttpTestApp.csproj", "{9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -71,6 +73,14 @@ Global {F1876CE2-8446-4EAE-8707-FE4BB19A1C18}.Release|Any CPU.Build.0 = Release|Any CPU {F1876CE2-8446-4EAE-8707-FE4BB19A1C18}.Release|x64.ActiveCfg = Release|Any CPU {F1876CE2-8446-4EAE-8707-FE4BB19A1C18}.Release|x64.Build.0 = Release|Any CPU + {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}.Debug|x64.ActiveCfg = Debug|Any CPU + {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}.Debug|x64.Build.0 = Debug|Any CPU + {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}.Release|Any CPU.Build.0 = Release|Any CPU + {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}.Release|x64.ActiveCfg = Release|Any CPU + {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}.Release|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/LeatherProject/LeatherApp/LeatherApp.csproj b/LeatherProject/LeatherApp/LeatherApp.csproj index 55edfb6..19cba0e 100644 --- a/LeatherProject/LeatherApp/LeatherApp.csproj +++ b/LeatherProject/LeatherApp/LeatherApp.csproj @@ -355,6 +355,12 @@ PartitionFrm.cs + + Form + + + SelectReelFrm.cs + @@ -458,6 +464,9 @@ PartitionFrm.cs + + SelectReelFrm.cs + ResXFileCodeGenerator Resources.Designer.cs diff --git a/LeatherProject/LeatherApp/Page/FHome.Designer.cs b/LeatherProject/LeatherApp/Page/FHome.Designer.cs index cac14b8..95de6c0 100644 --- a/LeatherProject/LeatherApp/Page/FHome.Designer.cs +++ b/LeatherProject/LeatherApp/Page/FHome.Designer.cs @@ -41,6 +41,7 @@ this.lblLen = new Sunny.UI.UILabel(); this.lblSpeed = new Sunny.UI.UISymbolLabel(); this.uiTitlePanel1 = new Sunny.UI.UITitlePanel(); + this.button4 = new System.Windows.Forms.Button(); this.txtDefectName = new Sunny.UI.UITextBox(); this.uiLabel10 = new Sunny.UI.UILabel(); this.button3 = new System.Windows.Forms.Button(); @@ -66,6 +67,7 @@ this.btnEnd = new Sunny.UI.UISymbolButton(); this.btnStart = new Sunny.UI.UISymbolButton(); this.uiTitlePanel2 = new Sunny.UI.UITitlePanel(); + this.ucColorListDefect = new LeatherApp.UIExtend.UCColorList(); this.lineChartDefect = new Sunny.UI.UILineChart(); this.uiTitlePanel3 = new Sunny.UI.UITitlePanel(); this.uiDataGridView1 = new Sunny.UI.UIDataGridView(); @@ -89,6 +91,7 @@ this.lstboxLog = new Sunny.UI.UIListBox(); this.uiTitlePanel6 = new Sunny.UI.UITitlePanel(); this.uiPanel3 = new Sunny.UI.UIPanel(); + this.picDefectImage = new LeatherApp.UIExtend.UCImageView(); this.pnlScannerImg = new Sunny.UI.UITitlePanel(); this.picScanner2 = new System.Windows.Forms.PictureBox(); this.picScanner1 = new System.Windows.Forms.PictureBox(); @@ -109,8 +112,6 @@ this.uiLabel6 = new Sunny.UI.UILabel(); this.uiTitlePanel8 = new Sunny.UI.UITitlePanel(); this.lineChartHouDu = new Sunny.UI.UILineChart(); - this.picDefectImage = new LeatherApp.UIExtend.UCImageView(); - this.ucColorListDefect = new LeatherApp.UIExtend.UCColorList(); this.uiPanel1.SuspendLayout(); this.uiTitlePanel1.SuspendLayout(); this.uiPanel2.SuspendLayout(); @@ -182,6 +183,7 @@ // uiTitlePanel1 // this.uiTitlePanel1.BackColor = System.Drawing.Color.White; + this.uiTitlePanel1.Controls.Add(this.button4); this.uiTitlePanel1.Controls.Add(this.txtDefectName); this.uiTitlePanel1.Controls.Add(this.uiLabel10); this.uiTitlePanel1.Controls.Add(this.button3); @@ -219,6 +221,18 @@ this.uiTitlePanel1.TitleColor = System.Drawing.Color.White; this.uiTitlePanel1.TitleForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); // + // button4 + // + this.button4.ForeColor = System.Drawing.Color.Black; + this.button4.Location = new System.Drawing.Point(282, 36); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(50, 36); + this.button4.TabIndex = 15; + this.button4.Text = "界面"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Visible = false; + this.button4.Click += new System.EventHandler(this.button4_Click); + // // txtDefectName // this.txtDefectName.ButtonFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); @@ -266,7 +280,7 @@ // button3 // this.button3.ForeColor = System.Drawing.Color.Black; - this.button3.Location = new System.Drawing.Point(261, 5); + this.button3.Location = new System.Drawing.Point(226, 36); this.button3.Name = "button3"; this.button3.Size = new System.Drawing.Size(50, 36); this.button3.TabIndex = 3; @@ -297,7 +311,7 @@ // button2 // this.button2.ForeColor = System.Drawing.Color.Black; - this.button2.Location = new System.Drawing.Point(205, 5); + this.button2.Location = new System.Drawing.Point(170, 36); this.button2.Name = "button2"; this.button2.Size = new System.Drawing.Size(50, 36); this.button2.TabIndex = 2; @@ -323,7 +337,7 @@ // button1 // this.button1.ForeColor = System.Drawing.Color.Black; - this.button1.Location = new System.Drawing.Point(151, 5); + this.button1.Location = new System.Drawing.Point(116, 36); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(50, 36); this.button1.TabIndex = 1; @@ -816,6 +830,29 @@ this.uiTitlePanel2.TitleColor = System.Drawing.Color.White; this.uiTitlePanel2.TitleForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); // + // ucColorListDefect + // + this.ucColorListDefect.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.ucColorListDefect.ColorChanged = null; + this.ucColorListDefect.FillColor = System.Drawing.Color.White; + this.ucColorListDefect.FillColor2 = System.Drawing.Color.White; + this.ucColorListDefect.FillDisableColor = System.Drawing.Color.White; + this.ucColorListDefect.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ucColorListDefect.Location = new System.Drawing.Point(1, 38); + this.ucColorListDefect.MinimumSize = new System.Drawing.Size(1, 1); + this.ucColorListDefect.Name = "ucColorListDefect"; + this.ucColorListDefect.RadiusSides = Sunny.UI.UICornerRadiusSides.None; + this.ucColorListDefect.RectColor = System.Drawing.Color.White; + this.ucColorListDefect.RectDisableColor = System.Drawing.Color.White; + this.ucColorListDefect.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom; + this.ucColorListDefect.Size = new System.Drawing.Size(52, 42); + this.ucColorListDefect.Style = Sunny.UI.UIStyle.Custom; + this.ucColorListDefect.StyleCustomMode = true; + this.ucColorListDefect.TabIndex = 1; + this.ucColorListDefect.Text = "ucColorList1"; + this.ucColorListDefect.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter; + // // lineChartDefect // this.lineChartDefect.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) @@ -897,7 +934,7 @@ dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle6.BackColor = System.Drawing.Color.White; dataGridViewCellStyle6.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle6.ForeColor = System.Drawing.Color.White; + dataGridViewCellStyle6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); dataGridViewCellStyle6.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(204)))), ((int)(((byte)(242)))), ((int)(((byte)(238))))); dataGridViewCellStyle6.SelectionForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.False; @@ -1083,7 +1120,7 @@ this.uiTitlePanel4.RectColor = System.Drawing.Color.White; this.uiTitlePanel4.RectDisableColor = System.Drawing.Color.White; this.uiTitlePanel4.ShowText = false; - this.uiTitlePanel4.Size = new System.Drawing.Size(420, 210); + this.uiTitlePanel4.Size = new System.Drawing.Size(420, 267); this.uiTitlePanel4.Style = Sunny.UI.UIStyle.Custom; this.uiTitlePanel4.TabIndex = 1; this.uiTitlePanel4.Text = "▶ 幅宽"; @@ -1121,7 +1158,7 @@ this.lineChartFaceWidth.MouseDownType = Sunny.UI.UILineChartMouseDownType.Zoom; this.lineChartFaceWidth.Name = "lineChartFaceWidth"; this.lineChartFaceWidth.Radius = 0; - this.lineChartFaceWidth.Size = new System.Drawing.Size(414, 170); + this.lineChartFaceWidth.Size = new System.Drawing.Size(414, 227); this.lineChartFaceWidth.Style = Sunny.UI.UIStyle.Custom; this.lineChartFaceWidth.SubFont = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.lineChartFaceWidth.TabIndex = 1; @@ -1156,14 +1193,14 @@ this.uiTitlePanel5.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.uiTitlePanel5.ForeColor = System.Drawing.Color.White; this.uiTitlePanel5.ForeDisableColor = System.Drawing.Color.White; - this.uiTitlePanel5.Location = new System.Drawing.Point(433, 694); + this.uiTitlePanel5.Location = new System.Drawing.Point(433, 754); this.uiTitlePanel5.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiTitlePanel5.MinimumSize = new System.Drawing.Size(1, 1); this.uiTitlePanel5.Name = "uiTitlePanel5"; this.uiTitlePanel5.RectColor = System.Drawing.Color.White; this.uiTitlePanel5.RectDisableColor = System.Drawing.Color.White; this.uiTitlePanel5.ShowText = false; - this.uiTitlePanel5.Size = new System.Drawing.Size(753, 142); + this.uiTitlePanel5.Size = new System.Drawing.Size(753, 82); this.uiTitlePanel5.Style = Sunny.UI.UIStyle.Custom; this.uiTitlePanel5.TabIndex = 1; this.uiTitlePanel5.Text = "▶ 日志"; @@ -1186,7 +1223,7 @@ this.lstboxLog.Name = "lstboxLog"; this.lstboxLog.Padding = new System.Windows.Forms.Padding(2); this.lstboxLog.ShowText = false; - this.lstboxLog.Size = new System.Drawing.Size(745, 97); + this.lstboxLog.Size = new System.Drawing.Size(745, 37); this.lstboxLog.Style = Sunny.UI.UIStyle.Custom; this.lstboxLog.TabIndex = 0; this.lstboxLog.Text = "uiListBox1"; @@ -1242,6 +1279,15 @@ this.uiPanel3.Text = null; this.uiPanel3.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter; // + // picDefectImage + // + this.picDefectImage.Dock = System.Windows.Forms.DockStyle.Fill; + this.picDefectImage.Location = new System.Drawing.Point(0, 0); + this.picDefectImage.Margin = new System.Windows.Forms.Padding(0); + this.picDefectImage.Name = "picDefectImage"; + this.picDefectImage.Size = new System.Drawing.Size(350, 188); + this.picDefectImage.TabIndex = 1; + // // pnlScannerImg // this.pnlScannerImg.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) @@ -1549,7 +1595,7 @@ this.uiTitlePanel8.RectColor = System.Drawing.Color.White; this.uiTitlePanel8.RectDisableColor = System.Drawing.Color.White; this.uiTitlePanel8.ShowText = false; - this.uiTitlePanel8.Size = new System.Drawing.Size(330, 210); + this.uiTitlePanel8.Size = new System.Drawing.Size(330, 267); this.uiTitlePanel8.Style = Sunny.UI.UIStyle.Custom; this.uiTitlePanel8.TabIndex = 2; this.uiTitlePanel8.Text = "▶ 厚度"; @@ -1570,44 +1616,12 @@ this.lineChartHouDu.MouseDownType = Sunny.UI.UILineChartMouseDownType.Zoom; this.lineChartHouDu.Name = "lineChartHouDu"; this.lineChartHouDu.Radius = 0; - this.lineChartHouDu.Size = new System.Drawing.Size(324, 170); + this.lineChartHouDu.Size = new System.Drawing.Size(324, 227); this.lineChartHouDu.Style = Sunny.UI.UIStyle.Custom; this.lineChartHouDu.SubFont = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.lineChartHouDu.TabIndex = 1; this.lineChartHouDu.TouchPressClick = true; // - // picDefectImage - // - this.picDefectImage.Dock = System.Windows.Forms.DockStyle.Fill; - this.picDefectImage.Location = new System.Drawing.Point(0, 0); - this.picDefectImage.Margin = new System.Windows.Forms.Padding(0); - this.picDefectImage.Name = "picDefectImage"; - this.picDefectImage.Size = new System.Drawing.Size(350, 188); - this.picDefectImage.TabIndex = 1; - // - // ucColorListDefect - // - this.ucColorListDefect.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.ucColorListDefect.ColorChanged = null; - this.ucColorListDefect.FillColor = System.Drawing.Color.White; - this.ucColorListDefect.FillColor2 = System.Drawing.Color.White; - this.ucColorListDefect.FillDisableColor = System.Drawing.Color.White; - this.ucColorListDefect.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.ucColorListDefect.Location = new System.Drawing.Point(1, 38); - this.ucColorListDefect.MinimumSize = new System.Drawing.Size(1, 1); - this.ucColorListDefect.Name = "ucColorListDefect"; - this.ucColorListDefect.RadiusSides = Sunny.UI.UICornerRadiusSides.None; - this.ucColorListDefect.RectColor = System.Drawing.Color.White; - this.ucColorListDefect.RectDisableColor = System.Drawing.Color.White; - this.ucColorListDefect.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom; - this.ucColorListDefect.Size = new System.Drawing.Size(52, 42); - this.ucColorListDefect.Style = Sunny.UI.UIStyle.Custom; - this.ucColorListDefect.StyleCustomMode = true; - this.ucColorListDefect.TabIndex = 1; - this.ucColorListDefect.Text = "ucColorList1"; - this.ucColorListDefect.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter; - // // FHome // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; @@ -1733,5 +1747,6 @@ private Sunny.UI.UILabel uiLabel10; private Sunny.UI.UISymbolButton btnCut; private Sunny.UI.UISymbolButton btnFenJuan; + private System.Windows.Forms.Button button4; } } diff --git a/LeatherProject/LeatherApp/Page/FHome.cs b/LeatherProject/LeatherApp/Page/FHome.cs index 26d956a..d0af0b6 100644 --- a/LeatherProject/LeatherApp/Page/FHome.cs +++ b/LeatherProject/LeatherApp/Page/FHome.cs @@ -19,6 +19,7 @@ using OpenCvSharp.Extensions; using S7.Net; using Service; using SqlSugar; +using SqlSugar.DbConvert; using Sunny.UI; using Sunny.UI.Win32; using System; @@ -181,6 +182,12 @@ namespace LeatherApp.Page this.uilbHD.Visible = true; else this.uilbHD.Visible = false; + + if (Config.CustomerName != "XCL") + { + btnCut.Visible = false; + btnFenJuan.Visible = false; + } } private void uiDataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) @@ -569,7 +576,7 @@ namespace LeatherApp.Page })); } - private void reDrawHouDu(List HDpoints, double[] XSizeRange, double[] YSizeRange) + private void reDrawHouDu(Thickness HDpoints, double[] XSizeRange, double[] YSizeRange) { //AddTextEvent(DateTime.Now,$"绘图", $"门幅宽度, W={string.Join(", ", XSizeRange)},H={string.Join(", ", YSizeRange)}, LastData={JsonConvert.SerializeObject(points[points.Count-1])}"); if (YSizeRange[0] == YSizeRange[1]) @@ -583,91 +590,112 @@ namespace LeatherApp.Page //防止超限 XSizeRange[1] += 0.01; YSizeRange[1] += 0.1; - - UILineOption option = new UILineOption(); - option.XAxis.Name = "长度(米)"; - option.YAxis.Name = "厚度(mm)"; - option.Grid.Top = 20; - option.Grid.Right = 20; - //X轴数据类型 - option.XAxisType = UIAxisType.Value; - //设置X/Y轴显示范围 - option.XAxis.SetRange(XSizeRange[0], XSizeRange[1]); - option.YAxis.SetRange(YSizeRange[0], YSizeRange[1]); - //坐标轴显示小数位数 - option.XAxis.AxisLabel.DecimalPlaces = option.YAxis.AxisLabel.DecimalPlaces = 1; - //X/Y轴画参考线 - //option.YAxisScaleLines.Add(new UIScaleLine("上限", 3.5, Color.Red)); - //option.YAxisScaleLines.Add(new UIScaleLine("下限", 2.2, Color.Gold)); - //option.XAxisScaleLines.Add(new UIScaleLine(dt.AddHours(3).DateTimeString(), dt.AddHours(3), Color.Red)); - //option.XAxisScaleLines.Add(new UIScaleLine(dt.AddHours(6).DateTimeString(), dt.AddHours(6), Color.Red)); - - option.ToolTip.Visible = true; - //option.ToolTip.Formatter = "怎么自定义X,Y显示名称??{X}"; - option.Title = new UITitle(); - option.Title.Text = ""; - option.Title.SubText = ""; - - Color color1 = Color.Blue; - UILineSeries series1 = null; - series1 = option.AddSeries(new UILineSeries("厚度1", color1)); - series1.Symbol = UILinePointSymbol.Circle; - series1.ShowLine = true; - series1.SymbolSize = 1;//4 - series1.SymbolLineWidth = 1;//2 - series1.SymbolColor = color1; - series1.XAxisDecimalPlaces = 2; - series1.YAxisDecimalPlaces = 1; - - Color color2 = Color.Red; - UILineSeries series2 = null; - series2 = option.AddSeries(new UILineSeries("厚度2", color2)); - series2.Symbol = UILinePointSymbol.Circle; - series2.ShowLine = true; - series2.SymbolSize = 1;//4 - series2.SymbolLineWidth = 1;//2 - series2.SymbolColor = color2; - series2.XAxisDecimalPlaces = 2; - series2.YAxisDecimalPlaces = 1; - - Color color3 = Color.Green; - UILineSeries series3 = null; - series3 = option.AddSeries(new UILineSeries("厚度3", color3)); - series3.Symbol = UILinePointSymbol.Circle; - series3.ShowLine = true; - series3.SymbolSize = 1;//4 - series3.SymbolLineWidth = 1;//2 - series3.SymbolColor = color3; - series3.XAxisDecimalPlaces = 2; - series3.YAxisDecimalPlaces = 1; - - double x; - DateTime dt = DateTime.Now; - foreach (var item in HDpoints) + this.BeginInvoke(new System.Action(() => { - x = item.Y_Dis / 100; //cm -> m + UILineOption option; + UILineSeries series1, series2, series3; + if (this.lineChartHouDu.Option.Series.Count > 0) + { + option = this.lineChartHouDu.Option; + series1 = this.lineChartHouDu.Option.Series["厚度1"]; + series2 = this.lineChartHouDu.Option.Series["厚度2"]; + series3 = this.lineChartHouDu.Option.Series["厚度3"]; + + option.XAxis.SetRange(XSizeRange[0], XSizeRange[1]); + option.YAxis.SetRange(YSizeRange[0], YSizeRange[1]); + } + else + { + option = new UILineOption(); + option.XAxis.Name = "长度(米)"; + option.YAxis.Name = "厚度(mm)"; + option.Grid.Top = 20; + option.Grid.Right = 20; + //X轴数据类型 + option.XAxisType = UIAxisType.Value; + //设置X/Y轴显示范围 + option.XAxis.SetRange(XSizeRange[0], XSizeRange[1]); + option.YAxis.SetRange(YSizeRange[0], YSizeRange[1]); + //坐标轴显示小数位数 + option.XAxis.AxisLabel.DecimalPlaces = option.YAxis.AxisLabel.DecimalPlaces = 2; + //X/Y轴画参考线 + //option.YAxisScaleLines.Add(new UIScaleLine("上限", 3.5, Color.Red)); + //option.YAxisScaleLines.Add(new UIScaleLine("下限", 2.2, Color.Gold)); + //option.XAxisScaleLines.Add(new UIScaleLine(dt.AddHours(3).DateTimeString(), dt.AddHours(3), Color.Red)); + //option.XAxisScaleLines.Add(new UIScaleLine(dt.AddHours(6).DateTimeString(), dt.AddHours(6), Color.Red)); + + option.ToolTip.Visible = true; + //option.ToolTip.Formatter = "怎么自定义X,Y显示名称??{X}"; + option.Title = new UITitle(); + option.Title.Text = ""; + option.Title.SubText = ""; + + Color color1 = Color.Blue; + series1 = null; + series1 = option.AddSeries(new UILineSeries("厚度1", color1)); + series1.Symbol = UILinePointSymbol.Circle; + series1.ShowLine = true; + series1.SymbolSize = 1;//4 + series1.SymbolLineWidth = 1;//2 + series1.SymbolColor = color1; + series1.XAxisDecimalPlaces = 2; + series1.YAxisDecimalPlaces = 2; + + Color color2 = Color.Red; + series2 = null; + series2 = option.AddSeries(new UILineSeries("厚度2", color2)); + series2.Symbol = UILinePointSymbol.Circle; + series2.ShowLine = true; + series2.SymbolSize = 1;//4 + series2.SymbolLineWidth = 1;//2 + series2.SymbolColor = color2; + series2.XAxisDecimalPlaces = 2; + series2.YAxisDecimalPlaces = 2; + + Color color3 = Color.Green; + series3 = null; + series3 = option.AddSeries(new UILineSeries("厚度3", color3)); + series3.Symbol = UILinePointSymbol.Circle; + series3.ShowLine = true; + series3.SymbolSize = 1;//4 + series3.SymbolLineWidth = 1;//2 + series3.SymbolColor = color3; + series3.XAxisDecimalPlaces = 2; + series3.YAxisDecimalPlaces = 2; + } + double x; + DateTime dt = DateTime.Now; + + var item = HDpoints; + x = item.Y_Dis / 100.0; //cm -> m series1.Add(x, item.Value1); series2.Add(x, item.Value2); series3.Add(x, item.Value3); - if (x < XSizeRange[0]) break;// AddTextEvent(DateTime.Now,$"绘图", $"门幅宽度超限 1!!!! {x}<{XSizeRange[0]}",WarningEnum.High); - if (x > XSizeRange[1]) break;// AddTextEvent(DateTime.Now,$"绘图", $"门幅宽度超限 2!!!! {x}>{XSizeRange[1]}", WarningEnum.High); - //if (item.Value1 < YSizeRange[0]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 3!!!! {item.Value1}<{YSizeRange[0]}", WarningEnum.High); - //if (item.Value1 > YSizeRange[1]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 4!!!! {item.Value1}>{YSizeRange[1]}", WarningEnum.High); - //if (item.Value2 < YSizeRange[0]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 5!!!! {item.Value2}<{YSizeRange[0]}", WarningEnum.High); - //if (item.Value2 > YSizeRange[1]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 6!!!! {item.Value2}>{YSizeRange[1]}", WarningEnum.High); - //if (item.Value3 < YSizeRange[0]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 7!!!! {item.Value3}<{YSizeRange[0]}", WarningEnum.High); - //if (item.Value3 > YSizeRange[1]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 8!!!! {item.Value3}>{YSizeRange[1]}", WarningEnum.High); - if ((DateTime.Now - dt).Seconds > 1) - { - AddTextEvent(DateTime.Now, $"绘图", $"测厚超时!!!!", WarningEnum.High, false); - break; - } - } - //==== - //option.GreaterWarningArea = new UILineWarningArea(3.5); - //option.LessWarningArea = new UILineWarningArea(2.2, Color.Gold); - this.BeginInvoke(new System.Action(() => - { + + //foreach (var item in HDpoints) + //{ + // x = item.Y_Dis / 100.0; //cm -> m + // series1.Add(x, item.Value1); + // series2.Add(x, item.Value2); + // series3.Add(x, item.Value3); + // if (x < XSizeRange[0]) break;// AddTextEvent(DateTime.Now,$"绘图", $"门幅宽度超限 1!!!! {x}<{XSizeRange[0]}",WarningEnum.High); + // if (x > XSizeRange[1]) break;// AddTextEvent(DateTime.Now,$"绘图", $"门幅宽度超限 2!!!! {x}>{XSizeRange[1]}", WarningEnum.High); + // //if (item.Value1 < YSizeRange[0]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 3!!!! {item.Value1}<{YSizeRange[0]}", WarningEnum.High); + // //if (item.Value1 > YSizeRange[1]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 4!!!! {item.Value1}>{YSizeRange[1]}", WarningEnum.High); + // //if (item.Value2 < YSizeRange[0]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 5!!!! {item.Value2}<{YSizeRange[0]}", WarningEnum.High); + // //if (item.Value2 > YSizeRange[1]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 6!!!! {item.Value2}>{YSizeRange[1]}", WarningEnum.High); + // //if (item.Value3 < YSizeRange[0]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 7!!!! {item.Value3}<{YSizeRange[0]}", WarningEnum.High); + // //if (item.Value3 > YSizeRange[1]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 8!!!! {item.Value3}>{YSizeRange[1]}", WarningEnum.High); + // if ((DateTime.Now - dt).Seconds > 1) + // { + // AddTextEvent(DateTime.Now, $"绘图", $"测厚超时!!!!", WarningEnum.High, false); + // break; + // } + //} + //==== + //option.GreaterWarningArea = new UILineWarningArea(3.5); + //option.LessWarningArea = new UILineWarningArea(2.2, Color.Gold); + this.lineChartHouDu.SetOption(option); })); } @@ -932,13 +960,46 @@ namespace LeatherApp.Page if (!string.IsNullOrWhiteSpace(Config.ErpDBConStr) && !string.IsNullOrWhiteSpace(Config.ErpSql) && !string.IsNullOrWhiteSpace(barCode)) { AddTextEvent(DateTime.Now,"扫码", $"产品条码({barCode})到ERP查询对应数据...", WarningEnum.Normal); - var rowData = this.loadErpData(barCode); - if (rowData == null) + DataRow rowData = null; ; + if (Config.CustomerName == "XCL") { - AddTextEvent(DateTime.Now,"扫码", $"产品条码({barCode})无对应ERP数据,不做响应!", WarningEnum.Low); - return; + var datatb = this.loadErpDataTable(barCode); + if (datatb == null || datatb.Rows.Count == 0) + { + AddTextEvent(DateTime.Now, "扫码", $"产品条码({barCode})无对应ERP数据,不做响应!", WarningEnum.Low); + return; + } + if (datatb.Rows.Count > 1) + { + SelectReelFrm srf = new SelectReelFrm(datatb); + srf.Render(); + srf.Text = "ERP卷号选择"; + srf.ShowDialog(); + if (srf.IsOK) + { + rowData = datatb.Rows[srf.RowIndex]; + AddTextEvent(DateTime.Now, "卷号选择", $"Index({srf.RowIndex})-批号:{srf.SelectBatch},卷号:{srf.SelectReel},长度:{srf.SelectLen}!"); + } + else + { + AddTextEvent(DateTime.Now, "卷号选择", $"未选择卷号!", WarningEnum.High); + srf.Dispose(); + return; + } + srf.Dispose(); + } + else + rowData = datatb.Rows[0]; + } + else + { + rowData = this.loadErpData(barCode); + if (rowData == null) + { + AddTextEvent(DateTime.Now, "扫码", $"产品条码({barCode})无对应ERP数据,不做响应!", WarningEnum.Low); + return; + } } - barCodeName = rowData[0].ToString(); if (rowData.ItemArray.Length > 1) len = rowData[1].ToString(); @@ -1460,6 +1521,27 @@ namespace LeatherApp.Page // } //}); } + + private DataTable loadErpDataTable(string barCode) + { + var paramList = new List() { + new SugarParameter("@code", barCode) + }; + Stopwatch stopwatch = Stopwatch.StartNew(); +#if Oracle + var data = Utils.DBUtils.execSql(Config.ErpSql, paramList, SqlSugar.DbType.Oracle); +#else + var data = Utils.DBUtils.execSql(Config.ErpSql, paramList); +#endif + if (data == null || data.Rows.Count < 1) + { + AddTextEvent(DateTime.Now, "Erp查询结果", $"{barCode}: 时长={stopwatch.ElapsedMilliseconds}ms, 无数据!", WarningEnum.Normal); + return null; + } + + AddTextEvent(DateTime.Now, "Erp查询结果", $"{barCode}: 时长={stopwatch.ElapsedMilliseconds}ms, {JsonConvert.SerializeObject(data.Rows[0])}", WarningEnum.Normal); + return data; + } private class ScanPhotoInfo { /// @@ -1731,7 +1813,7 @@ namespace LeatherApp.Page errStep = 7; { List lstEditDefect0 = GetDefectPuaseListByIndex(pindex); - AddTextEvent(DateTime.Now, $"暂停", $"(图像{pindex})已达观察台,瑕疵二次判断=》({string.Join(",", lstEditDefect0.Select(m => m.Code).ToArray())})是否包含在({string.Join(",", curRecord.ProductInfo.DefectPauseOption.ToArray())})中。"); + AddTextEvent(DateTime.Now, $"暂停", $"(图像{pindex})已达观察台,瑕疵二次判断=》({string.Join(",", lstEditDefect0.Select(m => m.Code).ToArray())})是否包含在({string.Join(",", curRecord.ProductInfo.DefectPauseOption.ToArray())})中。", WarningEnum.Normal, false); //瑕疵选项过滤 curRecord.ProductInfo.DefectPauseOption.Count == 0 || lstEditDefect.Where(x => curRecord.ProductInfo.DefectPauseOption.Contains(x.Code)).Count() > 0 if (curRecord.ProductInfo.DefectPauseOption.Count == 0 || lstEditDefect0.Where(x => curRecord.ProductInfo.DefectPauseOption.Contains(x.Code)).Count() > 0) { @@ -1740,7 +1822,7 @@ namespace LeatherApp.Page try { //暂停 - AddTextEvent(DateTime.Now, $"暂停", $"(图像{pindex})需瑕疵二次判断,已达观察台,进入暂停。"); + AddTextEvent(DateTime.Now, $"暂停", $"(图像{pindex})需瑕疵二次判断,已达观察台,进入暂停。",WarningEnum.Normal, false); if (!Config.StopPLC) this.devContainer.devPlc.pauseDev(); else if (!Config.StopIO && devContainer.devIOCard.IsInit) @@ -1796,7 +1878,7 @@ namespace LeatherApp.Page if (row.uid == uid) { oldCode = this.uiDataGridView1.Rows[i].Cells["colCode"].Value.ToString(); - AddTextEvent(DateTime.Now, $"暂停", $"修改第({i + 1})行瑕疵名称 ({this.uiDataGridView1.Rows[i].Cells["colDefectName"].Value})->({row.Name})"); + AddTextEvent(DateTime.Now, $"暂停", $"修改第({i + 1})行瑕疵名称 ({this.uiDataGridView1.Rows[i].Cells["colDefectName"].Value})->({row.Name})", WarningEnum.Normal, false); this.uiDataGridView1.Rows[i].Cells["colCode"].Value = row.Code; this.uiDataGridView1.Rows[i].Cells["colDefectName"].Value = row.Name; //this.uiDataGridView1.Refresh(); @@ -1825,7 +1907,7 @@ namespace LeatherApp.Page //double len = (double)this.lblLen.Tag; //this.reDrawDefectPoints(curRecord.DefectInfoList, new double[] { 0, Math.Round(curRecord.FaceWidthMax + 0.005f, 2) }, new double[] { 0, len }); - AddTextEvent(DateTime.Now, $"二次检测", $"本次忽略{frmDefect.lstDel.Count}个瑕疵,本张图由{liDefectCount} -> {lstEditDefect.Count},总数{curRecord.DefectInfoList.Count}"); + AddTextEvent(DateTime.Now, $"二次检测", $"本次忽略{frmDefect.lstDel.Count}个瑕疵,本张图由{liDefectCount} -> {lstEditDefect.Count},总数{curRecord.DefectInfoList.Count}", WarningEnum.Normal, false); } this.uiMiniPagination1.TotalCount = curRecord.DefectTotalCount = curRecord.DefectInfoList.Count; // @@ -1945,13 +2027,17 @@ namespace LeatherApp.Page double d1 = 0, d2 = 0, d3 = 0; if (devContainer.GetThicknessValue(out d1, out d2, out d3)) { - if (Math.Abs(yqjimi - hdJMDis) * 100 > 3) //在3cm以内不做记录 + if (Math.Abs(yqjimi - hdJMDis) * 100 > 10) //在10cm以内不做记录 { //加入偏差计算 d1 = Math.Round(d1 + Config.DataOffset1, 2); d2 = Math.Round(d2 + Config.DataOffset2, 2); d3 = Math.Round(d3 + Config.DataOffset3, 2); + //限制0-5mm范围 + d1 = d1 > 5 ? 5 : d1; + d2 = d2 > 5 ? 5 : d2; + d3 = d3 > 5 ? 5 : d3; this.BeginInvoke(new System.Action(() => { this.uilbHD.Text = $"当前厚度:{d1}, {d2}, {d3}"; @@ -1980,9 +2066,10 @@ namespace LeatherApp.Page curRecord.ThicknessList.Select(t => t.Value2).ToList().Min(), curRecord.ThicknessList.Select(t => t.Value3).ToList().Min(), }; - reDrawHouDu(curRecord.ThicknessList, + reDrawHouDu(ThicknessInfo, new double[] { 0, Math.Round(yqjimi * 100 + 0.005f, 2) }, - new double[] { Math.Round(hdMin.Min() - 0.5, 2), Math.Round(hdMax.Max() + 0.5f, 2) }); + new double[] { (hdMin.Min()-0.1) <=0? 0: (hdMin.Min() - 0.1), + (hdMax.Max() + 0.1)> 5?5: (hdMax.Max() + 0.1) }); } } else @@ -2229,12 +2316,12 @@ namespace LeatherApp.Page //循环等待数据后期处理完成 Thread.Sleep(500); List lstEditDefect = curRecord.DefectInfoList.Where(m => m.PhotoIndex == liPhotoIndex).ToList(); - AddTextEvent(DateTime.Now, $"暂停", $"(图像{liPhotoIndex})已达观察台,瑕疵二次判断=》({string.Join(",", lstEditDefect.Select(m => m.Code).ToArray())})是否包含在({string.Join(",", curRecord.ProductInfo.DefectPauseOption.ToArray())})中。"); + AddTextEvent(DateTime.Now, $"暂停", $"(图像{liPhotoIndex})已达观察台,瑕疵二次判断=》({string.Join(",", lstEditDefect.Select(m => m.Code).ToArray())})是否包含在({string.Join(",", curRecord.ProductInfo.DefectPauseOption.ToArray())})中。", WarningEnum.Normal, false); //瑕疵选项过滤 if (Config.OpenHalconDefect || curRecord.ProductInfo.DefectPauseOption.Count == 0 || lstEditDefect.Where(x => curRecord.ProductInfo.DefectPauseOption.Contains(x.Code)).Count() > 0) { //暂停 - AddTextEvent(DateTime.Now, $"暂停", $"(图像{liPhotoIndex})需瑕疵二次判断,已达观察台,进入暂停。"); + AddTextEvent(DateTime.Now, $"暂停", $"(图像{liPhotoIndex})需瑕疵二次判断,已达观察台,进入暂停。", WarningEnum.Normal, false); if (!Config.StopPLC) this.devContainer.devPlc.pauseDev(); else if (!Config.StopIO && devContainer.devIOCard.IsInit) @@ -2283,7 +2370,7 @@ namespace LeatherApp.Page if (row.uid == uid) { oldCode = this.uiDataGridView1.Rows[i].Cells["colCode"].Value.ToString(); - AddTextEvent(DateTime.Now, $"暂停", $"修改第({i + 1})行瑕疵名称 ({this.uiDataGridView1.Rows[i].Cells["colDefectName"].Value})->({row.Name})"); + AddTextEvent(DateTime.Now, $"暂停", $"修改第({i + 1})行瑕疵名称 ({this.uiDataGridView1.Rows[i].Cells["colDefectName"].Value})->({row.Name})", WarningEnum.Normal, false); this.uiDataGridView1.Rows[i].Cells["colCode"].Value = row.Code; this.uiDataGridView1.Rows[i].Cells["colDefectName"].Value = row.Name; //this.uiDataGridView1.Refresh(); @@ -2312,7 +2399,7 @@ namespace LeatherApp.Page //double len = (double)this.lblLen.Tag; //this.reDrawDefectPoints(curRecord.DefectInfoList, new double[] { 0, Math.Round(curRecord.FaceWidthMax + 0.005f, 2) }, new double[] { 0, len }); - AddTextEvent(DateTime.Now, $"二次检测", $"本次忽略{frmDefect.lstDel.Count}个瑕疵,本张图由{liDefectCount} -> {lstEditDefect.Count},总数{curRecord.DefectInfoList.Count}"); + AddTextEvent(DateTime.Now, $"二次检测", $"本次忽略{frmDefect.lstDel.Count}个瑕疵,本张图由{liDefectCount} -> {lstEditDefect.Count},总数{curRecord.DefectInfoList.Count}", WarningEnum.Normal, false); } this.uiMiniPagination1.TotalCount = curRecord.DefectTotalCount = curRecord.DefectInfoList.Count; // @@ -3627,26 +3714,53 @@ namespace LeatherApp.Page string imgid = currentDate + i.ToString("000"); defectNameInfo = Config.getDefectItem(res.modelName, int.Parse(res.excelTable.Rows[i]["类别"].ToString())); - defectInfo = new DefectInfo + if (defectNameInfo != null) { - PhotoIndex = res.photoIndex, - Code = defectNameInfo.Value("code"), - Name = defectNameInfo.Value("name"), - X = double.Parse(res.excelTable.Rows[i]["X"].ToString()),//cm - Y = Math.Round((res.photoIndex * res.bmp.Height * 1.0d / Config.cm2px_y + double.Parse(res.excelTable.Rows[i]["Y"].ToString())), 2),//cm - //Y = Math.Round((res.PicDis * 100 - double.Parse(res.excelTable.Rows[i]["Y"].ToString())), 2),//cm - Width = double.Parse(res.excelTable.Rows[i]["W"].ToString()),//cm - Height = double.Parse(res.excelTable.Rows[i]["H"].ToString()),//cm - ZXD = double.Parse(res.excelTable.Rows[i]["置信度"].ToString()), - Contrast = double.Parse(res.excelTable.Rows[i]["对比度"].ToString()), - Target = int.Parse(res.excelTable.Rows[i]["目标"].ToString()), - imageID = imgid,//res.lstDefectBmp[i].Clone(), - PicY = double.Parse(res.excelTable.Rows[i]["Y"].ToString()),//cm - CurrDis = res.CurrDis, - }; + defectInfo = new DefectInfo + { + PhotoIndex = res.photoIndex, + Code = defectNameInfo.Value("code"), + Name = defectNameInfo.Value("name"), + X = double.Parse(res.excelTable.Rows[i]["X"].ToString()),//cm + Y = Math.Round((res.photoIndex * res.bmp.Height * 1.0d / Config.cm2px_y + double.Parse(res.excelTable.Rows[i]["Y"].ToString())), 2),//cm + //Y = Math.Round((res.PicDis * 100 - double.Parse(res.excelTable.Rows[i]["Y"].ToString())), 2),//cm + Width = double.Parse(res.excelTable.Rows[i]["W"].ToString()),//cm + Height = double.Parse(res.excelTable.Rows[i]["H"].ToString()),//cm + ZXD = double.Parse(res.excelTable.Rows[i]["置信度"].ToString()), + Contrast = double.Parse(res.excelTable.Rows[i]["对比度"].ToString()), + Target = int.Parse(res.excelTable.Rows[i]["目标"].ToString()), + imageID = imgid,//res.lstDefectBmp[i].Clone(), + PicY = double.Parse(res.excelTable.Rows[i]["Y"].ToString()),//cm + CurrDis = res.CurrDis, + }; + } + else + { + step = 5000; + JArray defectItemList; + Config.LoadModelDefectItemList(res.modelName, out defectItemList); + AddTextEvent(DateTime.Now, $"label缺失", $"模型{res.modelName},label缺失,ID{int.Parse(res.excelTable.Rows[i]["类别"].ToString())},对应label数组:{defectItemList.ToString()}", WarningEnum.Low, true); + defectInfo = new DefectInfo + { + PhotoIndex = res.photoIndex, + Code = res.excelTable.Rows[i]["类别"].ToString()+"-未知", + Name = res.excelTable.Rows[i]["类别"].ToString() + "-未知", + X = double.Parse(res.excelTable.Rows[i]["X"].ToString()),//cm + Y = Math.Round((res.photoIndex * res.bmp.Height * 1.0d / Config.cm2px_y + double.Parse(res.excelTable.Rows[i]["Y"].ToString())), 2),//cm + //Y = Math.Round((res.PicDis * 100 - double.Parse(res.excelTable.Rows[i]["Y"].ToString())), 2),//cm + Width = double.Parse(res.excelTable.Rows[i]["W"].ToString()),//cm + Height = double.Parse(res.excelTable.Rows[i]["H"].ToString()),//cm + ZXD = double.Parse(res.excelTable.Rows[i]["置信度"].ToString()), + Contrast = double.Parse(res.excelTable.Rows[i]["对比度"].ToString()), + Target = int.Parse(res.excelTable.Rows[i]["目标"].ToString()), + imageID = imgid,//res.lstDefectBmp[i].Clone(), + PicY = double.Parse(res.excelTable.Rows[i]["Y"].ToString()),//cm + CurrDis = res.CurrDis, + }; + } defectInfo.ModifyUserCode = defectInfo.CreateUserCode = res.record.CreateUserCode; - if (defectPauseForUser && res.record.ProductInfo.DefectPauseOption.Contains(defectInfo.Code)) + if (defectPauseForUser && (res.record.ProductInfo.DefectPauseOption == null || res.record.ProductInfo.DefectPauseOption.Count == 0) && res.record.ProductInfo.DefectPauseOption.Contains(defectInfo.Code)) { lock (lock_defectPuase) { @@ -5524,5 +5638,66 @@ namespace LeatherApp.Page [Description("疵点数")] public int Count { get; set; } } + #region 界面调试 + private void button4_Click(object sender, EventArgs e) + { + this.BeginInvoke(new System.Action(() => + { + int length = 10000; + List ThicknessList = new List(); + for (int i = 0; i < length; i++) + { + double yqjimi = i * 0.1; + int n1 = 1019, n2 = 1089, n3 = 1167; + //Random ran = new Random(); + //int n1 = ran.Next(0, 5000); + double d1 = n1 / 1000.0; + //int n2 = ran.Next(0, 5000); + double d2 = n2 / 1000.0; + //int n3 = ran.Next(0, 5000); + double d3 = n3 / 1000.0; + //加入偏差计算 + d1 = Math.Round(d1 + Config.DataOffset1, 2); + d2 = Math.Round(d2 + Config.DataOffset2, 2); + d3 = Math.Round(d3 + Config.DataOffset3, 2); + + //限制0-5mm范围 + d1 = d1 > 5 ? 5 : d1; + d2 = d2 > 5 ? 5 : d2; + d3 = d3 > 5 ? 5 : d3; + this.BeginInvoke(new System.Action(() => + { + this.uilbHD.Text = $"当前厚度:{d1}, {d2}, {d3}"; + })); + + Thickness ThicknessInfo = new Thickness + { + Y_Dis = Math.Round(yqjimi * 100, 2),//cm + Value1 = d1, + Value2 = d2, + Value3 = d3, + }; + ThicknessList.Add(ThicknessInfo); + + List hdMax = new List(){ + ThicknessList.Select(t=> t.Value1).ToList().Max(), + ThicknessList.Select(t => t.Value2).ToList().Max(), + ThicknessList.Select(t => t.Value3).ToList().Max(), + }; + List hdMin = new List(){ + ThicknessList.Select(t=> t.Value1).ToList().Min(), + ThicknessList.Select(t => t.Value2).ToList().Min(), + ThicknessList.Select(t => t.Value3).ToList().Min(), + }; + reDrawHouDu(ThicknessInfo, + new double[] { 0, Math.Round(yqjimi * 100 + 0.005f, 2) }, + new double[] { (hdMin.Min()-0.5) <=0? 0: (hdMin.Min() - 0.5), + (hdMax.Max() + 0.5)> 5?5: (hdMax.Max() + 0.5) }); + //this.lineChartHouDu.Refresh(); + //Thread.Sleep(100); + } + })); + } + #endregion } } diff --git a/LeatherProject/LeatherApp/Page/FProductInfo.Designer.cs b/LeatherProject/LeatherApp/Page/FProductInfo.Designer.cs index fba2eb8..52cb7a8 100644 --- a/LeatherProject/LeatherApp/Page/FProductInfo.Designer.cs +++ b/LeatherProject/LeatherApp/Page/FProductInfo.Designer.cs @@ -33,12 +33,12 @@ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); this.uiTitlePanel2 = new Sunny.UI.UITitlePanel(); this.tcbarTensionValue = new Sunny.UI.UITrackBar(); this.tcbarGain = new Sunny.UI.UITrackBar(); @@ -74,14 +74,6 @@ this.uiLabel7 = new Sunny.UI.UILabel(); this.uiTitlePanel5 = new Sunny.UI.UITitlePanel(); this.uiDataGridView1 = new Sunny.UI.UIDataGridView(); - this.col_code = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.col_zxd = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.col_area = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.col_contrast_lower = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.col_contrast_top = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.col_IsOR = new System.Windows.Forms.DataGridViewCheckBoxColumn(); - this.col_Len = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.col_Cnt = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.uiTitlePanel6 = new Sunny.UI.UITitlePanel(); this.uiDataGridView2 = new Sunny.UI.UIDataGridView(); this.col2_code = new System.Windows.Forms.DataGridViewTextBoxColumn(); @@ -105,6 +97,14 @@ this.cmbColor = new Sunny.UI.UIComboBox(); this.uiLabel3 = new Sunny.UI.UILabel(); this.uiLabel2 = new Sunny.UI.UILabel(); + this.col_code = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.col_zxd = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.col_area = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.col_contrast_lower = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.col_contrast_top = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.col_IsOR = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.col_Len = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.col_Cnt = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.uiTitlePanel2.SuspendLayout(); this.uiTitlePanel3.SuspendLayout(); this.uiTitlePanel4.SuspendLayout(); @@ -724,68 +724,6 @@ this.uiDataGridView1.Style = Sunny.UI.UIStyle.Custom; this.uiDataGridView1.TabIndex = 21; // - // col_code - // - this.col_code.DataPropertyName = "Code"; - this.col_code.HeaderText = "code"; - this.col_code.MinimumWidth = 8; - this.col_code.Name = "col_code"; - this.col_code.ReadOnly = true; - this.col_code.Visible = false; - this.col_code.Width = 150; - // - // col_zxd - // - this.col_zxd.DataPropertyName = "ZXD"; - dataGridViewCellStyle3.NullValue = null; - this.col_zxd.DefaultCellStyle = dataGridViewCellStyle3; - this.col_zxd.HeaderText = "置信度"; - this.col_zxd.MinimumWidth = 20; - this.col_zxd.Name = "col_zxd"; - this.col_zxd.Width = 150; - // - // col_area - // - this.col_area.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.col_area.DataPropertyName = "Area"; - this.col_area.HeaderText = "面积(mm^2)"; - this.col_area.MinimumWidth = 20; - this.col_area.Name = "col_area"; - // - // col_contrast_lower - // - this.col_contrast_lower.DataPropertyName = "Contrast"; - this.col_contrast_lower.HeaderText = "对比度(下限)"; - this.col_contrast_lower.MinimumWidth = 80; - this.col_contrast_lower.Name = "col_contrast_lower"; - this.col_contrast_lower.Width = 120; - // - // col_contrast_top - // - this.col_contrast_top.HeaderText = "对比度(上限)"; - this.col_contrast_top.MinimumWidth = 80; - this.col_contrast_top.Name = "col_contrast_top"; - this.col_contrast_top.Width = 120; - // - // col_IsOR - // - this.col_IsOR.HeaderText = "或向选择"; - this.col_IsOR.MinimumWidth = 8; - this.col_IsOR.Name = "col_IsOR"; - this.col_IsOR.Width = 150; - // - // col_Len - // - this.col_Len.HeaderText = "报警长度(m)"; - this.col_Len.Name = "col_Len"; - this.col_Len.Visible = false; - // - // col_Cnt - // - this.col_Cnt.HeaderText = "报警数量"; - this.col_Cnt.Name = "col_Cnt"; - this.col_Cnt.Visible = false; - // // uiTitlePanel6 // this.uiTitlePanel6.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) @@ -1164,6 +1102,67 @@ this.uiLabel2.Text = "产品颜色"; this.uiLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // + // col_code + // + this.col_code.DataPropertyName = "Code"; + this.col_code.HeaderText = "code"; + this.col_code.MinimumWidth = 8; + this.col_code.Name = "col_code"; + this.col_code.ReadOnly = true; + this.col_code.Visible = false; + this.col_code.Width = 150; + // + // col_zxd + // + this.col_zxd.DataPropertyName = "ZXD"; + dataGridViewCellStyle3.NullValue = null; + this.col_zxd.DefaultCellStyle = dataGridViewCellStyle3; + this.col_zxd.HeaderText = "置信度"; + this.col_zxd.MinimumWidth = 20; + this.col_zxd.Name = "col_zxd"; + this.col_zxd.Width = 150; + // + // col_area + // + this.col_area.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.col_area.DataPropertyName = "Area"; + this.col_area.HeaderText = "面积(mm^2)"; + this.col_area.MinimumWidth = 20; + this.col_area.Name = "col_area"; + // + // col_contrast_lower + // + this.col_contrast_lower.DataPropertyName = "Contrast"; + this.col_contrast_lower.HeaderText = "对比度(下限)"; + this.col_contrast_lower.MinimumWidth = 80; + this.col_contrast_lower.Name = "col_contrast_lower"; + this.col_contrast_lower.Width = 120; + // + // col_contrast_top + // + this.col_contrast_top.HeaderText = "对比度(上限)"; + this.col_contrast_top.MinimumWidth = 80; + this.col_contrast_top.Name = "col_contrast_top"; + this.col_contrast_top.Width = 120; + // + // col_IsOR + // + this.col_IsOR.HeaderText = "或向选择"; + this.col_IsOR.MinimumWidth = 8; + this.col_IsOR.Name = "col_IsOR"; + this.col_IsOR.Width = 150; + // + // col_Len + // + this.col_Len.HeaderText = "报警长度(m)"; + this.col_Len.Name = "col_Len"; + this.col_Len.Width = 130; + // + // col_Cnt + // + this.col_Cnt.HeaderText = "报警数量"; + this.col_Cnt.Name = "col_Cnt"; + // // FProductInfo // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; @@ -1248,14 +1247,6 @@ private Sunny.UI.UIRadioButton rbMaterial4; private Sunny.UI.UIRadioButton rbMaterial3; private Sunny.UI.UIRadioButton rbMaterial2; - private System.Windows.Forms.DataGridViewTextBoxColumn col_code; - private System.Windows.Forms.DataGridViewTextBoxColumn col_zxd; - private System.Windows.Forms.DataGridViewTextBoxColumn col_area; - private System.Windows.Forms.DataGridViewTextBoxColumn col_contrast_lower; - private System.Windows.Forms.DataGridViewTextBoxColumn col_contrast_top; - private System.Windows.Forms.DataGridViewCheckBoxColumn col_IsOR; - private System.Windows.Forms.DataGridViewTextBoxColumn col_Len; - private System.Windows.Forms.DataGridViewTextBoxColumn col_Cnt; private Sunny.UI.UINumPadTextBox uiNumPadTextBox1; private Sunny.UI.UILabel uiLabel11; private Sunny.UI.UISwitch uiSwitch1; @@ -1265,5 +1256,13 @@ private Sunny.UI.UITextBox tbClass; private Sunny.UI.UILabel uiLabel14; private Sunny.UI.UISymbolButton uiSymbolButton1; + private System.Windows.Forms.DataGridViewTextBoxColumn col_code; + private System.Windows.Forms.DataGridViewTextBoxColumn col_zxd; + private System.Windows.Forms.DataGridViewTextBoxColumn col_area; + private System.Windows.Forms.DataGridViewTextBoxColumn col_contrast_lower; + private System.Windows.Forms.DataGridViewTextBoxColumn col_contrast_top; + private System.Windows.Forms.DataGridViewCheckBoxColumn col_IsOR; + private System.Windows.Forms.DataGridViewTextBoxColumn col_Len; + private System.Windows.Forms.DataGridViewTextBoxColumn col_Cnt; } } diff --git a/LeatherProject/LeatherApp/Page/FProductInfo.cs b/LeatherProject/LeatherApp/Page/FProductInfo.cs index ffd0afc..649d49b 100644 --- a/LeatherProject/LeatherApp/Page/FProductInfo.cs +++ b/LeatherProject/LeatherApp/Page/FProductInfo.cs @@ -259,8 +259,8 @@ namespace LeatherApp.Page uiDataGridView1.Rows[i].Cells["col_contrast_top"].Value = ContrastToPercent(item1.ContrastTop); uiDataGridView1.Rows[i].Cells["col_contrast_lower"].Value = ContrastToPercent(item1.ContrastLower); uiDataGridView1.Rows[i].Cells["col_IsOR"].Value = item1.IsOR; - //uiDataGridView1.Rows[i].Cells["col_Len"].Value = item1.DefectWarnLength; - //uiDataGridView1.Rows[i].Cells["col_Cnt"].Value = item1.DefectWarnCnt; + uiDataGridView1.Rows[i].Cells["col_Len"].Value = item1.DefectWarnLength; + uiDataGridView1.Rows[i].Cells["col_Cnt"].Value = item1.DefectWarnCnt; } } GradeLimit item2; diff --git a/LeatherProject/LeatherApp/Page/FReport.cs b/LeatherProject/LeatherApp/Page/FReport.cs index 615ab0f..f18ebcf 100644 --- a/LeatherProject/LeatherApp/Page/FReport.cs +++ b/LeatherProject/LeatherApp/Page/FReport.cs @@ -224,7 +224,8 @@ namespace LeatherApp.Page }; reDrawHouDu(record.ThicknessList, new double[] { 0, Math.Round(len + 0.005f, 2) }, - new double[] { hdMin.Min(), Math.Round(hdMax.Max() + 0.005f, 2) }); + new double[] { (hdMin.Min()-0.1) <=0? 0: (hdMin.Min() - 0.1), + (hdMax.Max() + 0.1)> 5?5: (hdMax.Max() + 0.1) }); } err = 3; // @@ -435,7 +436,7 @@ namespace LeatherApp.Page var row2_cell6 = wsDefectsDetail.Row(rowIndex).Cell(cellIndex + 5); //row2_cell6.SetDataType(XLDataType.Text);//类型设置不起作用 用"'"+内容代替 //row2_cell6.DataType = XLDataType.Text; - row2_cell6.Value = "'" + ProductDefects.ReelId; + row2_cell6.Value = ProductDefects.ReelId; row2_cell6.Style = row2_cell2.Style; var row2_cell7 = wsDefectsDetail.Row(rowIndex).Cell(cellIndex + 6); diff --git a/LeatherProject/LeatherApp/Page/SelectReelFrm.Designer.cs b/LeatherProject/LeatherApp/Page/SelectReelFrm.Designer.cs new file mode 100644 index 0000000..48e9bdd --- /dev/null +++ b/LeatherProject/LeatherApp/Page/SelectReelFrm.Designer.cs @@ -0,0 +1,225 @@ +namespace LeatherApp.Page +{ + partial class SelectReelFrm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.txtBatch = new Sunny.UI.UITextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.txtLen = new Sunny.UI.UITextBox(); + this.cmbReel = new Sunny.UI.UIComboBox(); + this.lbErr = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.pnlBtm.SuspendLayout(); + this.SuspendLayout(); + // + // pnlBtm + // + this.pnlBtm.Location = new System.Drawing.Point(1, 265); + this.pnlBtm.Size = new System.Drawing.Size(623, 55); + // + // btnCancel + // + this.btnCancel.Location = new System.Drawing.Point(495, 12); + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // btnOK + // + this.btnOK.Location = new System.Drawing.Point(380, 12); + this.btnOK.Click += new System.EventHandler(this.btnOK_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(31, 87); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(79, 16); + this.label1.TabIndex = 2; + this.label1.Text = "当前批号:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(31, 210); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(79, 16); + this.label2.TabIndex = 4; + this.label2.Text = "卷号选择:"; + // + // txtBatch + // + this.txtBatch.ButtonFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); + this.txtBatch.ButtonFillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); + this.txtBatch.ButtonFillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); + this.txtBatch.ButtonRectColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); + this.txtBatch.ButtonRectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); + this.txtBatch.ButtonRectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); + this.txtBatch.ButtonStyleInherited = false; + this.txtBatch.ButtonSymbolOffset = new System.Drawing.Point(0, 0); + this.txtBatch.Cursor = System.Windows.Forms.Cursors.IBeam; + this.txtBatch.FillColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(251)))), ((int)(((byte)(250))))); + this.txtBatch.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtBatch.Location = new System.Drawing.Point(130, 80); + this.txtBatch.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.txtBatch.MinimumSize = new System.Drawing.Size(1, 16); + this.txtBatch.Name = "txtBatch"; + this.txtBatch.Padding = new System.Windows.Forms.Padding(5); + this.txtBatch.ReadOnly = true; + this.txtBatch.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); + this.txtBatch.ScrollBarColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); + this.txtBatch.ScrollBarStyleInherited = false; + this.txtBatch.ShowText = false; + this.txtBatch.Size = new System.Drawing.Size(466, 29); + this.txtBatch.Style = Sunny.UI.UIStyle.Custom; + this.txtBatch.StyleCustomMode = true; + this.txtBatch.TabIndex = 5; + this.txtBatch.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; + this.txtBatch.Watermark = ""; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(31, 139); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(47, 16); + this.label3.TabIndex = 6; + this.label3.Text = "长度:"; + // + // txtLen + // + this.txtLen.ButtonFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); + this.txtLen.ButtonFillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); + this.txtLen.ButtonFillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); + this.txtLen.ButtonRectColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); + this.txtLen.ButtonRectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); + this.txtLen.ButtonRectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); + this.txtLen.ButtonStyleInherited = false; + this.txtLen.ButtonSymbolOffset = new System.Drawing.Point(0, 0); + this.txtLen.Cursor = System.Windows.Forms.Cursors.IBeam; + this.txtLen.FillColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(251)))), ((int)(((byte)(250))))); + this.txtLen.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtLen.Location = new System.Drawing.Point(130, 133); + this.txtLen.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.txtLen.MinimumSize = new System.Drawing.Size(1, 16); + this.txtLen.Name = "txtLen"; + this.txtLen.Padding = new System.Windows.Forms.Padding(5); + this.txtLen.ReadOnly = true; + this.txtLen.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); + this.txtLen.ScrollBarColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138))))); + this.txtLen.ScrollBarStyleInherited = false; + this.txtLen.ShowText = false; + this.txtLen.Size = new System.Drawing.Size(466, 29); + this.txtLen.Style = Sunny.UI.UIStyle.Custom; + this.txtLen.StyleCustomMode = true; + this.txtLen.TabIndex = 7; + this.txtLen.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; + this.txtLen.Watermark = ""; + // + // cmbReel + // + this.cmbReel.DataSource = null; + this.cmbReel.DropDownStyle = Sunny.UI.UIDropDownStyle.DropDownList; + this.cmbReel.FillColor = System.Drawing.Color.White; + this.cmbReel.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.cmbReel.ItemHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(200)))), ((int)(((byte)(255))))); + this.cmbReel.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255))))); + this.cmbReel.Location = new System.Drawing.Point(130, 202); + this.cmbReel.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.cmbReel.MinimumSize = new System.Drawing.Size(63, 0); + this.cmbReel.Name = "cmbReel"; + this.cmbReel.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); + this.cmbReel.Size = new System.Drawing.Size(466, 29); + this.cmbReel.Style = Sunny.UI.UIStyle.Custom; + this.cmbReel.TabIndex = 8; + this.cmbReel.Text = "uiComboBox1"; + this.cmbReel.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; + this.cmbReel.Watermark = ""; + this.cmbReel.SelectedIndexChanged += new System.EventHandler(this.cmbReel_SelectedIndexChanged); + // + // lbErr + // + this.lbErr.AutoSize = true; + this.lbErr.Location = new System.Drawing.Point(127, 167); + this.lbErr.Name = "lbErr"; + this.lbErr.Size = new System.Drawing.Size(47, 16); + this.lbErr.TabIndex = 9; + this.lbErr.Text = "Error"; + this.lbErr.Visible = false; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(127, 48); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(63, 16); + this.label4.TabIndex = 10; + this.label4.Text = "ERP信息"; + // + // SelectReelFrm + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(625, 323); + this.Controls.Add(this.label4); + this.Controls.Add(this.lbErr); + this.Controls.Add(this.cmbReel); + this.Controls.Add(this.txtLen); + this.Controls.Add(this.label3); + this.Controls.Add(this.txtBatch); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Name = "SelectReelFrm"; + this.Text = "选择对应卷号"; + this.ZoomScaleRect = new System.Drawing.Rectangle(15, 15, 800, 450); + this.Controls.SetChildIndex(this.pnlBtm, 0); + this.Controls.SetChildIndex(this.label1, 0); + this.Controls.SetChildIndex(this.label2, 0); + this.Controls.SetChildIndex(this.txtBatch, 0); + this.Controls.SetChildIndex(this.label3, 0); + this.Controls.SetChildIndex(this.txtLen, 0); + this.Controls.SetChildIndex(this.cmbReel, 0); + this.Controls.SetChildIndex(this.lbErr, 0); + this.Controls.SetChildIndex(this.label4, 0); + this.pnlBtm.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private Sunny.UI.UITextBox txtBatch; + private System.Windows.Forms.Label label3; + private Sunny.UI.UITextBox txtLen; + private Sunny.UI.UIComboBox cmbReel; + private System.Windows.Forms.Label lbErr; + private System.Windows.Forms.Label label4; + } +} \ No newline at end of file diff --git a/LeatherProject/LeatherApp/Page/SelectReelFrm.cs b/LeatherProject/LeatherApp/Page/SelectReelFrm.cs new file mode 100644 index 0000000..561a39c --- /dev/null +++ b/LeatherProject/LeatherApp/Page/SelectReelFrm.cs @@ -0,0 +1,114 @@ +using Models; +using Service; +using SqlSugar; +using Sunny.UI; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace LeatherApp.Page +{ + public partial class SelectReelFrm : UIEditForm + { + //private DataTable ErpTb; + RecordsService service = new RecordsService(); + List ErpData = new List(); + List Indexs = new List(); + + public string SelectBatch; + public string SelectReel; + public string SelectLen; + + public int RowIndex = 0; + public SelectReelFrm(DataTable tb) + { + InitializeComponent(); + + txtBatch.Text = tb.Rows[0][2].ToString(); + //ErpTb = tb.Clone(); + label4.Text = $"ERP信息:{tb.Rows.Count}条"; + InitView(tb); + } + + private Expression> createQueryExpression() + { + return Expressionable.Create() + .And(it => it.CreateTime >= DateTime.Now.SetTime(0, 0, 0).AddDays(-1)) + .And(it => it.CreateTime < DateTime.Now.SetTime(0, 0, 0).AddDays(1)) + .AndIF(!string.IsNullOrWhiteSpace(txtBatch.Text), it => it.BatchId.Contains(txtBatch.Text.Trim())) + .ToExpression();//注意 这一句 不能少 + } + + private void InitView(DataTable ErpTb) + { + List list = new List(); + int totalCount =0; + //var list2 = service.GetListNav(1, 10000, ref totalCount, createQueryExpression()); + //if (list2 != null && list2.Count > 0) + //{ + // for (int i = 0; i < ErpTb.Rows.Count; i++) + // { + // var find = list2.Find(x => x.ReelId == ErpTb.Rows[i][3].ToString() || x.BatchId == ErpTb.Rows[i][2].ToString()); + // if (find == null) + // { + // Indexs.Add(i); + // list.Add(ErpTb.Rows[i][3].ToString()); + // ErpData.Add(new string[] { ErpTb.Rows[i][2].ToString(), ErpTb.Rows[i][4].ToString(), ErpTb.Rows[i][1].ToString() }); + // } + // } + //} + //else + { + for (int i = 0; i < ErpTb.Rows.Count; i++) + { + Indexs.Add(i); + list.Add(ErpTb.Rows[i][3].ToString()); + ErpData.Add(new string[] { ErpTb.Rows[i][2].ToString(), ErpTb.Rows[i][4].ToString(), ErpTb.Rows[i][1].ToString() }); + } + } + if (list.Count > 0) + { + cmbReel.DataSource = list; + cmbReel.SelectedIndex = 0; + txtLen.Text = ErpData[0][2]; + } + else + { + lbErr.Visible = true; + lbErr.Text = $"ERP数据卷号都已经记录-{ErpTb.Rows.Count}"; + } + } + + private void cmbReel_SelectedIndexChanged(object sender, EventArgs e) + { + if (cmbReel.SelectedIndex >= 0) + { + txtBatch.Text = ErpData[cmbReel.SelectedIndex][0]; + txtLen.Text = ErpData[cmbReel.SelectedIndex][2]; + RowIndex = Indexs[cmbReel.SelectedIndex]; + } + } + + private void btnCancel_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + this.Close(); + } + + private void btnOK_Click(object sender, EventArgs e) + { + RowIndex = Indexs[cmbReel.SelectedIndex]; + SelectBatch = txtBatch.Text; + SelectReel = cmbReel.Text; + SelectLen = txtLen.Text; + this.DialogResult= DialogResult.OK; + } + } +} diff --git a/LeatherProject/LeatherApp/Page/SelectReelFrm.resx b/LeatherProject/LeatherApp/Page/SelectReelFrm.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/LeatherProject/LeatherApp/Page/SelectReelFrm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/LeatherProject/LeatherApp/Utils/DBUtils.cs b/LeatherProject/LeatherApp/Utils/DBUtils.cs index ab347f3..f886146 100644 --- a/LeatherProject/LeatherApp/Utils/DBUtils.cs +++ b/LeatherProject/LeatherApp/Utils/DBUtils.cs @@ -118,15 +118,13 @@ namespace LeatherApp.Utils //dt2.Columns.RemoveAt(0); //dt2.Columns.RemoveAt(0); + //条码查询 mfg_material_goods string sqlstr = $"select id,current_qty,batch_no,goods_code,material_id,mo_id from mfg_material_goods where id={parameters[0].Value}"; var dt2 = db.Ado.GetDataTable(sqlstr); - - - - + //根据mo_id 从 order_main_order 查询 material_id sqlstr = $"select id,material_id from order_main_order where id={dt2.Rows[0]["mo_id"]}"; var dt4 = db.Ado.GetDataTable(sqlstr); - + //根据material_id 从 base_material 查询 material_code material_name sqlstr = $"select id,material_code,material_name from base_material where id={dt4.Rows[0]["material_id"]}"; var dt3 = db.Ado.GetDataTable(sqlstr); diff --git a/LeatherProject/LeatherApp/bin/Debug/ErrorLog.txt b/LeatherProject/LeatherApp/bin/Debug/ErrorLog.txt index 703f11f..d0ece71 100644 --- a/LeatherProject/LeatherApp/bin/Debug/ErrorLog.txt +++ b/LeatherProject/LeatherApp/bin/Debug/ErrorLog.txt @@ -253,3 +253,9 @@ Global捕获到未处理异常:System.OverflowException 在 Sunny.UI.UIControl.WndProc(Message& m) 在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) +2024-12-04 10:05:23 +Global捕获到未处理异常:System.Collections.Generic.KeyNotFoundException +异常信息:给定关键字不在字典中。 +异常堆栈: 在 System.Collections.Concurrent.ConcurrentDictionary`2.get_Item(TKey key) + 在 LeatherApp.Page.FHome.<>c__DisplayClass38_0.b__0() + diff --git a/LeatherProject/LeatherApp/bin/Debug/SysConfig.ini b/LeatherProject/LeatherApp/bin/Debug/SysConfig.ini index c1eac99..70a997f 100644 --- a/LeatherProject/LeatherApp/bin/Debug/SysConfig.ini +++ b/LeatherProject/LeatherApp/bin/Debug/SysConfig.ini @@ -27,6 +27,11 @@ CeHouIP=192.168.1.1 CeHouPort=64000 [Material] SuedeList=BSF,SF,SL,SD +SuedeList2= +SuedeList3=XN +SuedeList4= +SuedeList5= +SuedeList6= [LIB] model_path=./models/best_1113_bs12.fp16.trt labels_path=./models/hexin.names @@ -47,9 +52,9 @@ MiddleSuperposition=700 DBConStr=server=localhost;Database=LeatherDB;Uid=root;Pwd=123456; AllowLoadLocalInfile=true ErpDBType=PostgreSQL [ErpDB] -ErpDBConStr1=Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=200.1.1.15)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=PUDB)));User Id=qcvi;Password=qcvi;Pooling='true';Max Pool Size=150 +ErpDBConStr1=Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=200.1.1.15)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=PUDB)));User Id=qcvi;Password=qcvi;Pooling='true';Max Pool Size=150;Validate Connection=true ErpSql1=select * from tb_qc_prodinfo where PJXTBH= -ServerDBConStr1=server=172.16.21.210;Database=LeatherDB;Uid=XCL001;Pwd=123456;AllowLoadLocalInfile=true +ServerDBConStr=server=200.1.1.142;Database=LeatherDB;Uid=root;Pwd=Maimu888;AllowLoadLocalInfile=true [LOG] LogPath=D:\log\ [Halcon] @@ -62,7 +67,7 @@ BeepTime=3000 CustomerName= [Fun] OpenJinShuJianCe=False -OpenHouDuJiLu=False +OpenHouDuJiLu=True OpenFenJuan=True OpenJMStop=True StopLookDis=5.5 @@ -72,6 +77,6 @@ ClearDays=3 [BOffset] EdgeOffset=3 [HouDuOffset] -DataOffset1=1 -DataOffset2=2 -DataOffset3=3 +DataOffset1=0 +DataOffset2=0 +DataOffset3=0 diff --git a/LeatherProject/LeatherApp/obj/Debug/LeatherApp.Page.SelectReelFrm.resources b/LeatherProject/LeatherApp/obj/Debug/LeatherApp.Page.SelectReelFrm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/LeatherProject/LeatherApp/obj/Debug/LeatherApp.Page.SelectReelFrm.resources differ diff --git a/LeatherProject/LeatherApp/obj/Debug/LeatherApp.csproj.FileListAbsolute.txt b/LeatherProject/LeatherApp/obj/Debug/LeatherApp.csproj.FileListAbsolute.txt index f1ef600..9b741f0 100644 --- a/LeatherProject/LeatherApp/obj/Debug/LeatherApp.csproj.FileListAbsolute.txt +++ b/LeatherProject/LeatherApp/obj/Debug/LeatherApp.csproj.FileListAbsolute.txt @@ -678,3 +678,4 @@ H:\CPL\GeBoshi\hy1127\V1.0\LeatherProject\LeatherApp\obj\Debug\LeatherApp.csproj H:\CPL\GeBoshi\hy1127\V1.0\LeatherProject\LeatherApp\obj\Debug\LeatherApp.csproj.CopyComplete H:\CPL\GeBoshi\hy1127\V1.0\LeatherProject\LeatherApp\obj\Debug\革博士AI智能检测系统.exe H:\CPL\GeBoshi\hy1127\V1.0\LeatherProject\LeatherApp\obj\Debug\革博士AI智能检测系统.pdb +E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\obj\Debug\LeatherApp.Page.SelectReelFrm.resources diff --git a/LeatherProject/ServerApp/ServerApp.csproj b/LeatherProject/ServerApp/ServerApp.csproj index 979bc5e..fad372c 100644 --- a/LeatherProject/ServerApp/ServerApp.csproj +++ b/LeatherProject/ServerApp/ServerApp.csproj @@ -14,7 +14,7 @@ true - AnyCPU + x64 true full false @@ -32,6 +32,9 @@ prompt 4 + + 服务器.ico + ..\packages\ClosedXML.0.96.0\lib\net46\ClosedXML.dll @@ -102,5 +105,8 @@ + + + \ No newline at end of file diff --git a/LeatherProject/ServerApp/ServerFrm.Designer.cs b/LeatherProject/ServerApp/ServerFrm.Designer.cs index 87f341e..377cbef 100644 --- a/LeatherProject/ServerApp/ServerFrm.Designer.cs +++ b/LeatherProject/ServerApp/ServerFrm.Designer.cs @@ -37,6 +37,7 @@ System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea3 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); System.Windows.Forms.DataVisualization.Charting.Legend legend3 = new System.Windows.Forms.DataVisualization.Charting.Legend(); System.Windows.Forms.DataVisualization.Charting.Series series3 = new System.Windows.Forms.DataVisualization.Charting.Series(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerFrm)); this.lstboxLog = new System.Windows.Forms.ListBox(); this.lineChartDefect = new System.Windows.Forms.DataVisualization.Charting.Chart(); this.lineChartFaceWidth = new System.Windows.Forms.DataVisualization.Charting.Chart(); @@ -48,6 +49,9 @@ // // lstboxLog // + this.lstboxLog.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.lstboxLog.FormattingEnabled = true; this.lstboxLog.ItemHeight = 12; this.lstboxLog.Location = new System.Drawing.Point(12, 12); @@ -115,6 +119,7 @@ this.Controls.Add(this.lineChartFaceWidth); this.Controls.Add(this.lineChartDefect); this.Controls.Add(this.lineChartHouDu); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Name = "ServerFrm"; this.Text = "服务器监控"; this.Load += new System.EventHandler(this.ServerFrm_Load); diff --git a/LeatherProject/ServerApp/ServerFrm.cs b/LeatherProject/ServerApp/ServerFrm.cs index dc3a911..ab8c35a 100644 --- a/LeatherProject/ServerApp/ServerFrm.cs +++ b/LeatherProject/ServerApp/ServerFrm.cs @@ -32,7 +32,8 @@ namespace ServerApp { this.lstboxLog.Items.Clear(); WebService web = new WebService(); - web.dbConStr = "server=localhost;Database=LeatherDB;Uid=root;Pwd=123456; AllowLoadLocalInfile=true"; + //web.dbConStr = "server=localhost;Database=LeatherDB;Uid=root;Pwd=123456; AllowLoadLocalInfile=true"; + web.dbConStr = "server=localhost;Database=LeatherDB;Uid=root;Pwd=Maimu888; AllowLoadLocalInfile=true"; web.LogEvent = (warning, msg) => { try @@ -63,7 +64,7 @@ namespace ServerApp MessageBox.Show($"数据报表生成失败:{ex.Message}"); } }; - web.start("172.30.8.2", 10086); + web.start("172.16.21.210", 10086); //172.16.21.210 172.30.8.2 } private void lstboxLog_DrawItem(object sender, DrawItemEventArgs e) { @@ -96,7 +97,7 @@ namespace ServerApp if (!Directory.Exists(path)) Directory.CreateDirectory(path); - var list = data.DefectInfoList; + var list = data.DefectInfoList; //绘图1 double len = Math.Round(data.Len * 100, 2);//cm this.reDrawDefectPoints(data, new double[] { 0, Math.Round(data.FaceWidthMax + 0.005f, 2) }, new double[] { 0, len }); @@ -121,13 +122,14 @@ namespace ServerApp }; reDrawHouDu(data.ThicknessList, new double[] { 0, Math.Round(len + 0.005f, 2) }, - new double[] { hdMin.Min(), Math.Round(hdMax.Max() + 0.005f, 2) }); + new double[] { (hdMin.Min()-0.1) <=0? 0: (hdMin.Min() - 0.1), + (hdMax.Max() + 0.1)> 5?5: (hdMax.Max() + 0.1) }); } err = 2; foreach (var item in list) { - if(string.IsNullOrEmpty(item.Name)) - item.Name = item.Code; + if (string.IsNullOrEmpty(item.Name)) + item.Name = item.Code; } // string Grade = ""; @@ -138,7 +140,7 @@ namespace ServerApp { ProName = data.BarCodeName, BatchId = data.BatchId, - ReelId = string.IsNullOrEmpty(data.PartReelId)? "'"+ data.ReelId : $"{data.ReelId}-{data.PartReelId}", + ReelId = string.IsNullOrEmpty(data.PartReelId) ? "'" + data.ReelId : $"{data.ReelId}-{data.PartReelId}", Len = data.Len.ToString(), Speed = Math.Round(data.Len / data.TimeLen, 2).ToString(), Grade = Grade, @@ -149,33 +151,42 @@ namespace ServerApp PartNote2 = data.PartReelNote2, }; err = 5; - jdata.DefectTotal = data.DefectInfoList.GroupBy(x => x.Name).Select(g => new JDefectTotal { Name = g.Key, Count = g.Count() }).ToList(); - jdata.DefectDetail = data.DefectInfoList.Select(x => new JDefectDetail + if (data.DefectInfoList != null) { - Index = x.PhotoIndex, - Name = x.Name, - X = x.X, - Y = Math.Round(x.Y / 100.0d, 2), - Width = x.Width * 10, - Height = x.Height * 10, - ZXD = x.ZXD, - Area = x.Area * 100, - Contrast = x.Contrast - }) - .OrderBy(x => x.Index).ThenBy(x => x.Y).ToList(); - jdata.FaceWidthDetail = data.FacePointList.Select(x => new JFaceWidthDetail + jdata.DefectTotal = data.DefectInfoList.GroupBy(x => x.Name).Select(g => new JDefectTotal { Name = g.Key, Count = g.Count() }).ToList(); + jdata.DefectDetail = data.DefectInfoList.Select(x => new JDefectDetail + { + Index = x.PhotoIndex, + Name = x.Name, + X = x.X, + Y = Math.Round(x.Y / 100.0d, 2), + Width = x.Width * 10, + Height = x.Height * 10, + ZXD = x.ZXD, + Area = x.Area * 100, + Contrast = x.Contrast + }) + .OrderBy(x => x.Index).ThenBy(x => x.Y).ToList(); + } + if (data.FacePointList != null) + { + jdata.FaceWidthDetail = data.FacePointList.Select(x => new JFaceWidthDetail + { + Y = x[0], + data = x[1], + }).OrderBy(x => x.Y).ThenBy(x => x.Y).ToList(); + } + if (data.ThicknessList != null) { - Y = x[0], - data = x[1], - }).OrderBy(x => x.Y).ThenBy(x => x.Y).ToList(); - jdata.ThicknessDetail = data.ThicknessList.Select(x => new JThicknessDetail - { - Y = x.Y_Dis, - d1 = x.Value1, - d2 = x.Value2, - d3 = x.Value3, - }) - .OrderBy(x => x.Y).ThenBy(x => x.Y).ToList(); + jdata.ThicknessDetail = data.ThicknessList.Select(x => new JThicknessDetail + { + Y = x.Y_Dis, + d1 = x.Value1, + d2 = x.Value2, + d3 = x.Value3, + }) + .OrderBy(x => x.Y).ThenBy(x => x.Y).ToList(); + } err = 6; Product pd = new Product(); @@ -191,7 +202,7 @@ namespace ServerApp var image1 = captureControl(this.lineChartDefect); var image2 = captureControl(this.lineChartFaceWidth); var image3 = captureControl(this.lineChartHouDu); - var filePath = $"{path}缺陷列表_{data.BatchId}_{data.ReelId}.xlsx"; + var filePath = $"{path}\\缺陷列表_{data.BatchId}_{data.ReelId}.xlsx"; err = 8; filePath = $"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\\temp.xlsx"; exportTabel(jdata, image1, image2, image3, filePath); @@ -1070,17 +1081,21 @@ namespace ServerApp // 截图操作函数 private byte[] captureControl(System.Windows.Forms.Control control) { - Bitmap bmp = new Bitmap(control.Width, control.Height); - Graphics graphics = Graphics.FromImage(bmp); - Rectangle rectangle = new Rectangle(0, 0, control.Width, control.Height); - control.DrawToBitmap(bmp, rectangle); - //bmp to jpg - MemoryStream ms = new MemoryStream(); - bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);//bmp是已经获得的bitmap数据 - byte[] bytes = ms.GetBuffer(); - ms.Close(); + byte[] bytes = null; + this.Invoke(new System.Action(() => + { + Bitmap bmp = new Bitmap(control.Width, control.Height); + Graphics graphics = Graphics.FromImage(bmp); + Rectangle rectangle = new Rectangle(0, 0, control.Width, control.Height); + control.DrawToBitmap(bmp, rectangle); + //bmp to jpg + MemoryStream ms = new MemoryStream(); + bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);//bmp是已经获得的bitmap数据 + bytes = ms.GetBuffer(); + ms.Close(); - graphics.Dispose(); + graphics.Dispose(); + })); return bytes; //bitmap.Save(@"C:\Images\Capture.jpg", ImageFormat.Jpeg); //return Image.FromStream(new MemoryStream(bytes)); diff --git a/LeatherProject/ServerApp/ServerFrm.resx b/LeatherProject/ServerApp/ServerFrm.resx index 29dcb1b..09a6983 100644 --- a/LeatherProject/ServerApp/ServerFrm.resx +++ b/LeatherProject/ServerApp/ServerFrm.resx @@ -117,4 +117,1137 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs + LEDTbCx/0m0sv9JtLL/SbSvf0m0r39JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0rn9JtLWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLL/SbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LL/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0rn9JtK9/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtK98AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA0m0tYNJtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0r3wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs + LH/SbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/02wsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCx/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbS1gAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0sv9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/89wKCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLH/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCx/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSufAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9wKCDSbSvf0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/02wsf89wKCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA02wsf9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0r39JtLL/SbSy/0m0sv9Jt + LL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9Jt + LL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9Jt + LL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9Jt + LL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/02wsf89wKCAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9wKCDSbSvf0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LL/TbCx/z3AoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA0m0rn9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLL/TbCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9wKCDSbSvf0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/z3AoIAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA0m0rn9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0tYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSbSvf0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSbS1g0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/89wKCAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLH/SbSy/0m0sv9Jt + K5/SbS1gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA02wsf9JtLL/SbSuf0m0rn9NsLEAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANJtLL/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANNsLEDSbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSvf02wsQAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsf9Jt + K9/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLL/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0r39Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLEAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCx/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/02wsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANJtK5/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + K98AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/z3AoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANJtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSvfAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCx/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLL8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSbS1g0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANJtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0rnwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANJtK5/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsQAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs + LEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSufAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0r39JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0r3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADSbSy/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSy/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLH/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtK58AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAz3AoINJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/z3AoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs + LEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Ns + LH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsf9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsf9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/TbCx/z3AoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAz3AoINJtK5/SbSvf0m0s/9JtLL/SbSufz3AoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Ns + LH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLL/SbSuf0m0rn9Jt + K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt + K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt + K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt + K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt + K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt + K5/SbSuf0m0rn9JtK5/SbSuf0m0sv9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs + LEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Ns + LH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/vJAn/6ayI/+msiP/prIj/6ay + I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay + I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay + I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay + I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay + I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay + I/+msiP/prIj/6ayI/+1myb/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP+1myb/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/6ayI//SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/7WbJv+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/prIj/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/tZsm/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+msiP/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs + LEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP+1myb/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/6ayI//SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/7WbJv+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/prIj/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/tZsm/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/prIj/6ayI/+tpiX/raYl/62mJf+tpiX/raYl/62mJf+tpiX/raYl/62mJf+tpiX/raYl/62m + Jf+tpiX/nr4h/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+msiP/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP+1myb/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/raYl/8t4Kv/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/7WbJv+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/6ay + I//SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/7Wb + Jv+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/8OE + Kf/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/8t4Kv+eviH/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/prIj/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/tZsm/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+1myb/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/8OE + Kf+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+msiP/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP+1myb/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/nr4h/8t4 + Kv/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/7WbJv+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/6ayI//SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/7WbJv+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+tpiX/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/vJAn/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/prIj/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Ns + LH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/tZsm/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/7yQ + J//SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/LeCr/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+msiP/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP+1myb/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/tZsm/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/8OEKf+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/6ayI//SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/7WbJv+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+1myb/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/vJAn/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/prIj/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/tZsm/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/56+If/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP+tpiX/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+msiP/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP+1myb/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/7WbJv/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/w4Qp/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/6ayI//SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/7WbJv+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/8OEKf/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/8OEKf+eviH/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/prIj/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/tZsm/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/62mJf/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP+1myb/nr4h/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+msiP/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs + LEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP+1myb/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+eviH/raYl/62mJf+tpiX/raYl/62mJf+tpiX/raYl/62mJf+tpiX/raYl/62mJf+tpiX/raYl/62m + Jf+msiP/nr4h/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/6ayI//SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/7WbJv+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/prIj/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/tZsm/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+msiP/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP+1myb/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/6ay + I//SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/7Wb + Jv+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/prIj/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/tZsm/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ + IP+msiP/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP+8kCf/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay + I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay + I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay + I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay + I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay + I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/62mJf/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Ns + LH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs + LEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + K9/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt + K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt + K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt + K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt + K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt + K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0sv9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Ns + LH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCx/0m0sv9Jt + K9/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0sv9Jt + K5/TbCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADSbS1g0m0r39JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtK9/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADSbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/PcCggAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs + LEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0tYNJtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADSbSuf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0r3wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJtK5/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSvfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9wKCDSbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSufAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA02wsf9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJt + LWDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbS1gAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAz3AoINJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0tYNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0r3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSbSy/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + K9/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADSbSy/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsQAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADSbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/02wsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9w + KCDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0tYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJtLL/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9wKCDSbSy/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0r39Ns + LEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADTbCx/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/89w + KCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA02wsf9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADSbS1g0m0rn9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9Jt + LL/SbSy/0m0sv9JtLL/SbSy/0m0rn9NsLH/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSufAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPcCgg0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLL8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADTbCx/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0tYNJtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/z3AoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs + LH/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Ns + LEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs + LEDSbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz3AoINJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCx/0m0r39JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0tYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA02wsf9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLL/TbCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0sv9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + K9/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPcCgg0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSy/0m0tYM9w + KCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAM9wKCDTbCxA0m0sv9JtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0tYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADTbCx/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSvf0m0sv9JtLL/SbSy/0m0sv9Jt + LL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9Jt + LL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9Jt + LL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9Jt + LL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtK9/SbSvf0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9wKCDSbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Ns + LH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJt + LWDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJtK5/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0r389w + KCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANJtLL/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtK9/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLH/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSy/z3AoIAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/02wsf89wKCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs + LEDSbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLWAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSbS1g0m0r39JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtK5/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA02wsf9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtK5/PcCggAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJt + LWDSbSuf0m0r39JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0sv9Ns + LH/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0tYNJtK5/SbSuf0m0sv9Jt + K9/SbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt + LP/SbSvf0m0sv9JtLL/TbCx/02wsQM9wKCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA////+AAAAAAAAAAA/////////8AAAAAAAAAAAD////////8AAAAAAAAA + AAA////////8AAAAAAAAAAAAH///////8AAAAAAAAAAAAB///////+AAAAAAAAAAAAAP///////AAAAA + AAAAAAAAD///////gAAAAAAAAAAAAA///////wAAAAAAAAAAAAAf//////4AAAAAAAAAAAAAH//////8 + AAAAAAAAAAAAAD//////+AAAAAAAAAAAAAA///////gAAAAAAAAAAAAA///////wAAB///////////// + ////8AAD/////////////////+AAB//////////////////gAB//////////////////4AA///////// + /////////8AAf//////////////////AAH/////////wf//4H///wAD/////////wB//8Af//8AA//// + /////4AP/+AH///AAP////////+AD//AA///wAH/////////AAf/wAP//4AB/////////wAH/8AB//+A + Af////////8AB/+AAf//gAH/////////AAf/gAH//4AB/////////wAH/4AB//+AAf////////8AB/+A + Af//gAH/////////gA//gAH//4AB/////////8AP/4AB//+AAf/////////gP/+AAf//gAH///////// + ////gAH//4AB/////////////4AB//+AAf////////////+AAf//gAH/////////////gAH//4AB//// + /////////4AB//+AAf////////////+AAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+A + AAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAA + Af//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAA + AAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAA + AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+A + AAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAA + Af//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAA + AAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAA + AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+A + AAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAA + Af//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAA + AAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAA + AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+A + AAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAA + Af//gAAAAAAAAAAAAAAAAAH//4AB/////////////4AB//+AAf////////////+AAf//gAH///////// + ////gAH//4AB/////////////4AB//+AAf////////////+AAf//gAH/////////////gAH//4AB//4A + AD///////4AB//+AAf/4AAAf//////+AAf//gAH/8AAAD///////gAH//4AB//AAAAf//////4AB//+A + Af/gAAAH//////+AAf//gAH/4AAAB///////gAH//4AB/+AAAAf//////4AB//+AAf/gAAAH//////+A + Af//gAH/4AAAB///////gAH//8AB//AAAAf//////4AB///AAP/wAAAP//////+AAf//wAD/+AAAH/// + ////AAH//8AAf/4AAD///////wAD///AAH////////////4AA///4AA////////////8AAP//+AAH/// + ////////+AAH///gAA////////////AAB///8AAD///////////AAAf///AAAH/////////+AAAP///4 + AAAAAAAAAAAAAAAAH///+AAAAAAAAAAAAAAAAB////wAAAAAAAAAAAAAAAA////+AAAAAAAAAAAAAAAA + f////wAAAAAAAAAAAAAAAH////+AAAAAAAAAAAAAAAD/////wAAAAAAAAAAAAAAB/////+AAAAAAAAAA + AAAAA//////wAAAAAAAAAAAAAA///////AAAAAAAAAAAAAAf//////8AAAAAAAAAAAAAf///////wAAA + AAAAAAAAAf////////gAAAAAAAAAAA////8= + + \ No newline at end of file diff --git a/LeatherProject/ServerApp/WebServer/WebService.cs b/LeatherProject/ServerApp/WebServer/WebService.cs index baf0b5a..e5802db 100644 --- a/LeatherProject/ServerApp/WebServer/WebService.cs +++ b/LeatherProject/ServerApp/WebServer/WebService.cs @@ -371,8 +371,9 @@ namespace ServerApp.WebServer .First(m => m.BatchId == batch && m.ReelId == reel); + if(data == null ) + throw new Exception($"批号:{batch},卷号:{reel},数据不存在!"); - err = 2; getReportEvent(data); @@ -384,7 +385,8 @@ namespace ServerApp.WebServer throw new Exception(file_path + " 缺陷文件不存在!"); res.Add("code", 200); - res.Add("data", Convert.ToBase64String(File.ReadAllBytes(file_path))); + //res.Add("data", Convert.ToBase64String(File.ReadAllBytes(file_path))); + res.Add("data", (File.ReadAllBytes(file_path))); } else throw new Exception($"文件错误:file_name={file_path}"); diff --git a/LeatherProject/ServerApp/bin/Debug/temp.xlsx b/LeatherProject/ServerApp/bin/Debug/temp.xlsx new file mode 100644 index 0000000..13358fb Binary files /dev/null and b/LeatherProject/ServerApp/bin/Debug/temp.xlsx differ diff --git a/LeatherProject/ServerApp/bin/远程服务程序.rar b/LeatherProject/ServerApp/bin/远程服务程序.rar new file mode 100644 index 0000000..de970dc Binary files /dev/null and b/LeatherProject/ServerApp/bin/远程服务程序.rar differ diff --git a/LeatherProject/ServerApp/obj/Debug/ServerApp.ServerFrm.resources b/LeatherProject/ServerApp/obj/Debug/ServerApp.ServerFrm.resources index 6c05a97..86f88fc 100644 Binary files a/LeatherProject/ServerApp/obj/Debug/ServerApp.ServerFrm.resources and b/LeatherProject/ServerApp/obj/Debug/ServerApp.ServerFrm.resources differ diff --git a/LeatherProject/ServerApp/服务器.ico b/LeatherProject/ServerApp/服务器.ico new file mode 100644 index 0000000..4f7cb07 Binary files /dev/null and b/LeatherProject/ServerApp/服务器.ico differ