From f9dcefb4fc163dd129989cb84a351e950c42e780 Mon Sep 17 00:00:00 2001 From: bm98 Date: Sat, 23 Jun 2018 17:01:41 +0200 Subject: [PATCH] V 2.36 - BETA Build 72 - support PTU folders for 3.x Alpha series - maitain PTU backups and files in MyDocuments separate from retail --- AppSettings.cs | 2 +- FormMain.Designer.cs | 18 +++ FormMain.cs | 19 +-- FormMain.resx | 226 +++++++++++++-------------- FormSettings.Designer.cs | 1 - FormSettings.cs | 9 +- ReadMe.txt | 16 +- SC/SCPath.cs | 23 ++- SC/SCfiles.cs | 6 +- TheUser.cs | 30 +++- Translation/Strings.Designer.cs | 9 ++ Translation/Strings.de.resx | 6 +- Translation/Strings.fr.resx | 4 + Translation/Strings.resx | 4 + actions/ActionTree.cs | 76 +++++++++- defaultProfile.xml | 261 ++++++++++++++++---------------- 16 files changed, 433 insertions(+), 277 deletions(-) diff --git a/AppSettings.cs b/AppSettings.cs index aa2a224..a1cecab 100644 --- a/AppSettings.cs +++ b/AppSettings.cs @@ -284,7 +284,7 @@ namespace SCJMapper_V2 [DefaultSettingValue( "False" )] public bool UsePTU { - get { return false; } // ( bool )this["UsePTU"]; } no longer used + get { return ( bool )this["UsePTU"]; } set { this["UsePTU"] = value; } } diff --git a/FormMain.Designer.cs b/FormMain.Designer.cs index 7b9ffb4..34a3a3d 100644 --- a/FormMain.Designer.cs +++ b/FormMain.Designer.cs @@ -158,6 +158,7 @@ this.msSelectMapping = new System.Windows.Forms.ToolStripDropDownButton(); this.tsLblMappings = new System.Windows.Forms.ToolStripLabel(); this.IL2 = new System.Windows.Forms.ImageList(this.components); + this.lblPTU = new System.Windows.Forms.Label(); this.cmCopyPaste.SuspendLayout(); this.panel2.SuspendLayout(); this.cmMouseEntry.SuspendLayout(); @@ -883,6 +884,7 @@ this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); this.tableLayoutPanel2.Controls.Add(this.buttonExit, 1, 1); + this.tableLayoutPanel2.Controls.Add(this.lblPTU, 1, 0); this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; this.tableLayoutPanel2.GrowStyle = System.Windows.Forms.TableLayoutPanelGrowStyle.FixedSize; this.tableLayoutPanel2.Location = new System.Drawing.Point(386, 772); @@ -1503,6 +1505,20 @@ this.IL2.Images.SetKeyName(1, "Locked"); this.IL2.Images.SetKeyName(2, "RSI"); // + // lblPTU + // + this.lblPTU.AutoSize = true; + this.lblPTU.BackColor = System.Drawing.Color.SandyBrown; + this.lblPTU.Dock = System.Windows.Forms.DockStyle.Fill; + this.lblPTU.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblPTU.Location = new System.Drawing.Point(155, 0); + this.lblPTU.Name = "lblPTU"; + this.lblPTU.Size = new System.Drawing.Size(146, 48); + this.lblPTU.TabIndex = 14; + this.lblPTU.Text = "Using PTU"; + this.lblPTU.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lblPTU.Visible = false; + // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); @@ -1533,6 +1549,7 @@ this.tlpanel.ResumeLayout(false); this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel2.ResumeLayout(false); + this.tableLayoutPanel2.PerformLayout(); this.tableLayoutPanel3.ResumeLayout(false); this.tableLayoutPanel3.PerformLayout(); this.tableLayoutPanel4.ResumeLayout(false); @@ -1677,6 +1694,7 @@ private System.Windows.Forms.ToolStripDropDownButton msBtDump; private System.Windows.Forms.ToolStripMenuItem tdiExpandAll; private System.Windows.Forms.ToolStripMenuItem meShowDeviceMonitoringDialog; + private System.Windows.Forms.Label lblPTU; } } diff --git a/FormMain.cs b/FormMain.cs index 8ab3019..b94c2ac 100644 --- a/FormMain.cs +++ b/FormMain.cs @@ -255,6 +255,11 @@ namespace SCJMapper_V2 log.InfoFormat( "Application Version: {0}", version.ToString( ) ); + // init PTU folder usage at the very start + if ( AppSettings.Instance.UsePTU ) log.Debug( "Using PTU Folders" ); + lblPTU.Visible = AppSettings.Instance.UsePTU; + TheUser.UsesPTU = AppSettings.Instance.UsePTU; + // tooltips where needed toolTip1.SetToolTip( this.linkLblReleases, c_GithubLink ); // allow to see where the link may head @@ -333,10 +338,6 @@ namespace SCJMapper_V2 int jsIndex = (int)tc1.SelectedTab.Tag; // gets the index into the JS list if ( jsIndex >= 0 ) DeviceInst.JoystickInst = DeviceInst.JoystickListRef[jsIndex]; - // init PTU folder usage sign - //lblPTU.Visible = false; // m_AppSettings.UsePTU; no longer used - if ( AppSettings.Instance.UsePTU ) log.Debug( "Using PTU Folders" ); - // Auto Tab XML cbxAutoTabXML.Checked = AppSettings.Instance.AutoTabXML; @@ -1363,11 +1364,11 @@ namespace SCJMapper_V2 AppSettings.Instance.MyMappingName = txMappingName.Text; AppSettings.Instance.Save( );// last used - persist txMappingName.BackColor = MyColors.SuccessColor; - // autosave CSV - string csvList = string.Format( "-- {0} - SC Joystick Mapping ({1}) --\n{2}", DateTime.Now, txMappingName.Text, - m_AT.ReportActionsCSV( true, true ) ); - using (StreamWriter sw = File.CreateText(TheUser.MappingCsvFileName(txMappingName.Text)) ) { - sw.Write( csvList ); + // autosave our XML + string xmlList = string.Format( " \n{2}", DateTime.Now, txMappingName.Text, + m_AT.ReportActionsXML( ) ); + using (StreamWriter sw = File.CreateText(TheUser.MappingXmlFileName( txMappingName.Text)) ) { + sw.Write( xmlList ); } } diff --git a/FormMain.resx b/FormMain.resx index 98c54db..5e79115 100644 --- a/FormMain.resx +++ b/FormMain.resx @@ -128,7 +128,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAA8 - EAAAAk1TRnQBSQFMAgEBCQEAAUABFAFAARQBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + EAAAAk1TRnQBSQFMAgEBCQEAAUgBFAFIARQBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -581,118 +581,118 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADa - GQAAAk1TRnQBSQFMAgEBAwIAAQIBAAECATABAAEwAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA - AcADAAEwAwABAQEAAQgGAAEkGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA - AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA - AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm - AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ - AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm - AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz - AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm - AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm - AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA - ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm - AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm - ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm - AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA - AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ - AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz - AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/ - AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA - AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM - AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm - ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ - AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/ - ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM - ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm - AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM - AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA - AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA - ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7 - Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/9rABz/CQAB/0gAAf8C9AHz - BPAB8wL0Af9DAAH/AfMBuhysAboB8wH/SgAB/wHyAQcBtAGLDGsBiwH3AbwB8wH/GgAB9AHwAQcB7wKS - Ae8BBwHwAfQYAAH/AfMBsiCsAbIB8wH/RgAB8wH3FmsBuwH0FQAB/wHxAfcB7wEHArwC8QK8AQcB7wH3 - AfEB/xQAAf8BCSSsAQkB/0MAAfQBuxprAbsB9BIAAfEBkgHvAfAK8QHwAe8BkgHxEgAB/wEJJqwBCQH/ - QQAB8wJrGooCawH0DwAB/wHwAe8B8A7xAfAB7wHwAf8PAAH/AfMorAHzAf9AAAH3AWscigFrAbsOAAH0 - AbwBBwTxAfAB9wGQAYsCawKLAZEBvATxAQcBvAH0DgAB/yqsAf8/AAH0AWseBgFrAf8MAAH/AbwBBwTx - AZEKawGRAbwD8QEHAbwB/w0AAfMqrAHzPwAB8wFrHooBawHzDAAB8AEHA/EBuwNrAooBiwLzAYsDigJr - AZED8QEHAfANAAG6KqwBuj8AAfQBax6KAWsB8wsAAfEB7wPxAfcBawGKBAYBuwL/AbQEBgGKAWsBkQPx - Ae8B8QsAAf8BsgasF7MOrAH/PgAB/wFrHooBawH0CgAB/wGSAfAC8QHvAWsBBgWKAZAC8wGLBYoBBgFr - AZEC8QHwAZIB/woAAf8HrAGzAWYCDRlmAbMHrAH/PwABkB6KAYsLAAHxAQcD8QFrEQYBigFrAbwC8QEH - AfEKAAH/BqwBswGtAQ0BEAUNBkMKZgVDAa0BswasAf89AAH/AfQBBwGKAZAZigGLAZABBgG8CgAB/wGS - A/EBkROKAQYBkQPxAZIB/wkAAf8GrAGzAa0JDQVDCGYFQwENAa0BswasAf84AAH/ARsBGgF5AVIDKwFr - ApAXiwKQAYEBkQsAAfMB7wLyAfEBawmKAmsJigFrAbwC8gHvAfMJAAH/BqwBswGtDQ0BQwVmAkMBZgJD - BA0BrQGzBqwB/zYAAfMBmQIrATEFMgFLAWsCswGQE4sCkAGzAZABawHyCwAB8AEHAvIB7wGKBosBigGL - AbsCvAG7AYsBigaLAYoBkQLyAQcB8AkAAf8GrAKzDg0CQwNmBEMFDQKzBqwB/zQAAfQBmQErCjIBSwFr - AZACsxGQA7MBigFrAfIMAAEHAfAC8gGRAYoFkAGKAYsBvATxAbwBiwGKBZABigGLAvIB8AEHCQAB/was - ArMPDQZDBw0CswasAf8zAAHzASsBMQwyAUwB6gGKBbMJkAWzAYEBawEHAf8NAAH3AfEC8gKLAbMBugGz - ApABBgHvBvIB7wEGApABswG6AbMBkAFrAvIB8QH3CQAB/wasArMCDQJlBA0EZgFlB2YBDQJmAWUBDQEQ - Ag0CswasAf8zAAF5EDIBTAHqAWsBigGBAZABsweQAbMBkAGzAYoBawGRAbwB/w8AAZID8gGLAZAB9AH/ - ARkCswFrAfAG8gHxAWsCswH0Af8BGQGzAWsB8ALyAZIJAAH/BqwCswENAUMBswHbAYsCDQFsAboB2wGz - A4sBtAO6AdsBtAFDAbMB2wGzBA0CswasAf8yAAH/ASsSMgExAUwBSgEGCbMBigG7AfMB/xIAAZID8gGL - AbMB9AH/ARkCswFrAfIG8wHyAWsCswH0Af8BGQGzAWsB8ALyAZIJAAH/BqwCswINAbQB2wGzAg0BswPb - ApABiwG0BdsBbAGLAtsBZgIPAQ0CswasAf8yAAHzASsUMgFKAYoJswGKAbsUAAH3AfIB8wHyAYsBkAGz - AboDswGKAbsB/wTzAf8BuwGKA7MBugKzAWsB8gHzAfIB9wkAAf8GrAKzAg0BkALbAWYBDQG0AtsBtAOL - AZADtALbAYsBbALbAYsDDwKzBqwB/zIAAfQBKxQyAWwLswFrAf8TAAEHAfAB9AHyAZEBkAazAYsB9AT/ - AfQBiwGQBrMBiwHyAfQB8AEHCQAB/wasArMBDwENAWwC2wG0AYsC2wGzBw0BZgLbAbQBZgLbAZABCgIP - ArMGrAH/MgAB/wErEzIBUgFrC7MBigHzEwAB8AG8AfQB8wG7AYoGswGKAYsBuwLzAbsBiwGKBrMBgQGR - AfMB9AG8AfAJAAH/BqwCswEPAQ0BZgbbAYsGDQGLA9sBswENAbQB2wG0AQ0CDwKzBqwB/zMAAVITMgFR - AYoLswGKAbsTAAHzAe8B/wHzAfIBawGzAbkGswGKAmsBigizAYoB8AHzAfQB7wHzCQAB/wasArMBDwIN - AboF2wG0AWYEDQGQA9sBtAFmAQ0BkQLbAWYBCgEPArMGrAH/MwABGgExEjIBSgGQDLMBkRMAAf8BkgH0 - Af8B8wG0AYoB2gG5D7MB2gGzAZEB8wH/AfQBkgH/CQAB/wasAbkBswIPAQ0BtALbAbQE2wGQAQ0BZgG0 - A9sBiwENAQ8BCgGLAtsBbAEOAQ8BswG5BqwB/zMAAf8BKwEyAVMQMgFsDbMBawH/EwAB8QG8Af8C8wFr - AbMB2g65AdoBuQFrAfAB8wH/AbwB8QoAAf8GrAG6AbMBDwEOAQoBiwLbAWYBbAG0A9sBbAG6AtsBugFs - BA0BZgLbAZABCgEPAbMBugasAf80AAEaASsCWQ9TAWwNswEGAfQTAAH/AZIB9AH/AfMBuwFrAtoFuQL0 - BbkC2gGKAfcB8wH/AfQBkgH/CgAB/wasAboBswEPAgoBbALbAYsBDQEPAYsC2wGQAboB2wG6ARUGDQG6 - AdsBtAENAQ8BswG6BqwB/zUAARoBKwEyAlkNUwFsDbMBigHzFAABkgEHAv8B8wG1AWsBuQLaArkB3AL/ - AdwCuQPaAYoBkQHzAv8BBwGSCwAB/wasAboBswEOAQoBDwFDA9sDugLbArQC2wS6A4sBtALbAQ0BDwGz - AboGrAH/NgAB9AGZATEFWQlTAWwNswGKAfIUAAH3Ae8BvAL/AfMBuwFrAZAD2gHbAvQE2gGzAWsB9wHz - Av8BvAHvAZILAAH/BqwBugGzAQ4BCgEOAQ0BugXcAtsBugGRAdwB2wPcAeEBtAKRAbQC3AFsAQoBswG6 - BqwB/zgAAfQBmQErATEBMgFTAVkHUwFZAWwBswy5AYoB8hQAAZIB8QHvAfEC/wLzAbQBawGQArkC3wK5 - AbMBigGRAfEB8wL/AfEB7wHxAZILAAH/BqwBugGzAQ4DCgGRAdwG2wG0AWYBugTbAdwBtAORAboB3AGL - AQ0BswG6BqwB/zoAAf8B8wEaATEJUwFsAbMMuQGKAfQUAAGSAfIB8AHvAbwC/wH0AvMBuwGRAYsCawGL - AZABtQHyAfMB9AL/AbwB7wHwAfIBkgsAAf8GrAG6AbMBDgIKAg0HQwMNAkMDZgFDAQ0BQwENAkMCDQGz - AboGrAH/PAABmQExCVMBSwGQAdoJuQHaAbkBawH/FAABkgLyAfEB7wEHAfQC/wH0CPMB9AL/AfQBBwHv - AfEC8gGSCwAB/wasAboBswIOAQoHDgEPAg0CDwEOBQ0BDwENAQ8BEAEPAgoBswG6BqwB/zwAAVIKUwFS - AWsC2gi5AdoBswG7FQABkgTyApIBBwH0Cv8B9AEHApIE8gGSCwAB/wasAboBswoKAg8CDQIOAQ8EDQEP - Ag4BDwEKAg4BswG6BqwB/zsAAfYBMQtZAUoBgQPaBLkD2gGKAfQVAAGSAfIB8wLyAZIB/wHxAfcB7wG8 - AvMC/wLzAbwB7wH3AfEB/wGSAvIB8wHyAZILAAH/BqwBugG5AQoCDgcKAQ4BDwENAQ8CCgEOAQ8CDQIP - AQ4BCgEOAgoBDgG5AboGrAH/OwABGwExC1kBUgHsAYEB2gHfBNoB3wG5AQYBvBYAAe8B8QHzAvIB7wH0 - AgAB9AHwAQcB7wKSAe8BBwHwAfQCAAH0Ae8C8gHzAfEB7wsAAf8GrAHbAbkBCgEOAQoFDgEKAQ4DDwEO - AQoBDgEKAQ4CDwENAQ8DCgMOAbkB2wasAf87AAGZAVILWQFTAXQBvAGLAQYBkAG5AbMBgQEGAZEB8hcA - AQcB8AH0AvIBBwHyDgAB8gEHAvIB9AHwAQcLAAH/BqwCugEOAQAGCgEOAQoDDgEKAQ4CCgEOAgoCDgEK - Aw4CAAK6BqwB/zsAAXQBUwxZASsB/wEAAfMB8AG7AbwB8wH/GQAB8QEHAf8C8wK8DgACvALzAf8BBwHx - CwAB/wasAbMB2wFsGg0BbAHbAbMGrAH/OwABUg1ZATEB/yAAAfQB7wH/AfQB8wHyAe8B8wwAAfMB7wHy - AfMB9AH/Ae8B9AsAAf8HrAG5AdsaugHbAbkHrAH/OwABUg1ZATEB8yEAAQcB8gH/AvMB8AH3AfQKAAH0 - AfcB8ALzAf8B8gEHDAAB/wisAbIaswGyCKwB/zsAAVINWQExARshAAHzAe8C/wLzAbwB9wHzCAAB8wH3 - AbwC8wL/Ae8B8wwAAf8srAH/OwABUg1ZATEBGyIAAvAB/wH0AvMB8AHvAbwB8gH0Av8B9AHyAbwB7wHw - AvMB9AH/AvAOAAG6KqwBujwAAXkBUwxZATEB9CIAAfQBkgHzAf8B9APzAfABBwHvApIB7wEHAfAD8wH0 - Af8B8wGSAfQOAAHzKqwB8zwAARoBUgxZASsB/yMAAfIB9wHyAv8M8wL/AfIB9wHyDwAB/yqsAf88AAH/ - ATEMWQGZJQAB8wGSAfAD/wjzA/8B8AGSAfMQAAH/AfMorAHzAf89AAEaAVIBXglZATEB9CYAAfQB8AHv - AfIE/wL0BP8B8gHvAfAB9BIAAf8BCSasAQkB/z8AAZkBUgFeBuUBWQExARopAAHzAQcB9wG8AfIB8wL/ - AfMB8gG8AfcBBwHzFQAB/wEJJKwBCQH/QQABGgFSATEBUgFZAVgBUgExAXQBGywAAf8B8QEHAe8CkgHv - AQcB8QH/GAAB/wHzAbIgrAGyAfMB/0QAAfMBGgGZARoB8wH/UgAB/wHzAbsbrAGzAbsB8wH/oQAc/zoA - AUIBTQE+BwABPgMAASgDAAHAAwABMAMAAQEBAAEBBQABgAEEFgAD/wEADf8BwAIAAQMB/gYAA/8BAAEP - B/8B/gQAAX8GAAL/AeACAAF/Av8B4AEHAv8B+AQAAR8GAAL/AYACAAEfAv8CAAL/AfAEAAEPBgAB/wH+ - AwABBwH/Af4CAAF/Af8B4AQAAQcGAAH/AfwDAAEDAf8B+AIAAR8B/wHABAABAwYAAf8B/AMAAQMB/wHw - AgABDwH/AcAEAAEDBgAB/wH4AwABAQH/AeACAAEHAf8BwAQAAQMGAAH/AfgDAAEBAf8B4AIAAQcB/wHA - BAABAwYAAf8B+AMAAQEB/wHAAgABAwH/AYAEAAEBBgAB/wH4AwABAQH/AYACAAEBAf8BgAQAAQEGAAH/ - AfwDAAEDAf8BgAIAAQEB/wGABAABAQYAAf8B8AMAAQMB/wQAAf8BgAQAAQEGAAH+BAABBwH/BAAB/wGA - BAABAQYAAfgEAAEHAf8EAAH/AYAEAAEBBgAB4AQAAQ8B/wQAAf8BgAQAAQEGAAHABAABHwH/BAAB/wGA - BAABAQYAAcAEAAF/Af8EAAH/AYAEAAEBBgABgAMAAQMC/wQAAf8BgAQAAQEGAAGAAwABDwL/BAAB/wGA - BAABAQYAAYADAAEHAv8EAAH/AYAEAAEBBgABgAMAAQcC/wQAAf8BgAQAAQEGAAHAAwABBwL/BAAB/wGA - BAABAQYAAcADAAEHAv8EAAH/AYAEAAEBBgABwAMAAQMC/wGAAgABAQH/AYAEAAEBBgAB4AMAAQMC/wGA - AgABAQH/AYAEAAEBBgAB8AMAAQMC/wHAAgABAwH/AYAEAAEBBgAB+AMAAQMC/wHAAgABAwH/AYAEAAEB - BgAB/gMAAQMC/wHAAgABAwH/AYAEAAEBBgAB/wGAAgABAwL/AcACAAEDAf8BgAQAAQEGAAH/AeACAAED - Av8BwAIAAQMB/wGABAABAQYAAf8B4AIAAQcC/wHAAgABAwH/AYAEAAEBBgAB/wHAAgABBwL/AcACAAED - Af8BgAQAAQEGAAH/AcACAAEPAv8BwAFgAQYBAwH/AYAEAAEBBgAB/wHAAgABHwL/AcABfwH+AQMB/wGA - BAABAQYAAf8BwAEAASABfwL/AcABfwH+AQMB/wGABAABAQYAAf8BwAEAAT8D/wHAAT8B/AEDAf8BgAQA - AQEGAAH/AcABAAE/A/8B4AEfAfgBBwH/AYAEAAEBBgAB/wHAAQABPwP/AeABDwHwAQcB/wGABAABAQYA - Af8BwAEAAT8D/wHwAgABDwH/AcAEAAEDBgAB/wHAAQABPwP/AfACAAEPAf8BwAQAAQMGAAH/AcABAAE/ - A/8B+AIAAR8B/wHABAABAwYAAf8BwAEAAX8D/wH8AgABPwH/AcAEAAEDBgAB/wHgAQABfwP/Af4CAAF/ - Af8B4AQAAQcGAAH/AfABAAX/AYABAQL/AfAEAAEPBgAB/wH4AQEF/wHgAQcC/wH4BAABHwYAAf8B/gEH - Cf8B/gQAAX8GAA3/AcACAAEDAf8GAAs= + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADc + GQAAAk1TRnQBSQFMAgEBAwEAAQgBAgEIAQIBMAEAATABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + AwABwAMAATADAAEBAQABCAYAASQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA + AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 + AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA + AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm + AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM + AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA + ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz + AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ + AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM + AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA + AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA + AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ + AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/ + AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA + AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm + ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ + Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz + AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA + AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM + AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM + ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM + Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA + AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM + AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ + AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz + AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm + AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw + AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/2sAHP8JAAH/SAAB/wL0 + AfME8AHzAvQB/0MAAf8B8wG6HKwBugHzAf9KAAH/AfIBBwG0AYsMawGLAfcBvAHzAf8aAAH0AfABBwHv + ApIB7wEHAfAB9BgAAf8B8wGyIKwBsgHzAf9GAAHzAfcWawG7AfQVAAH/AfEB9wHvAQcCvALxArwBBwHv + AfcB8QH/FAAB/wEJJKwBCQH/QwAB9AG7GmsBuwH0EgAB8QGSAe8B8ArxAfAB7wGSAfESAAH/AQkmrAEJ + Af9BAAHzAmsaigJrAfQPAAH/AfAB7wHwDvEB8AHvAfAB/w8AAf8B8yisAfMB/0AAAfcBaxyKAWsBuw4A + AfQBvAEHBPEB8AH3AZABiwJrAosBkQG8BPEBBwG8AfQOAAH/KqwB/z8AAfQBax4GAWsB/wwAAf8BvAEH + BPEBkQprAZEBvAPxAQcBvAH/DQAB8yqsAfM/AAHzAWseigFrAfMMAAHwAQcD8QG7A2sCigGLAvMBiwOK + AmsBkQPxAQcB8A0AAboqrAG6PwAB9AFrHooBawHzCwAB8QHvA/EB9wFrAYoEBgG7Av8BtAQGAYoBawGR + A/EB7wHxCwAB/wGyBqwXsw6sAf8+AAH/AWseigFrAfQKAAH/AZIB8ALxAe8BawEGBYoBkALzAYsFigEG + AWsBkQLxAfABkgH/CgAB/wesAbMBZgINGWYBswesAf8/AAGQHooBiwsAAfEBBwPxAWsRBgGKAWsBvALx + AQcB8QoAAf8GrAGzAa0BDQEQBQ0GQwpmBUMBrQGzBqwB/z0AAf8B9AEHAYoBkBmKAYsBkAEGAbwKAAH/ + AZID8QGRE4oBBgGRA/EBkgH/CQAB/wasAbMBrQkNBUMIZgVDAQ0BrQGzBqwB/zgAAf8BGwEaAXkBUgMr + AWsCkBeLApABgQGRCwAB8wHvAvIB8QFrCYoCawmKAWsBvALyAe8B8wkAAf8GrAGzAa0NDQFDBWYCQwFm + AkMEDQGtAbMGrAH/NgAB8wGZAisBMQUyAUsBawKzAZATiwKQAbMBkAFrAfILAAHwAQcC8gHvAYoGiwGK + AYsBuwK8AbsBiwGKBosBigGRAvIBBwHwCQAB/wasArMODQJDA2YEQwUNArMGrAH/NAAB9AGZASsKMgFL + AWsBkAKzEZADswGKAWsB8gwAAQcB8ALyAZEBigWQAYoBiwG8BPEBvAGLAYoFkAGKAYsC8gHwAQcJAAH/ + BqwCsw8NBkMHDQKzBqwB/zMAAfMBKwExDDIBTAHqAYoFswmQBbMBgQFrAQcB/w0AAfcB8QLyAosBswG6 + AbMCkAEGAe8G8gHvAQYCkAGzAboBswGQAWsC8gHxAfcJAAH/BqwCswINAmUEDQRmAWUHZgENAmYBZQEN + ARACDQKzBqwB/zMAAXkQMgFMAeoBawGKAYEBkAGzB5ABswGQAbMBigFrAZEBvAH/DwABkgPyAYsBkAH0 + Af8BGQKzAWsB8AbyAfEBawKzAfQB/wEZAbMBawHwAvIBkgkAAf8GrAKzAQ0BQwGzAdsBiwINAWwBugHb + AbMDiwG0A7oB2wG0AUMBswHbAbMEDQKzBqwB/zIAAf8BKxIyATEBTAFKAQYJswGKAbsB8wH/EgABkgPy + AYsBswH0Af8BGQKzAWsB8gbzAfIBawKzAfQB/wEZAbMBawHwAvIBkgkAAf8GrAKzAg0BtAHbAbMCDQGz + A9sCkAGLAbQF2wFsAYsC2wFmAg8BDQKzBqwB/zIAAfMBKxQyAUoBigmzAYoBuxQAAfcB8gHzAfIBiwGQ + AbMBugOzAYoBuwH/BPMB/wG7AYoDswG6ArMBawHyAfMB8gH3CQAB/wasArMCDQGQAtsBZgENAbQC2wG0 + A4sBkAO0AtsBiwFsAtsBiwMPArMGrAH/MgAB9AErFDIBbAuzAWsB/xMAAQcB8AH0AfIBkQGQBrMBiwH0 + BP8B9AGLAZAGswGLAfIB9AHwAQcJAAH/BqwCswEPAQ0BbALbAbQBiwLbAbMHDQFmAtsBtAFmAtsBkAEK + Ag8CswasAf8yAAH/ASsTMgFSAWsLswGKAfMTAAHwAbwB9AHzAbsBigazAYoBiwG7AvMBuwGLAYoGswGB + AZEB8wH0AbwB8AkAAf8GrAKzAQ8BDQFmBtsBiwYNAYsD2wGzAQ0BtAHbAbQBDQIPArMGrAH/MwABUhMy + AVEBiguzAYoBuxMAAfMB7wH/AfMB8gFrAbMBuQazAYoCawGKCLMBigHwAfMB9AHvAfMJAAH/BqwCswEP + Ag0BugXbAbQBZgQNAZAD2wG0AWYBDQGRAtsBZgEKAQ8CswasAf8zAAEaATESMgFKAZAMswGREwAB/wGS + AfQB/wHzAbQBigHaAbkPswHaAbMBkQHzAf8B9AGSAf8JAAH/BqwBuQGzAg8BDQG0AtsBtATbAZABDQFm + AbQD2wGLAQ0BDwEKAYsC2wFsAQ4BDwGzAbkGrAH/MwAB/wErATIBUxAyAWwNswFrAf8TAAHxAbwB/wLz + AWsBswHaDrkB2gG5AWsB8AHzAf8BvAHxCgAB/wasAboBswEPAQ4BCgGLAtsBZgFsAbQD2wFsAboC2wG6 + AWwEDQFmAtsBkAEKAQ8BswG6BqwB/zQAARoBKwJZD1MBbA2zAQYB9BMAAf8BkgH0Af8B8wG7AWsC2gW5 + AvQFuQLaAYoB9wHzAf8B9AGSAf8KAAH/BqwBugGzAQ8CCgFsAtsBiwENAQ8BiwLbAZABugHbAboBFQYN + AboB2wG0AQ0BDwGzAboGrAH/NQABGgErATICWQ1TAWwNswGKAfMUAAGSAQcC/wHzAbUBawG5AtoCuQHc + Av8B3AK5A9oBigGRAfMC/wEHAZILAAH/BqwBugGzAQ4BCgEPAUMD2wO6AtsCtALbBLoDiwG0AtsBDQEP + AbMBugasAf82AAH0AZkBMQVZCVMBbA2zAYoB8hQAAfcB7wG8Av8B8wG7AWsBkAPaAdsC9ATaAbMBawH3 + AfMC/wG8Ae8BkgsAAf8GrAG6AbMBDgEKAQ4BDQG6BdwC2wG6AZEB3AHbA9wB4QG0ApEBtALcAWwBCgGz + AboGrAH/OAAB9AGZASsBMQEyAVMBWQdTAVkBbAGzDLkBigHyFAABkgHxAe8B8QL/AvMBtAFrAZACuQLf + ArkBswGKAZEB8QHzAv8B8QHvAfEBkgsAAf8GrAG6AbMBDgMKAZEB3AbbAbQBZgG6BNsB3AG0A5EBugHc + AYsBDQGzAboGrAH/OgAB/wHzARoBMQlTAWwBswy5AYoB9BQAAZIB8gHwAe8BvAL/AfQC8wG7AZEBiwJr + AYsBkAG1AfIB8wH0Av8BvAHvAfAB8gGSCwAB/wasAboBswEOAgoCDQdDAw0CQwNmAUMBDQFDAQ0CQwIN + AbMBugasAf88AAGZATEJUwFLAZAB2gm5AdoBuQFrAf8UAAGSAvIB8QHvAQcB9AL/AfQI8wH0Av8B9AEH + Ae8B8QLyAZILAAH/BqwBugGzAg4BCgcOAQ8CDQIPAQ4FDQEPAQ0BDwEQAQ8CCgGzAboGrAH/PAABUgpT + AVIBawLaCLkB2gGzAbsVAAGSBPICkgEHAfQK/wH0AQcCkgTyAZILAAH/BqwBugGzCgoCDwINAg4BDwQN + AQ8CDgEPAQoCDgGzAboGrAH/OwAB9gExC1kBSgGBA9oEuQPaAYoB9BUAAZIB8gHzAvIBkgH/AfEB9wHv + AbwC8wL/AvMBvAHvAfcB8QH/AZIC8gHzAfIBkgsAAf8GrAG6AbkBCgIOBwoBDgEPAQ0BDwIKAQ4BDwIN + Ag8BDgEKAQ4CCgEOAbkBugasAf87AAEbATELWQFSAewBgQHaAd8E2gHfAbkBBgG8FgAB7wHxAfMC8gHv + AfQCAAH0AfABBwHvApIB7wEHAfAB9AIAAfQB7wLyAfMB8QHvCwAB/wasAdsBuQEKAQ4BCgUOAQoBDgMP + AQ4BCgEOAQoBDgIPAQ0BDwMKAw4BuQHbBqwB/zsAAZkBUgtZAVMBdAG8AYsBBgGQAbkBswGBAQYBkQHy + FwABBwHwAfQC8gEHAfIOAAHyAQcC8gH0AfABBwsAAf8GrAK6AQ4BAAYKAQ4BCgMOAQoBDgIKAQ4CCgIO + AQoDDgIAAroGrAH/OwABdAFTDFkBKwH/AQAB8wHwAbsBvAHzAf8ZAAHxAQcB/wLzArwOAAK8AvMB/wEH + AfELAAH/BqwBswHbAWwaDQFsAdsBswasAf87AAFSDVkBMQH/IAAB9AHvAf8B9AHzAfIB7wHzDAAB8wHv + AfIB8wH0Af8B7wH0CwAB/wesAbkB2xq6AdsBuQesAf87AAFSDVkBMQHzIQABBwHyAf8C8wHwAfcB9AoA + AfQB9wHwAvMB/wHyAQcMAAH/CKwBshqzAbIIrAH/OwABUg1ZATEBGyEAAfMB7wL/AvMBvAH3AfMIAAHz + AfcBvALzAv8B7wHzDAAB/yysAf87AAFSDVkBMQEbIgAC8AH/AfQC8wHwAe8BvAHyAfQC/wH0AfIBvAHv + AfAC8wH0Af8C8A4AAboqrAG6PAABeQFTDFkBMQH0IgAB9AGSAfMB/wH0A/MB8AEHAe8CkgHvAQcB8APz + AfQB/wHzAZIB9A4AAfMqrAHzPAABGgFSDFkBKwH/IwAB8gH3AfIC/wzzAv8B8gH3AfIPAAH/KqwB/zwA + Af8BMQxZAZklAAHzAZIB8AP/CPMD/wHwAZIB8xAAAf8B8yisAfMB/z0AARoBUgFeCVkBMQH0JgAB9AHw + Ae8B8gT/AvQE/wHyAe8B8AH0EgAB/wEJJqwBCQH/PwABmQFSAV4G5QFZATEBGikAAfMBBwH3AbwB8gHz + Av8B8wHyAbwB9wEHAfMVAAH/AQkkrAEJAf9BAAEaAVIBMQFSAVkBWAFSATEBdAEbLAAB/wHxAQcB7wKS + Ae8BBwHxAf8YAAH/AfMBsiCsAbIB8wH/RAAB8wEaAZkBGgHzAf9SAAH/AfMBuxusAbMBuwHzAf+hABz/ + OgABQgFNAT4HAAE+AwABKAMAAcADAAEwAwABAQEAAQEFAAGAAQQWAAP/AQAN/wHAAgABAwH+BgAD/wEA + AQ8H/wH+BAABfwYAAv8B4AIAAX8C/wHgAQcC/wH4BAABHwYAAv8BgAIAAR8C/wIAAv8B8AQAAQ8GAAH/ + Af4DAAEHAf8B/gIAAX8B/wHgBAABBwYAAf8B/AMAAQMB/wH4AgABHwH/AcAEAAEDBgAB/wH8AwABAwH/ + AfACAAEPAf8BwAQAAQMGAAH/AfgDAAEBAf8B4AIAAQcB/wHABAABAwYAAf8B+AMAAQEB/wHgAgABBwH/ + AcAEAAEDBgAB/wH4AwABAQH/AcACAAEDAf8BgAQAAQEGAAH/AfgDAAEBAf8BgAIAAQEB/wGABAABAQYA + Af8B/AMAAQMB/wGAAgABAQH/AYAEAAEBBgAB/wHwAwABAwH/BAAB/wGABAABAQYAAf4EAAEHAf8EAAH/ + AYAEAAEBBgAB+AQAAQcB/wQAAf8BgAQAAQEGAAHgBAABDwH/BAAB/wGABAABAQYAAcAEAAEfAf8EAAH/ + AYAEAAEBBgABwAQAAX8B/wQAAf8BgAQAAQEGAAGAAwABAwL/BAAB/wGABAABAQYAAYADAAEPAv8EAAH/ + AYAEAAEBBgABgAMAAQcC/wQAAf8BgAQAAQEGAAGAAwABBwL/BAAB/wGABAABAQYAAcADAAEHAv8EAAH/ + AYAEAAEBBgABwAMAAQcC/wQAAf8BgAQAAQEGAAHAAwABAwL/AYACAAEBAf8BgAQAAQEGAAHgAwABAwL/ + AYACAAEBAf8BgAQAAQEGAAHwAwABAwL/AcACAAEDAf8BgAQAAQEGAAH4AwABAwL/AcACAAEDAf8BgAQA + AQEGAAH+AwABAwL/AcACAAEDAf8BgAQAAQEGAAH/AYACAAEDAv8BwAIAAQMB/wGABAABAQYAAf8B4AIA + AQMC/wHAAgABAwH/AYAEAAEBBgAB/wHgAgABBwL/AcACAAEDAf8BgAQAAQEGAAH/AcACAAEHAv8BwAIA + AQMB/wGABAABAQYAAf8BwAIAAQ8C/wHAAWABBgEDAf8BgAQAAQEGAAH/AcACAAEfAv8BwAF/Af4BAwH/ + AYAEAAEBBgAB/wHAAQABIAF/Av8BwAF/Af4BAwH/AYAEAAEBBgAB/wHAAQABPwP/AcABPwH8AQMB/wGA + BAABAQYAAf8BwAEAAT8D/wHgAR8B+AEHAf8BgAQAAQEGAAH/AcABAAE/A/8B4AEPAfABBwH/AYAEAAEB + BgAB/wHAAQABPwP/AfACAAEPAf8BwAQAAQMGAAH/AcABAAE/A/8B8AIAAQ8B/wHABAABAwYAAf8BwAEA + AT8D/wH4AgABHwH/AcAEAAEDBgAB/wHAAQABfwP/AfwCAAE/Af8BwAQAAQMGAAH/AeABAAF/A/8B/gIA + AX8B/wHgBAABBwYAAf8B8AEABf8BgAEBAv8B8AQAAQ8GAAH/AfgBAQX/AeABBwL/AfgEAAEfBgAB/wH+ + AQcJ/wH+BAABfwYADf8BwAIAAQMB/wYACw== diff --git a/FormSettings.Designer.cs b/FormSettings.Designer.cs index 4a9fe68..df7ce94 100644 --- a/FormSettings.Designer.cs +++ b/FormSettings.Designer.cs @@ -525,7 +525,6 @@ this.cbxPTU.TabIndex = 7; this.cbxPTU.Text = "Use PTU folders"; this.cbxPTU.UseVisualStyleBackColor = false; - this.cbxPTU.Visible = false; // // cbxDetectGamepad // diff --git a/FormSettings.cs b/FormSettings.cs index cc750d0..fcb875e 100644 --- a/FormSettings.cs +++ b/FormSettings.cs @@ -80,7 +80,6 @@ namespace SCJMapper_V2 // Use PTU cbxPTU.Checked = AppSettings.Instance.UsePTU; - AppSettings.Instance.UsePTU = false; // no longer used // AutoTabXML cbxAutoTabXML.Checked = AppSettings.Instance.AutoTabXML; @@ -132,10 +131,10 @@ namespace SCJMapper_V2 AppSettings.Instance.DetectGamepad = cbxDetectGamepad.Checked; //// Use PTU - //if ( AppSettings.Instance.UsePTU != cbxPTU.Checked ) { - // MessageBox.Show( "Changing to / from PTU folders needs a restart of the application !!", "Settings Notification", MessageBoxButtons.OK, MessageBoxIcon.Information ); - //} - //AppSettings.Instance.UsePTU = cbxPTU.Checked; // no longer used + if ( AppSettings.Instance.UsePTU != cbxPTU.Checked ) { + MessageBox.Show( "Changing to / from PTU folders needs a restart of the application !!", "Settings Notification", MessageBoxButtons.OK, MessageBoxIcon.Information ); + } + AppSettings.Instance.UsePTU = cbxPTU.Checked; // AutoTabXML AppSettings.Instance.AutoTabXML = cbxAutoTabXML.Checked; diff --git a/ReadMe.txt b/ReadMe.txt index 2452cef..1db424e 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -1,12 +1,12 @@ -SC Joystick Mapper V 2.36 - Build 71 BETA -(c) Cassini, StandardToaster - 05-Feb-2018 +SC Joystick Mapper V 2.37 - Build 72 BETA +(c) Cassini, StandardToaster - 21-Mar-2018 Contains 14 files + graphics: -SCJMapper.exe The program (V2.36) -SCJMapper.exe.config Program config (V2.36) - MUST be in the same folder as the Exe file -de\SCJMapper.resources.dll German language (V2.36) - MUST be in the same folder as the Exe file -fr\SCJMapper.resources.dll French language (V2.36) - MUST be in the same folder as the Exe file +SCJMapper.exe The program (V2.37) +SCJMapper.exe.config Program config (V2.37) - MUST be in the same folder as the Exe file +de\SCJMapper.resources.dll German language (V2.37) - MUST be in the same folder as the Exe file +fr\SCJMapper.resources.dll French language (V2.37) - MUST be in the same folder as the Exe file Storage\*.scj Folder for collected assets (V2.35) - MUST be in the same folder as the Exe file SharpDX.DirectInput.dll Managed DirectInput Assembly - MUST be in the same folder as the Exe file SharpDX.dll Managed DirectX Assembly - MUST be in the same folder as the Exe file @@ -43,6 +43,10 @@ Scanned for viruses before packing... cassini@burri-web.org Changelog: +V 2.37 - BETA Build 72 - quick update for PTU 3.1 +- added - PTU 3.1 folder is now checked first - then the 'old' 3.0 installation + (\StarCitizenPTU\LIVE) then (\StarCitizen\LIVE) +- NOTE: other new stuff is not complete so you're on your own here V 2.36 - BETA Build 71 - new feature - window for realtime monitoring of the controls (works also in background) - add - silently dumps the CSV list along the backup xml file into MyDocuments diff --git a/SC/SCPath.cs b/SC/SCPath.cs index 4be1901..a396d19 100644 --- a/SC/SCPath.cs +++ b/SC/SCPath.cs @@ -83,9 +83,15 @@ namespace SCJMapper_V2.SC issue = Tx.Translate( "scpInvalidPath" ); // string.Format( "There is no vaild path given (invalid directory)" ); return issue; // no valid one can be found } + // 20180321 New PTU 3.1 another change in setup path - Testing for PTU first + if ( Directory.Exists( Path.Combine( basePath, "StarCitizenPTU" ) ) ) { + basePath = Path.Combine( basePath, "StarCitizenPTU" ); + } + else { + // then try the retail path (was valid so far..) + basePath = Path.Combine( basePath, "StarCitizen" ); + } - // - basePath = Path.Combine( basePath, "StarCitizen" ); string scpX = ""; // SC 3.0 try LIVE scpX = Path.Combine( basePath, "LIVE" ); @@ -206,8 +212,17 @@ namespace SCJMapper_V2.SC string issue = ""; if ( string.IsNullOrEmpty( scp ) ) return ""; // no valid one can be found - // - scp = Path.Combine( scp, "StarCitizen" ); + + + // 20180321 New PTU 3.1 another change in setup path - Testing for PTU first + if (AppSettings.Instance.UsePTU && Directory.Exists( Path.Combine( scp, "StarCitizenPTU" ) ) ) { + scp = Path.Combine( scp, "StarCitizenPTU" ); + } + else { + // then try the retail path (was valid so far..) + scp = Path.Combine( scp, "StarCitizen" ); + } + string scpX = ""; // SC 3.0 try LIVE scpX = Path.Combine( scp, "LIVE" ); diff --git a/SC/SCfiles.cs b/SC/SCfiles.cs index f4ff205..ec77002 100644 --- a/SC/SCfiles.cs +++ b/SC/SCfiles.cs @@ -116,7 +116,7 @@ namespace SCJMapper_V2.SC } /// - /// Update from the pack file (treats is like never read..) + /// Update from the pack file (treats it like never read..) /// private void UpdateDefProfileFile() { @@ -160,7 +160,7 @@ namespace SCJMapper_V2.SC } /// - /// Update all map files from the pak file (treats is like never read..) + /// Update all map files from the pak file (treats it like never read..) /// private void UpdateMapFiles() { @@ -208,7 +208,7 @@ namespace SCJMapper_V2.SC } /// - /// Update all language files from the pak file (treats is like never read..) + /// Update all language files from the pak file (treats it like never read..) /// private void UpdateLangFiles() { diff --git a/TheUser.cs b/TheUser.cs index 939adcd..1f34e9c 100644 --- a/TheUser.cs +++ b/TheUser.cs @@ -12,8 +12,12 @@ namespace SCJMapper_V2 /// class TheUser { + private static readonly log4net.ILog log = log4net.LogManager.GetLogger( System.Reflection.MethodBase.GetCurrentMethod( ).DeclaringType ); + // distinguish for some stuff + public static bool UsesPTU { get; set; } + private static bool hasWriteAccessToFolder( string folderPath ) { try { @@ -28,7 +32,7 @@ namespace SCJMapper_V2 } /// - /// Returns the name of the Personal Program folder in My Documents + /// Returns the name of the Personal Program folder in My Documents (depends on PTU use...) /// Creates the folder if needed /// /// Path to the Personal Program directory @@ -38,12 +42,16 @@ namespace SCJMapper_V2 log.Debug( "UserDir - Entry" ); string docPath = Path.Combine( Environment.GetFolderPath( Environment.SpecialFolder.Personal ), Application.ProductName ); if ( !Directory.Exists( docPath ) ) Directory.CreateDirectory( docPath ); + if ( UsesPTU ) { + docPath = Path.Combine( docPath, "PTU" ); + if ( !Directory.Exists( docPath ) ) Directory.CreateDirectory( docPath ); + } return docPath; } } /// - /// The directory to store the assets + /// The directory to store the assets (depends on PTU use...) /// static public string FileStoreDir { @@ -53,7 +61,10 @@ namespace SCJMapper_V2 // fallback if ( !hasWriteAccessToFolder( docPath ) ) docPath = UserDir; - return Path.Combine( docPath, "Storage"); + if ( UsesPTU ) + return Path.Combine( docPath, "PTU_Storage" ); + else + return Path.Combine( docPath, "Storage" ); } } @@ -89,6 +100,19 @@ namespace SCJMapper_V2 } + /// + /// Returns the mapping file name + path into our user dir + /// + /// The mapping name + /// A fully qualified filename + static public string MappingXmlFileName( string mapName ) + { + log.Debug( "MappingXmlFileName - Entry" ); + + return Path.Combine( UserDir, mapName + ".scjm.xml" ); + } + + /// /// Create a backupfile from the given file /// diff --git a/Translation/Strings.Designer.cs b/Translation/Strings.Designer.cs index 89a4f10..83dd6ca 100644 --- a/Translation/Strings.Designer.cs +++ b/Translation/Strings.Designer.cs @@ -339,6 +339,15 @@ namespace SCJMapper_V2.Translation { } } + /// + /// Looks up a localized string similar to List actions. + /// + public static string chkReport { + get { + return ResourceManager.GetString("chkReport", resourceCulture); + } + } + /// /// Looks up a localized string similar to Device Monitor. /// diff --git a/Translation/Strings.de.resx b/Translation/Strings.de.resx index 7581428..906fa58 100644 --- a/Translation/Strings.de.resx +++ b/Translation/Strings.de.resx @@ -368,7 +368,7 @@ Achtung: Akzeptieren der neuen Einstellungen löscht den aktuellen Aktionsbaum; benutzen sie Abbrechen um die Arbeit erst zu speichern. - ä + 2-Settings Sek. pro 360° Drehung @@ -758,4 +758,8 @@ benutzen sie Abbrechen um die Arbeit erst zu speichern. Pfad zur Star Citizen Installation 2-Settings SCPath + + Aktionen zeigen + 8-DeviceMonitor + \ No newline at end of file diff --git a/Translation/Strings.fr.resx b/Translation/Strings.fr.resx index 1fe626c..fc387dd 100644 --- a/Translation/Strings.fr.resx +++ b/Translation/Strings.fr.resx @@ -758,4 +758,8 @@ Annulez maintenant si vous voulez d'abord enregistrer votre travail. Chemin du répertoire vers le Star Citizen installation 2-Settings SCPath + + Lister les actions + 8-DeviceMonitor + \ No newline at end of file diff --git a/Translation/Strings.resx b/Translation/Strings.resx index 8242074..e8f5c62 100644 --- a/Translation/Strings.resx +++ b/Translation/Strings.resx @@ -758,4 +758,8 @@ Cancel now if you want to save your work first. Path to the Star Citizen Installation 2-Settings SCPath + + List actions + 8-DeviceMonitor + \ No newline at end of file diff --git a/actions/ActionTree.cs b/actions/ActionTree.cs index 799fe59..3f9303c 100644 --- a/actions/ActionTree.cs +++ b/actions/ActionTree.cs @@ -1116,8 +1116,8 @@ namespace SCJMapper_V2.Actions aMode = string.Format( "{0}", Tx.Translate( "mapDefault" ) ); rtf.RHighlightColor = ( inverse ) ? RTF.RTFformatter.ERColor.ERC_DarkGreen : RTF.RTFformatter.ERColor.ERC_Green; rtf.Write( Tx.Translate( "mapMapped" ) ); - rtf.WriteTab( SCUiText.Instance.Text( ac.ActionName )); - rtf.WriteTab( SCUiText.Instance.Text( acm.MapName) ); + rtf.WriteTab( SCUiText.Instance.Text( ac.ActionName ) ); + rtf.WriteTab( SCUiText.Instance.Text( acm.MapName ) ); rtf.WriteTab( aMode.PadRight( 80 ) ); rtf.WriteLn( ); rtf.RHighlightColor = RTF.RTFformatter.ERColor.ERC_Black; // background rtf.WriteLn( ); @@ -1364,7 +1364,77 @@ namespace SCJMapper_V2.Actions } return repList; } - + + /// + /// Reports a list of the mapped items as XML (not CIG style) + /// + /// XML string + public string ReportActionsXML() + { + log.Debug( "ReportActionsXML - Entry" ); + /* + Format: + + + + + + + + e.g. + + + + + + + + + + */ + string repList = ""; + repList = string.Format( "\n" ); + foreach ( ActionMapCls acm in ActionMaps ) { + repList += string.Format( "\t\n", acm.MapName ); + // restart output + string actionName = "", devRep = ""; + foreach ( ActionCls ac in acm ) { + if ( ac.ActionName == actionName ) { + // same as before + // collect further + } + else { + // new action + // report + if ( !string.IsNullOrEmpty( devRep ) ) { + repList += string.Format( "\t\t\n", actionName ); + repList += devRep; + repList += string.Format( "\t\t\n" ); + } + // and reset + actionName = ac.ActionName; // new one + devRep = ""; + } + foreach ( ActionCommandCls acc in ac.InputList ) { + if ( !Act.IsDisabledInput( acc.Input ) ) { + if ( !string.IsNullOrEmpty( acc.Input ) ) { + devRep += string.Format( "\t\t\t\n", acc.DevID, acc.Input ); + } + } + } + } + // have to report the last one + if ( !string.IsNullOrEmpty( devRep ) ) { + repList += string.Format( "\t\t\n", actionName ); + repList += devRep; + repList += string.Format( "\t\t\n" ); + } + repList += string.Format( "\t\n" ); + } + repList += string.Format( "\n" ); + return repList; + } + /// /// Reports a summary list of the mapped items /// diff --git a/defaultProfile.xml b/defaultProfile.xml index 2f0099a..5317ab8 100644 --- a/defaultProfile.xml +++ b/defaultProfile.xml @@ -8,7 +8,6 @@ - @@ -24,7 +23,6 @@ - @@ -123,7 +121,7 @@ - + @@ -362,7 +360,7 @@ - + @@ -390,13 +388,13 @@ - - + + - - - + + + @@ -430,7 +428,7 @@ - + @@ -460,8 +458,9 @@ - - + + + @@ -517,10 +516,23 @@ - - - - + + + + + + + + + + + + + + + + + @@ -549,23 +561,19 @@ - - - - - - + + - + - + @@ -587,14 +595,14 @@ - - - - + + + + - - + + @@ -613,17 +621,6 @@ - - - - - - - - - - - @@ -669,10 +666,7 @@ - - - - + @@ -682,8 +676,8 @@ - - + + @@ -695,21 +689,21 @@ - + - - + + - - + + - - - + + + @@ -721,30 +715,35 @@ - + - + + + + + + + - + - - + + - - + - + - - + + @@ -764,22 +763,22 @@ - - - - + + + + - - - - + + + + - + - + @@ -822,7 +821,7 @@ - + @@ -835,16 +834,16 @@ - - + + - - + + @@ -870,20 +869,22 @@ - - - + + + - - + + + + @@ -903,10 +904,7 @@ - - - - + @@ -918,15 +916,15 @@ - - - + + + - - - - - + + + + + @@ -947,15 +945,19 @@ - + + + + - + + @@ -974,8 +976,8 @@ - - + + @@ -988,7 +990,8 @@ - + + @@ -1000,7 +1003,8 @@ - + + @@ -1012,7 +1016,8 @@ - + + @@ -1102,16 +1107,16 @@ - - - - - + + + + + - - - + + + @@ -1121,6 +1126,8 @@ + + @@ -1139,7 +1146,7 @@ - + @@ -1174,6 +1181,7 @@ + @@ -1187,19 +1195,15 @@ - - - - - + - - - - + + + + @@ -1207,7 +1211,7 @@ - + @@ -1253,6 +1257,7 @@ + @@ -1278,11 +1283,11 @@ - - - - - + + + + +