diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b91110b --- /dev/null +++ b/.gitignore @@ -0,0 +1,187 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Roslyn cache directories +*.ide/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +#NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding addin-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +## TODO: Comment the next line if you want to checkin your +## web deploy settings but do note that will include unencrypted +## passwords +*.pubxml + +# NuGet Packages +packages/* +*.nupkg +## TODO: If the tool you use requires repositories.config +## uncomment the next line +#!packages/repositories.config + +# Enable "build/" folder in the NuGet Packages folder since +# NuGet packages use it for MSBuild targets. +# This line needs to be after the ignore of the build folder +# (and the packages folder if the line above has been uncommented) +!packages/build/ + +# Windows Azure Build Output +csx/ +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ \ No newline at end of file diff --git a/XiconfLabelPrinter.sln b/XiconfLabelPrinter.sln new file mode 100644 index 0000000..3959fbc --- /dev/null +++ b/XiconfLabelPrinter.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual C# Express 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XiconfLabelPrinter", "XiconfLabelPrinter\XiconfLabelPrinter.csproj", "{61785524-5B33-42EF-B242-38357667D9C0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {61785524-5B33-42EF-B242-38357667D9C0}.Debug|x86.ActiveCfg = Debug|x86 + {61785524-5B33-42EF-B242-38357667D9C0}.Debug|x86.Build.0 = Debug|x86 + {61785524-5B33-42EF-B242-38357667D9C0}.Release|x86.ActiveCfg = Release|x86 + {61785524-5B33-42EF-B242-38357667D9C0}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/XiconfLabelPrinter/APrintJob.cs b/XiconfLabelPrinter/APrintJob.cs new file mode 100644 index 0000000..6831892 --- /dev/null +++ b/XiconfLabelPrinter/APrintJob.cs @@ -0,0 +1,109 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using System; +using System.Linq; +using System.Text; +using Seagull.BarTender.Print; + +namespace MSYS.Xiconf.LabelPrinter +{ + abstract public class APrintJob : IPrintJob + { + abstract public string LabelFormatType { get; } + + abstract public string AdditionalInfo { get; } + + abstract protected void SetSubStrings(LabelFormat labelFormat); + + private static int JOB_COUNTER = 1; + + private int jobId = 0; + + public string PrinterName { get; set; } + + public int LabelQuantity { get; set; } + + public int SeriesNo { get; set; } + + public int SeriesGroup { get; set; } + + public string SeriesId + { + get + { + return SeriesNo == 0 ? "0" : Convert.ToChar(64 + SeriesGroup).ToString() + SeriesNo; + } + } + + public string PrintJobName + { + get + { + if (jobId == 0) + { + jobId = JOB_COUNTER++; + } + + return LabelFormatType + "-" + jobId; + } + } + + public void Print(LabelFormatDocument labelFormat) + { + SetPrintSetup(labelFormat); + SetSubStrings(labelFormat); + + Messages messages; + + var result = labelFormat.Print(PrintJobName, out messages); + + if (result == Result.Success) + { + return; + } + + if (result == Result.Timeout) + { + throw new PrintException("Upłynął czas oczekiwania na odpowiedź."); + } + + HandleFailure(messages); + } + + protected virtual void SetPrintSetup(LabelFormatDocument labelFormat) + { + labelFormat.PrintSetup.PrinterName = PrinterName; + labelFormat.PrintSetup.IdenticalCopiesOfLabel = LabelQuantity; + } + + private void HandleFailure(Messages messages) + { + var errorList = messages.Where(message => message.Severity == MessageSeverity.Error); + var errorCount = errorList.Count(); + + if (errorCount == 0) + { + throw new PrintException(); + } + + var errorMessage = new StringBuilder(); + var i = 0; + + foreach (var error in errorList) + { + if (++i == errorCount) + { + errorMessage.Append(error.Text); + } + else + { + errorMessage.AppendLine(error.Text); + } + } + + throw new PrintException(errorMessage.ToString()); + } + } +} diff --git a/XiconfLabelPrinter/AboutForm.Designer.cs b/XiconfLabelPrinter/AboutForm.Designer.cs new file mode 100644 index 0000000..a0ecbd6 --- /dev/null +++ b/XiconfLabelPrinter/AboutForm.Designer.cs @@ -0,0 +1,236 @@ +namespace MSYS.Xiconf.LabelPrinter +{ + partial class AboutForm + { + /// + /// 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() + { + System.Windows.Forms.Panel middlePanel; + System.Windows.Forms.Label licensedForLabel; + System.Windows.Forms.Label rightsLabel; + this.licenseeLabel = new System.Windows.Forms.Label(); + this.productLinkLabel = new System.Windows.Forms.LinkLabel(); + this.copyrightLabel = new System.Windows.Forms.Label(); + this.versionLabel = new System.Windows.Forms.Label(); + this.productLabel = new System.Windows.Forms.Label(); + this.topPanel = new System.Windows.Forms.Panel(); + this.productVersionLabel = new System.Windows.Forms.Label(); + this.logoPictureBox = new System.Windows.Forms.PictureBox(); + this.bottomPanel = new System.Windows.Forms.Panel(); + this.closeButton = new System.Windows.Forms.Button(); + middlePanel = new System.Windows.Forms.Panel(); + licensedForLabel = new System.Windows.Forms.Label(); + rightsLabel = new System.Windows.Forms.Label(); + middlePanel.SuspendLayout(); + this.topPanel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit(); + this.bottomPanel.SuspendLayout(); + this.SuspendLayout(); + // + // middlePanel + // + middlePanel.Controls.Add(this.licenseeLabel); + middlePanel.Controls.Add(licensedForLabel); + middlePanel.Controls.Add(this.productLinkLabel); + middlePanel.Controls.Add(rightsLabel); + middlePanel.Controls.Add(this.copyrightLabel); + middlePanel.Controls.Add(this.versionLabel); + middlePanel.Controls.Add(this.productLabel); + middlePanel.Dock = System.Windows.Forms.DockStyle.Fill; + middlePanel.Location = new System.Drawing.Point(0, 60); + middlePanel.Margin = new System.Windows.Forms.Padding(0); + middlePanel.Name = "middlePanel"; + middlePanel.Padding = new System.Windows.Forms.Padding(13); + middlePanel.Size = new System.Drawing.Size(444, 142); + middlePanel.TabIndex = 2; + // + // licenseeLabel + // + this.licenseeLabel.BackColor = System.Drawing.SystemColors.Control; + this.licenseeLabel.Location = new System.Drawing.Point(16, 118); + this.licenseeLabel.Margin = new System.Windows.Forms.Padding(0); + this.licenseeLabel.Name = "licenseeLabel"; + this.licenseeLabel.Size = new System.Drawing.Size(419, 13); + this.licenseeLabel.TabIndex = 6; + this.licenseeLabel.Text = "BRAK LICENCJI"; + this.licenseeLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // licensedForLabel + // + licensedForLabel.AutoSize = true; + licensedForLabel.Location = new System.Drawing.Point(307, 101); + licensedForLabel.Margin = new System.Windows.Forms.Padding(0); + licensedForLabel.Name = "licensedForLabel"; + licensedForLabel.Size = new System.Drawing.Size(128, 13); + licensedForLabel.TabIndex = 5; + licensedForLabel.Text = "Licencja przydzielona dla:"; + licensedForLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // productLinkLabel + // + this.productLinkLabel.AutoSize = true; + this.productLinkLabel.Location = new System.Drawing.Point(13, 84); + this.productLinkLabel.Name = "productLinkLabel"; + this.productLinkLabel.Size = new System.Drawing.Size(124, 13); + this.productLinkLabel.TabIndex = 4; + this.productLinkLabel.TabStop = true; + this.productLinkLabel.Text = "http://miraclesystems.pl/"; + this.productLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.productLinkLabel_LinkClicked); + // + // rightsLabel + // + rightsLabel.AutoSize = true; + rightsLabel.Location = new System.Drawing.Point(13, 67); + rightsLabel.Name = "rightsLabel"; + rightsLabel.Size = new System.Drawing.Size(134, 13); + rightsLabel.TabIndex = 3; + rightsLabel.Text = "Pewne prawa zastrzeżone."; + // + // copyrightLabel + // + this.copyrightLabel.AutoSize = true; + this.copyrightLabel.Location = new System.Drawing.Point(13, 49); + this.copyrightLabel.Name = "copyrightLabel"; + this.copyrightLabel.Size = new System.Drawing.Size(223, 13); + this.copyrightLabel.TabIndex = 2; + this.copyrightLabel.Text = "© 2014 Miracle Systems Łukasz Walukiewicz"; + // + // versionLabel + // + this.versionLabel.AutoSize = true; + this.versionLabel.Location = new System.Drawing.Point(13, 31); + this.versionLabel.Name = "versionLabel"; + this.versionLabel.Size = new System.Drawing.Size(79, 13); + this.versionLabel.TabIndex = 1; + this.versionLabel.Text = "Wersja: 0.0.0.0"; + // + // productLabel + // + this.productLabel.AutoSize = true; + this.productLabel.Location = new System.Drawing.Point(13, 13); + this.productLabel.Name = "productLabel"; + this.productLabel.Size = new System.Drawing.Size(99, 13); + this.productLabel.TabIndex = 0; + this.productLabel.Text = "Xiconf Label Printer"; + // + // topPanel + // + this.topPanel.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.topPanel.Controls.Add(this.productVersionLabel); + this.topPanel.Controls.Add(this.logoPictureBox); + this.topPanel.Dock = System.Windows.Forms.DockStyle.Top; + this.topPanel.Location = new System.Drawing.Point(0, 0); + this.topPanel.Margin = new System.Windows.Forms.Padding(0); + this.topPanel.Name = "topPanel"; + this.topPanel.Size = new System.Drawing.Size(444, 60); + this.topPanel.TabIndex = 0; + // + // productVersionLabel + // + this.productVersionLabel.Dock = System.Windows.Forms.DockStyle.Fill; + this.productVersionLabel.Font = new System.Drawing.Font("Verdana", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.productVersionLabel.Location = new System.Drawing.Point(80, 0); + this.productVersionLabel.Name = "productVersionLabel"; + this.productVersionLabel.Size = new System.Drawing.Size(364, 60); + this.productVersionLabel.TabIndex = 1; + this.productVersionLabel.Text = "Xiconf Label Printer v0.0.0.0"; + this.productVersionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // logoPictureBox + // + this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Left; + this.logoPictureBox.Image = global::MSYS.Xiconf.LabelPrinter.Properties.Resources.printerLogo; + this.logoPictureBox.Location = new System.Drawing.Point(0, 0); + this.logoPictureBox.Margin = new System.Windows.Forms.Padding(0); + this.logoPictureBox.Name = "logoPictureBox"; + this.logoPictureBox.Size = new System.Drawing.Size(80, 60); + this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.logoPictureBox.TabIndex = 0; + this.logoPictureBox.TabStop = false; + // + // bottomPanel + // + this.bottomPanel.BackColor = System.Drawing.SystemColors.ControlLight; + this.bottomPanel.Controls.Add(this.closeButton); + this.bottomPanel.Dock = System.Windows.Forms.DockStyle.Bottom; + this.bottomPanel.Location = new System.Drawing.Point(0, 202); + this.bottomPanel.Name = "bottomPanel"; + this.bottomPanel.Size = new System.Drawing.Size(444, 50); + this.bottomPanel.TabIndex = 1; + this.bottomPanel.Paint += new System.Windows.Forms.PaintEventHandler(this.bottomPanel_Paint); + // + // closeButton + // + this.closeButton.Location = new System.Drawing.Point(357, 15); + this.closeButton.Name = "closeButton"; + this.closeButton.Size = new System.Drawing.Size(75, 23); + this.closeButton.TabIndex = 0; + this.closeButton.Text = "OK"; + this.closeButton.UseVisualStyleBackColor = true; + this.closeButton.Click += new System.EventHandler(this.closeButton_Click); + // + // AboutForm + // + this.AcceptButton = this.closeButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(444, 252); + this.Controls.Add(middlePanel); + this.Controls.Add(this.bottomPanel); + this.Controls.Add(this.topPanel); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "AboutForm"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "O programie"; + middlePanel.ResumeLayout(false); + middlePanel.PerformLayout(); + this.topPanel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit(); + this.bottomPanel.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.PictureBox logoPictureBox; + private System.Windows.Forms.Label productVersionLabel; + private System.Windows.Forms.Button closeButton; + private System.Windows.Forms.Panel topPanel; + private System.Windows.Forms.Panel bottomPanel; + private System.Windows.Forms.Label productLabel; + private System.Windows.Forms.Label copyrightLabel; + private System.Windows.Forms.Label versionLabel; + private System.Windows.Forms.LinkLabel productLinkLabel; + private System.Windows.Forms.Label licenseeLabel; + + } +} \ No newline at end of file diff --git a/XiconfLabelPrinter/AboutForm.cs b/XiconfLabelPrinter/AboutForm.cs new file mode 100644 index 0000000..f250988 --- /dev/null +++ b/XiconfLabelPrinter/AboutForm.cs @@ -0,0 +1,51 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using System; +using System.Deployment.Application; +using System.Drawing; +using System.Windows.Forms; + +namespace MSYS.Xiconf.LabelPrinter +{ + public partial class AboutForm : Form + { + public AboutForm() + { + InitializeComponent(); + + var version = ApplicationDeployment.IsNetworkDeployed + ? ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString() + : Application.ProductVersion; + + productVersionLabel.Text = Application.ProductName + " v" + version; + productLabel.Text = Application.ProductName; + versionLabel.Text = "Wersja: " + version; + copyrightLabel.Text = "© " + DateTime.Today.Year + " " + Application.CompanyName; + licenseeLabel.Text = LicenseInfo.IsValid() ? LicenseInfo.Licensee : "BRAK LICENCJI"; + } + + private void closeButton_Click(object sender, EventArgs e) + { + Close(); + } + + private void bottomPanel_Paint(object sender, PaintEventArgs e) + { + ControlPaint.DrawBorder( + e.Graphics, + bottomPanel.ClientRectangle, + Color.Black, 0, ButtonBorderStyle.None, + Color.FromKnownColor(KnownColor.ControlDark), 1, ButtonBorderStyle.Solid, + Color.Black, 0, ButtonBorderStyle.None, + Color.Black, 0, ButtonBorderStyle.None + ); + } + + private void productLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + System.Diagnostics.Process.Start(productLinkLabel.Text); + } + } +} diff --git a/XiconfLabelPrinter/AboutForm.resx b/XiconfLabelPrinter/AboutForm.resx new file mode 100644 index 0000000..3408260 --- /dev/null +++ b/XiconfLabelPrinter/AboutForm.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + False + + + False + + + False + + \ No newline at end of file diff --git a/XiconfLabelPrinter/IPrintJob.cs b/XiconfLabelPrinter/IPrintJob.cs new file mode 100644 index 0000000..3fceed3 --- /dev/null +++ b/XiconfLabelPrinter/IPrintJob.cs @@ -0,0 +1,29 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using Seagull.BarTender.Print; + +namespace MSYS.Xiconf.LabelPrinter +{ + public interface IPrintJob + { + string LabelFormatType { get; } + + int LabelQuantity { get; } + + string AdditionalInfo { get; } + + string PrinterName { get; } + + string PrintJobName { get; } + + int SeriesNo { get; } + + int SeriesGroup { get; } + + string SeriesId { get; } + + void Print(LabelFormatDocument labelFormat); + } +} diff --git a/XiconfLabelPrinter/LicenseForm.Designer.cs b/XiconfLabelPrinter/LicenseForm.Designer.cs new file mode 100644 index 0000000..c09239c --- /dev/null +++ b/XiconfLabelPrinter/LicenseForm.Designer.cs @@ -0,0 +1,266 @@ +namespace MSYS.Xiconf.LabelPrinter +{ + partial class LicenseForm + { + /// + /// 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.bottomPanel = new System.Windows.Forms.Panel(); + this.closeButton = new System.Windows.Forms.Button(); + this.licenseServerLabel = new System.Windows.Forms.Label(); + this.openLicenseButton = new System.Windows.Forms.Button(); + this.productLabel = new System.Windows.Forms.Label(); + this.productValue = new System.Windows.Forms.Label(); + this.versionValue = new System.Windows.Forms.Label(); + this.versionLabel = new System.Windows.Forms.Label(); + this.dateValue = new System.Windows.Forms.Label(); + this.dateLabel = new System.Windows.Forms.Label(); + this.licenseeValue = new System.Windows.Forms.Label(); + this.licenseeLabel = new System.Windows.Forms.Label(); + this.idValue = new System.Windows.Forms.Label(); + this.idLabel = new System.Windows.Forms.Label(); + this.errorLabel = new System.Windows.Forms.Label(); + this.openLicenseDialog = new System.Windows.Forms.OpenFileDialog(); + this.licenseServerTextBox = new System.Windows.Forms.TextBox(); + this.bottomPanel.SuspendLayout(); + this.SuspendLayout(); + // + // bottomPanel + // + this.bottomPanel.BackColor = System.Drawing.SystemColors.ControlLight; + this.bottomPanel.Controls.Add(this.closeButton); + this.bottomPanel.Dock = System.Windows.Forms.DockStyle.Bottom; + this.bottomPanel.Location = new System.Drawing.Point(0, 252); + this.bottomPanel.Name = "bottomPanel"; + this.bottomPanel.Size = new System.Drawing.Size(444, 50); + this.bottomPanel.TabIndex = 0; + this.bottomPanel.Paint += new System.Windows.Forms.PaintEventHandler(this.bottomPanel_Paint); + // + // closeButton + // + this.closeButton.Location = new System.Drawing.Point(357, 15); + this.closeButton.Name = "closeButton"; + this.closeButton.Size = new System.Drawing.Size(75, 23); + this.closeButton.TabIndex = 102; + this.closeButton.Text = "OK"; + this.closeButton.UseVisualStyleBackColor = true; + this.closeButton.Click += new System.EventHandler(this.closeButton_Click); + // + // licenseServerLabel + // + this.licenseServerLabel.Location = new System.Drawing.Point(12, 171); + this.licenseServerLabel.Name = "licenseServerLabel"; + this.licenseServerLabel.Size = new System.Drawing.Size(100, 13); + this.licenseServerLabel.TabIndex = 0; + this.licenseServerLabel.Text = "Serwer licencji:"; + this.licenseServerLabel.Click += new System.EventHandler(this.licenseServerLabel_Click); + // + // openLicenseButton + // + this.openLicenseButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.openLicenseButton.Location = new System.Drawing.Point(116, 194); + this.openLicenseButton.Name = "openLicenseButton"; + this.openLicenseButton.Size = new System.Drawing.Size(316, 46); + this.openLicenseButton.TabIndex = 101; + this.openLicenseButton.Text = "Wybierz nowy klucz licencyjny"; + this.openLicenseButton.UseVisualStyleBackColor = true; + this.openLicenseButton.Click += new System.EventHandler(this.openLicenseButton_Click); + // + // productLabel + // + this.productLabel.Location = new System.Drawing.Point(12, 83); + this.productLabel.Name = "productLabel"; + this.productLabel.Size = new System.Drawing.Size(100, 13); + this.productLabel.TabIndex = 0; + this.productLabel.Text = "Aplikacja:"; + // + // productValue + // + this.productValue.AutoSize = true; + this.productValue.Location = new System.Drawing.Point(113, 83); + this.productValue.Name = "productValue"; + this.productValue.Size = new System.Drawing.Size(10, 13); + this.productValue.TabIndex = 0; + this.productValue.Text = "-"; + // + // versionValue + // + this.versionValue.AutoSize = true; + this.versionValue.Location = new System.Drawing.Point(113, 105); + this.versionValue.Name = "versionValue"; + this.versionValue.Size = new System.Drawing.Size(10, 13); + this.versionValue.TabIndex = 0; + this.versionValue.Text = "-"; + // + // versionLabel + // + this.versionLabel.Location = new System.Drawing.Point(12, 105); + this.versionLabel.Name = "versionLabel"; + this.versionLabel.Size = new System.Drawing.Size(100, 13); + this.versionLabel.TabIndex = 0; + this.versionLabel.Text = "Wersja:"; + // + // dateValue + // + this.dateValue.AutoSize = true; + this.dateValue.Location = new System.Drawing.Point(113, 127); + this.dateValue.Name = "dateValue"; + this.dateValue.Size = new System.Drawing.Size(10, 13); + this.dateValue.TabIndex = 0; + this.dateValue.Text = "-"; + // + // dateLabel + // + this.dateLabel.Location = new System.Drawing.Point(12, 127); + this.dateLabel.Name = "dateLabel"; + this.dateLabel.Size = new System.Drawing.Size(100, 13); + this.dateLabel.TabIndex = 0; + this.dateLabel.Text = "Data przydzielenia:"; + // + // licenseeValue + // + this.licenseeValue.AutoSize = true; + this.licenseeValue.Location = new System.Drawing.Point(113, 149); + this.licenseeValue.Name = "licenseeValue"; + this.licenseeValue.Size = new System.Drawing.Size(10, 13); + this.licenseeValue.TabIndex = 0; + this.licenseeValue.Text = "-"; + // + // licenseeLabel + // + this.licenseeLabel.Location = new System.Drawing.Point(12, 149); + this.licenseeLabel.Name = "licenseeLabel"; + this.licenseeLabel.Size = new System.Drawing.Size(100, 13); + this.licenseeLabel.TabIndex = 0; + this.licenseeLabel.Text = "Przydzielona dla:"; + // + // idValue + // + this.idValue.AutoSize = true; + this.idValue.Location = new System.Drawing.Point(113, 61); + this.idValue.Name = "idValue"; + this.idValue.Size = new System.Drawing.Size(10, 13); + this.idValue.TabIndex = 0; + this.idValue.Text = "-"; + // + // idLabel + // + this.idLabel.Location = new System.Drawing.Point(12, 61); + this.idLabel.Name = "idLabel"; + this.idLabel.Size = new System.Drawing.Size(100, 13); + this.idLabel.TabIndex = 0; + this.idLabel.Text = "Identyfikator:"; + // + // errorLabel + // + this.errorLabel.BackColor = System.Drawing.Color.LimeGreen; + this.errorLabel.Dock = System.Windows.Forms.DockStyle.Top; + this.errorLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.errorLabel.ForeColor = System.Drawing.Color.White; + this.errorLabel.Location = new System.Drawing.Point(0, 0); + this.errorLabel.Name = "errorLabel"; + this.errorLabel.Padding = new System.Windows.Forms.Padding(13, 0, 13, 0); + this.errorLabel.Size = new System.Drawing.Size(444, 50); + this.errorLabel.TabIndex = 0; + this.errorLabel.Text = "Brak klucza licencyjnego."; + this.errorLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // openLicenseDialog + // + this.openLicenseDialog.DefaultExt = "txt"; + this.openLicenseDialog.FileName = "msys_xiconf-lp_license_01.txt"; + this.openLicenseDialog.Filter = "Pliki tekstowe |*.txt"; + this.openLicenseDialog.Title = "Wybór nowego klucza licencyjnego"; + this.openLicenseDialog.FileOk += new System.ComponentModel.CancelEventHandler(this.openLicenseDialog_FileOk); + // + // licenseServerTextBox + // + this.licenseServerTextBox.Location = new System.Drawing.Point(116, 168); + this.licenseServerTextBox.Name = "licenseServerTextBox"; + this.licenseServerTextBox.Size = new System.Drawing.Size(316, 20); + this.licenseServerTextBox.TabIndex = 100; + this.licenseServerTextBox.Text = global::MSYS.Xiconf.LabelPrinter.Properties.Settings.Default.LicenseServer; + this.licenseServerTextBox.TextChanged += new System.EventHandler(this.licenseServerTextBox_TextChanged); + // + // LicenseForm + // + this.AcceptButton = this.closeButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(444, 302); + this.Controls.Add(this.bottomPanel); + this.Controls.Add(this.errorLabel); + this.Controls.Add(this.idLabel); + this.Controls.Add(this.idValue); + this.Controls.Add(this.productLabel); + this.Controls.Add(this.productValue); + this.Controls.Add(this.versionLabel); + this.Controls.Add(this.versionValue); + this.Controls.Add(this.dateLabel); + this.Controls.Add(this.dateValue); + this.Controls.Add(this.licenseeLabel); + this.Controls.Add(this.licenseeValue); + this.Controls.Add(this.licenseServerLabel); + this.Controls.Add(this.licenseServerTextBox); + this.Controls.Add(this.openLicenseButton); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "LicenseForm"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Licencja"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.LicenseForm_FormClosing); + this.Shown += new System.EventHandler(this.LicenseForm_Shown); + this.bottomPanel.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Panel bottomPanel; + private System.Windows.Forms.Button closeButton; + private System.Windows.Forms.Button openLicenseButton; + private System.Windows.Forms.Label licenseServerLabel; + private System.Windows.Forms.TextBox licenseServerTextBox; + private System.Windows.Forms.Label productLabel; + private System.Windows.Forms.Label productValue; + private System.Windows.Forms.Label versionValue; + private System.Windows.Forms.Label versionLabel; + private System.Windows.Forms.Label dateValue; + private System.Windows.Forms.Label dateLabel; + private System.Windows.Forms.Label licenseeValue; + private System.Windows.Forms.Label licenseeLabel; + private System.Windows.Forms.Label idValue; + private System.Windows.Forms.Label idLabel; + private System.Windows.Forms.Label errorLabel; + private System.Windows.Forms.OpenFileDialog openLicenseDialog; + } +} \ No newline at end of file diff --git a/XiconfLabelPrinter/LicenseForm.cs b/XiconfLabelPrinter/LicenseForm.cs new file mode 100644 index 0000000..8be80bd --- /dev/null +++ b/XiconfLabelPrinter/LicenseForm.cs @@ -0,0 +1,174 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using System; +using System.ComponentModel; +using System.Drawing; +using System.Windows.Forms; + +namespace MSYS.Xiconf.LabelPrinter +{ + public partial class LicenseForm : Form + { + public LicenseForm() + { + InitializeComponent(); + ReloadLicenseInfo(); + } + + private void LicenseForm_Shown(object sender, EventArgs e) + { + if (openLicenseButton.Enabled) + { + openLicenseButton.Focus(); + } + else + { + licenseServerTextBox.Focus(); + } + } + + private void LicenseForm_FormClosing(object sender, FormClosingEventArgs e) + { + if (!LicenseInfo.IsValid()) + { + Properties.Settings.Default.LicenseKey = ""; + } + } + + private void closeButton_Click(object sender, EventArgs e) + { + Close(); + } + + private void licenseServerLabel_Click(object sender, EventArgs e) + { + licenseServerTextBox.Focus(); + } + + private void openLicenseButton_Click(object sender, EventArgs e) + { + openLicenseDialog.ShowDialog(this); + } + + private void bottomPanel_Paint(object sender, PaintEventArgs e) + { + ControlPaint.DrawBorder( + e.Graphics, + bottomPanel.ClientRectangle, + Color.Black, 0, ButtonBorderStyle.None, + Color.FromKnownColor(KnownColor.ControlDark), 1, ButtonBorderStyle.Solid, + Color.Black, 0, ButtonBorderStyle.None, + Color.Black, 0, ButtonBorderStyle.None + ); + } + + private void openLicenseDialog_FileOk(object sender, CancelEventArgs e) + { + var timer = new Timer() { Interval = 1 }; + + timer.Tick += (sender_, e_) => + { + timer.Stop(); + + try + { + LicenseInfo.ReadFromFile(openLicenseDialog.FileName); + + if (LicenseInfo.IsValid()) + { + ReloadLicenseInfo(); + ValidateRemotely(); + } + } + catch (Exception x) + { + MessageBox.Show(this, x.Message, "Błąd wczytywania klucza licencyjnego", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + finally + { + ReloadLicenseInfo(); + } + }; + + timer.Start(); + } + + private void licenseServerTextBox_TextChanged(object sender, EventArgs e) + { + Uri uri = null; + + try + { + uri = new Uri(licenseServerTextBox.Text, UriKind.Absolute); + + if (uri.Scheme != "http") + { + throw new Exception(); + } + + Properties.Settings.Default.LicenseServer = "http://" + uri.Authority; + } + catch (Exception) + { + Properties.Settings.Default.LicenseServer = ""; + } + + LicenseInfo.Reset(); + ReloadLicenseInfo(); + } + + private void ShowErrorMessage(bool state, string message) + { + errorLabel.BackColor = state ? Color.LimeGreen : Color.Red; + errorLabel.Text = message; + } + + private void ReloadLicenseInfo() + { + openLicenseButton.Enabled = LicenseInfo.Error != "NO_SERVER"; + + idValue.Text = LicenseInfo.Id; + productValue.Text = LicenseInfo.Product; + versionValue.Text = LicenseInfo.Version; + dateValue.Text = LicenseInfo.Date; + licenseeValue.Text = LicenseInfo.Licensee; + + if (LicenseInfo.IsValid()) + { + ShowErrorMessage(true, "OK!"); + } + else + { + ShowErrorMessage(false, LicenseInfo.ErrorMessage); + } + } + + private void ValidateRemotely() + { + errorLabel.BackColor = Color.Orange; + errorLabel.Text = "Trwa walidacja licencji..."; + + Enabled = false; + + try + { + LicenseInfo.ValidateRemotely(); + } + catch (Exception x) + { + if (LicenseInfo.IsValid()) + { + LicenseInfo.Error = "VALIDATION"; + } + + throw x; + } + finally + { + Enabled = true; + } + } + } +} diff --git a/XiconfLabelPrinter/LicenseForm.resx b/XiconfLabelPrinter/LicenseForm.resx new file mode 100644 index 0000000..feccbca --- /dev/null +++ b/XiconfLabelPrinter/LicenseForm.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + \ No newline at end of file diff --git a/XiconfLabelPrinter/LicenseInfo.cs b/XiconfLabelPrinter/LicenseInfo.cs new file mode 100644 index 0000000..0754614 --- /dev/null +++ b/XiconfLabelPrinter/LicenseInfo.cs @@ -0,0 +1,199 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using System; +using System.IO; +using System.Net; +using System.Text; +using System.Text.RegularExpressions; +using Org.BouncyCastle.Crypto; +using Org.BouncyCastle.Crypto.Encodings; +using Org.BouncyCastle.Crypto.Engines; +using Org.BouncyCastle.OpenSsl; + +namespace MSYS.Xiconf.LabelPrinter +{ + public static class LicenseInfo + { + public static string Id = "-"; + + public static string Product = "-"; + + public static string Version = "-"; + + public static string Date = "-"; + + public static string Licensee = "-"; + + public static string Error = "NO_KEY"; + + public static string ErrorMessage + { + get + { + switch (Error) + { + case "": + return "-"; + + case "NO_SERVER": + return "Brak adresu do serwera zewnętrznego."; + + case "NO_KEY": + return "Brak klucza licencyjnego."; + + case "APP_ID": + return "Ustawiony klucz licencji nie został przydzielony do uruchomionej aplikacji."; + + case "APP_VERSION": + return "Ustawiony klucz licencji nie obejmuje aktualnie uruchomionej wersji aplikacji."; + + case "VALIDATION": + return "Walidacji klucza licencyjnego nie powiodła się."; + + case "UNKNOWN_LICENSE": + return "Zewnętrzny serwer licencji nie rozpoznał wybranego klucza licencyjnego."; + + case "DUPLICATE_LICENSE": + return "Zewnętrzny serwer licencji wykrył w użyciu zduplikowane klucze licencyjne."; + + default: + return Error; + } + } + } + + public static bool IsValid() + { + return Error.Length == 0; + } + + public static void Validate() + { + if (Properties.Settings.Default.LicenseServer == "") + { + Error = "NO_SERVER"; + } + else if (Id == "-" || Product == "-" || Version == "-" || Date == "-" || Licensee == "-") + { + Error = "NO_KEY"; + } + else if (Product != "XiconfLabelPrinter") + { + Error = "APP_ID"; + } + else + { + Error = ""; + } + } + + public static void ValidateRemotely() + { + var requestData = Encoding.UTF8.GetBytes(@"{""uuid"":""" + EncryptId() + @""",""id"":""" + Environment.MachineName + @"""}"); + var req = (HttpWebRequest)WebRequest.Create(Properties.Settings.Default.LicenseServer + "/licenses/" + Id + ";ping"); + + req.Timeout = 5000; + req.KeepAlive = false; + req.Method = "POST"; + req.Accept = "text/plain"; + req.ContentType = "application/json"; + req.ContentLength = requestData.Length; + req.UserAgent = LicenseInfo.Product; + + using (var reqStream = req.GetRequestStream()) + { + reqStream.Write(requestData, 0, requestData.Length); + reqStream.Close(); + } + + try + { + req.GetResponse(); + } + catch (WebException x) + { + using (var resStream = x.Response.GetResponseStream()) + { + Error = new StreamReader(resStream, Encoding.UTF8).ReadToEnd().Split('\n')[0]; + + resStream.Close(); + } + } + } + + public static void ReadFromSettings() + { + try + { + ReadFromRawKey(Properties.Settings.Default.LicenseKey); + } + catch (Exception) + { + Reset(); + } + } + + public static void ReadFromFile(string licenseKeyPath) + { + ReadFromRawKey(File.ReadAllText(licenseKeyPath, Encoding.UTF8)); + } + + public static void Reset() + { + Properties.Settings.Default.LicenseKey = ""; + + Id = "-"; + Product = "-"; + Version = "-"; + Date = "-"; + Licensee = "-"; + + Validate(); + } + + private static void ReadFromRawKey(string rawKey) + { + Reset(); + + var encryptedKey = Convert.FromBase64String(Regex.Replace(rawKey, "-+.*?-+", "").Replace("\r", "").Replace("\n", "")); + var cipher = new Pkcs1Encoding(new RsaEngine()); + + cipher.Init(false, CreateCipherParameters()); + + var decryptedKey = cipher.ProcessBlock(encryptedKey, 0, encryptedKey.Length); + var licenseInfo = Encoding.UTF8.GetString(decryptedKey).Split('\n'); + + Product = licenseInfo[0]; + Version = licenseInfo[1]; + Date = string.Format("20{0}-{1}-{2}", licenseInfo[2].Substring(0, 2), licenseInfo[2].Substring(2, 2), licenseInfo[2].Substring(4, 2)); + Id = licenseInfo[3]; + Licensee = licenseInfo[4]; + + Validate(); + + Properties.Settings.Default.LicenseKey = IsValid() ? rawKey : ""; + } + + private static string EncryptId() + { + var cipher = new OaepEncoding(new RsaEngine()); + + cipher.Init(true, CreateCipherParameters()); + + var decryptedId = Encoding.UTF8.GetBytes(Id); + var encryptedId = cipher.ProcessBlock(decryptedId, 0, decryptedId.Length); + + return Convert.ToBase64String(encryptedId); + } + + private static ICipherParameters CreateCipherParameters() + { + var pamReader = new PemReader(new StringReader(Encoding.UTF8.GetString(Properties.Resources.licenseEdPublicPem))); + var cipherParameters = (AsymmetricKeyParameter)pamReader.ReadObject(); + + return cipherParameters; + } + } +} diff --git a/XiconfLabelPrinter/MainForm.Designer.cs b/XiconfLabelPrinter/MainForm.Designer.cs new file mode 100644 index 0000000..60d0c25 --- /dev/null +++ b/XiconfLabelPrinter/MainForm.Designer.cs @@ -0,0 +1,937 @@ +namespace MSYS.Xiconf.LabelPrinter +{ + partial class MainForm + { + /// + /// 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() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + this.orderXlsxLabel = new System.Windows.Forms.Label(); + this.workCenterXlsxLabel = new System.Windows.Forms.Label(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.menuStrip = new System.Windows.Forms.MenuStrip(); + this.fileMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.exitMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.helpMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.licenseMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.aboutMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.configGroupBox = new System.Windows.Forms.GroupBox(); + this.editWorkCenterXlsxButton = new System.Windows.Forms.Button(); + this.reloadWorkCenterXlsxButton = new System.Windows.Forms.Button(); + this.editOrderXlsxButton = new System.Windows.Forms.Button(); + this.reloadOrderXlsxButton = new System.Windows.Forms.Button(); + this.serviceTagPrinterComboBox = new System.Windows.Forms.ComboBox(); + this.programPrinterComboBox = new System.Windows.Forms.ComboBox(); + this.orderPrinterComboBox = new System.Windows.Forms.ComboBox(); + this.workCenterXlsxLinkLabel = new System.Windows.Forms.LinkLabel(); + this.orderXlsxLinkLabel = new System.Windows.Forms.LinkLabel(); + this.serviceTagFormatLinkLabel = new System.Windows.Forms.LinkLabel(); + this.serviceTagFormatCheckBox = new System.Windows.Forms.CheckBox(); + this.programFormatLinkLabel = new System.Windows.Forms.LinkLabel(); + this.programFormatCheckBox = new System.Windows.Forms.CheckBox(); + this.orderFormatLinkLabel = new System.Windows.Forms.LinkLabel(); + this.orderFormatCheckBox = new System.Windows.Forms.CheckBox(); + this.printButton = new System.Windows.Forms.Button(); + this.orderNoTextBox = new System.Windows.Forms.TextBox(); + this.licenseErrorLabel = new System.Windows.Forms.Label(); + this.openFormatFileDialog = new System.Windows.Forms.OpenFileDialog(); + this.openXlsxFileDialog = new System.Windows.Forms.OpenFileDialog(); + this.printTabControl = new System.Windows.Forms.TabControl(); + this.printTabPage = new System.Windows.Forms.TabPage(); + this.reprintOrderTabPage = new System.Windows.Forms.TabPage(); + this.reprintOrderQuantityValue = new System.Windows.Forms.NumericUpDown(); + this.reprintOrderQuantityLabel = new System.Windows.Forms.Label(); + this.reprintOrderButton = new System.Windows.Forms.Button(); + this.reprintOrderNoLabel = new System.Windows.Forms.Label(); + this.reprintOrderNoValue = new System.Windows.Forms.MaskedTextBox(); + this.reprintOrderCountValue = new System.Windows.Forms.NumericUpDown(); + this.reprintOrderCountLabel = new System.Windows.Forms.Label(); + this.reprintProgramTabPage = new System.Windows.Forms.TabPage(); + this.reprintProgramNoLabel = new System.Windows.Forms.Label(); + this.reprintProgramNoValue = new System.Windows.Forms.MaskedTextBox(); + this.reprintProgramNameValue = new System.Windows.Forms.TextBox(); + this.reprintProgramNameLabel = new System.Windows.Forms.Label(); + this.reprintProgramButton = new System.Windows.Forms.Button(); + this.reprintProgramNc12Label = new System.Windows.Forms.Label(); + this.reprintProgramNc12Value = new System.Windows.Forms.MaskedTextBox(); + this.reprintProgramCountValue = new System.Windows.Forms.NumericUpDown(); + this.reprintProgramCountLabel = new System.Windows.Forms.Label(); + this.reprintServiceTagTabPage = new System.Windows.Forms.TabPage(); + this.reprintServiceTagStartNoValue = new System.Windows.Forms.NumericUpDown(); + this.reprintServiceTagStartNoLabel = new System.Windows.Forms.Label(); + this.reprintServiceTagButton = new System.Windows.Forms.Button(); + this.reprintServiceTagNoLabel = new System.Windows.Forms.Label(); + this.reprintServiceTagNoValue = new System.Windows.Forms.MaskedTextBox(); + this.reprintServiceTagCountValue = new System.Windows.Forms.NumericUpDown(); + this.reprintServiceTagCountLabel = new System.Windows.Forms.Label(); + this.menuStrip.SuspendLayout(); + this.configGroupBox.SuspendLayout(); + this.printTabControl.SuspendLayout(); + this.printTabPage.SuspendLayout(); + this.reprintOrderTabPage.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.reprintOrderQuantityValue)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.reprintOrderCountValue)).BeginInit(); + this.reprintProgramTabPage.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.reprintProgramCountValue)).BeginInit(); + this.reprintServiceTagTabPage.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.reprintServiceTagStartNoValue)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.reprintServiceTagCountValue)).BeginInit(); + this.SuspendLayout(); + // + // orderXlsxLabel + // + this.orderXlsxLabel.Location = new System.Drawing.Point(24, 101); + this.orderXlsxLabel.Margin = new System.Windows.Forms.Padding(3); + this.orderXlsxLabel.Name = "orderXlsxLabel"; + this.orderXlsxLabel.Size = new System.Drawing.Size(144, 20); + this.orderXlsxLabel.TabIndex = 0; + this.orderXlsxLabel.Text = "Arkusz zleceń:"; + this.orderXlsxLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // workCenterXlsxLabel + // + this.workCenterXlsxLabel.Location = new System.Drawing.Point(24, 127); + this.workCenterXlsxLabel.Margin = new System.Windows.Forms.Padding(3); + this.workCenterXlsxLabel.Name = "workCenterXlsxLabel"; + this.workCenterXlsxLabel.Size = new System.Drawing.Size(144, 20); + this.workCenterXlsxLabel.TabIndex = 0; + this.workCenterXlsxLabel.Text = "Arkusz WorkCenter:"; + this.workCenterXlsxLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(149, 6); + // + // menuStrip + // + this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fileMenuItem, + this.helpMenuItem}); + this.menuStrip.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow; + this.menuStrip.Location = new System.Drawing.Point(0, 0); + this.menuStrip.Name = "menuStrip"; + this.menuStrip.Size = new System.Drawing.Size(644, 25); + this.menuStrip.TabIndex = 0; + this.menuStrip.Text = "Menu"; + // + // fileMenuItem + // + this.fileMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.exitMenuItem}); + this.fileMenuItem.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.fileMenuItem.Name = "fileMenuItem"; + this.fileMenuItem.Size = new System.Drawing.Size(39, 21); + this.fileMenuItem.Text = "Plik"; + // + // exitMenuItem + // + this.exitMenuItem.Name = "exitMenuItem"; + this.exitMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4))); + this.exitMenuItem.Size = new System.Drawing.Size(217, 22); + this.exitMenuItem.Text = "Wyłącz program"; + this.exitMenuItem.Click += new System.EventHandler(this.exitMenuItem_Click); + // + // helpMenuItem + // + this.helpMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.licenseMenuItem, + this.toolStripSeparator1, + this.aboutMenuItem}); + this.helpMenuItem.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.helpMenuItem.Name = "helpMenuItem"; + this.helpMenuItem.Size = new System.Drawing.Size(60, 21); + this.helpMenuItem.Text = "Pomoc"; + // + // licenseMenuItem + // + this.licenseMenuItem.Name = "licenseMenuItem"; + this.licenseMenuItem.Size = new System.Drawing.Size(152, 22); + this.licenseMenuItem.Text = "Licencja"; + this.licenseMenuItem.Click += new System.EventHandler(this.licenseMenuItem_Click); + // + // aboutMenuItem + // + this.aboutMenuItem.Name = "aboutMenuItem"; + this.aboutMenuItem.Size = new System.Drawing.Size(152, 22); + this.aboutMenuItem.Text = "O programie"; + this.aboutMenuItem.Click += new System.EventHandler(this.aboutMenuItem_Click); + // + // configGroupBox + // + this.configGroupBox.Controls.Add(this.editWorkCenterXlsxButton); + this.configGroupBox.Controls.Add(this.reloadWorkCenterXlsxButton); + this.configGroupBox.Controls.Add(this.editOrderXlsxButton); + this.configGroupBox.Controls.Add(this.reloadOrderXlsxButton); + this.configGroupBox.Controls.Add(this.serviceTagPrinterComboBox); + this.configGroupBox.Controls.Add(this.programPrinterComboBox); + this.configGroupBox.Controls.Add(this.orderPrinterComboBox); + this.configGroupBox.Controls.Add(this.workCenterXlsxLinkLabel); + this.configGroupBox.Controls.Add(this.orderXlsxLinkLabel); + this.configGroupBox.Controls.Add(this.workCenterXlsxLabel); + this.configGroupBox.Controls.Add(this.orderXlsxLabel); + this.configGroupBox.Controls.Add(this.serviceTagFormatLinkLabel); + this.configGroupBox.Controls.Add(this.serviceTagFormatCheckBox); + this.configGroupBox.Controls.Add(this.programFormatLinkLabel); + this.configGroupBox.Controls.Add(this.programFormatCheckBox); + this.configGroupBox.Controls.Add(this.orderFormatLinkLabel); + this.configGroupBox.Controls.Add(this.orderFormatCheckBox); + this.configGroupBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.configGroupBox.Location = new System.Drawing.Point(9, 34); + this.configGroupBox.Margin = new System.Windows.Forms.Padding(10); + this.configGroupBox.Name = "configGroupBox"; + this.configGroupBox.Padding = new System.Windows.Forms.Padding(5); + this.configGroupBox.Size = new System.Drawing.Size(626, 157); + this.configGroupBox.TabIndex = 0; + this.configGroupBox.TabStop = false; + this.configGroupBox.Text = "Konfiguracja"; + // + // editWorkCenterXlsxButton + // + this.editWorkCenterXlsxButton.Enabled = false; + this.editWorkCenterXlsxButton.Location = new System.Drawing.Point(489, 125); + this.editWorkCenterXlsxButton.Name = "editWorkCenterXlsxButton"; + this.editWorkCenterXlsxButton.Size = new System.Drawing.Size(130, 23); + this.editWorkCenterXlsxButton.TabIndex = 15; + this.editWorkCenterXlsxButton.Text = "Edytuj"; + this.editWorkCenterXlsxButton.UseVisualStyleBackColor = true; + this.editWorkCenterXlsxButton.Click += new System.EventHandler(this.editWorkCenterXlsxButton_Click); + // + // reloadWorkCenterXlsxButton + // + this.reloadWorkCenterXlsxButton.Enabled = false; + this.reloadWorkCenterXlsxButton.Location = new System.Drawing.Point(358, 125); + this.reloadWorkCenterXlsxButton.Name = "reloadWorkCenterXlsxButton"; + this.reloadWorkCenterXlsxButton.Size = new System.Drawing.Size(130, 23); + this.reloadWorkCenterXlsxButton.TabIndex = 14; + this.reloadWorkCenterXlsxButton.Text = "Przeładuj"; + this.reloadWorkCenterXlsxButton.UseVisualStyleBackColor = true; + this.reloadWorkCenterXlsxButton.Click += new System.EventHandler(this.reloadWorkCenterXlsxButton_Click); + // + // editOrderXlsxButton + // + this.editOrderXlsxButton.Enabled = false; + this.editOrderXlsxButton.Location = new System.Drawing.Point(489, 101); + this.editOrderXlsxButton.Name = "editOrderXlsxButton"; + this.editOrderXlsxButton.Size = new System.Drawing.Size(130, 23); + this.editOrderXlsxButton.TabIndex = 13; + this.editOrderXlsxButton.Text = "Edytuj"; + this.editOrderXlsxButton.UseVisualStyleBackColor = true; + this.editOrderXlsxButton.Click += new System.EventHandler(this.editOrderXlsxButton_Click); + // + // reloadOrderXlsxButton + // + this.reloadOrderXlsxButton.Enabled = false; + this.reloadOrderXlsxButton.Location = new System.Drawing.Point(358, 101); + this.reloadOrderXlsxButton.Name = "reloadOrderXlsxButton"; + this.reloadOrderXlsxButton.Size = new System.Drawing.Size(130, 23); + this.reloadOrderXlsxButton.TabIndex = 12; + this.reloadOrderXlsxButton.Text = "Przeładuj"; + this.reloadOrderXlsxButton.UseVisualStyleBackColor = true; + this.reloadOrderXlsxButton.Click += new System.EventHandler(this.reloadOrderXlsxButton_Click); + // + // serviceTagPrinterComboBox + // + this.serviceTagPrinterComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.serviceTagPrinterComboBox.FormattingEnabled = true; + this.serviceTagPrinterComboBox.Location = new System.Drawing.Point(359, 75); + this.serviceTagPrinterComboBox.Name = "serviceTagPrinterComboBox"; + this.serviceTagPrinterComboBox.Size = new System.Drawing.Size(259, 24); + this.serviceTagPrinterComboBox.TabIndex = 9; + this.serviceTagPrinterComboBox.SelectedIndexChanged += new System.EventHandler(this.serviceTagPrinterComboBox_SelectedIndexChanged); + // + // programPrinterComboBox + // + this.programPrinterComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.programPrinterComboBox.FormattingEnabled = true; + this.programPrinterComboBox.Location = new System.Drawing.Point(359, 48); + this.programPrinterComboBox.Name = "programPrinterComboBox"; + this.programPrinterComboBox.Size = new System.Drawing.Size(259, 24); + this.programPrinterComboBox.TabIndex = 6; + this.programPrinterComboBox.SelectedIndexChanged += new System.EventHandler(this.programPrinterComboBox_SelectedIndexChanged); + // + // orderPrinterComboBox + // + this.orderPrinterComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.orderPrinterComboBox.FormattingEnabled = true; + this.orderPrinterComboBox.Location = new System.Drawing.Point(359, 22); + this.orderPrinterComboBox.Name = "orderPrinterComboBox"; + this.orderPrinterComboBox.Size = new System.Drawing.Size(259, 24); + this.orderPrinterComboBox.TabIndex = 3; + this.orderPrinterComboBox.SelectedIndexChanged += new System.EventHandler(this.orderPrinterComboBox_SelectedIndexChanged); + // + // workCenterXlsxLinkLabel + // + this.workCenterXlsxLinkLabel.AutoEllipsis = true; + this.workCenterXlsxLinkLabel.Enabled = false; + this.workCenterXlsxLinkLabel.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline; + this.workCenterXlsxLinkLabel.Location = new System.Drawing.Point(204, 129); + this.workCenterXlsxLinkLabel.Name = "workCenterXlsxLinkLabel"; + this.workCenterXlsxLinkLabel.Size = new System.Drawing.Size(149, 16); + this.workCenterXlsxLinkLabel.TabIndex = 11; + this.workCenterXlsxLinkLabel.TabStop = true; + this.workCenterXlsxLinkLabel.Text = "ładowanie..."; + this.workCenterXlsxLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.workCenterXlsxLinkLabel_LinkClicked); + this.workCenterXlsxLinkLabel.MouseClick += new System.Windows.Forms.MouseEventHandler(this.workCenterXlsxLinkLabel_MouseClick); + // + // orderXlsxLinkLabel + // + this.orderXlsxLinkLabel.AutoEllipsis = true; + this.orderXlsxLinkLabel.Enabled = false; + this.orderXlsxLinkLabel.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline; + this.orderXlsxLinkLabel.Location = new System.Drawing.Point(204, 103); + this.orderXlsxLinkLabel.Name = "orderXlsxLinkLabel"; + this.orderXlsxLinkLabel.Size = new System.Drawing.Size(149, 16); + this.orderXlsxLinkLabel.TabIndex = 10; + this.orderXlsxLinkLabel.TabStop = true; + this.orderXlsxLinkLabel.Text = "ładowanie..."; + this.orderXlsxLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.orderXlsxLinkLabel_LinkClicked); + this.orderXlsxLinkLabel.MouseClick += new System.Windows.Forms.MouseEventHandler(this.orderXlsxLinkLabel_MouseClick); + // + // serviceTagFormatLinkLabel + // + this.serviceTagFormatLinkLabel.AutoEllipsis = true; + this.serviceTagFormatLinkLabel.Enabled = false; + this.serviceTagFormatLinkLabel.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline; + this.serviceTagFormatLinkLabel.Location = new System.Drawing.Point(204, 77); + this.serviceTagFormatLinkLabel.Name = "serviceTagFormatLinkLabel"; + this.serviceTagFormatLinkLabel.Size = new System.Drawing.Size(149, 16); + this.serviceTagFormatLinkLabel.TabIndex = 8; + this.serviceTagFormatLinkLabel.TabStop = true; + this.serviceTagFormatLinkLabel.Text = "ładowanie..."; + this.serviceTagFormatLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.serviceTagFormatLinkLabel_LinkClicked); + this.serviceTagFormatLinkLabel.MouseClick += new System.Windows.Forms.MouseEventHandler(this.serviceTagFormatLinkLabel_MouseClick); + // + // serviceTagFormatCheckBox + // + this.serviceTagFormatCheckBox.AllowDrop = true; + this.serviceTagFormatCheckBox.Checked = global::MSYS.Xiconf.LabelPrinter.Properties.Settings.Default.PrintServiceTag; + this.serviceTagFormatCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::MSYS.Xiconf.LabelPrinter.Properties.Settings.Default, "PrintServiceTag", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.serviceTagFormatCheckBox.Location = new System.Drawing.Point(8, 76); + this.serviceTagFormatCheckBox.Name = "serviceTagFormatCheckBox"; + this.serviceTagFormatCheckBox.Size = new System.Drawing.Size(211, 20); + this.serviceTagFormatCheckBox.TabIndex = 7; + this.serviceTagFormatCheckBox.Text = "Etykieta Service Tag Driver:"; + this.serviceTagFormatCheckBox.UseVisualStyleBackColor = true; + this.serviceTagFormatCheckBox.DragDrop += new System.Windows.Forms.DragEventHandler(this.formatCheckBox_DragDrop); + this.serviceTagFormatCheckBox.DragEnter += new System.Windows.Forms.DragEventHandler(this.formatCheckBox_DragEnter); + this.serviceTagFormatCheckBox.MouseDown += new System.Windows.Forms.MouseEventHandler(this.formatCheckBox_MouseDown); + // + // programFormatLinkLabel + // + this.programFormatLinkLabel.AutoEllipsis = true; + this.programFormatLinkLabel.Enabled = false; + this.programFormatLinkLabel.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline; + this.programFormatLinkLabel.Location = new System.Drawing.Point(204, 51); + this.programFormatLinkLabel.Name = "programFormatLinkLabel"; + this.programFormatLinkLabel.Size = new System.Drawing.Size(149, 16); + this.programFormatLinkLabel.TabIndex = 5; + this.programFormatLinkLabel.TabStop = true; + this.programFormatLinkLabel.Text = "ładowanie..."; + this.programFormatLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.programFormatLinkLabel_LinkClicked); + this.programFormatLinkLabel.MouseClick += new System.Windows.Forms.MouseEventHandler(this.programFormatLinkLabel_MouseClick); + // + // programFormatCheckBox + // + this.programFormatCheckBox.AllowDrop = true; + this.programFormatCheckBox.Checked = global::MSYS.Xiconf.LabelPrinter.Properties.Settings.Default.PrintProgram; + this.programFormatCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::MSYS.Xiconf.LabelPrinter.Properties.Settings.Default, "PrintProgram", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.programFormatCheckBox.Location = new System.Drawing.Point(8, 50); + this.programFormatCheckBox.Name = "programFormatCheckBox"; + this.programFormatCheckBox.Size = new System.Drawing.Size(211, 20); + this.programFormatCheckBox.TabIndex = 4; + this.programFormatCheckBox.Text = "Etykieta programowa:"; + this.programFormatCheckBox.UseVisualStyleBackColor = true; + this.programFormatCheckBox.DragDrop += new System.Windows.Forms.DragEventHandler(this.formatCheckBox_DragDrop); + this.programFormatCheckBox.DragEnter += new System.Windows.Forms.DragEventHandler(this.formatCheckBox_DragEnter); + this.programFormatCheckBox.MouseDown += new System.Windows.Forms.MouseEventHandler(this.formatCheckBox_MouseDown); + // + // orderFormatLinkLabel + // + this.orderFormatLinkLabel.Enabled = false; + this.orderFormatLinkLabel.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline; + this.orderFormatLinkLabel.Location = new System.Drawing.Point(204, 25); + this.orderFormatLinkLabel.Name = "orderFormatLinkLabel"; + this.orderFormatLinkLabel.Size = new System.Drawing.Size(149, 16); + this.orderFormatLinkLabel.TabIndex = 2; + this.orderFormatLinkLabel.TabStop = true; + this.orderFormatLinkLabel.Text = "ładowanie..."; + this.orderFormatLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.orderFormatLinkLabel_LinkClicked); + this.orderFormatLinkLabel.MouseClick += new System.Windows.Forms.MouseEventHandler(this.orderFormatLinkLabel_MouseClick); + // + // orderFormatCheckBox + // + this.orderFormatCheckBox.AllowDrop = true; + this.orderFormatCheckBox.Checked = global::MSYS.Xiconf.LabelPrinter.Properties.Settings.Default.PrintOrder; + this.orderFormatCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::MSYS.Xiconf.LabelPrinter.Properties.Settings.Default, "PrintOrder", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.orderFormatCheckBox.Location = new System.Drawing.Point(8, 24); + this.orderFormatCheckBox.Name = "orderFormatCheckBox"; + this.orderFormatCheckBox.Size = new System.Drawing.Size(211, 20); + this.orderFormatCheckBox.TabIndex = 1; + this.orderFormatCheckBox.Text = "Etykieta zlecenia:"; + this.orderFormatCheckBox.UseVisualStyleBackColor = true; + this.orderFormatCheckBox.DragDrop += new System.Windows.Forms.DragEventHandler(this.formatCheckBox_DragDrop); + this.orderFormatCheckBox.DragEnter += new System.Windows.Forms.DragEventHandler(this.formatCheckBox_DragEnter); + this.orderFormatCheckBox.MouseDown += new System.Windows.Forms.MouseEventHandler(this.formatCheckBox_MouseDown); + // + // printButton + // + this.printButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 32.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.printButton.Location = new System.Drawing.Point(5, 98); + this.printButton.Name = "printButton"; + this.printButton.Size = new System.Drawing.Size(606, 82); + this.printButton.TabIndex = 102; + this.printButton.Text = "DRUKUJ ETYKIETY"; + this.printButton.UseVisualStyleBackColor = true; + this.printButton.Click += new System.EventHandler(this.printButton_Click); + // + // orderNoTextBox + // + this.orderNoTextBox.Font = new System.Drawing.Font("Consolas", 48F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.orderNoTextBox.Location = new System.Drawing.Point(6, 8); + this.orderNoTextBox.Margin = new System.Windows.Forms.Padding(0); + this.orderNoTextBox.MaxLength = 9; + this.orderNoTextBox.Name = "orderNoTextBox"; + this.orderNoTextBox.Size = new System.Drawing.Size(604, 82); + this.orderNoTextBox.TabIndex = 101; + this.orderNoTextBox.Text = "123456789"; + this.orderNoTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.orderNoTextBox.Enter += new System.EventHandler(this.textBox_Enter); + // + // licenseErrorLabel + // + this.licenseErrorLabel.BackColor = System.Drawing.Color.Red; + this.licenseErrorLabel.Cursor = System.Windows.Forms.Cursors.Hand; + this.licenseErrorLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.licenseErrorLabel.ForeColor = System.Drawing.Color.White; + this.licenseErrorLabel.Location = new System.Drawing.Point(494, 0); + this.licenseErrorLabel.Name = "licenseErrorLabel"; + this.licenseErrorLabel.Size = new System.Drawing.Size(150, 25); + this.licenseErrorLabel.TabIndex = 0; + this.licenseErrorLabel.Text = "BRAK LICENCJI"; + this.licenseErrorLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.licenseErrorLabel.Click += new System.EventHandler(this.licenseErrorLabel_Click); + // + // openFormatFileDialog + // + this.openFormatFileDialog.DefaultExt = "btw"; + this.openFormatFileDialog.Filter = "Szablony etykiet|*.btw"; + this.openFormatFileDialog.Title = "Wybierz szablon etykiety"; + this.openFormatFileDialog.FileOk += new System.ComponentModel.CancelEventHandler(this.openFormatFileDialog_FileOk); + // + // openXlsxFileDialog + // + this.openXlsxFileDialog.DefaultExt = "xlsx"; + this.openXlsxFileDialog.Filter = "Arkusze danych|*.xlsx"; + this.openXlsxFileDialog.Title = "Wybierz arkusz danych"; + this.openXlsxFileDialog.FileOk += new System.ComponentModel.CancelEventHandler(this.openXlsxFileDialog_FileOk); + // + // printTabControl + // + this.printTabControl.Controls.Add(this.printTabPage); + this.printTabControl.Controls.Add(this.reprintOrderTabPage); + this.printTabControl.Controls.Add(this.reprintProgramTabPage); + this.printTabControl.Controls.Add(this.reprintServiceTagTabPage); + this.printTabControl.Location = new System.Drawing.Point(9, 202); + this.printTabControl.Name = "printTabControl"; + this.printTabControl.SelectedIndex = 0; + this.printTabControl.Size = new System.Drawing.Size(626, 212); + this.printTabControl.TabIndex = 11; + this.printTabControl.Selected += new System.Windows.Forms.TabControlEventHandler(this.printTabControl_Selected); + // + // printTabPage + // + this.printTabPage.Controls.Add(this.printButton); + this.printTabPage.Controls.Add(this.orderNoTextBox); + this.printTabPage.Location = new System.Drawing.Point(4, 22); + this.printTabPage.Name = "printTabPage"; + this.printTabPage.Padding = new System.Windows.Forms.Padding(3); + this.printTabPage.Size = new System.Drawing.Size(618, 186); + this.printTabPage.TabIndex = 0; + this.printTabPage.Text = "Drukowanie etykiet"; + this.printTabPage.UseVisualStyleBackColor = true; + // + // reprintOrderTabPage + // + this.reprintOrderTabPage.Controls.Add(this.reprintOrderQuantityValue); + this.reprintOrderTabPage.Controls.Add(this.reprintOrderQuantityLabel); + this.reprintOrderTabPage.Controls.Add(this.reprintOrderButton); + this.reprintOrderTabPage.Controls.Add(this.reprintOrderNoLabel); + this.reprintOrderTabPage.Controls.Add(this.reprintOrderNoValue); + this.reprintOrderTabPage.Controls.Add(this.reprintOrderCountValue); + this.reprintOrderTabPage.Controls.Add(this.reprintOrderCountLabel); + this.reprintOrderTabPage.Location = new System.Drawing.Point(4, 22); + this.reprintOrderTabPage.Name = "reprintOrderTabPage"; + this.reprintOrderTabPage.Padding = new System.Windows.Forms.Padding(3); + this.reprintOrderTabPage.Size = new System.Drawing.Size(618, 186); + this.reprintOrderTabPage.TabIndex = 1; + this.reprintOrderTabPage.Text = "Dodruk zlecenia"; + this.reprintOrderTabPage.UseVisualStyleBackColor = true; + // + // reprintOrderQuantityValue + // + this.reprintOrderQuantityValue.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintOrderQuantityValue.Location = new System.Drawing.Point(119, 70); + this.reprintOrderQuantityValue.Maximum = new decimal(new int[] { + 999, + 0, + 0, + 0}); + this.reprintOrderQuantityValue.Name = "reprintOrderQuantityValue"; + this.reprintOrderQuantityValue.Size = new System.Drawing.Size(100, 22); + this.reprintOrderQuantityValue.TabIndex = 103; + this.reprintOrderQuantityValue.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.reprintOrderQuantityValue.Enter += new System.EventHandler(this.numericUpDown_Enter); + // + // reprintOrderQuantityLabel + // + this.reprintOrderQuantityLabel.AutoSize = true; + this.reprintOrderQuantityLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintOrderQuantityLabel.Location = new System.Drawing.Point(116, 50); + this.reprintOrderQuantityLabel.Name = "reprintOrderQuantityLabel"; + this.reprintOrderQuantityLabel.Size = new System.Drawing.Size(103, 16); + this.reprintOrderQuantityLabel.TabIndex = 14; + this.reprintOrderQuantityLabel.Text = "Ilość w zleceniu:"; + // + // reprintOrderButton + // + this.reprintOrderButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintOrderButton.Location = new System.Drawing.Point(5, 98); + this.reprintOrderButton.Name = "reprintOrderButton"; + this.reprintOrderButton.Size = new System.Drawing.Size(606, 82); + this.reprintOrderButton.TabIndex = 104; + this.reprintOrderButton.Text = "DRUKUJ ETYKIETY ZLECENIA"; + this.reprintOrderButton.UseVisualStyleBackColor = true; + this.reprintOrderButton.Click += new System.EventHandler(this.reprintOrderButton_Click); + // + // reprintOrderNoLabel + // + this.reprintOrderNoLabel.AutoSize = true; + this.reprintOrderNoLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintOrderNoLabel.Location = new System.Drawing.Point(3, 50); + this.reprintOrderNoLabel.Name = "reprintOrderNoLabel"; + this.reprintOrderNoLabel.Size = new System.Drawing.Size(78, 16); + this.reprintOrderNoLabel.TabIndex = 3; + this.reprintOrderNoLabel.Text = "Nr zlecenia:"; + // + // reprintOrderNoValue + // + this.reprintOrderNoValue.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintOrderNoValue.Location = new System.Drawing.Point(6, 70); + this.reprintOrderNoValue.Mask = "000000000"; + this.reprintOrderNoValue.Name = "reprintOrderNoValue"; + this.reprintOrderNoValue.Size = new System.Drawing.Size(100, 22); + this.reprintOrderNoValue.TabIndex = 102; + this.reprintOrderNoValue.Enter += new System.EventHandler(this.textBox_Enter); + // + // reprintOrderCountValue + // + this.reprintOrderCountValue.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintOrderCountValue.Location = new System.Drawing.Point(6, 25); + this.reprintOrderCountValue.Maximum = new decimal(new int[] { + 999, + 0, + 0, + 0}); + this.reprintOrderCountValue.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.reprintOrderCountValue.Name = "reprintOrderCountValue"; + this.reprintOrderCountValue.Size = new System.Drawing.Size(100, 22); + this.reprintOrderCountValue.TabIndex = 101; + this.reprintOrderCountValue.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.reprintOrderCountValue.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.reprintOrderCountValue.Enter += new System.EventHandler(this.numericUpDown_Enter); + // + // reprintOrderCountLabel + // + this.reprintOrderCountLabel.AutoSize = true; + this.reprintOrderCountLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintOrderCountLabel.Location = new System.Drawing.Point(3, 5); + this.reprintOrderCountLabel.Name = "reprintOrderCountLabel"; + this.reprintOrderCountLabel.Size = new System.Drawing.Size(81, 16); + this.reprintOrderCountLabel.TabIndex = 0; + this.reprintOrderCountLabel.Text = "Ilość etykiet:"; + // + // reprintProgramTabPage + // + this.reprintProgramTabPage.Controls.Add(this.reprintProgramNoLabel); + this.reprintProgramTabPage.Controls.Add(this.reprintProgramNoValue); + this.reprintProgramTabPage.Controls.Add(this.reprintProgramNameValue); + this.reprintProgramTabPage.Controls.Add(this.reprintProgramNameLabel); + this.reprintProgramTabPage.Controls.Add(this.reprintProgramButton); + this.reprintProgramTabPage.Controls.Add(this.reprintProgramNc12Label); + this.reprintProgramTabPage.Controls.Add(this.reprintProgramNc12Value); + this.reprintProgramTabPage.Controls.Add(this.reprintProgramCountValue); + this.reprintProgramTabPage.Controls.Add(this.reprintProgramCountLabel); + this.reprintProgramTabPage.Location = new System.Drawing.Point(4, 22); + this.reprintProgramTabPage.Name = "reprintProgramTabPage"; + this.reprintProgramTabPage.Padding = new System.Windows.Forms.Padding(3); + this.reprintProgramTabPage.Size = new System.Drawing.Size(618, 186); + this.reprintProgramTabPage.TabIndex = 2; + this.reprintProgramTabPage.Text = "Dodruk programowej"; + this.reprintProgramTabPage.UseVisualStyleBackColor = true; + // + // reprintProgramNoLabel + // + this.reprintProgramNoLabel.AutoSize = true; + this.reprintProgramNoLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintProgramNoLabel.Location = new System.Drawing.Point(116, 50); + this.reprintProgramNoLabel.Name = "reprintProgramNoLabel"; + this.reprintProgramNoLabel.Size = new System.Drawing.Size(78, 16); + this.reprintProgramNoLabel.TabIndex = 0; + this.reprintProgramNoLabel.Text = "Nr zlecenia:"; + // + // reprintProgramNoValue + // + this.reprintProgramNoValue.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintProgramNoValue.Location = new System.Drawing.Point(119, 70); + this.reprintProgramNoValue.Mask = "000000000"; + this.reprintProgramNoValue.Name = "reprintProgramNoValue"; + this.reprintProgramNoValue.Size = new System.Drawing.Size(100, 22); + this.reprintProgramNoValue.TabIndex = 103; + this.reprintProgramNoValue.Enter += new System.EventHandler(this.textBox_Enter); + this.reprintProgramNoValue.KeyDown += new System.Windows.Forms.KeyEventHandler(this.reprintProgramNoValue_KeyDown); + // + // reprintProgramNameValue + // + this.reprintProgramNameValue.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintProgramNameValue.Location = new System.Drawing.Point(232, 70); + this.reprintProgramNameValue.Name = "reprintProgramNameValue"; + this.reprintProgramNameValue.Size = new System.Drawing.Size(379, 22); + this.reprintProgramNameValue.TabIndex = 104; + this.reprintProgramNameValue.Enter += new System.EventHandler(this.textBox_Enter); + // + // reprintProgramNameLabel + // + this.reprintProgramNameLabel.AutoSize = true; + this.reprintProgramNameLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintProgramNameLabel.Location = new System.Drawing.Point(229, 50); + this.reprintProgramNameLabel.Name = "reprintProgramNameLabel"; + this.reprintProgramNameLabel.Size = new System.Drawing.Size(113, 16); + this.reprintProgramNameLabel.TabIndex = 0; + this.reprintProgramNameLabel.Text = "Nazwa programu:"; + // + // reprintProgramButton + // + this.reprintProgramButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintProgramButton.Location = new System.Drawing.Point(5, 98); + this.reprintProgramButton.Name = "reprintProgramButton"; + this.reprintProgramButton.Size = new System.Drawing.Size(606, 82); + this.reprintProgramButton.TabIndex = 105; + this.reprintProgramButton.Text = "DRUKUJ ETYKIETY PROGRAMOWE"; + this.reprintProgramButton.UseVisualStyleBackColor = true; + this.reprintProgramButton.Click += new System.EventHandler(this.reprintProgramButton_Click); + // + // reprintProgramNc12Label + // + this.reprintProgramNc12Label.AutoSize = true; + this.reprintProgramNc12Label.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintProgramNc12Label.Location = new System.Drawing.Point(3, 50); + this.reprintProgramNc12Label.Name = "reprintProgramNc12Label"; + this.reprintProgramNc12Label.Size = new System.Drawing.Size(44, 16); + this.reprintProgramNc12Label.TabIndex = 0; + this.reprintProgramNc12Label.Text = "12NC:"; + // + // reprintProgramNc12Value + // + this.reprintProgramNc12Value.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintProgramNc12Value.Location = new System.Drawing.Point(6, 70); + this.reprintProgramNc12Value.Mask = "000000000000"; + this.reprintProgramNc12Value.Name = "reprintProgramNc12Value"; + this.reprintProgramNc12Value.Size = new System.Drawing.Size(100, 22); + this.reprintProgramNc12Value.TabIndex = 102; + this.reprintProgramNc12Value.Enter += new System.EventHandler(this.textBox_Enter); + this.reprintProgramNc12Value.KeyDown += new System.Windows.Forms.KeyEventHandler(this.reprintProgramNc12Value_KeyDown); + // + // reprintProgramCountValue + // + this.reprintProgramCountValue.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintProgramCountValue.Location = new System.Drawing.Point(6, 25); + this.reprintProgramCountValue.Maximum = new decimal(new int[] { + 999, + 0, + 0, + 0}); + this.reprintProgramCountValue.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.reprintProgramCountValue.Name = "reprintProgramCountValue"; + this.reprintProgramCountValue.Size = new System.Drawing.Size(100, 22); + this.reprintProgramCountValue.TabIndex = 101; + this.reprintProgramCountValue.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.reprintProgramCountValue.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.reprintProgramCountValue.Enter += new System.EventHandler(this.numericUpDown_Enter); + // + // reprintProgramCountLabel + // + this.reprintProgramCountLabel.AutoSize = true; + this.reprintProgramCountLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintProgramCountLabel.Location = new System.Drawing.Point(3, 5); + this.reprintProgramCountLabel.Name = "reprintProgramCountLabel"; + this.reprintProgramCountLabel.Size = new System.Drawing.Size(81, 16); + this.reprintProgramCountLabel.TabIndex = 0; + this.reprintProgramCountLabel.Text = "Ilość etykiet:"; + // + // reprintServiceTagTabPage + // + this.reprintServiceTagTabPage.Controls.Add(this.reprintServiceTagStartNoValue); + this.reprintServiceTagTabPage.Controls.Add(this.reprintServiceTagStartNoLabel); + this.reprintServiceTagTabPage.Controls.Add(this.reprintServiceTagButton); + this.reprintServiceTagTabPage.Controls.Add(this.reprintServiceTagNoLabel); + this.reprintServiceTagTabPage.Controls.Add(this.reprintServiceTagNoValue); + this.reprintServiceTagTabPage.Controls.Add(this.reprintServiceTagCountValue); + this.reprintServiceTagTabPage.Controls.Add(this.reprintServiceTagCountLabel); + this.reprintServiceTagTabPage.Location = new System.Drawing.Point(4, 22); + this.reprintServiceTagTabPage.Name = "reprintServiceTagTabPage"; + this.reprintServiceTagTabPage.Padding = new System.Windows.Forms.Padding(3); + this.reprintServiceTagTabPage.Size = new System.Drawing.Size(618, 186); + this.reprintServiceTagTabPage.TabIndex = 3; + this.reprintServiceTagTabPage.Text = "Dodruk Service Tag Driver"; + this.reprintServiceTagTabPage.UseVisualStyleBackColor = true; + // + // reprintServiceTagStartNoValue + // + this.reprintServiceTagStartNoValue.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintServiceTagStartNoValue.Location = new System.Drawing.Point(119, 70); + this.reprintServiceTagStartNoValue.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.reprintServiceTagStartNoValue.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.reprintServiceTagStartNoValue.Name = "reprintServiceTagStartNoValue"; + this.reprintServiceTagStartNoValue.Size = new System.Drawing.Size(100, 22); + this.reprintServiceTagStartNoValue.TabIndex = 103; + this.reprintServiceTagStartNoValue.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.reprintServiceTagStartNoValue.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.reprintServiceTagStartNoValue.Enter += new System.EventHandler(this.numericUpDown_Enter); + // + // reprintServiceTagStartNoLabel + // + this.reprintServiceTagStartNoLabel.AutoSize = true; + this.reprintServiceTagStartNoLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintServiceTagStartNoLabel.Location = new System.Drawing.Point(116, 50); + this.reprintServiceTagStartNoLabel.Name = "reprintServiceTagStartNoLabel"; + this.reprintServiceTagStartNoLabel.Size = new System.Drawing.Size(99, 16); + this.reprintServiceTagStartNoLabel.TabIndex = 0; + this.reprintServiceTagStartNoLabel.Text = "Nr początkowy:"; + // + // reprintServiceTagButton + // + this.reprintServiceTagButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintServiceTagButton.Location = new System.Drawing.Point(5, 98); + this.reprintServiceTagButton.Name = "reprintServiceTagButton"; + this.reprintServiceTagButton.Size = new System.Drawing.Size(606, 82); + this.reprintServiceTagButton.TabIndex = 104; + this.reprintServiceTagButton.Text = "DRUKUJ ETYKIETY\r\nSERVICE TAG DRIVER"; + this.reprintServiceTagButton.UseVisualStyleBackColor = true; + this.reprintServiceTagButton.Click += new System.EventHandler(this.reprintServiceTagButton_Click); + // + // reprintServiceTagNoLabel + // + this.reprintServiceTagNoLabel.AutoSize = true; + this.reprintServiceTagNoLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintServiceTagNoLabel.Location = new System.Drawing.Point(3, 50); + this.reprintServiceTagNoLabel.Name = "reprintServiceTagNoLabel"; + this.reprintServiceTagNoLabel.Size = new System.Drawing.Size(78, 16); + this.reprintServiceTagNoLabel.TabIndex = 0; + this.reprintServiceTagNoLabel.Text = "Nr zlecenia:"; + // + // reprintServiceTagNoValue + // + this.reprintServiceTagNoValue.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintServiceTagNoValue.Location = new System.Drawing.Point(6, 70); + this.reprintServiceTagNoValue.Mask = "000000000"; + this.reprintServiceTagNoValue.Name = "reprintServiceTagNoValue"; + this.reprintServiceTagNoValue.Size = new System.Drawing.Size(100, 22); + this.reprintServiceTagNoValue.TabIndex = 102; + this.reprintServiceTagNoValue.Enter += new System.EventHandler(this.textBox_Enter); + // + // reprintServiceTagCountValue + // + this.reprintServiceTagCountValue.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintServiceTagCountValue.Location = new System.Drawing.Point(6, 25); + this.reprintServiceTagCountValue.Maximum = new decimal(new int[] { + 999, + 0, + 0, + 0}); + this.reprintServiceTagCountValue.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.reprintServiceTagCountValue.Name = "reprintServiceTagCountValue"; + this.reprintServiceTagCountValue.Size = new System.Drawing.Size(100, 22); + this.reprintServiceTagCountValue.TabIndex = 101; + this.reprintServiceTagCountValue.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.reprintServiceTagCountValue.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.reprintServiceTagCountValue.Enter += new System.EventHandler(this.numericUpDown_Enter); + // + // reprintServiceTagCountLabel + // + this.reprintServiceTagCountLabel.AutoSize = true; + this.reprintServiceTagCountLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.reprintServiceTagCountLabel.Location = new System.Drawing.Point(3, 5); + this.reprintServiceTagCountLabel.Name = "reprintServiceTagCountLabel"; + this.reprintServiceTagCountLabel.Size = new System.Drawing.Size(81, 16); + this.reprintServiceTagCountLabel.TabIndex = 0; + this.reprintServiceTagCountLabel.Text = "Ilość etykiet:"; + // + // MainForm + // + this.AcceptButton = this.printButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(644, 423); + this.Controls.Add(this.printTabControl); + this.Controls.Add(this.licenseErrorLabel); + this.Controls.Add(this.configGroupBox); + this.Controls.Add(this.menuStrip); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.KeyPreview = true; + this.MainMenuStrip = this.menuStrip; + this.MaximizeBox = false; + this.Name = "MainForm"; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Drukowanie etykiet - XLP"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); + this.Load += new System.EventHandler(this.MainForm_Load); + this.Shown += new System.EventHandler(this.MainForm_Shown); + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyDown); + this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyUp); + this.menuStrip.ResumeLayout(false); + this.menuStrip.PerformLayout(); + this.configGroupBox.ResumeLayout(false); + this.printTabControl.ResumeLayout(false); + this.printTabPage.ResumeLayout(false); + this.printTabPage.PerformLayout(); + this.reprintOrderTabPage.ResumeLayout(false); + this.reprintOrderTabPage.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.reprintOrderQuantityValue)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.reprintOrderCountValue)).EndInit(); + this.reprintProgramTabPage.ResumeLayout(false); + this.reprintProgramTabPage.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.reprintProgramCountValue)).EndInit(); + this.reprintServiceTagTabPage.ResumeLayout(false); + this.reprintServiceTagTabPage.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.reprintServiceTagStartNoValue)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.reprintServiceTagCountValue)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.MenuStrip menuStrip; + private System.Windows.Forms.ToolStripMenuItem fileMenuItem; + private System.Windows.Forms.ToolStripMenuItem exitMenuItem; + private System.Windows.Forms.ToolStripMenuItem helpMenuItem; + private System.Windows.Forms.ToolStripMenuItem aboutMenuItem; + private System.Windows.Forms.GroupBox configGroupBox; + private System.Windows.Forms.LinkLabel orderFormatLinkLabel; + private System.Windows.Forms.CheckBox orderFormatCheckBox; + private System.Windows.Forms.LinkLabel programFormatLinkLabel; + private System.Windows.Forms.CheckBox programFormatCheckBox; + private System.Windows.Forms.LinkLabel serviceTagFormatLinkLabel; + private System.Windows.Forms.CheckBox serviceTagFormatCheckBox; + private System.Windows.Forms.LinkLabel workCenterXlsxLinkLabel; + private System.Windows.Forms.LinkLabel orderXlsxLinkLabel; + private System.Windows.Forms.Button printButton; + private System.Windows.Forms.TextBox orderNoTextBox; + private System.Windows.Forms.ToolStripMenuItem licenseMenuItem; + private System.Windows.Forms.Label orderXlsxLabel; + private System.Windows.Forms.Label workCenterXlsxLabel; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.Label licenseErrorLabel; + private System.Windows.Forms.OpenFileDialog openFormatFileDialog; + private System.Windows.Forms.OpenFileDialog openXlsxFileDialog; + private System.Windows.Forms.TabControl printTabControl; + private System.Windows.Forms.TabPage printTabPage; + private System.Windows.Forms.TabPage reprintOrderTabPage; + private System.Windows.Forms.TabPage reprintProgramTabPage; + private System.Windows.Forms.TabPage reprintServiceTagTabPage; + private System.Windows.Forms.Label reprintOrderCountLabel; + private System.Windows.Forms.MaskedTextBox reprintOrderNoValue; + private System.Windows.Forms.NumericUpDown reprintOrderCountValue; + private System.Windows.Forms.Button reprintOrderButton; + private System.Windows.Forms.Label reprintOrderNoLabel; + private System.Windows.Forms.NumericUpDown reprintOrderQuantityValue; + private System.Windows.Forms.Label reprintOrderQuantityLabel; + private System.Windows.Forms.Button reprintProgramButton; + private System.Windows.Forms.Label reprintProgramNc12Label; + private System.Windows.Forms.MaskedTextBox reprintProgramNc12Value; + private System.Windows.Forms.NumericUpDown reprintProgramCountValue; + private System.Windows.Forms.Label reprintProgramCountLabel; + private System.Windows.Forms.TextBox reprintProgramNameValue; + private System.Windows.Forms.Label reprintProgramNameLabel; + private System.Windows.Forms.NumericUpDown reprintServiceTagStartNoValue; + private System.Windows.Forms.Label reprintServiceTagStartNoLabel; + private System.Windows.Forms.Button reprintServiceTagButton; + private System.Windows.Forms.Label reprintServiceTagNoLabel; + private System.Windows.Forms.MaskedTextBox reprintServiceTagNoValue; + private System.Windows.Forms.NumericUpDown reprintServiceTagCountValue; + private System.Windows.Forms.Label reprintServiceTagCountLabel; + private System.Windows.Forms.ComboBox serviceTagPrinterComboBox; + private System.Windows.Forms.ComboBox programPrinterComboBox; + private System.Windows.Forms.ComboBox orderPrinterComboBox; + private System.Windows.Forms.Button editWorkCenterXlsxButton; + private System.Windows.Forms.Button reloadWorkCenterXlsxButton; + private System.Windows.Forms.Button editOrderXlsxButton; + private System.Windows.Forms.Button reloadOrderXlsxButton; + private System.Windows.Forms.Label reprintProgramNoLabel; + private System.Windows.Forms.MaskedTextBox reprintProgramNoValue; + } +} + diff --git a/XiconfLabelPrinter/MainForm.cs b/XiconfLabelPrinter/MainForm.cs new file mode 100644 index 0000000..5e81cc5 --- /dev/null +++ b/XiconfLabelPrinter/MainForm.cs @@ -0,0 +1,1121 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using System.Windows.Forms; +using Seagull.BarTender.Print; + +namespace MSYS.Xiconf.LabelPrinter +{ + public partial class MainForm : Form + { + private Properties.Settings settings = Properties.Settings.Default; + + private Engine engine = null; + + private LabelFormatDocument orderFormat = null; + + private LabelFormatDocument programFormat = null; + + private LabelFormatDocument serviceTagFormat = null; + + private string openFormatFileType = null; + + private string openXlsxFileType = null; + + private OrderList orderList = new OrderList(); + + private WorkCenterList workCenterList = new WorkCenterList(); + + public MainForm() + { + InitializeComponent(); + ReorderFormatControls(); + } + + private void MainForm_Load(object sender, EventArgs e) + { + try + { + engine = new Engine(true); + } + catch (Exception x) + { + ShowError("Błąd silnika BarTender", x.Message); + Close(); + } + + ToggleLicenseError(); + } + + private void MainForm_Shown(object sender, EventArgs e) + { + printButton.Enabled = false; + + var timer = new Timer() { Interval = 1 }; + + timer.Tick += (sender_, e_) => + { + timer.Stop(); + + SetUpOrderFormat(); + SetUpProgramFormat(); + SetUpServiceTagFormat(); + SetUpOrderXlsx(); + SetUpWorkCenterXlsx(); + SetUpPrinters(); + + printButton.Enabled = true; + }; + + timer.Start(); + } + + private void MainForm_FormClosing(object sender, FormClosingEventArgs e) + { + settings.Save(); + + if (engine != null) + { + engine.Stop(Seagull.BarTender.Print.SaveOptions.DoNotSaveChanges); + engine.Dispose(); + } + } + + private void formatCheckBox_MouseDown(object sender, MouseEventArgs e) + { + var checkBox = sender as CheckBox; + + if (Control.ModifierKeys == Keys.Control) + { + checkBox.DoDragDrop(checkBox.Name, DragDropEffects.Copy | DragDropEffects.Move); + } + } + + private void formatCheckBox_DragEnter(object sender, DragEventArgs e) + { + e.Effect = sender is CheckBox ? DragDropEffects.Move : DragDropEffects.None; + } + + private void formatCheckBox_DragDrop(object sender, DragEventArgs e) + { + var source = e.Data.GetData(DataFormats.Text).ToString().Replace("FormatCheckBox", ""); + var target = GetFormatTypeFromCheckBoxName(sender as CheckBox); + + SwapConfigControls(source, target, "FormatCheckBox"); + SwapConfigControls(source, target, "FormatLinkLabel"); + SwapConfigControls(source, target, "PrinterComboBox"); + + RestoreFormatStyles(); + UpdateLabelOrder(); + } + + private void MainForm_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.ControlKey) + { + orderFormatCheckBox.Font = new Font(orderFormatCheckBox.Font.FontFamily, orderFormatCheckBox.Font.Size, FontStyle.Italic); + orderFormatCheckBox.Cursor = Cursors.SizeNS; + programFormatCheckBox.Font = new Font(programFormatCheckBox.Font.FontFamily, programFormatCheckBox.Font.Size, FontStyle.Italic); + programFormatCheckBox.Cursor = Cursors.SizeNS; + serviceTagFormatCheckBox.Font = new Font(serviceTagFormatCheckBox.Font.FontFamily, serviceTagFormatCheckBox.Font.Size, FontStyle.Italic); + serviceTagFormatCheckBox.Cursor = Cursors.SizeNS; + } + } + + private void MainForm_KeyUp(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.ControlKey) + { + RestoreFormatStyles(); + } + } + + private void exitMenuItem_Click(object sender, EventArgs e) + { + Close(); + } + + private void aboutMenuItem_Click(object sender, EventArgs e) + { + new AboutForm().ShowDialog(this); + } + + private void licenseMenuItem_Click(object sender, EventArgs e) + { + ShowLicenseForm(); + } + + private void licenseErrorLabel_Click(object sender, EventArgs e) + { + ShowLicenseForm(); + } + + private void orderPrinterComboBox_SelectedIndexChanged(object sender, EventArgs e) + { + settings.OrderPrinterName = orderPrinterComboBox.SelectedItem as string; + } + + private void programPrinterComboBox_SelectedIndexChanged(object sender, EventArgs e) + { + settings.ProgramPrinterName = programPrinterComboBox.SelectedItem as string; + } + + private void serviceTagPrinterComboBox_SelectedIndexChanged(object sender, EventArgs e) + { + settings.ServiceTagPrinterName = serviceTagPrinterComboBox.SelectedItem as string; + } + + private void openOrderFormatMenuItem_Click(object sender, EventArgs e) + { + OpenOrderFormatFileDialog(); + } + + private void orderFormatLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + OpenOrderFormatFileDialog(); + } + + private void orderFormatLinkLabel_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button == System.Windows.Forms.MouseButtons.Right) + { + settings.OrderFormatFile = ""; + SetUpOrderFormat(); + } + } + + private void openProgramFormatMenuItem_Click(object sender, EventArgs e) + { + OpenProgramFormatFileDialog(); + } + + private void programFormatLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + OpenProgramFormatFileDialog(); + } + + private void programFormatLinkLabel_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button == System.Windows.Forms.MouseButtons.Right) + { + settings.ProgramFormatFile = ""; + SetUpProgramFormat(); + } + } + + private void openServiceTagFormatMenuItem_Click(object sender, EventArgs e) + { + OpenServiceTagFormatFileDialog(); + } + + private void serviceTagFormatLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + OpenServiceTagFormatFileDialog(); + } + + private void serviceTagFormatLinkLabel_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button == System.Windows.Forms.MouseButtons.Right) + { + settings.ServiceTagFormatFile = ""; + SetUpServiceTagFormat(); + } + } + + private void openFormatFileDialog_FileOk(object sender, CancelEventArgs e) + { + var timer = new Timer() { Interval = 1 }; + + timer.Tick += (sender_, e_) => + { + timer.Stop(); + + var formatFile = openFormatFileDialog.FileName; + + CloseOpenFormat(openFormatFileType, formatFile); + + switch (openFormatFileType) + { + case "order": + settings.OrderFormatFile = formatFile; + SetUpOrderFormat(); + break; + + case "program": + settings.ProgramFormatFile = formatFile; + SetUpProgramFormat(); + break; + + case "serviceTag": + settings.ServiceTagFormatFile = formatFile; + SetUpServiceTagFormat(); + break; + } + + openFormatFileType = null; + }; + + timer.Start(); + } + + private void openOrderXlsxMenuItem_Click(object sender, EventArgs e) + { + OpenOrderXlsxFileDialog(); + } + + private void orderXlsxLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + OpenOrderXlsxFileDialog(); + } + + private void orderXlsxLinkLabel_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button == System.Windows.Forms.MouseButtons.Right) + { + settings.OrderXlsxFile = ""; + SetUpOrderXlsx(); + } + } + + private void openWorkCenterXlsxMenuItem_Click(object sender, EventArgs e) + { + OpenWorkCenterXlsxFileDialog(); + } + + private void workCenterXlsxLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + OpenWorkCenterXlsxFileDialog(); + } + + private void workCenterXlsxLinkLabel_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button == System.Windows.Forms.MouseButtons.Right) + { + settings.WorkCenterXlsxFile = ""; + SetUpWorkCenterXlsx(); + } + } + + private void openXlsxFileDialog_FileOk(object sender, CancelEventArgs e) + { + var timer = new Timer() { Interval = 1 }; + + timer.Tick += (sender_, e_) => + { + timer.Stop(); + + var xlsxFile = openXlsxFileDialog.FileName; + + switch (openXlsxFileType) + { + case "order": + settings.OrderXlsxFile = xlsxFile; + SetUpOrderXlsx(); + break; + + case "workCenter": + settings.WorkCenterXlsxFile = xlsxFile; + SetUpWorkCenterXlsx(); + break; + } + + openXlsxFileType = null; + }; + + timer.Start(); + } + + private void printButton_Click(object sender, EventArgs e) + { + if (orderFormatCheckBox.Checked && orderFormat == null) + { + ShowError("Nieprawidłowa konfiguracja", "Zaznaczono do druku etykietę zlecenia, ale nie wybrano szablonu."); + return; + } + + if (programFormatCheckBox.Checked && programFormat == null) + { + ShowError("Nieprawidłowa konfiguracja", "Zaznaczono do druku etykietę programową, ale nie wybrano szablonu."); + return; + } + + if (serviceTagFormatCheckBox.Checked && serviceTagFormat == null) + { + ShowError("Nieprawidłowa konfiguracja", "Zaznaczono do druku etykietę Service Tag, ale nie wybrano szablonu."); + return; + } + + if (!orderFormatCheckBox.Checked && !programFormatCheckBox.Checked && !serviceTagFormatCheckBox.Checked) + { + ShowError("Nieprawidłowa konfiguracja", "Nie zaznaczono żadnej etykiety."); + return; + } + + if (orderList.Count == 0) + { + ShowError("Nieprawidłowa konfiguracja", "Brak zleceń."); + return; + } + + var no = orderNoTextBox.Text.Trim(); + + if (!Regex.IsMatch(no, "^[0-9]{9}$")) + { + ShowError("Nieprawidłowy nr zlecenia", "Nr zlecenia musi składać się z dziewięciu cyfr."); + return; + } + + var orders = orderList.FindByNo(no); + + if (orders.Count == 0) + { + ShowError("Brak zleceń", "Nie znaleziono zleceń pasujących do podanego nr zlecenia."); + return; + } + + var printJobs = new List(); + + for (var i = 0; i < orders.Count; ++i) + { + CreatePrintJobs(printJobs, orders[i], i + 1); + } + + ShowPrintForm(printJobs); + } + + private void reprintOrderButton_Click(object sender, EventArgs e) + { + if (orderFormat == null) + { + ShowError("Błąd konfiguracji", "Nie wybrano szablonu etykiety zlecenia."); + orderFormatLinkLabel.Focus(); + return; + } + + var orderNo = reprintOrderNoValue.Text; + + if (orderNo.Length == 0) + { + ShowError("Nieprawidłowy nr zlecenia", "Nr zlecenia jest wymagany."); + reprintOrderNoValue.Focus(); + return; + } + + var orderQuantity = (int)reprintOrderQuantityValue.Value; + + if (orderQuantity == 0) + { + var order = orderList.Find(o => o.No == orderNo); + + if (order == null) + { + ShowError("Nieprawidłowy nr zlecenia", "Nie znaleziono ilości dla podanego zlecenia."); + reprintOrderQuantityValue.Focus(); + return; + } + + orderQuantity = order.Quantity; + } + + var printJob = new OrderPrintJob(orderNo, orderQuantity) + { + LabelQuantity = (int)reprintOrderCountValue.Value, + PrinterName = settings.OrderPrinterName + }; + + ShowPrintForm(new List(1) { printJob }); + } + + private void reprintProgramButton_Click(object sender, EventArgs e) + { + if (programFormat == null) + { + ShowError("Błąd konfiguracji", "Nie wybrano szablonu etykiety programowej."); + programFormatLinkLabel.Focus(); + return; + } + + var nc12 = reprintProgramNc12Value.Text; + var no = reprintProgramNoValue.Text; + + if (nc12.Length != 12 && no.Length != 9) + { + ShowError("Nieprawidłowe 12NC/nr zlecenia", "12NC lub Nr zlecenia jest wymagany."); + reprintProgramNc12Value.Focus(); + return; + } + + var printJobs = new List(); + IList orders; + + var quantity = (int)reprintProgramCountValue.Value; + + if (no.Length > 0) + { + orders = orderList.FindByNo(no); + + foreach (var order in orders) + { + printJobs.Add(new ProgramPrintJob(order.Nc12, order.ProgramName) + { + LabelQuantity = quantity, + PrinterName = settings.ProgramPrinterName + }); + } + + if (printJobs.Count == 0) + { + ShowError("Nieprawidłowy nr zlecenia", "Nie znaleziono programu dla podanego nr zlecenia."); + reprintProgramNoValue.Focus(); + return; + } + } + else + { + var programName = reprintProgramNameValue.Text.Trim(); + + if (programName.Length == 0) + { + orders = orderList.FindByNc12(nc12); + + if (orders.Count > 0) + { + printJobs.Add(new ProgramPrintJob(orders[0].Nc12, orders[0].ProgramName) + { + LabelQuantity = quantity, + PrinterName = settings.ProgramPrinterName + }); + } + else + { + ShowError("Nieprawidłowe 12NC", "Nie znaleziono nazwy programu dla podanego 12NC."); + reprintProgramNc12Value.Focus(); + return; + } + } + else + { + printJobs.Add(new ProgramPrintJob(nc12, programName) + { + LabelQuantity = quantity, + PrinterName = settings.ProgramPrinterName + }); + } + } + + ShowPrintForm(printJobs); + } + + private void reprintServiceTagButton_Click(object sender, EventArgs e) + { + if (serviceTagFormat == null) + { + ShowError("Błąd konfiguracji", "Nie wybrano szablonu etykiety Service Tag."); + serviceTagFormatLinkLabel.Focus(); + return; + } + + var orderNo = reprintServiceTagNoValue.Text; + + if (orderNo.Length == 0) + { + ShowError("Nieprawidłowy nr zlecenia", "Nr zlecenia jest wymagany."); + reprintServiceTagNoValue.Focus(); + return; + } + + var firstSerialNo = (int)reprintServiceTagStartNoValue.Value; + + var printJob = new ServiceTagPrintJob(orderNo, firstSerialNo) + { + LabelQuantity = (int)reprintServiceTagCountValue.Value, + PrinterName = settings.ServiceTagPrinterName + }; + + ShowPrintForm(new List(1) { printJob }); + } + + private void reloadOrderXlsxButton_Click(object sender, EventArgs e) + { + if (!string.IsNullOrEmpty(settings.OrderXlsxFile)) + { + SetUpOrderXlsx(); + FocusAcceptButton(); + } + } + + private void editOrderXlsxButton_Click(object sender, EventArgs e) + { + if (!string.IsNullOrEmpty(settings.OrderXlsxFile)) + { + Process.Start(settings.OrderXlsxFile); + } + } + + private void reloadWorkCenterXlsxButton_Click(object sender, EventArgs e) + { + if (!string.IsNullOrEmpty(settings.WorkCenterXlsxFile)) + { + SetUpWorkCenterXlsx(); + FocusAcceptButton(); + } + } + + private void editWorkCenterXlsxButton_Click(object sender, EventArgs e) + { + if (!string.IsNullOrEmpty(settings.WorkCenterXlsxFile)) + { + Process.Start(settings.WorkCenterXlsxFile); + } + } + + private void printTabControl_Selected(object sender, TabControlEventArgs e) + { + foreach (Control control in e.TabPage.Controls) + { + if (control is IButtonControl) + { + AcceptButton = control as IButtonControl; + } + } + } + + private void textBox_Enter(object sender, EventArgs e) + { + BeginInvoke((Action)delegate + { + (sender as TextBoxBase).SelectAll(); + }); + } + + private void reprintProgramNoValue_KeyDown(object sender, KeyEventArgs e) + { + reprintProgramNc12Value.Text = ""; + reprintProgramNameValue.Text = ""; + } + + private void reprintProgramNc12Value_KeyDown(object sender, KeyEventArgs e) + { + reprintProgramNoValue.Text = ""; + } + + private void numericUpDown_Enter(object sender, EventArgs e) + { + var upDown = sender as NumericUpDown; + + BeginInvoke((Action)delegate + { + upDown.Select(0, upDown.Text.Length); + }); + } + + private void ReorderFormatControls() + { + var checkBoxTop = new int[] { orderFormatCheckBox.Top, programFormatCheckBox.Top, serviceTagFormatCheckBox.Top }; + var checkBoxTabIndex = new int[] { orderFormatCheckBox.TabIndex, programFormatCheckBox.TabIndex, serviceTagFormatCheckBox.TabIndex }; + var linkLabelTop = new int[] { orderFormatLinkLabel.Top, programFormatLinkLabel.Top, serviceTagFormatLinkLabel.Top }; + var linkLabelTabIndex = new int[] { orderFormatLinkLabel.TabIndex, programFormatLinkLabel.TabIndex, serviceTagFormatLinkLabel.TabIndex }; + var comboBoxTop = new int[] { orderPrinterComboBox.Top, programPrinterComboBox.Top, serviceTagPrinterComboBox.Top }; + var comboBoxTabIndex = new int[] { orderPrinterComboBox.TabIndex, programPrinterComboBox.TabIndex, serviceTagPrinterComboBox.TabIndex }; + + for (var i = 0; i < settings.LabelOrder.Count; ++i) + { + var controls = GetFormatControls(settings.LabelOrder[i]); + + if (controls == null) + { + continue; + } + + controls[0].Top = checkBoxTop[i]; + controls[0].TabIndex = checkBoxTabIndex[i]; + controls[1].Top = linkLabelTop[i]; + controls[1].TabIndex = linkLabelTabIndex[i]; + controls[2].Top = comboBoxTop[i]; + controls[2].TabIndex = comboBoxTabIndex[i]; + } + } + + private Control[] GetFormatControls(string type) + { + switch (type) + { + case "order": + return new Control[] { orderFormatCheckBox, orderFormatLinkLabel, orderPrinterComboBox }; + + case "program": + return new Control[] { programFormatCheckBox, programFormatLinkLabel, programPrinterComboBox }; + + case "serviceTag": + return new Control[] { serviceTagFormatCheckBox, serviceTagFormatLinkLabel, serviceTagPrinterComboBox }; + + default: + return null; + } + } + + private void UpdateLabelOrder() + { + var sortedFormatTypes = new SortedList(3); + + sortedFormatTypes.Add(orderFormatCheckBox.Top, GetFormatTypeFromCheckBoxName(orderFormatCheckBox)); + sortedFormatTypes.Add(programFormatCheckBox.Top, GetFormatTypeFromCheckBoxName(programFormatCheckBox)); + sortedFormatTypes.Add(serviceTagFormatCheckBox.Top, GetFormatTypeFromCheckBoxName(serviceTagFormatCheckBox)); + + settings.LabelOrder.Clear(); + + foreach (var formatType in sortedFormatTypes) + { + settings.LabelOrder.Add(formatType.Value); + } + } + + private string GetFormatTypeFromCheckBoxName(CheckBox formatCheckBox) + { + return formatCheckBox.Name.Replace("FormatCheckBox", ""); + } + + private void SwapConfigControls(string source, string target, string suffix) + { + var sourceControl = configGroupBox.Controls.Find(source + suffix, false)[0]; + var targetControl = configGroupBox.Controls.Find(target + suffix, false)[0]; + var targetTop = targetControl.Top; + var targetLeft = targetControl.Left; + var targetTabIndex = targetControl.TabIndex; + + targetControl.Top = sourceControl.Top; + targetControl.Left = sourceControl.Left; + targetControl.TabIndex = sourceControl.TabIndex; + sourceControl.Top = targetTop; + sourceControl.Left = targetLeft; + sourceControl.TabIndex = targetTabIndex; + } + + private void RestoreFormatStyles() + { + orderFormatCheckBox.Font = new Font(orderFormatCheckBox.Font.FontFamily, orderFormatCheckBox.Font.Size); + orderFormatCheckBox.Cursor = Cursors.Default; + programFormatCheckBox.Font = new Font(programFormatCheckBox.Font.FontFamily, programFormatCheckBox.Font.Size); + programFormatCheckBox.Cursor = Cursors.Default; + serviceTagFormatCheckBox.Font = new Font(serviceTagFormatCheckBox.Font.FontFamily, serviceTagFormatCheckBox.Font.Size); + serviceTagFormatCheckBox.Cursor = Cursors.Default; + } + + private void ToggleLicenseError() + { + LicenseInfo.ReadFromSettings(); + + if (LicenseInfo.IsValid()) + { + licenseErrorLabel.Hide(); + } + else + { + licenseErrorLabel.Show(); + } + } + + private void ShowLicenseForm() + { + var licenseForm = new LicenseForm(); + licenseForm.FormClosed += (sender, e) => ToggleLicenseError(); + licenseForm.ShowDialog(this); + } + + private void ShowPrintForm(IList printJobs) + { + var printForm = new PrintForm( + printJobs.Where(printJob => printJob.LabelQuantity > 0).ToList(), + engine, + orderFormat, + programFormat, + serviceTagFormat + ); + + printForm.ShowDialog(this); + } + + private void ShowError(string caption, string message) + { + MessageBox.Show(this, message, caption, MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + private void SetUpPrinters() + { + Printers printers; + + try + { + printers = new Printers(); + } + catch (Exception) + { + return; + } + + foreach (var printer in printers) + { + orderPrinterComboBox.Items.Add(printer.PrinterName); + programPrinterComboBox.Items.Add(printer.PrinterName); + serviceTagPrinterComboBox.Items.Add(printer.PrinterName); + } + + if (printers.Count > 0) + { + orderPrinterComboBox.SelectedItem = printers.Any(printer => printer.PrinterName == settings.OrderPrinterName) + ? settings.OrderPrinterName + : printers.Default.PrinterName; + + programPrinterComboBox.SelectedItem = printers.Any(printer => printer.PrinterName == settings.ProgramPrinterName) + ? settings.ProgramPrinterName + : printers.Default.PrinterName; + + serviceTagPrinterComboBox.SelectedItem = printers.Any(printer => printer.PrinterName == settings.ServiceTagPrinterName) + ? settings.ServiceTagPrinterName + : printers.Default.PrinterName; + } + } + + private void SetUpOrderFormat() + { + orderFormatLinkLabel.Enabled = false; + orderFormatLinkLabel.Text = "ładowanie..."; + + if (orderFormat != null) + { + orderFormat.Close(Seagull.BarTender.Print.SaveOptions.DoNotSaveChanges); + orderFormat = null; + } + + if (!string.IsNullOrEmpty(settings.OrderFormatFile)) + { + try + { + orderFormat = engine.Documents.Open(settings.OrderFormatFile); + } + catch (Exception x) + { + settings.OrderFormatFile = ""; + + ShowError("Błąd otwierania etykiety zlecenia", x.Message); + } + } + + orderFormatLinkLabel.Text = orderFormat == null ? "wybierz..." : Path.GetFileNameWithoutExtension(settings.OrderFormatFile); + orderFormatLinkLabel.Enabled = true; + } + + private void SetUpProgramFormat() + { + programFormatLinkLabel.Enabled = false; + programFormatLinkLabel.Text = "ładowanie..."; + + if (programFormat != null) + { + programFormat.Close(Seagull.BarTender.Print.SaveOptions.DoNotSaveChanges); + programFormat = null; + } + + if (!string.IsNullOrEmpty(settings.ProgramFormatFile)) + { + try + { + programFormat = engine.Documents.Open(settings.ProgramFormatFile); + } + catch (Exception x) + { + settings.ProgramFormatFile = ""; + + ShowError("Błąd otwierania etykiety programowej", x.Message); + } + } + + programFormatLinkLabel.Text = programFormat == null ? "wybierz..." : Path.GetFileNameWithoutExtension(settings.ProgramFormatFile); + programFormatLinkLabel.Enabled = true; + } + + private void SetUpServiceTagFormat() + { + serviceTagFormatLinkLabel.Enabled = false; + serviceTagFormatLinkLabel.Text = "ładowanie..."; + + if (serviceTagFormat != null) + { + serviceTagFormat.Close(Seagull.BarTender.Print.SaveOptions.DoNotSaveChanges); + serviceTagFormat = null; + } + + if (!string.IsNullOrEmpty(settings.ServiceTagFormatFile)) + { + try + { + serviceTagFormat = engine.Documents.Open(settings.ServiceTagFormatFile); + } + catch (Exception x) + { + settings.ServiceTagFormatFile = ""; + + ShowError("Błąd otwierania etykiety Service Tag", x.Message); + } + } + + serviceTagFormatLinkLabel.Text = serviceTagFormat == null ? "wybierz..." : Path.GetFileNameWithoutExtension(settings.ServiceTagFormatFile); + serviceTagFormatLinkLabel.Enabled = true; + } + + private void SetUpOrderXlsx() + { + reloadOrderXlsxButton.Enabled = false; + editOrderXlsxButton.Enabled = false; + orderXlsxLinkLabel.Enabled = false; + orderXlsxLinkLabel.Text = "ładowanie..."; + + orderList.Clear(); + + if (!string.IsNullOrEmpty(settings.OrderXlsxFile)) + { + try + { + orderList.ReadFromXlsxFile(settings.OrderXlsxFile); + } + catch (Exception x) + { + settings.OrderXlsxFile = ""; + + ShowError("Błąd wczytywania zleceń", x.Message); + } + } + + orderXlsxLinkLabel.Text = orderList.Count == 0 ? "wybierz..." : (Path.GetFileNameWithoutExtension(settings.OrderXlsxFile) + " (" + orderList.Count + ")"); + orderXlsxLinkLabel.Enabled = true; + reloadOrderXlsxButton.Enabled = orderList.Count > 0; + editOrderXlsxButton.Enabled = orderList.Count > 0; + } + + private void SetUpWorkCenterXlsx() + { + reloadWorkCenterXlsxButton.Enabled = false; + editWorkCenterXlsxButton.Enabled = false; + workCenterXlsxLinkLabel.Enabled = false; + workCenterXlsxLinkLabel.Text = "ładowanie..."; + + workCenterList.Clear(); + + if (!string.IsNullOrEmpty(settings.WorkCenterXlsxFile)) + { + try + { + workCenterList.ReadFromXlsxFile(settings.WorkCenterXlsxFile); + } + catch (Exception x) + { + settings.WorkCenterXlsxFile = ""; + + ShowError("Błąd wczytywania WorkCentrów", x.Message); + } + } + + workCenterXlsxLinkLabel.Text = workCenterList.Count == 0 ? "wybierz..." : (Path.GetFileNameWithoutExtension(settings.WorkCenterXlsxFile) + " (" + workCenterList.Count + ")"); + workCenterXlsxLinkLabel.Enabled = true; + reloadWorkCenterXlsxButton.Enabled = workCenterList.Count > 0; + editWorkCenterXlsxButton.Enabled = workCenterList.Count > 0; + } + + private void CloseOpenFormat(string type, string formatFile) + { + if (orderFormat != null && orderFormat.FileName == formatFile) + { + settings.OrderFormatFile = ""; + SetUpOrderFormat(); + } + + if (programFormat != null && programFormat.FileName == formatFile) + { + settings.ProgramFormatFile = ""; + SetUpProgramFormat(); + } + + if (serviceTagFormat != null && serviceTagFormat.FileName == formatFile) + { + settings.ServiceTagFormatFile = ""; + SetUpServiceTagFormat(); + } + } + + private void OpenOrderFormatFileDialog() + { + openFormatFileType = "order"; + openFormatFileDialog.Title = "Wybierz szablon etykiety zlecenia"; + openFormatFileDialog.ShowDialog(this); + } + + private void OpenProgramFormatFileDialog() + { + openFormatFileType = "program"; + openFormatFileDialog.Title = "Wybierz szablon etykiety programowej"; + openFormatFileDialog.ShowDialog(this); + } + + private void OpenServiceTagFormatFileDialog() + { + openFormatFileType = "serviceTag"; + openFormatFileDialog.Title = "Wybierz szablon etykiety Service Tag"; + openFormatFileDialog.ShowDialog(this); + } + + private void OpenOrderXlsxFileDialog() + { + openXlsxFileType = "order"; + openXlsxFileDialog.Title = "Wybierz arkusz danych ze zleceniami"; + openXlsxFileDialog.ShowDialog(this); + } + + private void OpenWorkCenterXlsxFileDialog() + { + openXlsxFileType = "workCenter"; + openXlsxFileDialog.Title = "Wybierz arkusz danych z WorkCentrami"; + openXlsxFileDialog.ShowDialog(this); + } + + private IList CreateSeriesQuantities(Order order) + { + var workCenter = workCenterList.Find(wc => wc.Id == order.WorkCenter); + var minDivQuantity = workCenter == null ? 1 : workCenter.MinDivQuantity; + var prodLineCount = workCenter == null ? 1 : workCenter.ProdLineCount; + var orderDivMinQuantity = order.Quantity / minDivQuantity; + int seriesQuantity; + int lastSeriesQuantity; + int seriesCount; + + if (orderDivMinQuantity < prodLineCount) + { + seriesQuantity = minDivQuantity; + } + else + { + seriesQuantity = (int)Math.Floor((float)orderDivMinQuantity / prodLineCount * minDivQuantity); + } + + seriesCount = (int)Math.Ceiling((float)order.Quantity / seriesQuantity); + lastSeriesQuantity = order.Quantity % seriesQuantity; + + var seriesQuantities = new List(seriesCount); + + if (lastSeriesQuantity > 0) + { + --seriesCount; + } + + for (var i = 0; i < seriesCount; ++i) + { + seriesQuantities.Add(seriesQuantity); + } + + if (lastSeriesQuantity > 0) + { + seriesQuantities.Add(lastSeriesQuantity); + } + + return seriesQuantities; + } + + private void CreatePrintJobs(List printJobs, Order order, int seriesGroup) + { + var seriesQuantities = CreateSeriesQuantities(order); + + for (var i = 0; i < seriesQuantities.Count; ++i) + { + CreatePrintJobs(printJobs, order, seriesGroup, seriesQuantities, i); + } + } + + private void CreatePrintJobs(List printJobs, Order order, int seriesGroup, IList seriesQuantities, int seriesIndex) + { + var seriesNo = seriesQuantities.Count > 1 ? (seriesIndex + 1) : 0; + + foreach (var formatType in settings.LabelOrder) + { + switch (formatType) + { + case "order": + if (orderFormatCheckBox.Checked) + { + CreateOrderPrintJobs(printJobs, order, seriesGroup, seriesNo); + } + break; + + case "program": + if (programFormatCheckBox.Checked) + { + CreateProgramPrintJobs(printJobs, order, seriesGroup, seriesNo, seriesQuantities[seriesIndex]); + } + break; + + case "serviceTag": + if (serviceTagFormatCheckBox.Checked) + { + CreateServiceTagPrintJobs(printJobs, order, seriesGroup, seriesNo, seriesQuantities, seriesIndex); + } + break; + } + } + } + + private void CreateOrderPrintJobs(List printJobs, Order order, int seriesGroup, int seriesNo) + { + printJobs.Add(new OrderPrintJob(order.No, order.Quantity) + { + PrinterName = settings.OrderPrinterName, + LabelQuantity = 1, + SeriesNo = seriesNo, + SeriesGroup = seriesGroup + }); + } + + private void CreateProgramPrintJobs(List printJobs, Order order, int seriesGroup, int seriesNo, int labelQuantity) + { + printJobs.Add(new ProgramPrintJob(order.Nc12, order.ProgramName) + { + PrinterName = settings.ProgramPrinterName, + LabelQuantity = labelQuantity, + SeriesNo = seriesNo, + SeriesGroup = seriesGroup + }); + } + + private void CreateServiceTagPrintJobs(List printJobs, Order order, int seriesGroup, int series, IList seriesQuantities, int seriesIndex) + { + var firstSerialNo = 1; + + for (var i = 0; i < seriesIndex; ++i) + { + firstSerialNo += seriesQuantities[i]; + } + + printJobs.Add(new ServiceTagPrintJob(order.No, firstSerialNo) + { + PrinterName = settings.ServiceTagPrinterName, + LabelQuantity = seriesQuantities[seriesIndex], + SeriesNo = series, + SeriesGroup = seriesGroup + }); + } + + private void FocusAcceptButton() + { + if (AcceptButton is Button) + { + (AcceptButton as Button).Focus(); + } + } + } +} diff --git a/XiconfLabelPrinter/MainForm.resx b/XiconfLabelPrinter/MainForm.resx new file mode 100644 index 0000000..a309143 --- /dev/null +++ b/XiconfLabelPrinter/MainForm.resx @@ -0,0 +1,2768 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + + 125, 17 + + + 297, 17 + + + + + AAABAA0ACAgAAAEAIABIAQAA1gAAAAoKAAABACAA4AEAAB4CAAAODgAAAQAgAHADAAD+AwAAEBAAAAEA + IABoBAAAbgcAABYWAAABACAAEAgAANYLAAAYGAAAAQAgAIgJAADmEwAAICAAAAEAIACoEAAAbh0AACgo + AAABACAAaBoAABYuAAAwMAAAAQAgAKglAAB+SAAAQEAAAAEAIAAoQgAAJm4AAGBgAAABACAAqJQAAE6w + AACAgAAAAQAgACgIAQD2RAEAAAAAAAEAIAA5HAAAHk0CACgAAAAIAAAAEAAAAAEAIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtLS4taWlqXWlpamF1d + XZldXV2ZWlpamF5eXpdNTU2LuLi4/+Dg4P/b29v/1dXV/9XV1f/c3Nz/y8vL/66urv93d3f/qamp/5SU + lPudnZ36nZ2d+pSUlPuBgYH/d3d3/icnJ1I/Pz+Bl5eX7aSkpPqlpaX7kZGR6kBAQHklJSVQAAAAAAAA + AACqqqr1sLCw/7Kysv+ioqLvAAAAAAAAAAABAQEDBAQEDExMTIxXV1eaV1dXmklJSYkEBAQKAQEBAwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAoAAAACgAAABQAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDDYTExNEFhYWRhYWFkgXFxdJFxcXSRcXF0gVFRVGEhISRA0N + DTakpKT/y8vL/8LCwv/IyMj/ysrK/8rKyv/IyMj/x8fH/9HR0f+ioqL/l5eX+8jIyPbPz8/5wsLC+7y8 + vPq7u7v6xsbG+7+/v/mYmJj3lJSU+mVlZf+np6f/j4+P/5OTk/6cnJz/nJyc/piYmP58fHz/h4eH/3Nz + c/4pKSlcUlJSk2hoaMSzs7P/o6Oj/KWlpf2vr6//ZGRkvVRUVI4jIyNZAAAAAAAAAABNTU1tt7e3/Zyc + nPadnZ33srKy/UNDQ2MAAAAAAAAAAAMDAwYCAgIETU1Nf7e3t/+ioqL/oqKi/7S0tP9GRkZ2AgICBAMD + AwYAAAABAAAAAAgICCEeHh5LHR0dSB0dHUgdHR1LCAgIHwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAoAAAADgAAABwAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgMDAwMDAwMDAgICAgIC + AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMDAwICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJGw6OjqBOzs7hT4+PohAQECJQEBAikFB + QYtBQUGLPz8/ikBAQIk9PT2IOTk5hTk5OYEkJCRsl5eX/9ra2v/Ozs7/0dHR/9DQ0P/R0dH/0tLS/9LS + 0v/R0dH/0NDQ/9LS0v/T09P/4ODg/5qamv+bm5v32NjY98rKyvfQ0ND41NTU99LS0vfQ0ND30NDQ99PT + 0/fS0tL30NDQ+MHBwfe3t7f3kpKS92pqav2MjIz7x8fH+7u7u/ylpaX9nJyc/pmZmf6ZmZn+mZmZ/rCw + sP2hoaH9YWFh+3x8fPp+fn77VVVV+p2dnf+ampr/dnZ2/4yMjP6ioqL+pqam/qampv6jo6P+jo6O/nBw + cP+JiYn/mpqa/11dXfsZGRlbdnZ2yWlpacdycnLis7Oz/6Wlpfyjo6P+pKSk/qenp/yurq7/bGxs3Gho + aL9vb2/CFRUVVwAAAAAAAAAAAAAAAElJSXK7u7v+oKCg+aGhof2hoaH9oaGh+bGxsf4/Pz9mAAAAAAAA + AAAAAAAAAAAAAgcHBwgBAQECS0tLcre3t/mcnJzxnJyc9pycnPaenp7yr6+v+UJCQmkBAQECBwcHCgAA + AAEAAAAAAwMDBAAAAABNTU2CxsbG/66urv+vr6//r6+v/7CwsP+/v7//REREdgAAAAADAwMEAAAAAAAA + AAABAQECAAAAABYWFj9ERESMQ0NDiUNDQ4tDQ0OLREREiUJCQosTExM6AAAAAAEBAQIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAABAQEBAgICAgEBAQIBAQEBAQEBAQEBAQICAgICAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAgAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAA + AAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAADMBAQE4AgICPAQEBD4EBARABQUFQQUF + BUIFBQVCBQUFQQQEBEAEBAQ+AgICPAEBATgAAAAzAAAAHW1tbfGwsLD/rKys/7CwsP+xsbH/s7Oz/7Oz + s/+0tLT/tLS0/7Ozs/+zs7P/srKy/6+vr/+rq6v/sLCw/25ubvGZmZn/4ODg/tDQ0PzS0tL90NDQ/dDQ + 0P3Q0ND80dHR/NHR0fzQ0ND80NDQ/dDQ0P3V1dX91tbW/ODg4P6ampr/ioqK+8jIyP7Kysr9zc3N/tHR + 0f7S0tL+zs7O/svLy/7Ly8v+zs7O/tHR0f7S0tL+wMDA/qKiov2cnJz+hYWF+mVlZf1wcHD9vLy8/L+/ + v/2oqKj+lZWV/5CQkP6Ojo7/jo6O/5CQkP6VlZX/srKy/m5ubv1cXFz8h4eH/Hl5efxQUFD5mpqa/5+f + n/96enr/dXV1/56env+pqan/r6+v/6+vr/+qqqr/n5+f/3Nzc/95eXn/nZ2d/5SUlP9VVVX6EhISVnV1 + ddqLi4viY2Nj45+fn/yysrL/oaGh/qOjo/+kpKT/oqKi/rOzs/+VlZX6YGBg24KCgtpvb2/TDw8PUgAA + AAAAAAAEAAAACAAAABKenp7nsrKy/6CgoP2kpKT/pKSk/6CgoP2wsLD/jY2N3QAAAAcAAAADAAAAAAAA + AAAAAAACAwMDAwUFBQUCAgIIm5ub5rCwsP6fn5/8oqKi/qKiov6fn5/8r6+v/oyMjNwCAgICBQUFBQMD + AwMAAAACAAAAAAAAAAACAgICAAAAC6CgoOWzs7P8oKCg+qSkpPykpKT8oaGh+rKysvyRkZHbAAAABAIC + AgIAAAAAAAAAAAAAAAAAAAAAAgICAgAAAAqKioruq6ur/52dnf+hoaH/oaGh/52dnf+rq6v/fn5+5AAA + AAMCAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAQENw4ODkIPDw9BDw8PQg8PD0IPDw9BDg4OQgQE + BDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAAAMAAAADAAAAAwAA + AAMAAAADAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABYAAAAsAAAAAQAgAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAEAAAAAAQEBAQICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAQEBAQAAAAcAAAAjAAAAKgAAAC8AAAAyAAAANQAA + ADcAAAA4AAAAOQAAADoAAAA6AAAAOgAAADoAAAA5AAAAOAAAADcAAAA1AAAAMgAAAC8AAAAqAAAAIwAA + AAg8PDzVioqK+4uLi/6RkZH/lJSU/5aWlv+YmJj/mZmZ/5qamv+bm5v/m5ub/5ubm/+bm5v/mpqa/5mZ + mf+YmJj/lpaW/5SUlP+RkZH/jIyM/ouLi/w8PDzTfX19/+Pj4//U1NT+19fX/tfX1/7W1tb+1tbW/dbW + 1v3W1tb91tbW/dbW1v3W1tb91tbW/dbW1v3W1tb91tbW/dbW1v7X19f+1tbW/tPT0/7i4uL/fn5+/3Nz + c/rS0tL+xcXF/cnJyf7Jycn+ycnJ/snJyf7Jycn+yMjI/sfHx/7Hx8f+x8fH/sjIyP7IyMj+ycnJ/snJ + yf7Jycn+ycnJ/szMzP7Ozs792NjY/nJycvp3d3f72tra/8vLy/7Kysr/ysrK/8nJyf/MzMz/0NDQ/9TU + 1P/W1tb/19fX/9fX1//W1tb/09PT/8/Pz//Kysr/ysrK/83Nzf+8vLz/eHh4/q6urv95eXn7aWlp+3V1 + df+Pj4/92NjY/tPT0//T09P/ysrK/7i4uP+mpqb/mZmZ/5OTk/+UlJT/m5ub/6ioqP+6urr/0dHR/8XF + xf9fX1//VFRU/q+vr/2Hh4f/dnZ2+VxcXP1vb2/9eHh4/qurq/6fn5/+i4uL/nl5ef97e3v+h4eH/5GR + kf+Wlpb/lpaW/5CQkP+EhIT+eHh4/np6ev+Kior+V1dX/nt7e/5ZWVn+ioqK/Wtra/4tLS3rmZmZ/5GR + kfqOjo78hISE/FZWVv2UlJT/r6+v/rOzs/+0tLT/tLS0/7W1tf+2trb/tbW1/rKysv6RkZH/UlJS/ZGR + kf2Xl5f9lpaW+5WVlf8qKirtBgYGRnJycu66urr/srKy/7Gxsf9WVlb/zc3N/6ioqP+jo6P/paWl/6Wl + pf+mpqb/pqam/6SkpP+qqqr/w8PD/1RUVP+oqKj/paWl/66urv9tbW3qBQUFQQAAAAAAAAAgAAAATQAA + AE0AAABJGBgYmuLi4v+jo6P7np6e/5+fn/+fn5//n5+f/5+fn/+dnZ3+oqKi+9PT0/8MDAyGAAAAPQAA + AD8AAAA+AAAAGgAAAAAAAAACAgICAgAAAAABAQEBAAAAABMTE2ng4OD/qKio+aSkpP+lpaX/paWl/6Wl + pf+lpaX/pKSk/aioqPrS0tL/CQkJVgAAAAABAQEBAQEBAQICAgIAAAACAAAAAAAAAAEAAAADAQEBBwAA + AAMUFBRz39/f/6WlpfqgoKD/oqKi/6Kiov+ioqL/oqKi/6CgoP6lpaX70tLS/woKCmAAAAACAAAABQAA + AAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAExMTcd7e3v6mpqb5oaGh/qOjo/6jo6P+o6Oj/qOj + o/6hoaH9paWl+tDQ0P4KCgpeAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEEAAAAABUV + FXLq6ur9qKio+KSkpP2mpqb9pqam/aampv2mpqb9pKSk/Kmpqfnc3Nz9CgoKXwAAAAAAAAADAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAODg5wrq6u/5ubm/+YmJj/mZmZ/5mZmf+ZmZn/mZmZ/5iY + mP+bm5v/paWl/wYGBl0AAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAA + ADoAAAA6AAAAOgAAADoAAAA6AAAAOgAAADoAAAA6AAAAOgAAADoAAAAOAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABgA + AAAwAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCAgICAgICAgIC + AgICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIC + AgICAgICAgICAgICAgICAgICAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8P + D382Nja7PT09xEJCQslFRUXNSEhI0EpKStJMTEzUTU1N1U5OTtZOTk7XT09P109PT9dOTk7XTk5O1k1N + TdVMTEzUSkpK0khISNBFRUXNQkJCyT09PcQ3Nze7Dg4Ofmlpaf/e3t7/1NTU/9fX1//Y2Nj/2NjY/9nZ + 2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9jY2P/Y2Nj/19fX/9PT + 0//f39//ampq/2xsbPjU1NT7xsbG+8nJyfzJycn8ycnJ/MnJyfzJycn8ycnJ/MnJyfzJycn8yMjI/cjI + yP3Jycn8ycnJ/MnJyfzJycn8ycnJ/MjIyPzHx8f8yMjI/MrKyvvU1NT8bW1t+WxsbPvZ2dn/y8vL/cvL + y//MzMz/zMzM/8vLy//Ly8v/ysrK/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8rKyv/Ly8v/y8vL/87O + zv/T09P/z8/P/7i4uP3b29v/a2tr+2xsbPzLy8v/vr6+/svLy//Kysr/ycnJ/8vLy//R0dH/1tbW/9jY + 2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9XV1f/Pz8//zMzM/7+/v/+1tbX/jIyM/3V1df6dnZ3/cnJy+mRk + ZPpra2v/bW1t/dDQ0P7X19f/1dXV/8rKyv+0tLT/nJyc/4qKiv9/f3//enp6/3p6ev+AgID/jY2N/6Cg + oP+2trb/2dnZ/4WFhf9ERET/ZmZm/sHBwf2EhIT/eHh4+VRUVP16enr9cHBw/pmZmf6ZmZn+hoaG/nZ2 + dv52dnb/hoaG/peXl/+jo6P/qKio/6ioqP+hoaH/lJSU/4KCgv5xcXH/fHx8/nFxcf5kZGT+goKC/khI + SP6VlZX9XFxc/yIiIuaWlpb/k5OT+YmJifuTk5P7X19f+3Fxcf6mpqb/sLCw/rCwsP+urq7/rq6u/6+v + r/+wsLD/srKy/7Ozs/6pqan/aWlp/mNjY/uenp77kJCQ+5ubm/qQkJD/ISEh6AQEBEBqamrvxsbG/76+ + vv/IyMj/g4OD/3l5ef/S0tL/oKCg/6ampv+mpqb/pqam/6ampv+mpqb/p6en/6Ojo//R0dH/b29v/4aG + hv+7u7v/srKy/7u7u/9lZWXqAwMDOwAAAAAAAAAlAgICaQMDA2cFBQVmCAgIa39/f+7b29v/m5ub/aKi + ov+goKD/oKCg/6CgoP+goKD/oaGh/5ubm/3W1tb/ampq4wMDA1gAAABYAAAAVwAAAFgAAAAfAAAAAAAA + AAICAgICAAAAAAAAAAACAgICAAAAAHl5eeHc3Nz/oKCg/Kampv+lpaX/paWl/6Wlpf+lpaX/pqam/6Cg + oPvX19f/ZWVl0QAAAAACAgICAAAAAAAAAAACAgICAAAAAgAAAAAAAAABAAAAAwAAAAMEBAQEAAAADHp6 + euPa2tr/oKCg/aampv+lpaX/paWl/6Wlpf+lpaX/pqam/6GhofzY2Nj/ZWVl1AAAAAMDAwMDAAAAAwAA + AAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAAAACXp6euPZ2dn/mZmZ/Z+fn/+enp7/np6e/56e + nv+enp7/n5+f/5qamvzV1dX/ZmZm1AAAAAADAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAADAwMDAAAACHh4eODY2Nj9oKCg+6ampv2lpaX9paWl/aWlpf2lpaX9pqam/aCgoPrV1dX9ZGRk0gAA + AAACAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAACYKCguzn5+f/paWl/6ys + rP+qqqr/qqqq/6qqqv+qqqr/q6ur/6ampv/l5eX/bGxs3QAAAAADAwMDAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAABAQEBAAAABCwsLLZnZ2fXZ2dn1WlpaddpaWnXaWlp12lpaddpaWnXaGho12dn + Z9VnZ2fXJCQkqQAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEDAwMDAwMDAwMDAwMDAwMDAwMDAwMD + AwMDAwMDAwMDAwMDAwMDAwMDAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAMAAAADAAAAAwAA + AAMAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA + AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAQEBAQECAgICAgICAgEB + AQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgICAgICAgIBAQEBAAAADQAA + AEgAAABaAAAAYQAAAGgAAABtAAAAcQAAAHQAAAB3AAAAeQAAAHsAAAB8AAAAfQAAAH4AAAB/AAAAfwAA + AH8AAAB/AAAAfgAAAH0AAAB8AAAAewAAAHkAAAB3AAAAdAAAAHEAAABtAAAAaAAAAGIAAABaAAAASgAA + AA0bGxvVfX19/4+Pj/+Tk5P/mZmZ/5ycnP+enp7/oaGh/6Ojo/+kpKT/paWl/6ampv+np6f/qKio/6io + qP+oqKj/qKio/6ioqP+oqKj/p6en/6ampv+lpaX/pKSk/6Ojo/+hoaH/np6e/5ycnP+ZmZn/lJSU/4+P + j/9/f3//Ghoa0ExMTP/h4eH81dXV+tbW1vvW1tb71tbW+9XV1fvV1dX61NTU+tTU1PrU1NT61NTU+tTU + 1PrU1NT609PT+tPT0/rT09P609PT+tTU1PrU1NT61NTU+tTU1PrU1NT61NTU+tXV1frV1dX61tbW+9bW + 1vvW1tb71dXV+uHh4fxNTU3/RkZG+dDQ0P7Hx8f9yMjI/snJyf7Jycn+ycnJ/8nJyf/Kysr/ysrK/8rK + yv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ycnJ/8nJ + yf/Jycn+ycnJ/sbGxv7Gxsb90dHR/kdHR/lISEj609PT/8nJyf7Kysr/zMzM/8vLy//Ly8v/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/y8vL/8zM + zP/Ly8v/ysrK/8rKyv/Nzc3/19fX/83Nzf7S0tL/SEhI+khISPrV1dX/zc3N/s3Nzf/Ly8v/zMzM/8zM + zP/Ly8v/y8vL/8zMzP/Ly8v/y8vL/8rKyv/Kysr/ycnJ/8nJyf/Jycn/ycnJ/8rKyv/Ly8v/y8vL/8vL + y//MzMz/zMzM/8vLy//V1dX/0tLS/8bGxv+QkJD/ubm5/tnZ2f9GRkb5SUlJ+9HR0f+6urr+w8PD/83N + zf/Ly8v/y8vL/8vLy//Jycn/ycnJ/8rKyv/Pz8//09PT/9fX1//Y2Nj/2dnZ/9nZ2f/Y2Nj/1tbW/9LS + 0v/Nzc3/ysrK/8jIyP/Jycn/zs7O/52dnf++vr7/X19f/3l5ef9TU1P+w8PD/0tLS/pPT0/6dXV1/01N + Tf1oaGj/w8PD/8rKyv/IyMj/0NDQ/9nZ2f/a2tr/0dHR/7+/v/+rq6v/mpqa/4+Pj/+JiYn/ioqK/5GR + kf+enp7/sLCw/8TExP/U1NT/2NjY/+Li4v+MjIz/QEBA/0FBQf9MTEz//////2NjY/6ZmZn/U1NT+VNT + U/iZmZn/gICA/YaGhv7W1tb/2tra/9bW1v+4uLj/i4uL/2dnZ/9SUlL/UFBQ/1hYWP9jY2P/bW1t/3Fx + cf9wcHD/a2tr/2FhYf9WVlb/T09P/1ZWVv9ubm7/oKCg/56env9cXFz/jo6O/5CQkP9cXFz+c3Nz/eHh + 4f9KSkr3JCQk/Wtra/1cXFz+Y2Nj/mFhYf5hYWH/WFhY/1tbW/92dnb/lZWV/7W1tf/Jycn/09PT/9fX + 1//Y2Nj/2NjY/9jY2P/Y2Nj/1tbW/9HR0f/ExMT/rKys/4mJif9ra2v/Xl5e/1hYWP9lZWX/aWlp/lZW + Vv5jY2P+aGho/SYmJv8JCQnMjIyM/6mpqfmampr9nZ2d/ZycnP2np6f8U1NT/GBgYP6Li4v/jY2N/ouL + i/+JiYn/iYmJ/4mJif+Kior/ioqK/4uLi/+MjIz/jY2N/5GRkf+Wlpb+lZWV/1tbW/5TU1P8pqam/J2d + nfydnZ38n5+f/KmpqfmJiYn/CwsLzgAAACk6Ojrny8vL/9/f3//c3Nz/3Nzc/97e3v+NjY3/S0tL//f3 + 9//Hx8f/xcXF/8bGxv/Gxsb/xsbG/8fHx//Hx8f/x8fH/8fHx//IyMj/x8fH/8rKyv/y8vL/QUFB/5yc + nP/Z2dn/1dXV/9XV1f/Z2dn/xMTE/zQ0NOIAAAAkAAAAAAAAACgRERG4NDQ02S8vL9cvLy/YMjIy1jMz + M9ZSUlL5/v7+/5CQkP6Ghob/iIiI/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4iIiP+Ghob/jo6O/vb2 + 9v89PT3zKSkpxiIiIsYgICDGICAgxCQkJMUKCgqrAAAAIgAAAAAAAAABAQEBAQAAAAAAAAACAAAAAQAA + AAAAAAAAAAAABkZGRt//////tLS0/K6urv+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/66u + rv+ysrL7+fn5/y4uLskAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAQAAAAAAAAABAQEBAQIC + AgICAgICAgICAgUFBQUBAQEGSEhI3/////+srKz9pKSk/6ampv+mpqb/pqam/6ampv+mpqb/pqam/6am + pv+mpqb/paWl/6qqqvz4+Pj/MTExywEBAQEDAwMDAQEBAQEBAQEBAQEBAAAAAgAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAwMDAwAAAAdISEjg/v7+/5ycnP2Wlpb/l5eX/5eXl/+Xl5f/l5eX/5eX + l/+Xl5f/l5eX/5eXl/+Wlpb/nZ2d/Pn5+f8wMDDLAAAAAAICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAAAAB0hISOD+/v7/vb29/bm5uf+7u7v/u7u7/7u7 + u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7m5uf++vr78+/v7/zAwMMsAAAAAAgICAgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMAAAAHSUlJ4P7+/v+EhIT9enp6/3t7 + e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/enp6/4KCgvz29vb/MTExywAAAAACAgICAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgAAAAZGRkbf/Pz8/9XV + 1fzT09P/1NTU/9TU1P/U1NT/1NTU/9TU1P/U1NT/1NTU/9TU1P/T09P/1tbW+/r6+v8vLy/KAAAAAAEB + AQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAAAAB0xM + TN3/////fX19+HNzc/p1dXX6dHR0+nR0dPp0dHT6dHR0+nR0dPp0dHT6dXV1+nNzc/p+fn73/////zMz + M8gAAAAAAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIC + AgIAAAAGOjo67NPT0//MzMz/zc3N/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zc3N/87O + zv/S0tL/JiYm1gAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABbAAAAfwAAAH0AAAB/AAAAfwAAAH8AAAB/AAAAfwAAAH8AAAB/AAAAfwAA + AH8AAAB/AAAAfQAAAH8AAABQAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA + AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAKAAAAFAAAAABACAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAQEBAQEBAQEBAQEBAQIC + AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC + AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEB + AQEBAQEBAQEBAQAAAAAAAAACAAAAAAAAAAAAAAAFAAAACgAAAA4AAAATAAAAFgAAABkAAAAbAAAAHgAA + AB8AAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAmAAAAJgAAACcAAAAnAAAAJgAAACYAAAAmAAAAJQAA + ACQAAAAjAAAAIgAAACEAAAAfAAAAHgAAABsAAAAZAAAAFgAAABMAAAAPAAAACgAAAAYAAAAAAAAAAAAA + AFUHBwfCHR0d3CIiIuUnJyfqKysr7i8vL/EyMjLzNDQ09Tc3N/c5OTn4Ojo6+jw8PPs9PT38Pj4+/D8/ + P/0/Pz/+QEBA/kBAQP5AQED+QEBA/kBAQP5AQED+Pz8//j8/P/0+Pj78PT09/Dw8PPs6Ojr6OTk5+Dc3 + N/c0NDT1MjIy8y8vL/ErKyvuJycn6yIiIuUeHh7dCAgIxwAAAE4ZGRn9rq6u/8vLy//Ly8v/z8/P/9HR + 0f/S0tL/09PT/9PT0//U1NT/1dXV/9XV1f/V1dX/1tbW/9bW1v/W1tb/19fX/9fX1//X19f/19fX/9fX + 1//X19f/19fX/9fX1//W1tb/1tbW/9bW1v/W1tb/1dXV/9XV1f/U1NT/09PT/9PT0//S0tL/0dHR/8/P + z//Ly8v/zMzM/66urv8XFxf4Kioq98/Pz/zMzMz8y8vL/cvLy/3Ly8v9ysrK/crKyv7Kysr+ysrK/srK + yv7Jycn+ycnJ/snJyf7Jycn+ycnJ/snJyf7Jycn+ycnJ/snJyf7Jycn+ycnJ/snJyf7Jycn+ycnJ/snJ + yf7Jycn+ycnJ/snJyf7Kysr+ysrK/srKyv7Kysr+ysrK/cvLy/3Ly8v9y8vL/czMzPzPz8/8Kysr+Scn + J/nIyMj/y8vL/crKyv7Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8rKyv7Ly8v9yMjI/ycnJ/knJyf6ycnJ/8zMzP7Ly8v/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/y8vL/8vLy//MzMz/ysrK/8jI + yP/IyMj/y8vL/srKyv8nJyf5KCgo+cnJyf/Ly8v+ysrK/8vLy//MzMz/y8vL/8vLy//MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8vLy//Ly8v/zMzM/8rKyv/Kysr/ysrK/9LS0v/d3d3/2dnZ/8vLy/7Jycn/Jycn+Cgo + KPnJycn/zs7O/s7Ozv/Nzc3/y8vL/8zMzP/MzMz/zMzM/8zMzP/MzMz/y8vL/8vLy//MzMz/y8vL/8vL + y//Ly8v/y8vL/8rKyv/Kysr/ysrK/8rKyv/Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//MzMz/zMzM/8rK + yv/U1NT/1dXV/9LS0v+srKz/Wlpa/3d3d//Q0ND+ysrK/yYmJvgnJyf6y8vL/8HBwf67u7v/xcXF/83N + zf/Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Jycn/yMjI/8nJyf/Ly8v/zs7O/9DQ0P/S0tL/09PT/9PT + 0//S0tL/0NDQ/83Nzf/Kysr/ycnJ/8jIyP/Kysr/y8vL/8rKyv/U1NT/pKSk/5eXl/+/v7//Li4u/5CQ + kP9QUFD/aGho/tbW1v8kJCT3MjIy+ZycnP9CQkL+VlZW/29vb//IyMj/y8vL/8rKyv/Kysr/yMjI/8vL + y//S0tL/2dnZ/93d3f/Z2dn/0NDQ/8PDw/+4uLj/r6+v/6urq/+srKz/sbGx/7u7u//Hx8f/09PT/9vb + 2//c3Nz/19fX/83Nzf/Q0ND/paWl/zk5Of9PT0//PDw8/2BgYP//////2dnZ/y8vL/7T09P/JCQk+DU1 + NfiPj4//UFBQ/XR0dP9eXl7/ycnJ/8/Pz//Nzc3/1dXV/9zc3P/R0dH/srKy/4iIiP9iYmL/R0dH/zg4 + OP81NTX/Nzc3/zk5Of86Ojr/Ojo6/zg4OP82Njb/NjY2/zw8PP9OTk7/bW1t/5aWlv+9vb3/4ODg/7Gx + sf9BQUH/UFBQ/3Nzc/9GRkb/cHBw/z8/P/9+fn792NjY/yQkJPcmJib4uLi4/pqamv6RkZH+paWl/8PD + w/+/v7//wcHB/5+fn/9iYmL/Ozs7/zo6Ov9RUVH/dXV1/5eXl/+xsbH/wsLC/83Nzf/S0tL/1dXV/9TU + 1P/R0dH/ysrK/76+vv+qqqr/jY2N/2pqav9JSUn/Nzc3/0RERP+BgYH/gYGB/3l5ef/Ly8v/s7Oz/2pq + av+IiIj+ycnJ/ry8vP4lJSX3BgYG+Tk5Of09PT3+Pz8//jw8PP41NTX/NjY2/zU1Nf89PT3/dHR0/6io + qP/AwMD/z8/P/8/Pz//Ly8v/xsbG/8LCwv+/v7//vr6+/729vf+9vb3/vr6+/7+/v//CwsL/xsbG/8vL + y//Pz8//ysrK/7a2tv+Xl5f/XFxc/0BAQP9DQ0P/MzMz/zk5Of9GRkb+QUFB/zIyMv44ODj9DAwM/wEB + Aa5/f3//1NTU+ru7u/6/v7/+wMDA/r6+vv7FxcX+ubm5/i8vL/41NTX+a2tr/2tra/5sbGz/bW1t/29v + b/9wcHD/cXFx/3Jycv9ycnL/c3Nz/3Nzc/90dHT/dHR0/3R0dP90dHT/c3Nz/3V1df5ycnL/MTEx/jg4 + OP65ubn+v7+//r+/v/6/v7/+vb29/ru7u/7W1tb6eXl5/wMDA60AAAAWDQ0N2KCgoP/h4eH529vb+9zc + 3Pvc3Nz73d3d+9TU1PuPj4/7LS0t/vf39////////Pz8//7+/v/+/v7//v7+//7+/v////////////// + //////////////////////////////39/f//////4eHh/ygoKP6jo6P919fX/dzc3P3c3Nz93Nzc/dra + 2v3g4OD7mJiY/woKCtAAAAARAAAAAAAAACAEBATKXV1d/3Nzc/9tbW3/bW1t/2tra/9vb2//cHBw/y8v + L//8/Pz/qamp/z4+Pv9ERET/QUFB/0FBQf9BQUH/QUFB/0FBQf9AQED/QEBA/0BAQP9AQED/QEBA/0ND + Q/89PT3/oqKi/+3t7f8iIiL/ZWVl/1hYWP9WVlb/V1dX/1ZWVv9ZWVn/TExM/wEBAcAAAAAZAAAAAAAA + AAEAAAAAAAAABQAAAE8AAABcAAAAWQAAAFkAAABXAAAAVgAAAFceHh7n+vr6//z8/P34+Pj/+vr6//r6 + +v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/9/f3//39/f3n5+f/BgYG0AAA + AEAAAABBAAAAQAAAAD8AAAA/AAAAQQAAADkAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAADAwMDAwMDAwMD + AwMDAwMDAwMDAwQEBAQDAwMDHh4e2f39/f+4uLj8XFxc/2BgYP9eXl7/Xl5e/15eXv9eXl7/Xl5e/15e + Xv9eXl7/Xl5e/15eXv9eXl7/YWFh/1xcXP+vr6/78fHx/wkJCb0DAwMDAwMDAwMDAwMDAwMDAwMDAwMD + AwMCAgICAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMBAQEDAAAAByAg + INz7+/v/5+fn/cfHx//Kysr/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8rK + yv/Gxsb/4+Pj/Onp6f8KCgrBAAAAAgAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAQfHx/c+/v7/9bW1v2mpqb/qamp/6io + qP+oqKj/qKio/6ioqP+oqKj/qKio/6ioqP+oqKj/qKio/6ioqP+pqan/paWl/9XV1fzs7Oz/CQkJwQAA + AAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAEBAQEAAAAEHh4e3Pz8/P/CwsL9enp6/35+fv98fHz/fHx8/3x8fP98fHz/fHx8/3x8 + fP98fHz/fHx8/3x8fP98fHz/fn5+/3l5ef/AwMD87+/v/wkJCcEAAAAAAAAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAABCAg + INz6+vr/8fHx/d7e3v/g4OD/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg + 4P/d3d3/7+/v/Ojo6P8KCgrBAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAQeHh7c/f39/66urv1KSkr/T09P/01N + Tf9NTU3/TU1N/01NTf9NTU3/TU1N/01NTf9NTU3/TU1N/01NTf9PT0//SUlJ/6ioqPzy8vL/CAgIwQAA + AAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAADISEh2/n5+f////////////////////////////////////////////// + ////////////////////////////////////////5eXl/wsLC8AAAAAAAAAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx0d + Hdr7+/v+o6Oj/D4+Pv5ERET+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kFBQf5BQUH+QUFB/kRE + RP49PT3+o6Oj+/Hx8f4ICAi/AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAQiIiLg///////////v7+//8fHx//Dw + 8P/w8PD/8PDw//Dw8P/w8PD/8PDw//Dw8P/w8PD/8PDw//Dw8P/x8fH/7u7u///////09PT/CwsLxQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABCgoKxE9PT/5UVFT8V1dX/ldXV/5XV1f+V1dX/ldXV/5XV1f+V1dX/ldX + V/5XV1f+V1dX/ldXV/5XV1f+V1dX/ldXV/5UVFT7SEhI/gMDA6gAAAAAAAAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AA8AAAAnAAAAJgAAACYAAAAnAAAAJwAAACcAAAAnAAAAJwAAACcAAAAnAAAAJwAAACcAAAAnAAAAJwAA + ACcAAAAmAAAAJgAAACcAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMD + AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAKAAAADAAAABgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAAAQAAAAEAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAA + AAMAAAAEAAAABAAAAAQAAAADAAAAAAAAAAABAQEBAwMDAwMDAwMDAwMDAwMDAwICAgICAgICAgICAgIC + AgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgIC + AgICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMBAQEBAAAAAAAAAAAAAABEAAAAdAAAAIIAAACNAAAAlAAA + AJoAAACfAAAApAAAAKcAAACrAAAArgAAALAAAACyAAAAtQAAALYAAAC4AAAAuQAAALoAAAC7AAAAvAAA + AL0AAAC9AAAAvQAAAL0AAAC9AAAAvQAAALwAAAC7AAAAugAAALkAAAC4AAAAtgAAALUAAACzAAAAsAAA + AK4AAACrAAAApwAAAKQAAACfAAAAmgAAAJQAAACNAAAAhAAAAHcAAABKAAAAAAAAAKkqKir/ZmZm/21t + bf92dnb/fHx8/4GBgf+FhYX/iIiI/4uLi/+NjY3/kJCQ/5KSkv+Tk5P/lZWV/5aWlv+YmJj/mZmZ/5mZ + mf+ampr/m5ub/5ubm/+bm5v/nJyc/5ycnP+bm5v/m5ub/5ubm/+ampr/mZmZ/5mZmf+YmJj/lpaW/5WV + lf+Tk5P/kpKS/5CQkP+Ojo7/i4uL/4iIiP+FhYX/gYGB/3x8fP92dnb/bm5u/2hoaP8rKyv/AAAAmwsL + C/+5ubn94ODg+tjY2Pva2tr62dnZ+tnZ2fvZ2dn72NjY+9jY2PvX19f719fX+9fX1/vX19f71tbW+9bW + 1vvW1tb71tbW+9bW1vvW1tb71tbW+9bW1vvW1tb71tbW+9bW1vvW1tb71tbW+9bW1vvW1tb71tbW+9bW + 1vvW1tb71tbW+9bW1vvX19f719fX+9fX1/vX19f72NjY+9jY2PvZ2dn72dnZ+9nZ2fra2tr62NjY++Dg + 4Pm4uLj9CwsL/w4ODvW4uLj+zMzM/cfHx/7IyMj+yMjI/8jIyP/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJ + yf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJ + yf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/yMjI/8jI + yP/IyMj+x8fH/szMzP65ubn+Dw8P9w4ODve4uLj/0NDQ/crKyv/Ly8v/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/Ly8v/ysrK/9DQ0P24uLj/Dg4O+A8PD/i4uLj/0NDQ/srKyv/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8vLy//Ly8v/zMzM/8vLy//Ly8v/y8vL/8/Pz/64uLj/Dg4O+A4ODvm5ubn/0NDQ/svL + y//MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/y8vL/8zMzP/MzMz/ycnJ/8vLy//Kysr/ycnJ/9DQ0P64uLj/DQ0N+A4O + Dvi5ubn/z8/P/srKyv/Ly8v/y8vL/8zMzP/Ly8v/y8vL/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/Ly8v/y8vL/8zMzP/Ly8v/ycnJ/8vLy//Kysr/2NjY/9PT0//W1tb/09PT/87O + zv64uLj/Dg4O9w8PD/i4uLj/0NDQ/szMzP/Ozs7/zc3N/8vLy//MzMz/y8vL/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/zMzM/8zMzP/MzMz/zMzM/8rKyv/Pz8//2dnZ/83Nzf/T09P/fn5+/ygo + KP8vLy//mZmZ/9ra2v62trb/DQ0N9g4ODvi6urr/zc3N/sPDw//AwMD/yMjI/83Nzf/Ly8v/zMzM/8zM + zP/MzMz/y8vL/8vLy//Ly8v/y8vL/8vLy//Jycn/ycnJ/8jIyP/Jycn/ysrK/8vLy//MzMz/zMzM/8zM + zP/MzMz/y8vL/8nJyf/Jycn/yMjI/8nJyf/Kysr/y8vL/8vLy//Ly8v/ysrK/9HR0f++vr7/fn5+/8LC + wv+ampr/FRUV/7S0tP+YmJj/ExMT/7y8vP68vLz/DAwM9w8PD/ezs7P/VlZW/jQ0NP9MTEz/bm5u/83N + zf/Ly8v/y8vL/8vLy//Ly8v/y8vL/8nJyf/IyMj/y8vL/9DQ0P/X19f/3Nzc/93d3f/b29v/1tbW/9DQ + 0P/MzMz/ysrK/8vLy//Nzc3/0tLS/9jY2P/c3Nz/3d3d/9vb2//V1dX/zs7O/8nJyf/Hx8f/y8vL/8fH + x/8zMzP/RERE/0JCQv9ERET/dnZ2////////////PDw8/4WFhf7Gxsb/CgoK9hISEvilpaX/Ojo6/nl5 + ef9/f3//UVFR/8XFxf/Jycn/yMjI/8nJyf/Jycn/z8/P/9nZ2f/d3d3/0tLS/7e3t/+VlZX/cXFx/1NT + U/8+Pj7/MDAw/ykpKf8kJCT/IiIi/yMjI/8lJSX/Kioq/zMzM/9FRUX/XV1d/35+fv+ioqL/xMTE/9jY + 2P/b29v/2tra/7a2tv8ODg7/srKy/x8fH/9ra2v/HR0d/7S0tP+bm5v/Dw8P/7i4uP66urr/CwsL9g8P + D/bExMT/hoaG/Xp6ev9vb2//kpKS/97e3v/Z2dn/2dnZ/9vb2//Z2dn/u7u7/4WFhf9OTk7/KSkp/x4e + Hv8pKSn/QUFB/11dXf94eHj/jIyM/5qamv+jo6P/p6en/6ampv+goKD/lpaW/4WFhf9vb2//VFRU/zc3 + N/8iIiL/Hx8f/zU1Nf9kZGT/nZ2d/9TU1P+Li4v/MjIy/3t7e//q6ur/iIiI/zU1Nf87Ozv/paWl/+np + 6f3CwsL/DQ0N9QkJCfd1dXX+jY2N/oiIiP6MjIz/iYmJ/4CAgP+AgID/goKC/3Z2dv88PDz/ICAg/zQ0 + NP9nZ2f/nJyc/8PDw//Z2dn/4+Pj/+Xl5f/j4+P/4ODg/93d3f/c3Nz/29vb/9vb2//c3Nz/3t7e/+Hh + 4f/k5OT/5eXl/+Hh4f/T09P/tra2/4mJif9SUlL/JiYm/ygoKP9jY2P/iYmJ/4qKiv9/f3//jY2N/4eH + h/+Kior/iYmJ/oCAgP51dXX+CwsL+gAAAPAtLS39OTk5/TQ0NP82Njb+NjY2/zg4OP84ODj/Nzc3/z09 + Pf9zc3P/qKio/8fHx//AwMD/uLi4/7Gxsf+srKz/qamp/6mpqf+pqan/qqqq/6qqqv+qqqr/qqqq/6qq + qv+qqqr/qqqq/6mpqf+oqKj/qKio/6mpqf+srKz/srKy/7m5uf/AwMD/vb29/4+Pj/9RUVH/NjY2/zY2 + Nv84ODj/NjY2/zg4OP83Nzf+NDQ0/zw8PP4rKyv9BwcH/wAAAIxWVlb/6urq+tfX1/7X19f/2NjY/tjY + 2P/Y2Nj/1dXV/+Xl5f+ZmZn/BwcH/w4ODv9TU1P/YGBg/11dXf9fX1//YGBg/2BgYP9hYWH/YmJi/2Ji + Yv9jY2P/ZGRk/2RkZP9lZWX/ZWVl/2ZmZv9mZmb/Z2dn/2hoaP9oaGj/Z2dn/2xsbP9SUlL/CwsL/w0N + Df+tra3/4ODg/9TU1P/X19f/19fX/9fX1/7W1tb/2NjY/ujo6PpPT0//AAAAiQEBAQgAAADDZmZm/9jY + 2PjQ0ND80NDQ/NHR0fzR0dH80NDQ/NTU1Py/v7/8i4uL/BcXF/7h4eH///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //+7u7v/Hx8f/qGhofvHx8f71tbW+9TU1PvV1dX71dXV+9TU1PvU1NT71tbW+FtbW/8AAAC5AQEBBAAA + AAABAQEUAAAAxk5OTv+pqan/qamp/6ioqP+np6f/p6en/6SkpP+pqan/rKys/x8fH//Y2Nj/+/v7/19f + X/9OTk7/UFBQ/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09P + T/9OTk7/VVVV//j4+P+0tLT/IyMj/6ampv+SkpL/j4+P/5CQkP+QkJD/kJCQ/5CQkP+Tk5P/Q0ND/wAA + ALsBAQEOAAAAAAAAAAEAAAAAAQEBCAAAAIMAAADLAAAAzgAAAM0AAADMAAAAywAAAMoAAADIAAAAyAMD + A/bf39///v7+/p6env+VlZX/lpaW/5aWlv+Wlpb/lpaW/5aWlv+Wlpb/lpaW/5aWlv+Wlpb/lpaW/5aW + lv+Wlpb/lpaW/5aWlv+VlZX/mZmZ//z8/P2+vr7/AAAA6AAAAK4AAACvAAAArgAAAK4AAACtAAAArQAA + AK0AAACtAAAAcQEBAQMAAAAAAAAAAQAAAAAAAAABAAAAAAICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAUFBdbd3d3///////////////////////////////////////////////////////// + //////////////////////////////////////////////////+7u7v/AAAAsgMDAwMCAgICAgICAgIC + AgICAgICAgICAgICAgICAgICAgICAgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAAEAAAABAAAAAwQEBNjf39///f39/Tk5Of8hISH/IyMj/yIiIv8iIiL/IiIi/yIi + Iv8iIiL/IiIi/yIiIv8iIiL/IiIi/yIiIv8iIiL/IiIi/yIiIv8iIiL/Kioq//f39/vAwMD/AAAAtgEB + AQIAAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQEBNje3t7//////+7u7v/t7e3/7u7u/+7u + 7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/t7e3/6+vr//7+ + /v68vLz/AAAAtgEBAQEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQEBNje3t7//v7+/snJ + yf/Gxsb/xsbG/8bGxv/Gxsb/xsbG/8bGxv/Gxsb/xsbG/8bGxv/Gxsb/xsbG/8bGxv/Gxsb/xsbG/8bG + xv/Gxsb/x8fH//7+/v68vLz/AAAAtgEBAQEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQE + BNjg4OD/+/v7/UFBQf8uLi7/MDAw/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8v + L/8vLy//Ly8v/zAwMP8vLy//OTk5//v7+/u/v7//AAAAtgEBAQEAAAACAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAgUFBdjd3d3///////////////////////////////////////////////////////// + //////////////////////////////////////////////////+7u7v/AAAAtgEBAQEAAAACAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQEBNjf39///f39/XJycv9kZGT/ZWVl/2RkZP9kZGT/ZGRk/2Rk + ZP9kZGT/ZGRk/2RkZP9kZGT/ZGRk/2RkZP9kZGT/ZGRk/2VlZf9kZGT/ampq//v7+/u+vr7/AAAAtgEB + AQEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQEBNjf39///f39/YaGhv95eXn/e3t7/3p6 + ev96enr/enp6/3p6ev96enr/enp6/3p6ev96enr/enp6/3p6ev96enr/enp6/3t7e/96enr/f39///z8 + /Py+vr7/AAAAtgEBAQEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgUFBdjd3d3///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////+7u7v/AAAAtgEBAQEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQE + BNfe3t7/9/f3/D8/P/8uLi7/MDAw/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8v + L/8vLy//Ly8v/zAwMP8uLi7/Ojo6//r6+vu9vb3/AAAAtQAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAgUFBdXp6en7/////8zMzPvIyMj7ycnJ+8nJyfvJycn7ycnJ+8nJyfvJycn7ycnJ+8nJ + yfvJycn7ycnJ+8nJyfvJycn7ycnJ+8nJyfvIyMj7ysrK+//////Gxsb7AAAAtAEBAQEAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQMDA+Opqan/xMTE/87Ozv/R0dH/0dHR/9HR0f/R0dH/0dHR/9HR + 0f/R0dH/0dHR/9HR0f/R0dH/0dHR/9HR0f/R0dH/0dHR/9HR0f/R0dH/zc3N/8XFxf+Pj4//AAAAvgAA + AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAG8AAAC9AAAAugAAAL0AAAC9AAAAvQAA + AL0AAAC9AAAAvQAAAL0AAAC9AAAAvQAAAL0AAAC9AAAAvQAAAL0AAAC9AAAAvQAAAL0AAAC9AAAAvQAA + ALsAAAC8AAAAVwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA + AABAAAAAgAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAAMAAAADAAAAAgAAAAIAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAgAA + AAIAAAADAAAAAwAAAAIAAAAAAAAAAgAAAAABAQEBAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMD + AwMDAwMDAgICAwICAgQCAgIGAgICBwICAggCAgIJAgICCgICAgsCAgIMAgICDQICAg0CAgIOAgICDgIC + Ag8CAgIPAgICDwICAhACAgIQAgICEAICAhACAgIQAgICEAICAhACAgIQAgICDwICAg8CAgIPAgICDgIC + Ag4CAgINAgICDQICAgwCAgILAgICCgICAgkCAgIIAgICBwICAgYCAgIEAgICAwMDAwMDAwMDAwMDAwMD + AwMDAwMDAwMDAwMDAwMCAgICAgICAgEBAQEAAAAAAAAAAgAAAAAAAAApAAAAhAAAAJ4AAACrAAAAtgAA + AL4AAADDAAAAyAAAAMwAAADQAAAA1AAAANcAAADZAAAA3AAAAN4AAADgAAAA4gAAAOQAAADlAAAA5wAA + AOgAAADpAAAA6gAAAOsAAADsAAAA7QAAAO0AAADtAAAA7gAAAO4AAADuAAAA7gAAAO4AAADuAAAA7QAA + AO0AAADtAAAA7AAAAOsAAADqAAAA6QAAAOgAAADnAAAA5QAAAOQAAADiAAAA4AAAAN4AAADcAAAA2gAA + ANcAAADUAAAA0AAAAM0AAADIAAAAxAAAAL4AAAC3AAAArQAAAKAAAACLAAAAMQAAAAAAAAB4AAAA9iQk + JP9GRkb/Tk5O/1ZWVv9dXV3/YmJi/2dnZ/9sbGz/b29v/3Nzc/92dnb/eXl5/3t7e/9+fn7/gICA/4KC + gv+Dg4P/hYWF/4aGhv+IiIj/iYmJ/4qKiv+Li4v/jIyM/4yMjP+NjY3/jY2N/42Njf+Ojo7/jo6O/46O + jv+Ojo7/jY2N/42Njf+NjY3/jIyM/4yMjP+Li4v/ioqK/4mJif+IiIj/hoaG/4WFhf+Dg4P/goKC/4CA + gP9+fn7/e3t7/3l5ef92dnb/c3Nz/29vb/9sbGz/aGho/2NjY/9dXV3/V1dX/09PT/9HR0f/KSkp/wAA + APcAAABiAAAA9V1dXf/U1NT51tbW+9fX1/vZ2dn72tra/Nra2vzb29v82tra/Nra2vza2tr82dnZ/NnZ + 2f3Z2dn92dnZ/dnZ2f3Y2Nj92NjY/djY2P3Y2Nj92NjY/djY2P3Y2Nj92NjY/djY2P3X19f919fX/dfX + 1/3X19f919fX/dfX1/3X19f919fX/dfX1/3X19f919fX/dfX1/3Y2Nj92NjY/djY2P3Y2Nj92NjY/djY + 2P3Y2Nj92NjY/djY2P3Z2dn92dnZ/dnZ2f3Z2dn92dnZ/Nra2vza2tr82tra/Nvb2/za2tr82tra/NnZ + 2fvX19f71tbW+9fX1/lXV1f/AAAA7wAAAPOIiIj+2tra/sbGxv7Jycn+ycnJ/8jIyP/IyMj/yMjI/8jI + yP/IyMj/yMjI/8jIyP/IyMj/yMjI/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJ + yf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJ + yf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/IyMj/yMjI/8jIyP/IyMj/yMjI/8jI + yP/IyMj/yMjI/8jIyP/Jycn/ycnJ/sbGxv7Z2dn+ioqK/gAAAPYAAAD0gICA/9jY2P3Jycn/y8vL/8vL + y//Ly8v/y8vL/8vLy//MzMz/y8vL/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8vLy//MzMz/y8vL/8vLy//Ly8v/y8vL/8vLy//Jycn+2NjY/YKCgv8AAAD2AAAA9oOD + g//Z2dn+ycnJ/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/yMjI/9nZ + 2f6Dg4P/AAAA9gAAAPWCgoL/2dnZ/snJyf/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8nJyf/Z2dn+g4OD/wAAAPYAAAD1goKC/9nZ2f7Jycn/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/Jycn/2dnZ/oKCgv8AAAD1AAAA9oODg//Z2dn+ycnJ/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8vLy//Ly8v/zMzM/8vLy//Jycn/yMjI/8rKyv/Ly8v/yMjI/9jY2P6BgYH/AAAA9QAA + APaDg4P/2dnZ/snJyf/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vLy//Ly8v/zMzM/8rKyv/Ozs7/2dnZ/9vb2//T09P/ycnJ/8nJ + yf/Z2dn+goKC/wAAAPQAAAD2g4OD/9jY2P7IyMj/y8vL/8vLy//Ly8v/y8vL/8zMzP/Ly8v/y8vL/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vLy//Ly8v/y8vL/8nJyf/IyMj/ysrK/8rKyv/S0tL/w8PD/4CA + gP9xcXH/q6ur/9XV1f/Hx8f/2NjY/oGBgf8AAAD0AAAA9oODg//Y2Nj+ycnJ/8zMzP/MzMz/zc3N/8vL + y//Ly8v/zMzM/8vLy//MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vLy//Ly8v/zMzM/8vLy//Ly8v/zMzM/8vLy//MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vLy//MzMz/zMzM/8rKyv/V1dX/29vb/8/P + z//Q0ND/sbGx/xYWFv8HBwf/FhYW/wAAAP9zc3P/09PT/9bW1v6AgID/AAAA9AAAAPWCgoL/3Nzc/sjI + yP/Ly8v/y8vL/8bGxv/MzMz/zMzM/8vLy//MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Kysr/ycnJ/8nJyf/IyMj/yMjI/8jIyP/IyMj/yMjI/8jI + yP/IyMj/ycnJ/8nJyf/Jycn/ysrK/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8zMzP/MzMz/y8vL/8vL + y//T09P/mpqa/3BwcP+rq6v/3d3d/ysrK/8vLy//6Ojo//v7+/+Ghob/AAAA/6urq//g4OD+f39//wAA + APMAAAD2iYmJ/7m5uf40NDT/JSUl/yYmJv86Ojr/eHh4/9HR0f/Kysr/y8vL/8zMzP/MzMz/zMzM/8vL + y//Ly8v/y8vL/8vLy//Ly8v/ysrK/8nJyf/IyMj/ycnJ/8zMzP/Pz8//09PT/9fX1//Z2dn/29vb/9zc + 3P/d3d3/3d3d/93d3f/c3Nz/29vb/9ra2v/Y2Nj/1dXV/9HR0f/Ozs7/ysrK/8nJyf/IyMj/ycnJ/8vL + y//Ly8v/y8vL/8jIyP/W1tb/gYGB/wAAAP8PDw//DAwM/5+fn/8GBgb/qqqq///////8/Pz//////w0N + Df92dnb/6Ojo/n19ff8AAADyAAAA9Y+Pj/+Wlpb+NTU1/4eHh/9ra2v/qKio/0RERP/R0dH/ysrK/8rK + yv/Ly8v/y8vL/8vLy//Ly8v/ysrK/8nJyf/Jycn/zMzM/9LS0v/Z2dn/3Nzc/9nZ2f/Pz8//v7+//6ur + q/+Xl5f/hISE/3Nzc/9oaGj/YGBg/1xcXP9dXV3/Y2Nj/2xsbP96enr/jY2N/6CgoP+1tbX/x8fH/9TU + 1P/b29v/29vb/9XV1f/Ozs7/ysrK/8fHx//Hx8f/2dnZ/x4eHv9WVlb//////xkZGf9XV1f/IiIi/2Vl + Zf///////////8vLy/8AAAD/k5OT/+Tk5P5+fn7/AAAA8wAAAPWNjY3/np6e/hYWFv+IiIj/XV1d/1xc + XP9GRkb/0dHR/8jIyP/Jycn/ysrK/8rKyv/Jycn/ysrK/9DQ0P/Z2dn/29vb/8/Pz/+xsbH/h4eH/1lZ + Wf8xMTH/FRUV/wMDA/8AAAD/AAAA/wYGBv8PDw//FhYW/xsbG/8dHR3/HBwc/xkZGf8TExP/CwsL/wIC + Av8AAAD/AAAA/woKCv8gICD/RUVF/3Fxcf+enp7/w8PD/9jY2P/a2tr/0dHR/9jY2P9SUlL/DQ0N/19f + X/8AAAD/j4+P/46Ojv8AAAD/SkpK/2dnZ/8EBAT/NjY2/8zMzP/X19f+f39//wAAAPMAAAD0h4eH/9XV + 1f16enr/b29v/29vb/9ubm7/pKSk/9bW1v/Q0ND/0dHR/9HR0f/S0tL/2tra/9fX1/+7u7v/hoaG/0hI + SP8WFhb/AAAA/wICAv8cHBz/QkJC/2ZmZv+JiYn/oqKi/7a2tv/Dw8P/ysrK/8/Pz//S0tL/09PT/9PT + 0//R0dH/zc3N/8fHx/++vr7/ra2t/5eXl/96enr/VFRU/y4uLv8ODg7/AAAA/wgICP8vLy//bGxs/6en + p//R0dH/19fX/2BgYP8mJib/eXl5/9XV1f/Z2dn/lZWV/zY2Nv8mJib/ampq/87Ozv/R0dH/3d3d/YSE + hP8AAADyAAAA83Fxcf/Dw8P9wcHB/sXFxf/FxcX/xsbG/729vf+1tbX/tra2/7W1tf+1tbX/srKy/3l5 + ef8uLi7/AAAA/wAAAP8nJyf/YGBg/5SUlP+6urr/0NDQ/9jY2P/Z2dn/1dXV/9LS0v/Ozs7/zMzM/8rK + yv/Jycn/yMjI/8jIyP/IyMj/ycnJ/8nJyf/Ly8v/zc3N/9DQ0P/U1NT/19fX/9nZ2f/V1dX/x8fH/6mp + qf96enr/QEBA/w0NDf8AAAD/FRUV/11dXf+xsbH/xMTE/8DAwP+1tbX/tLS0/8DAwP/Dw8P/wcHB/8TE + xP+3t7f/srKy/sHBwf5ycnL/AAAA9QAAAPQFBQX+AAAA/gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8EBAT/RkZG/5KSkv/IyMj/5eXl/+zs7P/n5+f/4ODg/9vb2//Z2dn/2dnZ/9nZ + 2f/a2tr/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9vb2//b29v/2tra/9nZ + 2f/Z2dn/2tra/97e3v/k5OT/6urq/+vr6//Z2dn/rKys/2hoaP8bGxv/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BAQE/ggICP8AAADMKSkp/qOjo/yVlZX+l5eX/piY + mP+YmJj/mJiY/5iYmP+YmJj/mJiY/5iYmP+ZmZn/wsLC/7Kysv+VlZX/i4uL/3p6ev9xcXH/cnJy/3Nz + c/90dHT/dHR0/3R0dP90dHT/dHR0/3R0dP90dHT/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nz + c/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9ycnL/cXFx/3BwcP9wcHD/gICA/5GRkf+YmJj/rq6u/6en + p/+VlZX/mJiY/5iYmP+YmJj/mJiY/5iYmP+YmJj/mJiY/5eXl/6VlZX/oqKi/SQkJP4HBwfeAQEBSgUF + Bf+Xl5f75ubm/dHR0f/W1tb+19fX/9fX1//X19f/19fX/9fX1//W1tb/1NTU/9XV1f8bGxv/AAAA/wAA + AP8xMTH/ZWVl/2FhYf9hYWH/YmJi/2NjY/9jY2P/ZGRk/2VlZf9lZWX/ZmZm/2dnZ/9nZ2f/aGho/2lp + af9paWn/ampq/2pqav9ra2v/bGxs/2xsbP9tbW3/bm5u/25ubv9vb2//cHBw/3BwcP9xcXH/dXV1/x8f + H/8AAAD/AAAA/z09Pf/h4eH/09PT/9XV1f/X19f/19fX/9fX1//W1tb/19fX/9bW1v7R0dH/5+fn/YyM + jPsEBAT+AAAAQgAAAAAAAACNCQkJ/5+fn/nZ2dn+xMTE/8XFxf7Gxsb+xsbG/8bGxv/Gxsb/xsbG/8XF + xf/Ly8v/lJSU/3V1df8LCwv/kpKS//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////9WVlb/JCQk/4iIiP+ioqL/y8vL/8bGxv/Hx8f/x8fH/8fHx//Hx8f/x8fH/sbG + xv7Gxsb/2tra/ZOTk/kDAwP/AAAAfwAAAAAAAAACAAAAAQAAAKkMDAz/kJCQ+9nZ2fva2tr82tra/Nra + 2vza2tr82tra/Nra2vva2tr72NjY++Pj4/vs7Oz7FRUV/n9/f//7+/v+9PT0/9HR0f/Kysr/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Kysr/zMzM//Pz8//6+vr+RERE/0FBQf309PT72tra+9TU1PvW1tb71tbW+9bW + 1vvW1tb71dXV+9XV1fvV1dX71NTU+oGBgfwFBQX/AAAAmAAAAAAAAAADAAAAAAAAAAABAQECAAAAlAAA + AP9ERET/ZmZm/2FhYf9gYGD/X19f/15eXv9cXFz/W1tb/1paWv9XV1f/WFhY/wYGBv+Ghob//v7+//Ly + 8v8dHR3/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/w0NDf/m5ub//////1BQUP8ODg7/QEBA/zo6 + Ov88PDz/PDw8/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Pz8//y0tLf8AAAD9AAAAggAAAAAAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABKAAAArgAAAMMAAADCAAAAwQAAAL8AAAC+AAAAvQAAALwAAAC6AAAAuQAA + ALgAAADxi4uL///////4+Pj/1NTU/87Ozv/Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/P + z//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/87Ozv/R0dH/9/f3//// + //9VVVX/AAAA2AAAAJQAAACWAAAAlQAAAJQAAACUAAAAlAAAAJQAAACUAAAAlAAAAJcAAACMAQEBOAAA + AAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAICAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMD + AwMDAwMDAwMDAwMDAwMGBgYGAAAAzYqKiv//////+vr6//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////39/f//////VFRU/wAAAJkFBQUFAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC + AgICAgICAgICAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAQAA + AAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAwMDAwAAANCKior///////b29v9wcHD/Wlpa/1tb + W/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tb + W/9bW1v/W1tb/1tbW/9bW1v/Wlpa/2FhYf/r6+v//////1RUVP8AAAChAwMDAwAAAAYAAAADAAAAAwAA + AAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMAAADQioqK//// + ///19fX/UFBQ/zU1Nf84ODj/Nzc3/zc3N/83Nzf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/83Nzf/Nzc3/zc3 + N/83Nzf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/83Nzf/Nzc3/zY2Nv8/Pz//6Ojo//////9UVFT/AAAAoAMD + AwMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAADAwMDAAAA0IuLi///////+vr6//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////z8 + /P//////VVVV/wAAAKADAwMDAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAwMDAwAAANCLi4v///////n5+f/6+vr/+Pj4//n5+f/5+fn/+fn5//n5 + +f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5 + +f/5+fn/+fn5//j4+P/6+vr//////1VVVf8AAACgAwMDAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMAAADQioqK///////w8PD/Kioq/xER + Ef8TExP/EhIS/xISEv8SEhL/EhIS/xISEv8SEhL/EhIS/xISEv8SEhL/EhIS/xISEv8SEhL/EhIS/xIS + Ev8SEhL/EhIS/xISEv8SEhL/ExMT/xEREf8gICD/6urq//////9UVFT/AAAAoAMDAwMAAAADAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAAAA0IqK + iv//////9fX1/5ubm/+Pj4//kJCQ/5CQkP+QkJD/kJCQ/5CQkP+QkJD/kJCQ/5CQkP+QkJD/kJCQ/5CQ + kP+QkJD/kJCQ/5CQkP+QkJD/kJCQ/5CQkP+QkJD/kJCQ/5CQkP+Pj4//lpaW//Pz8///////VFRU/wAA + AKADAwMDAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAwMDAwAAANCLi4v///////v7+/////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///9/f3//////1VVVf8AAACgAwMDAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMAAADQioqK///////29vb/oKCg/5KSkv+Tk5P/k5OT/5OT + k/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OT + k/+Tk5P/k5OT/5OTk/+YmJj/8vLy//////9UVFT/AAAAoAMDAwMAAAADAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAAAA0IqKiv//////8vLy/yws + LP8PDw//ERER/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQ + EP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xEREf8PDw//HR0d/+jo6P//////VFRU/wAAAKADAwMDAAAAAwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwAA + ANCLi4v///////n5+f/4+Pj/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f3 + 9//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//6+vr//////1RU + VP8AAACgAwMDAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAMDAwMAAADQi4uL///////6+vr///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////Pz8//////9VVVX/AAAAoAMDAwMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAAAA0IqKiv//////8PDw/0xMTP85OTn/Ozs7/zo6 + Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zo6 + Ov86Ojr/Ojo6/zo6Ov85OTn/R0dH/+/v7///////VFRU/wAAAKADAwMDAAAAAwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgAAAM+IiIj/+/v7++/v + 7/9lZWX/VlZW/1dXV/9WVlb/VlZW/1ZWVv9WVlb/VlZW/1ZWVv9WVlb/VlZW/1ZWVv9WVlb/VlZW/1ZW + Vv9WVlb/VlZW/1ZWVv9WVlb/VlZW/1ZWVv9XV1f/VlZW/2FhYf/u7u7++/v7+1NTU/8AAACfAgICAgAA + AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMD + AwMAAADOk5OT/f////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //9aWlr9AAAAngMDAwMAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAACAgICAAAA2GBgYP+1tbX/rq6u/66urv+urq7/rq6u/66urv+urq7/rq6u/66u + rv+urq7/rq6u/66urv+urq7/rq6u/66urv+urq7/rq6u/66urv+urq7/rq6u/66urv+urq7/rq6u/66u + rv+urq7/ra2t/6+vr/+0tLT+Ozs7/wAAAKUBAQEBAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAHUAAADpAAAA6wAAAO0AAADuAAAA7gAA + AO4AAADuAAAA7gAAAO4AAADuAAAA7gAAAO4AAADuAAAA7gAAAO4AAADuAAAA7gAAAO4AAADuAAAA7gAA + AO4AAADuAAAA7gAAAO4AAADuAAAA7gAAAO4AAADtAAAA6wAAAOMAAABOAAAAAAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBDQIC + AhACAgIQAgICEAICAhACAgIQAgICEAICAhACAgIQAgICEAICAhACAgIQAgICEAICAhACAgIQAgICEAIC + AhACAgIQAgICEAICAhACAgIQAgICEAICAhACAgIQAgICEAICAhACAgIQAgICEAICAhAAAAAKAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAoAAAAYAAAAMAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAA + AAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA + AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA + AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA + AAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAUBAQEPAQEBFgEBARwBAQEhAgICJgIC + AiwCAgIyAgICOAICAj0CAgJCAgICRwICAksCAgJPAgICUwICAlYCAgJaAgICXQICAmACAgJiAgICZQIC + AmcCAgJpAgICbAICAm4DAwNvAwMDcQMDA3MDAwN0AwMDdgMDA3cDAwN4AwMDeQMDA3oDAwN7AwMDfAMD + A30DAwN9AwMDfgMDA34DAwN/AwMDfwMDA38DAwN/AwMDfwMDA38DAwN/AwMDfwMDA38DAwN+AwMDfQMD + A30DAwN8AwMDewMDA3oDAwN5AwMDeQMDA3cDAwN2AwMDdAMDA3MDAwNxAwMDbwICAm4CAgJsAgICagIC + AmcCAgJlAgICYgICAmACAgJdAgICWgICAlYCAgJTAgICUAICAkwCAgJIAgICQwICAj4CAgI5AgICMwIC + Ai0CAgInAQEBIQEBAR0BAQEXAQEBEAAAAAgAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAABAQFRAgICugAA + ANUAAADiAAAA6wAAAPMAAAD6AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA+wAAAPUAAADtAAAA5AAAANgBAQHFAQEBZQAA + AAAAAAAAAAAAJQAAALwAAAD/AAAA/wcHB/8SEhL/GRkZ/x8fH/8kJCT/KSkp/y0tLf4xMTH+NTU1/jk5 + Of09PT39QkJC/UVFRf1JSUn8TExM/E5OTvxRUVH8VFRU/FZWVvxZWVn7W1tb+11dXftfX1/7YWFh+2Ji + YvtkZGT7ZWVl+2dnZ/toaGj7aWlp+mpqavpra2v6bGxs+m1tbfpubm76b29v+m9vb/pvb2/6cHBw+nBw + cPpwcHD6cXFx+nJycvpxcXH6cXFx+nJycvpxcXH6cHBw+nBwcPpwcHD6cHBw+m9vb/pvb2/6bm5u+m1t + bfpsbGz6bGxs+mpqavppaWn6aGho+2dnZ/tlZWX7ZGRk+2JiYvthYWH7X19f+11dXftbW1v7WVlZ+1dX + V/xUVFT8UVFR/E9PT/xMTEz8SUlJ/EZGRv1CQkL9Pj4+/To6Ov02Njb+MjIy/i4uLv4qKir/JSUl/yAg + IP8aGhr/ExMT/woKCv8AAAD/AAAA/wAAAKsAAAAPAAAAvAAAAP8hISH6gICA+7e3t/27u7v9wcHB/cbG + xv7Kysr+zs7O/tHR0f7T09P+1dXV/tbW1v7W1tb+1tbW/tfX1/7X19f+19fX/tfX1/7X19f+19fX/tjY + 2P7Y2Nj+2NjY/tjY2P7Y2Nj+2NjY/tjY2P7Y2Nj+2NjY/tjY2P7Z2dn+2dnZ/tnZ2f7Z2dn+2dnZ/tnZ + 2f7Z2dn+2dnZ/tnZ2f7Z2dn+2dnZ/tnZ2f7Z2dn/2dnZ/tnZ2f7Z2dn/2dnZ/9nZ2f/Z2dn+2dnZ/9nZ + 2f7Z2dn+2dnZ/tnZ2f7Z2dn+2dnZ/tnZ2f7Z2dn+2dnZ/tnZ2f7Z2dn+2dnZ/tjY2P7Y2Nj+2NjY/tjY + 2P7Y2Nj+2NjY/tjY2P7Y2Nj+2NjY/tjY2P7X19f+19fX/tfX1/7X19f+19fX/tfX1/7W1tb+1tbW/tbW + 1v7W1tb+1NTU/tHR0f7Ozs7+y8vL/sfHx/7CwsL9vLy8/bm5uf2MjIz7Gxsb+gAAAP8AAACdAAAA6ggI + CPyxsbH93d3d/8/Pz/7Pz8//zs7O/83Nzf/MzMz/y8vL/8rKyv/Kysr/ycnJ/8nJyf/Jycn/ycnJ/8nJ + yf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJ + yf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jI + yP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8nJyf/Jycn/ycnJ/8nJ + yf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJ + yf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ysrK/8rKyv/Ly8v/zMzM/83Nzf/Ozs7/z8/P/87O + zv7d3d3+qKio/QYGBvwAAADpAAAA7Q4ODv65ubn+zc3N/sjIyP/Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8jIyP/MzMz/vb29/hAQEP4AAADyAAAA7w0NDf+4uLj90NDQ/8nJ + yf/Ly8v/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/y8vL/8nJyf/Pz8/+u7u7/Q8P + D/8AAADyAAAA7w4ODv+5ubn+0NDQ/8rKyv/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8rKyv/Pz8//u7u7/g8PD/8AAADxAAAA8A8PD/+6urr+0NDQ/8rKyv/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8rKyv/Ozs7/urq6/g8PD/8AAADyAAAA8Q4O + Dv+7u7v+0NDQ/8rKyv/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8rK + yv/Pz8//u7u7/g4ODv8AAADxAAAA8A8PD/+6urr+0NDQ/8rKyv/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8rKyv/Q0ND/urq6/g8PD/8AAADwAAAA8Q8PD/+6urr+0NDQ/8rK + yv/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8rKyv/Pz8//ubm5/g8P + D/8AAADwAAAA8Q8PD/+7u7v+0NDQ/8rKyv/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8rKyv/Q0ND/urq6/g4ODv8AAADwAAAA8Q8PD/+7u7v+0NDQ/8rKyv/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/y8vL/8vL + y//MzMz/y8vL/8vLy//Ly8v/y8vL/8zMzP/Ly8v/zMzM/8rKyv/Q0ND/ubm5/g0NDf8AAADvAAAA8Q8P + D/+7u7v+0NDQ/8rKyv/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/Ly8v/y8vL/8zMzP/Kysr/ycnJ/8nJyf/Jycn/ycnJ/8vLy//MzMz/y8vL/8rK + yv/Q0ND/uLi4/g0NDf8AAADvAAAA8Q8PD/+7u7v+0NDQ/8rKyv/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vLy//MzMz/zMzM/8nJyf/R0dH/2dnZ/9fX + 1//Y2Nj/19fX/8zMzP/Kysr/zMzM/8nJyf/Q0ND/ubm5/g4ODv8AAADuAAAA8Q8PD/+7u7v+0NDQ/8rK + yv/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vLy//MzMz/y8vL/8vLy//Ly8v/y8vL/8zM + zP/Ly8v/ycnJ/9bW1v+0tLT/cXFx/05OTv9ZWVn/jIyM/8zMzP/Q0ND/ysrK/8rKyv/Pz8//uLi4/g0N + Df8AAADtAAAA8Q8PD/+6urr+0NDQ/8nJyf/Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/zMzM/8vL + y//MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/y8vL/8vL + y//Ly8v/ycnJ/8nJyf/Jycn/ycnJ/8vLy//Jycn/1dXV/4SEhP8ODg7/AAAA/wAAAP8AAAD/AAAA/zQ0 + NP+7u7v/0NDQ/8jIyP/Q0ND/t7e3/gwMDP8AAADtAAAA8A4ODv+7u7v+z8/P/8jIyP/Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Kysr/zMzM/8vLy//MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/Ly8v/zMzM/8zMzP/Kysr/1dXV/9jY2P/X19f/1tbW/8jIyP/U1NT/np6e/wEB + Af8AAAD/YmJi/6qqqv+ampr/MDAw/wAAAP8yMjL/zc3N/8rKyv/Pz8//t7e3/g0NDf8AAADsAAAA8Q8P + D/+6urr+0NDQ/9LS0v/Q0ND/0NDQ/8/Pz//Q0ND/0dHR/9HR0f/R0dH/y8vL/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vLy//Ly8v/zMzM/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//MzMz/y8vL/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/y8vL/8rKyv/U1NT/mpqa/1dX + V/9SUlL/jY2N/9DQ0P/U1NT/Pj4+/wAAAP+CgoL/////////////////7u7u/y0tLf8AAAD/kJCQ/9XV + 1f/Nzc3/uLi4/g0NDf8AAADtAAAA8A4ODv+4uLj+1dXV/3BwcP8uLi7/Ly8v/zQ0NP8vLy//KSkp/zAw + MP+Wlpb/0tLS/8nJyf/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vLy//Ly8v/zMzM/8vLy//Ly8v/y8vL/8rKyv/Jycn/ycnJ/8jI + yP/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/yMjI/8jI + yP/Jycn/ysrK/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/Ly8v/ycnJ/9XV1f9/f3//AAAA/wAAAP8AAAD/AAAA/2VlZf/Nzc3/EBAQ/woKCv/p6en//Pz8//n5 + +f/29vb//////4+Pj/8AAAD/ZGRk/9fX1//MzMz/t7e3/g0NDf8AAADtAAAA7w0NDf+5ubn+1dXV/wwM + DP83Nzf/TU1N/wAAAP9LS0v/U1NT/2VlZf9cXFz/19fX/8jIyP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/Ly8v/y8vL/8vLy//Ly8v/y8vL/8rKyv/Jycn/yMjI/8nJ + yf/MzMz/zs7O/9LS0v/V1dX/2dnZ/9nZ2f/Y2Nj/2NjY/9fX1//W1tb/1tbW/9bW1v/W1tb/1tbW/9bW + 1v/W1tb/19fX/9fX1//Y2Nj/2dnZ/9nZ2f/W1tb/09PT/8/Pz//Nzc3/ysrK/8jIyP/Jycn/ysrK/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8zMzP/Kysr/zs7O/8HBwf8SEhL/BQUF/4WFhf+Xl5f/ERER/wIC + Av+lpaX/FxcX/woKCv/r6+v//Pz8//n5+f/39/f//////5GRkf8BAQH/ZGRk/9fX1//MzMz/tra2/g0N + Df8AAADsAAAA8A4ODv+5ubn+1tbW/xMTE/9bW1v/wcHB/25ubv+Hh4f//////ygoKP9KSkr/3Nzc/8jI + yP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/ycnJ/8jI + yP/Kysr/zc3N/9PT0//X19f/2dnZ/9fX1//MzMz/wsLC/6+vr/+bm5v/ioqK/3l5ef9nZ2f/WFhY/0xM + TP9CQkL/Ozs7/zY2Nv80NDT/NTU1/zk5Of8/Pz//SEhI/1RUVP9iYmL/dHR0/4WFhf+Wlpb/qamp/729 + vf/Jycn/1NTU/9nZ2f/Y2Nj/1NTU/87Ozv/Kysr/yMjI/8nJyf/Kysr/y8vL/8vLy//Jycn/09PT/62t + rf8AAAD/Kysr////////////UlJS/wAAAP+ampr/SEhI/wAAAP+Hh4f/////////////////8vLy/zAw + MP8AAAD/jo6O/9XV1f/Nzc3/t7e3/g0NDf8AAADrAAAA7w4ODv+5ubn+1dXV/w0NDf9QUFD/v7+//52d + nf+BgYH/r6+v/1hYWP9NTU3/2tra/8jIyP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vLy//Ly8v/y8vL/8vL + y//Kysr/ycnJ/8nJyf/Ozs7/1dXV/9nZ2f/U1NT/xsbG/6urq/+NjY3/Z2dn/0ZGRv8oKCj/DAwM/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wYGBv8gICD/Pz8//11dXf+EhIT/pKSk/8HBwf/S0tL/2dnZ/9bW + 1v/Q0ND/ysrK/8jIyP/IyMj/zc3N/8HBwf8SEhL/BQUF/4eHh/+ampr/ERER/wAAAP+2trb/oaGh/wAA + AP8AAAD/aWlp/7i4uP+hoaH/NDQ0/wAAAP8uLi7/zMzM/8rKyv/Pz8//tra2/g0NDf8AAADrAAAA7w0N + Df+3t7f+1tbW/zw8PP8ICAj/Li4u/w4ODv8MDAz/BwcH/x8fH/9ycnL/1tbW/8jIyP/Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Kysr/yMjI/8vLy//S0tL/2dnZ/9XV1f/BwcH/nZ2d/25ubv9CQkL/FxcX/wAA + AP8AAAD/AAAA/wAAAP8AAAD/DQ0N/yAgIP85OTn/UVFR/2RkZP90dHT/gYGB/4yMjP+Wlpb/nJyc/6Cg + oP+hoaH/oKCg/52dnf+YmJj/kJCQ/4WFhf94eHj/aWlp/1dXV/9AQED/Jycn/xISEv8AAAD/AAAA/wAA + AP8AAAD/AAAA/xEREf83Nzf/ZmZm/5aWlv+8vLz/09PT/9nZ2f/T09P/ycnJ/9LS0v99fX3/AAAA/wAA + AP8AAAD/AAAA/2JiYv/S0tL/09PT/35+fv8ICAj/AAAA/wAAAP8AAAD/AAAA/y0tLf+3t7f/0NDQ/8jI + yP/Pz8//t7e3/g0NDf8AAADsAAAA7g0NDf+2trb+z8/P/729vf+goKD/mZmZ/6CgoP+hoaH/oqKi/5+f + n//FxcX/ysrK/8jIyP/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8vLy//T09P/2dnZ/87Ozv+tra3/eXl5/0FB + Qf8TExP/AAAA/wAAAP8AAAD/AQEB/yIiIv9ISEj/bGxs/5CQkP+oqKj/vb29/83Nzf/S0tL/1tbW/9ra + 2v/a2tr/2NjY/9fX1//W1tb/1dXV/9XV1f/U1NT/1dXV/9XV1f/W1tb/19fX/9jY2P/Z2dn/29vb/9jY + 2P/U1NT/z8/P/8PDw/+urq7/l5eX/3Z2dv9QUFD/LCws/wYGBv8AAAD/AAAA/wAAAP8LCwv/OTk5/3Jy + cv+np6f/y8vL/9fX1//c3Nz/mpqa/1NTU/9NTU3/ioqK/8/Pz//Jycn/xsbG/9PT0/+srKz/aGho/0dH + R/9NTU3/goKC/8bGxv/Ozs7/x8fH/8fHx//Nzc3/tbW1/QwMDP8AAADsAAAA7Q4ODv/Dw8P929vb/9jY + 2P/h4eH/4uLi/+Hh4f/g4OD/4eHh/+Dg4P/Y2Nj/19fX/9jY2P/Y2Nj/2NjY/9fX1//X19f/19fX/87O + zv+mpqb/a2tr/y4uLv8AAAD/AAAA/wAAAP8FBQX/MDAw/2NjY/+Pj4//s7Oz/8rKyv/X19f/2dnZ/9fX + 1//U1NT/z8/P/8zMzP/Kysr/ycnJ/8jIyP/IyMj/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Kysr/ysrK/8nJ + yf/Jycn/ycnJ/8nJyf/IyMj/yMjI/8nJyf/Kysr/y8vL/87Ozv/S0tL/1tbW/9jY2P/Z2dn/zc3N/7q6 + uv+Xl5f/bGxs/zg4OP8NDQ3/AAAA/wAAAP8AAAD/KCgo/2VlZf+goKD/1dXV/+Xl5f/l5eX/4uLi/9fX + 1//X19f/2NjY/9XV1f/e3t7/5eXl/+Tk5P/l5eX/5OTk/9jY2P/W1tb/2NjY/9XV1f/c3Nz/w8PD/Q0N + Df8AAADtAAAA7QUFBf9LS0v+V1dX/lRUVP9TU1P/U1NT/1NTU/9TU1P/U1NT/1RUVP9VVVX/VVVV/1VV + Vf9VVVX/VVVV/1VVVf9VVVX/VlZW/y0tLf8AAAD/AAAA/wAAAP8YGBj/UlJS/4uLi/+2trb/z8/P/9fX + 1//W1tb/0NDQ/8vLy//IyMj/x8fH/8jIyP/Jycn/ycnJ/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rK + yv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rK + yv/Jycn/yMjI/8jIyP/IyMj/ysrK/8/Pz//V1dX/19fX/9LS0v+7u7v/kpKS/1lZWf8eHh7/AAAA/wAA + AP8AAAD/Jycn/1JSUv9SUlL/U1NT/1VVVf9VVVX/VVVV/1VVVf9UVFT/UlJS/1NTU/9SUlL/U1NT/1VV + Vf9VVVX/VVVV/1VVVf9XV1f+TExM/gQEBP8HBwf7AAAA6gAAAP4AAAD+AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8fHx//XV1d/5+f + n//Kysr/29vb/9vb2//U1NT/z8/P/83Nzf/Nzc3/zs7O/8/Pz//Pz8//0NDQ/9DQ0P/Q0ND/0NDQ/9DQ + 0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ + 0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/z8/P/8/Pz//Nzc3/zc3N/87O + zv/T09P/2tra/9zc3P/Nzc3/paWl/2dnZ/8iIiL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD+AAAA/wAAAP4NDQ3/AQEBwgAA + AP5OTk78kZGR/oSEhP6Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eH + h/+IiIj/hYWF/5mZmf/IyMj/29vb/8TExP+7u7v/t7e3/7e3t/+7u7v/vb29/729vf+9vb3/vb29/729 + vf+9vb3/vb29/729vf+9vb3/vb29/729vf+9vb3/vb29/729vf+9vb3/vb29/729vf+9vb3/vb29/729 + vf+9vb3/vb29/729vf+9vb3/vb29/729vf+9vb3/vb29/729vf+9vb3/vb29/729vf+9vb3/vb29/729 + vf+9vb3/vb29/729vf+9vb3/vb29/7y8vP+8vLz/ubm5/7e3t/+7u7v/wsLC/8rKyv/Ozs7/m5ub/4WF + hf+IiIj/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4SE + hP6RkZH/S0tL/QAAAP4iIiLuAQEBVwAAAP8nJyf709PT/dvb2//X19f+2dnZ/9nZ2f/Z2dn/2dnZ/9nZ + 2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9PT0//W1tb/X19f/xEREf8TExP/EBAQ/w8P + D/8EBAT/AQEB/wICAv8BAQH/AQEB/wEBAf8BAQH/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wIC + Av8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wIC + Av8CAgL/AgIC/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wQEBP8EBAT/CgoK/w8P + D/8QEBD/ERER/xISEv+IiIj/39/f/9fX1//Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ + 2f/Z2dn/2dnZ/9nZ2f/Z2dn/1tbW/t3d3f/MzMz+ICAg+wAAAP8CAgJTAAAAAQEBAbgAAAD/SUlJ+9TU + 1P7Gxsb+x8fH/snJyf/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/x8fH/8fH + x//T09P/Li4u/wAAAP8AAAD/AAAA/wAAAP99fX3/oqKi/56env+hoaH/oaGh/6Kiov+jo6P/o6Oj/6Sk + pP+lpaX/paWl/6ampv+np6f/p6en/6ioqP+pqan/qamp/6qqqv+rq6v/q6ur/6ysrP+tra3/ra2t/66u + rv+vr6//r6+v/7CwsP+xsbH/sbGx/7Kysv+zs7P/s7Oz/7S0tP+1tbX/tbW1/7a2tv+3t7f/t7e3/7i4 + uP+4uLj/ubm5/7a2tv+7u7v/Wlpa/wAAAP8AAAD/AAAA/wAAAP9aWlr/19fX/8TExP/IyMj/yMjI/8jI + yP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8nJyf/Gxsb+yMjI/tDQ0P46Ojr6AAAA/wEB + AasAAAAAAAAAAAAAACIBAQHtAAAA/mpqavva2tr/ycnJ/8rKyv7MzMz/y8vL/8vLy//MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/y8vL/8nJyf/S0tL/lJSU/0xMTP9PT0//ExMT/wEBAf/Y2Nj///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////hoaG/wEBAf81NTX/YGBg/19f + X/+wsLD/0NDQ/8rKyv/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vLy//MzMz/zMzM/8nJ + yf7Ly8v+19fX/1ZWVvsAAAD/AgIC4AAAABYAAAABAAAAAgAAAAAAAABIAgIC+wAAAP1tbW382NjY/8zM + zP7Hx8f+ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/IyMj/0NDQ/9PT + 0//Y2Nj/NTU1/wAAAP/Kysr/+/v7//j4+P/7+/v///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////f39//f3 + 9//8/Pz/f39//wAAAP93d3f/4uLi/9LS0v/Nzc3/yMjI/8nJyf/IyMj/yMjI/8jIyP/IyMj/yMjI/8jI + yP/IyMj/yMjI/8jIyP/IyMj/x8fH/tHR0f7T09P/WFhY+wAAAP8CAgLxAAAANQAAAAAAAAACAAAAAAAA + AAMAAAAAAAAAWAEBAfwAAAD/VFRU+sjIyP7Z2dn+1dXV/tfX1/7X19f/19fX/9fX1//X19f+19fX/tfX + 1//X19f+19fX/tfX1/7Y2Nj+1dXV/tTU1P7Z2dn+NTU1/gAAAP/Nzc3+//////z8/P/9/f3/ycnJ/76+ + vv/BwcH/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DA + wP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DA + wP/AwMD/wMDA/7+/v//Dw8P/+fn5//z8/P//////gYGB/gAAAP95eXn+5eXl/tTU1P7Z2dn+2tra/tra + 2v7a2tr+2tra/tra2v7a2tr+2tra/tra2v7a2tr+2tra/tnZ2f7Y2Nj+2tra/7m5uf4+Pj75AAAA/wEB + AfEAAABAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAAE4BAQHwAAAA/yEhIft7e3v7l5eX+5KS + kvuRkZH7kJCQ+46OjvuNjY37jIyM+4uLi/qKior6iIiI+oeHh/uGhob7hISE+4ODg/uFhYX7ICAg/gAA + AP/MzMz+//////7+/v/4+Pj/FBQU/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/5ubm////////////f39//gAA + AP80NDT9X19f+1hYWPtYWFj7WFhY+1dXV/tYWFj7V1dX+1ZWVvtXV1f7V1dX+1ZWVvtXV1f7WFhY+1dX + V/tbW1v7U1NT+xAQEP4AAAD/AgIC3QAAADcAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAAArAgICvgAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/Kysr///////39/f/6+vr/aGho/0xMTP9PT0//Tk5O/05O + Tv9OTk7/Tk5O/05OTv9OTk7/Tk5O/05OTv9OTk7/Tk5O/05OTv9OTk7/Tk5O/05OTv9OTk7/Tk5O/05O + Tv9OTk7/Tk5O/05OTv9OTk7/Tk5O/05OTv9OTk7/Tk5O/05OTv9OTk7/Tk5O/05OTv9OTk7/Tk5O/01N + Tf9WVlb/7u7u//7+/v//////fX19/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPoCAgKhAAAAGAAAAAAAAAADAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAEBAVACAgKdAgICqwICAqkCAgKoAgICpgIC + AqUCAgKjAgICogICAqECAgKfAgICngICAp0CAgKbAgICmgICApkCAgKXAAAA5AAAAP/Ly8v9//////v7 + +/////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////r6+v//////fn5+/AAAAP8EBASqAwMDYAMD + A2UDAwNiAwMDYgMDA2EDAwNhAwMDYAMDA2ADAwNgAwMDYAMDA2ADAwNgAwMDYQMDA2EDAwNkAwMDYQEB + ASwAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAugAAAP/Ly8v7//////z8/P///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//r6 + +v//////fn5++gAAAP8DAwNqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAA + AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAwAAAAP/Ly8v8//////v7+//+/v7//Pz8//v7 + +//8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8 + /P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8 + /P/8/Pz//Pz8//v7+//8/Pz//v7+//v7+///////fn5++wAAAP8DAwN0AAAAAwAAAAYAAAADAAAAAwAA + AAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvwAA + AP/Ly8v8//////z8/P/7+/v/TExM/ykpKf8rKyv/KSkp/ykpKf8pKSn/KSkp/ykpKf8pKSn/KSkp/ykp + Kf8pKSn/KSkp/ykpKf8pKSn/KSkp/ykpKf8pKSn/KSkp/ykpKf8pKSn/KSkp/ykpKf8pKSn/KSkp/ykp + Kf8pKSn/KSkp/ykpKf8pKSn/KSkp/ykpKf8pKSn/KSkp/ykpKf8xMTH/5ubm//7+/v//////fn5++wAA + AP8DAwNzAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAvwAAAP/Ly8v8//////39/f/6+vr/KCgo/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8GBgb/4eHh////////////fn5++wAAAP8DAwNzAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvwAAAP/Ly8v8//////z8 + /P/+/v7/5ubm/+Dg4P/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li + 4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li + 4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Hh4f/j4+P/+/v7//v7+///////fn5++wAAAP8DAwNzAAAAAAAA + AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAvwAAAP/Ly8v8//////z8/P////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////r6 + +v//////fn5++wAAAP8DAwNzAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvwAAAP/Ly8v8//////v7+/////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////r6+v//////fn5++wAAAP8DAwNzAAAAAAAAAAMAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvwAA + AP/Ly8v8//////z8/P/7+/v/rq6u/6Ghof+kpKT/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Oj + o/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Oj + o/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Kiov+oqKj/+Pj4//z8/P//////fn5++wAA + AP8DAwNzAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAvwAAAP/Ly8v8//////7+/v/09PT/BQUF/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/6urq////////////fn5++wAAAP8DAwNzAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvwAAAP/Ly8v8//////39 + /f/5+fn/f39//21tbf9ubm7/bm5u/25ubv9ubm7/bm5u/25ubv9ubm7/bm5u/25ubv9ubm7/bm5u/25u + bv9ubm7/bm5u/25ubv9ubm7/bm5u/25ubv9ubm7/bm5u/25ubv9ubm7/bm5u/25ubv9ubm7/bm5u/25u + bv9ubm7/bm5u/25ubv9ubm7/bm5u/21tbf92dnb/9PT0//39/f//////fn5++wAAAP8DAwNzAAAAAAAA + AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAvwAAAP/Ly8v8//////v7+/////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////r6 + +v//////fn5++wAAAP8DAwNzAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvwAAAP/Ly8v8//////v7+/////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////r6+v//////fn5++wAAAP8DAwNzAAAAAAAAAAMAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvwAA + AP/Ly8v8//////z8/P/+/v7/5eXl/9/f3//h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh + 4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh + 4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Dg4P/i4uL//Pz8//v7+///////fn5++wAA + AP8DAwNzAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAvwAAAP/Ly8v8//////39/f/5+fn/KCgo/wMDA/8EBAT/AwMD/wMD + A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD + A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD + A/8PDw//6Ojo//7+/v//////fn5++wAAAP8DAwNzAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvwAAAP/Ly8v8//////39 + /f/5+fn/RERE/yMjI/8mJib/JSUl/yUlJf8lJSX/JSUl/yUlJf8lJSX/JSUl/yUlJf8lJSX/JSUl/yUl + Jf8lJSX/JSUl/yUlJf8lJSX/JSUl/yUlJf8lJSX/JSUl/yUlJf8lJSX/JSUl/yUlJf8lJSX/JSUl/yUl + Jf8lJSX/JSUl/yUlJf8lJSX/JSUl/yQkJP8vLy//6+vr//7+/v//////fn5++wAAAP8DAwNzAAAAAAAA + AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAvwAAAP/Ly8v8//////v7+//+/v7/+/v7//r6+v/7+/v/+/v7//v7+//7+/v/+/v7//v7 + +//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7 + +//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//r6+v/7+/v//v7+//v7 + +///////fn5++wAAAP8DAwNzAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvwAAAP/Ly8v8//////z8/P/+/v7//Pz8//z8 + /P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8 + /P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8 + /P/8/Pz//Pz8//z8/P/8/Pz//v7+//v7+///////fn5++wAAAP8DAwNzAAAAAAAAAAMAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvwAA + AP/Ly8v8//////v7+/////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////r6+v//////fn5++wAA + AP8DAwNzAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAvwAAAP/Ly8v8//////39/f/4+Pj/gYGB/3BwcP9zc3P/c3Nz/3Nz + c/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nz + c/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Fx + cf98fHz/9vb2//39/f//////fn5++wAAAP8DAwNzAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvwAAAP/Ly8v8//////// + ///y8vL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/7u7u////////////fn5++wAAAP8DAwNzAAAAAAAA + AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAvwAAAP/Kysr8/v7+//39/f/6+vr/qKio/56env+fn5//n5+f/5+fn/+fn5//n5+f/5+f + n/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+f + n/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/56env+lpaX/+fn5//z8 + /P/+/v7+fX19+wAAAP8CAgJyAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvgAAAP/Hx8f7+/v7/vj4+P/7+/v///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////Pz8//f39//7+/v+fHx8+wAAAP8CAgJyAAAAAAAAAAMAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvgAA + AP7Y2Nj8//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////hoaG+wAA + AP4DAwNyAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAwwAAAP1wcHD2kZGR+oyMjPqNjY36jY2N+o2NjfqNjY36jY2N+o2N + jfqNjY36jY2N+o2NjfqNjY36jY2N+o2NjfqNjY36jY2N+o2NjfqNjY36jY2N+o2NjfqNjY36jY2N+o2N + jfqNjY36jY2N+o2NjfqNjY36jY2N+o2NjfqNjY36jY2N+o2NjfqNjY36jY2N+o2NjfqNjY36jY2N+o2N + jfqNjY36jY2N+ouLi/qSkpL5RkZG9gAAAP8BAQFzAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAcQAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPgAAAAxAAAAAAAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAFEDAwN/AwMDfgMDA38DAwN/AwMDfwMDA38DAwN/AwMDfwMDA38DAwN/AwMDfwMD + A38DAwN/AwMDfwMDA38DAwN/AwMDfwMDA38DAwN/AwMDfwMDA38DAwN/AwMDfwMDA38DAwN/AwMDfwMD + A38DAwN/AwMDfwMDA38DAwN/AwMDfwMDA38DAwN/AwMDfwMDA38DAwN/AwMDfwMDA38DAwN/AwMDfwMD + A38EBAR/AQEBfQAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAMAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA + AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA + AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAIAAAAAAAQAAAQAgAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAMAAAADAAAAAgAA + AAIAAAACAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA + AAEAAAABAAAAAgAAAAIAAAACAAAAAwAAAAMAAAAEAAAABAAAAAQAAAAEAAAAAwAAAAMAAAADAAAAAgAA + AAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAACAAAAAwAAAAQAAAAEAAAABQAAAAYAAAAGAAAABwAA + AAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAAKAAAACwAAAAsAAAALAAAADAAAAAwAAAAMAAAADAAA + AAwAAAAMAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAA + AA0AAAANAAAADQAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAsAAAALAAAACwAAAAoAAAAKAAAACgAA + AAkAAAAJAAAACAAAAAgAAAAHAAAABwAAAAYAAAAGAAAABQAAAAQAAAAEAAAAAwAAAAIAAAACAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAA + AAIAAAAAAAAAAAAAAA4AAAArAAAAPwAAAE4AAABaAAAAZQAAAG4AAAB2AAAAfgAAAIQAAACLAAAAkAAA + AJYAAACbAQEBoAEBAaUBAQGpAQEBrQEBAbEBAQG1AQEBuQEBAbwBAQG/AQEBwgICAsUCAgLIAgICygIC + As0CAgLPAgIC0gICAtQCAgLWAgIC2AICAtoCAgLcAgIC3QICAt8CAgLhAgIC4wICAuQCAgLlAgIC5gIC + AucDAwPpAwMD6gMDA+oDAwPrAwMD7AMDA+0DAwPuAwMD7wMDA+8DAwPvAwMD8AMDA/ADAwPxAwMD8AMD + A/EDAwPxAwMD8QMDA/EDAwPxAwMD8QMDA/ADAwPxAwMD8AMDA/ADAwPvAwMD7wMDA+8DAwPuAwMD7QMD + A+wDAwPrAwMD6wMDA+oDAwPpAgIC5wICAuYCAgLlAgIC5AICAuMCAgLhAgIC3wICAt0CAgLcAgIC2wIC + AtgCAgLWAgIC1AICAtICAgLQAgICzQICAsoCAgLIAgICxgEBAcIBAQG/AQEBvAEBAbkBAQG1AQEBsgEB + Aa4BAQGqAQEBpgEBAaEAAACcAAAAmAAAAJEAAACLAAAAhgAAAH8AAAB3AAAAcAAAAGcAAABdAAAAUQAA + AEMAAAAxAAAAFgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAABIAAAB+AQEB5gMDA/kCAgL/AQEB/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wMDA/sBAQHzAAAAnAAAABcAAAAAAAAAAQAA + AAAAAABnAAAA4gICAv8AAAD/AAAA/wAAAP8AAAD+AAAA/QAAAPwBAQH7AwMD+gUFBfoHBwf6CAgI+goK + CvoNDQ37EBAQ+xQUFPsYGBj7Gxsb+x8fH/shISH7JCQk/CcnJ/wqKir8LCws/C8vL/wyMjL8MzMz/DU1 + Nfw4ODj8Ojo6/Dw8PP09PT39Pz8//UBAQP1CQkL9RERE/UVFRf1GRkb9SEhI/UlJSf1KSkr9S0tL/UxM + TP1MTEz9Tk5O/U5OTv1PT0/9UFBQ/VFRUf1RUVH9UVFR/VJSUv1TU1P9U1NT/lRUVP5UVFT+VFRU/lRU + VP5VVVX+VVVV/lVVVf5VVVX+VVVV/lVVVf5UVFT+VFRU/lRUVP5UVFT+U1NT/lNTU/1SUlL9UVFR/VFR + Uf1RUVH9UFBQ/U9PT/1OTk79Tk5O/U1NTf1MTEz9S0tL/UpKSv1JSUn9SEhI/UZGRv1FRUX9RERE/UJC + Qv1AQED9Pz8//T09Pf08PDz9Ojo6/Dg4OPw2Njb8MzMz/DIyMvwvLy/8LS0t/CoqKvwnJyf8JSUl/CIi + IvsfHx/7Gxsb+xgYGPsUFBT7EBAQ+w0NDfsKCgr6CAgI+gcHB/oFBQX6AwMD+gEBAfsAAAD8AAAA/AAA + AP0AAAD+AAAA/wAAAP8BAQH/AAAA3QAAAEMAAAAAAAAAYwAAAP8AAAD/AAAA+h4eHv1paWn+fX19/oiI + iP6SkpL+mpqa/qKiov6oqKj+rq6u/rS0tP65ubn/vLy8/sDAwP/CwsL/w8PD/8TExP/Gxsb/x8fH/8fH + x//IyMj/ycnJ/8rKyv/Ly8v/zMzM/8zMzP/Nzc3/zs7O/87Ozv/Pz8//z8/P/9DQ0P/Q0ND/0dHR/9LS + 0v/S0tL/0tLS/9PT0//T09P/1NTU/9TU1P/U1NT/1NTU/9XV1f/V1dX/1dXV/9XV1f/W1tb/1tbW/9bW + 1v/W1tb/1tbW/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX + 1//X19f/19fX/9fX1//X19f/19fX/9bW1v/W1tb/1tbW/9bW1v/W1tb/1dXV/9XV1f/V1dX/1dXV/9TU + 1P/U1NT/1NTU/9TU1P/T09P/09PT/9LS0v/S0tL/0tLS/9HR0f/R0dH/0NDQ/8/Pz//Pz8//zs7O/87O + zv/Nzc3/zMzM/8zMzP/Ly8v/ysrK/8nJyf/Jycn/yMjI/8fHx//Gxsb/xcXF/8PDw//CwsL/wcHB/729 + vf65ubn+tbW1/7CwsP6pqan+o6Oj/pycnP6UlJT+i4uL/n9/f/5ycnL+Li4u/gAAAPoAAAD/AAAA9QAA + ADoAAADJAAAA/Q0NDfpycnL+w8PD/9vb2/7Z2dn/19fX/9bW1v/U1NT/09PT/9LS0v/R0dH/0NDQ/9DQ + 0P/Pz8//z8/P/87Ozv/Ozs7/zs7O/83Nzf/Nzc3/zc3N/83Nzf/MzMz/zMzM/8zMzP/MzMz/zMzM/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rK + yv/Kysr/ysrK/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJ + yf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJ + yf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rK + yv/Kysr/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//MzMz/zMzM/8zMzP/MzMz/zMzM/83N + zf/Nzc3/zc3N/83Nzf/Ozs7/zs7O/87Ozv/Pz8//z8/P/9DQ0P/Q0ND/0dHR/9LS0v/T09P/1NTU/9XV + 1f/W1tb/2NjY/9vb2/7MzMz+ZWVl/gEBAfoAAAD/AAAAswICAuIAAAD+PT09/tvb2//Nzc3+x8fH/8jI + yP/Jycn/ycnJ/8nJyf/Kysr/ysrK/8rKyv/Kysr/ysrK/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8rKyv/Kysr/ysrK/8rKyv/Kysr/ycnJ/8nJyf/Jycn/x8fH/83Nzf7W1tb/NDQ0/QAA + AP4BAQHiAQEB5gAAAP9BQUH9zs7O/snJyf/Ly8v/y8vL/8vLy//MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/y8vL/8vLy//Ly8v/ycnJ/9HR0f5ISEj+AAAA/wICAuwBAQHoAAAA/0JCQv3R0dH/ycnJ/8vL + y//MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8rKyv/Kysr/0tLS/0ZG + Rv0AAAD/AQEB7QICAukAAAD/Q0ND/tLS0v/Kysr/y8vL/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/y8vL/8rKyv/S0tL/RkZG/gAAAP8CAgLtAgIC6QAAAP9DQ0P+0dHR/8rK + yv/Ly8v/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/Ly8v/ysrK/9LS + 0v9GRkb+AAAA/wICAuwCAgLqAAAA/0RERP7S0tL/ysrK/8vLy//MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vLy//Kysr/09PT/0ZGRv4AAAD/AgIC7QICAusAAAD/RUVF/tLS + 0v/Kysr/y8vL/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/y8vL/8rK + yv/S0tL/RkZG/gAAAP8CAgLsAgIC6gAAAP9ERET+0tLS/8rKyv/Ly8v/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/Ly8v/ysrK/9HR0f9FRUX+AAAA/wICAuwCAgLrAAAA/0VF + Rf7S0tL/ysrK/8vLy//MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vL + y//Kysr/0tLS/0VFRf4AAAD/AgIC6wICAuwAAAD/RUVF/tLS0v/Kysr/y8vL/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/y8vL/8rKyv/S0tL/RERE/gAAAP8CAgLqAgIC6wAA + AP9ERET+0tLS/8rKyv/Ly8v/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/Ly8v/ysrK/9LS0v9DQ0P+AAAA/wICAuoCAgLsAAAA/0VFRf7S0tL/ysrK/8vLy//MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vLy//Kysr/0tLS/0NDQ/4AAAD/AgIC6QIC + AuwAAAD/RkZG/tLS0v/Kysr/y8vL/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/y8vL/8rKyv/R0dH/Q0ND/gAAAP8CAgLoAgIC7AAAAP9FRUX+0tLS/8rKyv/Ly8v/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vLy//Ly8v/zMzM/8vL + y//Ly8v/y8vL/8vLy//Ly8v/zMzM/8vLy//MzMz/zMzM/8zMzP/Ly8v/ysrK/9LS0v9CQkL+AAAA/wIC + AucCAgLsAAAA/0ZGRv7S0tL/ysrK/8vLy//MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8vLy//Ly8v/zMzM/8vLy//Kysr/ycnJ/8zMzP/Nzc3/y8vL/8nJyf/Kysr/zMzM/8vL + y//Ly8v/zMzM/8vLy//Kysr/0dHR/0FBQf4AAAD/AgIC5wICAuwAAAD/RUVF/tLS0v/Kysr/y8vL/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/Ly8v/zMzM/8zMzP/Ly8v/ycnJ/9TU + 1P/Y2Nj/zMzM/8nJyf/Ozs7/2dnZ/9HR0f/Jycn/y8vL/8zMzP/Ly8v/y8vL/8rKyv/Q0ND/QkJC/gAA + AP8CAgLnAgIC6wAAAP9GRkb+0tLS/8rKyv/Ly8v/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/ysrK/8vLy//V1dX/oqKi/1lZWf8zMzP/KSkp/zo6Ov9nZ2f/srKy/9bW + 1v/Kysr/y8vL/8zMzP/Ly8v/ycnJ/9HR0f9CQkL+AAAA/wICAuYCAgLsAAAA/0VFRf7S0tL/ysrK/8vL + y//MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8vLy//Ly8v/zMzM/8vLy//Ly8v/y8vL/8vLy//MzMz/y8vL/8rKyv/MzMz/z8/P/2Bg + YP8DAwP/AAAA/wAAAP8AAAD/AAAA/wAAAP8QEBD/gICA/9TU1P/Jycn/y8vL/8rKyv/Kysr/0dHR/0FB + Qf4AAAD/AgIC5QICAusAAAD/RERE/tLS0v/Kysr/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8zMzP/Ly8v/y8vL/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/Ly8v/zMzM/8zMzP/Jycn/ysrK/83N + zf/MzMz/ycnJ/8vLy//Ly8v/ycnJ/9TU1P9YWFj/AAAA/wAAAP8AAAD/MDAw/0pKSv8lJSX/AAAA/wAA + AP8AAAD/goKC/9bW1v/Jycn/y8vL/8rKyv/R0dH/QUFB/gAAAP8CAgLmAgIC6gAAAP9FRUX+0dHR/8rK + yv/Kysr/ycnJ/8vLy//Kysr/ysrK/8rKyv/Kysr/ysrK/8vLy//Jycn/y8vL/8zMzP/Ly8v/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/y8vL/8zMzP/Ly8v/ysrK/9XV1f/T09P/yMjI/8zMzP/Y2Nj/zs7O/8fHx//W1tb/lZWV/wAA + AP8AAAD/Hh4e/7m5uf/6+vr///////f39/+Xl5f/CgoK/wAAAP8ODg7/uLi4/8/Pz//Kysr/y8vL/9HR + 0f9AQED+AAAA/wICAuUCAgLrAAAA/0RERP7S0tL/ycnJ/87Ozv/V1dX/0tLS/9PT0//R0dH/0dHR/9PT + 0//S0tL/0tLS/9fX1//Pz8//y8vL/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/y8vL/8rKyv/U1NT/mpqa/0lJ + Sf8nJyf/MjIy/2hoaP/BwcH/z8/P/9LS0v9GRkb/AAAA/wgICP/FxcX///////39/f/9/f3//v7+//// + //+QkJD/AAAA/wAAAP9vb2//2dnZ/8fHx//Kysr/0dHR/z8/P/4AAAD/AgIC5QICAuoAAAD/RERE/tHR + 0f/Nzc3/ubm5/1JSUv83Nzf/OTk5/0JCQv9BQUH/Nzc3/z4+Pv85OTn/RkZG/7u7u//Ozs7/ysrK/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/y8vL/8vLy//MzMz/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/zMzM/8vLy//Ly8v/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/y8vL/8vLy//Jycn/1dXV/39/f/8BAQH/AAAA/wAAAP8AAAD/AAAA/ygoKP++vr7/ysrK/x4e + Hv8AAAD/RkZG///////7+/v//f39//7+/v/8/Pz//Pz8//Ly8v8YGBj/AAAA/0ZGRv/T09P/ycnJ/8rK + yv/R0dH/QEBA/gAAAP8CAgLlAgIC6QAAAP9DQ0P+z8/P/9nZ2f90dHT/AAAA/yQkJP8kJCT/AAAA/wAA + AP8vLy//CQkJ/xYWFv89PT3/cnJy/9nZ2f/IyMj/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8vLy//MzMz/y8vL/8vLy//Ly8v/y8vL/8rKyv/Kysr/ycnJ/8jIyP/IyMj/ycnJ/8rK + yv/Ly8v/zMzM/83Nzf/Ozs7/zs7O/87Ozv/Pz8//z8/P/8/Pz//Ozs7/zs7O/87Ozv/Nzc3/zMzM/8vL + y//Kysr/ycnJ/8jIyP/IyMj/ycnJ/8rKyv/Kysr/y8vL/8vLy//Ly8v/y8vL/8zMzP/Ly8v/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/ysrK/9DQ0P+xsbH/BwcH/wAA + AP8EBAT/QkJC/ycnJ/8AAAD/AAAA/1NTU//MzMz/ExMT/wAAAP9iYmL//f39//v7+//+/v7//v7+//7+ + /v/+/v7/+/v7/y0tLf8AAAD/PT09/87Ozv/Kysr/ycnJ/9HR0f9AQED+AAAA/wICAuQCAgLqAAAA/0RE + RP7Ozs7/2tra/3Fxcf8CAgL/iYmJ/6urq/8VFRX/AAAA/6ioqP+RkZH/xcXF/01NTf9kZGT/3Nzc/8fH + x//MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/y8vL/8vLy//MzMz/y8vL/8vLy//Ly8v/ysrK/8nJyf/IyMj/ysrK/8zM + zP/Ozs7/0dHR/9TU1P/X19f/2tra/9vb2//W1tb/0tLS/87Ozv/Kysr/x8fH/8XFxf/Dw8P/wsLC/8HB + wf/AwMD/wcHB/8LCwv/Dw8P/xcXF/8fHx//Kysr/zc3N/9HR0f/W1tb/29vb/9ra2v/X19f/1NTU/9HR + 0f/Ozs7/zMzM/8rKyv/IyMj/ycnJ/8rKyv/Ly8v/y8vL/8vLy//MzMz/y8vL/8vLy//MzMz/zMzM/8zM + zP/MzMz/zMzM/8vLy//IyMj/2dnZ/3Nzc/8AAAD/AgIC/5SUlP//////6urq/zo6Ov8BAQH/FBQU/76+ + vv8pKSn/AAAA/zIyMv//////+/v7//v7+//+/v7/+vr6//39/f/j4+P/Dg4O/wAAAP9OTk7/1dXV/8jI + yP/Kysr/0dHR/0BAQP4AAAD/AgIC5AICAukAAAD/Q0ND/s3Nzf/Z2dn/cnJy/wAAAP94eHj/yMjI/7Ky + sv9dXV3/iYmJ//////9cXFz/AAAA/3Nzc//a2tr/yMjI/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vLy//Ly8v/y8vL/8vLy//Ly8v/ysrK/8nJ + yf/IyMj/y8vL/87Ozv/S0tL/19fX/9vb2//U1NT/y8vL/8TExP+zs7P/nJyc/4eHh/9zc3P/YmJi/1JS + Uv9ERET/Nzc3/y0tLf8jIyP/HBwc/xYWFv8SEhL/Dw8P/w8PD/8PDw//EhIS/xUVFf8bGxv/IiIi/ysr + K/82Njb/Q0ND/1FRUf9hYWH/c3Nz/4aGhv+ampr/srKy/8PDw//Ly8v/1NTU/9vb2//X19f/0tLS/87O + zv/Ly8v/yMjI/8nJyf/Kysr/y8vL/8vLy//Ly8v/y8vL/8vLy//MzMz/y8vL/8fHx//c3Nz/ZGRk/wEB + Af8HBwf/4eHh////////////cnJy/wAAAP8ICAj/w8PD/11dXf8AAAD/AAAA/5WVlf////////////// + /////////////2JiYv8AAAD/AAAA/4ODg//X19f/yMjI/8rKyv/R0dH/QEBA/gAAAP8CAgLkAgIC6AAA + AP9ERET+zs7O/9nZ2f9ycnL/AgIC/4yMjP+6urr/qqqq/5+fn/+ampr/w8PD/6ysrP8nJyf/aWlp/9zc + 3P/IyMj/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/Ly8v/y8vL/8vL + y//Ly8v/y8vL/8rKyv/Jycn/ycnJ/8zMzP/Q0ND/19fX/9nZ2f/Pz8//xMTE/6urq/+JiYn/ampq/01N + Tf8xMTH/GBgY/woKCv8CAgL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wIC + Av8KCgr/FxcX/zAwMP9MTEz/aWlp/4iIiP+rq6v/xMTE/8/Pz//Z2dn/19fX/9DQ0P/MzMz/ycnJ/8nJ + yf/Ly8v/y8vL/8vLy//Ly8v/yMjI/9jY2P+EhIT/AAAA/wEBAf9XV1f/2tra/7Ozs/8ZGRn/AQEB/x0d + Hf/Ozs7/r6+v/wgICP8AAAD/AgIC/3R0dP/Q0ND/6Ojo/8HBwf9VVVX/AAAA/wAAAP8kJCT/x8fH/8zM + zP/Kysr/y8vL/9HR0f9AQED+AAAA/wICAuMCAgLoAAAA/0NDQ/7Nzc3/2dnZ/29vb/8AAAD/Li4u/3l5 + ef9paWn/CQkJ/0RERP8ZGRn/Q0ND/zk5Of9mZmb/3Nzc/8fHx//MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8vLy//Ly8v/y8vL/8vLy//Ly8v/ysrK/8jIyP/Ly8v/0NDQ/9jY2P/X19f/ysrK/7Oz + s/+JiYn/YWFh/z09Pf8ZGRn/BwcH/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AwMD/woK + Cv8QEBD/Hh4e/yoqKv81NTX/Pz8//0dHR/9MTEz/UFBQ/1NTU/9UVFT/U1NT/1BQUP9NTU3/R0dH/z8/ + P/82Njb/Kysr/x8fH/8RERH/CgoK/wQEBP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wcH + B/8ZGRn/Pj4+/2NjY/+MjIz/tbW1/8vLy//Y2Nj/19fX/9DQ0P/Ly8v/yMjI/8rKyv/Jycn/zc3N/8XF + xf8iIiL/AAAA/wAAAP8KCgr/AAAA/wAAAP8AAAD/dXV1/9PT0//T09P/hYWF/wEBAf8AAAD/AAAA/wcH + B/8PDw//AgIC/wAAAP8AAAD/EhIS/6ioqP/S0tL/ycnJ/8vLy//Kysr/0dHR/0BAQP4AAAD/AgIC5AIC + AugAAAD/QkJC/s/Pz//Pz8//rq6u/zQ0NP8YGBj/Dw8P/xEREf8gICD/FxcX/x8fH/8UFBT/Kioq/7Cw + sP/Q0ND/ycnJ/8zMzP/MzMz/zMzM/8zMzP/MzMz/y8vL/8vLy//Ly8v/y8vL/8vLy//Jycn/ycnJ/83N + zf/U1NT/2dnZ/83Nzf+0tLT/hYWF/1dXV/8qKir/CgoK/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wYG + Bv8RERH/Kysr/0VFRf9eXl7/dnZ2/4uLi/+fn5//srKy/8DAwP/Gxsb/ycnJ/83Nzf/Q0ND/0tLS/9TU + 1P/V1dX/1tbW/9fX1//W1tb/1tbW/9TU1P/S0tL/0NDQ/83Nzf/Jycn/xsbG/8HBwf+0tLT/oaGh/42N + jf93d3f/X19f/0dHR/8sLCz/EhIS/wYGBv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8LCwv/LS0t/1pa + Wv+Kior/uLi4/8/Pz//Z2dn/0tLS/8zMzP/Gxsb/0NDQ/6ysrP8mJib/AAAA/wAAAP8AAAD/AgIC/15e + Xv/Pz8//ysrK/8nJyf/V1dX/k5OT/yUlJf8AAAD/AAAA/wAAAP8AAAD/AwMD/zc3N/+srKz/1NTU/8jI + yP/Ly8v/ysrK/8rKyv/R0dH/Pz8//gAAAP8CAgLlAQEB5wAAAP9BQUH+z8/P/8fHx//Ozs7/zMzM/8jI + yP/Ly8v/y8vL/8jIyP/Jycn/yMjI/8jIyP/Ozs7/zs7O/8nJyf/Kysr/ysrK/8rKyv/Kysr/ysrK/8rK + yv/Kysr/ysrK/8nJyf/Jycn/zs7O/9bW1v/W1tb/xcXF/5ubm/9lZWX/MzMz/woKCv8AAAD/AAAA/wAA + AP8AAAD/AAAA/wcHB/8bGxv/QEBA/2JiYv+EhIT/paWl/7+/v//Kysr/0tLS/9ra2v/a2tr/1tbW/9PT + 0//R0dH/z8/P/83Nzf/MzMz/y8vL/8vLy//Kysr/ysrK/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ysrK/8rK + yv/Ly8v/y8vL/8zMzP/Nzc3/zs7O/9HR0f/T09P/1tbW/9ra2v/a2tr/0tLS/8rKyv+/v7//paWl/4SE + hP9iYmL/Pz8//xoaGv8GBgb/AAAA/wAAAP8AAAD/AAAA/wAAAP8NDQ3/OTk5/21tbf+kpKT/ysrK/9jY + 2P/S0tL/0tLS/8HBwf+Dg4P/YWFh/2lpaf+hoaH/0tLS/8rKyv/Jycn/ysrK/8jIyP/T09P/xMTE/46O + jv9jY2P/W1tb/2pqav+bm5v/zc3N/9HR0f/Hx8f/ysrK/8rKyv/Jycn/ycnJ/8/Pz/8/Pz/+AAAA/wIC + AuYCAgLmAAAA/0RERP7X19f/0NDQ/9DQ0P/S0tL/1NTU/9PT0//T09P/09PT/9PT0//T09P/1NTU/9LS + 0v/R0dH/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/1tbW/9bW1v/CwsL/kJCQ/1VV + Vf8eHh7/AgIC/wAAAP8AAAD/AAAA/wAAAP8JCQn/KSkp/1ZWVv9/f3//qamp/8TExP/Q0ND/2dnZ/9jY + 2P/T09P/z8/P/8zMzP/Kysr/yMjI/8jIyP/Jycn/ysrK/8rKyv/Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/ysrK/8rK + yv/Jycn/yMjI/8jIyP/Kysr/zMzM/87Ozv/S0tL/2NjY/9nZ2f/Q0ND/xMTE/6enp/98fHz/U1NT/yUl + Jf8ICAj/AAAA/wAAAP8AAAD/AAAA/wUFBf8nJyf/YWFh/56env/Hx8f/2dnZ/+Dg4P/h4eH/4uLi/9ra + 2v/R0dH/0tLS/9LS0v/S0tL/0tLS/9DQ0P/U1NT/3d3d/+Hh4f/g4OD/4eHh/9vb2//S0tL/0NDQ/9LS + 0v/S0tL/0tLS/9HR0f/R0dH/19fX/0NDQ/0AAAD/AAAA5AEBAeUAAAD/NTU1/a2trf+np6f/qKio/6io + qP+oqKj/qKio/6ioqP+oqKj/qKio/6ioqP+oqKj/qKio/6mpqf+pqan/qamp/6mpqf+pqan/qamp/6mp + qf+oqKj/p6en/6qqqv+Tk5P/VFRU/xkZGf8AAAD/AAAA/wAAAP8AAAD/AwMD/x4eHv9RUVH/gYGB/7Cw + sP/Kysr/19fX/9jY2P/S0tL/zc3N/8vLy//IyMj/ycnJ/8rKyv/Ly8v/y8vL/8vLy//Ly8v/zMzM/8vL + y//Ly8v/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/y8vL/8vLy//MzMz/y8vL/8vLy//Ly8v/y8vL/8rK + yv/Jycn/yMjI/8vLy//Ozs7/0tLS/9nZ2f/W1tb/yMjI/6ysrP97e3v/SkpK/xcXF/8AAAD/AAAA/wAA + AP8AAAD/AwMD/yYmJv9lZWX/nJyc/6ampv+kpKT/pqam/6ioqP+pqan/qKio/6mpqf+pqan/qamp/6io + qP+mpqb/paWl/6Wlpf+lpaX/p6en/6ioqP+pqan/qamp/6mpqf+pqan/qKio/6enp/+tra3/NjY2/gAA + AP8KCgryAAAA5QAAAP8BAQH+BgYG/gcHB/8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYG + Bv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8GBgb/BwcH/wAAAP8AAAD/AAAA/wAA + AP8GBgb/Li4u/2VlZf+dnZ3/xcXF/9XV1f/Y2Nj/0dHR/8zMzP/Jycn/yMjI/8rKyv/Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vL + y//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Kysr/yMjI/8nJ + yf/MzMz/0dHR/9nZ2f/T09P/wcHB/5SUlP9bW1v/IyMj/wICAv8AAAD/AAAA/wAAAP8DAwP/BwcH/wYG + Bv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYG + Bv8GBgb/BgYG/wYGBv8GBgb/BwcH/wUFBf8BAQH/AAAA/xAQEP8AAADfAAAA/gAAAP0AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wUFBf8wMDD/ampq/6ampv/Ly8v/19fX/9LS0v/MzMz/yMjI/8fH + x//Jycn/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rK + yv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rK + yv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rK + yv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Jycn/x8fH/8jIyP/MzMz/1NTU/9bW + 1v/Gxsb/m5ub/1tbW/8gICD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/gAA + AP8AAAD+EBAQ/gAAALQAAAD+AAAA/FlZWf5xcXH+a2tr/21tbf9tbW3/bW1t/21tbf9tbW3/bW1t/21t + bf9tbW3/bW1t/21tbf9tbW3/bW1t/21tbf9tbW3/bW1t/21tbf9tbW3/bW1t/2xsbP9wcHD/pKSk/83N + zf/e3t7/29vb/9LS0v/Pz8//0dHR/9LS0v/S0tL/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT + 0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT + 0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT + 0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT + 0//T09P/09PT/9PT0//T09P/09PT/9LS0v/Q0ND/0NDQ/9PT0//b29v/4uLi/8nJyf+SkpL/a2tr/21t + bf9tbW3/bW1t/21tbf9tbW3/bW1t/21tbf9tbW3/bW1t/21tbf9tbW3/bW1t/21tbf9tbW3/bW1t/21t + bf9tbW3/bW1t/21tbf9tbW3/a2tr/3Jycv5WVlb/AQEB/gAAAP42Njb/AAAAWQEBAf8AAAD8Y2Nj/ujo + 6P/X19f/2tra/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb + 2//b29v/29vb/9vb2//b29v/29vb/9vb2//R0dH/0dHR/6enp/9MTEz/Q0ND/0VFRf9FRUX/RUVF/0VF + Rf9ERET/RERE/0RERP9ERET/RERE/0RERP9ERET/RERE/0RERP9ERET/Q0ND/0NDQ/9DQ0P/Q0ND/0ND + Q/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0ND + Q/9DQ0P/Q0ND/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9BQUH/QUFB/0FBQf9BQUH/QUFB/0FBQf9DQ0P/RUVF/0VF + Rf9FRUX/RUVF/0FBQf9cXFz/xMTE/9fX1//a2tr/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb + 2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9ra2v/Y2Nj+5ubm/lhY + WP4AAAD8AwMD/wwMDGcAAAAGAAAAygEBAf8AAAD7lZWV/9PT0/7ExMT/yMjI/8jIyP/IyMj/yMjI/8jI + yP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/x8fH/8fH + x//V1dX/T09P/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8BAQH/AQEB/wIC + Av8CAgL/AgIC/wMDA/8CAgL/AwMD/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+EhIT/1NTU/8XF + xf/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jI + yP/IyMj/yMjI/8jIyP/IyMj/xMTE/9XV1f+Dg4P/AAAA+wEBAf8AAADAAAAAAAAAAAAAAAA/AQEB/QAA + APsaGhr9u7u7/9HR0f7IyMj/zMzM/8vLy//Ly8v/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/Kysr/ycnJ/9XV1f9JSUn/AAAA/wAAAP8AAAD/AQEB/wIC + Av8gICD/zc3N/9TU1P/T09P/1dXV/9XV1f/W1tb/19fX/9fX1//Y2Nj/2NjY/9nZ2f/Z2dn/2tra/9vb + 2//b29v/3Nzc/9zc3P/d3d3/3t7e/97e3v/f39//39/f/+Dg4P/h4eH/4eHh/+Li4v/j4+P/4+Pj/+Tk + 5P/k5OT/5eXl/+bm5v/m5ub/5+fn/+jo6P/o6Oj/6enp/+np6f/q6ur/6urq/+vr6//s7Oz/7Ozs/+zs + 7P/t7e3/7e3t/+7u7v/u7u7/7+/v/+/v7//w8PD/8fHx//Hx8f/x8fH/8vLy/+/v7//09PT/np6e/wIC + Av8DAwP/AAAA/wAAAP8AAAD/AAAA/39/f//Y2Nj/yMjI/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vLy//MzMz/zMzM/8jIyP/V1dX+qqqq/g4O + Dv0AAAD8AAAA9wAAADEAAAAAAAAAAQAAAAAAAACIAQEB/wAAAPkxMTH+ycnJ/87Ozv7IyMj/zMzM/8zM + zP/Ly8v/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8vL + y//Jycn/09PT/5ubm/8xMTH/JiYm/ygoKP8NDQ3/AAAA/yQkJP////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////v7+//////+mpqb/AAAA/wAAAP8nJyf/PDw8/zY2Nv9RUVH/vr6+/87O + zv/Kysr/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/Ly8v/y8vL/8zMzP/IyMj/09PT/rq6uv8dHR39AAAA+gEBAf8AAABuAAAAAAAAAAIAAAAAAAAAAgAA + AAQAAAC3AgIC/wAAAPo9PT3+ysrK/9DQ0P7Hx8f/zMzM/8zMzP/Ly8v/y8vL/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/Ly8v/0tLS/8vLy//Hx8f/zs7O/0JC + Qv8AAAD/JSUl//b29v/9/f3//Pz8//39/f/8/Pz/+vr6//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5 + +f/5+fn/+fn5//n5+f/5+fn/+fn5//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6 + +v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6 + +v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr//f39//7+/v/6+vr//v7+/6Sk + pP8AAAD/AAAA/5KSkv/Z2dn/y8vL/9TU1P/Pz8//y8vL/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM + zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/Ly8v/y8vL/8zMzP/Ly8v/x8fH/9TU1P66urr/JiYm/gAA + APoBAQH/AAAAmwAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAABIAAADMAgIC/wAAAPo2Njb+wMDA/9XV + 1f7Hx8f/ysrK/8vLy//Ly8v/y8vL/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rK + yv/Kysr/ysrK/8rKyv/Jycn/ycnJ/8nJyf/Q0ND/QkJC/wAAAP8lJSX/+Pj4///////+/v7///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////v7+///////pKSk/wAAAP8AAAD/jY2N/9LS0v/FxcX/xsbG/8fH + x//IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jI + yP/IyMj/yMjI/8nJyf7Z2dn+q6ur/yAgIP4AAAD6AgIC/wAAAK8AAAAEAAAAAgAAAAAAAAAAAAAAAAAA + AAAAAAABAAAAAAAAABkAAADOAgIC/wAAAPoiIiL+oKCg/9nZ2f7S0tL+zs7O/8/Pz//Q0ND/0NDQ/9DQ + 0P/Q0ND/0NDQ/9HR0f/R0dH/0dHR/9HR0f/R0dH/0dHR/9HR0f/S0tL/0tLS/9LS0v/R0dH/0NDQ/9fX + 1/9FRUX/AAAA/yYmJv/4+Pj///////39/f///////f39/7m5uf+np6f/qqqq/6qqqv+qqqr/qqqq/6qq + qv+qqqr/qqqq/6qqqv+qqqr/qqqq/6qqqv+qqqr/qqqq/6qqqv+qqqr/qqqq/6qqqv+qqqr/qqqq/6qq + qv+qqqr/qqqq/6qqqv+qqqr/qqqq/6qqqv+qqqr/qqqq/6qqqv+qqqr/qqqq/6qqqv+qqqr/qqqq/6qq + qv+qqqr/qqqq/6qqqv+qqqr/qqqq/6qqqv+qqqr/qqqq/6qqqv+pqan/ra2t//f39///////+vr6//// + //+lpaX/AAAA/wAAAP+ZmZn/5OTk/9bW1v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra + 2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9nZ2f/Z2dn+0dHR/4SEhP8PDw/9AAAA+gIC + Av8AAACvAAAACQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAABYAAAC9AQEB/wAA + APsCAgL8WVlZ/qqqqv6+vr7+urq6/rq6uv+5ubn/t7e3/7a2tv+1tbX/tLS0/7Ozs/6xsbH+sLCw/6+v + r/6urq7+ra2t/qysrP6rq6v+qqqq/qioqP6np6f+q6ur/jc3N/4AAAD/JSUl/vj4+P///////Pz8//// + ///6+vr/Jycn/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8DAwP/5ubm///////5+fn//////6SkpP4AAAD+AAAA/1RUVP58fHz+dHR0/nV1 + df51dXX+dHR0/nNzc/50dHT+dHR0/nNzc/5ycnL+c3Nz/nNzc/5zc3P+c3Nz/nJycv5zc3P+dHR0/nR0 + dP50dHT+d3d3/nZ2dv44ODj+AAAA+gAAAP8BAQH/AAAAnAAAAAUAAAAAAAAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAcAAACSAQEB/wAAAP8AAAD9AgIC+goKCvoJCQn6CQkJ+ggI + CPoICAj6BwcH+gcHB/oHBwf6BgYG+gYGBvoGBgb6BQUF+gUFBfoFBQX6BAQE+gQEBPoEBAT6AwMD+gMD + A/oDAwP7AgIC/QAAAP8jIyP++Pj4///////8/Pz///////r6+v8pKSn/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wYGBv/m5ub///////n5 + +f//////pKSk/wAAAP8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8QAA + AG0AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA + AAAAAABKAAAAyQICAv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/yIiIv/4+Pj///////39 + /f///////f39/7+/v/+wsLD/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Ky + sv+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Ky + sv+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Ky + sv+ysrL/srKy/7Kysv+xsbH/tbW1//f39///////+vr6//////+jo6P+AAAA/gAAAP8BAQH+AgIC/QIC + Av4CAgL9AgIC/QICAv0CAgL9AgIC/QICAv0CAgL8AgIC/AICAvwCAgL8AgIC/AICAvwCAgL8AgIC/AIC + Av0CAgL9AgIC/QICAv4CAgL+AgIC8AAAAKMAAAAsAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAASgAAAIYAAACQAAAAjgAA + AIwAAACLAAAAiQAAAIcAAACGAAAAhAAAAIMAAACBAAAAgAAAAH8AAAB+AAAAfQAAAHsAAAB6AAAAeAAA + AHcAAAB3AAAAdAEBAdEAAAD/IyMj/Pj4+P///////v7+//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///7+/v//////6SkpP4AAAD+AQEB/wAAAHIAAAA0AAAAOQAAADYAAAA1AAAANQAAADUAAAA0AAAANAAA + ADQAAAAzAAAANAAAADQAAAA0AAAANAAAADMAAAA0AAAANAAAADUAAAA2AAAAOQAAADoAAAAYAAAAAAAA + AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBpQAAAP8jIyP6+Pj4//// + ///9/f3///////7+/v/6+vr/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5 + +f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5 + +f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5 + +f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/+/v7///////r6+v//////pKSk/QAAAP0BAQH/AAAAQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAEAAAAAwAA + AAMAAAADAAAAAwAAAAMAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA + AAQAAAAEAAAABQAAAAQBAQGtAAAA/yMjI/v4+Pj///////7+/v////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////+/v7//////+kpKT+AAAA/gEBAf8AAABLAAAAAgAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEBAawAAAD/IyMj+/j4 + +P///////f39///////+/v7/19fX/8vLy//Nzc3/zc3N/83Nzf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/83N + zf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/83N + zf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/83N + zf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/8zMzP/Ozs7/+Pj4///////6+vr//////6SkpP4AAAD+AQEB/wAA + AEoAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAEAAAAAAQEBrAAAAP8jIyP7+Pj4///////9/f3///////39/f84ODj/BgYG/wgI + CP8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYG + Bv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYG + Bv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8GBgb/BgYG/w0N + Df/e3t7///////n5+f//////pKSk/gAAAP4BAQH/AAAASgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAQGsAAAA/yMj + I/v4+Pj///////z8/P///////Pz8/yUlJf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/9vb2///////+Pj4//////+kpKT+AAAA/gEB + Af8AAABKAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAAAAEBAawAAAD/IyMj+/j4+P///////f39///////+/v7/paWl/4qK + iv+Pj4//jo6O/46Ojv+Ojo7/jo6O/46Ojv+Ojo7/jo6O/46Ojv+Ojo7/jo6O/46Ojv+Ojo7/jo6O/46O + jv+Ojo7/jo6O/46Ojv+Ojo7/jo6O/46Ojv+Ojo7/jo6O/46Ojv+Ojo7/jo6O/46Ojv+Ojo7/jo6O/46O + jv+Ojo7/jo6O/46Ojv+Ojo7/jo6O/46Ojv+Ojo7/jo6O/46Ojv+Ojo7/jo6O/46Ojv+Ojo7/jo6O/42N + jf+SkpL/8PDw///////6+vr//////6SkpP4AAAD+AQEB/wAAAEoAAAAAAAAAAgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQEBrAAA + AP8jIyP7+Pj4///////+/v7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////v7+///////pKSk/gAA + AP4BAQH/AAAASgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAQGsAAAA/yMjI/v4+Pj///////39/f///////v7+//v7 + +//5+fn/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6 + +v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6 + +v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6 + +v/6+vr/+vr6//7+/v//////+vr6//////+kpKT+AAAA/gEBAf8AAABKAAAAAAAAAAIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEB + AawAAAD/IyMj+/j4+P///////v7+//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////7+/v//////6Sk + pP4AAAD+AQEB/wAAAEoAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQEBrAAAAP8jIyP7+Pj4///////9/f3///////7+ + /v/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39 + /f/9/f3//f39//39/f/+/v7///////r6+v//////pKSk/gAAAP4BAQH/AAAASgAAAAAAAAACAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA + AAABAQGsAAAA/yMjI/v4+Pj///////39/f//////+fn5/1VVVf83Nzf/Ojo6/zk5Of85OTn/OTk5/zk5 + Of85OTn/OTk5/zk5Of85OTn/OTk5/zk5Of85OTn/OTk5/zk5Of85OTn/OTk5/zk5Of85OTn/OTk5/zk5 + Of85OTn/OTk5/zk5Of85OTn/OTk5/zk5Of85OTn/OTk5/zk5Of85OTn/OTk5/zk5Of85OTn/OTk5/zk5 + Of85OTn/OTk5/zk5Of85OTn/OTk5/zk5Of85OTn/OTk5/zk5Of84ODj/QkJC//Hx8f//////+vr6//// + //+kpKT+AAAA/gEBAf8AAABKAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEBAawAAAD/IyMj+/j4+P///////Pz8//// + ///39/f/EhIS/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/6+vr///////5+fn//////6SkpP4AAAD+AQEB/wAAAEoAAAAAAAAAAgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAEAAAAAAQEBrAAAAP8jIyP7+Pj4///////9/f3///////n5+f9eXl7/QUFB/0NDQ/9DQ0P/Q0ND/0ND + Q/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0ND + Q/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0ND + Q/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/QUFB/0tLS//x8fH///////r6 + +v//////pKSk/gAAAP4BAQH/AAAASgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAQGsAAAA/yMjI/v4+Pj///////39 + /f////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////+vr6//////+kpKT+AAAA/gEBAf8AAABKAAAAAAAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAABAAAAAAEBAawAAAD/IyMj+/j4+P///////v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//// + ///7+/v//////6SkpP4AAAD+AQEB/wAAAEoAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQEBrAAAAP8jIyP7+Pj4//// + ///+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////v7+///////pKSk/gAAAP4BAQH/AAAASgAA + AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAAABAQGsAAAA/yMjI/v4+Pj///////39/f////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////+vr6//////+kpKT+AAAA/gEBAf8AAABKAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEBAawAAAD/IyMj+/j4 + +P///////f39///////8/Pz/aGho/0ZGRv9JSUn/SEhI/0hISP9ISEj/SEhI/0hISP9ISEj/SEhI/0hI + SP9ISEj/SEhI/0hISP9ISEj/SEhI/0hISP9ISEj/SEhI/0hISP9ISEj/SEhI/0hISP9ISEj/SEhI/0hI + SP9ISEj/SEhI/0hISP9ISEj/SEhI/0hISP9ISEj/SEhI/0hISP9ISEj/SEhI/0hISP9ISEj/SEhI/0hI + SP9ISEj/SEhI/0hISP9ISEj/SEhI/0dHR/9PT0//7e3t///////6+vr//////6SkpP4AAAD+AQEB/wAA + AEoAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAEAAAAAAQEBrAAAAP8jIyP7+Pj4///////8/Pz///////r6+v8bGxv/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP/k5OT///////n5+f//////pKSk/gAAAP4BAQH/AAAASgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAQGsAAAA/yMj + I/v4+Pj///////39/f//////+/v7/1hYWP8xMTH/NTU1/zQ0NP80NDT/NDQ0/zQ0NP80NDT/NDQ0/zQ0 + NP80NDT/NDQ0/zQ0NP80NDT/NDQ0/zQ0NP80NDT/NDQ0/zQ0NP80NDT/NDQ0/zQ0NP80NDT/NDQ0/zQ0 + NP80NDT/NDQ0/zQ0NP80NDT/NDQ0/zQ0NP80NDT/NDQ0/zQ0NP80NDT/NDQ0/zQ0NP80NDT/NDQ0/zQ0 + NP80NDT/NDQ0/zQ0NP80NDT/NDQ0/zQ0NP8yMjL/PDw8/+vr6///////+vr6//////+kpKT+AAAA/gEB + Af8AAABKAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAAAAEBAawAAAD/IyMj+/j4+P///////f39///////+/v7//Pz8//v7 + +//8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8 + /P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8 + /P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//v7 + +//8/Pz//v7+///////6+vr//////6SkpP4AAAD+AQEB/wAAAEoAAAAAAAAAAgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQEBrAAA + AP8jIyP7+Pj4///////+/v7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////v7+///////pKSk/gAA + AP4BAQH/AAAASgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAQGsAAAA/yMjI/v4+Pj///////39/f///////v7+//r6 + +v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6 + +v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6 + +v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6 + +v/6+vr/+vr6//7+/v//////+vr6//////+kpKT+AAAA/gEBAf8AAABKAAAAAAAAAAIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEB + AawAAAD/IyMj+/j4+P///////v7+//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////7+/v//////6Sk + pP4AAAD+AQEB/wAAAEoAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQEBrAAAAP8jIyP7+Pj4///////9/f3///////r6 + +v+goKD/kZGR/5SUlP+UlJT/lJSU/5SUlP+UlJT/lJSU/5SUlP+UlJT/lJSU/5SUlP+UlJT/lJSU/5SU + lP+UlJT/lJSU/5SUlP+UlJT/lJSU/5SUlP+UlJT/lJSU/5SUlP+UlJT/lJSU/5SUlP+UlJT/lJSU/5SU + lP+UlJT/lJSU/5SUlP+UlJT/lJSU/5SUlP+UlJT/lJSU/5SUlP+UlJT/lJSU/5SUlP+UlJT/lJSU/5SU + lP+UlJT/kpKS/5ubm//5+fn///////r6+v//////pKSk/gAAAP4BAQH/AAAASgAAAAAAAAACAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA + AAABAQGsAAAA/yMjI/v4+Pj///////z8/P//////9fX1/xAQEP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC//Hx8f//////+fn5//// + //+kpKT+AAAA/gEBAf8AAABKAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEBAawAAAD/IyMj+/j4+P///////Pz8//// + ///29vb/ISEh/wQEBP8FBQX/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQE + BP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQE + BP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQE + BP8EBAT/BQUF/wQEBP8UFBT/8vLy///////6+vr//////6SkpP4AAAD+AQEB/wAAAEoAAAAAAAAAAgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAEAAAAAAQEBrAAAAP8jIyP7+Pj4///////9/f3///////z8/P/Ozs7/xsbG/8jIyP/Hx8f/x8fH/8fH + x//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fH + x//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fH + x//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//IyMj/x8fH/8vLy//8/Pz///////r6 + +v//////pKSk/gAAAP4BAQH/AAAASgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAQGsAAAA/yIiIvv39/f//v7+//39 + /f/+/v7///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////+/v7/+vr6//7+/v+jo6P+AAAA/gEBAf8AAABJAAAAAAAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAABAAAAAAAAAKsAAAD/IiIi+vX19f77+/v/+vr6//v7+//7+/v/+fn5//n5+f/5+fn/+fn5//n5 + +f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5 + +f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5 + +f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+/v7//v7 + +//39/f/+/v7/6Ghof4AAAD+AAAA/gAAAEkAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBqwAAAP4kJCT7//////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////ra2t/QAAAP0BAQH+AAAASgAA + AAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAAAAAACsAAAA/A0NDflmZmb+ampq/mlpaf5qamr+ampq/mpqav5qamr+ampq/mpq + av5qamr+ampq/mpqav5qamr+ampq/mpqav5qamr+ampq/mpqav5qamr+ampq/mpqav5qamr+ampq/mpq + av5qamr+ampq/mpqav5qamr+ampq/mpqav5qamr+ampq/mpqav5qamr+ampq/mpqav5qamr+ampq/mpq + av5qamr+ampq/mpqav5qamr+ampq/mpqav5qamr+ampq/mpqav5qamr+ampq/mpqav5qamr+ampq/mpq + av5qamr+aGho/m9vb/5ERET9AAAA/AAAAP8AAABFAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAGIAAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA6gAA + ABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHcAAADgAwMD7wQEBPAEBATwBAQE8QQEBPEEBATxBAQE8QQE + BPEEBATxBAQE8QQEBPEEBATxBAQE8QQEBPEEBATxBAQE8QQEBPEEBATxBAQE8QQEBPEEBATxBAQE8QQE + BPEEBATxBAQE8QQEBPEEBATxBAQE8QQEBPEEBATxBAQE8QQEBPEEBATxBAQE8QQEBPEEBATxBAQE8QQE + BPEEBATxBAQE8QQEBPEEBATxBAQE8QQEBPEEBATxBAQE8QQEBPEEBATxBAQE8QQEBPEEBATxBAQE8QQE + BPEEBATxBAQE8QMDA/AEBATwAgIC7wAAAMYAAAA+AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAgAAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAA + AA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAA + AA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAA + AA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAANAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgG + AAAAXHKoZgAAHABJREFUeJzt3Xl0VPX9//HnLAlD9oQgCSJbIoR9aUL4lk2QICpIew5gBXqOS/v1W0Xl + q9WfVkEj1uJyjlIPlq/aWitWKaitYrUKuAChIkIgBRETwyYIYctKlsnM748w42SWkMk2TO7rcc7nzJ3P + vXPnncnc99zP537uvSAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi + IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiKd2SxgPVAGOFU6TakCdgL3A9GI + eLEALxL6L6pK+5f/AKmIeHiE0H8xVTqufIgAYAp1ABeBZOAQ0DXUgUiHygS+DHUQoWYOdQAXgYlo4zei + iaEO4GJgDXUAF4Ek74q0tDTWrFmDyaQdpM7g17/+NRs2bPCu7h6KWC42SgB+xMfHM2rUqFCHIW0kMTHR + X7X2ftGHIGJoSgAiBqYEIGJgSgAiBqYEIGJgSgAiBqbDgK3097//nfLy8lCHYUgWi4V58+aFOoywpgTQ + Svfddx/ffPNNqMMwJJvNpgTQSmoCiBiYEoCIgSkBiBiY+gBaacCAAdhstlCHYUhdunQJdQhhTwmgldat + WxfqEERaTE0AEQNTAhAxMCUAEQNTAhAxMCUAEQNTAhAxMCUAEQNTAhAxMA0EaqVHH32UnTt3hjoMw/rz + n/9MfHx8qMMIW0oArbR161Y++OCDUIdhWDU1NaEOIaypCSBiYEoAIgamBCBiYOoDaKX58+eTnZ0d6jAM + Kzo6OtQhhDUlgFZasGBBqEMQaTE1AUQMTAlAxMCUAEQMTAlAxMCUAEQMTAlAxMCUAEQMTOMAWmn58uUc + Pnw41GEY1rJly7Ba9TVuKX1yrfTaa6/xxRdfhDoMw3rssceUAFpBTQARA1MCEDEwJQARA1PjqZWuvvpq + Bg4cGOowDMtisYQ6hLCmBNBKubm5oQ5BpMXUBBAxMCUAEQNTAhAxMCUAEQNTAhAxMCUAEQNTAhAxMCUA + EQPTQKBWuvPOO1m3bl2owzCsDz/8kPT09FCHEbaUAFqppKSE4uLiUIdhWLW1taEOIaypCSBiYEoAIgam + BCBiYOoDaKW7776buXPnhjoMw7rssstCHUJYUwJopaysLLKyskIdhkiLqAkgYmBKACIGpgQgYmBKACIG + 1p6dgFYgFYgGHEEWZzMeXTynaUb9heaJGEZbJwAbMAe4AZgAxLTx+j15JgMn/pOEv2W862ztGKNcvIYB + N9HwXYAfvg941IHvj4XD67nTzzLNZfIqrjrz+WIFIoEKYA+wG7C38L38aqsEEAn8D/D/gJ5ttM4LMQG6 + JrS01DXnSzg5CrwCPAcca4sVtkUCmAD8HzCoDdYVdl544QX27dsX6jAM69FHHyUmpj13NC8qPYEHgLuA + Z4DHgapQBRMJPEHDLon3LnZYl9GjRzuba/r06SGP18jl+PHjF/wfzZ49O+RxtlP5BvgxrdDSowCXAZ8C + 96HdcJFQSadhO3yIFm7LLWkCZAN/B1ICLdC3b1/mzJnDxIkTSUxMxOl04nA4cDqdjaYdDkejae/5ns8B + v/X+lgtmHXl5ebz++ust+BgknCUlJdG9e3f39wBo9OiaBtzfnUC8l28us9ns97nZbHaXiIgIjh8/zokT + JwKtxgosBTKBnwPlwcQQbAKYCbxOw6E9HwkJCSxcuJAZM2aEzT3bjx8/HuoQJARmzpzJHXfcEeowmsXh + cLBjxw5eeukltm/fHmixWcAnwAyC6CAMZiudB/wZiPA3c/LkyfzmN78hMTExiFWGv5ycHHr06BHqMAzL + Zuv8R3HNZjOZmZn86Ec/Yv369Tz11FOcPn3a36KjgU1ADlDcnHU3NwEsoGHj92nvW61WFi1axPXXX4/J + ZPJ5YWd39913hzoEMQiTyUROTg6jRo1i8eLFfPHFF/4WS6NhT2AKUHShdTan42A28DJ+Nv7Y2Fiee+45 + fvaznxly4xcJheTkZJ577jnmzZsXaJHewAag74XWdaEEcCXwGn72FFJSUvjjH/+oc+FFQsBqtXL33Xdz + 3333+XQmntcH+BBosn3aVAIYAqyl4Xh/I7169eLFF1+kf//+QYQsIm1t7ty5LF26NFCn++XAOwTotIfA + CaAb8A8gwXtGz549WblyJampqS0IV0Ta2lVXXcXjjz8eKAmMoaH/zu+27u8VZhrGG6d5z+jWrRsrVqwg + JSXgEICLUmlpKa+99hoHDx50jwOAhuO3x461yZBqCTO7du3ihRdecO8+m0wmTCYTUVFRTJo0Kex+4KZM + mcLDDz/MkiVL/I1JmE3DEOLfes/wlwAWAdd6V9psNp555pmwuwij3W7n9ttv13h9aSQ/P5/8/Hy/855/ + /nleeOEFMjIyOjiq1rn66qs5deoUzz77rL/ZuUAe8LFnpfduwTD8ZAmTyURubi6DBw9uq1g7zN69e7Xx + S1Cqqqr4y1/+EuowWmTBggXMmTPH3ywL8BcamvduVq8FXsTP+fE33ngjV155ZRuG2XEqKiqCWt5sNlNe + Xs7777/vPrTp2j10zXfxV+e9S+lvuqn5zVlXS17f3Pja6+/zXmeg+f7evznrbGrZlggw0CYs3HPPPRQX + F/sbNdgL+D0w31XhmQBuoWGcfyMjR47k1ltvbY84O0SwY7QdDgfffPMN11wTbqeKX1wCbXwX2iibmt/S + ddbX1zc535+ICL8DXsOC1Wrlt7/9LQsWLKCkpMR79jxgFfA+/NAEiAYe8V6ya9eu5Obmhs24fn969uyo + 65OIJ88TrrxPymqq1NfXByx2u91vqaura7Jc6GQef8Ktr8tbt27dyM3NDZQcn+H84X3X6L7/AXxub3P7 + 7bczfvz4dguyIyQmJlJWVsZ//vOfUIciYaJnz5489NBDYX+hkUsvvZTTp0+zd+9e71nJwCFgh+v6Y/to + GDTg1rt3b1avXh3Wu0Ke9u3bx8GDB1t02qYYR3R0NFlZWZ3mJKPy8nJmz57NqVOnGtX37t2bQ4cOWU3A + f9FweKCRpUuXcvXVV3dQmCLSXtauXcuyZct86leuXImJhrb/w94z4+Pjw+4En+TkZKZOncr06dPp1atX + qMORMFdbW8vmzZv55z//ya5du8J279HpdFJaWupTP3/+fEw0XN1nVodH1c6GDRvGtGnTuPLKK7nkkktC + HY6ECbvdTn5+Ph988AEbN26krKws1CG1m5EjR2KiYff/v0IdTHsxm80MHz6cqVOnMnnyZF28Q3zU19ez + e/duPvroIzZu3MjJkydDHVKH6NOnDybgcxpOGOj0TCYTQ4YMYfLkyUyaNKnhAwizZo60jbq6Onbs2MHH + H3/MJ598YpiN3lPfvn0xAdsAQ57U37dvX8aPH8/EiRMZPnx4WI93kAsrLy9n69atfPbZZ+Tl5XXq3fvm + SE9PxwR8QcMVRd1uuOEGJkyYEJqoWujs2bNs3LiRTZs2UVNTE/TrY2Njyc7O5sc//jHZ2dlqKnQCTqeT + oqIi8vLy2LJlC7t27cJuD/7OWv369eOaa65h8ODBYbvHmJeXx6pVqxrVDRgwACs/3JPMrV+/fowZE36t + gmnTplFRUcGnn37KRx99xOeff05dXV2zXlteXs769etZv349AGlpaWRlZZGdnc3IkSOJjY1tz9CljZw8 + eZLt27fz+eef8/nnnzd1Oe0mpaSkkJOTw/Tp0xk4cGAbR9nxjh496lO3f//+HX73ecM1ywHExMRw7bXX + cu2111JaWspnn33Ghg0b2LZtG7W1tc1eT1FREUVFRbzxxhtYrVYGDhzI6NGjGTVqFCNGjCA+Pr4d/wpp + rpMnT7Jz50527NjB9u3bOXDgQIsP16WkpDB58mRycnIYOnRooEtthaUAn4nT7x5AOCcAT/Hx8cycOZOZ + M2dSUVFBXl4en376KVu2bAnqLEG73c6ePXvYs2cPr776KiaTif79+zN8+HCGDx/OsGHDuOyyy7BYdJOk + 9mS32zlw4AAFBQXs2rWLXbt2cfjw4Vats0+fPkyaNIkpU6YwePDgTrXRewpwPoT/BNAZxcTEMG3aNKZN + m0ZtbS35+fl89tlnbNmyJegvkattWVRUxNtvvw1AXFwcGRkZDB48mEGDBpGRkUFqamqn/UK1N4fDwdGj + R9m3bx9fffUVe/bsYd++fUGf3u3NYrEwdOhQJkyYwMSJE4O+rqXdbqe6upouXbq06TB5p9NJRUUFlZWV + WK1W4uLiiIz0uRxnWzNOAvAUGRnJmDFjGDNmDPfccw+HDx8mLy+PrVu38uWXX1JdXR30OsvKyti2bRvb + tm1z18XFxZGens6AAQNIS0sjPT2dfv36hf1JJm2tsrKS4uJiCgsLKSwsZP/+/RQWFrZZL31SUhLZ2dmM + GzeOsWPHkpDgc6nLJp08eZK1a9eyadMmiouLqaurw2Kx0Lt3b8aPH8+cOXNadAmxiooKPvzwQzZt2kRB + QQGlpaXuXXWr1Urv3r3JysoiJyeHkSNHBr1+T4GaRSZgJ9Bo7YsXL2bWLN/BgQ6Hg7fffpvNmzc3u3PN + W0REBBMmTOAnP/nJRfnrWFtby+7du90b8759+1rUc9yUSy65hL59+9KnTx/69OlDr169uOyyy+jRo0en + OQnFW21tLSdOnODIkSMcOnSIgwcPcvDgQQ4cOMD333/fpu9ls9kYMWIEY8aMITs7mwEDBrTou+Z0Onnj + jTdYsWJFkz8KVquVm2++mVtuuaVZzcDq6mpeeeUVXn/99Wbv0QwdOpQ777yT0aNHNzt+TwHOB9hmAvKB + EZ61S5Ys4brrrvNZyZ/+9Ceef/75FgXgbeHChdx4441tsq72VFFRQX5+Pl9++SU7d+5sl4TgYrVaSU5O + JiUlhdTUVFJSUujRowfdu3ene/fuJCcnk5CQ0BG7hkGx2+2cPXuWU6dOUVJSQklJCcePH+f777/n+++/ + 5+jRo5SUlLT4R+NCbDYbQ4YMYfTo0WRmZjJkyJBWJ1Kn08kTTzzB2rVrm/2aqVOn8thjjzU5nqSwsJD7 + 77+fAwcOBB2TyWRi3rx53HHHHUGPWQmUAILqBHz33XeDetOmvPvuu2GRAGJiYhg/frz7ughVVVXs3buX + /Px8CgoK2LNnD2fPnm2T97Lb7e6NJtAFK81mMzExMSQmJhIfH09cXBxxcXHExsYSHR1NdHQ0UVFRdO3a + FZvNRmRkJJGRkURERGCxWLBare47zwI+F+JwXUSjurqampoazp07x7lz56isrKSiooKKigrKy8spLS2l + tLSUM2fOUF5e3qKr7rRUUlISw4YNY/jw4YwcOZKMjAy6dOnSpu/x17/+NaiNH2D9+vVceumlAW86mp+f + z1133UVlZWWLYnI6nbz22mscOnSIJ554IqgfgjY5CnDu3LlGz//973+TltZw9fD6+nq+/fZbli1bxjvv + vMOUKVNYvXo1a9as4bbbbqNfv36sW7eOmJgY5syZQ3Fxs+5deNGJiooiMzOTzMyGsVMOh4PDhw+zd+9e + d0fVN9980+J/8oU4HA7KysoMM4otJiaGyy+/nMGDBzN48GCGDBnCpZde2q5HqkpKSvjDH/7QoteuWrWK + a665xr1duBQVFbFo0aI2+V5s2rSJ3NxcHnvssdZ+Ds5WjX1NSkoiOTmZRx55hKioKO666y7Wrl1LRkYG + ERERJCcnExsbS//+/dm4cSPdu3dn1qxZbNu2je7du7fmrS8aZrPZ3ZZ3XT/Bbrfz3XffsX//fvbv309R + URGFhYUcO3YsbE8p7QipqamkpaVx+eWXM2DAAAYMGECvXr06/PDqm2++6bfNP3bsWB566CEyMjL49ttv + efLJJ90Dx1zq6+t54403ePDBB911tbW1PPjggwHb+9nZ2dx8882MGzeO1NRUampq2LdvH++++y4vv/yy + 3z3Mf/3rX2RmZvLTn/60VX9rmwx+//3vf8+ZM2cYNWoUOTk5jBgxgqqqKqBhvP3HH39McnIy1113HRs2 + bGiLt7yoWa1Wd1LIyclx1587d44DBw5w4MABdwfYkSNHOHLkSKsPb4WL6OhoUlNT6d27t/sz6tevH337 + 9iU6OuAdrDrU5s2bferGjh3LJ5984m5qpKWlMWXKFGbNmsV7773X5OtXr15NYWGhzzpjY2NZuXIlN9xw + g88veWpqKpMnT+aBBx7gV7/6FW+++abP65cvX86UKVNaNSitTRLATTfdhM1mY9y4cdTX17N371769u0L + 4G47X3/99YbY+JvStWtXBg0axKBBgxrVOxwOSktL+e677zh27Ji7H+D48eOcOHGCkpISzpw5026dj23F + YrGQkJDg7rTs0aMHKSkppKSk0LNnT3r27EliYuJFPWDK6XT6bZ7ef//9Pv0MFouFxYsX+ySAkpISysrK + iIuLo6amxmcMPjQ0bdavX3/BIffdu3fnb3/7G7feeisvvfRSo3kVFRWsWbOGX/ziF83983xYad4twpu0 + bNkydx/A448/ztdff+1OAKWlpcTHx/Pggw/yySeftHhsdmdmNptJTEwkMTGRoUOH+l3GbrdTVlbG6dOn + OXPmDGfPnqW0tJSzZ89SUVFBWVkZlZWVVFZWUlVVRXV1NdXV1dTW1lJTU0NdXR12u536+nq/zRCr1YrF + YiEiIoKIiAi6dOmCzWbDZrMRFRVFVFQUMTExxMTEuDseExISSEhIIDExkW7dupGQkBD2Z1S6OkK9BbpK + cKB61wlpeXl5PtfjA3j22Webfb6N2WxmxYoVbNu2jd27dzeat27dOm655ZYW9wW0yX+rR48enDlzxu+8 + devWUVxczEMPPcSGDRuYOnUqx48fb4u3NRSr1UpSUhJJSUmtXpfrEt3Q+htodDZWq5WYmBifTta8vDy/ + x+C3bNniU2exWNwnj23dutVnfkZGRtBHwCIjI1m6dKnP+JwjR45w+PBhevfuHdT6XPz++rflF8LpdLJ4 + 8WIeffRRhg4dyoYNG8Lu5qKdjclkch8K1Mbva8iQIT51ubm5FBQUNKorLi7m3nvv9Vk2LS3NPQ7h66+/ + 9pk/d+7cFjWDpk+f7ncUo7/3aK5W7QH84x//ICUlxe9ZdseOHWPVqlXuDPnwww9z+vRpMjMzufnmm33a + MyIXi2nTpvn8cp88eZIxY8Ywd+5c91GA1atXU15e7vf1Ln7uzNPiYb2RkZEMGTLEZ6/D33s0kymoBJCS + ktLo0kn+sp/L7t27+fnPf96obvny5e7pYcOGBfPWIh3mqquu4uWXX+bQoUON6qurqy9409CkpCRmz57t + fu7vxzEqKqrFsfl7bTCnuXsxBdUBeNttt7XJWHWbzcbtt9/e6vWItIfIyEhyc3ODHnJtsVhYsmRJo5O9 + /F1Ixt/FOZrL32tbc7GaoM4GHDNmDGvXrmX79u0tzjqRkZFkZmaqH0AuasOGDePJJ5/kgQce8BkB609E + RARLlizxuZVer169fE43//jjj7npppuCjuno0aN+2/vNuQdGoL6eoK8IlJKSwowZMy74hiLhbvz48axa + tYqnn37ab2++y8iRI7n33nv9XjpsxIgRPq996623eOKJJ4I+hXjlypU+Y0GsVqvfTsvm6nSXBBNpS336 + 9OG5556jsLCQzZs3s3//fsrLy4mOjiYtLY3x48f7DOzydMUVV7By5cpGdZWVlSxcuJA1a9Y0+zTlgoIC + nn76aZ/6rKysVl1fIrxHbYh0kPT0dNLT01v0uszMTLZv396o/q233uLOO+9k+fLlFzwk+NVXXzFjxgy/ + TZHrr78+6Jg8BNcJKCLBu+222/zuVa9YsYIrrrii0VWkPFVVVfHMM88wduxYnyMS0ND0GDduXLNiaKoP + QPv7Iu1o+PDhzJ8/3+85AZs3byY7O5thw4Yxbtw4evbsSU1NDV999RUbNmzwe1NPaDgcuHjx4lY315UA + RDrAwoULKSoqCtiZWFBQ4DPSMBCr1crSpUvp06dPa8NSE0CkI1itVp566imuuOKKVq3HZrOxbNkyJk2a + FNTrAuwp+E8AOgog0vZsNhtPPvkkixYtatGAukGDBvHKK6+0KIkENQ5ARNqH2WxmwYIFTJ06lVdffZX3 + 3nvvgheDGThwIPPnz+eqq65q82spKAGIhEBKSgr33nsvd9xxB/n5+ezevZvvvvuOsrIyIiIiSEpKIj09 + naysrLZo6wcS3MlAItK2bDYbY8eOZezYse36PoGaAOoEFDEuHQUQMTAlABEjUBNARLxpD0DECLQHIGJg + SgAi4q0FN00XkbAT1B6AbmApYgjqBBQxMCUAESNQJ6CIeNMegIgRaA9AxMCaSgDq8hcxJrMSgIgBqAkg + Ij6UAESMS0OBRYxAQ4FFxIffTkAlABFD0EAgESMIahyA9gBEOhcNBBIRH+oEFDEujQQUMTCnGXB41zoc + PlUi0vn4TwBqAoh0LoG2ae0BiBhAgG3aaQbqm7mwiISpyspKv9VmwGdOeXl5uwckIh2noKDAX/V3ZuCI + d+369es5duxYuwclIu3vgw8+4P333/c360sLkApc61l76tQp3nzzTY4dO0b//v2Ji4vriDhFpA2VlZWx + bNkyVq5c6a8T0An8rwm4BPgWiPa3EqvVyuzZs/nlL39JfHx8+0YsIq3mcDjYtGkTv/vd7zh58mSgxd4B + ZrkGCC8CnmlqpVarleTkZJKTk4mPjyc2NpaYmBiio6Pp2rUrXbt2JSoqiq5du9KlSxefEhkZSWRkJBER + EURERGC1WrFYLO7HQGOVRTqr+vp66uvrsdvt1NfXU1dXR21trfuxtraWmpoan3Lu3DnOnTtHVVUVVVVV + VFZWUl5eTllZGWfOnOHEiRMX6sc7DGQDx1xbnQl4AHgUsLTvn33+DU0m94ZvNpuxWCzuxOB69CyeycJz + 2vXoWoermM3mRvNcxfO55+tccbiKZ3ze813TJpOp0bRrPtBovudyrr/dNd/13LMEqnMxe1zHxXu+v0Tq + bx0X4nQ6/R479q7zPGLkffTItQ7PdTVV53q9w+HwWc5znud817Tno/e063l9fb1PvcPhoL6+vtGjd533 + tOu5a8P13pDtdru7eD6vq6trNM87jg7yNTADKISGDd/TSBqSwLXocmEinYkT+BNwN1Dmqgz0s+BKBDPb + Py4RaWcHgf8GPvSeEWh3/3vgdeALYDDQg8DJQkQuTmXAS8AcYK+/BZq7UScDaUBPGo4adAMSgXggFoih + 4SiC67Hr+WIDIoBIwBrE+4kYXT1QB9QCNUA1cO58qTxfyoEKoPR8OQ2cpOEH/BANR/fqmnqT9t4gTTTs + ZbhKJNDFo0R6PEbwQ7KI8Kqz+nn0nLZ4PXrXBSrm88uYPZ43Z9rkUeddTF7TJq9pk9dyrjr4od/lQo+u + z5YA9e35f3UEmHb6qXcGKP7mO7weA007mije8+v9THvXeRZ/dfWA/Xyp93r0nK7zqKvz81jr9eiadm3g + rkdX8Xwvjc0XERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER + ERERERERERERERERERERERERERERERERERERERERERERERFppv8PUX3T0unV5wIAAAAASUVORK5CYII= + + + \ No newline at end of file diff --git a/XiconfLabelPrinter/Order.cs b/XiconfLabelPrinter/Order.cs new file mode 100644 index 0000000..92005cd --- /dev/null +++ b/XiconfLabelPrinter/Order.cs @@ -0,0 +1,96 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using System; +using System.Text.RegularExpressions; +using OfficeOpenXml; + +namespace MSYS.Xiconf.LabelPrinter +{ + public class Order + { + private static Regex NO_REGEX = new Regex("^[0-9]{9}$", RegexOptions.None); + + private static Regex NC12_REGEX = new Regex("^(?:000)([0-9]{12})$", RegexOptions.None); + + private static Regex PROGRAM_NAME_REGEX = new Regex("^LABEL.*?PROGRAM(.*?)(?:\"|')?$", RegexOptions.IgnoreCase); + + public DateTime Date { get; set; } + + public string No { get; set; } + + public string Nc12 { get; set; } + + public string ProgramName { get; set; } + + public int Quantity { get; set; } + + public string WorkCenter { get; set; } + + public static Order FromExcelRange(ExcelRange excelRange, int row, OrderList.Columns columns) + { + var dateOrTime = excelRange[row, columns.Date].Value; + DateTime date; + + if (dateOrTime is DateTime) + { + date = (DateTime)dateOrTime; + } + else if (dateOrTime is double) + { + date = DateTime.FromOADate((double)dateOrTime); + } + else + { + return null; + } + + var no = excelRange[row, columns.No].Text.Trim(); + + if (!NO_REGEX.IsMatch(no)) + { + return null; + } + + var nc12Matches = NC12_REGEX.Match(excelRange[row, columns.Nc12].Text.Trim()); + + if (!nc12Matches.Success) + { + return null; + } + + var nc12 = nc12Matches.Groups[1].Value; + + var programNameMatches = PROGRAM_NAME_REGEX.Match(excelRange[row, columns.ProgramName].Text.Trim()); + + if (!programNameMatches.Success) + { + return null; + } + + var programName = "PROGRAM " + programNameMatches.Groups[1].Value; + + var quantity = 0; + + Int32.TryParse(excelRange[row, columns.Quantity].Text.Trim(), out quantity); + + if (quantity < 1) + { + return null; + } + + var workCenter = excelRange[row, columns.WorkCenter].Text.Trim(); + + return new Order() + { + Date = date, + No = no, + Nc12 = nc12, + ProgramName = programName, + Quantity = quantity, + WorkCenter = workCenter + }; + } + } +} diff --git a/XiconfLabelPrinter/OrderList.cs b/XiconfLabelPrinter/OrderList.cs new file mode 100644 index 0000000..94d4efd --- /dev/null +++ b/XiconfLabelPrinter/OrderList.cs @@ -0,0 +1,155 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using OfficeOpenXml; + +namespace MSYS.Xiconf.LabelPrinter +{ + public class OrderList : List + { + public void ReadFromXlsxFile(string xlsxFilePath) + { + Clear(); + + using (var package = new ExcelPackage(new FileInfo(xlsxFilePath))) + { + var worksheets = package.Workbook.Worksheets; + + if (worksheets.Count == 0) + { + throw new Exception("Wybrany plik nie zawiera żadnych arkuszy!"); + } + + var worksheet = worksheets.First(); + var dimensions = worksheet.Dimension; + + if (dimensions == null) + { + throw new Exception("Nie udało się rozpoznać wymiarów arkusza danych!"); + } + + var columns = Columns.FromExcelRange(worksheet.Cells); + + if (!columns.AllSet()) + { + throw new Exception("Nie znaleziono wszystkich wymaganych kolumn!"); + } + + var orderMap = new Dictionary(); + + for (int row = 2, l = dimensions.End.Row; row <= l; ++row) + { + var order = Order.FromExcelRange(worksheet.Cells, row, columns); + + if (order == null) + { + continue; + } + + var key = order.No + order.Nc12; + + if (!orderMap.ContainsKey(key)) + { + orderMap.Add(key, order); + } + else if (order.Date > orderMap[key].Date) + { + orderMap[key] = order; + } + } + + AddRange(orderMap.Values); + } + + if (Count == 0) + { + throw new Exception("W wybranym arkuszu nie wykryto żadnych zleceń."); + } + } + + public IList FindByNo(string no) + { + return FindAll(order => order.No == no); + } + + public IList FindByNc12(string nc12) + { + return FindAll(order => order.Nc12 == nc12); + } + + public class Columns + { + public int Date { get; private set; } + + public int No { get; private set; } + + public int Nc12 { get; private set; } + + public int ProgramName { get; private set; } + + public int Quantity { get; private set; } + + public int WorkCenter { get; private set; } + + public static Columns FromExcelRange(ExcelRange excelRange) + { + var lastColumn = excelRange.Worksheet.Dimension.End.Column; + var columns = new Columns(); + + for (var column = 1; column < lastColumn && !columns.AllSet(); ++column) + { + var columnName = excelRange[1, column].Text.Trim().ToUpperInvariant(); + var firstValue = excelRange[2, column].Text.Trim(); + + if (columns.Date == -1 && columnName.Contains("REQ") && columnName.Contains("DATE")) + { + columns.Date = column; + } + else if (columns.No == -1 && columnName.Contains("ORDER") && firstValue.Length == 9) + { + columns.No = column; + } + else if (columns.ProgramName == -1 && columnName.Contains("MATERIAL") && columnName.Contains("DESC")) + { + columns.ProgramName = column; + } + else if (columns.Nc12 == -1 && columnName.Contains("MATERIAL") && firstValue.Length == 15) + { + columns.Nc12 = column; + } + else if (columns.Quantity == -1 && columnName.Contains("REQ") && columnName.Contains("QUANTITY") && Regex.IsMatch(firstValue, "^[0-9]+$")) + { + columns.Quantity = column; + } + else if (columns.WorkCenter == -1 && columnName.Contains("WORK") && columnName.Contains("CENTER") && !firstValue.Contains(' ')) + { + columns.WorkCenter = column; + } + } + + return columns; + } + + public Columns() + { + Date = -1; + No = -1; + Nc12 = -1; + ProgramName = -1; + Quantity = -1; + WorkCenter = -1; + } + + public bool AllSet() + { + return Date != -1 && No != -1 && Nc12 != -1 && ProgramName != -1 && Quantity != -1 && WorkCenter != -1; + } + } + } +} diff --git a/XiconfLabelPrinter/OrderPrintJob.cs b/XiconfLabelPrinter/OrderPrintJob.cs new file mode 100644 index 0000000..2ae7891 --- /dev/null +++ b/XiconfLabelPrinter/OrderPrintJob.cs @@ -0,0 +1,36 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using Seagull.BarTender.Print; + +namespace MSYS.Xiconf.LabelPrinter +{ + public class OrderPrintJob : APrintJob + { + public override string LabelFormatType { get { return "order"; } } + + public override string AdditionalInfo + { + get + { + return string.Format("Nr zlecenia: {0}; Ilość: {1}", orderNo, orderQuantity); + } + } + + private string orderNo; + + private int orderQuantity; + + public OrderPrintJob(string orderNo, int orderQuantity) + { + this.orderNo = orderNo; + this.orderQuantity = orderQuantity; + } + + protected override void SetSubStrings(LabelFormat labelFormat) + { + labelFormat.SubStrings.SetSubString("nrzlec_ilosc", orderNo + "-" + orderQuantity.ToString().PadLeft(3, '0')); + } + } +} diff --git a/XiconfLabelPrinter/PrintException.cs b/XiconfLabelPrinter/PrintException.cs new file mode 100644 index 0000000..8804e57 --- /dev/null +++ b/XiconfLabelPrinter/PrintException.cs @@ -0,0 +1,21 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using System; + +namespace MSYS.Xiconf.LabelPrinter +{ + public class PrintException : Exception + { + public PrintException() + : base() + { + } + + public PrintException(string message) + : base(message) + { + } + } +} diff --git a/XiconfLabelPrinter/PrintForm.Designer.cs b/XiconfLabelPrinter/PrintForm.Designer.cs new file mode 100644 index 0000000..6fbfd1d --- /dev/null +++ b/XiconfLabelPrinter/PrintForm.Designer.cs @@ -0,0 +1,175 @@ +namespace MSYS.Xiconf.LabelPrinter +{ + partial class PrintForm + { + /// + /// 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.printButton = new System.Windows.Forms.Button(); + this.printJobListView = new System.Windows.Forms.ListView(); + this.formatColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.quantityColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.dataColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.printerColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.backgroundWorker = new System.ComponentModel.BackgroundWorker(); + this.progressBar = new System.Windows.Forms.ProgressBar(); + this.cancelButton = new System.Windows.Forms.Button(); + this.closeButton = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // printButton + // + this.printButton.Dock = System.Windows.Forms.DockStyle.Bottom; + this.printButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.printButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0))))); + this.printButton.Location = new System.Drawing.Point(0, 95); + this.printButton.Name = "printButton"; + this.printButton.Size = new System.Drawing.Size(594, 82); + this.printButton.TabIndex = 1; + this.printButton.Text = "ROZPOCZNIJ DRUKOWANIE"; + this.printButton.UseVisualStyleBackColor = true; + this.printButton.Click += new System.EventHandler(this.printButton_Click); + // + // printJobListView + // + this.printJobListView.CheckBoxes = true; + this.printJobListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.formatColumn, + this.quantityColumn, + this.dataColumn, + this.printerColumn}); + this.printJobListView.Dock = System.Windows.Forms.DockStyle.Fill; + this.printJobListView.FullRowSelect = true; + this.printJobListView.GridLines = true; + this.printJobListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.printJobListView.Location = new System.Drawing.Point(0, 0); + this.printJobListView.Name = "printJobListView"; + this.printJobListView.Size = new System.Drawing.Size(594, 72); + this.printJobListView.TabIndex = 2; + this.printJobListView.UseCompatibleStateImageBehavior = false; + this.printJobListView.View = System.Windows.Forms.View.Details; + // + // formatColumn + // + this.formatColumn.Text = "Szablon"; + this.formatColumn.Width = 90; + // + // quantityColumn + // + this.quantityColumn.Text = "Ilość etykiet"; + this.quantityColumn.Width = 75; + // + // dataColumn + // + this.dataColumn.Text = "Dodatkowe informacje"; + this.dataColumn.Width = 290; + // + // printerColumn + // + this.printerColumn.Text = "Drukarka"; + this.printerColumn.Width = 110; + // + // backgroundWorker + // + this.backgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker_DoWork); + this.backgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker_RunWorkerCompleted); + // + // progressBar + // + this.progressBar.Dock = System.Windows.Forms.DockStyle.Bottom; + this.progressBar.Location = new System.Drawing.Point(0, 72); + this.progressBar.Name = "progressBar"; + this.progressBar.Size = new System.Drawing.Size(594, 23); + this.progressBar.Style = System.Windows.Forms.ProgressBarStyle.Continuous; + this.progressBar.TabIndex = 3; + // + // cancelButton + // + this.cancelButton.Dock = System.Windows.Forms.DockStyle.Bottom; + this.cancelButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.cancelButton.ForeColor = System.Drawing.Color.Red; + this.cancelButton.Location = new System.Drawing.Point(0, 259); + this.cancelButton.Name = "cancelButton"; + this.cancelButton.Size = new System.Drawing.Size(594, 82); + this.cancelButton.TabIndex = 4; + this.cancelButton.Text = "ANULUJ DRUKOWANIE"; + this.cancelButton.UseVisualStyleBackColor = true; + this.cancelButton.Visible = false; + this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click); + // + // closeButton + // + this.closeButton.Dock = System.Windows.Forms.DockStyle.Bottom; + this.closeButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.closeButton.ForeColor = System.Drawing.Color.Green; + this.closeButton.Location = new System.Drawing.Point(0, 177); + this.closeButton.Name = "closeButton"; + this.closeButton.Size = new System.Drawing.Size(594, 82); + this.closeButton.TabIndex = 5; + this.closeButton.Text = "ZAKOŃCZ DRUKOWANIE"; + this.closeButton.UseVisualStyleBackColor = true; + this.closeButton.Visible = false; + this.closeButton.Click += new System.EventHandler(this.closeButton_Click); + // + // PrintForm + // + this.AcceptButton = this.printButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(594, 341); + this.Controls.Add(this.printJobListView); + this.Controls.Add(this.progressBar); + this.Controls.Add(this.printButton); + this.Controls.Add(this.closeButton); + this.Controls.Add(this.cancelButton); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; + this.MinimizeBox = false; + this.Name = "PrintForm"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Drukowanie"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.PrintForm_FormClosing); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button printButton; + private System.Windows.Forms.ListView printJobListView; + private System.Windows.Forms.ColumnHeader formatColumn; + private System.Windows.Forms.ColumnHeader quantityColumn; + private System.Windows.Forms.ColumnHeader dataColumn; + private System.ComponentModel.BackgroundWorker backgroundWorker; + private System.Windows.Forms.ProgressBar progressBar; + private System.Windows.Forms.Button cancelButton; + private System.Windows.Forms.Button closeButton; + private System.Windows.Forms.ColumnHeader printerColumn; + + } +} \ No newline at end of file diff --git a/XiconfLabelPrinter/PrintForm.cs b/XiconfLabelPrinter/PrintForm.cs new file mode 100644 index 0000000..41a98a9 --- /dev/null +++ b/XiconfLabelPrinter/PrintForm.cs @@ -0,0 +1,390 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Management; +using System.Media; +using System.Text; +using System.Windows.Forms; +using Seagull.BarTender.Print; + +namespace MSYS.Xiconf.LabelPrinter +{ + public partial class PrintForm : Form + { + private int currentPrintJob = -1; + + private bool cancelled = false; + + private bool closing = false; + + private bool finished = true; + + private IList printJobs; + + private Engine engine; + + private LabelFormatDocument orderFormat; + + private LabelFormatDocument programFormat; + + private LabelFormatDocument serviceTagFormat; + + public PrintForm(IList printJobs, Engine engine, LabelFormatDocument orderFormat, LabelFormatDocument programFormat, LabelFormatDocument serviceTagFormat) + { + InitializeComponent(); + + this.printJobs = printJobs; + this.engine = engine; + this.orderFormat = orderFormat; + this.programFormat = programFormat; + this.serviceTagFormat = serviceTagFormat; + + CreateSeriesGroups(); + CreatePrintJobItems(); + } + + private void PrintForm_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = e.CloseReason == CloseReason.UserClosing && backgroundWorker.IsBusy; + + if (e.Cancel) + { + closing = true; + Cancel(); + } + else if (!finished) + { + DeletePrintJobs(); + } + } + + private void printButton_Click(object sender, EventArgs e) + { + if (currentPrintJob == -1) + { + foreach (ListViewItem listItem in printJobListView.Items) + { + if (!listItem.Checked) + { + listItem.BackColor = Color.LightGray; + } + } + + printJobListView.CheckBoxes = false; + } + + finished = false; + UseWaitCursor = true; + + AcceptButton = null; + cancelButton.Show(); + printButton.Hide(); + + RunNextPrintJob(currentPrintJob == -1); + } + + private void cancelButton_Click(object sender, EventArgs e) + { + Cancel(); + } + + private void closeButton_Click(object sender, EventArgs e) + { + Close(); + } + + private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) + { + var workerArgs = e.Argument as PrintWorkerArguments; + + lock (workerArgs.Engine) + { + workerArgs.PrintJob.Print(workerArgs.LabelFormat); + } + } + + private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + progressBar.Value = (int)Math.Round((currentPrintJob + 1) * (100d / printJobs.Count)); + + if (e.Error == null) + { + HandleSuccess(); + } + else + { + HandleFailure(e.Error); + } + } + + private void CreateSeriesGroups() + { + if (printJobs[0].SeriesNo == 0) + { + printJobListView.ShowGroups = false; + + return; + } + + printButton.Text = "DRUKUJ SERIĘ " + printJobs[0].SeriesId; + printJobListView.ShowGroups = true; + + var lastSeriesId = ""; + + foreach (var printJob in printJobs) + { + var seriesId = printJob.SeriesId; + + if (seriesId != lastSeriesId) + { + printJobListView.Groups.Add(seriesId, "Seria " + seriesId); + + lastSeriesId = seriesId; + } + } + } + + private void CreatePrintJobItems() + { + foreach (var printJob in printJobs) + { + CreatePrintJobItem(printJob); + } + } + + private void CreatePrintJobItem(IPrintJob printJob) + { + var formatItem = new ListViewItem(printJob.LabelFormatType) + { + Checked = true, + Group = printJob.SeriesNo == 0 ? null : printJobListView.Groups[printJob.SeriesId] + }; + + formatItem.SubItems.Add(printJob.LabelQuantity.ToString()); + formatItem.SubItems.Add(printJob.AdditionalInfo); + formatItem.SubItems.Add(printJob.PrinterName); + + printJobListView.Items.Add(formatItem); + } + + private bool IsLastPrintJob() + { + return currentPrintJob == printJobs.Count - 1; + } + + private void RunNextPrintJob(bool checkSeries = true) + { + if (checkSeries && CheckSeriesChange()) + { + HandleSeriesChange(); + return; + } + + ++currentPrintJob; + + var singleStep = 100d / printJobs.Count; + + progressBar.Value = (int)Math.Round((double)currentPrintJob * singleStep + singleStep / 2d); + + if (printJobListView.Items[currentPrintJob].Checked) + { + printJobListView.Items[currentPrintJob].BackColor = Color.Orange; + + backgroundWorker.RunWorkerAsync(new PrintWorkerArguments(printJobs[currentPrintJob], engine, orderFormat, programFormat, serviceTagFormat)); + } + else if (IsLastPrintJob()) + { + Finish(); + } + else + { + RunNextPrintJob(); + } + } + + private void HandleSeriesChange() + { + UseWaitCursor = false; + AcceptButton = printButton; + + var seriesId = printJobs[currentPrintJob + 1].SeriesId; + + printButton.Text = "DRUKUJ SERIĘ " + seriesId; + printButton.Show(); + printButton.Focus(); + cancelButton.Hide(); + + var group = printJobListView.Groups[seriesId]; + group.Items[group.Items.Count - 1].EnsureVisible(); + + Activate(); + SystemSounds.Beep.Play(); + } + + private bool CheckSeriesChange() + { + return currentPrintJob != -1 && printJobs[currentPrintJob].SeriesId != printJobs[currentPrintJob + 1].SeriesId; + } + + private void HandleSuccess() + { + HighlightPrintJob(Color.LightGreen); + + if (cancelled) + { + HandleCancellation(); + } + else if (IsLastPrintJob()) + { + Finish(); + } + else + { + RunNextPrintJob(); + } + } + + private void HandleFailure(Exception x) + { + HighlightPrintJob(Color.LightCoral); + + if (cancelled) + { + HandleCancellation(); + return; + } + + var message = new StringBuilder(); + + message.AppendLine("Błąd podczas drukowania:"); + message.AppendLine(); + message.AppendLine(x.Message.Length == 0 ? "?!?" : x.Message); + + if (IsLastPrintJob()) + { + MessageBox.Show(this, message.ToString(), "Błąd drukowania", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); + Finish(); + } + else + { + message.AppendLine(); + message.AppendLine("Kontynuować drukowanie?"); + + var dialogResult = MessageBox.Show(this, message.ToString(), "Błąd drukowania", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); + + if (dialogResult == DialogResult.Yes) + { + RunNextPrintJob(); + } + else + { + MarkRemainingJobsAsFailures(); + Finish(); + } + } + } + + private void HandleCancellation() + { + MarkRemainingJobsAsFailures(); + DeletePrintJobs(); + Finish(); + } + + private void Finish() + { + finished = true; + UseWaitCursor = false; + AcceptButton = closeButton; + + closeButton.Show(); + cancelButton.Hide(); + closeButton.Focus(); + + if (closing) + { + Close(); + } + } + + private void Cancel() + { + if (cancelled) + { + return; + } + + cancelled = true; + + cancelButton.Enabled = false; + cancelButton.Text = "Anulowanie..."; + cancelButton.Show(); + printButton.Hide(); + } + + private void HighlightPrintJob(Color color, int printJobIndex = -1) + { + if (printJobIndex == -1) + { + printJobIndex = currentPrintJob; + } + + printJobListView.Items[printJobIndex].EnsureVisible(); + printJobListView.Items[printJobIndex].BackColor = color; + } + + private void MarkRemainingJobsAsFailures() + { + for (int i = currentPrintJob + 1, l = printJobs.Count; i < l; ++i) + { + if (printJobListView.Items[i].Checked) + { + HighlightPrintJob(Color.LightCoral, i); + } + } + } + + private void DeletePrintJobs() + { + var printJobMap = new Dictionary(); + + foreach (var printJob in printJobs) + { + printJobMap[printJob.PrintJobName] = printJob.PrinterName; + } + + using (ManagementObjectSearcher jobQuery = new ManagementObjectSearcher("SELECT * FROM Win32_PrintJob")) + { + using (ManagementObjectCollection jobs = jobQuery.Get()) + { + foreach (ManagementObject job in jobs) + { + TryDeletePrintJob(printJobMap, job); + } + } + } + } + + private void TryDeletePrintJob(Dictionary printJobMap, ManagementObject job) + { + try + { + var printJobName = (string)job["Document"]; + var jobId = (string)job["Name"]; + var commaIndex = jobId.LastIndexOf(','); + var printerName = jobId.Substring(0, commaIndex); + + if (printJobMap.ContainsKey(printJobName) && printerName.Equals(printJobMap[printJobName])) + { + job.Delete(); + } + } + catch (Exception) {} + } + } +} diff --git a/XiconfLabelPrinter/PrintForm.resx b/XiconfLabelPrinter/PrintForm.resx new file mode 100644 index 0000000..da308e7 --- /dev/null +++ b/XiconfLabelPrinter/PrintForm.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + \ No newline at end of file diff --git a/XiconfLabelPrinter/PrintWorkerArguments.cs b/XiconfLabelPrinter/PrintWorkerArguments.cs new file mode 100644 index 0000000..0fd0b47 --- /dev/null +++ b/XiconfLabelPrinter/PrintWorkerArguments.cs @@ -0,0 +1,51 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using Seagull.BarTender.Print; + +namespace MSYS.Xiconf.LabelPrinter +{ + public class PrintWorkerArguments + { + private LabelFormatDocument orderFormat; + + private LabelFormatDocument programFormat; + + private LabelFormatDocument serviceTagFormat; + + public IPrintJob PrintJob { get; private set; } + + public Engine Engine { get; private set; } + + public LabelFormatDocument LabelFormat + { + get + { + switch (PrintJob.LabelFormatType) + { + case "order": + return orderFormat; + + case "program": + return programFormat; + + case "serviceTag": + return serviceTagFormat; + + default: + return null; + } + } + } + + public PrintWorkerArguments(IPrintJob printJob, Engine engine, LabelFormatDocument orderFormat, LabelFormatDocument programFormat, LabelFormatDocument serviceTagFormat) + { + this.orderFormat = orderFormat; + this.programFormat = programFormat; + this.serviceTagFormat = serviceTagFormat; + PrintJob = printJob; + Engine = engine; + } + } +} diff --git a/XiconfLabelPrinter/Program.cs b/XiconfLabelPrinter/Program.cs new file mode 100644 index 0000000..3f662a9 --- /dev/null +++ b/XiconfLabelPrinter/Program.cs @@ -0,0 +1,23 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using System; +using System.Windows.Forms; + +namespace MSYS.Xiconf.LabelPrinter +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + } +} diff --git a/XiconfLabelPrinter/ProgramPrintJob.cs b/XiconfLabelPrinter/ProgramPrintJob.cs new file mode 100644 index 0000000..099d90d --- /dev/null +++ b/XiconfLabelPrinter/ProgramPrintJob.cs @@ -0,0 +1,37 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using Seagull.BarTender.Print; + +namespace MSYS.Xiconf.LabelPrinter +{ + public class ProgramPrintJob : APrintJob + { + public override string LabelFormatType { get { return "program"; } } + + public override string AdditionalInfo + { + get + { + return string.Format("12NC: {0}; Program: {1}", nc12, programName); + } + } + + private string nc12; + + private string programName; + + public ProgramPrintJob(string nc12, string programName) + { + this.nc12 = nc12; + this.programName = programName; + } + + protected override void SetSubStrings(LabelFormat labelFormat) + { + labelFormat.SubStrings.SetSubString("Program_12NC", nc12); + labelFormat.SubStrings.SetSubString("Program_Name", programName); + } + } +} diff --git a/XiconfLabelPrinter/Properties/AssemblyInfo.cs b/XiconfLabelPrinter/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..e28687f --- /dev/null +++ b/XiconfLabelPrinter/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Xiconf Label Printer")] +[assembly: AssemblyDescription("Wspomaganie drukowania etykiet.")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Miracle Systems Łukasz Walukiewicz")] +[assembly: AssemblyProduct("Xiconf Label Printer")] +[assembly: AssemblyCopyright("Copyright © 2014 Miracle Systems Łukasz Walukiewicz")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("78d08660-055c-4f01-8b06-12bf52dc7020")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/XiconfLabelPrinter/Properties/Resources.Designer.cs b/XiconfLabelPrinter/Properties/Resources.Designer.cs new file mode 100644 index 0000000..005444b --- /dev/null +++ b/XiconfLabelPrinter/Properties/Resources.Designer.cs @@ -0,0 +1,83 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18444 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace MSYS.Xiconf.LabelPrinter.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [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() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MSYS.Xiconf.LabelPrinter.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] licenseEdPublicPem { + get { + object obj = ResourceManager.GetObject("licenseEdPublicPem", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap printerLogo { + get { + object obj = ResourceManager.GetObject("printerLogo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/XiconfLabelPrinter/Properties/Resources.resx b/XiconfLabelPrinter/Properties/Resources.resx new file mode 100644 index 0000000..0fa07bd --- /dev/null +++ b/XiconfLabelPrinter/Properties/Resources.resx @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + ..\resources\license.ed.public.pem;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\printer_0000.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/XiconfLabelPrinter/Properties/Settings.Designer.cs b/XiconfLabelPrinter/Properties/Settings.Designer.cs new file mode 100644 index 0000000..b3848ae --- /dev/null +++ b/XiconfLabelPrinter/Properties/Settings.Designer.cs @@ -0,0 +1,199 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18444 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace MSYS.Xiconf.LabelPrinter.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.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; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string OrderFormatFile { + get { + return ((string)(this["OrderFormatFile"])); + } + set { + this["OrderFormatFile"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string ProgramFormatFile { + get { + return ((string)(this["ProgramFormatFile"])); + } + set { + this["ProgramFormatFile"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string ServiceTagFormatFile { + get { + return ((string)(this["ServiceTagFormatFile"])); + } + set { + this["ServiceTagFormatFile"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string OrderXlsxFile { + get { + return ((string)(this["OrderXlsxFile"])); + } + set { + this["OrderXlsxFile"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string LicenseServer { + get { + return ((string)(this["LicenseServer"])); + } + set { + this["LicenseServer"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string LicenseKey { + get { + return ((string)(this["LicenseKey"])); + } + set { + this["LicenseKey"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string WorkCenterXlsxFile { + get { + return ((string)(this["WorkCenterXlsxFile"])); + } + set { + this["WorkCenterXlsxFile"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool PrintOrder { + get { + return ((bool)(this["PrintOrder"])); + } + set { + this["PrintOrder"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool PrintProgram { + get { + return ((bool)(this["PrintProgram"])); + } + set { + this["PrintProgram"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool PrintServiceTag { + get { + return ((bool)(this["PrintServiceTag"])); + } + set { + this["PrintServiceTag"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string OrderPrinterName { + get { + return ((string)(this["OrderPrinterName"])); + } + set { + this["OrderPrinterName"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string ProgramPrinterName { + get { + return ((string)(this["ProgramPrinterName"])); + } + set { + this["ProgramPrinterName"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string ServiceTagPrinterName { + get { + return ((string)(this["ServiceTagPrinterName"])); + } + set { + this["ServiceTagPrinterName"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute(@" + + order + program + serviceTag +")] + public global::System.Collections.Specialized.StringCollection LabelOrder { + get { + return ((global::System.Collections.Specialized.StringCollection)(this["LabelOrder"])); + } + set { + this["LabelOrder"] = value; + } + } + } +} diff --git a/XiconfLabelPrinter/Properties/Settings.settings b/XiconfLabelPrinter/Properties/Settings.settings new file mode 100644 index 0000000..8cc1c62 --- /dev/null +++ b/XiconfLabelPrinter/Properties/Settings.settings @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + False + + + False + + + + + + + + + + + + <?xml version="1.0" encoding="utf-16"?> +<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <string>order</string> + <string>program</string> + <string>serviceTag</string> +</ArrayOfString> + + + \ No newline at end of file diff --git a/XiconfLabelPrinter/Properties/app.manifest b/XiconfLabelPrinter/Properties/app.manifest new file mode 100644 index 0000000..a7e8d98 --- /dev/null +++ b/XiconfLabelPrinter/Properties/app.manifest @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/XiconfLabelPrinter/Resources/license.ed.public.pem b/XiconfLabelPrinter/Resources/license.ed.public.pem new file mode 100644 index 0000000..01a7c14 --- /dev/null +++ b/XiconfLabelPrinter/Resources/license.ed.public.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5meEqwcpMcRMgvHi8gQ6 +yLMBx7OzmthHPcSIY21hXfIVqevE2Ahbl3TmolHFw7EHTVsLunbYsr9/EDJjy1Na +XrhvU0LzBIDAUQC6JrDcSJgdn6kw9gNAmOGkrfmWyM3oQ+f8eSaIE7ecY+Tj0uu+ +4KeROInWaFWM3Jo1K/hOM4HTYRuMXJ8bp4cvUjVaHG4ioX4C+YiaFWU3yEwTktpA +dENkK1wfnJHBWEZi7XTW7tsqaaoNjc97zDHuduph3u8YzBvk0N4r5hqf9EtxCGxm +T26Ml/FXCdSact+xcrwH/oXWQw/cijuxGmdA/5uzBqpBXHq34SOUuQ7VBbV5QPFU ++wIDAQAB +-----END PUBLIC KEY----- diff --git a/XiconfLabelPrinter/Resources/printer_0000.png b/XiconfLabelPrinter/Resources/printer_0000.png new file mode 100644 index 0000000..d88cc5e Binary files /dev/null and b/XiconfLabelPrinter/Resources/printer_0000.png differ diff --git a/XiconfLabelPrinter/ServiceTagPrintJob.cs b/XiconfLabelPrinter/ServiceTagPrintJob.cs new file mode 100644 index 0000000..aef0a5f --- /dev/null +++ b/XiconfLabelPrinter/ServiceTagPrintJob.cs @@ -0,0 +1,44 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using Seagull.BarTender.Print; + +namespace MSYS.Xiconf.LabelPrinter +{ + public class ServiceTagPrintJob : APrintJob + { + public override string LabelFormatType { get { return "serviceTag"; } } + + public override string AdditionalInfo + { + get + { + return string.Format("Nr zlecenia: {0}; Nr początkowy: {1}", orderNo, firstSerialNo); + } + } + + private string orderNo; + + private int firstSerialNo; + + public ServiceTagPrintJob(string orderNo, int firstSerialNo) + { + this.orderNo = orderNo; + this.firstSerialNo = firstSerialNo; + } + + protected override void SetPrintSetup(LabelFormatDocument labelFormat) + { + labelFormat.PrintSetup.PrinterName = PrinterName; + labelFormat.PrintSetup.IdenticalCopiesOfLabel = 1; + labelFormat.PrintSetup.NumberOfSerializedLabels = LabelQuantity; + } + + protected override void SetSubStrings(LabelFormat labelFormat) + { + labelFormat.SubStrings.SetSubString("OrderNo", orderNo); + labelFormat.SubStrings.SetSubString("FirstSerialNo", firstSerialNo.ToString().PadLeft(4, '0')); + } + } +} diff --git a/XiconfLabelPrinter/WorkCenter.cs b/XiconfLabelPrinter/WorkCenter.cs new file mode 100644 index 0000000..2d66d9c --- /dev/null +++ b/XiconfLabelPrinter/WorkCenter.cs @@ -0,0 +1,63 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using System; +using System.Text.RegularExpressions; +using OfficeOpenXml; + +namespace MSYS.Xiconf.LabelPrinter +{ + public class WorkCenter + { + private static Regex IS_ACTIVE_REGEX = new Regex("^(1|T(ak|rue)?|Y(es)?)$", RegexOptions.IgnoreCase); + + public string Id { get; set; } + + public int ProdLineCount { get; set; } + + public int MinDivQuantity { get; set; } + + public static WorkCenter FromExcelRange(ExcelRange excelRange, int row) + { + var id = excelRange[row, 1].Text.Trim(); + + if (string.IsNullOrEmpty(id)) + { + return null; + } + + var prodLineCount = 0; + + Int32.TryParse(excelRange[row, 2].Text.Trim(), out prodLineCount); + + if (prodLineCount < 1) + { + return null; + } + + var minDivQuantity = 0; + + Int32.TryParse(excelRange[row, 3].Text.Trim(), out minDivQuantity); + + if (minDivQuantity < 1) + { + return null; + } + + var isActive = excelRange[row, 4].Text.Trim().ToUpperInvariant(); + + if (!IS_ACTIVE_REGEX.IsMatch(isActive)) + { + return null; + } + + return new WorkCenter() + { + Id = id, + ProdLineCount = prodLineCount, + MinDivQuantity = minDivQuantity + }; + } + } +} diff --git a/XiconfLabelPrinter/WorkCenterList.cs b/XiconfLabelPrinter/WorkCenterList.cs new file mode 100644 index 0000000..54a787e --- /dev/null +++ b/XiconfLabelPrinter/WorkCenterList.cs @@ -0,0 +1,53 @@ +// Copyright (c) 2014, Łukasz Walukiewicz . Some Rights Reserved. +// Licensed under CC BY-NC-SA 4.0 . +// Part of the XiconfLabelPrinter project + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using OfficeOpenXml; + +namespace MSYS.Xiconf.LabelPrinter +{ + public class WorkCenterList : List + { + public void ReadFromXlsxFile(string xlsxFilePath) + { + Clear(); + + using (var package = new ExcelPackage(new FileInfo(xlsxFilePath))) + { + var worksheets = package.Workbook.Worksheets; + + if (worksheets.Count == 0) + { + throw new Exception("Wybrany plik nie zawiera żadnych arkuszy!"); + } + + var worksheet = worksheets.First(); + var dimensions = worksheet.Dimension; + + if (dimensions == null) + { + throw new Exception("Nie udało się rozpoznać wymiarów arkusza danych!"); + } + + for (int row = 2, l = dimensions.End.Row; row <= l; ++row) + { + var workCenter = WorkCenter.FromExcelRange(worksheet.Cells, row); + + if (workCenter != null) + { + Add(workCenter); + } + } + } + + if (Count == 0) + { + throw new Exception("W wybranym arkuszu nie wykryto żadnych WorkCentrów."); + } + } + } +} diff --git a/XiconfLabelPrinter/XiconfLabelPrinter.csproj b/XiconfLabelPrinter/XiconfLabelPrinter.csproj new file mode 100644 index 0000000..86b9690 --- /dev/null +++ b/XiconfLabelPrinter/XiconfLabelPrinter.csproj @@ -0,0 +1,210 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {61785524-5B33-42EF-B242-38357667D9C0} + WinExe + Properties + MSYS.Xiconf.LabelPrinter + XiconfLabelPrinter + v3.5 + + + 512 + false + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + http://miraclesystems.pl/ + http://miraclesystems.pl/ + pl-PL + Xiconf Label Printer + Miracle Systems Łukasz Walukiewicz + 2 + 1.5.0.%2a + false + true + true + true + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + 65FA9F3AEA93DC121C284EE770CE572319A580A2 + + + true + + + false + + + LocalIntranet + + + Properties\app.manifest + + + printer.ico + + + + False + ..\lib\BouncyCastle.Crypto.dll + + + False + ..\lib\EPPlus.dll + + + False + ..\lib\Maestro.Interface.dll + + + False + ..\lib\Seagull.BarTender.Print.dll + + + + + + + + + + + + + + + Form + + + AboutForm.cs + + + + + + + Form + + + PrintForm.cs + + + + + + + + Form + + + LicenseForm.cs + + + + Form + + + MainForm.cs + + + + + + + AboutForm.cs + + + LicenseForm.cs + + + MainForm.cs + + + PrintForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + Designer + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + + + + + + + + \ No newline at end of file diff --git a/XiconfLabelPrinter/app.config b/XiconfLabelPrinter/app.config new file mode 100644 index 0000000..0e767e9 --- /dev/null +++ b/XiconfLabelPrinter/app.config @@ -0,0 +1,61 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + False + + + False + + + + + + + + + + + + + + order + program + serviceTag + + + + + + diff --git a/XiconfLabelPrinter/printer.ico b/XiconfLabelPrinter/printer.ico new file mode 100644 index 0000000..0dbbcde Binary files /dev/null and b/XiconfLabelPrinter/printer.ico differ diff --git a/docs/install-guide.pl.pdf b/docs/install-guide.pl.pdf new file mode 100644 index 0000000..e6fa697 Binary files /dev/null and b/docs/install-guide.pl.pdf differ diff --git a/docs/license.pl.pdf b/docs/license.pl.pdf new file mode 100644 index 0000000..2a95c9f Binary files /dev/null and b/docs/license.pl.pdf differ diff --git a/lib/BouncyCastle.Crypto.dll b/lib/BouncyCastle.Crypto.dll new file mode 100644 index 0000000..8531f7f Binary files /dev/null and b/lib/BouncyCastle.Crypto.dll differ diff --git a/lib/EPPlus.dll b/lib/EPPlus.dll new file mode 100644 index 0000000..3fbf9ff Binary files /dev/null and b/lib/EPPlus.dll differ diff --git a/lib/Interop.BarTender.dll b/lib/Interop.BarTender.dll new file mode 100644 index 0000000..5cdeee2 Binary files /dev/null and b/lib/Interop.BarTender.dll differ diff --git a/lib/Maestro.Interface.dll b/lib/Maestro.Interface.dll new file mode 100644 index 0000000..b916cdd Binary files /dev/null and b/lib/Maestro.Interface.dll differ diff --git a/lib/Maestro.Library.dll b/lib/Maestro.Library.dll new file mode 100644 index 0000000..6b533a9 Binary files /dev/null and b/lib/Maestro.Library.dll differ diff --git a/lib/Seagull.BarTender.Print.dll b/lib/Seagull.BarTender.Print.dll new file mode 100644 index 0000000..67e64d1 Binary files /dev/null and b/lib/Seagull.BarTender.Print.dll differ diff --git a/lib/Seagull.Interop.dll b/lib/Seagull.Interop.dll new file mode 100644 index 0000000..9f0a279 Binary files /dev/null and b/lib/Seagull.Interop.dll differ diff --git a/license.md b/license.md new file mode 100644 index 0000000..868778f --- /dev/null +++ b/license.md @@ -0,0 +1,19 @@ +XiconfLabelPrinter (http://lukasz.walukiewicz.eu/p/XiconfLabelPrinter) is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. + +Copyright (c) 2014, Łukasz Walukiewicz (lukasz@walukiewicz.eu). Some Rights Reserved. + +Third-party acknowledgements: + + - `lib/EPPlus.dll` file is from the EPPlus project (http://epplus.codeplex.com/) + licensed under LGPL (http://epplus.codeplex.com/license), + + - `lib/BouncyCastle.Crypto.dll` file is from the Bouncy Castle project (http://www.bouncycastle.org/csharp/) + licensed under an adaptation of the MIT X11 License (http://www.bouncycastle.org/csharp/licence.html), + + - `lib/Interop.BarTender.dll`, `lib/Maestro.Interface.dll`, `Maestro.Library.dll`, `Seagull.BarTender.Print.dll` + and `Seagull.Interop.dll` files are from the BarTender .NET SDKs, + which are downloadable for free as part of the BarTender Trial edition (http://www.seagullscientific.com/). + + - `XiconfLabelPrinter/printer.ico` and `XiconfLabelPrinter/Resources/printer_0000.png` files are derived from + http://openclipart.org/detail/21239/printer-by-printerkiller-21239 diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..76c2c5e --- /dev/null +++ b/readme.md @@ -0,0 +1,35 @@ +# XiconfLabelPrinter + +Windows Forms application for easier label printing through BarTender. + +## Requirements + +### BarTender + + * __Version__: 9.01 + * __Edition__: Enterprise or Enterprise Print Server + * __Website__: http://www.seagullscientific.com/ + +### .NET Framework + + * __Version__: 3.5.0 + * __Website__: http://www.microsoft.com/pl-pl/download/details.aspx?id=21 + +## Build + +Clone the repository: + +``` +git clone git://github.com/morkai/XiconfLabelPrinter.git +``` + +or [download](https://github.com/morkai/XiconfLabelPrinter/zipball/master) +and extract it. + +Go to the project's directory and open the solution file `XiconfLabelPrinter.sln` +and hit F5 (tested with Visual Studio C# 2010 Express). + +## License + +This project is released under the +[CC BY-NC-SA 4.0](https://raw.github.com/morkai/XiconfLabelPrinter/master/license.md).