diff --git a/PolicyPlus/DetailCategory.Designer.vb b/PolicyPlus/DetailCategory.Designer.vb new file mode 100644 index 0000000..541244e --- /dev/null +++ b/PolicyPlus/DetailCategory.Designer.vb @@ -0,0 +1,210 @@ + _ +Partial Class DetailCategory + Inherits System.Windows.Forms.Form + + 'Form overrides dispose to clean up the component list. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + _ + Private Sub InitializeComponent() + Dim NameLabel As System.Windows.Forms.Label + Dim IdLabel As System.Windows.Forms.Label + Dim DefinedLabel As System.Windows.Forms.Label + Dim DisplayCode As System.Windows.Forms.Label + Dim InfoCodeLabel As System.Windows.Forms.Label + Dim ParentLabel As System.Windows.Forms.Label + Me.NameTextbox = New System.Windows.Forms.TextBox() + Me.IdTextbox = New System.Windows.Forms.TextBox() + Me.DefinedTextbox = New System.Windows.Forms.TextBox() + Me.DisplayCodeTextbox = New System.Windows.Forms.TextBox() + Me.InfoCodeTextbox = New System.Windows.Forms.TextBox() + Me.ParentTextbox = New System.Windows.Forms.TextBox() + Me.ParentButton = New System.Windows.Forms.Button() + Me.CloseButton = New System.Windows.Forms.Button() + NameLabel = New System.Windows.Forms.Label() + IdLabel = New System.Windows.Forms.Label() + DefinedLabel = New System.Windows.Forms.Label() + DisplayCode = New System.Windows.Forms.Label() + InfoCodeLabel = New System.Windows.Forms.Label() + ParentLabel = New System.Windows.Forms.Label() + Me.SuspendLayout() + ' + 'NameLabel + ' + NameLabel.AutoSize = True + NameLabel.Location = New System.Drawing.Point(12, 15) + NameLabel.Name = "NameLabel" + NameLabel.Size = New System.Drawing.Size(35, 13) + NameLabel.TabIndex = 7 + NameLabel.Text = "Name" + ' + 'IdLabel + ' + IdLabel.AutoSize = True + IdLabel.Location = New System.Drawing.Point(12, 41) + IdLabel.Name = "IdLabel" + IdLabel.Size = New System.Drawing.Size(55, 13) + IdLabel.TabIndex = 8 + IdLabel.Text = "Unique ID" + ' + 'DefinedLabel + ' + DefinedLabel.AutoSize = True + DefinedLabel.Location = New System.Drawing.Point(12, 67) + DefinedLabel.Name = "DefinedLabel" + DefinedLabel.Size = New System.Drawing.Size(55, 13) + DefinedLabel.TabIndex = 9 + DefinedLabel.Text = "Defined in" + ' + 'DisplayCode + ' + DisplayCode.AutoSize = True + DisplayCode.Location = New System.Drawing.Point(12, 93) + DisplayCode.Name = "DisplayCode" + DisplayCode.Size = New System.Drawing.Size(68, 13) + DisplayCode.TabIndex = 10 + DisplayCode.Text = "Display code" + ' + 'InfoCodeLabel + ' + InfoCodeLabel.AutoSize = True + InfoCodeLabel.Location = New System.Drawing.Point(12, 119) + InfoCodeLabel.Name = "InfoCodeLabel" + InfoCodeLabel.Size = New System.Drawing.Size(52, 13) + InfoCodeLabel.TabIndex = 11 + InfoCodeLabel.Text = "Info code" + ' + 'ParentLabel + ' + ParentLabel.AutoSize = True + ParentLabel.Location = New System.Drawing.Point(12, 145) + ParentLabel.Name = "ParentLabel" + ParentLabel.Size = New System.Drawing.Size(38, 13) + ParentLabel.TabIndex = 12 + ParentLabel.Text = "Parent" + ' + 'NameTextbox + ' + Me.NameTextbox.Location = New System.Drawing.Point(86, 12) + Me.NameTextbox.Name = "NameTextbox" + Me.NameTextbox.ReadOnly = True + Me.NameTextbox.Size = New System.Drawing.Size(225, 20) + Me.NameTextbox.TabIndex = 0 + ' + 'IdTextbox + ' + Me.IdTextbox.Location = New System.Drawing.Point(86, 38) + Me.IdTextbox.Name = "IdTextbox" + Me.IdTextbox.ReadOnly = True + Me.IdTextbox.Size = New System.Drawing.Size(225, 20) + Me.IdTextbox.TabIndex = 1 + ' + 'DefinedTextbox + ' + Me.DefinedTextbox.Location = New System.Drawing.Point(86, 64) + Me.DefinedTextbox.Name = "DefinedTextbox" + Me.DefinedTextbox.ReadOnly = True + Me.DefinedTextbox.Size = New System.Drawing.Size(225, 20) + Me.DefinedTextbox.TabIndex = 2 + ' + 'DisplayCodeTextbox + ' + Me.DisplayCodeTextbox.Location = New System.Drawing.Point(86, 90) + Me.DisplayCodeTextbox.Name = "DisplayCodeTextbox" + Me.DisplayCodeTextbox.ReadOnly = True + Me.DisplayCodeTextbox.Size = New System.Drawing.Size(225, 20) + Me.DisplayCodeTextbox.TabIndex = 3 + ' + 'InfoCodeTextbox + ' + Me.InfoCodeTextbox.Location = New System.Drawing.Point(86, 116) + Me.InfoCodeTextbox.Name = "InfoCodeTextbox" + Me.InfoCodeTextbox.ReadOnly = True + Me.InfoCodeTextbox.Size = New System.Drawing.Size(225, 20) + Me.InfoCodeTextbox.TabIndex = 4 + ' + 'ParentTextbox + ' + Me.ParentTextbox.Location = New System.Drawing.Point(86, 142) + Me.ParentTextbox.Name = "ParentTextbox" + Me.ParentTextbox.ReadOnly = True + Me.ParentTextbox.Size = New System.Drawing.Size(144, 20) + Me.ParentTextbox.TabIndex = 5 + ' + 'ParentButton + ' + Me.ParentButton.Location = New System.Drawing.Point(236, 140) + Me.ParentButton.Name = "ParentButton" + Me.ParentButton.Size = New System.Drawing.Size(75, 23) + Me.ParentButton.TabIndex = 6 + Me.ParentButton.Text = "Details" + Me.ParentButton.UseVisualStyleBackColor = True + ' + 'CloseButton + ' + Me.CloseButton.DialogResult = System.Windows.Forms.DialogResult.OK + Me.CloseButton.Location = New System.Drawing.Point(236, 169) + Me.CloseButton.Name = "CloseButton" + Me.CloseButton.Size = New System.Drawing.Size(75, 23) + Me.CloseButton.TabIndex = 13 + Me.CloseButton.Text = "Close" + Me.CloseButton.UseVisualStyleBackColor = True + ' + 'DetailCategory + ' + Me.AcceptButton = Me.CloseButton + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.CancelButton = Me.CloseButton + Me.ClientSize = New System.Drawing.Size(323, 204) + Me.Controls.Add(Me.CloseButton) + Me.Controls.Add(ParentLabel) + Me.Controls.Add(InfoCodeLabel) + Me.Controls.Add(DisplayCode) + Me.Controls.Add(DefinedLabel) + Me.Controls.Add(IdLabel) + Me.Controls.Add(NameLabel) + Me.Controls.Add(Me.ParentButton) + Me.Controls.Add(Me.ParentTextbox) + Me.Controls.Add(Me.InfoCodeTextbox) + Me.Controls.Add(Me.DisplayCodeTextbox) + Me.Controls.Add(Me.DefinedTextbox) + Me.Controls.Add(Me.IdTextbox) + Me.Controls.Add(Me.NameTextbox) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "DetailCategory" + Me.ShowIcon = False + Me.ShowInTaskbar = False + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent + Me.Text = "Category Details" + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + + Friend WithEvents NameTextbox As TextBox + Friend WithEvents IdTextbox As TextBox + Friend WithEvents DefinedTextbox As TextBox + Friend WithEvents DisplayCodeTextbox As TextBox + Friend WithEvents InfoCodeTextbox As TextBox + Friend WithEvents ParentTextbox As TextBox + Friend WithEvents ParentButton As Button + Friend WithEvents CloseButton As Button +End Class diff --git a/PolicyPlus/DetailCategory.resx b/PolicyPlus/DetailCategory.resx new file mode 100644 index 0000000..d6a866e --- /dev/null +++ b/PolicyPlus/DetailCategory.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + False + + + False + + + False + + + False + + + False + + \ No newline at end of file diff --git a/PolicyPlus/DetailCategory.vb b/PolicyPlus/DetailCategory.vb new file mode 100644 index 0000000..be0b415 --- /dev/null +++ b/PolicyPlus/DetailCategory.vb @@ -0,0 +1,26 @@ +Public Class DetailCategory + Dim SelectedCategory As PolicyPlusCategory + Public Sub PresentDialog(Category As PolicyPlusCategory) + PrepareDialog(Category) + ShowDialog() + End Sub + Private Sub PrepareDialog(Category As PolicyPlusCategory) + SelectedCategory = Category + NameTextbox.Text = Category.DisplayName + IdTextbox.Text = Category.UniqueID + DefinedTextbox.Text = Category.RawCategory.DefinedIn.SourceFile + DisplayCodeTextbox.Text = Category.RawCategory.DisplayCode + InfoCodeTextbox.Text = Category.RawCategory.ExplainCode + ParentButton.Enabled = Category.Parent IsNot Nothing + If Category.Parent IsNot Nothing Then + ParentTextbox.Text = Category.Parent.DisplayName + ElseIf Category.RawCategory.ParentID <> "" Then + ParentTextbox.Text = "" + Else + ParentTextbox.Text = "" + End If + End Sub + Private Sub ParentButton_Click(sender As Object, e As EventArgs) Handles ParentButton.Click + PrepareDialog(SelectedCategory.Parent) + End Sub +End Class \ No newline at end of file diff --git a/PolicyPlus/DetailPolicy.Designer.vb b/PolicyPlus/DetailPolicy.Designer.vb new file mode 100644 index 0000000..53ff084 --- /dev/null +++ b/PolicyPlus/DetailPolicy.Designer.vb @@ -0,0 +1,291 @@ + _ +Partial Class DetailPolicy + Inherits System.Windows.Forms.Form + + 'Form overrides dispose to clean up the component list. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + _ + Private Sub InitializeComponent() + Dim NameLabel As System.Windows.Forms.Label + Dim IdLabel As System.Windows.Forms.Label + Dim DefinedLabel As System.Windows.Forms.Label + Dim DisplayLabel As System.Windows.Forms.Label + Dim InfoLabel As System.Windows.Forms.Label + Dim PresentLabel As System.Windows.Forms.Label + Dim SectionLabel As System.Windows.Forms.Label + Dim SupportLabel As System.Windows.Forms.Label + Dim CategoryLabel As System.Windows.Forms.Label + Me.NameTextbox = New System.Windows.Forms.TextBox() + Me.IdTextbox = New System.Windows.Forms.TextBox() + Me.DefinedTextbox = New System.Windows.Forms.TextBox() + Me.DisplayCodeTextbox = New System.Windows.Forms.TextBox() + Me.InfoCodeTextbox = New System.Windows.Forms.TextBox() + Me.PresentCodeTextbox = New System.Windows.Forms.TextBox() + Me.SectionTextbox = New System.Windows.Forms.TextBox() + Me.SupportTextbox = New System.Windows.Forms.TextBox() + Me.CategoryTextbox = New System.Windows.Forms.TextBox() + Me.CategoryButton = New System.Windows.Forms.Button() + Me.SupportButton = New System.Windows.Forms.Button() + Me.CloseButton = New System.Windows.Forms.Button() + NameLabel = New System.Windows.Forms.Label() + IdLabel = New System.Windows.Forms.Label() + DefinedLabel = New System.Windows.Forms.Label() + DisplayLabel = New System.Windows.Forms.Label() + InfoLabel = New System.Windows.Forms.Label() + PresentLabel = New System.Windows.Forms.Label() + SectionLabel = New System.Windows.Forms.Label() + SupportLabel = New System.Windows.Forms.Label() + CategoryLabel = New System.Windows.Forms.Label() + Me.SuspendLayout() + ' + 'NameTextbox + ' + Me.NameTextbox.Location = New System.Drawing.Point(111, 12) + Me.NameTextbox.Name = "NameTextbox" + Me.NameTextbox.ReadOnly = True + Me.NameTextbox.Size = New System.Drawing.Size(258, 20) + Me.NameTextbox.TabIndex = 0 + ' + 'IdTextbox + ' + Me.IdTextbox.Location = New System.Drawing.Point(111, 38) + Me.IdTextbox.Name = "IdTextbox" + Me.IdTextbox.ReadOnly = True + Me.IdTextbox.Size = New System.Drawing.Size(258, 20) + Me.IdTextbox.TabIndex = 1 + ' + 'DefinedTextbox + ' + Me.DefinedTextbox.Location = New System.Drawing.Point(111, 64) + Me.DefinedTextbox.Name = "DefinedTextbox" + Me.DefinedTextbox.ReadOnly = True + Me.DefinedTextbox.Size = New System.Drawing.Size(258, 20) + Me.DefinedTextbox.TabIndex = 2 + ' + 'DisplayCodeTextbox + ' + Me.DisplayCodeTextbox.Location = New System.Drawing.Point(111, 90) + Me.DisplayCodeTextbox.Name = "DisplayCodeTextbox" + Me.DisplayCodeTextbox.ReadOnly = True + Me.DisplayCodeTextbox.Size = New System.Drawing.Size(258, 20) + Me.DisplayCodeTextbox.TabIndex = 3 + ' + 'InfoCodeTextbox + ' + Me.InfoCodeTextbox.Location = New System.Drawing.Point(111, 116) + Me.InfoCodeTextbox.Name = "InfoCodeTextbox" + Me.InfoCodeTextbox.ReadOnly = True + Me.InfoCodeTextbox.Size = New System.Drawing.Size(258, 20) + Me.InfoCodeTextbox.TabIndex = 4 + ' + 'PresentCodeTextbox + ' + Me.PresentCodeTextbox.Location = New System.Drawing.Point(111, 142) + Me.PresentCodeTextbox.Name = "PresentCodeTextbox" + Me.PresentCodeTextbox.ReadOnly = True + Me.PresentCodeTextbox.Size = New System.Drawing.Size(258, 20) + Me.PresentCodeTextbox.TabIndex = 5 + ' + 'SectionTextbox + ' + Me.SectionTextbox.Location = New System.Drawing.Point(111, 168) + Me.SectionTextbox.Name = "SectionTextbox" + Me.SectionTextbox.ReadOnly = True + Me.SectionTextbox.Size = New System.Drawing.Size(258, 20) + Me.SectionTextbox.TabIndex = 6 + ' + 'SupportTextbox + ' + Me.SupportTextbox.Location = New System.Drawing.Point(111, 194) + Me.SupportTextbox.Name = "SupportTextbox" + Me.SupportTextbox.ReadOnly = True + Me.SupportTextbox.Size = New System.Drawing.Size(177, 20) + Me.SupportTextbox.TabIndex = 7 + ' + 'CategoryTextbox + ' + Me.CategoryTextbox.Location = New System.Drawing.Point(111, 220) + Me.CategoryTextbox.Name = "CategoryTextbox" + Me.CategoryTextbox.ReadOnly = True + Me.CategoryTextbox.Size = New System.Drawing.Size(177, 20) + Me.CategoryTextbox.TabIndex = 8 + ' + 'NameLabel + ' + NameLabel.AutoSize = True + NameLabel.Location = New System.Drawing.Point(12, 15) + NameLabel.Name = "NameLabel" + NameLabel.Size = New System.Drawing.Size(35, 13) + NameLabel.TabIndex = 9 + NameLabel.Text = "Name" + ' + 'IdLabel + ' + IdLabel.AutoSize = True + IdLabel.Location = New System.Drawing.Point(12, 41) + IdLabel.Name = "IdLabel" + IdLabel.Size = New System.Drawing.Size(55, 13) + IdLabel.TabIndex = 10 + IdLabel.Text = "Unique ID" + ' + 'DefinedLabel + ' + DefinedLabel.AutoSize = True + DefinedLabel.Location = New System.Drawing.Point(12, 67) + DefinedLabel.Name = "DefinedLabel" + DefinedLabel.Size = New System.Drawing.Size(55, 13) + DefinedLabel.TabIndex = 11 + DefinedLabel.Text = "Defined in" + ' + 'DisplayLabel + ' + DisplayLabel.AutoSize = True + DisplayLabel.Location = New System.Drawing.Point(12, 93) + DisplayLabel.Name = "DisplayLabel" + DisplayLabel.Size = New System.Drawing.Size(68, 13) + DisplayLabel.TabIndex = 12 + DisplayLabel.Text = "Display code" + ' + 'InfoLabel + ' + InfoLabel.AutoSize = True + InfoLabel.Location = New System.Drawing.Point(12, 119) + InfoLabel.Name = "InfoLabel" + InfoLabel.Size = New System.Drawing.Size(52, 13) + InfoLabel.TabIndex = 13 + InfoLabel.Text = "Info code" + ' + 'PresentLabel + ' + PresentLabel.AutoSize = True + PresentLabel.Location = New System.Drawing.Point(12, 145) + PresentLabel.Name = "PresentLabel" + PresentLabel.Size = New System.Drawing.Size(93, 13) + PresentLabel.TabIndex = 14 + PresentLabel.Text = "Presentation code" + ' + 'SectionLabel + ' + SectionLabel.AutoSize = True + SectionLabel.Location = New System.Drawing.Point(12, 171) + SectionLabel.Name = "SectionLabel" + SectionLabel.Size = New System.Drawing.Size(43, 13) + SectionLabel.TabIndex = 15 + SectionLabel.Text = "Section" + ' + 'SupportLabel + ' + SupportLabel.AutoSize = True + SupportLabel.Location = New System.Drawing.Point(12, 197) + SupportLabel.Name = "SupportLabel" + SupportLabel.Size = New System.Drawing.Size(71, 13) + SupportLabel.TabIndex = 16 + SupportLabel.Text = "Supported on" + ' + 'CategoryLabel + ' + CategoryLabel.AutoSize = True + CategoryLabel.Location = New System.Drawing.Point(12, 223) + CategoryLabel.Name = "CategoryLabel" + CategoryLabel.Size = New System.Drawing.Size(49, 13) + CategoryLabel.TabIndex = 17 + CategoryLabel.Text = "Category" + ' + 'CategoryButton + ' + Me.CategoryButton.Location = New System.Drawing.Point(294, 218) + Me.CategoryButton.Name = "CategoryButton" + Me.CategoryButton.Size = New System.Drawing.Size(75, 23) + Me.CategoryButton.TabIndex = 18 + Me.CategoryButton.Text = "Details" + Me.CategoryButton.UseVisualStyleBackColor = True + ' + 'SupportButton + ' + Me.SupportButton.Location = New System.Drawing.Point(294, 192) + Me.SupportButton.Name = "SupportButton" + Me.SupportButton.Size = New System.Drawing.Size(75, 23) + Me.SupportButton.TabIndex = 17 + Me.SupportButton.Text = "Details" + Me.SupportButton.UseVisualStyleBackColor = True + ' + 'CloseButton + ' + Me.CloseButton.DialogResult = System.Windows.Forms.DialogResult.OK + Me.CloseButton.Location = New System.Drawing.Point(294, 247) + Me.CloseButton.Name = "CloseButton" + Me.CloseButton.Size = New System.Drawing.Size(75, 23) + Me.CloseButton.TabIndex = 19 + Me.CloseButton.Text = "Close" + Me.CloseButton.UseVisualStyleBackColor = True + ' + 'DetailPolicy + ' + Me.AcceptButton = Me.CloseButton + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.CancelButton = Me.CloseButton + Me.ClientSize = New System.Drawing.Size(381, 282) + Me.Controls.Add(Me.CloseButton) + Me.Controls.Add(Me.SupportButton) + Me.Controls.Add(Me.CategoryButton) + Me.Controls.Add(CategoryLabel) + Me.Controls.Add(SupportLabel) + Me.Controls.Add(SectionLabel) + Me.Controls.Add(PresentLabel) + Me.Controls.Add(InfoLabel) + Me.Controls.Add(DisplayLabel) + Me.Controls.Add(DefinedLabel) + Me.Controls.Add(IdLabel) + Me.Controls.Add(NameLabel) + Me.Controls.Add(Me.CategoryTextbox) + Me.Controls.Add(Me.SupportTextbox) + Me.Controls.Add(Me.SectionTextbox) + Me.Controls.Add(Me.PresentCodeTextbox) + Me.Controls.Add(Me.InfoCodeTextbox) + Me.Controls.Add(Me.DisplayCodeTextbox) + Me.Controls.Add(Me.DefinedTextbox) + Me.Controls.Add(Me.IdTextbox) + Me.Controls.Add(Me.NameTextbox) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "DetailPolicy" + Me.ShowIcon = False + Me.ShowInTaskbar = False + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent + Me.Text = "Policy Details" + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + + Friend WithEvents NameTextbox As TextBox + Friend WithEvents IdTextbox As TextBox + Friend WithEvents DefinedTextbox As TextBox + Friend WithEvents DisplayCodeTextbox As TextBox + Friend WithEvents InfoCodeTextbox As TextBox + Friend WithEvents PresentCodeTextbox As TextBox + Friend WithEvents SectionTextbox As TextBox + Friend WithEvents SupportTextbox As TextBox + Friend WithEvents CategoryTextbox As TextBox + Friend WithEvents CategoryButton As Button + Friend WithEvents SupportButton As Button + Friend WithEvents CloseButton As Button +End Class diff --git a/PolicyPlus/DetailPolicy.resx b/PolicyPlus/DetailPolicy.resx new file mode 100644 index 0000000..e76cf9b --- /dev/null +++ b/PolicyPlus/DetailPolicy.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + \ No newline at end of file diff --git a/PolicyPlus/DetailPolicy.vb b/PolicyPlus/DetailPolicy.vb new file mode 100644 index 0000000..c6c66a9 --- /dev/null +++ b/PolicyPlus/DetailPolicy.vb @@ -0,0 +1,43 @@ +Public Class DetailPolicy + Dim SelectedPolicy As PolicyPlusPolicy + Public Sub PresentDialog(Policy As PolicyPlusPolicy) + SelectedPolicy = Policy + NameTextbox.Text = Policy.DisplayName + IdTextbox.Text = Policy.UniqueID + DefinedTextbox.Text = Policy.RawPolicy.DefinedIn.SourceFile + DisplayCodeTextbox.Text = Policy.RawPolicy.DisplayCode + InfoCodeTextbox.Text = Policy.RawPolicy.ExplainCode + PresentCodeTextbox.Text = Policy.RawPolicy.PresentationID + Select Case Policy.RawPolicy.Section + Case AdmxPolicySection.Both + SectionTextbox.Text = "User or computer" + Case AdmxPolicySection.Machine + SectionTextbox.Text = "Computer" + Case AdmxPolicySection.User + SectionTextbox.Text = "User" + End Select + SupportButton.Enabled = Policy.SupportedOn IsNot Nothing + If Policy.SupportedOn IsNot Nothing Then + SupportTextbox.Text = Policy.SupportedOn.DisplayName + ElseIf Policy.RawPolicy.SupportedCode <> "" Then + SupportTextbox.Text = "" + Else + SupportTextbox.Text = "" + End If + CategoryButton.Enabled = Policy.Category IsNot Nothing + If Policy.Category IsNot Nothing Then + CategoryTextbox.Text = Policy.Category.DisplayName + ElseIf Policy.RawPolicy.CategoryID <> "" Then + CategoryTextbox.Text = "" + Else + CategoryTextbox.Text = "" + End If + ShowDialog() + End Sub + Private Sub SupportButton_Click(sender As Object, e As EventArgs) Handles SupportButton.Click + DetailSupport.PresentDialog(SelectedPolicy.SupportedOn) + End Sub + Private Sub CategoryButton_Click(sender As Object, e As EventArgs) Handles CategoryButton.Click + DetailCategory.PresentDialog(SelectedPolicy.Category) + End Sub +End Class \ No newline at end of file diff --git a/PolicyPlus/DetailProduct.Designer.vb b/PolicyPlus/DetailProduct.Designer.vb new file mode 100644 index 0000000..cbe2e74 --- /dev/null +++ b/PolicyPlus/DetailProduct.Designer.vb @@ -0,0 +1,276 @@ + _ +Partial Class DetailProduct + Inherits System.Windows.Forms.Form + + 'Form overrides dispose to clean up the component list. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + _ + Private Sub InitializeComponent() + Dim NameLabel As System.Windows.Forms.Label + Dim IdLabel As System.Windows.Forms.Label + Dim DefinedLabel As System.Windows.Forms.Label + Dim KindLabel As System.Windows.Forms.Label + Dim VersionLabel As System.Windows.Forms.Label + Dim ParentLabel As System.Windows.Forms.Label + Dim ChildrenLabel As System.Windows.Forms.Label + Dim DisplayCodeLabel As System.Windows.Forms.Label + Me.NameTextbox = New System.Windows.Forms.TextBox() + Me.IdTextbox = New System.Windows.Forms.TextBox() + Me.DefinedTextbox = New System.Windows.Forms.TextBox() + Me.DisplayCodeTextbox = New System.Windows.Forms.TextBox() + Me.KindTextbox = New System.Windows.Forms.TextBox() + Me.ParentButton = New System.Windows.Forms.Button() + Me.ParentTextbox = New System.Windows.Forms.TextBox() + Me.ChildrenListview = New System.Windows.Forms.ListView() + Me.ChVersion = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.ChName = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.CloseButton = New System.Windows.Forms.Button() + Me.VersionTextbox = New System.Windows.Forms.TextBox() + NameLabel = New System.Windows.Forms.Label() + IdLabel = New System.Windows.Forms.Label() + DefinedLabel = New System.Windows.Forms.Label() + KindLabel = New System.Windows.Forms.Label() + VersionLabel = New System.Windows.Forms.Label() + ParentLabel = New System.Windows.Forms.Label() + ChildrenLabel = New System.Windows.Forms.Label() + DisplayCodeLabel = New System.Windows.Forms.Label() + Me.SuspendLayout() + ' + 'NameLabel + ' + NameLabel.AutoSize = True + NameLabel.Location = New System.Drawing.Point(12, 15) + NameLabel.Name = "NameLabel" + NameLabel.Size = New System.Drawing.Size(35, 13) + NameLabel.TabIndex = 1 + NameLabel.Text = "Name" + ' + 'IdLabel + ' + IdLabel.AutoSize = True + IdLabel.Location = New System.Drawing.Point(12, 41) + IdLabel.Name = "IdLabel" + IdLabel.Size = New System.Drawing.Size(55, 13) + IdLabel.TabIndex = 6 + IdLabel.Text = "Unique ID" + ' + 'DefinedLabel + ' + DefinedLabel.AutoSize = True + DefinedLabel.Location = New System.Drawing.Point(12, 67) + DefinedLabel.Name = "DefinedLabel" + DefinedLabel.Size = New System.Drawing.Size(55, 13) + DefinedLabel.TabIndex = 7 + DefinedLabel.Text = "Defined in" + ' + 'KindLabel + ' + KindLabel.AutoSize = True + KindLabel.Location = New System.Drawing.Point(12, 119) + KindLabel.Name = "KindLabel" + KindLabel.Size = New System.Drawing.Size(28, 13) + KindLabel.TabIndex = 8 + KindLabel.Text = "Kind" + ' + 'VersionLabel + ' + VersionLabel.AutoSize = True + VersionLabel.Location = New System.Drawing.Point(12, 145) + VersionLabel.Name = "VersionLabel" + VersionLabel.Size = New System.Drawing.Size(80, 13) + VersionLabel.TabIndex = 9 + VersionLabel.Text = "Version number" + ' + 'ParentLabel + ' + ParentLabel.AutoSize = True + ParentLabel.Location = New System.Drawing.Point(12, 171) + ParentLabel.Name = "ParentLabel" + ParentLabel.Size = New System.Drawing.Size(38, 13) + ParentLabel.TabIndex = 12 + ParentLabel.Text = "Parent" + ' + 'ChildrenLabel + ' + ChildrenLabel.AutoSize = True + ChildrenLabel.ForeColor = System.Drawing.SystemColors.ControlText + ChildrenLabel.Location = New System.Drawing.Point(12, 197) + ChildrenLabel.Name = "ChildrenLabel" + ChildrenLabel.Size = New System.Drawing.Size(67, 13) + ChildrenLabel.TabIndex = 14 + ChildrenLabel.Text = "Subproducts" + ' + 'DisplayCodeLabel + ' + DisplayCodeLabel.AutoSize = True + DisplayCodeLabel.Location = New System.Drawing.Point(12, 93) + DisplayCodeLabel.Name = "DisplayCodeLabel" + DisplayCodeLabel.Size = New System.Drawing.Size(68, 13) + DisplayCodeLabel.TabIndex = 16 + DisplayCodeLabel.Text = "Display code" + ' + 'NameTextbox + ' + Me.NameTextbox.Location = New System.Drawing.Point(98, 12) + Me.NameTextbox.Name = "NameTextbox" + Me.NameTextbox.ReadOnly = True + Me.NameTextbox.Size = New System.Drawing.Size(256, 20) + Me.NameTextbox.TabIndex = 0 + ' + 'IdTextbox + ' + Me.IdTextbox.Location = New System.Drawing.Point(98, 38) + Me.IdTextbox.Name = "IdTextbox" + Me.IdTextbox.ReadOnly = True + Me.IdTextbox.Size = New System.Drawing.Size(256, 20) + Me.IdTextbox.TabIndex = 2 + ' + 'DefinedTextbox + ' + Me.DefinedTextbox.Location = New System.Drawing.Point(98, 64) + Me.DefinedTextbox.Name = "DefinedTextbox" + Me.DefinedTextbox.ReadOnly = True + Me.DefinedTextbox.Size = New System.Drawing.Size(256, 20) + Me.DefinedTextbox.TabIndex = 3 + ' + 'DisplayCodeTextbox + ' + Me.DisplayCodeTextbox.Location = New System.Drawing.Point(98, 90) + Me.DisplayCodeTextbox.Name = "DisplayCodeTextbox" + Me.DisplayCodeTextbox.ReadOnly = True + Me.DisplayCodeTextbox.Size = New System.Drawing.Size(256, 20) + Me.DisplayCodeTextbox.TabIndex = 4 + ' + 'KindTextbox + ' + Me.KindTextbox.Location = New System.Drawing.Point(98, 116) + Me.KindTextbox.Name = "KindTextbox" + Me.KindTextbox.ReadOnly = True + Me.KindTextbox.Size = New System.Drawing.Size(256, 20) + Me.KindTextbox.TabIndex = 5 + ' + 'ParentButton + ' + Me.ParentButton.Location = New System.Drawing.Point(279, 166) + Me.ParentButton.Name = "ParentButton" + Me.ParentButton.Size = New System.Drawing.Size(75, 23) + Me.ParentButton.TabIndex = 10 + Me.ParentButton.Text = "Details" + Me.ParentButton.UseVisualStyleBackColor = True + ' + 'ParentTextbox + ' + Me.ParentTextbox.Location = New System.Drawing.Point(98, 168) + Me.ParentTextbox.Name = "ParentTextbox" + Me.ParentTextbox.ReadOnly = True + Me.ParentTextbox.Size = New System.Drawing.Size(175, 20) + Me.ParentTextbox.TabIndex = 7 + ' + 'ChildrenListview + ' + Me.ChildrenListview.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ChVersion, Me.ChName}) + Me.ChildrenListview.FullRowSelect = True + Me.ChildrenListview.HideSelection = False + Me.ChildrenListview.Location = New System.Drawing.Point(98, 194) + Me.ChildrenListview.MultiSelect = False + Me.ChildrenListview.Name = "ChildrenListview" + Me.ChildrenListview.Size = New System.Drawing.Size(256, 110) + Me.ChildrenListview.TabIndex = 13 + Me.ChildrenListview.UseCompatibleStateImageBehavior = False + Me.ChildrenListview.View = System.Windows.Forms.View.Details + ' + 'ChVersion + ' + Me.ChVersion.Text = "Version" + Me.ChVersion.Width = 51 + ' + 'ChName + ' + Me.ChName.Text = "Name" + Me.ChName.Width = 176 + ' + 'CloseButton + ' + Me.CloseButton.DialogResult = System.Windows.Forms.DialogResult.OK + Me.CloseButton.Location = New System.Drawing.Point(279, 310) + Me.CloseButton.Name = "CloseButton" + Me.CloseButton.Size = New System.Drawing.Size(75, 23) + Me.CloseButton.TabIndex = 15 + Me.CloseButton.Text = "Close" + Me.CloseButton.UseVisualStyleBackColor = True + ' + 'VersionTextbox + ' + Me.VersionTextbox.Location = New System.Drawing.Point(98, 142) + Me.VersionTextbox.Name = "VersionTextbox" + Me.VersionTextbox.ReadOnly = True + Me.VersionTextbox.Size = New System.Drawing.Size(256, 20) + Me.VersionTextbox.TabIndex = 6 + ' + 'DetailProduct + ' + Me.AcceptButton = Me.CloseButton + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.CancelButton = Me.CloseButton + Me.ClientSize = New System.Drawing.Size(366, 345) + Me.Controls.Add(Me.VersionTextbox) + Me.Controls.Add(DisplayCodeLabel) + Me.Controls.Add(Me.CloseButton) + Me.Controls.Add(ChildrenLabel) + Me.Controls.Add(Me.ChildrenListview) + Me.Controls.Add(ParentLabel) + Me.Controls.Add(Me.ParentTextbox) + Me.Controls.Add(Me.ParentButton) + Me.Controls.Add(VersionLabel) + Me.Controls.Add(KindLabel) + Me.Controls.Add(DefinedLabel) + Me.Controls.Add(IdLabel) + Me.Controls.Add(Me.KindTextbox) + Me.Controls.Add(Me.DisplayCodeTextbox) + Me.Controls.Add(Me.DefinedTextbox) + Me.Controls.Add(Me.IdTextbox) + Me.Controls.Add(NameLabel) + Me.Controls.Add(Me.NameTextbox) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "DetailProduct" + Me.ShowIcon = False + Me.ShowInTaskbar = False + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent + Me.Text = "Product Details" + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + + Friend WithEvents NameTextbox As TextBox + Friend WithEvents IdTextbox As TextBox + Friend WithEvents DefinedTextbox As TextBox + Friend WithEvents DisplayCodeTextbox As TextBox + Friend WithEvents KindTextbox As TextBox + Friend WithEvents ParentButton As Button + Friend WithEvents ParentTextbox As TextBox + Friend WithEvents ChildrenListview As ListView + Friend WithEvents ChVersion As ColumnHeader + Friend WithEvents ChName As ColumnHeader + Friend WithEvents CloseButton As Button + Friend WithEvents VersionTextbox As TextBox +End Class diff --git a/PolicyPlus/DetailProduct.resx b/PolicyPlus/DetailProduct.resx new file mode 100644 index 0000000..fe621c1 --- /dev/null +++ b/PolicyPlus/DetailProduct.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + \ No newline at end of file diff --git a/PolicyPlus/DetailProduct.vb b/PolicyPlus/DetailProduct.vb new file mode 100644 index 0000000..8b706c8 --- /dev/null +++ b/PolicyPlus/DetailProduct.vb @@ -0,0 +1,48 @@ +Public Class DetailProduct + Dim SelectedProduct As PolicyPlusProduct + Public Sub PresentDialog(Product As PolicyPlusProduct) + PrepareDialog(Product) + ShowDialog() + End Sub + Private Sub PrepareDialog(Product As PolicyPlusProduct) + SelectedProduct = Product + NameTextbox.Text = Product.DisplayName + IdTextbox.Text = Product.UniqueID + DefinedTextbox.Text = Product.RawProduct.DefinedIn.SourceFile + DisplayCodeTextbox.Text = Product.RawProduct.DisplayCode + Select Case Product.RawProduct.Type + Case AdmxProductType.MajorRevision + KindTextbox.Text = "Major revision" + Case AdmxProductType.MinorRevision + KindTextbox.Text = "Minor revision" + Case AdmxProductType.Product + KindTextbox.Text = "Top-level product" + End Select + VersionTextbox.Text = IIf(Product.RawProduct.Type = AdmxProductType.Product, "", Product.RawProduct.Version) + If Product.Parent Is Nothing Then + ParentTextbox.Text = "" + ParentButton.Enabled = False + Else + ParentTextbox.Text = Product.Parent.DisplayName + ParentButton.Enabled = True + End If + ChildrenListview.Items.Clear() + If Product.Children IsNot Nothing Then + For Each child In Product.Children + Dim lsvi = ChildrenListview.Items.Add(child.RawProduct.Version) + lsvi.SubItems.Add(child.DisplayName) + lsvi.Tag = child + Next + End If + End Sub + Private Sub ChildrenListview_ClientSizeChanged(sender As Object, e As EventArgs) Handles ChildrenListview.ClientSizeChanged + ChName.Width = ChildrenListview.ClientSize.Width - ChVersion.Width + End Sub + Private Sub ChildrenListview_DoubleClick(sender As Object, e As EventArgs) Handles ChildrenListview.DoubleClick + If ChildrenListview.SelectedItems.Count = 0 Then Exit Sub + PrepareDialog(ChildrenListview.SelectedItems(0).Tag) + End Sub + Private Sub ParentButton_Click(sender As Object, e As EventArgs) Handles ParentButton.Click + PrepareDialog(SelectedProduct.Parent) + End Sub +End Class \ No newline at end of file diff --git a/PolicyPlus/DetailSupport.Designer.vb b/PolicyPlus/DetailSupport.Designer.vb new file mode 100644 index 0000000..10c0f3c --- /dev/null +++ b/PolicyPlus/DetailSupport.Designer.vb @@ -0,0 +1,224 @@ + _ +Partial Class DetailSupport + Inherits System.Windows.Forms.Form + + 'Form overrides dispose to clean up the component list. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + _ + Private Sub InitializeComponent() + Dim NameLabel As System.Windows.Forms.Label + Dim IdLabel As System.Windows.Forms.Label + Dim DefinedLabel As System.Windows.Forms.Label + Dim DisplayCodeLabel As System.Windows.Forms.Label + Dim LogicLabel As System.Windows.Forms.Label + Dim ProductsLabel As System.Windows.Forms.Label + Me.NameTextbox = New System.Windows.Forms.TextBox() + Me.IdTextbox = New System.Windows.Forms.TextBox() + Me.DefinedTextbox = New System.Windows.Forms.TextBox() + Me.DisplayCodeTextbox = New System.Windows.Forms.TextBox() + Me.LogicTextbox = New System.Windows.Forms.TextBox() + Me.EntriesListview = New System.Windows.Forms.ListView() + Me.ChName = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.ChMinVer = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.ChMaxVer = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.CloseButton = New System.Windows.Forms.Button() + NameLabel = New System.Windows.Forms.Label() + IdLabel = New System.Windows.Forms.Label() + DefinedLabel = New System.Windows.Forms.Label() + DisplayCodeLabel = New System.Windows.Forms.Label() + LogicLabel = New System.Windows.Forms.Label() + ProductsLabel = New System.Windows.Forms.Label() + Me.SuspendLayout() + ' + 'NameTextbox + ' + Me.NameTextbox.Location = New System.Drawing.Point(86, 12) + Me.NameTextbox.Name = "NameTextbox" + Me.NameTextbox.ReadOnly = True + Me.NameTextbox.Size = New System.Drawing.Size(268, 20) + Me.NameTextbox.TabIndex = 0 + ' + 'IdTextbox + ' + Me.IdTextbox.Location = New System.Drawing.Point(86, 38) + Me.IdTextbox.Name = "IdTextbox" + Me.IdTextbox.ReadOnly = True + Me.IdTextbox.Size = New System.Drawing.Size(268, 20) + Me.IdTextbox.TabIndex = 1 + ' + 'DefinedTextbox + ' + Me.DefinedTextbox.Location = New System.Drawing.Point(86, 64) + Me.DefinedTextbox.Name = "DefinedTextbox" + Me.DefinedTextbox.ReadOnly = True + Me.DefinedTextbox.Size = New System.Drawing.Size(268, 20) + Me.DefinedTextbox.TabIndex = 2 + ' + 'DisplayCodeTextbox + ' + Me.DisplayCodeTextbox.Location = New System.Drawing.Point(86, 90) + Me.DisplayCodeTextbox.Name = "DisplayCodeTextbox" + Me.DisplayCodeTextbox.ReadOnly = True + Me.DisplayCodeTextbox.Size = New System.Drawing.Size(268, 20) + Me.DisplayCodeTextbox.TabIndex = 3 + ' + 'LogicTextbox + ' + Me.LogicTextbox.Location = New System.Drawing.Point(86, 116) + Me.LogicTextbox.Name = "LogicTextbox" + Me.LogicTextbox.ReadOnly = True + Me.LogicTextbox.Size = New System.Drawing.Size(268, 20) + Me.LogicTextbox.TabIndex = 4 + ' + 'NameLabel + ' + NameLabel.AutoSize = True + NameLabel.Location = New System.Drawing.Point(12, 15) + NameLabel.Name = "NameLabel" + NameLabel.Size = New System.Drawing.Size(35, 13) + NameLabel.TabIndex = 5 + NameLabel.Text = "Name" + ' + 'IdLabel + ' + IdLabel.AutoSize = True + IdLabel.Location = New System.Drawing.Point(12, 41) + IdLabel.Name = "IdLabel" + IdLabel.Size = New System.Drawing.Size(55, 13) + IdLabel.TabIndex = 6 + IdLabel.Text = "Unique ID" + ' + 'DefinedLabel + ' + DefinedLabel.AutoSize = True + DefinedLabel.Location = New System.Drawing.Point(12, 67) + DefinedLabel.Name = "DefinedLabel" + DefinedLabel.Size = New System.Drawing.Size(55, 13) + DefinedLabel.TabIndex = 7 + DefinedLabel.Text = "Defined in" + ' + 'DisplayCodeLabel + ' + DisplayCodeLabel.AutoSize = True + DisplayCodeLabel.Location = New System.Drawing.Point(12, 93) + DisplayCodeLabel.Name = "DisplayCodeLabel" + DisplayCodeLabel.Size = New System.Drawing.Size(68, 13) + DisplayCodeLabel.TabIndex = 8 + DisplayCodeLabel.Text = "Display code" + ' + 'LogicLabel + ' + LogicLabel.AutoSize = True + LogicLabel.Location = New System.Drawing.Point(12, 119) + LogicLabel.Name = "LogicLabel" + LogicLabel.Size = New System.Drawing.Size(64, 13) + LogicLabel.TabIndex = 9 + LogicLabel.Text = "Composition" + ' + 'ProductsLabel + ' + ProductsLabel.AutoSize = True + ProductsLabel.Location = New System.Drawing.Point(12, 145) + ProductsLabel.Name = "ProductsLabel" + ProductsLabel.Size = New System.Drawing.Size(49, 13) + ProductsLabel.TabIndex = 11 + ProductsLabel.Text = "Products" + ' + 'EntriesListview + ' + Me.EntriesListview.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ChName, Me.ChMinVer, Me.ChMaxVer}) + Me.EntriesListview.FullRowSelect = True + Me.EntriesListview.HideSelection = False + Me.EntriesListview.Location = New System.Drawing.Point(86, 142) + Me.EntriesListview.MultiSelect = False + Me.EntriesListview.Name = "EntriesListview" + Me.EntriesListview.Size = New System.Drawing.Size(268, 87) + Me.EntriesListview.TabIndex = 12 + Me.EntriesListview.UseCompatibleStateImageBehavior = False + Me.EntriesListview.View = System.Windows.Forms.View.Details + ' + 'ChName + ' + Me.ChName.Text = "Name" + Me.ChName.Width = 158 + ' + 'ChMinVer + ' + Me.ChMinVer.Text = "Min" + Me.ChMinVer.Width = 40 + ' + 'ChMaxVer + ' + Me.ChMaxVer.Text = "Max" + Me.ChMaxVer.Width = 40 + ' + 'CloseButton + ' + Me.CloseButton.DialogResult = System.Windows.Forms.DialogResult.OK + Me.CloseButton.Location = New System.Drawing.Point(279, 235) + Me.CloseButton.Name = "CloseButton" + Me.CloseButton.Size = New System.Drawing.Size(75, 23) + Me.CloseButton.TabIndex = 13 + Me.CloseButton.Text = "Close" + Me.CloseButton.UseVisualStyleBackColor = True + ' + 'DetailSupport + ' + Me.AcceptButton = Me.CloseButton + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.CancelButton = Me.CloseButton + Me.ClientSize = New System.Drawing.Size(366, 270) + Me.Controls.Add(Me.CloseButton) + Me.Controls.Add(Me.EntriesListview) + Me.Controls.Add(ProductsLabel) + Me.Controls.Add(LogicLabel) + Me.Controls.Add(DisplayCodeLabel) + Me.Controls.Add(DefinedLabel) + Me.Controls.Add(IdLabel) + Me.Controls.Add(NameLabel) + Me.Controls.Add(Me.LogicTextbox) + Me.Controls.Add(Me.DisplayCodeTextbox) + Me.Controls.Add(Me.DefinedTextbox) + Me.Controls.Add(Me.IdTextbox) + Me.Controls.Add(Me.NameTextbox) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "DetailSupport" + Me.ShowIcon = False + Me.ShowInTaskbar = False + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent + Me.Text = "Support Details" + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + + Friend WithEvents NameTextbox As TextBox + Friend WithEvents IdTextbox As TextBox + Friend WithEvents DefinedTextbox As TextBox + Friend WithEvents DisplayCodeTextbox As TextBox + Friend WithEvents LogicTextbox As TextBox + Friend WithEvents EntriesListview As ListView + Friend WithEvents ChName As ColumnHeader + Friend WithEvents ChMinVer As ColumnHeader + Friend WithEvents ChMaxVer As ColumnHeader + Friend WithEvents CloseButton As Button +End Class diff --git a/PolicyPlus/DetailSupport.resx b/PolicyPlus/DetailSupport.resx new file mode 100644 index 0000000..cbfd242 --- /dev/null +++ b/PolicyPlus/DetailSupport.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + False + + + False + + + False + + + False + + + False + + \ No newline at end of file diff --git a/PolicyPlus/DetailSupport.vb b/PolicyPlus/DetailSupport.vb new file mode 100644 index 0000000..713f43d --- /dev/null +++ b/PolicyPlus/DetailSupport.vb @@ -0,0 +1,35 @@ +Public Class DetailSupport + Public Sub PresentDialog(Supported As PolicyPlusSupport) + NameTextbox.Text = Supported.DisplayName + IdTextbox.Text = Supported.UniqueID + DefinedTextbox.Text = Supported.RawSupport.DefinedIn.SourceFile + DisplayCodeTextbox.Text = Supported.RawSupport.DisplayCode + Select Case Supported.RawSupport.Logic + Case AdmxSupportLogicType.AllOf + LogicTextbox.Text = "Match all the referenced products" + Case AdmxSupportLogicType.AnyOf + LogicTextbox.Text = "Match any of the referenced products" + Case AdmxSupportLogicType.Blank + LogicTextbox.Text = "Do not match products" + End Select + EntriesListview.Items.Clear() + If Supported.Elements IsNot Nothing Then + For Each element In Supported.Elements + Dim lsvi = EntriesListview.Items.Add(element.Product.DisplayName) + If element.RawSupportEntry.IsRange Then + If element.RawSupportEntry.MinVersion.HasValue Then lsvi.SubItems.Add(element.RawSupportEntry.MinVersion.Value) Else lsvi.SubItems.Add("") + If element.RawSupportEntry.MaxVersion.HasValue Then lsvi.SubItems.Add(element.RawSupportEntry.MaxVersion.Value) Else lsvi.SubItems.Add("") + End If + lsvi.Tag = element.Product + Next + End If + ShowDialog() + End Sub + Private Sub EntriesListview_ClientSizeChanged(sender As Object, e As EventArgs) Handles EntriesListview.ClientSizeChanged, Me.Shown + ChName.Width = EntriesListview.ClientSize.Width - ChMinVer.Width - ChMaxVer.Width + End Sub + Private Sub EntriesListview_DoubleClick(sender As Object, e As EventArgs) Handles EntriesListview.DoubleClick + If EntriesListview.SelectedItems.Count = 0 Then Exit Sub + DetailProduct.PresentDialog(EntriesListview.SelectedItems(0).Tag) ' The tag is the product + End Sub +End Class \ No newline at end of file diff --git a/PolicyPlus/Main.Designer.vb b/PolicyPlus/Main.Designer.vb index 3a2c66c..0c09d68 100644 --- a/PolicyPlus/Main.Designer.vb +++ b/PolicyPlus/Main.Designer.vb @@ -28,8 +28,8 @@ Partial Class Main Dim ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator Dim ToolStripSeparator2 As System.Windows.Forms.ToolStripSeparator Dim ToolStripSeparator3 As System.Windows.Forms.ToolStripSeparator - Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Main)) Dim ToolStripSeparator4 As System.Windows.Forms.ToolStripSeparator + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Main)) Me.MainMenu = New System.Windows.Forms.MenuStrip() Me.FileToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.OpenADMXFolderToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() @@ -38,11 +38,15 @@ Partial Class Main Me.OpenPolicyResourcesToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.SavePoliciesToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ExitToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.FindToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.ByIDToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ViewToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.EmptyCategoriesToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.DeduplicatePoliciesToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.FindToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.ByIDToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.ByTextToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.ByRegistryToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.SearchResultsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.FindNextToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.HelpToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.AboutToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.SplitContainer = New System.Windows.Forms.SplitContainer() @@ -57,10 +61,10 @@ Partial Class Main Me.PolicySupportedLabel = New System.Windows.Forms.Label() Me.PolicyDescLabel = New System.Windows.Forms.Label() Me.PolicyIsPrefLabel = New System.Windows.Forms.Label() - Me.ByTextToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.ByRegistryToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.SearchResultsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.FindNextToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.PolicyObjectContext = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.CmeCatOpen = New System.Windows.Forms.ToolStripMenuItem() + Me.CmePolEdit = New System.Windows.Forms.ToolStripMenuItem() + Me.CmeAllDetails = New System.Windows.Forms.ToolStripMenuItem() ChSettingEnabled = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) ChSettingCommented = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator() @@ -74,6 +78,7 @@ Partial Class Main Me.SplitContainer.SuspendLayout() Me.SettingInfoPanel.SuspendLayout() Me.PolicyInfoTable.SuspendLayout() + Me.PolicyObjectContext.SuspendLayout() Me.SuspendLayout() ' 'ChSettingEnabled @@ -103,6 +108,11 @@ Partial Class Main ToolStripSeparator3.Name = "ToolStripSeparator3" ToolStripSeparator3.Size = New System.Drawing.Size(234, 6) ' + 'ToolStripSeparator4 + ' + ToolStripSeparator4.Name = "ToolStripSeparator4" + ToolStripSeparator4.Size = New System.Drawing.Size(197, 6) + ' 'MainMenu ' Me.MainMenu.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FileToolStripMenuItem, Me.ViewToolStripMenuItem, Me.FindToolStripMenuItem, Me.HelpToolStripMenuItem}) @@ -157,20 +167,6 @@ Partial Class Main Me.ExitToolStripMenuItem.Size = New System.Drawing.Size(237, 22) Me.ExitToolStripMenuItem.Text = "Exit" ' - 'FindToolStripMenuItem - ' - Me.FindToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ByIDToolStripMenuItem, Me.ByTextToolStripMenuItem, Me.ByRegistryToolStripMenuItem, ToolStripSeparator4, Me.SearchResultsToolStripMenuItem, Me.FindNextToolStripMenuItem}) - Me.FindToolStripMenuItem.Name = "FindToolStripMenuItem" - Me.FindToolStripMenuItem.Size = New System.Drawing.Size(42, 20) - Me.FindToolStripMenuItem.Text = "Find" - ' - 'ByIDToolStripMenuItem - ' - Me.ByIDToolStripMenuItem.Name = "ByIDToolStripMenuItem" - Me.ByIDToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.G), System.Windows.Forms.Keys) - Me.ByIDToolStripMenuItem.Size = New System.Drawing.Size(152, 22) - Me.ByIDToolStripMenuItem.Text = "By ID" - ' 'ViewToolStripMenuItem ' Me.ViewToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.EmptyCategoriesToolStripMenuItem, ToolStripSeparator1, Me.DeduplicatePoliciesToolStripMenuItem}) @@ -190,6 +186,48 @@ Partial Class Main Me.DeduplicatePoliciesToolStripMenuItem.Size = New System.Drawing.Size(180, 22) Me.DeduplicatePoliciesToolStripMenuItem.Text = "Deduplicate Policies" ' + 'FindToolStripMenuItem + ' + Me.FindToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ByIDToolStripMenuItem, Me.ByTextToolStripMenuItem, Me.ByRegistryToolStripMenuItem, ToolStripSeparator4, Me.SearchResultsToolStripMenuItem, Me.FindNextToolStripMenuItem}) + Me.FindToolStripMenuItem.Name = "FindToolStripMenuItem" + Me.FindToolStripMenuItem.Size = New System.Drawing.Size(42, 20) + Me.FindToolStripMenuItem.Text = "Find" + ' + 'ByIDToolStripMenuItem + ' + Me.ByIDToolStripMenuItem.Name = "ByIDToolStripMenuItem" + Me.ByIDToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.G), System.Windows.Forms.Keys) + Me.ByIDToolStripMenuItem.Size = New System.Drawing.Size(200, 22) + Me.ByIDToolStripMenuItem.Text = "By ID" + ' + 'ByTextToolStripMenuItem + ' + Me.ByTextToolStripMenuItem.Name = "ByTextToolStripMenuItem" + Me.ByTextToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.F), System.Windows.Forms.Keys) + Me.ByTextToolStripMenuItem.Size = New System.Drawing.Size(200, 22) + Me.ByTextToolStripMenuItem.Text = "By Text" + ' + 'ByRegistryToolStripMenuItem + ' + Me.ByRegistryToolStripMenuItem.Name = "ByRegistryToolStripMenuItem" + Me.ByRegistryToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.R), System.Windows.Forms.Keys) + Me.ByRegistryToolStripMenuItem.Size = New System.Drawing.Size(200, 22) + Me.ByRegistryToolStripMenuItem.Text = "By Registry" + ' + 'SearchResultsToolStripMenuItem + ' + Me.SearchResultsToolStripMenuItem.Name = "SearchResultsToolStripMenuItem" + Me.SearchResultsToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Shift Or System.Windows.Forms.Keys.F3), System.Windows.Forms.Keys) + Me.SearchResultsToolStripMenuItem.Size = New System.Drawing.Size(200, 22) + Me.SearchResultsToolStripMenuItem.Text = "Search Results" + ' + 'FindNextToolStripMenuItem + ' + Me.FindNextToolStripMenuItem.Name = "FindNextToolStripMenuItem" + Me.FindNextToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F3 + Me.FindNextToolStripMenuItem.Size = New System.Drawing.Size(200, 22) + Me.FindNextToolStripMenuItem.Text = "Find Next" + ' 'HelpToolStripMenuItem ' Me.HelpToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.AboutToolStripMenuItem}) @@ -241,6 +279,7 @@ Partial Class Main Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.CategoriesTree.BorderStyle = System.Windows.Forms.BorderStyle.None + Me.CategoriesTree.ContextMenuStrip = Me.PolicyObjectContext Me.CategoriesTree.HideSelection = False Me.CategoriesTree.ImageIndex = 0 Me.CategoriesTree.ImageList = Me.PolicyIcons @@ -272,6 +311,7 @@ Partial Class Main Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.PoliciesList.BorderStyle = System.Windows.Forms.BorderStyle.None Me.PoliciesList.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ChSettingName, ChSettingEnabled, ChSettingCommented}) + Me.PoliciesList.ContextMenuStrip = Me.PolicyObjectContext Me.PoliciesList.FullRowSelect = True Me.PoliciesList.HideSelection = False Me.PoliciesList.Location = New System.Drawing.Point(190, 0) @@ -361,38 +401,33 @@ Partial Class Main Me.PolicyIsPrefLabel.Text = "Because it is not stored in a Policies section of the Registry, this policy is a " & "preference and will not be automatically undone if the setting is removed." ' - 'ByTextToolStripMenuItem + 'PolicyObjectContext ' - Me.ByTextToolStripMenuItem.Name = "ByTextToolStripMenuItem" - Me.ByTextToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.F), System.Windows.Forms.Keys) - Me.ByTextToolStripMenuItem.Size = New System.Drawing.Size(152, 22) - Me.ByTextToolStripMenuItem.Text = "By Text" + Me.PolicyObjectContext.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.CmeCatOpen, Me.CmePolEdit, Me.CmeAllDetails}) + Me.PolicyObjectContext.Name = "PolicyObjectContext" + Me.PolicyObjectContext.Size = New System.Drawing.Size(110, 70) ' - 'ByRegistryToolStripMenuItem + 'CmeCatOpen ' - Me.ByRegistryToolStripMenuItem.Name = "ByRegistryToolStripMenuItem" - Me.ByRegistryToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.R), System.Windows.Forms.Keys) - Me.ByRegistryToolStripMenuItem.Size = New System.Drawing.Size(200, 22) - Me.ByRegistryToolStripMenuItem.Text = "By Registry" + Me.CmeCatOpen.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.CmeCatOpen.Name = "CmeCatOpen" + Me.CmeCatOpen.Size = New System.Drawing.Size(109, 22) + Me.CmeCatOpen.Tag = "C" + Me.CmeCatOpen.Text = "Open" ' - 'ToolStripSeparator4 + 'CmePolEdit ' - ToolStripSeparator4.Name = "ToolStripSeparator4" - ToolStripSeparator4.Size = New System.Drawing.Size(149, 6) + Me.CmePolEdit.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.CmePolEdit.Name = "CmePolEdit" + Me.CmePolEdit.Size = New System.Drawing.Size(109, 22) + Me.CmePolEdit.Tag = "P" + Me.CmePolEdit.Text = "Edit" ' - 'SearchResultsToolStripMenuItem + 'CmeAllDetails ' - Me.SearchResultsToolStripMenuItem.Name = "SearchResultsToolStripMenuItem" - Me.SearchResultsToolStripMenuItem.ShortcutKeys = CType((System.Windows.Forms.Keys.Shift Or System.Windows.Forms.Keys.F3), System.Windows.Forms.Keys) - Me.SearchResultsToolStripMenuItem.Size = New System.Drawing.Size(200, 22) - Me.SearchResultsToolStripMenuItem.Text = "Search Results" - ' - 'FindNextToolStripMenuItem - ' - Me.FindNextToolStripMenuItem.Name = "FindNextToolStripMenuItem" - Me.FindNextToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F3 - Me.FindNextToolStripMenuItem.Size = New System.Drawing.Size(200, 22) - Me.FindNextToolStripMenuItem.Text = "Find Next" + Me.CmeAllDetails.Name = "CmeAllDetails" + Me.CmeAllDetails.Size = New System.Drawing.Size(109, 22) + Me.CmeAllDetails.Text = "Details" ' 'Main ' @@ -415,6 +450,7 @@ Partial Class Main Me.SettingInfoPanel.PerformLayout() Me.PolicyInfoTable.ResumeLayout(False) Me.PolicyInfoTable.PerformLayout() + Me.PolicyObjectContext.ResumeLayout(False) Me.ResumeLayout(False) Me.PerformLayout() @@ -451,4 +487,8 @@ Partial Class Main Friend WithEvents ByRegistryToolStripMenuItem As ToolStripMenuItem Friend WithEvents SearchResultsToolStripMenuItem As ToolStripMenuItem Friend WithEvents FindNextToolStripMenuItem As ToolStripMenuItem + Friend WithEvents PolicyObjectContext As ContextMenuStrip + Friend WithEvents CmeCatOpen As ToolStripMenuItem + Friend WithEvents CmePolEdit As ToolStripMenuItem + Friend WithEvents CmeAllDetails As ToolStripMenuItem End Class diff --git a/PolicyPlus/Main.resx b/PolicyPlus/Main.resx index 679b821..21b4d72 100644 --- a/PolicyPlus/Main.resx +++ b/PolicyPlus/Main.resx @@ -132,11 +132,14 @@ False + + False + 17, 17 - - False + + 239, 17 127, 17 @@ -145,195 +148,194 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADi - KwAAAk1TRnQBSQFMAgEBCgEAAYABAAGAAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA - AwABMAMAAQEBAAEgBgABMP8AIwADGQEjA0UBfQFWAVoBdQHbAUEBUgGaAfMBPwFMAZoB8wFUAVoBdQHb - A0UBfQMZASPcAAMzAVMBVQFYAYQB5gE3AU0BzAH/AXABdQHoAf8BjwGSAe4B/wGPAZIB7gH/AWwBcwHk - Af8BLgFIAcEB/wFNAVgBgwHmAzMBU9QAAzMBUwFSAVUBpQH0AVcBYAHgAf8BoQGmAfUB/wF5AYYB7wH/ - AVYBXgHpAf8BVAFYAecB/wF4AYQB7gH/AZ4BoAH0Af8BTAFYAdcB/wE9AVIBlgH0AzMBU8wAAxgBIgFb - AV4BhwHlAVwBZgHjAf8BoQGsAfUB/wFPAVoB7AH/AUsBVwHqAf8BSAFUAekB/wFJAVQB5gH/AUcBUQHm - Af8BSwFRAeYB/wGeAaIB9AH/AU8BWwHWAf8BTgFXAX8B5QMYASIwAAFWAVcBVgG4AwQBBpAAA0YBfgFG - AVEB2wH/AaIBqwH2Af8BUQFfAfAB/wFNAWEB7gH/AUgBVAHpAf8BSAFUAekB/wFIAVQB6QH/AUgBVAHp - Af8BRwFTAeYB/wFNAVUB5gH/AZ8BowH1Af8BLwFLAcQB/wFFAkYBfiwAAyYBOAE1AWkBNgH3AVIBXgFS - AdmQAAFeAV8BewHbAYEBjAHuAf8BeQGRAfcB/wFYAW4B8wH/AUgBVAHpAf8BSAFUAekB/wFIAVQB6QH/ - AUgBVAHpAf8BSAFUAekB/wFIAVQB6QH/AUoBVgHpAf8BdgGDAfAB/wFwAXYB4gH/AVQBWgF1AdsIAAFc - Ab4BaAH/AVgBuAFjAf8BUwGxAV0B/wFOAakBVwH/AUgBoQFRAf8BQgGZAUoB/wE8AZEBRAH/ATYBiAE9 - Af8BMAGAATYB/wE6AYgBQAH/AVQBoQFZAf8BPwGLAUQB/wFWAVwBVgHPjAABXwFiAbIB9gGhAasB9wH/ - AWsBhgH4Af8BYwGCAfYZ/wFIAVQB6QH/AVcBYQHqAf8BlgGcAfEB/wE4AUwBngH2CAABYAHDAWwB/wGg - AdcBqQH/AZwB1QGlAf8BmAHTAaEB/wGUAdABnQH/AZABzgGYAf8BiwHLAZMB/wGHAckBjgH/AYIBxgGJ - Af8BeQHDAYQB/wF1AcEBgAH/AXEBvgF3Af8BQAGMAUUB/wFUAVsBVwHEiAACYgGzAfYBrwG5AfkB/wF6 - AZMB+gH/AWsBhQHwGf8BSAFUAekB/wFZAWUB7gH/AZYBnQHxAf8BPwFLAaEB9ggAAWMBxwFvAf8BpQHa - Aa4B/wGiAdgBqwH/AZ4B1gGnAf8BmgHUAaMB/wGWAdIBnwH/AZMBzwGaAf8BjgHMAZUB/wGJAcoBkAH/ - AYUBxwGLAf8BgQHFAYcB/wF4AcIBggH/AUUBkQFLAf8BVgFcAVYByYgAAl8BewHbAaUBrwH1Af8BnQGr - AfoB/wFyAYwB8AH/AU8BWgHsAf8BTwFaAewB/wFPAVoB7AH/AU8BWgHsAf8BTwFaAewB/wFPAVoB7AH/ - AV4BcgHyAf8BgQGOAfQB/wFzAXoB6QH/AVYBWgF1AdsIAAFjAccBbwH/AWMBxwFvAf8BYAHDAWwB/wFc - Ab4BaAH/AVgBuAFjAf8BUwGxAV0B/wFOAakBVwH/AUgBoQFRAf8BQgGZAUoB/wE8AZEBRAH/AVUBowFd - Af8BUAGdAVcB/wFVAWABVwHRjAADRgF+AXgBgwHqAf8BzQHUAfwB/wGLAZ0B+gH/AXkBkwH3Af8BcAGK - Ae4B/wFnAYQB9gH/AWcBhAH2Af8BZwGEAfYB/wFnAYQB9gH/AV4BdAHzAf8BpAGvAfgB/wE5AUoB0AH/ - AUUCRgF+MAABSwGIAVEB9wFWAWYBWAHbkAADGAEiAmUBjwHlAaMBpwHzAf8B1AHbAf0B/wGHAZoB+gH/ - AXoBkQHwAf8BdQGOAfEB/wF6AZQB+AH/AXkBkgH5Af8BcQGMAfgB/wGoAbYB+AH/AV4BaQHjAf8BVgFe - AYcB5QMYASIwAAFWAVsBVgG7AwQBBpQAAzMBUwJlAbEB9AGqAa0B8gH/AdgB3AH9Af8BrgG6AfoB/wGR - AaMB+gH/AYsBnQH6Af8BnAGpAfsB/wG6AccB/AH/AWsBdgHpAf8BUgFXAaYB9AMzAVPUAAMzAVMCZAGN - AeYBjgGTAe0B/wG+AcMB+AH/AcwB0wH5Af8BxAHLAfkB/wGqAbQB9AH/AWEBawHiAf8BWAFhAYsB5gMz - AVPcAAMZASMDRQF9Al8BewHbAl8BrQHzAl8BqwHzAV4BXwF7AdsDRQF9AxkBI/8A1QADFQEdAyMBNAMk - ATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDIwEzAxUBHQgAAxUBHQMjATQDJAE2 - AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2A2IB/wNMAf8DJAE2AyMBMwMVAR1IAAMVAR0DIwE0AyQBNgMk - ATYBTgFpAXwB8AE+AXcBmQH4AT4BdwGZAfgBPgF2AZkB+AE+AXUBmAH4AT0BdAGYAfgBPQFyAZgB+AE8 - AXABlwH4ATwBbgGXAfgBOgFtAZIB9wFZAlsBwwQAAyMBNAOHAfUDzQH9A/wB/wP8Af8D/AH/A/wB/wP8 - Af8D/AH/A/wB/wP8Af8DzQH9A4IB8wMjATMIAAMjATQDhwH1A80B/QP8Af8D/AH/A/wB/wO1Af8DWQH/ - A9YB/wOiAf8DiwH/A6kB/gNOAf8DWQHHHAABHAFiASEB/wEZAV0BHQH/ARUBWAEZAf8BEgFUARYB/xwA - AyMBNAOiAfUD3wH9A/wB/wFDAZwBzgH/Ad0B7AH2Af8BvQHuAfkB/wGsAeoB+AH/AasB6gH4Af8BqwHq - AfgB/wGrAeoB+AH/Aa0B6gH4Af8B1AHzAfsB/wGkAcgB5AH/AVQCVgGrAwABAQMkATYD3QH+A/wB/wP8 - Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wPNAf0DJAE2BwABAQMkATYD3QH+A/wB/wP8 - Af8D/AH/A/wB/wOgAf8DyQH/A6UB/wPKAf8DwgH/A6EB/wPEAf8DXQH/AwIBAxgAASEBaQEnAf8BaAG9 - AW4B/wFmAb0BbAH/ARYBWQEaAf8bAAEBAyQBNgPpAf4D/AH/A/wB/wGtAdIB6AH/AY4BwgHhAf8BlwHo - AfkB/wFXAdwB9gH/AVEB2wH1Af8BKAGIAcIB/wFRAdsB9QH/AWAB3gH2Af8BsQHnAfYB/wFRAWUBeQHu - Ax0BKgMAAQEDJAE2A/wB/wP8Af8D/AH/A/wB/wP8Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D/AH/ - AyQBNgMAAQEDAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8D9gH/A8sB/wPJAf8DvQH/A5wB/wOaAf8DtQH/ - A8IB/wNWAbEDDgETGAABJwFxAS0B/wFtAcABcgH/AWoBvwFwAf8BGgFfAR8B/xsAAQEDJAE2A/wB/wP8 - Af8D/AH/AfgB+gH7Af8BXgGxAdgB/wGrAdsB7wH/AWoB4AH3Af8BTgHaAfUB/wFOAdoB9QH/AVMB2wH1 - Af8BkAHmAfgB/wGSAcEB4QH/A04BmQMAAQEDAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8D+wH/A/sB/wP6 - Af8D+gH/A/oB/wP6Af8D+gH/A/wB/wMkATYDAAEBAwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A6UB/wO3 - Af8D4QH/A5wB/wP6Af8D+gH/A5sB/wPVAf8DmQH/A1UB/xgAAS0BhQEzAf8BcQHCAYIB/wFuAcEBgAH/ - AR8BZgEkAf8bAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8ByQHjAfAB/wFxAb0B3wH/AaIB6gH5Af8BVwHc - AfYB/wEnAYcBwgH/AW0B4QH3Af8BtgHeAfAB/wFPAaUB0gH/AyoBQAMAAQEDAAEBAyQBNgP8Af8D/AH/ - A/wB/wP8Af8D+wH/A/sB/wP7Af8D+gH/A/oB/wP4Af8D+AH/A/wB/wMkATYDAAEBAwABAQMkATYD/AH/ - A/wB/wP8Af8D/AH/A7QB/wPKAf8D6AH/A4YB/wP6Af8D+AH/A5oB/wPiAf8DtgH/A4cB/xgAATMBjQE6 - Af8BgQHFAYcB/wFyAcMBhQH/ASUBbgEqAf8bAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8C+gH7Af8BjAHH - AeMB/wGsAdkB7AH/AYIB4wH4Af8BKQGIAcIB/wGsAe0B+gH/AToBngHPAf8BvwHcAe0B/wMkATYDAAEB - AwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/sB/wP5Af8D+QH/A/gB/wP8Af8DJAE2 - AwABAQMAAQEDJAE2A/wB/wP8Af8D/AH/A/wB/wP8Af8D1gH/A9IB/wOrAf8DgQH/A4oB/wO0Af8DygH/ - A1YBswMAAQEYAAE5AZUBQAH/AYUBxwGMAf8BggHGAYkB/wEqAYIBMQH/GwABAQMkATYD/AH/A/wB/wP8 - Af8D/AH/A/wB/wHgAfAB9gH/AVMBtAHaAf8BtAHrAfgB/wGOAeYB+AH/AbUB3QHuAf8BdAG/Ad4B/wH4 - AfoB+wH/AyQBNgMAAQEDAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D+gH/A/kB/wP2 - Af8D9gH/A/wB/wMkATYDAAEBAwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/wB/wO6Af8D2gH/A78B/wPW - Af8D2AH/A7gB/wPUAf8DiAH/AwgBCxgAAT4BngFHAf8BigHKAZEB/wGHAckBjgH/ATABigE3Af8bAAEB - AyQBNgP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wGqAdkB7AH/AaQB1wHrAf8B3AH0AfsB/wFRAbMB2QH/ - AdMB5wHvAf8D/AH/AyQBNgMAAQEDAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP7Af8D+AH/ - A/YB/wPzAf8D8gH/A/wB/wMkATYDAAEBAwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/wB/wPfAf8DvgH/ - A+oB/wPAAf8DvgH/A+AB/wOxAf8DVAGuAwABARgAAUQBpgFNAf8BjgHMAZUB/wGLAcsBkwH/ATYBkgE+ - Af8bAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wHyAfcB+QH/AWkBxAHhAf8BqwHbAe0B/wGd - AdIB5gH/A/IB/wP8Af8DJAE2AwABAQMAAQEDJAE2A/wB/wP8Af8D/AH/A/wB/wP8Af8D+wH/A/gB/wP1 - Af8D8gH/A+8B/wPtAf8D/AH/AyQBNgMAAQEDAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8D/AH/A/sB/wP4 - Af8D9QH/A7oB/wO0Af8D7QH/A/wB/wMkATYDAAEBGAABSgGtAVMB/wGTAc8BmgH/AZABzgGYAf8BPAGa - AUQB/xsAAQEDJAE2A/wB/wP8Af8D/AH/A/wB/wP8Af8D+wH/A/gB/wHDAeMB7gH/AXIByAHiAf8B4gHr - Ae0B/wPtAf8D/AH/AyQBNgMAAQEDAAEBAyQBNgP8Af8D+wH/A/wB/wP8Af8D+wH/A/gB/wP1Af8D8QH/ - A+wB/wPqAf8D5gH/A/wB/wMkATYDAAEBAwABAQMkATYD/AH/A/sB/wP8Af8D/AH/A/sB/wP4Af8D9QH/ - A/EB/wPsAf8D6gH/A+YB/wP8Af8DJAE2AwABARgAAU8BtAFZAf8BlgHSAZ8B/wGUAdABnAH/AVEBrAFZ - Af8DJgE4FwABAQMkATYD/AH/A/sB/wP8Af8D/AH/A/sB/wP4Af8D9QH/A/EB/wPsAf8D6gH/A+YB/wP8 - Af8DJAE2AwABAQMAAQEDJAE2A/wB/wP5Af8D+QH/A/kB/wP3Af8D9gH/A/IB/wPrAf8D/AH/A/wB/wP8 - Af8D/AH/AyQBNgMAAQEDAAEBAyQBNgP8Af8D+QH/A/kB/wP5Af8D9wH/A/YB/wPyAf8D6wH/A/wB/wP8 - Af8D/AH/A/wB/wMkATYDAAEBEAADWAG7AWIBjQFtAfcBbQHGAYMB/wGaAdQBowH/AZgB0wGhAf8BcQHD - AYYB/wFRAYYBUgH3AVYBVwFWAbgTAAEBAyQBNgP8Af8D+QH/A/kB/wP5Af8D9wH/A/YB/wPyAf8D6wH/ - A/wB/wP8Af8D/AH/A/wB/wMkATYDAAEBAwABAQMkATYD/AH/A/cB/wP5Af8D9wH/A/cB/wPzAf8D8AH/ - A+oB/wP8Af8D9gH/A/QB/wNNAZEDFwEgBwABAQMkATYD/AH/A/cB/wP5Af8D9wH/A/cB/wPzAf8D8AH/ - A+oB/wP8Af8D9gH/A/QB/wNNAZEDFwEgFAADBAEGA18B2wFwAcoBhwH/AZ4B1gGnAf8BnAHUAaUB/wFn - AcABcQH/AVsCXgHZAwQBBhMAAQEDJAE2A/wB/wP3Af8D+QH/A/cB/wP3Af8D8wH/A/AB/wPqAf8D/AH/ - A/YB/wP0Af8DTQGRAxcBIAgAAyQBNgPMAf0D9AH/A/UB/wP1Af8D9QH/A/EB/wPvAf8D6QH/A/wB/wPn - Af8DTQGRAxcBIAMBAQIIAAMkATYDzAH9A/QB/wP1Af8D9QH/A/UB/wPxAf8D7wH/A+kB/wP8Af8D5wH/ - A00BkQMXASADAQECHAADXAHRAXIBygGIAf8BbwHIAYUB/wNcAc8cAAMkATYD3gH9A/QB/wP1Af8D9QH/ - A/UB/wPxAf8D7wH/A+kB/wP8Af8D5wH/A00BkQMXASADAQECCAADIwEzA3IB8APMAf0D/AH/A/wB/wP8 - Af8D/AH/A/wB/wP8Af8D+AH/A00BkQMXASADAQECDAADIwEzA3IB8APMAf0D/AH/A/wB/wP8Af8D/AH/ - A/wB/wP8Af8D+AH/A00BkQMXASADAQECJAADXAHJA1sBxCAAAyMBMwOKAfAD3gH9A/wB/wP8Af8D/AH/ - A/wB/wP8Af8D/AH/A/gB/wNNAZEDFwEgAwEBAgwAAxQBHAMjATMDJAE2AyQBNgMkATYDJAE2AyQBNgMk - ATYDJAE2AyQBNgMXASADAQECEAADFAEcAyMBMwMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2 - AxcBIAMBAQJQAAMUARwDIwEzAyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDFwEgAwEBAmAA - AVkBZAFoAewBSAFiAXsB9gFHAWIBeQH2AUUBYgF5AfYBQwFiAXkB9gFDAWIBeQH2AUEBYgF5AfYBQQFi - AXkB9gFBAWIBeQH2AT8BYgF5AfYBWQJbAcMoAANDAXgCVwFcAd8BBAFCAZ0B/gJYAV8B4wNEAXosAAFY - AWABWQHrAQABawEOAf8DAwEEYAABWgJhAeQB3QHsAfYB/wG9Ae4B+QH/AawB6gH4Af8BqwHqAfgB/wGr - AeoB+AH/AasB6gH4Af8BrQHqAfgB/wHUAfMB+wH/AaQByAHkAf8BVAJWAaskAAFGAkcBgAEmAV8BlgH7 - AREBZwHmAf8BAAFpAeoB/wEAAVQB3QH/ARQBNwGXAfwDRAF6KAABWAFhAVkB6wEzAaEBTwH/AVkBXAFZ - AcwDBAEGDAADQAFwAVICVAGmAVUBXQFlAeoBRAFtAYwB9wFEAW0BjAH3AUQBbQGMAfcBRAFtAYwB9wFE - AW0BjAH3AUQBbQGMAfcBRAFtAYwB9wFEAW0BjAH3AUQBbQGMAfcBUwFlAXcB8QNMAZMYAAM+AWsBjgHC - AeEB/wGXAegB+QH/AVEB3AH2Af8BSwHbAfUB/wEiAYgBwgH/AUsB2wH1Af8BWgHeAfYB/wGxAecB9gH/ - AVgBYgFjAekDHQEqBAADQAFwAVICVAGmAVUBXQFlAeoBRAFtAYwB9wFEAW0BjAH3AUQBbQGMAfcBRAFt - AYwB9wFEAW0BjAH3AQcBTAGdAf4BUwGdAfQB/wEIAW8C/wEAAWYB+AH/AQABZgHuAf8BAAFYAeEB/wJa - AWEB5BgAATEBlwFCAf0BKwGRAUAB/QElAY8BQAH9AR8BiwFAAf0BKgGfAU4B/wGAAcEBlgH/ATYBowFS - Af8BWAFcAVgB0QMFAQcIAAFYAWEBZgHmAW4BcgF0AfABpwG5AcUB/QGeAdsB9AH/AZYB2gHzAf8BjgHY - AfMB/wGGAdcB8wH/AW8B1AHyAf8BaQHTAfIB/wFiAdIB8QH/AVwB0AHxAf8BWQHPAfEB/wGjAcsB2QH+ - AU4BYwFsAfAIAANAAXABUgJUAaYBVQFdAWUB6gFEAW0BjAH3AUYBbgGMAfcBQAGaAbUB/QGrAdsB7wH/ - AWQB4AH3Af8BSAHaAfUB/wFIAdoB9QH/AU0B2wH1Af8BkAHmAfgB/wGSAcEB4QH/A1sByAgAAVgBYQFm - AeYBbgFyAXQB8AGnAbkBxQH9AZ4B2wH0Af8BlgHaAfMB/wGOAdgB8wH/AYYB1wHzAf8BbwHUAfIB/wEA - ATMBvAH/Aa4BzQH+Df8BCAFvAe8B/wEEAUIBnQH+BAADQAFwAVICVAGmAVUBXQFlAeoBRAFtAYwB9wFE - AW0BjAH3ARkBmwFLAf8BkAHKAakB/wGNAcgBpQH/AYoBxgGhAf8BiAHFAZ4B/wFaAbYBhQH/AYIBwgGX - Af8BOAGlAVYB/wFTAWEBVAHuAwcBCQQAAUwBegGOAfcB7wH6Af4B/wGhAekB+QH/AZEB5QH4Af8BgQHh - AfcB/wFiAd4B9gH/AVMB2gH1Af8BRAHXAfQB/wE3AdMB8wH/ASkB0AHyAf8BHgHNAfEB/wEWAcsB8AH/ - AcoB8gH7Af8BTAF6AY4B9wgAAVgBYQFmAeYBbgFyAXQB8AGnAbkBxQH9AZ4B2wH0Af8BlgHaAfMB/wFr - AcoB6gH/AWsBvQHfAf8BogHqAfkB/wFRAdwB9gH/ASEBhwHCAf8BZwHhAfcB/wG2Ad4B8AH/AUABogHR - Af8BUwFnAXcB8QgAAUwBegGOAfcB7wH6Af4B/wGhAekB+QH/AZEB5QH4Af8BgQHhAfcB/wFiAd4B9gH/ - AVMB2gH1Af8BRAHXAfQB/wEAAUcBwQH/AY0BtQH2Af8BPQGSAv8BAQFnAv8BEQGGAv8BMAGKAesB/wJa - AWAB3gQAAVgBYQFmAeYBbgFyAXQB8AGnAbkBxQH9AZ4B2wH0Af8BlgHaAfMB/wEhAZ8BUwH/AZQBzQGt - Af8BXwG6AY4B/wFbAbgBiQH/AVYBtgGFAf8BUQGzAYAB/wFXAbUBggH/AYMBwgGYAf8BLAGgAUwB/wEn - AWoBQQH5BAABPgF5AZUB+AHyAfoB/QH/AbMB7QH6Af8BpAHpAfkB/wGVAeYB+AH/AYUB4gH3Af8BZgHe - AfYB/wFVAdsB9QH/AUcB1wH0Af8BOQHUAfMB/wErAdEB8gH/ASABzgHxAf8BzAHyAfsB/wFMAX0BjgH3 - CAABTAF6AY4B9wHvAfoB/gH/AaEB6QH5Af8BkQHlAfgB/wGBAeEB9wH/AWIB3gH2Af8BRQG7AeEB/wGs - AdkB7AH/AYIB4wH4Af8BIwGIAcIB/wGsAe0B+gH/ATMBngHPAf8BnQHWAewB/wFMAXoBjgH3CAABPgF5 - AZUB+AHyAfoB/QH/AbMB7QH6Af8BpAHpAfkB/wGVAeYB+AH/AYUB4gH3Af8BZgHeAfYB/wFVAdsB9QH/ - ASwBmwHeAf8BKAFlAdIB/wGNAbUB9wH/AbgB1gH+Af8BYgGoAfUB/wEdAVwBywH/Az8BbQQAAUwBegGO - AfcB7wH6Af4B/wGhAekB+QH/AZEB5QH4Af8BgQHhAfcB/wEnAaMBWwH/AZYBzgGwAf8BlAHNAa0B/wGR - AcsBqgH/AZABywGoAf8BZAG8AZAB/wGKAccBoQH/ATYBpQFYAf8BAAGHASgB/wMAAQEEAAFBAYQBlQH5 - AfYB/AH+Af8ByAHyAfwB/wG5Ae8B+wH/AawB7AH6Af8BnAHoAfkB/wGLAeMB9wH/AWwB4AH2Af8BXAHc - AfYB/wFNAdkB9QH/AT8B1gH0Af8BNAHTAfMB/wHQAfMB/AH/AUwBgAGOAfcIAAE+AXkBlQH4AfIB+gH9 - Af8BswHtAfoB/wGkAekB+QH/AZUB5gH4Af8BhQHiAfcB/wFgAdcB8QH/AUIBsgHZAf8BtAHrAfgB/wGO - AeYB+AH/AbUB3QHuAf8BMQGyAdwB/wHJAfAB+gH/AUwBfQGOAfcIAAFBAYQBlQH5AfYB/AH+Af8ByAHy - AfwB/wG5Ae8B+wH/AawB7AH6Af8BnAHoAfkB/wGLAeMB9wH/AWwB4AH2Af8BXAHcAfYB/wEvAZwB3gH/ - AQYBTQHGAf8BAAEzAbwB/wEKAUkBwQH/ASEBXwGWAfsIAAE+AXkBlQH4AfIB+gH9Af8BswHtAfoB/wGk - AekB+QH/AZUB5gH4Af8BLQGlAV8B/wEoAaQBXwH/ASQBogFZAf8BIAGeAVMB/wFFAa8BbAH/AZEBywGq - Af8BPwGrAWQB/wEKAZEBOAH/AUwBfQGNAfcIAAFHAX4BngH6Af4D/wH4Af0C/wH2Af0C/wH1AfwC/wHz - AfwB/gH/AdgB9gH8Af8BlAHmAfgB/wGFAeMB9wH/AWYB3wH2Af8BWAHbAfUB/wFMAdgB9AH/AdcB9AH8 - Af8BTAGCAY4B9wgAAUEBhAGVAfkB9gH8Af4B/wHIAfIB/AH/AbkB7wH7Af8BrAHsAfoB/wGcAegB+QH/ - AYsB4wH3Af8BWQHLAekB/wGkAdcB6wH/AdwB9AH7Af8BQQGxAdkB/wE2AcsB7QH/AdAB8wH8Af8BTAGA - AY4B9wgAAUcBfgGeAfoB/gP/AfgB/QL/AfYB/QL/AfUB/AL/AfMB/AH+Af8B2AH2AfwB/wGUAeYB+AH/ - AYUB4wH3Af8BZgHfAfYB/wFYAdsB9QH/AUwB2AH0Af8B1wH0AfwB/wFMAYIBjgH3CAABQQGEAZUB+QH2 - AfwB/gH/AcgB8gH8Af8BuQHvAfsB/wGsAewB+gH/AZwB6AH5Af8BiwHjAfcB/wFsAeAB9gH/AVwB3AH2 - Af8BJAGkAV4B/wFKAbMBgQH/ARgBmAFHAf8B0AHzAfwB/wFMAYABjgH3CAABRQGDAZ4B+gHoAfYB+wH/ - AZQB1AHvAf8BiAHOAe4B/wFjAcEB6QH/AckB6QH2Af8B8gH8Af4B/wHzAfwB/gH/AfIB/AH+Af8B8AH8 - Af4B/wHvAfsB/gH/Ae4B+wH+Af8B/gP/AU4BhAGOAfcIAAFHAX4BngH6Af4D/wH4Af0C/wH2Af0C/wH1 - AfwC/wHzAfwB/gH/AdgB9gH8Af8BkQHkAfcB/wFQAcEB4QH/AasB2wHtAf8BTgHHAecB/wFMAdgB9AH/ - AdcB9AH8Af8BTAGCAY4B9wgAAUUBgwGeAfoB6AH2AfsB/wGUAdQB7wH/AYgBzgHuAf8BYwHBAekB/wHJ - AekB9gH/AfIB/AH+Af8B8wH8Af4B/wHyAfwB/gH/AfAB/AH+Af8B7wH7Af4B/wHuAfsB/gH/Af4D/wFO - AYQBjgH3CAABRwF+AZ4B+gH+A/8B+AH9Av8B9gH9Av8B9QH8Av8B8wH8Af4B/wHYAfYB/AH/AZQB5gH4 - Af8BhQHjAfcB/wEsAagBZgH/ASEBnwFVAf8BTAHYAfQB/wHXAfQB/AH/AUwBggGOAfcIAAFVAW8BeQHy - AfEB+gH9Af8BlAHeAfUB/wGTAdwB9AH/AYEB1QHyAf8BWgHKAe0B/wFcAcsB6gH/AYUB0wHvAf8BgAHS - Ae8B/wFqAdAB7wH/AWYBzwHuAf8BYgHPAe4B/wHpAfcB+wH/AUwBcAF+AfMIAAFFAYMBngH6AegB9gH7 - Af8BlAHUAe8B/wGIAc4B7gH/AWMBwQHpAf8ByQHpAfYB/wHyAfwB/gH/AfMB/AH+Af8BwQHoAfQB/wFs - AcsB5QH/AeIB9QH7Af8B7gH7Af4B/wH+A/8BTgGEAY4B9wgAAVUBbwF5AfIB8QH6Af0B/wGUAd4B9QH/ - AZMB3AH0Af8BgQHVAfIB/wFaAcoB7QH/AVwBywHqAf8BhQHTAe8B/wGAAdIB7wH/AWoB0AHvAf8BZgHP - Ae4B/wFiAc8B7gH/AekB9wH7Af8BTAFwAX4B8wgAAUUBgwGeAfoB6AH2AfsB/wGUAdQB7wH/AYgBzgHu - Af8BYwHBAekB/wHJAekB9gH/AfIB/AH+Af8B8wH8Af4B/wHyAfwB/gH/AfAB/AH+Af8B7wH7Af4B/wHu - AfsB/gH/Af4D/wFOAYQBjgH3CAABTgFoAW4B8AH3AfwB/gH/AY4B5AH4Af8BkQHeAfUB/wGfAeAB9QH/ - AawB4QH2Af8B7wH7Af4B/wH0Af0B/gH/AfMB/AH+Af8B8QH8Af4B/wHvAfsB/gH/Ae4B+wH+Af8BpgGp - AaoB+QFcAmAB1AgAAVUBbwF5AfIB8QH6Af0B/wGUAd4B9QH/AZMB3AH0Af8BgQHVAfIB/wFaAcoB7QH/ - AVwBywHqAf8BhQHTAe8B/wGAAdIB7wH/AWoB0AHvAf8BZgHPAe4B/wFiAc8B7gH/AekB9wH7Af8BTAFw - AX4B8wgAAU4BaAFuAfAB9wH8Af4B/wGOAeQB+AH/AZEB3gH1Af8BnwHgAfUB/wGsAeEB9gH/Ae8B+wH+ - Af8B9AH9Af4B/wHzAfwB/gH/AfEB/AH+Af8B7wH7Af4B/wHuAfsB/gH/AaYBqQGqAfkBXAJgAdQIAAFV - AW8BeQHyAfEB+gH9Af8BlAHeAfUB/wGTAdwB9AH/AYEB1QHyAf8BWgHKAe0B/wFcAcsB6gH/AYUB0wHv - Af8BgAHSAe8B/wFqAdAB7wH/AWYBzwHuAf8BYgHPAe4B/wHpAfcB+wH/AUwBcAF+AfMIAAE+AYIBlQH4 - Af0C/gH/Af4D/wL+Av8B/QH+Av8B/gP/AeoB9wH7Af8BagGOAZoB+QFcAY4BmAH4AVwBjgGYAfgBXAGO - AZgB+AFtAYoBkgH3A2EB4QM1AVYIAAFOAWgBbgHwAfcB/AH+Af8BjgHkAfgB/wGRAd4B9QH/AZ8B4AH1 - Af8BrAHhAfYB/wHvAfsB/gH/AfQB/QH+Af8B8wH8Af4B/wHxAfwB/gH/Ae8B+wH+Af8B7gH7Af4B/wGm - AakBqgH5AVwCYAHUCAABPgGCAZUB+AH9Av4B/wH+A/8C/gL/Af0B/gL/Af4D/wHqAfcB+wH/AWoBjgGa - AfkBXAGOAZgB+AFcAY4BmAH4AVwBjgGYAfgBbQGKAZIB9wNhAeEDNQFWCAABTgFoAW4B8AH3AfwB/gH/ - AY4B5AH4Af8BkQHeAfUB/wGfAeAB9QH/AawB4QH2Af8B7wH7Af4B/wH0Af0B/gH/AfMB/AH+Af8B8QH8 - Af4B/wHvAfsB/gH/Ae4B+wH+Af8BpgGpAaoB+QFcAmAB1AgAAVsCXgHQAU0BkgGiAfoBTQGTAaIB+gFN - AZMBogH6AU0BkwGiAfoBTQGTAaIB+gFYAl4B3QMQARYDCwEPAwsBDwMLAQ8DCwEPAwsBDwMDAQQIAAE+ - AYIBlQH4Af0C/gH/Af4D/wL+Av8B/QH+Av8B/gP/AeoB9wH7Af8BagGOAZoB+QFcAY4BmAH4AVwBjgGY - AfgBXAGOAZgB+AFtAYoBkgH3A2EB4QM1AVYIAAFbAl4B0AFNAZIBogH6AU0BkwGiAfoBTQGTAaIB+gFN - AZMBogH6AU0BkwGiAfoBWAJeAd0DEAEWAwsBDwMLAQ8DCwEPAwsBDwMLAQ8DAwEECAABPgGCAZUB+AH9 - Av4B/wH+A/8C/gL/Af0B/gL/Af4D/wHqAfcB+wH/AWoBjgGaAfkBXAGOAZgB+AFcAY4BmAH4AVwBjgGY - AfgBbQGKAZIB9wNhAeEDNQFWSAABWwJeAdABTQGSAaIB+gFNAZMBogH6AU0BkwGiAfoBTQGTAaIB+gFN - AZMBogH6AVgCXgHdAxABFgMLAQ8DCwEPAwsBDwMLAQ8DCwEPAwMBBEgAAVsCXgHQAU0BkgGiAfoBTQGT - AaIB+gFNAZMBogH6AU0BkwGiAfoBTQGTAaIB+gFYAl4B3QMQARYDCwEPAwsBDwMLAQ8DCwEPAwsBDwMD - AQT/AP8ABgABQgFNAT4HAAE+AwABKAMAAUADAAEwAwABAQEAAQEFAAGAAQEWAAP/AQAE/wQAAfABDwL/ - BAAB4AEHAv8EAAHAAQMC/wQAAYABAQH/AecEAAGAAQEB/wHHBAABgAEBAYABAwQAAYABAQGAAQEEAAGA - AQEBgAEBBAABgAEBAYABAwQAAYABAQH/AecEAAGAAQEB/wHnBAABwAEDAv8EAAHgAQcC/wQAAfABDwL/ - BAAE/wQAAYABAQGAAQEC/wGAAQABgAEBAYABAQH8AT8BgAIAAQECAAH8AT8GAAH8AT8GAAH8AT8GAAH8 - AT8GAAH8AT8GAAH8AT8GAAH8AT8GAAH8AT8GAAH8AR8GAAHwAQ8DAAEBAQABAQHwAQ8BAAEBAYABAQGA - AQEB/AE/AYABAQGAAQMBgAEDAf4BfwGAAQMBgAEHAYABBwL/AYABBwL/AfgBAAH/AcEB/wHHAv8B+AEA - Af8BgAH/AcMBgAEBAfgBAAGAAQAB/AEBAYABAQGAAQEBgAEAAYABAAGAAQEBgAEBAYABAAGAAQABgAEB - AYABAQGAAQABgAEAAYABAQGAAQEBgAEBAYABAQGAAQEBgAEBAYABAQGAAQEBgAEBAYABAQGAAQEBgAEB + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADO + KwAAAk1TRnQBSQFMAgEBCgEAAZABAAGQAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABMAMAAQEBAAEgBgABMP8AIwADGQEjA0UBfQJaAWoB2wFHAVIBkQHzAUQBTAGRAfMBWAFaAWoB2wNF + AX0DGQEj3AADMwFTAlgBeQHmATUBSwHMAf8BbgFzAegB/wGPAZIB7gH/AY8BkgHuAf8BagFxAeQB/wEs + AUYBwQH/AVIBWAF4AeYDMwFT1AADMwFTAVIBUwGaAfQBVQFeAeAB/wGhAaYB9QH/AXcBhgHvAf8BVAFc + AekB/wFSAVYB5wH/AXYBhAHuAf8BngGgAfQB/wFKAVYB1wH/AT8BUgGOAfQDMwFTzAADGAEiAl4BeQHl + AVoBZAHjAf8BoQGsAfUB/wFNAVgB7AH/AUkBVQHqAf8BRgFSAekB/wFHAVIB5gH/AUUBTwHmAf8BSQFP + AeYB/wGeAaIB9AH/AU0BWQHWAf8BVAFZAXYB5QMYASIwAAFWAVcBVgG4AwQBBpAAA0YBfgFEAU8B2wH/ + AaIBqwH2Af8BTwFdAfAB/wFLAV8B7gH/AUYBUgHpAf8BRgFSAekB/wFGAVIB6QH/AUYBUgHpAf8BRQFR + AeYB/wFLAVMB5gH/AZ8BowH1Af8BLQFJAcQB/wFFAkYBfiwAAyYBOAE3AWkBOAH3AVYBXgFWAdmQAAFe + AV8BcAHbAYEBjAHuAf8BdwGRAfcB/wFWAWwB8wH/AUYBUgHpAf8BRgFSAekB/wFGAVIB6QH/AUYBUgHp + Af8BRgFSAekB/wFGAVIB6QH/AUgBVAHpAf8BdAGDAfAB/wFuAXQB4gH/AVgBWgFqAdsIAAFaAb4BZgH/ + AVYBuAFhAf8BUQGxAVsB/wFMAakBVQH/AUYBoQFPAf8BQAGZAUgB/wE6AZEBQgH/ATQBiAE7Af8BLgGA + ATQB/wE4AYgBPgH/AVIBoQFXAf8BPQGLAUIB/wFZAVwBWQHPjAABXwFiAacB9gGhAasB9wH/AWkBhgH4 + Af8BYQGCAfYZ/wFGAVIB6QH/AVUBXwHqAf8BlgGcAfEB/wE7AUoBlAH2CAABXgHDAWoB/wGgAdcBqQH/ + AZwB1QGlAf8BmAHTAaEB/wGUAdABnQH/AZABzgGYAf8BiwHLAZMB/wGHAckBjgH/AYIBxgGJAf8BdwHD + AYQB/wFzAcEBgAH/AW8BvgF1Af8BPgGMAUMB/wFYAVsBWQHEiAACYgGoAfYBrwG5AfkB/wF4AZMB+gH/ + AWkBhQHwGf8BRgFSAekB/wFXAWMB7gH/AZYBnQHxAf8BQwFJAZcB9ggAAWEBxwFtAf8BpQHaAa4B/wGi + AdgBqwH/AZ4B1gGnAf8BmgHUAaMB/wGWAdIBnwH/AZMBzwGaAf8BjgHMAZUB/wGJAcoBkAH/AYUBxwGL + Af8BgQHFAYcB/wF2AcIBggH/AUMBkQFJAf8BWQFcAVkByYgAAl8BcAHbAaUBrwH1Af8BnQGrAfoB/wFw + AYwB8AH/AU0BWAHsAf8BTQFYAewB/wFNAVgB7AH/AU0BWAHsAf8BTQFYAewB/wFNAVgB7AH/AVwBcAHy + Af8BgQGOAfQB/wFxAXgB6QH/AloBagHbCAABYQHHAW0B/wFhAccBbQH/AV4BwwFqAf8BWgG+AWYB/wFW + AbgBYQH/AVEBsQFbAf8BTAGpAVUB/wFGAaEBTwH/AUABmQFIAf8BOgGRAUIB/wFTAaMBWwH/AU4BnQFV + Af8BWAFeAVgB0YwAA0YBfgF2AYMB6gH/Ac0B1AH8Af8BiwGdAfoB/wF3AZMB9wH/AW4BigHuAf8BZQGE + AfYB/wFlAYQB9gH/AWUBhAH2Af8BZQGEAfYB/wFcAXIB8wH/AaQBrwH4Af8BNwFIAdAB/wFFAkYBfjAA + AU8BhgFRAfcBWgFjAVoB25AAAxgBIgJlAX8B5QGjAacB8wH/AdQB2wH9Af8BhwGaAfoB/wF4AZEB8AH/ + AXMBjgHxAf8BeAGUAfgB/wF3AZIB+QH/AW8BjAH4Af8BqAG2AfgB/wFcAWcB4wH/AVgBXgF5AeUDGAEi + MAABVgFYAVYBuwMEAQaUAAMzAVMCZQGjAfQBqgGtAfIB/wHYAdwB/QH/Aa4BugH6Af8BkQGjAfoB/wGL + AZ0B+gH/AZwBqQH7Af8BugHHAfwB/wFpAXQB6QH/AVIBVQGbAfQDMwFT1AADMwFTAmEBfQHmAY4BkwHt + Af8BvgHDAfgB/wHMAdMB+QH/AcQBywH5Af8BqgG0AfQB/wFfAWkB4gH/AVgBYQF8AeYDMwFT3AADGQEj + A0UBfQJfAXAB2wJfAaAB8wJfAZ4B8wFeAV8BcAHbA0UBfQMZASP/ANUAAxUBHQMjATQDJAE2AyQBNgMk + ATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyMBMwMVAR0IAAMVAR0DIwE0AyQBNgMkATYDJAE2 + AyQBNgMkATYDJAE2AyQBNgNgAf8DSgH/AyQBNgMjATMDFQEdSAADFQEdAyMBNAMkATYDJAE2AU4BZwF2 + AfABPgF1AZUB+AE+AXUBlQH4AT4BdAGVAfgBPgFzAZQB+AE+AXIBlAH4AT4BcAGUAfgBPgFuAZMB+AE+ + AWsBkwH4ATwBbQGMAfcBWQJbAcMEAAMjATQDgwH1A8cB/QP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8 + Af8D/AH/A8cB/QN+AfMDIwEzCAADIwE0A4MB9QPHAf0D/AH/A/wB/wP8Af8DtQH/A1cB/wPWAf8DogH/ + A4sB/wOlAf4DTAH/A1kBxxwAARoBYAEfAf8BFwFbARsB/wETAVYBFwH/ARABUgEUAf8cAAMjATQDmQH1 + A9kB/QP8Af8BQQGcAc4B/wHdAewB9gH/Ab0B7gH5Af8BrAHqAfgB/wGrAeoB+AH/AasB6gH4Af8BqwHq + AfgB/wGtAeoB+AH/AdQB8wH7Af8BpAHIAeQB/wFUAlYBqwMAAQEDJAE2A9kB/gP8Af8D/AH/A/wB/wP8 + Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8DxwH9AyQBNgcAAQEDJAE2A9kB/gP8Af8D/AH/A/wB/wP8 + Af8DoAH/A8kB/wOlAf8DygH/A8IB/wOhAf8DxAH/A1sB/wMCAQMYAAEfAWcBJQH/AWYBvQFsAf8BZAG9 + AWoB/wEUAVcBGAH/GwABAQMkATYD5QH+A/wB/wP8Af8BrQHSAegB/wGOAcIB4QH/AZcB6AH5Af8BVQHc + AfYB/wFPAdsB9QH/ASYBiAHCAf8BTwHbAfUB/wFeAd4B9gH/AbEB5wH2Af8BVAFhAXIB7gMdASoDAAEB + AyQBNgP8Af8D/AH/A/wB/wP8Af8D/AH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/wB/wMkATYDAAEB + AwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/YB/wPLAf8DyQH/A70B/wOcAf8DmgH/A7UB/wPCAf8DVgGx + Aw4BExgAASUBbwErAf8BawHAAXAB/wFoAb8BbgH/ARgBXQEdAf8bAAEBAyQBNgP8Af8D/AH/A/wB/wH4 + AfoB+wH/AVwBsQHYAf8BqwHbAe8B/wFoAeAB9wH/AUwB2gH1Af8BTAHaAfUB/wFRAdsB9QH/AZAB5gH4 + Af8BkgHBAeEB/wNOAZkDAAEBAwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/sB/wP7Af8D+gH/A/oB/wP6 + Af8D+gH/A/oB/wP8Af8DJAE2AwABAQMAAQEDJAE2A/wB/wP8Af8D/AH/A/wB/wOlAf8DtwH/A+EB/wOc + Af8D+gH/A/oB/wObAf8D1QH/A5kB/wNTAf8YAAErAYUBMQH/AW8BwgGCAf8BbAHBAYAB/wEdAWQBIgH/ + GwABAQMkATYD/AH/A/wB/wP8Af8D/AH/AckB4wHwAf8BbwG9Ad8B/wGiAeoB+QH/AVUB3AH2Af8BJQGH + AcIB/wFrAeEB9wH/AbYB3gHwAf8BTQGlAdIB/wMqAUADAAEBAwABAQMkATYD/AH/A/wB/wP8Af8D/AH/ + A/sB/wP7Af8D+wH/A/oB/wP6Af8D+AH/A/gB/wP8Af8DJAE2AwABAQMAAQEDJAE2A/wB/wP8Af8D/AH/ + A/wB/wO0Af8DygH/A+gB/wOGAf8D+gH/A/gB/wOaAf8D4gH/A7YB/wOHAf8YAAExAY0BOAH/AYEBxQGH + Af8BcAHDAYUB/wEjAWwBKAH/GwABAQMkATYD/AH/A/wB/wP8Af8D/AH/AvoB+wH/AYwBxwHjAf8BrAHZ + AewB/wGCAeMB+AH/AScBiAHCAf8BrAHtAfoB/wE4AZ4BzwH/Ab8B3AHtAf8DJAE2AwABAQMAAQEDJAE2 + A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP7Af8D+QH/A/kB/wP4Af8D/AH/AyQBNgMAAQEDAAEB + AyQBNgP8Af8D/AH/A/wB/wP8Af8D/AH/A9YB/wPSAf8DqwH/A4EB/wOKAf8DtAH/A8oB/wNWAbMDAAEB + GAABNwGVAT4B/wGFAccBjAH/AYIBxgGJAf8BKAGCAS8B/xsAAQEDJAE2A/wB/wP8Af8D/AH/A/wB/wP8 + Af8B4AHwAfYB/wFRAbQB2gH/AbQB6wH4Af8BjgHmAfgB/wG1Ad0B7gH/AXIBvwHeAf8B+AH6AfsB/wMk + ATYDAAEBAwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/oB/wP5Af8D9gH/A/YB/wP8 + Af8DJAE2AwABAQMAAQEDJAE2A/wB/wP8Af8D/AH/A/wB/wP8Af8DugH/A9oB/wO/Af8D1gH/A9gB/wO4 + Af8D1AH/A4gB/wMIAQsYAAE8AZ4BRQH/AYoBygGRAf8BhwHJAY4B/wEuAYoBNQH/GwABAQMkATYD/AH/ + A/wB/wP8Af8D/AH/A/wB/wP8Af8BqgHZAewB/wGkAdcB6wH/AdwB9AH7Af8BTwGzAdkB/wHTAecB7wH/ + A/wB/wMkATYDAAEBAwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D+wH/A/gB/wP2Af8D8wH/ + A/IB/wP8Af8DJAE2AwABAQMAAQEDJAE2A/wB/wP8Af8D/AH/A/wB/wP8Af8D3wH/A74B/wPqAf8DwAH/ + A74B/wPgAf8DsQH/A1QBrgMAAQEYAAFCAaYBSwH/AY4BzAGVAf8BiwHLAZMB/wE0AZIBPAH/GwABAQMk + ATYD/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8B8gH3AfkB/wFnAcQB4QH/AasB2wHtAf8BnQHSAeYB/wPy + Af8D/AH/AyQBNgMAAQEDAAEBAyQBNgP8Af8D/AH/A/wB/wP8Af8D/AH/A/sB/wP4Af8D9QH/A/IB/wPv + Af8D7QH/A/wB/wMkATYDAAEBAwABAQMkATYD/AH/A/wB/wP8Af8D/AH/A/wB/wP7Af8D+AH/A/UB/wO6 + Af8DtAH/A+0B/wP8Af8DJAE2AwABARgAAUgBrQFRAf8BkwHPAZoB/wGQAc4BmAH/AToBmgFCAf8bAAEB + AyQBNgP8Af8D/AH/A/wB/wP8Af8D/AH/A/sB/wP4Af8BwwHjAe4B/wFwAcgB4gH/AeIB6wHtAf8D7QH/ + A/wB/wMkATYDAAEBAwABAQMkATYD/AH/A/sB/wP8Af8D/AH/A/sB/wP4Af8D9QH/A/EB/wPsAf8D6gH/ + A+YB/wP8Af8DJAE2AwABAQMAAQEDJAE2A/wB/wP7Af8D/AH/A/wB/wP7Af8D+AH/A/UB/wPxAf8D7AH/ + A+oB/wPmAf8D/AH/AyQBNgMAAQEYAAFNAbQBVwH/AZYB0gGfAf8BlAHQAZwB/wFPAawBVwH/AyYBOBcA + AQEDJAE2A/wB/wP7Af8D/AH/A/wB/wP7Af8D+AH/A/UB/wPxAf8D7AH/A+oB/wPmAf8D/AH/AyQBNgMA + AQEDAAEBAyQBNgP8Af8D+QH/A/kB/wP5Af8D9wH/A/YB/wPyAf8D6wH/A/wB/wP8Af8D/AH/A/wB/wMk + ATYDAAEBAwABAQMkATYD/AH/A/kB/wP5Af8D+QH/A/cB/wP2Af8D8gH/A+sB/wP8Af8D/AH/A/wB/wP8 + Af8DJAE2AwABARAAA1gBuwFiAYkBbQH3AWsBxgGDAf8BmgHUAaMB/wGYAdMBoQH/AW8BwwGGAf8BUQGE + AVIB9wFWAVcBVgG4EwABAQMkATYD/AH/A/kB/wP5Af8D+QH/A/cB/wP2Af8D8gH/A+sB/wP8Af8D/AH/ + A/wB/wP8Af8DJAE2AwABAQMAAQEDJAE2A/wB/wP3Af8D+QH/A/cB/wP3Af8D8wH/A/AB/wPqAf8D/AH/ + A/YB/wP0Af8DTQGRAxcBIAcAAQEDJAE2A/wB/wP3Af8D+QH/A/cB/wP3Af8D8wH/A/AB/wPqAf8D/AH/ + A/YB/wP0Af8DTQGRAxcBIBQAAwQBBgNfAdsBbgHKAYcB/wGeAdYBpwH/AZwB1AGlAf8BZQHAAW8B/wFb + Al4B2QMEAQYTAAEBAyQBNgP8Af8D9wH/A/kB/wP3Af8D9wH/A/MB/wPwAf8D6gH/A/wB/wP2Af8D9AH/ + A00BkQMXASAIAAMkATYDxgH9A/QB/wP1Af8D9QH/A/UB/wPxAf8D7wH/A+kB/wP8Af8D5wH/A00BkQMX + ASADAQECCAADJAE2A8YB/QP0Af8D9QH/A/UB/wP1Af8D8QH/A+8B/wPpAf8D/AH/A+cB/wNNAZEDFwEg + AwEBAhwAA1wB0QFwAcoBiAH/AW0ByAGFAf8DXAHPHAADJAE2A9gB/QP0Af8D9QH/A/UB/wP1Af8D8QH/ + A+8B/wPpAf8D/AH/A+cB/wNNAZEDFwEgAwEBAggAAyMBMwNsAfADxgH9A/wB/wP8Af8D/AH/A/wB/wP8 + Af8D/AH/A/gB/wNNAZEDFwEgAwEBAgwAAyMBMwNsAfADxgH9A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/ + A/gB/wNNAZEDFwEgAwEBAiQAA1wByQNbAcQgAAMjATMDgQHwA9gB/QP8Af8D/AH/A/wB/wP8Af8D/AH/ + A/wB/wP4Af8DTQGRAxcBIAMBAQIMAAMUARwDIwEzAyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMk + ATYDFwEgAwEBAhAAAxQBHAMjATMDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMXASADAQEC + UAADFAEcAyMBMwMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AxcBIAMBAQJgAAFZAmQB7AFI + AWIBdwH2AUgBYgF1AfYBSAFiAXUB9gFHAWIBdQH2AUcBYgF1AfYBRQFiAXUB9gFFAWIBdQH2AUUBYgF1 + AfYBQwFiAXUB9gFZAlsBwygAA0MBeAJXAVwB3wEEAUIBmQH+AlgBXwHjA0QBeiwAAVkBYAFZAesBAAFp + AQwB/wMDAQRgAAFaAmEB5AHdAewB9gH/Ab0B7gH5Af8BrAHqAfgB/wGrAeoB+AH/AasB6gH4Af8BqwHq + AfgB/wGtAeoB+AH/AdQB8wH7Af8BpAHIAeQB/wFUAlYBqyQAAUYCRwGAASYBXwGUAfsBDwFlAeYB/wEA + AWcB6gH/AQABUgHdAf8BFgE1AZEB/ANEAXooAAFZAWABWQHrATEBoQFNAf8BWQFcAVkBzAMEAQYMAANA + AXABUgJUAaYBVQFcAWMB6gFIAW0BiQH3AUgBbQGJAfcBSAFtAYkB9wFIAW0BiQH3AUgBbQGJAfcBSAFt + AYkB9wFIAW0BiQH3AUgBbQGJAfcBSAFtAYkB9wFTAWQBcgHxA0wBkxgAAz4BawGOAcIB4QH/AZcB6AH5 + Af8BTwHcAfYB/wFJAdsB9QH/ASABiAHCAf8BSQHbAfUB/wFYAd4B9gH/AbEB5wH2Af8BWAJiAekDHQEq + BAADQAFwAVICVAGmAVUBXAFjAeoBSAFtAYkB9wFIAW0BiQH3AUgBbQGJAfcBSAFtAYkB9wFIAW0BiQH3 + AQcBTAGZAf4BUQGdAfQB/wEGAW0C/wEAAWQB+AH/AQABZAHuAf8BAAFWAeEB/wJaAWEB5BgAATMBlwFA + Af0BLQGRAUAB/QEnAY8BQAH9ASEBiwFAAf0BKAGfAUwB/wGAAcEBlgH/ATQBowFQAf8BWAFcAVgB0QMF + AQcIAAFYAWEBYgHmAWoCbAHwAacBtwG/Af0BngHbAfQB/wGWAdoB8wH/AY4B2AHzAf8BhgHXAfMB/wFt + AdQB8gH/AWcB0wHyAf8BYAHSAfEB/wFaAdAB8QH/AVcBzwHxAf8BnwHHAdUB/gFOAV8BaQHwCAADQAFw + AVICVAGmAVUBXAFjAeoBSAFtAYkB9wFKAW0BiQH3AUABmgGzAf0BqwHbAe8B/wFiAeAB9wH/AUYB2gH1 + Af8BRgHaAfUB/wFLAdsB9QH/AZAB5gH4Af8BkgHBAeEB/wNbAcgIAAFYAWEBYgHmAWoCbAHwAacBtwG/ + Af0BngHbAfQB/wGWAdoB8wH/AY4B2AHzAf8BhgHXAfMB/wFtAdQB8gH/AQABMQG8Af8BrgHNAf4N/wEG + AW0B7wH/AQQBQgGZAf4EAANAAXABUgJUAaYBVQFcAWMB6gFIAW0BiQH3AUgBbQGJAfcBFwGbAUkB/wGQ + AcoBqQH/AY0ByAGlAf8BigHGAaEB/wGIAcUBngH/AVgBtgGFAf8BggHCAZcB/wE2AaUBVAH/AVQBYQFU + Ae4DBwEJBAABUAF0AYoB9wHvAfoB/gH/AaEB6QH5Af8BkQHlAfgB/wGBAeEB9wH/AWAB3gH2Af8BUQHa + AfUB/wFCAdcB9AH/ATUB0wHzAf8BJwHQAfIB/wEcAc0B8QH/ARQBywHwAf8BygHyAfsB/wFQAXQBigH3 + CAABWAFhAWIB5gFqAmwB8AGnAbcBvwH9AZ4B2wH0Af8BlgHaAfMB/wFpAcoB6gH/AWkBvQHfAf8BogHq + AfkB/wFPAdwB9gH/AR8BhwHCAf8BZQHhAfcB/wG2Ad4B8AH/AT4BogHRAf8BUwFkAXIB8QgAAVABdAGK + AfcB7wH6Af4B/wGhAekB+QH/AZEB5QH4Af8BgQHhAfcB/wFgAd4B9gH/AVEB2gH1Af8BQgHXAfQB/wEA + AUUBwQH/AY0BtQH2Af8BOwGSAv8BAAFlAv8BDwGGAv8BLgGKAesB/wJaAWAB3gQAAVgBYQFiAeYBagJs + AfABpwG3Ab8B/QGeAdsB9AH/AZYB2gHzAf8BHwGfAVEB/wGUAc0BrQH/AV0BugGOAf8BWQG4AYkB/wFU + AbYBhQH/AU8BswGAAf8BVQG1AYIB/wGDAcIBmAH/ASoBoAFKAf8BKQFqAUEB+QQAAT4BdwGRAfgB8gH6 + Af0B/wGzAe0B+gH/AaQB6QH5Af8BlQHmAfgB/wGFAeIB9wH/AWQB3gH2Af8BUwHbAfUB/wFFAdcB9AH/ + ATcB1AHzAf8BKQHRAfIB/wEeAc4B8QH/AcwB8gH7Af8BUAF3AYoB9wgAAVABdAGKAfcB7wH6Af4B/wGh + AekB+QH/AZEB5QH4Af8BgQHhAfcB/wFgAd4B9gH/AUMBuwHhAf8BrAHZAewB/wGCAeMB+AH/ASEBiAHC + Af8BrAHtAfoB/wExAZ4BzwH/AZ0B1gHsAf8BUAF0AYoB9wgAAT4BdwGRAfgB8gH6Af0B/wGzAe0B+gH/ + AaQB6QH5Af8BlQHmAfgB/wGFAeIB9wH/AWQB3gH2Af8BUwHbAfUB/wEqAZsB3gH/ASYBYwHSAf8BjQG1 + AfcB/wG4AdYB/gH/AWABqAH1Af8BGwFaAcsB/wM/AW0EAAFQAXQBigH3Ae8B+gH+Af8BoQHpAfkB/wGR + AeUB+AH/AYEB4QH3Af8BJQGjAVkB/wGWAc4BsAH/AZQBzQGtAf8BkQHLAaoB/wGQAcsBqAH/AWIBvAGQ + Af8BigHHAaEB/wE0AaUBVgH/AQABhwEmAf8DAAEBBAABQQGCAZAB+QH2AfwB/gH/AcgB8gH8Af8BuQHv + AfsB/wGsAewB+gH/AZwB6AH5Af8BiwHjAfcB/wFqAeAB9gH/AVoB3AH2Af8BSwHZAfUB/wE9AdYB9AH/ + ATIB0wHzAf8B0AHzAfwB/wFQAX0BigH3CAABPgF3AZEB+AHyAfoB/QH/AbMB7QH6Af8BpAHpAfkB/wGV + AeYB+AH/AYUB4gH3Af8BXgHXAfEB/wFAAbIB2QH/AbQB6wH4Af8BjgHmAfgB/wG1Ad0B7gH/AS8BsgHc + Af8ByQHwAfoB/wFQAXcBigH3CAABQQGCAZAB+QH2AfwB/gH/AcgB8gH8Af8BuQHvAfsB/wGsAewB+gH/ + AZwB6AH5Af8BiwHjAfcB/wFqAeAB9gH/AVoB3AH2Af8BLQGcAd4B/wEEAUsBxgH/AQABMQG8Af8BCAFH + AcEB/wEhAV8BlAH7CAABPgF3AZEB+AHyAfoB/QH/AbMB7QH6Af8BpAHpAfkB/wGVAeYB+AH/ASsBpQFd + Af8BJgGkAV0B/wEiAaIBVwH/AR4BngFRAf8BQwGvAWoB/wGRAcsBqgH/AT0BqwFiAf8BCAGRATYB/wFQ + AXcBiQH3CAABSQF8AZoB+gH+A/8B+AH9Av8B9gH9Av8B9QH8Av8B8wH8Af4B/wHYAfYB/AH/AZQB5gH4 + Af8BhQHjAfcB/wFkAd8B9gH/AVYB2wH1Af8BSgHYAfQB/wHXAfQB/AH/AVABgAGKAfcIAAFBAYIBkAH5 + AfYB/AH+Af8ByAHyAfwB/wG5Ae8B+wH/AawB7AH6Af8BnAHoAfkB/wGLAeMB9wH/AVcBywHpAf8BpAHX + AesB/wHcAfQB+wH/AT8BsQHZAf8BNAHLAe0B/wHQAfMB/AH/AVABfQGKAfcIAAFJAXwBmgH6Af4D/wH4 + Af0C/wH2Af0C/wH1AfwC/wHzAfwB/gH/AdgB9gH8Af8BlAHmAfgB/wGFAeMB9wH/AWQB3wH2Af8BVgHb + AfUB/wFKAdgB9AH/AdcB9AH8Af8BUAGAAYoB9wgAAUEBggGQAfkB9gH8Af4B/wHIAfIB/AH/AbkB7wH7 + Af8BrAHsAfoB/wGcAegB+QH/AYsB4wH3Af8BagHgAfYB/wFaAdwB9gH/ASIBpAFcAf8BSAGzAYEB/wEW + AZgBRQH/AdAB8wH8Af8BUAF9AYoB9wgAAUcBfgGaAfoB6AH2AfsB/wGUAdQB7wH/AYgBzgHuAf8BYQHB + AekB/wHJAekB9gH/AfIB/AH+Af8B8wH8Af4B/wHyAfwB/gH/AfAB/AH+Af8B7wH7Af4B/wHuAfsB/gH/ + Af4D/wFRAYIBigH3CAABSQF8AZoB+gH+A/8B+AH9Av8B9gH9Av8B9QH8Av8B8wH8Af4B/wHYAfYB/AH/ + AZEB5AH3Af8BTgHBAeEB/wGrAdsB7QH/AUwBxwHnAf8BSgHYAfQB/wHXAfQB/AH/AVABgAGKAfcIAAFH + AX4BmgH6AegB9gH7Af8BlAHUAe8B/wGIAc4B7gH/AWEBwQHpAf8ByQHpAfYB/wHyAfwB/gH/AfMB/AH+ + Af8B8gH8Af4B/wHwAfwB/gH/Ae8B+wH+Af8B7gH7Af4B/wH+A/8BUQGCAYoB9wgAAUkBfAGaAfoB/gP/ + AfgB/QL/AfYB/QL/AfUB/AL/AfMB/AH+Af8B2AH2AfwB/wGUAeYB+AH/AYUB4wH3Af8BKgGoAWQB/wEf + AZ8BUwH/AUoB2AH0Af8B1wH0AfwB/wFQAYABigH3CAABVwFqAXUB8gHxAfoB/QH/AZQB3gH1Af8BkwHc + AfQB/wGBAdUB8gH/AVgBygHtAf8BWgHLAeoB/wGFAdMB7wH/AYAB0gHvAf8BaAHQAe8B/wFkAc8B7gH/ + AWABzwHuAf8B6QH3AfsB/wFMAW4BdwHzCAABRwF+AZoB+gHoAfYB+wH/AZQB1AHvAf8BiAHOAe4B/wFh + AcEB6QH/AckB6QH2Af8B8gH8Af4B/wHzAfwB/gH/AcEB6AH0Af8BagHLAeUB/wHiAfUB+wH/Ae4B+wH+ + Af8B/gP/AVEBggGKAfcIAAFXAWoBdQHyAfEB+gH9Af8BlAHeAfUB/wGTAdwB9AH/AYEB1QHyAf8BWAHK + Ae0B/wFaAcsB6gH/AYUB0wHvAf8BgAHSAe8B/wFoAdAB7wH/AWQBzwHuAf8BYAHPAe4B/wHpAfcB+wH/ + AUwBbgF3AfMIAAFHAX4BmgH6AegB9gH7Af8BlAHUAe8B/wGIAc4B7gH/AWEBwQHpAf8ByQHpAfYB/wHy + AfwB/gH/AfMB/AH+Af8B8gH8Af4B/wHwAfwB/gH/Ae8B+wH+Af8B7gH7Af4B/wH+A/8BUQGCAYoB9wgA + AU4BZgFqAfAB9wH8Af4B/wGOAeQB+AH/AZEB3gH1Af8BnwHgAfUB/wGsAeEB9gH/Ae8B+wH+Af8B9AH9 + Af4B/wHzAfwB/gH/AfEB/AH+Af8B7wH7Af4B/wHuAfsB/gH/AZ4BoQGiAfkBXAJgAdQIAAFXAWoBdQHy + AfEB+gH9Af8BlAHeAfUB/wGTAdwB9AH/AYEB1QHyAf8BWAHKAe0B/wFaAcsB6gH/AYUB0wHvAf8BgAHS + Ae8B/wFoAdAB7wH/AWQBzwHuAf8BYAHPAe4B/wHpAfcB+wH/AUwBbgF3AfMIAAFOAWYBagHwAfcB/AH+ + Af8BjgHkAfgB/wGRAd4B9QH/AZ8B4AH1Af8BrAHhAfYB/wHvAfsB/gH/AfQB/QH+Af8B8wH8Af4B/wHx + AfwB/gH/Ae8B+wH+Af8B7gH7Af4B/wGeAaEBogH5AVwCYAHUCAABVwFqAXUB8gHxAfoB/QH/AZQB3gH1 + Af8BkwHcAfQB/wGBAdUB8gH/AVgBygHtAf8BWgHLAeoB/wGFAdMB7wH/AYAB0gHvAf8BaAHQAe8B/wFk + Ac8B7gH/AWABzwHuAf8B6QH3AfsB/wFMAW4BdwHzCAABPgF+AZEB+AH9Av4B/wH+A/8C/gL/Af0B/gL/ + Af4D/wHqAfcB+wH/AWoBjAGSAfkBXAGIAZQB+AFcAYgBlAH4AVwBiAGUAfgBbQGIAYwB9wNhAeEDNQFW + CAABTgFmAWoB8AH3AfwB/gH/AY4B5AH4Af8BkQHeAfUB/wGfAeAB9QH/AawB4QH2Af8B7wH7Af4B/wH0 + Af0B/gH/AfMB/AH+Af8B8QH8Af4B/wHvAfsB/gH/Ae4B+wH+Af8BngGhAaIB+QFcAmAB1AgAAT4BfgGR + AfgB/QL+Af8B/gP/Av4C/wH9Af4C/wH+A/8B6gH3AfsB/wFqAYwBkgH5AVwBiAGUAfgBXAGIAZQB+AFc + AYgBlAH4AW0BiAGMAfcDYQHhAzUBVggAAU4BZgFqAfAB9wH8Af4B/wGOAeQB+AH/AZEB3gH1Af8BnwHg + AfUB/wGsAeEB9gH/Ae8B+wH+Af8B9AH9Af4B/wHzAfwB/gH/AfEB/AH+Af8B7wH7Af4B/wHuAfsB/gH/ + AZ4BoQGiAfkBXAJgAdQIAAFbAl4B0AFNAYwBngH6AU0BjQGeAfoBTQGNAZ4B+gFNAY0BngH6AU0BjQGe + AfoBWAJeAd0DEAEWAwsBDwMLAQ8DCwEPAwsBDwMLAQ8DAwEECAABPgF+AZEB+AH9Av4B/wH+A/8C/gL/ + Af0B/gL/Af4D/wHqAfcB+wH/AWoBjAGSAfkBXAGIAZQB+AFcAYgBlAH4AVwBiAGUAfgBbQGIAYwB9wNh + AeEDNQFWCAABWwJeAdABTQGMAZ4B+gFNAY0BngH6AU0BjQGeAfoBTQGNAZ4B+gFNAY0BngH6AVgCXgHd + AxABFgMLAQ8DCwEPAwsBDwMLAQ8DCwEPAwMBBAgAAT4BfgGRAfgB/QL+Af8B/gP/Av4C/wH9Af4C/wH+ + A/8B6gH3AfsB/wFqAYwBkgH5AVwBiAGUAfgBXAGIAZQB+AFcAYgBlAH4AW0BiAGMAfcDYQHhAzUBVkgA + AVsCXgHQAU0BjAGeAfoBTQGNAZ4B+gFNAY0BngH6AU0BjQGeAfoBTQGNAZ4B+gFYAl4B3QMQARYDCwEP + AwsBDwMLAQ8DCwEPAwsBDwMDAQRIAAFbAl4B0AFNAYwBngH6AU0BjQGeAfoBTQGNAZ4B+gFNAY0BngH6 + AU0BjQGeAfoBWAJeAd0DEAEWAwsBDwMLAQ8DCwEPAwsBDwMLAQ8DAwEE/wD/AAYAAUIBTQE+BwABPgMA + ASgDAAFAAwABMAMAAQEBAAEBBQABgAEBFgAD/wEABP8EAAHwAQ8C/wQAAeABBwL/BAABwAEDAv8EAAGA + AQEB/wHnBAABgAEBAf8BxwQAAYABAQGAAQMEAAGAAQEBgAEBBAABgAEBAYABAQQAAYABAQGAAQMEAAGA + AQEB/wHnBAABgAEBAf8B5wQAAcABAwL/BAAB4AEHAv8EAAHwAQ8C/wQABP8EAAGAAQEBgAEBAv8BgAEA + AYABAQGAAQEB/AE/AYACAAEBAgAB/AE/BgAB/AE/BgAB/AE/BgAB/AE/BgAB/AE/BgAB/AE/BgAB/AE/ + BgAB/AE/BgAB/AEfBgAB8AEPAwABAQEAAQEB8AEPAQABAQGAAQEBgAEBAfwBPwGAAQEBgAEDAYABAwH+ + AX8BgAEDAYABBwGAAQcC/wGAAQcC/wH4AQAB/wHBAf8BxwL/AfgBAAH/AYAB/wHDAYABAQH4AQABgAEA + AfwBAQGAAQEBgAEBAYABAAGAAQABgAEBAYABAQGAAQABgAEAAYABAQGAAQEBgAEAAYABAAGAAQEBgAEB AYABAQGAAQEBgAEBAYABAQGAAQEBgAEBAYABAQGAAQEBgAEBAYABAQGAAQEBgAEBAYABAQGAAQEBgAEB - AYABAQL/AYABAQL/AYABARD/Cw== + AYABAQGAAQEBgAEBAYABAQGAAQEBgAEBAYABAQGAAQEBgAEBAYABAQGAAQEC/wGAAQEC/wGAAQEQ/ws= \ No newline at end of file diff --git a/PolicyPlus/Main.vb b/PolicyPlus/Main.vb index de95cb8..cca355f 100644 --- a/PolicyPlus/Main.vb +++ b/PolicyPlus/Main.vb @@ -1,4 +1,5 @@ -Public Class Main +Imports System.ComponentModel +Public Class Main Dim AdmxWorkspace As New AdmxBundle Dim UserPolicySource, CompPolicySource As IPolicySource Dim UserPolicyLoader, CompPolicyLoader As PolicyLoader @@ -470,4 +471,43 @@ Private Sub PoliciesList_KeyUp(sender As Object, e As KeyEventArgs) Handles PoliciesList.KeyUp If e.KeyCode = Keys.Enter And PoliciesList.SelectedItems.Count > 0 Then PoliciesList_DoubleClick(sender, e) End Sub + Private Sub PolicyObjectContext_Opening(sender As Object, e As CancelEventArgs) Handles PolicyObjectContext.Opening + Dim showingForCategory As Boolean + If PolicyObjectContext.SourceControl Is CategoriesTree Then + showingForCategory = True + PolicyObjectContext.Tag = CategoriesTree.SelectedNode.Tag + ElseIf PoliciesList.SelectedItems.Count > 0 Then ' Shown from the main view + Dim selEntryTag = PoliciesList.SelectedItems(0).Tag + showingForCategory = (TypeOf selEntryTag Is PolicyPlusCategory) + PolicyObjectContext.Tag = selEntryTag + Else + e.Cancel = True + Exit Sub + End If + For Each item In PolicyObjectContext.Items.OfType(Of ToolStripMenuItem) + Dim ok As Boolean = True + If item.Tag = "P" And showingForCategory Then ok = False + If item.Tag = "C" And Not showingForCategory Then ok = False + item.Visible = ok + Next + End Sub + Private Sub PolicyObjectContext_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles PolicyObjectContext.ItemClicked + Dim polObject = PolicyObjectContext.Tag ' The current policy object is in the Tag field + If e.ClickedItem Is CmeCatOpen Then + CurrentCategory = polObject + UpdateCategoryListing() + ElseIf e.ClickedItem Is CmePolEdit Then + ShowSettingEditor(polObject, ViewPolicyTypes) + ElseIf e.ClickedItem Is CmeAllDetails Then + If TypeOf polObject Is PolicyPlusCategory Then + DetailCategory.PresentDialog(polObject) + Else + DetailPolicy.PresentDialog(polObject) + End If + End If + End Sub + Private Sub CategoriesTree_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs) Handles CategoriesTree.NodeMouseClick + ' Right-clicking doesn't actually select the node by default + If e.Button = MouseButtons.Right Then CategoriesTree.SelectedNode = e.Node + End Sub End Class \ No newline at end of file diff --git a/PolicyPlus/PolicyPlus.vbproj b/PolicyPlus/PolicyPlus.vbproj index 590ae71..e1e3004 100644 --- a/PolicyPlus/PolicyPlus.vbproj +++ b/PolicyPlus/PolicyPlus.vbproj @@ -84,6 +84,30 @@ + + DetailCategory.vb + + + Form + + + DetailPolicy.vb + + + Form + + + DetailProduct.vb + + + Form + + + DetailSupport.vb + + + Form + EditSetting.vb @@ -175,6 +199,18 @@ + + DetailCategory.vb + + + DetailPolicy.vb + + + DetailProduct.vb + + + DetailSupport.vb + EditSetting.vb