[mapguide-commits] r8036 - in trunk/Tools/Maestro: Maestro.Base Maestro.Base/Commands Maestro.Base/Editor Maestro.Base/Events Maestro.Editors Maestro.Editors/Generic Maestro.Editors/LayerDefinition/Vector/Scales Maestro.Editors/Preview OSGeo.MapGuide.MaestroAPI/ObjectModels
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Sat Apr 12 11:06:28 PDT 2014
Author: jng
Date: 2014-04-12 11:06:28 -0700 (Sat, 12 Apr 2014)
New Revision: 8036
Added:
trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorDialog.Designer.cs
trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorDialog.cs
trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorDialog.resx
trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorSettings.cs
Removed:
trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditorDialog.Designer.cs
trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditorDialog.cs
trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditorDialog.resx
Modified:
trunk/Tools/Maestro/Maestro.Base/Commands/EditAsXmlCommand.cs
trunk/Tools/Maestro/Maestro.Base/Editor/FsEditorOptionPanel.cs
trunk/Tools/Maestro/Maestro.Base/Events/EventWatcher.cs
trunk/Tools/Maestro/Maestro.Base/Maestro.Base.csproj
trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.Designer.cs
trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.cs
trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.resx
trunk/Tools/Maestro/Maestro.Editors/Maestro.Editors.csproj
trunk/Tools/Maestro/Maestro.Editors/Preview/DefaultResourcePreviewer.cs
trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaces.cs
trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolDefinition.cs
trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolInterfaces.cs
trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/VectorLayerDefinitionImpl.cs
Log:
This submission includes the following changes:
- Move XmlEditorDialog into the Maestro.Editors library
- Composite Symbolization editor enhancements
- Title changed to "Edit Composite Symbolization"
- #2429: Previews now extended to previews of component symbol definitions of the symbolization in addition to the combined result
- #1901: Allow the whole composite symbolization itself to be edited via XML.
Modified: trunk/Tools/Maestro/Maestro.Base/Commands/EditAsXmlCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/EditAsXmlCommand.cs 2014-04-12 16:10:43 UTC (rev 8035)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/EditAsXmlCommand.cs 2014-04-12 18:06:28 UTC (rev 8036)
@@ -23,6 +23,7 @@
using ICSharpCode.Core;
using Maestro.Base.Editor;
using System.Windows.Forms;
+using Maestro.Editors.Generic;
namespace Maestro.Base.Commands
{
Modified: trunk/Tools/Maestro/Maestro.Base/Editor/FsEditorOptionPanel.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/FsEditorOptionPanel.cs 2014-04-12 16:10:43 UTC (rev 8035)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/FsEditorOptionPanel.cs 2014-04-12 18:06:28 UTC (rev 8036)
@@ -36,6 +36,7 @@
using System.Diagnostics;
using OSGeo.MapGuide.MaestroAPI;
using Maestro.Editors.FeatureSource;
+using Maestro.Editors.Generic;
namespace Maestro.Base.Editor
{
Deleted: trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditorDialog.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditorDialog.Designer.cs 2014-04-12 16:10:43 UTC (rev 8035)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditorDialog.Designer.cs 2014-04-12 18:06:28 UTC (rev 8036)
@@ -1,106 +0,0 @@
-namespace Maestro.Base.Editor
-{
- partial class XmlEditorDialog
- {
- /// <summary>
- /// Required designer variable.
- /// </summary>
- private System.ComponentModel.IContainer components = null;
-
- /// <summary>
- /// Clean up any resources being used.
- /// </summary>
- /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- /// <summary>
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- /// </summary>
- private void InitializeComponent()
- {
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(XmlEditorDialog));
- this.splitContainer1 = new System.Windows.Forms.SplitContainer();
- this.contentPanel = new System.Windows.Forms.Panel();
- this.buttonPanel = new System.Windows.Forms.Panel();
- this.btnCancel = new System.Windows.Forms.Button();
- this.btnSave = new System.Windows.Forms.Button();
- this.splitContainer1.Panel1.SuspendLayout();
- this.splitContainer1.Panel2.SuspendLayout();
- this.splitContainer1.SuspendLayout();
- this.buttonPanel.SuspendLayout();
- this.SuspendLayout();
- //
- // splitContainer1
- //
- resources.ApplyResources(this.splitContainer1, "splitContainer1");
- this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
- this.splitContainer1.Name = "splitContainer1";
- //
- // splitContainer1.Panel1
- //
- this.splitContainer1.Panel1.Controls.Add(this.contentPanel);
- //
- // splitContainer1.Panel2
- //
- this.splitContainer1.Panel2.Controls.Add(this.buttonPanel);
- //
- // contentPanel
- //
- resources.ApplyResources(this.contentPanel, "contentPanel");
- this.contentPanel.Name = "contentPanel";
- //
- // buttonPanel
- //
- this.buttonPanel.Controls.Add(this.btnCancel);
- this.buttonPanel.Controls.Add(this.btnSave);
- resources.ApplyResources(this.buttonPanel, "buttonPanel");
- this.buttonPanel.Name = "buttonPanel";
- //
- // btnCancel
- //
- resources.ApplyResources(this.btnCancel, "btnCancel");
- this.btnCancel.Name = "btnCancel";
- this.btnCancel.UseVisualStyleBackColor = true;
- this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
- //
- // btnSave
- //
- resources.ApplyResources(this.btnSave, "btnSave");
- this.btnSave.Name = "btnSave";
- this.btnSave.UseVisualStyleBackColor = true;
- this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
- //
- // XmlEditorDialog
- //
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
- resources.ApplyResources(this, "$this");
- this.Controls.Add(this.splitContainer1);
- this.Name = "XmlEditorDialog";
- this.splitContainer1.Panel1.ResumeLayout(false);
- this.splitContainer1.Panel2.ResumeLayout(false);
- this.splitContainer1.ResumeLayout(false);
- this.buttonPanel.ResumeLayout(false);
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private System.Windows.Forms.SplitContainer splitContainer1;
- private System.Windows.Forms.Panel contentPanel;
- private System.Windows.Forms.Panel buttonPanel;
- private System.Windows.Forms.Button btnCancel;
- private System.Windows.Forms.Button btnSave;
-
- }
-}
\ No newline at end of file
Deleted: trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditorDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditorDialog.cs 2014-04-12 16:10:43 UTC (rev 8035)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditorDialog.cs 2014-04-12 18:06:28 UTC (rev 8036)
@@ -1,175 +0,0 @@
-#region Disclaimer / License
-// Copyright (C) 2010, Jackie Ng
-// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-//
-#endregion
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-using Maestro.Editors.Generic;
-using System.IO;
-using OSGeo.MapGuide.MaestroAPI;
-using System.Xml;
-using Maestro.Editors;
-using System.Xml.Schema;
-using Maestro.Base.UI.Preferences;
-using ICSharpCode.Core;
-
-#pragma warning disable 1591
-
-namespace Maestro.Base.Editor
-{
- /// <summary>
- /// A generic XML editor for any resource, housed within a dialog
- /// </summary>
- /// <remarks>
- /// Although public, this class is undocumented and reserved for internal use by built-in Maestro AddIns
- /// </remarks>
- public partial class XmlEditorDialog : Form, INotifyResourceChanged
- {
- private XmlEditorCtrl _ed;
- private IEditorService _edSvc;
-
- internal XmlEditorDialog()
- {
- InitializeComponent();
- _ed = new XmlEditorCtrl();
- _ed.Validator = new XmlValidationCallback(ValidateXml);
- _ed.Dock = DockStyle.Fill;
- contentPanel.Controls.Add(_ed);
- this.XsdPath = PropertyService.Get(ConfigProperties.XsdSchemaPath, ConfigProperties.DefaultXsdSchemaPath);
- }
-
- public string XsdPath
- {
- get;
- set;
- }
-
- public XmlEditorDialog(IEditorService edsvc)
- : this()
- {
- //NRE happens if we copy without setting a font first
- _ed.TextFont = new System.Drawing.Font("Courier New", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- _edSvc = edsvc;
- _edSvc.RegisterCustomNotifier(this);
- this.Disposed += new EventHandler(OnDisposed);
- }
-
- void OnDisposed(object sender, EventArgs e)
- {
- //Same as EditorBindableCollapsiblePanel.UnsubscribeEventHandlers()
- var handler = this.ResourceChanged;
- if (handler != null)
- {
- foreach (var h in handler.GetInvocationList())
- {
- this.ResourceChanged -= (EventHandler)h;
- }
- //In case we left out something (shouldn't be)
- this.ResourceChanged = null;
- }
- }
-
- protected override void OnLoad(EventArgs e)
- {
- if (_edSvc != null)
- _ed.InitResourceData(_edSvc);
- }
-
- /// <summary>
- /// Gets the type of the edited resource
- /// </summary>
- public ResourceTypes ResourceType
- {
- get;
- private set;
- }
-
- /// <summary>
- /// Sets the XML content and the type of resource this XML content is supposed to represent
- /// </summary>
- /// <param name="xml"></param>
- /// <param name="type"></param>
- public void SetXmlContent(string xml, ResourceTypes type)
- {
- _ed.XmlContent = xml;
- this.ResourceType = type;
- }
-
- private string _lastSnapshot;
-
- /// <summary>
- /// Gets or sets the XML content for this dialog.
- /// </summary>
- public string XmlContent
- {
- get { return _ed.XmlContent; }
- set { _ed.XmlContent = _lastSnapshot = value; }
- }
-
- private XmlSchema GetXsd(string xsdFile)
- {
- string path = xsdFile;
-
- if (!string.IsNullOrEmpty(this.XsdPath))
- path = Path.Combine(this.XsdPath, xsdFile);
-
- if (File.Exists(path))
- {
- ValidationEventHandler handler = (s, e) =>
- {
- };
- return XmlSchema.Read(File.OpenRead(path), handler);
- }
- return null;
- }
-
- private void ValidateXml(out string[] errors, out string[] warnings)
- {
- XmlValidator.ValidateResourceXmlContent(this.XmlContent, this.XsdPath, out errors, out warnings);
- }
-
- private void btnCancel_Click(object sender, EventArgs e)
- {
- this.DialogResult = DialogResult.Cancel;
- }
-
- private void btnSave_Click(object sender, EventArgs e)
- {
- if (_ed.PerformValidation(true, true))
- {
- if (_lastSnapshot != _ed.XmlContent)
- OnResourceChanged();
- this.DialogResult = DialogResult.OK;
- }
- }
-
- private void OnResourceChanged()
- {
- var handler = this.ResourceChanged;
- if (handler != null)
- handler(this, EventArgs.Empty);
- }
-
- public event EventHandler ResourceChanged;
- }
-}
\ No newline at end of file
Deleted: trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditorDialog.resx
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditorDialog.resx 2014-04-12 16:10:43 UTC (rev 8035)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditorDialog.resx 2014-04-12 18:06:28 UTC (rev 8036)
@@ -1,797 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
- <!--
- Microsoft ResX Schema
-
- Version 2.0
-
- The primary goals of this format is to allow a simple XML format
- that is mostly human readable. The generation and parsing of the
- various data types are done through the TypeConverter classes
- associated with the data types.
-
- Example:
-
- ... ado.net/XML headers & schema ...
- <resheader name="resmimetype">text/microsoft-resx</resheader>
- <resheader name="version">2.0</resheader>
- <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
- <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
- <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
- <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
- <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
- <value>[base64 mime encoded serialized .NET Framework object]</value>
- </data>
- <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
- <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
- <comment>This is a comment</comment>
- </data>
-
- There are any number of "resheader" rows that contain simple
- name/value pairs.
-
- Each data row contains a name, and value. The row also contains a
- type or mimetype. Type corresponds to a .NET class that support
- text/value conversion through the TypeConverter architecture.
- Classes that don't support this are serialized and stored with the
- mimetype set.
-
- The mimetype is used for serialized objects, and tells the
- ResXResourceReader how to depersist the object. This is currently not
- extensible. For a given mimetype the value must be set accordingly:
-
- Note - application/x-microsoft.net.object.binary.base64 is the format
- that the ResXResourceWriter will generate, however the reader can
- read any of the formats listed below.
-
- mimetype: application/x-microsoft.net.object.binary.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.soap.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.bytearray.base64
- value : The object must be serialized into a byte array
- : using a System.ComponentModel.TypeConverter
- : and then encoded with base64 encoding.
- -->
- <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
- <xsd:element name="root" msdata:IsDataSet="true">
- <xsd:complexType>
- <xsd:choice maxOccurs="unbounded">
- <xsd:element name="metadata">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" />
- </xsd:sequence>
- <xsd:attribute name="name" use="required" type="xsd:string" />
- <xsd:attribute name="type" type="xsd:string" />
- <xsd:attribute name="mimetype" type="xsd:string" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="assembly">
- <xsd:complexType>
- <xsd:attribute name="alias" type="xsd:string" />
- <xsd:attribute name="name" type="xsd:string" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="data">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
- <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
- <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="resheader">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" />
- </xsd:complexType>
- </xsd:element>
- </xsd:choice>
- </xsd:complexType>
- </xsd:element>
- </xsd:schema>
- <resheader name="resmimetype">
- <value>text/microsoft-resx</value>
- </resheader>
- <resheader name="version">
- <value>2.0</value>
- </resheader>
- <resheader name="reader">
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <resheader name="writer">
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <data name="splitContainer1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
- <value>Fill</value>
- </data>
- <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <data name="splitContainer1.Location" type="System.Drawing.Point, System.Drawing">
- <value>0, 0</value>
- </data>
- <data name="splitContainer1.Orientation" type="System.Windows.Forms.Orientation, System.Windows.Forms">
- <value>Horizontal</value>
- </data>
- <data name="contentPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
- <value>Fill</value>
- </data>
- <data name="contentPanel.Location" type="System.Drawing.Point, System.Drawing">
- <value>0, 0</value>
- </data>
- <data name="contentPanel.Size" type="System.Drawing.Size, System.Drawing">
- <value>784, 507</value>
- </data>
- <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <data name="contentPanel.TabIndex" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name=">>contentPanel.Name" xml:space="preserve">
- <value>contentPanel</value>
- </data>
- <data name=">>contentPanel.Type" xml:space="preserve">
- <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>contentPanel.Parent" xml:space="preserve">
- <value>splitContainer1.Panel1</value>
- </data>
- <data name=">>contentPanel.ZOrder" xml:space="preserve">
- <value>0</value>
- </data>
- <data name=">>splitContainer1.Panel1.Name" xml:space="preserve">
- <value>splitContainer1.Panel1</value>
- </data>
- <data name=">>splitContainer1.Panel1.Type" xml:space="preserve">
- <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>splitContainer1.Panel1.Parent" xml:space="preserve">
- <value>splitContainer1</value>
- </data>
- <data name=">>splitContainer1.Panel1.ZOrder" xml:space="preserve">
- <value>0</value>
- </data>
- <data name="btnCancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
- <value>Bottom, Right</value>
- </data>
- <data name="btnCancel.Location" type="System.Drawing.Point, System.Drawing">
- <value>697, 16</value>
- </data>
- <data name="btnCancel.Size" type="System.Drawing.Size, System.Drawing">
- <value>75, 23</value>
- </data>
- <data name="btnCancel.TabIndex" type="System.Int32, mscorlib">
- <value>1</value>
- </data>
- <data name="btnCancel.Text" xml:space="preserve">
- <value>Cancel</value>
- </data>
- <data name=">>btnCancel.Name" xml:space="preserve">
- <value>btnCancel</value>
- </data>
- <data name=">>btnCancel.Type" xml:space="preserve">
- <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>btnCancel.Parent" xml:space="preserve">
- <value>buttonPanel</value>
- </data>
- <data name=">>btnCancel.ZOrder" xml:space="preserve">
- <value>0</value>
- </data>
- <data name="btnSave.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
- <value>Bottom, Right</value>
- </data>
- <data name="btnSave.Location" type="System.Drawing.Point, System.Drawing">
- <value>616, 16</value>
- </data>
- <data name="btnSave.Size" type="System.Drawing.Size, System.Drawing">
- <value>75, 23</value>
- </data>
- <data name="btnSave.TabIndex" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name="btnSave.Text" xml:space="preserve">
- <value>Save</value>
- </data>
- <data name=">>btnSave.Name" xml:space="preserve">
- <value>btnSave</value>
- </data>
- <data name=">>btnSave.Type" xml:space="preserve">
- <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>btnSave.Parent" xml:space="preserve">
- <value>buttonPanel</value>
- </data>
- <data name=">>btnSave.ZOrder" xml:space="preserve">
- <value>1</value>
- </data>
- <data name="buttonPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
- <value>Fill</value>
- </data>
- <data name="buttonPanel.Location" type="System.Drawing.Point, System.Drawing">
- <value>0, 0</value>
- </data>
- <data name="buttonPanel.Size" type="System.Drawing.Size, System.Drawing">
- <value>784, 51</value>
- </data>
- <data name="buttonPanel.TabIndex" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name=">>buttonPanel.Name" xml:space="preserve">
- <value>buttonPanel</value>
- </data>
- <data name=">>buttonPanel.Type" xml:space="preserve">
- <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>buttonPanel.Parent" xml:space="preserve">
- <value>splitContainer1.Panel2</value>
- </data>
- <data name=">>buttonPanel.ZOrder" xml:space="preserve">
- <value>0</value>
- </data>
- <data name=">>splitContainer1.Panel2.Name" xml:space="preserve">
- <value>splitContainer1.Panel2</value>
- </data>
- <data name=">>splitContainer1.Panel2.Type" xml:space="preserve">
- <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>splitContainer1.Panel2.Parent" xml:space="preserve">
- <value>splitContainer1</value>
- </data>
- <data name=">>splitContainer1.Panel2.ZOrder" xml:space="preserve">
- <value>1</value>
- </data>
- <data name="splitContainer1.Size" type="System.Drawing.Size, System.Drawing">
- <value>784, 562</value>
- </data>
- <data name="splitContainer1.SplitterDistance" type="System.Int32, mscorlib">
- <value>507</value>
- </data>
- <data name="splitContainer1.TabIndex" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name=">>splitContainer1.Name" xml:space="preserve">
- <value>splitContainer1</value>
- </data>
- <data name=">>splitContainer1.Type" xml:space="preserve">
- <value>System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>splitContainer1.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>splitContainer1.ZOrder" xml:space="preserve">
- <value>0</value>
- </data>
- <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
- <value>True</value>
- </metadata>
- <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
- <value>784, 562</value>
- </data>
- <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
- <value>
- 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
- WQA2Zl4AKn1VAAFVcAA9WGwAEm5hABBzZQAEYXkAGmF5AAlzfQA/YHcAUk1OAHxRUwBRcEMAemZWAExV
- YwBlYmEAnCwqAJ8wKwCMLzEAnjAwAKQ3KwCjOjYArEEsALJKLAC3US8ArEY3ALJMNQC4VTcAiG83AKtK
- RQCrUUkAtVdHAK9UUwCyW1kAkXxAAK1kTQC7ZVQAn312ALhmYwC/cGUAu3l3AMVyVwDEeGkAwnx5ADeI
- BgA3jRMAOJIXADWNKQA4myYAKogzADWYPgA5ozcAQ4sLAEmOEgBViRgATZIYAFaUGQBnmR8AW5ooAFeL
- OQBmmyUAcZ8qAGiaNwB0oS0AZ6A1AHmmOgAbg18AIYZMADWeQQAkjVQAKptbADmsRwAuoFgAG4ZmAC6D
- awAklWUAd5NTAHalSgBWgn8AfZ9hAHaZdwCIqTkA/LkeAMyfOADcoygA26k6AOerJgDssS0A/rwnAOKs
- MwDvuj0A/78wAP7BNwCZnksAmZpWAK+OQgCzkkkAvJ9eAImsRACXsEgAiKhcALi3RQCtrV8AoLlcALK7
- WQCtmnsAt5pzAIKlZgCapW0AmbhhAJuwfACjoWoAqLFpAKugdwDJoEEA3KxEAN+xTADEt1kA2rFWAOm5
- TgDnulcAyoVrAMqIdQDQjnoAw5J2ANCQfQDBtmgA1L1tAOi/ZAC6wmgAvMVzAMvDXgD+xkYA/MpXAP/Q
- XgDHxGcA2sVpANnNdgDpxWkA+8xjAP3QaQDnyXsA8ct3AOzRcwD91HYAAmiIAAd2iAAAbpMAB3GRABp5
- kwAle4gARWyCAGR6iAAvgpMAR4aBAG6VigB5o5YAup2FAI6nhACYqYUAjKyaALihhwCttYUAurCFAKq4
- lwC/v58AyImGAMqUiQDUmYgAzZSSANOckwDLo4YAz6yfANillwDfsqMA47+zAKnGgQC9xJ8AxMeMAN3H
- jADFyZUA2suTAM3UlgDc15MA59OFAPzYhgDv3JsA+9uTAP3hnADLwqQA1sOkANnYpQDWzrQA7d6sAOfG
- uADs1roA+N+yANfgtQD946cA/ui5ANrSyQDu08MA89zGAPvpxQD56dMA/vHVAP///wAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAA2tfX2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFxOQkJC
- QkJERERBRE5ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANdOQkJCSlJc19ra11tSREFEQUbX
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXR0ZQW976/vz39+3t7ff8/vTXT0RERNcAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAE5HT62VaOfsu6mlpIaGpKSoscHt/PNXREFGAAAAAAAAAAAAAAAAAAAAAAAAAADX
- R0JY02VeXiiOp6SKiIiIiIeFhYWkqer481FBRNcAAAAAAAAAAAAAAAAAAAAAAFhHRdv+nl1jY2Afgry1
- jY2MjIyJiYiHhYWp6vzXREFXAAAAAAAAAAAAAAAAAAAAVUVL8/jqlx5jeHhkXZS3tY2NjY2MjImDiYeH
- irz34EZEUQAAAAAAAAAAAAAAAABYR07797+nsF1keHh4ZGWZt7W1jY2NjIyJiYODh4eo9/FXRFcAAAAA
- AAAAAAAAANdHS/v3u6m2wW5eeHh4eGRdlMG1tY2NjY2MiYmDg4OHu2aVUkFcAAAAAAAAAAAAAEdK8/i7
- sba2vbpdeHh4eHhkXW7AtrW1jY2MjImJg4ODqGddnU9EAAAAAAAAAAAAUEfe+L+xtry8vexlZHh4eHh4
- eF5wwbW1jY2NjYyJiYODtmVeXZpGRgAAAAAAAABWBwYXFRERERERERUCCg0jeHh4eHhduLe1oycPDg4O
- Dg4OEQICAgwICVkAAAAAAAAZAAAAAAAAAAAAAAAAAAAADXh4eHhhasGjAwAAAAAAAAAAAAAAAAAAAEMA
- AAAAANgZEhISEhISEhISEhISEgUACnV4eHh4XbqQAAQFEhISEhISEhISEhISBUPXAAAAAEvExMTExMTE
- xMTExMTExMTCMHh4eGRfXbKxMcTExMTExMTExMTExMTExDRGAAAAAEjExMTExMTExMTExMTExMTExXhk
- ZWWUsuqwxcTFxMTExMTExMTExMTExDpEAAAAq0jExMTExMTExMTExMTExMTFfGQfoeS+u7G7gcXExMTE
- xMTExMTExMTExMhEWQAAUEj54p/FxMTExMTCMnR3d3l4dQsAAQAAAQGRvLGvnyZ2NsXExMTExMN8YpxO
- RgAASEz+7b7FxMTExMQ4IWF4eGRkHAAEBAQEBAQQp7e9gl94JcLExMTExMN4ZHFXRAAASFv+7L7FxMTE
- xMQ3Hl1dXV0fAS3ExMTExMQrKbbqXmR4JcLExMTExMN4ZF3XRAAASK786r7FxMTExMQ3bOPw8PQaK8TE
- xMTExMTEFE3pXWR4JcTFxMTExMN4eF2tRADZSN746unFxMTExMQ31vj49T4UxMTExMTExMTEwhOSgl94
- JcLExMTExMN4eF3SRNeuSN/46unFxMTExMTC7vj4mhPCxMTExMTExMTExDcWr2VfJcLExMTExMNfX13S
- RlyuSN/495XFxMTExMTCleXuGDfExMTExMTExMTExMQzKrlqI8LExMTExMeWgnDdQlzZSN78k17ExMTE
- xMU3Hm87M8TExMTExMrKxMTExMTEM1OyG8LExMTExMe2wfjeQtcASN7hXV3ExMTExMQ3IB0zxMTExMTE
- yubjxsXExMTExC6OIzfExMTExMpqamveQgAASdldXV3ExMTExMQ3JSvExMTExMTG5ezq08bExMTExMQi
- G8LExMTExDldX12tRAAASatlYXXExMTExMQ3K8TExMTExMXV7Orq6s/ExMTExMTCK8LExMTExDlkYWtY
- RAAATFpvYXjExMTExMTExMTExMTExNHs7Orqwb/MxMTExMTEwsTExMTExMN4X5VPSgAAqlCPXXnFxMTE
- xMTExMTExMTEe/L37OrqwcG8y8TExMTExMTExMTExMN4XaJKWAAAAEytXWTExMTExMTExMTExMQ2XWVy
- 6+rBwcG9ucfExMTExMTExMTExDlfaK1CAAAAAExUJCLFxMTExMTExMTExDl1ZGFds+rBwby8t6bCxcTE
- xMTExMTExDkbPU9GAAAAAK04xMTExMTExMTExMTExXl4ZF2T7MHBvby3traPwsTExMTExMTExMTExD9Z
- AAAAAADExMTExMTExMTExMTEdnh4X3LswcHBwby2trW1fcTExMTExMTExMTExDQAAAAAAADGxMTExMTE
- xMTExMQlZF1dXenBwemTmcG3tbW1izHExMTExMTExMTExMwAAAAAAAAAPkB/L3p6ejLNgdBoXWVllOrB
- 6WhfXbC3t7W1jYZ9fYB9gICBzck7PAAAAAAAAAAAAElbcl54ZGbqweqZZmVdaerqlF54YWWUu7e1jIyM
- iYmDibXq+kpHAAAAAAAAAAAAAKtJqm9deF1xuOxyXWFfXXHqaV94eGRfZYK5toyDiYOMter7T0dcAAAA
- AAAAAAAAAABaTKtvXWRdXWqyXWRhZYLqgl14eHh4ZF9dpo2JjIy16vtVR1UAAAAAAAAAAAAAAAAAWkyq
- cl1dXV3pal1dmb3Ba2F4eHh4eHhfcLWMjbf3+lBFUAAAAAAAAAAAAAAAAAAAAFpMW9T2aF3pcG24vbe5
- XXh4eHh4eHhkZbS3wfjfS0dVAAAAAAAAAAAAAAAAAAAAAACqSUzZcl3o7cHBwcFuX3h4eHh4eHh4X4L4
- +6pHR1sAAAAAAAAAAAAAAAAAAAAAAAAAAExMWtz9+PiYZWhdeHh4eHh4ZGFlZZXeS0dKAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAACsSUlMqvOTXV1dXV9dX2VdZnKdrVVLR1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAKpMSUxarZuboaCgoZubq1pMS0urAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFtMSUlM
- TExMTExJSEtYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADerKurrNkAAAAAAAAA
- AAAAAAAAAAAAAAAAAAD///w///8AAP//gAH//wAA//wAAD//AAD/8AAAD/8AAP/gAAAH/wAA/4AAAAH/
- AAD/AAAAAP8AAP4AAAAAfwAA/AAAAAA/AAD4AAAAAB8AAPgAAAAAHwAA8AAAAAAPAADgAAAAAAcAAOAA
- AAAABwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAAB
- AACAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAABAACAAAAAAAEAAIAA
- AAAAAQAAgAAAAAABAACAAAAAAAEAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAH
- AADwAAAAAA8AAPgAAAAAHwAA+AAAAAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/gAAAAf8AAP/g
- AAAH/wAA//AAAA//AAD//AAAP/8AAP//gAH//wAA///4H///AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAE
- AAAAAAAAAAAAAAABAAAAAQAAAAAAAAoIBAAcCwkACRcGABIXBQAAExkAJBsJACQcEwAkIR0AAiYtABkv
- LgAeMjYAXyIkABxJCwApYw0ANW0SABpPIQANTj4AIGQkACp9NABYRBcARUgxAGpGPwB6YiwAB05VAB9X
- XgAee0cADWNZAANXawAAV3QALF52ABZmYAADYXgAHm97AAhxegAmbnEASU5FAHlFRQBWe18Af3RLAJws
- LACfMzIAojUtAKc7LgCpPi8Aozk3AKxCLQCySS4ArEQzAKZBPgCqRDkAr0s7ALJMNAC6VzcAh0hIAINb
- TgCnRkUAqUZDAKtJQwC4XUkAr1ZWALJbWQCUdE0AvWRNALdhVwC2Yl8AuGVeAKFwXACwdV8AhH9uALZk
- YgC6amUAumxrAL9wZQC/f2MAtXdrAL5xawCyf2wAvXJwAMFpTADBbFUAw3NYAMBxZADGemQAxHpsAMl+
- aADCenYAwXt5ADeGAAA3iQYAPIgFADSECAA7gw8AN4oMADuLCwA2jhIAPI4SADiTGAA4miYAKIY0AC+R
- NQA2mDAANZY/ADabOAA5oC8AOqc+AEWMDABEjBMASIkWAEaRFQBUkxoAV44iAFiXIgBCjDYAYJAiAGad
- KAB/misAZZ02AHGWOQB5pDUAJIRAADKFQQAql1UAMJ9RADqrRwAuoFkAMaRUACaWYABimkQAfpNAAHSd
- QQB6mEcAZ4VqAIalNQD7uB4A3KUuAN+sOwDtriMA4KcqAOOqLADxsSEA/rskAP6+LADjqzEA7LQyAP/A
- MwD/wToAiJlHAImWVwCZnFwApp9HALGQRwCrjF4ArZtWAIyvVQCKtFwAnLZUAKaiTwCmtEkAsrdKAKW3
- VAC4u1IAs7xZALq6XACaj2EAt4diAJa2ZwCup2YAuK5jAKayYAC/tm4A3K1CAMi7RgDes1UA6rpMAOm9
- WQDKgGgAy4d0AMOxYADlvGYAxsFZAP7EQgD/x0gA/chLAOzIVwD8ylcAycNhANzGaADJyHMA1sd1AO3A
- YAD+zmIA/dFrAO3MegD2z3YA6NF4APzUeQACZ4cABXOJABZ2jQAAbpMABHCSAC1rhgA8eYUAPHeQADKB
- igBSj4wARY2WAGWalQB3oJAAioiKAImpkwClsoQAtreDAMuOigDOkIQA0paFANSZhQDUnI4Ay5GSANKc
- kwDIqY8A1qGRANmmlgDfsJkA2rymAMnPkQDlyoIA8c+CAOvSgwDz1IIA/taDAPXVigD+2owA69mWAPTX
- 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
- JADxsiIA/rshAPu6KAD+vigA/78tAOauMgDirDQA4a04APi+OAD+wDEA/sE1AP/COgD+wjwAjodCAI+I
- RgCMhk8Ajo5MAJKATgCUjUsAjJNKAIyTUgCwgVUAgKNCAIGtTgCSrkQAmK9DAI+wVQCNsFgAoqZKALyn
- QACrtkoAtbZCAKK2UgC3vFUAiYJsAJeZYACSnm4Ao6NnAKSzYgCnu2UAuLlkALy0aAC3t3oAtbl8ANWx
- SADhsEQA5rZMAMqAagDKiXwAzIx+AMu3YADEvWgA1rxpALvAYADNwFAA18RZAP7FRADyx04A/slOAOLF
- VADkx1kA78RbAPfKVwD/zFIA9MVbAM7FZQDXy3UA7sNgAOvDZADpx28A/s5jAPXPaAD6z20A8813APDK
- eADyzn4A/tRyAPrUewAAY4MAD22FAAFtjwALe4UAA3KMAA10jQASdY4AAG6TAARwkwAMdJMALHmAACJ7
- jAB9n4MAaJKQAJ6OhwCPrJcApLOMALm6gwCyu5MAiK67AMuQjgDRmoUA1JqJANafkQDYoI0A26aPANyp
- jwDfrI0Aw7aJAN2rkADkuJQA5ryWAOO3nADlu58A6L6YAM7KhwDPxo0A7NOBAPLThAD91oEA89SIAPvZ
- jgDsyqwA/uOhAP3kuAD///8AAAAAAAAAAAAAAEhDOEcAAAAAAAAAAAAAAAAAAAAAADFDte/w8O+1MC8A
- AAAAAAAAAAAAAAA/QXFuuLGLiouyz/A4MwAAAAAAAAAAACvq9VNdZ7+PjoiIg4rN5ykAAAAAAAAAK/LP
- yGV7YWzAvI+IiIWEx6cuAAAAAABA6s/Hypxhe3tpu7yPjYiFjWOTMwAAAAADCgkHCQgGDnthc8cQBwcH
- BwEFBAAAACcSEhISEhISDXt7UrYMEhISEhISEiwAACjZ2dnZ2dnZ1Viat8nd2dnZ2dnZ2SYA6ef22dnZ
- GXd6VAYCAgvBrFsj2dnZd5XmT/P42dnZG5ufD9LZ2SERnWEi2dnWYXxFTPz429nZ3/6mIdnZ2dkglFYi
- 2dnWXn04S/ye2dnZHage2dnb29nZH6AW2dnYuu41s6lQ2dnZFRPZ2dvk4tnZ2RwU2dnXZJhF6pFf2dnZ
- IdnZ2eH7+d7Z2dkh2dnWXpXmAD1V2dnZ2dnZGqv70cx/2dnZ2dnWUj8AADoX2dnZ2dklYGf30MrH3NnZ
- 2dnZGC0AAOXZ2dnZ2SRfUcbRxcq+sNPZ2dnZ2QAAAABGfnZa46piaPmAVqLCj4Khoa3gOQAAAAAASXFX
- baRSUbloYV5ro4iIw/QrAAAAAAAAAEmXdZxsostpe3t7ar3Q7ysAAAAAAAAAAABLma79pXRhe3thUq5N
- MgAAAAAAAAAAAAAAADxOlnFvb3KSRDIAAAAAAAAAAAAAAAAAAAAA6E5LS03oAAAAAAAAAAAA/8P/AP4A
- fwD4AB8A8AAPAOAABwDAAAMAwAADAIAAAQCAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAABAIAA
- AQCAAAMAwAADAOAABwDwAA8A+AAfAP4AfwD/gf8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAAAAAA
- AAAAAQAAAAEAAAAAAAAEFQ8ABRQQAA0WEAASFxAAERgVABEZGAAuHx4AAis4AAQsOABEIiQAH10nACFe
- IQBsViIAHX1UACN5RQA8eE0AP31QAARdbwAEX3MAB1p0ABFdcAAZfWAANWxsACNldwB+e0AAp2pPAKx6
- SwC4ZV4Au35dALVuZgC6amcAu29qAL1wbwC/dHAAvnV0AMh8ZgDIfmkAwHh0AD2VIgA4miUAP5okADSa
- NgAykzkAOqAxADmjNABRlR0ARZkoAFqCOgBDnT0AYoA6AHSXOgBAoDIAS6EwAFShMABfpDIAWKA3AGKh
- LwB2pDQAfqo+ACCHVgA4okEAOqlBADqsRgA6rUgAGoZrAECTTQBvgkwAdJZBAHeQZABgjnoAgYw/AIyq
- MgCDrD4Akaw/ALurLgDTrjcA8rQmAP67IgD+vi0A/8E2APbAPgD/wjsAg45JAKePSgCKrkAAhalKAJ60
- SwCerlQAobJDAKS0SQC5t0QArrZXALGRewCWtmEAqqxwALy9eADStEkA7r1OAOu+WgDrv14AyoFqAMqC
- bgDKh3QAzIt0AMmHfADPjHgAz5V2ANeefwDcp3cA3qV5AO3FTwD2xUkA/spSAM/IcwDpymUA6ctoAPLH
- aQDrxHEA7dJ7AP7TdAACb44AFWqKABtsigADcY4AAG6SAARukAAAb5QAAnGRAAxzkAARdpQAHnuSACN+
- kwCGpYwAxYOEAMyMggDTloIA2qKCAMC1kQDNwoQA1MmSAOTHggDqw5UA9tuZAOLUogAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAP///wAAAAAAAAAiHx8hAAAAAAAAAAAAABpTjWRkdm0cAAAAAAAAh2xYPTlwUE9NYmuG
- AAAAAIl1cyw/N29ST05LGQAAAAcGBQUBC0BVDQQEAwIKAAB9fX19fUE3XEZ9fX19egBmkH19DyoMCAhU
- VhZ9gDEiJY+Af4WKFH19FTMOfYAoHmZefX0RGH2Eg30XEX2BWiBqJ319FICCjIuBfRR9gC8mADB9gH+A
- QnJ4X319fX0yAAB9fX9/PDZ3dHFFfX19ewAAAEMrYC46VzVbUUxhXQAAAACIRy47WUlAP0hxbmkAAAAA
- AAAbjkooLDREJQAAAAAAAAAAAABqHR1nAAAAAAAA/D8AAPAPAADAAwAAwAMAAIABAACAAQAAAAAAAAAA
- AAAAAAAAAAAAAIABAACAAQAAwAMAAMADAADwDwAA/D8AACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChMSsCoDErHKAwK0ifLytqny8rgZ4uK4yeLiuMnS0qgZ0t
- KmqdLCpInCwqHJwrKgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACiNCsIojMqT6EyKp+hMiveoDEq/aAxKv6gMCv/ny8q/p4v
- Kv6eLiv/ni4q/p0tKv6dLCr/nCwp/ZwrKd6cKyqfmyopT5sqKggAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApDYrHaM2K42jNCvoozQr/qIzKv6hMiv/pjw1/rVf
- Wf7Cenb/youG/s6Tjv7Nk47/yYqG/sB4dv6zW1n/ojc1/pwsKf6cKyr/nCsp/pwqKuibKimNmykpHQAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKU4KxGlNyuQpDYr96Y7MP+wUkn/wHZv/9Sh
- mv/t0cP//vHV///twv//6LD//eOk//3gnf/84Jz//eKh//7nrf//7L///vDS/+zQwf/OlJD/q0xK/5ws
- Kv+cKir/myoq95sqKpCbKioRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApjkrUKY4K+WmOi7+slRK/sGM
- fP6LoVz/TpMc/s3Ulv742pT/7sdu/uW6Wf7fsUz/2qtE/tioP/7Ypz7/2qk//t6uRf7ktk//7MJg/vbR
- ef7+4pz//ezF/ubGuf+5aGf+nCwr/psqKv+aKSnlmikpUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKc6KwSnOiyRpjkr/aY5
- LP+8amD+rLSD/kSNEP43iwv/NYkW/kJ8Dv6Znkv/2rBX/t6qOv7krDH/6a8v/uyxLv7tsSz/6q4p/uWq
- J/7fpSb/2qIo/tqkLv7frD3/7L9X/vvXgf/+6rj+58i7/q9UU/+bKin+mikp/ZspKpGaKCkEAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqDwsEag7
- LLmoOyz/qT4v/9ObkP/979T/mbhh/zWFD/81lT7/NZQ9/zWNKf82gAT/iqc5/+3Oaf//xUL//8E4///B
- Nv//wDP//78w//+/Lf//vir//Lsn//KzJP/nqiL/3aMm/92nMv/rvFD/+9iD//3rxP/Nk4//nS8u/5sq
- Kv+bKSq5mykqEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AACpPSwRqT0ryKg8K/6vSjv/5sS3/v/quf/21Ib+ra1f/jJ3Bv43n0L/OqpH/jqtSP45ozX/N4sJ/p6y
- R/7/zl3//sRB/v7CPP7/wjn//sE2/v7AM/7/vy///r4s/v69KP7/vSX/+7ki/u6vIf/hpiX+4aw2/vLH
- YP/+5aj+47+z/qU+Pv+bKyv+mykqyJsqKxEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAKo+KwSqPiy8qT0r/rBOPv7v1sb//uWr/vDJc//itVb+175u/jmEAv46qT//Oq1I/jqt
- SP47rkn/OZwp/kGKCP60u1b//tFm/v7GRv7/wz///sI8/v7BOP7/wTX//sAx/v6/Lf7/vin//r0l/v+8
- Iv/8uSD+7a4g/uKpK//su07+/eOi/tbOtP+0YmH+nS4u/psqKrybKioEAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKs/LJarPyz/sU08/+/Xx//+46f/7cVu/+S2Vf/0wlT//tV4/26f
- K/83jg//O61I/zuuSf87rkn/Oq1I/zmgMP84iAT/mLBG//zUcv//ylD//8VC///DPv//wjr//8E2///A
- Mv//vy7//74p//+9Jf//vCH//7sf//e2H//mqyf/6cJr/0uOEf+HpFv/slxb/5wsLP+bKiqWAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq0ArVatAK/2tRDH/6Me5/v7mrv7ux3L/6Lta/vnI
- Wv/+zFv+/tBm/t7Pev43hwL/OqtE/jqtSP47rkn/Oq1I/jqtSP46pTr/N4oI/mydKP7s0XP//spR/v7G
- RP7/xED//sI7/v7BN/7/wDL//r8u/v++Kf/+vCX+/rsh/v+7Hf/8uR7+67tN/lWJGP83hgH+mqVt/qtN
- TP+bKir9mysrVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACINCIVrEEs56xBLP/Xo5b//+u9//PO
- fP/rvl///Mtf///OYf//zmP//9Bn//zbjv8+iQb/OqY6/zuuSf87rkn/O65J/zuuSf87rkn/OqpD/zeP
- Ef9zoS3//tR0///IS///x0X//8RB///CPP//wTf//8Ay//+/Lf//vSj//7wk//+7IP//ux7/+8xW/0GB
- CP82jR3/PYoI/6+be/+jPDz/mikp54YkJBUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABeJBiXNhUO/iUO
- Cv41My//Ni8h/jIpFv40KhT/NiwV/jYsFf82LBb+Ni0Z/jMuH/4MHQD/DCML/hEyFf4gXyj/NqFD/jqt
- SP47rkn/Oq1I/jqpQf43iQX/xcNl/v7OXv7+x0v/zJ84/mxTG/4/MA7/NikL/jYoCv82KAn+NigI/jYo
- B/82KAb+NisS/g4dAf8LHwr+Cx0C/hkkEf8qFRT+PBAQ/ockJJcAAAAAAAAAAAAAAAAAAAAAAAAAAIEz
- IyJBGRD5AAAA/gAAAP4AAAD/AAAA/gAAAP4AAAD/AAAA/gAAAP8AAAD+AAAA/gAAAP4AAAD/AAAA/gAA
- AP4AAAD/ETMV/jinRv47rkn/Oq1I/jqtSP45miX/Ypoi/v3We/7JoEH/GBIH/gAAAP4AAAD/AAAA/gAA
- AP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/pEnJ/mQKCgiAAAAAAAA
- AAAAAAAAAAAAAKFDLpU/IRv/ABoi/gAeKP4AHij/AB4o/gAeKP4AHij/AB4o/gAeKP8AHij+AB4o/gAe
- KP4AHij/AB0n/gAWHf4ABQb/CBkK/jejRP47rkn/Oq1I/jqtSP46qkH/N4cC/tXLcv6vjkL/BgUC/gAH
- Cv4AGCD/AB0n/gAeKP8AHij+AB4o/gAeKP8AHij+AB4o/gAeKP8AHij+AB4o/gAeKP8AHSf+ABYd/owv
- Mf+YLCyVAAAAAAAAAAAAAAAArEYuD69GLfAFa47/AG6T/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBv
- lP8Ab5T/AG+U/wBvlP8Ab5T/AG6T/wBtkv8AZIT/F3JZ/zmrSf87rkn/OqxG/zmiNP84lBn/N4cC/77C
- Zv/pw2P/MGFe/wBniv8AbpL/AG6T/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBv
- lP8AbpP/AG2S/z1WbP+bKyrwmysqEAAAAAAAAAAAsEYsXLBGLP4Ab5T/AG6T/gBuk/4Ab5T/AG6T/gBu
- k/4Ab5T/AG6T/gBvlP8AbpP+AG6T/gBuk/4Ab5T/AG6T/gBuk/4Ab5T/B3eJ/jepTf44mSL/N4kF/kWN
- Df6Mrkn/vcNs/vvYhv7RvWz/DnSQ/gBuk/4Ab5T/AG6T/gBvlP8AbpP+AG6T/gBvlP8AbpP+AG6T/gBv
- lP8AbpP+AG6T/gBvlP8AbpP+AG6T/j9gd/+cLCv+nCsqXAAAAAAAAAAAsEcsqrBHLP4Eb5L/AG+U/gBu
- k/4Ab5T/AG6T/gBuk/4Ab5T/AG6T/gBvlP8AbpP+AG6T/gBuk/4Ab5T/AG6T/gBvk/4Ec47/IZNp/jij
- P/4yeQD/qLFp/t3HjP7kxH7/5MBv/ui/ZP7wyGb/c5l8/glykf4Ab5P/AG6T/gBvlP8AbpP+AG6T/gBv
- lP8AbpP+AG6T/gBvlP8AbpP+AG6T/gBvlP8AbpP+AG6T/kVsgv+hNjT+nCwqqgAAAACxSC0FsUgt6bFH
- Lf/a0sn/vcSf/5+ug/8GcZL/AG+U/wBvlP8Ab5T/AG+U/wBvlP8HaYj/K3tT/yGGTP8nmGL/KZtf/y6g
- WP82qU7/OKE2/xg/Bv8DBgD/CQgG/wkIBf8JCAT/CQgE/xMPCP+zkkn//c1i/+fDYP/Btmn/m7B8/yV+
- OP8ijFj/Em5h/wBpi/8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wZ2i/8omF//Kogz/4KlZv+oRUL/nCwq6Zws
- KgWxSC0osUgs/rlZQP7+9N///N2X/ubKfP4JcpH/AG6T/gBuk/4Ab5T/AG6T/gBvlP8JY33+Pn4f/jiX
- H/46rUf/OqtD/jqnPv44mSX/JFkC/gIJBf4ADxP/AA8U/gAPFP4ADxT/AA8U/gAOE/4nIxT/27JW/v7N
- Xf7/03H/h6o8/jiQE/86rUj+H24//gBlhv8AbpP+AG6T/gBvlP8AbpP+AG6T/gl5h/86rEn+OJsp/mOg
- N/+2Y2D+nSwq/pwsKiiySS1Wskks/sd6Zv7+8ND/+9qP/ufLfP4JcpH/AG6T/gBuk/4Ab5T/AG6T/gBv
- lP8DYHb+LHQM/jeJBv43iAP/N4cB/jaGAP47dg7/ChQJ/gBEWv4AbJD/AGyQ/gBskP4AbJD/AGyQ/gBr
- jv4AOUz/UkQj/vLEXf721oH/QosI/jmjNf86rUj+H24//gBlhv8AbpP+AG6T/gBvlP8AbpP+AG6T/gl5
- h/86rUn+OaM3/j6KCP/Fh4P+ni8s/p0tKlazSi15s0ot/9KUgv/+7MT//NmK/+jMff8JcpL/AG+U/wBv
- lP8Ab5T/AG+U/wBvlP8DYHb/V4s5/8DMjP/W16L/3dqo/+vatv9BPjb/ADdJ/wBskP8Ab5T/AG+U/wBv
- lP8Ab5T/AG+U/wBvlP8Aao3/Ay47/4hvN//u04D/OYcC/zqkOP86rUj/H24//wBlhv8Ab5T/AG+U/wBv
- lP8Ab5T/AG+U/wl5iP86rUn/OqpD/zeGAf/Alof/oDEv/50tKnmzSi2Qs0os/tmkk/7+6r3//dmJ/ujM
- fv4JcpL/AG6T/gBuk/4Ab5T/AG6T/gBvlP8IYnz+v7+f/v3kt/7+5Lb/+N+y/ndrVf4CKzn/AGqO/gBu
- k/4Ab5T/AG6T/gBuk/4Ab5T/AG6T/gBuk/4Ab5P/AGWH/g8qLv68n17/i6tA/jiQE/86rUj+H24//gBl
- hv8AbpP+AG6T/gBvlP8AbpP+AG6T/gl5h/86rUn+Oq1H/jeIA/+6nYX+oDQx/p4tKpCzSy2cs0ss/t2t
- nf7+6bn//dqL/ujRjv4JcpP/AG6T/gBuk/4Ab5T/AG6T/gBvlP8NZYD+y8Kk/v3mvP7947f/q5l7/gol
- Lf4AZYf/AG6T/gBuk/4Ab5T/AG6T/gBuk/4Ab5T/AG6T/gBuk/4Ab5T/AG6T/gBggP4uOCz/wrZn/kOM
- Cv84lRv+H208/gBlhv8AbpP+AG6T/gBvlP8AbpP+AG6T/ghzff83jA3+OJUd/jeHAv+4oYf+oTUx/p4u
- K5u0TC2dtEst/92unf/+6rz/+uGh/4yvXP8EcI//AG+U/wBvlP8Ab5T/AG+U/wBvlP8NZYH/fZ9h/8TP
- lP/Ww6T/IDAx/wBffv8AbpP/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBv
- lP8AVXH/Wlc5/9rHb/9ZlRr/HV4i/wBlhv8Ab5T/AG+U/wBvlP8Ab5T/AG+U/yB7if+4t0X/iak2/2uh
- M//PrJ//oDMu/54uK520TC2StEwt/tqmlf787sv/ha1K/jKEDP4Cb43/AG6T/gBuk/4Ab5T/AG6T/gBv
- lP8FYXn+LXUN/meaN/5HTkn/AFZz/gBuk/4Ab5T/AG6T/gBuk/4Ab5T/AG+T/jiHk/4rgJL/AG6T/gBu
- k/4Ab5T/AG6T/gBuk/4AbpP/A01k/pF8QP/CwV/+H1oa/gBlhv8AbpP+AG6T/gBvlP8AbpP+AG6T/ih9
- h//3y1X++9Vy/v7ptv/UoJv+nzAr/p4vKpK1TS18tU0u/tiikv6pxoH/N4YA/jKEDP4Cb43/AG6T/gBu
- k/4Ab5T/AG6T/gBvlP8DYHf+K3kY/iNLEP4CTGT/AG6T/gBuk/4Ab5T/AG6T/gBuk/4Ab5P/LIGU/trL
- k/7Jw43/HHqS/gBuk/4Ab5T/AG6T/gBuk/4Ab5T/AG2R/hJKVv+cmlD+KV8h/gBlhv8AbpP+AG6T/gBv
- lP8AbpP+AG6T/id+jf9nmR/+Ypoh/luZI//Snpr+oDIs/p8vKn21TS1btk8w/9Scif84hgH/N4gE/zKF
- D/8Cb47/AG+U/wBvlP8Ab5T/AG+U/wBvlP8DYnr/HWIz/wFDU/8AbpL/AG+U/wBvlP8Ab5T/AG+U/wBv
- lP8YeZT/xsSW//7akf/92Ir/r7aI/w50kv8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBrj/8LRz7/GE4c/wBl
- hv8Ab5T/AG+U/wBvlP8Ab5T/AG+U/w10f/82hwT/OJAS/zmHA//JjYj/oTIs/6AwK1u1Ti4utk8v/s+J
- dP48iQb/OZwp/jWjRv4CcJD/AG6T/gBuk/4Ab5T/AG6T/gBvlP8AXHn+AkFP/gBskP4Ab5T/AG6T/gBu
- k/4Ab5T/AG6T/gtzk/6quJf//NqU/v3Zjv7+14f//NWA/o6nhP4EcJL/AG6T/gBuk/4Ab5T/AG6T/gBv
- lP8AZ4r+AztD/gBlh/8AbpP+AG6T/gBvlP8AbpP+AG6T/ghzfv85ozf+OZ4s/lycLv+7bGf+oTIr/qAx
- Ky62Ti4Itk8u7cNuU/5snDv/OJkj/jWoT/4CcJD/AG6T/gBuk/4Ab5T/AG6T/gBvlP8Aa4/+AGyQ/gBu
- k/4Ab5T/AG6T/gBuk/4Ab5T/BXGU/oysmv772pb//dqQ/v3Yiv7+14T//dV9/vfQdv5rloH/AW6T/gBu
- k/4Ab5T/AG6T/gBvlP8AbpP+AGqN/gBtkf8AbpP+AG6T/gBvlP8AbpP+AG6T/gl5h/86rUn+OJMX/oSp
- W/+uTkf+oTIr7aEyKwgAAAAAtk8us71fQf+Wm1n/N4wM/zWoTv8CcJD/AG+U/wBvlP8Ab5T/AG+U/wBv
- lP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBvlP8AbpL/LoNr/+3erP/94af//tuR//7Xhv/+1oD//tR5//7S
- cv/vy23/R4aB/wBuk/8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wl5
- h/86q0X/N4cD/6ugd/+nPjb/ojMrswAAAAAAAAAAtk8uZrhTM/7BkXD/OogE/jWfP/4CcJD/AG6T/gBu
- k/4Ab5T/AG6T/gBvlP8AbpP+AG6T/gBuk/4Ab5T/AG6T/gBuk/4Qc2X/NYUK/j6JB/5zpDj/79yb/v3X
- hf7+1Hv//dN1/v3Rbv7+z2f/3cBl/iZ3g/4AbpP/AG6T/gBvlP8AbpP+AG6T/gBvlP8AbpP+AG6T/gBv
- lP8AbpP+AG6T/ghzff83jA7+S5IZ/sOEe/+jNi3+ojQrZgAAAAAAAAAAtlAvFrZQLvWtZE3/OFws/xNN
- LP8AbY//AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wp1gP8znUD/OZwp/zmf
- Lf83hgH/vMVz//7XhP/+03b//tJw//7Qav//zmP//81c/8KwXv8Pbof/AG+U/wBvlP8Ab5T/AG+U/wBv
- lP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wZpgv8YSRr/UXBD/6tRSf+iNCv1ojUrFgAAAAAAAAAAAAAAAKtS
- NKUaYXn/AGyQ/gBuk/4Ab5T/AG6T/gBuk/4Ab5T/AG6T/gBvlP8AbpP+AG6T/gBuk/4Ab5T/BG+H/i+e
- Vf46rUn/Oqg//jeIBf6HrUf/99yW/v3UeP7+0nD//tBr/v7PZf7/zV7//stY/v7KUv6bm1r/BWyM/gBv
- lP8AbpP+AG6T/gBvlP8AbpP+AG6T/gBvlP8AbpP+AG6T/gBvlP8AbpP+AGqN/kxVY/+dOC+lAAAAAAAA
- AAAAAAAAAAAAAGZcWTAAb5T/AG6T/gBuk/4Ab5T/AG6T/gBuk/4Ab5T/AG6T/gBvlP8AbpP+AG6T/gBu
- k/4Baof/J45R/jqsRv46rEX/N48R/n+oP/793ZT//dR5/v3UeP7+1n7//tR1/v7OYv7/zFn//spT/v7J
- Tf76xUf/a4FZ/gFsj/8AbpP+AG6T/gBvlP8AbpP+AG6T/gBvlP8AbpP+AG6T/gBvlP8AbpP+AG6T/j1Z
- bP1yR0owAAAAAAAAAAAAAAAAAAAAAAAAAAABbpLxAG6T/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBv
- lP8Ab5T/AG+U/wFskP8cbjj/OaM3/zeKCP83iAT/O4gE/+PUiv/+1Hf//tV6/+fUhv+KrEP/sLxe//7V
- eP//y1X//8lO///ISf//xUP/77o9/z1rX/8AbZL/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBv
- lP8Ab5T/AG6T/yhgebUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ZHMsdllO8GViYf5Wgn//GndJ/huD
- YP4cimz/G4Nf/ip/WP95oI7+eZuA/pKlh/5Njxf/N4oI/keODv45hwL/kLBM/v3aiP7+0nD/6NSE/k6R
- FP44kRT/OIcD/s/IbP7/0Gb//spS/v7GRP7/wz7//sI5/tqqNP9+j1f+eZFc/nmRWv95kFj+eZBZ/nmS
- X/95mXP+eaae/mR6iP9dTFT+dEdJ8EhWZSkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApVM3abhT
- MP7Hel//eZ1F/jeMC/46qkL/OaI0/keNDf/12Yz+/tN0/v7Xgf6zwGj/R40O/j2JBf43jg//VpQa/v3b
- jv7/1n3/k7BJ/jiPEv46rUj/OJgh/kaNDP6cskj/4sxs/v7NWv7/xkT//sE2/v+/MP/+viv+/r0m/v+8
- Iv/+vCH+/r4p/v/IRf/+3In+7tK//qtENv+mOSv+mT0zaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAt1EvArhRLq26VjT/x4Vp/2aZNP83jQ3/OqlA/zeOD/9pnSn/x8Zt//vckP9woC//N4gF/zme
- LP84lRz/O4gD/2ecJ//83ZH/WJUb/ziUGv86rEb/Oq1I/zmfLf84kBP/Q4sJ/4+rPP/Vxl7//8tS//+/
- Lf//vSf//7wj//+8I///vyv//8hG///agv/14Mj/slNF/6g7LP+nOiytpjksAgAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAALhSLw+4US7Nu1k4/smLb/5omjb/N4wL/jmgMP83jQz+N4cC/mCZ
- If68w2n/OIcD/jmiNP45mST/QosJ/oysQP7+2of/g6g6/jeHAv46qUH/Oq1I/jqtSP46rUj/OaI0/jiS
- Fv45iAP/x79U/v/DOP/+vSX+/r0n/v/BMf/+y07+/tyJ/vbhyP+3XE7+qDwr/qg7LM2nOisPAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4UjAYuFEu1rtZN/7KhWv/eZ5G/jeG
- AP87iAX+N4YA/j+KB/7o1IP/YJkh/jeNDf43iAT/srxZ/v7Sa/7+1Xb/X5gf/jmcKf47rkn/Oq1I/jqt
- SP47rkn/Oq1I/jqtSP44mCH/eqIr/v/LT//+vy7+/sU8/v/QXv/+4pz+79TA/rVWRv+pPSv+qT0r1qg8
- LBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuFIwGLhR
- Ls66VjT/x3le/7qwhf/X4LX/UZMZ/zeGAP/j1IT/daMy/2mdJ//EwmH//NNv///LVf/XyWn/OIcC/zqp
- Qf87rkn/O65J/zuuSf87rkn/O65J/zuuSf86pDb/OogE/8vEXf//z13//9h6///rvP/fsqP/r0k2/6s/
- LP+qPizOqT0sGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAALhSLw+4US6tuFIv/rtZOf/NmoD+dJ9D/jqIBP7c15P//t6S/v7Zgf7+1nn/+dR2/v3V
- dv5xnyr/OJQb/jqtSP47rkn/Oq1I/jqtSP47rkn/Oq1I/jqtSP46rUf/OJMY/n6pP//+6rn+89zG/sZ8
- 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
- Gf9fIiT/mCsrUAAAAAAAAAAArkYuugJtkf8AbpP/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBu
- k/8BZYH/MJ9S/zqoP/85myf/PY8S/6i4Vv+up2b/AWWG/wBuk/8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBv
- lP8Ab5T/AG6T/ylfev+bKyq6AAAAALBHLROwRy37Am+T/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBv
- lP8Ab5T/AG+T/wd2iv8wn1D/SIkW/6ayYP/lyoL/7shx/7+2bv8Udo//AG+T/wBvlP8Ab5T/AG+U/wBv
- lP8Ab5T/AG+U/wBvlP8Ab5P/LWuG/54wL/ucKyoTsUgtU7JJLv/h28T/vbyG/wVwkv8Ab5T/AG+U/wBv
- lP8eb3v/KIY0/y6gWf8xpFT/OKVA/xxJC/8DBAH/BgUD/wYFA/8KCAT/sZBH//PJX//RwXP/Qow2/yiS
- VP8DYXj/AG+U/wBvlP8Ab5T/BHSN/y6dUv9imkT/pkE+/5wsKlOySS2HvmVN//7rwf/tz3//BnGS/wBv
- lP8Ab5T/AG+U/w5iWP83jAz/OJMZ/zeQEv8vZgv/AiYt/wBSbf8AU27/AFNu/wBRbP8ZLy7/3rNV/8nD
- Yf84lh7/N6NF/wRdbv8Ab5T/AG+U/wBvlP8GdYz/OqxJ/0GRGP+2ZGH/nSwqh7NKLanJfmj//uay/+/P
- fv8GcZL/AG+U/wBvlP8Ab5T/FmZg/8nPkf/k3Kn/28ul/x4yNv8AZon/AG+U/wBvlP8Ab5T/AG+U/wBj
- hP9FSDH/urpc/ziXH/83o0X/BF1u/wBvlP8Ab5T/AG+U/wZ1jP86rUn/OJIW/7V3a/+dLSqqs0stu86L
- dv/+5az/79KH/wZxk/8Ab5T/AG+U/wBvlP88eYX//eW6//fesv9JTkX/AGCA/wBvlP8Ab5T/AG+U/wBv
- lP8Ab5T/AG+U/wBZd/9/dEv/Xpkh/zaYMP8EXW7/AG+U/wBvlP8Ab5T/BnOH/ziZJP83jxH/sn9s/54u
- K7u0TC28z4x3//3ouP+Mr1X/Am+Q/wBvlP8Ab5T/AG+U/yZucf+TtWL/hH9u/wBWcv8AbpP/AG+U/wBv
- lP8CcJP/AW+T/wBvlP8Ab5T/AG+U/wdSaf+tm1b/XJEf/wRba/8Ab5T/AG+U/wBvlP8Xd4z/yLtG/6C4
- Vv/Bgnr/ni8rvLRNLavNhnD/nb1v/zSECP8Bb4//AG+U/wBvlP8Ab5T/DWRb/zVtEv8IUGf/AG6T/wBv
- lP8Ab5T/AW+U/4mpk/93oJD/AG+T/wBvlP8Ab5T/AG6T/x9XXv+MmkL/BFlo/wBvlP8Ab5T/AG+U/xp5
- jv+NqDL/mrZU/8J6dv+fLyustU0uisqAaf83iQb/NI0X/wFvkP8Ab5T/AG+U/wBvlP8JXmP/B05V/wBu
- k/8Ab5T/AG+U/wBvk/9lmpX/+tmS//fViP9Sj4z/AG+U/wBvlP8Ab5T/AG2R/w1OPv8DWGr/AG+U/wBv
- lP8Ab5T/B3KF/ziTGf8+jA3/umpl/6AxK4q2Ti5YwWhN/1GTIf83qUv/AXCR/wBvlP8Ab5T/AG+U/wBi
- g/8AbZH/AG+U/wBvlP8AbpP/RY2W//TXlv/+2Y3//taD/+3Nev8ygYr/AG6T/wBvlP8Ab5T/AGuO/wBk
- hf8Ab5T/AG+U/wBvlP8GdIr/OqpD/2OcNv+rSUL/oTIrWLZPLhi6Vzj9fpNA/zaeOP8BcJH/AG+U/wBv
- lP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/whxev+Ssmb/69mW//7Yif/+1X3//tJz/9rBbf8WdYz/AG+U/wBv
- lP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wZ0if84mib/i5VV/6Q5Mf2hMysYAAAAALZQL8GUdE3/IGQk/wBu
- kf8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBvlP8EcYv/L5E1/ziWHv9Xlh7//tuP//7Tdv/+0Wz//s5i/7iu
- Y/8Hbo7/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/BG2H/yRgD/+hcFz/ozUrwQAAAAAAAAAAn1M6Wwto
- hv8AbpP/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AW2O/ymXW/86rEb/PpEU/8bHdP/+1Xz//tFv//7P
- Zf//zFz//spS/4uWXv8AbZH/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG6T/y9dc/+YOTJbAAAAAAAA
- AABGYmsDAG6T+QBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBukv8ee0f/OZsn/ziQE/+etlX//tV6//TV
- gf+yvFv/9NFz///LVP//yEv/+8NC/1Z7X/8AbpP/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/H2N/3WZL
- UgMAAAAAAAAAAAAAAABYXmBMg1tO/meFav8khED/JpZg/zKFQf+lsof/sLOB/1eWIP9Ciwr/PYkG/+fS
- gP/+1n3/Zp0o/ziWHv+Cpzb//dJt///ITP//wjz/7rc0/6ifSf+mn0j/pp9G/6aiT/+msoL/ioiK/3lF
- Rf5gTlZKAAAAAAAAAAAAAAAAAAAAAAAAAAC3US+UwmtN/3CVOP85nCj/OJQb/6i4Vf/114T/daM0/zqT
- GP84kBP/fqY3/9vNd/83jxH/Oq1H/zmbJ/9DkBL/pbNE/+zIV///wTP//70n//+8I///vy3//9Fj/+zJ
- q/+rQjP/pjoslAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALhRLge4Ui+6wnFS/3OXO/84lBr/N4kG/0mO
- D/+gtVH/OJYe/zqQE/+jtEz/6NF4/zmLCv86rEX/O65J/zqsRv85nSv/TJIV//rIS///vSf//8I2///U
- bv/syqv/r0s7/6g8LLqnOiwHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALhRLgu4Ui+7wWpM/5mc
- XP+KtFz/PIgE/8zJcv9Ukxf/qrZN///PYP+xuE7/OZwo/zuuSf87rkn/O65J/zuuSf84mCL/s7dG///M
- VP//35P/37CZ/65GNP+qPiy7qTwsCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALhR
- Lge4US6UuVUz/rqLZf90nUH/7+Gn///cjP/dy23/ycJa/1GUGP86q0T/O65J/zuuSf87rkn/Oq1H/zmg
- L/9fmib/8te3/8Z6aP+sQSz+q0AslKo+LAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAC3US5KuFEv271dPv/OiHD/6siw/2ifN/83hgD/N48Q/ziZI/84mSP/OJYe/ziQ
- E/9Ulyb/hZhM/7OGY/+zTjj/rUMs26xBLEoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3UC4Et08uXrZPLsi4UjL+wmtQ/7+BYf+0iWH/q41e/6yM
- Xv+0iGL/v39j/71kTf+0Tzb+sEYtyK9FLV6uQy0EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- 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
- AAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcSUeE58y
- Km2jNzGxrU1I06xLSNOgMjCxmiopbm8eHhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApDgrbaJi
- RfGDjkn/5MeC/+u/Xv/rvlr/68Rx/9ynd/+0XVXxmikpbQAAAAAAAAAAAAAAAAAAAAAAAAAAqj8umNee
- f/+erlT/OKJB/2KhL//2xUn//8E2//29LP/ytCb/7r1O/8+Vdv+eMDGYAAAAAAAAAAAAAAAApT4qb9qi
- gv/yx2n/6cpl/zqgMf86rEb/X6Qy/+3FT///wjv//78u//67Iv+7qy7/fntA/5krK28AAAAAbSsdFCMU
- EvIRGRj/ERgU/xEZFv8EFQ//H10n/zqtSP+KrkD/bFYi/xMXEP8SFxD/DRYQ/wUUEP86FxnydCAgFK1F
- LHIBbpP/AG+U/wBvlP8Ab5T/AG6T/xqGa/9YoDf/rrZX/2COev8AbpP/AG+U/wBvlP8Ab5T/FWqK/5ws
- K3K1UDW24tSi/wJvk/8Ab5T/I3lF/zSaNv8hXiH/Ais4/wQsOP+nj0r/halK/xl9YP8Ab5T/AnKQ/0Od
- Pf+lPz22v2dO2Pbbmf8DcJP/AG+U/4aljP/AtZH/B1p0/wBvlP8Ab5T/EV1w/3SXOv8dfVT/AG+U/wNx
- jv84miX/qFRL2MFrUNmWtmH/AW+R/wBvlP8/fVD/I2V3/wBuk/8jfpP/HnuS/wBvlP81bGz/PHhN/wBv
- lP8Mc5D/pLRJ/7BWUdm9YUS4PZUi/wBvkv8Ab5T/BF9z/wBuk/8RdpT/1MmS/83ChP8Mc5H/AG6T/wRd
- b/8Ab5T/A3GO/0WZKP+pRT+4tlEwdVqCOv8Ab5L/AG+U/wBvlP8Bb5H/QJNN/8/Ic//+03T/qqxw/wFu
- kv8Ab5T/AG+U/wJvjv9igDr/ojUsdWhCNRcDbZD9AG+U/wBvlP8AbpP/IIdW/1ShMP/t0nv/6cto//7K
- U/93kGT/AG6T/wBvlP8Ab5T/E2eG9nQyLhcAAAAAj1dEd2+CTP8ykzn/vL14/1KWHf92pDT/nrRL/0uh
- MP+5t0T/9sA+/9OuN//StEn/sZF7/4dCPXcAAAAAAAAAAGYtGQG6WTiggYw//1GVHf9+qj7/obJD/4Os
- Pv86rUj/OqlB/4yqMv//y1H/3qV5/6pAL6BnJBsBAAAAAAAAAAAAAAAAaC4aAbhSL3epdkX26sOV/5Gs
- P/8/miT/OaM0/0CgMv90lkH/xnhh9qxALHdpJhsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkT8kGLdQ
- L3m7YkO8smxG3rFrRt64XUO8sUkveZA4JRgAAAAAAAAAAAAAAAAAAAAA8A8AAOAHAADAAwAAgAEAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAIABAADAAwAA8A8AAA==
-</value>
- </data>
- <data name="$this.Text" xml:space="preserve">
- <value>XML Editor</value>
- </data>
- <data name=">>$this.Name" xml:space="preserve">
- <value>XmlEditorDialog</value>
- </data>
- <data name=">>$this.Type" xml:space="preserve">
- <value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
-</root>
\ No newline at end of file
Modified: trunk/Tools/Maestro/Maestro.Base/Events/EventWatcher.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Events/EventWatcher.cs 2014-04-12 16:10:43 UTC (rev 8035)
+++ trunk/Tools/Maestro/Maestro.Base/Events/EventWatcher.cs 2014-04-12 18:06:28 UTC (rev 8036)
@@ -31,6 +31,7 @@
using Maestro.Base.UI.Preferences;
using Maestro.Editors.Preview;
using Maestro.Editors.LayerDefinition;
+using Maestro.Editors.Generic;
namespace Maestro.Base.Events
{
@@ -74,6 +75,10 @@
LayerEditorSettings.UseGridEditor = Convert.ToBoolean(e.NewValue);
LoggingService.Info("Use Grid Style Editor is now: " + LayerEditorSettings.UseGridEditor);
break;
+ case ConfigProperties.XsdSchemaPath:
+ XmlEditorSettings.XsdPath = e.NewValue.ToString();
+ LoggingService.Info("XSD path is now: " + XmlEditorSettings.XsdPath);
+ break;
}
}
Modified: trunk/Tools/Maestro/Maestro.Base/Maestro.Base.csproj
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Maestro.Base.csproj 2014-04-12 16:10:43 UTC (rev 8035)
+++ trunk/Tools/Maestro/Maestro.Base/Maestro.Base.csproj 2014-04-12 18:06:28 UTC (rev 8036)
@@ -246,12 +246,6 @@
<Compile Include="Editor\XmlEditor.Designer.cs">
<DependentUpon>XmlEditor.cs</DependentUpon>
</Compile>
- <Compile Include="Editor\XmlEditorDialog.cs">
- <SubType>Form</SubType>
- </Compile>
- <Compile Include="Editor\XmlEditorDialog.Designer.cs">
- <DependentUpon>XmlEditorDialog.cs</DependentUpon>
- </Compile>
<Compile Include="Events\EventWatcher.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
@@ -571,9 +565,6 @@
<EmbeddedResource Include="Editor\XmlEditor.resx">
<DependentUpon>XmlEditor.cs</DependentUpon>
</EmbeddedResource>
- <EmbeddedResource Include="Editor\XmlEditorDialog.resx">
- <DependentUpon>XmlEditorDialog.cs</DependentUpon>
- </EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
Added: trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorDialog.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorDialog.Designer.cs (rev 0)
+++ trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorDialog.Designer.cs 2014-04-12 18:06:28 UTC (rev 8036)
@@ -0,0 +1,106 @@
+namespace Maestro.Editors.Generic
+{
+ partial class XmlEditorDialog
+ {
+ /// <summary>
+ /// Required designer variable.
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// Clean up any resources being used.
+ /// </summary>
+ /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ /// <summary>
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(XmlEditorDialog));
+ this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+ this.contentPanel = new System.Windows.Forms.Panel();
+ this.buttonPanel = new System.Windows.Forms.Panel();
+ this.btnCancel = new System.Windows.Forms.Button();
+ this.btnSave = new System.Windows.Forms.Button();
+ this.splitContainer1.Panel1.SuspendLayout();
+ this.splitContainer1.Panel2.SuspendLayout();
+ this.splitContainer1.SuspendLayout();
+ this.buttonPanel.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // splitContainer1
+ //
+ resources.ApplyResources(this.splitContainer1, "splitContainer1");
+ this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
+ this.splitContainer1.Name = "splitContainer1";
+ //
+ // splitContainer1.Panel1
+ //
+ this.splitContainer1.Panel1.Controls.Add(this.contentPanel);
+ //
+ // splitContainer1.Panel2
+ //
+ this.splitContainer1.Panel2.Controls.Add(this.buttonPanel);
+ //
+ // contentPanel
+ //
+ resources.ApplyResources(this.contentPanel, "contentPanel");
+ this.contentPanel.Name = "contentPanel";
+ //
+ // buttonPanel
+ //
+ this.buttonPanel.Controls.Add(this.btnCancel);
+ this.buttonPanel.Controls.Add(this.btnSave);
+ resources.ApplyResources(this.buttonPanel, "buttonPanel");
+ this.buttonPanel.Name = "buttonPanel";
+ //
+ // btnCancel
+ //
+ resources.ApplyResources(this.btnCancel, "btnCancel");
+ this.btnCancel.Name = "btnCancel";
+ this.btnCancel.UseVisualStyleBackColor = true;
+ this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
+ //
+ // btnSave
+ //
+ resources.ApplyResources(this.btnSave, "btnSave");
+ this.btnSave.Name = "btnSave";
+ this.btnSave.UseVisualStyleBackColor = true;
+ this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
+ //
+ // XmlEditorDialog
+ //
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
+ resources.ApplyResources(this, "$this");
+ this.Controls.Add(this.splitContainer1);
+ this.Name = "XmlEditorDialog";
+ this.splitContainer1.Panel1.ResumeLayout(false);
+ this.splitContainer1.Panel2.ResumeLayout(false);
+ this.splitContainer1.ResumeLayout(false);
+ this.buttonPanel.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.SplitContainer splitContainer1;
+ private System.Windows.Forms.Panel contentPanel;
+ private System.Windows.Forms.Panel buttonPanel;
+ private System.Windows.Forms.Button btnCancel;
+ private System.Windows.Forms.Button btnSave;
+
+ }
+}
\ No newline at end of file
Added: trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorDialog.cs (rev 0)
+++ trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorDialog.cs 2014-04-12 18:06:28 UTC (rev 8036)
@@ -0,0 +1,173 @@
+#region Disclaimer / License
+// Copyright (C) 2010, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+//
+#endregion
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using Maestro.Editors.Generic;
+using System.IO;
+using OSGeo.MapGuide.MaestroAPI;
+using System.Xml;
+using Maestro.Editors;
+using System.Xml.Schema;
+
+#pragma warning disable 1591
+
+namespace Maestro.Editors.Generic
+{
+ /// <summary>
+ /// A generic XML editor for any resource, housed within a dialog
+ /// </summary>
+ /// <remarks>
+ /// Although public, this class is undocumented and reserved for internal use by built-in Maestro AddIns
+ /// </remarks>
+ public partial class XmlEditorDialog : Form, INotifyResourceChanged
+ {
+ private XmlEditorCtrl _ed;
+ private IEditorService _edSvc;
+
+ internal XmlEditorDialog()
+ {
+ InitializeComponent();
+ _ed = new XmlEditorCtrl();
+ _ed.Validator = new XmlValidationCallback(ValidateXml);
+ _ed.Dock = DockStyle.Fill;
+ contentPanel.Controls.Add(_ed);
+ this.XsdPath = XmlEditorSettings.XsdPath;
+ }
+
+ public string XsdPath
+ {
+ get;
+ set;
+ }
+
+ public XmlEditorDialog(IEditorService edsvc)
+ : this()
+ {
+ //NRE happens if we copy without setting a font first
+ _ed.TextFont = new System.Drawing.Font("Courier New", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ _edSvc = edsvc;
+ _edSvc.RegisterCustomNotifier(this);
+ this.Disposed += new EventHandler(OnDisposed);
+ }
+
+ void OnDisposed(object sender, EventArgs e)
+ {
+ //Same as EditorBindableCollapsiblePanel.UnsubscribeEventHandlers()
+ var handler = this.ResourceChanged;
+ if (handler != null)
+ {
+ foreach (var h in handler.GetInvocationList())
+ {
+ this.ResourceChanged -= (EventHandler)h;
+ }
+ //In case we left out something (shouldn't be)
+ this.ResourceChanged = null;
+ }
+ }
+
+ protected override void OnLoad(EventArgs e)
+ {
+ if (_edSvc != null)
+ _ed.InitResourceData(_edSvc);
+ }
+
+ /// <summary>
+ /// Gets the type of the edited resource
+ /// </summary>
+ public ResourceTypes ResourceType
+ {
+ get;
+ private set;
+ }
+
+ /// <summary>
+ /// Sets the XML content and the type of resource this XML content is supposed to represent
+ /// </summary>
+ /// <param name="xml"></param>
+ /// <param name="type"></param>
+ public void SetXmlContent(string xml, ResourceTypes type)
+ {
+ _ed.XmlContent = xml;
+ this.ResourceType = type;
+ }
+
+ private string _lastSnapshot;
+
+ /// <summary>
+ /// Gets or sets the XML content for this dialog.
+ /// </summary>
+ public string XmlContent
+ {
+ get { return _ed.XmlContent; }
+ set { _ed.XmlContent = _lastSnapshot = value; }
+ }
+
+ private XmlSchema GetXsd(string xsdFile)
+ {
+ string path = xsdFile;
+
+ if (!string.IsNullOrEmpty(this.XsdPath))
+ path = Path.Combine(this.XsdPath, xsdFile);
+
+ if (File.Exists(path))
+ {
+ ValidationEventHandler handler = (s, e) =>
+ {
+ };
+ return XmlSchema.Read(File.OpenRead(path), handler);
+ }
+ return null;
+ }
+
+ private void ValidateXml(out string[] errors, out string[] warnings)
+ {
+ XmlValidator.ValidateResourceXmlContent(this.XmlContent, this.XsdPath, out errors, out warnings);
+ }
+
+ private void btnCancel_Click(object sender, EventArgs e)
+ {
+ this.DialogResult = DialogResult.Cancel;
+ }
+
+ private void btnSave_Click(object sender, EventArgs e)
+ {
+ if (_ed.PerformValidation(true, true))
+ {
+ if (_lastSnapshot != _ed.XmlContent)
+ OnResourceChanged();
+ this.DialogResult = DialogResult.OK;
+ }
+ }
+
+ private void OnResourceChanged()
+ {
+ var handler = this.ResourceChanged;
+ if (handler != null)
+ handler(this, EventArgs.Empty);
+ }
+
+ public event EventHandler ResourceChanged;
+ }
+}
\ No newline at end of file
Added: trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorDialog.resx
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorDialog.resx (rev 0)
+++ trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorDialog.resx 2014-04-12 18:06:28 UTC (rev 8036)
@@ -0,0 +1,797 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+ <data name="splitContainer1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+ <value>Fill</value>
+ </data>
+ <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+ <data name="splitContainer1.Location" type="System.Drawing.Point, System.Drawing">
+ <value>0, 0</value>
+ </data>
+ <data name="splitContainer1.Orientation" type="System.Windows.Forms.Orientation, System.Windows.Forms">
+ <value>Horizontal</value>
+ </data>
+ <data name="contentPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+ <value>Fill</value>
+ </data>
+ <data name="contentPanel.Location" type="System.Drawing.Point, System.Drawing">
+ <value>0, 0</value>
+ </data>
+ <data name="contentPanel.Size" type="System.Drawing.Size, System.Drawing">
+ <value>784, 507</value>
+ </data>
+ <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+ <data name="contentPanel.TabIndex" type="System.Int32, mscorlib">
+ <value>0</value>
+ </data>
+ <data name=">>contentPanel.Name" xml:space="preserve">
+ <value>contentPanel</value>
+ </data>
+ <data name=">>contentPanel.Type" xml:space="preserve">
+ <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>contentPanel.Parent" xml:space="preserve">
+ <value>splitContainer1.Panel1</value>
+ </data>
+ <data name=">>contentPanel.ZOrder" xml:space="preserve">
+ <value>0</value>
+ </data>
+ <data name=">>splitContainer1.Panel1.Name" xml:space="preserve">
+ <value>splitContainer1.Panel1</value>
+ </data>
+ <data name=">>splitContainer1.Panel1.Type" xml:space="preserve">
+ <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>splitContainer1.Panel1.Parent" xml:space="preserve">
+ <value>splitContainer1</value>
+ </data>
+ <data name=">>splitContainer1.Panel1.ZOrder" xml:space="preserve">
+ <value>0</value>
+ </data>
+ <data name="btnCancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+ <value>Bottom, Right</value>
+ </data>
+ <data name="btnCancel.Location" type="System.Drawing.Point, System.Drawing">
+ <value>697, 16</value>
+ </data>
+ <data name="btnCancel.Size" type="System.Drawing.Size, System.Drawing">
+ <value>75, 23</value>
+ </data>
+ <data name="btnCancel.TabIndex" type="System.Int32, mscorlib">
+ <value>1</value>
+ </data>
+ <data name="btnCancel.Text" xml:space="preserve">
+ <value>Cancel</value>
+ </data>
+ <data name=">>btnCancel.Name" xml:space="preserve">
+ <value>btnCancel</value>
+ </data>
+ <data name=">>btnCancel.Type" xml:space="preserve">
+ <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>btnCancel.Parent" xml:space="preserve">
+ <value>buttonPanel</value>
+ </data>
+ <data name=">>btnCancel.ZOrder" xml:space="preserve">
+ <value>0</value>
+ </data>
+ <data name="btnSave.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+ <value>Bottom, Right</value>
+ </data>
+ <data name="btnSave.Location" type="System.Drawing.Point, System.Drawing">
+ <value>616, 16</value>
+ </data>
+ <data name="btnSave.Size" type="System.Drawing.Size, System.Drawing">
+ <value>75, 23</value>
+ </data>
+ <data name="btnSave.TabIndex" type="System.Int32, mscorlib">
+ <value>0</value>
+ </data>
+ <data name="btnSave.Text" xml:space="preserve">
+ <value>Save</value>
+ </data>
+ <data name=">>btnSave.Name" xml:space="preserve">
+ <value>btnSave</value>
+ </data>
+ <data name=">>btnSave.Type" xml:space="preserve">
+ <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>btnSave.Parent" xml:space="preserve">
+ <value>buttonPanel</value>
+ </data>
+ <data name=">>btnSave.ZOrder" xml:space="preserve">
+ <value>1</value>
+ </data>
+ <data name="buttonPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+ <value>Fill</value>
+ </data>
+ <data name="buttonPanel.Location" type="System.Drawing.Point, System.Drawing">
+ <value>0, 0</value>
+ </data>
+ <data name="buttonPanel.Size" type="System.Drawing.Size, System.Drawing">
+ <value>784, 51</value>
+ </data>
+ <data name="buttonPanel.TabIndex" type="System.Int32, mscorlib">
+ <value>0</value>
+ </data>
+ <data name=">>buttonPanel.Name" xml:space="preserve">
+ <value>buttonPanel</value>
+ </data>
+ <data name=">>buttonPanel.Type" xml:space="preserve">
+ <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>buttonPanel.Parent" xml:space="preserve">
+ <value>splitContainer1.Panel2</value>
+ </data>
+ <data name=">>buttonPanel.ZOrder" xml:space="preserve">
+ <value>0</value>
+ </data>
+ <data name=">>splitContainer1.Panel2.Name" xml:space="preserve">
+ <value>splitContainer1.Panel2</value>
+ </data>
+ <data name=">>splitContainer1.Panel2.Type" xml:space="preserve">
+ <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>splitContainer1.Panel2.Parent" xml:space="preserve">
+ <value>splitContainer1</value>
+ </data>
+ <data name=">>splitContainer1.Panel2.ZOrder" xml:space="preserve">
+ <value>1</value>
+ </data>
+ <data name="splitContainer1.Size" type="System.Drawing.Size, System.Drawing">
+ <value>784, 562</value>
+ </data>
+ <data name="splitContainer1.SplitterDistance" type="System.Int32, mscorlib">
+ <value>507</value>
+ </data>
+ <data name="splitContainer1.TabIndex" type="System.Int32, mscorlib">
+ <value>0</value>
+ </data>
+ <data name=">>splitContainer1.Name" xml:space="preserve">
+ <value>splitContainer1</value>
+ </data>
+ <data name=">>splitContainer1.Type" xml:space="preserve">
+ <value>System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>splitContainer1.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name=">>splitContainer1.ZOrder" xml:space="preserve">
+ <value>0</value>
+ </data>
+ <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <value>True</value>
+ </metadata>
+ <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
+ <value>784, 562</value>
+ </data>
+ <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ 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
+ WQA2Zl4AKn1VAAFVcAA9WGwAEm5hABBzZQAEYXkAGmF5AAlzfQA/YHcAUk1OAHxRUwBRcEMAemZWAExV
+ YwBlYmEAnCwqAJ8wKwCMLzEAnjAwAKQ3KwCjOjYArEEsALJKLAC3US8ArEY3ALJMNQC4VTcAiG83AKtK
+ RQCrUUkAtVdHAK9UUwCyW1kAkXxAAK1kTQC7ZVQAn312ALhmYwC/cGUAu3l3AMVyVwDEeGkAwnx5ADeI
+ BgA3jRMAOJIXADWNKQA4myYAKogzADWYPgA5ozcAQ4sLAEmOEgBViRgATZIYAFaUGQBnmR8AW5ooAFeL
+ OQBmmyUAcZ8qAGiaNwB0oS0AZ6A1AHmmOgAbg18AIYZMADWeQQAkjVQAKptbADmsRwAuoFgAG4ZmAC6D
+ awAklWUAd5NTAHalSgBWgn8AfZ9hAHaZdwCIqTkA/LkeAMyfOADcoygA26k6AOerJgDssS0A/rwnAOKs
+ MwDvuj0A/78wAP7BNwCZnksAmZpWAK+OQgCzkkkAvJ9eAImsRACXsEgAiKhcALi3RQCtrV8AoLlcALK7
+ WQCtmnsAt5pzAIKlZgCapW0AmbhhAJuwfACjoWoAqLFpAKugdwDJoEEA3KxEAN+xTADEt1kA2rFWAOm5
+ TgDnulcAyoVrAMqIdQDQjnoAw5J2ANCQfQDBtmgA1L1tAOi/ZAC6wmgAvMVzAMvDXgD+xkYA/MpXAP/Q
+ XgDHxGcA2sVpANnNdgDpxWkA+8xjAP3QaQDnyXsA8ct3AOzRcwD91HYAAmiIAAd2iAAAbpMAB3GRABp5
+ kwAle4gARWyCAGR6iAAvgpMAR4aBAG6VigB5o5YAup2FAI6nhACYqYUAjKyaALihhwCttYUAurCFAKq4
+ lwC/v58AyImGAMqUiQDUmYgAzZSSANOckwDLo4YAz6yfANillwDfsqMA47+zAKnGgQC9xJ8AxMeMAN3H
+ jADFyZUA2suTAM3UlgDc15MA59OFAPzYhgDv3JsA+9uTAP3hnADLwqQA1sOkANnYpQDWzrQA7d6sAOfG
+ uADs1roA+N+yANfgtQD946cA/ui5ANrSyQDu08MA89zGAPvpxQD56dMA/vHVAP///wAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA2tfX2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFxOQkJC
+ QkJERERBRE5ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANdOQkJCSlJc19ra11tSREFEQUbX
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXR0ZQW976/vz39+3t7ff8/vTXT0RERNcAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAE5HT62VaOfsu6mlpIaGpKSoscHt/PNXREFGAAAAAAAAAAAAAAAAAAAAAAAAAADX
+ R0JY02VeXiiOp6SKiIiIiIeFhYWkqer481FBRNcAAAAAAAAAAAAAAAAAAAAAAFhHRdv+nl1jY2Afgry1
+ jY2MjIyJiYiHhYWp6vzXREFXAAAAAAAAAAAAAAAAAAAAVUVL8/jqlx5jeHhkXZS3tY2NjY2MjImDiYeH
+ irz34EZEUQAAAAAAAAAAAAAAAABYR07797+nsF1keHh4ZGWZt7W1jY2NjIyJiYODh4eo9/FXRFcAAAAA
+ AAAAAAAAANdHS/v3u6m2wW5eeHh4eGRdlMG1tY2NjY2MiYmDg4OHu2aVUkFcAAAAAAAAAAAAAEdK8/i7
+ sba2vbpdeHh4eHhkXW7AtrW1jY2MjImJg4ODqGddnU9EAAAAAAAAAAAAUEfe+L+xtry8vexlZHh4eHh4
+ eF5wwbW1jY2NjYyJiYODtmVeXZpGRgAAAAAAAABWBwYXFRERERERERUCCg0jeHh4eHhduLe1oycPDg4O
+ Dg4OEQICAgwICVkAAAAAAAAZAAAAAAAAAAAAAAAAAAAADXh4eHhhasGjAwAAAAAAAAAAAAAAAAAAAEMA
+ AAAAANgZEhISEhISEhISEhISEgUACnV4eHh4XbqQAAQFEhISEhISEhISEhISBUPXAAAAAEvExMTExMTE
+ xMTExMTExMTCMHh4eGRfXbKxMcTExMTExMTExMTExMTExDRGAAAAAEjExMTExMTExMTExMTExMTExXhk
+ ZWWUsuqwxcTFxMTExMTExMTExMTExDpEAAAAq0jExMTExMTExMTExMTExMTFfGQfoeS+u7G7gcXExMTE
+ xMTExMTExMTExMhEWQAAUEj54p/FxMTExMTCMnR3d3l4dQsAAQAAAQGRvLGvnyZ2NsXExMTExMN8YpxO
+ RgAASEz+7b7FxMTExMQ4IWF4eGRkHAAEBAQEBAQQp7e9gl94JcLExMTExMN4ZHFXRAAASFv+7L7FxMTE
+ xMQ3Hl1dXV0fAS3ExMTExMQrKbbqXmR4JcLExMTExMN4ZF3XRAAASK786r7FxMTExMQ3bOPw8PQaK8TE
+ xMTExMTEFE3pXWR4JcTFxMTExMN4eF2tRADZSN746unFxMTExMQ31vj49T4UxMTExMTExMTEwhOSgl94
+ JcLExMTExMN4eF3SRNeuSN/46unFxMTExMTC7vj4mhPCxMTExMTExMTExDcWr2VfJcLExMTExMNfX13S
+ RlyuSN/495XFxMTExMTCleXuGDfExMTExMTExMTExMQzKrlqI8LExMTExMeWgnDdQlzZSN78k17ExMTE
+ xMU3Hm87M8TExMTExMrKxMTExMTEM1OyG8LExMTExMe2wfjeQtcASN7hXV3ExMTExMQ3IB0zxMTExMTE
+ yubjxsXExMTExC6OIzfExMTExMpqamveQgAASdldXV3ExMTExMQ3JSvExMTExMTG5ezq08bExMTExMQi
+ G8LExMTExDldX12tRAAASatlYXXExMTExMQ3K8TExMTExMXV7Orq6s/ExMTExMTCK8LExMTExDlkYWtY
+ RAAATFpvYXjExMTExMTExMTExMTExNHs7Orqwb/MxMTExMTEwsTExMTExMN4X5VPSgAAqlCPXXnFxMTE
+ xMTExMTExMTEe/L37OrqwcG8y8TExMTExMTExMTExMN4XaJKWAAAAEytXWTExMTExMTExMTExMQ2XWVy
+ 6+rBwcG9ucfExMTExMTExMTExDlfaK1CAAAAAExUJCLFxMTExMTExMTExDl1ZGFds+rBwby8t6bCxcTE
+ xMTExMTExDkbPU9GAAAAAK04xMTExMTExMTExMTExXl4ZF2T7MHBvby3traPwsTExMTExMTExMTExD9Z
+ AAAAAADExMTExMTExMTExMTEdnh4X3LswcHBwby2trW1fcTExMTExMTExMTExDQAAAAAAADGxMTExMTE
+ xMTExMQlZF1dXenBwemTmcG3tbW1izHExMTExMTExMTExMwAAAAAAAAAPkB/L3p6ejLNgdBoXWVllOrB
+ 6WhfXbC3t7W1jYZ9fYB9gICBzck7PAAAAAAAAAAAAElbcl54ZGbqweqZZmVdaerqlF54YWWUu7e1jIyM
+ iYmDibXq+kpHAAAAAAAAAAAAAKtJqm9deF1xuOxyXWFfXXHqaV94eGRfZYK5toyDiYOMter7T0dcAAAA
+ AAAAAAAAAABaTKtvXWRdXWqyXWRhZYLqgl14eHh4ZF9dpo2JjIy16vtVR1UAAAAAAAAAAAAAAAAAWkyq
+ cl1dXV3pal1dmb3Ba2F4eHh4eHhfcLWMjbf3+lBFUAAAAAAAAAAAAAAAAAAAAFpMW9T2aF3pcG24vbe5
+ XXh4eHh4eHhkZbS3wfjfS0dVAAAAAAAAAAAAAAAAAAAAAACqSUzZcl3o7cHBwcFuX3h4eHh4eHh4X4L4
+ +6pHR1sAAAAAAAAAAAAAAAAAAAAAAAAAAExMWtz9+PiYZWhdeHh4eHh4ZGFlZZXeS0dKAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAACsSUlMqvOTXV1dXV9dX2VdZnKdrVVLR1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAKpMSUxarZuboaCgoZubq1pMS0urAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFtMSUlM
+ TExMTExJSEtYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADerKurrNkAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///w///8AAP//gAH//wAA//wAAD//AAD/8AAAD/8AAP/gAAAH/wAA/4AAAAH/
+ AAD/AAAAAP8AAP4AAAAAfwAA/AAAAAA/AAD4AAAAAB8AAPgAAAAAHwAA8AAAAAAPAADgAAAAAAcAAOAA
+ AAAABwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAAB
+ AACAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAABAACAAAAAAAEAAIAA
+ AAAAAQAAgAAAAAABAACAAAAAAAEAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAH
+ AADwAAAAAA8AAPgAAAAAHwAA+AAAAAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/gAAAAf8AAP/g
+ AAAH/wAA//AAAA//AAD//AAAP/8AAP//gAH//wAA///4H///AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAE
+ AAAAAAAAAAAAAAABAAAAAQAAAAAAAAoIBAAcCwkACRcGABIXBQAAExkAJBsJACQcEwAkIR0AAiYtABkv
+ LgAeMjYAXyIkABxJCwApYw0ANW0SABpPIQANTj4AIGQkACp9NABYRBcARUgxAGpGPwB6YiwAB05VAB9X
+ XgAee0cADWNZAANXawAAV3QALF52ABZmYAADYXgAHm97AAhxegAmbnEASU5FAHlFRQBWe18Af3RLAJws
+ LACfMzIAojUtAKc7LgCpPi8Aozk3AKxCLQCySS4ArEQzAKZBPgCqRDkAr0s7ALJMNAC6VzcAh0hIAINb
+ TgCnRkUAqUZDAKtJQwC4XUkAr1ZWALJbWQCUdE0AvWRNALdhVwC2Yl8AuGVeAKFwXACwdV8AhH9uALZk
+ YgC6amUAumxrAL9wZQC/f2MAtXdrAL5xawCyf2wAvXJwAMFpTADBbFUAw3NYAMBxZADGemQAxHpsAMl+
+ aADCenYAwXt5ADeGAAA3iQYAPIgFADSECAA7gw8AN4oMADuLCwA2jhIAPI4SADiTGAA4miYAKIY0AC+R
+ NQA2mDAANZY/ADabOAA5oC8AOqc+AEWMDABEjBMASIkWAEaRFQBUkxoAV44iAFiXIgBCjDYAYJAiAGad
+ KAB/misAZZ02AHGWOQB5pDUAJIRAADKFQQAql1UAMJ9RADqrRwAuoFkAMaRUACaWYABimkQAfpNAAHSd
+ QQB6mEcAZ4VqAIalNQD7uB4A3KUuAN+sOwDtriMA4KcqAOOqLADxsSEA/rskAP6+LADjqzEA7LQyAP/A
+ MwD/wToAiJlHAImWVwCZnFwApp9HALGQRwCrjF4ArZtWAIyvVQCKtFwAnLZUAKaiTwCmtEkAsrdKAKW3
+ VAC4u1IAs7xZALq6XACaj2EAt4diAJa2ZwCup2YAuK5jAKayYAC/tm4A3K1CAMi7RgDes1UA6rpMAOm9
+ WQDKgGgAy4d0AMOxYADlvGYAxsFZAP7EQgD/x0gA/chLAOzIVwD8ylcAycNhANzGaADJyHMA1sd1AO3A
+ YAD+zmIA/dFrAO3MegD2z3YA6NF4APzUeQACZ4cABXOJABZ2jQAAbpMABHCSAC1rhgA8eYUAPHeQADKB
+ igBSj4wARY2WAGWalQB3oJAAioiKAImpkwClsoQAtreDAMuOigDOkIQA0paFANSZhQDUnI4Ay5GSANKc
+ kwDIqY8A1qGRANmmlgDfsJkA2rymAMnPkQDlyoIA8c+CAOvSgwDz1IIA/taDAPXVigD+2owA69mWAPTX
+ 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
+ JADxsiIA/rshAPu6KAD+vigA/78tAOauMgDirDQA4a04APi+OAD+wDEA/sE1AP/COgD+wjwAjodCAI+I
+ RgCMhk8Ajo5MAJKATgCUjUsAjJNKAIyTUgCwgVUAgKNCAIGtTgCSrkQAmK9DAI+wVQCNsFgAoqZKALyn
+ QACrtkoAtbZCAKK2UgC3vFUAiYJsAJeZYACSnm4Ao6NnAKSzYgCnu2UAuLlkALy0aAC3t3oAtbl8ANWx
+ SADhsEQA5rZMAMqAagDKiXwAzIx+AMu3YADEvWgA1rxpALvAYADNwFAA18RZAP7FRADyx04A/slOAOLF
+ VADkx1kA78RbAPfKVwD/zFIA9MVbAM7FZQDXy3UA7sNgAOvDZADpx28A/s5jAPXPaAD6z20A8813APDK
+ eADyzn4A/tRyAPrUewAAY4MAD22FAAFtjwALe4UAA3KMAA10jQASdY4AAG6TAARwkwAMdJMALHmAACJ7
+ jAB9n4MAaJKQAJ6OhwCPrJcApLOMALm6gwCyu5MAiK67AMuQjgDRmoUA1JqJANafkQDYoI0A26aPANyp
+ jwDfrI0Aw7aJAN2rkADkuJQA5ryWAOO3nADlu58A6L6YAM7KhwDPxo0A7NOBAPLThAD91oEA89SIAPvZ
+ jgDsyqwA/uOhAP3kuAD///8AAAAAAAAAAAAAAEhDOEcAAAAAAAAAAAAAAAAAAAAAADFDte/w8O+1MC8A
+ AAAAAAAAAAAAAAA/QXFuuLGLiouyz/A4MwAAAAAAAAAAACvq9VNdZ7+PjoiIg4rN5ykAAAAAAAAAK/LP
+ yGV7YWzAvI+IiIWEx6cuAAAAAABA6s/Hypxhe3tpu7yPjYiFjWOTMwAAAAADCgkHCQgGDnthc8cQBwcH
+ BwEFBAAAACcSEhISEhISDXt7UrYMEhISEhISEiwAACjZ2dnZ2dnZ1Viat8nd2dnZ2dnZ2SYA6ef22dnZ
+ GXd6VAYCAgvBrFsj2dnZd5XmT/P42dnZG5ufD9LZ2SERnWEi2dnWYXxFTPz429nZ3/6mIdnZ2dkglFYi
+ 2dnWXn04S/ye2dnZHage2dnb29nZH6AW2dnYuu41s6lQ2dnZFRPZ2dvk4tnZ2RwU2dnXZJhF6pFf2dnZ
+ IdnZ2eH7+d7Z2dkh2dnWXpXmAD1V2dnZ2dnZGqv70cx/2dnZ2dnWUj8AADoX2dnZ2dklYGf30MrH3NnZ
+ 2dnZGC0AAOXZ2dnZ2SRfUcbRxcq+sNPZ2dnZ2QAAAABGfnZa46piaPmAVqLCj4Khoa3gOQAAAAAASXFX
+ baRSUbloYV5ro4iIw/QrAAAAAAAAAEmXdZxsostpe3t7ar3Q7ysAAAAAAAAAAABLma79pXRhe3thUq5N
+ MgAAAAAAAAAAAAAAADxOlnFvb3KSRDIAAAAAAAAAAAAAAAAAAAAA6E5LS03oAAAAAAAAAAAA/8P/AP4A
+ fwD4AB8A8AAPAOAABwDAAAMAwAADAIAAAQCAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAABAIAA
+ AQCAAAMAwAADAOAABwDwAA8A+AAfAP4AfwD/gf8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAAAAAA
+ AAAAAQAAAAEAAAAAAAAEFQ8ABRQQAA0WEAASFxAAERgVABEZGAAuHx4AAis4AAQsOABEIiQAH10nACFe
+ IQBsViIAHX1UACN5RQA8eE0AP31QAARdbwAEX3MAB1p0ABFdcAAZfWAANWxsACNldwB+e0AAp2pPAKx6
+ SwC4ZV4Au35dALVuZgC6amcAu29qAL1wbwC/dHAAvnV0AMh8ZgDIfmkAwHh0AD2VIgA4miUAP5okADSa
+ NgAykzkAOqAxADmjNABRlR0ARZkoAFqCOgBDnT0AYoA6AHSXOgBAoDIAS6EwAFShMABfpDIAWKA3AGKh
+ LwB2pDQAfqo+ACCHVgA4okEAOqlBADqsRgA6rUgAGoZrAECTTQBvgkwAdJZBAHeQZABgjnoAgYw/AIyq
+ MgCDrD4Akaw/ALurLgDTrjcA8rQmAP67IgD+vi0A/8E2APbAPgD/wjsAg45JAKePSgCKrkAAhalKAJ60
+ SwCerlQAobJDAKS0SQC5t0QArrZXALGRewCWtmEAqqxwALy9eADStEkA7r1OAOu+WgDrv14AyoFqAMqC
+ bgDKh3QAzIt0AMmHfADPjHgAz5V2ANeefwDcp3cA3qV5AO3FTwD2xUkA/spSAM/IcwDpymUA6ctoAPLH
+ aQDrxHEA7dJ7AP7TdAACb44AFWqKABtsigADcY4AAG6SAARukAAAb5QAAnGRAAxzkAARdpQAHnuSACN+
+ kwCGpYwAxYOEAMyMggDTloIA2qKCAMC1kQDNwoQA1MmSAOTHggDqw5UA9tuZAOLUogAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///wAAAAAAAAAiHx8hAAAAAAAAAAAAABpTjWRkdm0cAAAAAAAAh2xYPTlwUE9NYmuG
+ AAAAAIl1cyw/N29ST05LGQAAAAcGBQUBC0BVDQQEAwIKAAB9fX19fUE3XEZ9fX19egBmkH19DyoMCAhU
+ VhZ9gDEiJY+Af4WKFH19FTMOfYAoHmZefX0RGH2Eg30XEX2BWiBqJ319FICCjIuBfRR9gC8mADB9gH+A
+ QnJ4X319fX0yAAB9fX9/PDZ3dHFFfX19ewAAAEMrYC46VzVbUUxhXQAAAACIRy47WUlAP0hxbmkAAAAA
+ AAAbjkooLDREJQAAAAAAAAAAAABqHR1nAAAAAAAA/D8AAPAPAADAAwAAwAMAAIABAACAAQAAAAAAAAAA
+ AAAAAAAAAAAAAIABAACAAQAAwAMAAMADAADwDwAA/D8AACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChMSsCoDErHKAwK0ifLytqny8rgZ4uK4yeLiuMnS0qgZ0t
+ KmqdLCpInCwqHJwrKgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACiNCsIojMqT6EyKp+hMiveoDEq/aAxKv6gMCv/ny8q/p4v
+ Kv6eLiv/ni4q/p0tKv6dLCr/nCwp/ZwrKd6cKyqfmyopT5sqKggAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApDYrHaM2K42jNCvoozQr/qIzKv6hMiv/pjw1/rVf
+ Wf7Cenb/youG/s6Tjv7Nk47/yYqG/sB4dv6zW1n/ojc1/pwsKf6cKyr/nCsp/pwqKuibKimNmykpHQAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKU4KxGlNyuQpDYr96Y7MP+wUkn/wHZv/9Sh
+ mv/t0cP//vHV///twv//6LD//eOk//3gnf/84Jz//eKh//7nrf//7L///vDS/+zQwf/OlJD/q0xK/5ws
+ Kv+cKir/myoq95sqKpCbKioRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApjkrUKY4K+WmOi7+slRK/sGM
+ fP6LoVz/TpMc/s3Ulv742pT/7sdu/uW6Wf7fsUz/2qtE/tioP/7Ypz7/2qk//t6uRf7ktk//7MJg/vbR
+ ef7+4pz//ezF/ubGuf+5aGf+nCwr/psqKv+aKSnlmikpUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKc6KwSnOiyRpjkr/aY5
+ LP+8amD+rLSD/kSNEP43iwv/NYkW/kJ8Dv6Znkv/2rBX/t6qOv7krDH/6a8v/uyxLv7tsSz/6q4p/uWq
+ J/7fpSb/2qIo/tqkLv7frD3/7L9X/vvXgf/+6rj+58i7/q9UU/+bKin+mikp/ZspKpGaKCkEAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqDwsEag7
+ LLmoOyz/qT4v/9ObkP/979T/mbhh/zWFD/81lT7/NZQ9/zWNKf82gAT/iqc5/+3Oaf//xUL//8E4///B
+ Nv//wDP//78w//+/Lf//vir//Lsn//KzJP/nqiL/3aMm/92nMv/rvFD/+9iD//3rxP/Nk4//nS8u/5sq
+ Kv+bKSq5mykqEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AACpPSwRqT0ryKg8K/6vSjv/5sS3/v/quf/21Ib+ra1f/jJ3Bv43n0L/OqpH/jqtSP45ozX/N4sJ/p6y
+ R/7/zl3//sRB/v7CPP7/wjn//sE2/v7AM/7/vy///r4s/v69KP7/vSX/+7ki/u6vIf/hpiX+4aw2/vLH
+ YP/+5aj+47+z/qU+Pv+bKyv+mykqyJsqKxEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAKo+KwSqPiy8qT0r/rBOPv7v1sb//uWr/vDJc//itVb+175u/jmEAv46qT//Oq1I/jqt
+ SP47rkn/OZwp/kGKCP60u1b//tFm/v7GRv7/wz///sI8/v7BOP7/wTX//sAx/v6/Lf7/vin//r0l/v+8
+ Iv/8uSD+7a4g/uKpK//su07+/eOi/tbOtP+0YmH+nS4u/psqKrybKioEAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKs/LJarPyz/sU08/+/Xx//+46f/7cVu/+S2Vf/0wlT//tV4/26f
+ K/83jg//O61I/zuuSf87rkn/Oq1I/zmgMP84iAT/mLBG//zUcv//ylD//8VC///DPv//wjr//8E2///A
+ Mv//vy7//74p//+9Jf//vCH//7sf//e2H//mqyf/6cJr/0uOEf+HpFv/slxb/5wsLP+bKiqWAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq0ArVatAK/2tRDH/6Me5/v7mrv7ux3L/6Lta/vnI
+ Wv/+zFv+/tBm/t7Pev43hwL/OqtE/jqtSP47rkn/Oq1I/jqtSP46pTr/N4oI/mydKP7s0XP//spR/v7G
+ RP7/xED//sI7/v7BN/7/wDL//r8u/v++Kf/+vCX+/rsh/v+7Hf/8uR7+67tN/lWJGP83hgH+mqVt/qtN
+ TP+bKir9mysrVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACINCIVrEEs56xBLP/Xo5b//+u9//PO
+ fP/rvl///Mtf///OYf//zmP//9Bn//zbjv8+iQb/OqY6/zuuSf87rkn/O65J/zuuSf87rkn/OqpD/zeP
+ Ef9zoS3//tR0///IS///x0X//8RB///CPP//wTf//8Ay//+/Lf//vSj//7wk//+7IP//ux7/+8xW/0GB
+ CP82jR3/PYoI/6+be/+jPDz/mikp54YkJBUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABeJBiXNhUO/iUO
+ Cv41My//Ni8h/jIpFv40KhT/NiwV/jYsFf82LBb+Ni0Z/jMuH/4MHQD/DCML/hEyFf4gXyj/NqFD/jqt
+ SP47rkn/Oq1I/jqpQf43iQX/xcNl/v7OXv7+x0v/zJ84/mxTG/4/MA7/NikL/jYoCv82KAn+NigI/jYo
+ B/82KAb+NisS/g4dAf8LHwr+Cx0C/hkkEf8qFRT+PBAQ/ockJJcAAAAAAAAAAAAAAAAAAAAAAAAAAIEz
+ IyJBGRD5AAAA/gAAAP4AAAD/AAAA/gAAAP4AAAD/AAAA/gAAAP8AAAD+AAAA/gAAAP4AAAD/AAAA/gAA
+ AP4AAAD/ETMV/jinRv47rkn/Oq1I/jqtSP45miX/Ypoi/v3We/7JoEH/GBIH/gAAAP4AAAD/AAAA/gAA
+ AP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/pEnJ/mQKCgiAAAAAAAA
+ AAAAAAAAAAAAAKFDLpU/IRv/ABoi/gAeKP4AHij/AB4o/gAeKP4AHij/AB4o/gAeKP8AHij+AB4o/gAe
+ KP4AHij/AB0n/gAWHf4ABQb/CBkK/jejRP47rkn/Oq1I/jqtSP46qkH/N4cC/tXLcv6vjkL/BgUC/gAH
+ Cv4AGCD/AB0n/gAeKP8AHij+AB4o/gAeKP8AHij+AB4o/gAeKP8AHij+AB4o/gAeKP8AHSf+ABYd/owv
+ Mf+YLCyVAAAAAAAAAAAAAAAArEYuD69GLfAFa47/AG6T/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBv
+ lP8Ab5T/AG+U/wBvlP8Ab5T/AG6T/wBtkv8AZIT/F3JZ/zmrSf87rkn/OqxG/zmiNP84lBn/N4cC/77C
+ Zv/pw2P/MGFe/wBniv8AbpL/AG6T/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBv
+ lP8AbpP/AG2S/z1WbP+bKyrwmysqEAAAAAAAAAAAsEYsXLBGLP4Ab5T/AG6T/gBuk/4Ab5T/AG6T/gBu
+ k/4Ab5T/AG6T/gBvlP8AbpP+AG6T/gBuk/4Ab5T/AG6T/gBuk/4Ab5T/B3eJ/jepTf44mSL/N4kF/kWN
+ Df6Mrkn/vcNs/vvYhv7RvWz/DnSQ/gBuk/4Ab5T/AG6T/gBvlP8AbpP+AG6T/gBvlP8AbpP+AG6T/gBv
+ lP8AbpP+AG6T/gBvlP8AbpP+AG6T/j9gd/+cLCv+nCsqXAAAAAAAAAAAsEcsqrBHLP4Eb5L/AG+U/gBu
+ k/4Ab5T/AG6T/gBuk/4Ab5T/AG6T/gBvlP8AbpP+AG6T/gBuk/4Ab5T/AG6T/gBvk/4Ec47/IZNp/jij
+ P/4yeQD/qLFp/t3HjP7kxH7/5MBv/ui/ZP7wyGb/c5l8/glykf4Ab5P/AG6T/gBvlP8AbpP+AG6T/gBv
+ lP8AbpP+AG6T/gBvlP8AbpP+AG6T/gBvlP8AbpP+AG6T/kVsgv+hNjT+nCwqqgAAAACxSC0FsUgt6bFH
+ Lf/a0sn/vcSf/5+ug/8GcZL/AG+U/wBvlP8Ab5T/AG+U/wBvlP8HaYj/K3tT/yGGTP8nmGL/KZtf/y6g
+ WP82qU7/OKE2/xg/Bv8DBgD/CQgG/wkIBf8JCAT/CQgE/xMPCP+zkkn//c1i/+fDYP/Btmn/m7B8/yV+
+ OP8ijFj/Em5h/wBpi/8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wZ2i/8omF//Kogz/4KlZv+oRUL/nCwq6Zws
+ KgWxSC0osUgs/rlZQP7+9N///N2X/ubKfP4JcpH/AG6T/gBuk/4Ab5T/AG6T/gBvlP8JY33+Pn4f/jiX
+ H/46rUf/OqtD/jqnPv44mSX/JFkC/gIJBf4ADxP/AA8U/gAPFP4ADxT/AA8U/gAOE/4nIxT/27JW/v7N
+ Xf7/03H/h6o8/jiQE/86rUj+H24//gBlhv8AbpP+AG6T/gBvlP8AbpP+AG6T/gl5h/86rEn+OJsp/mOg
+ N/+2Y2D+nSwq/pwsKiiySS1Wskks/sd6Zv7+8ND/+9qP/ufLfP4JcpH/AG6T/gBuk/4Ab5T/AG6T/gBv
+ lP8DYHb+LHQM/jeJBv43iAP/N4cB/jaGAP47dg7/ChQJ/gBEWv4AbJD/AGyQ/gBskP4AbJD/AGyQ/gBr
+ jv4AOUz/UkQj/vLEXf721oH/QosI/jmjNf86rUj+H24//gBlhv8AbpP+AG6T/gBvlP8AbpP+AG6T/gl5
+ h/86rUn+OaM3/j6KCP/Fh4P+ni8s/p0tKlazSi15s0ot/9KUgv/+7MT//NmK/+jMff8JcpL/AG+U/wBv
+ lP8Ab5T/AG+U/wBvlP8DYHb/V4s5/8DMjP/W16L/3dqo/+vatv9BPjb/ADdJ/wBskP8Ab5T/AG+U/wBv
+ lP8Ab5T/AG+U/wBvlP8Aao3/Ay47/4hvN//u04D/OYcC/zqkOP86rUj/H24//wBlhv8Ab5T/AG+U/wBv
+ lP8Ab5T/AG+U/wl5iP86rUn/OqpD/zeGAf/Alof/oDEv/50tKnmzSi2Qs0os/tmkk/7+6r3//dmJ/ujM
+ fv4JcpL/AG6T/gBuk/4Ab5T/AG6T/gBvlP8IYnz+v7+f/v3kt/7+5Lb/+N+y/ndrVf4CKzn/AGqO/gBu
+ k/4Ab5T/AG6T/gBuk/4Ab5T/AG6T/gBuk/4Ab5P/AGWH/g8qLv68n17/i6tA/jiQE/86rUj+H24//gBl
+ hv8AbpP+AG6T/gBvlP8AbpP+AG6T/gl5h/86rUn+Oq1H/jeIA/+6nYX+oDQx/p4tKpCzSy2cs0ss/t2t
+ nf7+6bn//dqL/ujRjv4JcpP/AG6T/gBuk/4Ab5T/AG6T/gBvlP8NZYD+y8Kk/v3mvP7947f/q5l7/gol
+ Lf4AZYf/AG6T/gBuk/4Ab5T/AG6T/gBuk/4Ab5T/AG6T/gBuk/4Ab5T/AG6T/gBggP4uOCz/wrZn/kOM
+ Cv84lRv+H208/gBlhv8AbpP+AG6T/gBvlP8AbpP+AG6T/ghzff83jA3+OJUd/jeHAv+4oYf+oTUx/p4u
+ K5u0TC2dtEst/92unf/+6rz/+uGh/4yvXP8EcI//AG+U/wBvlP8Ab5T/AG+U/wBvlP8NZYH/fZ9h/8TP
+ lP/Ww6T/IDAx/wBffv8AbpP/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBv
+ lP8AVXH/Wlc5/9rHb/9ZlRr/HV4i/wBlhv8Ab5T/AG+U/wBvlP8Ab5T/AG+U/yB7if+4t0X/iak2/2uh
+ M//PrJ//oDMu/54uK520TC2StEwt/tqmlf787sv/ha1K/jKEDP4Cb43/AG6T/gBuk/4Ab5T/AG6T/gBv
+ lP8FYXn+LXUN/meaN/5HTkn/AFZz/gBuk/4Ab5T/AG6T/gBuk/4Ab5T/AG+T/jiHk/4rgJL/AG6T/gBu
+ k/4Ab5T/AG6T/gBuk/4AbpP/A01k/pF8QP/CwV/+H1oa/gBlhv8AbpP+AG6T/gBvlP8AbpP+AG6T/ih9
+ h//3y1X++9Vy/v7ptv/UoJv+nzAr/p4vKpK1TS18tU0u/tiikv6pxoH/N4YA/jKEDP4Cb43/AG6T/gBu
+ k/4Ab5T/AG6T/gBvlP8DYHf+K3kY/iNLEP4CTGT/AG6T/gBuk/4Ab5T/AG6T/gBuk/4Ab5P/LIGU/trL
+ k/7Jw43/HHqS/gBuk/4Ab5T/AG6T/gBuk/4Ab5T/AG2R/hJKVv+cmlD+KV8h/gBlhv8AbpP+AG6T/gBv
+ lP8AbpP+AG6T/id+jf9nmR/+Ypoh/luZI//Snpr+oDIs/p8vKn21TS1btk8w/9Scif84hgH/N4gE/zKF
+ D/8Cb47/AG+U/wBvlP8Ab5T/AG+U/wBvlP8DYnr/HWIz/wFDU/8AbpL/AG+U/wBvlP8Ab5T/AG+U/wBv
+ lP8YeZT/xsSW//7akf/92Ir/r7aI/w50kv8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBrj/8LRz7/GE4c/wBl
+ hv8Ab5T/AG+U/wBvlP8Ab5T/AG+U/w10f/82hwT/OJAS/zmHA//JjYj/oTIs/6AwK1u1Ti4utk8v/s+J
+ dP48iQb/OZwp/jWjRv4CcJD/AG6T/gBuk/4Ab5T/AG6T/gBvlP8AXHn+AkFP/gBskP4Ab5T/AG6T/gBu
+ k/4Ab5T/AG6T/gtzk/6quJf//NqU/v3Zjv7+14f//NWA/o6nhP4EcJL/AG6T/gBuk/4Ab5T/AG6T/gBv
+ lP8AZ4r+AztD/gBlh/8AbpP+AG6T/gBvlP8AbpP+AG6T/ghzfv85ozf+OZ4s/lycLv+7bGf+oTIr/qAx
+ Ky62Ti4Itk8u7cNuU/5snDv/OJkj/jWoT/4CcJD/AG6T/gBuk/4Ab5T/AG6T/gBvlP8Aa4/+AGyQ/gBu
+ k/4Ab5T/AG6T/gBuk/4Ab5T/BXGU/oysmv772pb//dqQ/v3Yiv7+14T//dV9/vfQdv5rloH/AW6T/gBu
+ k/4Ab5T/AG6T/gBvlP8AbpP+AGqN/gBtkf8AbpP+AG6T/gBvlP8AbpP+AG6T/gl5h/86rUn+OJMX/oSp
+ W/+uTkf+oTIr7aEyKwgAAAAAtk8us71fQf+Wm1n/N4wM/zWoTv8CcJD/AG+U/wBvlP8Ab5T/AG+U/wBv
+ lP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBvlP8AbpL/LoNr/+3erP/94af//tuR//7Xhv/+1oD//tR5//7S
+ cv/vy23/R4aB/wBuk/8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wl5
+ h/86q0X/N4cD/6ugd/+nPjb/ojMrswAAAAAAAAAAtk8uZrhTM/7BkXD/OogE/jWfP/4CcJD/AG6T/gBu
+ k/4Ab5T/AG6T/gBvlP8AbpP+AG6T/gBuk/4Ab5T/AG6T/gBuk/4Qc2X/NYUK/j6JB/5zpDj/79yb/v3X
+ hf7+1Hv//dN1/v3Rbv7+z2f/3cBl/iZ3g/4AbpP/AG6T/gBvlP8AbpP+AG6T/gBvlP8AbpP+AG6T/gBv
+ lP8AbpP+AG6T/ghzff83jA7+S5IZ/sOEe/+jNi3+ojQrZgAAAAAAAAAAtlAvFrZQLvWtZE3/OFws/xNN
+ LP8AbY//AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wp1gP8znUD/OZwp/zmf
+ Lf83hgH/vMVz//7XhP/+03b//tJw//7Qav//zmP//81c/8KwXv8Pbof/AG+U/wBvlP8Ab5T/AG+U/wBv
+ lP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wZpgv8YSRr/UXBD/6tRSf+iNCv1ojUrFgAAAAAAAAAAAAAAAKtS
+ NKUaYXn/AGyQ/gBuk/4Ab5T/AG6T/gBuk/4Ab5T/AG6T/gBvlP8AbpP+AG6T/gBuk/4Ab5T/BG+H/i+e
+ Vf46rUn/Oqg//jeIBf6HrUf/99yW/v3UeP7+0nD//tBr/v7PZf7/zV7//stY/v7KUv6bm1r/BWyM/gBv
+ lP8AbpP+AG6T/gBvlP8AbpP+AG6T/gBvlP8AbpP+AG6T/gBvlP8AbpP+AGqN/kxVY/+dOC+lAAAAAAAA
+ AAAAAAAAAAAAAGZcWTAAb5T/AG6T/gBuk/4Ab5T/AG6T/gBuk/4Ab5T/AG6T/gBvlP8AbpP+AG6T/gBu
+ k/4Baof/J45R/jqsRv46rEX/N48R/n+oP/793ZT//dR5/v3UeP7+1n7//tR1/v7OYv7/zFn//spT/v7J
+ Tf76xUf/a4FZ/gFsj/8AbpP+AG6T/gBvlP8AbpP+AG6T/gBvlP8AbpP+AG6T/gBvlP8AbpP+AG6T/j1Z
+ bP1yR0owAAAAAAAAAAAAAAAAAAAAAAAAAAABbpLxAG6T/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBv
+ lP8Ab5T/AG+U/wFskP8cbjj/OaM3/zeKCP83iAT/O4gE/+PUiv/+1Hf//tV6/+fUhv+KrEP/sLxe//7V
+ eP//y1X//8lO///ISf//xUP/77o9/z1rX/8AbZL/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBv
+ lP8Ab5T/AG6T/yhgebUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ZHMsdllO8GViYf5Wgn//GndJ/huD
+ YP4cimz/G4Nf/ip/WP95oI7+eZuA/pKlh/5Njxf/N4oI/keODv45hwL/kLBM/v3aiP7+0nD/6NSE/k6R
+ FP44kRT/OIcD/s/IbP7/0Gb//spS/v7GRP7/wz7//sI5/tqqNP9+j1f+eZFc/nmRWv95kFj+eZBZ/nmS
+ X/95mXP+eaae/mR6iP9dTFT+dEdJ8EhWZSkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApVM3abhT
+ MP7Hel//eZ1F/jeMC/46qkL/OaI0/keNDf/12Yz+/tN0/v7Xgf6zwGj/R40O/j2JBf43jg//VpQa/v3b
+ jv7/1n3/k7BJ/jiPEv46rUj/OJgh/kaNDP6cskj/4sxs/v7NWv7/xkT//sE2/v+/MP/+viv+/r0m/v+8
+ Iv/+vCH+/r4p/v/IRf/+3In+7tK//qtENv+mOSv+mT0zaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAt1EvArhRLq26VjT/x4Vp/2aZNP83jQ3/OqlA/zeOD/9pnSn/x8Zt//vckP9woC//N4gF/zme
+ LP84lRz/O4gD/2ecJ//83ZH/WJUb/ziUGv86rEb/Oq1I/zmfLf84kBP/Q4sJ/4+rPP/Vxl7//8tS//+/
+ Lf//vSf//7wj//+8I///vyv//8hG///agv/14Mj/slNF/6g7LP+nOiytpjksAgAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAALhSLw+4US7Nu1k4/smLb/5omjb/N4wL/jmgMP83jQz+N4cC/mCZ
+ If68w2n/OIcD/jmiNP45mST/QosJ/oysQP7+2of/g6g6/jeHAv46qUH/Oq1I/jqtSP46rUj/OaI0/jiS
+ Fv45iAP/x79U/v/DOP/+vSX+/r0n/v/BMf/+y07+/tyJ/vbhyP+3XE7+qDwr/qg7LM2nOisPAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4UjAYuFEu1rtZN/7KhWv/eZ5G/jeG
+ AP87iAX+N4YA/j+KB/7o1IP/YJkh/jeNDf43iAT/srxZ/v7Sa/7+1Xb/X5gf/jmcKf47rkn/Oq1I/jqt
+ SP47rkn/Oq1I/jqtSP44mCH/eqIr/v/LT//+vy7+/sU8/v/QXv/+4pz+79TA/rVWRv+pPSv+qT0r1qg8
+ LBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuFIwGLhR
+ Ls66VjT/x3le/7qwhf/X4LX/UZMZ/zeGAP/j1IT/daMy/2mdJ//EwmH//NNv///LVf/XyWn/OIcC/zqp
+ Qf87rkn/O65J/zuuSf87rkn/O65J/zuuSf86pDb/OogE/8vEXf//z13//9h6///rvP/fsqP/r0k2/6s/
+ LP+qPizOqT0sGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAALhSLw+4US6tuFIv/rtZOf/NmoD+dJ9D/jqIBP7c15P//t6S/v7Zgf7+1nn/+dR2/v3V
+ dv5xnyr/OJQb/jqtSP47rkn/Oq1I/jqtSP47rkn/Oq1I/jqtSP46rUf/OJMY/n6pP//+6rn+89zG/sZ8
+ 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
+ Gf9fIiT/mCsrUAAAAAAAAAAArkYuugJtkf8AbpP/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBu
+ k/8BZYH/MJ9S/zqoP/85myf/PY8S/6i4Vv+up2b/AWWG/wBuk/8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBv
+ lP8Ab5T/AG6T/ylfev+bKyq6AAAAALBHLROwRy37Am+T/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBv
+ lP8Ab5T/AG+T/wd2iv8wn1D/SIkW/6ayYP/lyoL/7shx/7+2bv8Udo//AG+T/wBvlP8Ab5T/AG+U/wBv
+ lP8Ab5T/AG+U/wBvlP8Ab5P/LWuG/54wL/ucKyoTsUgtU7JJLv/h28T/vbyG/wVwkv8Ab5T/AG+U/wBv
+ lP8eb3v/KIY0/y6gWf8xpFT/OKVA/xxJC/8DBAH/BgUD/wYFA/8KCAT/sZBH//PJX//RwXP/Qow2/yiS
+ VP8DYXj/AG+U/wBvlP8Ab5T/BHSN/y6dUv9imkT/pkE+/5wsKlOySS2HvmVN//7rwf/tz3//BnGS/wBv
+ lP8Ab5T/AG+U/w5iWP83jAz/OJMZ/zeQEv8vZgv/AiYt/wBSbf8AU27/AFNu/wBRbP8ZLy7/3rNV/8nD
+ Yf84lh7/N6NF/wRdbv8Ab5T/AG+U/wBvlP8GdYz/OqxJ/0GRGP+2ZGH/nSwqh7NKLanJfmj//uay/+/P
+ fv8GcZL/AG+U/wBvlP8Ab5T/FmZg/8nPkf/k3Kn/28ul/x4yNv8AZon/AG+U/wBvlP8Ab5T/AG+U/wBj
+ hP9FSDH/urpc/ziXH/83o0X/BF1u/wBvlP8Ab5T/AG+U/wZ1jP86rUn/OJIW/7V3a/+dLSqqs0stu86L
+ dv/+5az/79KH/wZxk/8Ab5T/AG+U/wBvlP88eYX//eW6//fesv9JTkX/AGCA/wBvlP8Ab5T/AG+U/wBv
+ lP8Ab5T/AG+U/wBZd/9/dEv/Xpkh/zaYMP8EXW7/AG+U/wBvlP8Ab5T/BnOH/ziZJP83jxH/sn9s/54u
+ K7u0TC28z4x3//3ouP+Mr1X/Am+Q/wBvlP8Ab5T/AG+U/yZucf+TtWL/hH9u/wBWcv8AbpP/AG+U/wBv
+ lP8CcJP/AW+T/wBvlP8Ab5T/AG+U/wdSaf+tm1b/XJEf/wRba/8Ab5T/AG+U/wBvlP8Xd4z/yLtG/6C4
+ Vv/Bgnr/ni8rvLRNLavNhnD/nb1v/zSECP8Bb4//AG+U/wBvlP8Ab5T/DWRb/zVtEv8IUGf/AG6T/wBv
+ lP8Ab5T/AW+U/4mpk/93oJD/AG+T/wBvlP8Ab5T/AG6T/x9XXv+MmkL/BFlo/wBvlP8Ab5T/AG+U/xp5
+ jv+NqDL/mrZU/8J6dv+fLyustU0uisqAaf83iQb/NI0X/wFvkP8Ab5T/AG+U/wBvlP8JXmP/B05V/wBu
+ k/8Ab5T/AG+U/wBvk/9lmpX/+tmS//fViP9Sj4z/AG+U/wBvlP8Ab5T/AG2R/w1OPv8DWGr/AG+U/wBv
+ lP8Ab5T/B3KF/ziTGf8+jA3/umpl/6AxK4q2Ti5YwWhN/1GTIf83qUv/AXCR/wBvlP8Ab5T/AG+U/wBi
+ g/8AbZH/AG+U/wBvlP8AbpP/RY2W//TXlv/+2Y3//taD/+3Nev8ygYr/AG6T/wBvlP8Ab5T/AGuO/wBk
+ hf8Ab5T/AG+U/wBvlP8GdIr/OqpD/2OcNv+rSUL/oTIrWLZPLhi6Vzj9fpNA/zaeOP8BcJH/AG+U/wBv
+ lP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/whxev+Ssmb/69mW//7Yif/+1X3//tJz/9rBbf8WdYz/AG+U/wBv
+ lP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wZ0if84mib/i5VV/6Q5Mf2hMysYAAAAALZQL8GUdE3/IGQk/wBu
+ kf8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBvlP8EcYv/L5E1/ziWHv9Xlh7//tuP//7Tdv/+0Wz//s5i/7iu
+ Y/8Hbo7/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/BG2H/yRgD/+hcFz/ozUrwQAAAAAAAAAAn1M6Wwto
+ hv8AbpP/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AW2O/ymXW/86rEb/PpEU/8bHdP/+1Xz//tFv//7P
+ Zf//zFz//spS/4uWXv8AbZH/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG6T/y9dc/+YOTJbAAAAAAAA
+ AABGYmsDAG6T+QBvlP8Ab5T/AG+U/wBvlP8Ab5T/AG+U/wBukv8ee0f/OZsn/ziQE/+etlX//tV6//TV
+ gf+yvFv/9NFz///LVP//yEv/+8NC/1Z7X/8AbpP/AG+U/wBvlP8Ab5T/AG+U/wBvlP8Ab5T/H2N/3WZL
+ UgMAAAAAAAAAAAAAAABYXmBMg1tO/meFav8khED/JpZg/zKFQf+lsof/sLOB/1eWIP9Ciwr/PYkG/+fS
+ gP/+1n3/Zp0o/ziWHv+Cpzb//dJt///ITP//wjz/7rc0/6ifSf+mn0j/pp9G/6aiT/+msoL/ioiK/3lF
+ Rf5gTlZKAAAAAAAAAAAAAAAAAAAAAAAAAAC3US+UwmtN/3CVOP85nCj/OJQb/6i4Vf/114T/daM0/zqT
+ GP84kBP/fqY3/9vNd/83jxH/Oq1H/zmbJ/9DkBL/pbNE/+zIV///wTP//70n//+8I///vy3//9Fj/+zJ
+ q/+rQjP/pjoslAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALhRLge4Ui+6wnFS/3OXO/84lBr/N4kG/0mO
+ D/+gtVH/OJYe/zqQE/+jtEz/6NF4/zmLCv86rEX/O65J/zqsRv85nSv/TJIV//rIS///vSf//8I2///U
+ bv/syqv/r0s7/6g8LLqnOiwHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALhRLgu4Ui+7wWpM/5mc
+ XP+KtFz/PIgE/8zJcv9Ukxf/qrZN///PYP+xuE7/OZwo/zuuSf87rkn/O65J/zuuSf84mCL/s7dG///M
+ VP//35P/37CZ/65GNP+qPiy7qTwsCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALhR
+ Lge4US6UuVUz/rqLZf90nUH/7+Gn///cjP/dy23/ycJa/1GUGP86q0T/O65J/zuuSf87rkn/Oq1H/zmg
+ L/9fmib/8te3/8Z6aP+sQSz+q0AslKo+LAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAC3US5KuFEv271dPv/OiHD/6siw/2ifN/83hgD/N48Q/ziZI/84mSP/OJYe/ziQ
+ E/9Ulyb/hZhM/7OGY/+zTjj/rUMs26xBLEoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3UC4Et08uXrZPLsi4UjL+wmtQ/7+BYf+0iWH/q41e/6yM
+ Xv+0iGL/v39j/71kTf+0Tzb+sEYtyK9FLV6uQy0EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ 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
+ AAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcSUeE58y
+ Km2jNzGxrU1I06xLSNOgMjCxmiopbm8eHhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApDgrbaJi
+ RfGDjkn/5MeC/+u/Xv/rvlr/68Rx/9ynd/+0XVXxmikpbQAAAAAAAAAAAAAAAAAAAAAAAAAAqj8umNee
+ f/+erlT/OKJB/2KhL//2xUn//8E2//29LP/ytCb/7r1O/8+Vdv+eMDGYAAAAAAAAAAAAAAAApT4qb9qi
+ gv/yx2n/6cpl/zqgMf86rEb/X6Qy/+3FT///wjv//78u//67Iv+7qy7/fntA/5krK28AAAAAbSsdFCMU
+ EvIRGRj/ERgU/xEZFv8EFQ//H10n/zqtSP+KrkD/bFYi/xMXEP8SFxD/DRYQ/wUUEP86FxnydCAgFK1F
+ LHIBbpP/AG+U/wBvlP8Ab5T/AG6T/xqGa/9YoDf/rrZX/2COev8AbpP/AG+U/wBvlP8Ab5T/FWqK/5ws
+ K3K1UDW24tSi/wJvk/8Ab5T/I3lF/zSaNv8hXiH/Ais4/wQsOP+nj0r/halK/xl9YP8Ab5T/AnKQ/0Od
+ Pf+lPz22v2dO2Pbbmf8DcJP/AG+U/4aljP/AtZH/B1p0/wBvlP8Ab5T/EV1w/3SXOv8dfVT/AG+U/wNx
+ jv84miX/qFRL2MFrUNmWtmH/AW+R/wBvlP8/fVD/I2V3/wBuk/8jfpP/HnuS/wBvlP81bGz/PHhN/wBv
+ lP8Mc5D/pLRJ/7BWUdm9YUS4PZUi/wBvkv8Ab5T/BF9z/wBuk/8RdpT/1MmS/83ChP8Mc5H/AG6T/wRd
+ b/8Ab5T/A3GO/0WZKP+pRT+4tlEwdVqCOv8Ab5L/AG+U/wBvlP8Bb5H/QJNN/8/Ic//+03T/qqxw/wFu
+ kv8Ab5T/AG+U/wJvjv9igDr/ojUsdWhCNRcDbZD9AG+U/wBvlP8AbpP/IIdW/1ShMP/t0nv/6cto//7K
+ U/93kGT/AG6T/wBvlP8Ab5T/E2eG9nQyLhcAAAAAj1dEd2+CTP8ykzn/vL14/1KWHf92pDT/nrRL/0uh
+ MP+5t0T/9sA+/9OuN//StEn/sZF7/4dCPXcAAAAAAAAAAGYtGQG6WTiggYw//1GVHf9+qj7/obJD/4Os
+ Pv86rUj/OqlB/4yqMv//y1H/3qV5/6pAL6BnJBsBAAAAAAAAAAAAAAAAaC4aAbhSL3epdkX26sOV/5Gs
+ P/8/miT/OaM0/0CgMv90lkH/xnhh9qxALHdpJhsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkT8kGLdQ
+ L3m7YkO8smxG3rFrRt64XUO8sUkveZA4JRgAAAAAAAAAAAAAAAAAAAAA8A8AAOAHAADAAwAAgAEAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAIABAADAAwAA8A8AAA==
+</value>
+ </data>
+ <data name="$this.Text" xml:space="preserve">
+ <value>XML Editor</value>
+ </data>
+ <data name=">>$this.Name" xml:space="preserve">
+ <value>XmlEditorDialog</value>
+ </data>
+ <data name=">>$this.Type" xml:space="preserve">
+ <value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+</root>
\ No newline at end of file
Added: trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorSettings.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorSettings.cs (rev 0)
+++ trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorSettings.cs 2014-04-12 18:06:28 UTC (rev 8036)
@@ -0,0 +1,31 @@
+#region Disclaimer / License
+// Copyright (C) 2014, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+//
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Maestro.Editors.Generic
+{
+ public static class XmlEditorSettings
+ {
+ public static string XsdPath { get; set; }
+ }
+}
Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.Designer.cs 2014-04-12 16:10:43 UTC (rev 8035)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.Designer.cs 2014-04-12 18:06:28 UTC (rev 8036)
@@ -34,7 +34,7 @@
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.lstInstances = new System.Windows.Forms.ListView();
- this.imageList1 = new System.Windows.Forms.ImageList(this.components);
+ this.imgPreviews = new System.Windows.Forms.ImageList(this.components);
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.btnAdd = new System.Windows.Forms.ToolStripDropDownButton();
this.referenceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -45,11 +45,14 @@
this.symPreview = new System.Windows.Forms.PictureBox();
this.btnRefresh = new System.Windows.Forms.Button();
this.btnEditInstanceProperties = new System.Windows.Forms.Button();
+ this.btnEditAsXml = new System.Windows.Forms.Button();
+ ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.groupBox1.SuspendLayout();
this.toolStrip1.SuspendLayout();
this.groupBox2.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.symPreview)).BeginInit();
this.SuspendLayout();
//
// btnClose
@@ -81,19 +84,20 @@
// lstInstances
//
resources.ApplyResources(this.lstInstances, "lstInstances");
- this.lstInstances.LargeImageList = this.imageList1;
+ this.lstInstances.LargeImageList = this.imgPreviews;
+ this.lstInstances.MultiSelect = false;
this.lstInstances.Name = "lstInstances";
- this.lstInstances.SmallImageList = this.imageList1;
+ this.lstInstances.ShowGroups = false;
+ this.lstInstances.SmallImageList = this.imgPreviews;
this.lstInstances.UseCompatibleStateImageBehavior = false;
this.lstInstances.View = System.Windows.Forms.View.List;
this.lstInstances.SelectedIndexChanged += new System.EventHandler(this.lstInstances_SelectedIndexChanged);
//
- // imageList1
+ // imgPreviews
//
- this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
- this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
- this.imageList1.Images.SetKeyName(0, "arrow.png");
- this.imageList1.Images.SetKeyName(1, "marker.png");
+ this.imgPreviews.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
+ resources.ApplyResources(this.imgPreviews, "imgPreviews");
+ this.imgPreviews.TransparentColor = System.Drawing.Color.Transparent;
//
// toolStrip1
//
@@ -169,11 +173,19 @@
this.btnEditInstanceProperties.UseVisualStyleBackColor = true;
this.btnEditInstanceProperties.Click += new System.EventHandler(this.btnEditInstanceProperties_Click);
//
+ // btnEditAsXml
+ //
+ resources.ApplyResources(this.btnEditAsXml, "btnEditAsXml");
+ this.btnEditAsXml.Name = "btnEditAsXml";
+ this.btnEditAsXml.UseVisualStyleBackColor = true;
+ this.btnEditAsXml.Click += new System.EventHandler(this.btnEditAsXml_Click);
+ //
// SymbolInstancesDialog
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
resources.ApplyResources(this, "$this");
this.ControlBox = false;
+ this.Controls.Add(this.btnEditAsXml);
this.Controls.Add(this.btnEditInstanceProperties);
this.Controls.Add(this.btnRefresh);
this.Controls.Add(this.splitContainer1);
@@ -204,10 +216,11 @@
private System.Windows.Forms.ToolStripMenuItem inlineSimpleSymbolToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem inlineCompoundSymbolToolStripMenuItem;
private System.Windows.Forms.ToolStripButton btnDelete;
- private System.Windows.Forms.ImageList imageList1;
+ private System.Windows.Forms.ImageList imgPreviews;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.PictureBox symPreview;
private System.Windows.Forms.Button btnRefresh;
private System.Windows.Forms.Button btnEditInstanceProperties;
+ private System.Windows.Forms.Button btnEditAsXml;
}
}
\ No newline at end of file
Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.cs 2014-04-12 16:10:43 UTC (rev 8035)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.cs 2014-04-12 18:06:28 UTC (rev 8036)
@@ -34,6 +34,8 @@
using OSGeo.MapGuide.ObjectModels;
using OSGeo.MapGuide.MaestroAPI.Services;
using Maestro.Shared.UI;
+using Maestro.Editors.Preview;
+using System.IO;
namespace Maestro.Editors.LayerDefinition.Vector.Scales
{
@@ -113,10 +115,72 @@
this.Close();
}
+ private void RenderPreview(ISymbolInstance symInst, ListViewItem item)
+ {
+ string previewKey = null;
+ if (!string.IsNullOrEmpty(item.ImageKey))
+ previewKey = item.ImageKey;
+ else
+ previewKey = Guid.NewGuid().ToString();
+
+ if (imgPreviews.Images.ContainsKey(previewKey))
+ {
+ Image img = imgPreviews.Images[previewKey];
+ imgPreviews.Images.RemoveByKey(previewKey);
+ img.Dispose();
+ }
+
+ var conn = _edSvc.GetEditedResource().CurrentConnection;
+ ISymbolDefinitionBase previewSymbol = null;
+ string resId = "Session:" + conn.SessionID + "//" + Guid.NewGuid().ToString() + ".SymbolDefinition";
+ switch (symInst.Reference.Type)
+ {
+ case SymbolInstanceType.Inline:
+ previewSymbol = (ISymbolDefinitionBase)((ISymbolInstanceReferenceInline)symInst.Reference).SymbolDefinition.Clone();
+ //Inline symbol definitions will have schema and version stripped. We need to add them back
+ previewSymbol.SetSchemaAttributes();
+ previewSymbol.ResourceID = resId;
+ using (var stream = ApplyOverrides(previewSymbol, symInst.ParameterOverrides))
+ {
+ conn.ResourceService.SetResourceXmlData(resId, stream);
+ }
+ previewSymbol = (ISymbolDefinitionBase)conn.ResourceService.GetResource(resId);
+ break;
+ case SymbolInstanceType.Reference:
+ previewSymbol = (ISymbolDefinitionBase)conn.ResourceService.GetResource(((ISymbolInstanceReferenceLibrary)symInst.Reference).ResourceId);
+ previewSymbol = (ISymbolDefinitionBase)previewSymbol.Clone();
+ previewSymbol.ResourceID = resId;
+ using (var stream = ApplyOverrides(previewSymbol, symInst.ParameterOverrides))
+ {
+ conn.ResourceService.SetResourceXmlData(resId, stream);
+ }
+ previewSymbol = (ISymbolDefinitionBase)conn.ResourceService.GetResource(resId);
+ break;
+ }
+ var res = DefaultResourcePreviewer.GenerateSymbolDefinitionPreview(conn, previewSymbol, imgPreviews.ImageSize.Width, imgPreviews.ImageSize.Height);
+ imgPreviews.Images.Add(previewKey, res.ImagePreview);
+ item.ImageKey = previewKey;
+ }
+
+ private static Stream ApplyOverrides(ISymbolDefinitionBase previewSymbol, IParameterOverrideCollection parameterOverrideCollection)
+ {
+ foreach (var ov in parameterOverrideCollection.Override)
+ {
+ foreach (var pdef in previewSymbol.GetParameters())
+ {
+ if (pdef.Name == ov.ParameterIdentifier)
+ {
+ pdef.DefaultValue = ov.ParameterValue;
+ break;
+ }
+ }
+ }
+ return ResourceTypeRegistry.Serialize(previewSymbol);
+ }
+
private void AddInstance(ISymbolInstance symRef, bool add)
{
var li = new ListViewItem();
- li.ImageIndex = (symRef.Reference.Type == SymbolInstanceType.Reference) ? 0 : 1;
li.Tag = symRef;
if (li.ImageIndex == 0)
li.Text = ((ISymbolInstanceReferenceLibrary)symRef.Reference).ResourceId;
@@ -127,6 +191,7 @@
if (add)
_comp.AddSymbolInstance(symRef);
li.Selected = (lstInstances.Items.Count == 1);
+ RenderPreview(symRef, li);
}
private void referenceToolStripMenuItem_Click(object sender, EventArgs e)
@@ -205,9 +270,27 @@
private void btnRefresh_Click(object sender, EventArgs e)
{
- UpdatePreviewImage();
+ RefreshPreviews(true, true);
}
+ private void RefreshPreviews(bool refreshMain, bool refreshComponents)
+ {
+ if (refreshMain)
+ {
+ UpdatePreviewImage();
+ }
+
+ if (refreshComponents)
+ {
+ foreach (ListViewItem li in lstInstances.Items)
+ {
+ var symRef = (ISymbolInstance)li.Tag;
+ RenderPreview(symRef, li);
+ }
+ lstInstances.Invalidate();
+ }
+ }
+
private void btnEditInstanceProperties_Click(object sender, EventArgs e)
{
if (lstInstances.SelectedItems.Count == 1)
@@ -221,5 +304,23 @@
}
}
}
+
+ private void btnEditAsXml_Click(object sender, EventArgs e)
+ {
+ string xml = _comp.ToXml();
+ XmlEditorDialog diag = new XmlEditorDialog();
+ diag.XmlContent = xml;
+ if (diag.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ {
+ _comp.UpdateFromXml(diag.XmlContent);
+ RefreshPreviews(true, false);
+ lstInstances.Clear();
+ imgPreviews.Images.Clear();
+ foreach (var sym in _comp.SymbolInstance)
+ {
+ AddInstance(sym, false);
+ }
+ }
+ }
}
}
Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.resx
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.resx 2014-04-12 16:10:43 UTC (rev 8035)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.resx 2014-04-12 18:06:28 UTC (rev 8036)
@@ -123,7 +123,7 @@
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
- <value>697, 527</value>
+ <value>895, 527</value>
</data>
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
@@ -145,7 +145,7 @@
<value>$this</value>
</data>
<data name=">>btnClose.ZOrder" xml:space="preserve">
- <value>3</value>
+ <value>4</value>
</data>
<data name="splitContainer1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
@@ -156,60 +156,17 @@
<data name="lstInstances.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
- <metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
- <value>17, 17</value>
+ <metadata name="imgPreviews.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>122, 17</value>
</metadata>
- <data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
- <value>
- AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
- LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
- ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2
- CAAAAk1TRnQBSQFMAgEBAgEAAVABAAFQAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
- AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
- AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
- AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
- AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
- AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
- AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
- ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
- AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
- AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
- AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
- AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
- AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
- AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
- AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
- AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
- ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
- Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
- AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
- AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
- AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
- ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
- Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
- AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
- AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
- AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
- AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
- AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
- AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/xQAAv8B9AEHAW8BBwHz
- Av8lAA7/BAAD/wFvARcBbwP/JQAD/wH0A/MBtQG8AfMC9AL/BwABbwHjAW8vAAK0AfELAAFvAeMBby8A
- AbQB2gG0AfEJAAH/AW8B4wFvAf8uAAG0AdkB2gG0AfIIAAEaAW8B4wFvARonAAEJB7QB2gHTAdoBtAHy
- BgAB/wJvAeMCbwH/JgABtAHcA9sB2gWzAdoBtAHyBQABGgFvA+MBbwEaJgABtATbAdUBtAWzAdsBtAQA
- Af8BbwEWA+MBFgFvAf8lAAG0AdwJ2wHcAbQB8gQAARoCFgPjAhYBGiUAAQkHtAHcAdsB3AG0AfIFAAGT
- ARYB4wFuARQBbgHjARYBkywAAboC3AG6AfMGAAEWAZQBFgMTARYBlAEWLAABugHcAboB8wcAApQBFgFu
- ARIBbgEWApQsAAK6AfMIAAEaBxYBGiwAAQkB8wkAAf8BlAEWA5QBFgGUAf84AAH/ARoBlAEWAZQBGgH/
- JQABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEAAQEFAAGAFwAD/wEAAv8B4AEPBAABgAEBAeABDwQA
- AYABAQH8AX8EAAH/AR8B/AF/BAAB/wEPAfgBPwQAAf8BBwH4AT8EAAGAAQMB8AEfBAABgAEBAfABHwQA
- AYABAQHgAQ8EAAGAAQEB4AEPBAABgAEDAeABDwQAAf8BBwHgAQ8EAAH/AQ8B4AEPBAAB/wEfAeABDwQA
- Af8BPwHgAQ8EAAL/AfABHwQACw==
-</value>
+ <data name="imgPreviews.ImageSize" type="System.Drawing.Size, System.Drawing">
+ <value>60, 16</value>
</data>
<data name="lstInstances.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 41</value>
</data>
<data name="lstInstances.Size" type="System.Drawing.Size, System.Drawing">
- <value>155, 307</value>
+ <value>243, 307</value>
</data>
<data name="lstInstances.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
@@ -227,7 +184,7 @@
<value>0</value>
</data>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
- <value>3, 16</value>
+ <value>17, 17</value>
</metadata>
<data name="referenceToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>210, 22</value>
@@ -269,7 +226,7 @@
<value>3, 16</value>
</data>
<data name="toolStrip1.Size" type="System.Drawing.Size, System.Drawing">
- <value>155, 25</value>
+ <value>243, 25</value>
</data>
<data name="toolStrip1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@@ -296,7 +253,7 @@
<value>0, 0</value>
</data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
- <value>161, 351</value>
+ <value>249, 351</value>
</data>
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@@ -317,7 +274,7 @@
<value>0</value>
</data>
<data name="symPreview.Location" type="System.Drawing.Point, System.Drawing">
- <value>31, 29</value>
+ <value>76, 29</value>
</data>
<data name="symPreview.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 100</value>
@@ -344,7 +301,7 @@
<value>0, 351</value>
</data>
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
- <value>161, 144</value>
+ <value>249, 144</value>
</data>
<data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
@@ -389,10 +346,10 @@
<value>1</value>
</data>
<data name="splitContainer1.Size" type="System.Drawing.Size, System.Drawing">
- <value>760, 495</value>
+ <value>958, 495</value>
</data>
<data name="splitContainer1.SplitterDistance" type="System.Int32, mscorlib">
- <value>161</value>
+ <value>249</value>
</data>
<data name="splitContainer1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
@@ -407,7 +364,7 @@
<value>$this</value>
</data>
<data name=">>splitContainer1.ZOrder" xml:space="preserve">
- <value>2</value>
+ <value>3</value>
</data>
<data name="btnRefresh.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
@@ -434,7 +391,7 @@
<value>$this</value>
</data>
<data name=">>btnRefresh.ZOrder" xml:space="preserve">
- <value>1</value>
+ <value>2</value>
</data>
<data name="btnEditInstanceProperties.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
@@ -461,24 +418,48 @@
<value>$this</value>
</data>
<data name=">>btnEditInstanceProperties.ZOrder" xml:space="preserve">
+ <value>1</value>
+ </data>
+ <data name="btnEditAsXml.Location" type="System.Drawing.Point, System.Drawing">
+ <value>274, 527</value>
+ </data>
+ <data name="btnEditAsXml.Size" type="System.Drawing.Size, System.Drawing">
+ <value>87, 23</value>
+ </data>
+ <data name="btnEditAsXml.TabIndex" type="System.Int32, mscorlib">
+ <value>4</value>
+ </data>
+ <data name="btnEditAsXml.Text" xml:space="preserve">
+ <value>Edit as XML</value>
+ </data>
+ <data name=">>btnEditAsXml.Name" xml:space="preserve">
+ <value>btnEditAsXml</value>
+ </data>
+ <data name=">>btnEditAsXml.Type" xml:space="preserve">
+ <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>btnEditAsXml.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name=">>btnEditAsXml.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
- <value>784, 562</value>
+ <value>982, 562</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
</data>
<data name="$this.Text" xml:space="preserve">
- <value>Symbol Instances</value>
+ <value>Edit Composite Symbolization</value>
</data>
- <data name=">>imageList1.Name" xml:space="preserve">
- <value>imageList1</value>
+ <data name=">>imgPreviews.Name" xml:space="preserve">
+ <value>imgPreviews</value>
</data>
- <data name=">>imageList1.Type" xml:space="preserve">
+ <data name=">>imgPreviews.Type" xml:space="preserve">
<value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name=">>btnAdd.Name" xml:space="preserve">
Modified: trunk/Tools/Maestro/Maestro.Editors/Maestro.Editors.csproj
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Maestro.Editors.csproj 2014-04-12 16:10:43 UTC (rev 8035)
+++ trunk/Tools/Maestro/Maestro.Editors/Maestro.Editors.csproj 2014-04-12 18:06:28 UTC (rev 8036)
@@ -557,6 +557,13 @@
<Compile Include="Fusion\WidgetSettingsCtrl.Designer.cs">
<DependentUpon>WidgetSettingsCtrl.cs</DependentUpon>
</Compile>
+ <Compile Include="Generic\XmlEditorDialog.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="Generic\XmlEditorDialog.Designer.cs">
+ <DependentUpon>XmlEditorDialog.cs</DependentUpon>
+ </Compile>
+ <Compile Include="Generic\XmlEditorSettings.cs" />
<Compile Include="Generic\XmlEditor\AutoCompletion\QualifiedName.cs" />
<Compile Include="Generic\XmlEditor\AutoCompletion\QualifiedNameCollection.cs" />
<Compile Include="Generic\XmlEditor\AutoCompletion\XmlCompletionData.cs" />
@@ -1537,6 +1544,9 @@
<DependentUpon>XmlEditorCtrl.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
+ <EmbeddedResource Include="Generic\XmlEditorDialog.resx">
+ <DependentUpon>XmlEditorDialog.cs</DependentUpon>
+ </EmbeddedResource>
<EmbeddedResource Include="Generic\XmlEditor\FindAndReplaceForm.resx">
<DependentUpon>FindAndReplaceForm.cs</DependentUpon>
</EmbeddedResource>
Modified: trunk/Tools/Maestro/Maestro.Editors/Preview/DefaultResourcePreviewer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Preview/DefaultResourcePreviewer.cs 2014-04-12 16:10:43 UTC (rev 8035)
+++ trunk/Tools/Maestro/Maestro.Editors/Preview/DefaultResourcePreviewer.cs 2014-04-12 18:06:28 UTC (rev 8036)
@@ -48,17 +48,17 @@
_launcher = launcher;
}
- abstract class PreviewResult
+ internal abstract class PreviewResult
{
}
- class UrlPreviewResult : PreviewResult
+ internal class UrlPreviewResult : PreviewResult
{
public string Url { get; set; }
}
- class ImagePreviewResult : PreviewResult
+ internal class ImagePreviewResult : PreviewResult
{
public Image ImagePreview { get; set; }
}
@@ -95,41 +95,8 @@
var previewCopy = edSvc.ResourceService.GetResource(resId);
if (previewCopy.ResourceType == ResourceTypes.SymbolDefinition && conn.SiteVersion >= new Version(2, 0))
- {
- //For Symbol Definition previews, we make a placeholder Layer Definition with the
- ILayerDefinition layerDef = ObjectFactory.CreateDefaultLayer(conn, LayerType.Vector);
- IVectorLayerDefinition2 vl = layerDef.SubLayer as IVectorLayerDefinition2;
- if (vl != null)
- {
- //HACK-ish: We are flubbing a completely invalid Layer Definition under normal circumstances,
- //but one that has the minimum required content model to generate an appropriate GETLEGENDIMAGE preview for
- vl.FeatureName = string.Empty;
- vl.ResourceId = string.Empty;
- vl.Geometry = string.Empty;
- vl.ToolTip = string.Empty;
- var vsr = vl.GetScaleRangeAt(0) as IVectorScaleRange2;
- if (vsr != null)
- {
- vsr.AreaStyle = null;
- vsr.LineStyle = null;
- vsr.PointStyle = null;
- var cs = layerDef.CreateDefaultCompositeStyle();
- var cr = cs.GetRuleAt(0);
- var csym = cr.CompositeSymbolization;
- var si = csym.CreateSymbolReference(previewCopy.ResourceID);
- csym.AddSymbolInstance(si);
- vsr.CompositeStyle = new List<ICompositeTypeStyle>() { cs };
-
- var ldfId = "Session:" + edSvc.SessionID + "//" + res.ResourceType.ToString() + "Preview" + Guid.NewGuid() + ".LayerDefinition"; //NOXLATE
- edSvc.ResourceService.SaveResourceAs(layerDef, ldfId);
-
- var mappingSvc = (IMappingService)conn.GetService((int)ServiceType.Mapping);
- var img = mappingSvc.GetLegendImage(42, ldfId, 0, 4, 100, 100, "PNG"); //NOXLATE
- return new ImagePreviewResult() { ImagePreview = img };
- }
- }
-
- return null;
+ {
+ return GenerateSymbolDefinitionPreview(conn, previewCopy, 100, 100);
}
else
{
@@ -162,6 +129,43 @@
BusyWaitDialog.Run(Strings.PrgPreparingResourcePreview, worker, onComplete);
}
+ internal static ImagePreviewResult GenerateSymbolDefinitionPreview(IServerConnection conn, IResource previewCopy, int width, int height)
+ {
+ //For Symbol Definition previews, we make a placeholder Layer Definition with the
+ ILayerDefinition layerDef = ObjectFactory.CreateDefaultLayer(conn, LayerType.Vector);
+ IVectorLayerDefinition2 vl = layerDef.SubLayer as IVectorLayerDefinition2;
+ if (vl != null)
+ {
+ //HACK-ish: We are flubbing a completely invalid Layer Definition under normal circumstances,
+ //but one that has the minimum required content model to generate an appropriate GETLEGENDIMAGE preview for
+ vl.FeatureName = string.Empty;
+ vl.ResourceId = string.Empty;
+ vl.Geometry = string.Empty;
+ vl.ToolTip = string.Empty;
+ var vsr = vl.GetScaleRangeAt(0) as IVectorScaleRange2;
+ if (vsr != null)
+ {
+ vsr.AreaStyle = null;
+ vsr.LineStyle = null;
+ vsr.PointStyle = null;
+ var cs = layerDef.CreateDefaultCompositeStyle();
+ var cr = cs.GetRuleAt(0);
+ var csym = cr.CompositeSymbolization;
+ var si = csym.CreateSymbolReference(previewCopy.ResourceID);
+ csym.AddSymbolInstance(si);
+ vsr.CompositeStyle = new List<ICompositeTypeStyle>() { cs };
+
+ var ldfId = "Session:" + conn.SessionID + "//SymbolDefinitionPreview" + Guid.NewGuid() + ".LayerDefinition"; //NOXLATE
+ conn.ResourceService.SaveResourceAs(layerDef, ldfId);
+
+ var mappingSvc = (IMappingService)conn.GetService((int)ServiceType.Mapping);
+ var img = mappingSvc.GetLegendImage(42, ldfId, 0, 4, width, height, "PNG"); //NOXLATE
+ return new ImagePreviewResult() { ImagePreview = img };
+ }
+ }
+ return null;
+ }
+
/// <summary>
/// Gets whether the specified resource can be previewed
/// </summary>
Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaces.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaces.cs 2014-04-12 16:10:43 UTC (rev 8035)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaces.cs 2014-04-12 18:06:28 UTC (rev 8036)
@@ -1884,6 +1884,10 @@
/// <param name="compDef"></param>
/// <returns></returns>
ISymbolInstance CreateInlineCompoundSymbol(ICompoundSymbolDefinition compDef);
+
+ string ToXml();
+
+ void UpdateFromXml(string xml);
}
/// <summary>
Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolDefinition.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolDefinition.cs 2014-04-12 16:10:43 UTC (rev 8035)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolDefinition.cs 2014-04-12 18:06:28 UTC (rev 8036)
@@ -44,12 +44,14 @@
{
public abstract void RemoveSchemaAttributes();
+ public abstract void SetSchemaAttributes();
+
#if SYM_DEF_240
- private static readonly Version RES_VERSION = new Version(2, 4, 0);
+ protected static readonly Version RES_VERSION = new Version(2, 4, 0);
#elif SYM_DEF_110
- private static readonly Version RES_VERSION = new Version(1, 1, 0);
+ protected static readonly Version RES_VERSION = new Version(1, 1, 0);
#else
- private static readonly Version RES_VERSION = new Version(1, 0, 0);
+ protected static readonly Version RES_VERSION = new Version(1, 0, 0);
#endif
[XmlIgnore]
@@ -107,10 +109,13 @@
#if SYM_DEF_240
protected string _vschema = "SymbolDefinition-2.4.0.xsd"; //NOXLATE
+ public const string SCHEMA_NAME = "SymbolDefinition-2.4.0.xsd"; //NOXLATE
#elif SYM_DEF_110
protected string _vschema = "SymbolDefinition-1.1.0.xsd"; //NOXLATE
+ public const string SCHEMA_NAME = "SymbolDefinition-1.1.0.xsd"; //NOXLATE
#else
protected string _vschema = "SymbolDefinition-1.0.0.xsd"; //NOXLATE
+ public const string SCHEMA_NAME = "SymbolDefinition-1.0.0.xsd"; //NOXLATE
#endif
[XmlAttribute("noNamespaceSchemaLocation", Namespace = "http://www.w3.org/2001/XMLSchema-instance")] //NOXLATE
@@ -138,6 +143,12 @@
versionField = null;
}
+ public override void SetSchemaAttributes()
+ {
+ _vschema = SCHEMA_NAME;
+ versionField = RES_VERSION.Major + "." + RES_VERSION.Minor + "." + RES_VERSION.Build;
+ }
+
public static SimpleSymbolDefinition CreateDefault()
{
var simpleSym = new SimpleSymbolDefinition()
@@ -705,6 +716,12 @@
}
}
+ public override void SetSchemaAttributes()
+ {
+ _vschema = SCHEMA_NAME;
+ versionField = RES_VERSION.Major + "." + RES_VERSION.Minor + "." + RES_VERSION.Build;
+ }
+
public static CompoundSymbolDefinition CreateDefault()
{
var sym = new CompoundSymbolDefinition()
Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolInterfaces.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolInterfaces.cs 2014-04-12 16:10:43 UTC (rev 8035)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolInterfaces.cs 2014-04-12 18:06:28 UTC (rev 8036)
@@ -240,6 +240,11 @@
/// Purges the schema and version attributes when serializing back to XML
/// </summary>
void RemoveSchemaAttributes();
+
+ /// <summary>
+ /// Sets the schema and version attributes
+ /// </summary>
+ void SetSchemaAttributes();
}
/// <summary>
Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/VectorLayerDefinitionImpl.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/VectorLayerDefinitionImpl.cs 2014-04-12 16:10:43 UTC (rev 8035)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/VectorLayerDefinitionImpl.cs 2014-04-12 18:06:28 UTC (rev 8036)
@@ -2047,6 +2047,21 @@
}
}
+ public string ToXml()
+ {
+ return this.Serialize();
+ }
+
+ public void UpdateFromXml(string xml)
+ {
+ var compsym = CompositeSymbolization.Deserialize(xml);
+ this.SymbolInstance.Clear();
+ foreach (var sym in compsym.SymbolInstance)
+ {
+ this.AddSymbolInstance(sym);
+ }
+ }
+
public void AddSymbolInstance(ISymbolInstance inst)
{
var sym = inst as SymbolInstance;
More information about the mapguide-commits
mailing list