retouch ubitode module

retouch ubitode module

--- OpenSim/Region/PhysicsModules/UbitOde/OdeScene.cs
+++ OpenSim/Region/PhysicsModules/UbitOde/OdeScene.cs
@@ -169,17 +169,14 @@
     [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "UBITODEPhysicsScene")]
     public class ODEScene : PhysicsScene, INonSharedRegionModule
     {
-        private readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.ToString());
-        public string LogHeader = "[UbitODE]";
+        private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
         private bool m_Enabled = false;
-
-        // private Dictionary<string, sCollisionData> m_storedCollisions = new Dictionary<string, sCollisionData>();

         public bool OdeUbitLib = false;
         public bool m_suportCombine = false; // mega suport not tested

 //        private int threadid = 0;
-//        private Random fluidRandomizer = new Random(Environment.TickCount);

 //        const d.ContactFlags comumContactFlags = d.ContactFlags.SoftERP | d.ContactFlags.SoftCFM |d.ContactFlags.Approx1 | d.ContactFlags.Bounce;

@@ -331,6 +328,7 @@
         }
  */
         #region INonSharedRegionModule
+
         public string Name
         {
             get { return "UbitODE"; }
@@ -350,24 +348,10 @@
                 string physics = config.GetString("physics", string.Empty);
                 if (physics == Name)
                 {
+                    m_config = source;
                     m_Enabled = true;
-                    m_config = source;
-
-                    // We do this so that OpenSimulator on Windows loads the correct native ODE library depending on whether
-                    // it's running as a 32-bit process or a 64-bit one.  By invoking LoadLibary here, later DLLImports
-                    // will find it already loaded later on.
-                    //
-                    // This isn't necessary for other platforms (e.g. Mac OSX and Linux) since the DLL used can be
-                    // controlled in Ode.NET.dll.config
-                    if (Util.IsWindows())
-                        Util.LoadArchSpecificWindowsDll("ode.dll");
-
-                    // Initializing ODE only when a scene is created allows alternative ODE plugins to co-habit (according to
-                    // http://opensimulator.org/mantis/view.php?id=2750).
-                    d.InitODE();
-                }
-            }
-
+                }
+            }
         }

         public void Close()
@@ -380,12 +364,45 @@
                 return;

             EngineType = Name;
-            EngineType = Name;
             PhysicsSceneName = EngineType + "/" + scene.RegionInfo.RegionName;

+            OdeLock = new Object();
+
+            // We do this so that OpenSimulator on Windows loads the correct native ODE library depending on whether
+            // it's running as a 32-bit process or a 64-bit one.  By invoking LoadLibary here, later DLLImports
+            // will find it already loaded later on.
+            //
+            // This isn't necessary for other platforms (e.g. Mac OSX and Linux) since the DLL used can be
+            // controlled in Ode.NET.dll.config
+            if (Util.IsWindows())
+                Util.LoadArchSpecificWindowsDll("ode.dll");
+
+            // Initializing ODE only when a scene is created allows alternative ODE plugins to co-habit (according to
+            // http://opensimulator.org/mantis/view.php?id=2750).
+            d.InitODE();
+
+            string ode_config = d.GetConfiguration();
+            if (ode_config != null && ode_config != "")
+            {
+                m_log.InfoFormat("[UbitODE] ode library configuration: {0}", ode_config);
+
+                if (ode_config.Contains("ODE_Ubit"))
+                {
+                    OdeUbitLib = true;
+                }
+            }
+
+            Vector3 extent = new Vector3(scene.RegionInfo.RegionSizeX, scene.RegionInfo.RegionSizeY, scene.RegionInfo.RegionSizeZ);
+
+            mesher = scene.RequestModuleInterface<IMesher>();
+            if (mesher == null)
+            {
+                m_log.WarnFormat("[UbitODE] No mesher. module disabled");
+                m_Enabled = false;
+                return;
+            }
+
             scene.RegisterModuleInterface<PhysicsScene>(this);
-
-            Vector3 extent = new Vector3(scene.RegionInfo.RegionSizeX, scene.RegionInfo.RegionSizeY, scene.RegionInfo.RegionSizeZ);

             Initialization(extent);

@@ -393,29 +410,20 @@
                 (scene.Heightmap != null ? scene.Heightmap.GetFloatsSerialised() : new float[scene.RegionInfo.RegionSizeX * scene.RegionInfo.RegionSizeY]),
                 (float)scene.RegionInfo.RegionSettings.WaterHeight);

+
+            scene.PhysicsEnabled = true;
         }

         public void RemoveRegion(Scene scene)
         {
-            if (!m_Enabled)
-                return;
+//            if (!m_Enabled)
+//                return;
         }

         public void RegionLoaded(Scene scene)
         {
-            if (!m_Enabled)
-                return;
-
-            mesher = scene.RequestModuleInterface<IMesher>();
-            if (mesher == null)
-            {
-                m_log.WarnFormat("{0} No mesher. module disabled", LogHeader);
-                m_Enabled = false;
-                return;
-            }
-
-            region_loaded();
-            scene.PhysicsEnabled = true;
+//            if (!m_Enabled)
+//                return;
         }
         #endregion

@@ -426,15 +434,19 @@
         /// </summary>
         private void Initialization(Vector3 regionExtent)
         {
-
             //            checkThread();
-
-            OdeLock = new Object();
             SimulationLock = new Object();

             nearCallback = near;

             m_rayCastManager = new ODERayCastRequestManager(this);
+
+            WorldExtents.X = regionExtent.X;
+            m_regionWidth = (uint)regionExtent.X;
+            WorldExtents.Y = regionExtent.Y;
+            m_regionHeight = (uint)regionExtent.Y;
+
+            m_suportCombine = false;

             lock (OdeLock)
             {
@@ -506,27 +518,9 @@
                 d.WorldSetAutoDisableFlag(world, false);
             }

-            WorldExtents.X = regionExtent.X;
-            m_regionWidth = (uint)regionExtent.X;
-            WorldExtents.Y = regionExtent.Y;
-            m_regionHeight = (uint)regionExtent.Y;
-
-            m_suportCombine = false;
+
             //            checkThread();
-        }
-
-        private void region_loaded()
-        {
-            string ode_config = d.GetConfiguration();
-            if (ode_config != null && ode_config != "")
-            {
-                m_log.WarnFormat("ODE configuration: {0}", ode_config);
-
-                if (ode_config.Contains("ODE_Ubit"))
-                {
-                    OdeUbitLib = true;
-                }
-            }
+

             // Defaults

@@ -566,7 +560,6 @@
                     maximumMassObject = physicsconfig.GetFloat("maximum_mass_object", maximumMassObject);
                 }
             }
-

             d.WorldSetCFM(world, comumContactCFM);
             d.WorldSetERP(world, comumContactERP);
@@ -2500,7 +2493,6 @@
             }
         }

-
         public override void DeleteTerrain()
         {
         }
@@ -2514,66 +2506,7 @@
         {
             return m_suportCombine;
         }
-/*
-        public override void UnCombine(PhysicsScene pScene)
-        {
-            IntPtr localGround = IntPtr.Zero;
-//            float[] localHeightfield;
-            bool proceed = false;
-            List<IntPtr> geomDestroyList = new List<IntPtr>();
-
-            lock (OdeLock)
-            {
-                if (RegionTerrain.TryGetValue(Vector3.Zero, out localGround))
-                {
-                    foreach (IntPtr geom in TerrainHeightFieldHeights.Keys)
-                    {
-                        if (geom == localGround)
-                        {
-//                            localHeightfield = TerrainHeightFieldHeights[geom];
-                            proceed = true;
-                        }
-                        else
-                        {
-                            geomDestroyList.Add(geom);
-                        }
-                    }
-
-                    if (proceed)
-                    {
-                        m_worldOffset = Vector3.Zero;
-                        WorldExtents = new Vector2((int)Constants.RegionSize, (int)Constants.RegionSize);
-                        m_parentScene = null;
-
-                        foreach (IntPtr g in geomDestroyList)
-                        {
-                            // removingHeightField needs to be done or the garbage collector will
-                            // collect the terrain data before we tell ODE to destroy it causing
-                            // memory corruption
-                            if (TerrainHeightFieldHeights.ContainsKey(g))
-                            {
-//                                float[] removingHeightField = TerrainHeightFieldHeights[g];
-                                TerrainHeightFieldHeights.Remove(g);
-
-                                if (RegionTerrain.ContainsKey(g))
-                                {
-                                    RegionTerrain.Remove(g);
-                                }
-
-                                d.GeomDestroy(g);
-                                //removingHeightField = new float[0];
-                            }
-                        }
-
-                    }
-                    else
-                    {
-                        m_log.Warn("[PHYSICS]: Couldn't proceed with UnCombine.  Region has inconsistant data.");
-                    }
-                }
-            }
-        }
-*/
+
         public override void SetWaterLevel(float baseheight)
         {
             waterlevel = baseheight;


Add null/0-resolution tests

Add null/0-resolution tests

--- osu.Framework.Tests/Visual/Drawables/TestCaseWaveform.cs
+++ osu.Framework.Tests/Visual/Drawables/TestCaseWaveform.cs
@@ -100,6 +100,16 @@
             zoom.ValueChanged += e => waveformContainer.Width = track_width * e.NewValue;
         }

+        [Test]
+        public void TestNullWaveform()
+        {
+            TestWaveform graph = null;
+
+            AddStep("create waveform", () => waveformContainer.Child = graph = new TestWaveform(track, 1) { Waveform = new Waveform(null) });
+            AddUntilStep("wait for load", () => graph.ResampledWaveform != null);
+        }
+
+        [TestCase(0)]
         [TestCase(1f)]
         [TestCase(1f / 2)]
         [TestCase(1f / 4)]


Ensure setting client size beyond constraints from config recorrects back

--- osu.Framework.Tests/Visual/Platform/TestSceneWindowed.cs
+++ osu.Framework.Tests/Visual/Platform/TestSceneWindowed.cs
@@ -51,6 +51,10 @@
             AddStep("set minimum size to 1024x768", () => sdlWindow.MinSize = new Size(1024, 768));
             assertWindowClientSize(new Size(1024, 768));

+            AddStep("set client size 1440x900", () => setWindowClientSize(new Size(1440, 900)));
+            AddStep("set client size 640x480", () => setWindowClientSize(new Size(640, 480)));
+            assertWindowClientSize(new Size(1024, 768));
+
             AddStep("overlapping size throws", () => Assert.Throws<InvalidOperationException>(() => sdlWindow.MinSize = sdlWindow.MaxSize + new Size(1, 1)));
             AddStep("negative size throws", () => Assert.Throws<InvalidOperationException>(() => sdlWindow.MinSize = new Size(-500, -500)));
         }
@@ -60,6 +64,10 @@
         {
             AddStep("set client size to 1024x768", () => setWindowClientSize(new Size(1024, 768)));
             AddStep("set maximum size to 720x720", () => sdlWindow.MaxSize = new Size(720, 720));
+            assertWindowClientSize(new Size(720, 720));
+
+            AddStep("set client size 640x480", () => setWindowClientSize(new Size(640, 480)));
+            AddStep("set client size 1024x768", () => setWindowClientSize(new Size(1024, 768)));
             assertWindowClientSize(new Size(720, 720));

             AddStep("overlapping size throws", () => Assert.Throws<InvalidOperationException>(() => sdlWindow.MaxSize = sdlWindow.MinSize - new Size(1, 1)));


Add test

Add test

--- osu.Framework.Tests/Visual/Sprites/TestSceneAnimation.cs
+++ osu.Framework.Tests/Visual/Sprites/TestSceneAnimation.cs
@@ -52,6 +52,120 @@
             AddStep("Reset clock", () => clock.CurrentTime = 0);
         }

+        [Test]
+        public void TestFrameSeeking()
+        {
+            AddAssert("frame count is correct", () => animation.FrameCount == TestAnimation.LOADABLE_FRAMES);
+            AddUntilStep("wait for frames to pass", () => animation.CurrentFrameIndex > 10);
+            AddStep("stop animation", () => animation.Stop());
+            AddAssert("is stopped", () => !animation.IsPlaying);
+
+            AddStep("goto frame 60", () => animation.GotoFrame(60));
+            AddAssert("is at frame 60", () => animation.CurrentFrameIndex == 60);
+
+            AddStep("goto frame 30", () => animation.GotoFrame(30));
+            AddAssert("is at frame 30", () => animation.CurrentFrameIndex == 30);
+
+            AddStep("goto frame 60", () => animation.GotoFrame(60));
+            AddAssert("is at frame 60", () => animation.CurrentFrameIndex == 60);
+
+            AddStep("start animation", () => animation.Play());
+            AddUntilStep("continues to frame 70", () => animation.CurrentFrameIndex == 70);
+        }
+
+        [Test]
+        public void TestStartFromCurrentTime()
+        {
+            AddAssert("Animation is near start", () => animation.PlaybackPosition < 1000);
+
+            AddWaitStep("Wait some", 20);
+
+            loadNewAnimation();
+
+            AddAssert("Animation is near start", () => animation.PlaybackPosition < 1000);
+        }
+
+        [Test]
+        public void TestStoppedAnimationIsAtZero()
+        {
+            loadNewAnimation(postLoadAction: a => a.Stop());
+            AddAssert("Animation is at start", () => animation.PlaybackPosition == 0);
+        }
+
+        [Test]
+        public void TestStartFromOngoingTime()
+        {
+            AddWaitStep("Wait some", 20);
+
+            loadNewAnimation(false);
+
+            AddAssert("Animation is not near start", () => animation.PlaybackPosition > 1000);
+        }
+
+        [Test]
+        public void TestSetCustomClockWithCurrentTime()
+        {
+            AddAssert("Animation is near start", () => animation.PlaybackPosition < 1000);
+
+            AddUntilStep("Animation is not near start", () => animation.PlaybackPosition > 1000);
+
+            AddStep("Set custom clock", () => animation.Clock = new FramedOffsetClock(null) { Offset = 10000 });
+
+            AddAssert("Animation is near start", () => animation.PlaybackPosition < 1000);
+        }
+
+        [Test]
+        public void TestSetCustomClockWithOngoingTime()
+        {
+            loadNewAnimation(false);
+
+            AddAssert("Animation is near start", () => animation.PlaybackPosition < 1000);
+
+            AddUntilStep("Animation is not near start", () => animation.PlaybackPosition > 1000);
+
+            AddStep("Set custom clock", () => animation.Clock = new FramedOffsetClock(null) { Offset = 10000 });
+
+            AddAssert("Animation is not near start", () => animation.PlaybackPosition > 1000);
+        }
+
+        [Test]
+        public void TestJumpForward()
+        {
+            AddStep("Jump ahead by 10 seconds", () => clock.CurrentTime += 10000);
+            AddUntilStep("Animation seeked", () => animation.PlaybackPosition >= 10000);
+        }
+
+        [Test]
+        public void TestJumpBack()
+        {
+            AddStep("Jump ahead by 10 seconds", () => clock.CurrentTime += 10000);
+            AddUntilStep("Animation seeked", () => animation.PlaybackPosition >= 10000);
+
+            AddStep("Jump back by 10 seconds", () => clock.CurrentTime -= 10000);
+            AddUntilStep("Animation seeked", () => animation.PlaybackPosition < 10000);
+        }
+
+        [Test]
+        public void TestAnimationDoesNotLoopIfDisabled()
+        {
+            AddStep("Seek to end", () => clock.CurrentTime = animation.Duration);
+            AddUntilStep("Animation seeked", () => animation.PlaybackPosition >= animation.Duration - 1000);
+
+            AddWaitStep("Wait for playback", 10);
+            AddAssert("Not looped", () => animation.PlaybackPosition >= animation.Duration - 1000);
+        }
+
+        [Test]
+        public void TestAnimationLoopsIfEnabled()
+        {
+            AddStep("Set looping", () => animation.Repeat = true);
+            AddStep("Seek to end", () => clock.CurrentTime = animation.Duration - 2000);
+            AddUntilStep("Animation seeked", () => animation.PlaybackPosition >= animation.Duration - 1000);
+
+            AddWaitStep("Wait for playback", 10);
+            AddUntilStep("Looped", () => animation.PlaybackPosition < animation.Duration - 1000);
+        }
+
         private void loadNewAnimation(bool startFromCurrent = true, Action<TestAnimation> postLoadAction = null)
         {
             AddStep("load animation", () =>
@@ -68,117 +182,17 @@
         }

         [Test]
-        public void TestFrameSeeking()
-        {
-            AddAssert("frame count is correct", () => animation.FrameCount == TestAnimation.LOADABLE_FRAMES);
-            AddUntilStep("wait for frames to pass", () => animation.CurrentFrameIndex > 10);
-            AddStep("stop animation", () => animation.Stop());
-            AddAssert("is stopped", () => !animation.IsPlaying);
-
-            AddStep("goto frame 60", () => animation.GotoFrame(60));
-            AddAssert("is at frame 60", () => animation.CurrentFrameIndex == 60);
-
-            AddStep("goto frame 30", () => animation.GotoFrame(30));
-            AddAssert("is at frame 30", () => animation.CurrentFrameIndex == 30);
-
-            AddStep("goto frame 60", () => animation.GotoFrame(60));
-            AddAssert("is at frame 60", () => animation.CurrentFrameIndex == 60);
-
-            AddStep("start animation", () => animation.Play());
-            AddUntilStep("continues to frame 70", () => animation.CurrentFrameIndex == 70);
-        }
-
-        [Test]
-        public void TestStartFromCurrentTime()
-        {
-            AddAssert("Animation is near start", () => animation.PlaybackPosition < 1000);
-
-            AddWaitStep("Wait some", 20);
-
-            loadNewAnimation();
-
-            AddAssert("Animation is near start", () => animation.PlaybackPosition < 1000);
-        }
-
-        [Test]
-        public void TestStoppedAnimationIsAtZero()
-        {
-            loadNewAnimation(postLoadAction: a => a.Stop());
-            AddAssert("Animation is at start", () => animation.PlaybackPosition == 0);
-        }
-
-        [Test]
-        public void TestStartFromOngoingTime()
-        {
-            AddWaitStep("Wait some", 20);
-
-            loadNewAnimation(false);
-
-            AddAssert("Animation is not near start", () => animation.PlaybackPosition > 1000);
-        }
-
-        [Test]
-        public void TestSetCustomClockWithCurrentTime()
-        {
-            AddAssert("Animation is near start", () => animation.PlaybackPosition < 1000);
-
-            AddUntilStep("Animation is not near start", () => animation.PlaybackPosition > 1000);
-
-            AddStep("Set custom clock", () => animation.Clock = new FramedOffsetClock(null) { Offset = 10000 });
-
-            AddAssert("Animation is near start", () => animation.PlaybackPosition < 1000);
-        }
-
-        [Test]
-        public void TestSetCustomClockWithOngoingTime()
-        {
-            loadNewAnimation(false);
-
-            AddAssert("Animation is near start", () => animation.PlaybackPosition < 1000);
-
-            AddUntilStep("Animation is not near start", () => animation.PlaybackPosition > 1000);
-
-            AddStep("Set custom clock", () => animation.Clock = new FramedOffsetClock(null) { Offset = 10000 });
-
-            AddAssert("Animation is not near start", () => animation.PlaybackPosition > 1000);
-        }
-
-        [Test]
-        public void TestJumpForward()
-        {
-            AddStep("Jump ahead by 10 seconds", () => clock.CurrentTime += 10000);
-            AddUntilStep("Animation seeked", () => animation.PlaybackPosition >= 10000);
-        }
-
-        [Test]
-        public void TestJumpBack()
-        {
-            AddStep("Jump ahead by 10 seconds", () => clock.CurrentTime += 10000);
-            AddUntilStep("Animation seeked", () => animation.PlaybackPosition >= 10000);
-
-            AddStep("Jump back by 10 seconds", () => clock.CurrentTime -= 10000);
-            AddUntilStep("Animation seeked", () => animation.PlaybackPosition < 10000);
-        }
-
-        [Test]
-        public void TestAnimationDoesNotLoopIfDisabled()
-        {
-            AddStep("Seek to end", () => clock.CurrentTime = animation.Duration);
-            AddUntilStep("Animation seeked", () => animation.PlaybackPosition >= animation.Duration - 1000);
-
-            AddWaitStep("Wait for playback", 10);
-            AddAssert("Not looped", () => animation.PlaybackPosition >= animation.Duration - 1000);
-        }
-
-        [Test]
-        public void TestAnimationLoopsIfEnabled()
-        {
-            AddStep("Set looping", () => animation.Repeat = true);
-            AddStep("Seek to end", () => clock.CurrentTime = animation.Duration - 2000);
-            AddUntilStep("Animation seeked", () => animation.PlaybackPosition >= animation.Duration - 1000);
-
-            AddWaitStep("Wait for playback", 10);
-            AddUntilStep("Looped", () => animation.PlaybackPosition < animation.Duration - 1000);
+        public void TestTransformBeforeLoaded()
+        {
+            AddStep("set time to future", () => clock.CurrentTime += 10000);
+
+            loadNewAnimation(postLoadAction: a =>
+            {
+                a.Alpha = 0;
+                a.FadeInFromZero(10).Then().FadeOutFromOne(1000);
+            });
+
+            AddAssert("Is visible", () => animation.Alpha > 0);
         }

         protected override void Update()


Use ApplyHideTransforms() to hide the wrapper

--- osu.Framework/Graphics/Containers/ModelBackedDrawable.cs
+++ osu.Framework/Graphics/Containers/ModelBackedDrawable.cs
@@ -147,7 +147,8 @@
             if (lastWrapper == wrapper)
                 return;

-            currentWrapper.Hide();
+            ApplyHideTransforms(currentWrapper);
+            currentWrapper?.FinishTransforms();

             if (wrapper == null)
                 showPlaceholder();


Use default custom ruleset ID

Use default custom ruleset ID

--- osu.Game.Tests/NonVisual/Filtering/FilterMatchingTest.cs
+++ osu.Game.Tests/NonVisual/Filtering/FilterMatchingTest.cs
@@ -84,7 +84,7 @@
             var exampleBeatmapInfo = getExampleBeatmap();
             var criteria = new FilterCriteria
             {
-                Ruleset = new RulesetInfo { OnlineID = -25 },
+                Ruleset = new RulesetInfo { OnlineID = -1 },
                 AllowConvertedBeatmaps = true
             };
             var carouselItem = new CarouselBeatmap(exampleBeatmapInfo);


Add comment explaining why

Add comment explaining why

--- osu.Game/Rulesets/Mods/IApplicableToDrawableHitObject.cs
+++ osu.Game/Rulesets/Mods/IApplicableToDrawableHitObject.cs
@@ -13,6 +13,7 @@
     {
         /// <summary>
         /// Applies this <see cref="IApplicableToDrawableHitObjects"/> to a list of <see cref="DrawableHitObject"/>s.
+        /// This will only be invoked with top-level <see cref="DrawableHitObject"/>s. Access <see cref="DrawableHitObject.NestedHitObjects"/> if adjusting nested objects is necessary.
         /// </summary>
         /// <param name="drawables">The list of <see cref="DrawableHitObject"/>s to apply to.</param>
         void ApplyToDrawableHitObjects(IEnumerable<DrawableHitObject> drawables);


Remove unused bindable

Remove unused bindable

--- osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs
+++ osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs
@@ -130,7 +130,6 @@
         private readonly Bindable<int> comboIndexBindable = new Bindable<int>();

         private readonly Bindable<float> positionalHitsoundsLevel = new Bindable<float>();
-        private readonly Bindable<bool> normaliseComboColourBrightness = new Bindable<bool>();
         private readonly Bindable<float> comboColourBrightness = new Bindable<float>();
         private readonly Bindable<int> comboIndexWithOffsetsBindable = new Bindable<int>();

@@ -197,7 +196,6 @@
             comboIndexBindable.BindValueChanged(_ => UpdateComboColour());
             comboIndexWithOffsetsBindable.BindValueChanged(_ => UpdateComboColour(), true);

-            normaliseComboColourBrightness.BindValueChanged(_ => UpdateComboColour());
             comboColourBrightness.BindValueChanged(_ => UpdateComboColour());

             // Apply transforms


Acerto para geração do RPS - TAG AliquotaISS deve sempre ir, mesmo quando valor = 0

--- src/ACBr.Net.NFSe/Providers/Ginfes/ProviderGinfes.cs
+++ src/ACBr.Net.NFSe/Providers/Ginfes/ProviderGinfes.cs
@@ -1143,20 +1143,13 @@
             valores.AddChild(AdicionarTag(TipoCampo.De2, "", "ValorCsll", ns, 1, 15, Ocorrencia.Obrigatoria, nota.Servico.Valores.ValorCsll));

             valores.AddChild(AdicionarTag(TipoCampo.Int, "", "IssRetido", ns, 1, 1, Ocorrencia.Obrigatoria, issRetido));
-
-            var tipoOcorrenciaValorIss = Ocorrencia.MaiorQueZero;
-            if (regimeEspecialTributacao == "2")
-            {
-                // Se o regime for "Estimativa", obrigatório informar as tags "ValorIss" e "Aliquota"
-                tipoOcorrenciaValorIss = Ocorrencia.Obrigatoria;
-            }
-
-            valores.AddChild(AdicionarTag(TipoCampo.De2, "", "ValorIss", ns, 1, 15, tipoOcorrenciaValorIss, nota.Servico.Valores.ValorIss));
+
+            valores.AddChild(AdicionarTag(TipoCampo.De2, "", "ValorIss", ns, 1, 15, Ocorrencia.Obrigatoria, nota.Servico.Valores.ValorIss));
             valores.AddChild(AdicionarTag(TipoCampo.De2, "", "ValorIssRetido", ns, 1, 15, Ocorrencia.Obrigatoria, nota.Servico.Valores.ValorIssRetido));
             valores.AddChild(AdicionarTag(TipoCampo.De2, "", "OutrasRetencoes", ns, 1, 15, Ocorrencia.Obrigatoria, nota.Servico.Valores.OutrasRetencoes));
             valores.AddChild(AdicionarTag(TipoCampo.De2, "", "BaseCalculo", ns, 1, 15, Ocorrencia.Obrigatoria, nota.Servico.Valores.BaseCalculo));
             // Valor Percentual - Exemplos: 1% => 0.01   /   25,5% => 0.255   /   100% => 1
-            valores.AddChild(AdicionarTag(TipoCampo.De4, "", "Aliquota", ns, 1, 15, tipoOcorrenciaValorIss, nota.Servico.Valores.Aliquota / 100));  // Valor Percentual - Exemplos: 1% => 0.01   /   25,5% => 0.255   /   100% => 1
+            valores.AddChild(AdicionarTag(TipoCampo.De4, "", "Aliquota", ns, 1, 15, Ocorrencia.Obrigatoria, nota.Servico.Valores.Aliquota / 100));  // Valor Percentual - Exemplos: 1% => 0.01   /   25,5% => 0.255   /   100% => 1
             valores.AddChild(AdicionarTag(TipoCampo.De2, "", "ValorLiquidoNfse", ns, 1, 15, Ocorrencia.Obrigatoria, nota.Servico.Valores.ValorLiquidoNfse));

             //Algumas prefeituras não permitem estas TAGs


Fix failing WritingSystemSetupPMTests unit tests

These failures were introduced by a bugfix yesterday.

--- Palaso/WritingSystems/WritingSystemRepositoryBase.cs
+++ Palaso/WritingSystems/WritingSystemRepositoryBase.cs
@@ -148,7 +148,9 @@

 		public bool Contains(string identifier)
 		{
-			return _writingSystems.ContainsKey(identifier);
+			// identifier should not be null, but some unit tests never define StoreID
+			// on their temporary WritingSystemDefinition objects.
+			return identifier != null && _writingSystems.ContainsKey(identifier);
 		}

 		public bool CanSet(IWritingSystemDefinition ws)


Code Formatter

Code Formatter

--- src/Nether.Analytics.MessageFormats/SessionStart.cs
+++ src/Nether.Analytics.MessageFormats/SessionStart.cs
@@ -1,10 +1,13 @@
-using System;
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using System;
 using System.Collections.Generic;
 using System.Text;

 namespace Nether.Analytics.MessageFormats
 {
-    class SessionStart : INetherMessage
+    internal class SessionStart : INetherMessage
     {
         public string Type => "session-start";
         public string Version => "1.0.0";


Update src/Avalonia.Controls/Notifications/INotification.cs

improved xml comments

Co-Authored-By: Steven Kirk <ac6a5dd95d6e22de43a0511c4fb069330b6b03f0@users.noreply.github.com>

--- src/Avalonia.Controls/Notifications/INotification.cs
+++ src/Avalonia.Controls/Notifications/INotification.cs
@@ -16,7 +16,7 @@
         string Title { get; }

         /// <summary>
-        /// Gets the Message of the notification.
+        /// Gets the notification message.
         /// </summary>
         string Message { get; }


Changed orders to allow breakpoint color to override

--- PowerShellTools/Classification/ClassificationType.cs
+++ PowerShellTools/Classification/ClassificationType.cs
@@ -37,7 +37,7 @@
     [Name("PowerShell Attribute")]
     [DisplayName("PowerShell Attribute")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellAttributeFormat : ClassificationFormatDefinition
     {
         public PowerShellAttributeFormat()
@@ -51,7 +51,7 @@
     [Name("PowerShell Command")]
     [DisplayName("PowerShell Command")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellCommandFormat : ClassificationFormatDefinition
     {
         public PowerShellCommandFormat()
@@ -65,7 +65,7 @@
     [Name("PowerShell Command Argument")]
     [DisplayName("PowerShell Command Argument")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellCommandArgumentFormat : ClassificationFormatDefinition
     {
         public PowerShellCommandArgumentFormat()
@@ -79,7 +79,7 @@
     [Name("PowerShell Command Parameter")]
     [DisplayName("PowerShell Command Parameter")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellCommandParameterFormat : ClassificationFormatDefinition
     {
         public PowerShellCommandParameterFormat()
@@ -93,7 +93,7 @@
     [Name("PowerShell Comment")]
     [DisplayName("PowerShell Comment")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellCommentFormat : ClassificationFormatDefinition
     {
         public PowerShellCommentFormat()
@@ -107,7 +107,7 @@
     [Name("PowerShell Keyword")]
     [DisplayName("PowerShell Keyword")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellKeywordFormat : ClassificationFormatDefinition
     {
         public PowerShellKeywordFormat()
@@ -121,7 +121,7 @@
     [Name("PowerShell Number")]
     [DisplayName("PowerShell Number")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellNumberFormat : ClassificationFormatDefinition
     {
         public PowerShellNumberFormat()
@@ -135,7 +135,7 @@
     [Name("PowerShell Operator")]
     [DisplayName("PowerShell Operator")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellOperatorsFormat : ClassificationFormatDefinition
     {
         public PowerShellOperatorsFormat()
@@ -149,7 +149,7 @@
     [Name("PowerShell String")]
     [DisplayName("PowerShell String")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellStringFormat : ClassificationFormatDefinition
     {
         public PowerShellStringFormat()
@@ -163,7 +163,7 @@
     [Name("PowerShell Type")]
     [DisplayName("PowerShell Types")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellTypeFormat : ClassificationFormatDefinition
     {
         public PowerShellTypeFormat()
@@ -177,7 +177,7 @@
     [Name("PowerShell Variable")]
     [DisplayName("PowerShell Variable")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellVariablesFormat : ClassificationFormatDefinition
     {
         public PowerShellVariablesFormat()
@@ -191,7 +191,7 @@
     [Name("PowerShell Member")]
     [DisplayName("PowerShell Member")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellMemberFormat : ClassificationFormatDefinition
     {
         public PowerShellMemberFormat()
@@ -205,7 +205,7 @@
     [Name("PowerShell Group Start")]
     [DisplayName("PowerShell Group Start")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellGroupStartFormat: ClassificationFormatDefinition
     {
         public PowerShellGroupStartFormat()
@@ -219,7 +219,7 @@
     [Name("PowerShell Group End")]
     [DisplayName("PowerShell Group End")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellGroupEndFormat : ClassificationFormatDefinition
     {
         public PowerShellGroupEndFormat()
@@ -233,7 +233,7 @@
     [Name("PowerShell Line Continuation")]
     [DisplayName("PowerShell Line Continuation (Backtick)")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellLineContinuationFormat : ClassificationFormatDefinition
     {
         public PowerShellLineContinuationFormat()
@@ -247,7 +247,7 @@
     [Name("PowerShell Loop Label")]
     [DisplayName("PowerShell Loop Label")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellLoopLabelFormat : ClassificationFormatDefinition
     {
         public PowerShellLoopLabelFormat()
@@ -261,7 +261,7 @@
     [Name("PowerShell Statement Separator")]
     [DisplayName("PowerShell Statement Separator (Semicolon)")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellStatementSeparatorFormat : ClassificationFormatDefinition
     {
         public PowerShellStatementSeparatorFormat()
@@ -275,7 +275,7 @@
     [Name("PowerShell Unknown")]
     [DisplayName("PowerShell Unknown")]
     [UserVisible(true)]
-    [Order(After = Priority.Default, Before = Priority.High)]
+    [Order(Before = Priority.Default)]
     internal sealed class PowerShellUnknownFormat : ClassificationFormatDefinition
     {
         public PowerShellUnknownFormat()


Prevents VS from crashing when a user closes the Add References dialog while WebPI entries are still being loaded.

--- Product/SharedProject/WebPiComponentPickerControl.cs
+++ Product/SharedProject/WebPiComponentPickerControl.cs
@@ -122,7 +122,11 @@

                     _packages.Add(newPackage);

-                    BeginInvoke(new Action<object>(AddPackage), newPackage);
+                    try {
+                        BeginInvoke(new Action<object>(AddPackage), newPackage);
+                    } catch (InvalidOperationException) {
+                        break;
+                    }
                 }
             }
         }


[trunk] Avoid nodes without any required for lists

--- packages/FileUtilities/dev/VSSolutionBuilder/CopyFile.cs
+++ packages/FileUtilities/dev/VSSolutionBuilder/CopyFile.cs
@@ -26,7 +26,7 @@
                     }
                 }

-                if (null == nodeProjectData)
+                if ((null == nodeProjectData) && (null != sourceModuleNode.RequiredDependentFor))
                 {
                     // try looking what this a requirement for
                     foreach (var requireeNodes in sourceModuleNode.RequiredDependentFor)
@@ -37,11 +37,11 @@
                             break;
                         }
                     }
+                }

-                    if (null == nodeProjectData)
-                    {
-                        throw new Opus.Core.Exception("Cannot locate any vcproj data to write the post-build event for");
-                    }
+                if (null == nodeProjectData)
+                {
+                    throw new Opus.Core.Exception("Cannot locate any vcproj data to write the post-build event for");
                 }
             }


Narrow down the upper boundary for non-embed verse rendering.

--- src/BibleBot.Backend/Controllers/VersesController.cs
+++ src/BibleBot.Backend/Controllers/VersesController.cs
@@ -148,7 +148,7 @@

                                     if (combinedTextLength > 2000)
                                     {
-                                        result.Text = $"{String.Join("", result.Text.SkipLast(combinedTextLength - 1995))}...";
+                                        result.Text = $"{String.Join("", result.Text.SkipLast(combinedTextLength - 1919))}...";
                                         result.Text = Regex.Replace(result.Text, @"(\.*\s*<*\**\d*\**>*\.\.\.)$", "...");
                                     }
                                 }


cleaner settings controller

cleaner settings controller

--- src/Blogifier.Core/Controllers/SettingsController.cs
+++ src/Blogifier.Core/Controllers/SettingsController.cs
@@ -3,21 +3,20 @@
 using Blogifier.Core.Data.Interfaces;
 using Blogifier.Core.Data.Models;
 using Microsoft.AspNetCore.Mvc;
-using Microsoft.Extensions.Logging;

 namespace Blogifier.Core.Controllers
 {
-    [Route("admin/settings")]
+    [Route("admin/[controller]")]
 	public class SettingsController : Controller
 	{
 		IUnitOfWork _db;
-        private readonly string _themePattern = "~/Views/Blogifier/Admin/{0}/Settings/";
         string _theme;

-		public SettingsController(IUnitOfWork db, ILogger<AuthorController> logger)
+		public SettingsController(IUnitOfWork db)
 		{
 			_db = db;
-			_theme = string.Format(_themePattern, ApplicationSettings.BlogTheme);
+			_theme = string.Format("~/Views/Blogifier/Admin/{0}/Settings/",
+                ApplicationSettings.BlogTheme);
         }

         [Route("basic")]


Add support for multiple output formats when querying a transaction

--- src/Openchain.Server/Controllers/QueryController.cs
+++ src/Openchain.Server/Controllers/QueryController.cs
@@ -55,7 +55,9 @@
         [HttpGet("transaction")]
         public async Task<ActionResult> GetTransaction(
             [FromQuery(Name = "mutation_hash")]
-            string mutationHash)
+            string mutationHash,
+            [FromQuery(Name = "format")]
+            string format = "raw")
         {
             ByteString parsedMutationHash;
             try
@@ -72,7 +74,35 @@
             if (transaction == null)
                 return new HttpStatusCodeResult(404);
             else
-                return Json(new { raw = transaction.ToString() });
+            {
+                if (format == "raw")
+                    return Json(new { raw = transaction.ToString() });
+                else
+                    return TransactionToJson(transaction);
+            }
+        }
+
+        private JsonResult TransactionToJson(ByteString rawData)
+        {
+            Transaction transaction = MessageSerializer.DeserializeTransaction(rawData);
+            Mutation mutation = MessageSerializer.DeserializeMutation(transaction.Mutation);
+
+            return Json(new
+            {
+                mutation = new
+                {
+                    @namespace = mutation.Namespace.ToString(),
+                    records = mutation.Records.Select(record => new
+                    {
+                        key = record.Key.ToString(),
+                        value = record.Value?.ToString(),
+                        version = record.Version.ToString()
+                    }).ToArray(),
+                    metadata = mutation.Metadata.ToString()
+                },
+                timestamp = transaction.Timestamp,
+                transaction_metadata = transaction.TransactionMetadata.ToString()
+            });
         }

         /// <summary>


1340: CreateVgUseVisualElement()

1340: CreateVgUseVisualElement()

--- src/PixelFarm/PaintLab.Svg/SvgRenderVxDocBuilder.cs
+++ src/PixelFarm/PaintLab.Svg/SvgRenderVxDocBuilder.cs
@@ -232,12 +232,14 @@

     class VgUseVisualElement : VgVisualElement
     {
-        public VgUseVisualElement(SvgUseSpec useSpec, VgVisualDoc root)
+        internal VgUseVisualElement(SvgUseSpec useSpec, VgVisualDoc root)
             : base(WellknownSvgElementName.Use, useSpec, root)
         {

         }
         internal VgVisualElement HRefSvgRenderElement { get; set; }
+
+
         public override void Paint(VgPaintArgs vgPainterArgs)
         {

@@ -320,6 +322,9 @@
             visitor._currentTx = current_tx;
             //base.Walk(vgPainterArgs);
         }
+
+
+
     }

     public class VgVisualDoc
@@ -341,6 +346,7 @@
         {

         }
+
         public bool TryGetVgVisualElementById(string id, out VgVisualElement found)
         {
             return _registeredElemsById.TryGetValue(id, out found);
@@ -383,6 +389,17 @@
         //
         public VgVisualElement VgRootElem { get; set; }

+
+        public VgVisualElement CreateVgUseVisualElement(VgVisualElement refVgVisualElem)
+        {
+
+            //#if DEBUG
+            //#endif
+            SvgUseSpec useSpec = new SvgUseSpec();
+            VgUseVisualElement vgUseVisualElem = new VgUseVisualElement(useSpec, this);
+            vgUseVisualElem.HRefSvgRenderElement = refVgVisualElem;
+            return vgUseVisualElem;
+        }
     }

@@ -405,7 +422,7 @@

         LayoutFarm.ImageBinder _imgBinder;
-        VgVisualDoc _renderRoot;
+        VgVisualDoc _vgVisualDoc;

         Image _backimg;
         RectD _boundRect;
@@ -419,14 +436,16 @@

         public VgVisualElement(WellknownSvgElementName wellknownName,
             SvgVisualSpec visualSpec,
-            VgVisualDoc renderRoot)
+            VgVisualDoc vgVisualDoc)
         {
             //we can create visual element without its DOM
             _needBoundUpdate = true;
             _wellknownName = wellknownName;
             _visualSpec = visualSpec;
-            _renderRoot = renderRoot;
-        }
+            _vgVisualDoc = vgVisualDoc;
+        }
+        //
+        public VgVisualDoc VgVisualDoc => _vgVisualDoc;

         public SvgElement DomElem { get; set; }//*** its dom element(optional)
         public override WellknownSvgElementName ElemName => _wellknownName;
@@ -457,7 +476,7 @@
                     {
                         _imgH = value.ImageHeight;
                     }
-                    value.ImageChanged += (s, e) => _renderRoot.Invalidate(this);
+                    value.ImageChanged += (s, e) => _vgVisualDoc.Invalidate(this);
                 }
             }
         }
@@ -502,7 +521,7 @@

         public override VgVisualElementBase Clone()
         {
-            VgVisualElement clone = new VgVisualElement(_wellknownName, _visualSpec, _renderRoot);
+            VgVisualElement clone = new VgVisualElement(_wellknownName, _visualSpec, _vgVisualDoc);
             clone.DomElem = this.DomElem;
             if (VxsPath != null)
             {
@@ -899,7 +918,7 @@
                                 {
                                     tryLoadOnce = true;

-                                    _renderRoot.RequestImageAsync(this.ImageBinder, this, this);
+                                    _vgVisualDoc.RequestImageAsync(this.ImageBinder, this, this);
                                     goto EVAL_STATE;
                                 }
                                 break;


Update ConnectableShapeTests.cs

Update ConnectableShapeTests.cs

[skip ci]

--- tests/Core2D.UnitTests/Shapes/ConnectableShapeTests.cs
+++ tests/Core2D.UnitTests/Shapes/ConnectableShapeTests.cs
@@ -26,7 +26,7 @@
         public void Connectors_Not_Null()
         {
             var target = new Class2();
-            Assert.NotNull(target.Connectors);
+            Assert.False(target.Connectors.IsDefault);
         }

         [Fact]
@@ -39,7 +39,8 @@
             point.Data.Properties = point.Data.Properties.Add(new Property());
             target.Connectors = target.Connectors.Add(point);

-            Assert.Equal(1, target.GetPoints().Count());
+            var count = target.GetPoints().Count();
+            Assert.Equal(1, count);
         }

         [Fact]
@@ -55,7 +56,9 @@
             Assert.True(point.State.Flags.HasFlag(ShapeStateFlags.Connector | ShapeStateFlags.None));
             Assert.False(point.State.Flags.HasFlag(ShapeStateFlags.Standalone));
             Assert.Contains(point, target.Connectors);
-            Assert.Equal(1, target.Connectors.Length);
+
+            var length = target.Connectors.Length;
+            Assert.Equal(1, length);
         }

         [Fact]
@@ -71,7 +74,9 @@
             Assert.True(point.State.Flags.HasFlag(ShapeStateFlags.Connector | ShapeStateFlags.Input));
             Assert.False(point.State.Flags.HasFlag(ShapeStateFlags.Standalone));
             Assert.Contains(point, target.Connectors);
-            Assert.Equal(1, target.Connectors.Length);
+
+            var length = target.Connectors.Length;
+            Assert.Equal(1, length);
         }

         [Fact]
@@ -87,7 +92,9 @@
             Assert.True(point.State.Flags.HasFlag(ShapeStateFlags.Connector | ShapeStateFlags.Output));
             Assert.False(point.State.Flags.HasFlag(ShapeStateFlags.Standalone));
             Assert.Contains(point, target.Connectors);
-            Assert.Equal(1, target.Connectors.Length);
+
+            var length = target.Connectors.Length;
+            Assert.Equal(1, length);
         }

         public class Class1 : BaseShape


rename PowerShellSession to powerShellContext

--- src/PowerShellEditorServices.Host/LanguageServer.cs
+++ src/PowerShellEditorServices.Host/LanguageServer.cs
@@ -142,7 +142,7 @@

             psCommand.AddScript(script);

-            var result = await editorSession.PowerShellSession.ExecuteCommand<object>(
+            var result = await editorSession.powerShellContext.ExecuteCommand<object>(
                         psCommand);

             await requestContext.SendResult(null);


For peace of mind: Added a unit test the DeclarationOrderComparer.Default property always returns the same instance

--- tests/FixieSpec.Tests/DeclarationOrderComparerTests.cs
+++ tests/FixieSpec.Tests/DeclarationOrderComparerTests.cs
@@ -59,6 +59,16 @@
             result.ShouldBe(0);
         }

+        public void ShouldAlwaysReturnTheSameInstanceAsDefault()
+        {
+            var firstDefaultInstance = DeclarationOrderComparer.Default;
+            var secondDefaultInstance = DeclarationOrderComparer.Default;
+
+            var isSameInstance = ReferenceEquals(firstDefaultInstance, secondDefaultInstance);
+
+            isSameInstance.ShouldBeTrue();
+        }
+
         sealed class ClassWithDeclarations
         {
             public void FirstMethod()


made `DynamicResultMapper` public

made `DynamicResultMapper` public

--- src/Remote.Linq/DynamicQuery/DynamicResultMapper.cs
+++ src/Remote.Linq/DynamicQuery/DynamicResultMapper.cs
@@ -10,7 +10,7 @@
     using System.Linq;
     using System.Linq.Expressions;

-    internal sealed class DynamicResultMapper : IQueryResultMapper<DynamicObject>
+    public sealed class DynamicResultMapper : IQueryResultMapper<DynamicObject>
     {
         private readonly IDynamicObjectMapper? _mapper;


Only disable default handling of Response MQ's

--- src/ServiceStack.Common/Messaging/MessageHandler.cs
+++ src/ServiceStack.Common/Messaging/MessageHandler.cs
@@ -154,18 +154,18 @@
                 {
                     var responseType = response.GetType();

-                    var publishAllResponses = PublishResponsesWhitelist == null;
-                    if (!publishAllResponses)
-                    {
-                        var inWhitelist = PublishResponsesWhitelist.Any(publishResponse => responseType.Name == publishResponse);
-                        if (!inWhitelist) return;
-                    }
-
-                    //If there is a response send it to the typed response InQ
+                    //If there's no explicit ReplyTo, send it to the typed Response InQ by default
                     var mqReplyTo = message.ReplyTo;
-
                     if (mqReplyTo == null)
                     {
+                        //Disable default handling of MQ Responses if whitelist exists and Response not in whitelist
+                        var publishAllResponses = PublishResponsesWhitelist == null;
+                        if (!publishAllResponses)
+                        {
+                            var inWhitelist = PublishResponsesWhitelist.Any(publishResponse => responseType.Name == publishResponse);
+                            if (!inWhitelist) return;
+                        }
+
                         // Leave as-is to work around a Mono 2.6.7 compiler bug
                         if (!StringExtensions.IsUserType(responseType)) return;
                         mqReplyTo = new QueueNames(responseType).In;


Refactored condition comparison delegates

--- src/Take.Blip.Builder/Models/ConditionComparison.cs
+++ src/Take.Blip.Builder/Models/ConditionComparison.cs
@@ -119,15 +119,15 @@
             }
         }

-        public static Func<string, bool> ToUnaryDelegate (this ConditionComparison conditionComparison)
+        public static Func<string, bool> ToUnaryDelegate(this ConditionComparison conditionComparison)
         {
             switch (conditionComparison)
             {
                 case ConditionComparison.Exists:
-                    return (v) => string.IsNullOrEmpty(v) == false;
+                    return (v) => !string.IsNullOrEmpty(v);

                 case ConditionComparison.NotExists:
-                    return (v) => string.IsNullOrEmpty(v);
+                    return string.IsNullOrEmpty;

                 case ConditionComparison.Equals:
                 case ConditionComparison.NotEquals:
@@ -140,7 +140,7 @@
                 case ConditionComparison.LessThan:
                 case ConditionComparison.GreaterThanOrEquals:
                 case ConditionComparison.LessThanOrEquals:
-                    throw new ArgumentException("Not unary comparison condition: ", nameof(conditionComparison));
+                    throw new ArgumentException("The provided value is not an unary comparison", nameof(conditionComparison));

                 default:
                     throw new ArgumentOutOfRangeException(nameof(conditionComparison));
@@ -187,7 +187,7 @@

                 case ConditionComparison.Exists:
                 case ConditionComparison.NotExists:
-                    throw new ArgumentException("Not binary comparison condition: ", nameof(conditionComparison));
+                    throw new ArgumentException("The provided value is not a binary comparison", nameof(conditionComparison));

                 default:
                     throw new ArgumentOutOfRangeException(nameof(conditionComparison));


Fix failing msearch integration test

Fix failing msearch integration test

--- src/Tests/Search/MultiSearch/MultiSearchApiTests.cs
+++ src/Tests/Search/MultiSearch/MultiSearchApiTests.cs
@@ -47,7 +47,7 @@
 			.Index(typeof(Project))
 			.Type(typeof(Project))
 			.Search<Project>("10projects",s => s.Query(q => q.MatchAll()).From(0).Size(10))
-			.Search<Project>("count_project", s => s.SearchType(SearchType.DfsQueryThenFetch))
+			.Search<Project>("dfs_projects", s => s.SearchType(SearchType.DfsQueryThenFetch))
 			.Search<Developer>("5developers", s => s.Query(q => q.MatchAll()).From(0).Size(5))
 			.Search<Developer>("infer_type_name", s => s.Index("devs").From(0).Size(5).MatchAll());

@@ -56,7 +56,7 @@
 			Operations = new Dictionary<string, ISearchRequest>
 			{
 				{ "10projects", new SearchRequest<Project> { From = 0, Size = 10, Query = new QueryContainer(new MatchAllQuery()) } },
-				{ "count_project", new SearchRequest<Project> { SearchType = SearchType.DfsQueryThenFetch} },
+				{ "dfs_projects", new SearchRequest<Project> { SearchType = SearchType.DfsQueryThenFetch} },
 				{ "5developers", new SearchRequest<Developer> { From = 0, Size = 5, Query = new QueryContainer(new MatchAllQuery()) } },
 				{ "infer_type_name", new SearchRequest<Developer>("devs") { From = 0, Size = 5, Query = new QueryContainer(new MatchAllQuery()) } },
 			}
@@ -76,9 +76,9 @@
 			projects.IsValid.Should().BeTrue();
 			projects.Documents.Should().HaveCount(10);

-			var projectsCount = r.GetResponse<Project>("count_project");
-			projectsCount.IsValid.Should().BeTrue();
-			projectsCount.Documents.Should().HaveCount(0);
+			var dfsProjects = r.GetResponse<Project>("dfs_projects");
+			dfsProjects.IsValid.Should().BeTrue();
+			dfsProjects.Documents.Should().HaveCount(10);

 			var developers = r.GetResponse<Developer>("5developers");
 			developers.IsValid.Should().BeTrue();


Code cleanup

Code cleanup

--- Purchasing.Web/Views/Report/ProcessingTime.cshtml
+++ Purchasing.Web/Views/Report/ProcessingTime.cshtml
@@ -43,7 +43,7 @@
 @section SubNav
 {

-
@Html.ActionLink("Back to List", "Index", "Report", new { @class = "button" })

+
@Html.ActionLink("Back to List", "Index", null, new { @class = "button" })

 }

@@ -99,12 +99,12 @@

                     Request Number

-                Arrived A tPurchaser
-                Rerouted To PurchaserDate
-                Rerouted To PurchaserName
-                ReRouted To PurchaserBy
-                Completed By PurchaserDate
-                Completed By PurchaserName
+                Arrived At Purchaser
+                Rerouted To Purchaser Date
+                Rerouted To Purchaser Name
+                ReRouted To Purchaser By
+                Completed By Purchaser Date
+                Completed By Purchaser Name


Set CurrentUICulture for tests

Set CurrentUICulture for tests

--- tests/Avalonia.Markup.UnitTests/Data/BindingExpressionTests.cs
+++ tests/Avalonia.Markup.UnitTests/Data/BindingExpressionTests.cs
@@ -286,6 +286,12 @@
         [Fact]
         public void Should_Pass_ConverterParameter_To_Convert()
         {
+#if NET461
+            Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
+#else
+            CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture;
+#endif
+
             var data = new Class1 { DoubleValue = 5.6 };
             var converter = new Mock<IValueConverter>();
             var target = new BindingExpression(
@@ -302,6 +308,12 @@
         [Fact]
         public void Should_Pass_ConverterParameter_To_ConvertBack()
         {
+#if NET461
+            Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
+#else
+            CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture;
+#endif
+
             var data = new Class1 { DoubleValue = 5.6 };
             var converter = new Mock<IValueConverter>();
             var target = new BindingExpression(
@@ -318,6 +330,12 @@
         [Fact]
         public void Should_Handle_DataValidation()
         {
+#if NET461
+            Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
+#else
+            CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture;
+#endif
+
             var data = new Class1 { DoubleValue = 5.6 };
             var converter = new Mock<IValueConverter>();
             var target = new BindingExpression(new ExpressionObserver(data, "DoubleValue", true), typeof(string));


Remove NET461 specific assert

Remove NET461 specific assert

--- tests/Avalonia.Markup.UnitTests/Data/BindingExpressionTests.cs
+++ tests/Avalonia.Markup.UnitTests/Data/BindingExpressionTests.cs
@@ -200,13 +200,6 @@
                 DefaultValueConverter.Instance);
             var result = await target.Take(1);

-#if NET461
-            Assert.Equal(
-                new BindingNotification(
-                    new InvalidCastException("Could not convert FallbackValue 'bar' to 'System.Int32'"),
-                    BindingErrorType.Error),
-                result);
-#else
             Assert.Equal(
                 new BindingNotification(
                     new AggregateException(
@@ -214,7 +207,6 @@
                         new InvalidCastException("Could not convert FallbackValue 'bar' to 'System.Int32'")),
                     BindingErrorType.Error),
                 result);
- #endif
         }

         [Fact]
@@ -234,13 +226,6 @@
                 DefaultValueConverter.Instance);
             var result = await target.Take(1);

-#if NET461
-            Assert.Equal(
-                new BindingNotification(
-                    new InvalidCastException("Could not convert FallbackValue 'bar' to 'System.Int32'"),
-                    BindingErrorType.Error),
-                result);
-#else
             Assert.Equal(
                 new BindingNotification(
                     new AggregateException(
@@ -248,7 +233,6 @@
                         new InvalidCastException("Could not convert FallbackValue 'bar' to 'System.Int32'")),
                     BindingErrorType.Error),
                 result);
-#endif
         }

         [Fact]


Remove unneeded SupportedDiagnostics override

--- src/Analyzers/Core/Analyzers/Formatting/AbstractFormattingAnalyzer.cs
+++ src/Analyzers/Core/Analyzers/Formatting/AbstractFormattingAnalyzer.cs
@@ -21,9 +21,6 @@
         {
         }

-        public sealed override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics
-            => ImmutableArray.Create(Descriptor);
-
         public sealed override DiagnosticAnalyzerCategory GetAnalyzerCategory()
             => DiagnosticAnalyzerCategory.SyntaxTreeWithoutSemanticsAnalysis;


Update RectangleMarker.cs

Update RectangleMarker.cs

--- src/Core2D/Modules/Renderer/Avalonia/Nodes/Markers/RectangleMarker.cs
+++ src/Core2D/Modules/Renderer/Avalonia/Nodes/Markers/RectangleMarker.cs
@@ -16,6 +16,11 @@
             return;
         }

+        if (ShapeViewModel is null)
+        {
+            return;
+        }
+
         using var rotationDisposable = context.PushPreTransform(Rotation);

         if (ShapeViewModel.IsFilled)


registered message handlers

registered message handlers

--- src/apps/PingYourPackage.API/Config/WebAPIConfig.cs
+++ src/apps/PingYourPackage.API/Config/WebAPIConfig.cs
@@ -13,7 +13,8 @@
         public static void Configure(HttpConfiguration config) {

             //Message Handlers
-            //config.MessageHandlers.Add(new PingYourPackageAuthHandler());
+            config.MessageHandlers.Add(new RequireHttpsMessageHandler());
+            config.MessageHandlers.Add(new PingYourPackageAuthHandler());

             //Formatters


About to undo

About to undo

--- src/EditorFeatures/Core/CommandHandlers/AbstractGoToCommandHandler.cs
+++ src/EditorFeatures/Core/CommandHandlers/AbstractGoToCommandHandler.cs
@@ -67,18 +67,15 @@
             if (!caret.HasValue)
                 return false;

+            var position = caret.Value.Position;
             var snapshot = subjectBuffer.CurrentSnapshot;

-            var scope = context.OperationContext.AddScope(allowCancellation: true, ScopeDescription);
-            var token = _listener.BeginAsyncOperation(nameof(ExecuteCommand));
-            ExecuteCommandAsync(snapshot, caret.Value, context)
-                .CompletesTrackingOperation(scope)
-                .CompletesAsyncOperation(token);
-
-            return true;
+            using var scope = context.OperationContext.AddScope(allowCancellation: true, ScopeDescription);
+            return _threadingContext.JoinableTaskFactory.Run(
+                () => ExecuteCommandAsync(snapshot, position, context));
         }

-        private async Task ExecuteCommandAsync(
+        private async Task<bool> ExecuteCommandAsync(
             ITextSnapshot textSnapshot, int position, CommandExecutionContext context)
         {
             // Switch to the BG immediately so we can keep as much work off the UI thread.
@@ -86,15 +83,15 @@

             var document = textSnapshot.GetOpenDocumentInCurrentContextWithChanges();
             if (document == null)
-                return;
+                return false;

             var service = GetService(document);
             if (service == null)
-                return;
+                return false;

             document = await textSnapshot.GetFullyLoadedOpenDocumentInCurrentContextWithChangesAsync(context.OperationContext).ConfigureAwait(false);
             if (document == null)
-                return;
+                return false;

             // We have all the cheap stuff, so let's do expensive stuff now
             string? messageToShow = null;
@@ -114,7 +111,7 @@
                     // Find succeeded.  Show the results to the user and immediately return.
                     await _streamingPresenter.TryNavigateToOrPresentItemsAsync(
                         _threadingContext, document.Project.Solution.Workspace, findContext.SearchTitle, findContext.GetDefinitions(), cancellationToken).ConfigureAwait(false);
-                    return;
+                    return true;
                 }

                 // Find failed.  Pop up dialog telling the user why.
@@ -128,6 +125,8 @@
                 var notificationService = document.Project.Solution.Workspace.Services.GetRequiredService<INotificationService>();
                 notificationService.SendNotification(messageToShow, title: DisplayName, NotificationSeverity.Information);
             }
+
+            return true;
         }
     }
 }


Remove unnecessary property.

Remove unnecessary property.

--- src/EditorFeatures/Core/Implementation/Suggestions/SuggestedAction.cs
+++ src/EditorFeatures/Core/Implementation/Suggestions/SuggestedAction.cs
@@ -34,7 +34,6 @@
         internal readonly CodeAction CodeAction;

         private ICodeActionEditHandlerService EditHandler => SourceProvider.EditHandler;
-        private IAsynchronousOperationListener OperationListener => SourceProvider.OperationListener;
         private IWaitIndicator WaitIndicator => SourceProvider.WaitIndicator;

         internal SuggestedAction(
@@ -97,7 +96,7 @@
             // Create a task to do the actual async invocation of this action.
             // For testing purposes mark that we still have an outstanding async
             // operation so that we don't try to validate things too soon.
-            var asyncToken = OperationListener.BeginAsyncOperation(GetType().Name + "." + nameof(Invoke));
+            var asyncToken = SourceProvider.OperationListener.BeginAsyncOperation(GetType().Name + "." + nameof(Invoke));
             var task = YieldThenInvokeAsync(cancellationToken);
             task.CompletesAsyncOperation(asyncToken);
         }


(FIX) Incorrect parsing of N-Quads having context and containing ">" in plain literal;

--- RDFSharp/Store/Serializers/RDFNQuads/RDFNQuads.cs
+++ RDFSharp/Store/Serializers/RDFNQuads/RDFNQuads.cs
@@ -416,7 +416,7 @@
                         tokens[1] = tokens[1].Trim(new Char[] { ' ', '\t' });

                         //plain literal
-                        tokens[2] = nquad.Substring(0, nquad.IndexOf('<'));
+                        tokens[2] = nquad.Substring(0, nquad.LastIndexOf('<'));
                         nquad     = nquad.Substring(tokens[2].Length).Trim(new Char[] { ' ', '\t' });
                         tokens[2] = tokens[2].Trim(new Char[] { ' ', '\t' });

@@ -461,7 +461,7 @@
                         tokens[1] = tokens[1].Trim(new Char[] { ' ', '\t' });

                         //plain literal with language
-                        tokens[2] = nquad.Substring(0, nquad.IndexOf('<'));
+                        tokens[2] = nquad.Substring(0, nquad.LastIndexOf('<'));
                         nquad     = nquad.Substring(tokens[2].Length).Trim(new Char[] { ' ', '\t' });
                         tokens[2] = tokens[2].Trim(new Char[] { ' ', '\t' });

@@ -647,7 +647,7 @@
                         tokens[1] = tokens[1].Trim(new Char[] { ' ', '\t' });

                         //plain literal
-                        tokens[2] = nquad.Substring(0, nquad.IndexOf('<'));
+                        tokens[2] = nquad.Substring(0, nquad.LastIndexOf('<'));
                         nquad     = nquad.Substring(tokens[2].Length).Trim(new Char[] { ' ', '\t' });
                         tokens[2] = tokens[2].Trim(new Char[] { ' ', '\t' });

@@ -692,7 +692,7 @@
                         tokens[1] = tokens[1].Trim(new Char[] { ' ', '\t' });

                         //plain literal with language
-                        tokens[2] = nquad.Substring(0, nquad.IndexOf('<'));
+                        tokens[2] = nquad.Substring(0, nquad.LastIndexOf('<'));
                         nquad     = nquad.Substring(tokens[2].Length).Trim(new Char[] { ' ', '\t' });
                         tokens[2] = tokens[2].Trim(new Char[] { ' ', '\t' });


Add WorkItemAttribute for 10649...

Add WorkItemAttribute for 10649...

--- src/ExpressionEvaluator/CSharp/Test/ExpressionCompiler/LocalsTests.cs
+++ src/ExpressionEvaluator/CSharp/Test/ExpressionCompiler/LocalsTests.cs
@@ -1483,6 +1483,7 @@
         }

         [WorkItem(995976, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/995976")]
+        [WorkItem(10649, "https://github.com/dotnet/roslyn/issues/10649")]
         [Fact]
         public void AsyncAndLambda()
         {


add base client config validator

add base client config validator

--- src/IdentityServer4/Validation/DefaultClientConfigurationValidator.cs
+++ src/IdentityServer4/Validation/DefaultClientConfigurationValidator.cs
@@ -8,6 +8,11 @@
     /// <seealso cref="IdentityServer4.Validation.IClientConfigurationValidator" />
     public class DefaultClientConfigurationValidator : IClientConfigurationValidator
     {
+        /// <summary>
+        /// Determines whether the configuration of a client is valid.
+        /// </summary>
+        /// <param name="context">The context.</param>
+        /// <returns></returns>
         public async Task ValidateAsync(ClientConfigurationValidationContext context)
         {
             await ValidateLifetimesAsync(context);
@@ -17,6 +22,11 @@
             if (context.IsValid == false) return;
         }

+        /// <summary>
+        /// Validates lifetime related configuration settings.
+        /// </summary>
+        /// <param name="context">The context.</param>
+        /// <returns></returns>
         protected Task ValidateLifetimesAsync(ClientConfigurationValidationContext context)
         {
             if (context.Client.AccessTokenLifetime <= 0)
@@ -25,9 +35,32 @@
                 return Task.CompletedTask;
             }

+            if (context.Client.IdentityTokenLifetime <= 0)
+            {
+                context.SetError("identity token lifetime is 0 or negative");
+                return Task.CompletedTask;
+            }
+
+            if (context.Client.AbsoluteRefreshTokenLifetime <= 0)
+            {
+                context.SetError("absolute refresh token lifetime is 0 or negative");
+                return Task.CompletedTask;
+            }
+
+            if (context.Client.SlidingRefreshTokenLifetime < 0)
+            {
+                context.SetError("sliding refresh token lifetime is negative");
+                return Task.CompletedTask;
+            }
+
             return Task.CompletedTask;
         }

+        /// <summary>
+        /// Validates properties related configuration settings.
+        /// </summary>
+        /// <param name="context">The context.</param>
+        /// <returns></returns>
         protected Task ValidatePropertiesAsync(ClientConfigurationValidationContext context)
         {
             return Task.CompletedTask;


Fixed a test after change in attachment path

--- src/Jarvis.DocumentStore.Tests/ProjectionTests/DocumentWriterTests.cs
+++ src/Jarvis.DocumentStore.Tests/ProjectionTests/DocumentWriterTests.cs
@@ -117,7 +117,7 @@

             var h = _writer.FindOneById(_handle1);
             Assert.That(h.Attachments.Select(a => a.Handle), Is.EquivalentTo(new[] { _handleAttach1 }));
-            Assert.That(h.Attachments.Select(a => a.RelativePath), Is.EquivalentTo(new[] { "Test.zip" }));
+            Assert.That(h.Attachments.Select(a => a.RelativePath), Is.EquivalentTo(new[] { "/Test.zip" }));
         }

         [Test]


Fixed initial settings for server lightswitch

--- SampleServer/SwitchApp/SwitchApp/SwitchController.cs
+++ SampleServer/SwitchApp/SwitchApp/SwitchController.cs
@@ -83,11 +83,11 @@

         private static bool CanTurnOn()
         {
-            return false;
+            return true;
         }
         private static bool CanTurnOff()
         {
-            return false;
+            return true;
         }

     }


added french, spanish, russian translations for component autoInstallWithBetaDBConfirmBody

--- RelhaxModpack/RelhaxModpack/Utils/Translations.cs
+++ RelhaxModpack/RelhaxModpack/Utils/Translations.cs
@@ -2167,9 +2167,12 @@
             German.Add("autoInstallWithBetaDBConfirmBody", TranslationNeeded);
             Polish.Add("autoInstallWithBetaDBConfirmBody", "Automatyczna Instalacja będzie dostępna dla testowej bazy danych (BETA), która jest często aktualizowana —" +
                 " może to prowadzić do kilku aktualizacji w ciągu jednego dnia!\nCzy mimo to chcesz kontynuować?");
-            French.Add("autoInstallWithBetaDBConfirmBody", TranslationNeeded);
-            Spanish.Add("autoInstallWithBetaDBConfirmBody", TranslationNeeded);
-            Russian.Add("autoInstallWithBetaDBConfirmBody", TranslationNeeded);
+            French.Add("autoInstallWithBetaDBConfirmBody", "L'installation automatique sera activée avec la base de données bêta. Cette base de données est mise à jour fréquemment" +
+                " et peut provoquer plusieurs mises à jour le même jour. Êtes-vous sûr de vouloir faire ça ?");
+            Spanish.Add("autoInstallWithBetaDBConfirmBody", "La autoinstalación será habilitada con la base de datos beta. La base de datos beta es actualizada frecuentemente," +
+                " y puede resultar en múltiples instalaciones en un día. ¿Está seguro de que quiere hacer esto?");
+            Russian.Add("autoInstallWithBetaDBConfirmBody", "Будет включена автоматическая установка модификаций из бета-версии БД. Она обновляется чаще основной, и вы заметите," +
+                " что одни и те же моды устанавливались по нескольку раз.\nВы точно хотите включить автоматическую установку?");

             //Component: autoInstallWithBetaDBConfirmHeader
             //


debug applying serializer

debug applying serializer

--- SerializableDictionaryTest/SerializableDictionary.cs
+++ SerializableDictionaryTest/SerializableDictionary.cs
@@ -107,7 +107,7 @@
                     XmlReader inner = reader.ReadSubtree();

                     inner.ReadToDescendant(typeof(TKey).Name);
-                    TKey key = (TKey)valueSerializer.Deserialize(inner);
+                    TKey key = (TKey)keySerializer.Deserialize(inner);

                     TValue value = (TValue)valueSerializer.Deserialize(inner);

@@ -140,7 +140,7 @@

                     XmlReader inner = reader.ReadSubtree();
                     inner.ReadToDescendant(typeof(TKey).Name);
-                    TKey key = (TKey)valueSerializer.Deserialize(inner);
+                    TKey key = (TKey)keySerializer.Deserialize(inner);
                     inner.Close();

                     this.Add(key, value);


Fixed #54

Fixed #54

--- src/Libraries/SharpDox.Build.NRefactory/Parser/DocumentationParser.cs
+++ src/Libraries/SharpDox.Build.NRefactory/Parser/DocumentationParser.cs
@@ -1,4 +1,4 @@
-using ICSharpCode.NRefactory.TypeSystem;
+using ICSharpCode.NRefactory.TypeSystem;
 using ICSharpCode.NRefactory.Xml;
 using SharpDox.Model.Documentation;
 using SharpDox.Model.Documentation.Token;
@@ -31,7 +31,7 @@
                             {
                                 // TODO
                                 //_sdRepository.AddDocumentationLanguage(child.Name.ToLower());
-                                var languageDoc = ParseDocumentation(child.Children);
+                                var languageDoc = ParseDocumentation(child.Children, true);
                                 docDic.Add(child.Name.ToLower(), languageDoc);
                             }
                         }
@@ -54,7 +54,7 @@
             return docDic;
         }

-        private SDDocumentation ParseDocumentation(IEnumerable<XmlDocumentationElement> docElements)
+        private SDDocumentation ParseDocumentation(IEnumerable<XmlDocumentationElement> docElements, bool multilang = false)
         {
             var sdDocumentation = new SDDocumentation();

@@ -65,29 +65,29 @@
                     case "typeparam":
                         var typeparamKey = child.GetAttribute("name") ?? "typeparam";
                         if (!sdDocumentation.TypeParams.ContainsKey(typeparamKey))
-                            sdDocumentation.TypeParams.Add(typeparamKey, ParseContentTokens(child));
+                            sdDocumentation.TypeParams.Add(typeparamKey, ParseContentTokens(child, multilang));
                         break;
                     case "param":
                         var paramKey = child.GetAttribute("name") ?? "param";
                         if (!sdDocumentation.Params.ContainsKey(paramKey))
-                            sdDocumentation.Params.Add(paramKey, ParseContentTokens(child));
+                            sdDocumentation.Params.Add(paramKey, ParseContentTokens(child, multilang));
                         break;
                     case "exception":
                         var exKey = child.GetAttribute("cref") ?? "exception";
                         if (!sdDocumentation.Exceptions.ContainsKey(exKey))
-                            sdDocumentation.Exceptions.Add(exKey, ParseContentTokens(child));
+                            sdDocumentation.Exceptions.Add(exKey, ParseContentTokens(child, multilang));
                         break;
                     case "summary":
-                        sdDocumentation.Summary = ParseContentTokens(child);
+                        sdDocumentation.Summary = ParseContentTokens(child, multilang);
                         break;
                     case "remarks":
-                        sdDocumentation.Remarks = ParseContentTokens(child);
+                        sdDocumentation.Remarks = ParseContentTokens(child, multilang);
                         break;
                     case "example":
-                        sdDocumentation.Example = ParseContentTokens(child);
+                        sdDocumentation.Example = ParseContentTokens(child, multilang);
                         break;
                     case "returns":
-                        AddResultsSection(sdDocumentation.Returns, child);
+                        AddResultsSection(sdDocumentation.Returns, child, multilang);
                         break;
                     case "seealso":
                         sdDocumentation.SeeAlsos.Add(GetSeeRef(child));
@@ -98,13 +98,13 @@
             return sdDocumentation;
         }

-        private SDTokenList ParseContentTokens(XmlDocumentationElement xmlElement)
+        private SDTokenList ParseContentTokens(XmlDocumentationElement xmlElement, bool multilang)
         {
             var content = new SDTokenList();

             foreach (XmlDocumentationElement element in xmlElement.Children)
             {
-                var text = Regex.Replace(element.TextContent, "^[ ]{4}", "", RegexOptions.Multiline);
+                var text = multilang ? Regex.Replace(element.TextContent, "^[ ]{4}", "", RegexOptions.Multiline) : element.TextContent;

                 if (element.IsTextNode)
                 {
@@ -142,15 +142,15 @@
             return content;
         }

-        private void AddResultsSection(Dictionary<string, SDTokenList> results, XmlDocumentationElement xmlElement)
+        private void AddResultsSection(Dictionary<string, SDTokenList> results, XmlDocumentationElement xmlElement, bool multilang)
         {
             if (!string.IsNullOrEmpty(xmlElement.GetAttribute("httpCode")))
             {
-                results.Add(xmlElement.GetAttribute("httpCode"), ParseContentTokens(xmlElement));
+                results.Add(xmlElement.GetAttribute("httpCode"), ParseContentTokens(xmlElement, multilang));
             }
             else if(!results.ContainsKey("default"))
             {
-                results.Add("default", ParseContentTokens(xmlElement));
+                results.Add("default", ParseContentTokens(xmlElement, multilang));
             }
         }

@@ -184,4 +184,4 @@
             }
         }
     }
-}+}


* Added NOOP, POP, POPV, POPQ, DUP, DUPV, DUPQ instructions. * Placeholders for POPS, POPL, POPIP, POPBP, POPSP, POPSLR, DUPS, DUPL

--- libraries/libLSL/lslByteCode.cs
+++ libraries/libLSL/lslByteCode.cs
@@ -13,12 +13,65 @@
             byte ins = nextInstruction();
             lslOpcodes code = (lslOpcodes)ins;

+            Object arg1;
+            Object arg2;
+
             switch (code)
             {
                 case lslOpcodes.OP_NOOP:
                     break;
+
                 case lslOpcodes.OP_POP:
                     popBytes(4);
+                    break;
+
+                case lslOpcodes.OP_POPS:
+                case lslOpcodes.OP_POPL:
+                    // Do Stuff
+                    break;
+
+                case lslOpcodes.OP_POPV:
+                    popBytes(12);
+                    break;
+                case lslOpcodes.OP_POPQ:
+                    popBytes(16);
+                    break;
+
+                case lslOpcodes.OP_POPARG:
+                    popBytes((Int32)arg1);
+                    break;
+
+                case lslOpcodes.OP_POPIP:
+                    // Do Stuff
+                    break;
+
+                case lslOpcodes.OP_POPBP:
+                    // Do Stuff
+                    break;
+
+                case lslOpcodes.OP_POPSP:
+                    // Do Stuff
+                    break;
+
+                case lslOpcodes.OP_POPSLR:
+                    // Do Stuff
+                    break;
+
+                case lslOpcodes.OP_DUP:
+                    pushBytes(getBytes(4));
+                    break;
+
+                case lslOpcodes.OP_DUPS:
+                case lslOpcodes.OP_DUPL:
+                    // Do Stuff
+                    break;
+
+                case lslOpcodes.OP_DUPV:
+                    pushBytes(getBytes(12));
+                    break;
+
+                case lslOpcodes.OP_DUPQ:
+                    pushBytes(getBytes(16));
                     break;

                 default:
@@ -26,12 +79,49 @@
             }
         }

+        /// <summary>
+        /// Advance the instruction pointer, pull the current instruction
+        /// </summary>
+        /// <returns></returns>
         byte nextInstruction()
         {
             return 0;
         }

+        /// <summary>
+        /// Removes bytes from the stack
+        /// </summary>
+        /// <param name="num">Number of bytes</param>
         void popBytes(int num)
+        {
+
+        }
+
+        /// <summary>
+        /// Pushes Bytes to the stack
+        /// </summary>
+        /// <param name="bytes">Ze bytes!</param>
+        void pushBytes(byte[] bytes)
+        {
+
+        }
+
+        /// <summary>
+        /// Get Bytes from the stack
+        /// </summary>
+        /// <param name="num">Number of bytes</param>
+        /// <returns>Ze bytes!</returns>
+        byte[] getBytes(int num)
+        {
+
+        }
+
+        /// <summary>
+        /// Saves bytes to the local frame
+        /// </summary>
+        /// <param name="bytes">Ze bytes!</param>
+        /// <param name="index">Index in local frame</param>
+        void storeBytes(byte[] bytes, int index)
         {

         }


Updated offchain method stubs

Updated offchain method stubs

--- ServiceLykkeWallet/Controllers/OffchainController.cs
+++ ServiceLykkeWallet/Controllers/OffchainController.cs
@@ -7,7 +7,7 @@

 namespace ServiceLykkeWallet.Controllers
 {
-    public class OffchainController: ApiController
+    public class OffchainController : ApiController
     {
         [HttpGet]
         public async Task<IHttpActionResult> AddClientProvidedChannelInput(string multiSig, string transactionId)
@@ -15,17 +15,60 @@
             return Ok();
         }

-        public async Task<IHttpActionResult> GenerateChannelSetupTransaction(string ClientAddress, double ClientContributedContributedAmount,
-            string HubAddress, double HubContributedAmount, string ChannelAssetName)
-
+        public class UnsignedChannelSetupTransaction
         {
-            return Ok();
+            public string UnsigndTransaction
+            {
+                get;
+                set;
+            }
         }

-        public async Task<IHttpActionResult> FinalizeChannelSetup(string channelId, string clientCommitment0)
+        // http://localhost:8989/Offchain/GenerateUnsignedChannelSetupTransaction?ClientAddress=x&ClientContributedAmount=10&HubAddress=z&HubContributedAmount=10&ClientMultisigAddress=ab&ClientMultisigContributedAmount=10&ChannelAssetName=ac
+        [HttpGet]
+        public async Task<IHttpActionResult> GenerateUnsignedChannelSetupTransaction(string ClientAddress, double ClientContributedAmount,
+            string HubAddress, double HubContributedAmount, string ClientMultisigAddress, double ClientMultisigContributedAmount, string ChannelAssetName)
         {
-            return Ok();
+            return Json(new UnsignedChannelSetupTransaction { UnsigndTransaction = "0001" });
         }

+        public class UnsignedClientCommitmentTransactionResponse
+        {
+            public string FullySignedSetupTransaction
+            {
+                get;
+                set;
+            }
+
+            public string UnsignedClientCommitment0
+            {
+                get;
+                set;
+            }
+        }
+
+        // http://localhost:8989/Offchain/CreateUnsignedClientCommitmentTransaction?UnsignedChannelSetupTransaction=0001&ClientSignedChannelSetup=0001
+        [HttpGet]
+        public async Task<IHttpActionResult> CreateUnsignedClientCommitmentTransaction(string UnsignedChannelSetupTransaction, string ClientSignedChannelSetup)
+        {
+            return Json(new UnsignedClientCommitmentTransactionResponse { FullySignedSetupTransaction = "0002",
+                UnsignedClientCommitment0 = "0002" });
+        }
+
+        public class FinalizeChannelSetupResponse
+        {
+            public string SignedHubCommitment0
+            {
+                get;
+                set;
+            }
+        }
+
+        // http://localhost:8989/Offchain/FinalizeChannelSetup?FullySignedSetupTransaction=002&SignedClientCommitment0=002
+        [HttpGet]
+        public async Task<IHttpActionResult> FinalizeChannelSetup(string FullySignedSetupTransaction, string SignedClientCommitment0)
+        {
+            return Json(new FinalizeChannelSetupResponse { SignedHubCommitment0 = "0003" });
+        }
     }
 }


Optimize SQS message retrieval: parallelize HTTP requests.

--- src/MassTransit.AmazonSqsTransport/Contexts/AmazonSqsClientContext.cs
+++ src/MassTransit.AmazonSqsTransport/Contexts/AmazonSqsClientContext.cs
@@ -309,23 +309,19 @@
         /// <returns></returns>
         async Task<List<Message>> PollMessages(string queueUrl, ReceiveSettings receiveSettings)
         {
-            var messages = new List<Message>();
-            var remainingNumMessagesToPoll = receiveSettings.PrefetchCount;
-            while (remainingNumMessagesToPoll > 0)
-            {
-                var numMessagesToPoll = Math.Min(remainingNumMessagesToPoll, 10);
-                var response = await ReceiveMessages(receiveSettings, queueUrl, numMessagesToPoll).ConfigureAwait(false);
-                var numMessagesReceived = response.Messages.Count;
-
-                messages.AddRange(response.Messages);
-
-                if (numMessagesReceived == 0)
-                    break;
-
-                remainingNumMessagesToPoll -= numMessagesReceived;
-            }
-
-            return messages;
+            const int awsMax = 10;
+
+            var remaining = receiveSettings.PrefetchCount % awsMax;
+            var receives = Enumerable.Repeat(awsMax, receiveSettings.PrefetchCount / awsMax).ToList();
+
+            if (remaining > 0)
+            {
+                receives.Add(remaining);
+            }
+
+            var responses = await Task.WhenAll(receives.Select(numberOfMessages => ReceiveMessages(receiveSettings, queueUrl, numberOfMessages))).ConfigureAwait(false);
+
+            return responses.SelectMany(r => r.Messages).ToList();
         }

         async Task<ReceiveMessageResponse> ReceiveMessages(ReceiveSettings receiveSettings, string queueUrl, int maxNumberOfMessages)


DNN-9536: Fix UNC path mapping issue

DNN-9536: Fix UNC path mapping issue

--- src/Modules/Manage/Dnn.PersonaBar.Sites/Components/SitesController.cs
+++ src/Modules/Manage/Dnn.PersonaBar.Sites/Components/SitesController.cs
@@ -230,7 +230,7 @@
                 WriteEndDocumentOnClose = true
             };

-            var filename = (Globals.HostMapPath + request.FileName.Replace("/", @"\")).Replace(@"\\", @"\");
+            var filename = Globals.HostMapPath + request.FileName.Replace("/", @"\");
             if (!filename.EndsWith(".template", StringComparison.InvariantCultureIgnoreCase))
             {
                 filename += ".template";


codegen: stackinouno add validation metadata

--- src/Odachi.CodeGen.TypeScript.StackinoUno/Renderers/ObjectRenderer.cs
+++ src/Odachi.CodeGen.TypeScript.StackinoUno/Renderers/ObjectRenderer.cs
@@ -79,6 +79,47 @@
 						writer.WriteIndentedLine("return result;");
 					}
 				}
+
+				var hasValidation = objectFragment.Fields.Any(f => f.Hints.Any(h => h.Key.StartsWith("validation:")));
+				if (hasValidation)
+				{
+					using (writer.WriteIndentedBlock(prefix: $"static validation = ", suffix: ";"))
+					{
+						foreach (var field in objectFragment.Fields)
+						{
+							field.Hints.TryGetValue("validation:is-required", out var isRequired);
+							field.Hints.TryGetValue("validation:min-length", out var minLength);
+							field.Hints.TryGetValue("validation:max-length", out var maxLength);
+
+							if (string.IsNullOrEmpty(isRequired) && string.IsNullOrEmpty(minLength) && string.IsNullOrEmpty(maxLength))
+							{
+								continue;
+							}
+
+							using (writer.WriteIndentedBlock(prefix: $"{TS.Field(field.Name)}: ", suffix: ","))
+							{
+								if (isRequired == "true")
+								{
+									writer.WriteIndentedLine("required: true,");
+								}
+								if ((!string.IsNullOrEmpty(minLength) && minLength != "-1") || (!string.IsNullOrEmpty(maxLength) && maxLength != "-1"))
+								{
+									using (writer.WriteIndentedBlock(prefix: "length: ", suffix: ","))
+									{
+										if (!string.IsNullOrEmpty(minLength) && minLength != "-1")
+										{
+											writer.WriteIndentedLine($"min: {minLength},");
+										}
+										if (!string.IsNullOrEmpty(maxLength) && maxLength != "-1")
+										{
+											writer.WriteIndentedLine($"max: {maxLength},");
+										}
+									}
+								}
+							}
+						}
+					}
+				}
 			}

 			context.Export(objectFragment.Name, @default: true);


simplified symbol finder

simplified symbol finder

--- src/OmniSharp.Roslyn.CSharp/Services/Navigation/FindSymbolsService.cs
+++ src/OmniSharp.Roslyn.CSharp/Services/Navigation/FindSymbolsService.cs
@@ -30,11 +30,10 @@

             int maxItemsToReturn = (request?.MaxItemsToReturn).GetValueOrDefault();
             var csprojSymbols = await _workspace.CurrentSolution.FindSymbols(request?.Filter, ".csproj", maxItemsToReturn);
-            var projectJsonSymbols = await _workspace.CurrentSolution.FindSymbols(request?.Filter, ".json", maxItemsToReturn);
             var csxSymbols = await _workspace.CurrentSolution.FindSymbols(request?.Filter, ".csx", maxItemsToReturn);
             return new QuickFixResponse()
             {
-                QuickFixes = csprojSymbols.QuickFixes.Concat(projectJsonSymbols.QuickFixes).Concat(csxSymbols.QuickFixes)
+                QuickFixes = csprojSymbols.QuickFixes.Concat(csxSymbols.QuickFixes)
             };
         }
     }


Fixing datetime format in comments.

Fixing datetime format in comments.

zzz is not valid for UTC values, Z is expected instead

--- src/Orchard.Web/Modules/Orchard.Comments/Views/CommentMetadata.cshtml
+++ src/Orchard.Web/Modules/Orchard.Comments/Views/CommentMetadata.cshtml
@@ -3,4 +3,4 @@
     CommentPart comment = Model.ContentPart;
 }

-@T("said") <time datetime="@comment.CommentDateUtc.GetValueOrDefault().ToString("yyyy-MM-ddTHH:mm:ss.fffffffzzz")">@Html.Link((string)Display.DateTimeRelative(dateTimeUtc: comment.CommentDateUtc.GetValueOrDefault()).ToString(), @Url.RouteUrl(comment.CommentedOnContentItemMetadata.DisplayRouteValues) + "#comment-" + comment.Id)</time>+@T("said") <time datetime="@comment.CommentDateUtc.GetValueOrDefault().ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ")">@Html.Link((string)Display.DateTimeRelative(dateTimeUtc: comment.CommentDateUtc.GetValueOrDefault()).ToString(), @Url.RouteUrl(comment.CommentedOnContentItemMetadata.DisplayRouteValues) + "#comment-" + comment.Id)</time>


Update ShapeMetadata.cs (#5520)

Update ShapeMetadata.cs (#5520)

--- src/OrchardCore/OrchardCore.DisplayManagement/Shapes/ShapeMetadata.cs
+++ src/OrchardCore/OrchardCore.DisplayManagement/Shapes/ShapeMetadata.cs
@@ -34,7 +34,6 @@
         public AlternatesCollection Alternates { get; set; }
         public bool IsCached => _cacheContext != null;
         public IHtmlContent ChildContent { get; set; }
-        public bool UseDynamicBinding { get; set; }

         /// <summary>
         /// Event use for a specific shape instance.


Prefix string values with 'N' only if UseUnicode == true

--- src/ServiceStack.OrmLite.SqlServer/SqlServerOrmLiteDialectProvider.cs
+++ src/ServiceStack.OrmLite.SqlServer/SqlServerOrmLiteDialectProvider.cs
@@ -120,7 +120,7 @@
 				var boolValue = (bool)value;
 				return base.GetQuotedValue(boolValue ? 1 : 0, typeof(int));
 			}
-            if(fieldType == typeof(string)) {
+            if(UseUnicode && fieldType == typeof(string)) {
                 return "N'" + EscapeParam(value) + "'";
             }


GitHubGetEventsResponse class should inherit from GitHubListResponse

By inheriting from the GitHubListResponse class, the parsing of the "link" header is now handled in a central place.

--- src/Skybrud.Social.GitHub/Responses/Events/GitHubGetEventsResponse.cs
+++ src/Skybrud.Social.GitHub/Responses/Events/GitHubGetEventsResponse.cs
@@ -1,88 +1,18 @@
 using System;
-using System.Text.RegularExpressions;
 using Skybrud.Essentials.Http;
 using Skybrud.Social.GitHub.Models.Events;
-using Skybrud.Social.GitHub.Models.Issues;

 namespace Skybrud.Social.GitHub.Responses.Events {

     /// <summary>
     /// Class representing the response for getting a list of events.
     /// </summary>
-    public class GitHubGetEventsResponse : GitHubResponse<GitHubEventItem[]> {
-
-        #region Properties
-
-        /// <summary>
-        /// Gets the current page number.
-        /// </summary>
-        public int CurrentPage { get; }
-
-        /// <summary>
-        /// Gets the total number of pages.
-        /// </summary>
-        public int TotalPages { get; }
-
-        /// <summary>
-        /// Gets whether the response represents the first page.
-        /// </summary>
-        public bool IsFirstPage => CurrentPage == 0;
-
-        /// <summary>
-        /// Gets whether the response represents the last page.
-        /// </summary>
-        public bool IsLastPage => CurrentPage >= TotalPages;
-
-        #endregion
+    public class GitHubGetEventsResponse : GitHubListResponse<GitHubEventItem> {

         #region Constructors

         private GitHubGetEventsResponse(IHttpResponse response) : base(response) {
-
-            // Parse the response body
             Body = ParseJsonArray(response.Body, GitHubEventItem.Parse);
-
-            // Get the "link" header from the response
-            string linkHeader = response.Headers["link"];
-
-            // Return now if the header wasn't present
-            if (string.IsNullOrWhiteSpace(linkHeader)) return;
-
-            // Set default values
-            CurrentPage = 1;
-            TotalPages = 1;
-
-            // Match the different URLs using REGEX
-            foreach (Match match in Regex.Matches(linkHeader, "\\<(.+?)\\>; rel=\"([a-z]+)\"")) {
-
-                string url = match.Groups[1].Value;
-                string rel = match.Groups[2].Value;
-
-                // Match the page parameter from the query string
-                Match m2 = Regex.Match(url, "page=([0-9]+)");
-
-                // Skip the URL if a page number wasn't part of the URL
-                if (!m2.Success) continue;
-
-                // Parse the page number
-                int page = int.Parse(m2.Groups[1].Value);
-
-                switch (rel) {
-
-                    case "next":
-                        CurrentPage = page - 1;
-                        break;
-
-                    case "last":
-                        TotalPages = page;
-                        break;
-
-                }
-
-            }
-
-            TotalPages = Math.Max(TotalPages, CurrentPage);
-
         }

         #endregion


Remove dead LazyInitializer file from #12697 (dotnet/coreclr#12767)

* Delete LazyInitializer.cs

* Update LazyInitializer.cs

Signed-off-by: dotnet-bot <03c4cb6107ae99956a7681f2c97ff7104809a2bd@microsoft.com>

--- src/System.Private.CoreLib/shared/System/Threading/LazyInitializer.cs
+++ src/System.Private.CoreLib/shared/System/Threading/LazyInitializer.cs
@@ -158,7 +158,7 @@
         /// <returns>The initialized object.</returns>
         private static T EnsureInitializedCore<T>(ref T target, ref bool initialized, ref object syncLock)
         {
-            // Lazily initialize the lock if necessary and,  then double check if initialization is still required.
+            // Lazily initialize the lock if necessary and then double check if initialization is still required.
             lock (EnsureLockInitialized(ref syncLock))
             {
                 if (!Volatile.Read(ref initialized))
@@ -219,7 +219,7 @@
         /// <returns>The initialized object.</returns>
         private static T EnsureInitializedCore<T>(ref T target, ref bool initialized, ref object syncLock, Func<T> valueFactory)
         {
-            // Lazily initialize the lock if necessary and,  then double check if initialization is still required.
+            // Lazily initialize the lock if necessary and then double check if initialization is still required.
             lock (EnsureLockInitialized(ref syncLock))
             {
                 if (!Volatile.Read(ref initialized))
@@ -258,7 +258,7 @@
         /// <returns>The initialized object.</returns>
         private static T EnsureInitializedCore<T>(ref T target, ref object syncLock, Func<T> valueFactory) where T : class
         {
-            // Lazily initialize the lock if necessary and,  then double check if initialization is still required.
+            // Lazily initialize the lock if necessary and then double check if initialization is still required.
             lock (EnsureLockInitialized(ref syncLock))
             {
                 if (Volatile.Read(ref target) == null)


Fixed bug where files wasn't filtered anyway

--- Sherpa.Library/SiteHierarchy/ContentUploadManager.cs
+++ Sherpa.Library/SiteHierarchy/ContentUploadManager.cs
@@ -76,13 +76,10 @@
             {
                 excludedFileExtensions = contentFolder.ExcludeExtensions.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
             }
-            var files = Directory.GetFiles(configRootFolder, "*", SearchOption.AllDirectories).Where(s =>
-            {
-                var extension = Path.GetExtension(s);
-                return extension != null && !excludedFileExtensions.Contains(extension.ToLower());
-            }).Where(f =>
-                !LastUpload.ContainsKey(contentFolder.FolderName) || new FileInfo(f).LastWriteTimeUtc > LastUpload[contentFolder.FolderName]
-            );
+            var files = Directory.GetFiles(configRootFolder, "*", SearchOption.AllDirectories)
+                .Where(file => !excludedFileExtensions.Contains(Path.GetExtension(file).ToLower())).ToList()
+                .Where(f => !LastUpload.ContainsKey(contentFolder.FolderName) || new FileInfo(f).LastWriteTimeUtc > LastUpload[contentFolder.FolderName]
+            ).ToList();

             int filesUploaded = 0;
             foreach (string filePath in files)