diff --git a/Source/Core/Controls/LinedefInfoPanel.Designer.cs b/Source/Core/Controls/LinedefInfoPanel.Designer.cs
index 09397632168f7753bdc848604103985c0bd92d8f..c6327c33b3b2609e13569196e2004435ef8090ab 100644
--- a/Source/Core/Controls/LinedefInfoPanel.Designer.cs
+++ b/Source/Core/Controls/LinedefInfoPanel.Designer.cs
@@ -55,27 +55,79 @@ namespace CodeImp.DoomBuilder.Controls
 			this.action = new System.Windows.Forms.Label();
 			this.frontpanel = new System.Windows.Forms.GroupBox();
 			this.frontsector = new System.Windows.Forms.Label();
-			this.frontlowname = new System.Windows.Forms.Label();
-			this.frontlowtex = new System.Windows.Forms.Panel();
-			this.frontmidtex = new System.Windows.Forms.Panel();
-			this.fronthighname = new System.Windows.Forms.Label();
+			this.flowLayoutPanelFront = new System.Windows.Forms.FlowLayoutPanel();
+			this.panel4 = new System.Windows.Forms.Panel();
 			this.fronthightex = new System.Windows.Forms.Panel();
+			this.fronthighname = new System.Windows.Forms.Label();
+			this.panelUDMFFrontTop = new System.Windows.Forms.Panel();
+			this.frontTopUDMFScale = new System.Windows.Forms.Label();
+			this.frontTopUDMFOffset = new System.Windows.Forms.Label();
+			this.frontTopUDMFScaleLabel = new System.Windows.Forms.Label();
+			this.frontTopUDMFOffsetLabel = new System.Windows.Forms.Label();
+			this.panel7 = new System.Windows.Forms.Panel();
+			this.frontmidtex = new System.Windows.Forms.Panel();
 			this.frontmidname = new System.Windows.Forms.Label();
+			this.panelUDMFFrontMid = new System.Windows.Forms.Panel();
+			this.frontMidUDMFScale = new System.Windows.Forms.Label();
+			this.frontMidUDMFOffset = new System.Windows.Forms.Label();
+			this.frontMidUDMFScaleLabel = new System.Windows.Forms.Label();
+			this.frontMidUDMFOffsetLabel = new System.Windows.Forms.Label();
+			this.panelFrontLowTex = new System.Windows.Forms.Panel();
+			this.frontlowtex = new System.Windows.Forms.Panel();
+			this.frontlowname = new System.Windows.Forms.Label();
+			this.panelUDMFFrontBottom = new System.Windows.Forms.Panel();
+			this.frontBottomUDMFScale = new System.Windows.Forms.Label();
+			this.frontBottomUDMFOffset = new System.Windows.Forms.Label();
+			this.frontBottomUDMFScaleLabel = new System.Windows.Forms.Label();
+			this.frontBottomUDMFOffsetLabel = new System.Windows.Forms.Label();
 			this.backpanel = new System.Windows.Forms.GroupBox();
 			this.backsector = new System.Windows.Forms.Label();
-			this.backlowname = new System.Windows.Forms.Label();
-			this.backlowtex = new System.Windows.Forms.Panel();
-			this.backmidname = new System.Windows.Forms.Label();
-			this.backmidtex = new System.Windows.Forms.Panel();
-			this.backhighname = new System.Windows.Forms.Label();
+			this.flowLayoutPanelBack = new System.Windows.Forms.FlowLayoutPanel();
+			this.panel1 = new System.Windows.Forms.Panel();
 			this.backhightex = new System.Windows.Forms.Panel();
+			this.backhighname = new System.Windows.Forms.Label();
+			this.panelUDMFBackTop = new System.Windows.Forms.Panel();
+			this.backTopUDMFScale = new System.Windows.Forms.Label();
+			this.backTopUDMFOffset = new System.Windows.Forms.Label();
+			this.backTopUDMFScaleLabel = new System.Windows.Forms.Label();
+			this.backTopUDMFOffsetLabel = new System.Windows.Forms.Label();
+			this.panel2 = new System.Windows.Forms.Panel();
+			this.backmidtex = new System.Windows.Forms.Panel();
+			this.backmidname = new System.Windows.Forms.Label();
+			this.panelUDMFBackMid = new System.Windows.Forms.Panel();
+			this.backMidUDMFScale = new System.Windows.Forms.Label();
+			this.backMidUDMFOffset = new System.Windows.Forms.Label();
+			this.backMidUDMFScaleLabel = new System.Windows.Forms.Label();
+			this.backMidUDMFOffsetLabel = new System.Windows.Forms.Label();
+			this.panelBackLowTex = new System.Windows.Forms.Panel();
+			this.backlowtex = new System.Windows.Forms.Panel();
+			this.backlowname = new System.Windows.Forms.Label();
+			this.panelUDMFBackBottom = new System.Windows.Forms.Panel();
+			this.backBottomUDMFScale = new System.Windows.Forms.Label();
+			this.backBottomUDMFOffset = new System.Windows.Forms.Label();
+			this.backBottomUDMFScaleLabel = new System.Windows.Forms.Label();
+			this.backBottomUDMFOffsetLabel = new System.Windows.Forms.Label();
 			label1 = new System.Windows.Forms.Label();
 			label4 = new System.Windows.Forms.Label();
 			label3 = new System.Windows.Forms.Label();
 			label2 = new System.Windows.Forms.Label();
 			this.infopanel.SuspendLayout();
 			this.frontpanel.SuspendLayout();
+			this.flowLayoutPanelFront.SuspendLayout();
+			this.panel4.SuspendLayout();
+			this.panelUDMFFrontTop.SuspendLayout();
+			this.panel7.SuspendLayout();
+			this.panelUDMFFrontMid.SuspendLayout();
+			this.panelFrontLowTex.SuspendLayout();
+			this.panelUDMFFrontBottom.SuspendLayout();
 			this.backpanel.SuspendLayout();
+			this.flowLayoutPanelBack.SuspendLayout();
+			this.panel1.SuspendLayout();
+			this.panelUDMFBackTop.SuspendLayout();
+			this.panel2.SuspendLayout();
+			this.panelUDMFBackMid.SuspendLayout();
+			this.panelBackLowTex.SuspendLayout();
+			this.panelUDMFBackBottom.SuspendLayout();
 			this.SuspendLayout();
 			// 
 			// label1
@@ -92,7 +144,7 @@ namespace CodeImp.DoomBuilder.Controls
 			label4.AutoSize = true;
 			label4.Location = new System.Drawing.Point(24, 77);
 			label4.Name = "label4";
-			label4.Size = new System.Drawing.Size(28, 14);
+			label4.Size = new System.Drawing.Size(27, 14);
 			label4.TabIndex = 4;
 			label4.Text = "Tag:";
 			// 
@@ -287,12 +339,12 @@ namespace CodeImp.DoomBuilder.Controls
 			// 
 			// backoffsetlabel
 			// 
-			this.backoffsetlabel.AutoSize = true;
-			this.backoffsetlabel.Location = new System.Drawing.Point(111, 77);
+			this.backoffsetlabel.Location = new System.Drawing.Point(107, 77);
 			this.backoffsetlabel.Name = "backoffsetlabel";
-			this.backoffsetlabel.Size = new System.Drawing.Size(66, 14);
+			this.backoffsetlabel.Size = new System.Drawing.Size(70, 14);
 			this.backoffsetlabel.TabIndex = 14;
 			this.backoffsetlabel.Text = "Back offset:";
+			this.backoffsetlabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
 			// 
 			// frontoffset
 			// 
@@ -305,12 +357,12 @@ namespace CodeImp.DoomBuilder.Controls
 			// 
 			// frontoffsetlabel
 			// 
-			this.frontoffsetlabel.AutoSize = true;
-			this.frontoffsetlabel.Location = new System.Drawing.Point(110, 58);
+			this.frontoffsetlabel.Location = new System.Drawing.Point(107, 58);
 			this.frontoffsetlabel.Name = "frontoffsetlabel";
-			this.frontoffsetlabel.Size = new System.Drawing.Size(67, 14);
+			this.frontoffsetlabel.Size = new System.Drawing.Size(70, 14);
 			this.frontoffsetlabel.TabIndex = 8;
 			this.frontoffsetlabel.Text = "Front offset:";
+			this.frontoffsetlabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
 			// 
 			// tag
 			// 
@@ -353,15 +405,10 @@ namespace CodeImp.DoomBuilder.Controls
 			// frontpanel
 			// 
 			this.frontpanel.Controls.Add(this.frontsector);
-			this.frontpanel.Controls.Add(this.frontlowname);
-			this.frontpanel.Controls.Add(this.frontlowtex);
-			this.frontpanel.Controls.Add(this.frontmidtex);
-			this.frontpanel.Controls.Add(this.fronthighname);
-			this.frontpanel.Controls.Add(this.fronthightex);
-			this.frontpanel.Controls.Add(this.frontmidname);
+			this.frontpanel.Controls.Add(this.flowLayoutPanelFront);
 			this.frontpanel.Location = new System.Drawing.Point(467, 0);
 			this.frontpanel.Name = "frontpanel";
-			this.frontpanel.Size = new System.Drawing.Size(257, 100);
+			this.frontpanel.Size = new System.Drawing.Size(515, 100);
 			this.frontpanel.TabIndex = 2;
 			this.frontpanel.TabStop = false;
 			this.frontpanel.Text = " Front ";
@@ -376,41 +423,45 @@ namespace CodeImp.DoomBuilder.Controls
 			this.frontsector.TabIndex = 6;
 			this.frontsector.Text = "Sector 666";
 			// 
-			// frontlowname
-			// 
-			this.frontlowname.BackColor = System.Drawing.SystemColors.Control;
-			this.frontlowname.Location = new System.Drawing.Point(170, 80);
-			this.frontlowname.Name = "frontlowname";
-			this.frontlowname.Size = new System.Drawing.Size(82, 13);
-			this.frontlowname.TabIndex = 5;
-			this.frontlowname.Text = "BROWNHUG";
-			this.frontlowname.TextAlign = System.Drawing.ContentAlignment.TopCenter;
-			this.frontlowname.UseMnemonic = false;
-			// 
-			// frontlowtex
+			// flowLayoutPanelFront
+			// 
+			this.flowLayoutPanelFront.Controls.Add(this.panel4);
+			this.flowLayoutPanelFront.Controls.Add(this.panelUDMFFrontTop);
+			this.flowLayoutPanelFront.Controls.Add(this.panel7);
+			this.flowLayoutPanelFront.Controls.Add(this.panelUDMFFrontMid);
+			this.flowLayoutPanelFront.Controls.Add(this.panelFrontLowTex);
+			this.flowLayoutPanelFront.Controls.Add(this.panelUDMFFrontBottom);
+			this.flowLayoutPanelFront.Location = new System.Drawing.Point(6, 14);
+			this.flowLayoutPanelFront.Margin = new System.Windows.Forms.Padding(0);
+			this.flowLayoutPanelFront.Name = "flowLayoutPanelFront";
+			this.flowLayoutPanelFront.Size = new System.Drawing.Size(503, 80);
+			this.flowLayoutPanelFront.TabIndex = 13;
+			this.flowLayoutPanelFront.WrapContents = false;
+			// 
+			// panel4
+			// 
+			this.panel4.Controls.Add(this.fronthightex);
+			this.panel4.Controls.Add(this.fronthighname);
+			this.panel4.Location = new System.Drawing.Point(0, 3);
+			this.panel4.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0);
+			this.panel4.Name = "panel4";
+			this.panel4.Size = new System.Drawing.Size(90, 76);
+			this.panel4.TabIndex = 5;
 			// 
-			this.frontlowtex.BackColor = System.Drawing.SystemColors.AppWorkspace;
-			this.frontlowtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
-			this.frontlowtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
-			this.frontlowtex.Location = new System.Drawing.Point(177, 19);
-			this.frontlowtex.Name = "frontlowtex";
-			this.frontlowtex.Size = new System.Drawing.Size(68, 60);
-			this.frontlowtex.TabIndex = 4;
-			// 
-			// frontmidtex
+			// fronthightex
 			// 
-			this.frontmidtex.BackColor = System.Drawing.SystemColors.AppWorkspace;
-			this.frontmidtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
-			this.frontmidtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
-			this.frontmidtex.Location = new System.Drawing.Point(95, 19);
-			this.frontmidtex.Name = "frontmidtex";
-			this.frontmidtex.Size = new System.Drawing.Size(68, 60);
-			this.frontmidtex.TabIndex = 2;
+			this.fronthightex.BackColor = System.Drawing.SystemColors.AppWorkspace;
+			this.fronthightex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
+			this.fronthightex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+			this.fronthightex.Location = new System.Drawing.Point(11, 2);
+			this.fronthightex.Name = "fronthightex";
+			this.fronthightex.Size = new System.Drawing.Size(68, 60);
+			this.fronthightex.TabIndex = 0;
 			// 
 			// fronthighname
 			// 
 			this.fronthighname.BackColor = System.Drawing.SystemColors.Control;
-			this.fronthighname.Location = new System.Drawing.Point(6, 80);
+			this.fronthighname.Location = new System.Drawing.Point(4, 63);
 			this.fronthighname.Name = "fronthighname";
 			this.fronthighname.Size = new System.Drawing.Size(82, 13);
 			this.fronthighname.TabIndex = 1;
@@ -418,20 +469,74 @@ namespace CodeImp.DoomBuilder.Controls
 			this.fronthighname.TextAlign = System.Drawing.ContentAlignment.TopCenter;
 			this.fronthighname.UseMnemonic = false;
 			// 
-			// fronthightex
+			// panelUDMFFrontTop
 			// 
-			this.fronthightex.BackColor = System.Drawing.SystemColors.AppWorkspace;
-			this.fronthightex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
-			this.fronthightex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
-			this.fronthightex.Location = new System.Drawing.Point(13, 19);
-			this.fronthightex.Name = "fronthightex";
-			this.fronthightex.Size = new System.Drawing.Size(68, 60);
-			this.fronthightex.TabIndex = 0;
+			this.panelUDMFFrontTop.Controls.Add(this.frontTopUDMFScale);
+			this.panelUDMFFrontTop.Controls.Add(this.frontTopUDMFOffset);
+			this.panelUDMFFrontTop.Controls.Add(this.frontTopUDMFScaleLabel);
+			this.panelUDMFFrontTop.Controls.Add(this.frontTopUDMFOffsetLabel);
+			this.panelUDMFFrontTop.Location = new System.Drawing.Point(90, 0);
+			this.panelUDMFFrontTop.Margin = new System.Windows.Forms.Padding(0);
+			this.panelUDMFFrontTop.Name = "panelUDMFFrontTop";
+			this.panelUDMFFrontTop.Size = new System.Drawing.Size(64, 76);
+			this.panelUDMFFrontTop.TabIndex = 6;
+			// 
+			// frontTopUDMFScale
+			// 
+			this.frontTopUDMFScale.Location = new System.Drawing.Point(0, 61);
+			this.frontTopUDMFScale.Name = "frontTopUDMFScale";
+			this.frontTopUDMFScale.Size = new System.Drawing.Size(64, 13);
+			this.frontTopUDMFScale.TabIndex = 10;
+			this.frontTopUDMFScale.Text = "-1.6, -1.6";
+			// 
+			// frontTopUDMFOffset
+			// 
+			this.frontTopUDMFOffset.Location = new System.Drawing.Point(0, 20);
+			this.frontTopUDMFOffset.Name = "frontTopUDMFOffset";
+			this.frontTopUDMFOffset.Size = new System.Drawing.Size(64, 13);
+			this.frontTopUDMFOffset.TabIndex = 9;
+			this.frontTopUDMFOffset.Text = "-100, -100";
+			// 
+			// frontTopUDMFScaleLabel
+			// 
+			this.frontTopUDMFScaleLabel.Location = new System.Drawing.Point(0, 47);
+			this.frontTopUDMFScaleLabel.Name = "frontTopUDMFScaleLabel";
+			this.frontTopUDMFScaleLabel.Size = new System.Drawing.Size(64, 14);
+			this.frontTopUDMFScaleLabel.TabIndex = 8;
+			this.frontTopUDMFScaleLabel.Text = "Scale:";
+			// 
+			// frontTopUDMFOffsetLabel
+			// 
+			this.frontTopUDMFOffsetLabel.Location = new System.Drawing.Point(0, 6);
+			this.frontTopUDMFOffsetLabel.Name = "frontTopUDMFOffsetLabel";
+			this.frontTopUDMFOffsetLabel.Size = new System.Drawing.Size(64, 13);
+			this.frontTopUDMFOffsetLabel.TabIndex = 7;
+			this.frontTopUDMFOffsetLabel.Text = "Offset:";
+			// 
+			// panel7
+			// 
+			this.panel7.Controls.Add(this.frontmidtex);
+			this.panel7.Controls.Add(this.frontmidname);
+			this.panel7.Location = new System.Drawing.Point(154, 3);
+			this.panel7.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0);
+			this.panel7.Name = "panel7";
+			this.panel7.Size = new System.Drawing.Size(90, 76);
+			this.panel7.TabIndex = 7;
+			// 
+			// frontmidtex
+			// 
+			this.frontmidtex.BackColor = System.Drawing.SystemColors.AppWorkspace;
+			this.frontmidtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
+			this.frontmidtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+			this.frontmidtex.Location = new System.Drawing.Point(11, 2);
+			this.frontmidtex.Name = "frontmidtex";
+			this.frontmidtex.Size = new System.Drawing.Size(68, 60);
+			this.frontmidtex.TabIndex = 2;
 			// 
 			// frontmidname
 			// 
 			this.frontmidname.BackColor = System.Drawing.SystemColors.Control;
-			this.frontmidname.Location = new System.Drawing.Point(88, 80);
+			this.frontmidname.Location = new System.Drawing.Point(4, 63);
 			this.frontmidname.Name = "frontmidname";
 			this.frontmidname.Size = new System.Drawing.Size(82, 13);
 			this.frontmidname.TabIndex = 3;
@@ -439,18 +544,132 @@ namespace CodeImp.DoomBuilder.Controls
 			this.frontmidname.TextAlign = System.Drawing.ContentAlignment.TopCenter;
 			this.frontmidname.UseMnemonic = false;
 			// 
+			// panelUDMFFrontMid
+			// 
+			this.panelUDMFFrontMid.Controls.Add(this.frontMidUDMFScale);
+			this.panelUDMFFrontMid.Controls.Add(this.frontMidUDMFOffset);
+			this.panelUDMFFrontMid.Controls.Add(this.frontMidUDMFScaleLabel);
+			this.panelUDMFFrontMid.Controls.Add(this.frontMidUDMFOffsetLabel);
+			this.panelUDMFFrontMid.Location = new System.Drawing.Point(244, 0);
+			this.panelUDMFFrontMid.Margin = new System.Windows.Forms.Padding(0);
+			this.panelUDMFFrontMid.Name = "panelUDMFFrontMid";
+			this.panelUDMFFrontMid.Size = new System.Drawing.Size(64, 76);
+			this.panelUDMFFrontMid.TabIndex = 11;
+			// 
+			// frontMidUDMFScale
+			// 
+			this.frontMidUDMFScale.Location = new System.Drawing.Point(0, 61);
+			this.frontMidUDMFScale.Name = "frontMidUDMFScale";
+			this.frontMidUDMFScale.Size = new System.Drawing.Size(64, 13);
+			this.frontMidUDMFScale.TabIndex = 10;
+			this.frontMidUDMFScale.Text = "-1.6, -1.6";
+			// 
+			// frontMidUDMFOffset
+			// 
+			this.frontMidUDMFOffset.Location = new System.Drawing.Point(0, 20);
+			this.frontMidUDMFOffset.Name = "frontMidUDMFOffset";
+			this.frontMidUDMFOffset.Size = new System.Drawing.Size(64, 13);
+			this.frontMidUDMFOffset.TabIndex = 9;
+			this.frontMidUDMFOffset.Text = "-100, -100";
+			// 
+			// frontMidUDMFScaleLabel
+			// 
+			this.frontMidUDMFScaleLabel.Location = new System.Drawing.Point(0, 47);
+			this.frontMidUDMFScaleLabel.Name = "frontMidUDMFScaleLabel";
+			this.frontMidUDMFScaleLabel.Size = new System.Drawing.Size(64, 14);
+			this.frontMidUDMFScaleLabel.TabIndex = 8;
+			this.frontMidUDMFScaleLabel.Text = "Scale:";
+			// 
+			// frontMidUDMFOffsetLabel
+			// 
+			this.frontMidUDMFOffsetLabel.Location = new System.Drawing.Point(0, 6);
+			this.frontMidUDMFOffsetLabel.Name = "frontMidUDMFOffsetLabel";
+			this.frontMidUDMFOffsetLabel.Size = new System.Drawing.Size(64, 13);
+			this.frontMidUDMFOffsetLabel.TabIndex = 7;
+			this.frontMidUDMFOffsetLabel.Text = "Offset:";
+			// 
+			// panelFrontLowTex
+			// 
+			this.panelFrontLowTex.Controls.Add(this.frontlowtex);
+			this.panelFrontLowTex.Controls.Add(this.frontlowname);
+			this.panelFrontLowTex.Location = new System.Drawing.Point(308, 3);
+			this.panelFrontLowTex.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0);
+			this.panelFrontLowTex.Name = "panelFrontLowTex";
+			this.panelFrontLowTex.Size = new System.Drawing.Size(90, 76);
+			this.panelFrontLowTex.TabIndex = 12;
+			// 
+			// frontlowtex
+			// 
+			this.frontlowtex.BackColor = System.Drawing.SystemColors.AppWorkspace;
+			this.frontlowtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
+			this.frontlowtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+			this.frontlowtex.Location = new System.Drawing.Point(11, 2);
+			this.frontlowtex.Name = "frontlowtex";
+			this.frontlowtex.Size = new System.Drawing.Size(68, 60);
+			this.frontlowtex.TabIndex = 4;
+			// 
+			// frontlowname
+			// 
+			this.frontlowname.BackColor = System.Drawing.SystemColors.Control;
+			this.frontlowname.Location = new System.Drawing.Point(4, 63);
+			this.frontlowname.Name = "frontlowname";
+			this.frontlowname.Size = new System.Drawing.Size(82, 13);
+			this.frontlowname.TabIndex = 5;
+			this.frontlowname.Text = "BROWNHUG";
+			this.frontlowname.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+			this.frontlowname.UseMnemonic = false;
+			// 
+			// panelUDMFFrontBottom
+			// 
+			this.panelUDMFFrontBottom.Controls.Add(this.frontBottomUDMFScale);
+			this.panelUDMFFrontBottom.Controls.Add(this.frontBottomUDMFOffset);
+			this.panelUDMFFrontBottom.Controls.Add(this.frontBottomUDMFScaleLabel);
+			this.panelUDMFFrontBottom.Controls.Add(this.frontBottomUDMFOffsetLabel);
+			this.panelUDMFFrontBottom.Location = new System.Drawing.Point(398, 0);
+			this.panelUDMFFrontBottom.Margin = new System.Windows.Forms.Padding(0);
+			this.panelUDMFFrontBottom.Name = "panelUDMFFrontBottom";
+			this.panelUDMFFrontBottom.Size = new System.Drawing.Size(64, 76);
+			this.panelUDMFFrontBottom.TabIndex = 12;
+			// 
+			// frontBottomUDMFScale
+			// 
+			this.frontBottomUDMFScale.Location = new System.Drawing.Point(0, 61);
+			this.frontBottomUDMFScale.Name = "frontBottomUDMFScale";
+			this.frontBottomUDMFScale.Size = new System.Drawing.Size(64, 13);
+			this.frontBottomUDMFScale.TabIndex = 10;
+			this.frontBottomUDMFScale.Text = "-1.6, -1.6";
+			// 
+			// frontBottomUDMFOffset
+			// 
+			this.frontBottomUDMFOffset.Location = new System.Drawing.Point(0, 20);
+			this.frontBottomUDMFOffset.Name = "frontBottomUDMFOffset";
+			this.frontBottomUDMFOffset.Size = new System.Drawing.Size(64, 13);
+			this.frontBottomUDMFOffset.TabIndex = 9;
+			this.frontBottomUDMFOffset.Text = "-100, -100";
+			// 
+			// frontBottomUDMFScaleLabel
+			// 
+			this.frontBottomUDMFScaleLabel.Location = new System.Drawing.Point(0, 47);
+			this.frontBottomUDMFScaleLabel.Name = "frontBottomUDMFScaleLabel";
+			this.frontBottomUDMFScaleLabel.Size = new System.Drawing.Size(64, 14);
+			this.frontBottomUDMFScaleLabel.TabIndex = 8;
+			this.frontBottomUDMFScaleLabel.Text = "Scale:";
+			// 
+			// frontBottomUDMFOffsetLabel
+			// 
+			this.frontBottomUDMFOffsetLabel.Location = new System.Drawing.Point(0, 6);
+			this.frontBottomUDMFOffsetLabel.Name = "frontBottomUDMFOffsetLabel";
+			this.frontBottomUDMFOffsetLabel.Size = new System.Drawing.Size(64, 13);
+			this.frontBottomUDMFOffsetLabel.TabIndex = 7;
+			this.frontBottomUDMFOffsetLabel.Text = "Offset:";
+			// 
 			// backpanel
 			// 
 			this.backpanel.Controls.Add(this.backsector);
-			this.backpanel.Controls.Add(this.backlowname);
-			this.backpanel.Controls.Add(this.backlowtex);
-			this.backpanel.Controls.Add(this.backmidname);
-			this.backpanel.Controls.Add(this.backmidtex);
-			this.backpanel.Controls.Add(this.backhighname);
-			this.backpanel.Controls.Add(this.backhightex);
-			this.backpanel.Location = new System.Drawing.Point(730, 0);
+			this.backpanel.Controls.Add(this.flowLayoutPanelBack);
+			this.backpanel.Location = new System.Drawing.Point(988, 0);
 			this.backpanel.Name = "backpanel";
-			this.backpanel.Size = new System.Drawing.Size(257, 100);
+			this.backpanel.Size = new System.Drawing.Size(540, 100);
 			this.backpanel.TabIndex = 3;
 			this.backpanel.TabStop = false;
 			this.backpanel.Text = " Back ";
@@ -465,31 +684,120 @@ namespace CodeImp.DoomBuilder.Controls
 			this.backsector.TabIndex = 7;
 			this.backsector.Text = "Sector 666";
 			// 
-			// backlowname
+			// flowLayoutPanelBack
+			// 
+			this.flowLayoutPanelBack.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+			this.flowLayoutPanelBack.Controls.Add(this.panel1);
+			this.flowLayoutPanelBack.Controls.Add(this.panelUDMFBackTop);
+			this.flowLayoutPanelBack.Controls.Add(this.panel2);
+			this.flowLayoutPanelBack.Controls.Add(this.panelUDMFBackMid);
+			this.flowLayoutPanelBack.Controls.Add(this.panelBackLowTex);
+			this.flowLayoutPanelBack.Controls.Add(this.panelUDMFBackBottom);
+			this.flowLayoutPanelBack.Location = new System.Drawing.Point(6, 14);
+			this.flowLayoutPanelBack.Name = "flowLayoutPanelBack";
+			this.flowLayoutPanelBack.Size = new System.Drawing.Size(530, 80);
+			this.flowLayoutPanelBack.TabIndex = 4;
+			this.flowLayoutPanelBack.WrapContents = false;
+			// 
+			// panel1
+			// 
+			this.panel1.Controls.Add(this.backhightex);
+			this.panel1.Controls.Add(this.backhighname);
+			this.panel1.Location = new System.Drawing.Point(0, 3);
+			this.panel1.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0);
+			this.panel1.Name = "panel1";
+			this.panel1.Size = new System.Drawing.Size(90, 76);
+			this.panel1.TabIndex = 5;
 			// 
-			this.backlowname.BackColor = System.Drawing.SystemColors.Control;
-			this.backlowname.Location = new System.Drawing.Point(170, 80);
-			this.backlowname.Name = "backlowname";
-			this.backlowname.Size = new System.Drawing.Size(82, 13);
-			this.backlowname.TabIndex = 5;
-			this.backlowname.Text = "BROWNHUG";
-			this.backlowname.TextAlign = System.Drawing.ContentAlignment.TopCenter;
-			this.backlowname.UseMnemonic = false;
+			// backhightex
 			// 
-			// backlowtex
+			this.backhightex.BackColor = System.Drawing.SystemColors.AppWorkspace;
+			this.backhightex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
+			this.backhightex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+			this.backhightex.Location = new System.Drawing.Point(11, 2);
+			this.backhightex.Name = "backhightex";
+			this.backhightex.Size = new System.Drawing.Size(68, 60);
+			this.backhightex.TabIndex = 0;
 			// 
-			this.backlowtex.BackColor = System.Drawing.SystemColors.AppWorkspace;
-			this.backlowtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
-			this.backlowtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
-			this.backlowtex.Location = new System.Drawing.Point(177, 19);
-			this.backlowtex.Name = "backlowtex";
-			this.backlowtex.Size = new System.Drawing.Size(68, 60);
-			this.backlowtex.TabIndex = 4;
+			// backhighname
+			// 
+			this.backhighname.BackColor = System.Drawing.SystemColors.Control;
+			this.backhighname.Location = new System.Drawing.Point(4, 63);
+			this.backhighname.Name = "backhighname";
+			this.backhighname.Size = new System.Drawing.Size(82, 13);
+			this.backhighname.TabIndex = 1;
+			this.backhighname.Text = "BROWNHUG";
+			this.backhighname.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+			this.backhighname.UseMnemonic = false;
+			// 
+			// panelUDMFBackTop
+			// 
+			this.panelUDMFBackTop.Controls.Add(this.backTopUDMFScale);
+			this.panelUDMFBackTop.Controls.Add(this.backTopUDMFOffset);
+			this.panelUDMFBackTop.Controls.Add(this.backTopUDMFScaleLabel);
+			this.panelUDMFBackTop.Controls.Add(this.backTopUDMFOffsetLabel);
+			this.panelUDMFBackTop.Location = new System.Drawing.Point(90, 0);
+			this.panelUDMFBackTop.Margin = new System.Windows.Forms.Padding(0);
+			this.panelUDMFBackTop.Name = "panelUDMFBackTop";
+			this.panelUDMFBackTop.Size = new System.Drawing.Size(64, 76);
+			this.panelUDMFBackTop.TabIndex = 6;
+			// 
+			// backTopUDMFScale
+			// 
+			this.backTopUDMFScale.Location = new System.Drawing.Point(0, 61);
+			this.backTopUDMFScale.Name = "backTopUDMFScale";
+			this.backTopUDMFScale.Size = new System.Drawing.Size(64, 13);
+			this.backTopUDMFScale.TabIndex = 10;
+			this.backTopUDMFScale.Text = "-1.6, -1.6";
+			// 
+			// backTopUDMFOffset
+			// 
+			this.backTopUDMFOffset.Location = new System.Drawing.Point(0, 20);
+			this.backTopUDMFOffset.Name = "backTopUDMFOffset";
+			this.backTopUDMFOffset.Size = new System.Drawing.Size(64, 13);
+			this.backTopUDMFOffset.TabIndex = 9;
+			this.backTopUDMFOffset.Text = "-100, -100";
+			// 
+			// backTopUDMFScaleLabel
+			// 
+			this.backTopUDMFScaleLabel.Location = new System.Drawing.Point(0, 47);
+			this.backTopUDMFScaleLabel.Name = "backTopUDMFScaleLabel";
+			this.backTopUDMFScaleLabel.Size = new System.Drawing.Size(64, 14);
+			this.backTopUDMFScaleLabel.TabIndex = 8;
+			this.backTopUDMFScaleLabel.Text = "Scale:";
+			// 
+			// backTopUDMFOffsetLabel
+			// 
+			this.backTopUDMFOffsetLabel.Location = new System.Drawing.Point(0, 6);
+			this.backTopUDMFOffsetLabel.Name = "backTopUDMFOffsetLabel";
+			this.backTopUDMFOffsetLabel.Size = new System.Drawing.Size(64, 13);
+			this.backTopUDMFOffsetLabel.TabIndex = 7;
+			this.backTopUDMFOffsetLabel.Text = "Offset:";
+			// 
+			// panel2
+			// 
+			this.panel2.Controls.Add(this.backmidtex);
+			this.panel2.Controls.Add(this.backmidname);
+			this.panel2.Location = new System.Drawing.Point(154, 3);
+			this.panel2.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0);
+			this.panel2.Name = "panel2";
+			this.panel2.Size = new System.Drawing.Size(90, 76);
+			this.panel2.TabIndex = 7;
+			// 
+			// backmidtex
+			// 
+			this.backmidtex.BackColor = System.Drawing.SystemColors.AppWorkspace;
+			this.backmidtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
+			this.backmidtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+			this.backmidtex.Location = new System.Drawing.Point(11, 2);
+			this.backmidtex.Name = "backmidtex";
+			this.backmidtex.Size = new System.Drawing.Size(68, 60);
+			this.backmidtex.TabIndex = 2;
 			// 
 			// backmidname
 			// 
 			this.backmidname.BackColor = System.Drawing.SystemColors.Control;
-			this.backmidname.Location = new System.Drawing.Point(88, 80);
+			this.backmidname.Location = new System.Drawing.Point(4, 63);
 			this.backmidname.Name = "backmidname";
 			this.backmidname.Size = new System.Drawing.Size(82, 13);
 			this.backmidname.TabIndex = 3;
@@ -497,36 +805,124 @@ namespace CodeImp.DoomBuilder.Controls
 			this.backmidname.TextAlign = System.Drawing.ContentAlignment.TopCenter;
 			this.backmidname.UseMnemonic = false;
 			// 
-			// backmidtex
+			// panelUDMFBackMid
 			// 
-			this.backmidtex.BackColor = System.Drawing.SystemColors.AppWorkspace;
-			this.backmidtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
-			this.backmidtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
-			this.backmidtex.Location = new System.Drawing.Point(95, 19);
-			this.backmidtex.Name = "backmidtex";
-			this.backmidtex.Size = new System.Drawing.Size(68, 60);
-			this.backmidtex.TabIndex = 2;
+			this.panelUDMFBackMid.Controls.Add(this.backMidUDMFScale);
+			this.panelUDMFBackMid.Controls.Add(this.backMidUDMFOffset);
+			this.panelUDMFBackMid.Controls.Add(this.backMidUDMFScaleLabel);
+			this.panelUDMFBackMid.Controls.Add(this.backMidUDMFOffsetLabel);
+			this.panelUDMFBackMid.Location = new System.Drawing.Point(244, 0);
+			this.panelUDMFBackMid.Margin = new System.Windows.Forms.Padding(0);
+			this.panelUDMFBackMid.Name = "panelUDMFBackMid";
+			this.panelUDMFBackMid.Size = new System.Drawing.Size(64, 76);
+			this.panelUDMFBackMid.TabIndex = 11;
 			// 
-			// backhighname
+			// backMidUDMFScale
 			// 
-			this.backhighname.BackColor = System.Drawing.SystemColors.Control;
-			this.backhighname.Location = new System.Drawing.Point(6, 80);
-			this.backhighname.Name = "backhighname";
-			this.backhighname.Size = new System.Drawing.Size(82, 13);
-			this.backhighname.TabIndex = 1;
-			this.backhighname.Text = "BROWNHUG";
-			this.backhighname.TextAlign = System.Drawing.ContentAlignment.TopCenter;
-			this.backhighname.UseMnemonic = false;
+			this.backMidUDMFScale.Location = new System.Drawing.Point(0, 61);
+			this.backMidUDMFScale.Name = "backMidUDMFScale";
+			this.backMidUDMFScale.Size = new System.Drawing.Size(64, 13);
+			this.backMidUDMFScale.TabIndex = 10;
+			this.backMidUDMFScale.Text = "-1.6, -1.6";
 			// 
-			// backhightex
+			// backMidUDMFOffset
 			// 
-			this.backhightex.BackColor = System.Drawing.SystemColors.AppWorkspace;
-			this.backhightex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
-			this.backhightex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
-			this.backhightex.Location = new System.Drawing.Point(13, 19);
-			this.backhightex.Name = "backhightex";
-			this.backhightex.Size = new System.Drawing.Size(68, 60);
-			this.backhightex.TabIndex = 0;
+			this.backMidUDMFOffset.Location = new System.Drawing.Point(0, 20);
+			this.backMidUDMFOffset.Name = "backMidUDMFOffset";
+			this.backMidUDMFOffset.Size = new System.Drawing.Size(64, 13);
+			this.backMidUDMFOffset.TabIndex = 9;
+			this.backMidUDMFOffset.Text = "-100, -100";
+			// 
+			// backMidUDMFScaleLabel
+			// 
+			this.backMidUDMFScaleLabel.Location = new System.Drawing.Point(0, 47);
+			this.backMidUDMFScaleLabel.Name = "backMidUDMFScaleLabel";
+			this.backMidUDMFScaleLabel.Size = new System.Drawing.Size(64, 14);
+			this.backMidUDMFScaleLabel.TabIndex = 8;
+			this.backMidUDMFScaleLabel.Text = "Scale:";
+			// 
+			// backMidUDMFOffsetLabel
+			// 
+			this.backMidUDMFOffsetLabel.Location = new System.Drawing.Point(0, 6);
+			this.backMidUDMFOffsetLabel.Name = "backMidUDMFOffsetLabel";
+			this.backMidUDMFOffsetLabel.Size = new System.Drawing.Size(64, 13);
+			this.backMidUDMFOffsetLabel.TabIndex = 7;
+			this.backMidUDMFOffsetLabel.Text = "Offset:";
+			// 
+			// panelBackLowTex
+			// 
+			this.panelBackLowTex.Controls.Add(this.backlowtex);
+			this.panelBackLowTex.Controls.Add(this.backlowname);
+			this.panelBackLowTex.Location = new System.Drawing.Point(308, 3);
+			this.panelBackLowTex.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0);
+			this.panelBackLowTex.Name = "panelBackLowTex";
+			this.panelBackLowTex.Size = new System.Drawing.Size(90, 76);
+			this.panelBackLowTex.TabIndex = 12;
+			// 
+			// backlowtex
+			// 
+			this.backlowtex.BackColor = System.Drawing.SystemColors.AppWorkspace;
+			this.backlowtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
+			this.backlowtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+			this.backlowtex.Location = new System.Drawing.Point(11, 2);
+			this.backlowtex.Name = "backlowtex";
+			this.backlowtex.Size = new System.Drawing.Size(68, 60);
+			this.backlowtex.TabIndex = 4;
+			// 
+			// backlowname
+			// 
+			this.backlowname.BackColor = System.Drawing.SystemColors.Control;
+			this.backlowname.Location = new System.Drawing.Point(4, 63);
+			this.backlowname.Name = "backlowname";
+			this.backlowname.Size = new System.Drawing.Size(82, 13);
+			this.backlowname.TabIndex = 5;
+			this.backlowname.Text = "BROWNHUG";
+			this.backlowname.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+			this.backlowname.UseMnemonic = false;
+			// 
+			// panelUDMFBackBottom
+			// 
+			this.panelUDMFBackBottom.Controls.Add(this.backBottomUDMFScale);
+			this.panelUDMFBackBottom.Controls.Add(this.backBottomUDMFOffset);
+			this.panelUDMFBackBottom.Controls.Add(this.backBottomUDMFScaleLabel);
+			this.panelUDMFBackBottom.Controls.Add(this.backBottomUDMFOffsetLabel);
+			this.panelUDMFBackBottom.Location = new System.Drawing.Point(398, 0);
+			this.panelUDMFBackBottom.Margin = new System.Windows.Forms.Padding(0);
+			this.panelUDMFBackBottom.Name = "panelUDMFBackBottom";
+			this.panelUDMFBackBottom.Size = new System.Drawing.Size(64, 76);
+			this.panelUDMFBackBottom.TabIndex = 12;
+			// 
+			// backBottomUDMFScale
+			// 
+			this.backBottomUDMFScale.Location = new System.Drawing.Point(0, 61);
+			this.backBottomUDMFScale.Name = "backBottomUDMFScale";
+			this.backBottomUDMFScale.Size = new System.Drawing.Size(64, 13);
+			this.backBottomUDMFScale.TabIndex = 10;
+			this.backBottomUDMFScale.Text = "-1.6, -1.6";
+			// 
+			// backBottomUDMFOffset
+			// 
+			this.backBottomUDMFOffset.Location = new System.Drawing.Point(0, 20);
+			this.backBottomUDMFOffset.Name = "backBottomUDMFOffset";
+			this.backBottomUDMFOffset.Size = new System.Drawing.Size(64, 13);
+			this.backBottomUDMFOffset.TabIndex = 9;
+			this.backBottomUDMFOffset.Text = "-100, -100";
+			// 
+			// backBottomUDMFScaleLabel
+			// 
+			this.backBottomUDMFScaleLabel.Location = new System.Drawing.Point(0, 47);
+			this.backBottomUDMFScaleLabel.Name = "backBottomUDMFScaleLabel";
+			this.backBottomUDMFScaleLabel.Size = new System.Drawing.Size(64, 14);
+			this.backBottomUDMFScaleLabel.TabIndex = 8;
+			this.backBottomUDMFScaleLabel.Text = "Scale:";
+			// 
+			// backBottomUDMFOffsetLabel
+			// 
+			this.backBottomUDMFOffsetLabel.Location = new System.Drawing.Point(0, 6);
+			this.backBottomUDMFOffsetLabel.Name = "backBottomUDMFOffsetLabel";
+			this.backBottomUDMFOffsetLabel.Size = new System.Drawing.Size(64, 13);
+			this.backBottomUDMFOffsetLabel.TabIndex = 7;
+			this.backBottomUDMFOffsetLabel.Text = "Offset:";
 			// 
 			// LinedefInfoPanel
 			// 
@@ -540,13 +936,27 @@ namespace CodeImp.DoomBuilder.Controls
 			this.MaximumSize = new System.Drawing.Size(10000, 100);
 			this.MinimumSize = new System.Drawing.Size(100, 100);
 			this.Name = "LinedefInfoPanel";
-			this.Size = new System.Drawing.Size(1047, 100);
+			this.Size = new System.Drawing.Size(1558, 100);
 			this.infopanel.ResumeLayout(false);
 			this.infopanel.PerformLayout();
 			this.frontpanel.ResumeLayout(false);
 			this.frontpanel.PerformLayout();
+			this.flowLayoutPanelFront.ResumeLayout(false);
+			this.panel4.ResumeLayout(false);
+			this.panelUDMFFrontTop.ResumeLayout(false);
+			this.panel7.ResumeLayout(false);
+			this.panelUDMFFrontMid.ResumeLayout(false);
+			this.panelFrontLowTex.ResumeLayout(false);
+			this.panelUDMFFrontBottom.ResumeLayout(false);
 			this.backpanel.ResumeLayout(false);
 			this.backpanel.PerformLayout();
+			this.flowLayoutPanelBack.ResumeLayout(false);
+			this.panel1.ResumeLayout(false);
+			this.panelUDMFBackTop.ResumeLayout(false);
+			this.panel2.ResumeLayout(false);
+			this.panelUDMFBackMid.ResumeLayout(false);
+			this.panelBackLowTex.ResumeLayout(false);
+			this.panelUDMFBackBottom.ResumeLayout(false);
 			this.ResumeLayout(false);
 
 		}
@@ -590,6 +1000,44 @@ namespace CodeImp.DoomBuilder.Controls
 		private System.Windows.Forms.Label label6;
 		private System.Windows.Forms.Label frontsector;
 		private System.Windows.Forms.Label backsector;
+		private System.Windows.Forms.FlowLayoutPanel flowLayoutPanelBack;
+		private System.Windows.Forms.Panel panel1;
+		private System.Windows.Forms.Panel panelUDMFBackTop;
+		private System.Windows.Forms.Label backTopUDMFScale;
+		private System.Windows.Forms.Label backTopUDMFOffset;
+		private System.Windows.Forms.Label backTopUDMFScaleLabel;
+		private System.Windows.Forms.Label backTopUDMFOffsetLabel;
+		private System.Windows.Forms.Panel panel2;
+		private System.Windows.Forms.Panel panelUDMFBackMid;
+		private System.Windows.Forms.Label backMidUDMFScale;
+		private System.Windows.Forms.Label backMidUDMFOffset;
+		private System.Windows.Forms.Label backMidUDMFScaleLabel;
+		private System.Windows.Forms.Label backMidUDMFOffsetLabel;
+		private System.Windows.Forms.Panel panelBackLowTex;
+		private System.Windows.Forms.Panel panelUDMFBackBottom;
+		private System.Windows.Forms.Label backBottomUDMFScale;
+		private System.Windows.Forms.Label backBottomUDMFOffset;
+		private System.Windows.Forms.Label backBottomUDMFScaleLabel;
+		private System.Windows.Forms.Label backBottomUDMFOffsetLabel;
+		private System.Windows.Forms.FlowLayoutPanel flowLayoutPanelFront;
+		private System.Windows.Forms.Panel panel4;
+		private System.Windows.Forms.Panel panelUDMFFrontTop;
+		private System.Windows.Forms.Label frontTopUDMFScale;
+		private System.Windows.Forms.Label frontTopUDMFOffset;
+		private System.Windows.Forms.Label frontTopUDMFScaleLabel;
+		private System.Windows.Forms.Label frontTopUDMFOffsetLabel;
+		private System.Windows.Forms.Panel panel7;
+		private System.Windows.Forms.Panel panelUDMFFrontMid;
+		private System.Windows.Forms.Label frontMidUDMFScale;
+		private System.Windows.Forms.Label frontMidUDMFOffset;
+		private System.Windows.Forms.Label frontMidUDMFScaleLabel;
+		private System.Windows.Forms.Label frontMidUDMFOffsetLabel;
+		private System.Windows.Forms.Panel panelFrontLowTex;
+		private System.Windows.Forms.Panel panelUDMFFrontBottom;
+		private System.Windows.Forms.Label frontBottomUDMFScale;
+		private System.Windows.Forms.Label frontBottomUDMFOffset;
+		private System.Windows.Forms.Label frontBottomUDMFScaleLabel;
+		private System.Windows.Forms.Label frontBottomUDMFOffsetLabel;
 
 	}
 }
diff --git a/Source/Core/Controls/LinedefInfoPanel.cs b/Source/Core/Controls/LinedefInfoPanel.cs
index 9436083d12e4ea6e81a1d90c20a0d58b195496da..d97b8617aec5137e5eab0b3b093098efc453c00b 100644
--- a/Source/Core/Controls/LinedefInfoPanel.cs
+++ b/Source/Core/Controls/LinedefInfoPanel.cs
@@ -57,6 +57,7 @@ namespace CodeImp.DoomBuilder.Controls
 			TypeHandler th;
 			bool upperunpegged, lowerunpegged;
 			string peggedness;
+			int defaultPanelWidth = 270; //mxd
 			
 			// Show/hide stuff depending on format
 			if(!General.Map.FormatInterface.HasActionArgs)
@@ -87,10 +88,6 @@ namespace CodeImp.DoomBuilder.Controls
 				arg5.Visible = true;
 				infopanel.Width = hexenformatwidth;
 			}
-
-			// Move panels
-			frontpanel.Left = infopanel.Left + infopanel.Width + infopanel.Margin.Right + frontpanel.Margin.Left;
-			backpanel.Left = frontpanel.Left + frontpanel.Width + frontpanel.Margin.Right + backpanel.Margin.Left;
 			
 			// Get line action information
 			LinedefActionInfo act = General.Map.Config.GetLinedefActionInfo(l.Action);
@@ -154,84 +151,245 @@ namespace CodeImp.DoomBuilder.Controls
 			// Front side available?
 			if(l.Front != null)
 			{
+				int addedWidth = 0; //mxd
+				
 				// Show sidedef info
+				frontpanel.Visible = true; //mxd
+
 				frontpanel.Text = " Front Sidedef " + l.Front.Index + " ";
 				frontsector.Text = " Sector " + l.Front.Sector.Index;
 				frontsector.Visible = true;
-				frontoffset.Text = l.Front.OffsetX + ", " + l.Front.OffsetY;
+				
+				//mxd
+				if(General.Map.UDMF) {
+					//light
+					frontoffsetlabel.Text = "Front light:";
+					setUDMFLight(l.Front.Fields, frontoffsetlabel, frontoffset);
+
+					bool hasTopFields = false;
+					bool hasMiddleFields = false;
+					bool hasBottomFields = false;
+					
+					//sidedef top
+					if(checkPairedUDMFFields(l.Front.Fields, "offsetx_top", "offsety_top", frontTopUDMFOffsetLabel, frontTopUDMFOffset))
+						hasTopFields = true;
+					if(checkPairedUDMFFields(l.Front.Fields, "scalex_top", "scaley_top", frontTopUDMFScaleLabel, frontTopUDMFScale))
+						hasTopFields = true;
+
+					//sidedef middle
+					if(checkPairedUDMFFields(l.Front.Fields, "offsetx_mid", "offsety_mid", frontMidUDMFOffsetLabel, frontMidUDMFOffset))
+						hasMiddleFields = true;
+					if(checkPairedUDMFFields(l.Front.Fields, "scalex_mid", "scaley_mid", frontMidUDMFScaleLabel, frontMidUDMFScale))
+						hasMiddleFields = true;
+
+					//sidedef bottom
+					if(checkPairedUDMFFields(l.Front.Fields, "offsetx_bottom", "offsety_bottom", frontBottomUDMFOffsetLabel, frontBottomUDMFOffset))
+						hasBottomFields = true;
+					if(checkPairedUDMFFields(l.Front.Fields, "scalex_bottom", "scaley_bottom", frontBottomUDMFScaleLabel, frontBottomUDMFScale))
+						hasBottomFields = true;
+
+					//visibility
+					panelUDMFFrontTop.Visible = hasTopFields;
+					panelUDMFFrontMid.Visible = hasMiddleFields;
+					panelUDMFFrontBottom.Visible = hasBottomFields;
+
+					//size
+					if(hasTopFields) addedWidth = 64;
+					if(hasMiddleFields) addedWidth += 64;
+					if(hasBottomFields) addedWidth += 64;
+				} else {
+					frontoffsetlabel.Text = "Front offset:";
+					frontoffset.Text = l.Front.OffsetX + ", " + l.Front.OffsetY;
+					frontoffsetlabel.Enabled = true;
+					frontoffset.Enabled = true;
+
+					panelUDMFFrontTop.Visible = false;
+					panelUDMFFrontMid.Visible = false;
+					panelUDMFFrontBottom.Visible = false;
+				}
+
+				//mxd. Resize panel
+				frontpanel.Width = defaultPanelWidth + addedWidth + 12;
+				flowLayoutPanelFront.Width = defaultPanelWidth + addedWidth;
+
 				fronthighname.Text = l.Front.HighTexture;
 				frontmidname.Text = l.Front.MiddleTexture;
 				frontlowname.Text = l.Front.LowTexture;
 				DisplaySidedefTexture(fronthightex, l.Front.HighTexture, l.Front.HighRequired());
 				DisplaySidedefTexture(frontmidtex, l.Front.MiddleTexture, l.Front.MiddleRequired());
 				DisplaySidedefTexture(frontlowtex, l.Front.LowTexture, l.Front.LowRequired());
-				frontoffsetlabel.Enabled = true;
-				frontoffset.Enabled = true;
-				frontpanel.Enabled = true;
+
+				//mxd. Position panel
+				frontpanel.Left = infopanel.Left + infopanel.Width + infopanel.Margin.Right + frontpanel.Margin.Left;
+
+				//mxd. Position label
+				frontsector.Left = frontpanel.Width - frontsector.Width - 12;
 			}
 			else
 			{
 				// Show no info
-				frontpanel.Text = " Front Sidedef ";
-				frontsector.Text = "";
-				frontsector.Visible = false;
+				//mxd
+				if(General.Map.UDMF) {
+					frontoffsetlabel.Text = "Front light:";
+					frontoffset.Text = "--";
+				} else {
+					frontoffsetlabel.Text = "Front offset:";
+					frontoffset.Text = "--, --";
+				}
+
 				frontoffsetlabel.Enabled = false;
 				frontoffset.Enabled = false;
-				frontpanel.Enabled = false;
-				frontoffset.Text = "--, --";
-				fronthighname.Text = "";
-				frontmidname.Text = "";
-				frontlowname.Text = "";
+
 				fronthightex.BackgroundImage = null;
 				frontmidtex.BackgroundImage = null;
 				frontlowtex.BackgroundImage = null;
+
+				frontpanel.Visible = false; //mxd
 			}
 
 			// Back size available?
 			if(l.Back != null)
 			{
+				int addedWidth = 0; //mxd
+				
 				// Show sidedef info
+				backpanel.Visible = true; //mxd
 				backpanel.Text = " Back Sidedef " + l.Back.Index + " ";
 				backsector.Text = " Sector " + l.Back.Sector.Index;
 				backsector.Visible = true;
-				backoffset.Text = l.Back.OffsetX + ", " + l.Back.OffsetY;
+
+				//mxd
+				if(General.Map.UDMF) {
+					//light
+					backoffsetlabel.Text = "Back light:";
+					setUDMFLight(l.Back.Fields, backoffsetlabel, backoffset);
+
+					bool hasTopFields = false;
+					bool hasMiddleFields = false;
+					bool hasBottomFields = false;
+
+					//sidedef top
+					if(checkPairedUDMFFields(l.Back.Fields, "offsetx_top", "offsety_top", backTopUDMFOffsetLabel, backTopUDMFOffset))
+						hasTopFields = true;
+					if(checkPairedUDMFFields(l.Back.Fields, "scalex_top", "scaley_top", backTopUDMFScaleLabel, backTopUDMFScale))
+						hasTopFields = true;
+
+					//sidedef middle
+					if(checkPairedUDMFFields(l.Back.Fields, "offsetx_mid", "offsety_mid", backMidUDMFOffsetLabel, backMidUDMFOffset))
+						hasMiddleFields = true;
+					if(checkPairedUDMFFields(l.Back.Fields, "scalex_mid", "scaley_mid", backMidUDMFScaleLabel, backMidUDMFScale))
+						hasMiddleFields = true;
+
+					//sidedef bottom
+					if(checkPairedUDMFFields(l.Back.Fields, "offsetx_bottom", "offsety_bottom", backBottomUDMFOffsetLabel, backBottomUDMFOffset))
+						hasBottomFields = true;
+					if(checkPairedUDMFFields(l.Back.Fields, "scalex_bottom", "scaley_bottom", backBottomUDMFScaleLabel, backBottomUDMFScale))
+						hasBottomFields = true;
+
+					//visibility
+					panelUDMFBackTop.Visible = hasTopFields;
+					panelUDMFBackMid.Visible = hasMiddleFields;
+					panelUDMFBackBottom.Visible = hasBottomFields;
+
+					//size
+					if(hasTopFields) addedWidth = 64;
+					if(hasMiddleFields) addedWidth += 64;
+					if(hasBottomFields) addedWidth += 64;
+				} else {
+					backoffsetlabel.Text = "Back offset:";
+					backoffset.Text = l.Back.OffsetX + ", " + l.Back.OffsetY;
+					backoffsetlabel.Enabled = true;
+					backoffset.Enabled = true;
+
+					panelUDMFBackTop.Visible = false;
+					panelUDMFBackMid.Visible = false;
+					panelUDMFBackBottom.Visible = false;
+				}
+
+				//mxd. Resize panel
+				backpanel.Width = defaultPanelWidth + addedWidth + 12;
+				flowLayoutPanelBack.Width = defaultPanelWidth + addedWidth;
+
 				backhighname.Text = l.Back.HighTexture;
 				backmidname.Text = l.Back.MiddleTexture;
 				backlowname.Text = l.Back.LowTexture;
 				DisplaySidedefTexture(backhightex, l.Back.HighTexture, l.Back.HighRequired());
 				DisplaySidedefTexture(backmidtex, l.Back.MiddleTexture, l.Back.MiddleRequired());
 				DisplaySidedefTexture(backlowtex, l.Back.LowTexture, l.Back.LowRequired());
-				backoffsetlabel.Enabled = true;
-				backoffset.Enabled = true;
-				backpanel.Enabled = true;
+
+				//mxd. Position panel
+				backpanel.Left = (l.Front != null ? frontpanel.Right : infopanel.Right) + 3;
+
+				//mxd. Position label
+				backsector.Left = backpanel.Width - backsector.Width - 12;
 			}
 			else
 			{
 				// Show no info
-				backpanel.Text = " Back Sidedef ";
-				backsector.Text = "";
-				backsector.Visible = false;
+				//mxd
+				if(General.Map.UDMF) {
+					backoffsetlabel.Text = "Back light:";
+					backoffset.Text = "--";
+				} else {
+					backoffsetlabel.Text = "Back offset:";
+					backoffset.Text = "--, --";
+				}
+
 				backoffsetlabel.Enabled = false;
 				backoffset.Enabled = false;
-				backpanel.Enabled = false;
-				backoffset.Text = "--, --";
-				backhighname.Text = "";
-				backmidname.Text = "";
-				backlowname.Text = "";
+
 				backhightex.BackgroundImage = null;
 				backmidtex.BackgroundImage = null;
 				backlowtex.BackgroundImage = null;
+
+				backpanel.Visible = false; //mxd
 			}
-			
-			// Position labels
-			frontsector.Left = frontlowtex.Right - frontsector.Width;
-			backsector.Left = backlowtex.Right - backsector.Width;
 
 			// Show the whole thing
 			this.Show();
 			this.Update();
 		}
 
+		//mxd
+		private bool checkPairedUDMFFields(UniFields fields, string paramX, string paramY, Label label, Label value) {
+			float x = 0;
+			float y = 0;
+
+			if(fields.ContainsKey(paramX))
+				x = (float)fields[paramX].Value;
+			if(fields.ContainsKey(paramY))
+				y = (float)fields[paramY].Value;
+
+			if(x != 0.0f || y != 0.0f) {
+				value.Text = x + ", " + y;
+				value.Enabled = true;
+				label.Enabled = true;
+				return true;
+			}
+
+			value.Text = "--, --";
+			value.Enabled = false;
+			label.Enabled = false;
+			return false;
+		}
+
+		//mxd
+		private void setUDMFLight(UniFields fields, Label label, Label value) {
+			if(fields.ContainsKey("light")) {
+				value.Text = fields["light"].Value.ToString();
+
+				if(fields.ContainsKey("lightabsolute") && Boolean.Parse(fields["lightabsolute"].Value.ToString()))
+					value.Text += " (abs)";
+
+				value.Enabled = true;
+				label.Enabled = true;
+			} else {
+				value.Text = "--";
+				label.Enabled = false;
+				value.Enabled = false;
+			}
+		}
+
 		// When visible changed
 		protected override void OnVisibleChanged(EventArgs e)
 		{
diff --git a/Source/Core/Controls/LinedefInfoPanel.resx b/Source/Core/Controls/LinedefInfoPanel.resx
index b680dcc82127cb309080e57700c460833c8e2280..27dc0cde9a18dce06b4ca2b9087f47a7ad15a2d6 100644
--- a/Source/Core/Controls/LinedefInfoPanel.resx
+++ b/Source/Core/Controls/LinedefInfoPanel.resx
@@ -183,15 +183,9 @@
   <metadata name="arg1.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
-  <metadata name="backoffsetlabel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
   <metadata name="frontoffset.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
-  <metadata name="frontoffsetlabel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
   <metadata name="tag.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
@@ -204,55 +198,10 @@
   <metadata name="action.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
-  <metadata name="frontpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
   <metadata name="frontsector.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
-  <metadata name="frontlowname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="frontlowtex.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="frontmidtex.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="fronthighname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="fronthightex.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="frontmidname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="backpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
   <metadata name="backsector.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
-  <metadata name="backlowname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="backlowtex.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="backmidname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="backmidtex.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="backhighname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="backhightex.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
 </root>
\ No newline at end of file
diff --git a/Source/Core/Controls/SectorInfoPanel.Designer.cs b/Source/Core/Controls/SectorInfoPanel.Designer.cs
index a0f3f48c8a72a79b3a35270692a9b0a84f9758f2..9711a3ea716b642f1bc1bba11e337a7de0c0849c 100644
--- a/Source/Core/Controls/SectorInfoPanel.Designer.cs
+++ b/Source/Core/Controls/SectorInfoPanel.Designer.cs
@@ -34,6 +34,14 @@ namespace CodeImp.DoomBuilder.Controls
 			System.Windows.Forms.Label label3;
 			System.Windows.Forms.Label label2;
 			System.Windows.Forms.Label label1;
+			this.ceilingLightLabel = new System.Windows.Forms.Label();
+			this.ceilingScaleLabel = new System.Windows.Forms.Label();
+			this.ceilingAngleLabel = new System.Windows.Forms.Label();
+			this.ceilingOffsetLabel = new System.Windows.Forms.Label();
+			this.floorOffsetLabel = new System.Windows.Forms.Label();
+			this.floorLightLabel = new System.Windows.Forms.Label();
+			this.floorAngleLabel = new System.Windows.Forms.Label();
+			this.floorScaleLabel = new System.Windows.Forms.Label();
 			this.sectorinfo = new System.Windows.Forms.GroupBox();
 			this.brightness = new System.Windows.Forms.Label();
 			this.height = new System.Windows.Forms.Label();
@@ -41,12 +49,23 @@ namespace CodeImp.DoomBuilder.Controls
 			this.floor = new System.Windows.Forms.Label();
 			this.ceiling = new System.Windows.Forms.Label();
 			this.effect = new System.Windows.Forms.Label();
+			this.ceilingLight = new System.Windows.Forms.Label();
+			this.ceilingScale = new System.Windows.Forms.Label();
+			this.ceilingAngle = new System.Windows.Forms.Label();
+			this.ceilingOffset = new System.Windows.Forms.Label();
 			this.ceilingpanel = new System.Windows.Forms.GroupBox();
+			this.ceilingInfo = new System.Windows.Forms.Panel();
 			this.ceilingname = new System.Windows.Forms.Label();
 			this.ceilingtex = new System.Windows.Forms.Panel();
 			this.floorpanel = new System.Windows.Forms.GroupBox();
+			this.floorInfo = new System.Windows.Forms.Panel();
+			this.floorLight = new System.Windows.Forms.Label();
+			this.floorScale = new System.Windows.Forms.Label();
+			this.floorOffset = new System.Windows.Forms.Label();
+			this.floorAngle = new System.Windows.Forms.Label();
 			this.floorname = new System.Windows.Forms.Label();
 			this.floortex = new System.Windows.Forms.Panel();
+			this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
 			label13 = new System.Windows.Forms.Label();
 			label5 = new System.Windows.Forms.Label();
 			label4 = new System.Windows.Forms.Label();
@@ -55,63 +74,138 @@ namespace CodeImp.DoomBuilder.Controls
 			label1 = new System.Windows.Forms.Label();
 			this.sectorinfo.SuspendLayout();
 			this.ceilingpanel.SuspendLayout();
+			this.ceilingInfo.SuspendLayout();
 			this.floorpanel.SuspendLayout();
+			this.floorInfo.SuspendLayout();
+			this.flowLayoutPanel1.SuspendLayout();
 			this.SuspendLayout();
 			// 
 			// label13
 			// 
-			label13.AutoSize = true;
-			label13.Location = new System.Drawing.Point(111, 77);
+			label13.Location = new System.Drawing.Point(103, 75);
 			label13.Name = "label13";
-			label13.Size = new System.Drawing.Size(62, 14);
+			label13.Size = new System.Drawing.Size(70, 14);
 			label13.TabIndex = 14;
 			label13.Text = "Brightness:";
+			label13.TextAlign = System.Drawing.ContentAlignment.TopRight;
 			// 
 			// label5
 			// 
-			label5.AutoSize = true;
-			label5.Location = new System.Drawing.Point(133, 58);
+			label5.Location = new System.Drawing.Point(103, 55);
 			label5.Name = "label5";
-			label5.Size = new System.Drawing.Size(40, 14);
+			label5.Size = new System.Drawing.Size(70, 14);
 			label5.TabIndex = 8;
 			label5.Text = "Height:";
+			label5.TextAlign = System.Drawing.ContentAlignment.TopRight;
 			// 
 			// label4
 			// 
-			label4.AutoSize = true;
-			label4.Location = new System.Drawing.Point(24, 77);
+			label4.Location = new System.Drawing.Point(8, 75);
 			label4.Name = "label4";
-			label4.Size = new System.Drawing.Size(28, 14);
+			label4.Size = new System.Drawing.Size(44, 14);
 			label4.TabIndex = 4;
 			label4.Text = "Tag:";
+			label4.TextAlign = System.Drawing.ContentAlignment.TopRight;
 			// 
 			// label3
 			// 
-			label3.AutoSize = true;
-			label3.Location = new System.Drawing.Point(18, 58);
+			label3.Location = new System.Drawing.Point(8, 55);
 			label3.Name = "label3";
-			label3.Size = new System.Drawing.Size(34, 14);
+			label3.Size = new System.Drawing.Size(44, 14);
 			label3.TabIndex = 3;
 			label3.Text = "Floor:";
+			label3.TextAlign = System.Drawing.ContentAlignment.TopRight;
 			// 
 			// label2
 			// 
-			label2.AutoSize = true;
-			label2.Location = new System.Drawing.Point(11, 39);
+			label2.Location = new System.Drawing.Point(8, 35);
 			label2.Name = "label2";
-			label2.Size = new System.Drawing.Size(41, 14);
+			label2.Size = new System.Drawing.Size(44, 14);
 			label2.TabIndex = 2;
 			label2.Text = "Ceiling:";
+			label2.TextAlign = System.Drawing.ContentAlignment.TopRight;
 			// 
 			// label1
 			// 
 			label1.AutoSize = true;
-			label1.Location = new System.Drawing.Point(13, 19);
+			label1.Location = new System.Drawing.Point(13, 15);
 			label1.Name = "label1";
 			label1.Size = new System.Drawing.Size(39, 14);
 			label1.TabIndex = 0;
 			label1.Text = "Effect:";
 			// 
+			// ceilingLightLabel
+			// 
+			this.ceilingLightLabel.Location = new System.Drawing.Point(3, 61);
+			this.ceilingLightLabel.Name = "ceilingLightLabel";
+			this.ceilingLightLabel.Size = new System.Drawing.Size(45, 14);
+			this.ceilingLightLabel.TabIndex = 27;
+			this.ceilingLightLabel.Text = "Light:";
+			this.ceilingLightLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
+			// 
+			// ceilingScaleLabel
+			// 
+			this.ceilingScaleLabel.Location = new System.Drawing.Point(3, 43);
+			this.ceilingScaleLabel.Name = "ceilingScaleLabel";
+			this.ceilingScaleLabel.Size = new System.Drawing.Size(45, 14);
+			this.ceilingScaleLabel.TabIndex = 26;
+			this.ceilingScaleLabel.Text = "Scale:";
+			this.ceilingScaleLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
+			// 
+			// ceilingAngleLabel
+			// 
+			this.ceilingAngleLabel.Location = new System.Drawing.Point(3, 25);
+			this.ceilingAngleLabel.Name = "ceilingAngleLabel";
+			this.ceilingAngleLabel.Size = new System.Drawing.Size(45, 14);
+			this.ceilingAngleLabel.TabIndex = 24;
+			this.ceilingAngleLabel.Text = "Angle:";
+			this.ceilingAngleLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
+			// 
+			// ceilingOffsetLabel
+			// 
+			this.ceilingOffsetLabel.Location = new System.Drawing.Point(3, 7);
+			this.ceilingOffsetLabel.Name = "ceilingOffsetLabel";
+			this.ceilingOffsetLabel.Size = new System.Drawing.Size(45, 14);
+			this.ceilingOffsetLabel.TabIndex = 22;
+			this.ceilingOffsetLabel.Text = "Offset:";
+			this.ceilingOffsetLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
+			// 
+			// floorOffsetLabel
+			// 
+			this.floorOffsetLabel.Location = new System.Drawing.Point(3, 7);
+			this.floorOffsetLabel.Name = "floorOffsetLabel";
+			this.floorOffsetLabel.Size = new System.Drawing.Size(45, 14);
+			this.floorOffsetLabel.TabIndex = 22;
+			this.floorOffsetLabel.Text = "Offset:";
+			this.floorOffsetLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
+			// 
+			// floorLightLabel
+			// 
+			this.floorLightLabel.Location = new System.Drawing.Point(3, 61);
+			this.floorLightLabel.Name = "floorLightLabel";
+			this.floorLightLabel.Size = new System.Drawing.Size(45, 14);
+			this.floorLightLabel.TabIndex = 27;
+			this.floorLightLabel.Text = "Light:";
+			this.floorLightLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
+			// 
+			// floorAngleLabel
+			// 
+			this.floorAngleLabel.Location = new System.Drawing.Point(3, 25);
+			this.floorAngleLabel.Name = "floorAngleLabel";
+			this.floorAngleLabel.Size = new System.Drawing.Size(45, 14);
+			this.floorAngleLabel.TabIndex = 24;
+			this.floorAngleLabel.Text = "Angle:";
+			this.floorAngleLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
+			// 
+			// floorScaleLabel
+			// 
+			this.floorScaleLabel.Location = new System.Drawing.Point(3, 43);
+			this.floorScaleLabel.Name = "floorScaleLabel";
+			this.floorScaleLabel.Size = new System.Drawing.Size(45, 14);
+			this.floorScaleLabel.TabIndex = 26;
+			this.floorScaleLabel.Text = "Scale:";
+			this.floorScaleLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
+			// 
 			// sectorinfo
 			// 
 			this.sectorinfo.Controls.Add(this.brightness);
@@ -127,82 +221,127 @@ namespace CodeImp.DoomBuilder.Controls
 			this.sectorinfo.Controls.Add(this.effect);
 			this.sectorinfo.Controls.Add(label1);
 			this.sectorinfo.Location = new System.Drawing.Point(0, 0);
+			this.sectorinfo.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
 			this.sectorinfo.Name = "sectorinfo";
-			this.sectorinfo.Size = new System.Drawing.Size(230, 100);
+			this.sectorinfo.Size = new System.Drawing.Size(220, 100);
 			this.sectorinfo.TabIndex = 2;
 			this.sectorinfo.TabStop = false;
 			this.sectorinfo.Text = " Sector ";
 			// 
 			// brightness
 			// 
-			this.brightness.AutoSize = true;
-			this.brightness.Location = new System.Drawing.Point(177, 77);
+			this.brightness.Location = new System.Drawing.Point(177, 75);
 			this.brightness.Name = "brightness";
-			this.brightness.Size = new System.Drawing.Size(13, 14);
+			this.brightness.Size = new System.Drawing.Size(56, 14);
 			this.brightness.TabIndex = 17;
 			this.brightness.Text = "0";
 			// 
 			// height
 			// 
-			this.height.AutoSize = true;
-			this.height.Location = new System.Drawing.Point(177, 58);
+			this.height.Location = new System.Drawing.Point(177, 55);
 			this.height.Name = "height";
-			this.height.Size = new System.Drawing.Size(13, 14);
+			this.height.Size = new System.Drawing.Size(56, 14);
 			this.height.TabIndex = 11;
 			this.height.Text = "0";
 			// 
 			// tag
 			// 
-			this.tag.AutoSize = true;
-			this.tag.Location = new System.Drawing.Point(55, 77);
+			this.tag.Location = new System.Drawing.Point(55, 75);
 			this.tag.Name = "tag";
-			this.tag.Size = new System.Drawing.Size(13, 14);
+			this.tag.Size = new System.Drawing.Size(42, 14);
 			this.tag.TabIndex = 7;
 			this.tag.Text = "0";
 			// 
 			// floor
 			// 
-			this.floor.AutoSize = true;
-			this.floor.Location = new System.Drawing.Point(55, 58);
+			this.floor.Location = new System.Drawing.Point(55, 55);
 			this.floor.Name = "floor";
-			this.floor.Size = new System.Drawing.Size(25, 14);
+			this.floor.Size = new System.Drawing.Size(42, 14);
 			this.floor.TabIndex = 6;
 			this.floor.Text = "360";
 			// 
 			// ceiling
 			// 
-			this.ceiling.AutoSize = true;
-			this.ceiling.Location = new System.Drawing.Point(55, 39);
+			this.ceiling.Location = new System.Drawing.Point(55, 35);
 			this.ceiling.Name = "ceiling";
-			this.ceiling.Size = new System.Drawing.Size(31, 14);
+			this.ceiling.Size = new System.Drawing.Size(42, 14);
 			this.ceiling.TabIndex = 5;
 			this.ceiling.Text = "1024";
 			// 
 			// effect
 			// 
 			this.effect.AutoSize = true;
-			this.effect.Location = new System.Drawing.Point(55, 19);
+			this.effect.Location = new System.Drawing.Point(55, 15);
 			this.effect.Name = "effect";
 			this.effect.Size = new System.Drawing.Size(123, 14);
 			this.effect.TabIndex = 1;
 			this.effect.Text = "0 - Whacky Pool of Fluid";
 			// 
+			// ceilingLight
+			// 
+			this.ceilingLight.Location = new System.Drawing.Point(54, 61);
+			this.ceilingLight.Name = "ceilingLight";
+			this.ceilingLight.Size = new System.Drawing.Size(60, 14);
+			this.ceilingLight.TabIndex = 29;
+			this.ceilingLight.Text = "255 (abs.)";
+			// 
+			// ceilingScale
+			// 
+			this.ceilingScale.Location = new System.Drawing.Point(54, 43);
+			this.ceilingScale.Name = "ceilingScale";
+			this.ceilingScale.Size = new System.Drawing.Size(60, 14);
+			this.ceilingScale.TabIndex = 28;
+			this.ceilingScale.Text = "-1.0, -1.0";
+			// 
+			// ceilingAngle
+			// 
+			this.ceilingAngle.Location = new System.Drawing.Point(54, 25);
+			this.ceilingAngle.Name = "ceilingAngle";
+			this.ceilingAngle.Size = new System.Drawing.Size(60, 14);
+			this.ceilingAngle.TabIndex = 25;
+			this.ceilingAngle.Text = "45";
+			// 
+			// ceilingOffset
+			// 
+			this.ceilingOffset.Location = new System.Drawing.Point(54, 7);
+			this.ceilingOffset.Name = "ceilingOffset";
+			this.ceilingOffset.Size = new System.Drawing.Size(60, 14);
+			this.ceilingOffset.TabIndex = 23;
+			this.ceilingOffset.Text = "-100, -100";
+			// 
 			// ceilingpanel
 			// 
+			this.ceilingpanel.Controls.Add(this.ceilingInfo);
 			this.ceilingpanel.Controls.Add(this.ceilingname);
 			this.ceilingpanel.Controls.Add(this.ceilingtex);
-			this.ceilingpanel.Location = new System.Drawing.Point(349, 0);
+			this.ceilingpanel.Location = new System.Drawing.Point(426, 0);
+			this.ceilingpanel.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
 			this.ceilingpanel.Name = "ceilingpanel";
-			this.ceilingpanel.Size = new System.Drawing.Size(107, 100);
+			this.ceilingpanel.Size = new System.Drawing.Size(200, 100);
 			this.ceilingpanel.TabIndex = 3;
 			this.ceilingpanel.TabStop = false;
 			this.ceilingpanel.Text = " Ceiling ";
 			// 
+			// ceilingInfo
+			// 
+			this.ceilingInfo.Controls.Add(this.ceilingLight);
+			this.ceilingInfo.Controls.Add(this.ceilingOffsetLabel);
+			this.ceilingInfo.Controls.Add(this.ceilingScale);
+			this.ceilingInfo.Controls.Add(this.ceilingOffset);
+			this.ceilingInfo.Controls.Add(this.ceilingLightLabel);
+			this.ceilingInfo.Controls.Add(this.ceilingAngleLabel);
+			this.ceilingInfo.Controls.Add(this.ceilingScaleLabel);
+			this.ceilingInfo.Controls.Add(this.ceilingAngle);
+			this.ceilingInfo.Location = new System.Drawing.Point(82, 15);
+			this.ceilingInfo.Name = "ceilingInfo";
+			this.ceilingInfo.Size = new System.Drawing.Size(118, 80);
+			this.ceilingInfo.TabIndex = 2;
+			// 
 			// ceilingname
 			// 
-			this.ceilingname.Location = new System.Drawing.Point(11, 80);
+			this.ceilingname.Location = new System.Drawing.Point(8, 80);
 			this.ceilingname.Name = "ceilingname";
-			this.ceilingname.Size = new System.Drawing.Size(84, 13);
+			this.ceilingname.Size = new System.Drawing.Size(68, 13);
 			this.ceilingname.TabIndex = 1;
 			this.ceilingname.Text = "BROWNHUG";
 			this.ceilingname.TextAlign = System.Drawing.ContentAlignment.TopCenter;
@@ -212,27 +351,76 @@ namespace CodeImp.DoomBuilder.Controls
 			this.ceilingtex.BackColor = System.Drawing.SystemColors.AppWorkspace;
 			this.ceilingtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
 			this.ceilingtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
-			this.ceilingtex.Location = new System.Drawing.Point(19, 19);
+			this.ceilingtex.Location = new System.Drawing.Point(8, 19);
 			this.ceilingtex.Name = "ceilingtex";
 			this.ceilingtex.Size = new System.Drawing.Size(68, 60);
 			this.ceilingtex.TabIndex = 0;
 			// 
 			// floorpanel
 			// 
+			this.floorpanel.Controls.Add(this.floorInfo);
 			this.floorpanel.Controls.Add(this.floorname);
 			this.floorpanel.Controls.Add(this.floortex);
-			this.floorpanel.Location = new System.Drawing.Point(236, 0);
+			this.floorpanel.Location = new System.Drawing.Point(223, 0);
+			this.floorpanel.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
 			this.floorpanel.Name = "floorpanel";
-			this.floorpanel.Size = new System.Drawing.Size(107, 100);
+			this.floorpanel.Size = new System.Drawing.Size(200, 100);
 			this.floorpanel.TabIndex = 4;
 			this.floorpanel.TabStop = false;
 			this.floorpanel.Text = " Floor ";
 			// 
+			// floorInfo
+			// 
+			this.floorInfo.Controls.Add(this.floorLight);
+			this.floorInfo.Controls.Add(this.floorOffsetLabel);
+			this.floorInfo.Controls.Add(this.floorScale);
+			this.floorInfo.Controls.Add(this.floorOffset);
+			this.floorInfo.Controls.Add(this.floorLightLabel);
+			this.floorInfo.Controls.Add(this.floorAngleLabel);
+			this.floorInfo.Controls.Add(this.floorScaleLabel);
+			this.floorInfo.Controls.Add(this.floorAngle);
+			this.floorInfo.Location = new System.Drawing.Point(82, 15);
+			this.floorInfo.Name = "floorInfo";
+			this.floorInfo.Size = new System.Drawing.Size(118, 80);
+			this.floorInfo.TabIndex = 30;
+			// 
+			// floorLight
+			// 
+			this.floorLight.Location = new System.Drawing.Point(54, 61);
+			this.floorLight.Name = "floorLight";
+			this.floorLight.Size = new System.Drawing.Size(60, 14);
+			this.floorLight.TabIndex = 29;
+			this.floorLight.Text = "255 (abs.)";
+			// 
+			// floorScale
+			// 
+			this.floorScale.Location = new System.Drawing.Point(54, 43);
+			this.floorScale.Name = "floorScale";
+			this.floorScale.Size = new System.Drawing.Size(60, 14);
+			this.floorScale.TabIndex = 28;
+			this.floorScale.Text = "-1.0, -1.0";
+			// 
+			// floorOffset
+			// 
+			this.floorOffset.Location = new System.Drawing.Point(54, 7);
+			this.floorOffset.Name = "floorOffset";
+			this.floorOffset.Size = new System.Drawing.Size(60, 14);
+			this.floorOffset.TabIndex = 23;
+			this.floorOffset.Text = "-100, -100";
+			// 
+			// floorAngle
+			// 
+			this.floorAngle.Location = new System.Drawing.Point(54, 25);
+			this.floorAngle.Name = "floorAngle";
+			this.floorAngle.Size = new System.Drawing.Size(60, 14);
+			this.floorAngle.TabIndex = 25;
+			this.floorAngle.Text = "45";
+			// 
 			// floorname
 			// 
-			this.floorname.Location = new System.Drawing.Point(11, 80);
+			this.floorname.Location = new System.Drawing.Point(8, 80);
 			this.floorname.Name = "floorname";
-			this.floorname.Size = new System.Drawing.Size(84, 13);
+			this.floorname.Size = new System.Drawing.Size(68, 13);
 			this.floorname.TabIndex = 1;
 			this.floorname.Text = "BROWNHUG";
 			this.floorname.TextAlign = System.Drawing.ContentAlignment.TopCenter;
@@ -242,27 +430,40 @@ namespace CodeImp.DoomBuilder.Controls
 			this.floortex.BackColor = System.Drawing.SystemColors.AppWorkspace;
 			this.floortex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
 			this.floortex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
-			this.floortex.Location = new System.Drawing.Point(19, 19);
+			this.floortex.Location = new System.Drawing.Point(8, 19);
 			this.floortex.Name = "floortex";
 			this.floortex.Size = new System.Drawing.Size(68, 60);
 			this.floortex.TabIndex = 0;
 			// 
+			// flowLayoutPanel1
+			// 
+			this.flowLayoutPanel1.Controls.Add(this.sectorinfo);
+			this.flowLayoutPanel1.Controls.Add(this.floorpanel);
+			this.flowLayoutPanel1.Controls.Add(this.ceilingpanel);
+			this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0);
+			this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
+			this.flowLayoutPanel1.Name = "flowLayoutPanel1";
+			this.flowLayoutPanel1.Size = new System.Drawing.Size(642, 100);
+			this.flowLayoutPanel1.TabIndex = 5;
+			this.flowLayoutPanel1.WrapContents = false;
+			// 
 			// SectorInfoPanel
 			// 
 			this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
 			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
-			this.Controls.Add(this.floorpanel);
-			this.Controls.Add(this.ceilingpanel);
-			this.Controls.Add(this.sectorinfo);
+			this.Controls.Add(this.flowLayoutPanel1);
 			this.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
 			this.MaximumSize = new System.Drawing.Size(10000, 100);
 			this.MinimumSize = new System.Drawing.Size(100, 100);
 			this.Name = "SectorInfoPanel";
-			this.Size = new System.Drawing.Size(481, 100);
+			this.Size = new System.Drawing.Size(642, 100);
 			this.sectorinfo.ResumeLayout(false);
 			this.sectorinfo.PerformLayout();
 			this.ceilingpanel.ResumeLayout(false);
+			this.ceilingInfo.ResumeLayout(false);
 			this.floorpanel.ResumeLayout(false);
+			this.floorInfo.ResumeLayout(false);
+			this.flowLayoutPanel1.ResumeLayout(false);
 			this.ResumeLayout(false);
 
 		}
@@ -282,5 +483,24 @@ namespace CodeImp.DoomBuilder.Controls
 		private System.Windows.Forms.Label floorname;
 		private System.Windows.Forms.Panel floortex;
 		private System.Windows.Forms.GroupBox sectorinfo;
+		private System.Windows.Forms.Label ceilingLight;
+		private System.Windows.Forms.Label ceilingScale;
+		private System.Windows.Forms.Label ceilingAngle;
+		private System.Windows.Forms.Label ceilingOffset;
+		private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
+		private System.Windows.Forms.Panel ceilingInfo;
+		private System.Windows.Forms.Panel floorInfo;
+		private System.Windows.Forms.Label floorLight;
+		private System.Windows.Forms.Label floorScale;
+		private System.Windows.Forms.Label floorOffset;
+		private System.Windows.Forms.Label floorAngle;
+		private System.Windows.Forms.Label ceilingLightLabel;
+		private System.Windows.Forms.Label ceilingScaleLabel;
+		private System.Windows.Forms.Label ceilingAngleLabel;
+		private System.Windows.Forms.Label ceilingOffsetLabel;
+		private System.Windows.Forms.Label floorOffsetLabel;
+		private System.Windows.Forms.Label floorLightLabel;
+		private System.Windows.Forms.Label floorAngleLabel;
+		private System.Windows.Forms.Label floorScaleLabel;
 	}
 }
diff --git a/Source/Core/Controls/SectorInfoPanel.cs b/Source/Core/Controls/SectorInfoPanel.cs
index 5909398e332e6c74177d600bff227a2c1641b3e6..b5a72edd62e64cc3c454eb4b729888b40bcb8887 100644
--- a/Source/Core/Controls/SectorInfoPanel.cs
+++ b/Source/Core/Controls/SectorInfoPanel.cs
@@ -33,11 +33,14 @@ namespace CodeImp.DoomBuilder.Controls
 {
 	internal partial class SectorInfoPanel : UserControl
 	{
+		private int fullWidth; //mxd
+		
 		// Constructor
 		public SectorInfoPanel()
 		{
 			// Initialize
 			InitializeComponent();
+			fullWidth = floorpanel.Width; //mxd
 		}
 
 		// This shows the info
@@ -68,6 +71,163 @@ namespace CodeImp.DoomBuilder.Controls
 			General.DisplayZoomedImage(floortex, General.Map.Data.GetFlatImage(s.FloorTexture).GetPreview());
 			General.DisplayZoomedImage(ceilingtex, General.Map.Data.GetFlatImage(s.CeilTexture).GetPreview());
 
+			//mxd
+			bool showExtededFloorInfo = false;
+			bool showExtededCeilingInfo = false;
+			if(General.Map.UDMF && s.Fields != null) {
+				//light
+				if(s.Fields.ContainsKey("lightceiling")) {
+					showExtededCeilingInfo = true;
+					ceilingLight.Enabled = true;
+					ceilingLightLabel.Enabled = true;
+
+					ceilingLight.Text = s.Fields["lightceiling"].Value.ToString();
+
+					if(s.Fields.ContainsKey("lightceilingabsolute") && Boolean.Parse(s.Fields["lightceilingabsolute"].Value.ToString()))
+						ceilingLight.Text += " (abs.)";
+				} else {
+					ceilingLight.Text = "--";
+					ceilingLight.Enabled = false;
+					ceilingLightLabel.Enabled = false;
+				}
+
+				if(s.Fields.ContainsKey("lightfloor")) {
+					showExtededFloorInfo = true;
+					floorLight.Enabled = true;
+					floorLightLabel.Enabled = true;
+
+					floorLight.Text = s.Fields["lightfloor"].Value.ToString();
+
+					if(s.Fields.ContainsKey("lightfloorabsolute") && Boolean.Parse(s.Fields["lightfloorabsolute"].Value.ToString()))
+						floorLight.Text += " (abs.)";
+				} else {
+					floorLight.Text = "--";
+					floorLight.Enabled = false;
+					floorLightLabel.Enabled = false;
+				}
+
+				//offsets
+				float panX = 0f;
+				float panY = 0f;
+
+				if(s.Fields.ContainsKey("xpanningceiling"))
+					panX = (float)s.Fields["xpanningceiling"].Value;
+				if(s.Fields.ContainsKey("ypanningceiling"))
+					panY = (float)s.Fields["ypanningceiling"].Value;
+
+				if(panX != 0 || panY != 0) {
+					showExtededCeilingInfo = true;
+					ceilingOffset.Enabled = true;
+					ceilingOffsetLabel.Enabled = true;
+					ceilingOffset.Text = panX + ", " + panY;
+				} else {
+					ceilingOffset.Text = "--, --";
+					ceilingOffset.Enabled = false;
+					ceilingOffsetLabel.Enabled = false;
+				}
+
+				panX = 0f;
+				panY = 0f;
+
+				if(s.Fields.ContainsKey("xpanningfloor"))
+					panX = (float)s.Fields["xpanningfloor"].Value;
+				if(s.Fields.ContainsKey("ypanningfloor"))
+					panY = (float)s.Fields["ypanningfloor"].Value;
+
+				if(panX != 0 || panY != 0) {
+					showExtededFloorInfo = true;
+					floorOffset.Enabled = true;
+					floorOffsetLabel.Enabled = true;
+					floorOffset.Text = panX + ", " + panY;
+				} else {
+					floorOffset.Text = "--, --";
+					floorOffset.Enabled = false;
+					floorOffsetLabel.Enabled = false;
+				}
+
+				//scale
+				float scaleX = 1.0f;
+				float scaleY = 1.0f;
+
+				if(s.Fields.ContainsKey("xscaleceiling"))
+					scaleX = (float)s.Fields["xscaleceiling"].Value;
+				if(s.Fields.ContainsKey("yscaleceiling"))
+					scaleY = (float)s.Fields["yscaleceiling"].Value;
+
+
+				if(scaleX != 1.0f || scaleY != 1.0f) {
+					showExtededCeilingInfo = true;
+					ceilingScale.Enabled = true;
+					ceilingScaleLabel.Enabled = true;
+					ceilingScale.Text = scaleX + ", " + scaleY;
+				} else {
+					ceilingScale.Text = "--, --";
+					ceilingScale.Enabled = false;
+					ceilingScaleLabel.Enabled = false;
+				}
+
+				scaleX = 1.0f;
+				scaleY = 1.0f;
+
+				if(s.Fields.ContainsKey("xscalefloor"))
+					scaleX = (float)s.Fields["xscalefloor"].Value;
+				if(s.Fields.ContainsKey("yscalefloor"))
+					scaleY = (float)s.Fields["yscalefloor"].Value;
+
+
+				if(scaleX != 1.0f || scaleY != 1.0f) {
+					showExtededFloorInfo = true;
+					floorScale.Enabled = true;
+					floorScaleLabel.Enabled = true;
+					floorScale.Text = scaleX + ", " + scaleY;
+				} else {
+					floorScale.Text = "--, --";
+					floorScale.Enabled = false;
+					floorScaleLabel.Enabled = false;
+				}
+
+				//rotation
+				if(s.Fields.ContainsKey("rotationceiling")) {
+					showExtededCeilingInfo = true;
+					ceilingAngle.Enabled = true;
+					ceilingAngleLabel.Enabled = true;
+					ceilingAngle.Text = s.Fields["rotationceiling"].Value.ToString() + "\u00B0";
+				} else {
+					ceilingAngle.Text = "-";
+					ceilingAngle.Enabled = false;
+					ceilingAngleLabel.Enabled = false;
+				}
+
+				if(s.Fields.ContainsKey("rotationfloor")) {
+					showExtededFloorInfo = true;
+					floorAngle.Enabled = true;
+					floorAngleLabel.Enabled = true;
+					floorAngle.Text = s.Fields["rotationfloor"].Value.ToString() + "\u00B0";
+				} else {
+					floorAngle.Text = "-";
+					floorAngle.Enabled = false;
+					floorAngleLabel.Enabled = false;
+				}
+			}
+
+			//panels size
+			if(showExtededCeilingInfo) {
+				ceilingpanel.Width = fullWidth;
+				ceilingInfo.Visible = true;
+			} else {
+				ceilingInfo.Visible = false;
+				ceilingpanel.Width = 84;
+			}
+
+			if(showExtededFloorInfo) {
+				floorpanel.Width = fullWidth;
+				floorInfo.Visible = true;
+			} else {
+				floorInfo.Visible = false;
+				floorpanel.Width = 84;
+			}
+
+
 			// Show the whole thing
 			this.Show();
 			this.Update();
diff --git a/Source/Core/Controls/SectorInfoPanel.resx b/Source/Core/Controls/SectorInfoPanel.resx
index 2dcf4292698f3a10cad0ab71ee28c28c5431fb17..faaec4cf2c34e410623638a764aab422d962db3e 100644
--- a/Source/Core/Controls/SectorInfoPanel.resx
+++ b/Source/Core/Controls/SectorInfoPanel.resx
@@ -117,82 +117,22 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <metadata name="label13.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
   <metadata name="label13.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>False</value>
   </metadata>
-  <metadata name="label5.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
   <metadata name="label5.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>False</value>
   </metadata>
-  <metadata name="label4.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
   <metadata name="label4.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>False</value>
   </metadata>
-  <metadata name="label3.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
   <metadata name="label3.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>False</value>
   </metadata>
-  <metadata name="label2.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
   <metadata name="label2.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>False</value>
   </metadata>
-  <metadata name="label1.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
   <metadata name="label1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>False</value>
   </metadata>
-  <metadata name="sectorinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="brightness.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="height.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="tag.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="floor.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="ceiling.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="effect.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="ceilingpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="ceilingname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="ceilingtex.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="floorpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="floorname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="floortex.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
 </root>
\ No newline at end of file
diff --git a/Source/Core/GZBuilder/GZGeneral.cs b/Source/Core/GZBuilder/GZGeneral.cs
index 50c6d22bb17fe2f9aba2cec422d5a8dd176b034a..af9e9b1cb9d3bea7f86e19e364c81d82e9419c77 100644
--- a/Source/Core/GZBuilder/GZGeneral.cs
+++ b/Source/Core/GZBuilder/GZGeneral.cs
@@ -32,8 +32,8 @@ namespace CodeImp.DoomBuilder.GZBuilder
         public static int[] ACS_SPECIALS { get { return acsSpecials; } }
 
         //version
-        public const float Version = 1.12f;
-        public const char Revision = 'i';
+        public const float Version = 1.13f;
+        public const char Revision = ' ';
 
         //debug console
 #if DEBUG
diff --git a/Source/Core/General/General.cs b/Source/Core/General/General.cs
index ae3cdd8da55c57887bc2d0c3d6f8a528786a9889..99fcb5c120a8c0f17cc4ec0034a822cb2b6a1aa7 100644
--- a/Source/Core/General/General.cs
+++ b/Source/Core/General/General.cs
@@ -1163,6 +1163,9 @@ namespace CodeImp.DoomBuilder
 			{
 				// Add recent file
 				mainwindow.AddRecentFile(filename);
+
+				//mxd
+				mainwindow.UpdateGZDoomPannel();
 			}
 			else
 			{
diff --git a/Source/Core/General/StepsList.cs b/Source/Core/General/StepsList.cs
index 019918ce455a1c54d1a63c6050ecec8b29a87f0d..cfd1e5d068f6c41d10a836e4cb7564bf9618f085 100644
--- a/Source/Core/General/StepsList.cs
+++ b/Source/Core/General/StepsList.cs
@@ -72,6 +72,18 @@ namespace CodeImp.DoomBuilder
 			return base[low];
 		}
 
+		//mxd. This returns a step higher for UDMF relative light range (-255..255)
+		public int GetNextHigher(int level, bool absolute) {
+			if(absolute || level >= 0) return GetNextHigher(level);
+			return -GetNextLower(Math.Abs(level));
+		}
+
+		//mxd. This returns a step lower for UDMF relative light range (-255..255)
+		public int GetNextLower(int level, bool absolute) {
+			if(absolute || level > 0) return GetNextLower(level);
+			return -GetNextHigher(Math.Abs(level));
+		}
+
 		// This returns the nearest step
 		public int GetNearest(int level)
 		{
diff --git a/Source/Core/Resources/GZDB2.ico b/Source/Core/Resources/GZDB2.ico
index 60af1d366ae5c5ace9d071b36670c43cfb159678..7b4041b3b92aff837788e15537108b50d68be748 100644
Binary files a/Source/Core/Resources/GZDB2.ico and b/Source/Core/Resources/GZDB2.ico differ
diff --git a/Source/Core/Resources/Splash3_trans.png b/Source/Core/Resources/Splash3_trans.png
index 76b769ce8e1d536d9983316e09b87c34e903e2d3..5133b08f6434e3730173828a14caa0edd75f1e86 100644
Binary files a/Source/Core/Resources/Splash3_trans.png and b/Source/Core/Resources/Splash3_trans.png differ
diff --git a/Source/Core/Windows/MainForm.Designer.cs b/Source/Core/Windows/MainForm.Designer.cs
index c8d6118eac58d89fee3c03ffd4ea83b4aba15eff..9a10a3ecb85db7c6b620749843164fcc59dc847e 100644
--- a/Source/Core/Windows/MainForm.Designer.cs
+++ b/Source/Core/Windows/MainForm.Designer.cs
@@ -1669,7 +1669,7 @@ namespace CodeImp.DoomBuilder.Windows
 			this.linedefinfo.MaximumSize = new System.Drawing.Size(10000, 100);
 			this.linedefinfo.MinimumSize = new System.Drawing.Size(100, 100);
 			this.linedefinfo.Name = "linedefinfo";
-			this.linedefinfo.Size = new System.Drawing.Size(1039, 100);
+			this.linedefinfo.Size = new System.Drawing.Size(1560, 100);
 			this.linedefinfo.TabIndex = 0;
 			this.linedefinfo.Visible = false;
 			// 
@@ -1691,7 +1691,7 @@ namespace CodeImp.DoomBuilder.Windows
 			this.sectorinfo.MaximumSize = new System.Drawing.Size(10000, 100);
 			this.sectorinfo.MinimumSize = new System.Drawing.Size(100, 100);
 			this.sectorinfo.Name = "sectorinfo";
-			this.sectorinfo.Size = new System.Drawing.Size(522, 100);
+			this.sectorinfo.Size = new System.Drawing.Size(642, 100);
 			this.sectorinfo.TabIndex = 2;
 			this.sectorinfo.Visible = false;
 			// 
diff --git a/Source/Core/Windows/MainForm.resx b/Source/Core/Windows/MainForm.resx
index b0323263aa2fb0057a818279d3bd150df6852404..375300916880d9d0c9b689d198bfe7f271c27fac 100644
--- a/Source/Core/Windows/MainForm.resx
+++ b/Source/Core/Windows/MainForm.resx
@@ -198,30 +198,6 @@
   <metadata name="sectorinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
-  <metadata name="heightpanel1.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="vertexinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="labelcollapsedinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="buttontoggleinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="modename.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="linedefinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="thinginfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="sectorinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
   <metadata name="redrawtimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>433, 17</value>
   </metadata>
@@ -257,198 +233,412 @@
   </metadata>
   <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
-        AAABAAMAEBAAAAEAGABoAwAANgAAACAgAAABABgAqAwAAJ4DAAAwMAAAAQAYAKgcAABGEAAAKAAAABAA
-        AAAgAAAAAQAYAAAAAAAAAAAASAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwmOSQeNSAb
-        MSQeNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ
-        EBAQEBAQEAAAAAAAABAQENHR0dra2uPj4+zs7PT09BAQEBAQENnZ2eLi4urq6vLy8vn5+RAQEAAAAAAA
-        ABAQEMjIyBAQEBAQEBAQEOzs7BAQEBAQEM7OztfX1xAQEBAQEBAQEBAQEAAAAAAAABAQEMDAwBAQEE1B
-        vtra2uPj4+zs7BAQEBAQEMzMzNTU1BAQEBAQEBAQEAAAAAAAABAQELq6uhAQEBAQEBAQEBAQEBAQEBAQ
-        EBAQEBAQEBAQENLS0tvb2xAQEAAAAAAAABAQEBAQELq6usDAwMjIyNHR0RAQEBAQELW1tbq6usDAwMjI
-        yNDQ0BAQEAAAAAAAAFxRwhAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAA
-        AFBMwodwy1JCm2NPrn9kvB4aOAUDBQUDBR4aOCUkhyEgcSAcNCAcNBIQEwAAAAAAAAAAACskRyQfMltJ
-        q0s+lyYiWgoHEQUDBSQiciYiWiEcKSEcKSIdJAAAAAAAAAAAAHx0d4+GjExEhiUgPCEcKSUkhx4aOCQf
-        WyUkhykjKyQfJCslKmpfYmliZQAAALOtr7mytAAAAEI4aWNbXoh/gzs0jks+l0s+lzYvZV5TV29kZyId
-        IQAAAKaeoZ2XmgAAAAAAAAAAAG5iZpWNqoJwup+Rz5WC0YBp1Hdkx2JYnpGGjFNJTAAAAAAAAAAAAAAA
-        AAAAAHJobLu3ugAAAEg9ZXlwtJWJ0Y2B0Yd+tTcxSgAAAKylpoN9gAAAAAAAAAAAAAAAAKaeoQAAAKKc
-        nrCqrAAAAAAAAAAAAAAAALCqrJCMjgAAAJCHigAAAAAAAAAAAAAAAKaeoQAAAL24ugAAAAAAAAAAAAAA
-        AAAAAAAAALi0tgAAANDMzQAAAAAAAPw/AADAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAMAD
-        AACAAQAAIAQAAOAHAADAAwAA08sAANfrAAAoAAAAIAAAAEAAAAABABgAAAAAAAAAAABIAAAASAAAAAAA
+        AAABAAQAEBAAAAEAGABoAwAARgAAACAgAAABABgAqAwAAK4DAAAwMAAAAQAYAKgcAABWEAAAQEAAAAEA
+        GAAoMgAA/iwAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFAAAAAAAAAAAAAAAAAAAAAYGBgYGBgYGBgYGBgY
+        GBgYGBgYGBgYGBgYGBgYGBhQUFBQUFAAAAAAAAAAAAAdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0d
+        HR0dHR0dHR1QUFBQUFAAAAAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiJQ
+        UFAAAAAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKChQUFAAAAAvLy8vLy8v
+        Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9QUFAAAAA2NjY2NjaGhob///////////+G
+        hob///////////////////82NjY2NjZQUFAAAAA9PT09PT3///9KSko9PT2Li4v///89PT3///9kZGQ9
+        PT09PT09PT09PT1QUFAAAABERERERET///9ERET///////////9ERERdXV3///9RUVFERERERERERERQ
+        UFAAAABLS0tLS0v///9XV1dLS0tvb2+Tk5NLS0tLS0uHh4f///9LS0tLS0tLS0tQUFAAAABSUlJSUlKX
+        l5f///////////90dHT///////////////+jo6NSUlJSUlJQUFAAAABYWFhYWFhYWFhYWFhYWFhYWFhY
+        WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhQUFAAAABdXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
+        XV1dXV1dXV1dXV0AAAAAAAAAAABiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIAAAAA
+        AAAAAAAAAAAAAABlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWUAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAwAA4AEAAMAAAACAAAAAgAAAAIAA
+        AACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAQAAwAMAAOAHAAD//wAAKAAAACAAAABAAAAAAQAYAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH19fVBPTy0sLB8dHR4cHB4cHB4cHB4cHB4cHB8cGx8c
+        HB8dHCAdHCAeHSEeHSEfHiEfHiEgHyIgHyEfHSEeHSEeHCEeHCEeHCEeHCMgHygmJT4+PmBgYHl5eQAA
+        AHp6emlpaRQSERQSERQSERQSERMSERQSERQSEhQSEhQSEhUTEhUTExYTExYUFBYUFBUTEhUTEhcVFRYU
+        FBgVFBcVExYTEhYTEhYTEhYTEhYTEhYTEicnJ0BAQF9fXwAAAG5ubi0sLBQSEhQSEhQSEv//////////
+        /yUjIzUzM////////////////4OCgv///////////////0A/PxYUFEZERP///////////3RycRcTEhcT
+        EhoXFicnJjw8PH9/fxsaGRgXFiMiIikoJ////////////////////0hHR////8HBwaChoqCio4KDhf//
+        /9HQ0KOiotjY2P///yclJHZ1df///6+urqKhofDv7////xgVFBcTEhYTEicjInl5eRgVFBgVFRgVGDY0
+        Nf///zc0MhkVExkVE////xgUEoSCgf///yYkNxkYKhgUEv///4SCgRgUEhkUEv///4SCgXVycv///xkV
+        ExkUFf///////xoVEhoVEhAQFSQgH3Z2dhgUExgVFRgVGFZUVP///xgUE////////////xgUEickIv//
+        /4SFjhgUEhgUEv///4SCgRkVFBkUEoWCgf///3Vycv///6OhoaOhovDw8YWCghkUEhkVEhkUESIfH3Z2
+        dhgUExgVFRgWGFZUVf///xgUExgUExgUEhgUEhgUEjMxRGxse////zczMhgUEv///5STmTMxPSwpNIB+
+        hP///3h2e/////////////Dv8BkVFBkVEhkVEhkUESIfHnZ2dhgUExgVFRgWGFZUVf///xgUExgUEhgU
+        EpORkRgUEisqPxgYKf///////xYTE////5iXnjw5RDw5Rf///////39+hP///xUTHlJRV////////xoU
+        ERkUERkUESIfHnZ2dhgUExgVFBgWGCcmJv///4SCgRgUEoSCgfDv7xgUEisqPRoaLzAwOvDw8GRkb///
+        /4SEjCsrQmNicv///1lZaHJyev///xsZJDEvOO/v8P///xkUERoUERkTESIfHnZ2dhgUExgVFRgVGBgW
+        FlVTUvDv7/////Dv71VSUTYzMv///////////////8XFyf///////////////4qKlQgRJnV1ff//////
+        /////5+epBAOGBEOEhkTEhkTESIfHnZ2dhgUExgVFBgWGBgWFxgVFBgUExgUEhgUEhgUEhgUEhgUEiMj
+        OR0fMiQkODo4SCQjOAkMGhgeMxEdOxAaNQsUKwoMGQcJExoXHxIPGw8OGw8OGA4NExUSFhkTESIfHnZ2
+        dhgUExgVFBgWGBgWFhgUExgUEhgUEhgUEhgUEhgUEhgUEhgUEh4eLxwdMTo3SiMjNggKFCkuOR0gKiEl
+        LRgdJhISHAgJDhwZJBMQGw8NGxAOGA4OFBgUExkTESIfHnp6ekI2ND84NUI7QkE8PkE4NUE2MkI3M0E1
+        M0I2NkA1N0I2NkI2NEE1M0I2NHBvr1pZhYGMp3V+qStGoV5ogGp3jTE1UhMbOVNLaTIpSi8oSy8pQDAq
+        PUI2Mi0sNjQvLXp6ekQ3NUM6N0M8Q0I9P0Q4NkI3M0I2NEE3N0I3QUE3Q0I2QkE3PUA5PoSAu0RGhiEg
+        XnNs5XdsyBEWNx8pXyEqTBUXKRIWKWxjhDIrTjEpSDUoQCkmNS4sOCgeLjQuLHp6ekM3NUA5NkI9P0E8
+        PkE4NUI3M0I2NEE3PYyT/43L/0Q8m3+A8oR/vUNBfBwpXXmHsTE9Z3R/nxsYListOBoeKRAQIBQWIX11
+        migtTDAoRi4nPDMwOSogMSUiMTQuLHp6ekI2NEA5NkI9P0E8PkE4NUI3M0I2NEE5OkVFXW+o5kM3S1tW
+        gzAvViAePCw8fh0iX5+y04SRqRUTKYGNpWp3hx0cLBYPHFxUcw08VyklQigiMxkTJB4WJyQbLzMuLHp6
+        ekE1Mz84NTs9PkA7PUA3NEI2NEI3M0M3NUA3OkE3PUE3PWNgjScpSCQzZC1MmzNRqChBhyY9gSU7fGpx
+        imx0hSMiNiUnMkQ0S06UsjIpQyMhLR8XKBoUJx8ZLDMuLHp6ekA0Mj43ND87QUA7PUA3NEE2MkE2MkE1
+        M0E1M0E1M0I2NGNlppCHwC4vUSk3ayI1cihGjSxMlTFLkSdDgBojSRcVM2tolkU3T4fJ+TcwRSMlMBkU
+        KRgUJxsXKjMuLHp6ekA0Mj83Nz87QT86PEA3NEE2MkE1M0E1M0E2MkI2MkI2NGtsqI2L15qT3ImBwHt2
+        o19aeU9QdjI1VENBXkE9VkpFbDo1UDUtTJG+/zAqQxkaKBwfLh8WKhgUJzIuLHp6ej00MD82Mz84Pz45
+        Oz41MkEyMM/Iz8C5vo+KjGdkhD4+UH6Cw3mFzWlzwGJkqnZ3wW5xtWBjp0BIhE5RiE9Pfz03YDMtTDAr
+        UoCc+zQrRhgaLBcXKRgUJxwcLDMuLHp6ej8zMT01NT43Pj84Oz41MkAzMc28wNzR1JyUyXRzn2FgiP//
+        /v3//3d+vWJor29xt8vr/4KJzllfjF9koz9Cb1FPfUtJdy4rUnmL5jgvSRoaLBsaKhcXJxgYKDMuLHp6
+        ej8zMT82Mz84Oz43Oj41Mj80MEE0Ms6+v5uX0mRklGBkjebk8Kei33h8w21ts3V5wP///////////4qR
+        yk5UgSsuVCoqUigrUWx1vjcuQhgbKhgZJxkZKRYYIzMuLXp6ej00MUA3ND83Pj43Oj41Mj4yMD8zM15W
+        dWBgpnJyrpKLyIaAuXVyqoN/xnVysH99v9vd5f///////////53H9md3nCMhPiMjRzg5dTAvPxcXJxsa
+        KhodKxwbJTMuLXp6ej4yMD40ND42PT02OT00MT4zLz8zMzk1SJeV7rWw/7Su/Xp4xFRXm2Ror4qEvVZU
+        glhceWlqhv////L+/4q25XiXxBkbOR4cQCQjVSIhNRYZKBwcLh4WJyQjMzQuLXp6ej4yMD40ND02PT02
+        OT00MT4zLz4zLz01NZ2b4ayp/6yo/4OC2HZ4zKmi97Cq62llmVFPeUJEZkROZkhTczM6WyIgPiIgPkE7
+        ZFVXgFFLajoyQzgxPh0XKComOTMuLHp6ejwzMD40ND43PDw1OD0zMz4zLz4zLz4yMD0zOWton7ux/np6
+        yGZptKul/I6O3IyKzH57uV9agTMwSjc2VignRz05Yj46Y1RQgX59r0E7Wo6DhZ2Znn96fEE5QDQtLHt6
+        ej4yMD0zMz00Pjw1Oj00MT4zLz4zLz4zLz8zMTwzNj8/V2lmmG9tqK6o9YmI0o2IxoqEv313smBbgjcy
+        USIiQDc0W0tIenNxs3h0pUA7W7uytauipa+nrpSQljQtLH19fT0xLz0zMzwzPT0zOT4yMj0xLz0yLj0y
+        Lj0xLz4yMEAzMT03Qm1rn1tYj5SOvYqDrm5qpYB8t3dwm2BVezIxUz45Zjw7bWxqpW9rnE5Ia6CTlaOX
+        nYd+gXRcVjo0NAAAAD0yMD0zMz4zPT0zOT00MT4zLz8zMT0zMz4zNT4zNj8zOUQ3R3Fun3dxolRUgl9d
+        h11chm1olWlihVhRdjo3Xk0/YTI0XVxbn2dlj0o/X2pbX2pVV0U5PyUiO05JSAAAAAAAAEU9PT4yPj4z
+        Oz4zNT4zNTwzNj0zOU9dqVFIYj8zOT8xNT8zMYiCpWRhk315olxZimRgiklCXUE8V0xPa09DX0E2VkI9
+        XEFBX1NDW1NGVicnRSYmQVFPUnd3dwAAAAAAAAAAAD0zPz00QTYxRo2m8D80PD80Nz4zNT0zMz8zMT8y
+        MD8zL0E1MV9bjFRSgIN9pmRej1BIcUM5XTgzUz40Ujw6XkQ6ZCkqUC40YysuVC0uVFBOVHFxcX9/fwAA
+        AAAAAAAAAGFeXldTUlZRUFZRUFZSUFZSUFdTUlhUU1dUUldTUlZSUVZSUVZSUVZSUVZSUVdSUVdSUVdS
+        UVdSUVdSUVdSUVdSUVlSUVlSUVlSUVpUU3V1dXx8fAAAAMAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAA
         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ2dnHh4eHh4eHh4e
-        Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eIRs4Ix08GBQqCQgJFhYWFxcXFxcXFxcXFxcXFxcXGBgYGBgY
-        GBgYGBgYGBgYGhoaHh4eAAAAAAAAZmZmBgYGRkZG1tbW////////////////////////////pKSkHh4e
-        Hh4eHhkwFxQlHh4e////////////////////////////////////////////////Hh4eAAAAAAAAAAAA
-        FBQUfn5+5ubm6urq6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo////+vr6Hh4eHh4eHhk/Hh4e////////////////
-        zs7OysrK2tra2tra3Nzc6urq6Ojo/v7+Hh4eAAAAAAAACQkJHh4eHh4eHh4eHh4eHh4eHh4eAAAAAAAA
-        AAAAAAAA////////5ubmHh4eOTBbHh4e////////////////Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e
-        Hh4eAAAAAAAAFxcX////////zs7OHh4emo6RHh4eSEhIeHh4cHBwcHBw////////////Hh4eEAwQHh4e
-        Hh4ewsLC/Pz8////////////Hh4eHh4ejIOFAAAAAAAAAAAAAAAAAAAAAAAAERER2tra/v7+tra2Hh4e
-        gHZ5Hh4e3Nzc////////////////////////Hh4eDAkNPzSCIR5bHh4eHh4eysrK6urq6urq////////
-        Hh4eHh4eAAAAAAAAAAAAAAAAAAAAExMTyMjI3t7eqKioHh4eSDtoHh4eUFBQhISEgoKChISEhISEiIiI
-        cHBwHh4eEQ4aOjSSJCF0Hx50FRRBHh4eHh4eurq62NjY0NDQ////9vb2Hh4eHh4eY2NjAAAAAAAACQkJ
-        Hh4eHh4eHh4eHh4eHh4eHh4eAAAAAAAAAAAAAAAAAAAAAAAAAAAAHh4eEg4XNC+NJCF0IiF7IR5kJCFo
-        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
-        mpKVvbm8AAAAAAAAOjJKPjN1RT2nXE66bly8dFzHYU/GUkKtYFKjNCtlJiE5ODM3AAAAsaqssaqsfHFz
-        ZV9iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY1ldnJSaqaGjAAAAAAAAZV9iaVpdYlZaYlZaAAAA
-        AAAAAAAAAAAAAAAAAAAAYlZaeW9yQzxAAAAAAAAAuLG0saqsVk1SAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAYlZavba5AAAAAAAAAAAAYlZata6wraaoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYlZaopqd
-        Vk1SAAAAAAAAsaqsjIOFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhHp+0s7QAAAAAAAAAAAAnJSa
-        uLG0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAta6wbGJlAAAAAAAAAAAAw77AmpKVAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAjIOFAAAAAAAAAAAAAAAAkYaKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAnJSaAAAAAAAAAAAA0c3OqaGjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAAAOAAAADgAAABKAAAADAAAABgAAAAAQAYAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH19fWpqakhISDQ0NC4uLisrKyoqKioqKioqKioq
+        KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
+        KioqKioqKioqKioqKioqKioqKioqKioqKioqKi0tLTY2NkxMTGdnZ3l5eX9/fwAAAAAAAH9/f3JyclBP
+        TykoJx4cHBwaGRwaGRwaGRwaGRwaGRwZGRwaGRwaGRwZGRwZGRwaGR0aGR0aGh0aGh0aGh4bGh4bGh4c
+        Gx8cGx8cHB8dHB8eHR8eHR8dHR8dGx8cGx8cGx4bGh8bGh8bGh8bGh8bGh8bGh8bGiAcGyEfHiMjIy0t
+        LUVFRWZmZnt7ewAAAAAAAHh4eFtbWxcVFRQSERQSERQSERQSERQSERQSERMSERQSERQSERQSEhQSEhQS
+        EhQSEhUTEhUTExUTExYTExYUFBYUFBYUFBUTExUTEhUTEhYUFBcVFRYUFBgWFRgVFBcVExYUExYTEhYT
+        EhYTEhYTEhYTEhYTEhYTEhYTEh8cGiIhISwsLEpKSm1tbQAAAAAAAG1tbSwqKRQSEhQSEhQSEhQSEhQS
+        EhQTEhUTEhUTExUTExUTExUUExUUExYUExYUExYUExUTExUTEhUTEhYUExcVFRwaGiYlJC0sLDU0NEJB
+        QUlISEA/PxcWFRYUFBgVFRgVFBcVFBcUExYUEhcUEhcTEhcTEhcTEhcTEhYTEhoXFiIhITQ0NFpaWgAA
+        AH9/f1FRUBUTEhUTExUTExUTExYUE0FAQOLi4vDw8MXExP///8TExDEvLxUTE7e3t///////////////
+        /////////9DQ0EhHR////////////////+jo6KGhoUREQy8tLR8dHf///////////////////7e2tTQx
+        MBcUExcUEhcTEhcTEh4aGi0tLVFRUQAAAH5+fhsaGRgXFiAfHyMiIikoJ01MTPPz87e3t0lJSElISFJS
+        Us7NzczMzCwrKkhHRv///318fBEUFhEVFxIWGBMWGRQWGRkYGP///1JQUBgWFhcVFYaGhfLy8qmoqBcV
+        FRsZGP///3d3djc2NRoXFzQxMdTT08XFxBgVFBgVFBcUExcTEhYTEiYjIk9PTwAAAHd3dxkUFBgVFBgV
+        FRQWGBgVFqinp+Li4hgUExkVExkVFBkVFIyKicXExBgUExgUEoyJifHx8kZDUiclOB4dLxgXJhkUExkU
+        E////1JPTRgUEhgUEhkUEmFeXP///0RAPxkVFP///1NPTxoUExkUFBkUFnR+kP///xkVFBoVEhoVEhsV
+        EhAQFSQgH09PTwAAAHNychgVFBgVFBgVFhQWGRgVF8XFxYuKiRgUExkVExkVExkVE4yKicXExBgUExgU
+        EhgUEtXV2MrKzxkaLRgUEhkUEhgUEhgUEv///1JPTRgUEhgUEhkUEhkUEvHw8H57ehkVFf///1NPThkV
+        ExkUFBkUF5qfr/Hw8RkUFBkUEhkVEhkVEhkVEyMfH09PTwAAAHNychgVFBgVFBgVFhMWGRgVF8XExYyJ
+        iRgUExgUE////////////8XExBgUEhgUEhgTFVBQYvHx83t7hBgUEhgUEhgUEhgUEv///1ZUWBkXHRcV
+        GRYUFBkUEsbExIyKiRkUFP///6mnp4yJiYyKiZqYmf///3BsbhkUFBkUEhkVEhkVEhkVEiIfH09PTwAA
+        AHNychgUExgVFBgVFhQWGRgWGMXFxYyJiRgUExgUExgUExgUExgUEhgUEhgUEhgUEjEwRCQlO3t8hf//
+        /0JAPhgTEhgTEhgUEv///2hmbzY0PzYzPickLy4rNMnIypKQlB0aIP///6inp4yKiYyKieLi4tjZ4Cgj
+        JRkUFBkUEhkVEhkVEhkVEiIfHk9PTwAAAHNychgUExgVFBgVFhQXGBgWGMXFxZqYmBgUEhgUExgUEhgU
+        EjUxMENAPxgUEhgUES4rQR8gNQsLFcLCxNLS0hgTEhgUEi8tPP///21rdEE+RT46RDg1PzczOv///3x5
+        fiknLv///1JQVhEPFhkVFCcjJvLy9HBsbhkUFBkVEhkUERoUERkUESIfHk9PTwAAAHNychgUExgVFBgV
+        FhQXGBgWGJqZmeLi4iYjIRgUExgUEhgUEqinpsXExBgUEhgUEicnPBgYKw8PGysqMfHx8oqLkxYTFDQx
+        Rv///21qdT47R0E9SD46R5ybov///0lIViwqOf///1ZTWxgVIhEOGREPG+Xl6IyJixkUExoUERkUERkU
+        ERkUESIfHk9PTwAAAHNychgUExgVFBgVFhQXGBgWGCYkJPHw8MXExDUxMCYjIX17ev///2BdXBgUEjUx
+        MGFgcFdXZk5PWkxMU6enrP///0hHUjAuQv///4GAiWZkcmVjcrGwuP///3V1ghwcMRcYKv///4B+hFZU
+        XFBOV7S0t////y0sNRkUExoUERkUERkUERkUESIfHk9PTwAAAHNychgUExgUExgVFhQXGBgWGBcVFTUy
+        MainpsXExMXExMXExGBdXBgUEhcTEm5sa8vKz8fHzcXFycbGysXFycbGyn59hyYmPMXFysbGysXFycnJ
+        z66ttlhYaBscMBkaLB8eLcbFycrJzMjHycXEx6alqkFBUxAOGQ4NFRMSFRoUERkTERkTESIfHk9PTwAA
+        AHNychgUExgUExgVFhQXGBgWGBcVFRgUExgUEhgUEhgTEhgUEhgUEhgUEhgUEhgUEiopOh0eMxwcLxkZ
+        KBYXKyAgMzg1SC0rPiAfMA8PHg8UIA8bNhAbNRIcNQ4XLwkRJRUUJBAQHSkoOiMfKBQRHRIPHBAPIg8O
+        Gg8OGA8OFBAOFBkTERkTESIfHk9PTwAAAHNychgUExgVFBgVFhQXGBgVFxcVFRgUExgUExgUExgUEhgU
+        EhgUEhgUEhgUEhgUEhwYGyMjORobLx8eMx8eMx8fMzw5SS0sPiAgLwgLFwgKExIdOw8bNwsVLQ8YMwoT
+        KQkNGwcLFy0rOx8dKBUSHA8PHA4OHw8OGQ8OGA8OFRAPFRgTEhkTESIfHk9PTwAAAHNychgVFBgVFBgW
+        FhQXGRgWGBcVFRgUExgUExgUEhgUEhgUEhgUEhgUEhgUEhgUEhgUEiIiMyAgNx0dMR8eMx0eMTYzRicm
+        PBsbKggKEx8hKBMbMA4XMA8YMhEZNAoTJwgLGAgKFCAdLSMgLBgTHA4PHA8NHBAOGg8NGA8OFQ4OFBkT
+        ERkTESIfHk9PTwAAAHd2dkA3NEA3NEA5PDU+QkE7QEA7OkA3NEE2MkE2MkE2MkE2MkE2MkE3MEE1M0A1
+        MUA1MUA1MUA1MUxKYFBQhl9cjYN+u0tMiDw+ZltidnmGpn+Lpzg+a3mFnTxDXHJ9kTc2UBoaKiQkPGtj
+        gj8xTR4xUigkSC4oRysmQSckNCknM0Q0LUQ0LTQvLU9PTwAAAHd2dkA3NEA3NEA5PDU+QkE7QD45OEI2
+        NEE2MkE2MkE2MkE2MkE2MkE1M0E1M0E1M0E1M0E1M0E2MkE1M0E2MqigyXd1sW1rmSorUY2dumhzpTI1
+        YiZAlIGMpyY5coucsTU5VhMYLRseOnFqjTUrSRtJaDEnSzMrSjIpQy4oOScmMEU2LS8uODQvLU9PTwAA
+        AHd2dkI2NEE4NUA5PDY/Q0E7QD86OUI2NEI3M0I3M0I3M0I3M0E3N0E5OkI3OkI3OUI3OUM3N0E3N0M3
+        N09GWo6IuVlZmVhWhBkgS3eGtBUaQRUZPDBGtjRFiClHlIKPqS0wTBQWLhYaM312oTgsSEiFpSslSC8n
+        RTEpQCkmNiknLS4tNzg3OzQuLU9PTwAAAHd2dkM3NUI5NkE7PDg+Q0I9P0I6OkM4NEI2NEI3M0I2NEE3
+        N0E2QEI0UEI2SEI3Rz0xTUI3P0I3P0I2Qn55tlpcolhTomlg2H9+7ElMlhgcRRcZNxUXLxwhSBYbPGBp
+        fRUXKRASKhQWKJePuEEyTnS23y0nRi4nQi8oPSonNysqNCgoNiYhMDQuLE9PTwAAAHd2dkE4NEE4NUA5
+        PDg+Q0E7QD86OUE4NUI3M0I3M0A3NEI2PEE2RnyX7Tw0XIzG/0A1VTQrampl2IOA7m9xxVZVgTA4YICM
+        rlBVhk5Yh254mjA1ThYZLigsNxscKhUWJBcYJhYXJRYXJZqRvDsxT47J/y0pRjEoQi0mOy0sNiUaLisq
+        NCglNDQuLE9PTwAAAHd2dkI2NEE4NUA6Ozc9QkE7QD86OUI2NEI3M0I3M0E4NUA3OkM5SnzL9nF75zMw
+        Z0I0UEE3RIR+rW5oozk2XRonVY+ds4STuhkYOJGjyIWQrmNsgBgVKxUSIigpNyAhKxodJSUoLSUoLZWO
+        uTovT5W8/y4qRzAnQScjNi0uOCAYKSUbLCUjLzMuLE9PTwAAAHd2dkE1M0E4NUE6PTc9QkE8Pj46OT85
+        NEI2NkI3M0M4NEI3OUI4RS87XV+lzXhwtkI3R05Jdjs2XS0sTiIgPjM7WTZJjSEnaIWUtJ+x0I2dtEtV
+        ZxUSK4SRqXuHmWFofDY4UBUPGhYPHGFfiT8yUo6n/ysqRC4mPSokNTIwNh4XJhwWJyMaLjMuLE9PTwAA
+        AHd2dkE2MkA3NEA5PDU+QkE8Pj86OUI2NEI3M0I3M0I3M0E4NUI4OEI3P0A2QkA3QUM4QFpYgjEyTiIh
+        QyMsUi9PmzZSpi9LnytGlis+d32Kqh0mUh0mUZaluISOn2NqfTI2UhkSJyMlMFJKaT8wUH6T9jY0SC0o
+        PSMgLx4XJhwWJxsVKB8ZLDMuLE9PTwAAAHd2dT82MkA3ND85OjY8QUA6Pz45OEE1M0E2MkE2MkE2MkE1
+        M0I2NEI2NkE2OEE2OEE2OIKBv2dkkS8vUxsdQCE2bSVAiidInjdcuDFNmixGki9LkjBOlS9DfR8pUVxk
+        dScrPSYrOmZgiUM3S0IzUnyL5zIuQSglNSEgKhkUIxsYKBkVKB8ZLDMvLE9PTwAAAHd2dUA0Mj82Mz84
+        OzQ9QUA6Pz45OEE1M0E2MkE2MkE2MkE2MkE2MkE1M0E1M0E1M0I2NFVbkKKc44+HvDU2WBofRh0waRgu
+        YiE/hidEjiZFkChDhi1GjCRBfhwtYBUaOxYUMRoYNVpXhEEzSz0wUHuF0zQrRiMgLx4gKxoUJRgUJxkV
+        KBoWKTMuLE9PTwAAAHd2dUA0Mj82Mz84OzQ9QUA6Pz45OEA3NEE2MkE1M0E2MkE1M0E2MkE2MkE2MkE1
+        M0I2NGFinmxytZWS4ZqT3IJ+wF5YkVxXhEpEZzs0WTMyWSw0WSkrSSgmQyonQDw2VVJOckQ9Xj0yTDgu
+        TC4mS2RmrDEpSB0dLRkaKBkZKRoUJRoWKRcTJjIuLE9PTwAAAHd2dT8zMT41Mj02OTQ6Pz85Pjw2Nz41
+        Mj8zMU1FRlpXWVhRVkAyMz8zMUA1MUE1M0Q7OHJvnW53wVRenoeJ0JCN3I6K1oODz4SCyIJ/xHJvrXt2
+        rVJXlGNilFtYik5JcERAZDw0UzkwSzIsSy8oTVFLhjEpRyUiMhcZKx0dLxwaLRkVKBkZKTIuLE9PTwAA
+        AHZ2dT00MT00MT02OTQ6Pz84PTw3Nj41Mj8zMayhqdnP1c7HzMO2uJmMlHhym2NehUJDWGdqlszX/+Hn
+        /2R0t2BnrExSjVddoG91vG91tmNopVlgn0dQj1FVj1BRi01Mfj89ZzYwUzEvTDczVjwyVkA0aDouTCkm
+        NhcXKRkZKRoaLBgWKRoaKjMuLE9PTwAAAHZ1dT00MT41Mj03ODY6P0A5Pj42Nj00MT8zMUE0Mubb3uLW
+        3NPGyJiQxX58qltZh2Jhif///v///////5Wj2G5zuF9lsG91wm1yqZeszHeDyV5ll1Zdj19ko1ZalUFB
+        b0BDb0lJeVFOey0tUTEsWTswYjcuSSMiMhoaLBYWJhsaKhcXJxgYKDMuLE9PTwAAAHZ2dT8zMT40ND83
+        ODU5Pj84PT42Nj8zMT8zMUM0Msm7vd/NzpiSx56Y0Xx7uWFgjFVWcP///////3qDvJWU2G91vnJyvnt+
+        wldtkP///////v///4WIv11jjlNajFBSiDM7ai4xXjQzWzEuVTQuVzsxWzwwThkYLBYYKhcXJxsaKhcX
+        JxgYJjMuLE9PTwAAAHZ1dT8zMT41Mjw2NzU4QD44PTs1Nj8zMT4zLz8zMUA0Msm7vY+KwZSQ0WVhklNV
+        hWJmm3N3uIyOzoWBwnh1vXZ1vW1usoiHx3mEn/////////////////3+/2Nvn0FJbjM0ViYnSSooTCwr
+        VSssWDAqUzUqRBcXKRYWKBcXJxwZKBoaKBgaJTMuLU9PTwAAAHZ1dT00MT0zMz03ODU4QD03PDs1Nj00
+        MT4yMD4yMD0zMz01NpGOxXBvuUJGdk9VfmtsnoB9r29spHl0sYB/w3h3u2Zlo318vmVqkf//////////
+        /v///////+j//42r2jg6XSAiQSAgPicmRignUysnUCwnRBgYKhgYKBgYKBcXJxQUIhkYITMuLU9PTwAA
+        AHZ1dT4yMD00MTw1ODQ3Pz43PD01Nj0zMz4zLz4zLz0zMz0zObiz+Kqm+Kym/ci+/8a7+Y2JymhprV5d
+        nXl6xG9vq2tnok9OgFlZd29zpP/+/////////////+j//42x4X6fzJi14R0eOh0fPh0fTx8eRh8gOhcX
+        KRkZKRsbLRsWJSIaKyYlNTMuLU9PTwAAAHZ1dT4yMD00MTw1ODQ3Pz02Oz01Nj8zMT4zLz4zLz0zMz00
+        N3l2rqaf9LKs/p6d/aah/H9+zkpUoXFwwGNntqSc4oiBumZjlEhIbFZbfFJSZGdtgPr+/+n+/7Lt/GOD
+        riEqSw4YNhsdOyIdPSoqWiMhRSIfOBkZKRYaLBsbLRoUJR4eLCAgMDQuLU9PTwAAAHZ1dT4yMD00MTw1
+        ODQ3Pz02Oz01Nj00MT4zLz4zLzwzMD0yND0yQpSP3qul/qWh/6qm/4OC2GFls4uK4KOg9sO796Sb3m1p
+        nVRSfEREaEVJbEhNYkRRZ0JQbEFPczY/YCUmQh8dOx0bOTErTkNJdjUyS1ZUcUY/WjgyQzkxPCUhLSAa
+        KyIeMTMuLE9PTwAAAHZ1dTkyLzwzMD41ODQ3Pz02Ozw0NT4yMD4zLz4zLz4zLz4yMD4zNlJJXpyV2Lqy
+        /7ex/omK4lthtICAzKSf9JSV8Kmj8JePznVvpG1pnUVEbjQ2VDM6Wy83VS8yUSgoUC8uVTQzWjAsTzIx
+        WXaVyoF9rkxHZzs1Tk1HYG1oal9ZXiwjLSIeMTQuLE9PTwAAAHd2djwzMD0zMzw1ODU2QD02Ozw0NT4y
+        MD4zLz4zLz4zLz4zLz8zMT8yOl1Zdqae37Ss8nx7w2dqtYmGzrGr+pyZ7o6L042LzYWDxXt5u3BmkEtG
+        ZjQvSjEyTjAuTB8ePjk3W0Q/ZkM/aUhFc5S97nl2pEtGZkI8W52SlKeipJWRl4aFh0dCRDQtLE9PTwAA
+        AHd2dj4yMD0zMz00NzY1Pj01PDw0NT00MT4zLz4zLz4zLz4zLz4yMD8zMT0zOT0yQpWMt25ro2trp2dp
+        qqul9KWg742J0YuHyIiGwoOAvn17t3lxmlJNbTMsTSsnRCQhQTQvTkdCb0tIeVtZjaDQ+nd0ojw3V4F7
+        jrSrrq6nqqqiqaWhppiZnTQtLFFRUQAAAHd2djwzMDwyMjwyODU0Pjw0Ozw0NT4yMD0xLz0yLj0yLj0y
+        Lj0yLj0xLz4yMD00MT8zM2VmjGZkkmRhmF9fjZ2a0oyHxZWNwoB8t3l3s357sntxn29mjkxFaDgxVCYl
+        Rzs6YktIeUpIfGFhoYjK82Jdij84WZuPla+jqbGnra6gpKGWmWpfYTUuLVZWVgAAAHt6ejo0LzwzMDwy
+        ODUzPz0yOjw0NT4yMD0xLz0xLz0xLz0xLz0yLj4yMD4yMD8zMT0zMz0zM2FhkV9clE1OiFZYgZePuIyD
+        q3t3qHFtqH97toB6r3hunGdfhEQ9YC0rTz44YUE6ZTk6bFRWlnu5719bhUE7WoJ2fJqPkpuQmJmOlm5g
+        ZHddVjw2NWNjYwAAAAAAAD0yMD0zMzwyODUzPz4zOzw0NT4yMD40LT40LT4yMD8zMT00MT0zMz4zNT4z
+        NT4zNj4zNjsyRn54qW1pnV5ckFRXhGhmil1chGNfkGtomoiBrmZeh1hQdU5EaDYxWDk0Wzg0WDE1ZktO
+        knCk515XgktDYoZ5e4h8fGlaXmdTWFxLTiclO09KSXZ2dgAAAAAAAEA3NT0zMzwyODcyQT4zPTwzNj0y
+        ND0zMz0zMz0yNDwzNjwzNj8zOTowQF9txYiKykI0Pz8yNH96mXRwoV5bjVZXinJwmlxbjVlXi1ZUglpZ
+        eVpYdUhJZTo3V0hAaVJFZTAsUCwqVDo4YnWV6FRNck1AWk8/V1hFVlhFVFBEViYlPyUkPmtpaH9/fwAA
+        AAAAAAAAAEU+PjwzNjMzQTwyPj0zOTwzNjwzNjwzNj0zOTYvRHeN5Xt2qT81Oz4zNj80N0AzNT8zMz8y
+        MIV+qYF7pG5pnGpnmHl2pGFdjmNei2JbgEQ/Xzk0Uzw1Vj1BWU9JXEk9WUxBW0ZCW3N/3zw4VURBV0VC
+        WEA9UyAiQCQjQyknRWdlaX9/fwAAAAAAAAAAAAAAAAAAAD0zOTYzQj00QT0zPzwzPXyEqXWX4zItSDwy
+        OD4yOD4zNj4zNT0zMz8zMz8zMT8yMD8zLz0zM1tahmJdkFtZh3RvlnRvomNekVZTgUlBaUE6Wzw1Vjk0
+        VDs2UTw2T0JAXkg9XV5cvCQlSyQnTSYtVCgqTCosSzIwTWppbgAAAAAAAAAAAAAAAAAAAAAAAAAAAHNx
+        ckxLUnqHnWJ4okVBTUtCR0lBRUlCQ0lCQklCQkxCQktDQUtCQEtCQEtCP0tCP0pCP0tDP0pDP1xZalpY
+        cFRSamtkfHVvg2pkeGJYck5HXUdBVUVAU0Q/UElDVExEWExFWkVBdTo6UUdJaElJZklJZk5LZwAAAAAA
         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAtbCyAAAAAAAAAAAAAAAA/////8AAAAGAAAABgAAAAYAAAAGAAAAfgAAAD4AAAAGAAAABgAAAAcAA
-        AAHgAAAB4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH8AAAD/AAAA/gAAAPwAAAB4QAAAOeAABxvAAAPfgA
-        AD/4wAIf8YfjH/OP8Z/zn/nP97/9z////+8oAAAAMAAAAGAAAAABABgAAAAAAAAAAABIAAAASAAAAAAA
         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAA
+        AAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAA
+        AACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAA
+        AAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAA
+        AACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAA
+        AAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAA
+        AACAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADgAAAAAAEAAPAAAAAABwAA8AAAAAAfAAD///////8AACgA
+        AABAAAAAgAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+fn53d3dr
+        a2teXl5UVFRNTU1LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
+        S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
+        S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tMTExRUVFZWVlkZGRxcXF8fHx/f38AAAAAAAAAAAAAAAAAAAAA
+        AAB9fX1xcXFaWlpCQkI0NDQuLi4rKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
+        KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
+        KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotLS0xMTE6OjpOTk5nZ2d5eXl/f38A
+        AAAAAAAAAAAAAAB/f39ycnJUVFQ1NTUjIiIeHBwcGhocGhkcGhkcGhkcGhkcGhkcGhkcGRkcGhkcGhkc
+        GhkcGRkcGRkcGRkcGhkdGhkdGhkdGhodGhodGhoeGxoeGxoeGxoeHBsfHBsfHBsfHBwfHRwfHR0fHh0f
+        Hh0fHR0fHRwfHRsfHBsfHBseGxoeGxofGxofGxofGxofGxofGxofGxofGxofGxogHBshHx4hICAjIyMt
+        LS1FRUVmZmZ7e3sAAAAAAAAAAAAAAAB6enpfX18uLCwWFBQUEhEUEhEUEhEUEhEUEhEUEhEUEhEUEhET
+        EhEUEhEUEhEUEhEUEhIUEhIUEhIUEhIUEhIVExIVExMVExMVExMWExMWFBMWFBQWFBQWFBQWFBMVExMV
+        ExIVExIVExMWFBQXFRUWFBQXFRQYFhUYFRQXFRMXFBMWFBMWExIWExIWExIWExIWExIWExIWExIWExIW
+        ExIWExIWExIfHBoiISEsLCxLS0twcHB/f38AAAAAAAAAAABxcXEvLS0UEhIUEhIUEhIUEhIUEhIUEhIU
+        EhIUExIVExIVExIVExMVExMVExMVExMVFBMVFBMWFBMWFBMWFBMWFBMVExMVExMVExIVExIVExIWFBMX
+        FRUcGhohIB8mJSQtLCw1NDQ9PTxCQUFJSEhAPz8nJSUXFhUWFBQYFRUYFhUYFRQXFRQXFBMWFBMWFBIX
+        FBIXExIXExIXExIXExIXExIXExIWExIaFxYiISE4ODhiYmJ8fHwAAAAAAAAAAABUVFMVExIVExMVExMV
+        ExMVExMVFBMWFBMWFBQWFBRFQ0NUU1JUUlJTUlIkIiIUEhEUEhEVExM2NDRXVVVYV1dbWlpdXFxhYF9k
+        Y2NqaWlvbm5zcnJRUFBIR0dgYGB2dnZzcnJvbm5paGhjYmFJSEhEQ0NHRkZEREMvLS0fHR02NTRUU1JW
+        VFNWVFNWVFNVU1JGQ0IXFBMXFBMXFBMXFBMXFBIXExIXExIXExIeGhowMDBXV1d3d3cAAAAAAAB/f38s
+        KioWFRQXFRUXFRUXFRQWFBQVExMUExJEQkLg4OD////R0dHEw8P///////+hoaFJSUhDQ0KdnJz/////
+        //////////////////////////////9dXFwfHR2FhIT///////////////////////+dnZ0pJyYnJSU1
+        NDRFREScm5v////////////////////////g4OBlY2IYFRMYFBMXFBMXFBMXFBIXExIXExIrKilRUVF0
+        dHQAAAAAAAB+fn4bGhkYFxYdGxsgHx8jIiIpKCcvLi5OTk7y8vLZ2dlra2tJSUhJSEhHRkaampn///+t
+        ra0sKyo0MjLh4eHh4OAoJiUWFhYRFBYRFRcSFhgTFhkTFhkUFhkZGBiEgoL///8YFhUYFhYZFxcmJSSY
+        l5f////R0NAZFxYXFRUbGRiPjo7///9JSUk3NjUlIyIaFxc2MzPR0ND///83NTQYFRQYFRQXFBMXFBMX
+        ExIWExImIyJPT09zc3MAAAAAAAB3d3cZFRQcGRgcGRkaFhYgKC0dICUZFhWysbH///9HREMZFRQZFRQZ
+        FRQZFRQYFRPBwMDBwMAYFBMYFBNVUlH///+Xl54iIjQoJzckIzQfHi8bGigYFiAYFBUYFBKEgoH///8Z
+        FBIZFBIYFBIYFBIbFxV2c3L///+EgoEZFRMYFBKHhIv///8ZFBIbFhUcFxYcGBgaFRVAQ0////+EgYEa
+        FRQaFRMaFRIaFRIZFRMRERUeHCBPT09zc3MAAAAAAABzcnIYFBQYFRQYFRUXExQeJywcHiQXFBT///+j
+        oaEYFBMZFRMZFRMZFRMZFRMZFRPCwMDBwMAYFBMYFBIYFBKTkpL///9jYnAqKT4eHjIWFSAXExQYFBIY
+        FBIYFBKEgoH///8YFBEYFBEYFBEZFBIZFBIZFBLCwMDw7+8ZFBMYFBGHhY3///8YExEZFBMZFBMZFBQX
+        EhMkKTj///+EgYEZFBQaFBIaFRIaFRIaFRIWFBQeHCFPT09zc3MAAAAAAABzcnIYFRQYFRQYFRUXExQe
+        Jy0cHyVVU1P///+EgoEYFBMZFBMZFRMZFRMZFRMZFRPCwMDBwMAYFBMYFBIYExEnJCXi4uTj4+UzM0cW
+        FykVEhQZFBEYFBIYFBIYFBKEgYD///8XExIXExIXExIXExEYFBEYFBGEgoD///9HQ0IYExGIhY////8Y
+        ExEZFBMZFBMZFBQXExRfY3D///+EgYEaFBQaFBIZFBIZFRIaFRIaFRIkISFPT09zc3MAAAAAAABzcnIY
+        FBMYFBMYFRUXExQeKC0bHyVVUlP///9WU1IYFBMYFBNGQ0LBwMDBwMDBwMDw7+/BwMAYFBIYFBIXExEi
+        ICliYnH///+VlZ4RER0WEhIYFBIYFBIYFBIYExGFg4P///8nJCsmJCokIikeGyEXFBcZFhdYVVb///9W
+        U1MXExGIhY7///8YFBAZFBMZFBMoJCR0cnPx8fLw8PAoIyMZFBMZFBIZFRIZFRIZFRIZFBEpIx9PT09z
+        c3MAAAAAAABzcnIYFBMYFBMYFRUXExQeKC0cHyVVUlP///9WU1IYFBMYFBMoJCJWU1JWU1JWU1JWU1JG
+        Q0IYFBIXExEdGRwvLUEoJz6WlqD///9OTVITEBIYFBIYExIXExEaFhWQj5T///82Mz82Mz80MT0yLzon
+        JC8rKDFiYGf///9cWl8cGR+Fg4j////////////////////////U1dpKR04ZFBQZFBMZFBIZFRIZFRIZ
+        FRIZFBIpIh5PT09zc3MAAAAAAABzcnIYFBMYFRQYFRUXExQeKC0cHyVVU1P///9WU1IYFBMYFBMYFBMY
+        FBMYFBIYFBIYFBIYFBIYFBIWEg8hHicvLkQkJTokJDPf39/f3t8eHCIVEhMYExIWEg8mIyqVlJv///87
+        OEQ7OEM6N0I6N0I2Mz00MDl4dnv///9iYGYmJCyJh4z///9UUlhRUFRVUlJ1cnLR0NHx8fNJRk0ZFBQZ
+        FBMZFBIZFREZFBEaFBEaFBEpIR5PT09zc3MAAAAAAABzcnIYFBMYFRQYFRUXExQeKC0cHyVVU1P///+E
+        goEYFBMYFBMYFBMYFBIYFBIYFBIYFBIYFBIYFBIXEhAfHSQqKT8eHzMTEyFNTVH///+SkZcXFyYSDxMc
+        GBcsKjuOjZj///8/O0c/O0Y+O0U+O0U6N0I5NkGYlpv///9LSFIsKTSMio////8cGSEVEx0SEBgVEhYo
+        JSnx8fOzsbQZFBQZFBMaFBIaFBEaFBEZFBEZFBEpIR5PT09zc3MAAAAAAABzcnIYFBMYFRQYFRUXFBQe
+        KC0cHyUXFBX///+ysbAYFBMYFBMYFBMYFBMYFBMYFBLg4N/BwMAYFBIXExAdGx8nJzwdHjIUFCMODRWO
+        jZH///9ZWWgQEB4eHCI4NkiJiZb///87OEY+O0c+O0c+Okc6N0U2M0Tk5Obj4+YqKTsrKTmNjJX///8e
+        GyMZFyMXFSERDxkSEh3Fx87CwMIaFBQaFBMaFBEZFBEZFBEZFBEZFBEpIR5PT09zc3MAAAAAAABzcnIY
+        FBMYFRQYFRUXFBQeKCwcHyUXFBSjoaH///9WUlIYFBMYFBIYFBIYFBJVUlH///+EgYEYFBIXExAcGR4p
+        KT4gITYWFygPDxohICrg4OLh4eMnKDkiIjA1M0aHh5T///8iITIyMUQ1M0YyMEQtLECpqbH///9ra3kc
+        HDEaGiuFhY////8eGyYdGiQaGCQSEBshIi3i4+a/v8MTERYZFBMaFBEaFBEZFBEZFBEZExEpIR5PT09z
+        c3MAAAAAAABzcnIYFBMYFBMYFRUXExQeKCwcHyUXFBQnJCTR0NDw7+90cnEnIyInIyJ0cnHw7+/g4N8n
+        IyIXExImIiBXVVdjYnBdXW1WVmRSUltVVWCEg4v///+UlZ0nJjkqKj+Hh5L///9XV2JXWGVgYHFxcYDF
+        xcv///+lpq4aGi0WFykZGiqGhY3///9hX2hcWmFYV19hYGfAwMT///9fXmcPDRgRDxUUEhQXExIaFBEZ
+        ExEZExEpIR5PT09zc3MAAAAAAABzcnIYFBMYFBMXFRUXExQeKCwcHyUXFBQYFRQnJCOjoaD/////////
+        //////+ioaAnIyIYFBIXExJVUlH///////////////////////////////////8wLkAtLEGIiJP/////
+        //////////////+2tr5tbXsiIjYXGS0KECQXGCmFhYz////////////////////BwcRrb4EPDRoQDhkP
+        DhcPDhQSDxQWEhMZExAZExEoIR5PT09zc3MAAAAAAABzcnIYFBMYFBMXFRUXExQeKCwcHyUXFBQYFRQY
+        FBMYFBMYFBIYFBIYFBIYFBIYFBIYFBIYFBIYFBIXExIXExInJTQkJDoaGy8aGiwaGisYGSwaGy8gIDM1
+        M0QwLkEhITQdHSwODxwJDRsPGjQQGjURGjMUHDQUGjIMFSsIECUNECEPEB4LDhshITEmIy4ZFiATDxoW
+        FyUgJEAODBkQDhkPDRgPDRURDhQREBQZExEZExAoIR5PT09zc3MAAAAAAABzcnIYFBMYFRMYFRUXExQe
+        KCwcHyUXFBQYFRQYFBMYFBMYFBMYFBMYFBIYFBIYFBIYFBIYFBIYFBIYFBIXEhAiICooKD4cHTEdHTEd
+        HjIeHjMgIDUkIzc6N0gvLUAiITUXGCYIChYJCxcRGzcQHDoOGTUMFi8OGDINFy8KEycIDh4ICxgGCRQf
+        Hy0lIi4XFBwTDxoWGCceIj0OCxkPDhkPDRcPDRUQDhQREBUYExIZExApIR5PT09zc3MAAAAAAABzcnIY
+        FBMYFRQYFRUXFBQeKCwcICUXFBQYFRQYFBMYFBMYFBMYFBMYFBIYFBIYFBIYFBIYFBIYFBIYFBIXExEa
+        FhckIzQiIjkfHzQeHzMgIDQeHjIoJzk6N0kqKT4gIDMUFSQFBxIMDhUWHTEUHDMSGzUPGTQSHDYPGDEK
+        EicIDRwHChYFBxAfHyoqJzMZFB0UEBoXGikdIDkNCxgQDhkPDRgPDRYODhQREBUYFBIZExAoIR5PT09z
+        c3MAAAAAAAB3dnZBNzRBODVAOTg+NTZRbXhLVmQ+NjdAODZBNjNBNjJBNjJBNjJBNjJBNjJBNjJBNjJB
+        NjJANTFANTFANTE/NC5DOj1LSGZQUYRVV41RU4pISn58d6eVjsVjYp9aWYguMVYbIDhkb4Rxfplve5FG
+        U3dDU4FFTmwpOm03R3EwNVAdITkNECJTUWx9dJVBNlE2KURDT3dLU5AjHD4rJkQrJkEqJDsmJTUvLDdE
+        NTBENCw9MS1PT09zc3MAAAAAAAB3dnZANzRANzRAODg9NDZQbXhLVmQ+Njc/ODY/NjNBNjJBNjJBNjJB
+        NjJBNjJBNjJBNjJBNjJANTJANTFANTFANTE/NC4+My1BODxFQFBHSGxOT4CQiryEf7thYJpbWYQhJEZT
+        XXSKmrh/japXYIEoNGhhb5ZRWGs/Rl52gZNFSWEoK0ESEyBMS2eEfKA+NVEzJkJKVoBIT4gnIEAuKEUu
+        J0ArJTopJzczLTNGNSxFNS03MC9PT09zc3MAAAAAAAB3dnZANzRANzRAODg+NDZRbXhLVmQ+NjdAODZB
+        NjNBNjJBNjJBNjJBNjJBNjJBNjJCNjNBNTRBNTRBNTRBNTNBNTNBNTJBNTJANS9ANC06LytpYn2ak8lv
+        baxfX5ROTHYiJkiDkq59i7hpc50nNGofOIxca5ZIVHMwQG+Cj6RJT2oiJj8NESVCRGaHgKk+NlIvJD9M
+        XotIS4IsJEMwKUYyKUEuJzsqJzY3MDBDNzE0MDQvLC9PT09zc3MAAAAAAAB3dnZBNjRBODVBOTg+NTdR
+        bnhLVmQ/NzdBOTdCNjRCNzNCNzNCNzNCNzNCNzNBNjRBNzZANjU/NTRBNzhBNjdBNjZCNjZCNjVCNjVB
+        NTRBNTaNg6WPicJfYKBgXo84OGAnMFJ5ia01PG4lK1MbJFkvRK0+T444T5AqRIp0gZpGTWUXGjIMEio5
+        PmGIga1COlYtIj5RaJdER3otJEMvKEQyKUAtJjknJTIzMDM1NDoxMTgxLjBPT09zc3MAAAAAAAB3dnZC
+        NzRBODVBOTk+NTdSbnhMV2Q/NzdCOTdCNzRCNzNCNzNCNzNCNzNCNzRCNzdANThFP05OSGVANTtBNDo+
+        MDVBNjpCNzpCNzo8MTFhWG6Nib5qaKVbWpFNSnonKV09Q4JgZK45Noc9OIRIQZRGSKUgMoIfMnMhNG1j
+        b4s4PE8OESYPEyoyNVGJg7JLQl8xJD9WcKFBQ3UvJkMyKkUwJz8qJDcoJzEuLTYtLTcsKTQsJS5PT09z
+        c3MAAAAAAAB3dnZCNzVBODVBOjk+NTdSbnhMV2NANzdCOThDNzRCNzNCNzNCNzNCNjRCNzZCNzs9MjlZ
+        X5FRSXs7LTpJSV5aaoxEPk8+MTU8MDhLQlh+d7Z0csdkY7pkYbRcW65UVKlLTKE6PI0wL3MdHUsSEzQZ
+        HjQnLlIZHDwVGTU3PlIdHzEQEiUOESMtLkaRibVVTGkyJUBbdqg+P28vJkIyKEMvJjwqJjgrKjMsKTMo
+        JzQnJTMsJS5PT09zc3MAAAAAAAB3dnZBODRBODVAOTg+NTZRbXdLVmQ/NzdBOTdCNzRCNzNCNzNCNzNC
+        NzRBNzhANTxHQ1tmbLZKTnJdcqBphsNjbrJZUItYT4thWZh9d8t4ddZiX7VJSpJRWIuBjbFjbJUUG0Y6
+        RnVlb5pJUGsmKUIWFSgjJDMiJDQZGScREyEQEiITFCMQEh4oKT6Nh7JcUnIvJkJffa87PGYuJkEyKUEu
+        JzstKjcoJDAnIi8qKDMoKDMtKS9PT09zc3MAAAAAAAB3dnZCNjRBODVBOTg+NTZRbXZLVmM/NzdBOTdC
+        NzRCNzNCNzNCNzNBNzVBNzk9MDldcZh4neh1kd9mcMheVqRhV55ZUotZUoGDfbh6d7ZNTYEtL1YfKlF+
+        jaKSo8NcZY4sMVaNnMWMmLp+i6VSWW4bGS8PCx0gIC0iIy4ZGyYWGCIaHCUbHSQoKzqAe6hYT3AsJ0Rk
+        g7Y3OGAtJUAvJz4qJTctKjYkHy0gFyklHy8oJjMuKi9PT09zc3MAAAAAAAB3dnZCNzRBODVBOTg+NTdR
+        bXdLV2M/NzdAOTdBNzRCNjRCNzRCNjNCNzVCNzk+MTpWcISBtvZmdsVNSn1BNFE6LTk+ND1pYYZnY5NF
+        RXUuLVEaHD01PVx/j65vfKU0OV5rdpOfsdOMmbZ+i6FKUmUUESkyNElsdIdgaHlDR1gmJzEcGR8aGB8k
+        JDNsaZdUSWctK0hlhLs2NFsrJD4sJTsnIjQsKzUgHCkdFicfGCojHS4tKC9PT09zc3MAAAAAAAB3dnZC
+        NjRBODVAOTg+NTZRbXZLV2M/NzdBOTdBNzRCNjRCNzNCNjNBNzRBNzdBOD0/Mj9JTWpUYYdgfKFnfLNY
+        XIVIRGQ6OFouLE0qKEolJDsuOV8/Upk2TJoiM3kxP3ugsNKrvNmXpr5we44wM0QdGzJ/jKOJl6p6hpZg
+        Z3o9QFkcGSwRCRchHTBhX4lHOlcxMlBohsM3M1YrJT0sJTonIjEpKDEbFSUdFicdFykgGSwqIy1PT09z
+        c3MAAAAAAAB3dnZBNjNANzRAODg9NDZQbXZJVmM+NjdAODZCNjRCNjNCNjNCNjNCNjNCNzVBNzhBNz0/
+        NDw9MTs9MjxEQEtUY3peYZIyMlMuLkwlJEIlKkQrRIU0U6Y1UqgyTaIwS5tEV5hjc6BzgqQ+SW4gKE0t
+        NVV5hp2JlaZ/iJhiaXs6PlgbFi4VEiMyNUpZUnc+L0k7PFtpiMg8NFQuKD4pJDYjIS0jHyocFCYbFScb
+        FSgfGCwpIyxPT09zc3MAAAAAAAB3dnVANjNANzRBODc9NDVQbXZJVmM+Njc/ODZANjRBNjJBNjJBNjJB
+        NjJCNjNCNjVBNzZBNzhBNjpBNjpANDY+MTR0caZiXo0yMVMkKEcbIUUhNGokQIIqSZgvT6M1WLIxUKgm
+        QIooQIYtRo8tR44tRowmN247RGZlboJZX3IvNEseHzEcHytDQltORF5FMklCRGNphsg3LU8sKTwjITEk
+        IywgGiYcFicaFCcaFSgeGCsoIyxPT09zc3MAAAAAAAB3dnU/NTI/NjNAODc9MzVQbHZKVmM+NjZAODZB
+        NTNBNjJBNjJBNjJBNjJBNjJBNTJBNTNBNjRBNjRBNjVBNjU+My9bWYOgmt99d7JAPmYiI0gZH0YeMGUh
+        OnskPoQvS5k2WK8tTp4rS5gtTJkvSpQ0UJwyTZUkN3IcKFQeIkAaGjQeITQwMkVUUHVDNU1INUxCR2ln
+        gMM0JkkvLj0jIS8lJS8cGCcbFCcaFSgaFSgeGCsnIitPT09zc3MAAAAAAAB3dnVANDI/NjM+NzY8MzVP
+        bHZKVWM+NTZANzZBNTNBNjJBNjJBNjJBNjJBNjJBNjJBNjJBNjJBNjJBNTNBNTNANC9MSmh6fMOwqO2g
+        l9VgW5I8OmMmJ1AcI1AVIk4TJFUZL2keOXggPH4hOnkiOHMkO3UhOXAaLlwXHkUSFTMVFS8sK0tXU3tN
+        Rmk9MEhAL0pBSW5jergxJEYxLj4gIC0bHSoZFiYaEycZFCcaFikbFiklISpPT09zc3MAAAAAAAB3dnVA
+        NTI/NjM/Nzc8MzVPbHZJVmM9NTZAODZANjNBNjNANTE+Mi8+Mi8+Mi9ANDFBNjJBNjJBNjJBNTJBNTNA
+        NC9MR1xkaKmHhtGknemdl+GIgsV0b6tcV4lPTHRJR2lCQmI4OmA2PmswOmcqM1wnLlEoLU0oKkYnJ0Et
+        K0ZAPVxXUXhEPV49M00+MUwxJkZASnFecbAuIkQuKj4eHSwYGCcYGSgbGCoaFScaFSkYFCckIClPT09z
+        c3MAAAAAAAB2dnU/NTI/NjM+Nzc7MzRQa3VJVWI9NDU/NzU/NTI/MzFEODZMQkJNRENLQUE+NDI8MS48
+        MC0+Mi0+My9BNTFCNzBQS1xpbrRmbLF1ecCLi9aUkt6ZleGVkNiZkteclNOVjsiDfbh7dq6AeatzbZ9V
+        VIRdWoZgW4ZZVIFPSW5GQWNBO147M088MUs4LkosI0NFT3hdaqkvJEQuKD8cHCwXGSgbHCwdHS8cGCsb
+        FioZFSglIytPT09zc3MAAAAAAAB2dnU9NDE+NTI+NjU7MTRPanVJVGE8MzU+NjQ+NDE4LCpvYmTJwMjB
+        u8K3sbeZkpd7c3RaU1hOSVpQTGNDPk9DPT5XU2FxeMNvecJqd7xncbhla69zdrl9fsh7fMd9fcZ1dr5u
+        cLVmaaxmaKlYXJxHTYtVV5FTVIpRUIROSnhHQ2s7Nlo3ME4yK0guKEcuJkhNV4RZYaIzJkQxKkEdHC4Y
+        GSscGywaGiwbGSwZFCgbGSsmJCxPT09zc3MAAAAAAAB2dnU9NDE+NDE+NjU7MTRPanVJVGE8MzQ9NjQ+
+        NDE9MS5IOzrJu8Ln3uTZz9TUycvAtrl/e5d6d6Nyb5pdWoJGRV5bW27N0Ovs7vnn6fXQ2uuAkMdYX6lT
+        W6FRWZpWX5xgaalia7FjbKxeZqNYX5xUW5VVWZBOUYdMToJKSnxCQW03Nlw0MVU5NVs7OF43LVFOWYxX
+        Wpw3KUY0K0McHC0ZGSoYGSkZGSgaGywZGisYGSsjIitPT09zc3MAAAAAAAB2dXU+MzE+NDI9NTU7MTNP
+        aHNIU2E8MzQ+NTQ+NDE/MzE4KymTg4Xs3ePk2t/bz86qobmNiL2IhLZta5hcWodZWH66usX/////////
+        ///a6vSAi8djaLBeZbJlbLhkaKdod6+QotWDjc9pc7NXXpNZX5RcYpxXW5VLToJBQnFCQ3BJSHZJSHZI
+        RnQ1MlgtJkxNWpBSU5M2KUc3LUQcHC0YGSkWFycZGCgZGSkYGCgXGCkjIipPT09zc3MAAAAAAAB2dnU9
+        NDE9NDI+NTU7MTNPZ3NIUmA9MzM/NTQ/MzE/MzE9MC5NPz7Etbjr293LvsWclsmcl9CFg7pwbKNaWIJt
+        bYb5+vr////////CzOOMkc19fsRucrlqbbpydb5rb6awwdT////19v3h4/OprM1pb51VXJBYXpZQVIlG
+        Sn5ARXs+Qnc6PGs0MlsuK1EsJk1OXpFMToo5LEoyKz8XGCoXGCkXFycZGSgZGCgXFycZGCcjIihPT09z
+        c3MAAAAAAAB2dXU/MzE+NTI+NTU8MTJPZ3NIUmA9MzM/NTU/MzI/MzBAMzE4Kyl1Z2fbysm6rcCcmNOZ
+        lNGBfrxpZ5dNTXOAgpn+///U1uysrdiPj8yCgsh2ecF4eMBtbrd1d75ocanY4er////////////////m
+        5/WZncZVXo9LUX5RVIU3O2kmKlMqLFQyMVgvLVQnJEtNY5RIR381KkUuKDsVGCkXGSkXFycaGikZGSgZ
+        GSgXGCYjISZPT09zc3MAAAAAAAB2dXU+NDE9NDI9NTU6MTNPZ3NIUmA7MjQ8NTQ+MzE+MjA+MjA+MjA7
+        Ly+Qg4Oso8GMicSGhMhoZ55VV4RPU4Nla6F+g7Zxc6yAfbiHhMN6eL98esF1dLltbbB5ebxscqrQ1N3/
+        ///////////////////////F0ONqfadDSXExMVInJ0cnJkYoKEkrK1EnJ1FPapw/P3IxJ0MpJDcVFigY
+        GCkXFycaGSkYGCcXGCUXFyMjISRPT09zc3MAAAAAAAB2dXU9NDE9NDI9NTU7MTNPZ3NIUmA8MjQ9NTQ+
+        NDE+MjA+MjA/MzE7Ly9FOz6TjbmOjM9mZqdbW5JVV45nZ6Fycax1c6hyb6Rua6F4dLB8eb1/fMN5d7px
+        b6x6eLhwcq2PkrD////////////////////////////C6f92lcRQYYcrMFIfHj0jIT4mJUYkJEpQbp43
+        N2gsJUIhIDMWFygXGSgYGSgaGSkYGSkXFyUWFSApJitPT09zc3MAAAAAAAB2dXU+MzA9NDI9NTU7MDNO
+        ZnNIUmA8MjM9NDQ9MzE+MjA+MjA+MzA9MjI8MjmVkMino+mQjNmbluq3rfLCt/i+s+2eltBzcbFkYpxh
+        X5tzcrlxb7Nwb61ua6RbWIxcXIljZZWgosb4+P3////////////////////J8/+LteWBpNKEos4zOVsb
+        GzceHj0YGkBOcaMtLl4kIDweHjAWFygYGSkbHCwaGiodGSkgHSwkJS8sKS9PT09zc3MAAAAAAAB2dXU+
+        MjA9NDE9NDU6MDJOZnNHUWA7MjM9NDQ9MjE+Mi8+Mi89MjA9MjI6MTaDf6+loeykoPuvqv/Buf+9tf+5
+        sPaSjdNmZ7BUVppiY6tvcLxnaK17d7Z4c6pdW4xJSXBPUnNSVXqAgZvR0tz////////////0//+47P+F
+        q9x5mceTs94/SmkVFjMdHDsaG0FTeKwmJ1QcHTceHTAVFiYZGikbGywaGCkfFygiHSwkJDIqKC9PT09z
+        c3MAAAAAAAB2dXU+MjA9NDE9NDU6MDJOZXNHUWA7MjM9NDQ9MzA+Mi8+My8+MjA+MzE7MTNFPk55dKqk
+        oPStqf+sqP+jof+infmBgNVXXKxTWKN4ecdtb8CemeK2rOaUjcVvap5SUHtISGtMTm5KTWdUV26Hi5um
+        sbq0z9SbxtZqirJNX4Y6RGUvNFMcHjwZGDccGDknJktZfbMnI0wfGzUlIjUgHy8gIC8gHi0bFiYaFCYf
+        GioiHi8tKTJPT09zc3MAAAAAAAB2dXU+MjA9NDI9NDU6MDJOZXNHUWA7MTM9NDQ9MzE+Mi8+My8+Mi8+
+        MzA9MzM1Ky1hWHqfnO2nofiqpv+opP6opP+OjOVnartjZ7Z1d8Z9ftbEu//DuvmjnNx1calcWYdRTnhF
+        RWpESGpESmdBSGE/S2NAUGs/TnE6Q2gvNVYjJUEfHTsdGjkgHT0qJkg3Nl1ihbxAPGRGQmBHQl1AO043
+        MEE0LTwuJzMdFyYeGCkjHjAuKzVPT09zc3MAAAAAAAB2dXU9Mi88MzE8NDU6LzFOZXNIUWA8MTM9NDQ+
+        MjA+Mi89Mi89Mi8+Mi8+MzE7MTFGO0qDfrebluWuqP67tP+0rv+Wle1vcsVrb8F0d8iRj+ioo/ygnfSs
+        pe2UjcZybaBpZJVaWIZGRW04O102Pl46Q2M6Q2E4PlwvNFMpLU8nKEsqKU4sKUwuKUwzLlVGSXV1ltJ8
+        eKxnYYdGQV07Nk1CO09NR1VJREw7NTwiGyogGy8vKzdPT09zc3MAAAAAAAB2dXU8MzA9MzE9NDU6LzJO
+        ZXNHUWA8MTM9NDQ+MjE+My8+My8+My8+My8+Mi8/MzI6LzFHPU50cKOinOO8s/+wqvyKi99pbsBna7p4
+        esqhnfGin/iSkeqYleKXktaIhMJ8eLN1capgXItEQGE2NFExNFE0OVc0NVMuLk4oKUw0Mlo9OmI9Ol46
+        Nls+OGNcYpWCn96Beq9bVXs9OFRBO1N+dn2TjY6Df4JybnJVUFYzLTgtKTNPT09zc3MAAAAAAAB2dXU8
+        MzA9MzI9NDU6LzJOZHJHUGA7MTI9NDM+MzA+My8+My8+My8+My8+My8+MjA+MzM7MDM9NUVeWoCim9ap
+        oud+fMJub7Ztb7Z0dL2inu60rf6ZleWLiNGMic2LiMmFg8V7ebt9d6l0bJFUTW84M08uK0gyMEwtKUci
+        IEAyL1FAPGJFQGhDQGpPSntveLSEmt52cKBTT3M7N1ZpY3almpuupqioo6iinqOdm59/fH5BPD5PT09z
+        c3MAAAAAAAB3dnY+MjA9MzI9NDU6LzJNYnFHT187MTI9MzQ9MzE+My8+My8+My8+My8+My8+My8+MjA+
+        MzI9MjU5LjZQSF2FgKh5dqxtaqRzca9xca6PjNK3r/+aluOKh86NicqJhsSHg8CAfbt/e7aAeaxwaJJO
+        R2o3ME8vKUgqJkQkIUAuKUk/O2JJRXNIRXZXU4l/isiEltxybJtIRGhGQmGfl5+3rrGwqKytpaquqK+s
+        qK6np6xjXVxPT09zc3MAAAAAAAB3dnY9MjA9MzI9MzQ6LjJNYHFHTl87MDI9MzM9MzA+Mi8+My8+My8+
+        Mi8+My8+My8+My8+MjA+MzI+MzQ6Li9COkFnZYhoZphjYploZp1saqCknt+cltuJhseQiseKhcGDf7uC
+        frmCfbV+eKt1bZljWoFIQWQ4MlQqJ0gnJUQzMVNFRHBLSXlLSn1bWZSAjciBktdpY49CPGBcVnavo6e6
+        r7OwpKqsoKSupKmqo6iKh45XTEtRUVF0dHQAAAAAAAB3dnY8Mi88MzE7MzQ5LTJNX3FHTF86LzM9MjM+
+        MjA9MS89MS49Mi49Mi49Mi49Mi49MS8+MS8+MS8+MjA/NDE8MCxDPEVoZ5Jtap1WV4xSUoVubJmTjb+X
+        kMaWj8GJg7h4da91c7B8eLR8d618dKN2bJVhWH1IQWQ1MVQvLVA7OF9GQ3JHQ3RERHdYVpJ9i8Z+jdFh
+        WYVAOVtdVnGcj5OvoqauoaWsn6Sjl5yPhYp1ZmdMPT1WVlZ3d3cAAAAAAAB7eno8My88MzA7MzQ6LjJN
+        XnFHS187LzI8MzM+MjA9Mi89Mi89Mi89Mi8+Mi8+Mi8+MjA+MjA+MjE+MzE+MzM+MzM7MCxMRlpta5tj
+        YpdHSYNSU4lnZo+HgaeHf6V/eKBwbJ5saaJ9eLOIgruDfLB1bJlsY4pTS24+OFw0MVY4NFw/OWI9OGI1
+        OGxPT457icZ6h8peVoBDPF5jWm+Shomfk5ehlZuWjJR+cXduXF1lT081LTZgYGB7e3sAAAAAAAAAAAA9
+        MjA9MzE8MzQ6LTJNXXFHS187LzM9MzM+MzA+My8+My8+My8+MzA+MzE9MzE9MzI+MzM+MzM9MjI8MC88
+        LzA9MztIQ1hoZ5Z6dqdva5tgXZNXV4dcXIRuao9mYodeXIZiYI5taZuFfq2DfKlmXodbU3pUS29EPGI3
+        Mlk6NFtCOl4zMVc0NmhKS412hsZ5hcRdVX5IQGFiWG2Mf4CJe31+bnJwX2NoVVZRQkksJjs1MTttbW1/
+        f38AAAAAAAAAAABANzU9MzI9MzQ6LTNNXHJHS2A7LzM9MzQ9MzI+MzE9MzE9MzI9MzM9MzM9MjM9MTI7
+        Ly87MDRFPEtLRmZQUHxgZJtaXI5OSWB3cpx/eKhuaZhkYZFbW4loZ5NdXIxZV4ZaWIZcWoVlY4lvaotk
+        XoBaVHlRS28/O2E8OF9MQmZCOV0tK1AzMl0/PXRmebh9hsNbVHpIPlxKPlhfTFdnUVVoUVVpUlVFOkgh
+        IDkhHzlPTVJ6enoAAAAAAAAAAAAAAABcV1c9MzI9MzQ6LTNNXHJHS2A7LzQ8MzU9MzM9MzM9MzQ8MjM7
+        MDE5Li89NDtCPVFOTHFgY5xiZqFSUHpFPlZANT88Li85LChfV2eKg65zbptiYJBfXZFraZV3c6FgXY9a
+        V4hdWodeW4NYVHNJRV5CQFg9PlZCQ2RNSnJVSmhDOl40L1M4MlY7M1ZRZpRgaJ5OR2hPQVxRQlpTQlVZ
+        RVNXRVM/NUojI0AkI0EtKj93d3d/f38AAAAAAAAAAAAAAAAAAABFPj09MzQ6LTNNXHJHS2E7Lzc9Mjc8
+        MTM5LjA6MDVBOkVHRV5YXotjaqBUVYVKSGtHP1M8MTc7Li8+MTI/MjM/MzM+MjA9MS1oYX98eKh0b59r
+        Z5tmZJVyb5lzb6FgXI5gW4tgW4dTTnRBO1w5NFM7NlQ7N1Q9PFhEQFZIQ1hMQ1lLQ1pDOlNUaZhPUIE1
+        MU4uK0kyME8vLUgtK0QoKEIhI0ElJkUrKkhnZWp/f38AAAAAAAAAAAAAAAAAAAAAAAAAAABLQ0U6LTNN
+        XHNFR144KzM+NkJCQFVQVndhbqBbZJZQT3NLRl5AN0U7LzI8MC88MTE+MzQ/MzM/MzM/MzE/MjA/MjA+
+        MixCNzdaV3hjYZJjYJNeXI1eXYd8d6F1b6BjXpBcV4lQTXtGP2ZBOVs+N1k5M1Q4M1M4NFE7Nk4/PFVC
+        P1tCOFVbb6JFRnsjI0YgIkonLVkkKU8jJkolKEopKkwzMk5ram8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAABzcXFYYGpVX3RYXnVgZ4NVWXNSUWNOSVRIQERIP0BJP0BJQUFKQkJLQkJLQ0JLQ0FMQkBL
+        QkBLQj9LQj9KQj9LQj9KQT5MREFUT1hcWW5eW3dZV3FgXnVybYN0boRtZXxlXnZcVGxQSV5KRFlHQFVF
+        P1RFP1JHQVNJQ1VMRVlMQ1hbZodDQ2M4Nk1DQl5GR2VGRmJGRmFKSGJgXWoAAAAAAAAAAAAAAAAAAAAA
         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHh4ehoaG////////////////
-        ////////////////hoaGHh4eAAAAJSAlAAAAAAAA////////////////////////////////////////
-        ////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWlVYAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAHh4ehoaG////////////////////////////////////////7u7uHh4eAAAAJSAlAAAA////////
-        ////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAkYaJUk1RAAAAAAAAAAAAAAAANTA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ////////7u7uAAAAJSA7AAAA////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvba4dWlsPTg8AAAAAAAAHBkdIR0jAAAA////////////
-        AAAAMCyILCh7AAAAAAAAAAAAAAAAAAAA////////////AAAAKiNDAAAAxsbG7u7u7u7u////////////
-        ////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAraWrqqKkcmNm
-        OTE1KSMnGRUaIBsfAAAA7u7u////////AAAAKyiVLCqaAAAA////////////////////////////AAAA
-        KSJLJiBDAAAAAAAAtra2xsbG7u7u7u7u////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAqqKkyMPFo5mbZF1gOTE1OC80IR0jAAAAtra2xsbG7u7uAAAALCusLCqaAAAA
-        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
-        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
-        AAAAfwAA/gAAAAAfAAD+AAAAAAcAAP8AAAAAAwAA/wAAAAABAAD+AAAAAAEAAP4AAAAAAQAA/AAAAAAB
-        AAD8AAAAAD8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAA
-        AAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAB8AAPgAAAAAHwAA+AAAAAAf
-        AAD4AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD4AAAAAB8AAPAAAAAADwAA4AAAAAAHAADDgAAAAcMAAMfA
-        AAAD4wAAn4AAAAP5AAD/gAAAAf8AAP8GAAAB/wAA/w4AAGD/AAD+HhAIcP8AAP48H/w4fwAA/Dw//jh/
-        AAD8fH//PH8AAPz8//8+fwAA/Pz//75/AAD9/f//v38AAP///////wAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAA/AAAAAAAAAB4AAAAAAAAAHgAAAAAAAAAOAA
+        AAAAAAAA4AAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAA
+        AADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAA
+        AAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAA
+        AADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAA
+        AAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAA
+        AADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAA
+        AAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAA4AAAAAAA
+        AADgAAAAAAAAAeAAAAAAAAAB8AAAAAAAAAP4AAAAAAAAD/wAAAAAAAA//////////////////////w==
 </value>
   </data>
 </root>
\ No newline at end of file
diff --git a/Source/Plugins/GZDoomEditing/General/UndoGroup.cs b/Source/Plugins/GZDoomEditing/General/UndoGroup.cs
index 0e2a6d20019664e160e97861c6e49a12434e63e2..a805fc1ef1dcb74dcd4acaa3138e2ea7e00fba4c 100644
--- a/Source/Plugins/GZDoomEditing/General/UndoGroup.cs
+++ b/Source/Plugins/GZDoomEditing/General/UndoGroup.cs
@@ -40,5 +40,6 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 		public const int SectorHeightChange = 5;
         public const int ThingMove = 6; //mxd
         public const int ThingRotate = 7; //mxd
+		public const int SurfaceBrightnessChange = 8; //mxd
 	}
 }
diff --git a/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySector.cs b/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySector.cs
index 32a8d0cc66c577e97efa1f01e904d03105b7363f..9305f33e7c95f0bba12f1652af90e37ac4e4eb41 100644
--- a/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySector.cs
+++ b/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySector.cs
@@ -244,14 +244,18 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 					float deltaz = General.Map.VisualCamera.AngleZ - dragstartanglez;
 					if((Math.Abs(deltaxy) + Math.Abs(deltaz)) > DRAG_ANGLE_TOLERANCE)
 					{
-						mode.PreAction(UndoGroup.TextureOffsetChange);
-						mode.CreateUndo("Change texture offsets");
-
-						// Start drag now
-						uvdragging = true;
-						mode.Renderer.ShowSelection = false;
-						mode.Renderer.ShowHighlight = false;
-						UpdateDragUV();
+						if(General.Map.UDMF) { //mxd
+							mode.PreAction(UndoGroup.TextureOffsetChange);
+							mode.CreateUndo("Change texture offsets");
+
+							// Start drag now
+							uvdragging = true;
+							mode.Renderer.ShowSelection = false;
+							mode.Renderer.ShowHighlight = false;
+							UpdateDragUV();
+						} else {
+							General.ShowErrorMessage(BaseVisualMode.TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK);
+						}
 					}
 				}
 			}
diff --git a/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySidedef.cs b/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySidedef.cs
index 72cc5ea4f408ca71f0e8cca75a38a376a583d2b6..e44bfad5c38f4c1bea5bac5d2d6afaa3c1f15138 100644
--- a/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySidedef.cs
+++ b/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySidedef.cs
@@ -861,14 +861,18 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 					float deltaz = General.Map.VisualCamera.AngleZ - dragstartanglez;
 					if((Math.Abs(deltaxy) + Math.Abs(deltaz)) > DRAG_ANGLE_TOLERANCE)
 					{
-						mode.PreAction(UndoGroup.TextureOffsetChange);
-						mode.CreateUndo("Change texture offsets");
-
-						// Start drag now
-						uvdragging = true;
-						mode.Renderer.ShowSelection = false;
-						mode.Renderer.ShowHighlight = false;
-						UpdateDragUV();
+						if(General.Map.UDMF) { //mxd
+							mode.PreAction(UndoGroup.TextureOffsetChange);
+							mode.CreateUndo("Change texture offsets");
+
+							// Start drag now
+							uvdragging = true;
+							mode.Renderer.ShowSelection = false;
+							mode.Renderer.ShowHighlight = false;
+							UpdateDragUV();
+						} else {
+							General.ShowErrorMessage(BaseVisualMode.TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK);
+						}
 					}
 				}
 			}
diff --git a/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualMode.cs b/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualMode.cs
index e18f23a4e6619df3bd928d761e18d3fa5c018e99..5e1c8377e2df46699379cb616f946d79c0b2c6f1 100644
--- a/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualMode.cs
+++ b/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualMode.cs
@@ -50,7 +50,9 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 	public class BaseVisualMode : VisualMode
 	{
 		#region ================== Constants
-		
+		//mxd
+		public const string TEXTURE_OFFSET_CHANGE_ERROR = "Texture offsets cannot be changed in this mode if the map is not in UDMF format.\nPlease use Visual mode to change them.";
+
 		// Object picking
 		private const float PICK_INTERVAL = 80.0f;
 		private const float PICK_RANGE = 0.98f;
@@ -1427,73 +1429,105 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 		[BeginAction("movetextureleft", Library = "BuilderModes")]
 		public void MoveTextureLeft1()
 		{
-			PreAction(UndoGroup.TextureOffsetChange);
-			List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true);
-			foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(-1, 0);
-			PostAction();
+			if(General.Map.UDMF) {
+				PreAction(UndoGroup.TextureOffsetChange);
+				List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true);
+				foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(-1, 0);
+				PostAction();
+			} else {
+				General.ShowErrorMessage(TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK);
+			}
 		}
 
 		[BeginAction("movetextureright", Library = "BuilderModes")]
 		public void MoveTextureRight1()
 		{
-			PreAction(UndoGroup.TextureOffsetChange);
-			List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true);
-			foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(1, 0);
-			PostAction();
+			if(General.Map.UDMF) {
+				PreAction(UndoGroup.TextureOffsetChange);
+				List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true);
+				foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(1, 0);
+				PostAction();
+			} else {
+				General.ShowErrorMessage(TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK);
+			}
 		}
 
 		[BeginAction("movetextureup", Library = "BuilderModes")]
 		public void MoveTextureUp1()
 		{
-			PreAction(UndoGroup.TextureOffsetChange);
-			List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true);
-			foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(0, -1);
-			PostAction();
+			if(General.Map.UDMF) {
+				PreAction(UndoGroup.TextureOffsetChange);
+				List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true);
+				foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(0, -1);
+				PostAction();
+			} else {
+				General.ShowErrorMessage(TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK);
+			}
 		}
 
 		[BeginAction("movetexturedown", Library = "BuilderModes")]
 		public void MoveTextureDown1()
 		{
-			PreAction(UndoGroup.TextureOffsetChange);
-			List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true);
-			foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(0, 1);
-			PostAction();
+			if(General.Map.UDMF) {
+				PreAction(UndoGroup.TextureOffsetChange);
+				List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true);
+				foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(0, 1);
+				PostAction();
+			} else {
+				General.ShowErrorMessage(TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK);
+			}
 		}
 
 		[BeginAction("movetextureleft8", Library = "BuilderModes")]
 		public void MoveTextureLeft8()
 		{
-			PreAction(UndoGroup.TextureOffsetChange);
-			List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true);
-			foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(-8, 0);
-			PostAction();
+			if(General.Map.UDMF) {
+				PreAction(UndoGroup.TextureOffsetChange);
+				List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true);
+				foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(-8, 0);
+				PostAction();
+			} else {
+				General.ShowErrorMessage(TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK);
+			}
 		}
 
 		[BeginAction("movetextureright8", Library = "BuilderModes")]
 		public void MoveTextureRight8()
 		{
-			PreAction(UndoGroup.TextureOffsetChange);
-			List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true);
-			foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(8, 0);
-			PostAction();
+			if(General.Map.UDMF) {
+				PreAction(UndoGroup.TextureOffsetChange);
+				List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true);
+				foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(8, 0);
+				PostAction();
+			} else {
+				General.ShowErrorMessage(TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK);
+			}
 		}
 
 		[BeginAction("movetextureup8", Library = "BuilderModes")]
 		public void MoveTextureUp8()
 		{
-			PreAction(UndoGroup.TextureOffsetChange);
-			List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true);
-			foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(0, -8);
-			PostAction();
+			if(General.Map.UDMF) {
+				PreAction(UndoGroup.TextureOffsetChange);
+				List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true);
+				foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(0, -8);
+				PostAction();
+			} else {
+				General.ShowErrorMessage(TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK);
+			}
 		}
 
 		[BeginAction("movetexturedown8", Library = "BuilderModes")]
 		public void MoveTextureDown8()
 		{
-			PreAction(UndoGroup.TextureOffsetChange);
-			List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true);
-			foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(0, 8);
-			PostAction();
+			if(General.Map.UDMF) {
+				PreAction(UndoGroup.TextureOffsetChange);
+				List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true);
+				foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(0, 8);
+				PostAction();
+			} else {
+				General.ShowErrorMessage(TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK);
+			}
 		}
 
 		[BeginAction("textureselect", Library = "BuilderModes")]
diff --git a/Source/Plugins/GZDoomEditing/VisualModes/VisualCeiling.cs b/Source/Plugins/GZDoomEditing/VisualModes/VisualCeiling.cs
index 275e79c58329c8105ea7cd680618ebc48aaa710f..2c9dae1d7a58630c2a3e05b455e7e57e929e15b3 100644
--- a/Source/Plugins/GZDoomEditing/VisualModes/VisualCeiling.cs
+++ b/Source/Plugins/GZDoomEditing/VisualModes/VisualCeiling.cs
@@ -169,18 +169,12 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 		{
             //mxd
             Sector s = GetControlSector();
+			s.Fields.BeforeFieldsChange();
             float oldx = s.Fields.GetValue("xpanningceiling", 0.0f);
             float oldy = s.Fields.GetValue("ypanningceiling", 0.0f);
             s.Fields["xpanningceiling"] = new UniValue(UniversalType.Float, oldx + (float)xy.X);
             s.Fields["ypanningceiling"] = new UniValue(UniversalType.Float, oldy + (float)xy.Y);
             s.UpdateNeeded = true;
-
-            /*Sector.Sector.Fields.BeforeFieldsChange();
-			float oldx = Sector.Sector.Fields.GetValue("xpanningceiling", 0.0f);
-			float oldy = Sector.Sector.Fields.GetValue("ypanningceiling", 0.0f);
-			Sector.Sector.Fields["xpanningceiling"] = new UniValue(UniversalType.Float, oldx + (float)xy.X);
-			Sector.Sector.Fields["ypanningceiling"] = new UniValue(UniversalType.Float, oldy + (float)xy.Y);
-			Sector.Sector.UpdateNeeded = true;*/
 		}
 
 		// Paste texture
@@ -233,7 +227,33 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
                     base.OnChangeTargetBrightness(up);
                 }
             } else {
-                base.OnChangeTargetBrightness(up);
+				if(!General.Map.UDMF) {
+					base.OnChangeTargetBrightness(up);
+					return;
+				}
+
+				int light = Sector.Sector.Fields.GetValue("lightceiling", 0);
+				bool absolute = Sector.Sector.Fields.GetValue("lightceilingabsolute", false);
+				int newLight = 0;
+
+				if(up)
+					newLight = General.Map.Config.BrightnessLevels.GetNextHigher(light, absolute);
+				else
+					newLight = General.Map.Config.BrightnessLevels.GetNextLower(light, absolute);
+
+				if(newLight == light) return;
+
+				//create undo
+				mode.CreateUndo("Change ceiling brightness", UndoGroup.SurfaceBrightnessChange, Sector.Sector.FixedIndex);
+				Sector.Sector.Fields.BeforeFieldsChange();
+
+				//apply changes
+				Sector.Sector.Fields["lightceiling"] = new UniValue(UniversalType.Integer, newLight);
+				mode.SetActionResult("Changed ceiling brightness to " + newLight + ".");
+				Sector.Sector.UpdateCache();
+
+				//rebuild sector
+				Sector.UpdateSectorGeometry(false);
             }
         }
 
diff --git a/Source/Plugins/GZDoomEditing/VisualModes/VisualLower.cs b/Source/Plugins/GZDoomEditing/VisualModes/VisualLower.cs
index c646ec9f71c16eb7ee76fce0fa04fb61e2fe468f..d3688b996af813374b1251d84ffcc04e732328d6 100644
--- a/Source/Plugins/GZDoomEditing/VisualModes/VisualLower.cs
+++ b/Source/Plugins/GZDoomEditing/VisualModes/VisualLower.cs
@@ -246,6 +246,37 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 			float oldy = Sidedef.Fields.GetValue("offsety_bottom", 0.0f);
 			return new Point((int)oldx, (int)oldy);
 		}
+
+		//mxd
+		public override void OnChangeTargetBrightness(bool up) {
+			if(!General.Map.UDMF) {
+				base.OnChangeTargetBrightness(up);
+				return;
+			}
+
+			int light = Sidedef.Fields.GetValue("light", 0);
+			bool absolute = Sidedef.Fields.GetValue("lightabsolute", false);
+			int newLight = 0;
+
+			if(up)
+				newLight = General.Map.Config.BrightnessLevels.GetNextHigher(light, absolute);
+			else
+				newLight = General.Map.Config.BrightnessLevels.GetNextLower(light, absolute);
+
+			if(newLight == light) return;
+
+			//create undo
+			mode.CreateUndo("Change lower wall brightness", UndoGroup.SurfaceBrightnessChange, Sector.Sector.FixedIndex);
+			Sidedef.Fields.BeforeFieldsChange();
+
+			//apply changes
+			Sidedef.Fields["light"] = new UniValue(UniversalType.Integer, newLight);
+			mode.SetActionResult("Changed lower wall brightness to " + newLight + ".");
+			Sector.Sector.UpdateCache();
+
+			//rebuild sector
+			Sector.UpdateSectorGeometry(false);
+		}
 		
 		#endregion
 	}
diff --git a/Source/Plugins/GZDoomEditing/VisualModes/VisualMiddleDouble.cs b/Source/Plugins/GZDoomEditing/VisualModes/VisualMiddleDouble.cs
index 5a70f69b2f09bf318a1bd5829585320837d08825..134a8d01b9f608c3bdc4d94f18bf043fe8b13c80 100644
--- a/Source/Plugins/GZDoomEditing/VisualModes/VisualMiddleDouble.cs
+++ b/Source/Plugins/GZDoomEditing/VisualModes/VisualMiddleDouble.cs
@@ -319,6 +319,37 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 			float oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0f);
 			return new Point((int)oldx, (int)oldy);
 		}
+
+		//mxd
+		public override void OnChangeTargetBrightness(bool up) {
+			if(!General.Map.UDMF) {
+				base.OnChangeTargetBrightness(up);
+				return;
+			}
+
+			int light = Sidedef.Fields.GetValue("light", 0);
+			bool absolute = Sidedef.Fields.GetValue("lightabsolute", false);
+			int newLight = 0;
+
+			if(up)
+				newLight = General.Map.Config.BrightnessLevels.GetNextHigher(light, absolute);
+			else
+				newLight = General.Map.Config.BrightnessLevels.GetNextLower(light, absolute);
+
+			if(newLight == light) return;
+
+			//create undo
+			mode.CreateUndo("Change middle wall brightness", UndoGroup.SurfaceBrightnessChange, Sector.Sector.FixedIndex);
+			Sidedef.Fields.BeforeFieldsChange();
+
+			//apply changes
+			Sidedef.Fields["light"] = new UniValue(UniversalType.Integer, newLight);
+			mode.SetActionResult("Changed middle wall brightness to " + newLight + ".");
+			Sector.Sector.UpdateCache();
+
+			//rebuild sector
+			Sector.UpdateSectorGeometry(false);
+		}
 		
 		#endregion
 	}
diff --git a/Source/Plugins/GZDoomEditing/VisualModes/VisualMiddleSingle.cs b/Source/Plugins/GZDoomEditing/VisualModes/VisualMiddleSingle.cs
index 9d8d94b5714d535049ee8beeef6eea25c4fb0819..3037e38151854b72fad825af6341b3f972b6eb1e 100644
--- a/Source/Plugins/GZDoomEditing/VisualModes/VisualMiddleSingle.cs
+++ b/Source/Plugins/GZDoomEditing/VisualModes/VisualMiddleSingle.cs
@@ -247,6 +247,37 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 			float oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0f);
 			return new Point((int)oldx, (int)oldy);
 		}
+
+		//mxd
+		public override void OnChangeTargetBrightness(bool up) {
+			if(!General.Map.UDMF) {
+				base.OnChangeTargetBrightness(up);
+				return;
+			}
+
+			int light = Sidedef.Fields.GetValue("light", 0);
+			bool absolute = Sidedef.Fields.GetValue("lightabsolute", false);
+			int newLight = 0;
+
+			if(up)
+				newLight = General.Map.Config.BrightnessLevels.GetNextHigher(light, absolute);
+			else
+				newLight = General.Map.Config.BrightnessLevels.GetNextLower(light, absolute);
+
+			if(newLight == light) return;
+
+			//create undo
+			mode.CreateUndo("Change middle wall brightness", UndoGroup.SurfaceBrightnessChange, Sector.Sector.FixedIndex);
+			Sidedef.Fields.BeforeFieldsChange();
+
+			//apply changes
+			Sidedef.Fields["light"] = new UniValue(UniversalType.Integer, newLight);
+			mode.SetActionResult("Changed middle wall brightness to " + newLight + ".");
+			Sector.Sector.UpdateCache();
+
+			//rebuild sector
+			Sector.UpdateSectorGeometry(false);
+		}
 		
 		#endregion
 	}
diff --git a/Source/Plugins/GZDoomEditing/VisualModes/VisualUpper.cs b/Source/Plugins/GZDoomEditing/VisualModes/VisualUpper.cs
index b19aff1d1747700831c7fd4d5bab7476ecb24dad..dd47f94d35adcd8a9929fa2d2bcd85062e0e173f 100644
--- a/Source/Plugins/GZDoomEditing/VisualModes/VisualUpper.cs
+++ b/Source/Plugins/GZDoomEditing/VisualModes/VisualUpper.cs
@@ -246,6 +246,37 @@ namespace CodeImp.DoomBuilder.GZDoomEditing
 			float oldy = Sidedef.Fields.GetValue("offsety_top", 0.0f);
 			return new Point((int)oldx, (int)oldy);
 		}
+
+		//mxd
+		public override void OnChangeTargetBrightness(bool up) {
+			if(!General.Map.UDMF) {
+				base.OnChangeTargetBrightness(up);
+				return;
+			}
+
+			int light = Sidedef.Fields.GetValue("light", 0);
+			bool absolute = Sidedef.Fields.GetValue("lightabsolute", false);
+			int newLight = 0;
+
+			if(up)
+				newLight = General.Map.Config.BrightnessLevels.GetNextHigher(light, absolute);
+			else
+				newLight = General.Map.Config.BrightnessLevels.GetNextLower(light, absolute);
+
+			if(newLight == light) return;
+
+			//create undo
+			mode.CreateUndo("Change upper wall brightness", UndoGroup.SurfaceBrightnessChange, Sector.Sector.FixedIndex);
+			Sidedef.Fields.BeforeFieldsChange();
+
+			//apply changes
+			Sidedef.Fields["light"] = new UniValue(UniversalType.Integer, newLight);
+			mode.SetActionResult("Changed upper wall brightness to " + newLight + ".");
+			Sector.Sector.UpdateCache();
+
+			//rebuild sector
+			Sector.UpdateSectorGeometry(false);
+		}
 		
 		#endregion
 	}