From 426844bdb17a293c7051df480b8e25ac814399fb Mon Sep 17 00:00:00 2001 From: dgis Date: Fri, 8 Nov 2019 23:16:34 +0100 Subject: [PATCH] - Add the type in the diagram with all occurences with a compact layout (from Andreas Eidmann https://github.com/dgis/xsddiagram/pull/14) - Add a new settings windows with the options to show the type in the diagram, to show all the occurences, and to a compact layout. --- MainForm.Designer.cs | 59 ++++-- MainForm.cs | 107 ++++++++--- ReadMe.txt | 4 +- Settings.cs | 122 ++++++++++++ SettingsForm.Designer.cs | 65 +++++++ SettingsForm.cs | 34 ++++ SettingsForm.resx | 197 ++++++++++++++++++++ XSDDiagram.exe | Bin 689152 -> 699904 bytes XSDDiagram2010.csproj | 10 + XSDDiagramConsole.exe | Bin 5120 -> 5120 bytes XSDDiagrams/Rendering/Diagram.cs | 16 +- XSDDiagrams/Rendering/DiagramGdiRenderer.cs | 12 +- XSDDiagrams/Rendering/DiagramItem.cs | 65 +++++-- XSDDiagrams/Rendering/DiagramSvgRenderer.cs | 9 +- XSDDiagrams/Rendering/DiagramTxtRenderer.cs | 2 - app.config | 29 ++- 16 files changed, 646 insertions(+), 85 deletions(-) create mode 100644 Settings.cs create mode 100644 SettingsForm.Designer.cs create mode 100644 SettingsForm.cs create mode 100644 SettingsForm.resx diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs index 58a5009..43abdc9 100644 --- a/MainForm.Designer.cs +++ b/MainForm.Designer.cs @@ -32,6 +32,8 @@ namespace XSDDiagram this.printPreviewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.printToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripSeparator(); this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.windowsExplorerRegistrationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -156,6 +158,8 @@ namespace XSDDiagram this.printPreviewToolStripMenuItem, this.printToolStripMenuItem, this.toolStripMenuItem1, + this.settingsToolStripMenuItem, + this.toolStripMenuItem5, this.exitToolStripMenuItem}); this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); @@ -166,7 +170,7 @@ namespace XSDDiagram this.openToolStripMenuItem.Image = global::XSDDiagram.Properties.Resources.Open; this.openToolStripMenuItem.Name = "openToolStripMenuItem"; this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); - this.openToolStripMenuItem.Size = new System.Drawing.Size(204, 22); + this.openToolStripMenuItem.Size = new System.Drawing.Size(205, 22); this.openToolStripMenuItem.Text = "&Open..."; this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click); // @@ -175,15 +179,15 @@ namespace XSDDiagram this.openURLToolStripMenuItem.Image = global::XSDDiagram.Properties.Resources.Open; this.openURLToolStripMenuItem.Name = "openURLToolStripMenuItem"; this.openURLToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.U))); - this.openURLToolStripMenuItem.Size = new System.Drawing.Size(204, 22); + this.openURLToolStripMenuItem.Size = new System.Drawing.Size(205, 22); this.openURLToolStripMenuItem.Text = "Open &URL..."; this.openURLToolStripMenuItem.Click += new System.EventHandler(this.openURLToolStripMenuItem_Click); // // inferXSDFromXMLToolStripMenuItem // this.inferXSDFromXMLToolStripMenuItem.Name = "inferXSDFromXMLToolStripMenuItem"; - this.inferXSDFromXMLToolStripMenuItem.Size = new System.Drawing.Size(204, 22); - this.inferXSDFromXMLToolStripMenuItem.Text = "Infer XSD from XML..."; + this.inferXSDFromXMLToolStripMenuItem.Size = new System.Drawing.Size(205, 22); + this.inferXSDFromXMLToolStripMenuItem.Text = "Infer XSD from &XML..."; this.inferXSDFromXMLToolStripMenuItem.Click += new System.EventHandler(this.inferXSDFromXMLToolStripMenuItem_Click); // // saveDiagramToolStripMenuItem @@ -191,14 +195,14 @@ namespace XSDDiagram this.saveDiagramToolStripMenuItem.Image = global::XSDDiagram.Properties.Resources.SaveGreen; this.saveDiagramToolStripMenuItem.Name = "saveDiagramToolStripMenuItem"; this.saveDiagramToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E))); - this.saveDiagramToolStripMenuItem.Size = new System.Drawing.Size(204, 22); + this.saveDiagramToolStripMenuItem.Size = new System.Drawing.Size(205, 22); this.saveDiagramToolStripMenuItem.Text = "&Export Diagram..."; this.saveDiagramToolStripMenuItem.Click += new System.EventHandler(this.saveDiagramToolStripMenuItem_Click); // // generateSampleToolStripMenuItem // this.generateSampleToolStripMenuItem.Name = "generateSampleToolStripMenuItem"; - this.generateSampleToolStripMenuItem.Size = new System.Drawing.Size(204, 22); + this.generateSampleToolStripMenuItem.Size = new System.Drawing.Size(205, 22); this.generateSampleToolStripMenuItem.Text = "&Generate Sample..."; this.generateSampleToolStripMenuItem.Visible = false; this.generateSampleToolStripMenuItem.Click += new System.EventHandler(this.generateSampleToolStripMenuItem_Click); @@ -206,32 +210,32 @@ namespace XSDDiagram // validateXMLFileToolStripMenuItem // this.validateXMLFileToolStripMenuItem.Name = "validateXMLFileToolStripMenuItem"; - this.validateXMLFileToolStripMenuItem.Size = new System.Drawing.Size(204, 22); + this.validateXMLFileToolStripMenuItem.Size = new System.Drawing.Size(205, 22); this.validateXMLFileToolStripMenuItem.Text = "&Validate XML File..."; this.validateXMLFileToolStripMenuItem.Click += new System.EventHandler(this.validateXMLFileToolStripMenuItem_Click); // // recentFilesToolStripMenuItem // this.recentFilesToolStripMenuItem.Name = "recentFilesToolStripMenuItem"; - this.recentFilesToolStripMenuItem.Size = new System.Drawing.Size(204, 22); + this.recentFilesToolStripMenuItem.Size = new System.Drawing.Size(205, 22); this.recentFilesToolStripMenuItem.Text = "&Recent Files"; // // closeToolStripMenuItem // this.closeToolStripMenuItem.Name = "closeToolStripMenuItem"; - this.closeToolStripMenuItem.Size = new System.Drawing.Size(204, 22); + this.closeToolStripMenuItem.Size = new System.Drawing.Size(205, 22); this.closeToolStripMenuItem.Text = "&Close"; this.closeToolStripMenuItem.Click += new System.EventHandler(this.closeToolStripMenuItem_Click); // // toolStripMenuItem2 // this.toolStripMenuItem2.Name = "toolStripMenuItem2"; - this.toolStripMenuItem2.Size = new System.Drawing.Size(201, 6); + this.toolStripMenuItem2.Size = new System.Drawing.Size(202, 6); // // pageToolStripMenuItem // this.pageToolStripMenuItem.Name = "pageToolStripMenuItem"; - this.pageToolStripMenuItem.Size = new System.Drawing.Size(204, 22); + this.pageToolStripMenuItem.Size = new System.Drawing.Size(205, 22); this.pageToolStripMenuItem.Text = "Page Set&up..."; this.pageToolStripMenuItem.Click += new System.EventHandler(this.pageToolStripMenuItem_Click); // @@ -239,7 +243,7 @@ namespace XSDDiagram // this.printPreviewToolStripMenuItem.Image = global::XSDDiagram.Properties.Resources.PrintPreview; this.printPreviewToolStripMenuItem.Name = "printPreviewToolStripMenuItem"; - this.printPreviewToolStripMenuItem.Size = new System.Drawing.Size(204, 22); + this.printPreviewToolStripMenuItem.Size = new System.Drawing.Size(205, 22); this.printPreviewToolStripMenuItem.Text = "Print Pre&view..."; this.printPreviewToolStripMenuItem.Click += new System.EventHandler(this.printPreviewToolStripMenuItem_Click); // @@ -248,20 +252,32 @@ namespace XSDDiagram this.printToolStripMenuItem.Image = global::XSDDiagram.Properties.Resources.Print; this.printToolStripMenuItem.Name = "printToolStripMenuItem"; this.printToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.P))); - this.printToolStripMenuItem.Size = new System.Drawing.Size(204, 22); + this.printToolStripMenuItem.Size = new System.Drawing.Size(205, 22); this.printToolStripMenuItem.Text = "&Print..."; this.printToolStripMenuItem.Click += new System.EventHandler(this.printToolStripMenuItem_Click); // // toolStripMenuItem1 // this.toolStripMenuItem1.Name = "toolStripMenuItem1"; - this.toolStripMenuItem1.Size = new System.Drawing.Size(201, 6); + this.toolStripMenuItem1.Size = new System.Drawing.Size(202, 6); + // + // settingsToolStripMenuItem + // + this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem"; + this.settingsToolStripMenuItem.Size = new System.Drawing.Size(205, 22); + this.settingsToolStripMenuItem.Text = "Se&ttings..."; + this.settingsToolStripMenuItem.Click += new System.EventHandler(this.settingsToolStripMenuItem_Click); + // + // toolStripMenuItem5 + // + this.toolStripMenuItem5.Name = "toolStripMenuItem5"; + this.toolStripMenuItem5.Size = new System.Drawing.Size(202, 6); // // exitToolStripMenuItem // this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; this.exitToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4))); - this.exitToolStripMenuItem.Size = new System.Drawing.Size(204, 22); + this.exitToolStripMenuItem.Size = new System.Drawing.Size(205, 22); this.exitToolStripMenuItem.Text = "E&xit"; this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); // @@ -270,7 +286,7 @@ namespace XSDDiagram this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.windowsExplorerRegistrationToolStripMenuItem}); this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem"; - this.toolsToolStripMenuItem.Size = new System.Drawing.Size(47, 20); + this.toolsToolStripMenuItem.Size = new System.Drawing.Size(46, 20); this.toolsToolStripMenuItem.Text = "&Tools"; // // windowsExplorerRegistrationToolStripMenuItem @@ -280,7 +296,7 @@ namespace XSDDiagram this.unregisterToolStripMenuItem}); this.windowsExplorerRegistrationToolStripMenuItem.Image = global::XSDDiagram.Properties.Resources.Properties; this.windowsExplorerRegistrationToolStripMenuItem.Name = "windowsExplorerRegistrationToolStripMenuItem"; - this.windowsExplorerRegistrationToolStripMenuItem.Size = new System.Drawing.Size(262, 22); + this.windowsExplorerRegistrationToolStripMenuItem.Size = new System.Drawing.Size(264, 22); this.windowsExplorerRegistrationToolStripMenuItem.Text = "&Windows Explorer Contextual Menu"; // // registerToolStripMenuItem @@ -312,7 +328,7 @@ namespace XSDDiagram // this.nextTabToolStripMenuItem.Name = "nextTabToolStripMenuItem"; this.nextTabToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Tab))); - this.nextTabToolStripMenuItem.Size = new System.Drawing.Size(240, 22); + this.nextTabToolStripMenuItem.Size = new System.Drawing.Size(224, 22); this.nextTabToolStripMenuItem.Text = "&Next Tab"; this.nextTabToolStripMenuItem.Click += new System.EventHandler(this.nextTabToolStripMenuItem_Click); // @@ -321,7 +337,7 @@ namespace XSDDiagram this.previousTabToolStripMenuItem.Name = "previousTabToolStripMenuItem"; this.previousTabToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) | System.Windows.Forms.Keys.Tab))); - this.previousTabToolStripMenuItem.Size = new System.Drawing.Size(240, 22); + this.previousTabToolStripMenuItem.Size = new System.Drawing.Size(224, 22); this.previousTabToolStripMenuItem.Text = "&Previous Tab"; this.previousTabToolStripMenuItem.Click += new System.EventHandler(this.previousTabToolStripMenuItem_Click); // @@ -718,6 +734,7 @@ namespace XSDDiagram this.listViewAttributes.Dock = System.Windows.Forms.DockStyle.Fill; this.listViewAttributes.FullRowSelect = true; this.listViewAttributes.GridLines = true; + this.listViewAttributes.HideSelection = false; this.listViewAttributes.LabelEdit = true; this.listViewAttributes.Location = new System.Drawing.Point(3, 3); this.listViewAttributes.MultiSelect = false; @@ -811,6 +828,7 @@ namespace XSDDiagram this.listViewEnumerate.Dock = System.Windows.Forms.DockStyle.Bottom; this.listViewEnumerate.FullRowSelect = true; this.listViewEnumerate.GridLines = true; + this.listViewEnumerate.HideSelection = false; this.listViewEnumerate.Location = new System.Drawing.Point(0, 313); this.listViewEnumerate.Name = "listViewEnumerate"; this.listViewEnumerate.Size = new System.Drawing.Size(214, 91); @@ -1032,6 +1050,7 @@ namespace XSDDiagram this.MainMenuStrip = this.menuStripMain; this.Name = "MainForm"; this.Text = "XSD Diagram"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.MainForm_FormClosed); this.Load += new System.EventHandler(this.MainForm_Load); this.DragDrop += new System.Windows.Forms.DragEventHandler(this.MainForm_DragDrop); this.DragEnter += new System.Windows.Forms.DragEventHandler(this.MainForm_DragEnter); @@ -1156,6 +1175,8 @@ namespace XSDDiagram private System.Windows.Forms.ToolStripButton toolStripButtonSearch; private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; private System.Windows.Forms.ToolStripTextBox toolStripTextBoxSearch; + private System.Windows.Forms.ToolStripMenuItem settingsToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem5; } } diff --git a/MainForm.cs b/MainForm.cs index 5f2094d..e034797 100644 --- a/MainForm.cs +++ b/MainForm.cs @@ -19,29 +19,22 @@ using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; -using System.Data; using System.Drawing; -using System.Drawing.Imaging; using System.IO; using System.Net; -using System.Text; -using System.Text.RegularExpressions; +using System.Security.Principal; using System.Windows.Forms; using System.Xml; -using System.Xml.Serialization; +using System.Xml.Schema; // To generate the XMLSchema.cs file: // > xsd.exe XMLSchema.xsd /classes /l:cs /n:XMLSchema /order using XSDDiagram.Rendering; -using System.Xml.Schema; -using System.Diagnostics; - -using System.Security.Principal; namespace XSDDiagram { - public partial class MainForm : Form + public partial class MainForm : Form { private DiagramPrinter _diagramPrinter; private DiagramGdiRenderer _diagramGdiRenderer; @@ -61,9 +54,15 @@ namespace XSDDiagram private MRUManager mruManager; + private static MainForm mainForm = null; + public static MainForm Form { get { return mainForm; } } + + public MainForm() { - InitializeComponent(); + mainForm = this; + + InitializeComponent(); bool isElevated = false; WindowsIdentity identity = null; @@ -89,7 +88,11 @@ namespace XSDDiagram identity.Dispose(); } this.toolsToolStripMenuItem.Visible = isElevated && !Options.IsRunningOnMono; - this.diagram.ShowDocumentation = this.toolStripButtonShowDocumentation.Checked = Options.ShowDocumentation; + this.diagram.ShowDocumentation = this.toolStripButtonShowDocumentation.Checked = Options.ShowDocumentation | Settings.Default.ShowDocumentation; + this.diagram.AlwaysShowOccurence = Settings.Default.AlwaysShowOccurence; + this.diagram.ShowType = Settings.Default.ShowType; + this.diagram.CompactLayoutDensity = Settings.Default.CompactLayoutDensity; + this.originalTitle = Text; @@ -178,10 +181,15 @@ namespace XSDDiagram this.mruManager = new MRUManager(this.recentFilesToolStripMenuItem, "xsddiagram", this.recentFilesToolStripMenuSubItemFile_Click, this.recentFilesToolStripMenuSubItemClearAll_Click); - this.toolStripComboBoxZoom.SelectedIndex = 8; - this.toolStripComboBoxAlignement.SelectedIndex = 1; + this.toolStripComboBoxZoom.SelectedIndex = Settings.Default.Zoom; // 8; + this.toolStripComboBoxAlignement.SelectedIndex = Settings.Default.Alignement; // 1; - if (!string.IsNullOrEmpty(Options.InputFile)) + this.toolStripButtonTogglePanel.Checked = Settings.Default.DisplayPanel; + this.splitContainerMain.Panel2Collapsed = !this.toolStripButtonTogglePanel.Checked; + + + + if (!string.IsNullOrEmpty(Options.InputFile)) { LoadSchema(Options.InputFile); foreach (var rootElement in Options.RootElements) @@ -317,15 +325,55 @@ namespace XSDDiagram return MessageBox.Show(this, message, title, MessageBoxButtons.YesNo) == DialogResult.Yes; } - private void exitToolStripMenuItem_Click(object sender, EventArgs e) + SettingsForm settingsForm; + private void settingsToolStripMenuItem_Click(object sender, EventArgs e) + { + if (settingsForm == null) { + settingsForm = new SettingsForm(); + settingsForm.FormClosed += SettingsForm_FormClosed; + settingsForm.Show(this); + } + settingsForm.Focus(); + } + + private void SettingsForm_FormClosed(object sender, FormClosedEventArgs e) + { + settingsForm.FormClosed -= SettingsForm_FormClosed; + settingsForm = null; + } + + internal void ChangeSetting(string settingName) + { + switch (settingName) + { + case "AlwaysShowOccurence": + this.diagram.AlwaysShowOccurence = Settings.Default.AlwaysShowOccurence; + UpdateDiagram(); + break; + case "ShowType": + this.diagram.ShowType = Settings.Default.ShowType; + UpdateDiagram(); + break; + case "CompactLayoutDensity": + this.diagram.CompactLayoutDensity = Settings.Default.CompactLayoutDensity; + UpdateDiagram(); + break; + } + } + + private void exitToolStripMenuItem_Click(object sender, EventArgs e) { Close(); } - private void aboutToolStripMenuItem_Click(object sender, EventArgs e) + private void MainForm_FormClosed(object sender, FormClosedEventArgs e) + { + Settings.Default.Save(); + } + + private void aboutToolStripMenuItem_Click(object sender, EventArgs e) { - AboutForm aboutForm = new AboutForm(); - aboutForm.ShowDialog(this); + new AboutForm().ShowDialog(this); } private void toolStripComboBoxSchemaElement_SelectedIndexChanged(object sender, EventArgs e) @@ -884,9 +932,11 @@ namespace XSDDiagram } } catch { } - } - private void toolStripComboBoxZoom_TextChanged(object sender, EventArgs e) + Settings.Default.Zoom = this.toolStripComboBoxZoom.SelectedIndex; + } + + private void toolStripComboBoxZoom_TextChanged(object sender, EventArgs e) { //try //{ @@ -977,9 +1027,11 @@ namespace XSDDiagram private void toolStripButtonTogglePanel_Click(object sender, EventArgs e) { this.splitContainerMain.Panel2Collapsed = !this.toolStripButtonTogglePanel.Checked; - } - private void contextMenuStripDiagram_Opened(object sender, EventArgs e) + Settings.Default.DisplayPanel = this.toolStripButtonTogglePanel.Checked; + } + + private void contextMenuStripDiagram_Opened(object sender, EventArgs e) { this.gotoXSDFileToolStripMenuItem.Enabled = false; this.expandToolStripMenuItem.Enabled = false; @@ -1142,9 +1194,11 @@ namespace XSDDiagram case "Bottom": this.diagram.Alignement = DiagramAlignement.Far; break; } UpdateDiagram(); - } - void diagram_RequestAnyElement(DiagramItem diagramElement, out XMLSchema.element element, out string nameSpace) + Settings.Default.Alignement = this.toolStripComboBoxAlignement.SelectedIndex; + } + + void diagram_RequestAnyElement(DiagramItem diagramElement, out XMLSchema.element element, out string nameSpace) { element = null; nameSpace = ""; @@ -1687,6 +1741,8 @@ namespace XSDDiagram { this.diagram.ShowDocumentation = this.toolStripButtonShowDocumentation.Checked; UpdateDiagram(); + + Settings.Default.ShowDocumentation = this.toolStripButtonShowDocumentation.Checked; } private void toolStripButtonSearch_Click(object sender, EventArgs e) @@ -1720,7 +1776,6 @@ namespace XSDDiagram } } - private void MainForm_KeyUp(object sender, KeyEventArgs e) { if (e.Control && (e.KeyCode == Keys.D0 || e.KeyCode == Keys.NumPad0)) diff --git a/ReadMe.txt b/ReadMe.txt index 1c4feb2..7f17924 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -139,8 +139,10 @@ TODO LIST: CHANGES: -version 1.3 (2019-10-XX) +version 1.3 (2019-11-XX) - Add the fields SEQ,LASTCHILD,XSDTYPE when rendering to a txt or csv file (https://github.com/dgis/xsddiagram/issues/22). +- Add the type in the diagram with all occurences with a compact layout (from Andreas Eidmann https://github.com/dgis/xsddiagram/pull/14) +- Add a new settings windows with the options to show the type in the diagram, to show all the occurences, and to a compact layout. version 1.2 (2018-06-19) - Add infer XSD from XML menu. diff --git a/Settings.cs b/Settings.cs new file mode 100644 index 0000000..1187954 --- /dev/null +++ b/Settings.cs @@ -0,0 +1,122 @@ +using System.ComponentModel; + +namespace XSDDiagram { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [BrowsableAttribute(false)] + [Category("UI"), DisplayName("Display Right Panel"), Description("Display the right panel.")] + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool DisplayPanel + { + get + { + return ((bool)(this["DisplayPanel"])); + } + set + { + this["DisplayPanel"] = value; + } + } + + [BrowsableAttribute(false)] + [Category("Diagram"), DisplayName("Zoom"), Description("The zoom level.")] + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("8")] + public int Zoom + { + get + { + return ((int)(this["Zoom"])); + } + set + { + this["Zoom"] = value; + } + } + + [BrowsableAttribute(false)] + [Category("Diagram"), DisplayName("Alignement"), Description("The item alignement.")] + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("1")] + public int Alignement { + get { + return ((int)(this["Alignement"])); + } + set { + this["Alignement"] = value; + } + } + + [BrowsableAttribute(false)] + [Category("Diagram"), DisplayName("Show Documentation"), Description("Show the documentation under the item.")] + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool ShowDocumentation { + get { + return ((bool)(this["ShowDocumentation"])); + } + set { + this["ShowDocumentation"] = value; + } + } + + [Category("Diagram"), DisplayName("Always Show Occurence"), Description("Always show the occurence of an item even if it is different from 1..1.")] + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool AlwaysShowOccurence { + get { + return ((bool)(this["AlwaysShowOccurence"])); + } + set { + this["AlwaysShowOccurence"] = value; + } + } + + [Category("Diagram"), DisplayName("Show Type"), Description("Show the type of an item if it exist.")] + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool ShowType { + get { + return ((bool)(this["ShowType"])); + } + set { + this["ShowType"] = value; + } + } + + [Category("Diagram"), DisplayName("CompactLayoutDensity"), Description("Display the diagram with a compact density.")] + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool CompactLayoutDensity + { + get + { + return ((bool)(this["CompactLayoutDensity"])); + } + set + { + this["CompactLayoutDensity"] = value; + } + } + } +} diff --git a/SettingsForm.Designer.cs b/SettingsForm.Designer.cs new file mode 100644 index 0000000..900e002 --- /dev/null +++ b/SettingsForm.Designer.cs @@ -0,0 +1,65 @@ +namespace XSDDiagram +{ + partial class SettingsForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SettingsForm)); + this.propertyGrid1 = new System.Windows.Forms.PropertyGrid(); + this.SuspendLayout(); + // + // propertyGrid1 + // + this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill; + this.propertyGrid1.Location = new System.Drawing.Point(0, 0); + this.propertyGrid1.Name = "propertyGrid1"; + this.propertyGrid1.Size = new System.Drawing.Size(517, 438); + this.propertyGrid1.TabIndex = 0; + this.propertyGrid1.ToolbarVisible = false; + this.propertyGrid1.PropertyValueChanged += new System.Windows.Forms.PropertyValueChangedEventHandler(this.propertyGrid1_PropertyValueChanged); + // + // SettingsForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(517, 438); + this.Controls.Add(this.propertyGrid1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "SettingsForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Settings"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.SettingsForm_FormClosed); + this.Load += new System.EventHandler(this.SettingsForm_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.PropertyGrid propertyGrid1; + } +} diff --git a/SettingsForm.cs b/SettingsForm.cs new file mode 100644 index 0000000..fd7b8e2 --- /dev/null +++ b/SettingsForm.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; +using XSDDiagram.Properties; + +namespace XSDDiagram +{ + public partial class SettingsForm : Form + { + public SettingsForm() + { + InitializeComponent(); + } + + private void SettingsForm_Load(object sender, EventArgs e) + { + this.propertyGrid1.SelectedObject = Settings.Default; + } + + private void SettingsForm_FormClosed(object sender, FormClosedEventArgs e) + { + this.propertyGrid1.SelectedObject = null; + } + + private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e) + { + MainForm.Form.ChangeSetting(e.ChangedItem.PropertyDescriptor.Name); + } + } +} diff --git a/SettingsForm.resx b/SettingsForm.resx new file mode 100644 index 0000000..2ef785e --- /dev/null +++ b/SettingsForm.resx @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AO8AAAD/AAAA/wAAAP8AAAD/AAAA7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAA/5T/AP+U/wD/lP8A/5T/AP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAA/wAAAP8AAAD/lP8A/5T/AP+U/wD/lP8A/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAP+U/wD/lP8A/5T/AP+U/wD/AAAA/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAzwAAAP8AAAD/AAAA/wAAAP8AAADPAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADvAAAA/wAAAP8AAAD/AAAA/wAAAO8AAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP//DAD//wwA//8MAP//DAD/AAAA/wAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA7wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA//8MAP//DAD//wwA//8MAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//Pz///z8///8/P///Pz///z8 + //8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wwA//8MAP//DAD//wwA/wAAAP8AAAAAAAAA/wAA + AAAAAADvAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA7wAAAAAAAAD/AAAA/wAAAP/8/P///Pz///z8 + ///8/P///Pz//wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM8AAAD/AAAA/wAAAP8AAAD/AAAAzwAA + AAAAAAD/AAAAAAAAAP+5t7z/ube8/7m3vP+5t7z/ube8/7m3vP8AAAD/AAAAAAAAAP8AAAAAAAAAzwAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAAzwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP8AAAD/AAAA/7m3vP+5t7z/ube8/7m3vP+5t7z/ube8/wAAAP8AAAD/AAAA/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ube8/7m3vP+5t7z/ube8/7m3vP+5t7z/AAAA/wAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAND/QADQ//8A0P//ADRA/wAAAP8AAABAAAAAAAAAAAAA0P+LAND//wDQ + //8AcYv/AAAA/wAAAAAA0P+3AND//wDQ//8ANED/AAAA/wAAAP8AAAAgAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0P9AAND//wDQ//8ANED/AAAA/wAAAEAAAAAAAND/YwDQ + //8A0P//AND//wAAAAAAAAAAAAAAAADQ/yAA0P//AND//wDQ//8A0P8gAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ/0AA0P//AND//wA0QP8AAAD/AAAAQAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAND/QADQ//8A0P//AND/QAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA////////////4f///8D///8A////QP///2H//8N///+Bf/wfgH/4D4Fg + YA/DQCwf/wAP///ALB//4GAP///4D//////nxB8TkwBsQ8EXoMPAH4DD5D4Aw/A4MMPwcPLD8DJyQ/AZ + AQPgHBwDwk//w8MH/8OPH//D////z/////8= + + + \ No newline at end of file diff --git a/XSDDiagram.exe b/XSDDiagram.exe index a79fca83b87f6b7ef6dc5dfc2ff4d6c2741766e2..0ed76981ac53a21f5e80d931084cbae036c856ab 100644 GIT binary patch delta 111734 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

f2h4HMh04i9g)N z_DQQcao3_1pRmsky}nO9aUjg z>3f&*jb1o~Le4f?3&VCe_8P9)KHob* zizgB()+M9yKJi7>arvtMhqN~VjG{>UxT`vup2-k~%p@cM6Bv#_AcQkOA|O{L7ZC#l z2sa@KB#;nH0-~Uu3p^GTyap9qK-@(a6;~vda-#z+bM~j9k?n|wMl#$4npEN4csD&Tm(Pg6Bo6$k#3!~1z0bRQQBTSnzWCxXj zKETICXy<8%4c;XP4~Kp?!J=PH_z7JWf#~G~-lE;Mz_{_DOZX!vA-Hl@j8Hcr+A;ud6stg_v4Dqfpdq{{L8zRKtP{zp^8}RA{CU$Nr zdLoal9U+N(kZ~IA76~;-$tN~XsXV$Rwhc#%5j8TVbs?v*iUubHniHHFmfFJBDZj5R z7XM@Lss~S}lR0in4{Mi7SK4}?M~KJpgy5|Y+LwKT#@CUlv5I7sA2(Sl_rg;#zEehTZ&g1FpUS@kd&iOYbL71**gL)@^nQ4&W!Du0 zLj?wT{)3WUyA*kgeP?O$=8?5oCKe7`DO*oA*XcNt?XRQc;2=Tx-H7brn`_j|!_ zbRk@1sPOB0T#w**2mYscFLEh=6EB%EeCdCRh}9pzIgiEe>-R~N_$gSfYCnYDpTy+| z8A0#9s50@dkl?j8wsuI6(f@xNnJ&jL_5DHRb0r2J(YLx81x(O6zXEsSs}S_q9j^z{ zdfF-GAsqcNR$-%0D6e9x`edL22NCFokhI~@RpY*?Ga;1rw!Ka+o!}dAwbX&*iOu%V54X5W4bqfh{%$Qkal}G$H z8M3o=6hRU?)6103gc!Q@)Ka!%aI3OCfY?-7TKjj$W$ZyzlR8P{z!~CWSZO+)!*o-Q ze$4alIJ7fqXA<6Iq}P9)?M=1$(o{d=13Cd;Rd~zPdojs$yeBd;6yqU1T~+}qai7{u zq=oRMjJLw*rFt5}apQ#J(;ds1W$>hFzO82>EstXGN*IL?r8g|FE6Nk# zVO9a{ot#N~7^$LeJ01?cPr+$i4~oi0o#_s1O^l<@K+>#4Yko^&~jUNq}YMqY{ zFCu-sjZ5XIJ_$ja0-Pr9Zqm)YpmYdlEGdEF!?p@SC@TMoM3phHCsOTg!+DFnT3i)J z%#4w^PNM;m7*|kq2(|DdtB7yfd5tqi&?8!51^sCnDPpVwH(Jh|xV{3}XHyo9twfS0D$<6~9H` zg_qvGScDU+>RLLx7Nf|tN%;*VkIW8HF8`;np(ce2}3DH-Lqj<`L+BW*CLFA!gyp9-JM}2|s$p?jH zrWj**b%M{UAfIEq>h}u$oBb7>R%M98N>Ey2l zU^Jk$6SiTi4U9r9m(Hlghxkv2;I}rhgVBG)l+k$OW^*(?6o8EMJ!!sb>xRrj_(2Qi zY_-9YCU;{MH3mLKmP$itbYO#BI)|o>X8dw)cxoqjICyJcdn1fXqbf-+ap2wOWiV9o zM<29DD9gd0rF5wMu2o%N1bjF!hYq%?`8ePsdp99?q*+zYRJ9rh{=NvE%vGC+IDn(- zAl#8*FxPo97jFU7H#^e`4XO{9@C$CiJnexGKP`;(?ZjWG;dGNkIN_{FirQX=rK5;Mtq~h*ha6x1K zW7y}XJ<{T-5{PuEmlr9|QHwhVuL;P{=C3f@qH*}DZ z1>P9ko!W$+te&)a^=2|>&~`p=tPX+$Ex3XXBC zBhvCpZ5ini9obXuE9;JJdtP@>wXdv4;%5JRm+YL*aTDBjZ1_|AB5~J9xO=rR8dO*T zVOwMyqxDio>y|jw|GZ1a3~t?o7qF2Ik-$yUVxypV_6`9P(RRCF3-xKWkiV#d)cfrM zmLa1CZ@BBDH{6j$p6?(JDU0;&qMmUkwcX0tFFG<=StJSj?E1Kql|}l&A_pR{24{=( zheZYiTVy~Ri$HZ5iwsZ}>C5#^?HAm`w5oqwQ?!Yox5N2oxMiFDa5O2<3g*9Whr^~o zHGfi2TF|uJ4L2CS`4QqC#E+LluwjrJipH0=ky`FrZZqPL);_XX|0i3Lygwn7FQv}J?6g!Ym?>J%V#;-ePwGNlvWV7X4xi- zK&V9+09qQFZ9PsI)ptn~jK92h`ft2baglpz6TsMSMO~%^evS&Xz$Eu%_f*valigDS z&MDY}rCK1LTVR4aE4ZS$!Pr{S3GU3`P*(?IaHwn!6=;E6x8h)PpgG&*L3r6v6N5_< z;=U#rTeF-PT#^uX9wV(1gIWMtP7Kb261!}cZSuH$D4bA}RQu##(wdW7y^()n%ZWCn z)n9veKYS>6bmX))yVUN(kX7{^Rz@L}{9Nsyn6b1I>~v3?xsG03!tx&b%AAqY@xC`d zFIR@4##j|PdmlQ@k6NscL8rW z!Ybz?vR0Q3*c?e0Iw6(xNXcE`v1V{eOHk_W58U5r^vuL7kxt~ys#kKvvd;RUxC%|* z=A&P+(xmHJuAeQP9X)g1mcgjoDiazZDMN|>(_wp(AItjoE$3kf%pS&WxOG zxM#X&Av{-bM&eceoLJe#O69SaE%!feLmPlgi2r?a+5cs4*&NT@*1ctP`9x26BjV~1MH=CZ0i6R6XDN{y*H9Xl`A z>E;{mIqvzMxrqpYXT5V1|3ybW;}eImVR7rrOxut2(TQly)n-3hq2add?m~CrZ?~fH z`Rp!ivlR`&Rp{UBLi_(7nodm2vChc;(0KIk|LI9n@OgQNJckwqcyV&y8Ph4himvX52bDbhR3O7zY% zFkkJJ=$&W9m*~O4dILKJi`>O*F1_h&p?hJpyI3uS7sj-@g7=K6eO(2Xde>#)Z>})# zm|krefDdh_ZPnoBbM=fkBE2R<8!m{r& zyUG?rOI_Q&*i**VR?nNcS1rNLv{JRJZ1D{21EUh_YfHO(iMyOzLhmOVLuZLf3JFoY z-HY2K<)vM240MCp&dM|Ll|ZeR~ms2VgA zVr<$G>k4>vas~W4his!UoF7D}4K5u78iD`lG;LS6riph?N748iNE%ENNgx9tO(+^W z0cm2<$XWTjcEOVlzRhP{k}lHG@o@v`k_>c8t%}%|pqFG8J1aOlt{K&9qOQyZWEz^w zE#l-4n9)1(^hfKHC$`R49YVM@T8a|F&8sn%J^)U}^UJQXQ%A1RC6Pz@2XvLOmYU9D zkQ$k)97i%rc@LGZ7=y~{8847zoA&4_d>EAQWCIU9IG3AI#6TMxtLR>BPzkB~1WJgU z&>v%+OI)EdcrAevcTkTFVrQ6p>m_Y5Q#@tLLZId^C ze{v3L7d;Bs^Xk_F_$By|=*lzjR(&j{U200JrJImVaPsC7`&B6E%mOYdzC1_~X^VN_ z`$Uxf;Fq-#enD(?Us@FdH}v21AN9&e>j*4Wje9;$C%zO#-~KeK+UJR7cK&Wa*IYFj zUcK&5sCS5+N5R%s4tUUM%vP-YHxj~!&I<73M0gWyx7l?j-9dBqQom(@d-VFzR0r`W z+<1u8#T^=>zZ}oMg|#iZ@(V<$UVPI)@O^SA}1qr$+|*NmUd-8z8>xe|d)R z7Wxl`>s*xpEAcY{_QJD)Bc!4)zq12j;P*E9jUrEWDbHhpfb39y?*#nV0YBP*hrvOd z@ITcZ%|w|PtByiejzw*ZReyuito#~oeB*?)c2@AOH!5xAaad>Yex>C*9@<&_Wxv5@J7nfs9utUq;8}vjl{7C%1QG*EaRrX!)sHQa;Z>3Bm7n`J^^jfDdmxeM@SsNy?bRn3LezGRP^{i>rUloV z$QPRm6T<%^Z+w@s4}47_Byo=a*B-L7f#(ia^u%HS4_)-Hz=Z^TV35}N{5v+zRC>mu zRbG^bAJg-%AUO3~D!juno>a8!j(-cm`F~#GS|}}_0{n)>CGSt*Dd!PXB>Jitq|86{ zqpm&pK?AISr^RObR19-C`96pJ`OB$SqLkoY=_~!%kmF=?n?XO(K+CK!e$58k60vaO zFSKy#%GbfSe8R(2@?pu_t6%~=4bevEh??>TV!lN>*d4<=F)_Ra-1J*|_|?~FytMx+ z`Qkf<5737dmX9YBJx*TA%^xJR&eBFsoR9RmaB|;~c5N#J|CSzh!w13yd0+B7dYAl! z-X%YuSM?~2()!bRmDv3ei-)wS=%tkOmsFIl+U+msB@?Wc-K+einAxOj$KO)p{j2na zaW;hignh-#xWNVl%VcLRkzMvpY%eQS&NI`V#A1>W4^yM=srK&YVwKdOUTr21PtROeQ{ zbuGT8^1!n?9WR7G$fkU$Qy?|Y{<=PR5;}l_&s9T}Y(PEn%+z2)+qC0cbBe1M{=wU=a5axp<2gwHPg_DY_xbVnkCBS>q% zSfM;xyTodEq&7k*b2zFthvJGZl7B6h#}H-J1uY>|1OJy`BXlr&u`04M8%9vkd$vS} zcV>%sP+LW*wu(kuMZ2Se+v*?q$YM}ixjhKtaeH9=Z_&D=SJFo{)vGe4$VFX1jOUNU zMB@jyS|3$Lc2Z+RC-s?_&X{Iep5eM<>6e;fTPB*$c+Tvfo+O9LxBRy!$b$T> zV0&vPorT&-Ce}_eu6EK%rk!+RX(ydc?5w4UvURuoV3hx&-`x*uWZXJ-nuXrGrI0h# zqRzlxoYDPcN9zZgwF5tDbDZYI&>L|rjuisQ$_t3;G|^Kr-{U{^IeI+OSE*y@MIzcT zL}6otL2Ckwv}i$t(2vL~8fQ*R$}wZCk?;?xS&V>{7>uB#GE`y@m$R}zMCgB4C4Nt3 z3ra0^3|&(Eze^0mgvy9hE1~xVXkF94dMZxN+V@bFmR%%~*a~+gGWZ#_aD}>TJZdL6 zCz+EH|AOh2H}qdg#<9g*W#ACq7ayD>%_NtNem>Hi6w{Z!%cs(xP3fPMcAY`f@nq>J z3|aGDi2waDa$D1yJLNv3L(z*N!ZAe@iWT@dfS+FS=iMbc=9In?BEqM@qfk_dB7EFE z^RFDLMpTMrqV)9;;hcsoT_xf=e3|^oH$y~J0X{vSj=yDyvIvn1MTHoAG(`9ZnYPV0 z=iV*x-@yNnrrf(jAGyu=eRXMq8vZaeCsino0*Xbmw43*1j z$|{#uduuAa)uol!{kL-UYY9MQ*p<8iV9VF3j;;8>oPXAOSMfL*mNpcUiA29 zl-d%<)(FvKN=+4&1&u0h0q@F#-_$80^%Wr+=fOR$ypo2reLba!z_CZ>)a-N|4}tUU zZ+fZJcBj#?qOfdfMrBon2-J+ADQ}6*7Ul?e`8O=F^^ilG@@s5Ujrih{g@wz@YqFPC z*A&94Sf^AjE2*lvKC`N9bX~Uu6Gfg~i3F*?84XVqSS=Q6X7Z%v)Mmfv6;>pb6nb(>ML+ zM%#YF|Ey(e7d}O|57%N>tu4)PEGns)$9SgR)>pPx>Rf}ZQ_rB_9B6!bWpzoh7++er zbWw>;%E`ve21irk{kF!?Zh37Rj7rtktLcxMZ8q5+ z4L^42(#jfc&89y-WJ|L9SMIQR{ck^FJJ1)21X)*PR2D6-7F8t`l`Beu{ihVJXj=aV z+ga(~w8OTvDdJJv4G=)B4J0+)0xqfL;X;tOYvK!ExY#46R;_RA| z3g$q~(o3p~s>+ttRAK-^{sHgc3X9B=8g;HU{rIG9n9(%!&$bmIVXE&;EUfVFc*eF( zRySquv2`^3^Y_}W3nhE{|GwAu*GYk%(54rREiYTNw4|bBX^psC6SuVJYu=~>%7 zO{sse^)Z^t_t{2B*CnR@!+u+qjL}V7EdmZIl9=q@W!a+qn`&*&rsx-J--R@}U$#xO zC6Q9~ecuX{DhmTqc}W$TppEy~DvUP%Zx7qLH_ba}+iF{KIcsqO9Fj%^ws#;{kgcyS zsaQ}_732{J6Kwe4vNUyj)7IbgKX}Y`h5wpkwp{<7W44E^aa9iSk6ZF;m+P_RJO7*<+CPOUDfno@-EtXNyERi)ce`*SJB*4TBXf1L7; zO*Sq3yUjA1P9L|;vM=a8R+M9^D-_pbx|@ROuo83)CdMMM9CKZXSPEAO7OnwZK0+=d zpFZOewgT=#gs2g@oJJ*L)nKlqc-5FOYsB?UqfXftncn1VcrApYN_d5uQoZ0RPQ)vE zHNEty%@yJrQjH)r_*;hHi~JFv+j?EmiKgpbt-eUPKmQd8{-YOd-7)09`I*g19@L2@ z>1q_IoC}i&xfD^$h3H7tEW`9oT!H^fk(}t^U-T_zj4S-zF4|%T;G&#!YRMf*WuSOf zh(PrZDi<`O>FOBsNQD22M022(<>=_CeO7wv*s-4+cKCd3xZ=V(dg?Y9E~TowSA}uc zZIZcO?J4DJS7{)0VYza$cQq8%jN`c zWVs~}uiV8+c62wCaG0Fy+Rxh(|m_BF*Mn_q`G z=q*3dT?+qO^G&b6^H6iTzx+yw6aCG>{vU>!)0<`uGrusV+bEo{OJPjKr4g>UB6aWf zPA*$iTH{r-jEI*aHlUzIMincU(G=7lFOpCqEW)sq%&%Hr;=d-%+%#4tj%zi0x>`ly z{tE)ktgJ*!MM=>iA4%N+@|KsZxFjVLtN2v^9Rtl9E|*LPENFuUJ<&;uC`zmh!!cHA zfzeQx%|EgLwH`gx98ACQj6ZFP6eER)Mo4cuCI}is)!INLNzse_slvsKf1!h-&!9a-BndWq>O~#!i`a93mUe2d=StD|#$keK8 zDjF4`W#Q?qT!@vOsw?aU*Fu1|tlC>#ws2ty7N<2{UV{$m-+xe>!Z`w^^KVEqJNb8x zF{5X+DUwTyFfI$P21H*e5?V}vr4b6znzhQcWMx@(O`A-D^O)JT#?(xgn}dWHC`D3m z2Wz|R4y<3j#cEx5+5BK}bols!t8=Fmm6lW#_NQf?|J(@kR{y`#%rJk$Rc5sR+*PK} z?m%}(FYwo0WyX@vCOS7*x5=M+mATEoZnSxYf7fKQk~+=Z{x3$G+x_#$AqZK_fAa`4 z!G9pfoJM}FuIWut|N_fw5-y%S3KXM!A~i`po5qziY0U z>5tDcM{<;=_p;0w>EANZT;u;P+pJTr)j8$^Ev|I#=Kj@_%nANyCYY%ztA)AdU#UK? zwD`>mLAUoGm}_>tZ=f0H{~;eWJU7kkOW|kv4^1)?nkuK6{iHu-0v+khcz`9m{X+RKGTfwzp)72io!Hy%{0rTziBptAD)HOex79> zHvP>D%<=vw7Ql$zi_C8RpB9=PwBK#yyCy6*t{l`Mj5|* zq8a7?dZF2==|Hi0K>AlLG;i~FSY+Np!t@_lWR?$G8ESg!ibG8d-{i_Ck?zC*&Vz65 zC&c9twV#EUo<#ibiT@-0GfU0I*7^`L-es8K@JYr0LIkUS29ESlGv1RIV!CrFb_9H8 zQwoPj93dU$QoEa!`)y{tyLJSno8D4Vm*m_NNi&5j!+Bk9ptf> zk~`1wFOsZ#jb!}~C|(?MBBZ-64q-{edsegWene}KVN_R|wX#}jjcHFC0HL8Eu@Qwq zl{{px+I0~1-6m0b1r$rqh%HI6!A?@NEhLsxz)})5B$mOi;TcL|4rx&*Pu(W+>*#ka zHt(?Ej)SMCf74>qYu#%18ZypPcfaYCG?fwJU?|Ko3G-YwQm$l~&zjm=6(B-KKibY4 zLh&LzA#Rf;Rr?H96HL!q$#vP)IVbi6uSNy@}b{h@syBAw|ND+4wW8< zP_J<3Qng45^dxwAW^+9u1$vaK?IDIE3XWKu1{(rBja9pqYBxdMeg--S>Uws{3r9*D zk&u1u&+Lbz3UZGQa*x9G8rM^d)m$1#fo@6(yK5~RDdinH9ImsV+^dv(xjg4pd2pcY zF6!(qGSR2x*B{m+q-?DG!TICW`OL zcd1+=oL+&Dv=q#0N6x_c5^z(Ap<}CHrH5YaLN^V8^kjv3@q^Q@2>ex@s9};mPSwXb z`dCQqk!SN-=vR4RUK?T~K6N6`%5blPk?M{U1zl&IYJzp`yr$B?3knQ_=(OR~X~PNY z3Md>76sf)&N2>1@4!@RKsLJuWmjcyU<*FWA99{$G9L`VeD0ksBBp>`M4|vuDdDghX zy`efljR6RRu00tDUK|v>*yU;oUW{SIg?tga2O`3N+Tgk{%iF`8?okoYM_?@SkFGSk zTjgOiEYw685eB=;TU;n%K4nSid1|OZ;$qt&vxem`V8gZOfYJb{it;&Dm+$n3&{BN4 zr*5{J+Dti>nc^@`z!;xs&nT}AWCc)%Ve2h-ajyBeEZ}Pjh2;SZ6I7;rr0o_oq>(G2 z8KB-5BQf+7ObOlE!liO5?kRSttz7fOs1|ot)sZLngZ$ zpJKmcRjE3vl*2*bZlnR&?IX3@$3C@3IaK4b6e=85fo7@-yWjuewPu{-MKXiC@fE*O zW%liWVG7yRKB|Ho_K&DC&AP&d}!`=9Se`l4MDEs)|sWJzR zbyJd&B2u=;!=2irp87s6m%H&}6=Mw_>igitj0@u-<6aplIq3!t;%@lFpH^*lvmT++ z#-rn+XFQ63bQ;HnVx+?qi4v$rt^EWY8v|NIq@>j7IuxTD0>!(~yU;K9)9}bisA$wn zJazF7PUDq!_=XS4_8Cs4$Jytw3JbOWM78Oi`i@HF9Z%gmtf$^WT^|QJnj$35<>C>q zmQqI3|KP+6ZM8?a${ghvic&8f=wR-8cO3rvC)St=RyRAQTL=D7sQNw_+T6Zq3~h9( z)%Wpq!sz9~mtTE)q;fZYK^eFkzvg@zFYuwB8^YcAgA+Q868ow8l-^J@f~P*s=!qlNX9X$0nszaSRHclIL6`l42~E~u@HiPz9Uj_ zum(1Rr-9AjX;5ZpaC7zz9jRd&;?=)!{G3r25z$4^Us{HtG70WAecWr3krLL7pZH%} zVa82PQ|ZzHqwnKf3ip~pRJ4Y%RO*Io4zXq^m-Yu%%rJ2#xFQ@F^Of1$YtjNHO!E)F z&g^1gY{6-SOh=)`V<}l=8OsJ(?rEr_Q!kbb)v(5ixfloTx8!j1eJb_)Rq6%~6w|#1T^4;LoKo~O z+>aMoMv;HKdz4Pg)38;i1()Bu(u}dLW@|jk@f#kcQw>>%N6<|ej)BPbNs2-oBa%2eH31g^+9S#BG&MUSi?JL*$#pA zI%FD&5)$dQM653JLKA7Bo`@kf0!}Q^A!-k?Ji;OJ*}a=2##Y3k1vem{+_cbUuY1&C zJ!w|k5-na+vt|ckVhzoyoL6x!@&T)4N&%~59O9H$A|0?EMrd09lC0bBOl)0(k~6Rb z4Y(;ZUFtznb+AfA{w1i_IF-*QV4ky*)RQi=Rh`L0V-3-U+ zW{pJ+M!|Ht(6yhix;z2}sr}65seKAX_{>v#nBsp%@jFG>ap6(!seMsZ$kQjvZbv|1 zyr&OM=Yv?iqbn{~ zG#aHL!IR}_=;LWf_B0IgGz?W{ZAd@@bT_4eOxQq1ZWu&j=qNjeD^H#S7fWb}GoIRW zA)FSj-&B7rrn1!5lH_8oq$<|sT4bZTJfu;3hQv8!fSXzHinn(_zjQfJ%o8-wdFrQn z8b)~WX|S;8G3q9Je!NkALtk=N?#YIqdcj zG;+BEy^CUSIg1@G_-gZ0;P!Sy$0ve;T;TyNdSSWhkrDQgfG7FYmB!oKQ_`(1QSPG3 zBNOzGO*qdC2kO61^$pxvf}74*)odf|F=%Lvv+EsHD4bS0V7@~3YZbansjysnHMmfD zQAJ#2BpAKz5k`0{x;4scc+%hqx5%t@jk+htg)`O~W-Qtv4JE3>tvgR$Ep;}1Jr|9$ zu=d{Iiq_tXJZk@KUxsyS!y5jF%cA?^!vm)il>u?IY`7mYse3Hh%~LnMoQ^d2>q*`{ z3RAqNVJl%>4M~hZ$_tXBDcyhb#bq>tjq?9mZ+7vot}~;pM^N`iC>0!B?uMt3yUt6e z3!QtEgJR*1r;obQ8WI~w+>cw37$K20(N+?V;3RK&iU-4DlPp{Au-S37oZrRX9)r_V zl(FR@7wTpqd6&aIwS9Y}KGiVWcejTlSX}|~Y->e|sBDDk0kML$b)|9kaB8`Rk8!bt zbp;g~BQ#kKPAbyJBt9YW8Fg3nc&^+t8g27}y#j%PyRbSrDUp_@XlV%-nS$HFg(mR7 zTyOTUwKZy#Kfb|q8&4Vj0S&lnyFe3B!v&9>o-say#a6?Ga9qT>+*3pCICVSPZG7_3 z_!=lxUHNeP6(|Ji3(M(A$$`5nE>~E~y)0M*^V~{D%eYJ(2}y>*;1UZVERiTj|62|C zCesF75k^Woa@dUPA$lB%i%cBV>54Ka=+uea+7$+6Fbe9 z{@@Gs>;GfE7V96=h{<<4Zokux!4GgO#C_5a3~WUM_ki%>*bK(bF@C&)gBXJU9)$f0 z|A`0SKb-t=Nhgl9ah&`Sb0YbZ&yLBX<~YUVIdkTiqI%9K$eUQ+HfNLt*uZc<%cmfn z;?+5C&T)y4=X?P6C^FMZ{9(8y+7|XdPl?7rxBH^;^C`KJtW9Tm4a*rUm$1BvmioX}np)@(n#bWONjuML25z;04mQc6afL?8if$TpD zGFs%6tSX8YvrDQ=qQx4PcR{+urjqgSf0VUPv;SXNzQ^)&4)Y7bxP)^d$qp<#FQh)# z3ljZ*@IuNy9nvXgETqyEvCk@&8(98<<$jiLu{_1{J4mN+EuvW67EwAwAklD(s3Gze zEnegjYvFc@yIA@cJp`X87d;1gWYLL5=>PwwgSg0QQA+2!qjV0Wr<8*BhmT8)V*f1o zI7MOU%jgZ)mr`baNT=As;h%;yMKgR{;uD0A7N3`{LSubj`b%lFh%4(`7A?lJT)=V# zOY3$VoZ=57cXAy6e|`}pJ-rt zC(GZnd;&6B99T>l|DEOMi>VPWu-jbHw+tt?wS@Zcpe2;_FqT;?r?D)8^oZ-1)GzUf z`S=)$#N3Qh09)E;1qQ%AA(P`Xj(=Iy#eVIAG6Q*%jmSUT}%GmSq^2H!Ez3y zORTt-ta2;M&5)*e@>M8~^S^wsscZmBKzhmXy;z1DBF*7Kc2gEi} zheVxBe-d~V4CDcQVC)o!Io=f@n|NG&h*%N$Akg3$C&ZKDv<^9V#s|hz;#VQP5#k-0 zH6u^_Sr}4w6JoM8BWuP5W1onTq}+E+79zf&=~Yl3D3*0|5Her9h>cqmatUa@I4Jrt z)qsjY$+8Z*qY)JHpy4miw8$2CV}<&t#iL z^&KoQm2Wa_WJ;4qnc_L*mGT(VHz@Yc!Wt#tXG~z_ zRq{io{-6_Lto(#&7*o1D%XEahWtP0aln!03$dNxXP3Kf{JfRm}a0Xl#xu0&?SPRm~Pk9k?CH9BwaMq3Q!6t#-K6bfmw9= z7Rp$rWqhI+%5F@LvaU>8!x*1ttd!%K4lrFOrx_Awdc^d%XPpo?$`XS*+rMVLJ?nyT zpZpVaLi_-#2zh`hLbRVvAs>)Wa=duZYWbjihT{zcT`)GumsscHkXz+T7Aq&Q@&y?l zLRlPVD>&#uP#x;DhUpE7yX(;13tBDTkbRhTFuf&5h6ohxIlSU|LL8S@hlC*B zdzvPOpoZcrP({dlGB3mm=@ub=VdZ-=pOq5haz)5VIX$FRcT&z`U02q9DCdSqF;E;C zC&dVH3^G$3hnyl#LMs2+;uPFV#A(PC;tXV+I171)I0yNFI1l-VIBVh1B)*3{$Wlc< zA%29Dy{M#AxWDhDP#f5QrQ9S6)YRsXM>D_&sNz9 z@)_A>Jl>-^EPDXnk%^EeWisUVoV3kIg}b{!$)y;hAae~W^?ZY}uVi_XF>btD+-hXN z=Pn}$?%x{|;a0_JGN!@(iZKiFeU@Jv^WhE+A)n49asD%8hLpf-ddOnPijYdkRUtKy zcZOUK`9#P~kT0^&2ki4L$BGE0| zc0L047$=3F=cGbZIUj?(fqfoixtrx1EYCQ}PGRjRd^eV3SuSWt{wv#23hUZEY2olN zEB3S3k#^L%K4keB`(JFg8$Ql(lHJ2e``bQ0Je&+WE}VKh^>eqF5dJLWLWFmVI+mNm z&yRD9{p|iU{8zX`+kZdK!jh>yDbm~TN6?whjB_l0n{oi8d=Dwk1q(A(lkM!9O_T;0#nXRQ6PXfE8;HYg(`bYl&vFFIES8g5&SP25 zas|s6kYlaRY`2^W1s}MOu`^1RY_={~DoxVgOZ zqxQf(GU_?V+^AO}XGYOtWJweicU2Uvm+oW#$D@uw+eN(7(lPfSF3u^IFL64rM)g3f zx1!!_33DRqBZT=768-;khHoHY(vFmLJC@y94q`c`Bbn=JmUCGyX1RjpEi6^NAMDs# z`-j>6bVpkE?e9oMf0^Z*ERS_WRV{If4&pnOs`id(DugO^*J!GDZ;aF2~Kd|6)l+=y5k`&6vmhvk45AnHU@Y&*~)mi-H!q#^(~dl1Nu49!4?|;-aSKkcCGa z>Zf$aKv5ztSM=&c&dUnih4g0G(09mgyow=}{SqU4myEU zdI`Ed;v7@6u-@u?hp(^bN00SHv-mqGNz`bfPSa0pVp1)dEG`b`!Z<$ae6J6NppOIT zj+iV?T}f0Y&UAhNx?=ha3eu!h28&HsDV@9`(>FxiGe%Jd3piAq)R+VsE+WP%WezA! z#A#Xt8X?AL+5j3Q(lxzs#UsAa;*_SNps}LgIF-t2gd8sl#w)VNJ?`^~QcdnSE7O-L z4rm+{_p~otoMLJa*>P)p6U54N6>)l8rY~32YN|%aiDI3mo1x1Sn>1|)O%^9L9S7x$ zbe~G)N6<8JN>kVP=PX}=IFg~1De-pSOtC3b(YW|Epd*?lf@X=?IZ8JJA#u$M z1hr^${3+i;@pB7(>RTl4nH12S^_7bJ$%@{N|JGL~BJfo~ig!9b)3;dMqA9#frmtL_ z(=-IM)DpY-v%*B^ar#4%W$ zGW;t--YmSZG0{oTt>P9lU4{ zO)S$?2i(h_jjo_UNCn zPlOh$EOL50;(K1~)l>*NAQDTI?z$eMeJ_cAn%4Ko^fluds?t5yV_3$kV*4URFZOuZ zcTnsCq5gH^#U8KwUK6Rb4FdFTkE=4?5aDHtP9vGaB5w)NeWG2@jEuL$5vDp3-!s#9 zR26JiUIg$xh(wENx{w=7i=kM$gu@xJ(3 z6U_%7h@G2Bw;}eQJ*Q=SAPz9m3@{Uv^$_XSiqCtl@qH{#Yq|*fhgkW0($$HugiPN* zMdB7kJreA`PekcfBA)-&02>+CIz}Yi=KEBv(=hgzAici(Oi|JmEUfULCOk zy0hYd*4+i&S#eP7wkE93_(B}fy4?x2pyOKiSH$~LoYJ~~BHowcjMn{{uqNXxaZc;3 zh+cO9FKT7CUK=yc;aBab+#4K&dTjzZnC^3o?X^1NYZ0M!(|gr|VzsWK*Vc@0gjefU z^m+u8sC5?NeJciP-6q8QR-|g(v!pyP#%SehP@WfAT6qGx3nEYJzJTt6DA2kGJ6C6X zC+2J2j?UMCO1178=)M=rwC*M7z85RCPWE1taZ%K2U372j4&W_XnbdoA#t&k>R*vmm z3)-l4)1muOY|*+x=zbJC6mhrwNgR2MtftmeKZ)Z^_lYIFr)B&kX76H)ieow65#wE9Cx-s!+Mua@Xq!wZxd0y-26pfVD znB7#i2F@^2W-;CE*phf6BT}x^v^()bP_3o|iKjugXgZYm?~Ew9UDLZv2Q>YI>7=GF znJ#MjKJgslMOn{K_IEpsK9tNrP2o(rnmRI-YKmuS)YOY850`!uC79oLk>bY4>) zQ^X#g|L%4aGWOe}3bU+FH42liX%*|{Yr2(bwWhn6Hfq|!v|H1kn2u=L&2(1N^GuE= zp8u!^UqFTtO_aSlfudwAlWKcdrj2g4BFEuAKO$bSrg!^@%qY1`)5p+tlq)rzg|4G) z)bxFy+kDY-9SHSb>uA?^4RE7YcI|tcFGgrrf6~|ee3HY$1quI9h5~^nWdGKMOT@x zh?DWk*;>~rDK^t9i#7E~iU%#zl$_KfvzuJ0X=qX(P@|?%Ndq&x%XONvl7@jcDzY3? zpzI;HXytq;d&r%d4)+e$=`B+AqM7cGn(G*V}Z_V+M0B8 z<^cJ#raeh_fE<5O-I8iJP)2B?8V;0knm#}U2g#nAsDgv!KuyE@O}8=!%T$eH`pp5Q zYs&67J#&c6)ie*fA+kUdStdo!*F=^{k>#4mGDBsJCbG;>S*vL|bi?E=n(CmlhRJ(0 z-VWt(xk-~B%HeW{rmg*&Gg9R)O;7am_)_IQP0vA>CYv=Kgf2}U(ew_|yiy+5^byj$ zQl8fI8FV8oc~;}MP>zrnHT}}ho;gyA=ahlXRvfAOA~dk9GS0)de;OwTNCxJ39@t_&wpzj)Y`dnnO0J3 z=gQTZsI{+_jhd*nua@f-u`MRbjaoyXr;Cdsp!s6$PX7d6rFjNNPdmAPqno-D&PQGQco z6cNpTl;ITV)k4fgeeJ8x*dIdctfO zrHOjNZ0XfRC+r-VsL7%;c8*NZ_$-ujU1=8^Xo11M>BqJ2@GPFp>YNBOmk?g67QYn`G zG*K$WGF1~+UY4&!j?qX(u{5=3?2bsaOAx zKu0tU>Hlfw5_w$HsQzDoPHUo3pd9m`Mj8dm0 z5rD2wItfF{afxjdwat_W7hW18rSV1+!TiL$>=p3y|vUnkEWumt|7ORkmj zXRSQkCo*fL41JMxj(7XSf+950)xz~MRugsE>t#dH_DZoXwbb;HY(!6+$7g& z9c6!$yhjsdf0Nt-LjBh|UP1S=%!{@@yOWnTY1UU(urVGV~>7?yv!CKoOd5#}cYR#%l6o3DqEb zD&j;NWxqC*(uPL1q4YMC%VgarA_o*?HOgAX4I*j4{H(Qdqo&*ei?VK(M_!?#Z4iqF z+>o_S_B^O)#eh4rHptVOZX57$)_v0P8tLv64-eR#b-!Hyx}v`fcqMC-oPCH$^|j5i zSdp6lHp~3OtaKb2a42iDoUQ4^fOkQ~n$8aRC#YPL9QXyOMw4gY+rG`RR#T6G#lDB+ zEt&=~t=BYe;I~;1$wQi~0^skZ<4w+9&|{`8vPRRj1MR-8@{FeI2R3JHl^2=nME$@Y zv$o2_qZF@B+&NHWKP=B3Q}p0KNA@3N;=76-ALz+`Ox~mEt%04hcjD2x(tTwO?4JFE zEY=u4sBiWz*~p~seEeB%Vp{7MIOsOtpXGKC9gsUT9YMSo2A zr-8O;ih}Nh+@Z+}-3htd(%5fsRrY&wpQe$6SAv=~Wei>oI-==l@4D>w<#A1?dfyB> zttoGCbH+(|R#Wj{kME?ssEKZ2<0an@RYB<%_6IWjLpA?7=pOcmGD<7y9`=XQtBLMm zeb&LH7??{Gp!z?uYUp za+y}{fbySmrKUa5{Zlq-YKHE#T&L+cbf@J;O=qF|L~hY!47mriQ&a4aJF-8OyEUai z_o+Mp;`xt;*?-A{TA4TG!R&v@W14D zR{S#LWuIw`{Fe$Enu4uCMxG{DN^^$YIHrj<>e!8+HN|tts52_w;huwX5R!==X{P2l zjN;Ffu1|_D$7wA4x1xb5xjF5O(~2ySnldxTWt`K>u_^O%Iv6QuRnXj&g*g$%N=?&J zDstS$8BHZAD{?%>{BtT~P0Gu@NMk({Ca07ebE1sIZ%9XUb54wLO4D5_8*(}u`QIv? zwJqhroOt8-cM4rdw5vhx5T2>G=Xf=}DtD(m?(5z{&!s$;)3b&CnzAP+(U|`|#iSX2 ze@-9c7DbMuDa|>3jrEGe2PvhoM9@nz{_N_UDW=HmZoC z%g~4kql`1ZP=>F9UiOVP!vCX+)@5kd31f^rd}El_Hwi=gPZ(#^v{34VbYnM@dd!q* z9AHwboh)N}EX7;Pw#YJeYU(?5zm=0^?A17I=+oKR#sN)Zk$tvtNK-C!ImR(fv!Tl| zPH7@rOfb%9qM2iYaXt_dx?JODO*C`l8jen?Ff?;mR~r!;Y3jJzh|^R)G-tv@qo=0p zhvtC>YFayV`h;tYR898`odZhOL{mczzU0~c|X{7PFz}Tp1`>;O9VvDAyhV=*S)I?M43}d$@nqp@d2Q)oD zEX6m|IH>8hVQHXanrQl+Wt`MR)9)Y308VaklZZrXPn@WzR7} zuTUYwh8ItmV?=0*9bT0^*ND|L2)emOPfa<{%`^IGng`uHBUKYk_w$W0S784uWnTm3 zd?QyY8;2jvC^YglJv96fXuhVs&@C`ZHN6Dg0;5LLq2Ws=6d9{EeK>q@c9GGj>Fn^~ zp!JG)%q=#yfRO)ML4$6Iu}dpy&|PR8&_sjoBIAgrABW=xiV+pZwh-Z|MERP!rTTJ8 zjTEoa4NA59%8Y`ZifGI)GqMtxFh1IS<;DRb3mXK-A!xaAPAPeaC^s%@!Vr;DZiM#Y zh>i)!u)^?anw`1^G*VMV>WT?V4gAz0TlA*X)u0+pccwN>s5I7VdN}n~&`u`Y|7=QK zKVg}%TPvGW?*nD^=48ZC6zy80M$`MLn8I2` zO;~QM?5lM4w1+2LXRK!WRKA7UUvI2aI<^1vdSfr6y2E>eaezr#<_4Z*Fd(<5aju1I zG_JQ&7uYG7UiPgD#IwKUhehUGcGo?klGglj-j5Jz5J>f=UU<>_a!cE3( zCN<^M8pTTI@T4_Qs5Q!!jwhK~!_kiteN|9~wMLvKDq5{^PYb>5t21U}4>egW-b#CY zLcOs*fN6i5u*Nv8DIx9TgxieVbQN?kXq|CL)2Or`v+giXY4W9=p0M5+=u;tmX=f+g zZR}{F3lr`$M5fYRoo35@&{)m1L6oFf;klcP)GSh}nQM!Y&ZKOy)hK6DwclpcC>_^+ zo3UEc(zND`ZAPP}m1!Q|He{Rbme6Pf!D#{3+mqe=Xa#?DEt72IL$Wm4DI z)}uzh$)vnnY)tE$`>3&uiE2L}_c7xn)2H&WwBfls^=gN7+jE|1S^Mlx!LGj+dM;&D z?w?!euPGC9_ZaJ@P!1}?CSxNLrDFFrS;iK|2Jz>#2YgL!ve?&>%)&5{?HR^FRBp<``&}p09Kj2BX7+##bAe%ytB6FFlvdtK zMBNg360MB1Ozk3}C21u`%al50=t)v5!!k5Wq>CJ_G&M9U|G%}i7Ux*Ko%g)w^M9Go zeD`lZ>si;m_F8KXv-i-`?XoyPFSg49zk{8@vo9xaMBd@V9{#Q^?haBu{$iJ}?r0Kz zjQQ$bUBrCnN5Aa79r2L!DE1`M=;lv1Is)SQQ}9c{Z`xVT2(7Wbe|!DC@BvjM_oLWp zAN-$atytG*ui52PUI9N)CZV9JBmJ?F$gcqs86hm~>!H=SeZ3>#L&-Q$CUL2h=m-`; zcm_g-h^uAxC#s?TQlltIJHmcD7qE8R{%vv(^{x~=zps5qt$<$eOL&u@jw1shv2vR{~s6V->vcW zU9Wu#|Ihk=`$XI8){eaW-UnrJ5!B&UX5PUsix$1C_5bz}_`o6&ZSc`rLSy@Jt^LsS zpK0{}YnioA$UlvjIt0XnB--irgG_tfz5?yj`D2Y(zuo_Ph%En`^}beZT>t!W8UM?n z>i=%`MEx(<@BdUiwcTRjf1@bB)BpdIqV&WxMoBMm?r8iF>o0A3lgS9!btD$l6a1*V ziWBVmU_J+m;NJ}0d|fC{?%M32rN-yaYZh((yuM0Vh=u;oH5 zOiI)EI!E(tf5!hAeSP-Aa;^XKl2KPdlxLC^dr{eP)AG}@Y=ywT4-eG1&Y~5l{kfo7j)`=P9?}1Uv7w{~D3SJa+OJwB{Sm4o+!J>+ z3m(8ZEs;^slvqHSc!m96Ejn_OurCmv_X$t#uhaZh^4kIWtI-}3k+trrWywj&Dq-Is z_&j*cqJ^SiQMg|d{>{?T6mV+V*PVLxhO)U|AAn>n!VgCe_$?dDt0G5%{2&Is2F zAbPdXmxY$nd7|2B!!0t=&WrXI&A+{c`{+m~#MP5-B847;yyYkv1TBj+as7LP2xwok z-)ly#CA3;<{(Pav@AT)1@+$>ANeQV@5-!qge`d9B*I%`){>G{G$CuXa6a8b)KMM5` z`5K5C?4c+%zjnvxBx2Ik&Tp-ZqeVkmKph!>U7fDKH2YTzK3%{e(_`e|x$uj)YwLh8 z&m=sMu|Nfi$R*iG_{TwJav*Xs?)l~)F!duJMXqsL$d{2zaZ~oW$aPK+ZY4M1F#`M} z%N%kk@>ypgJYRH%in#p*O@hUwV-!!VD;P=!L~V1Hz+UGx6aK#hGvWUuDiapfO!&VL zLdo!`{YjxDDk>1cNm09;mBbUZ7ZGlXI^bMQ?h~N6qCpy%M+FwHG`V=#n5*_Ml6`p4WC24l_e%y@4 zLnZ0H=svChXkO@sF@urLqwqJAYQb8Bnu+?F*x4IB+$Bj((R-6Zr4~?cT%CqY&EHcf1&h7?5#-XT_kNLhhq)!{37-aSA}#sc8;r3 zx)?hT)W?;%xcz?DYN>PF(!?66d)$Mt_la99QeLSd34U9xk&KL61I=%$-666mlq_+) zGvc3zdI?ETH^yzkIeWpsO8P^7r<%pKL`@HO|)f@b!3Qk%D^et%iSv4rdHx#%{oi{67EUj z2V#)hDC7R8^(jWuEg{@(B;Dhp+-5Q;0rzu~Fjzw6*aQO_(3)UzPbA)iM7LSy|7vfg zlMz1!laESKGpy2}A3r*R z0kj)fLPa6SQ0pl4^C)XU%0!ZE^+_EjDr2D;)~DPSdb8Cp72`iobO#wUEHL$;w0#^) ztJ@11HUv#sc>Xm-w0>(JC)Xwn~&Yvuc`BT^5-K038Ye%QJ+u|ej;QIlYWw8k2f z+ALRFXCyR7z9-u2Q_&&nTLaj;ZTUW+)X%0z@n`W0L~ z@>y$M>Lt{>Fjdm=bHOe`jk=$$_auet1`V^I8GV$gsr>Ai34RhkH`S!$W8!R7W?|}m zS9x>%eW_+$fU*?iU&*rThA7LS!sL8c$H_tLQY*R z+XUXJV7S#S6s%C*N(~m>inqtok-z(*8J(7Gz6AvH(0P3Yaq`>BNpU7wPpJERd!-rOlvxVPev)K$bc5X&a8WZV<+XW|3Tz z7%Q6vTLsSwUJ{hVpkx%pPl@mr5)9>3alUdBKbz68LPrYr18r$`p-qAwVF{%*wolv= zM)j1mR^2vRTH0CN>$VgWk*{iIP(Jv~pnT2KEWKyThW)s$k4vKeuuX!#WSf#!L3|VU zI%m*si3gnO49bU&0Q~cGKTaMcaavjcognnBiL;>RB=RYQPoO1qn~f#Upi2@lnbOB$ zH`1EKd1*QHRp?7-iS;Q>x_1)G(n2Ypjzj5Tq+=$h5i03U!*w3k+jSB{YfS*Sl@U2&a_H0 zZ2VrQo!Z790CUF&;%iB_jo*bsQwnXOe9ahnHMxhz??vI(j_>2LpgrD0gY)k_n)RDt z@z7V0vWGSxmWLh&jpR#JY%Yxd7|{&Lhg`LyA2iW`i$y1Y> z=q*T}PuXf0PcWI091QY7qlrEr+1)c=oN`UHB)OlbP_HHr^%UzXlRr%=)IXa%!jnUG zB#-vY(EmL-+Eb!`H`(GTl#e8@a9i|WCXe?t(M!pEOqA?~#7aG1lB^bO(<~e8E>E-E z!=9PcERV1+0@Lgns>hmcT{Vn!8JfRo?uQ)^H5yQ${ zJCG38^YR_`*`8hcQu_i=gMOL4+|#7z-;8J$+1Tkb_6pA~Oui3;fzgkHb@p|h5_yju zH*Uz>bET->W-%A2D@mh$qi3a9EUYBkY+s~a(x09w+YF{Kwa zddI-@OK8Bb^d=hY@KbmjTz1!>4=+yS2L*Sz_;h!Kr&st4aYUxCMzQ!zIK~m5Ugg6F z-6|hG=vMh8Ig-*VMI+Y;dyTNy_@p|V={tmFhp_DM;Rj-uPoC;nnkXT;7cq+mJ9;a# zMT3{fcQ|lUv2LCtJ$<&Q#{+`1@nuz?)CUA-i*}kVW{urq*4QoPi2cIeM9Y!#=VA%^ zi3sH>6Z|?2D;Ai47kU!DP1y%1vn~D=L|5s@7MzS5yvZtb<%Oc6>9j- zu?s%232&!|8h(K0tvgyx-J#>>@iZbkcPC9FP0@KSlf-LplK8U8B=O5AljQF_m|j8N zckFdmkUq|j)B71}*#YRGPHq_mnqWDeZU#@G8qv=0MD`cKcqgU?gUjg$=7OzsiZjTI zT%3E8)Pp|vID30}gx&})bq)k8oMFPr?6n{{TxuCsJ2^KvV_?|=-AZ3`D)8CkbRi+W zS~Oim>ioE00&Tz5N)4Xa)ALH<>;VgvsQS*1v>(!jqlhL0~?$GrS9=7g&dJ!5g=Y7x5H z@TLowZ^Eb8a1?1)344v5fwx>j%p_@Z-{ z;6X4jQEkEo56%*76+8n^EI7|5WHDe4o=lA0jKF61n<&40?yX00_WoWkv5A1@AeDHmH z`~z$hs57WzvFTul0sRaXFxZd;GJ^x`X-K0ZNPWlza9_wIurXu-cr@fMU`xm<@KnfQ z@Lb3-@N!5CD6{imM;0NEAVDk&?7?mZ2e27(y%fgo0mIpRS*GFaBNdxy7NV1B80)DU z0QLjJ*(y80cVYK`+|?=CL|m5kfD6UKXG)r$tN=oG4f#_=Mn2!DE6y3wHD2 z{=)@rJ}TdtEOzD#t`*!OctG&DplsltJq05K-Gb8v9}#?2uu<@P!EPORtS~`Eut2ax zaBYWj6~Q~jP9qr3&Vvf`HI}2sT|h4jHCCZj9L8#RrU_0Ld|2>B!GnU|3HthS&whgA z1TzHh5?n60UT_zv7O_KOr%lkmBab{(&?;Cc_!q&=f^Q4{L(tcc`}YwXE9e!RF1TFq zMZvehaCQ<@*w3JY$(^dHS7n_#?Lz(HJJlm08yL=R1r@dcbg+9tFMFU<3+#Ub6?O=8 zuqM#US~|&c5$oESb2u2z#)AsW2OaDt(95QE9)QrN1nUIf6+A1b`gY;L{lRb+11c;X zbg(SY%L=z8BeTy14T052 zbO@-hSkS?&pqDuVYmnMPu$0{gma|H58CwgkU|Yaw_A}wk=(ApdL(oLRM|1ad^X+QXtzcPTG@A&nWrbY_Anr5}&EC}n|Hr{{wgFtmwt*|yXJ9n@98}k`)~*U7 zoCk5@byJX87Z4|2H#;Ibz;c!iE@Lyn6|5SJW*fn^?1gScDDN5OFRBdD;zkRqfL z0(x1$kYZgm^M;fobRy_wGeat1*&b4@3s>2j*m&7TA@vCE!Ris&3_92t(90573+yvN zFI&Q7eKrBsH9}iJg}Sx+I`pX4Z(>nB>Umty%bx7f0=*SfSOe%_?}A?Tv5HL|`=*EN6V68TlzkLt10Bo` zdYKo@W5qoOAhZTl*c+gO?FPN6Bj{zvz)h@6pK63=f(n}kI@k=*%S!vy z!~O!OuzJwJ_JUsa0l10j`nDi61ytB%(7~pFUUny##}@aMRYN%2(^obq>?r79$3ZXq z2e^s#>^A_Rw}1+p4?0*G=w-{mP3-l43PSz*D+uimI@l1<%gkUN8{fYOq4$G0a3BsG zhyw@avA6n{Ba{v(H>e6@*f>}((94E^c`SB7HG&s_3R?j>*yEs=Jp<;kR|nJ>wz7+Y zy#{g}C73g?9h=LNyOgSbxTR9TtW*(kVIuys%i66!X% z1qlrU9n1`RSv0tbO&{E9sAJm(%N@{@L4`Gg4)!JJWoN)V<}<|Dp^haD833P&pu%Q? z4t5XdWo2L{+#2G+9^LyO>l z62xoPQz4O6i}KLl@Q_uf!} z2sEq$5e#9~h%gvbSPbZ37SPKa;3l>ptOlNY!|LI46jaz*(80b3y^IX2N1EM+HNYox zSPRd1cnj>khPQTTWH$|$jhJIW%(25&*@#INJD6m_Joe0Rqp^;i7(M__7eIw|95Dbs z{-Bq22lLp-5hi0JyK97EEMjv69|UoVf;dG%oT4C3Q4pu-jdu9EZY+XNI;gOzpo2}n zu}Fo}J=n=(58hY|rvo>Z!|4N1VJATc`x^AJHgFR&jjVvr+>zDrSpcGYg6N(gx+l1a z9U56<+{*fzITdp~JZFIls{kGBA<)Yn2lLpA<_4qM$i6YR!08;QFyp8eICTcSjDdM< z#Hd!Z#~q`LzFXNW!KH##f_ns81r6aw-=l1JxXHJLDc~uV6K?mdW0S&*!8zd-;5@LN zJsDmDy&kMrSxtBYlHMZtNq8%?PXuQ_!8q_Jn;2p2*urLlr`VDRQ^z{?V1yl9A5jd} zL{xw;M$~{?!Fu*lL<96O5M4E*6}mOT=vT+Si75hLq@myZDqp*6~U>3%LMBLKNIvD!#!^hOaqUy z(lN$PEvyne#hx2u>Qu)zt7Gig)Pv{P-Z90{?}F!86P82L3YwS|To*HWc ztH-MLE?e2ov7E=o7I$f6oyJulAaGm_Xd2f5`v}2A!D7Km!B+)861*T763P7|1@ieKG8MscL>gmZh(D#bgTa&Z{;4>_?0aRjJ!OU1=U>%ztYXa|!wS#M73j@R0 zme}IJM)q=SMPLit8CwJUp4bNPlh{_UIo23d$1cX2z|L`&pfHsUin9k@W;cLx=#6oO zL18Q+t{B0Qaf_hS;>y4YaTP%wLv!QSK^MeTfj7t1AXYIbhu#sl3zk`N4Tv>2t{HlH zTr2d-I4L-cCB_?rJBFsj_k&K2HwABH8G^Io6JSxFinm}>9d8e=V;kcqL)XO@f^Wtb z2RE`k@r$6}i7x}+i?2ZBLxMjF4oKh@tKiLoe-Yd$_>SOd!Oj-$Ib1LUJjzNe>yYMh z)l!AcN=r>}3tJ7IVlP?Vgk_s$7r4XHfMWg4avZwe(hTmkw4zuCETn4~`@kZBhb_jg zXkJTS=w?el@JoxSYYRJNNr1j=v4F&ChmYPm8QRxc4Bf@L2s+rRR$wR8TG90!>up^J z(?IK+pvih19APEh!dSSqFF4Mc0LEG;gI4PzaJ+RL=(N5GdaTF6Oe+ZqV|muT;ACq8 zIK?^{yv@1@ywkc4oNav*EU_L37g~wR!dSVrFSx{-06u7)3_fCglLdvYvfkIHN9YsQ z-C&iqweKwUtku|W7Tautk`OKCe?Bi4=C5ze$viy{rv)Zi1FjCu$tWvR6v$(Ay z>mfvYBJ1g_^;tDp8*MLURb*|;dR;j!YIWK=D)U;B^@#O^vOjB_@m)77rvv(+NXx^UM z+fR8<%|4Hvp~?Uepf$B2=LnknytQMFe@iVS!r z8*x}S+iuOBmb)Hl^ExlhJ&z8^<1EiznY)_DSJ9|Xx9&f$+9CdP@)*!d#eXRtd*^7{z7D$l^kMiqVYiP~qS&_lZ$oS`+*P&lmzQ{Xb z>#dx(p2YTb)bMnkKboGavw7d=NfUc35`KPV?)ib{z+=KFaBZTXo`DYNyZNFvF;&Ada|5{q@x0=TptNO>mXRL$s{glBX z6RyHg$kSH~r4^(%PQ*4*#P9P)=7%a{;8lv#HWpiIQ&7yCP(@xP-Un{VzXh*iQFu{F z6#>1K2lDwbvt;&G*5#w|^54pT8!o>Vt+%ot9!HQlPv+Mbulv8Ym>&wnUp-L(oH?Ss z{1mOduD787UyJZ(n(Nmh{Z?b1K`+p<;O9BlyuEn(S{}T`c#*EP*xE^LDw<~9q~|8J zSvOB|E6+{hk#5R=1N(l;?n%7KP;YGci`Sjn_(<4h@9e79QSD!93m{EGI)g} zq4E9y*aRM|h=2nFxpoPiE{Hn0q;M{t4QQo&UjCt=?#_=d2& zCHQ{o*RX4rgZ}5BEB!BK;QRk|{y$^quwZtEZUP~X`ul=!XYe19(k%NkxR;JnzU{#QXm&z9F9m??OOn=G)*B?>?|h zWb?~F0iX8cL}lhd_&g?9CAdkjPVj)B)&_0qhvE4}<_YjZCLe-G7N>vKNmx|g2!yb# zZ?L18`ekv~p@Ldy`xc7GI*-uUtRFzFCB|p*_Q(>vNpQNzpj5CzSk?$??fOqeSAVDM zo3r?ME}DqEoW)y6Yp2(Q-j~H&>m$Kaf?E6iD6$O9=JjLQn6Jp-Y<@tsijBULA!=l#(Y%5a!z_K}wz>U7@Q%O4gGQ=nWtx&tiI&Fb9T0Z^SfTTHpC$R=cccJ3M+(97xY>x33uFrTJ=QXmw2@-)BDo#BM5cp3kUPQ4WCr*nnFant z=72wA%|po*QUc0SDGH|p@yrux0kjWDi2)Dvl1K*-50)@WW!UirDOM}x(0(B9@|6}t zcLpixBHa(|4^k2!RX_)Vlmto3po2k5x=Ig1cLOP5(sJlfkdp3FC3FuEw_8gqpnHRq z^pPGVC_!IrD1Nzp6$1K$lnjtoLk|RT3!JnTdN4@I5a~(ip&%tD>1pU2KuT_us-Q=L zl$fPz=usf<*1sR23{q$E$;2R#v_BwsoJJqe_w zPC+Jlm#ihm-eq;S=Y$#bH;g75ZFd9lS^phYZPf2>{r$LN{ zk^y=Hh|y3oLO%y$G?Y3**MJxerB2YBK#Yb`7w8v2N?wuzptpdO?2v+>cY+iPOQ|b% zUIQt4LkfX@6T~Pcg+kYZ6c0e_0lf#Lcm`B2=(j;i8l*nZ?|_u-llnpL2Ql7B1EAjn zDLE(&g8l%+5GM_R{t(0vC*g(^q8`QuW1JL*ohFcyqtbBbPe4jOm2QOo45Z|^WQJ}A zDLEm9L$`n!2c^-_UxJi;C5?qX31S?SBBB2QVg!_;p}z(x`9_L`{uaats7mqJISXP0 zlq}HaK#YBo0{uORu}?~bz6fHxlg2~;2x7dG?9e}h81EzpG@%Y?iQ*oeBqjzE_9;76J&HxoU z3lYoO z1O0c9lDFyG(0f6gsI&q49S|of-3PrN#PUR?2e9)lNXdKjJ?QsAoVD~I^amg%jkFQ^ z5J<^~^h4;6KuQkN!_Xgtlr+&M=p!IbV0sk#6OfW)^ceJ~ASIvC&!CTklr+<3=o3_J z#!d@u0Y9f-fM3wBz%OYl_!T_`o}^!ct@K;)AM`AuodR)A({s>YgE*(@1?X=?i|^y<4z!yBpV3OGxFa@!bqTgZmZ?EeOLq9Penn6AO|B z)4^Q4Zz{MAT(zj1p}#t_AT}QtN0_pH{hL|v^>5hxXaB2TX~B?5|7x3AP%3`HnA5(bVW4(d=H;~K^Ngey_<1qGKF+P%XqNd^^mDpE8BIi;r$lbKiL3J?eD~7J$4EW zmHoQXLz7qiHN-I3MheGY3nqu!`QCqW&o7OFVvvD_1~O1FkaVxj+qF|>?y-lzNvSd4 zk(IdNO~73YSuT23I2b-b8G7v;QhYm`_J=C*E#2& zd+xdCo_p?6x2m>m@7r=!-}P4=@!GnFPBHwycMQ{LsLL2eTiP(rO$hbPxqy2B4&rJI zYS=W4BryI3SL2=B4d0zH{VK2@NjlhXT&+bA4gX%q8I3@G2fmvxI4LpR{P|pOMcvfg zvVvbuoA;5r$yt`R2H88jFVuBskqN39#--km>-q{OUr}%LJyK`Xf$}B8NWF7Jov~@) z<}Yne^m&Jx-E}|m)|ijg{q%DkiIz;==RP;1;hSSRI{WuCj)I6z!?4WCVWyE9o&@F1 zO1;<7ae!%G=bhDYWaAMarOHi^Yk$srrlWoKWgyrOqKw`qb**9KvT7N!nx;A*$Z#(u zR0r@|R9is+>>b^mN4z(OuJdqCPPtk zXA0`2D*dcy6YFVz9{6ydF&2sTe-Yjre6ZxjU3n)hoen{TdTMU3UvpQQS?E%nX zR<{VHGXT2G>O!H64}b|~)fGy2HiXcKumogxH~5g-+udkZVOJ8HLTHRxU8HGa&FY|r znnTDktBWbaUWIfSN|)peTIYq|kA)vTiNn0ZYZW}4NCrp*eWezSU^rp*o@w|kCR-K2^8gwVcbby(Bp zn$-_zXkG~IXI3xLv{DF_&FX4R8wjEKX7zGSTM$C~n^kl$R&$|1O9(D9tLJFqpjlm^ zp~WF|fLUFsX$OYT60>@erX2*x>+hNB&IDd=foq#pf(kJ%XSNO#HmluHB0=>(>{6}6 zgw2GFpqxYZsYAH!>>qDjkA5?Wp-lUzb7j)lfDTzkPpRyM4ha}xNy8Ncm(=id!X*!~n)?At*d7=UC`(x)UHe3ZsNdp&IHgve%ao-wdl>Z6lV-mZt#CS}8RFEcV?XifusX z0wE)mfj06COo#SHO+vW?6tfB&Btf5q489<>&TF1@lzR~}DyD4({{_Wh{IoL`vs zLAdtSb#XBHvhl%zy0H)fc%AWw<#iHu^8JklVyCeeimTiMm2xTPE>`%{fKx?vufE*J zi~09GH_dSinP-qb)2Db7hiOWx8ct?usI z1kD7mW0N3=(?=@T!XIM8uKGOE8q*o{6O0L|%GF4&d;zpx=fV_y{bx1<_eO$DZK;k7eVOSS%-F6=$U|4W(bRYDsZ$T%1Y394CQMi4KXIE8lYbe9Ny7(!F?VwG%K zQfGe!SNp4E5mmHHnN?=3d<|rEE3}Y)pYQK6o`xQa#oY8f<(`d1^&;5HH%1!5l~dw` zkV&?b+61BWPe>05!oS*2?{ITV%moyb)C10LdL>EMqvy!y>wxz{= zwpCib#qwXlPg=byS`2uqZ|}mlN!Dt~=+l5~>NW4tzJeWbHSARK7VwiCBb_sJR|JEcLQA00$fNQC z(gX@tMeRa|Qa=_P5mq~xnx+W@Ajs$}t?I|q>nQeZ$-w2@xU;I@YE|zD<>WAj3B07^ zQP>Ve^%LO|!cPGf`+s7#+9yDi#PfNud*zd)9Ob`~a)C9N(6b!xh(p2M}& z5hkdMfv0=bv$zy?)~V+*03^D556zt9j zE@KKB6T=dQom!(M24;&6yDA_s^C?{QNGy=1E8QnKCPM|qu9{HKgG+@m`A0YGto6|33WeyHLbIMmhm#o3kQdJ*)j?3pT4hcL|5Q+;4|P!sej|AED=k? z;*Xdm90$6NY^kJeLbzFtdWg#&(yM-jU-fHNwzNNlVKDq}AdTY2O&K*8xylGOFcv|z zv<^5zcpO*ffVgo9G%7!~yA-Y^)K8dsD_9CxD|m;`&bvPY#j3yVAmrUy;IGWMFb+89 zpb@wAw)?rP`nwNh>Q2;XTW^Q6PEtEZr2Ylcw)J*7Sa)sMX8#8DXtL_DLa4Xuea@|G z7hQsI8Q1|O<~secD5Lg51u+(7)C>XIGHM?I+B0gl03F$Fm2V-7j7u3Amte2odK2dy z=3)eh`E#OtF{+tRE1*%U{X66-qcPB7Ll1X0ikFhX{x^OCUtbKiRCzvs#Z{!G8`2vm zAh#^2Oby$J+Nr*TZjeTJvjI0^>*xeMHEc3I3_)mfIMGN2&qqpPBf<#%=yWM>??_wp z>rvXK6dAO(b-HKn1-5h5mP}5`^B97B|4OQ(|pYr;K9TtKY-Wx?Qj^Y)EU7Ti4F{ykGrE z@Z6mG1Dk^}#i#xectO33-*M_s-eLQ$Zu~P~vudMB9oPHfzB5wjs7dt~?+^Q~G#^QO zN6cLkP;Qz#yY8>vALbR@zamdxA(v1;geDDz#uA2qBb~XmDZ3GEYL;IBszK=sud%Wi z%DAc{yj3*vk;2^yAy@qkA_s2LJg<|Vb^;6GVoSaKcchm$l2)%K{tuAN|GORCJi8@Yo!pe<3kv%h3qUS}BS5vbArZ0cvI@JdwJ`7XLC zgJE_9gHO(W-|!}srY$?0Tn&(b3A{g?=U5sXCD*nxPB}^_Ha0?Gc*zE3Qkc)nn6Hk7 z#q}V9RPVOZnJ$+F`Fb>O9kML!gyt>&pdu@VFv&g%l3S8CrfmL@6s4QH&&niwh2)_& z*w2yiX-5hLP2GW>X&8OpC(6ehD~3pj+5%pOJSqvixO~9^+EYx`tH^?_lOdTW_xT1S zv9NGloXy*Bpl|XoP&vKjCHrC83hLK1f)Lc7Oz+nNecroCS6MJE&pA>o3kMJH zp#^ON9iX?=sT?H8URzpE3uGaYRt+Fy$B`xJ&4XoF^ARi9mwWFoD6GUVz%5D5p!XIy z5Nv`u^d!o6w1nD71!TJ|#k#qT(;*kb$344~ zizyGnKu)$w%O3<+r3K=8RUW_2_ZbU*j~~?vG^@rjsZzjiKAAxbEs|+@9hf#{z{GeV zkkEiOqvD)Esx~l!zumiY;eO=xXH@tE=k?NC)Lc1L459QXDs| zdKqS{v9OrEcLb5LU2S&=Z$)ZKbwIzEoh_(ZtMf2^?M^W1DES;v=MDb+ zjtN~zurHw-Sbsv3^QG_%sKcp^7_Rf7C*qkLN zRX0k~aAg|r`1JsX&5?deES+#oIyZ+8qHz2IVNXQH}d@YPZ6E z6vqBh3w$~PU3wCN-6XApG(4x8TO;?Lj3kaa(3$RzXeeHv{wYMBqNaFv9nd~qC_dxz zT&l2O3}pC>Qwk3x*y#%DNP(q2lx2KlOcGU#o-q`i)= z6o_YLk)AGv` zXk(U?@-xmHWRHoZ$_`GP-98=MvNj+UM%Pk=FSzmHZ+rPNr_Em(mESx6=m@drFOHC@ z^Y@LAN%N;g$i#SUro?MAd7r@{1e%z>xs=}8^GUq7P*AgB6JIyz1+nxYQ$fv%1f`_L<>#11!+r^V0$oOflD8DeR#58PRAZ(o zTmBH3vMIF>#Bx#bGCIg!EzNlwxqVGJ7 z4%K4VC&IU{ffLpN=4wn}8zCgukWQ+(%rp-_jV+0!+D}Y{Wm^eAck57$QWnZ`{~k|w zZpgo{1IQjgTGCbXc~J}Gm&#<*roy&e&QuG9#E@J-wsbgTF zkEw0w7ydbkQz5*eavFXcE35FER;LU61XOFvIzyH^b^ox+$H7Mf^ zq#WY?_UMk3Hoezy%#6Wsxp5hNnL7dc@Sns0m;<-$uSJ{posSU$iQP?u5(9;Z!SfvN zlgG5VS2OQ}C`erbcg5Iz6BNU~)e-cTQPBkViNO`SEnrsngMjgVGdsAMk6mw^4-3U| zFMNqmaX?JQyfu&zw5W5`k&=dkVv=@Fl-A`eW0Jjw^;(OcK3$e`7Ra#zoKFIm+Z}4H zx8>M^doFm(vC*qPK47iVHi#WF!T>Kh&{JRu8L$r?q7KHG5p9Be2Sm(sBI-U7h&B&+kBq>hA`nxDfMIO}o*RMdH0V+x%q9Y6Y=Z#2 zfYf;cIt1xCW~D-~B;bVv%Mo};1Rg4&RCI}e8_7EmF<`j~VItvp+)W5z3}*qjTtE?l z1s|v)0*itGTodsg7lG_tzTg7|6bZ))_yHPBq)UW4OkRX!h}=x@JOQPAu4nv$&L*pZKSl!o%mw}52kG=aNVia1VBR?X z7e-|`1;US{Ymjc^Q|UH7cub7|*Q^Rb=b-cWY;+zUR1wIA_Ni<&AEb$WkoMA`twqiv z;X}~3<66Xo+5^vsA`5XM6-R>^BQTKrXK~e~;McYYwob4V@+r=ph~hjTLEKZz3NDK% zsICzlrr->x>N1Gy9ut<&xGF;rqpB3om@36HqGI}BRvAyX^P%^l%e!gp_NK4^g$R-?rtihCjwN4)1{!!Wwy z9bk}LZ$(_hN9ckjConnPvDhe9!u*A&X$Y5x#JzyA<-rZAgsGvXt}Q@XINilh^V zbVPYbhm~`_3$V-EKZwK=cP@{_6Yn`T@;Jdqdz@r@JSvVjio-}!QyGR8=f!4hMEly4 zFxrHSInM7QC5ZP_@U)X3A_O0;gk)>8LW>fI5@@CxCFG$FiLk{mz#a+KAj)y3=uDv) zZDHcwvudN9@Eji%#rz_&EfmSArNnGbECbo(v)_XKgXSc`SrrvVyeCyRGWrSI(@}X8 zZoe9dA@1yq#1QY1$E{k=EioTdcK?fIr@FjCDR96-&H(QEf{I&x=u+6y&@aWr1`|VMu^@XM}jJD@M2`*B607 znCv)F>BPII*BV54?g)y~&joQWB=9)MbCb>kkq{QpePQirOPce8S|Lz(aD=)t;p0>( z>PcMq1nM%m(1W{mhQ6EBB16VJE@7PCQFz`b7|C{ZwT$1)(z8AhIqtZSrRYzX$fC1D zFhU(mbQ)X3CL!KEt=ozRW#K82hn@-h%lwp@cejQ;wv3G8gIt@*EQ>2MnPn{z0JE$C z0WizrnoMR{#|wa2){p?0Wg&zkiI24%q#-EDrI?;%VI}4g#4PJLO~fqgG7aIewgWYU z$J&n75FTs0T0^+6%0(FR;;}X^!2sd0wu1@zJ%-gPbhpLLO_H;ORoB)A?)oNf*Cx^? zCSRLxV#%|Ld9;aXnKtziX(7V#8J6H5MUuKEOm{vIH3!qXi#6`$R!Ma32-?Hc_yfeR z4TZqp(9|`(j|~&(K{!5F5C|O zzZE@^wt(?JFdzGo{bm%N1do}IxO06}H1QGcBz@6&i9EU$CC_V-9>k#sCM8;rVE)Ul z8|XpU{(hu~;4wXjJB`KA1jI+`Av}kZN9!T@3gX%x#G%K59RKxG!g?M)1bUzcVf$N= z9)id8Ant69^dLS`58>gReqRsbC|3o=2K8SKdQdK5`<19%!DHnTcixQ3B|frT;c00L z%N4wbxUN5O=&^oe{TU{m1IVYlD)A9+%=j62E#Yq4cUdBV%Mw=CVNmGK2b;F%LMmdq z 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 RZvHGM#Qt#`t$2CD`d + + + Form + + + SettingsForm.cs + Designer AboutForm.cs @@ -173,6 +180,9 @@ Resources.resx True + + SettingsForm.cs + SettingsSingleFileGenerator Settings.Designer.cs diff --git a/XSDDiagramConsole.exe b/XSDDiagramConsole.exe index 7f38b43312d1dfcf7b1853666f2dc99a061fda73..3dd78f90706f89103cb479ef8606010a3eb4df67 100644 GIT binary patch delta 85 zcmZqBXwaC@!QA-b=*I3;Hi6E_bsJs_cK9yb=gsSMDJ^~zdjO*jP%@SQ2$+CahLM3G kLk);I7#M_)2CIdjO*jP%@SQ2$+CahLM3G lLk);I7#M(); - } #endregion @@ -79,6 +81,9 @@ namespace XSDDiagram.Rendering public DiagramAlignement Alignement { get { return _alignement; } set { _alignement = value; } } public bool ShowBoundingBox { get { return _showBoundingBox; } set { _showBoundingBox = value; } } public bool ShowDocumentation { get { return _showDocumentation; } set { _showDocumentation = value; } } + public bool AlwaysShowOccurence { get { return _alwaysShowOccurence; } set { _alwaysShowOccurence = value; } } + public bool ShowType { get { return _showType; } set { _showType = value; } } + public bool CompactLayoutDensity { get { return _compactLayoutDensity; } set { _compactLayoutDensity = value; } } public Font Font { get { return _font; } set { _font = value; } } public Font FontScaled { get { return _fontScaled; } set { _fontScaled = value; } } @@ -155,10 +160,12 @@ namespace XSDDiagram.Rendering childDiagramElement.Diagram = this; childDiagramElement.TabSchema = childElement; + childDiagramElement.Name = childElement.name != null ? childElement.name : ""; + childDiagramElement.NameSpace = nameSpace; string type = childDiagramElement.GetTypeAnnotation(); - childDiagramElement.Name = childElement.name != null ? childElement.name + "::" + type : ""; - childDiagramElement.NameSpace = nameSpace; - childDiagramElement.ItemType = DiagramItemType.element; + if (!String.IsNullOrEmpty(type)) + childDiagramElement.Type = type; + childDiagramElement.ItemType = DiagramItemType.element; int occurrence; if (int.TryParse(referenceElement != null ? referenceElement.minOccurs : childElement.minOccurs, out occurrence)) childDiagramElement.MinOccurrence = occurrence; @@ -240,7 +247,6 @@ namespace XSDDiagram.Rendering DiagramItem childDiagramElement = new DiagramItem(); childDiagramElement.Diagram = this; childDiagramElement.TabSchema = childElement; - childDiagramElement.Name = childElement.name != null ? childElement.name : ""; childDiagramElement.NameSpace = nameSpace; childDiagramElement.ItemType = DiagramItemType.type; diff --git a/XSDDiagrams/Rendering/DiagramGdiRenderer.cs b/XSDDiagrams/Rendering/DiagramGdiRenderer.cs index 59d59cf..837cc79 100644 --- a/XSDDiagrams/Rendering/DiagramGdiRenderer.cs +++ b/XSDDiagrams/Rendering/DiagramGdiRenderer.cs @@ -12,9 +12,7 @@ using System; using System.Drawing; -using System.Drawing.Imaging; using System.Drawing.Drawing2D; -using System.Text.RegularExpressions; namespace XSDDiagram.Rendering { @@ -492,8 +490,7 @@ namespace XSDDiagram.Rendering stringFormatText.Alignment = StringAlignment.Center; stringFormatText.LineAlignment = StringAlignment.Center; stringFormatText.FormatFlags |= StringFormatFlags.NoClip; //MONOFIX - - _graphics.DrawString(drawingItem.Name,drawingItem.FontScaled, foreground, new RectangleF(scaledElementBox.X, scaledElementBox.Y, scaledElementBox.Width, scaledElementBox.Height), stringFormatText); + _graphics.DrawString(drawingItem.Diagram.ShowType && !string.IsNullOrEmpty(drawingItem.Type) ? drawingItem.Name + ":" + drawingItem.Type : drawingItem.Name, drawingItem.FontScaled, foreground, new RectangleF(scaledElementBox.X, scaledElementBox.Y, scaledElementBox.Width, scaledElementBox.Height), stringFormatText); } // Draw Documentation @@ -522,7 +519,7 @@ namespace XSDDiagram.Rendering } // Draw occurences small text - // if (drawingItem.MaxOccurrence > 1 || drawingItem.MaxOccurrence == -1) + if (drawingItem.Diagram.AlwaysShowOccurence || (drawingItem.MaxOccurrence > 1 || drawingItem.MaxOccurrence == -1)) { StringFormat stringFormatOccurences = new StringFormat(); stringFormatOccurences.Alignment = StringAlignment.Far; @@ -531,8 +528,9 @@ namespace XSDDiagram.Rendering //string occurences = string.Format("{0}..", drawingItem.MinOccurrence) + (drawingItem.MaxOccurrence == -1 ? "\u0066∞" : string.Format("{0}", drawingItem.MaxOccurrence)); string occurences = string.Format("{0}..", drawingItem.MinOccurrence) + (drawingItem.MaxOccurrence == -1 ? "\u221E" : string.Format("{0}", drawingItem.MaxOccurrence)); PointF pointOccurences = new PointF(); - pointOccurences.X = drawingItem.Diagram.Scale * (drawingItem.Location.X + drawingItem.Size.Width + 20); - pointOccurences.Y = drawingItem.Diagram.Scale * (drawingItem.Location.Y + drawingItem.Size.Height - 17 ); + bool compactLayoutDensity = drawingItem.Diagram.CompactLayoutDensity; + pointOccurences.X = drawingItem.Diagram.Scale * (drawingItem.Location.X + drawingItem.Size.Width + (compactLayoutDensity ? +20 : -10)); + pointOccurences.Y = drawingItem.Diagram.Scale * (drawingItem.Location.Y + drawingItem.Size.Height + (compactLayoutDensity ? -17 : +10)); _graphics.DrawString(occurences, drawingItem.SmallFontScaled, foreground, pointOccurences, stringFormatOccurences); } diff --git a/XSDDiagrams/Rendering/DiagramItem.cs b/XSDDiagrams/Rendering/DiagramItem.cs index 85a1495..de830dc 100644 --- a/XSDDiagrams/Rendering/DiagramItem.cs +++ b/XSDDiagrams/Rendering/DiagramItem.cs @@ -13,8 +13,6 @@ using System; using System.Drawing; using System.Collections.Generic; -using System.Text.RegularExpressions; -using System.Text; namespace XSDDiagram.Rendering { @@ -37,10 +35,12 @@ namespace XSDDiagram.Rendering private Size _size; private Size _margin; private Size _padding; + private Size _paddingCompact; private Point _location; private string _name; private string _nameSpace; + private string _type; private Rectangle _elementBox; private Rectangle _childExpandButtonBox; @@ -66,6 +66,7 @@ namespace XSDDiagram.Rendering { _name = String.Empty; _nameSpace = String.Empty; + _type = String.Empty; _minOccurrence = -1; _maxOccurrence = -1; _location = new Point(0, 0); @@ -78,7 +79,8 @@ namespace XSDDiagram.Rendering _documentationMinWidth = 100; _size = new Size(100, 25); _margin = new Size(10, 5); - _padding = new Size(10, 2); + _padding = new Size(10, 15); + _paddingCompact = new Size(10, 4); _itemType = DiagramItemType.element; _childElements = new List(); } @@ -146,7 +148,19 @@ namespace XSDDiagram.Rendering _nameSpace = value; } } - + + public string Type + { + get + { + return _type; + } + set + { + _type = value; + } + } + public DiagramItemType ItemType { get @@ -372,6 +386,18 @@ namespace XSDDiagram.Rendering } } + public Size PaddingCompact + { + get + { + return _paddingCompact; + } + set + { + _paddingCompact = value; + } + } + public Rectangle ElementBox { get @@ -543,19 +569,17 @@ namespace XSDDiagram.Rendering public void GenerateMeasure(Graphics g) { + Size padding = Diagram.CompactLayoutDensity ? _paddingCompact : _padding; + if (_parent != null) _depth = _parent.Depth + 1; if (_itemType == DiagramItemType.group) - { _size = new Size(40, 20); - } - //else - // size = new Size(50, 25); if (_name.Length > 0) { - SizeF sizeF = g.MeasureString(_name, Font); + SizeF sizeF = g.MeasureString(Diagram.ShowType && !string.IsNullOrEmpty(_type) ? _name + ":" + _type : _name, Font); //MONOFIX size = sizeF.ToSize(); _size = new Size((int)sizeF.Width, (int)sizeF.Height); _size = _size + new Size(2 * Margin.Width + (_hasChildElements ? ChildExpandButtonSize : 0), 2 * Margin.Height); @@ -574,8 +598,8 @@ namespace XSDDiagram.Rendering childBoundingBoxHeight += element.BoundingBox.Size.Height; } } - _boundingBox.Width = _size.Width + 2 * _padding.Width + childBoundingBoxWidth; - _boundingBox.Height = Math.Max(_size.Height + 2 * _padding.Height, childBoundingBoxHeight); + _boundingBox.Width = _size.Width + 2 * padding.Width + childBoundingBoxWidth; + _boundingBox.Height = Math.Max(_size.Height + 2 * padding.Height, childBoundingBoxHeight); if (_diagram.ShowDocumentation) { @@ -590,10 +614,10 @@ namespace XSDDiagram.Rendering } SizeF sizeF = g.MeasureString(text, DocumentationFont); - double documentationWidth = Math.Max(1.0, _size.Width + _padding.Width); // * 2.0); + double documentationWidth = Math.Max(1.0, _size.Width + padding.Width); // * 2.0); double documentationHeight = (Math.Ceiling(sizeF.Width / documentationWidth) + 1.8) * sizeF.Height; _documentationBox = new Rectangle(new Point(0, 0), new Size((int)documentationWidth, (int)documentationHeight)); - _boundingBox.Height = Math.Max(_size.Height + 2 * _padding.Height + _documentationBox.Height + 2 * _padding.Height, childBoundingBoxHeight); + _boundingBox.Height = Math.Max(_size.Height + 2 * padding.Height + _documentationBox.Height + 2 * padding.Height, childBoundingBoxHeight); } } @@ -610,7 +634,8 @@ namespace XSDDiagram.Rendering public void GenerateLocation() { - _location.X = _boundingBox.X + _padding.Width; + Size padding = Diagram.CompactLayoutDensity ? _paddingCompact : _padding; + _location.X = _boundingBox.X + padding.Width; switch (_diagram.Alignement) { @@ -620,21 +645,21 @@ namespace XSDDiagram.Rendering if(_diagram.ShowDocumentation && !_documentationBox.IsEmpty) { _location.Y = _boundingBox.Y + - (_boundingBox.Height - (2 * _padding.Height + _documentationBox.Height)) / 2; + (_boundingBox.Height - (2 * padding.Height + _documentationBox.Height)) / 2; } break; case DiagramAlignement.Near: if (_itemType == DiagramItemType.group && _parent != null && _parent.ChildElements.Count == 1) _location.Y = _parent.Location.Y + (_parent._elementBox.Height - _elementBox.Height) / 2; else - _location.Y = _boundingBox.Y + _padding.Height; + _location.Y = _boundingBox.Y + padding.Height; break; case DiagramAlignement.Far: if (_itemType == DiagramItemType.group && _parent != null && _parent.ChildElements.Count == 1) _location.Y = _parent.Location.Y + (_parent._elementBox.Height - _elementBox.Height) / 2; else _location.Y = _boundingBox.Y + - _boundingBox.Height - _size.Height - _padding.Height; + _boundingBox.Height - _size.Height - padding.Height; break; } @@ -644,7 +669,7 @@ namespace XSDDiagram.Rendering foreach (DiagramItem element in _childElements) childrenHeight += element.BoundingBox.Height; - int childrenX = _boundingBox.X + 2 * _padding.Width + Size.Width; + int childrenX = _boundingBox.X + 2 * padding.Width + Size.Width; int childrenY = _boundingBox.Y + Math.Max(0, (_boundingBox.Height - childrenHeight) / 2); foreach (DiagramItem element in _childElements) @@ -667,9 +692,9 @@ namespace XSDDiagram.Rendering if (!_documentationBox.IsEmpty) { if(_diagram.Alignement == DiagramAlignement.Far) - _documentationBox.Offset(_location.X, _location.Y - _documentationBox.Height - _padding.Height); + _documentationBox.Offset(_location.X, _location.Y - _documentationBox.Height - padding.Height); else - _documentationBox.Offset(_location.X, _location.Y + _elementBox.Height + _padding.Height); + _documentationBox.Offset(_location.X, _location.Y + _elementBox.Height + padding.Height); } } diff --git a/XSDDiagrams/Rendering/DiagramSvgRenderer.cs b/XSDDiagrams/Rendering/DiagramSvgRenderer.cs index 67353b3..c9a64f4 100644 --- a/XSDDiagrams/Rendering/DiagramSvgRenderer.cs +++ b/XSDDiagrams/Rendering/DiagramSvgRenderer.cs @@ -483,7 +483,7 @@ namespace XSDDiagram.Rendering string style = String.Format( "font-family:{0};font-size:{1}pt;fill:{2};font-weight:bold;text-anchor:middle;dominant-baseline:central", drawingItem.Font.Name, drawingItem.Font.Size * fontScale, foregroundColor); - SVGText(drawingItem.Name, style, + SVGText(drawingItem.Diagram.ShowType && !string.IsNullOrEmpty(drawingItem.Type) ? drawingItem.Name + ":" + drawingItem.Type : drawingItem.Name, style, new Rectangle(scaledElementBox.X, scaledElementBox.Y, scaledElementBox.Width, scaledElementBox.Height)); } @@ -507,13 +507,14 @@ namespace XSDDiagram.Rendering } // Draw occurences small text - // if (drawingItem.MaxOccurrence > 1 || drawingItem.MaxOccurrence == -1) + if (drawingItem.Diagram.AlwaysShowOccurence || (drawingItem.MaxOccurrence > 1 || drawingItem.MaxOccurrence == -1)) { string occurences = String.Format("{0}..", drawingItem.MinOccurrence) + (drawingItem.MaxOccurrence == -1 ? "∞" : string.Format("{0}", drawingItem.MaxOccurrence)); PointF pointOccurences = new PointF(); - pointOccurences.X = drawingItem.Diagram.Scale * (drawingItem.Location.X + drawingItem.Size.Width + 20); - pointOccurences.Y = drawingItem.Diagram.Scale * (drawingItem.Location.Y + drawingItem.Size.Height - 17); + bool compactLayoutDensity = drawingItem.Diagram.CompactLayoutDensity; + pointOccurences.X = drawingItem.Diagram.Scale * (drawingItem.Location.X + drawingItem.Size.Width + (compactLayoutDensity ? +20 : -10)); + pointOccurences.Y = drawingItem.Diagram.Scale * (drawingItem.Location.Y + drawingItem.Size.Height + (compactLayoutDensity ? -17 : +10)); string style = String.Format( "font-family:{0};font-size:{1}pt;fill:{2};text-anchor:end;dominant-baseline:central", drawingItem.SmallFont.Name, drawingItem.SmallFont.Size * fontScale, foregroundColor); diff --git a/XSDDiagrams/Rendering/DiagramTxtRenderer.cs b/XSDDiagrams/Rendering/DiagramTxtRenderer.cs index 65e4f50..4f1e35f 100644 --- a/XSDDiagrams/Rendering/DiagramTxtRenderer.cs +++ b/XSDDiagrams/Rendering/DiagramTxtRenderer.cs @@ -12,8 +12,6 @@ using System; using System.IO; -using System.Text; -using System.Drawing; using System.Text.RegularExpressions; using System.Collections.Generic; diff --git a/app.config b/app.config index 9448af8..1b4be13 100644 --- a/app.config +++ b/app.config @@ -1,3 +1,30 @@ - + + +

+ + + + + + 1 + + + False + + + True + + + False + + + False + + + 8 + + + +