diff --git a/BizHawk.Client.Common/config/Config.cs b/BizHawk.Client.Common/config/Config.cs index 2f97752263..fc6d618128 100644 --- a/BizHawk.Client.Common/config/Config.cs +++ b/BizHawk.Client.Common/config/Config.cs @@ -345,6 +345,10 @@ namespace BizHawk.Client.Common #endregion + // SMS VDP Viewer Settings + public ToolDialogSettings SmsVdpSettings = new ToolDialogSettings(); + public bool SmsVdpAutoLoad = false; + // NESPPU Settings public ToolDialogSettings NesPPUSettings = new ToolDialogSettings(); public bool AutoLoadNESPPU = false; diff --git a/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj b/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj index 95c3d9922a..0c1e57ac5c 100644 --- a/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj +++ b/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj @@ -1323,6 +1323,7 @@ <None Include="config\ControllerImages\GENController.png" /> </ItemGroup> <ItemGroup> + <None Include="images\sms-icon.png" /> <None Include="images\pcb.png" /> <None Include="images\tvIcon.png" /> <None Include="Resources\pcb.png" /> diff --git a/BizHawk.Client.EmuHawk/MainForm.cs b/BizHawk.Client.EmuHawk/MainForm.cs index d166e1c024..6056658d6e 100644 --- a/BizHawk.Client.EmuHawk/MainForm.cs +++ b/BizHawk.Client.EmuHawk/MainForm.cs @@ -6,7 +6,6 @@ using System.Linq; using System.Text; using System.Threading; using System.Windows.Forms; - using BizHawk.Client.Common; using BizHawk.Common; using BizHawk.Emulation.Common; @@ -16,6 +15,7 @@ using BizHawk.Emulation.Cores.Nintendo.GBA; using BizHawk.Emulation.Cores.Nintendo.NES; using BizHawk.Emulation.Cores.Nintendo.SNES; using BizHawk.Emulation.Cores.PCEngine; +using BizHawk.Emulation.Cores.Sega.MasterSystem; using BizHawk.Emulation.DiscSystem; namespace BizHawk.Client.EmuHawk @@ -339,6 +339,11 @@ namespace BizHawk.Client.EmuHawk OpenLuaConsole(); } + if (Global.Config.SmsVdpAutoLoad && Global.Emulator is SMS) + { + GlobalWin.Tools.Load<SmsVDPViewer>(); + } + if (Global.Config.PCEBGViewerAutoload && Global.Emulator is PCEngine) { GlobalWin.Tools.Load<PceBgViewer>(); @@ -3078,7 +3083,7 @@ namespace BizHawk.Client.EmuHawk private void SMSVDPViewerToolStripMenuItem_Click(object sender, EventArgs e) { - GlobalWin.Tools.Load<VDPViewer>(); + GlobalWin.Tools.Load<SmsVDPViewer>(); } private void codeDataLoggerToolStripMenuItem_Click(object sender, EventArgs e) diff --git a/BizHawk.Client.EmuHawk/Properties/Resources.Designer.cs b/BizHawk.Client.EmuHawk/Properties/Resources.Designer.cs index b65fbce312..f91de35d3c 100644 --- a/BizHawk.Client.EmuHawk/Properties/Resources.Designer.cs +++ b/BizHawk.Client.EmuHawk/Properties/Resources.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. -// Runtime Version:4.0.30319.18408 +// Runtime Version:4.0.30319.18444 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -1019,6 +1019,16 @@ namespace BizHawk.Client.EmuHawk.Properties { } } + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap sms_icon { + get { + object obj = ResourceManager.GetObject("sms_icon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// <summary> /// Looks up a localized resource of type System.Drawing.Bitmap. /// </summary> diff --git a/BizHawk.Client.EmuHawk/Properties/Resources.resx b/BizHawk.Client.EmuHawk/Properties/Resources.resx index c9616c1fc6..d502093a2e 100644 --- a/BizHawk.Client.EmuHawk/Properties/Resources.resx +++ b/BizHawk.Client.EmuHawk/Properties/Resources.resx @@ -897,4 +897,7 @@ <data name="checkbox" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\images\checkbox.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> + <data name="sms_icon" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\images\sms-icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> </root> \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/images/sms-icon.ico b/BizHawk.Client.EmuHawk/images/sms-icon.ico new file mode 100644 index 0000000000..1dbd36690f Binary files /dev/null and b/BizHawk.Client.EmuHawk/images/sms-icon.ico differ diff --git a/BizHawk.Client.EmuHawk/images/sms-icon.png b/BizHawk.Client.EmuHawk/images/sms-icon.png new file mode 100644 index 0000000000..cd629ac554 Binary files /dev/null and b/BizHawk.Client.EmuHawk/images/sms-icon.png differ diff --git a/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.Designer.cs b/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.Designer.cs index e300cc8aa4..5dd807c836 100644 --- a/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.Designer.cs +++ b/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.Designer.cs @@ -1,6 +1,6 @@ namespace BizHawk.Client.EmuHawk { - partial class VDPViewer + partial class SmsVDPViewer { /// <summary> /// Required designer variable. @@ -28,42 +28,69 @@ /// </summary> private void InitializeComponent() { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SmsVDPViewer)); this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.bmpViewTiles = new BizHawk.Client.EmuHawk.BmpView(); this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.bmpViewPalette = new BizHawk.Client.EmuHawk.BmpView(); this.groupBox3 = new System.Windows.Forms.GroupBox(); this.bmpViewBG = new BizHawk.Client.EmuHawk.BmpView(); - this.bmpViewPalette = new BizHawk.Client.EmuHawk.BmpView(); - this.bmpViewTiles = new BizHawk.Client.EmuHawk.BmpView(); this.label1 = new System.Windows.Forms.Label(); + this.menuStrip1 = new MenuStripEx(); + this.FileSubMenu = new System.Windows.Forms.ToolStripMenuItem(); + this.CloseMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.OptionsSubMenu = new System.Windows.Forms.ToolStripMenuItem(); + this.AutoloadMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.SaveWindowPositionMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.AlwaysOnTopMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.FloatingWindowMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.groupBox1.SuspendLayout(); this.groupBox2.SuspendLayout(); this.groupBox3.SuspendLayout(); + this.menuStrip1.SuspendLayout(); this.SuspendLayout(); // // groupBox1 // this.groupBox1.Controls.Add(this.bmpViewTiles); - this.groupBox1.Location = new System.Drawing.Point(12, 12); + this.groupBox1.Location = new System.Drawing.Point(12, 24); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(268, 153); this.groupBox1.TabIndex = 1; this.groupBox1.TabStop = false; this.groupBox1.Text = "Tiles"; // + // bmpViewTiles + // + this.bmpViewTiles.Location = new System.Drawing.Point(6, 19); + this.bmpViewTiles.Name = "bmpViewTiles"; + this.bmpViewTiles.Size = new System.Drawing.Size(256, 128); + this.bmpViewTiles.TabIndex = 0; + this.bmpViewTiles.Text = "bmpViewTiles"; + // // groupBox2 // this.groupBox2.Controls.Add(this.bmpViewPalette); - this.groupBox2.Location = new System.Drawing.Point(12, 171); + this.groupBox2.Location = new System.Drawing.Point(12, 183); this.groupBox2.Name = "groupBox2"; this.groupBox2.Size = new System.Drawing.Size(268, 57); this.groupBox2.TabIndex = 2; this.groupBox2.TabStop = false; this.groupBox2.Text = "Palettes"; // + // bmpViewPalette + // + this.bmpViewPalette.Location = new System.Drawing.Point(6, 19); + this.bmpViewPalette.Name = "bmpViewPalette"; + this.bmpViewPalette.Size = new System.Drawing.Size(256, 32); + this.bmpViewPalette.TabIndex = 3; + this.bmpViewPalette.Text = "bmpViewPalette"; + this.bmpViewPalette.MouseClick += new System.Windows.Forms.MouseEventHandler(this.bmpViewPalette_MouseClick); + // // groupBox3 // this.groupBox3.Controls.Add(this.bmpViewBG); - this.groupBox3.Location = new System.Drawing.Point(286, 12); + this.groupBox3.Location = new System.Drawing.Point(286, 24); this.groupBox3.Name = "groupBox3"; this.groupBox3.Size = new System.Drawing.Size(268, 281); this.groupBox3.TabIndex = 3; @@ -78,48 +105,106 @@ this.bmpViewBG.TabIndex = 0; this.bmpViewBG.Text = "bmpViewBG"; // - // bmpViewPalette - // - this.bmpViewPalette.Location = new System.Drawing.Point(6, 19); - this.bmpViewPalette.Name = "bmpViewPalette"; - this.bmpViewPalette.Size = new System.Drawing.Size(256, 32); - this.bmpViewPalette.TabIndex = 3; - this.bmpViewPalette.Text = "bmpViewPalette"; - this.bmpViewPalette.MouseClick += new System.Windows.Forms.MouseEventHandler(this.bmpViewPalette_MouseClick); - // - // bmpViewTiles - // - this.bmpViewTiles.Location = new System.Drawing.Point(6, 19); - this.bmpViewTiles.Name = "bmpViewTiles"; - this.bmpViewTiles.Size = new System.Drawing.Size(256, 128); - this.bmpViewTiles.TabIndex = 0; - this.bmpViewTiles.Text = "bmpViewTiles"; - // // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 304); + this.label1.Location = new System.Drawing.Point(12, 316); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(294, 13); this.label1.TabIndex = 4; this.label1.Text = "CTRL + C copies the pane under the mouse to the clipboard."; // + // menuStrip1 + // + this.menuStrip1.ClickThrough = true; + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.FileSubMenu, + this.OptionsSubMenu}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(572, 24); + this.menuStrip1.TabIndex = 5; + this.menuStrip1.Text = "menuStrip1"; + // + // FileSubMenu + // + this.FileSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.CloseMenuItem}); + this.FileSubMenu.Name = "FileSubMenu"; + this.FileSubMenu.Size = new System.Drawing.Size(37, 20); + this.FileSubMenu.Text = "&File"; + // + // CloseMenuItem + // + this.CloseMenuItem.Name = "CloseMenuItem"; + this.CloseMenuItem.ShortcutKeyDisplayString = "Alt+F4"; + this.CloseMenuItem.Size = new System.Drawing.Size(145, 22); + this.CloseMenuItem.Text = "&Close"; + this.CloseMenuItem.Click += new System.EventHandler(this.CloseMenuItem_Click); + // + // OptionsSubMenu + // + this.OptionsSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.AutoloadMenuItem, + this.SaveWindowPositionMenuItem, + this.AlwaysOnTopMenuItem, + this.FloatingWindowMenuItem}); + this.OptionsSubMenu.Name = "OptionsSubMenu"; + this.OptionsSubMenu.Size = new System.Drawing.Size(61, 20); + this.OptionsSubMenu.Text = "&Options"; + this.OptionsSubMenu.DropDownOpened += new System.EventHandler(this.OptionsSubMenu_DropDownOpened); + // + // AutoloadMenuItem + // + this.AutoloadMenuItem.Name = "AutoloadMenuItem"; + this.AutoloadMenuItem.Size = new System.Drawing.Size(191, 22); + this.AutoloadMenuItem.Text = "&Autoload"; + this.AutoloadMenuItem.Click += new System.EventHandler(this.AutoloadMenuItem_Click); + // + // SaveWindowPositionMenuItem + // + this.SaveWindowPositionMenuItem.Name = "SaveWindowPositionMenuItem"; + this.SaveWindowPositionMenuItem.Size = new System.Drawing.Size(191, 22); + this.SaveWindowPositionMenuItem.Text = "Save Window Position"; + this.SaveWindowPositionMenuItem.Click += new System.EventHandler(this.SaveWindowPositionMenuItem_Click); + // + // AlwaysOnTopMenuItem + // + this.AlwaysOnTopMenuItem.Name = "AlwaysOnTopMenuItem"; + this.AlwaysOnTopMenuItem.Size = new System.Drawing.Size(191, 22); + this.AlwaysOnTopMenuItem.Text = "Always On Top"; + this.AlwaysOnTopMenuItem.Click += new System.EventHandler(this.AlwaysOnTopMenuItem_Click); + // + // FloatingWindowMenuItem + // + this.FloatingWindowMenuItem.Name = "FloatingWindowMenuItem"; + this.FloatingWindowMenuItem.Size = new System.Drawing.Size(191, 22); + this.FloatingWindowMenuItem.Text = "Floating Window"; + this.FloatingWindowMenuItem.Click += new System.EventHandler(this.FloatingWindowMenuItem_Click); + // // VDPViewer // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(572, 326); + this.ClientSize = new System.Drawing.Size(572, 335); this.Controls.Add(this.label1); this.Controls.Add(this.groupBox3); this.Controls.Add(this.groupBox2); this.Controls.Add(this.groupBox1); + this.Controls.Add(this.menuStrip1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.KeyPreview = true; + this.MainMenuStrip = this.menuStrip1; this.Name = "VDPViewer"; this.Text = "VDP Viewer"; + this.Load += new System.EventHandler(this.VDPViewer_Load); this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.VDPViewer_KeyDown); this.groupBox1.ResumeLayout(false); this.groupBox2.ResumeLayout(false); this.groupBox3.ResumeLayout(false); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -134,5 +219,13 @@ private System.Windows.Forms.GroupBox groupBox3; private BmpView bmpViewBG; private System.Windows.Forms.Label label1; + private MenuStripEx menuStrip1; + private System.Windows.Forms.ToolStripMenuItem FileSubMenu; + private System.Windows.Forms.ToolStripMenuItem CloseMenuItem; + private System.Windows.Forms.ToolStripMenuItem OptionsSubMenu; + private System.Windows.Forms.ToolStripMenuItem AutoloadMenuItem; + private System.Windows.Forms.ToolStripMenuItem SaveWindowPositionMenuItem; + private System.Windows.Forms.ToolStripMenuItem AlwaysOnTopMenuItem; + private System.Windows.Forms.ToolStripMenuItem FloatingWindowMenuItem; } } \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.cs b/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.cs index ebaf8f0573..3e76a69d9d 100644 --- a/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.cs +++ b/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.cs @@ -13,12 +13,12 @@ using System.Drawing.Imaging; namespace BizHawk.Client.EmuHawk { - public partial class VDPViewer : Form, IToolForm + public partial class SmsVDPViewer : Form, IToolForm { private VDP vdp; int palindex = 0; - public VDPViewer() + public SmsVDPViewer() { InitializeComponent(); @@ -29,7 +29,6 @@ namespace BizHawk.Client.EmuHawk Restart(); } - unsafe static void Draw8x8(byte* src, int* dest, int pitch, int* pal) { int inc = pitch - 8; @@ -158,6 +157,7 @@ namespace BizHawk.Client.EmuHawk Close(); return; } + vdp = (Global.Emulator as SMS).Vdp; UpdateValues(); } @@ -206,5 +206,59 @@ namespace BizHawk.Client.EmuHawk } } } + + private void RefreshFloatingWindowControl() + { + Owner = Global.Config.SmsVdpSettings.FloatingWindow ? null : GlobalWin.MainForm; + } + + protected override void OnShown(EventArgs e) + { + RefreshFloatingWindowControl(); + base.OnShown(e); + } + + private void CloseMenuItem_Click(object sender, EventArgs e) + { + Close(); + } + + private void OptionsSubMenu_DropDownOpened(object sender, EventArgs e) + { + AutoloadMenuItem.Checked = Global.Config.SmsVdpAutoLoad; + SaveWindowPositionMenuItem.Checked = Global.Config.SmsVdpSettings.SaveWindowPosition; + AlwaysOnTopMenuItem.Checked = Global.Config.SmsVdpSettings.TopMost; + FloatingWindowMenuItem.Checked = Global.Config.SmsVdpSettings.FloatingWindow; + } + + private void SaveWindowPositionMenuItem_Click(object sender, EventArgs e) + { + Global.Config.SmsVdpSettings.SaveWindowPosition ^= true; + } + + private void AlwaysOnTopMenuItem_Click(object sender, EventArgs e) + { + TopMost = Global.Config.SmsVdpSettings.TopMost ^= true; + } + + private void FloatingWindowMenuItem_Click(object sender, EventArgs e) + { + Global.Config.SmsVdpSettings.FloatingWindow ^= true; + RefreshFloatingWindowControl(); + } + + private void VDPViewer_Load(object sender, EventArgs e) + { + TopMost = Global.Config.SmsVdpSettings.TopMost; + if (Global.Config.SmsVdpSettings.UseWindowPosition) + { + Location = Global.Config.SmsVdpSettings.WindowPosition; + } + } + + private void AutoloadMenuItem_Click(object sender, EventArgs e) + { + Global.Config.SmsVdpAutoLoad ^= true; + } } } diff --git a/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.resx b/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.resx index 29dcb1b3a3..fef79c9ad8 100644 --- a/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.resx +++ b/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.resx @@ -117,4 +117,103 @@ <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> + <metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> + <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> + <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + AAABAAIAICAAAAEAIACoEAAAJgAAABAQAAABACAAaAQAAM4QAAAoAAAAIAAAAEAAAAABACAAAAAAAIAQ + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wIC + Av8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wIC + Av8CAgL/AgIC/wAAAAACAgL/JCMg/yMjH/8iIh7/GxoX/xoZF/8aGRf/ISAd/x8fHP8eHhv/Hh4a/x0d + Gv9saGH/amVf/xoaGP8aGRf/YVxW/19aVP8YGBb/FxcV/xcXFf8WFhT/FhUU/xUVE/8TExH/FRUT/xUV + E/8VFRP/FRUT/xUVE/8VFRP/AgIC/wICAv+/vrL/V1RM/1VTS/9/fHP/fHlw/3l2bf9NS0T/TEpD/0pI + Qf9IRkD/RUM9/wwNDP8MDQz/amVf/z49N/8MDAz/DAwM/19aVP8PDw3/WlVQ/1hTTv9WUUz/VFBL/0xK + Rf8xMCv/MTAr/zEwK/8xMCv/MTAr/xUVE/8CAgL/AgIC/0lIQP8qKSX/Kikl/2hidP9oYnT/aGJ0/ycm + Iv8lJCH/JCMg/yQkIP8jIx//IiEe/yEgHf8hIB3/IB8c/x8fHP8eHhv/HR0a/w8PDf8PDw3/Dw8N/w4O + DP8NDQv/REI+/xkYFv8YGBb/GBgW/xgYFv8YGBb/FRUT/wICAv8CAgL/Q1Lt/ycv1f8nL9X/Jy/V/ycv + 1f8nL9X/Jy/V/ycv1f8nL9X/Jy/V/ycv1f8nL9X/Jy/V/ycv1f8nL9X/Jy/V/ycv1f8nL9X/Jy/V/ycv + 1f8nL9X/Jy/V/ycv1f8nL9X/Jy/V/ycv1f8nL9X/Jy/V/ycv1f8hJ8//AgIC/wICAv+pnpH/X1hR/15X + UP9dVk//WFJM/1dRS/9VT0n/UEtF/05JRP9MR0L/SUQ//0hDPv9DQDv/QT45/z47Nv88ODT/Ozgz/zo2 + Mv84NTH/NjMv/zUyLv8zMCz/Mi8s/zEuK/8vLSn/Liwo/y0rJ/8tKyf/LSsn/yYkIf8CAgL/AgIC/6me + kf9fWFH/XldQ/11WT/9YUkz/V1FL/1VPSf9QS0X/TklE/0xHQv9JRD//SEM+/0NAO/9BPjn/Pjs2/ysz + 1v90aeP/hHjl/y031/89Pdv/ICzU/ycy1f8tNdf/KDHW/y8tKf8uLCj/LSsn/y0rJ/8tKyf/JiQh/wIC + Av8CAgL/hXxw/0lEPv9LRj//S0ZA/0lEPv9IQz3/RkE8/0M/Ov9BPTj/Pjs2/zw5NP87ODP/OTYy/zg1 + Mf81Mi7/KDHW/01Hxv87NTX/dG+C/1NQ3v8wN9j/aGJ0/2VdZP86P9r/KCYj/yclIv8nJSL/JSMg/yQi + IP8eHBr/AgIC/wICAv9gWVH/OTQw/z05NP89OjX/Pjo1/zs3M/87NzP/OTUx/zg0MP82My//NTIu/zMw + LP8xLiv/Ly0p/y4rKP8rM9b/dGnj/4R45f8tN9f/PT3b/yAs1P8nMtX/LTXX/ygx1v8kIR//IyEe/yEf + Hf8dHBn/GxoY/xUUE/8CAgL/AgIC/2BZUf85NDD/PTk0/z06Nf8+OjX/Ozcz/zs3M/85NTH/ODQw/zYz + L/81Mi7/MzAs/zEuK/8vLSn/Liso/ysz1v90aeP/hHjl/y031/89Pdv/ICzU/ycy1f8tNdf/KDHW/yQh + H/8jIR7/IR8d/x0cGf8bGhj/FRQT/wICAv8CAgL/tbKn/y8sKP8xLir/MzAs/zMwLP8xLiv/MC0q/y4r + KP8tKyf/LSsn/yspJv8qKCX/KCYj/yclIv8lJCH/KzPW/y031/8tN9f/PT3b/z092/8gLNT/JzLV/y01 + 1/8oMdb/Hhwa/x0bGf8bGRf/GRgW/xcWFP8tLCn/AgIC/wICAv/R0M3/kY6G/ygmIv8qJyT/KCYj/9HO + yv/Qzcj/r6ym/6yoo/+dmZP/paGb/52alP8iIB7/ISAd/yAfHP8mLtX/Rkvd/0xR3f8nL9X/LDPW/yIq + 1f8eKNT/HSbT/ygt1f8YFxX/FxYV/xcWFP8VFBP/T01I/0A/O/8CAgL/AgIC/9TT0f+gnpj/nJmT/ygm + Iv8nJSL/JiQh/yUjIf8lIyH/JiMh/yMiH/8iIB7/ISAd/yEfHf8gHhz/Hx4c/yEgHf8gHxz/Hx4b/x4d + Gv8eHRr/HRwZ/x0cGf8cGxj/GxoX/xcWFP8WFRT/FhUT/1xZVP9jX1n/SkdD/wICAv8CAgL/19bU/6im + of+npKD/oqCa/yclIv8nJSL/JiQh/yUjIP8lIyD/JCIf/yIgHv8iIB7/IR8d/x8dG/8iIB7/Ji7V/0ZL + 3f9MUd3/Jy/V/ywz1v8iKtX/HijU/x0m0/8oLdX/FxYU/xYVE/9pZmD/bmtj/25qY/9RT0n/AgIC/wIC + Av/X1tT/qKah/6mnov+npKD/o6Gd/0hDPv9IQz7/R0I9/0ZCPf9EQDv/REA7/0I/Ov9BPTn/QDw4/z46 + Nv89OTX/IiEe/yEgHf8gHxz/Hx4b/x4dGv8eHRr/HRwZ/zIvLP8wLSr/dnNs/3FuZ/9yb2f/cG1l/1NQ + S/8CAgL/AgIC/9XU0v+ysKv/srCr/7Kwq/+npKD/SEM+/0hDPv9IQz7/R0I9/0ZCPf9EQDv/REA7/0I/ + Ov9BPTn/QDw4/yMiHv9STEf/UEtF/01IQ/9LRkH/SkVA/0hDPv9GQTz/HRwZ/zIvLP92c23/h4N8/4OA + eP+DgHj/tK+l/wICAv8CAgL/1dTS/7Kwq/+ysKv/srCr/6ekoP9IQz7/SEM+/0hDPv9HQj3/RkI9/0RA + O/9EQDv/Qj86/0E9Of9APDj/IyIe/1JMR/9QS0X/TUhD/0tGQf9KRUD/SEM+/0ZBPP8dHBn/Mi8s/3Zz + bf+Hg3z/g4B4/4OAeP+0r6X/AgIC/wICAv/V1NL/3dza/7Kwq/+ysKv/p6Sg/0hDPv9IQz7/SEM+/0dC + Pf9GQj3/REA7/0RAO/9CPzr/QT05/0A8OP8jIh7/UkxH/1BLRf9NSEP/S0ZB/0pFQP9IQz7/RkE8/x0c + Gf8yLyz/dnNt/4eDfP+DgHj/xsW+/7Svpf8CAgL/AAAAAAICAv8CAgL/2NfV/9jX1f/X1tT/f3dt/393 + bf9/d23/f3dt/310a/97c2r/enJp/3hwZ/91bmX/c2tj/yQjH/8jIh7/IiEe/yIhHv8hIB3/IB8c/x8e + G/8eHRr/Hh0a/1pUTf/Av7b/vr2z/7y6r/8CAgL/AgIC/wAAAAAAAAAAAAAAAAAAAAACAgL/AgIC/wIC + Av8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wIC + Av8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////////////////////4AA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAIAAAAHgAAAH////////////////////////////////KAAAABAAAAAgAAAAAQAgAAAA + AABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/NiwV/zInEv89Mhv/OjAZ/zow + Gf8yJxH/QjUf/zEnEf88MRz/NiwW/zYsFv80KxX/OjAZ/zowGf8AAAD/AAAA/1ZMX/82NIb/Vkxf/25h + SP9uYUj/bmFI/25hSP9uYUj/VEkw/05BKP9OQCf/Ukcv/25hSP9QQiv/AAAA/wAAAP85Osf/OTrH/zk6 + x/85Osf/OTrH/zk6x/85Osf/OTrH/zk6x/85Osf/OTrH/zk6x/85Osf/OTrH/wAAAP8AAAD/sKOP/5CD + av+Qgmn/joBn/4x+Zf+KfGL/X1E5/z9B0/9cUon/QETd/0lIvP9GRq//U0Qs/1BCK/8AAAD/AAAA/7Cj + j/+QgWn/jX9m/4p8Yf+Hd13/g3NZ/1tNNP9HStv/S0/X/ztA2P8rNtr/LzjY/1NELP9QQiv/AAAA/wAA + AP9gVDv/sKOP/7Cjj/+wo4//sKOP/7Cjj/9bTTT/Vkgv/1ZIL/9WSC//Vkgv/1ZIL/9WSC//UEIr/wAA + AP8AAAD/WEox/01AJ/+Gc1r/hnNa/4ZzWv+Gc1r/WEw0/0tP1/9LT9f/S0/X/0tP1/9LT9f/PjMc/1hJ + MP8AAAD/AAAA/01AJ/9NQCf/oJR//6CUf/+glH//oJR//2ZVPv84LRf/NisV/zQpE/80JxP/MiYR/01A + J/+glH//AAAA/wAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACAAQAA//8AAP//AAD//wAA +</value> + </data> </root> \ No newline at end of file