From 563c133676c9dd39c199cd3553405c909ca90869 Mon Sep 17 00:00:00 2001 From: Paul Larsen Date: Wed, 24 Sep 2025 13:23:24 -0400 Subject: [PATCH 1/7] C2022-003-Change-Textboxes-to-RTF-3 --- .../Exe/RefObj/ROEditor/ROEditor.cs | 231 +++++++++++++++++- .../Exe/RefObj/ROEditor/ROEditor.csproj | 4 + 2 files changed, 223 insertions(+), 12 deletions(-) diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs index 806ee734..91ae4fac 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs +++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs @@ -372,6 +372,8 @@ namespace ROEditor private System.Windows.Forms.TreeView roTreeView; private System.Windows.Forms.ListView roListView; private System.Windows.Forms.ToolBar tbar; + + //this.ribbonControl1 = new DevComponents.DotNetBar.RibbonControl(); private bool _duplicate_active; private bool duplicate_active { @@ -1281,7 +1283,16 @@ namespace ROEditor System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); this.imageListRoTree = new System.Windows.Forms.ImageList(this.components); this.splitter1 = new System.Windows.Forms.Splitter(); - this.mainMenu1 = new System.Windows.Forms.MainMenu(this.components); + this.ribbonControl1 = new DevComponents.DotNetBar.RibbonControl(); + this.ribbonBar1 = new DevComponents.DotNetBar.RibbonBar(); + this.rbtnSave = new DevComponents.DotNetBar.ButtonItem(); + this.rbtnCancel = new DevComponents.DotNetBar.ButtonItem(); + this.rbtnRestore = new DevComponents.DotNetBar.ButtonItem(); + this.rbtnSaveAs = new DevComponents.DotNetBar.ButtonItem(); + this.rbtnDuplicate = new DevComponents.DotNetBar.ButtonItem(); + this.rbtnZoom = new DevComponents.DotNetBar.ButtonItem(); + this.rbtnSymbols = new DevComponents.DotNetBar.ButtonItem(); + this.mainMenu1 = new System.Windows.Forms.MainMenu(this.components); this.menuRO = new System.Windows.Forms.MenuItem(); this.menuRONew = new System.Windows.Forms.MenuItem(); this.menuNewGroup = new System.Windows.Forms.MenuItem(); @@ -1323,10 +1334,60 @@ namespace ROEditor this.lblDuplicateRO = new System.Windows.Forms.Label(); this.panel1.SuspendLayout(); this.SuspendLayout(); - // - // imageListRoTree - // - this.imageListRoTree.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageListRoTree.ImageStream"))); + // + // + // DotNetBar + + // + // + // + this.ribbonPanel1 = new DevComponents.DotNetBar.RibbonPanel(); + this.ribbonControl1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.ribbonControl1.CaptionVisible = true; + this.ribbonControl1.Controls.Add(this.ribbonPanel1); + this.ribbonControl1.Controls.Add(this.ribbonPanel2); + this.ribbonControl1.Dock = System.Windows.Forms.DockStyle.Top; + this.ribbonControl1.ForeColor = System.Drawing.Color.Black; + //this.ribbonControl1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] { + //this.qatCustomizeItem1}); + this.ribbonControl1.KeyTipsFont = new System.Drawing.Font("Tahoma", 7F); + this.ribbonControl1.Location = new System.Drawing.Point(0, 0); + this.ribbonControl1.Name = "ribbonControl1"; + this.ribbonControl1.QuickToolbarItems.AddRange(new DevComponents.DotNetBar.BaseItem[] { + this.rbtnSave, + this.rbtnCancel, + this.rbtnRestore, + this.rbtnSaveAs, + this.rbtnDuplicate, + this.rbtnZoom, + this.rbtnSymbols}); + this.ribbonControl1.Size = new System.Drawing.Size(800, 50); + this.ribbonControl1.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.ribbonControl1.SystemText.MaximizeRibbonText = "&Maximize the Ribbon"; + this.ribbonControl1.SystemText.MinimizeRibbonText = "Mi&nimize the Ribbon"; + this.ribbonControl1.SystemText.QatAddItemText = "&Add to Quick Access Toolbar"; + this.ribbonControl1.SystemText.QatCustomizeMenuLabel = "Customize Quick Access Toolbar"; + this.ribbonControl1.SystemText.QatCustomizeText = "&Customize Quick Access Toolbar..."; + this.ribbonControl1.SystemText.QatDialogAddButton = "&Add >>"; + this.ribbonControl1.SystemText.QatDialogCancelButton = "Cancel"; + this.ribbonControl1.SystemText.QatDialogCaption = "Customize Quick Access Toolbar"; + this.ribbonControl1.SystemText.QatDialogCategoriesLabel = "&Choose commands from:"; + this.ribbonControl1.SystemText.QatDialogOkButton = "OK"; + this.ribbonControl1.SystemText.QatDialogPlacementCheckbox = "&Place Quick Access Toolbar below the Ribbon"; + this.ribbonControl1.SystemText.QatDialogRemoveButton = "&Remove"; + this.ribbonControl1.SystemText.QatPlaceAboveRibbonText = "&Place Quick Access Toolbar above the Ribbon"; + this.ribbonControl1.SystemText.QatPlaceBelowRibbonText = "&Place Quick Access Toolbar below the Ribbon"; + this.ribbonControl1.SystemText.QatRemoveItemText = "&Remove from Quick Access Toolbar"; + this.ribbonControl1.TabGroupHeight = 14; + this.ribbonControl1.TabIndex = 0; + this.ribbonControl1.Text = "ribbonControl1"; + + // + // + // + // imageListRoTree + // + this.imageListRoTree.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageListRoTree.ImageStream"))); this.imageListRoTree.TransparentColor = System.Drawing.Color.Transparent; this.imageListRoTree.Images.SetKeyName(0, ""); this.imageListRoTree.Images.SetKeyName(1, ""); @@ -1580,7 +1641,32 @@ namespace ROEditor this.tbtnSaveAs, this.tbtnDuplicate, this.tbtnZoom}); - this.tbar.DropDownArrows = true; + // + // + // + this.ribbonControl1.Controls.Add(this.ribbonPanel1); + this.ribbonControl1.Controls.Add(this.ribbonPanel2); + // + // + // + // ribbonControl1 + // + this.ribbonControl1.BackColor = System.Drawing.Color.White; + // + // + this.ribbonControl1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.ribbonControl1.CaptionVisible = true; + this.ribbonControl1.Controls.Add(this.ribbonPanel1); + this.ribbonControl1.Controls.Add(this.ribbonPanel2); + this.ribbonControl1.Dock = System.Windows.Forms.DockStyle.Top; + this.ribbonControl1.ForeColor = System.Drawing.Color.Black; + //this.ribbonControl1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] { + //this.qatCustomizeItem1}); + this.ribbonControl1.KeyTipsFont = new System.Drawing.Font("Tahoma", 7F); + this.ribbonControl1.Location = new System.Drawing.Point(0, 0); + this.ribbonControl1.Name = "ribbonControl1"; + + this.tbar.DropDownArrows = true; this.tbar.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.tbar.ImageList = this.imageListToolBar; this.tbar.Location = new System.Drawing.Point(0, 0); @@ -1590,10 +1676,65 @@ namespace ROEditor this.tbar.TabIndex = 0; this.tbar.TextAlign = System.Windows.Forms.ToolBarTextAlign.Right; this.tbar.ButtonClick += new System.Windows.Forms.ToolBarButtonClickEventHandler(this.tbar_OnClick); - // - // tbtnSave - // - this.tbtnSave.Enabled = false; + + // ribbonPanel1 + // + this.ribbonPanel1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.ribbonPanel1.Controls.Add(this.ribbonBar1); + this.ribbonPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.ribbonPanel1.Location = new System.Drawing.Point(0, 0); + this.ribbonPanel1.Name = "ribbonPanel1"; + this.ribbonPanel1.Padding = new System.Windows.Forms.Padding(3, 0, 3, 2); + this.ribbonPanel1.Size = new System.Drawing.Size(800, 154); + // + // + // + this.ribbonPanel1.Style.CornerType = DevComponents.DotNetBar.eCornerType.Square; + // + // + // + this.ribbonPanel1.StyleMouseDown.CornerType = DevComponents.DotNetBar.eCornerType.Square; + // + // + // + this.ribbonPanel1.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.ribbonPanel1.TabIndex = 1; + + // + // ribbonBar1 + // + this.ribbonBar1.AutoOverflowEnabled = true; + // + // + // + this.ribbonBar1.BackgroundMouseOverStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + // + // + // + this.ribbonBar1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.ribbonBar1.ContainerControlProcessDialogKey = true; + this.ribbonBar1.Dock = System.Windows.Forms.DockStyle.Left; + this.ribbonBar1.DragDropSupport = true; + this.ribbonBar1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F"; + this.ribbonBar1.Location = new System.Drawing.Point(3, 0); + this.ribbonBar1.Name = "ribbonBar1"; + this.ribbonBar1.Size = new System.Drawing.Size(794, 25); + this.ribbonBar1.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.ribbonBar1.TabIndex = 0; + this.ribbonBar1.Text = "ribbonBar1"; + // + // + // + this.ribbonBar1.TitleStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + // + // + // + this.ribbonBar1.TitleStyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square; + + // + // tbtnSave + // + this.tbtnSave.Enabled = false; this.tbtnSave.ImageIndex = 0; this.tbtnSave.Name = "tbtnSave"; this.tbtnSave.Text = "Save"; @@ -1663,8 +1804,9 @@ namespace ROEditor this.Controls.Add(this.panel1); this.Controls.Add(this.splitter1); this.Controls.Add(this.roTreeView); - this.Controls.Add(this.tbar); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + //this.Controls.Add(this.tbar); + this.Controls.Add(this.ribbonControl1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Menu = this.mainMenu1; this.Name = "Form1"; this.Text = "RO Edit"; @@ -1672,8 +1814,73 @@ namespace ROEditor this.ResumeLayout(false); this.PerformLayout(); + // + // rbtnSave + // + this.rbtnSave.Name = "rbtnSave"; + this.rbtnSave.Text = "Save"; + //this.rbtnSave.Click += new System.EventHandler(this.rbtnSave_Click); + //this.rbtnSave. + // + // + // rbtnCancel + // + this.rbtnCancel.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; + this.rbtnCancel.Name = "rbtnCancel"; + this.rbtnCancel.SubItemsExpandWidth = 24; + this.rbtnCancel.Text = "Cancel"; + // + // rbtnRestore + // + this.rbtnRestore.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; + this.rbtnRestore.Name = "rbtnRestore"; + this.rbtnRestore.SubItemsExpandWidth = 24; + this.rbtnRestore.Text = "Restore"; + // + // rbtnSaveAs + // + this.rbtnSaveAs.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; + this.rbtnSaveAs.Name = "rbtnSaveAs"; + this.rbtnSaveAs.SubItemsExpandWidth = 24; + this.rbtnSaveAs.Text = "Save As"; + // + // rbtnDuplicate + // + this.rbtnDuplicate.BeginGroup = true; + this.rbtnDuplicate.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; + this.rbtnDuplicate.Name = "rbtnDuplicate"; + this.rbtnDuplicate.SubItemsExpandWidth = 24; + this.rbtnDuplicate.Text = "Duplicate"; + // + // rbtnZoom + // + this.rbtnZoom.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; + this.rbtnZoom.Name = "rbtnZoom"; + this.rbtnZoom.SubItemsExpandWidth = 24; + this.rbtnZoom.Text = "Zoom"; + // + // + // tbtnSymbols + // + this.rbtnSymbols.KeyTips = "CS"; + this.rbtnSymbols.Name = "rbtnSymbols"; + this.rbtnSymbols.SubItemsExpandWidth = 14; + this.rbtnSymbols.Text = "Symbol"; + } + private DevComponents.DotNetBar.RibbonControl ribbonControl1; + private DevComponents.DotNetBar.RibbonPanel ribbonPanel1; + private DevComponents.DotNetBar.RibbonBar ribbonBar1; + private DevComponents.DotNetBar.RibbonPanel ribbonPanel2; + private DevComponents.DotNetBar.ButtonItem rbtnCancel; + private DevComponents.DotNetBar.ButtonItem rbtnRestore; + private DevComponents.DotNetBar.ButtonItem rbtnSaveAs; + private DevComponents.DotNetBar.ButtonItem rbtnDuplicate; + private DevComponents.DotNetBar.ButtonItem rbtnZoom; + private DevComponents.DotNetBar.ButtonItem rbtnSymbols; + private DevComponents.DotNetBar.ButtonItem rbtnSave; + //Cut/Paste (Move ROs) added as part of CSM-C2024-027 / Part of 2024 PROMS Upgrades private void menuROCut_Click(object sender, EventArgs e) { diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.csproj b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.csproj index 69260b95..3fc441b9 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.csproj +++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.csproj @@ -108,6 +108,10 @@ false + + False + ..\..\..\..\..\..\..\3rdPartyLibraries\DotNetBar\DotNetBar4.6Build\DevComponents.DotNetBar2.dll + System -- 2.49.1 From cc66eb53293f93fe622d06f8a3e570e76d64f732 Mon Sep 17 00:00:00 2001 From: Paul Larsen Date: Wed, 24 Sep 2025 16:26:44 -0400 Subject: [PATCH 2/7] C2022-003-Change-Textboxes-to-RTF-3 --- .../LibSource/ctlXMLEditLib/ctlXMLEdit.cs | 43 ++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEdit.cs b/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEdit.cs index e181526c..21dacaf0 100644 --- a/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEdit.cs +++ b/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEdit.cs @@ -237,12 +237,12 @@ namespace ctlXMLEditLib private bool dosaveflag; private VlnXmlElement editelem; private XmlDocument editdoc; - private TextBox zoomtextbox; + private RichTextBox zoomtextbox; // the following is used for handling images. Note that if we want to have more // than one image defined in an ro, this should be become a list. - private TextBox GraphicsFiletextbox; - private TextBox GraphicsWdtextbox; - private TextBox GraphicsHttextbox; + private RichTextBox GraphicsFiletextbox; + private RichTextBox GraphicsWdtextbox; + private RichTextBox GraphicsHttextbox; private System.Windows.Forms.Button btnFindFile; private string GraphicsText; private ToolTip zmtooltip; @@ -378,7 +378,7 @@ namespace ctlXMLEditLib private void SetRequiredFields(ArrayList reqfields) { Object o; - TextBox hwnd; + RichTextBox hwnd; string field, msg; int indx; foreach (string strfld in reqfields) @@ -405,7 +405,7 @@ namespace ctlXMLEditLib } else if (o != null) { - hwnd = (TextBox) o; + hwnd = (RichTextBox) o; if (hwnd.Tag != null) { TextBoxAttrTag tag = (TextBoxAttrTag) hwnd.Tag; @@ -419,7 +419,7 @@ namespace ctlXMLEditLib // C2021-026 If this is a Parent/Child field that has no value saved in the database // then use the parent's value and display it as grey colored text. - private void GetDefaultParentValue(TextBox tb, XmlNode node, string chldName) + private void GetDefaultParentValue(RichTextBox tb, XmlNode node, string chldName) { XmlNode parentNode = null; // PCChildren contains a list strings reprenting the Children setup in the current Working Draft Parent/Child property @@ -463,13 +463,13 @@ namespace ctlXMLEditLib private void DisplayFieldContents(XmlNode node) { Object o; - TextBox hwnd; + RichTextBox hwnd; XmlNode nd; // if we have an image, check it for validity, i.e. file exists, etc.?? foreach (string str in myHT.Keys) { o = myHT[str]; - hwnd = (TextBox) o; + hwnd = (RichTextBox)o; nd = node.SelectSingleNode(str); // if not found with just the string, search the tree. if (nd==null)nd = node.SelectSingleNode("*/"+str); @@ -546,7 +546,7 @@ namespace ctlXMLEditLib // height/width data of the image. if (GraphicsFiletextbox != null && GraphicsFiletextbox.Text != "") UpdateHtWd(); } - public TextBox GetGraphicsFiletextbox() + public RichTextBox GetGraphicsFiletextbox() { return GraphicsFiletextbox; } @@ -858,7 +858,7 @@ namespace ctlXMLEditLib // 'normalizedString') or a multiline text box(type is 'string'). Also, a radio // button is passed in if this was called to handle an element within a combo type. // This button is saved for a given text box so that initialization of these combo types can occur. - private string DisplayXmlSchemaSimpleType(XmlSchemaSimpleType simpleType, TextBox mytextbox, RadioButton radio, + private string DisplayXmlSchemaSimpleType(XmlSchemaSimpleType simpleType, RichTextBox mytextbox, RadioButton radio, bool img, string imgname) { // set up for text box tag, which stores whether field is required and @@ -909,9 +909,9 @@ namespace ctlXMLEditLib else { mytextbox.Multiline = true; - mytextbox.AcceptsReturn = true; + mytextbox.AcceptsTab = true; mytextbox.Height = (int) mytextbox.Font.GetHeight() * 4; - mytextbox.ScrollBars = ScrollBars.Vertical; + mytextbox.ScrollBars = RichTextBoxScrollBars.Vertical; zmtooltip.SetToolTip(mytextbox, "Press Shift F2 To Zoom"); } @@ -992,7 +992,7 @@ namespace ctlXMLEditLib radio.CheckedChanged += new System.EventHandler(this.radiocheckchg); gbox.Controls.Add(radio); - TextBox tb = new TextBox(); + RichTextBox tb = new RichTextBox(); tb.Location = new Point(boxx+20, y+25); if (!first) tb.Visible = false; myHT.Add(element.Name,tb); @@ -1144,8 +1144,8 @@ namespace ctlXMLEditLib } else { - TextBox mytextbox; - mytextbox = new TextBox(); + RichTextBox mytextbox; + mytextbox = new RichTextBox(); mytextbox.Location = new Point(screenx+indent, screeny); string tFieldName = (pcChildIdx == 0) ? CvtUserFldToFld(element.Name) : CvtUserFldToFld(pcChildFldName); mytextbox.Name = tFieldName; @@ -1391,7 +1391,7 @@ namespace ctlXMLEditLib // The following can be used to validate the text, i.e. check the text against // the pattern. this needs written yet (5/16/02) - private void MyValidatingCode(TextBox tb) + private void MyValidatingCode(RichTextBox tb) { //get the text box's tag which contains a flag for whether this is required & //if it has a pattern. If it has a pattern, validate the field against the pattern. @@ -1422,7 +1422,7 @@ namespace ctlXMLEditLib // save which box we're on, for zoom processing. private void textbox_zoombtn(object sender, System.EventArgs e) { - TextBox textbox = (TextBox) sender; + RichTextBox textbox = (RichTextBox) sender; if (textbox.Multiline == true || textbox == GraphicsFiletextbox) zoomtextbox = textbox; else @@ -1433,7 +1433,7 @@ namespace ctlXMLEditLib { try { - MyValidatingCode((TextBox) sender); + MyValidatingCode((RichTextBox) sender); } catch(Exception ex) @@ -1460,7 +1460,10 @@ namespace ctlXMLEditLib btnZoom_click(null, null); } } - + public void btnSymbols_click(object sender, System.EventArgs e) + { + + } public void btnZoom_click(object sender, System.EventArgs e) { //TextBox tb = (TextBox) sender; -- 2.49.1 From 37b4726925fff39a4612c572daba8d186c98c8fe Mon Sep 17 00:00:00 2001 From: Paul Larsen Date: Wed, 24 Sep 2025 22:39:37 -0400 Subject: [PATCH 3/7] C2022-003-Change-Textboxes-to-RTF-3 --- PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs index 91ae4fac..04bad127 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs +++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs @@ -353,10 +353,10 @@ namespace ROEditor private System.Windows.Forms.MenuItem menuEditDelete; private System.Windows.Forms.MenuItem menuEditSelAll; private TreeNode LastSelectedNode; - private TextBox _CurrentTextBox; // currently selected TextBox field + private RichTextBox _CurrentTextBox; // currently selected TextBox field public static string[] PCChildren; //C2021-026 list of Parent/Child Children - public TextBox CurrentTextBox + public RichTextBox CurrentTextBox { get { return _CurrentTextBox; } set { _CurrentTextBox = value; } @@ -1107,14 +1107,14 @@ namespace ROEditor protected void ctlXMLEdit2_ClickControl(object sender, EventArgs e) { - TextBox tmpTxtbx = new TextBox(); + RichTextBox tmpTxtbx = new RichTextBox(); CurrentTextBox = null; roTreeView_ResetEditMenu(); if (sender.GetType() == tmpTxtbx.GetType()) { - tmpTxtbx = (TextBox)sender; + tmpTxtbx = (RichTextBox)sender; CurrentTextBox = tmpTxtbx; // the text box currently selected if (CurrentTextBox.Multiline) -- 2.49.1 From 52583a05f6b55513708b2268d88fc3298f277574 Mon Sep 17 00:00:00 2001 From: Paul Larsen Date: Thu, 25 Sep 2025 08:24:20 -0400 Subject: [PATCH 4/7] C2022-003-Change-Textboxes-to-RTF-3 --- PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs index 04bad127..6bcaf249 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs +++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs @@ -1345,7 +1345,7 @@ namespace ROEditor this.ribbonControl1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; this.ribbonControl1.CaptionVisible = true; this.ribbonControl1.Controls.Add(this.ribbonPanel1); - this.ribbonControl1.Controls.Add(this.ribbonPanel2); + //this.ribbonControl1.Controls.Add(this.ribbonPanel2); this.ribbonControl1.Dock = System.Windows.Forms.DockStyle.Top; this.ribbonControl1.ForeColor = System.Drawing.Color.Black; //this.ribbonControl1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] { @@ -1645,7 +1645,7 @@ namespace ROEditor // // this.ribbonControl1.Controls.Add(this.ribbonPanel1); - this.ribbonControl1.Controls.Add(this.ribbonPanel2); + //this.ribbonControl1.Controls.Add(this.ribbonPanel2); // // // @@ -1657,7 +1657,7 @@ namespace ROEditor this.ribbonControl1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; this.ribbonControl1.CaptionVisible = true; this.ribbonControl1.Controls.Add(this.ribbonPanel1); - this.ribbonControl1.Controls.Add(this.ribbonPanel2); + //this.ribbonControl1.Controls.Add(this.ribbonPanel2); this.ribbonControl1.Dock = System.Windows.Forms.DockStyle.Top; this.ribbonControl1.ForeColor = System.Drawing.Color.Black; //this.ribbonControl1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] { @@ -1677,6 +1677,8 @@ namespace ROEditor this.tbar.TextAlign = System.Windows.Forms.ToolBarTextAlign.Right; this.tbar.ButtonClick += new System.Windows.Forms.ToolBarButtonClickEventHandler(this.tbar_OnClick); + //ribbonBar1. + // ribbonPanel1 // this.ribbonPanel1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; -- 2.49.1 From 9023cc76a0d955af8ea0632172b17fec37be599d Mon Sep 17 00:00:00 2001 From: Paul Larsen Date: Wed, 26 Nov 2025 14:31:59 -0500 Subject: [PATCH 5/7] C2022-003-Change-Textboxes-to-RTF-3 --- .../Exe/RefObj/ROEditor/FieldCombFrm.cs | 16 +- .../Exe/RefObj/ROEditor/ROEditor.cs | 2018 +++++++++------- .../Exe/RefObj/ROEditor/ROEditor.csproj | 9 + .../Exe/RefObj/ROEditor/ROEditor.resx | 4 +- .../Exe/RefObj/ROEditor/ReferencedObjects.sln | 2 + .../LibSource/RODBInterface/RODBInterface.cs | 7 + .../RODBInterface/RODBInterface.csproj | 3 + .../LibSource/ctlXMLEditLib/ZoomDialog.cs | 6 +- .../LibSource/ctlXMLEditLib/ctlXMLEdit.cs | 267 ++- .../ctlXMLEditLib/ctlXMLEditLib.csproj | 4 + .../Config/ROFSTLookup.cs | 11 +- .../DisplayRO.Designer.cs | 9 +- PROMS/Volian.Controls.Library/DisplayRO.cs | 33 +- PROMS/Volian.Controls.Library/DisplayRO.resx | 14 +- PROMS/Volian.Controls.Library/StepRTB.cs | 10 +- .../Volian.Controls.Library/StepTabRibbon.cs | 53 + .../StepTabRibbon.designer.cs | Bin 575428 -> 575414 bytes .../StepTabRibbon.resx | 2083 ++++++++--------- 18 files changed, 2615 insertions(+), 1934 deletions(-) diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/FieldCombFrm.cs b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/FieldCombFrm.cs index d3dcb25c..fc26330c 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/FieldCombFrm.cs +++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/FieldCombFrm.cs @@ -96,10 +96,10 @@ namespace ROEditor private System.Windows.Forms.Label lblW2; private System.Windows.Forms.Label lblW3; private System.Windows.Forms.Label lblW4; - private System.Windows.Forms.TextBox tbSingleTxtWid; - private System.Windows.Forms.TextBox tbVariableTxtWid; - private System.Windows.Forms.TextBox tbTableWid; - private System.Windows.Forms.TextBox tbXYPlotWid; + private System.Windows.Forms.RichTextBox tbSingleTxtWid; // RO Editor add symbols C2025 - 003 + private System.Windows.Forms.RichTextBox tbVariableTxtWid; + private System.Windows.Forms.RichTextBox tbTableWid; + private System.Windows.Forms.RichTextBox tbXYPlotWid; private System.Windows.Forms.Button btnOK; private System.Windows.Forms.Button btnCancel; /// @@ -218,10 +218,10 @@ namespace ROEditor this.lblFieldName = new System.Windows.Forms.Label(); this.tbFieldName = new System.Windows.Forms.TextBox(); this.gbAlternatives = new System.Windows.Forms.GroupBox(); - this.tbXYPlotWid = new System.Windows.Forms.TextBox(); - this.tbTableWid = new System.Windows.Forms.TextBox(); - this.tbVariableTxtWid = new System.Windows.Forms.TextBox(); - this.tbSingleTxtWid = new System.Windows.Forms.TextBox(); + this.tbXYPlotWid = new System.Windows.Forms.RichTextBox(); // RO Editor add symbols C2025 - 003 + this.tbTableWid = new System.Windows.Forms.RichTextBox(); + this.tbVariableTxtWid = new System.Windows.Forms.RichTextBox(); + this.tbSingleTxtWid = new System.Windows.Forms.RichTextBox(); this.lblW4 = new System.Windows.Forms.Label(); this.lblW3 = new System.Windows.Forms.Label(); this.lblW2 = new System.Windows.Forms.Label(); diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs index 6bcaf249..7bce4f88 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs +++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs @@ -302,6 +302,12 @@ using Org.Mentalis.Files; using System.Runtime.InteropServices; using System.Linq; using System.Collections.Generic; +using Volian.Controls.Library; +using VEPROMS.CSLA.Library; +using System.Xml; +using System.Drawing.Text; +using System.Drawing.Drawing2D; +using System.Text.RegularExpressions; //using IniFileIO; @@ -343,7 +349,7 @@ namespace ROEditor private System.Windows.Forms.MenuItem menuROProperties; private System.Windows.Forms.MenuItem menuROExit; private System.Windows.Forms.MenuItem menuItem1; - + private XmlDocument myroXmlDoc; private VlnXmlElement newone; private TreeNode TreeNewparent; @@ -355,8 +361,9 @@ namespace ROEditor private TreeNode LastSelectedNode; private RichTextBox _CurrentTextBox; // currently selected TextBox field public static string[] PCChildren; //C2021-026 list of Parent/Child Children + private StepTabRibbon _MyStepTabRibbon; - public RichTextBox CurrentTextBox + public RichTextBox CurrentTextBox { get { return _CurrentTextBox; } set { _CurrentTextBox = value; } @@ -367,7 +374,7 @@ namespace ROEditor private VlnXmlElement rootXml; private TreeNode rootNode; - + private System.Windows.Forms.ImageList imageListRoTree; private System.Windows.Forms.TreeView roTreeView; private System.Windows.Forms.ListView roListView; @@ -381,25 +388,20 @@ namespace ROEditor set { _duplicate_active = value; - // C2015-017 hide the label indicating user is working with a duplicate of an exiting RO + // C2015-017 hide the label indicating user is working with a duplicate of an exiting RO lblDuplicateRO.Visible = value; } } + private const int ROGROUPIMAGE = 0; private System.Windows.Forms.Panel panel2; private const int ROIMAGE = 1; private Color MULTISELECTCOLOR = Color.LightGreen; //back color that multiselected ROs will show - private ToolBarButton tbtnSave; - private ToolBarButton tbtnRestore; - private ToolBarButton tbtnCancel; - private ToolBarButton tbtnSaveAs; - private ToolBarButton tbtnDuplicate; private System.Windows.Forms.MenuItem menuItem2; private System.Windows.Forms.ImageList imageListToolBar; private Label lblDuplicateRO; - private ToolBarButton tbtnZoom; public Form1(string PassedInPath, string specificro) { @@ -407,6 +409,7 @@ namespace ROEditor // Required for Windows Form Designer support // InitializeComponent(); + getSymbols(); // B2019-082 set the date format on the VEPROMS.exe thread to U.S. for i/o of a date string // this is to correct an issue for a UAE customer who could not open some procedures due to the desktop date setting using the "DD/MM/YYYY" instead of the "MM/DD/YYYY" format // NOTE: not doing the "Using System.Threading;" statement at beginning of file because it conflicts with the declaration of the "Timer" variable @@ -414,10 +417,10 @@ namespace ROEditor // The data path the was passed in. DbConnectPath = PassedInPath; - + // Setup the context menu MenuItem[] ContextMenuItemList = new MenuItem[8]; - ContextMenuItemList[0] = new MenuItem("Expand/Collaspe",new EventHandler(roTreeView_ToggleExpandCollapse)); + ContextMenuItemList[0] = new MenuItem("Expand/Collaspe", new EventHandler(roTreeView_ToggleExpandCollapse)); ContextMenuItemList[1] = menuRONew.CloneMenu(); ContextMenuItemList[2] = menuROEdit.CloneMenu(); ContextMenuItemList[3] = menuROCut.CloneMenu(); @@ -465,12 +468,12 @@ namespace ROEditor } } myroXmlDoc = myrodb.RODB_GetRoot(); - rootXml = (VlnXmlElement) myroXmlDoc.FirstChild; - rootNode = new TreeNode("Referenced Objects",ROGROUPIMAGE,ROGROUPIMAGE); + rootXml = (VlnXmlElement)myroXmlDoc.FirstChild; + rootNode = new TreeNode("Referenced Objects", ROGROUPIMAGE, ROGROUPIMAGE); rootNode.Tag = rootXml; roTreeView.Nodes.Add(rootNode); roTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.roTreeView_AfterSelect); - roTreeView.DoubleClick += new System.EventHandler(this.roTreeView_OnDoubleClick); + roTreeView.DoubleClick += new System.EventHandler(this.roTreeView_OnDoubleClick); roTreeView.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.roTreeView_BeforeExpand); roTreeView.Sorted = true; roTreeView.ContextMenu = treePopupMenu; @@ -479,11 +482,11 @@ namespace ROEditor // For each group, get its subgroup. bool success = myrodb.RODB_GetRootGroups((VlnXmlElement)myroXmlDoc.FirstChild); if (success == false) this.Close(); - VlnXmlElement group = (VlnXmlElement) myroXmlDoc.FirstChild.FirstChild; + VlnXmlElement group = (VlnXmlElement)myroXmlDoc.FirstChild.FirstChild; while (group != null) { // Add the top groups to tree control as a node. - TreeNode grnode = new TreeNode(CvtFldToUserFld(group.InnerText),ROGROUPIMAGE,ROGROUPIMAGE); + TreeNode grnode = new TreeNode(CvtFldToUserFld(group.InnerText), ROGROUPIMAGE, ROGROUPIMAGE); grnode.Tag = group; rootNode.Nodes.Add(grnode); string haskids = group.GetAttribute("HasChild"); @@ -494,24 +497,25 @@ namespace ROEditor subch.Tag = group; grnode.Nodes.Add(subch); } - group = (VlnXmlElement) group.NextSibling; + group = (VlnXmlElement)group.NextSibling; } newone = null; rootNode.Expand(); duplicate_active = false; if (specificro != null) DoSpecificRO(specificro); } + private void DoSpecificRO(string specificro) { // if a specific RO was passed in. Load the xml tree from it to the root & then // edit it through the ctlXmledit. // from the input tbl string, get a table name. ArrayList levelRecids = new ArrayList(); - int itbl = System.Convert.ToInt32(specificro.Substring(0,4),16); - string stbl = System.Convert.ToString(itbl,10); - string pstbl = stbl.PadLeft(6,'0'); + int itbl = System.Convert.ToInt32(specificro.Substring(0, 4), 16); + string stbl = System.Convert.ToString(itbl, 10); + string pstbl = stbl.PadLeft(6, '0'); string tbname = "RO" + pstbl; - string recid = specificro.Substring(4,8); + string recid = specificro.Substring(4, 8); // read in this element from the table. VlnXmlElement spro; @@ -545,29 +549,29 @@ namespace ROEditor else parentid = null; } - + // Now hook this into the top part of tree by loading data into // xml & hooking it into the tree control. string attrele; string attrspro; TreeNode trnd = rootNode.FirstNode; VlnXmlElement ele; - for (int i=levelRecids.Count-1; i>=0; i--) + for (int i = levelRecids.Count - 1; i >= 0; i--) { - ele = (VlnXmlElement) trnd.Tag; - attrele = ele.GetAttribute((i==levelRecids.Count-1)?"Table":"RecID"); - if (i==levelRecids.Count-1) + ele = (VlnXmlElement)trnd.Tag; + attrele = ele.GetAttribute((i == levelRecids.Count - 1) ? "Table" : "RecID"); + if (i == levelRecids.Count - 1) attrspro = spro.GetAttribute("Table"); else - attrspro = (string) levelRecids[i]; + attrspro = (string)levelRecids[i]; while (attrele != attrspro) { // get next one. trnd = trnd.NextNode; - ele = (VlnXmlElement) trnd.Tag; - attrele = ele.GetAttribute((i==levelRecids.Count-1)?"Table":"RecID"); + ele = (VlnXmlElement)trnd.Tag; + attrele = ele.GetAttribute((i == levelRecids.Count - 1) ? "Table" : "RecID"); } - if (trnd == null) + if (trnd == null) { MessageBox.Show("Error editting RO"); return; @@ -576,17 +580,17 @@ namespace ROEditor trnd = trnd.FirstNode; } // lastly select the active node, this will load up everything we need. - if (trnd == null) + if (trnd == null) { MessageBox.Show("Error editting RO"); return; } - ele = (VlnXmlElement) trnd.Tag; + ele = (VlnXmlElement)trnd.Tag; attrele = ele.GetAttribute("RecID"); while (attrele != spro.GetAttribute("RecID")) { trnd = trnd.NextNode; - ele = (VlnXmlElement) trnd.Tag; + ele = (VlnXmlElement)trnd.Tag; attrele = ele.GetAttribute("RecID"); } if (trnd == null) @@ -597,14 +601,14 @@ namespace ROEditor roTreeView.SelectedNode = trnd; } - protected void roTreeView_AfterSelect (object sender, + protected void roTreeView_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) { TreeNode PreviousNode = LastSelectedNode; // if the same node was selected, don't do anything. if (LastSelectedNode != null && LastSelectedNode.Equals(roTreeView.SelectedNode)) return; - + TreeNode CurrentNode = roTreeView.SelectedNode; if (LastSelectedNode == null) LastSelectedNode = CurrentNode; @@ -616,29 +620,29 @@ namespace ROEditor if (retval == -1) // cancel { roTreeView.SelectedNode = LastSelectedNode; - + return; } LastSelectedNode = CurrentNode; } // if selected to make new, but didn't add any data, remove it. - if (newone!=null) + if (newone != null) { XmlNode parent = newone.ParentNode; parent.RemoveChild(newone); - newone=null; + newone = null; } /* enable/disable menu items */ // Enable the Save item if changes were made // Just copy the state of the Save Button - menuROSave.Enabled = tbtnSave.Enabled; - roTreeView.ContextMenu.MenuItems[6].Enabled = tbtnSave.Enabled; + menuROSave.Enabled = rbtnSave.Enabled; //RO Editor add symbols C2025-003 + roTreeView.ContextMenu.MenuItems[6].Enabled = rbtnSave.Enabled; // Should the properties menu item be available? - VlnXmlElement curelem = (VlnXmlElement) CurrentNode.Tag; + VlnXmlElement curelem = (VlnXmlElement)CurrentNode.Tag; if (curelem.Name == "vlnGroup") menuROProperties.Enabled = true; else @@ -692,14 +696,14 @@ namespace ROEditor { VlnXmlElement curelemforNodeIter = (VlnXmlElement)nodeIter.Tag; if (curelemforNodeIter.Name != "RO_Root" && curelemforNodeIter.Name != "vlnGroup") - { + { nodeIter.BackColor = MULTISELECTCOLOR; ROsSelectedforMultiMove.Add(nodeIter); } } while (nodeIter != CurrentNode && (nodeIter = nodeIter.NextNode) != null); } - else + else { //Traverse Up TreeNode nodeIter = PreviousNode; @@ -748,18 +752,18 @@ namespace ROEditor return fldname; // a digit cannot start an xml fieldname, prepend a "__" to it. string tmp0; - if (char.IsDigit(fldname,0)) + if (char.IsDigit(fldname, 0)) tmp0 = "__" + fldname; else tmp0 = fldname; // an xml fieldname cannot have a space, change it to a "__" - string tmpstr = tmp0.Replace(" ","__"); + string tmpstr = tmp0.Replace(" ", "__"); int len = tmpstr.Length; int cnt = 0; // this is also our sequence that tells us the follow 3 digits is the ascii number (base 10) // of the character we replaced. - string OKpunch = "-._"; + string OKpunch = "-._"; string outstr = ""; int decval; @@ -767,7 +771,7 @@ namespace ROEditor while (cnt < len) { char tmpchr = tmpstr[cnt]; - if(!char.IsLetterOrDigit(tmpchr)&& (OKpunch.IndexOf(tmpchr) == -1) ) + if (!char.IsLetterOrDigit(tmpchr) && (OKpunch.IndexOf(tmpchr) == -1)) { decval = tmpchr; outstr += OKpunch + decval.ToString("D3"); @@ -786,39 +790,39 @@ namespace ROEditor string tmpstr0; if (fldname.Length < 2) return fldname; // an xml element name cannot begin with a digit. we had prepended a "__" - if (fldname.Substring(0,2) == "__" && char.IsDigit(fldname,2)) - tmpstr0 = fldname.Substring(2,fldname.Length-2); + if (fldname.Substring(0, 2) == "__" && char.IsDigit(fldname, 2)) + tmpstr0 = fldname.Substring(2, fldname.Length - 2); else tmpstr0 = fldname; // an xml element name cannot have a space, we converted to a "__" - string tmpstr = tmpstr0.Replace("__"," "); + string tmpstr = tmpstr0.Replace("__", " "); int len = tmpstr.Length; int cur = 0; // this is also our sequence that tells us the follow 3 digits is the ascii number (base 10) // of the character we replaced. - string OKpunch = "-._"; + string OKpunch = "-._"; string outstr = ""; int decval, indx; - if (tmpstr.Length <6) + if (tmpstr.Length < 6) indx = -1; else - indx=tmpstr.IndexOf(OKpunch,cur); + indx = tmpstr.IndexOf(OKpunch, cur); string asc_spchar; - while (indx>=0) + while (indx >= 0) { - outstr += tmpstr.Substring(cur,indx-cur); - asc_spchar = tmpstr.Substring(indx+3,3); - decval = System.Convert.ToInt16(asc_spchar,10); + outstr += tmpstr.Substring(cur, indx - cur); + asc_spchar = tmpstr.Substring(indx + 3, 3); + decval = System.Convert.ToInt16(asc_spchar, 10); outstr += System.Convert.ToChar(decval).ToString(); - cur = indx+6; - if (cur+6 > len) + cur = indx + 6; + if (cur + 6 > len) indx = -1; else - indx = tmpstr.IndexOf(OKpunch,cur); + indx = tmpstr.IndexOf(OKpunch, cur); } - if (cur 0); } - tbtnSave.Enabled = true; - tbtnRestore.Enabled = true; + rbtnSave.Enabled = true; + rbtnRestore.Enabled = true; if (newone == null) - { tbtnSaveAs.Enabled = true; } + { rbtnSaveAs.Enabled = true; } else - { tbtnSaveAs.Enabled = false; } - tbtnCancel.Enabled = true; - menuROSave.Enabled = tbtnSave.Enabled; + { rbtnSaveAs.Enabled = false; } + rbtnCancel.Enabled = true; + + menuROSave.Enabled = rbtnSave.Enabled; //B2021-080 set the mysavexml flag to true to ensure the text change will be saved - if (this.CurrentTextBox != null && this.CurrentTextBox.Parent !=null) + if (this.CurrentTextBox != null && this.CurrentTextBox.Parent != null) (this.CurrentTextBox.Parent as ctlXMLEdit).mysavexml = true; } @@ -1194,39 +1203,39 @@ namespace ROEditor string kidsloaded; haskids = elem.GetAttribute("HasChild"); kidsloaded = elem.GetAttribute("ChildLoaded"); - if (haskids == "True" && kidsloaded == "False" ) + if (haskids == "True" && kidsloaded == "False") { // if there's a dummy tree node (used to have tree control expansion for // items not yet loaded, delete child in tree control) - XmlNode tmpnode = (XmlNode) elem; + XmlNode tmpnode = (XmlNode)elem; XmlNode chldnode; VlnXmlElement echild; if (enode.FirstNode.Text == "VLN_DUMMY_FOR_TREE") enode.FirstNode.Remove(); Cursor.Current = Cursors.WaitCursor; - myrodb.RODB_GetChildData(elem,true); + myrodb.RODB_GetChildData(elem, true); chldnode = tmpnode.FirstChild; while (chldnode != null) { if (chldnode is VlnXmlElement) { - echild = (VlnXmlElement) chldnode; + echild = (VlnXmlElement)chldnode; TreeNode chldnd; - if (echild.Name == "vlnGroup") + if (echild.Name == "vlnGroup") { - chldnd = new TreeNode(echild.GetAttribute("MenuTitle"),ROGROUPIMAGE,ROGROUPIMAGE); + chldnd = new TreeNode(echild.GetAttribute("MenuTitle"), ROGROUPIMAGE, ROGROUPIMAGE); chldnd.Tag = echild; enode.Nodes.Add(chldnd); // add a 'dummy' node to tree if there are any children - string haskids1="False"; - string kidsloaded1="False"; - if (echild.HasAttribute("HasChild")==true) + string haskids1 = "False"; + string kidsloaded1 = "False"; + if (echild.HasAttribute("HasChild") == true) haskids1 = echild.GetAttribute("HasChild"); - if (echild.HasAttribute("ChildLoaded")==true) + if (echild.HasAttribute("ChildLoaded") == true) kidsloaded1 = echild.GetAttribute("ChildLoaded"); - if (haskids1=="True" && kidsloaded1=="False") + if (haskids1 == "True" && kidsloaded1 == "False") { TreeNode subch = new TreeNode("VLN_DUMMY_FOR_TREE"); - chldnd.Nodes.Add(subch); + chldnd.Nodes.Add(subch); } } else @@ -1236,9 +1245,9 @@ namespace ROEditor // include these in the tree. int levelcnt = chldnode.ChildNodes.Count; string TheMenuTitle = echild.GetAttribute("MenuTitle"); - if (levelcnt>=1 && !TheMenuTitle.Equals("")) + if (levelcnt >= 1 && !TheMenuTitle.Equals("")) { - chldnd = new TreeNode(TheMenuTitle,ROIMAGE,ROIMAGE); + chldnd = new TreeNode(TheMenuTitle, ROIMAGE, ROIMAGE); chldnd.Tag = echild; chldnd.Name = echild.GetAttribute("RecID"); enode.Nodes.Add(chldnd); @@ -1247,11 +1256,11 @@ namespace ROEditor } chldnode = chldnode.NextSibling; } - Cursor.Current = Cursors.Default; + Cursor.Current = Cursors.Default; } } - protected void roTreeView_BeforeExpand(object sender, + protected void roTreeView_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e) { LoadKids(e.Node); @@ -1260,16 +1269,16 @@ namespace ROEditor /// /// Clean up any resources being used. /// - protected override void Dispose( bool disposing ) + protected override void Dispose(bool disposing) { - if( disposing ) + if (disposing) { - if (components != null) + if (components != null) { components.Dispose(); } } - base.Dispose( disposing ); + base.Dispose(disposing); } #region Windows Form Designer generated code @@ -1279,12 +1288,13 @@ namespace ROEditor /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); - this.imageListRoTree = new System.Windows.Forms.ImageList(this.components); - this.splitter1 = new System.Windows.Forms.Splitter(); + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); + this.imageListRoTree = new System.Windows.Forms.ImageList(this.components); + this.splitter1 = new System.Windows.Forms.Splitter(); this.ribbonControl1 = new DevComponents.DotNetBar.RibbonControl(); - this.ribbonBar1 = new DevComponents.DotNetBar.RibbonBar(); + this.ribbonPanel1 = new DevComponents.DotNetBar.RibbonPanel(); // RO Editor add symbols C2025 - 003 + this.ribbonBar1 = new DevComponents.DotNetBar.RibbonBar(); // RO Editor add symbols C2025 - 003 this.rbtnSave = new DevComponents.DotNetBar.ButtonItem(); this.rbtnCancel = new DevComponents.DotNetBar.ButtonItem(); this.rbtnRestore = new DevComponents.DotNetBar.ButtonItem(); @@ -1292,76 +1302,89 @@ namespace ROEditor this.rbtnDuplicate = new DevComponents.DotNetBar.ButtonItem(); this.rbtnZoom = new DevComponents.DotNetBar.ButtonItem(); this.rbtnSymbols = new DevComponents.DotNetBar.ButtonItem(); + this.galleryContainerSymbols = new DevComponents.DotNetBar.GalleryContainer(); this.mainMenu1 = new System.Windows.Forms.MainMenu(this.components); - this.menuRO = new System.Windows.Forms.MenuItem(); - this.menuRONew = new System.Windows.Forms.MenuItem(); - this.menuNewGroup = new System.Windows.Forms.MenuItem(); - this.menuNewRefObj = new System.Windows.Forms.MenuItem(); - this.menuItem1 = new System.Windows.Forms.MenuItem(); - this.menuROEdit = new System.Windows.Forms.MenuItem(); + this.menuRO = new System.Windows.Forms.MenuItem(); + this.menuRONew = new System.Windows.Forms.MenuItem(); + this.menuNewGroup = new System.Windows.Forms.MenuItem(); + this.menuNewRefObj = new System.Windows.Forms.MenuItem(); + this.menuItem1 = new System.Windows.Forms.MenuItem(); + this.menuROEdit = new System.Windows.Forms.MenuItem(); this.menuROCut = new System.Windows.Forms.MenuItem(); this.menuROPaste = new System.Windows.Forms.MenuItem(); this.menuRODelete = new System.Windows.Forms.MenuItem(); - this.menuROSave = new System.Windows.Forms.MenuItem(); - this.menuROProperties = new System.Windows.Forms.MenuItem(); - this.menuItem10 = new System.Windows.Forms.MenuItem(); - this.menuROExit = new System.Windows.Forms.MenuItem(); - this.menuEdit = new System.Windows.Forms.MenuItem(); - this.menuEditUndo = new System.Windows.Forms.MenuItem(); - this.menuItem3 = new System.Windows.Forms.MenuItem(); - this.menuEditCut = new System.Windows.Forms.MenuItem(); - this.menuEditCopy = new System.Windows.Forms.MenuItem(); - this.menuEditPaste = new System.Windows.Forms.MenuItem(); - this.menuEditDelete = new System.Windows.Forms.MenuItem(); - this.menuItem5 = new System.Windows.Forms.MenuItem(); - this.menuEditSelAll = new System.Windows.Forms.MenuItem(); - this.menuTools = new System.Windows.Forms.MenuItem(); - this.menuToolsROFST = new System.Windows.Forms.MenuItem(); - this.menuHelp = new System.Windows.Forms.MenuItem(); - this.menuHelpAbout = new System.Windows.Forms.MenuItem(); - this.menuItem2 = new System.Windows.Forms.MenuItem(); - this.panel1 = new System.Windows.Forms.Panel(); - this.panel2 = new System.Windows.Forms.Panel(); - this.roTreeView = new System.Windows.Forms.TreeView(); - this.tbar = new System.Windows.Forms.ToolBar(); - this.tbtnSave = new System.Windows.Forms.ToolBarButton(); - this.tbtnCancel = new System.Windows.Forms.ToolBarButton(); - this.tbtnRestore = new System.Windows.Forms.ToolBarButton(); - this.tbtnSaveAs = new System.Windows.Forms.ToolBarButton(); - this.tbtnDuplicate = new System.Windows.Forms.ToolBarButton(); - this.tbtnZoom = new System.Windows.Forms.ToolBarButton(); - this.imageListToolBar = new System.Windows.Forms.ImageList(this.components); - this.lblDuplicateRO = new System.Windows.Forms.Label(); - this.panel1.SuspendLayout(); - this.SuspendLayout(); - // - // - // DotNetBar - + this.menuROSave = new System.Windows.Forms.MenuItem(); + this.menuROProperties = new System.Windows.Forms.MenuItem(); + this.menuItem10 = new System.Windows.Forms.MenuItem(); + this.menuROExit = new System.Windows.Forms.MenuItem(); + this.menuEdit = new System.Windows.Forms.MenuItem(); + this.menuEditUndo = new System.Windows.Forms.MenuItem(); + this.menuItem3 = new System.Windows.Forms.MenuItem(); + this.menuEditCut = new System.Windows.Forms.MenuItem(); + this.menuEditCopy = new System.Windows.Forms.MenuItem(); + this.menuEditPaste = new System.Windows.Forms.MenuItem(); + this.menuEditDelete = new System.Windows.Forms.MenuItem(); + this.menuItem5 = new System.Windows.Forms.MenuItem(); + this.menuEditSelAll = new System.Windows.Forms.MenuItem(); + this.menuTools = new System.Windows.Forms.MenuItem(); + this.menuToolsROFST = new System.Windows.Forms.MenuItem(); + this.menuHelp = new System.Windows.Forms.MenuItem(); + this.menuHelpAbout = new System.Windows.Forms.MenuItem(); + this.menuItem2 = new System.Windows.Forms.MenuItem(); + this.panel1 = new System.Windows.Forms.Panel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.roTreeView = new System.Windows.Forms.TreeView(); + this.tbar = new System.Windows.Forms.ToolBar(); + this.imageListToolBar = new System.Windows.Forms.ImageList(this.components); + this.lblDuplicateRO = new System.Windows.Forms.Label(); + this.galleryContainerSymbolsCM = new DevComponents.DotNetBar.GalleryContainer(); + this.galleryContainerSymbolsCM3 = new DevComponents.DotNetBar.GalleryContainer(); + this.galleryContainerSymbolsGrid = new DevComponents.DotNetBar.GalleryContainer(); + this.galleryContainerSymbolsCM4 = new DevComponents.DotNetBar.GalleryContainer(); + this.ribbonControl1.SuspendLayout(); + this.ribbonPanel1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); // - // - // - this.ribbonPanel1 = new DevComponents.DotNetBar.RibbonPanel(); - this.ribbonControl1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + // imageListRoTree + // + this.imageListRoTree.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageListRoTree.ImageStream"))); + this.imageListRoTree.TransparentColor = System.Drawing.Color.Transparent; + this.imageListRoTree.Images.SetKeyName(0, ""); + this.imageListRoTree.Images.SetKeyName(1, ""); + // + // splitter1 + // + this.splitter1.Location = new System.Drawing.Point(220, 50); + this.splitter1.Name = "splitter1"; + this.splitter1.Size = new System.Drawing.Size(8, 569); + this.splitter1.TabIndex = 4; + this.splitter1.TabStop = false; + // + // ribbonControl1 + // + this.ribbonControl1.BackColor = System.Drawing.Color.White; + // + // + // + this.ribbonControl1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; // RO Editor add symbols C2025 - 003 this.ribbonControl1.CaptionVisible = true; this.ribbonControl1.Controls.Add(this.ribbonPanel1); - //this.ribbonControl1.Controls.Add(this.ribbonPanel2); this.ribbonControl1.Dock = System.Windows.Forms.DockStyle.Top; this.ribbonControl1.ForeColor = System.Drawing.Color.Black; - //this.ribbonControl1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] { - //this.qatCustomizeItem1}); this.ribbonControl1.KeyTipsFont = new System.Drawing.Font("Tahoma", 7F); this.ribbonControl1.Location = new System.Drawing.Point(0, 0); this.ribbonControl1.Name = "ribbonControl1"; + this.ribbonControl1.Padding = new System.Windows.Forms.Padding(0, 0, 0, 3); this.ribbonControl1.QuickToolbarItems.AddRange(new DevComponents.DotNetBar.BaseItem[] { - this.rbtnSave, - this.rbtnCancel, - this.rbtnRestore, - this.rbtnSaveAs, - this.rbtnDuplicate, - this.rbtnZoom, - this.rbtnSymbols}); - this.ribbonControl1.Size = new System.Drawing.Size(800, 50); + this.rbtnSave, + this.rbtnCancel, + this.rbtnRestore, + this.rbtnSaveAs, + this.rbtnDuplicate, + this.rbtnZoom, + this.rbtnSymbols}); + this.ribbonControl1.Size = new System.Drawing.Size(980, 50); this.ribbonControl1.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.ribbonControl1.SystemText.MaximizeRibbonText = "&Maximize the Ribbon"; this.ribbonControl1.SystemText.MinimizeRibbonText = "Mi&nimize the Ribbon"; @@ -1381,313 +1404,16 @@ namespace ROEditor this.ribbonControl1.TabGroupHeight = 14; this.ribbonControl1.TabIndex = 0; this.ribbonControl1.Text = "ribbonControl1"; - - // - // // - // imageListRoTree - // - this.imageListRoTree.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageListRoTree.ImageStream"))); - this.imageListRoTree.TransparentColor = System.Drawing.Color.Transparent; - this.imageListRoTree.Images.SetKeyName(0, ""); - this.imageListRoTree.Images.SetKeyName(1, ""); - // - // splitter1 - // - this.splitter1.Location = new System.Drawing.Point(220, 28); - this.splitter1.Name = "splitter1"; - this.splitter1.Size = new System.Drawing.Size(8, 591); - this.splitter1.TabIndex = 4; - this.splitter1.TabStop = false; - // - // mainMenu1 - // - this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { - this.menuRO, - this.menuEdit, - this.menuTools, - this.menuHelp, - this.menuItem2}); - // - // menuRO - // - this.menuRO.Index = 0; - this.menuRO.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { - this.menuRONew, - this.menuItem1, - this.menuROEdit, - this.menuROCut, - this.menuROPaste, - this.menuRODelete, - this.menuROSave, - this.menuROProperties, - this.menuItem10, - this.menuROExit}); - this.menuRO.Text = "RO"; - // - // menuRONew - // - this.menuRONew.Index = 0; - this.menuRONew.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { - this.menuNewGroup, - this.menuNewRefObj}); - this.menuRONew.Text = "New ..."; - // - // menuNewGroup - // - this.menuNewGroup.Index = 0; - this.menuNewGroup.Text = "Group"; - this.menuNewGroup.Click += new System.EventHandler(this.menuNewGroup_Click); - // - // menuNewRefObj - // - this.menuNewRefObj.Index = 1; - this.menuNewRefObj.Text = "Referenced Object"; - this.menuNewRefObj.Click += new System.EventHandler(this.menuNewRefObj_Click); - // - // menuItem1 - // - this.menuItem1.Index = 1; - this.menuItem1.Text = "-"; - // - // menuROEdit - // - this.menuROEdit.Enabled = false; - this.menuROEdit.Index = 2; - this.menuROEdit.Text = "Edit"; - this.menuROEdit.Click += new System.EventHandler(this.menuROEdit_Click); - // - // menuROCut - // - this.menuROCut.Enabled = false; - this.menuROCut.Index = 3; - this.menuROCut.Text = "Cut (Move RO)"; - this.menuROCut.Click += new System.EventHandler(this.menuROCut_Click); - // - // menuROPaste - // - this.menuROPaste.Enabled = false; - this.menuROPaste.Index = 4; - this.menuROPaste.Text = "Paste (Move RO)"; - this.menuROPaste.Click += new System.EventHandler(this.menuROPaste_Click); - // - // menuRODelete - // - this.menuRODelete.Index = 5; - this.menuRODelete.Text = "Delete"; - this.menuRODelete.Click += new System.EventHandler(this.menuRODelete_Click); - // - // menuROSave - // - this.menuROSave.Enabled = false; - this.menuROSave.Index = 6; - this.menuROSave.Text = "Save"; - this.menuROSave.Click += new System.EventHandler(this.menuROSave_Click); - // - // menuROProperties - // - this.menuROProperties.Index = 7; - this.menuROProperties.Text = "Properties"; - this.menuROProperties.Click += new System.EventHandler(this.menuROProperties_Click); - // - // menuItem10 - // - this.menuItem10.Index = 8; - this.menuItem10.Text = "-"; - // - // menuROExit - // - this.menuROExit.Index = 9; - this.menuROExit.Text = "Exit RO Editor"; - this.menuROExit.Click += new System.EventHandler(this.menuROExit_Click); - // - // menuEdit - // - this.menuEdit.Index = 1; - this.menuEdit.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { - this.menuEditUndo, - this.menuItem3, - this.menuEditCut, - this.menuEditCopy, - this.menuEditPaste, - this.menuEditDelete, - this.menuItem5, - this.menuEditSelAll}); - this.menuEdit.Text = "Edit"; - // - // menuEditUndo - // - this.menuEditUndo.Enabled = false; - this.menuEditUndo.Index = 0; - this.menuEditUndo.Text = "&Undo"; - this.menuEditUndo.Click += new System.EventHandler(this.menuEditUndo_Click); - // - // menuItem3 - // - this.menuItem3.Index = 1; - this.menuItem3.Text = "-"; - // - // menuEditCut - // - this.menuEditCut.Enabled = false; - this.menuEditCut.Index = 2; - this.menuEditCut.Text = "Cu&t"; - this.menuEditCut.Click += new System.EventHandler(this.menuEditCut_Click); - // - // menuEditCopy - // - this.menuEditCopy.Enabled = false; - this.menuEditCopy.Index = 3; - this.menuEditCopy.Text = "&Copy"; - this.menuEditCopy.Click += new System.EventHandler(this.menuEditCopy_Click); - // - // menuEditPaste - // - this.menuEditPaste.Enabled = false; - this.menuEditPaste.Index = 4; - this.menuEditPaste.Text = "&Paste"; - this.menuEditPaste.Click += new System.EventHandler(this.menuEditPaste_Click); - // - // menuEditDelete - // - this.menuEditDelete.Enabled = false; - this.menuEditDelete.Index = 5; - this.menuEditDelete.Text = "&Delete"; - this.menuEditDelete.Click += new System.EventHandler(this.menuEditDelete_Click); - // - // menuItem5 - // - this.menuItem5.Index = 6; - this.menuItem5.Text = "-"; - // - // menuEditSelAll - // - this.menuEditSelAll.Enabled = false; - this.menuEditSelAll.Index = 7; - this.menuEditSelAll.Text = "Select &All"; - this.menuEditSelAll.Click += new System.EventHandler(this.menuEditSelAll_Click); - // - // menuTools - // - this.menuTools.Index = 2; - this.menuTools.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { - this.menuToolsROFST}); - this.menuTools.Text = "Tools"; - // - // menuToolsROFST - // - this.menuToolsROFST.Index = 0; - this.menuToolsROFST.Text = "Create RO.FST"; - this.menuToolsROFST.Click += new System.EventHandler(this.menuToolsROFST_Click); - // - // menuHelp - // - this.menuHelp.Index = 3; - this.menuHelp.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { - this.menuHelpAbout}); - this.menuHelp.Text = "Help"; - // - // menuHelpAbout - // - this.menuHelpAbout.Index = 0; - this.menuHelpAbout.Text = "About"; - this.menuHelpAbout.Click += new System.EventHandler(this.menuHelpAbout_Click); - // - // menuItem2 - // - this.menuItem2.Index = 4; - this.menuItem2.Text = ""; - // - // panel1 - // - this.panel1.AutoScroll = true; - this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.panel1.Controls.Add(this.panel2); - this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel1.Location = new System.Drawing.Point(228, 28); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(752, 591); - this.panel1.TabIndex = 5; - // - // panel2 - // - this.panel2.AutoScroll = true; - this.panel2.Location = new System.Drawing.Point(0, 0); - this.panel2.Name = "panel2"; - this.panel2.Size = new System.Drawing.Size(235, 118); - this.panel2.TabIndex = 0; - this.panel2.Visible = false; - // - // roTreeView - // - this.roTreeView.Dock = System.Windows.Forms.DockStyle.Left; - this.roTreeView.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.roTreeView.ImageIndex = 0; - this.roTreeView.ImageList = this.imageListRoTree; - this.roTreeView.ItemHeight = 18; - this.roTreeView.Location = new System.Drawing.Point(0, 28); - this.roTreeView.Name = "roTreeView"; - this.roTreeView.SelectedImageIndex = 0; - this.roTreeView.Size = new System.Drawing.Size(220, 591); - this.roTreeView.TabIndex = 3; - this.roTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.roTreeView_AfterSelect_1); - // - // tbar - // - this.tbar.Buttons.AddRange(new System.Windows.Forms.ToolBarButton[] { - this.tbtnSave, - this.tbtnCancel, - this.tbtnRestore, - this.tbtnSaveAs, - this.tbtnDuplicate, - this.tbtnZoom}); - // - // - // - this.ribbonControl1.Controls.Add(this.ribbonPanel1); - //this.ribbonControl1.Controls.Add(this.ribbonPanel2); - // - // - // - // ribbonControl1 - // - this.ribbonControl1.BackColor = System.Drawing.Color.White; - // - // - this.ribbonControl1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; - this.ribbonControl1.CaptionVisible = true; - this.ribbonControl1.Controls.Add(this.ribbonPanel1); - //this.ribbonControl1.Controls.Add(this.ribbonPanel2); - this.ribbonControl1.Dock = System.Windows.Forms.DockStyle.Top; - this.ribbonControl1.ForeColor = System.Drawing.Color.Black; - //this.ribbonControl1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] { - //this.qatCustomizeItem1}); - this.ribbonControl1.KeyTipsFont = new System.Drawing.Font("Tahoma", 7F); - this.ribbonControl1.Location = new System.Drawing.Point(0, 0); - this.ribbonControl1.Name = "ribbonControl1"; - - this.tbar.DropDownArrows = true; - this.tbar.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tbar.ImageList = this.imageListToolBar; - this.tbar.Location = new System.Drawing.Point(0, 0); - this.tbar.Name = "tbar"; - this.tbar.ShowToolTips = true; - this.tbar.Size = new System.Drawing.Size(980, 28); - this.tbar.TabIndex = 0; - this.tbar.TextAlign = System.Windows.Forms.ToolBarTextAlign.Right; - this.tbar.ButtonClick += new System.Windows.Forms.ToolBarButtonClickEventHandler(this.tbar_OnClick); - - //ribbonBar1. - // ribbonPanel1 // - this.ribbonPanel1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.ribbonPanel1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; // RO Editor add symbols C2025 - 003 this.ribbonPanel1.Controls.Add(this.ribbonBar1); this.ribbonPanel1.Dock = System.Windows.Forms.DockStyle.Fill; this.ribbonPanel1.Location = new System.Drawing.Point(0, 0); this.ribbonPanel1.Name = "ribbonPanel1"; - this.ribbonPanel1.Padding = new System.Windows.Forms.Padding(3, 0, 3, 2); - this.ribbonPanel1.Size = new System.Drawing.Size(800, 154); + this.ribbonPanel1.Padding = new System.Windows.Forms.Padding(3, 0, 3, 3); + this.ribbonPanel1.Size = new System.Drawing.Size(980, 47); // // // @@ -1701,7 +1427,6 @@ namespace ROEditor // this.ribbonPanel1.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square; this.ribbonPanel1.TabIndex = 1; - // // ribbonBar1 // @@ -1720,7 +1445,7 @@ namespace ROEditor this.ribbonBar1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F"; this.ribbonBar1.Location = new System.Drawing.Point(3, 0); this.ribbonBar1.Name = "ribbonBar1"; - this.ribbonBar1.Size = new System.Drawing.Size(794, 25); + this.ribbonBar1.Size = new System.Drawing.Size(794, 44); this.ribbonBar1.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.ribbonBar1.TabIndex = 0; this.ribbonBar1.Text = "ribbonBar1"; @@ -1732,149 +1457,448 @@ namespace ROEditor // // this.ribbonBar1.TitleStyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square; - - // - // tbtnSave - // - this.tbtnSave.Enabled = false; - this.tbtnSave.ImageIndex = 0; - this.tbtnSave.Name = "tbtnSave"; - this.tbtnSave.Text = "Save"; - // - // tbtnCancel - // - this.tbtnCancel.Enabled = false; - this.tbtnCancel.ImageIndex = 1; - this.tbtnCancel.Name = "tbtnCancel"; - this.tbtnCancel.Text = "Cancel"; - // - // tbtnRestore - // - this.tbtnRestore.Enabled = false; - this.tbtnRestore.ImageIndex = 2; - this.tbtnRestore.Name = "tbtnRestore"; - this.tbtnRestore.Text = "Restore"; - // - // tbtnSaveAs - // - this.tbtnSaveAs.Enabled = false; - this.tbtnSaveAs.ImageIndex = 3; - this.tbtnSaveAs.Name = "tbtnSaveAs"; - this.tbtnSaveAs.Text = "Save As"; - // - // tbtnDuplicate - // - this.tbtnDuplicate.Enabled = false; - this.tbtnDuplicate.ImageIndex = 4; - this.tbtnDuplicate.Name = "tbtnDuplicate"; - this.tbtnDuplicate.Text = "Duplicate"; - // - // tbtnZoom - // - this.tbtnZoom.Enabled = false; - this.tbtnZoom.ImageIndex = 5; - this.tbtnZoom.Name = "tbtnZoom"; - this.tbtnZoom.Text = "Zoom"; - // - // imageListToolBar - // - this.imageListToolBar.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageListToolBar.ImageStream"))); - this.imageListToolBar.TransparentColor = System.Drawing.Color.Transparent; - this.imageListToolBar.Images.SetKeyName(0, ""); - this.imageListToolBar.Images.SetKeyName(1, ""); - this.imageListToolBar.Images.SetKeyName(2, ""); - this.imageListToolBar.Images.SetKeyName(3, ""); - this.imageListToolBar.Images.SetKeyName(4, ""); - this.imageListToolBar.Images.SetKeyName(5, ""); - // - // lblDuplicateRO - // - this.lblDuplicateRO.AutoSize = true; - this.lblDuplicateRO.ForeColor = System.Drawing.Color.Red; - this.lblDuplicateRO.Location = new System.Drawing.Point(570, 9); - this.lblDuplicateRO.Name = "lblDuplicateRO"; - this.lblDuplicateRO.Size = new System.Drawing.Size(139, 13); - this.lblDuplicateRO.TabIndex = 6; - this.lblDuplicateRO.Text = "Working With Duplicate RO"; - this.lblDuplicateRO.Visible = false; - // - // Form1 - // - this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); - this.ClientSize = new System.Drawing.Size(980, 619); - this.Controls.Add(this.lblDuplicateRO); - this.Controls.Add(this.panel1); - this.Controls.Add(this.splitter1); - this.Controls.Add(this.roTreeView); - //this.Controls.Add(this.tbar); - this.Controls.Add(this.ribbonControl1); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Menu = this.mainMenu1; - this.Name = "Form1"; - this.Text = "RO Edit"; - this.panel1.ResumeLayout(false); - this.ResumeLayout(false); - this.PerformLayout(); - // // rbtnSave // + this.rbtnSave.Enabled = false; this.rbtnSave.Name = "rbtnSave"; this.rbtnSave.Text = "Save"; - //this.rbtnSave.Click += new System.EventHandler(this.rbtnSave_Click); - //this.rbtnSave. - // + this.rbtnSave.Click += new System.EventHandler(this.rbtnSave_Click); // // rbtnCancel // this.rbtnCancel.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; + this.rbtnCancel.Enabled = false; this.rbtnCancel.Name = "rbtnCancel"; this.rbtnCancel.SubItemsExpandWidth = 24; this.rbtnCancel.Text = "Cancel"; + this.rbtnCancel.Click += new System.EventHandler(this.rbtnCancel_Click); // // rbtnRestore // this.rbtnRestore.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; + this.rbtnRestore.Enabled = false; this.rbtnRestore.Name = "rbtnRestore"; this.rbtnRestore.SubItemsExpandWidth = 24; this.rbtnRestore.Text = "Restore"; + this.rbtnRestore.Click += new System.EventHandler(this.rbtnRestore_Click); // // rbtnSaveAs // this.rbtnSaveAs.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; + this.rbtnSaveAs.Enabled = false; this.rbtnSaveAs.Name = "rbtnSaveAs"; this.rbtnSaveAs.SubItemsExpandWidth = 24; this.rbtnSaveAs.Text = "Save As"; + this.rbtnSaveAs.Click += new System.EventHandler(this.rbtnSaveAs_Click); // // rbtnDuplicate // this.rbtnDuplicate.BeginGroup = true; this.rbtnDuplicate.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; + this.rbtnDuplicate.Enabled = false; this.rbtnDuplicate.Name = "rbtnDuplicate"; this.rbtnDuplicate.SubItemsExpandWidth = 24; this.rbtnDuplicate.Text = "Duplicate"; + this.rbtnDuplicate.Click += new System.EventHandler(this.rbtnDuplicate_Click); // // rbtnZoom // this.rbtnZoom.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; + this.rbtnZoom.Enabled = false; this.rbtnZoom.Name = "rbtnZoom"; this.rbtnZoom.SubItemsExpandWidth = 24; this.rbtnZoom.Text = "Zoom"; - // + this.rbtnZoom.Click += new System.EventHandler(this.rbtnZoom_Click); // - // tbtnSymbols + // rbtnSymbols // + this.rbtnSymbols.AutoExpandOnClick = true; + this.rbtnSymbols.Enabled = false; this.rbtnSymbols.KeyTips = "CS"; this.rbtnSymbols.Name = "rbtnSymbols"; + this.rbtnSymbols.SubItems.AddRange(new DevComponents.DotNetBar.BaseItem[] { + this.galleryContainerSymbols}); this.rbtnSymbols.SubItemsExpandWidth = 14; - this.rbtnSymbols.Text = "Symbol"; + this.rbtnSymbols.Text = "Symbols"; + // + // galleryContainerSymbols + // + // + // + // + this.galleryContainerSymbols.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.galleryContainerSymbols.DefaultSize = new System.Drawing.Size(205, 150); + this.galleryContainerSymbols.MinimumSize = new System.Drawing.Size(58, 58); + this.galleryContainerSymbols.Name = "galleryContainerSymbols"; + // + // + // + this.galleryContainerSymbols.TitleMouseOverStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + // + // + // + this.galleryContainerSymbols.TitleStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + // + // mainMenu1 + // + this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { + this.menuRO, + this.menuEdit, + this.menuTools, + this.menuHelp, + this.menuItem2}); + // + // menuRO + // + this.menuRO.Index = 0; + this.menuRO.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { + this.menuRONew, + this.menuItem1, + this.menuROEdit, + this.menuROCut, + this.menuROPaste, + this.menuRODelete, + this.menuROSave, + this.menuROProperties, + this.menuItem10, + this.menuROExit}); + this.menuRO.Text = "RO"; + // + // menuRONew + // + this.menuRONew.Index = 0; + this.menuRONew.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { + this.menuNewGroup, + this.menuNewRefObj}); + this.menuRONew.Text = "New ..."; + // + // menuNewGroup + // + this.menuNewGroup.Index = 0; + this.menuNewGroup.Text = "Group"; + this.menuNewGroup.Click += new System.EventHandler(this.menuNewGroup_Click); + // + // menuNewRefObj + // + this.menuNewRefObj.Index = 1; + this.menuNewRefObj.Text = "Referenced Object"; + this.menuNewRefObj.Click += new System.EventHandler(this.menuNewRefObj_Click); + // + // menuItem1 + // + this.menuItem1.Index = 1; + this.menuItem1.Text = "-"; + // + // menuROEdit + // + this.menuROEdit.Enabled = false; + this.menuROEdit.Index = 2; + this.menuROEdit.Text = "Edit"; + this.menuROEdit.Click += new System.EventHandler(this.menuROEdit_Click); + // + // menuROCut + // + this.menuROCut.Enabled = false; + this.menuROCut.Index = 3; + this.menuROCut.Text = "Cut (Move RO)"; + this.menuROCut.Click += new System.EventHandler(this.menuROCut_Click); + // + // menuROPaste + // + this.menuROPaste.Enabled = false; + this.menuROPaste.Index = 4; + this.menuROPaste.Text = "Paste (Move RO)"; + this.menuROPaste.Click += new System.EventHandler(this.menuROPaste_Click); + // + // menuRODelete + // + this.menuRODelete.Index = 5; + this.menuRODelete.Text = "Delete"; + this.menuRODelete.Click += new System.EventHandler(this.menuRODelete_Click); + // + // menuROSave + // + this.menuROSave.Enabled = false; + this.menuROSave.Index = 6; + this.menuROSave.Text = "Save"; + this.menuROSave.Click += new System.EventHandler(this.menuROSave_Click); + // + // menuROProperties + // + this.menuROProperties.Index = 7; + this.menuROProperties.Text = "Properties"; + this.menuROProperties.Click += new System.EventHandler(this.menuROProperties_Click); + // + // menuItem10 + // + this.menuItem10.Index = 8; + this.menuItem10.Text = "-"; + // + // menuROExit + // + this.menuROExit.Index = 9; + this.menuROExit.Text = "Exit RO Editor"; + this.menuROExit.Click += new System.EventHandler(this.menuROExit_Click); + // + // menuEdit + // + this.menuEdit.Index = 1; + this.menuEdit.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { + this.menuEditUndo, + this.menuItem3, + this.menuEditCut, + this.menuEditCopy, + this.menuEditPaste, + this.menuEditDelete, + this.menuItem5, + this.menuEditSelAll}); + this.menuEdit.Text = "Edit"; + // + // menuEditUndo + // + this.menuEditUndo.Enabled = false; + this.menuEditUndo.Index = 0; + this.menuEditUndo.Text = "&Undo"; + this.menuEditUndo.Click += new System.EventHandler(this.menuEditUndo_Click); + // + // menuItem3 + // + this.menuItem3.Index = 1; + this.menuItem3.Text = "-"; + // + // menuEditCut + // + this.menuEditCut.Enabled = false; + this.menuEditCut.Index = 2; + this.menuEditCut.Text = "Cu&t"; + this.menuEditCut.Click += new System.EventHandler(this.menuEditCut_Click); + // + // menuEditCopy + // + this.menuEditCopy.Enabled = false; + this.menuEditCopy.Index = 3; + this.menuEditCopy.Text = "&Copy"; + this.menuEditCopy.Click += new System.EventHandler(this.menuEditCopy_Click); + // + // menuEditPaste + // + this.menuEditPaste.Enabled = false; + this.menuEditPaste.Index = 4; + this.menuEditPaste.Text = "&Paste"; + this.menuEditPaste.Click += new System.EventHandler(this.menuEditPaste_Click); + // + // menuEditDelete + // + this.menuEditDelete.Enabled = false; + this.menuEditDelete.Index = 5; + this.menuEditDelete.Text = "&Delete"; + this.menuEditDelete.Click += new System.EventHandler(this.menuEditDelete_Click); + // + // menuItem5 + // + this.menuItem5.Index = 6; + this.menuItem5.Text = "-"; + // + // menuEditSelAll + // + this.menuEditSelAll.Enabled = false; + this.menuEditSelAll.Index = 7; + this.menuEditSelAll.Text = "Select &All"; + this.menuEditSelAll.Click += new System.EventHandler(this.menuEditSelAll_Click); + // + // menuTools + // + this.menuTools.Index = 2; + this.menuTools.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { + this.menuToolsROFST}); + this.menuTools.Text = "Tools"; + // + // menuToolsROFST + // + this.menuToolsROFST.Index = 0; + this.menuToolsROFST.Text = "Create RO.FST"; + this.menuToolsROFST.Click += new System.EventHandler(this.menuToolsROFST_Click); + // + // menuHelp + // + this.menuHelp.Index = 3; + this.menuHelp.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { + this.menuHelpAbout}); + this.menuHelp.Text = "Help"; + // + // menuHelpAbout + // + this.menuHelpAbout.Index = 0; + this.menuHelpAbout.Text = "About"; + this.menuHelpAbout.Click += new System.EventHandler(this.menuHelpAbout_Click); + // + // menuItem2 + // + this.menuItem2.Index = 4; + this.menuItem2.Text = ""; + // + // panel1 + // + this.panel1.AutoScroll = true; + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.panel1.Controls.Add(this.panel2); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(228, 50); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(752, 569); + this.panel1.TabIndex = 5; + // + // panel2 + // + this.panel2.AutoScroll = true; + this.panel2.Location = new System.Drawing.Point(0, 0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(235, 118); + this.panel2.TabIndex = 0; + this.panel2.Visible = false; + // + // roTreeView + // + this.roTreeView.Dock = System.Windows.Forms.DockStyle.Left; + this.roTreeView.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.roTreeView.ImageIndex = 0; + this.roTreeView.ImageList = this.imageListRoTree; + this.roTreeView.ItemHeight = 18; + this.roTreeView.Location = new System.Drawing.Point(0, 50); + this.roTreeView.Name = "roTreeView"; + this.roTreeView.SelectedImageIndex = 0; + this.roTreeView.Size = new System.Drawing.Size(220, 569); + this.roTreeView.TabIndex = 3; + + // + // imageListToolBar + // + this.imageListToolBar.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageListToolBar.ImageStream"))); + this.imageListToolBar.TransparentColor = System.Drawing.Color.Transparent; + this.imageListToolBar.Images.SetKeyName(0, ""); + this.imageListToolBar.Images.SetKeyName(1, ""); + this.imageListToolBar.Images.SetKeyName(2, ""); + this.imageListToolBar.Images.SetKeyName(3, ""); + this.imageListToolBar.Images.SetKeyName(4, ""); + this.imageListToolBar.Images.SetKeyName(5, ""); + // + // lblDuplicateRO + // + this.lblDuplicateRO.AutoSize = true; + this.lblDuplicateRO.ForeColor = System.Drawing.Color.Red; + this.lblDuplicateRO.Location = new System.Drawing.Point(570, 9); + this.lblDuplicateRO.Name = "lblDuplicateRO"; + this.lblDuplicateRO.Size = new System.Drawing.Size(139, 13); + this.lblDuplicateRO.TabIndex = 6; + this.lblDuplicateRO.Text = "Working With Duplicate RO"; + this.lblDuplicateRO.Visible = false; + // + // galleryContainerSymbolsCM + // + // + // + // + this.galleryContainerSymbolsCM.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.galleryContainerSymbolsCM.DefaultSize = new System.Drawing.Size(156, 95); + this.galleryContainerSymbolsCM.EnableGalleryPopup = false; + this.galleryContainerSymbolsCM.GlobalName = "SymbolGallery"; + this.galleryContainerSymbolsCM.MinimumSize = new System.Drawing.Size(150, 95); + this.galleryContainerSymbolsCM.Name = "galleryContainerSymbolsCM"; + this.galleryContainerSymbolsCM.Text = "galleryContainer1"; + // + // + // + this.galleryContainerSymbolsCM.TitleMouseOverStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + // + // + // + this.galleryContainerSymbolsCM.TitleStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + // + // galleryContainerSymbolsCM3 + // + // + // + // + this.galleryContainerSymbolsCM3.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.galleryContainerSymbolsCM3.DefaultSize = new System.Drawing.Size(156, 95); + this.galleryContainerSymbolsCM3.EnableGalleryPopup = false; + this.galleryContainerSymbolsCM3.MinimumSize = new System.Drawing.Size(150, 95); + this.galleryContainerSymbolsCM3.Name = "galleryContainerSymbolsCM3"; + this.galleryContainerSymbolsCM3.Text = "galleryContainer1"; + // + // + // + this.galleryContainerSymbolsCM3.TitleMouseOverStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + // + // + // + this.galleryContainerSymbolsCM3.TitleStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + // + // galleryContainerSymbolsGrid + // + // + // + // + this.galleryContainerSymbolsGrid.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.galleryContainerSymbolsGrid.DefaultSize = new System.Drawing.Size(156, 95); + this.galleryContainerSymbolsGrid.EnableGalleryPopup = false; + this.galleryContainerSymbolsGrid.GlobalName = "SymbolGallery"; + this.galleryContainerSymbolsGrid.MinimumSize = new System.Drawing.Size(150, 95); + this.galleryContainerSymbolsGrid.Name = "galleryContainerSymbolsGrid"; + this.galleryContainerSymbolsGrid.Text = "galleryContainer1"; + // + // + // + this.galleryContainerSymbolsGrid.TitleMouseOverStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + // + // + // + this.galleryContainerSymbolsGrid.TitleStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + // + // galleryContainerSymbolsCM4 + // + // + // + // + this.galleryContainerSymbolsCM4.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.galleryContainerSymbolsCM4.MinimumSize = new System.Drawing.Size(58, 58); + this.galleryContainerSymbolsCM4.Name = "galleryContainerSymbolsCM4"; + // + // + // + this.galleryContainerSymbolsCM4.TitleMouseOverStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + // + // + // + this.galleryContainerSymbolsCM4.TitleStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + // + // Form1 + // + this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); + this.ClientSize = new System.Drawing.Size(980, 619); + this.Controls.Add(this.lblDuplicateRO); + this.Controls.Add(this.panel1); + this.Controls.Add(this.splitter1); + this.Controls.Add(this.roTreeView); + //this.Controls.Add(this.tbar); + this.Controls.Add(this.ribbonControl1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Menu = this.mainMenu1; + this.Name = "Form1"; + this.Text = "RO Edit"; + this.ribbonControl1.ResumeLayout(false); + this.ribbonControl1.PerformLayout(); + this.ribbonPanel1.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); } private DevComponents.DotNetBar.RibbonControl ribbonControl1; private DevComponents.DotNetBar.RibbonPanel ribbonPanel1; private DevComponents.DotNetBar.RibbonBar ribbonBar1; - private DevComponents.DotNetBar.RibbonPanel ribbonPanel2; private DevComponents.DotNetBar.ButtonItem rbtnCancel; private DevComponents.DotNetBar.ButtonItem rbtnRestore; private DevComponents.DotNetBar.ButtonItem rbtnSaveAs; @@ -1882,10 +1906,17 @@ namespace ROEditor private DevComponents.DotNetBar.ButtonItem rbtnZoom; private DevComponents.DotNetBar.ButtonItem rbtnSymbols; private DevComponents.DotNetBar.ButtonItem rbtnSave; + private DevComponents.DotNetBar.GalleryContainer galleryContainerSymbolsCM; + private DevComponents.DotNetBar.GalleryContainer galleryContainerSymbols; + private DevComponents.DotNetBar.GalleryContainer galleryContainerSymbolsCM3; + private DevComponents.DotNetBar.GalleryContainer galleryContainerSymbolsGrid; + private DevComponents.DotNetBar.GalleryContainer galleryContainerSymbolsCM4; + private DevComponents.DotNetBar.GalleryContainer galSymbols; + //Cut/Paste (Move ROs) added as part of CSM-C2024-027 / Part of 2024 PROMS Upgrades private void menuROCut_Click(object sender, EventArgs e) - { + { ROCutWasSelected = true; string msgstr = "It is recommended that after moving ROs, you create a FST and use it to update RO Values in PROMS to ensure RO Links properly move to the new location as well.\n\n Are you sure you wish to move the RO(s)?"; @@ -1896,6 +1927,105 @@ namespace ROEditor } + //private void BuildSymbolGallery(SymbolList sl, DevComponents.DotNetBar.GalleryContainer gc1, DevComponents.DotNetBar.GalleryContainer gc2, DevComponents.DotNetBar.GalleryContainer gc3, DevComponents.DotNetBar.GalleryContainer gc4) + //{ + // foreach (Symbol sym in sl) + // { + // // get an image of the symbol character + // // found the we cannot change the font being used for the button text + // Bitmap symCharBtmp = createTextBitmap( + // (char)sym.Unicode); + // DevComponents.DotNetBar.ButtonItem btn = new DevComponents.DotNetBar.ButtonItem(); + // btn.Image = symCharBtmp; + // //btn.Text = string.Format("{0}", (char)sym.Unicode); + + // // to name button use unicode rather than desc, desc may have spaces or odd chars + // btn.Name = "btn" + sym.Unicode.ToString(); + // btn.Tooltip = sym.Desc; + // btn.Tag = string.Format(@"{0}", sym.Unicode); + // //btn.FontBold = true; + // btn.Click += new System.EventHandler(btnSym_Click); + // galleryContainerSymbols.SubItems.Add(btn); + // DevComponents.DotNetBar.ButtonItem btnCM1 = GetCMButton(sym); + // btnCM1.Image = symCharBtmp; + // btnCM1.Click += new System.EventHandler(btnSym_Click); + // gc1.SubItems.Add(btnCM1); + // DevComponents.DotNetBar.ButtonItem btnCM2 = GetCMButton(sym); + // btnCM2.Image = symCharBtmp; + // btnCM2.Click += new System.EventHandler(btnSym_Click); + // gc2.SubItems.Add(btnCM2); + // DevComponents.DotNetBar.ButtonItem btnCM3 = GetCMButton(sym); + // btnCM3.Image = symCharBtmp; + // btnCM3.Click += new System.EventHandler(btnSym_Click); + // gc3.SubItems.Add(btnCM3); + // DevComponents.DotNetBar.ButtonItem btnCM4 = GetCMButton(sym); + // btnCM4.Image = symCharBtmp; + // btnCM4.Click += new System.EventHandler(btnSym_Click); + // gc4.SubItems.Add(btnCM4); + // } + //} + + //private void btnSym_Click(object sender, EventArgs e) + //{ + // DevComponents.DotNetBar.ButtonItem b = (DevComponents.DotNetBar.ButtonItem)sender; + // StartGridEditing(SelectionOption.Start); // If in a FlexGrid, start the editor for a cell + // _MyStepTabRibbon.MyStepRTB.InsertSymbol(Convert.ToInt32(b.Tag)); + // //_MyStepTabRibbon. + //} + //private enum SelectionOption + //{ + // Start, + // All, + // End + //} + + //private void StartGridEditing(SelectionOption selOpt) + //{ + // // Bug fix: B2012-203, B2012-204 + // // Need to check if the selected table cell is in edit mode already. + // // if already in edit mode, we don't want to do the StartEditing code below, because it + // // will override the current cursor positioning and selection range. + // Control ctrl = FindActiveControl(); + // if (ctrl == null) return; // B2018-008 If a null is returned, don't do anything + // if (ctrl is VlnFlexGrid) + // { + // // Selected table cell is not in edit mode. Go into edit mode and position acording + // // to the pass in selOpt. + // if (MyFlexGrid != null && MyFlexGrid.Editor == null) + // { + // MyFlexGrid.StartEditing(); + // switch (selOpt) + // { + // case SelectionOption.Start: + // MyStepRTB.Select(0, 0); + // break; + // case SelectionOption.All: + // MyStepRTB.SelectAll(); + // break; + // case SelectionOption.End: + // MyStepRTB.Select(MyStepRTB.TextLength, 0); + // break; + // default: + // MyStepRTB.Select(0, 0); + // break; + // } + // } + // } + //} + + //private static DevComponents.DotNetBar.ButtonItem GetCMButton(Symbol sym) + //{ + // DevComponents.DotNetBar.ButtonItem btnCM3 = new DevComponents.DotNetBar.ButtonItem(); + // //btnCM3.Text = string.Format("{0}", (char)sym.Unicode); + // // to name button use unicode rather than desc, desc may have spaces or odd chars + // btnCM3.Name = "btnCM" + sym.Unicode.ToString(); + // btnCM3.Tooltip = sym.Desc; + // btnCM3.Tag = string.Format(@"{0}", sym.Unicode); + // //btnCM3.FontBold = true; + // return btnCM3; + //} + //_MyStepTabRibbon.BuildSymbolGalleryForRO(); + //part of CSM-C2024-027 / Part of 2024 PROMS Upgrades //Paste Selected - will move individual ROs private void menuROPaste_Click(object sender, EventArgs e) @@ -1908,7 +2038,7 @@ namespace ROEditor foreach (TreeNode tnToCut in ROsSelectedforMultiMove) { - VlnXmlElement ROtoCut = ((VlnXmlElement) tnToCut.Tag); + VlnXmlElement ROtoCut = ((VlnXmlElement)tnToCut.Tag); if (((VlnXmlElement)roTreeView.SelectedNode.Tag).GetAttribute("Table") != ROtoCut.GetAttribute("Table")) { MessageBox.Show("You can only move a RO within the same table."); @@ -1936,11 +2066,13 @@ namespace ROEditor } roTreeView_ClearAllMultiSelect(); - tbtnRestore.Enabled = false; - tbtnSave.Enabled = false; - tbtnCancel.Enabled = true; - tbtnSaveAs.Enabled = false; - tbtnDuplicate.Enabled = true; + + rbtnRestore.Enabled = false; // RO Editor add symbols C2025 - 003 + rbtnSave.Enabled = false; + rbtnCancel.Enabled = true; + rbtnSaveAs.Enabled = false; + rbtnDuplicate.Enabled = true; + duplicate_active = false; ROCutWasSelected = false; menuROCut.Enabled = false; @@ -1948,7 +2080,7 @@ namespace ROEditor menuROPaste.Enabled = false; roTreeView.ContextMenu.MenuItems[4].Enabled = menuROPaste.Enabled; roTreeView.Refresh(); - + } //part of CSM-C2024-027 / Part of 2024 PROMS Upgrades @@ -2019,7 +2151,7 @@ namespace ROEditor { string fname_inxml = fldname.Split(new string[] { "\t" }, StringSplitOptions.None)[0]; string fname = CvtFldToUserFld(fname_inxml); - if (!InUseList_ROtoMove.Any(x=> x.GetFieldname == CvtFldToUserFld(fldname.Split(new string[] { "\t" }, StringSplitOptions.None)[0])) || newro.ChildNodes.Cast().Any(x => x.Name == fname_inxml && x.InnerText.Length == 0)) + if (!InUseList_ROtoMove.Any(x => x.GetFieldname == CvtFldToUserFld(fldname.Split(new string[] { "\t" }, StringSplitOptions.None)[0])) || newro.ChildNodes.Cast().Any(x => x.Name == fname_inxml && x.InnerText.Length == 0)) { MessageBox.Show($"RO: {orig_title}. Required field \"{fname}\" is missing a value that is required. Please be sure RO has a value for this field before moving the RO.", "Problem saving data"); placetomoveroto.RemoveChild(newro); @@ -2074,11 +2206,11 @@ namespace ROEditor } [STAThread] - static void Main(string[] args) + static void Main(string[] args) { bool StartupROEditor = true; - FileStream fsown=null; - FileInfo fiown=null; + FileStream fsown = null; + FileInfo fiown = null; String specificro = null; string ConnectionPath = ""; // Let's open the database & set up for the tree structure... @@ -2093,7 +2225,7 @@ namespace ROEditor PCChildren = args[0].Substring(3).Split(','); //C2021-026 list of Parent/Child Children else ConnectionPath = args[0]; -// Directory.SetCurrentDirectory(ConnectionPath); + // Directory.SetCurrentDirectory(ConnectionPath); } if (ConnectionPath == null) // RO Path was not passed in, find ROPATH { @@ -2116,25 +2248,25 @@ namespace ROEditor if (args.Length > 3) if (args[3].ToUpper().StartsWith("PC=")) PCChildren = args[3].Substring(3).Split(','); //C2021-026 list of Parent/Child Children - else if (args[3].ToUpper().Contains("DATA SOURCE")) SqlConnectionStr = args[3]; + else if (args[3].ToUpper().Contains("DATA SOURCE")) SqlConnectionStr = args[3]; else specificro = args[3]; RODB.PCChildList = PCChildren; //C2021-026 pass the Parent/Child info to the RODB class try { // Convert the RO data if needed - if (!CheckForDataConversion(ConnectionPath)) - ConnectionPath = null; // force exit + if (!CheckForDataConversion(ConnectionPath)) + ConnectionPath = null; // force exit } catch (Exception e) { MessageBox.Show(e.Message, "Error on check for data conversion"); - // Application.Exit(); + // Application.Exit(); } // Process the given RO Path if (ConnectionPath == null) { // no RO directory - MessageBox.Show("Could not locate a Referenced Objects (RO) directory.\n\nIt should be inside your VExxx directory or at the same level as your VExxx directory.","RO Editor"); + MessageBox.Show("Could not locate a Referenced Objects (RO) directory.\n\nIt should be inside your VExxx directory or at the same level as your VExxx directory.", "RO Editor"); StartupROEditor = false; } else if (ConnectionPath.Equals("")) @@ -2155,21 +2287,22 @@ namespace ROEditor } } - if (StartupROEditor) + if (StartupROEditor) { // The ROEditor.OWN file assures that only one individual at a time can edit the RO database. // The file is opened and kept open while the user is editing the database. The contents of the // file will identify the current user and state when the edit session began. - try + try { fiown = new FileInfo("RoEditor.own"); - try { + try + { // Try to delete the owner file. If another process has the file open, this delete will fail. // If the file is closed, it will be deleted, and the user will be placed in the editor. The users // name and the time when this session began will be placed in the owner file. - fiown.Delete(); + fiown.Delete(); } - catch(Exception ex) + catch (Exception ex) { fsown = fiown.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite); TextReader tr1 = new StreamReader(fsown); @@ -2186,25 +2319,25 @@ namespace ROEditor return; } } - catch(Exception e) + catch (Exception e) { - MessageBox.Show(e.Message,"fileinfo"); + MessageBox.Show(e.Message, "fileinfo"); } // Open the file just specified. Open it so that no-one else can use it try { - fsown = fiown.Open( FileMode.Create, FileAccess.ReadWrite, FileShare.Read ); + fsown = fiown.Open(FileMode.Create, FileAccess.ReadWrite, FileShare.Read); TextWriter tw = new StreamWriter(fsown); tw.WriteLine("Current User: {0}, Date and Time Started: {1}", Environment.UserName.ToUpper(), DateTime.Now.ToString("MM/dd/yyyy @ hh:mm")); tw.Flush(); - } - catch (IOException ex) + } + catch (IOException ex) { fsown = fiown.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite); TextReader tr = new StreamReader(fsown); string who = tr.ReadToEnd(); tr.Close(); - if(who.Contains(Environment.UserName.ToUpper())) + if (who.Contains(Environment.UserName.ToUpper())) { BringWindowToFront(); @@ -2228,28 +2361,28 @@ namespace ROEditor if (!File.Exists("ROMaster.mdb") && !UsingSQLServer(Directory.GetCurrentDirectory())) { DialogResult AnswerYN; - string msgstr = "The RO directory (" + Directory.GetCurrentDirectory() +") is empty.\n\n Create an empty RO database?"; - AnswerYN = MessageBox.Show(msgstr,"RO Editor",MessageBoxButtons.YesNo); + string msgstr = "The RO directory (" + Directory.GetCurrentDirectory() + ") is empty.\n\n Create an empty RO database?"; + AnswerYN = MessageBox.Show(msgstr, "RO Editor", MessageBoxButtons.YesNo); if (AnswerYN == DialogResult.Yes) { string SourceRODatabase = Application.StartupPath + "\\ROMaster.mdb"; string DestRODatabase = Directory.GetCurrentDirectory() + "\\ROMaster.mdb"; - File.Copy(SourceRODatabase,DestRODatabase); + File.Copy(SourceRODatabase, DestRODatabase); } else StartupROEditor = false; } } - if (StartupROEditor) + if (StartupROEditor) { - Application.Run(new Form1(ConnectionPath,specificro)); - + Application.Run(new Form1(ConnectionPath, specificro)); + if (fsown != null) { fsown.Close(); fiown.Delete(); - } + } Application.Exit(); } } @@ -2279,7 +2412,7 @@ namespace ROEditor { InProcdureDir = true; IniReader ini = new IniReader("PROC.INI"); - RtnStr = ini.ReadString("RO Defaults","ROPATH",""); + RtnStr = ini.ReadString("RO Defaults", "ROPATH", ""); } if (RtnStr.Equals("")) // no ROPATH specified { @@ -2300,15 +2433,15 @@ namespace ROEditor // Instruct the user to create one. DialogResult AnswerYN; int idx = CurDir.LastIndexOf("\\"); - RtnStr = CurDir.Substring(0,idx+1) + "RO"; // default location + RtnStr = CurDir.Substring(0, idx + 1) + "RO"; // default location string msgstr = "A RO directory (folder) does not exist.\n\n Create a RO directory in the default location (" + RtnStr + ")?"; - AnswerYN = MessageBox.Show(msgstr,"RO Editor",MessageBoxButtons.YesNo); + AnswerYN = MessageBox.Show(msgstr, "RO Editor", MessageBoxButtons.YesNo); if (AnswerYN == DialogResult.Yes) { Directory.CreateDirectory(RtnStr); } else - RtnStr = null; + RtnStr = null; } else RtnStr = null; } @@ -2323,7 +2456,7 @@ namespace ROEditor // using sql if there is a connection string or if defined in roapp.ini if (SqlConnectionStr != null && SqlConnectionStr != "") return true; bool Rtn = false; - + string ROiniPath = ROdir + "\\ROAPP.INI"; IniReader ini = new IniReader(ROiniPath); SqlConnectionStr = ini.ReadString("Database Server", "Path", ""); @@ -2345,15 +2478,15 @@ namespace ROEditor testParadoxFile += "\\"; testAccessFile += "\\"; } - + testParadoxFile += "ROMASTER.DB"; // Paradox file testAccessFile += "ROMaster.mdb"; // Access file -// if (File.Exists(testParadoxFile)) + // if (File.Exists(testParadoxFile)) if (File.Exists(testParadoxFile) && !(File.Exists(testAccessFile) || UsingSQLServer(ROdir))) { // Display a message to the user that the data needs converted DialogResult AnswerYN; - AnswerYN = MessageBox.Show("The RO data needs to be converted for the New RO Editor.\n\n Proceed with the data conversion?","RO Editor",MessageBoxButtons.YesNo); + AnswerYN = MessageBox.Show("The RO data needs to be converted for the New RO Editor.\n\n Proceed with the data conversion?", "RO Editor", MessageBoxButtons.YesNo); if (AnswerYN == DialogResult.Yes) { // Convert old RO Data @@ -2361,15 +2494,15 @@ namespace ROEditor if (ROdir.Equals("")) argstr = Directory.GetCurrentDirectory(); string ConversionExePath = Application.StartupPath + "\\ParadoxConversion.exe "; - + // Need to move out of RO directory to convert it Directory.SetCurrentDirectory("..\\"); - + // create a process & wait until it exits. Process myProcess = new Process(); myProcess.StartInfo.FileName = ConversionExePath; - myProcess.StartInfo.Arguments=argstr; - + myProcess.StartInfo.Arguments = argstr; + myProcess.Start(); myProcess.WaitForExit(); @@ -2405,7 +2538,7 @@ namespace ROEditor int cnt = nd.Nodes.Count; bool add_dummykid = false; if (cnt > 0) add_dummykid = true; - for (int i=0; i 1) || (levelcnt==1 && !TheMenuTitle.Equals(""))) + if ((levelcnt > 1) || (levelcnt == 1 && !TheMenuTitle.Equals(""))) { AllGroups = false; - ListViewItem item=null; + ListViewItem item = null; bool first = true; - for (int i=0; i< InUseList.Count; i++) + for (int i = 0; i < InUseList.Count; i++) { - rof = (ROField) InUseList[i]; + rof = (ROField)InUseList[i]; if (rof.GetFieldname != null) { uint ftype = rof.GetFieldType; @@ -3146,22 +3292,22 @@ namespace ROEditor string nm0 = rof.GetFieldname; nm = rof.MakeFieldName(nm0); nd = curele.SelectSingleNode(nm); - if (nd==null)nd = curele.SelectSingleNode("*/"+nm); - if (nd==null) - nd = curele.GetCurrentOfMultiFields(curele,nm); -// if (nd==null)nd = curele.SelectSingleNode(nm+"a"); -// if (nd==null)nd = curele.SelectSingleNode(nm+"b"); -// if (nd==null)nd = curele.SelectSingleNode(nm+"c"); -// if (nd==null)nd = curele.SelectSingleNode(nm+"d"); + if (nd == null) nd = curele.SelectSingleNode("*/" + nm); + if (nd == null) + nd = curele.GetCurrentOfMultiFields(curele, nm); + // if (nd==null)nd = curele.SelectSingleNode(nm+"a"); + // if (nd==null)nd = curele.SelectSingleNode(nm+"b"); + // if (nd==null)nd = curele.SelectSingleNode(nm+"c"); + // if (nd==null)nd = curele.SelectSingleNode(nm+"d"); string data; - if(nd==null) - data=" "; + if (nd == null) + data = " "; else - data=nd.InnerText; - if(first==true) + data = nd.InnerText; + if (first == true) { - item = new ListViewItem(data,ROIMAGE); - first=false; + item = new ListViewItem(data, ROIMAGE); + first = false; item.Tag = curele; } else @@ -3173,30 +3319,30 @@ namespace ROEditor } } } - curnd = curnd.NextSibling; + curnd = curnd.NextSibling; } if (AllGroups == true) { roListView.Columns.Clear(); - roListView.Columns.Add("Group",250,HorizontalAlignment.Left); + roListView.Columns.Add("Group", 250, HorizontalAlignment.Left); } - - roListView.Visible=true; + + roListView.Visible = true; } - + private void updateRoListView(TreeNode node) { VlnXmlElement selele; - selele = (VlnXmlElement) node.Tag; + selele = (VlnXmlElement)node.Tag; if (selele.Name != "vlnGroup" && selele.Name != "RO_Root") { // if we already have a list view, and we're still under the same parent, // leave the list view, otherwise clear it. VlnXmlElement curele = null; - if (roListView != null && roListView.Items.Count > 0) + if (roListView != null && roListView.Items.Count > 0) { - curele = (VlnXmlElement) roListView.Items[0].Tag; - if (selele.ParentNode != curele.ParentNode)roListView_ClearListDisplay(); + curele = (VlnXmlElement)roListView.Items[0].Tag; + if (selele.ParentNode != curele.ParentNode) roListView_ClearListDisplay(); } return; } @@ -3220,7 +3366,7 @@ namespace ROEditor this.roListView.ListViewItemSorter = LVCompare; roListView.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.roListView_Column_Header_OnClick); } - + DisplayGroupElements(selele); } @@ -3229,54 +3375,282 @@ namespace ROEditor void roListView_Column_Header_OnClick(object sender, ColumnClickEventArgs e) { int indx = e.Column; - MyListViewComparer LVCompare = (MyListViewComparer) roListView.ListViewItemSorter; + MyListViewComparer LVCompare = (MyListViewComparer)roListView.ListViewItemSorter; LVCompare.SetColumnToSortBy(indx); roListView.Sort(); } - private void roTreeView_AfterSelect_1(object sender, System.Windows.Forms.TreeViewEventArgs e) + //private void roTreeView_AfterSelect_1(object sender, System.Windows.Forms.TreeViewEventArgs e) + //{ + + //} + + public void getSymbols() // RO Editor add symbols C2025 - 003 { - + Dictionary ROSymbols = buildsymbols(); + + foreach (KeyValuePair ROSymbol in ROSymbols) + { + Bitmap symCharBtmp = createTextBitmap((char)ROSymbol.Key); + DevComponents.DotNetBar.ButtonItem btn = new DevComponents.DotNetBar.ButtonItem(); + btn.Image = symCharBtmp; + + //btnCM.Text = string.Format("{0}", SymbolNode.SelectSingleNode("unicode").InnerText); + btn.Text = string.Format("{0}", ROSymbol.Key); + + // to name button use unicode rather than desc, desc may have spaces or odd chars + btn.Name = "btn" + string.Format("{0}", ROSymbol.Key); + + btn.Tooltip = string.Format("{0}", ROSymbol.Value); + btn.Tag = string.Format(@"{0}", ROSymbol.Key); + btn.FontBold = true; + btn.Click += new System.EventHandler(rbtnSymbols_Click); + galleryContainerSymbols.SubItems.Add(btn); + ////galleryContainerSymbols + } + } - } - - // This class is used to sort by the selected list view column - public class MyListViewComparer : IComparer - { - int column; - - public int Compare (object x, object y) + private Dictionary buildsymbols() // RO Editor add symbols C2025 - 003 { - ListViewItem xitm = (ListViewItem) x; - ListViewItem yitm = (ListViewItem) y; + Dictionary symbols1 = new Dictionary() + { + {176,"degree" }, + {8805,"greater than or equal" }, + {8804,"less than or equal" }, + {177,"plus minus" }, + {189,"half" }, + {9604,"accum" }, + {9679,"bullet" }, + {8776,"approx eq" }, + {8773,"similar eq" }, + {8800,"Not Equal To" }, + {247,"division" }, + {8730,"square root" }, + {8733,"Proportional To" }, + {8734,"Infinity" }, + {8486,"Ohm Sign" }, + {188,"quarter" }, + {8539,"one eighth" }, + {216,"dist zero" }, + {274,"energy" }, + {236,"grave" }, + {9474,"bar" }, + {8857,"dot in oval" }, + {9830,"diamond" }, + {8594,"right arrow" }, + {8592,"left arrow" }, + {8593,"up arrow" }, + {8595,"down arrow" }, + {8711,"nabla" }, + {913,"ALPHA" }, + {914,"BETA" }, + {915,"GAMMA" }, + {916,"DELTA" }, + {917,"EPSILON" }, + {918,"ZETA" }, + {919,"ETA" }, + {920,"THETA" }, + {921,"IOTA" }, + {922,"KAPPA" }, + {923,"LAMDA" }, + {924,"MU" }, + {925,"NU" }, + {926,"XI" }, + {927,"OMICRON" }, + {928,"PI" }, + {929,"RHO" }, + {931,"SIGMA" }, + {932,"TAU" }, + {933,"UPSILON" }, + {934,"PHI" }, + {935,"CHI" }, + {936,"PSI" }, + {937,"OMEGA" }, + {945,"alpha" }, + {946,"beta" }, + {947,"gamma" }, + {948,"delta" }, + {949,"epsilon" }, + {950,"zeta" }, + {951,"eta" }, + {952,"theta" }, + {953,"iota" }, + {954,"kappa" }, + {955,"lamda" }, + {956,"mu" }, + {957,"nu" }, + {958,"xi" }, + {959,"omicron" }, + {960,"pi" }, + {961,"rho" }, + {963,"sigma" }, + {964,"tau" }, + {965,"upsilon" }, + {966,"phi" }, + {967,"chi" }, + {968,"psi" }, + {969,"omega" }, + {9650,"Solid Up Triangle" }, + {9660,"Solid Down Triangle" }, + {9654,"Solid Right Triangle" }, + {9664,"Solid Left Triangle" }, + {169,"Copyright Sign" }, + {174,"Registered Sign" }, + {8480,"Service Mark" }, + {8482,"Trade Mark" }, + {167,"Section Sign" }, + {9745,"Box with Check" }, + {9746,"Box with X" }, + {9633,"Blank Checkbox" }, + {9774,"Clock" }, + {8643,"Check Mark" }, + {9747,"Heavy X" }, + {8629,"Corner Arrow Down Left" }, + {9678,"Circle Zero" }, + {9312,"Circle One" }, + {9313,"Circle Two" }, + {9314,"Circle Three" }, + {9315,"Circle Four" }, + {9316,"Circle Five" }, + {9317,"Circle Six" }, + {9318,"Circle Seven" }, + {9319,"Circle Eight" }, + {9320,"Circle Nine" }, + {9321,"Circle Ten" }, + {9655,"Triangle Right" }, + {9665,"Triangle Left" }, + {8856,"Universal No" }, + }; + return symbols1; + } - string xbuff = xitm.SubItems[column].Text; - string ybuff = yitm.SubItems[column].Text; - int rtnval = 0; - int xcnt=0,ycnt=0; - int xlen,ylen; - byte xbyte, ybyte; - xlen = xbuff.Length; - ylen = ybuff.Length; - if (xbuff.Length > 0 && xbuff[0] == '<') - rtnval = 0; - if (ybuff.Length > 0 && ybuff[0] == '<') - rtnval = 0; - while ((rtnval==0) && ((xcnt < xlen) || (ycnt < ylen))) + private Bitmap createTextBitmap(char ch) + { + string txt = string.Format("{0}", ch); + Bitmap objBmpImage = new Bitmap(1, 1); + + int intWidth = 0; + int intHeight = 0; + + // Create the Font object for the image text drawing. + // later on, we could add logic to use either FreeMono or Arial Unicode MS based on the format being used + // but for now, we are going to use FreeMono to create the symbol list + Font objFont = new Font("FreeMono", 18, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + //Font objFont = new Font("Arial Unicode MS", 18, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + + // Create a graphics object to measure the text's width and height. + Graphics objGraphics = Graphics.FromImage(objBmpImage); + + // This is where the bitmap size is determined. + intWidth = (int)objGraphics.MeasureString(txt, objFont).Width; + intHeight = (int)objGraphics.MeasureString(txt, objFont).Height; + + // Create the bmpImage again with the correct size for the text and font. + objBmpImage = new Bitmap(objBmpImage, new Size(intWidth, intHeight)); + + // Add the colors to the new bitmap. + objGraphics = Graphics.FromImage(objBmpImage); + + // Set Background color + objGraphics.Clear(Color.Transparent); //.White); + objGraphics.SmoothingMode = SmoothingMode.AntiAlias; + objGraphics.TextContrast = 0; + objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias; + //objGraphics.DrawString(txt, objFont, new SolidBrush(Color.FromArgb(102, 102, 102)), 0, 0); + objGraphics.DrawString(txt, objFont, new SolidBrush(Color.Black), 0, 0); + objGraphics.Flush(); + return (objBmpImage); + } + private void btnSym_Click(object sender, EventArgs e) + { + DevComponents.DotNetBar.ButtonItem b = (DevComponents.DotNetBar.ButtonItem)sender; + + //if (cbxTextSearchAnnotation.Focused) + //{ + // cbxTextSearchAnnotation.SelectedText = (string)b.Text; + //} + //else if (cbxTextSearchText.Focused) + //{ + // cbxTextSearchText.SelectedText = (string)b.Text; + //} + } + // This class is used to sort by the selected list view column + public class MyListViewComparer : IComparer + { + int column; + + public int Compare(object x, object y) { - xbyte = (xcnt == xlen)? (byte)0 : (byte)xbuff[xcnt++]; - ybyte = (ycnt == ylen)? (byte)0 : (byte)ybuff[ycnt++]; - rtnval = xbyte - ybyte; + ListViewItem xitm = (ListViewItem)x; + ListViewItem yitm = (ListViewItem)y; + + string xbuff = xitm.SubItems[column].Text; + string ybuff = yitm.SubItems[column].Text; + int rtnval = 0; + int xcnt = 0, ycnt = 0; + int xlen, ylen; + byte xbyte, ybyte; + xlen = xbuff.Length; + ylen = ybuff.Length; + if (xbuff.Length > 0 && xbuff[0] == '<') + rtnval = 0; + if (ybuff.Length > 0 && ybuff[0] == '<') + rtnval = 0; + while ((rtnval == 0) && ((xcnt < xlen) || (ycnt < ylen))) + { + xbyte = (xcnt == xlen) ? (byte)0 : (byte)xbuff[xcnt++]; + ybyte = (ycnt == ylen) ? (byte)0 : (byte)ybuff[ycnt++]; + rtnval = xbyte - ybyte; + } + + return rtnval; } - - return rtnval; + + public void SetColumnToSortBy(int col) + { + column = col; + } + } - public void SetColumnToSortBy(int col) + private void rbtnSave_Click(object sender, EventArgs e) // RO Editor add symbols C2025 - 003 { - column = col; + tbar_SaveClick(); } - + + private void rbtnCancel_Click(object sender, EventArgs e) + { + rbtnSymbols.Enabled = false; + tbar_CancelClick(); + } + + private void rbtnSaveAs_Click(object sender, EventArgs e) + { + tbar_SaveAsClick(); + } + + private void rbtnDuplicate_Click(object sender, EventArgs e) + { + tbar_DuplicateClick(); + } + + private void rbtnRestore_Click(object sender, EventArgs e) + { + tbar_RestoreClick(); + } + + private void rbtnZoom_Click(object sender, EventArgs e) + { + ctlXMLEdit2.btnZoom_click(null, null); + } + + private void rbtnSymbols_Click(object sender, EventArgs e) // RO Editor add symbols C2025 - 003 + { + DevComponents.DotNetBar.ButtonItem b = (DevComponents.DotNetBar.ButtonItem)sender; + ctlXMLEdit2.TextBoxFocus.InsertSymbol(Convert.ToInt32(b.Tag)); + //StartGridEditing(SelectionOption.Start); // If in a FlexGrid, start the editor for a cell + //_MyStepRTB.InsertSymbol(Convert.ToInt32(b.Tag)); + } + } - } diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.csproj b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.csproj index 3fc441b9..84f54fd3 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.csproj +++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.csproj @@ -127,10 +127,18 @@ System.XML + + False + ..\..\..\..\VEPROMS.CSLA.Library\bin\Debug\VEPROMS.CSLA.Library.dll + False ..\..\..\..\Volian.Base.Library\bin\Debug\Volian.Base.Library.dll + + False + ..\..\..\..\Volian.Controls.Library\bin\Debug\Volian.Controls.Library.dll + @@ -171,6 +179,7 @@ Code + Designer AboutROEditor.cs diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.resx b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.resx index 5c3b99ac..3c09032b 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.resx +++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.resx @@ -125,7 +125,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACE - CAAAAk1TRnQBSQFMAgEBAgEAASwBAAEsAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAUQBAAFEAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -175,7 +175,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAe - CwAAAk1TRnQBSQFMAgEBBgEAASwBAAEsAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CwAAAk1TRnQBSQFMAgEBBgEAAUQBAAFEAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ReferencedObjects.sln b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ReferencedObjects.sln index 4f7189d2..2bb5fe76 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ReferencedObjects.sln +++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ReferencedObjects.sln @@ -42,6 +42,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CmpRpt", "..\CmpRpt\CmpRpt. {3A4A3543-2D44-11D6-8452-00A0CC271352} = {3A4A3543-2D44-11D6-8452-00A0CC271352} EndProjectSection EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D9093FAB-448E-47C7-961B-92B18D85CAF7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.cs b/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.cs index 2a5d8c8b..7203710c 100644 --- a/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.cs +++ b/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.cs @@ -263,6 +263,7 @@ using System.Collections.Specialized; using Org.Mentalis.Files; using System.Data.SqlClient; using System.Collections.Generic; +using System.Text.RegularExpressions; namespace RODBInterface @@ -1909,6 +1910,8 @@ namespace RODBInterface string Info = DBE.GetString(3); //B2022-043 &pos; was missing the ; Info = Info.Replace("'", "\'"); // B2021-071: crash when getting/saving field names + Info = Regex.Replace(Info, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // RO Editor add symbols C2025 - 003 + node.SetAttribute("HasChild", "True"); // Store data in the VlnXmlElement as a subgroup @@ -1972,6 +1975,7 @@ namespace RODBInterface elem.SetAttribute("RecID", RecID); elem.SetAttribute("ParentID", node.GetAttribute("RecID")); elem.SetAttribute("Table", node.GetAttribute("Table")); + AccPageID = Regex.Replace(AccPageID, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // RO Editor add symbols C2025 - 003 elem.SetAttribute("AccPageID", AccPageID); } } @@ -2182,10 +2186,13 @@ namespace RODBInterface parent.SetAttribute("ChildLoaded", "True"); } string xmlstr = GenerateXmlString(ro, false); + string tmp2 = Regex.Replace(xmlstr, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // RO Editor add symbols C2025 - 003 string wraccid = null; if (ro.HasAttribute("AccPageID")) { string accid = ro.GetAttribute("AccPageID"); + + int quote = accid.IndexOf("'"); if (quote >= 0) wraccid = accid.Insert(quote, "'"); diff --git a/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.csproj b/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.csproj index 12e54462..6c6c4821 100644 --- a/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.csproj +++ b/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.csproj @@ -109,6 +109,9 @@ false + + ..\..\..\VEPROMS User Interface\bin\Debug\ctlXMLEditLib.dll + System diff --git a/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ZoomDialog.cs b/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ZoomDialog.cs index c2f238c7..406ae82e 100644 --- a/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ZoomDialog.cs +++ b/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ZoomDialog.cs @@ -39,7 +39,7 @@ namespace ctlXMLEditLib { private System.Windows.Forms.Button btnSave; private System.Windows.Forms.Button btnCancel; - private System.Windows.Forms.TextBox tbZoom; + private System.Windows.Forms.RichTextBox tbZoom; // RO Editor add symbols C2025 - 003 /// /// Required designer variable. /// @@ -88,7 +88,7 @@ namespace ctlXMLEditLib /// private void InitializeComponent() { - this.tbZoom = new System.Windows.Forms.TextBox(); + this.tbZoom = new System.Windows.Forms.RichTextBox(); // RO Editor add symbols C2025 - 003 this.btnSave = new System.Windows.Forms.Button(); this.btnCancel = new System.Windows.Forms.Button(); this.SuspendLayout(); @@ -99,7 +99,7 @@ namespace ctlXMLEditLib this.tbZoom.Location = new System.Drawing.Point(24, 16); this.tbZoom.Multiline = true; this.tbZoom.Name = "tbZoom"; - this.tbZoom.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.tbZoom.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical; // RO Editor add symbols C2025 - 003 this.tbZoom.Size = new System.Drawing.Size(576, 392); this.tbZoom.TabIndex = 0; // diff --git a/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEdit.cs b/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEdit.cs index 21dacaf0..958b834f 100644 --- a/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEdit.cs +++ b/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEdit.cs @@ -200,6 +200,10 @@ using System.Xml.Schema; using System.Text; using RODBInterface; using Org.Mentalis.Files; +using System.Windows; +using System.Text.RegularExpressions; +using Volian.Base.Library; +using System.Linq; //using IniFileIO; @@ -311,7 +315,17 @@ namespace ctlXMLEditLib public string GetParentHTId { get { return parenthtid; } } public void SetParentHTId(string id) { this.parenthtid = id; } } - + private RichTextBox _TextBoxFocus; // RO Editor add symbols C2025 - 003 + public RichTextBox TextBoxFocus + { + get { return _TextBoxFocus; } + set + { + _TextBoxFocus = value; + // C2015-017 hide the label indicating user is working with a duplicate of an exiting RO + //lblDuplicateRO.Visible = value; + } + } public ctlXMLEdit(VlnXmlElement myelem, XmlSchema myschema, ArrayList reqfields, ArrayList fldsWithApplic, string [] pckids) { // This call is required by the Windows.Forms Form Designer. @@ -363,7 +377,7 @@ namespace ctlXMLEditLib // set the required fields tag on those fields which are included in the passed // in required fields list. - private void DoSet(TextBox hwnd, string msg) + private void DoSet(RichTextBox hwnd, string msg) // RO Editor add symbols C2025 - 003 { if (hwnd == null) return; if (hwnd.Tag != null) @@ -397,10 +411,10 @@ namespace ctlXMLEditLib o = myHT[field+"a"]; if (o != null) // set all combo types required, the checker { - DoSet((TextBox)o,msg); - DoSet((TextBox)myHT[field+"b"],msg); - DoSet((TextBox)myHT[field+"c"],msg); - DoSet((TextBox)myHT[field+"d"],msg); + DoSet((RichTextBox)o,msg); + DoSet((RichTextBox)myHT[field+"b"],msg); + DoSet((RichTextBox)myHT[field+"c"],msg); + DoSet((RichTextBox)myHT[field+"d"],msg); } } else if (o != null) @@ -476,8 +490,11 @@ namespace ctlXMLEditLib if (nd == null || nd.InnerText.Length==0) // B2024-004 use Parent value if Child text length is zero GetDefaultParentValue(hwnd, node, str); // C2021-026 Parent/Child Field has no value so use parent's value else - { - hwnd.Text = nd.InnerText; // set the field's text from XML + { + + hwnd.Text = Regex.Replace(nd.InnerText, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // set the field's text from XML + //hwnd.Text = nd.InnerText; // set the field's text from XML + Size size = hwnd.Size; // check if this window has a button name as part of its tag. If // so it's a combo type & the radio button/visibility may need to @@ -585,13 +602,13 @@ namespace ctlXMLEditLib { dosaveflag=false; mysavexml=false; - TextBox hwnd; + RichTextBox hwnd; // first, clear out all of the text boxes. foreach (string str in myHT.Keys) { object o = myHT[str]; - hwnd = (TextBox) o; + hwnd = (RichTextBox) o; hwnd.Text = ""; TextBoxAttrTag tag = (TextBoxAttrTag) hwnd.Tag; RadioButton radio; @@ -623,7 +640,7 @@ namespace ctlXMLEditLib // to the parent's value, then clear the child's textbox so that nothing is saved // to the database. This allow us to know that a specific value was not set // for this Parent/Child child - private void RemovePCChildTextIfSameAsParent(XmlNode node, TextBox tb, string chldName) + private void RemovePCChildTextIfSameAsParent(XmlNode node, RichTextBox tb, string chldName) { XmlNode parentNode = null; // if this is a child node get the parent's value @@ -656,6 +673,9 @@ namespace ctlXMLEditLib } } + + + // SaveData saves the data in the element which had been sent to the control. Return // true if success, false if fail. // Note that the Parent and Child XML node variables below are not coding for Parent/Child Applicabily Fields @@ -663,15 +683,56 @@ namespace ctlXMLEditLib { if (mysavexml) { - TextBox hwnd; + RichTextBox hwnd; TextBoxAttrTag tag; string imgdate; //go thru the hash table to get textboxes. Find the ones that have text. - foreach (string str in myHT.Keys) + foreach (string str in myHT.Keys) // RO Editor add symbols C2025 - 003 { object o = myHT[str]; - hwnd = (TextBox) o; + hwnd = (RichTextBox) o; + + string result1 = ""; + string Str = ""; + char[] chrAry = hwnd.Text.ToCharArray(); + foreach (int chr in chrAry) + { + if (chr > 166) + { + //Str = @"\u" + ((int)chr).ToString("X4"); + //Str = @"\u" + ((int)chr); //.ToString("X4"); + Str = $"\\u{(int)chr}?"; + + + result1 = result1 + Str; + } + else + { + result1 = result1 + (char)chr; + } + + } + + var pattern = @"\\u([0-9]{1,4})\?"; // RO Editor add symbols C2025 - 003 + + var results = Regex.Matches(hwnd.Text, pattern); + + string num1; + + int num2; + + foreach (Match result in results) + { + num1 = (result.Groups[1].Value); + string resultString = Regex.Match(num1, @"\d+").Value; + string resultString1 = string.Format("{0:x}", resultString); + num2 = int.Parse(resultString, System.Globalization.NumberStyles.HexNumber); + } + + + hwnd.Text = result1; + imgdate = null; // if this is a required field and there is no text, put out an error // message and get out of here. @@ -788,6 +849,125 @@ namespace ctlXMLEditLib return (false); } + // RO Editor add symbols C2025 - 003 + private static Regex sreg1 = new Regex(@"\\par\r\n(?!\\)"); + private static Regex sreg2 = new Regex(@"[\r\n]", RegexOptions.Singleline); // Strip Carriage Returns and Newlines + private static Regex sreg3 = new Regex(@"^\{(.*)\}$", RegexOptions.Singleline); // Strip Opening and Closing Braces + private static Regex sreg4 = new Regex(@"\{[^{]*?\}", RegexOptions.Singleline); // Strip Clauses - remove anything from curly braces + private static Regex sreg5 = new Regex(@"\{[^{]*?\}", RegexOptions.Singleline); // Strip Clauses - remove anything from curly braces + private static Regex sreg6 = new Regex(@"(\\[^' \\?\r\n\t]+)(?=\\)"); // add space after token if followed by token + private static Regex sreg7 = new Regex(@"(\\[^ \\?\r\n\t]+ )"); // take backslash xyz and evaluates them + private static Regex sreg8 = new Regex(@"(\\[^ \\?\r\n\t]+) (?=\\)"); // remove space between tokens + private static Regex sreg9 = new Regex(@"(\\[^ \\?\r\n\t]+) (?=\r\n)"); // remove space before /r/n + + public static string StaticStripRtfCommands(string rtf, bool fromTable) + { + // replace \{ & \} with (![ & (!] respectively and then redo at end. The curly braces + // are rtf so were getting removed and/or not handled correctly. + string retval = rtf.Replace(@"\{", @" (!["); + retval = retval.Replace(@"\}", @" (!]"); + + // For hardspaces, the windows richtextbox does some 'quirky' things: + // A unicode representation of \u160? is sent INTO the rtb. Coming out, + // that \u160? was translated to a \~ (by the underlying windows rtb). + // Note that if the \~ is sent to the rtb, it is treated as a regular space, + // i.e. no longer a hardspace, and actually is converted to a regular space. + // SO, on the way out, convert any \~ to \u160? + retval = RTFConvertedSymbolsToUnicode(retval); + + // remove carriage return/newlines after \par commands (these are introduced by rtb + // for hard returns, goes into rtb as \par and comes out as \par\r\n): + retval = sreg1.Replace(retval, "\\par "); + + retval = retval.Replace("\\v0\r\n", "\\v0 "); // Replace Carriage Return and Newline after comment + retval = sreg2.Replace(retval, ""); // Strip Carriage Returns and Newlines + retval = sreg3.Replace(retval, "$1"); // Strip Opening and Closing Braces + retval = sreg4.Replace(retval, ""); // Strip Clauses - remove anything from curly braces + retval = sreg5.Replace(retval, ""); // Strip Clauses - remove anything from curly braces + retval = sreg6.Replace(retval, "$1 "); // add space after token if followed by token + retval = sreg7.Replace(retval, new MatchEvaluator(StaticReplaceRTFClause)); // take backslash xyz and evaluates them + retval = sreg8.Replace(retval, "$1"); // remove space between tokens + retval = sreg9.Replace(retval, "$1"); // remove space before /r/n + + // remove \r\n at end of string if the string has 2 or more characters + if (retval.Length > 1 && retval.Substring(retval.Length - 2, 2) == "\r\n") retval = retval.Remove(retval.Length - 2, 2); + + if (retval.Length == 0) return ""; + if (retval.Length > 1 && retval.Substring(retval.Length - 2, 2) == @"\v") retval = retval.Remove(retval.Length - 2, 2); + + retval = retval.Replace(@" (![", @"\{"); + retval = retval.Replace(@" (!]", @"\}"); + retval = retval.TrimEnd(' '); + + // the indent character was translated in the richtextbox, change it back: + if (retval.IndexOf(@"\'05") > -1) retval = retval.Replace(@"\'05", "\x05"); + + return retval; + } + + // RO Editor add symbols C2025 - 003 + public static string RTFConvertedSymbolsToUnicode(string str) + { + string rtnStr = str; + // convert \~ to a hard spece. RTF is automatically converting \u160? to \~ but will then convert + // the \~ to a regular space! + rtnStr = rtnStr.Replace(@"\~", @"\u160?"); + rtnStr = rtnStr.Replace(@"\'a0", @"\u160?"); + // convert \'99 to \u8482? this is for the trade mark symbol. RTF is automatically + // converting the unicode \u8482? to \'99, but once this is done, PROMS StepRTB (edit windows) does not show it + rtnStr = rtnStr.Replace(@"\'99", @"\u8482?"); + // convert \'ae to \u174? this is for the registered symbol. RTF converts the unicode character to \'ae + rtnStr = rtnStr.Replace(@"\'ae", @"\u174?"); + // convert \'a9 to \u169? this is for the copyright symbol. RTF converts the unicode character to \'a9 + rtnStr = rtnStr.Replace(@"\'a9", @"\u169?"); + return rtnStr; + } + + public static string StaticReplaceRTFClause(Match m) + { + try + { + string token = m.Groups[1].Value; + switch (token[1]) + { + case '_': // B2020-100 New Non-Breaking Hyphen + return token.Trim(); + case '\\': + return token; + case '\'': // Special Character + return token; + case '{': // look for escape for curly braces: + return token; + case '}': + return token; + case 'v': // save link hidden info + if (token == "\\viewkind4 ") break; + if (Regex.IsMatch(token, @"^\\v0? ?$")) + return token; // comment part of link + // If possible show what procedure was being processed. + break; + case 'l': + if (Regex.IsMatch(token, @"^\\line ?$")) return token; + if (Regex.IsMatch(token, @"^\\li[-0-9]+ ?$")) return token; // line indent + break; + case 'f': + if (Regex.IsMatch(token, @"^\\fi[-0-9]+ ?$")) return token; // first line indent + // C2020-001: only keep the font size rtf if in a table. + //if (_fromTable && Regex.IsMatch(token, @"^\\fs[-0-9]+ ?$")) return token; // font size + break; + case 'p': + if (Regex.IsMatch(token, @"^\\par ?$")) return "\r\n"; + break; + } + } + catch (Exception ex) + { + Console.WriteLine("StaticReplaceRTFClause {0} - {1}", ex.GetType().Name, ex.Message); + } + return "";//Strip All + } + + #region Component Designer generated code /// /// Required method for Designer support - do not modify @@ -888,12 +1068,18 @@ namespace ctlXMLEditLib if (getannot.IndexOf("Lines")>=0) { GraphicsHttextbox = mytextbox; + + Size size = GraphicsHttextbox.Size; mytextbox.LostFocus += new System.EventHandler(this.GraphicsHt_lostfocus); + + //mytextbox. } if (getannot.IndexOf("Character")>=0) { GraphicsWdtextbox = mytextbox; + mytextbox.LostFocus += new System.EventHandler(this.GraphicsWd_lostfocus); + } } } @@ -904,13 +1090,16 @@ namespace ctlXMLEditLib { // A Schema Type Restriction is used to define single or multi-line boxes. XmlSchemaSimpleTypeRestriction myRestrictions = (XmlSchemaSimpleTypeRestriction) simpleType.Content; - if (myRestrictions.BaseTypeName.Name == "normalizedString") + if (myRestrictions.BaseTypeName.Name == "normalizedString") + { mytextbox.Multiline = false; + mytextbox.Size = new Size(300, 40); + } else { mytextbox.Multiline = true; mytextbox.AcceptsTab = true; - mytextbox.Height = (int) mytextbox.Font.GetHeight() * 4; + mytextbox.Height = (int)mytextbox.Font.GetHeight() * 4; mytextbox.ScrollBars = RichTextBoxScrollBars.Vertical; zmtooltip.SetToolTip(mytextbox, "Press Shift F2 To Zoom"); } @@ -993,6 +1182,7 @@ namespace ctlXMLEditLib gbox.Controls.Add(radio); RichTextBox tb = new RichTextBox(); + Size size3 = tb.Size; tb.Location = new Point(boxx+20, y+25); if (!first) tb.Visible = false; myHT.Add(element.Name,tb); @@ -1001,7 +1191,7 @@ namespace ctlXMLEditLib // the groupbox. Controls.Add(tb); tb.TextChanged += new System.EventHandler(this.textbox_change); - tb.GotFocus += new System.EventHandler(this.textbox_zoombtn); + tb.GotFocus += new System.EventHandler(this.currentTextBox); tb.KeyDown += new KeyEventHandler(MyOnKeyDown); gbox.Contains(tb); // the following will set attributes on the text boxes such as maxlength, multiline, etc. @@ -1146,6 +1336,7 @@ namespace ctlXMLEditLib { RichTextBox mytextbox; mytextbox = new RichTextBox(); + Size size3 = mytextbox.Size; mytextbox.Location = new Point(screenx+indent, screeny); string tFieldName = (pcChildIdx == 0) ? CvtUserFldToFld(element.Name) : CvtUserFldToFld(pcChildFldName); mytextbox.Name = tFieldName; @@ -1155,7 +1346,7 @@ namespace ctlXMLEditLib screeny = screeny + 10; mytextbox.TextChanged += new System.EventHandler(this.textbox_change); mytextbox.Validating += new System.ComponentModel.CancelEventHandler(this.textbox_Validating); - mytextbox.GotFocus += new System.EventHandler(this.textbox_zoombtn); + mytextbox.GotFocus += new System.EventHandler(this.currentTextBox); mytextbox.KeyDown += new KeyEventHandler(MyOnKeyDown); if (pcChildIdx > 0) { @@ -1192,7 +1383,7 @@ namespace ctlXMLEditLib // the following is needed to load the control. private void ctlXMLEdit_Load(object sender, System.EventArgs e) { - + } // when data in a text box has changed, flag it (except for when this @@ -1264,7 +1455,7 @@ namespace ctlXMLEditLib private void radiocheckchg(object sender, System.EventArgs e) { RadioButton btnsel = (RadioButton) sender; - TextBox assocbox; + RichTextBox assocbox; string btntext, str; if(dosaveflag)mysavexml = true; @@ -1277,7 +1468,7 @@ namespace ctlXMLEditLib str = btnsel.Name.Replace(btntext,""); object o = myHT[str]; if (o == null) return; - assocbox = (TextBox) o; + assocbox = (RichTextBox) o; // make the text box visible if checked, otherwise, invisible assocbox.Visible = btnsel.Checked; // C2021-026 show or hide the Parent/Child appicability group box @@ -1420,13 +1611,15 @@ namespace ctlXMLEditLib } // save which box we're on, for zoom processing. - private void textbox_zoombtn(object sender, System.EventArgs e) + private void currentTextBox(object sender, System.EventArgs e) { RichTextBox textbox = (RichTextBox) sender; if (textbox.Multiline == true || textbox == GraphicsFiletextbox) zoomtextbox = textbox; else zoomtextbox = null; + + TextBoxFocus = textbox; } private void textbox_Validating(object sender, System.ComponentModel.CancelEventArgs e) @@ -1932,5 +2125,35 @@ namespace ctlXMLEditLib return curTZ.GetDaylightChanges(year); } } + public static class RichTextBoxExtensions // RO Editor add symbols C2025 - 003 + { + public static void InsertSymbol(this RichTextBox richTextBox, int symbcode) + { + int position = richTextBox.SelectionStart; + string sym = string.Format(symbcode < 256 ? "\'{0:X2}" : @"\u{0}", symbcode); + string RtfPrefixForSymbols = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset2 FreeMono; } {\f1\fnil\fcharset0 FreeMono; } } {\colortbl;\red255\green0\blue0;\red0\green0\blue255; } \viewkind4\uc1\pard\fs24 \f1\fs24 "; + richTextBox.SelectedRtf = RtfPrefixForSymbols + sym + @"}"; + richTextBox.SelectedRtf = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033\uc1 }"; + richTextBox.Select(position, 1); + richTextBox.Select(position + 1, 0); + + //TextPointer caretPos = rtb.CaretPosition; + //if (symbcode < 256) + // AddText(((char)symbcode).ToString()); + //else + // AddSymbol(sym); // Adds font commands around symbol, needed for higher codes + } + } + + + public enum E_FontStyle : byte + { + FS_NONE = 0, + FS_BOLD = 0x01, + FS_UNDERLINE = 0x02, + FS_ITALIC = 0x04, + FS_SUPERSCRIPT = 0x08, + FS_SUBSCRIPT = 0x10 + } } diff --git a/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEditLib.csproj b/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEditLib.csproj index e5629e60..8d2eb87d 100644 --- a/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEditLib.csproj +++ b/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEditLib.csproj @@ -124,6 +124,10 @@ System.XML + + False + ..\..\..\Volian.Base.Library\bin\Debug\Volian.Base.Library.dll + diff --git a/PROMS/VEPROMS.CSLA.Library/Config/ROFSTLookup.cs b/PROMS/VEPROMS.CSLA.Library/Config/ROFSTLookup.cs index 087b1c5d..e99e3426 100644 --- a/PROMS/VEPROMS.CSLA.Library/Config/ROFSTLookup.cs +++ b/PROMS/VEPROMS.CSLA.Library/Config/ROFSTLookup.cs @@ -494,6 +494,8 @@ namespace VEPROMS.CSLA.Library { roid = FormatRoidKey(roid, true); + + string retval = GetRoChild(roid).value; if (string.IsNullOrEmpty(retval)) @@ -2152,8 +2154,15 @@ namespace VEPROMS.CSLA.Library if (string.IsNullOrEmpty(s2)) return s2; + var pattern = @"\\u([0-9]{1,4})\?"; // RO Editor add symbols C2025 - 003 + + if (Regex.IsMatch(s2, pattern)) + s2 = s2.Replace(@"\u160?", ""); // convert hard spaces bug fix: B2016-206 - s2 = s2.Replace(@"\", @"\u9586?"); // convert backslashes to a backslash symbol + if (!Regex.IsMatch(s2, pattern)) // RO Editor add symbols C2025 - 003 + { + s2 = s2.Replace(@"\", @"\u9586?"); // convert backslashes to a backslash symbol + } s2 = s2.Replace("", @"\u160?"); // convert hard spaces bug fix: B2016-206 s2 = s2.Replace("`", @"\'b0"); // convert backquote to degree - left over from DOS days. s2 = s2.Replace("\xf8", @"\'b0"); // convert \xf8 to degree. diff --git a/PROMS/Volian.Controls.Library/DisplayRO.Designer.cs b/PROMS/Volian.Controls.Library/DisplayRO.Designer.cs index 2e0f231d..77f45d7f 100644 --- a/PROMS/Volian.Controls.Library/DisplayRO.Designer.cs +++ b/PROMS/Volian.Controls.Library/DisplayRO.Designer.cs @@ -81,7 +81,7 @@ namespace Volian.Controls.Library this.lbROId.Dock = System.Windows.Forms.DockStyle.Left; this.lbROId.ForeColor = System.Drawing.SystemColors.Highlight; this.lbROId.Location = new System.Drawing.Point(48, 24); - this.lbROId.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.lbROId.Margin = new System.Windows.Forms.Padding(2); this.lbROId.Name = "lbROId"; this.lbROId.Size = new System.Drawing.Size(183, 33); this.superTooltip1.SetSuperTooltip(this.lbROId, new DevComponents.DotNetBar.SuperTooltipInfo("RO ID", "", "The RO ID for the selected RO Value will be displayed here. Double-Click to open" + @@ -97,7 +97,7 @@ namespace Volian.Controls.Library this.lblROID.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; this.lblROID.Dock = System.Windows.Forms.DockStyle.Left; this.lblROID.Location = new System.Drawing.Point(0, 24); - this.lblROID.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.lblROID.Margin = new System.Windows.Forms.Padding(2); this.lblROID.Name = "lblROID"; this.lblROID.Size = new System.Drawing.Size(48, 33); this.superTooltip1.SetSuperTooltip(this.lblROID, new DevComponents.DotNetBar.SuperTooltipInfo("RO ID", "", "The RO ID for the selected RO Value will be displayed here.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(150, 80))); @@ -139,7 +139,7 @@ namespace Volian.Controls.Library this.btnGoToRO.Dock = System.Windows.Forms.DockStyle.Top; this.btnGoToRO.Enabled = false; this.btnGoToRO.Location = new System.Drawing.Point(0, 55); - this.btnGoToRO.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.btnGoToRO.Margin = new System.Windows.Forms.Padding(2); this.btnGoToRO.Name = "btnGoToRO"; this.btnGoToRO.Size = new System.Drawing.Size(233, 18); this.btnGoToRO.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; @@ -155,7 +155,7 @@ namespace Volian.Controls.Library this.btnPreviewRO.Dock = System.Windows.Forms.DockStyle.Top; this.btnPreviewRO.Enabled = false; this.btnPreviewRO.Location = new System.Drawing.Point(0, 37); - this.btnPreviewRO.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.btnPreviewRO.Margin = new System.Windows.Forms.Padding(2); this.btnPreviewRO.Name = "btnPreviewRO"; this.btnPreviewRO.Size = new System.Drawing.Size(233, 18); this.superTooltip1.SetSuperTooltip(this.btnPreviewRO, new DevComponents.DotNetBar.SuperTooltipInfo("Preview", "", "This will Preview the selected RO Table, X/Y Plot, or Image.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(150, 80))); @@ -263,6 +263,7 @@ namespace Volian.Controls.Library this.Controls.Add(this.tvROFST); this.Controls.Add(this.lbFound); this.Controls.Add(this.panelValue); + this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Name = "DisplayRO"; this.Size = new System.Drawing.Size(233, 507); this.panelValue.ResumeLayout(false); diff --git a/PROMS/Volian.Controls.Library/DisplayRO.cs b/PROMS/Volian.Controls.Library/DisplayRO.cs index 038a258e..4b025082 100644 --- a/PROMS/Volian.Controls.Library/DisplayRO.cs +++ b/PROMS/Volian.Controls.Library/DisplayRO.cs @@ -1,18 +1,19 @@ +using DevComponents.DotNetBar; +using JR.Utils.GUI.Forms; using System; using System.Collections.Generic; using System.ComponentModel; -using System.Drawing; using System.Data; -using System.Text; +using System.Drawing; using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; using System.Windows.Forms; using VEPROMS.CSLA.Library; -using XYPlots; -using DevComponents.DotNetBar; -using System.Text.RegularExpressions; using Volian.Base.Library; -using JR.Utils.GUI.Forms; -using System.Linq; +using XYPlots; +using static System.Net.Mime.MediaTypeNames; namespace Volian.Controls.Library { @@ -372,8 +373,7 @@ namespace Volian.Controls.Library { // B2022-088: [JPR] Find Doc Ro button not working in Word Sections // B2022-098: [JPR] ROs not being resolved in Word Sections - if (e.Node.Tag is ROFSTLookup.rochild) - { + if (e.Node.Tag is ROFSTLookup.rochild){ ROFSTLookup.rochild chld = (ROFSTLookup.rochild)e.Node.Tag; selectedChld = chld; @@ -770,9 +770,15 @@ namespace Volian.Controls.Library } else { + tmp = new TreeNode(roc.title); tmp.Tag = roc; + if (tmp.Text.IndexOf("\\u") > -1) // RO Editor add symbols C2025 - 003 + { + tmp.Text = Regex.Replace(tmp.Text, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); + } + if (roc.roid.Length == 16) { tn.Nodes.Add(tmp); @@ -921,11 +927,12 @@ namespace Volian.Controls.Library // Pad to 16 to store in the RoUsage table. string padroid = ROFSTLookup.FormatRoidKey(roc.roid, true); string linktxt = string.Format(@"#Link:ReferencedObject: {0} {1}", padroid, MyROFST.RODbID); - - // Resolve symbols and scientific notation in the RO return value - string valtxt = MyROFSTLookup.GetTranslatedRoValue(padroid, MyRTB.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta, MyRTB.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.UseTildaPoundCharsForSuperSubScriptInROValues, false, MyRTB.MyItemInfo); - MyRTB.OnRoInsert(this, new StepRTBRoEventArgs(valtxt, selectedChld.value, linktxt, padroid, MyROFST.RODbID)); + // Resolve symbols and scientific notation in the RO return value + string valtxt = MyROFSTLookup.GetTranslatedRoValue(padroid, MyRTB.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta, MyRTB.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.UseTildaPoundCharsForSuperSubScriptInROValues, false, MyRTB.MyItemInfo); + + MyRTB.OnRoInsert(this, new StepRTBRoEventArgs(valtxt, selectedChld.value, linktxt, padroid, MyROFST.RODbID)); + } } diff --git a/PROMS/Volian.Controls.Library/DisplayRO.resx b/PROMS/Volian.Controls.Library/DisplayRO.resx index f24ecbca..c838cbe9 100644 --- a/PROMS/Volian.Controls.Library/DisplayRO.resx +++ b/PROMS/Volian.Controls.Library/DisplayRO.resx @@ -112,20 +112,12 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + 17, 17 - - For Step Editor sections: -- This will place the selected RO at the cursor position. -- This will replace an RO with the selected RO. - -For Word sections -- This will place the needed RO ID on the clipboard. - \ No newline at end of file diff --git a/PROMS/Volian.Controls.Library/StepRTB.cs b/PROMS/Volian.Controls.Library/StepRTB.cs index dcd59514..6222f8e7 100644 --- a/PROMS/Volian.Controls.Library/StepRTB.cs +++ b/PROMS/Volian.Controls.Library/StepRTB.cs @@ -1400,9 +1400,13 @@ namespace Volian.Controls.Library if (SelectionLength > 0)HandleDeleteKeyWithSelectedText(new KeyEventArgs(Keys.None), null); int position = SelectionStart; SelectionLength = 0; - linkValue = linkValue.Replace("\\u8209?", "\\f1\\u8209?\\f0 "); - linkValue = linkValue.Replace("\\u9586?", "\\f1\\u9586?\\f0 "); // backslash symbol - linkValue = linkValue.Replace("\\u916?", "\\f1\\u916?\\f0 "); + + var pattern = @"\\u([0-9]{1,4})\?"; // RO Editor add symbols C2025 - 003 + foreach (Match match in Regex.Matches(linkValue, pattern, RegexOptions.IgnoreCase)) + { + linkValue = linkValue.Replace(match.Value, "\\f1 " + match.Value + " \\f0"); + } + linkValue = linkValue.Replace(@"{", @"\{"); linkValue = linkValue.Replace(@"}", @"\}"); SelectedRtf = @"{\rtf1\ansi" + FontTable + @"{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;}\v" + FontSize + @" \v0 }"; diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.cs b/PROMS/Volian.Controls.Library/StepTabRibbon.cs index 37b57301..bb6c20da 100644 --- a/PROMS/Volian.Controls.Library/StepTabRibbon.cs +++ b/PROMS/Volian.Controls.Library/StepTabRibbon.cs @@ -721,6 +721,59 @@ namespace Volian.Controls.Library } } } + + public DevComponents.DotNetBar.GalleryContainer BuildSymbolGalleryForRO() + { + // sl, galleryContainerSymbolsCM, galleryContainerSymbolsCM3, galleryContainerSymbolsGrid, galleryContainerSymbolsCM4 + + DevComponents.DotNetBar.GalleryContainer gc1 = galleryContainerSymbolsCM; + DevComponents.DotNetBar.GalleryContainer gc2 = galleryContainerSymbolsCM3; + DevComponents.DotNetBar.GalleryContainer gc3 = galleryContainerSymbolsGrid; + DevComponents.DotNetBar.GalleryContainer gc4 = galleryContainerSymbolsCM4; + + FormatInfo fmt = FormatInfo.Get(1); + SymbolList sl = fmt.PlantFormat.FormatData.SymbolList; + if (sl == null || sl.Count <= 0) + { + FlexibleMessageBox.Show("No symbols are available, check with administrator"); + //return DevComponents.DotNetBar.GalleryContainer; + } + foreach (Symbol sym in sl) + { + // get an image of the symbol character + // found the we cannot change the font being used for the button text + Bitmap symCharBtmp = createTextBitmap((char)sym.Unicode); + DevComponents.DotNetBar.ButtonItem btn = new DevComponents.DotNetBar.ButtonItem(); + btn.Image = symCharBtmp; + //btn.Text = string.Format("{0}", (char)sym.Unicode); + + // to name button use unicode rather than desc, desc may have spaces or odd chars + btn.Name = "btn" + sym.Unicode.ToString(); + btn.Tooltip = sym.Desc; + btn.Tag = string.Format(@"{0}", sym.Unicode); + //btn.FontBold = true; + btn.Click += new System.EventHandler(btnSym_Click); + galleryContainerSymbols.SubItems.Add(btn); + DevComponents.DotNetBar.ButtonItem btnCM1 = GetCMButton(sym); + btnCM1.Image = symCharBtmp; + btnCM1.Click += new System.EventHandler(btnSym_Click); + gc1.SubItems.Add(btnCM1); + DevComponents.DotNetBar.ButtonItem btnCM2 = GetCMButton(sym); + btnCM2.Image = symCharBtmp; + btnCM2.Click += new System.EventHandler(btnSym_Click); + gc2.SubItems.Add(btnCM2); + DevComponents.DotNetBar.ButtonItem btnCM3 = GetCMButton(sym); + btnCM3.Image = symCharBtmp; + btnCM3.Click += new System.EventHandler(btnSym_Click); + gc3.SubItems.Add(btnCM3); + DevComponents.DotNetBar.ButtonItem btnCM4 = GetCMButton(sym); + btnCM4.Image = symCharBtmp; + btnCM4.Click += new System.EventHandler(btnSym_Click); + gc4.SubItems.Add(btnCM4); + } + return galleryContainerSymbols; + } + private void SetBtnInsSupInfoVisible() { if (MyItemInfo == null) return; diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs b/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs index 33fc65fe5b524d2adb6f050cb1c1792c6312116d..f08f2f5abcbc212fca605bf66d8884178cfb4ad9 100644 GIT binary patch delta 332 zcmX@oue_~ac|!xobcKD49FtkHyf*WQTS-iw@Lgzg4~GWdv`0*0n`88i)=pn=n2~34 z*gdPM1&jid=iM;@%1CTBxXZ#aSs{pLa@V6IunC)O9y&2j4oK(N{N>RW;q7XB7=^f| zAE;vFnVxWnQDFL$DXcE-LB|-k2OVQtA~9WI4a$kleAY1@5fwc5!c z|Kg^Fv+zyNie=&2J}-u40@L)oLPn|SVF@gJ+ZV*M9AIO%WH6rG7^J;@LK=%3ADH*h zKz{nZJQkkqY^5yUWI;mP87H&MmIJdEZe*ES3}Q`ZRADvVo~O#HBn8(s&x%!S`zd=? znXc_xr&td$aXK?(Fr+dhGh|OsoXe;^z2GdXNc)>JtU%1R{mmJ6CgZ6N93H?R5}E$z PKf4_$Ahs^xP&p0&jtzRz delta 392 zcmdniuY9Cmc|!xo^g3xKp3QQK8hn!yYazHxAWQj*H zn*$z42v4_CVB*<+L6Rxw==6P(Ol+H1d=uiDzOI`^YWfC2Mz(eZM#k+5j7;+++HLML zZMV74Y*0J>OFV1B^aZgj64U=UGwzt~5Y8g9eO)Ze5yt6y@hl3{TMC#QrhR2%+uj$? za)yoBkilTOV+)h~^ne5wf$d#sEG~Qqu?a;ieB1w&uzZt6h%H#n!ZJOeAE;PuGE0^m zTw?o%jVu+#aPIUEN~~hr<5XFdq~K!P7ud6!ba6T}WH6*MBr{}BFJxqtpC-b{Gr6IV zZ92~>R<7w~=NQGdzdFgfhN=DD8CD=>+kWp1JCpHLJq{mW2n$Sq^`G4i6v7f)Cvm78 F2LMeGjK2T? diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.resx b/PROMS/Volian.Controls.Library/StepTabRibbon.resx index cf608a76..98815c30 100644 --- a/PROMS/Volian.Controls.Library/StepTabRibbon.resx +++ b/PROMS/Volian.Controls.Library/StepTabRibbon.resx @@ -118,111 +118,300 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + - 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 17, 17 + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAX0lE + QVQ4T72OWwoAIAgEvf+lC0FFt3x8RCN9ZO0oLYakPNprKoZ80O5UyvKpFp4Krh+ngvJj1rfXH4ICEHiJ + 6xX0ggYRwMqDoBKiVvpI7MtPK5iA0UOAU/9voOD0Zxtszyqxa1VmsC8AAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABLElE + QVQ4T2P4//8/AzUxhgClGMHBAe8+/fq/Zdmr/5fvfcajikgDYYYtO/z7f3LXNfyGEjIQ2bAJG9//T5/y + 4n940+3/959/x6KaCANBhhmEr/xvnbTpf8Oy9/9di8/91wxa/l/efSYW1UQYCINOJVf/p/be+S9t145H + FQkG6qVd+q/kPvm/lHUjHlVYDMwqrPyfkV/5Pz2v4n9KTtn/pOzS/4kZJf/j0ov+x6QU/o9Myv8fnpD3 + PyQu539QTPb/gKjM/74RGf99wtP/e4am/scwkGJIcwMzCiDeTc0t/58M8m5myf/4jKL/salF/6OSC/6H + JRb9D43P+x8cC/Ju1n+/SIh3vULT/nsGp2DxMpUwhgClGEOAUowhQCnGEKAUYwhQijEEKMUYApRiAF8O + KkwDPuBiAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABLElE + QVQ4T6WQu0tCYRyGz1/S1hBtDbXm1onUyE5e8JKXk8dLXg52sa3LVItjUSAGRTTUWBDU4BRE0CIuYkuL + 2BY0PvEhEvQp9CEP7/LA7+XlpwHaKJGEaiShGkmoRhKqkYRqtHSxjJUvk8xtk8huEstsELVKhJM2wUQR + fyyPdzXHcjjLUjDDYiCF02ex4E2iGybaqEhCFc0q9Oab61vExfxUiYhlEzJtAvECK1EbI5LDExLz07j8 + vfnzxhq6J/G375fy6Tu+nTpu+0G8ayiS6HNw2aH2+I3DvFUrmI1dkzp6QxSc3H3hLN4zE7pifK4ysEgS + jVaXCfcZ+7UWuxcdfHtNpowqr42P/xUImu1PpgPn6HadSdcxT8+tgccCSfRptruMOQ6p3rwMPRb8AM61 + eNYtKznlAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAA00lE + QVQ4T2P4//8/AyUYTIQ3PNLxKT31H12SGAwmQpru//fIP4BiAAMDA4jAi+EGBJZd1nRIXv3fMWmVH7oN + hDCYcM3e8d8ifPp/Y/8Okr2BIUAqBhNB9Tf+B1Rf+e+Svb0LXQEhDGcE1V1Pt4ldAPcCeoBhw3ADQhoe + +rhmbf9vm7jUH90GQhhMeBYc+G8ZMeO/kW/LAAWif9XF/77l5/47pKwm3wV+Fef+O6ZvSoNLYAk0dIxi + gEfRkdlmwRPIc4FH4UFwINpELwxEV0AIYwiQigFhaK7Hy/55VQAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAAd0lE + QVQ4T2P4//8/AyUYTBR0Hyoo6D70H0SjKyCEYQb8D2158l/Wuuo/TIKFieU/PoxuQAFIs6x1FXkuoARj + CJCKwcRoIGIKkoLBRGLF8oLEiuX/QTS6AkIYZsB/z6Kj/yWNM8kLRJDNIM2SxpnkuYASjCFAKgYAPlC2 + qCS4LQgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAQklE + QVQ4T+3QQQoAIAhEUUnvf+UJAiEcDIZ20eK5+IgLDYDdoKBaw91R7UsxAlXu0EUVBRUFFQUVhc5/Yo/C + yaNPnBsg1gfsoRIVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACXUlE + QVQ4T6XQXUySURzHcW+786KtrW666KJara2XWY5cWgt7WZJdOCezFstYTSqR6FFAHh4RpEQsEOZjoPS0 + pGxpK3u15U1La741CLSWUDnAypdSF+X5tcdWS1Fb6+J7cc7+53POTgKAhP8pbuNXHU8ernGxejHHGkEp + ZCvvttxInD0zL1BRqtzucRnAsUYyPsCQumrmjafOgGYPS82ejTvMd6nGQCaCDA8AUQvqHQwmg/rpdXd7 + a/JfAZeV/kIileBYw0/ApgO/djvK4KhQoZ41ZywI1FZpQCJmuO00ELHAWaUGiVrgstEYH2Bgr6BaFwQs + uvzpG53nKZCwBQ5TIaYiZtjLFYiFjNArDwdmAC4brXZaafDduVl/1qA4CBI2o6byFGJvTajWSxF7V45z + RUcwESxFgWSf7zfAscZFboceI68Y8B931amFSirC90ET7jecxFhAjbbGfHx+XYKGC3kY8xfjeM7O3hkv + 4FijriBnG4Z8Woz2q2DXijAZMmC4X4eRPhWG/RQ++RUYCVAY7DwGSabgWdwfXGbLFdNIrxzRLhmGX2ox + 1qfDqL8EH7zFCPcoEe48gcC9LIj3JLXFAXxslfoKj7xvl2KwQ4ZojxIfvUUYenEGoad56L4uxOOLKSR7 + 98ZHcwKNHkui8pCQ4ZGeWwfQ1SQi3pZM0tu0F889aWjnBDDKBF/luUL7nABfXRm9WC3dX8Ij18w7yIOa + VNLmTMFt6+YpSrLh266tq3E6N33pvACf5qhwhUaWJRdnJDdvWbtsctOqJUhLWu4Tp6+vLcxOXffnbNzh + f+0HpP7OSS0WHh0AAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAB1UlE + QVQ4T6XMT0iTcRzH8Uc6h7cOdaij5Kp1iCgkiigtIxLskhSGLSey2ma4RMseV7NCDTKIEEolAueIbCTD + pDWcC2wM578nNc2miwJLlGbC7HlHHvztSYgHPLy+8OUDbwmQ1mPlKKFG/jUUvE+0p4H+tw1E3tTT97qO + gNdFl9uJr01eoQmQHAPCQFCXKkueCIz0NpJMvAPculVaTolA6FUtS3MvgUe6VZSeFIGejpv8ij+BxD3d + HCUnRCDwwsn8ZB3Lc65V/Lj9Xw5zrgj4n8vMRsvha41ujuLjItDVLvO5O4/F6QqYqRbi1fAl5U9Rbjom + Ar52mY/eLOKBA0z69jHu3UmkeRM/B02o09chdm2NK6aclIBb5lvvaUaaN7AQNjAbzCDyUCLWnY06VQkT + V9ewF2VrA4mImXHPdpRn6ajRPSyFMog+3kJytAwUGyh2DWvhkZRAm4w6ZFEXw4VMdRh5/2AjsSaJiSaJ + T55MVMUKg5dh2Lrq0tnD2sDyQMnvv0Oy30y8cz8fWrcx/HQzffVpKC1bmfFk8b0zlwV/PvP+fErPHNIG + amw5OG1HqbUf5K51L3csu3EVG7h1MRPnBQM3igxUnd+B49wuygqM2AqMIrAefwA3LxXoYFHxHAAAAABJ + RU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAB0ElE + QVQ4T6WQ30tTUQDH/Y/Chx56CZ+CeugxejZ8iQjqwaCQCMQehAhKpcW0raZb2rLRptOtzavmTdcqpizR + oPQum3R7cM613Xv3iXPW5g6rB/Hhe35xvp/v95w2oO04kkP/812a1Te6y21Pnu7HP7jycIfOe9+5eDfH + +TsGZ24ZnO7e5tT1LRSAV4ORZBVX3GEwanM/bNE/WaF3vEzP2G9ueA+45i5y+VGRroEC7V3vVUBdvb48 + N0fyXB2qJV/oy3GuZ5uOv6l1nejUDwFjkRTVarWhxfQXZT+9sCrniuVQKDn4wzonz146BDwN6YphLrWh + 7F8nP1G2HPZLDmbBxhdaVAHDwXk+fjZk8lxqk8S7dWJLWZkszK/iaSaiKwTCujQ/CWoqwBV4oyTOLmUb + a1FbmM2CRc6ssLlTwT2eUAGDvhkFEF1Ya5j3SzaBiI7xy5LmzFYZlz+uAh54p1jOfCX2Nsv0/Crh5tqR + Wm3PSw33RAJXIM7Q6EwroLnBZCwtf/vnnk3OtPAENTLfyixvlEiuFRl4Fv0/QNR+Id68Z2OYtdrizTXz + AVMfioj7LQBtZV3WFub6b4vkYVHbL2rPymRx958AcXBUNQDHUcvBUfUHdLUcgRxLqH4AAAAASUVORK5C + YII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACQklE + QVQ4T6WTXUiTcRSHdxkRRBdB0IUREV1EKRFEYYuQAklL8sKQPlAqmJSUrCzXEhdkaWGCio5WajorM9ss + E7NQcaR9aHM6k+YCV6TO/KIPm/OJ84a9BkaBF+e9e55z/uf8Xg2gmU8pn/w7rcyu3HIHWTebuFDUgCH3 + MSlZNnSmShLSrMTrS4hNtrAnycwfgsAUf60v32F4Yhrf8DS9H4O0e4Os2Zn+fwK/y437UBiug6E4W1wK + XFrbx+od5/8tkM4C46tj8ulJXuxdQbM7yA37W1ZFzBLIm+eCZWzXgdBfcHYEjpgQ6jqmKLrnZOV2oyqQ + hc0Fy5tlbOks8P0Hb6humyLP2kbItnOqQLY9A/f0DXAiw6xUa/dn5c0ytnQWuKIlQE5xE8vDDapATiWw + p39YAT2+EZy9Q2yNSsRc9Rrt7sNKFVb3UNIYINtcz7ItaapA7jwDfxgco//TV553+qmo6yIyToftSTu1 + jZ1oNBoKH/m5mF/D0k1nVYGEROAB/zhjE5M4PaNYbO+4Xe+lwNpGdPwxiu8+I+e6XZGYrlWxZOMZVSAJ + +xEIMjQ2Sbd3nNKHHq6WdZFpeUWWxUGyyUqoNpZkQy661CuKZPGGVFUg8Rwc+cbLbj+VDe9/w+l5jegv + 20kylhGTYFIkkfuOo41OZFHYaVUg2XZ7Rymv6SCjoBlDTj36zGqSjLdISCkg7uglovcbCN91hLWbo5Ra + uH6WQH4MybbEUxImIZE7y6lk27IwebOMLZ0FXrDulCqYT/0EcKby8bQ2bXwAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAABrElE + QVQ4T52RWS8DcRTF56N4IqKINX0gQcT+ggceSCR8G30REQ9qiaWCpo09LbUTamnKYNpoi7ZUEUvb1DIz + R+YmM5FmxoObnJyb/8z5/ZfLAGAkzW1xSJVljcWUzYXx+QNJ3fK/v6U0UkCrjDMbKK7rUoUojXX9PDWn + VN+4DfZdVoYYVAEzK+7UnFJD5jUKy1IFTC4dQUwJiqJIazwvYHDagd7RZRTVdqoDTAtOCIKA00sfudcf + xDcvwH3hQ/LzC66La1hs+9oAg3EO/ts7MAwD1ntNzvmC5IduD/mYZVUb8F8pzbzjiHYJBB/IvYEw+bn3 + hnzbyZIXVjSrn2Bidhss54Mgiog+vdADspwf8eQnDk/9CEXeYRiwIqOoRh1gnHbgm+eVCUgP+Br7QDga + Axd4xsllBD0ji8gtb1UH9E/YlbC0eyL5hYfnBK6CL3B7othxhWiMulKNK0gf5ZLm/hb/wP1jnAAHZ3dw + OG8IkKlv+Buwd+zB0sYJRq2bGDavo99kp6Cs9MJqbYA044KqDuRXtiOvsg05ZS0kXUkTskoakamvR1p2 + qTrgv/oBFQAPI+QT9ewAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAnklE + QVQ4T6WS0Q2AIAxE+82PIziCIziCYQJHcRYmYRRHwRyioS3UEC85MTV9PUBKKdEfq8Ko70dfqyxAI4BD + FiALsBBRLN6rd+YuwPmwOR+mCogtKFuA6Hw4ASolfFRWgNKYhLEFOT2nU4CBBPlWLMDXGdgJGrcgE7TP + oBImPNPmsgLKZAHQhJ8HRjNWJGGyAFLvvmuNAJAAqZgU4I8vMFFlo3aSOUkAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAdElE + QVQ4T7WTQQrAIAwEBf//5hRKI3ZWRbr1MAc345qLJSLKn0jgIoGLBC4SuEjgUmqtPfHAnKRHPheO3Ps8 + k3ZK6UlhDinO6B9vd1YCCwi914YsoDyCzrnCHOSwP89K6TSXoo0EA7jFavMDX4+BiwQuErhc7EeiiR4r + 8zwAAAAASUVORK5CYII= + + + + + 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 + zX6th/05/Q8FMcZPXTFPhgAAAABJRU5ErkJggg== + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAI0UlE - QVRYR53XSWwb1xkH8JElS+i50KUIempB9FyguQRoiya2gSyHOEWQADnkFtRxmwRBENcIigZx0sDNVsCJ - d1mSZcv0EluS7aS2JFv7QslaSIkUd3KG+zILZx/y3++RVBzvTgf4YzhDit/vfe89YsSx41/79nN79/yj - 9ejBEz/vOtLb2XWkp7PrKOVYIydYjnffThdds/z43vGezu4TvZ09J04209d5svtUZy+d93/62c8unh+s - 17rvMdh3k+s/fPmXKyPpq4GJ4mJwpugJe0qe6FLJE/eWPIn1socPlD1CqOxJRURPOip6MjE6s9DrVIS9 - V/LwwaIn4S94Yms5T2Q16wkupT1+D+8ZuTL951K8yrW0tDQr3nVc7p3k3Ie+dwVuyKnYjIXkgoXUio3s - uo180EEx6qCcqEISapDTNShZoJID1HzjrGTZ/SrElINS0kI+qiMTUiH4ZcS9ZUwNL+2ChAcDhnonuDOH - vnP5RyUhOmUiMW9CWLaQ8VnIBQgRtlGMESLpEKJaL8aKVhIaKhnnNiLDEDYhTORjDFEBH5Awc2N5FzQ0 - q93nGOwZ5/oPfudaHxEJYCA+b4BfMpH2Wsj6aUQhBmBf7EAUCJGhkS/zMD/8DMapoUYnCpQ8IbLUqbSN - smCikCBERMHc+Mou2I8EXHWtDYtCZJIAcwaStwykvCYBaDQhC4UoARLsiwlAI9aOnYVxqA/64E1oORta - ie5R1CJNUZ66RPfEDCF4DZ4pAuBhgO6xJqBMAB2xOb0JMJAhQC5IXxS1mgC7DjA+/gr6ue+hzaxBK9jQ - RUCXGtHEGtQyTU2REFkdi7OrDwcMMMA3DUB4UiOARgAdwioDGMiFGMCsL7AyzbFErTY+ovYfPQXzP0eg - FwwYSg1mBTDVZio16EoVFdHE0sJjAE5/c8XlGy7dCfDSHNYBBgoxAvAWxLQFqUSArw7D2vtPWJ9+AUO2 - YWo1WHoNjgk4ViO2RZ/TLKwsex8OuNR9swkoEkBFbF5FYkmD4NOQCejIhQ0U4wZKtLDErAmZWqyfG4Kz - bQfs/V/ANGuwzSocu4ZqtYZajcrRwc62bcPr/QmA0GSlDkgu0z5eI8CGVt/XxaSBctqg9ptQJAf6og+1 - X/0aztFjoLpwHIeKV6koAzQFdLD7jwQM9BDgIAMUhNAUATyVOiC1rtJeJkBMo9HrEHMG5JIBVTah58uo - PvscnCtXaIc1Cm0iNiE/HTBSEMJTCmILCpKrFaT8KrIRFYWkhnJGg1TUUZEMaJoJM51B7ckn4XzyCWwq - yFp9PwS79vl8jwLcIMBll2+UADMK4osKeF8F6WAFuZiKYkqFmNegiDrUig6dilk08urTT6P64ouwBQE2 - FbobsQl4dAd6CXCIADfyQmSOfr+XZAjrCjJhBflkBaWsSitfRUXRaPQE0DQ4b70Fu6sLzjvvwPn6a1jN - LtyNeLxFuNkBBpiXkViVkdqQkY0pKKQUlAsVKLIKVVWhGbTnV1Zo/p+FGYnAXFhA9YUXYPl890U8FuBi - zyh36uCQyzuaE8JzEgEkpIIycgkZxawCqazQ6Ct1gEoAa98+2O++C51hTBM2daD66quwksl7EJZlPUYH - To5ypw8PuXw3c0LEIyHpJUBIQp6XUSrIkCUCVCqoUOu1cBjOjh0wJiagUfE6QpbhfPABqq+8Asvvh0Vz - b7NQVZMQPr//Lw9fA30jXP+RIdfaRFaI3hLBr4vIRCUU0hLEEgGogKIoUAhgfvkl7DfegEbXmq43EDRa - o1SCs3cvak89BbuvD/boKJyBAdi9vSi+/HJvjeN2EuE3lC33UAZOE+DYkGt9KivEVkQIGyKySRHFnARJ - lOoAmXWARm8//zy08XGorDitftYJ68gR2NQBZ/duVHfuRHXbNtSeeAK1Z56B8/77ELdvP09F/075N+UP - DHAHYrB/hDtzfNDln80I7AkmFS4jJ4goFUVIEiEoDGB8/jksKqLOz0Pv74d54ADM48dhXL0KY3kZBs/X - p8PI5WBfuFAvblMKO3ceog78lor+rpmWOwHuYe7MiUFXYD4j0PMf0tEy8pkyymURIgNQcYVWvvXSS9Au - XoQ6PQ01GESF2s46odI0sN3BpkSnsIVp0NybNGUGfS69Z88BAjxHRX9P+dM9iKGzw5y7e9C1sZAWkoES - MokSCjkCsOI0KimRgPHee9Bp/lknZNoNCpuSZuq7g21RKsgAdURzh7BF6l1fry/CZtE/UnZQbq+FoXME - 6CHArZTABwnAl1AslCGPjUEZHITa0wPztdcg0zaT2Hpopr4wKT+GMMQmhCHY69XVxvNAnmpR0TbKVlb8 - B8Dl89e5s70DruBSShDCRWSFAuTePqg0x9LMDCxaWMp/r0GUFYgiTQubms3QdX2himy7Eoo+U//NqDQw - DLUJeOBx+QIB+giwIghCvITyyTPQ3n4bZfp1M15/Her+/SgWWVeKKOaLND2FO1LM0X1KKU9/S50T2eIt - 30YtL9FT8cMAVy5e586dGnCFvIKQCmWgvvk3SN9+C233X6HSqs/Hk8hmcsimssgIGZqie5Pls9S5LHKp - HPLpPP2CNkAsiwuLjwE4TQAfL6SiWZSPd6OyZw+kDz+iR7IgUnwaQlwAH+PBR5uJ3BW6J0QFpGIppONp - ZJIZ2sq5ejyznkcALm0CkkIymqEvSdLDSAB8nEcimkQinEA8FEcsGENsgxK4N/FAHPGNOBLBBJKhJPjw - bdDs5OyjANe48/0MkEglQikkIknEI4l6wWggiog/gvB6GOE1ii+MkDf0Q8JeusdC9yO+CKJrUUTXo4j7 - CbORqIOmx6ffhPMAQEdHB3e69xx39GD3L6bHPAfnpxfPzk7NuWcmZtzTY9PuqZtT7snRSffkyKR7Ynii - kesT7vHr443ztfH6681r9v7k8KR7amTKPX1j2j0zNuO+dOHS9hyfa1a862hra+O2tm/l2tvbW9raW9u3 - drR1tLa1dmxp3dLR0trS0bKlEa6F66CP/79ppdznn1OO+x8FMcZP/Ws5zwAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAI8klE + QVRYR53XSWwb1xkH8CdLttBzoUsR9NSC6LlAcwnQFs1iwEkOUYogAXLILaijNgmCwK5hFA2yNHCTOAXs + yPEiS7IsmV5iS7KcNJZkW6slStZCSpS4kzPD4ZCcfZ/h/IsZUnW9xHL6gD+GHALz/fC97xEkIYSQf3x0 + iBzY/7fmE52nf9p1vLet63hPW9eJnrauk/Wc9nOq+266eur533unetq6T/e29Zw+00hf25nus229p/va + Dn362U8uXxzySz18DfXdJANfX/35yljx2sZkdTExW42kInwks8RHclE+kl8XItSGEKGTQoRJi5FiRoyw + WTFS9JMRI0za/4yPUIlqJB+vRLJrXCS9WookloqReISKjI3M/JHP1UhTU9P9pevrau8UCR/7LrRxQ2ay + szYKCzaYFQeldQflhItqxoWQr0GiPchFD0oJUDlAK9evSsm/X4PIuOALNsoZA2xSAx2XkYsKmB5d2gsJ + PwwY7p0k5459G4qPS3Rm2kJ+3gK9bION2eA2HJRTDqpZF0LBhUTXgmJ+UTWvQ2XduwjWRzjgCxbKWR+h + gtqQMHtjeS903F/27hrqmSADnd+G1sdEOjNtIjdvglqyUIzaKMVtlJM+wH+wC5F2IbGAukzB+uAzmGeH + 652oAGrZg1yqQSo6EGgLlbwBNq1gbmJlL5xtAddCa6MinZ4ykZszUbhjgolaKMUtlJM2KhkHfN5/sAuJ + A/ST52Ee64MxdBM650DnEUSrelDKNcicA5G1UKF0RKZX9gKPAnTfagAEOj1lIDtnNAAm2LgFLmGhkrEb + ACcAmB9/CePCd9Bn16BXHBgiYEj16KIHTXChVh2IJQOLt1cfDRj0AV/VAakpHdk5HYU7BuhVH2CCS/oA + KxgwgXEglT2YH34G88RZWP86DqNiwlQ8WCpgaY2oHgylBlW0sLTwGID+r0ZCsVH+XkDUaABMVLIWeMqG + WLQh8R7ML7+GfeDvsD/9AqbswNI92IYH1wJcux7H9mDqNlaWo48GXOm+2QBU6dSUhuy8hvySDjqmg90w + wKVMVHMmeNqCWLIgix6MC8Nwn90N59AXsCwPjlWD63io1Tx4HoLlXx3HQTT6IwDJKTUAFJY10Gs62E09 + ONfVggmhaEIqW1AkF8ZiDN4vfgn3xEk4HuC6Lmq1GjzPBzQEqN/fFjDYc5P0d/qACp2cVpGNqAGAWdfA + JnWUszp42oDImZB5E5pswSgLqO15Hu7ICJxGoS3EFuTHA8YqdGpaQXZBQWFVBRPXUEprqBR0CKwOqWpA + lUzougWryMJ78km4n3wCp1YLWv0whP8+FottB7hB+juvhmLjFTo1qyC3qICKqSgmVHBZDVVGg1jWoYgG + NNWA4TiwR0ZQe/pp1F56CQ5Nw3HdBxBbgO070HuD9B+7GordKNPpORm5JRn0ugI2paBcUMGXNEi8BlXR + oesGDF2H+/bbcLq64L77LtyjR2E3unA/4vGGcKsDPmBeRn5VBrMpo5RVUGEUCBUViqxB0zTopglzZQW1 + PXtgpdOwFhZQe/FF2LHYQxGPBbjcM07Odg6HouMcnZqTkF+VwCRkcHkZ1ZICSVCgKmoA0EwT9kcfwXnv + PRg+xrLgHD2K2muvwS4UHkDYtr094MqZcdL/9XAodpOj0xEJhagEJimhTMngKzJkSYGqqlB1HXoqBXf3 + bpiTk9Atq46QZbgHD6L26quw43HYngfHDwDLH8J4/E+PBAz2jZGB48OhtckSnbkjgloXwWYkVIoSRF6G + LMtQFAWKrsM6fBjOm29CVxTohlFHOA5Mnod74AC8p56C09cHZ3wc7uAgnN5eVF95pdcjpB2E/AqE7HiA + Mtg/RgZODofWp0t0dkUEvSmiVBBR5SRIohQAZL8DqRScF16APjEBzS9O00En7OPH4Rw8CLejA7X2dtSe + fRbeE0/Ae+YZuPv2QXzuuYsg5K8g5J8g5Hc+4B7E0MAYOXdqKBS/zdL+LxgmJYCjRfBVEZIkBfEB5uef + w+7ogDY/D2NgANaRI7BOnYJ57RrM5WWYFBVsh8lxcC5dCoo7+/ah0t5+zCPk1yDkN4003QsIj5Jzp4dC + G/MsnV8XUMwIKLMCBEGE6ANUFcrKCuyXX4Z++TK0mRloiQRUng86oVlWcDr8LTEMIxhM03Vh6TrMRALF + /fuPeIQ8D0J+C0L+8ABi+PwoCXcPhTYXinRhgweb51HhBAh+cYqClM/DfP99GIcPB52QNQ2KvyWNBKfD + P6K6HgACROOE+EMaXV8PhrBR9PcgZPc9szB8YZSEe4ZCm3cYmkrwYCke1YoA+dYtKEND0Hp6YL3+OuRC + AZI/D40Eg6k0TkgD4iO2ID7Cf726Wv89UK7vfQsI2XnPHFy9eJ2c7x0MJZYYmk5VUaIrkHv7oB05Aml2 + FnZ7O5R/fw9RViCKIkR/a7YiivVBFf3jKkORG98Zah3jo7YAP7iuXrpOzvcNhhIrNE3neAhnzkF/5x0I + sRjMN96AdugQqlW/K1VUy1VUuMo9qXLVIHyZh1ARIPrDK9xFLS8tPxowcvk6uXB2MJSM0jSTZKG99RdI + 33wDvePP0Do6UM4VUGI5lJgSWJoFSz2YElVCiS6BYziUi2VUS3WQn8WFxccA9A+GkjGKZjIlCKe6oe7f + D+mDD8HGE2CoIugcDSpLgco0kr4vGQp0hgaTZVDMFcEWWHA0FyRyO7IN4MoWoEAXMiyYbAHM+gaoHIV8 + poB8Ko9cModsIovsZhbZjQeT28ght5lDPpFHIVkAlboLuj11ezvA9+TigA/IM/kkg3y6gFw6HxTMbGSQ + jqeRWk8htZZCKpZCMpr8b1LRVD2xFNKxNDJrGWTWM8jFc8hv5gPQzMTMW3B/ANDa2kr6ey+QE53dP5u5 + Femcn1k8f3t6Ljw7ORueuTUTnr45HZ4anwpPjU2FJ0cn67k+GZ64PlG/fj8RvN56738+NToVnh6bDs/c + mAnP3poNX7l05TmO4u4vXV8tLS1k566dZNeuXU0tu5p37WxtaW1uaW7d0byjtam5qbVpRz2kibT63v8z + zX6th/05/Q8FMcZPXTFPhgAAAABJRU5ErkJggg== iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACLUlE - QVQ4T52TvY/ScBjHuVIRKHA9JAgnL+VoC7TX0kLLS6EvFBTa0uj5J7gYF+PsfpOTMrg4ORgHY+LCYJwc - TYyJiYuDLu7GxHgxd/Hnr5fA8TZcrsmnzfN9nufTNPnVBwDw2ZYljGzr3ciyTNu2EC87L75eb+DvD67f - hU9g9vt/HNs5cMaOf9Owohro7YNbe8PhjfuzzBOgkDuabk6bbRXoxuBkNLIeus6yhKyIwY5umo5tHxmG - +Wwu8G5QkIa0jN5gqnR1oOkGuOk6b1x3jHl9uaWGhpb1UtXNY1luPmJ4KbIkmAElAcgD3egfa5oJxq77 - oq3ovKJoE7XbBbwoTWhG2F7cWRJ4dFR1S9fNCvykT41mB9TqjSOxXvtJM9zrYokLrc4vFYtUBcngq9Lf - tqICvlr7RhQr8U1za4FHXZIIurT/mePFf1AEJLkFGJb7uml2LRBrcp4us1+g4KRcYV8lkmkplyenglgH - VIm9tzq/VJRZLpUlih9yBQrAt79Pp3bjkVgM244nsPwe/VQQ6r8pRsgu7pwtC61grkA/T10r/NrnxB8s - V2VmvQiOB0MhLMZVxY/pDPEkU6DnZ2Qu2M0STjJFAIpmAUmXD0NY9PQMzEBRPwJzkiSp71F8J1/ipNMj - f9rE8XggkUgexq9cBXmi+DYYjtCRGL72T+D4jr/RaE+waFgu8c0zgUcmT9UuBS4/9m0hmh9Fo7N8FXih - CIKE5/Vi8yJsDM8P8P0HLGwR4Wl3ICYAAAAASUVORK5CYII= + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACL0lE + QVQ4T5WTv4/SYBjHe6UiUOB6SBBOfpSjlNLSX9Dyuz/eUoW2ED3/BBfjYpzdb3JSBhcnB+NgTFwYjJOj + iTExcXHQxd2YGC/mLr4GErijnIk3fN7kfZ7v80ne5HkRCCHiOo40cp03I8exXNdB57X/BQHADgzsq7cB + sKE1GPzyXG/fG3sBf3BOVzOxm/s39obDa3dPCzAA7Fu6Yc1aHQ0apn08Gjn3J966hKrKoZ5hWZ7rHpqm + 9WQlmB8A2BkA7LYJ7Fm3b0DdMOH1ifdqMhnj877a1sJDx3muGdaRqrYesIISXRMsAcAOAmDfM8zBka5b + cDyZPOt0DaHb1adavw8FWZnSrLR9embjnT1N2zIMq6ob1odmqwfrjeah3Kh/p1n+ZanCh/35DcESUVJM + QVR+d7oaFMT6F7JUTfgz/xQ0FIWkK7WPvCD/ESUFKmobshz/2Z87UyDX1QLNcJ/oSu2YqXIvkqmMki9Q + M0luwHKFu+PPr10Yjk/nyNK7fLEMeUF+m0nvJqLxOL6dSOKFPfqxJDV+llkpd6aAkdqhfJF+mr5S/FHj + 5W8cL7LLXpQgQuEwHudF+X0mSz7KFunVjqwEuznSS6VJWKY5SNHMQRiPLXZgCYYFUIpmKIoqf40RO4UK + ryxWftEkiEQwmUwdJC5dhgWy9DoUidLROLHxJwhiJ9BsdqZ4LKJWhNaJYE62UK5fCF58iGyhegDDYv7h + JQiCYCiKRlZ3f+C8bBTOy18sbBHhuWUzeQAAAABJRU5ErkJggg== @@ -231,554 +420,554 @@ iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABL0lE - QVQ4T7WPuUoDURhG8xxaCHY2Yh+wECREVCRxHBOymMlMZrKYZYxLOhVBCAiCNr5AxFJfwd5C0catEsUm - hYiFxXFCCEq4TmJu5OMU93A58HuAviKUMnw/ftn90zs7tVeuHt5cfjnrJtiK1c4/SVZv3KOdgj9j+6d1 - zMMX1O1bHp8/xNFOwUZsTD3Bq52xWaszuXLBSOCYId9Rb8HWJsrXGHt3DI7vuvxy1m1wNHXJsO+AAe/W - 34KZUgWrUMHMb6Dn1tCyqySsMjHTJqKXCGkF1KU887EcgUiWuXCamUWLadXErxhOoi0ovX8PWsXmucby - OsnGuekyccsmatiEk0UWEjZKPE8w2jg3w2yoee6UksIf1J1EW7BfCKUMQimDUMoglDIIpQxCKYNQ9g6e - L18OKkyOPi51AAAAAElFTkSuQmCC + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABLElE + QVQ4T2P4//8/AzUxhgClGMHBAe8+/fq/Zdmr/5fvfcajikgDYYYtO/z7f3LXNfyGEjIQ2bAJG9//T5/y + 4n940+3/959/x6KaCANBhhmEr/xvnbTpf8Oy9/9di8/91wxa/l/efSYW1UQYCINOJVf/p/be+S9t145H + FQkG6qVd+q/kPvm/lHUjHlVYDMwqrPyfkV/5Pz2v4n9KTtn/pOzS/4kZJf/j0ov+x6QU/o9Myv8fnpD3 + PyQu539QTPb/gKjM/74RGf99wtP/e4am/scwkGJIcwMzCiDeTc0t/58M8m5myf/4jKL/salF/6OSC/6H + JRb9D43P+x8cC/Ju1n+/SIh3vULT/nsGp2DxMpUwhgClGEOAUowhQCnGEKAUYwhQijEEKMUYApRiAF8O + KkwDPuBiAAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABMElE - QVQ4T6WQvUsCARjG7y9pa4i2hlpzy0iN7PIUT/Pj8k5NvcM+bOtjqqWxKBCDIhpqLAhqcAoiaBGXw5YW - sS1o/NXhcgdndMmPBx6e4eF5XwEYSq6hF7mGXuQaepFr6EWuoRcJeb2GWq6RK22SLa6TLqyRUqskcgbx - rE40XSayXGIxUWQhXmA+phGQVOYiOfyi8tMyJDb7PwS10p+vrG6QseZrVZKqgawYxDIVllIGYrJEWLbm - 5wlG+/NnxRX84ay9y0nt5A1pq0nIuLfeNRCbdbJ30aXx8IVPufFWMJ2+Qjt4xSo4vv0koN8xJV8yOnPo - WmSzfVpmj7HQKbsNk+3zLtJOmwmxzkvr/W8FFu3OB5OxM/xGk/HgEY9P5sAzbNZJu9NjxLdP/fr5lx8g - fAPOtXjW7jTlPgAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABLElE + QVQ4T6WQu0tCYRyGz1/S1hBtDbXm1onUyE5e8JKXk8dLXg52sa3LVItjUSAGRTTUWBDU4BRE0CIuYkuL + 2BY0PvEhEvQp9CEP7/LA7+XlpwHaKJGEaiShGkmoRhKqkYRqtHSxjJUvk8xtk8huEstsELVKhJM2wUQR + fyyPdzXHcjjLUjDDYiCF02ex4E2iGybaqEhCFc0q9Oab61vExfxUiYhlEzJtAvECK1EbI5LDExLz07j8 + vfnzxhq6J/G375fy6Tu+nTpu+0G8ayiS6HNw2aH2+I3DvFUrmI1dkzp6QxSc3H3hLN4zE7pifK4ysEgS + jVaXCfcZ+7UWuxcdfHtNpowqr42P/xUImu1PpgPn6HadSdcxT8+tgccCSfRptruMOQ6p3rwMPRb8AM61 + eNYtKznlAAAAAElFTkSuQmCC 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 - 8L+D8Bsb4cocWY3wtQAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACYklE + QVQ4T6WSXUiTURjHX+jCboo+qKuuCqKbKCqoLjIKt8KPFovEFi0XsU1KNlnaNlJzpujSzaVpW7Qv1OZH + JYqToiE0HH3P2Iw+JJpGrmXt3dycy+If74mFrwsiOvDjwHvO//c87zmHAkD9D2kfGNwDtXDd0qDPooKs + MGf74nWWoLddr+ht1yOFpfE4wsEOxILXMTHWgDIxF/oaBa5q1TDUlDJwFguQoHuQjHQjEe6EvU2B+LQN + ZRKe/+WIEhfO5kIp2oGg+ySmneshEx5CmoAJJyMOtNaegNfTAPpDM6bG1HjnOYV+Ew8SQSY6ytfhmZ5C + 0bEctqDb1vhLQN+EtlyISkUB1MX5OF/Eh0LMg1yUC6kgC02yDURQkJ3JFnSatZijuzAXMiI+WYfQi2L4 + basJPusqeNuW4bEhg4QZsnZvZQvsxlrMhiyYDVQj/uoMYs+PgB5YDp3ViTpjHy5e6YJSa4dcY4JEZYCw + pJ4tMLdoMDNhQGxMjJknuYg+2IZPd9aQcGok578jHEkgMBVGvrQKeYXq3xLKpKsA/boa0UdcRIc3IzK0 + FhNWilRmhvm2m2B0uOAbD5LwvRE/DvBFREK11KvwZfQcIq5NoAdXItSTgfEbFGn72/wPfI0mEPgYhu9t + EJ7R98gWyMHli7D/4GFk7tkLqulSKUIPpaAHV+Bz71JMti+Bv5WCTGMibac6uOZwodk+hP5hP5kZdm3Z + COpyZQl5IKlTTiFWGViV73vekHDPXS8czqcsAUdXcRoyIQ8iPgd5+3aSBea0mX9OVfsTRLDwShZyVFpF + NvyNtOC/8hMb4cocvUYexQAAAABJRU5ErkJggg== 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 + lAGEMIYAqRgAbgzMptd1HX8AAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAB5ElE - QVQ4T2P4//8/RRjOWHXoq9TKg1+nLD/49ci83V8f9az/klK58AsnsmJsGEyANAPxp7k7vz6uX/LlTuOK - L49bV325U7Hoy+fKRV9S0TUhYzAB1Hxz5vavb9wrH7w3T9jy3Spl2x+H3ONfUyZ/flE458uLwrlfwkDq - lp34auBQdA3IRDNg6YGv98M63v00i57/2yVv/U3T2DXHgPiLWfzm38mTP/9Nn/n5WfbcL5HzDny9ap15 - /D/QQrjXwETD0i97XMvvvFf36rkVULtdBSRmGrsy3zh6+VedgNm/Qjs/Pge65H/WrM//TeK3AqXRXNCw - 8ssh1/J7r9Q8+w4rONQxwyRNYlY4anhPWl02583/6N7P/72b3vzXC10MlEIzoHnlly3e9S++anhPvgk0 - gBUmOWXrV10gBtvs2fTqv1nx/f8aPlOBUmgGFEx/XBrY+uavUeSaX0ADuGGSoACzAvrZJH7bf72QJWDN - qm5dQCk0A3o3fGVLm/z+n2vZ7T/qXpPckRUgBxg2DGeE1Z3PDen48M8iZd9FZAWEMJyhFTCb0b/62kv/ - lg9/HfIvxMT1vVdCVogLo3CAhvD5VN48FdD6+atH9WNnZDlcGKugd8Or0Kjez5HY5NAxVkFSMFZB4vF/ - BgCu1sRwcCvT7QAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAB40lE + QVQ4T2P4//8/AyUYzlh16KvUyoNfpyw/+PXIvN1fH/Ws/5JSufALJ7oGdAzXvOrQ109zd359XL/ky53G + FV8et676cqdi0ZfPlYu+pKJrwmbAzZnbv75xr3zw3jxhy3erlG1/HHKPf02Z/PlF4ZwvLwrnfgkDqVt2 + 4quBQ9G1/xgGLD3w9X5Yx7ufZtHzf7vkrb9pGrvmmGnsmi9m8Zt/J0/+/Dd95udn2XO/RM478PWqdebx + /6sOfYV7DUw0LP2yx7X8znt1r55bAbXbVUBiprEr842jl3/VCZj9K7Tz4/PCOV/+Z836/N8kfiumCxpW + fjnkWn7vlZpn32EFhzpmmKRJzApHDe9Jq8vmvPkf3fv5v3fTm/96oYsxDWhe+WWLd/2Lrxrek28qONSx + wiSnbP2qO2XrV7DNnk2v/psV3/+v4TMV04CC6Y9LA1vf/DWKXPNLwaGOGyYJCjCrzOP/TeK3/dcLWQLW + rOrWhWlA74avbGmT3/9zLbv9R91rkjuyAuQAw4bhjLC687khHR/+WaTsu4iuCB+GM7QCZjP6V1976d/y + 4a9D/oWYuL73SuiKsWEUjlbAbD6fypunAlo/f/WofuyMrhgbxhAAYe+GV6FRvZ8j0cWxYQwBUjGGAKkY + AK7WxHD7c7sYAAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAACG0lE - QVQ4T51TbUhTYRQ+WVgw29h258012txsLXSOiAJd8UIZSBFkVhAYBUWIYqZhhQ4ug8JWmR+Ykj9CEkaN - pB+lDGQMspDAoqDCws21K0T5Y8Toy5Sn17rIiH54feD8OAfe55znOeelJaHd5aEbm3RKph4l4XVwBC1R - JVWP8lEBdXENtF0WSSmpg/uRDedntNgVEUD+PKaUFdzaquPBqHcLo+5iRl2FjGtm1OZkdNXBqNXG3A+t - OBKz4dSkAdbbYop8xgw/+OPKlyJOvtfj8CsTysfy4I1YsNDVGiqAod8F2wMXDk3aUTGRj7InZuQEhAw/ - eOd6eS1a09m4+EmD6oQeR9/mYu/4epQ+zkdh2Imikb8E+yecKHtuhyNkQ1aLTvGDj90g56BjdhUC39fA - n9agOaVD44wRtR/5ZNNmVCU2LBLsebMZ26MuVI5wP+qzPbSguSGpUUXQk/aiKmoA1a3kBNywUPIm3s0H - 8WK+E6NzLQj/Oo3B2QO489OL3h8b4f9iWiS4/HkfuuUdMEmrFQnc7bbxPgx9GMT9RA8GpiT0TVWjM16B - K7ESSDE7mmTjH4Kzyd2IfG1EcYeYYeK1Ah0F7HxdVkaXLIz8ZkaSyMgnMGrWM7qgZe6QCcfiRXg914+D - wW0pqs1Sd9buuwKefbuH62NnQDUr/jmkJaBp6ByeysOw+MTlnfLxgRPY2V66/M9ENeTh8R/dRL8BDkAX - agnC/hIAAAAASUVORK5CYII= + QVQ4T52TX0jTcRTFbxYWzDa2/dYv14/2c7O10G3IKNAVXygDKYLMCgKjwAiZmGlYoYMxKNaqNZXlmA8h + CaNG0kMpAxmDLCSwKKiwcHNtQZQPI0b/TDmxElmjh+nn8V44l3M4l6gQvAYz3dgqyx8XTHV4I3RBIZo/ + L5i6cQ6tcQmkfYIjf1cQxocizs9KsTvCgZyl7N9twCKjgIWRv4qRz8Sor4KR18DIo2d0VcfIJTLjAw2O + xkScmlZAc4tPk12Zk0fAwhpe8Gh6J8eRlyrUTZTCGhGQvaoJlUMxaIB434DD01rUT5Wh9rEaJW4uJw9/ + FWtLrYcrU4yLnyRoTshx7M0G7JvchJpHZagI61E59lfgwJQetc+00IVEFHXLFvPwmVh7qgQ9c2vg/r4O + zowEXWkZOmaVaPnIo+mDGo2JzUsCe19vw46oAQ1jHKit2ExZz+1JybIE+jNWNEYVoNbV5mxJWCh5E28X + gni+0Ivx+W6Ef53G8NxB3P5phf/HFji/qJYELn/eD19qJ1SOtYsWPHrmmRzAyPth3Ev0Y2jGgYGZZvTG + 63ElVg1HTIvOlPKPwNnkHkS+dsDUw+eEeK1cRm4tI5eG0SWBkVPNyMEzsnOMuuSMLkiZMaTC8XglXs0P + 4lBwe5paipZXa+MdDk+/3cX1iTMg26q8IhVA58g5PEmNQrDzK6vyiaGT2OWtWfkzkY3MZKP/+v4NDkAX + agkV7KYAAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACh0lE - QVQ4T4WSyU9TURjF+5+4YOPKYOLGlYmucAEoMSExxoVAwCKCIhEEFYMEtSBCJDRImawgDaARlASVSUFG - FXBoAZmnFspUW9rX937e9jUxkZe4OLn5bu7vnJMvVwf8V7aWg8NbQ8ffY8+yTTaHKaymTv2eONki7hs0 - gX/ls0aZZ9sPw7aBhZ5YcRYz8/oQrrGIF5rAPolkdstA6md3qUmcvQTmDWu2xmMNWRsPKHOdMbhWW5DZ - wu1oJTAvdhzRBvbJnnWD7VILe50WYWIRTSxiRnbkazzWkGSLjp55E26R13IsTtMx6IhTdzB9GV1VwwSV - z8apePoFY80oj01DlBgHeFjWx4NHPRQUdmIuz6W7JQflaz6bjZGsN8WyO5XM8sBZdKb6cRRFQZIVvJKM - e09mxy3jdPmxb0ksOSVm7T6oMsLNLDgfBafDMJw6Ksqh01Wax5AFnFa+iL5kgbjCec4VzOLYkVjZ9DO/ - rg2nXn2uGjwR1SW/wpm8GaJuTRORNcmJDBtrgfQNSYVzMgUcCTEqPGDzcCm1XjUw1n7GJyl4fDIuj8ym - qO7Y8bMsqmslD0156LN60KeYVYPy6hH2BHy3boS8miHuVA9w29QP68MhWCSH4CtFbaQaXvHhp4ckfZ1q - UGYaxu0Vi/P4g+n27VB6wCAg0SIAj87sMTjp4aOAe767SUyqVQ1KKwZxic0HG9SKBlVqg+Fw8QVCcEZp - B+nF7aEGrXR9cxOfWKMalBg/BdOdu/7g4padPmYdPiZXvPxY9DI252X019/0bpH+btxNXEKVahD4MIaS - Xu4VdZF3/y25+e3k5LaRmf2Sa9ebSUu3kCI2rk82k3ixlviEai7EmYICdH8AxXsU+dXRvF8AAAAASUVO - RK5CYII= + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACiUlE + QVQ4T4WS3UtTcRzG95900Y1XYdBNV0Fd2YVaEggRXqSiaTbLJJdWiomVmimJw9x8W5pDV6QlWPlWmk7N + 1Eyn5vvbptPp2tl2ds4ntjMMctDFc/GD5/k8D19+KkD1P1lMYcN75rOfsGoss63HZTbVc78nz5ssprCm + I+ZQ8s5EGRY7ToKjiJXeWHCUsvDuBM7xiNdHzCFl1Vg4qABxgIO1FhD78L93ZrJDmENopvmYvNQVg3PT + hMQeLlsb/vdq56mj5pCyau7iKDfi7jI6N01GxAEjjnIkW0EIcwiJlujohffhRmkrx2jXnYHOeOUG8zdQ + 6ZsmqX45QVXDGNraUZ7rzJRpB3la0c+TZ70UFndhqMylx5SD/L2A3eZItltiOZhLZX3wMipd4wSyLCNK + Mh5RwuWW2HdJ2J0+rHsia3aRRasX9Fq4p4G4KLh4nKILp/GvU1UbxpEkmfTKVVLKVogvXuZK4SK2fZGN + XR/L26HD6luvFMCLhjFEn8yl/AWi7s8ToZnlXKaFLX/7jqiEc7IgLhJilPCgReC6ulEBaOu+4RVlBK+E + U5DYdfqw7ftYtwfD/zSb5wT6ZwRS0gwKoLJmBLdX4mH9CPm1ZvJqBnmgG4Dt4WA48jB8s6QdddFbPk8L + JKfUK4AK3TAuj8S+4Au0Wx3Bdj/AL702EB5dcDM0K/BlWqB3ykVScp0CKK8awukOLqgzk6dXFgyHqw7D + meWdZJR2BBe00f3DRUJSrQIo034NtNsPfIHDrdu9LNq8zG54+LnqYXzJw+ivv+09Uy4+TriIT9QrAP+H + KSrr41FJN/mPP5Bb0EFObjtZ2W+4faeV9AwjaepGUlINJF2rIyGxhqvxuoD8gD/FexT5V1saowAAAABJ + RU5ErkJggg== iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAiklE - QVQ4T6WQ0Q2AIAxE2cCRGMVRHMFRHMFRGIERsAUuJFxNqF7yPny5ltRQSvmFKT2Y0oMpPbAQ9cIlbNQn - EULsA8rRyf37oj6JFixATuHTgrtTh4WlEzRYgBOSoGfs1CfRggUI/kumPokWLNBBBWck6pMYwzN6QqQ+ - ifHqTA31Z+HFlB5MuU4JD0dnUwrgCrV/AAAAAElFTkSuQmCC + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAgUlE + QVQ4T6WQWw2AMBAE1wGSKgUpSEAKEpBSCZVQ0rSXPoafg0uGj8newqGcs/4A4QXCC4QXCqk83rgkbchD + SGFYOhrJSpCHqGMFNufXgrvhOmEssBNiO2NHHmIusLH/kpCHmAvKYsHOiMhD9OWVckJAHqK/daV+2ppf + hRcILxBeHkdnUwqevR+DAAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAiElE - QVQ4T6WR0QmAMAxEu4EjOIIjOIKjOJIjdARHcKSYSyiCvA+DBw+8x7UUbGb2C5QVUFZAWYFlZnNUBh23 - KDOz0504rI5blE9OR0Kv4S3KJypiikJblJnFUbmieXCLMrM7Kkc0D25RZnRQRRdFcIsyn62Pgf4Ib1G2 - tr6I4JZkBZQVUH7H2g1WeXFvwrwKSQAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAgElE + QVQ4T6WRUQ2AMAxE6wAJSEACEpCCJCQgAQlIGjm2EtIjjBtL3kcv15cSLKVkf6BAhQIVClQoOMP8JjPD + 4KyxVxP0WPJlzLFXE+BtRYBrqPdF4Od3LYKhLO+X7akbg5tgLoKlVYBFDBDJApzt3w/wR6j3JhgD2gUK + FKhQoHIAVnlxb1bdEucAAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAjklE - QVQ4T92RUQ2AMAxE6wApSJgUJCABSUhAChKQUHrbGjgYH4U/Lnlhd+G6ZRNV/UQzjNAMIzTDCGxEkoGF - szSyRB0yIp0x1h9Xo79kEzx1yBT5jtjd5Rm+3CFT9IMBuLTNQOCXONcMa+6QOTQYPgRgjSyLOmTuwpHz - sc+iDpki7IT3foI7ZIreD4ijsgOjTd7+jqoH+QAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAf0lE + QVQ4T2P4//8/AyUYQ4BUjCFAKsYQIBWjchgY7BkYGEAMGN6PRcwenwH8DAwM+VCF9xkYGPTRxOpBfHwG + ILsCZDu6GIjG64VhYgAo0N5DNcACcT1UDMQmaAAIxCMZAsIgNkgMDIgxAAZATgY7GxkQMgBkEyi+cWEa + GkAOBgCjTd7+r93eSgAAAABJRU5ErkJggg== iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAm0lE - QVQ4T62NUQ7DIAxDe/9LMyclyGauygZ6eh8xtXu11o5qwx1tuKMeOENcA5cJ1M8NOU4PBm6Q7y+4DzUA - MTB7vzzAfahBZ3ks4D7UAPBYeb88wH2oAZgH3F1mUt2uHvxhhzP3xv3ckIPKhcuKzKmfGxL8wPgJ96EG - i4yxgPtQgwVkLOA+1OCFGJuVPpTjhDbc0YY72vB/2/UB43bUVn8JuhoAAAAASUVORK5CYII= + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAcklE + QVQ4T72QUQrAMAhDvf+lHX50qJFqSSnhDczom52oqtwEChYoWOIgYg+b/lRdyFPhEvgDeYZMhBmQnAgt + Y5mlE+btWulE6A9Uc/jQTlht5LvqHSXMaYUnGV15mrAxK4TrM8L1Pz174QWgYIGCBQqWD+N21FbTYK/z + AAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAjklE - QVQ4T82M2w7AIAxC/f+fdrVqAwvNLt3DRljCqdB6759awoolrFjCihnckH3j53aCfTODC8UIZuybKTzV - 5eB44I+iotlQsNWNDQqinLFIqxsbFJIysvMd+75BwLQH0POS3LBvprBFhcVSYd/MwIRj2/OSCPtmDmJA - MRL0fYPC7we/sIQVS1ixhO/d2wE0YN1NDoBJDwAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAa0lE + QVQ4T92PQQrAMAgE/f+nLfUQdFdiYT0VmZJMyJCau9smJFRIqJBQqeLDmMUnCKMETyTvlSDOGCy/ki6h + O7F3tREsezWI59dgDmQwXs6mIF4sr+lmCuILxugt2AU696PgBiRUSKiQUHkANGDdTeFIubEAAAAASUVO + RK5CYII= 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 - AAAAAElFTkSuQmCC + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABDklE + QVQ4T6WSvY3DMAxG3wpeIbNkBLtwkfZSuLnCgKAijQtDpYs0WsEreIVbwSt4BR14VGH9IBcghQqRH59E + 8iOEwCcnvdBu0Da56JT3RSwTBJhdLoq5L8kX8RLgA9hLIaQ94PtfgFOAX7O4UfjzdQsqtrtCpi4WN1o8 + CriYTwXQXmER8R7vDnq5m1xbBWjRPbayOH3d/uSalwCF2CMOVF4vhvoGQAb3lOLqWt8BHHFw8gtpRU7x + k7yoi0JxpKytA7+BP8Bu2s4t2UReHGDwKlRHwtDALLALzB584oUzwMFgZGDwSHYOvWxlldfhkWzkDDBq + onGHWzE4zU0r9FsVoKLRwFI3zJ8jxRfT9Rz/BalCUid5a6EwAAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABaElE - QVQ4T6WQz0sCQRiG/XO02vof+kH0iw4WleRm0SGig6cigtworUsgblEQgV26lUERUUZSggZJQSsqGrgn - QfC0K7govjkDWbuMaPjBM4eZ+Z7vnTEBaAvTVSgLFs7j7DWrwQgVGIvsOQR/S5KGglD0Aw6nt6mkLvBH - f6EJ9moCA7wnhhUxpRMyE5AiDT9VrVZRLpdh334FZz3H0v57XcJMQPgr0DQNqqrC5nrBWSCGzvFTLLjD - VNI0QS0ylr0SQpEvTG0E0TF2AsvoESwjh+S4cQLyXjK1UCggl8tBlmVkMhkkk0l4DgIwD/n0gkqlglKp - hGKxCEVRYBPCyOfzWNyNYH7nGXNbT+CFIHjXA9y+C72gZ5BH98AsuH4buL4ZdPVO07hkajqdRiKRQDwe - hyRJFJ2ALCwm1+9oZF54hH3zXkdLgom1W7x9puARL2mDkaYC6+oN/WnzsEgvsyD3mM3/gbnZOjB9Aytc - DAdFhtjSAAAAAElFTkSuQmCC + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABZ0lE + QVQ4T6WRz0sCQRiG/XO0sv6HfhD9ooNFJblZdIjw4KmIIDdK6xKIWxREYJduZVBElJGUoEGS0C7uooGe + FgRPrqAovjEDWruuqfTBc/lmvmfemTEAMPwHw3UoDT2cJ+kb7WY9qEBbpGdn/W1JmgpC0TjsTm9LSV3g + j/5AE+zHG2A8MTg4SSXUTUCKDNSqWq2iXC7DtvMGs+UCKwcfdYluAsJvQalUgqIosLpecR6IoXvyDEvu + MJW0TODgJKx6eYQiX5jZDKJr4hSm8WOYxo7IcvME5L7k1FwuB1mWkclkkEqlIIoiPIcBGEd8akGlUkGx + WEShUEA+n4eVDSObzWJ5L4LF3RcsbD+DYYNgXI9w+y7Vgr5hBr1D8zAPWmEemENP/yyNS05NJpNIJBIQ + BAE8z1NUAu2/1pjeuKeRGfYJtq0HFW0Jptbv8P4pwcNd0QEtLQWWtVv60sZRjm7W409BuzQ0OuUbK1wM + B4HjT5oAAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACLklE - QVQ4T82TX0hTURzHV2B/QCGksIegArEMCveQMmbYQ1gucoTZZD2MGvjiHqa0ae1218Pc5W5Luy4NiuaY - FZWWNlg2UUQcFcZABkUFtlxlw4VOKmva+nbONZfKHoReevie8/t9z+/3OYcfHAmAf9KyxNY+FK7lvZOF - lU1jK/zBdD7VskSudnbOfE0gU2qIbJExa6lH96X+0nqqVEBvOS/0QllzAwVKO/YorDHqC7cCSOcvKhWY - 2/rwIzGPh8NvYRCGsfNQIzbsM65Z9L2BMDjPKHJLraR8BaCh2ZdtbvVDy3ahrPo69iodkKuvoLCq7Y3W - dAd63gtVXQd2KzgCtkB74V52CkCensG0+DEZ/474bBKBF3FozD7kHeGwab9pxHjJS+qAL7PzGApN4aTx - PnIPc9RKAUx1fA818DT0CXbPcxzT3UZOMQvS3EABodcTCL76DN49gkpjF7bKGZx1+FgRYHcNTOsae1Be - 0w5phYD8Mg55pRbkyBj6grCee7BwdoKcHbVh2wEGm4vqUaS6nBAB1msDSCZ/YTz6DY+ffYDFFcSOgxT+ - d1Bn2E58jM4gHImhe3AMOr4f+YqFYUpMwiPMzf0kze/h6AhCc9H/nwFI80YKiExMo+/JOzjvjqLC0I1d - ZFYi4PQ590t1/U2UaFohq2qGTNWE7SVslEAy/wDWEcUU1VfHy3UuFJ9qgfS4DVkFtVMigC6rkdPTK/4N - smeo9O71RFk0T1u8ekHyG2jrt2s5yYVVAAAAAElFTkSuQmCC + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACMElE + QVQ4T83TX0hTURwH8BXYH1AIKewhSEGsBYV7SBkz9EGsLXKE2ZX1MNrAF/cwxU1r666HucvdpnZdGhRt + Y1ZUs7QLa04SGY4SZSCDogJbrrLhQieVNW19425l1jSIXnr4cTjfc/icH+dweAB4/1K/TMwOf7iRZmdL + ajumfstH1sozAJHM5l74kEC2QBPZIdRv5DJuXJ2vC3CnnGW8kDZcRbHUgn0SU4zLmesBrJVnAIaeIXxO + LOPe6AtomFEUVLZhywHthh85GwiDck2isMqEDKC105Nr6PZBSfZBXH8F+6VWiGQXUVLX81ypuwk1zYJo + 6sVeCYWCSiOU527nrgBmhz9L3+XDbPwT4otJBB7HITd4UHSEwraDunFtO8udiPeLy/CH5nBSeweFh6mV + LjhA10QPpDY9Cr2FxTWBY6obyCsjoW1nWzkg9GwGwafvQDvHUavtw06RHs1WD5kCLPbheVXbAKobHBDU + MOCLKRRVGZEn1HMdhNXU3fTaCQb8o2bsOqTH9tIWlBIXEinAdHkYyeRXTEc/YnDsNYz2IPIrOPznRSlI + N95EFxCOxNA/MgUV/QB8SfoyeTrmPpaWvmBw7BWsvUHIz/v+M0BBurdyQGRmHkMPX8J2axI1mn7sEadf + gnf6jPOJrOUayuXdENZ1Qkh0YHc5Gc2vILO/A5sUpDsmqb80Xa2yo+xUFwTHzcgpbpxLAatb/VPZXN7U + 37C5vFmE2rmZUDtz/gpYr74BaOu3a9KzaF4AAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAACG0lE - QVQ4T51TbUhTYRQ+WVgw29h258012txsLXSOiAJd8UIZSBFkVhAYBUWIYqZhhQ4ug8JWmR+Ykj9CEkaN - pB+lDGQMspDAoqDCws21K0T5Y8Toy5Sn17rIiH54feD8OAfe55znOeelJaHd5aEbm3RKph4l4XVwBC1R - JVWP8lEBdXENtF0WSSmpg/uRDedntNgVEUD+PKaUFdzaquPBqHcLo+5iRl2FjGtm1OZkdNXBqNXG3A+t - OBKz4dSkAdbbYop8xgw/+OPKlyJOvtfj8CsTysfy4I1YsNDVGiqAod8F2wMXDk3aUTGRj7InZuQEhAw/ - eOd6eS1a09m4+EmD6oQeR9/mYu/4epQ+zkdh2Imikb8E+yecKHtuhyNkQ1aLTvGDj90g56BjdhUC39fA - n9agOaVD44wRtR/5ZNNmVCU2LBLsebMZ26MuVI5wP+qzPbSguSGpUUXQk/aiKmoA1a3kBNywUPIm3s0H - 8WK+E6NzLQj/Oo3B2QO489OL3h8b4f9iWiS4/HkfuuUdMEmrFQnc7bbxPgx9GMT9RA8GpiT0TVWjM16B - K7ESSDE7mmTjH4Kzyd2IfG1EcYeYYeK1Ah0F7HxdVkaXLIz8ZkaSyMgnMGrWM7qgZe6QCcfiRXg914+D - wW0pqs1Sd9buuwKefbuH62NnQDUr/jmkJaBp6ByeysOw+MTlnfLxgRPY2V66/M9ENeTh8R/dRL8BDkAX - agnC/hIAAAAASUVORK5CYII= + QVQ4T52TX0jTcRTFbxYWzDa2/dYv14/2c7O10G3IKNAVXygDKYLMCgKjwAiZmGlYoYMxKNaqNZXlmA8h + CaNG0kMpAxmDLCSwKKiwcHNtQZQPI0b/TDmxElmjh+nn8V44l3M4l6gQvAYz3dgqyx8XTHV4I3RBIZo/ + L5i6cQ6tcQmkfYIjf1cQxocizs9KsTvCgZyl7N9twCKjgIWRv4qRz8Sor4KR18DIo2d0VcfIJTLjAw2O + xkScmlZAc4tPk12Zk0fAwhpe8Gh6J8eRlyrUTZTCGhGQvaoJlUMxaIB434DD01rUT5Wh9rEaJW4uJw9/ + FWtLrYcrU4yLnyRoTshx7M0G7JvchJpHZagI61E59lfgwJQetc+00IVEFHXLFvPwmVh7qgQ9c2vg/r4O + zowEXWkZOmaVaPnIo+mDGo2JzUsCe19vw46oAQ1jHKit2ExZz+1JybIE+jNWNEYVoNbV5mxJWCh5E28X + gni+0Ivx+W6Ef53G8NxB3P5phf/HFji/qJYELn/eD19qJ1SOtYsWPHrmmRzAyPth3Ev0Y2jGgYGZZvTG + 63ElVg1HTIvOlPKPwNnkHkS+dsDUw+eEeK1cRm4tI5eG0SWBkVPNyMEzsnOMuuSMLkiZMaTC8XglXs0P + 4lBwe5paipZXa+MdDk+/3cX1iTMg26q8IhVA58g5PEmNQrDzK6vyiaGT2OWtWfkzkY3MZKP/+v4NDkAX + agkV7KYAAAAASUVORK5CYII= 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 + zX6th/05/Q8FMcZPXTFPhgAAAABJRU5ErkJggg== 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 + zX6th/05/Q8FMcZPXTFPhgAAAABJRU5ErkJggg== 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 - AElFTkSuQmCC + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAnElE + QVQ4T8WSwQ2AMAhF/wpO0o7lSsaDQziSM3gV85vQIFjtxXh4ahAeFIWIwAOAlws+p+aGACDHPomskG0e + ZBlRaElCMQuJ7f4kCQJ29Ykq8fFvBHeJrfhFYM/8RhAwyM0rukgPj+ePWAU55zJmSqlQu5lC/ay3Aia2 + uncJ7AR8/m8C3onuoVtgJ7AFnqaAL1ms//0TQaCSXrSGnBMVP/G8l+xFAAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAACTklE - QVQ4T2P4//8/RRirID6clTVDqbs7/dLs2Zn/a2sT2rAqwoXLyrqlmptrTj9+bA3kCv/v7GTYglUhNlxd - 3SbT3l588OVLxf8/fqz5v3Spx9v0dAZ3rIrRcUbGDBmgzbufPzf4/+sX0/+ZM9W+zJ8f3wCSQ1FYUlIq - VljYK19Y2C8LwgUFE2Sys6eqNjWlHXj8WAZo887/ixa5f6+uVk9atcpDBMWAmpo6/ba2rv0dHWU3uroq - rnV0lABxxdX29rJbT59q/f/7l+H/tGlqr5ua0ktOn3YQgukDE+XlFUpdXXMuP3t24//nz6r/P3zg/P/1 - q8D/jx+5gHzl/z9/7v0/Z07y302bPDJgGlEM6O2d9eDRo2NAZhAQb/m/fr3B/2fPZv3fsMH6/6dPG/4v - Wxb4Oi/PJP34cSe4zTAMJqZOzQTa6AHEG/+/fRv3/+7dPcCAiv9/4cJOoO0h//v6GF6kpAgZoGsGYTCx - YMHk/0+f7v3v6xv4X1WV4f+UKX7/793b9H/FiuD/795t+D9rlsGr7GwGS3TNIAwmli6t/n/tmtF/SUl+ - oF93/dfVFf1/6ZLb//fvdwJdFQwMPJ53eXkMoNSD3YAZM2Z+/PJl8+sjR+T+W1qa/peSUvx/5sxqoFQk - MN43/J8wQeFeaioeAxoaOkP37Lm+9f//A0927+Z+d/785rf//6cD8UIgTny/fn3ukg0b4sXRNYMwnFFV - VeK+ZMmyB5s3p37dsKHt67JlEV+XLm37umBB8IeVK7vjXr1ay4isEYYxBEjD/xkAmMvAJtry8/MAAAAA - SUVORK5CYII= + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAACT0lE + QVQ4T6WSXUhTYRzGT931AYV94VgfGjMIpBF1Id5EF7kbA7OgbrQP11FHw9Gaw82QDc7mxkxIxzYHLvEM + tWKnzS5sEw0kLyYoRksCh7g2c3I2dR7aBvLEhAbbzKAufv+L932e358XXgIA8T8UHPyN5mZLqdFIzvf1 + NaG9/T5VENgLhcLI02rV/lCoEsAxdHYSowWhP6FSUXyd7unH1dUSJJNvQNMiliSJqoLgbjQ2Wvhardq7 + siJEOr0fVmvZVn9/fUfmLicolz87KZOZzspkL05naGnp5kskvQKN5vFkKMRHMjmGgYGqnyrVhYcjI6Lj + OQK1+vklijJM6PWKBYNBGdDr5QG9XvlFp1N8C4cvYnubgNlctqbRkHK//1rR797OaG1VlhoM9s+RyAIS + CQHW1w+A445iY+MgEonzSKXGYbc/2na7RY35z9sZJpNtaXn5E4BbAEbhcgkRidjAMJXY3GTgdNasSaVX + yOnp69nNOYLe3iZwnAgc9w4sW4fFRR+s1nrMzY0hlbqNri7iR0NDkTC/nBU4HC8RDo+juroGAgGBnp6b + CAbdGBqqRSzGwGYTRiUSoiK/nBXQtAqBwGUUFx+B3f4B5eUnMD9/A/H4GDiuFmbz4ZhUSmR+z+4Ci8W6 + sbXlWZuaOoOKiqvg8UowM/MawD2k0wy6u88FxeI9BB0dnXd8vq/vgcnvXu+h2OyshwVIFnjFAg/iLteT + QYapP5VfzgoytLXJqwYHnUsej5hjGIpzOu9yNE1xDkft+vCwsS4afbsvv5wj+Fd+AZjLwCbKAcDYAAAA + AElFTkSuQmCC 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 - LEMq/h42+wTylm2njslBVgAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAABMElE + QVQ4T6WSsU6EMBjHeQNR38BXAMvXQGA4oU2BQBqYWJgcSJzPzfUmnZ3d5A18BOPqotFBZ2+8taZ3lHDt + JZfT4deQP/1+/GlqCSGs/2AE69Cy5CL0510YgS7SMx0j+LOgaZqroiie0jS9J4TYugAA5gAgBuZbgjzP + 77Is+6aUPsdxLHzf/5oKAOBSDk5kUnIxCgghN+olpfQHYzwe4DDwskOwGAUSzvkt5/yVMbZSm5WgbVtV + faTrus0ezvlJXdeiqqpPzrkdRdGb53l6g49p7Sny/6/LshRJkjzMZrMjz/NWCCFdoA7wEQCOAeCs7/vN + HsaYHQSBkEMIoXfXdZeO42wJBskCAJYS+cGxgVzCMDzFGJ8b9Q65BzrqCu+TGIEu0TMdI1CDanhfCyM4 + lF/ylm2nCccnxwAAAABJRU5ErkJggg== iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAa0lE - QVQ4T82OUQ7AIAhDuf+l2UA7O4OIH0v2Gj+EtipqSBeD2UbvkIEVMAtmgdav+t3C1YLQWC1Ijb8oSJgK - uIRmCW3L5rlgQ3M8IVMtCChI6shdlB33hDqAY0NE9DKO70MdwLGhgI9+oHoBzyqxa4rWeaEAAAAASUVO - RK5CYII= + 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 + gg== iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAChElE - QVQ4T52Q3U/SYRiG+Qs6aKutddDcWs220jKwuepArebUFtPFbKCJmYQfkxmakbRyIZFTHJrprCimZWGa - X0hqMHEwTFMLxLIpg+w7NXWkC7zj/f02W5MO7OA+et/rep7nZgBYV/qkgpimrGSQ9BSmhwb89K8037kQ - ScCp8lyM5NOSgB8DhcDdLUXQdg1g9FoeBSuZTPrRYVbBZqrAsKEM1mcKmNplsOgVsPYoMGS4gbEXFdBr - 8zDjLMWb/izIZEWQH2D6UTBWBSs+O3ze5/Au6/HL04blBS1+ztbD7VBB15BOwQ4DH621Mdi8cQNuyk+j - uuQcnxKQ6T6vJSDcoeasgYcMYlRc4SI5NsJFCUaN5fAuGbC8+ARLcw/g+aaGy65EW138GthuysFrswSF - mWwioDsY7C71T+2EZ+Y+Fr/UYv6DCrdua2DRyeF6eX4VHjMJMT0igrlTgAxOFJKOhdMCi+66H36EhY9V - +OEuw6yzhBKsrPjQqGJTsM0ogGswG+/MZ9Fx7wTiD4ciITKMFvS1yrD4+S4e1xegXM6HKCMOOSIx2Ikc - f80MDHalYdIiwLgxFa/0p6CtOoIoVjBiD4bQgl7tVcxP12BmshjfJ6T4Ol6ITzYx3g/nYsoqxNu+NNi6 - uaR1yAq4yE6JQeJRFiWhBF0PL2POXfkX7BzIxER/Ouy9PAx3nIS16TgFkzOiw4NRnBOGiJDttKBNc8l/ - txL97WkwNqegpzEJOk0CntbFUes2lB2CuoRFTSZwpYSFGulu7N25jRa0qC9CnLoPIl4YhJz9OMNmghfL - olomRZFbybpkbalgD6olu6DK34HgoC20YD0SsjaZTOCgrZv+CP4vYPwGutu4vmPLy7gAAAAASUVORK5C - YII= + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAChUlE + QVQ4T5WT3UvTURyH9xd0ERREFyFEsaC0bDOkulArRI2G0jCm5my5fBkOm2bmoqS5THxhmilWK9GyZppz + zqW2scnGTFNrU8vQMbP3NlNZjrZ94vx+YMQq8uJzdc7zfF84hwGAsZYYpcLY9pxUkPQXCcKCLvwrHbfO + RRFwtioPYwW0JOjS30Lgvs4SqHqHMH4ln4KrWSz6cNKsgM1Ug1F9JaxPymHqlsGiK4e1vxwj+muYeFYD + nSofLkcFXg3mQCYrgXwfC4RdFQT8dvh9T+Hz6vDDo4Z3SYXv7hbMTSqgbRVQ8KSej67GWGxcvw7X5SdR + X3aGTwlIdb/P8kdYo+QGwSN6CWou8ZAaF+mkBOOGKvhW9PAuP8LKwj14vijhtFdD3ZQQBNtNIrw0F6Mo + m0ME9A6G+yrgXeqBx3UXy58asfhOgRs3m2HRyuF8fnYVnjBlYX5MDHOPEJncaCQfiaAFFu1VeFwPsPS+ + Dt/mKuF2lFGCQMCPNgWHgm0GIZzDuXhjPg3NnWNIOBiGxKhwWmDskmH54208bClElZwPcWY8RGIJOElc + MBgMDPdmYMYixJQhHS90J6CqO4RoNhNx+0NpwYDqMhbnG+CaKcXXaSk+TxXhg02Ct6N5mLVm4bUxA7Y+ + Htk6ZIU85KbFIukwm5JQgt77F7EwV/sb7BjKxvSgAPaBFIxqjsPafpSCyRgxEUyUisIRGbqVFqibL8Dt + qMZgdwYMHWnob0uGtjkRj5viqXZbKw9AWcamKhO4tpiNBulO7N6+hRZ0Ks9Dkr4H4pRwZHH34hSHhZQ4 + NrVlsigyK2mXtC0V7kJ98Q4oCraBGbLp11v/Xwlpm1QmcMjmDcGfZq35CbrbuL7aUBONAAAAAElFTkSu + QmCC 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 @@ -797,807 +986,611 @@ //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////9NzlhFAAAACXBIWXMAABJxAAAScQHz3HqOAAAAI0lE - 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 - RU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAABjElE + QVQ4T2P4//8/Awznzb7/H0Qbh0z/D8Kqbl1gPgwn9F5C4YMwCgdmAAijaybZAGw4uuMchjxYEwxX1Xf8 + r2noBOPKhs7/5bUd/3PKOv/rGZr+j+44+z+s+eT/oPqj/32rDoIxhgtqGjr+v/vy5/+bT3/+v3j/6//D + Vz//b95/7b+phT1YcWDdUUwXgAILYUAnWPOzt7/+33/54/+Nx1//z193+r+mjhFYjU/lAewGwAIM5Ozn + 7379v/8CovnivS//Z6w48V9aThks71ayG9MA5NAuq+38/+Dlj/83H38Daz5z89P/iYuP/xcSkQCrcczf + hmkAMgcUYGt2Xvw/e+2p/1NXnPg/YfHx/70Ljv9nZWMHa7TJ2oTfAHNLu//WDh7/9Y0s/8sra/wXEZcG + a2YAK/vPYJy4Cr8BoGhCV4CMDeKWYcgzRLWf/Q/CIM2gaPKpOvDfo3TPf+fCHf/tc7b8t8rY8N84YeV/ + /dhl/3WiFv/XilgIxxguwBZNyBimCcUFyBxs0URfA8jBANTC0ubgdCQ2AAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAAtklE - QVQ4T2P4//8/RRjOqKrv+F/T0AnGlUCcU9b5X8/QFCiFXw5uQE1DB0jg/6/ff/9//v4HjE0t7EFCeOWQ - DOgEKvj3P6Dp63/D1LP/7775/V9TxwisCJ8c3ACQ00AmWxY9+q+fdOL/ietP/0vLKYMV4ZODGwDyF0gR - yHSQgm1HL/8XEpEAK8InBzfA3NLuv7WDx399I8v/8soa/0XEpYGyICn8cnADyMVwxmg0DotoJA//ZwAA - qy/GB3Ky9SEAAAAASUVORK5CYII= + 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 + AkiX/5UKTqafsLwA5EY1M54AAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABaElE - QVQ4T6WQz0sCQRiG/XO02vof+kH0iw4WleRm0SGig6cigtworUsgblEQgV26lUERUUZSggZJQSsqGrgn - QfC0K7govjkDWbuMaPjBM4eZ+Z7vnTEBaAvTVSgLFs7j7DWrwQgVGIvsOQR/S5KGglD0Aw6nt6mkLvBH - f6EJ9moCA7wnhhUxpRMyE5AiDT9VrVZRLpdh334FZz3H0v57XcJMQPgr0DQNqqrC5nrBWSCGzvFTLLjD - VNI0QS0ylr0SQpEvTG0E0TF2AsvoESwjh+S4cQLyXjK1UCggl8tBlmVkMhkkk0l4DgIwD/n0gkqlglKp - hGKxCEVRYBPCyOfzWNyNYH7nGXNbT+CFIHjXA9y+C72gZ5BH98AsuH4buL4ZdPVO07hkajqdRiKRQDwe - hyRJFJ2ALCwm1+9oZF54hH3zXkdLgom1W7x9puARL2mDkaYC6+oN/WnzsEgvsyD3mM3/gbnZOjB9Aytc - DAdFhtjSAAAAAElFTkSuQmCC + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABZ0lE + QVQ4T6WRz0sCQRiG/XO0sv6HfhD9ooNFJblZdIjw4KmIIDdK6xKIWxREYJduZVBElJGUoEGS0C7uooGe + FgRPrqAovjEDWruuqfTBc/lmvmfemTEAMPwHw3UoDT2cJ+kb7WY9qEBbpGdn/W1JmgpC0TjsTm9LSV3g + j/5AE+zHG2A8MTg4SSXUTUCKDNSqWq2iXC7DtvMGs+UCKwcfdYluAsJvQalUgqIosLpecR6IoXvyDEvu + MJW0TODgJKx6eYQiX5jZDKJr4hSm8WOYxo7IcvME5L7k1FwuB1mWkclkkEqlIIoiPIcBGEd8akGlUkGx + WEShUEA+n4eVDSObzWJ5L4LF3RcsbD+DYYNgXI9w+y7Vgr5hBr1D8zAPWmEemENP/yyNS05NJpNIJBIQ + BAE8z1NUAu2/1pjeuKeRGfYJtq0HFW0Jptbv8P4pwcNd0QEtLQWWtVv60sZRjm7W409BuzQ0OuUbK1wM + B4HjT5oAAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACX0lE - QVQ4T6WSa0hTYRjHD/TBvhRdqE99Koi+RFFB9SGjUAsvLYzEjMxFTKVkk6XpSC1N0eVtadqMvAw1b5Uo - KUUiJI7uGs7oIpEauZa1s3nP4tc5RwZNBgW98OPA+77/3/O8D0cA/gufmz3tOXTdzqS1KhVtTMh2X3c8 - CC21RXoJPFQVHMdpr2PSfoORwXySNUEUZeu5ZjRgyk6SCVwsYEZsZs7VxIyzHku5nqnxGpJjVbbXvSlc - OBtKinoH9p6TjHesRxt9SMotEsjhOVcDZTkn6LPmI34qYWzQwAfrKdoqVMRG+VOXto4XRQLxx0K8BU01 - BQsC8RbGtGgy9JEYEiI4Hx+OXqNCpw4lLiqAYu0GRRAZ7O8tqK80Mis2MuswMzWai+NVAraa1QoD1avo - K1/GU5OfEpYJ2L3VW2Ax5zDtqGJ6OIupN2eYfHkEsX05hdUd5JpbuXi1kRSjBV1mBbGpJqIT87wFlaWZ - TIyYmBzUMPEsFPejbXy5u0YJe9bc/E+crhmGx5xExF0iLMYgby8IKgrTEd9m4X4ShLt7M67OtYxUC0pl - eVXe6VEwN3QxMGRXwg96bRwIV8vHglCal8q3/nO4ujYh3luJo9mPoZuC0vaP+V98d0uVPzsZeG/H2v+R - 4CgdQVJ4/8HD+O/Zi1B8OQnH4zgpvIKvLUsZrV2CrUxAK71ZbtvTwXWpgxJLJ23dNuUrs2vLRoQrGYnK - D+KZsgeNNLA/Kz+0vlPCzff7aOh47iUILEw/Lf1hKtThgYTt26kcyNOW3+yp5gtFIA/CF0elacsX/obP - 8L+D8Bsb4cocWY3wtQAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACpUlE - QVQ4T32Se0hTURzH71/91Z/9XZT0sP7QHkqg9CDTlTWDiKyQFEtFA5HIFohlmr0U81Gr+cD5mM7Mx3TO - 5pptPuZypqEiIYKS6cQHpuac895v5xzaxWj1x/fCvZzv53fO5x4OAFfVYoNK24tyjQWl9V0orjVBoW6H - XNWGgopWsgRsXZJiWkIivtOIAAG8GF7gseYSsOQQ4HcmmhXc5csZI+zdHfag02lRYxzE29YBVGp6UVJr - wdDoFAO4yxXmNcTnjiIiZw7Rr9d3iICKZqs4fX2Dx0+ngPkVAX0jUwi8eJsC8Eq3DFWnC08aXYjKW0BI - 8gCNPwOUaSw2Wi5r+ISimm5ybjOyi43oGZx27+DwadkYbhU7cTLBiP1hCgTEGuAf2ZjJAMr6rrgNcm7H - Oo/FVR4zPwRMzAKb5d4v/Jzhc6Mfe869QfzDmiRvqZw/GF5l445eU+4+HqefcLh45Co/4lmhARkvW5H6 - QssA7qPRjNsd8Lk5yOQeuiTXe0sV4HZdaHgsTaxPn19yYW5ZwPcFAWMzAkYmBTadFj3JPRByN3ZnUBa4 - bZKm6jvPNfELRFppnRVFaguSnzYg6VEd/id3X3CqiQCs3FZJt+p6mqlzYnYDUpkVVYZvaOu1Q9djB5HL - yp7k0ukkR7gtoV/T91758MU3VHb1fMoQ/KO0OBb+IJrYtxG58CS3o99O/04cuweRWZO27KZVRGQOQ9m+ - Clmlk0HO3huOKXnXAU9y220MUM4AvuHVgUGJZuRrV5CqdiJSziMsbZxBcsmWlx38X3L1VgYg/d83kUBO - +US8R0CMnpW9gnNwIrHPT6E2gspNK9AhJbtZlEv9/AGgIUK2e4XkueUE0m9ylQH2RYFIm4K5f1qU22Lx - AKDZXKbJL9Oxhf8KAO4XJ//kwGbkeloAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAa0lE - QVQ4T82OUQ7AIAhDuf+l2UA7O4OIH0v2Gj+EtipqSBeD2UbvkIEVMAtmgdav+t3C1YLQWC1Ijb8oSJgK - uIRmCW3L5rlgQ3M8IVMtCChI6shdlB33hDqAY0NE9DKO70MdwLGhgI9+oHoBzyqxa4rWeaEAAAAASUVO - RK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABL0lE - QVQ4T7WPuUoDURhG8xxaCHY2Yh+wECREVCRxHBOymMlMZrKYZYxLOhVBCAiCNr5AxFJfwd5C0catEsUm - hYiFxXFCCEq4TmJu5OMU93A58HuAviKUMnw/ftn90zs7tVeuHt5cfjnrJtiK1c4/SVZv3KOdgj9j+6d1 - zMMX1O1bHp8/xNFOwUZsTD3Bq52xWaszuXLBSOCYId9Rb8HWJsrXGHt3DI7vuvxy1m1wNHXJsO+AAe/W - 34KZUgWrUMHMb6Dn1tCyqySsMjHTJqKXCGkF1KU887EcgUiWuXCamUWLadXErxhOoi0ovX8PWsXmucby - OsnGuekyccsmatiEk0UWEjZKPE8w2jg3w2yoee6UksIf1J1EW7BfCKUMQimDUMoglDIIpQxCKYNQ9g6e - L18OKkyOPi51AAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABMElE - QVQ4T6WQvUsCARjG7y9pa4i2hlpzy0iN7PIUT/Pj8k5NvcM+bOtjqqWxKBCDIhpqLAhqcAoiaBGXw5YW - sS1o/NXhcgdndMmPBx6e4eF5XwEYSq6hF7mGXuQaepFr6EWuoRcJeb2GWq6RK22SLa6TLqyRUqskcgbx - rE40XSayXGIxUWQhXmA+phGQVOYiOfyi8tMyJDb7PwS10p+vrG6QseZrVZKqgawYxDIVllIGYrJEWLbm - 5wlG+/NnxRX84ay9y0nt5A1pq0nIuLfeNRCbdbJ30aXx8IVPufFWMJ2+Qjt4xSo4vv0koN8xJV8yOnPo - WmSzfVpmj7HQKbsNk+3zLtJOmwmxzkvr/W8FFu3OB5OxM/xGk/HgEY9P5sAzbNZJu9NjxLdP/fr5lx8g - fAPOtXjW7jTlPgAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAA7ElE - QVQ4T2P4//8/RRhMhDc80vEpPQVkYleED4OJkKb7/z3yDwCZSBJAKUIYrA5EBJZd1nRIXv3fMWmVH8wA - YjGYcM3e8d8ifPp/Y/8OIBe7QlwYqyApGEwE1d/4H1B95b9L9vYudAWEMJwRVHc93SZ2AZAJlQBKEcJg - dSAipOGhj2vW9v+2iUv9YQYQi8GEZ8GB/5YRM/4b+bYAudgV4sJYBUnBYMK/6uJ/3/Jz/x1SVgO52BXi - wnCGX8W5/47pm9LgEkApQhisDqbBo+jIbLPgCWBBUjCY8Cg8CA5Em+iFgegKCGGsgsTj/wwAYWiux7Jg - lFIAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAAeElE - QVQ4T2P4//8/RRhMFHQfKgDi/yAaXQEhDCZAmkNbnvyXta4CciESLEws//FhmDqYAQUgzUBMngsowVgF - ScFgYjQQsUsQi8FEYsXyAiD+D6LRFRDCYAKk2bPo6H9J40wgFyKBLeCQMUwdzIACkGYgHnKB+J8BAD5Q - tqhi4tzWAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAQ0lE - QVQ4T+3QMQoAIAxD0WJ7/ytHEBQp6RDdxOF1+GSqAbhCo2Icd0e2j6IFsrlZo1M0KmhU0KigkflPrNFY - efKJsA4bINYHMvlwBwAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACZUlE - QVQ4T6WQS0wTURiF2bpjYWKiGxcu1GhMfAQlSASNxUek4oIQGjQ2YqOhKqXWgRbaDmUKSmm10KaDfSBG - qhjBKD4xdmMEDS9TbEGjRSVQVKAqRJQ5zq0ZQ203xsU3yf/POd+9M0kA/ouES0L3k4drXKxB0swaQSnl - K+923EhOlItbEGorVdu9LgZ8mfv2lubcDfQbr5tBu5el/s7GDAKXHAw3E6KJAAib4bHTmA0ZonNfV2fq - wmxMUcBl1X3lxuv4AvNbUK8HmZvsVbDXquFhTdlCNq5MaLSU8wUTmmw6YNwMp0UDjhe56nXgPwm2WqpT - yMaVCWZ9UfRE53kK3JgZ9poSzPNCW7UScyNGGFSHg0I2+uDNGqdVB8Kdm56zjPIgXzTBUXcKc+9q0GCQ - Ye59Nc6VHsFMqBLF0n2DfwT8j1nUZDdg6hXNv6Rx1amFWibGz9Ea3G85iUhQA19rEb68rkDLhUJEAmU4 - nr9zIOYGvERfnL8NE4NaTA+rYdOKMTvCYHJYj6khNSYDFD4HlJgKUhjtOQZpTtqzGAHhMlutjEoGFAj3 - yjH5UovIkB7TgQp89JdhrF+FsZ4TCN7LhWRPii9OQGAtmitE8qFLhtFuOcJ86ZO/FBMvzmDkaSH6rovw - +GI6l7d746OEglavOVl1SEQTSf+tA+htE3P+jhxuoG0vnnsz0dWcBqM87buiQGRLKCC4q3SLNbL9FURy - zbSDe+DI4HzOdNy2bp6npBt+7Nq6GqcLspYK+TgBofyoaEW5PFchyU5t37J22eymVUuQmbJ8UJK1vrEk - L2PdwmxM8d9B0i+k/s5JFmy4DAAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAB3ElE - QVQ4T6XSX0hTURzA8UXP0lsP9WCPkqv0QaKQKKK0DEmol6IwbDmR1TbDJVo2V9NCDTKICMoigtaIbCTD - JBvOBTaG89+tzD9NFwqaKM6E2f12kuHdTYhLPXzO73c48H06OuC/rBxSoIk/9ftvE+5spOddI6G3DXS/ - qcfncdLmcuB9Zl+hChD/LNag4NekylQgZiIw2NVEPPZerC7NKk1HxUwEAq9rWZp9JdZ7mlWU5ouZCHS2 - XONH9CHEbmlmKzmiBHwvHcyN1LM861zF97q/shnzlEDHCzvT4XKYrNHMVnxYCbQ9t/O1vYDF8QqYqFZE - hW9J9yTlhkNKwCsCXzzZRH17GPHuYsiznVDzRhb6DMjjVyByeY2LhtykgMvOVNdxBpvXMx/UM+1PI3RX - R6Q9B3msEoYvrWEtylEHYiEjQ+6tSE83IIezWAqkEX6wmfinMpAsglXFXHggKSC+pdxvkheDhYy1ZPDh - TgqR+zqGhVF3OrJkhr4LMCBmwvlT+9WB5d6Sn78f4j1Goq27+fh4CwNPNtHdsA7pUSoT7mxmWvOY7zjG - nFB6Yp86UGPJxWE5SK11LzfNO7lhysRZrOf6uXQcZ/VcLdJTdWYbttM7KDuZgUVYDfw7dL8ANy8V6Hlx - kDwAAAAASUVORK5CYII= - - - - - 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 - GxsH7EeiiVdcqusAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACC0lE - QVQ4T2P4//8/RRirICkYznAqu8PpWn1X0bX9VZZz79ta6+lft5jP+nXRbOrXfSad77uNK55mGebfsNKK - OyuGYYBP7QMu14bnRXbtbzd5J1246Bd+YI1P+OF8r8ij6S7RpydbFN45qdnz6bli9bM7ysHHKtWs9vCg - GOBSddfetuX1o6CAfbdjQrf4wySRsXnW5YmqqdevSDvtu6dlvjwSJg4mbJpe7DTNv//dz3ldB0wCG1ZN - ubBNxm3vZx3zhWthYmDCtPrpct2Yq9+cLVdnwySwYeX08+vlvHZ/NbScvwQmBiYsim/5a/iduaFmuO0y - TAIbViq5+kbFYeNrK5s5MTAxMGEWd1lZ1f3EAXnrA1/V7bd4wCSRsW722UTl8it/TKwXXbOyXqAJE4cr - 0PQ7YiEecem1tMfBXTAxZKyTf+myWsi+z9a2C9yQxVEUySZfmS2ZcPapht1me2Rxo8xTTprFlz5o+25b - jywOwmBCvP/zR7Xkc84qIQdVpV12vteyXLkRWZFBzukjOtmnv+v7bzPW9FyfJOez+idMDmJA/fP34tmX - v8harn+iYzbvjYH1vHswBSBskHPqhV743s/aLqvfqzst/anqNP8bTA5MyAcdOaFovPq2rvn8T5rWc35o - OC38C1MAwoZJB34be2/4YeS94oeO66L3Og7zHsLk4IrIxVgFicf/GQDTEJf4sarC9QAAAABJRU5ErkJg - gg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACYklE + QVQ4T6WSXUiTURjHX+jCboo+qKuuCqKbKCqoLjIKt8KPFovEFi0XsU1KNlnaNlJzpujSzaVpW7Qv1OZH + JYqToiE0HH3P2Iw+JJpGrmXt3dycy+If74mFrwsiOvDjwHvO//c87zmHAkD9D2kfGNwDtXDd0qDPooKs + MGf74nWWoLddr+ht1yOFpfE4wsEOxILXMTHWgDIxF/oaBa5q1TDUlDJwFguQoHuQjHQjEe6EvU2B+LQN + ZRKe/+WIEhfO5kIp2oGg+ySmneshEx5CmoAJJyMOtNaegNfTAPpDM6bG1HjnOYV+Ew8SQSY6ytfhmZ5C + 0bEctqDb1vhLQN+EtlyISkUB1MX5OF/Eh0LMg1yUC6kgC02yDURQkJ3JFnSatZijuzAXMiI+WYfQi2L4 + basJPusqeNuW4bEhg4QZsnZvZQvsxlrMhiyYDVQj/uoMYs+PgB5YDp3ViTpjHy5e6YJSa4dcY4JEZYCw + pJ4tMLdoMDNhQGxMjJknuYg+2IZPd9aQcGok578jHEkgMBVGvrQKeYXq3xLKpKsA/boa0UdcRIc3IzK0 + FhNWilRmhvm2m2B0uOAbD5LwvRE/DvBFREK11KvwZfQcIq5NoAdXItSTgfEbFGn72/wPfI0mEPgYhu9t + EJ7R98gWyMHli7D/4GFk7tkLqulSKUIPpaAHV+Bz71JMti+Bv5WCTGMibac6uOZwodk+hP5hP5kZdm3Z + COpyZQl5IKlTTiFWGViV73vekHDPXS8czqcsAUdXcRoyIQ8iPgd5+3aSBea0mX9OVfsTRLDwShZyVFpF + NvyNtOC/8hMb4cocvUYexQAAAABJRU5ErkJggg== iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAiElE - QVQ4T+2PUQ6AIAxDuf+lkTbWNIOpmH3al5nB3DO2kd5bEcPEpkwqIXDp5w+4EEhUJgSQlQglKhNOIPEc - 43PwSvgU/g2K7z4IY3wOFEm3hD4TvD9lW0IuZOwI2Wnhjl+45LVQc66MZ8YkREXCjF3GUogSizueMi6h - cIGXwZuMSQhchAr03g5eEHK4HOEqIAAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAeUlE + QVQ4T+3RURKAIAgE0L3/pWmwcGwlFIfP2B9TeeYIACIoigjaoAw1UDOixweMoMagMlCjWAloUBk4RYu/ + ueaeDXBV7TbPjZYg19ceQ1Mgr9ue/ocZMHykDPhqiPKDbrbB40fxUFrLgyPqzO2BFob5gDSoCbC7Bxde + EHK4KrCbLQAAAABJRU5ErkJggg== iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAADwklE - QVRIS5WWS0hUURjHx+f4xJFw8rHKrFDRgRYW4jMfBbooeyyEjAq0cCu4UZMWKYSSKFEjPkqSMfMBIQxk - akyUUJvsZa1bBO3aSeK//3fnzu3OnXPVDvxmzv3Od77/nO9859xxsCGE0+mEy+VCWloakpKSDLsQExOD - 9PR0pKamRiB2s68NwU5ycjK6urowNzeHqakpNDc3Iy4uThsrKChAR0cHVlZWsLCwgMXFxTCWl5eRn5+P - 6upqJCQkmIObcSAzMxPDw8Pwer2YmZlBUVER+vv7UVhYiLq6OqyurmJpaQnz8/OakODz+TA+Po7JyUmN - 2dlZ+P1+DAwMqESEYCc+Pl77zs3NRV9fH7q7u1FTU6OlMzY21jxBo76+HoFAQMuACE1MTGjC8mPGxsYi - /B1ZWVkwNzGOjIwYDltbW/pIeJOVh3xkNdPT00ExWd3TpxhlhkLjGm63W58abGLs7OzUn/bXiouLMTg4 - iNlnz/CYqxoeGsLrqiqsSSZSUtRCvb29eu//WlNTE2739MD75An8LApGx3emvuzwYbWQqnk8Hm2/hMrK - SrS0tOgj/9r29jYu3LiB+ywgEVk/cQLvz5zBSZb/nkKNjY2Ijo4OOiqQKjW330xZHu1D169rqXtdXg5f - WxsSJX12Qq2trcrgVh48fBicwEqlQUPsn3gs1ii2WVuLdNkrq9DOzo4m0sXyLikpMQLuxui9e4aIILa3 - V6/iVUUFPvIYuOTgq1Ykjgss32OhjdwH/DDwkbLjx/H+1Cl7IffBg+jharyPHiHr6FEj0F60EHYMongV - bVDEVkgmPWeJfqXITfatAe2oIuwYxLMAPnCfPnGPbIX8vFBfML/Iy0MKn61BVdQSdsKFmLp3ly7BlZio - FvpMB6mYjYYGOHYpbzNWISffBl8Zp620FA5V1cmkTV1omSd8k8/WoCo8hB0DXqL4wXN4RfqCSmisvR1v - eQOskXWKBc6dw8XTpxETmmQhmrBjsE6OkFvE8FMJVfDa6L98GW945YhYgLyR++vQIZzl29fDt3ABf3EZ - ++LfSEQghNja9W8Dq1AsjeJcTruIbfC+eiGrYypfsoJkhV+Y2m9klGJndX8zSSRMRFCtiB/4RTw8Uwf4 - f+AXA0phfGT6ZIOHeHkmcvw8+an7h+gjESKCnZCwTQLiJEj1CVFRcPNcyPgfEvIV7pKw4GZ2E/of7pCI - 4GZUQrIKdvaNbbrM5OTk6BLBJsYEIvVfT2hQ8pk0kGskIqgaB7Kzs5GRkQERtQzCrZNhIpMoK8sWB/4C - O706Ewj1hikAAAAASUVORK5CYII= + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAADtElE + QVRIS5WUXUibVxjHjx/RaBKSUIy+elXrHBo00As7iuZN3nwomIvWbb0I1NEV1OKt4I1xsotFGEpDZKwR + o50oSa0fMIRAnTpSWmG9mW1Xt+tdDHq3O5n4L8/R2OTkvOoO/Ig573Oe3/s854mMMYYclZWVsNlssFqt + qK6uPtsnysrKYLfbYbFYiqD9/FgdTv4wmUwYGxvD6uoqFhcXEQ6HYTAY+LPW1laMjIxge3sb6+vr2NjY + KGBrawstLS3wer0wGo2i4KOorq4O8XgciUQC6XQabW1tmJychNPpRCAQwM7ODjY3N7G2tsZFRCqVQjKZ + xMLCAmdlZQWZTAZTU1OioLCiiooK/tnY2IhoNIpIJAKfz8fbWV5eLh5CMBhENpvlHSDR/Pw8F9PLzM3N + FcUzRVGQv2hzZmbmLODw8LDgeW5R5bkYqmZ5eflERtU9eYLZeLxQ5HA4ChLQ5ujoaMHeRau9vR3T09NY + efoUPyWTiMdieO7xYJc6YTbLRRMTEwXfL7v6+vrw7fg4EktLyHi99Mb4y+dD57VrcpFsuVwufl+Eqqro + 7+8XQ3B0dIQvhobwg9PJJXs3buBVTw8+s1guFoVCIZSWlhZf7Ck0pfnr31gMTYwhdv8+b93zri6kBgdR + Re3TEw0MDBQllvHjo0cnB6JRXglB+28CAex6PDjw+2GnuxJFx8fHXDIWiaCjo6MosYzZhw/PJDnRy3v3 + 8KvbjdfBIGz0wxdFtChwPZ3Gp7mLvAT5ohRj6Lx+Ha80TV/kqK3FeCSCxOPHUJqbixLq0S/ISoxG7AeD + +iI69PPSEt41N+OBJKEeHkFUYTbj90AAb/x+fVEmHMYztxtoaoJZklSGXybSNPx25w5sVVVy0VtN4xOz + 39sLds54nyeqNJnwTtMwePMmmGzq6NDBqWjL68WBJKkMlyBiioK/QyF8lYuRieaGh/FSVbGrqtjzepG9 + fRtfdnejTCIgSgXJHmP4hDF8kx8nE7ktFkzevYsXPh+XZVUVL+j/19WruGW1wmWzoVVR0Gm18viQWA1j + GBZfSBSVnwZ3ORxctt/Tg2dUnceDX/x+XuEfmoY/NQ2zioJbgoSoFiUyEW1S8Hvqe20trtjteK8ofDBe + d3fzC44NDaGKMXzOGP4RJFFRcJGIOGIM2VwgTR9RUgKHwcCf/ydIvheTX1b0f/hOTCwiE1EVYqLz0G1X + Pg0NDUUiI2N8/oOSpDneMoZexvC1mFAfhvr6etTU1ICkYoDjlJo86vQm6xw+ADu9OhO8z9GhAAAAAElF + TkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABJklE - QVQ4T6WSvZHCMBCFtwVaoBZKEAEB6RGQXOAZRgGJAw+hAyfbAi3QwrVAC9eC71vJDFpLcwnBs/Xe/kj7 - I/M8fwRPJDzAptRKYNNKc0QCn+FWaoXty+yV7khKoCBuS32x/Yp8c1zpjki45QR6X+mXnHz6v4QkSHzm - JP0+87DJwR3Qqj+OJEHCTmQ05+fCedXB+GXtm+xNUU5LKSN/uz3+tPwMTdFAEE1LDQVaNfWFpmjgZho3 - WXBzrC80RQMJeEFqHIhWiqEeryMS9oujbSTCBFfOSrLI38o5ukmsgzmcNTsO6elwxjhwmLb8sanbhTIB - N5+pW3G8Irxnzhix6d1ux+YmUiYg2JaoA8eqcdnWk+TwcLoj0pFkbC9M2kjbi3731mf5A6lCUicKFTV6 - AAAAAElFTkSuQmCC + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABDklE + QVQ4T6WSvY3DMAxG3wpeIbNkBLtwkfZSuLnCgKAijQtDpYs0WsEreIVbwSt4BR14VGH9IBcghQqRH59E + 8iOEwCcnvdBu0Da56JT3RSwTBJhdLoq5L8kX8RLgA9hLIaQ94PtfgFOAX7O4UfjzdQsqtrtCpi4WN1o8 + CriYTwXQXmER8R7vDnq5m1xbBWjRPbayOH3d/uSalwCF2CMOVF4vhvoGQAb3lOLqWt8BHHFw8gtpRU7x + k7yoi0JxpKytA7+BP8Bu2s4t2UReHGDwKlRHwtDALLALzB584oUzwMFgZGDwSHYOvWxlldfhkWzkDDBq + onGHWzE4zU0r9FsVoKLRwFI3zJ8jxRfT9Rz/BalCUid5a6EwAAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABaElE - QVQ4T6WQz0sCQRiG/XO02vof+kH0iw4WleRm0SGig6cigtworUsgblEQgV26lUERUUZSggZJQSsqGrgn - QfC0K7govjkDWbuMaPjBM4eZ+Z7vnTEBaAvTVSgLFs7j7DWrwQgVGIvsOQR/S5KGglD0Aw6nt6mkLvBH - f6EJ9moCA7wnhhUxpRMyE5AiDT9VrVZRLpdh334FZz3H0v57XcJMQPgr0DQNqqrC5nrBWSCGzvFTLLjD - VNI0QS0ylr0SQpEvTG0E0TF2AsvoESwjh+S4cQLyXjK1UCggl8tBlmVkMhkkk0l4DgIwD/n0gkqlglKp - hGKxCEVRYBPCyOfzWNyNYH7nGXNbT+CFIHjXA9y+C72gZ5BH98AsuH4buL4ZdPVO07hkajqdRiKRQDwe - hyRJFJ2ALCwm1+9oZF54hH3zXkdLgom1W7x9puARL2mDkaYC6+oN/WnzsEgvsyD3mM3/gbnZOjB9Aytc - DAdFhtjSAAAAAElFTkSuQmCC + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABZ0lE + QVQ4T6WRz0sCQRiG/XO0sv6HfhD9ooNFJblZdIjw4KmIIDdK6xKIWxREYJduZVBElJGUoEGS0C7uooGe + FgRPrqAovjEDWruuqfTBc/lmvmfemTEAMPwHw3UoDT2cJ+kb7WY9qEBbpGdn/W1JmgpC0TjsTm9LSV3g + j/5AE+zHG2A8MTg4SSXUTUCKDNSqWq2iXC7DtvMGs+UCKwcfdYluAsJvQalUgqIosLpecR6IoXvyDEvu + MJW0TODgJKx6eYQiX5jZDKJr4hSm8WOYxo7IcvME5L7k1FwuB1mWkclkkEqlIIoiPIcBGEd8akGlUkGx + WEShUEA+n4eVDSObzWJ5L4LF3RcsbD+DYYNgXI9w+y7Vgr5hBr1D8zAPWmEemENP/yyNS05NJpNIJBIQ + BAE8z1NUAu2/1pjeuKeRGfYJtq0HFW0Jptbv8P4pwcNd0QEtLQWWtVv60sZRjm7W409BuzQ0OuUbK1wM + B4HjT5oAAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAB+ElE - QVQ4T2P4//8/RRirIAxP3vItZvLmrzvm7f76aPnBr0dWHvw6ZdWhr1LIalA0IOO+DV93APGf7nVfnzeu - +PK4fsmXO3N3fn0MNOATsiFwDd2rXv1fduKrAZi97uuy/o3ffqdOevfGpeDEb+vU7X/ME7Z8d6+4+3Hm - 9q9vgAbcRDEAKMDZuOTl/3kHvl6tX/G1YcKmb3/iep7/cy04/t8uY/cv09g1x13ytz60jF/+J6zj3c+l - B77eRzEAhItnPv+fNevz/8I5X/5H9nx8YZW85a9F4oYfprEr80HyAbXbVQwjFr9wLb/9vmHplz0YBiT1 - Pfvv3fTmf3Tv5/9lc9781/CetNokZoUjTF7BoY7ZLuvQb9eyO68bVn45BBOHGxDU/PS/WfH9/55Nr8Au - Sex59L9u8VtLmDzQAFa7zEN/veqefWte+WULTBxugFPF4/8ORdf+W2Ue/28Sv+2/YdTa/xo+U4FSEHmz - uPVKtpkH/wW0vP5bMP1xKUwcbgA6BgUsMl/da5K7a9ntP2mT3//r3fCVDSYOV0AIW6TsuxjS8eFfWN35 - XGRxFEXYcFzfeyWH/Asx/i0f/vlVXvmmFTCbEVkeRTE27FH92Nm/5dMvj5KLP42jVnmhy6NwsOGo3s+R - ziXXGk1j1olik8cQIBVjFSQe/2cAAG4MzKZBtgOMAAAAAElFTkSuQmCC + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAB60lE + QVQ4T2P4//8/AyUYQwAZT97yLWby5q875u3++mj5wa9HVh78OmXVoa9SRBnQt+Hrjr4NX/90r/v6vHHF + l8f1S77cmbvz6+NVh75+QjYErqF71av/y058NQCz131d1r/x2+/USe/euBSc+G2duv2PecKW7+4Vdz/O + 3P71zapDX2+iGLDq0FfOxiUv/8878PVq/YqvDRM2ffsT1/P8n2vB8f92Gbt/mcauOe6Sv/WhZfzyP2Ed + 734uPfD1PoYLimc+/5816/P/wjlf/kf2fHxhlbzlr0Xihh+msSvzQfIBtdtVDCMWv3Atv/2+YemXPRgG + JPU9++/d9OZ/dO/n/2Vz3vzX8J602iRmhSNMXsGhjtku69Bv17I7rxtWfjmEYUBQ89P/ZsX3/3s2vQK7 + JLHn0f+6xW8tkQxgtcs89Ner7tm35pVftmAY4FTx+L9D0bX/VpnH/5vEb/tvGLX2v4bP1P8webO49Uq2 + mQf/BbS8/lsw/XEphgHoGBSwyHx1r0nurmW3/6RNfv+vd8NXNoIGoGOLlH0XQzo+/AurO5+LLI6hEB3H + 9b1Xcsi/EOPf8uGfX+WVb1oBsxlJMsCj+rGzf8unXx4lF38aR63yQpfH0ICOo3o/RzqXXGs0jVknii5H + lAGEMIYAqRgAbgzMptd1HX8AAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAB5ElE - QVQ4T2P4//8/RRjOWHXoq9TKg1+nLD/49ci83V8f9az/klK58AsnsmJsGEyANAPxp7k7vz6uX/LlTuOK - L49bV325U7Hoy+fKRV9S0TUhYzAB1Hxz5vavb9wrH7w3T9jy3Spl2x+H3ONfUyZ/flE458uLwrlfwkDq - lp34auBQdA3IRDNg6YGv98M63v00i57/2yVv/U3T2DXHgPiLWfzm38mTP/9Nn/n5WfbcL5HzDny9ap15 - /D/QQrjXwETD0i97XMvvvFf36rkVULtdBSRmGrsy3zh6+VedgNm/Qjs/Pge65H/WrM//TeK3AqXRXNCw - 8ssh1/J7r9Q8+w4rONQxwyRNYlY4anhPWl02583/6N7P/72b3vzXC10MlEIzoHnlly3e9S++anhPvgk0 - gBUmOWXrV10gBtvs2fTqv1nx/f8aPlOBUmgGFEx/XBrY+uavUeSaX0ADuGGSoACzAvrZJH7bf72QJWDN - qm5dQCk0A3o3fGVLm/z+n2vZ7T/qXpPckRUgBxg2DGeE1Z3PDen48M8iZd9FZAWEMJyhFTCb0b/62kv/ - lg9/HfIvxMT1vVdCVogLo3CAhvD5VN48FdD6+atH9WNnZDlcGKugd8Or0Kjez5HY5NAxVkFSMFZB4vF/ - BgCu1sRwcCvT7QAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAB40lE + QVQ4T2P4//8/AyUYzlh16KvUyoNfpyw/+PXIvN1fH/Ws/5JSufALJ7oGdAzXvOrQ109zd359XL/ky53G + FV8et676cqdi0ZfPlYu+pKJrwmbAzZnbv75xr3zw3jxhy3erlG1/HHKPf02Z/PlF4ZwvLwrnfgkDqVt2 + 4quBQ9G1/xgGLD3w9X5Yx7ufZtHzf7vkrb9pGrvmmGnsmi9m8Zt/J0/+/Dd95udn2XO/RM478PWqdebx + /6sOfYV7DUw0LP2yx7X8znt1r55bAbXbVUBiprEr842jl3/VCZj9K7Tz4/PCOV/+Z836/N8kfiumCxpW + fjnkWn7vlZpn32EFhzpmmKRJzApHDe9Jq8vmvPkf3fv5v3fTm/96oYsxDWhe+WWLd/2Lrxrek28qONSx + wiSnbP2qO2XrV7DNnk2v/psV3/+v4TMV04CC6Y9LA1vf/DWKXPNLwaGOGyYJCjCrzOP/TeK3/dcLWQLW + rOrWhWlA74avbGmT3/9zLbv9R91rkjuyAuQAw4bhjLC687khHR/+WaTsu4iuCB+GM7QCZjP6V1976d/y + 4a9D/oWYuL73SuiKsWEUjlbAbD6fypunAlo/f/WofuyMrhgbxhAAYe+GV6FRvZ8j0cWxYQwBUjGGAKkY + AK7WxHD7c7sYAAAAAElFTkSuQmCC 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 - RK5CYII= + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAX0lE + QVQ4T72OWwoAIAgEvf+lC0FFt3x8RCN9ZO0oLYakPNprKoZ80O5UyvKpFp4Krh+ngvJj1rfXH4ICEHiJ + 6xX0ggYRwMqDoBKiVvpI7MtPK5iA0UOAU/9voOD0Zxtszyqxa1VmsC8AAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACh0lE - QVQ4T4WSyU9TURjF+5+4YOPKYOLGlYmucAEoMSExxoVAwCKCIhEEFYMEtSBCJDRImawgDaARlASVSUFG - FXBoAZmnFspUW9rX937e9jUxkZe4OLn5bu7vnJMvVwf8V7aWg8NbQ8ffY8+yTTaHKaymTv2eONki7hs0 - gX/ls0aZZ9sPw7aBhZ5YcRYz8/oQrrGIF5rAPolkdstA6md3qUmcvQTmDWu2xmMNWRsPKHOdMbhWW5DZ - wu1oJTAvdhzRBvbJnnWD7VILe50WYWIRTSxiRnbkazzWkGSLjp55E26R13IsTtMx6IhTdzB9GV1VwwSV - z8apePoFY80oj01DlBgHeFjWx4NHPRQUdmIuz6W7JQflaz6bjZGsN8WyO5XM8sBZdKb6cRRFQZIVvJKM - e09mxy3jdPmxb0ksOSVm7T6oMsLNLDgfBafDMJw6Ksqh01Wax5AFnFa+iL5kgbjCec4VzOLYkVjZ9DO/ - rg2nXn2uGjwR1SW/wpm8GaJuTRORNcmJDBtrgfQNSYVzMgUcCTEqPGDzcCm1XjUw1n7GJyl4fDIuj8ym - qO7Y8bMsqmslD0156LN60KeYVYPy6hH2BHy3boS8miHuVA9w29QP68MhWCSH4CtFbaQaXvHhp4ckfZ1q - UGYaxu0Vi/P4g+n27VB6wCAg0SIAj87sMTjp4aOAe767SUyqVQ1KKwZxic0HG9SKBlVqg+Fw8QVCcEZp - B+nF7aEGrXR9cxOfWKMalBg/BdOdu/7g4padPmYdPiZXvPxY9DI252X019/0bpH+btxNXEKVahD4MIaS - Xu4VdZF3/y25+e3k5LaRmf2Sa9ebSUu3kCI2rk82k3ixlviEai7EmYICdH8AxXsU+dXRvF8AAAAASUVO - RK5CYII= + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACiUlE + QVQ4T4WS3UtTcRzG95900Y1XYdBNV0Fd2YVaEggRXqSiaTbLJJdWiomVmimJw9x8W5pDV6QlWPlWmk7N + 1Eyn5vvbptPp2tl2ds4ntjMMctDFc/GD5/k8D19+KkD1P1lMYcN75rOfsGoss63HZTbVc78nz5ssprCm + I+ZQ8s5EGRY7ToKjiJXeWHCUsvDuBM7xiNdHzCFl1Vg4qABxgIO1FhD78L93ZrJDmENopvmYvNQVg3PT + hMQeLlsb/vdq56mj5pCyau7iKDfi7jI6N01GxAEjjnIkW0EIcwiJlujohffhRmkrx2jXnYHOeOUG8zdQ + 6ZsmqX45QVXDGNraUZ7rzJRpB3la0c+TZ70UFndhqMylx5SD/L2A3eZItltiOZhLZX3wMipd4wSyLCNK + Mh5RwuWW2HdJ2J0+rHsia3aRRasX9Fq4p4G4KLh4nKILp/GvU1UbxpEkmfTKVVLKVogvXuZK4SK2fZGN + XR/L26HD6luvFMCLhjFEn8yl/AWi7s8ToZnlXKaFLX/7jqiEc7IgLhJilPCgReC6ulEBaOu+4RVlBK+E + U5DYdfqw7ftYtwfD/zSb5wT6ZwRS0gwKoLJmBLdX4mH9CPm1ZvJqBnmgG4Dt4WA48jB8s6QdddFbPk8L + JKfUK4AK3TAuj8S+4Au0Wx3Bdj/AL702EB5dcDM0K/BlWqB3ykVScp0CKK8awukOLqgzk6dXFgyHqw7D + meWdZJR2BBe00f3DRUJSrQIo034NtNsPfIHDrdu9LNq8zG54+LnqYXzJw+ivv+09Uy4+TriIT9QrAP+H + KSrr41FJN/mPP5Bb0EFObjtZ2W+4faeV9AwjaepGUlINJF2rIyGxhqvxuoD8gD/FexT5V1saowAAAABJ + RU5ErkJggg== iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAfUlE - QVQ4T+2UQQqAMAwEC/3/myMNTYjjomA8ehjozi5SQRxm9ilSdpCyg5QdpOwgZYcx56zYhp7Ejrx+4IJb - z3WQcsOOcOeZgyz2+Y7YVU6vfCkf4M5zDXHOEo5w47mGOGcJR7jxXIsoaw5HuAkun00bKYG6yUJt/79N - GxsH7EeiiVdcqusAAAAASUVORK5CYII= + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAdElE + QVQ4T7WTQQrAIAwEBf//5hRKI3ZWRbr1MAc345qLJSLKn0jgIoGLBC4SuEjgUmqtPfHAnKRHPheO3Ps8 + k3ZK6UlhDinO6B9vd1YCCwi914YsoDyCzrnCHOSwP89K6TSXoo0EA7jFavMDX4+BiwQuErhc7EeiiR4r + 8zwAAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAa0lE - QVQ4T82OUQ7AIAhDuf+l2UA7O4OIH0v2Gj+EtipqSBeD2UbvkIEVMAtmgdav+t3C1YLQWC1Ijb8oSJgK - uIRmCW3L5rlgQ3M8IVMtCChI6shdlB33hDqAY0NE9DKO70MdwLGhgI9+oHoBzyqxa4rWeaEAAAAASUVO - RK5CYII= + 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 - gg== + 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 + qTrgv/oBFQAPI+QT9ewAAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAChElE - QVQ4T52Q3U/SYRiG+Qs6aKutddDcWs220jKwuepArebUFtPFbKCJmYQfkxmakbRyIZFTHJrprCimZWGa - X0hqMHEwTFMLxLIpg+w7NXWkC7zj/f02W5MO7OA+et/rep7nZgBYV/qkgpimrGSQ9BSmhwb89K8037kQ - ScCp8lyM5NOSgB8DhcDdLUXQdg1g9FoeBSuZTPrRYVbBZqrAsKEM1mcKmNplsOgVsPYoMGS4gbEXFdBr - 8zDjLMWb/izIZEWQH2D6UTBWBSs+O3ze5/Au6/HL04blBS1+ztbD7VBB15BOwQ4DH621Mdi8cQNuyk+j - uuQcnxKQ6T6vJSDcoeasgYcMYlRc4SI5NsJFCUaN5fAuGbC8+ARLcw/g+aaGy65EW138GthuysFrswSF - mWwioDsY7C71T+2EZ+Y+Fr/UYv6DCrdua2DRyeF6eX4VHjMJMT0igrlTgAxOFJKOhdMCi+66H36EhY9V - +OEuw6yzhBKsrPjQqGJTsM0ogGswG+/MZ9Fx7wTiD4ciITKMFvS1yrD4+S4e1xegXM6HKCMOOSIx2Ikc - f80MDHalYdIiwLgxFa/0p6CtOoIoVjBiD4bQgl7tVcxP12BmshjfJ6T4Ol6ITzYx3g/nYsoqxNu+NNi6 - uaR1yAq4yE6JQeJRFiWhBF0PL2POXfkX7BzIxER/Ouy9PAx3nIS16TgFkzOiw4NRnBOGiJDttKBNc8l/ - txL97WkwNqegpzEJOk0CntbFUes2lB2CuoRFTSZwpYSFGulu7N25jRa0qC9CnLoPIl4YhJz9OMNmghfL - olomRZFbybpkbalgD6olu6DK34HgoC20YD0SsjaZTOCgrZv+CP4vYPwGutu4vmPLy7gAAAAASUVORK5C - YII= + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAChUlE + QVQ4T5WT3UvTURyH9xd0ERREFyFEsaC0bDOkulArRI2G0jCm5my5fBkOm2bmoqS5THxhmilWK9GyZppz + zqW2scnGTFNrU8vQMbP3NlNZjrZ94vx+YMQq8uJzdc7zfF84hwGAsZYYpcLY9pxUkPQXCcKCLvwrHbfO + RRFwtioPYwW0JOjS30Lgvs4SqHqHMH4ln4KrWSz6cNKsgM1Ug1F9JaxPymHqlsGiK4e1vxwj+muYeFYD + nSofLkcFXg3mQCYrgXwfC4RdFQT8dvh9T+Hz6vDDo4Z3SYXv7hbMTSqgbRVQ8KSej67GWGxcvw7X5SdR + X3aGTwlIdb/P8kdYo+QGwSN6CWou8ZAaF+mkBOOGKvhW9PAuP8LKwj14vijhtFdD3ZQQBNtNIrw0F6Mo + m0ME9A6G+yrgXeqBx3UXy58asfhOgRs3m2HRyuF8fnYVnjBlYX5MDHOPEJncaCQfiaAFFu1VeFwPsPS+ + Dt/mKuF2lFGCQMCPNgWHgm0GIZzDuXhjPg3NnWNIOBiGxKhwWmDskmH54208bClElZwPcWY8RGIJOElc + MBgMDPdmYMYixJQhHS90J6CqO4RoNhNx+0NpwYDqMhbnG+CaKcXXaSk+TxXhg02Ct6N5mLVm4bUxA7Y+ + Htk6ZIU85KbFIukwm5JQgt77F7EwV/sb7BjKxvSgAPaBFIxqjsPafpSCyRgxEUyUisIRGbqVFqibL8Dt + qMZgdwYMHWnob0uGtjkRj5viqXZbKw9AWcamKhO4tpiNBulO7N6+hRZ0Ks9Dkr4H4pRwZHH34hSHhZQ4 + NrVlsigyK2mXtC0V7kJ98Q4oCraBGbLp11v/Xwlpm1QmcMjmDcGfZq35CbrbuL7aUBONAAAAAElFTkSu + QmCC iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAACcUlE - QVQ4T83R3U/SURgHcP+k5oW6mUsjUWgCsTBMxnzBXL6LKfXDHz9elEwFkRfRREjzBRIrypzpmuWsOanU - zXGRXrQumjd10U06PH470toSnb+WXbSz78V59jyfnWcnBcA/zbHF0+Ro8YSTn5eHg/xeS54/Ujjp/B+g - 2/2OOBwrpLtriTwIbZLR0Q0yPLxOAoH3xOeLkoGBZeL2vMLs7CrZ3v5KkucPXQ7S2blABvrX0GaZRSTy - HYO+z3C5P6LL9gGW9hj03Boqq17SVkCt7ucHrdZ54nQuw8g9weTkNzg9FLNvou32BlqNa7ihW0GJZo62 - AsVXPfyg2TRDbN2L0DNTGB37Ql+2BYs1hlZuFc23oqhtWIJS9Yy2AkXKXn7QwD4m1vY5tLQEMeTfRhvF - WPqyBKZ9DU3VAmSKh7QVKFTY+EGWnSIm0zS0DSPw9H1KrNnMrCSwCoqpyp9DJAnSVkB+6Q4/yHFhCkZQ - X+dHd88WWpi3qNO+wTX6EeryOSiKn0Iguo94PA6ZtONPVg4RozEMbaMf7R0x1DdRrPonVqiahkTxCJkC - P3Z3dyEpsPKDemaMsK0TFByCwbSOyhqK0V/9heVLQ0jLupsAxWIzP3hTN0J0umHU1njBGNZRUvECSvUM - ZFciFAtDcDGIM+l92NnZQb7QEE+eP3Q5iKbMES8vdUAht0B+OQCh+B5ycgeRec6L9EwXUtN7kZrmxf4+ - Qa6A4QfNphApK+2BqXccnG0MrH0crC0p9gksRjdwPkfHv/LeHiHaRheKixxQKm2QyiwoKOAgEukhzNPh - gqAJ2dkNyDpbjYyM6/zgaXNs8e+DlB+yFFTq/JCt8QAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAACZUlE + QVQ4T9XP3U9ScRgHcP+k5oW6mUsjFWwKuTBMx3xBXfh+TCnwcDiCJxOPIi++JEKYqKRWlDnSNc2Zc1gJ + m+MivXBdNG7qoptw+PPbPF60ZOtc2E3Ps+/Nd3s+25MGIO1fJqW4aFKKv620sBCn+aP9/0Gn8yOx2cJk + wLpJngb2yfT0HvH5osTr/UTc7h0yPr5NnK53CIV2STz+nZy/TwH7+9fI+FgEFnMIweBPTLi/wuE8hJX/ + DHNvDAYmggbtOk5HrR4TBzluldjt2zAxLzE//wN21yGsg/uwPNhDtymCu7owqjQrAlhx2yUO9rDLhB/Y + gEG/iGn/N1j5A5i5GLqZXXTe30Fz2yZUla8FsFw1LA4a6ReE611BV9ccJj1xWLgYaFPkDKPeQ6Ndg0L5 + TADLlLw4SNOLhGWXQLVNwTXyRXizUx8WsDrtGipr30BWMieApTceioMMs0BYNojWFg8Ghg7Qpf+AFmoL + 9dp1qGtXoKx4BYnsCZLJJBTyPnHQSAeIybQAqt2D3r4YWju2UN94hpVVLqFE+RzZEg+Ojo5QUsyJgwa9 + n9Dds6DaJ2Fko2hoWoda8xuTygPIyHkkgEVFPeLgPd0U0el8aG4ahd4YRVXdW6jUy1DcCkIqX4Dk+hwu + ZY4gkUhAWmBMnr9PATU1tmRttQ3KUjNKb3pRUPQYefkTyL4yisxsB9Izh5GeMYqTE4J8iV4c7GEDpKZ6 + COzwDBjeD3pwBjR/LoOz2NjZw9U8nfjLx8eEUO0OVJTboFLxkCvMKC5mIJMZUFCowzVJB3Jz25BzuRFZ + WXfEwYsmpbhofgGyFFTqzV7GGAAAAABJRU5ErkJggg== iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAACG0lE - QVQ4T51TbUhTYRQ+WVgw29h258012txsLXSOiAJd8UIZSBFkVhAYBUWIYqZhhQ4ug8JWmR+Ykj9CEkaN - pB+lDGQMspDAoqDCws21K0T5Y8Toy5Sn17rIiH54feD8OAfe55znOeelJaHd5aEbm3RKph4l4XVwBC1R - JVWP8lEBdXENtF0WSSmpg/uRDedntNgVEUD+PKaUFdzaquPBqHcLo+5iRl2FjGtm1OZkdNXBqNXG3A+t - OBKz4dSkAdbbYop8xgw/+OPKlyJOvtfj8CsTysfy4I1YsNDVGiqAod8F2wMXDk3aUTGRj7InZuQEhAw/ - eOd6eS1a09m4+EmD6oQeR9/mYu/4epQ+zkdh2Imikb8E+yecKHtuhyNkQ1aLTvGDj90g56BjdhUC39fA - n9agOaVD44wRtR/5ZNNmVCU2LBLsebMZ26MuVI5wP+qzPbSguSGpUUXQk/aiKmoA1a3kBNywUPIm3s0H - 8WK+E6NzLQj/Oo3B2QO489OL3h8b4f9iWiS4/HkfuuUdMEmrFQnc7bbxPgx9GMT9RA8GpiT0TVWjM16B - K7ESSDE7mmTjH4Kzyd2IfG1EcYeYYeK1Ah0F7HxdVkaXLIz8ZkaSyMgnMGrWM7qgZe6QCcfiRXg914+D - wW0pqs1Sd9buuwKefbuH62NnQDUr/jmkJaBp6ByeysOw+MTlnfLxgRPY2V66/M9ENeTh8R/dRL8BDkAX - agnC/hIAAAAASUVORK5CYII= + QVQ4T52TX0jTcRTFbxYWzDa2/dYv14/2c7O10G3IKNAVXygDKYLMCgKjwAiZmGlYoYMxKNaqNZXlmA8h + CaNG0kMpAxmDLCSwKKiwcHNtQZQPI0b/TDmxElmjh+nn8V44l3M4l6gQvAYz3dgqyx8XTHV4I3RBIZo/ + L5i6cQ6tcQmkfYIjf1cQxocizs9KsTvCgZyl7N9twCKjgIWRv4qRz8Sor4KR18DIo2d0VcfIJTLjAw2O + xkScmlZAc4tPk12Zk0fAwhpe8Gh6J8eRlyrUTZTCGhGQvaoJlUMxaIB434DD01rUT5Wh9rEaJW4uJw9/ + FWtLrYcrU4yLnyRoTshx7M0G7JvchJpHZagI61E59lfgwJQetc+00IVEFHXLFvPwmVh7qgQ9c2vg/r4O + zowEXWkZOmaVaPnIo+mDGo2JzUsCe19vw46oAQ1jHKit2ExZz+1JybIE+jNWNEYVoNbV5mxJWCh5E28X + gni+0Ivx+W6Ef53G8NxB3P5phf/HFji/qJYELn/eD19qJ1SOtYsWPHrmmRzAyPth3Ev0Y2jGgYGZZvTG + 63ElVg1HTIvOlPKPwNnkHkS+dsDUw+eEeK1cRm4tI5eG0SWBkVPNyMEzsnOMuuSMLkiZMaTC8XglXs0P + 4lBwe5paipZXa+MdDk+/3cX1iTMg26q8IhVA58g5PEmNQrDzK6vyiaGT2OWtWfkzkY3MZKP/+v4NDkAX + agkV7KYAAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABJklE - QVQ4T6WSvZHCMBCFtwVaoBZKEAEB6RGQXOAZRgGJAw+hAyfbAi3QwrVAC9eC71vJDFpLcwnBs/Xe/kj7 - I/M8fwRPJDzAptRKYNNKc0QCn+FWaoXty+yV7khKoCBuS32x/Yp8c1zpjki45QR6X+mXnHz6v4QkSHzm - JP0+87DJwR3Qqj+OJEHCTmQ05+fCedXB+GXtm+xNUU5LKSN/uz3+tPwMTdFAEE1LDQVaNfWFpmjgZho3 - WXBzrC80RQMJeEFqHIhWiqEeryMS9oujbSTCBFfOSrLI38o5ukmsgzmcNTsO6elwxjhwmLb8sanbhTIB - N5+pW3G8Irxnzhix6d1ux+YmUiYg2JaoA8eqcdnWk+TwcLoj0pFkbC9M2kjbi3731mf5A6lCUicKFTV6 - AAAAAElFTkSuQmCC + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABDklE + QVQ4T6WSvY3DMAxG3wpeIbNkBLtwkfZSuLnCgKAijQtDpYs0WsEreIVbwSt4BR14VGH9IBcghQqRH59E + 8iOEwCcnvdBu0Da56JT3RSwTBJhdLoq5L8kX8RLgA9hLIaQ94PtfgFOAX7O4UfjzdQsqtrtCpi4WN1o8 + CriYTwXQXmER8R7vDnq5m1xbBWjRPbayOH3d/uSalwCF2CMOVF4vhvoGQAb3lOLqWt8BHHFw8gtpRU7x + k7yoi0JxpKytA7+BP8Bu2s4t2UReHGDwKlRHwtDALLALzB584oUzwMFgZGDwSHYOvWxlldfhkWzkDDBq + onGHWzE4zU0r9FsVoKLRwFI3zJ8jxRfT9Rz/BalCUid5a6EwAAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABaElE - QVQ4T6WQz0sCQRiG/XO02vof+kH0iw4WleRm0SGig6cigtworUsgblEQgV26lUERUUZSggZJQSsqGrgn - QfC0K7govjkDWbuMaPjBM4eZ+Z7vnTEBaAvTVSgLFs7j7DWrwQgVGIvsOQR/S5KGglD0Aw6nt6mkLvBH - f6EJ9moCA7wnhhUxpRMyE5AiDT9VrVZRLpdh334FZz3H0v57XcJMQPgr0DQNqqrC5nrBWSCGzvFTLLjD - VNI0QS0ylr0SQpEvTG0E0TF2AsvoESwjh+S4cQLyXjK1UCggl8tBlmVkMhkkk0l4DgIwD/n0gkqlglKp - hGKxCEVRYBPCyOfzWNyNYH7nGXNbT+CFIHjXA9y+C72gZ5BH98AsuH4buL4ZdPVO07hkajqdRiKRQDwe - hyRJFJ2ALCwm1+9oZF54hH3zXkdLgom1W7x9puARL2mDkaYC6+oN/WnzsEgvsyD3mM3/gbnZOjB9Aytc - DAdFhtjSAAAAAElFTkSuQmCC + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABZ0lE + QVQ4T6WRz0sCQRiG/XO0sv6HfhD9ooNFJblZdIjw4KmIIDdK6xKIWxREYJduZVBElJGUoEGS0C7uooGe + FgRPrqAovjEDWruuqfTBc/lmvmfemTEAMPwHw3UoDT2cJ+kb7WY9qEBbpGdn/W1JmgpC0TjsTm9LSV3g + j/5AE+zHG2A8MTg4SSXUTUCKDNSqWq2iXC7DtvMGs+UCKwcfdYluAsJvQalUgqIosLpecR6IoXvyDEvu + MJW0TODgJKx6eYQiX5jZDKJr4hSm8WOYxo7IcvME5L7k1FwuB1mWkclkkEqlIIoiPIcBGEd8akGlUkGx + WEShUEA+n4eVDSObzWJ5L4LF3RcsbD+DYYNgXI9w+y7Vgr5hBr1D8zAPWmEemENP/yyNS05NJpNIJBIQ + BAE8z1NUAu2/1pjeuKeRGfYJtq0HFW0Jptbv8P4pwcNd0QEtLQWWtVv60sZRjm7W409BuzQ0OuUbK1wM + B4HjT5oAAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAB+ElE - QVQ4T2P4//8/RRirIAxP3vItZvLmrzvm7f76aPnBr0dWHvw6ZdWhr1LIalA0IOO+DV93APGf7nVfnzeu - +PK4fsmXO3N3fn0MNOATsiFwDd2rXv1fduKrAZi97uuy/o3ffqdOevfGpeDEb+vU7X/ME7Z8d6+4+3Hm - 9q9vgAbcRDEAKMDZuOTl/3kHvl6tX/G1YcKmb3/iep7/cy04/t8uY/cv09g1x13ytz60jF/+J6zj3c+l - B77eRzEAhItnPv+fNevz/8I5X/5H9nx8YZW85a9F4oYfprEr80HyAbXbVQwjFr9wLb/9vmHplz0YBiT1 - Pfvv3fTmf3Tv5/9lc9781/CetNokZoUjTF7BoY7ZLuvQb9eyO68bVn45BBOHGxDU/PS/WfH9/55Nr8Au - Sex59L9u8VtLmDzQAFa7zEN/veqefWte+WULTBxugFPF4/8ORdf+W2Ue/28Sv+2/YdTa/xo+U4FSEHmz - uPVKtpkH/wW0vP5bMP1xKUwcbgA6BgUsMl/da5K7a9ntP2mT3//r3fCVDSYOV0AIW6TsuxjS8eFfWN35 - XGRxFEXYcFzfeyWH/Asx/i0f/vlVXvmmFTCbEVkeRTE27FH92Nm/5dMvj5KLP42jVnmhy6NwsOGo3s+R - ziXXGk1j1olik8cQIBVjFSQe/2cAAG4MzKZBtgOMAAAAAElFTkSuQmCC + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAB60lE + QVQ4T2P4//8/AyUYQwAZT97yLWby5q875u3++mj5wa9HVh78OmXVoa9SRBnQt+Hrjr4NX/90r/v6vHHF + l8f1S77cmbvz6+NVh75+QjYErqF71av/y058NQCz131d1r/x2+/USe/euBSc+G2duv2PecKW7+4Vdz/O + 3P71zapDX2+iGLDq0FfOxiUv/8878PVq/YqvDRM2ffsT1/P8n2vB8f92Gbt/mcauOe6Sv/WhZfzyP2Ed + 734uPfD1PoYLimc+/5816/P/wjlf/kf2fHxhlbzlr0Xihh+msSvzQfIBtdtVDCMWv3Atv/2+YemXPRgG + JPU9++/d9OZ/dO/n/2Vz3vzX8J602iRmhSNMXsGhjtku69Bv17I7rxtWfjmEYUBQ89P/ZsX3/3s2vQK7 + JLHn0f+6xW8tkQxgtcs89Ner7tm35pVftmAY4FTx+L9D0bX/VpnH/5vEb/tvGLX2v4bP1P8webO49Uq2 + mQf/BbS8/lsw/XEphgHoGBSwyHx1r0nurmW3/6RNfv+vd8NXNoIGoGOLlH0XQzo+/AurO5+LLI6hEB3H + 9b1Xcsi/EOPf8uGfX+WVb1oBsxlJMsCj+rGzf8unXx4lF38aR63yQpfH0ICOo3o/RzqXXGs0jVknii5H + lAGEMIYAqRgAbgzMptd1HX8AAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAB5ElE - QVQ4T2P4//8/RRjOWHXoq9TKg1+nLD/49ci83V8f9az/klK58AsnsmJsGEyANAPxp7k7vz6uX/LlTuOK - L49bV325U7Hoy+fKRV9S0TUhYzAB1Hxz5vavb9wrH7w3T9jy3Spl2x+H3ONfUyZ/flE458uLwrlfwkDq - lp34auBQdA3IRDNg6YGv98M63v00i57/2yVv/U3T2DXHgPiLWfzm38mTP/9Nn/n5WfbcL5HzDny9ap15 - /D/QQrjXwETD0i97XMvvvFf36rkVULtdBSRmGrsy3zh6+VedgNm/Qjs/Pge65H/WrM//TeK3AqXRXNCw - 8ssh1/J7r9Q8+w4rONQxwyRNYlY4anhPWl02583/6N7P/72b3vzXC10MlEIzoHnlly3e9S++anhPvgk0 - gBUmOWXrV10gBtvs2fTqv1nx/f8aPlOBUmgGFEx/XBrY+uavUeSaX0ADuGGSoACzAvrZJH7bf72QJWDN - qm5dQCk0A3o3fGVLm/z+n2vZ7T/qXpPckRUgBxg2DGeE1Z3PDen48M8iZd9FZAWEMJyhFTCb0b/62kv/ - lg9/HfIvxMT1vVdCVogLo3CAhvD5VN48FdD6+atH9WNnZDlcGKugd8Or0Kjez5HY5NAxVkFSMFZB4vF/ - BgCu1sRwcCvT7QAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAB40lE + QVQ4T2P4//8/AyUYzlh16KvUyoNfpyw/+PXIvN1fH/Ws/5JSufALJ7oGdAzXvOrQ109zd359XL/ky53G + FV8et676cqdi0ZfPlYu+pKJrwmbAzZnbv75xr3zw3jxhy3erlG1/HHKPf02Z/PlF4ZwvLwrnfgkDqVt2 + 4quBQ9G1/xgGLD3w9X5Yx7ufZtHzf7vkrb9pGrvmmGnsmi9m8Zt/J0/+/Dd95udn2XO/RM478PWqdebx + /6sOfYV7DUw0LP2yx7X8znt1r55bAbXbVUBiprEr842jl3/VCZj9K7Tz4/PCOV/+Z836/N8kfiumCxpW + fjnkWn7vlZpn32EFhzpmmKRJzApHDe9Jq8vmvPkf3fv5v3fTm/96oYsxDWhe+WWLd/2Lrxrek28qONSx + wiSnbP2qO2XrV7DNnk2v/psV3/+v4TMV04CC6Y9LA1vf/DWKXPNLwaGOGyYJCjCrzOP/TeK3/dcLWQLW + rOrWhWlA74avbGmT3/9zLbv9R91rkjuyAuQAw4bhjLC687khHR/+WaTsu4iuCB+GM7QCZjP6V1976d/y + 4a9D/oWYuL73SuiKsWEUjlbAbD6fypunAlo/f/WofuyMrhgbxhAAYe+GV6FRvZ8j0cWxYQwBUjGGAKkY + AK7WxHD7c7sYAAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAiklE - QVQ4T6WQ0Q2AIAxE2cCRGMVRHMFRHMFRGIERsAUuJFxNqF7yPny5ltRQSvmFKT2Y0oMpPbAQ9cIlbNQn - EULsA8rRyf37oj6JFixATuHTgrtTh4WlEzRYgBOSoGfs1CfRggUI/kumPokWLNBBBWck6pMYwzN6QqQ+ - ifHqTA31Z+HFlB5MuU4JD0dnUwrgCrV/AAAAAElFTkSuQmCC + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAgUlE + QVQ4T6WQWw2AMBAE1wGSKgUpSEAKEpBSCZVQ0rSXPoafg0uGj8newqGcs/4A4QXCC4QXCqk83rgkbchD + SGFYOhrJSpCHqGMFNufXgrvhOmEssBNiO2NHHmIusLH/kpCHmAvKYsHOiMhD9OWVckJAHqK/daV+2ppf + hRcILxBeHkdnUwqevR+DAAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAiElE - QVQ4T6WR0QmAMAxEu4EjOIIjOIKjOJIjdARHcKSYSyiCvA+DBw+8x7UUbGb2C5QVUFZAWYFlZnNUBh23 - KDOz0504rI5blE9OR0Kv4S3KJypiikJblJnFUbmieXCLMrM7Kkc0D25RZnRQRRdFcIsyn62Pgf4Ib1G2 - tr6I4JZkBZQVUH7H2g1WeXFvwrwKSQAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAgElE + QVQ4T6WRUQ2AMAxE6wAJSEACEpCCJCQgAQlIGjm2EtIjjBtL3kcv15cSLKVkf6BAhQIVClQoOMP8JjPD + 4KyxVxP0WPJlzLFXE+BtRYBrqPdF4Od3LYKhLO+X7akbg5tgLoKlVYBFDBDJApzt3w/wR6j3JhgD2gUK + FKhQoHIAVnlxb1bdEucAAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAjklE - QVQ4T92RUQ2AMAxE6wApSJgUJCABSUhAChKQUHrbGjgYH4U/Lnlhd+G6ZRNV/UQzjNAMIzTDCGxEkoGF - szSyRB0yIp0x1h9Xo79kEzx1yBT5jtjd5Rm+3CFT9IMBuLTNQOCXONcMa+6QOTQYPgRgjSyLOmTuwpHz - sc+iDpki7IT3foI7ZIreD4ijsgOjTd7+jqoH+QAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAf0lE + QVQ4T2P4//8/AyUYQ4BUjCFAKsYQIBWjchgY7BkYGEAMGN6PRcwenwH8DAwM+VCF9xkYGPTRxOpBfHwG + ILsCZDu6GIjG64VhYgAo0N5DNcACcT1UDMQmaAAIxCMZAsIgNkgMDIgxAAZATgY7GxkQMgBkEyi+cWEa + GkAOBgCjTd7+r93eSgAAAABJRU5ErkJggg== iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAjklE - QVQ4T82M2w7AIAxC/f+fdrVqAwvNLt3DRljCqdB6759awoolrFjCihnckH3j53aCfTODC8UIZuybKTzV - 5eB44I+iotlQsNWNDQqinLFIqxsbFJIysvMd+75BwLQH0POS3LBvprBFhcVSYd/MwIRj2/OSCPtmDmJA - MRL0fYPC7we/sIQVS1ixhO/d2wE0YN1NDoBJDwAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAa0lE + QVQ4T92PQQrAMAgE/f+nLfUQdFdiYT0VmZJMyJCau9smJFRIqJBQqeLDmMUnCKMETyTvlSDOGCy/ki6h + O7F3tREsezWI59dgDmQwXs6mIF4sr+lmCuILxugt2AU696PgBiRUSKiQUHkANGDdTeFIubEAAAAASUVO + RK5CYII= iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAm0lE - QVQ4T62NUQ7DIAxDe/9LMyclyGauygZ6eh8xtXu11o5qwx1tuKMeOENcA5cJ1M8NOU4PBm6Q7y+4DzUA - MTB7vzzAfahBZ3ks4D7UAPBYeb88wH2oAZgH3F1mUt2uHvxhhzP3xv3ckIPKhcuKzKmfGxL8wPgJ96EG - i4yxgPtQgwVkLOA+1OCFGJuVPpTjhDbc0YY72vB/2/UB43bUVn8JuhoAAAAASUVORK5CYII= + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAcklE + QVQ4T72QUQrAMAhDvf+lHX50qJFqSSnhDczom52oqtwEChYoWOIgYg+b/lRdyFPhEvgDeYZMhBmQnAgt + Y5mlE+btWulE6A9Uc/jQTlht5LvqHSXMaYUnGV15mrAxK4TrM8L1Pz174QWgYIGCBQqWD+N21FbTYK/z + AAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAfUlE - QVQ4T+2UQQqAMAwEC/3/myMNTYjjomA8ehjozi5SQRxm9ilSdpCyg5QdpOwgZYcx56zYhp7Ejrx+4IJb - z3WQcsOOcOeZgyz2+Y7YVU6vfCkf4M5zDXHOEo5w47mGOGcJR7jxXIsoaw5HuAkun00bKYG6yUJt/79N - GxsH7EeiiVdcqusAAAAASUVORK5CYII= + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAdElE + QVQ4T7WTQQrAIAwEBf//5hRKI3ZWRbr1MAc345qLJSLKn0jgIoGLBC4SuEjgUmqtPfHAnKRHPheO3Ps8 + k3ZK6UlhDinO6B9vd1YCCwi914YsoDyCzrnCHOSwP89K6TSXoo0EA7jFavMDX4+BiwQuErhc7EeiiR4r + 8zwAAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACC0lE - QVQ4T2P4//8/RRirICkYznAqu8PpWn1X0bX9VZZz79ta6+lft5jP+nXRbOrXfSad77uNK55mGebfsNKK - OyuGYYBP7QMu14bnRXbtbzd5J1246Bd+YI1P+OF8r8ij6S7RpydbFN45qdnz6bli9bM7ysHHKtWs9vCg - GOBSddfetuX1o6CAfbdjQrf4wySRsXnW5YmqqdevSDvtu6dlvjwSJg4mbJpe7DTNv//dz3ldB0wCG1ZN - ubBNxm3vZx3zhWthYmDCtPrpct2Yq9+cLVdnwySwYeX08+vlvHZ/NbScvwQmBiYsim/5a/iduaFmuO0y - TAIbViq5+kbFYeNrK5s5MTAxMGEWd1lZ1f3EAXnrA1/V7bd4wCSRsW722UTl8it/TKwXXbOyXqAJE4cr - 0PQ7YiEecem1tMfBXTAxZKyTf+myWsi+z9a2C9yQxVEUySZfmS2ZcPapht1me2Rxo8xTTprFlz5o+25b - jywOwmBCvP/zR7Xkc84qIQdVpV12vteyXLkRWZFBzukjOtmnv+v7bzPW9FyfJOez+idMDmJA/fP34tmX - v8harn+iYzbvjYH1vHswBSBskHPqhV743s/aLqvfqzst/anqNP8bTA5MyAcdOaFovPq2rvn8T5rWc35o - OC38C1MAwoZJB34be2/4YeS94oeO66L3Og7zHsLk4IrIxVgFicf/GQDTEJf4sarC9QAAAABJRU5ErkJg - gg== + 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 + AkiX/5UKTqafsLwA5EY1M54AAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAAAtklE - QVQ4T2P4//8/RRjOqKrv+F/T0AnGlUCcU9b5X8/QFCiFXw5uQE1DB0jg/6/ff/9//v4HjE0t7EFCeOWQ - DOgEKvj3P6Dp63/D1LP/7775/V9TxwisCJ8c3ACQ00AmWxY9+q+fdOL/ietP/0vLKYMV4ZODGwDyF0gR - yHSQgm1HL/8XEpEAK8InBzfA3NLuv7WDx399I8v/8soa/0XEpYGyICn8cnADyMVwxmg0DotoJA//ZwAA - qy/GB3Ky9SEAAAAASUVORK5CYII= + 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 + hRcILxBeHkdnUwqevR+DAAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAiElE - QVQ4T6WR0QmAMAxEu4EjOIIjOIKjOJIjdARHcKSYSyiCvA+DBw+8x7UUbGb2C5QVUFZAWYFlZnNUBh23 - KDOz0504rI5blE9OR0Kv4S3KJypiikJblJnFUbmieXCLMrM7Kkc0D25RZnRQRRdFcIsyn62Pgf4Ib1G2 - tr6I4JZkBZQVUH7H2g1WeXFvwrwKSQAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAgElE + QVQ4T6WRUQ2AMAxE6wAJSEACEpCCJCQgAQlIGjm2EtIjjBtL3kcv15cSLKVkf6BAhQIVClQoOMP8JjPD + 4KyxVxP0WPJlzLFXE+BtRYBrqPdF4Od3LYKhLO+X7akbg5tgLoKlVYBFDBDJApzt3w/wR6j3JhgD2gUK + FKhQoHIAVnlxb1bdEucAAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAjklE - QVQ4T92RUQ2AMAxE6wApSJgUJCABSUhAChKQUHrbGjgYH4U/Lnlhd+G6ZRNV/UQzjNAMIzTDCGxEkoGF - szSyRB0yIp0x1h9Xo79kEzx1yBT5jtjd5Rm+3CFT9IMBuLTNQOCXONcMa+6QOTQYPgRgjSyLOmTuwpHz - sc+iDpki7IT3foI7ZIreD4ijsgOjTd7+jqoH+QAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAf0lE + QVQ4T2P4//8/AyUYQ4BUjCFAKsYQIBWjchgY7BkYGEAMGN6PRcwenwH8DAwM+VCF9xkYGPTRxOpBfHwG + ILsCZDu6GIjG64VhYgAo0N5DNcACcT1UDMQmaAAIxCMZAsIgNkgMDIgxAAZATgY7GxkQMgBkEyi+cWEa + GkAOBgCjTd7+r93eSgAAAABJRU5ErkJggg== iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAjklE - QVQ4T82M2w7AIAxC/f+fdrVqAwvNLt3DRljCqdB6759awoolrFjCihnckH3j53aCfTODC8UIZuybKTzV - 5eB44I+iotlQsNWNDQqinLFIqxsbFJIysvMd+75BwLQH0POS3LBvprBFhcVSYd/MwIRj2/OSCPtmDmJA - MRL0fYPC7we/sIQVS1ixhO/d2wE0YN1NDoBJDwAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAa0lE + QVQ4T92PQQrAMAgE/f+nLfUQdFdiYT0VmZJMyJCau9smJFRIqJBQqeLDmMUnCKMETyTvlSDOGCy/ki6h + O7F3tREsezWI59dgDmQwXs6mIF4sr+lmCuILxugt2AU696PgBiRUSKiQUHkANGDdTeFIubEAAAAASUVO + RK5CYII= iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAm0lE - QVQ4T62NUQ7DIAxDe/9LMyclyGauygZ6eh8xtXu11o5qwx1tuKMeOENcA5cJ1M8NOU4PBm6Q7y+4DzUA - MTB7vzzAfahBZ3ks4D7UAPBYeb88wH2oAZgH3F1mUt2uHvxhhzP3xv3ckIPKhcuKzKmfGxL8wPgJ96EG - i4yxgPtQgwVkLOA+1OCFGJuVPpTjhDbc0YY72vB/2/UB43bUVn8JuhoAAAAASUVORK5CYII= + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAAAcklE + QVQ4T72QUQrAMAhDvf+lHX50qJFqSSnhDczom52oqtwEChYoWOIgYg+b/lRdyFPhEvgDeYZMhBmQnAgt + Y5mlE+btWulE6A9Uc/jQTlht5LvqHSXMaYUnGV15mrAxK4TrM8L1Pz174QWgYIGCBQqWD+N21FbTYK/z + AAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABaElE - QVQ4T6WQz0sCQRiG/XO02vof+kH0iw4WleRm0SGig6cigtworUsgblEQgV26lUERUUZSggZJQSsqGrgn - QfC0K7govjkDWbuMaPjBM4eZ+Z7vnTEBaAvTVSgLFs7j7DWrwQgVGIvsOQR/S5KGglD0Aw6nt6mkLvBH - f6EJ9moCA7wnhhUxpRMyE5AiDT9VrVZRLpdh334FZz3H0v57XcJMQPgr0DQNqqrC5nrBWSCGzvFTLLjD - VNI0QS0ylr0SQpEvTG0E0TF2AsvoESwjh+S4cQLyXjK1UCggl8tBlmVkMhkkk0l4DgIwD/n0gkqlglKp - hGKxCEVRYBPCyOfzWNyNYH7nGXNbT+CFIHjXA9y+C72gZ5BH98AsuH4buL4ZdPVO07hkajqdRiKRQDwe - hyRJFJ2ALCwm1+9oZF54hH3zXkdLgom1W7x9puARL2mDkaYC6+oN/WnzsEgvsyD3mM3/gbnZOjB9Aytc - DAdFhtjSAAAAAElFTkSuQmCC + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABJxAAAScQHz3HqOAAABZ0lE + QVQ4T6WRz0sCQRiG/XO0sv6HfhD9ooNFJblZdIjw4KmIIDdK6xKIWxREYJduZVBElJGUoEGS0C7uooGe + FgRPrqAovjEDWruuqfTBc/lmvmfemTEAMPwHw3UoDT2cJ+kb7WY9qEBbpGdn/W1JmgpC0TjsTm9LSV3g + j/5AE+zHG2A8MTg4SSXUTUCKDNSqWq2iXC7DtvMGs+UCKwcfdYluAsJvQalUgqIosLpecR6IoXvyDEvu + MJW0TODgJKx6eYQiX5jZDKJr4hSm8WOYxo7IcvME5L7k1FwuB1mWkclkkEqlIIoiPIcBGEd8akGlUkGx + WEShUEA+n4eVDSObzWJ5L4LF3RcsbD+DYYNgXI9w+y7Vgr5hBr1D8zAPWmEemENP/yyNS05NJpNIJBIQ + BAE8z1NUAu2/1pjeuKeRGfYJtq0HFW0Jptbv8P4pwcNd0QEtLQWWtVv60sZRjm7W409BuzQ0OuUbK1wM + B4HjT5oAAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACX0lE - QVQ4T6WSa0hTYRjHD/TBvhRdqE99Koi+RFFB9SGjUAsvLYzEjMxFTKVkk6XpSC1N0eVtadqMvAw1b5Uo - KUUiJI7uGs7oIpEauZa1s3nP4tc5RwZNBgW98OPA+77/3/O8D0cA/gufmz3tOXTdzqS1KhVtTMh2X3c8 - CC21RXoJPFQVHMdpr2PSfoORwXySNUEUZeu5ZjRgyk6SCVwsYEZsZs7VxIyzHku5nqnxGpJjVbbXvSlc - OBtKinoH9p6TjHesRxt9SMotEsjhOVcDZTkn6LPmI34qYWzQwAfrKdoqVMRG+VOXto4XRQLxx0K8BU01 - BQsC8RbGtGgy9JEYEiI4Hx+OXqNCpw4lLiqAYu0GRRAZ7O8tqK80Mis2MuswMzWai+NVAraa1QoD1avo - K1/GU5OfEpYJ2L3VW2Ax5zDtqGJ6OIupN2eYfHkEsX05hdUd5JpbuXi1kRSjBV1mBbGpJqIT87wFlaWZ - TIyYmBzUMPEsFPejbXy5u0YJe9bc/E+crhmGx5xExF0iLMYgby8IKgrTEd9m4X4ShLt7M67OtYxUC0pl - eVXe6VEwN3QxMGRXwg96bRwIV8vHglCal8q3/nO4ujYh3luJo9mPoZuC0vaP+V98d0uVPzsZeG/H2v+R - 4CgdQVJ4/8HD+O/Zi1B8OQnH4zgpvIKvLUsZrV2CrUxAK71ZbtvTwXWpgxJLJ23dNuUrs2vLRoQrGYnK - D+KZsgeNNLA/Kz+0vlPCzff7aOh47iUILEw/Lf1hKtThgYTt26kcyNOW3+yp5gtFIA/CF0elacsX/obP - 8L+D8Bsb4cocWY3wtQAAAABJRU5ErkJggg== + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr2AAAK9gHCr3ADAAACYklE + QVQ4T6WSXUiTURjHX+jCboo+qKuuCqKbKCqoLjIKt8KPFovEFi0XsU1KNlnaNlJzpujSzaVpW7Qv1OZH + JYqToiE0HH3P2Iw+JJpGrmXt3dycy+If74mFrwsiOvDjwHvO//c87zmHAkD9D2kfGNwDtXDd0qDPooKs + MGf74nWWoLddr+ht1yOFpfE4wsEOxILXMTHWgDIxF/oaBa5q1TDUlDJwFguQoHuQjHQjEe6EvU2B+LQN + ZRKe/+WIEhfO5kIp2oGg+ySmneshEx5CmoAJJyMOtNaegNfTAPpDM6bG1HjnOYV+Ew8SQSY6ytfhmZ5C + 0bEctqDb1vhLQN+EtlyISkUB1MX5OF/Eh0LMg1yUC6kgC02yDURQkJ3JFnSatZijuzAXMiI+WYfQi2L4 + basJPusqeNuW4bEhg4QZsnZvZQvsxlrMhiyYDVQj/uoMYs+PgB5YDp3ViTpjHy5e6YJSa4dcY4JEZYCw + pJ4tMLdoMDNhQGxMjJknuYg+2IZPd9aQcGok578jHEkgMBVGvrQKeYXq3xLKpKsA/boa0UdcRIc3IzK0 + FhNWilRmhvm2m2B0uOAbD5LwvRE/DvBFREK11KvwZfQcIq5NoAdXItSTgfEbFGn72/wPfI0mEPgYhu9t + EJ7R98gWyMHli7D/4GFk7tkLqulSKUIPpaAHV+Bz71JMti+Bv5WCTGMibac6uOZwodk+hP5hP5kZdm3Z + COpyZQl5IKlTTiFWGViV73vekHDPXS8czqcsAUdXcRoyIQ8iPgd5+3aSBea0mX9OVfsTRLDwShZyVFpF + NvyNtOC/8hMb4cocvUYexQAAAABJRU5ErkJggg== \ No newline at end of file -- 2.49.1 From 751794c1ec3a647a1e076c67f39c98d515610ceb Mon Sep 17 00:00:00 2001 From: Paul Larsen Date: Wed, 3 Dec 2025 11:31:19 -0500 Subject: [PATCH 6/7] C2022-003-Change-Textboxes-to-RTF-3 --- .../StepTabRibbon.designer.cs | Bin 583236 -> 583106 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs b/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs index a7dc72adfbba1bbe8e7d7e701a8cb3030c1cf760..c3ec3ac3c74cc06ff337eba8cfc774d1179fee5b 100644 GIT binary patch delta 661 zcmX|9Ur3Wt6yLqO_v`NSV|{&%B{J=ETQ$&XWrT@;<`RlfD0`6@BDTr=lUW&rT1Y}h zh)r*F#Lczn#itm2!8MQ=ks%c#Jw*?>)K(87K9vwu+oImi?{^O8oZtDKSMOXe-@1~+ z3{tNVg4V}BI!?RwEsfm$6-JcH;L# z#@6<&h0#<7i&Vz!y$O*8)GE#f$w!O%gsFlbIbR0pON5BlUgEdrC^$Dr%Ea;z`Cgod z6LX{#`lg8{eod2b$v>__#GjM)YxyRhy?bHVO>Ls`Aaxe~rxJD4E*_ks`f2W5)xq}& z5wUciZpz346BFnFEJmpcQzO)!zmq;gHE}3P-zdn!OIJ(z<~9@hEG@6IoHT_^A=5=u zH`Mo|GM>C5f%hA=ipHH*aKTpsRZ0Vq@&Olm)PihlO*Pwb|jW^rphqqV71vd pu|Zch$T?pqti^2A1#%5*gFrpgVLX(Le219~K|kvet$vny@&{p_?sWhF delta 749 zcmZ8fT}V@57~XgGed}w@ahTg!Yr0Ki4O=)VBu3~4F+x;ykVuUf7G10{tQd^4A>G(T z*!0BS7{N|XT0bCzbMe*92(b|uBC*TJkxoK{Zo2S7sI!%M^!9n)=Y5~&;ayyAU;5l$ zoTLzOaysda)2$cy-+Jj0eXN6*W#pc{MIn_$2H~P944D9GgYjK8hRAEgOG~E8F{o~G zX6Z-g^aUXuvcY75XeBXbyHnpMuUhNQaI*N*w{!JDi*#)bV`+804*?&>Iw8J3CU~n< z2yTR>RBg0b@NMW=%E84xN~=2-EyPcA7Kp?+4Ao|Y*`ONrCloHkdx&SHB=WiHpoMg* zI#mvs37{6x=TL_dd{IVc_Od`Shx`pvEh~hd(c_JXu$`0RDMLe#hG-KlQ&{1Iy;omx-yZ8ppP3YVQLWdP^ep z()19%fwe4s9WNdwT`I4t8-_cG9Ts9T_3J)P!%7_UQ09=CosZ+`rUOF>tb=l%n+8V$ z>sfjNUujYDVg?&nYZgaamFVDmY-FW(cnjjXFDq>l<4wU;u?pirXP+66M{ri` zu>D*^r$Pf778*Dru7KZ0`{nQCVfO^>Y5WtLx6$wI^%i+}8l+*c=8!cLpc)0_@1mGR I19Wu$52DHd4FCWD -- 2.49.1 From d4ecf2814791b9f8f3f62ba6712d86279484b7bf Mon Sep 17 00:00:00 2001 From: Paul Larsen Date: Mon, 22 Dec 2025 17:16:00 -0500 Subject: [PATCH 7/7] C2022-003-Change-Textboxes-to-RTF-3 --- .../Exe/RefObj/ROEditor/FieldCombFrm.cs | 4 +- .../Exe/RefObj/ROEditor/ROEditor.cs | 225 ++++++------------ .../Exe/RefObj/ROEditor/ROEditor.csproj | 4 - .../LibSource/RODBInterface/RODBInterface.cs | 6 +- .../LibSource/ctlXMLEditLib/ZoomDialog.cs | 6 +- .../LibSource/ctlXMLEditLib/ctlXMLEdit.cs | 100 +++++--- .../Config/ROFSTLookup.cs | 4 +- PROMS/Volian.Controls.Library/DisplayRO.cs | 2 +- PROMS/Volian.Controls.Library/StepRTB.cs | 2 +- 9 files changed, 151 insertions(+), 202 deletions(-) diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/FieldCombFrm.cs b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/FieldCombFrm.cs index fc26330c..46c6652d 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/FieldCombFrm.cs +++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/FieldCombFrm.cs @@ -96,7 +96,7 @@ namespace ROEditor private System.Windows.Forms.Label lblW2; private System.Windows.Forms.Label lblW3; private System.Windows.Forms.Label lblW4; - private System.Windows.Forms.RichTextBox tbSingleTxtWid; // RO Editor add symbols C2025 - 003 + private System.Windows.Forms.RichTextBox tbSingleTxtWid; // RO Editor add symbols C2022 - 003 private System.Windows.Forms.RichTextBox tbVariableTxtWid; private System.Windows.Forms.RichTextBox tbTableWid; private System.Windows.Forms.RichTextBox tbXYPlotWid; @@ -218,7 +218,7 @@ namespace ROEditor this.lblFieldName = new System.Windows.Forms.Label(); this.tbFieldName = new System.Windows.Forms.TextBox(); this.gbAlternatives = new System.Windows.Forms.GroupBox(); - this.tbXYPlotWid = new System.Windows.Forms.RichTextBox(); // RO Editor add symbols C2025 - 003 + this.tbXYPlotWid = new System.Windows.Forms.RichTextBox(); // RO Editor add symbols C2022 - 003 this.tbTableWid = new System.Windows.Forms.RichTextBox(); this.tbVariableTxtWid = new System.Windows.Forms.RichTextBox(); this.tbSingleTxtWid = new System.Windows.Forms.RichTextBox(); diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs index 7bce4f88..a36bbc63 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs +++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.cs @@ -302,7 +302,8 @@ using Org.Mentalis.Files; using System.Runtime.InteropServices; using System.Linq; using System.Collections.Generic; -using Volian.Controls.Library; +//using Volian.Controls.Library; +using Volian.Base.Library; using VEPROMS.CSLA.Library; using System.Xml; using System.Drawing.Text; @@ -310,11 +311,9 @@ using System.Drawing.Drawing2D; using System.Text.RegularExpressions; //using IniFileIO; - - namespace ROEditor { - /// + /// /// Summary description for Form1. /// /// @@ -361,7 +360,7 @@ namespace ROEditor private TreeNode LastSelectedNode; private RichTextBox _CurrentTextBox; // currently selected TextBox field public static string[] PCChildren; //C2021-026 list of Parent/Child Children - private StepTabRibbon _MyStepTabRibbon; + //private StepTabRibbon _MyStepTabRibbon; public RichTextBox CurrentTextBox { @@ -369,6 +368,19 @@ namespace ROEditor set { _CurrentTextBox = value; } } + public static string _RO_IDEN; + public static string RO_IDEN + { + get + { + return _RO_IDEN; + } + set + { + _RO_IDEN = value; + } + } + public List ROsSelectedforMultiMove { get; set; } //to allow multiple RO nodes to be selected public bool ROCutWasSelected { get; set; } = false; @@ -380,7 +392,6 @@ namespace ROEditor private System.Windows.Forms.ListView roListView; private System.Windows.Forms.ToolBar tbar; - //this.ribbonControl1 = new DevComponents.DotNetBar.RibbonControl(); private bool _duplicate_active; private bool duplicate_active { @@ -409,10 +420,10 @@ namespace ROEditor // Required for Windows Form Designer support // InitializeComponent(); - getSymbols(); - // B2019-082 set the date format on the VEPROMS.exe thread to U.S. for i/o of a date string - // this is to correct an issue for a UAE customer who could not open some procedures due to the desktop date setting using the "DD/MM/YYYY" instead of the "MM/DD/YYYY" format - // NOTE: not doing the "Using System.Threading;" statement at beginning of file because it conflicts with the declaration of the "Timer" variable + getSymbols(); // RO Editor add symbols C2022 - 003 + // B2019-082 set the date format on the VEPROMS.exe thread to U.S. for i/o of a date string + // this is to correct an issue for a UAE customer who could not open some procedures due to the desktop date setting using the "DD/MM/YYYY" instead of the "MM/DD/YYYY" format + // NOTE: not doing the "Using System.Threading;" statement at beginning of file because it conflicts with the declaration of the "Timer" variable System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); // The data path the was passed in. @@ -875,7 +886,7 @@ namespace ROEditor // Should the save option be available? // Just reflect the Save button state. - roTreeView.ContextMenu.MenuItems[6].Enabled = rbtnSave.Enabled; // RO Editor add symbols C2025 - 003 + roTreeView.ContextMenu.MenuItems[6].Enabled = rbtnSave.Enabled; // RO Editor add symbols C2022 - 003 menuROSave.Enabled = rbtnSave.Enabled; // Should the properties menu item be available? @@ -954,7 +965,7 @@ namespace ROEditor this.panel2.Controls.Remove(ctlXMLEdit2); this.panel2.Visible = false; - rbtnSave.Enabled = false; // RO Editor add symbols C2025 - 003 + rbtnSave.Enabled = false; // RO Editor add symbols C2022 - 003 menuROSave.Enabled = rbtnSave.Enabled; rbtnRestore.Enabled = false; rbtnSaveAs.Enabled = false; @@ -993,6 +1004,7 @@ namespace ROEditor this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; ctlXMLEdit2.TabIndex = 4; ctlXMLEdit2.Tag = ""; + /* * Spin through all of the controls and assign an event handler * for changed text so that when the user changes any of the RO Text, @@ -1015,11 +1027,13 @@ namespace ROEditor else { TmpInfo.TextChanged += new EventHandler(ctlXMLEdit2_TextChanged); - TmpInfo.Click += new EventHandler(ctlXMLEdit2_ClickControl); + TmpInfo.Click += new EventHandler(ctlXMLEdit2_ClickControl); } } + ctlXMLEdit2.EnableDisableSymbolsBtn += new ctlXMLEditLib.ctlXMLEdit.ctlXMLEditEvent(EnableDisableSymbolsBtn); + RO_IDEN = curelem.GetAccPageIDTemplate(); this.panel2.Controls.Add(ctlXMLEdit2); - rbtnCancel.Enabled = true; // RO Editor add symbols C2025 - 003 + rbtnCancel.Enabled = true; // RO Editor add symbols C2022 - 003 rbtnSymbols.Enabled = true; } // C2021-026 Get a list of fields that are P/C enabled @@ -1154,6 +1168,7 @@ namespace ROEditor this.menuEditCopy.Enabled = true; this.menuEditCut.Enabled = true; } + object dataobj = System.Windows.Forms.Clipboard.GetDataObject(); if (dataobj != null) this.menuEditPaste.Enabled = true; @@ -1172,6 +1187,32 @@ namespace ROEditor menuROSave.Enabled = rbtnSave.Enabled; } + public void RTBSymbolsOnOff(string nm) + { + string RO_IDENDITY = RO_IDEN.Substring(1, RO_IDEN.Length - 2); + if (this.CurrentTextBox.Name == RO_IDENDITY) + { + rbtnSymbols.Enabled = false; + } + else + { + rbtnSymbols.Enabled = true; + } + } + + public void EnableDisableSymbolsBtn(object sender, ctlXMLEditEventArgs args) + { + if (args.DisplaySymBolBtn == false) + { + rbtnSymbols.Enabled = false; + } + else + { + rbtnSymbols.Enabled = true; + } + } + + //EnableDisableSymbolsBtn(sender, new ctlXMLEditEventArgs(args.idName)); protected void ctlXMLEdit2_TextChanged(object sender, EventArgs e) { @@ -1293,8 +1334,8 @@ namespace ROEditor this.imageListRoTree = new System.Windows.Forms.ImageList(this.components); this.splitter1 = new System.Windows.Forms.Splitter(); this.ribbonControl1 = new DevComponents.DotNetBar.RibbonControl(); - this.ribbonPanel1 = new DevComponents.DotNetBar.RibbonPanel(); // RO Editor add symbols C2025 - 003 - this.ribbonBar1 = new DevComponents.DotNetBar.RibbonBar(); // RO Editor add symbols C2025 - 003 + this.ribbonPanel1 = new DevComponents.DotNetBar.RibbonPanel(); // RO Editor add symbols C2022 - 003 + this.ribbonBar1 = new DevComponents.DotNetBar.RibbonBar(); // RO Editor add symbols C2022 - 003 this.rbtnSave = new DevComponents.DotNetBar.ButtonItem(); this.rbtnCancel = new DevComponents.DotNetBar.ButtonItem(); this.rbtnRestore = new DevComponents.DotNetBar.ButtonItem(); @@ -1367,7 +1408,7 @@ namespace ROEditor // // // - this.ribbonControl1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; // RO Editor add symbols C2025 - 003 + this.ribbonControl1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; // RO Editor add symbols C2022 - 003 this.ribbonControl1.CaptionVisible = true; this.ribbonControl1.Controls.Add(this.ribbonPanel1); this.ribbonControl1.Dock = System.Windows.Forms.DockStyle.Top; @@ -1407,7 +1448,7 @@ namespace ROEditor // // ribbonPanel1 // - this.ribbonPanel1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; // RO Editor add symbols C2025 - 003 + this.ribbonPanel1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; // RO Editor add symbols C2022 - 003 this.ribbonPanel1.Controls.Add(this.ribbonBar1); this.ribbonPanel1.Dock = System.Windows.Forms.DockStyle.Fill; this.ribbonPanel1.Location = new System.Drawing.Point(0, 0); @@ -1927,104 +1968,7 @@ namespace ROEditor } - //private void BuildSymbolGallery(SymbolList sl, DevComponents.DotNetBar.GalleryContainer gc1, DevComponents.DotNetBar.GalleryContainer gc2, DevComponents.DotNetBar.GalleryContainer gc3, DevComponents.DotNetBar.GalleryContainer gc4) - //{ - // foreach (Symbol sym in sl) - // { - // // get an image of the symbol character - // // found the we cannot change the font being used for the button text - // Bitmap symCharBtmp = createTextBitmap( - // (char)sym.Unicode); - // DevComponents.DotNetBar.ButtonItem btn = new DevComponents.DotNetBar.ButtonItem(); - // btn.Image = symCharBtmp; - // //btn.Text = string.Format("{0}", (char)sym.Unicode); - // // to name button use unicode rather than desc, desc may have spaces or odd chars - // btn.Name = "btn" + sym.Unicode.ToString(); - // btn.Tooltip = sym.Desc; - // btn.Tag = string.Format(@"{0}", sym.Unicode); - // //btn.FontBold = true; - // btn.Click += new System.EventHandler(btnSym_Click); - // galleryContainerSymbols.SubItems.Add(btn); - // DevComponents.DotNetBar.ButtonItem btnCM1 = GetCMButton(sym); - // btnCM1.Image = symCharBtmp; - // btnCM1.Click += new System.EventHandler(btnSym_Click); - // gc1.SubItems.Add(btnCM1); - // DevComponents.DotNetBar.ButtonItem btnCM2 = GetCMButton(sym); - // btnCM2.Image = symCharBtmp; - // btnCM2.Click += new System.EventHandler(btnSym_Click); - // gc2.SubItems.Add(btnCM2); - // DevComponents.DotNetBar.ButtonItem btnCM3 = GetCMButton(sym); - // btnCM3.Image = symCharBtmp; - // btnCM3.Click += new System.EventHandler(btnSym_Click); - // gc3.SubItems.Add(btnCM3); - // DevComponents.DotNetBar.ButtonItem btnCM4 = GetCMButton(sym); - // btnCM4.Image = symCharBtmp; - // btnCM4.Click += new System.EventHandler(btnSym_Click); - // gc4.SubItems.Add(btnCM4); - // } - //} - - //private void btnSym_Click(object sender, EventArgs e) - //{ - // DevComponents.DotNetBar.ButtonItem b = (DevComponents.DotNetBar.ButtonItem)sender; - // StartGridEditing(SelectionOption.Start); // If in a FlexGrid, start the editor for a cell - // _MyStepTabRibbon.MyStepRTB.InsertSymbol(Convert.ToInt32(b.Tag)); - // //_MyStepTabRibbon. - //} - //private enum SelectionOption - //{ - // Start, - // All, - // End - //} - - //private void StartGridEditing(SelectionOption selOpt) - //{ - // // Bug fix: B2012-203, B2012-204 - // // Need to check if the selected table cell is in edit mode already. - // // if already in edit mode, we don't want to do the StartEditing code below, because it - // // will override the current cursor positioning and selection range. - // Control ctrl = FindActiveControl(); - // if (ctrl == null) return; // B2018-008 If a null is returned, don't do anything - // if (ctrl is VlnFlexGrid) - // { - // // Selected table cell is not in edit mode. Go into edit mode and position acording - // // to the pass in selOpt. - // if (MyFlexGrid != null && MyFlexGrid.Editor == null) - // { - // MyFlexGrid.StartEditing(); - // switch (selOpt) - // { - // case SelectionOption.Start: - // MyStepRTB.Select(0, 0); - // break; - // case SelectionOption.All: - // MyStepRTB.SelectAll(); - // break; - // case SelectionOption.End: - // MyStepRTB.Select(MyStepRTB.TextLength, 0); - // break; - // default: - // MyStepRTB.Select(0, 0); - // break; - // } - // } - // } - //} - - //private static DevComponents.DotNetBar.ButtonItem GetCMButton(Symbol sym) - //{ - // DevComponents.DotNetBar.ButtonItem btnCM3 = new DevComponents.DotNetBar.ButtonItem(); - // //btnCM3.Text = string.Format("{0}", (char)sym.Unicode); - // // to name button use unicode rather than desc, desc may have spaces or odd chars - // btnCM3.Name = "btnCM" + sym.Unicode.ToString(); - // btnCM3.Tooltip = sym.Desc; - // btnCM3.Tag = string.Format(@"{0}", sym.Unicode); - // //btnCM3.FontBold = true; - // return btnCM3; - //} - //_MyStepTabRibbon.BuildSymbolGalleryForRO(); //part of CSM-C2024-027 / Part of 2024 PROMS Upgrades //Paste Selected - will move individual ROs @@ -2067,7 +2011,7 @@ namespace ROEditor roTreeView_ClearAllMultiSelect(); - rbtnRestore.Enabled = false; // RO Editor add symbols C2025 - 003 + rbtnRestore.Enabled = false; // RO Editor add symbols C2022 - 003 rbtnSave.Enabled = false; rbtnCancel.Enabled = true; rbtnSaveAs.Enabled = false; @@ -2925,29 +2869,6 @@ namespace ROEditor } - /* - // Tool Bar Support - */ - - private void tbar_OnClick(object obj, ToolBarButtonClickEventArgs tbbcea) - { - ToolBarButton tbb = tbbcea.Button; - - // see which event should be called. - if (tbb.Text == "Cancel") - tbar_CancelClick(); - else if (tbb.Text == "Save") - tbar_SaveClick(); - else if (tbb.Text == "Save As") - tbar_SaveAsClick(); - else if (tbb.Text == "Duplicate") - tbar_DuplicateClick(); - else if (tbb.Text == "Restore") - tbar_RestoreClick(); - else if (tbb.Text == "Zoom" || tbb.Text == "View Image") - ctlXMLEdit2.btnZoom_click(null, null); - } - private void tbar_RestoreClick() { ctlXMLEdit2.RestoreData(); @@ -3010,7 +2931,7 @@ namespace ROEditor MessageBox.Show("The fields used for the \"Accessory Pages Access\" values must be unique. The fields used in these values can be found under \"Properties\" of an RO Group. Cannot save.", "Problem saving data"); return false; } - myro.SetAttribute("AccPageID", myro.GetAccPageIDString(acctmpl)); + myro.SetAttribute("AccPageID", myro.GetAccPageIDString(acctmpl)); } } else @@ -3038,6 +2959,7 @@ namespace ROEditor newt = new TreeNode(mnutitle, img, img); newt.Tag = myro; newt.Name = myro.GetAttribute("RecID"); + newt.Text = Regex.Replace(newt.Text, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // RO Editor add symbols C2022 - 003 TreeNewparent.Nodes.Add(newt); } } @@ -3294,16 +3216,16 @@ namespace ROEditor nd = curele.SelectSingleNode(nm); if (nd == null) nd = curele.SelectSingleNode("*/" + nm); if (nd == null) - nd = curele.GetCurrentOfMultiFields(curele, nm); - // if (nd==null)nd = curele.SelectSingleNode(nm+"a"); - // if (nd==null)nd = curele.SelectSingleNode(nm+"b"); - // if (nd==null)nd = curele.SelectSingleNode(nm+"c"); - // if (nd==null)nd = curele.SelectSingleNode(nm+"d"); + nd = curele.GetCurrentOfMultiFields(curele, nm); // RO Editor add symbols C2022 - 003 + string data; if (nd == null) data = " "; else + { data = nd.InnerText; + data = Regex.Replace(data, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // RO Editor add symbols C2022 - 003 + } if (first == true) { item = new ListViewItem(data, ROIMAGE); @@ -3380,12 +3302,7 @@ namespace ROEditor roListView.Sort(); } - //private void roTreeView_AfterSelect_1(object sender, System.Windows.Forms.TreeViewEventArgs e) - //{ - - //} - - public void getSymbols() // RO Editor add symbols C2025 - 003 + public void getSymbols() // RO Editor add symbols C2022 - 003 { Dictionary ROSymbols = buildsymbols(); @@ -3410,7 +3327,7 @@ namespace ROEditor } } - private Dictionary buildsymbols() // RO Editor add symbols C2025 - 003 + private Dictionary buildsymbols() // RO Editor add symbols C2022 - 003 { Dictionary symbols1 = new Dictionary() { @@ -3613,7 +3530,7 @@ namespace ROEditor } - private void rbtnSave_Click(object sender, EventArgs e) // RO Editor add symbols C2025 - 003 + private void rbtnSave_Click(object sender, EventArgs e) // RO Editor add symbols C2022 - 003 { tbar_SaveClick(); } @@ -3644,7 +3561,7 @@ namespace ROEditor ctlXMLEdit2.btnZoom_click(null, null); } - private void rbtnSymbols_Click(object sender, EventArgs e) // RO Editor add symbols C2025 - 003 + private void rbtnSymbols_Click(object sender, EventArgs e) // RO Editor add symbols C2022 - 003 { DevComponents.DotNetBar.ButtonItem b = (DevComponents.DotNetBar.ButtonItem)sender; ctlXMLEdit2.TextBoxFocus.InsertSymbol(Convert.ToInt32(b.Tag)); diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.csproj b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.csproj index 90f6c5fb..d9ebd4f1 100644 --- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.csproj +++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/ROEditor.csproj @@ -136,10 +136,6 @@ False ..\..\..\..\Volian.Base.Library\bin\Debug\Volian.Base.Library.dll - - False - ..\..\..\..\Volian.Controls.Library\bin\Debug\Volian.Controls.Library.dll - diff --git a/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.cs b/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.cs index ca6d9f1b..c711edd8 100644 --- a/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.cs +++ b/PROMS/ReferencedObjects/LibSource/RODBInterface/RODBInterface.cs @@ -1910,7 +1910,7 @@ namespace RODBInterface string Info = DBE.GetString(3); //B2022-043 &pos; was missing the ; Info = Info.Replace("'", "\'"); // B2021-071: crash when getting/saving field names - Info = Regex.Replace(Info, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // RO Editor add symbols C2025 - 003 + Info = Regex.Replace(Info, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // RO Editor add symbols C2022 - 003 node.SetAttribute("HasChild", "True"); @@ -1975,7 +1975,7 @@ namespace RODBInterface elem.SetAttribute("RecID", RecID); elem.SetAttribute("ParentID", node.GetAttribute("RecID")); elem.SetAttribute("Table", node.GetAttribute("Table")); - AccPageID = Regex.Replace(AccPageID, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // RO Editor add symbols C2025 - 003 + AccPageID = Regex.Replace(AccPageID, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // RO Editor add symbols C2022 - 003 elem.SetAttribute("AccPageID", AccPageID); } } @@ -2186,7 +2186,7 @@ namespace RODBInterface parent.SetAttribute("ChildLoaded", "True"); } string xmlstr = GenerateXmlString(ro, false); - string tmp2 = Regex.Replace(xmlstr, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // RO Editor add symbols C2025 - 003 + string tmp2 = Regex.Replace(xmlstr, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // RO Editor add symbols C2022 - 003 string wraccid = null; if (ro.HasAttribute("AccPageID")) { diff --git a/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ZoomDialog.cs b/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ZoomDialog.cs index 406ae82e..4939f420 100644 --- a/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ZoomDialog.cs +++ b/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ZoomDialog.cs @@ -39,7 +39,7 @@ namespace ctlXMLEditLib { private System.Windows.Forms.Button btnSave; private System.Windows.Forms.Button btnCancel; - private System.Windows.Forms.RichTextBox tbZoom; // RO Editor add symbols C2025 - 003 + private System.Windows.Forms.RichTextBox tbZoom; // RO Editor add symbols C2022 - 003 /// /// Required designer variable. /// @@ -88,7 +88,7 @@ namespace ctlXMLEditLib /// private void InitializeComponent() { - this.tbZoom = new System.Windows.Forms.RichTextBox(); // RO Editor add symbols C2025 - 003 + this.tbZoom = new System.Windows.Forms.RichTextBox(); // RO Editor add symbols C2022 - 003 this.btnSave = new System.Windows.Forms.Button(); this.btnCancel = new System.Windows.Forms.Button(); this.SuspendLayout(); @@ -99,7 +99,7 @@ namespace ctlXMLEditLib this.tbZoom.Location = new System.Drawing.Point(24, 16); this.tbZoom.Multiline = true; this.tbZoom.Name = "tbZoom"; - this.tbZoom.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical; // RO Editor add symbols C2025 - 003 + this.tbZoom.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical; // RO Editor add symbols C2022 - 003 this.tbZoom.Size = new System.Drawing.Size(576, 392); this.tbZoom.TabIndex = 0; // diff --git a/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEdit.cs b/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEdit.cs index 958b834f..1debf385 100644 --- a/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEdit.cs +++ b/PROMS/ReferencedObjects/LibSource/ctlXMLEditLib/ctlXMLEdit.cs @@ -204,7 +204,7 @@ using System.Windows; using System.Text.RegularExpressions; using Volian.Base.Library; using System.Linq; -//using IniFileIO; + @@ -225,6 +225,7 @@ namespace ctlXMLEditLib /// /// /// + public class ctlXMLEdit : System.Windows.Forms.UserControl { /// @@ -269,6 +270,19 @@ namespace ctlXMLEditLib private GroupBox pcGrpBox = null; /** end C2021-026 **/ + public string _RO_IDEN; + public string RO_IDEN + { + get + { + return _RO_IDEN; + } + set + { + _RO_IDEN = value; + } + } + // use this struct to define attributes for the text box fields, storing // the pattern, radio button association, required field flag, etc. struct TextBoxAttrTag @@ -315,7 +329,7 @@ namespace ctlXMLEditLib public string GetParentHTId { get { return parenthtid; } } public void SetParentHTId(string id) { this.parenthtid = id; } } - private RichTextBox _TextBoxFocus; // RO Editor add symbols C2025 - 003 + private RichTextBox _TextBoxFocus; // RO Editor add symbols C2022 - 003 public RichTextBox TextBoxFocus { get { return _TextBoxFocus; } @@ -329,6 +343,7 @@ namespace ctlXMLEditLib public ctlXMLEdit(VlnXmlElement myelem, XmlSchema myschema, ArrayList reqfields, ArrayList fldsWithApplic, string [] pckids) { // This call is required by the Windows.Forms Form Designer. + InitializeComponent(); FieldsWithApplic = fldsWithApplic; PCChildren = pckids; //C2021-026 list of Parent/Child children @@ -373,11 +388,12 @@ namespace ctlXMLEditLib // Set required fields based on list. (can add message later). SetRequiredFields(reqfields); dosaveflag=true; + RO_IDEN = myelem.GetAccPageIDTemplate(); } // set the required fields tag on those fields which are included in the passed // in required fields list. - private void DoSet(RichTextBox hwnd, string msg) // RO Editor add symbols C2025 - 003 + private void DoSet(RichTextBox hwnd, string msg) // RO Editor add symbols C2022 - 003 { if (hwnd == null) return; if (hwnd.Tag != null) @@ -680,6 +696,7 @@ namespace ctlXMLEditLib // true if success, false if fail. // Note that the Parent and Child XML node variables below are not coding for Parent/Child Applicabily Fields public bool SaveData() + { if (mysavexml) { @@ -688,7 +705,7 @@ namespace ctlXMLEditLib string imgdate; //go thru the hash table to get textboxes. Find the ones that have text. - foreach (string str in myHT.Keys) // RO Editor add symbols C2025 - 003 + foreach (string str in myHT.Keys) // RO Editor add symbols C2022 - 003 { object o = myHT[str]; hwnd = (RichTextBox) o; @@ -704,7 +721,7 @@ namespace ctlXMLEditLib //Str = @"\u" + ((int)chr); //.ToString("X4"); Str = $"\\u{(int)chr}?"; - + result1 = result1 + Str; } else @@ -714,22 +731,6 @@ namespace ctlXMLEditLib } - var pattern = @"\\u([0-9]{1,4})\?"; // RO Editor add symbols C2025 - 003 - - var results = Regex.Matches(hwnd.Text, pattern); - - string num1; - - int num2; - - foreach (Match result in results) - { - num1 = (result.Groups[1].Value); - string resultString = Regex.Match(num1, @"\d+").Value; - string resultString1 = string.Format("{0:x}", resultString); - num2 = int.Parse(resultString, System.Globalization.NumberStyles.HexNumber); - } - hwnd.Text = result1; @@ -849,7 +850,7 @@ namespace ctlXMLEditLib return (false); } - // RO Editor add symbols C2025 - 003 + // RO Editor add symbols C2022 - 003 private static Regex sreg1 = new Regex(@"\\par\r\n(?!\\)"); private static Regex sreg2 = new Regex(@"[\r\n]", RegexOptions.Singleline); // Strip Carriage Returns and Newlines private static Regex sreg3 = new Regex(@"^\{(.*)\}$", RegexOptions.Singleline); // Strip Opening and Closing Braces @@ -905,7 +906,7 @@ namespace ctlXMLEditLib return retval; } - // RO Editor add symbols C2025 - 003 + // RO Editor add symbols C2022 - 003 public static string RTFConvertedSymbolsToUnicode(string str) { string rtnStr = str; @@ -1385,7 +1386,16 @@ namespace ctlXMLEditLib { } - + + + public delegate void ctlXMLEditEvent(object sender, ctlXMLEditEventArgs args); // RO Editor add symbols C2022 - 003 for turning off symbols btn for RO ID field. + public event ctlXMLEditEvent EnableDisableSymbolsBtn; + private void OnEnableDisableSymbolsBtn(ctlXMLEditEventArgs args) + { + if (EnableDisableSymbolsBtn != null) + EnableDisableSymbolsBtn(this, args); + } + // when data in a text box has changed, flag it (except for when this // happens during loading of original data). This flag will be used // later to know whether to save data. @@ -1619,7 +1629,20 @@ namespace ctlXMLEditLib else zoomtextbox = null; - TextBoxFocus = textbox; + TextBoxFocus = textbox; + + string RO_IDENDITY = RO_IDEN.Substring(1, RO_IDEN.Length - 2); // RO Editor add symbols C2022 - 003 for turning off symbols btn for RO ID. + if (textbox.Name == RO_IDENDITY) + { + //ROEditor.rbtnSymbols.Enabled = false; + OnEnableDisableSymbolsBtn(new ctlXMLEditEventArgs(DisplaySymBolBtn:false)); + } + else + { + //ROEditor.rbtnSymbols.Enabled = true; + OnEnableDisableSymbolsBtn(new ctlXMLEditEventArgs(DisplaySymBolBtn:true)); + } + } private void textbox_Validating(object sender, System.ComponentModel.CancelEventArgs e) @@ -1653,10 +1676,7 @@ namespace ctlXMLEditLib btnZoom_click(null, null); } } - public void btnSymbols_click(object sender, System.EventArgs e) - { - } public void btnZoom_click(object sender, System.EventArgs e) { //TextBox tb = (TextBox) sender; @@ -2084,7 +2104,7 @@ namespace ctlXMLEditLib * and overload a couple of it's functions in order to use it. * - called in CalculatePromsDate() above. */ - public class ThisTimeZone : TimeZone + public class ThisTimeZone : TimeZone { private TimeZone curTZ; public TimeSpan SpanTZ; @@ -2125,7 +2145,22 @@ namespace ctlXMLEditLib return curTZ.GetDaylightChanges(year); } } - public static class RichTextBoxExtensions // RO Editor add symbols C2025 - 003 + public class ctlXMLEditEventArgs : EventArgs // RO Editor add symbols C2022 - 003 for turning off symbols btn for RO ID. + { + public ctlXMLEditEventArgs() {; } + public ctlXMLEditEventArgs(bool DisplaySymBolBtn) + { + _DisplaySymBolBtn = DisplaySymBolBtn; + } + private bool _DisplaySymBolBtn; + + public bool DisplaySymBolBtn + { + get { return _DisplaySymBolBtn; } + set { _DisplaySymBolBtn = value; } + } + } + public static class RichTextBoxExtensions // RO Editor add symbols C2022 - 003 { public static void InsertSymbol(this RichTextBox richTextBox, int symbcode) { @@ -2134,8 +2169,9 @@ namespace ctlXMLEditLib string RtfPrefixForSymbols = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset2 FreeMono; } {\f1\fnil\fcharset0 FreeMono; } } {\colortbl;\red255\green0\blue0;\red0\green0\blue255; } \viewkind4\uc1\pard\fs24 \f1\fs24 "; richTextBox.SelectedRtf = RtfPrefixForSymbols + sym + @"}"; richTextBox.SelectedRtf = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033\uc1 }"; - richTextBox.Select(position, 1); - richTextBox.Select(position + 1, 0); + richTextBox.Select(position, 0); + //richTextBox.Select(position, 1); //left here for reference + //richTextBox.Select(position + 1, 0); //TextPointer caretPos = rtb.CaretPosition; //if (symbcode < 256) diff --git a/PROMS/VEPROMS.CSLA.Library/Config/ROFSTLookup.cs b/PROMS/VEPROMS.CSLA.Library/Config/ROFSTLookup.cs index e99e3426..d4d09fdc 100644 --- a/PROMS/VEPROMS.CSLA.Library/Config/ROFSTLookup.cs +++ b/PROMS/VEPROMS.CSLA.Library/Config/ROFSTLookup.cs @@ -2154,12 +2154,12 @@ namespace VEPROMS.CSLA.Library if (string.IsNullOrEmpty(s2)) return s2; - var pattern = @"\\u([0-9]{1,4})\?"; // RO Editor add symbols C2025 - 003 + var pattern = @"\\u([0-9]{1,4})\?"; // RO Editor add symbols C2022 - 003 if (Regex.IsMatch(s2, pattern)) s2 = s2.Replace(@"\u160?", ""); // convert hard spaces bug fix: B2016-206 - if (!Regex.IsMatch(s2, pattern)) // RO Editor add symbols C2025 - 003 + if (!Regex.IsMatch(s2, pattern)) // RO Editor add symbols C2022 - 003 { s2 = s2.Replace(@"\", @"\u9586?"); // convert backslashes to a backslash symbol } diff --git a/PROMS/Volian.Controls.Library/DisplayRO.cs b/PROMS/Volian.Controls.Library/DisplayRO.cs index 4b025082..b61cdc8e 100644 --- a/PROMS/Volian.Controls.Library/DisplayRO.cs +++ b/PROMS/Volian.Controls.Library/DisplayRO.cs @@ -774,7 +774,7 @@ namespace Volian.Controls.Library tmp = new TreeNode(roc.title); tmp.Tag = roc; - if (tmp.Text.IndexOf("\\u") > -1) // RO Editor add symbols C2025 - 003 + if (tmp.Text.IndexOf("\\u") > -1) // RO Editor add symbols C2022 - 003 { tmp.Text = Regex.Replace(tmp.Text, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); } diff --git a/PROMS/Volian.Controls.Library/StepRTB.cs b/PROMS/Volian.Controls.Library/StepRTB.cs index 25246c0b..0556dbba 100644 --- a/PROMS/Volian.Controls.Library/StepRTB.cs +++ b/PROMS/Volian.Controls.Library/StepRTB.cs @@ -1401,7 +1401,7 @@ namespace Volian.Controls.Library int position = SelectionStart; SelectionLength = 0; - var pattern = @"\\u([0-9]{1,4})\?"; // RO Editor add symbols C2025 - 003 + var pattern = @"\\u([0-9]{1,4})\?"; // RO Editor add symbols C2022 - 003 foreach (Match match in Regex.Matches(linkValue, pattern, RegexOptions.IgnoreCase)) { linkValue = linkValue.Replace(match.Value, "\\f1 " + match.Value + " \\f0"); -- 2.49.1