From a9699f0d2fa20ef4c449b32576720e500e64bffd Mon Sep 17 00:00:00 2001 From: SuthiYuvaraj <92777079+SuthiYuvaraj@users.noreply.github.com> Date: Wed, 6 Aug 2025 16:12:58 +0530 Subject: [PATCH 01/13] Update Flex.cs --- src/Core/src/Layouts/Flex.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Core/src/Layouts/Flex.cs b/src/Core/src/Layouts/Flex.cs index 2ecadeccf1af..23ada6d5f8a6 100644 --- a/src/Core/src/Layouts/Flex.cs +++ b/src/Core/src/Layouts/Flex.cs @@ -532,11 +532,17 @@ static void layout_item(Item item, float width, float height, bool inMeasureMode basis *= (layout.vertical ? height : width); child.Frame[layout.frame_size_i] = basis - child.MarginThickness(layout.vertical); } - +#if WINDOWS + // Windows requires tolerance for floating-point precision issues in flex wrapping + // See: https://github.com/dotnet/maui/issues/30957 + const float wrap_tolerance = 0.5f; +#else + const float wrap_tolerance = 0.00f; +#endif float child_size = child.Frame[layout.frame_size_i]; if (layout.wrap) { - if (layout.flex_dim < child_size) + if (layout.flex_dim - wrap_tolerance < child_size) { // Not enough space for this child on this line, layout the // remaining items and move it to a new line. From fb5cc857e331277c825a004d2abc869d645b954a Mon Sep 17 00:00:00 2001 From: SuthiYuvaraj <92777079+SuthiYuvaraj@users.noreply.github.com> Date: Wed, 6 Aug 2025 18:26:51 +0530 Subject: [PATCH 02/13] Update Flex.cs --- src/Core/src/Layouts/Flex.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Core/src/Layouts/Flex.cs b/src/Core/src/Layouts/Flex.cs index 23ada6d5f8a6..3950aa5511d8 100644 --- a/src/Core/src/Layouts/Flex.cs +++ b/src/Core/src/Layouts/Flex.cs @@ -533,16 +533,15 @@ static void layout_item(Item item, float width, float height, bool inMeasureMode child.Frame[layout.frame_size_i] = basis - child.MarginThickness(layout.vertical); } #if WINDOWS - // Windows requires tolerance for floating-point precision issues in flex wrapping - // See: https://github.com/dotnet/maui/issues/30957 - const float wrap_tolerance = 0.5f; + // Windows requires tolerance for floating-point precision issues in flex wrapping + const float wrap_tolerance = 0.1f; #else const float wrap_tolerance = 0.00f; #endif float child_size = child.Frame[layout.frame_size_i]; if (layout.wrap) { - if (layout.flex_dim - wrap_tolerance < child_size) + if (layout.flex_dim + wrap_tolerance < child_size) { // Not enough space for this child on this line, layout the // remaining items and move it to a new line. From eb5deadd63026db61988258afd8d8b671806385e Mon Sep 17 00:00:00 2001 From: SuthiYuvaraj <92777079+SuthiYuvaraj@users.noreply.github.com> Date: Mon, 11 Aug 2025 20:05:53 +0530 Subject: [PATCH 03/13] Testcases added --- .../TestCases.HostApp/Issues/Issue30957.cs | 103 ++++++++++++++++++ .../Tests/Issues/Issue30957.cs | 47 ++++++++ 2 files changed, 150 insertions(+) create mode 100644 src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs create mode 100644 src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs new file mode 100644 index 000000000000..562125ca98ca --- /dev/null +++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs @@ -0,0 +1,103 @@ +using Microsoft.Maui.Layouts; + +namespace Maui.Controls.Sample.Issues +{ + [Issue(IssueTracker.Github, 30957, "FlexLayout Wrap Misalignment with Dynamically-Sized Buttons in .NET MAUI", PlatformAffected.All)] + public class Issue30957 : ContentPage + { + private bool _fontToggled = false; + private FlexLayout _testFlexLayout; + private Label _statusLabel; + + public Issue30957() + { + Title = "Issue30957"; + + var stackLayout = new StackLayout { Padding = new Thickness(20) }; + + // Instructions + var instructionsLabel = new Label + { + Text = "This test validates the Windows tolerance fix for FlexLayout wrapping precision issues. Click toggle to test.", + Margin = new Thickness(0, 0, 0, 20) + }; + stackLayout.Children.Add(instructionsLabel); + + var toggleButton = new Button + { + Text = "Toggle Font", + AutomationId = "ToggleFontButton", + BackgroundColor = Colors.LightBlue, + Margin = new Thickness(0, 0, 0, 10) + }; + toggleButton.Clicked += OnToggleFontClicked; + stackLayout.Children.Add(toggleButton); + + _testFlexLayout = new FlexLayout + { + Direction = FlexDirection.Row, + Wrap = FlexWrap.Wrap, + BackgroundColor = Colors.LightGray, + Padding = new Thickness(10) + }; + + var button1 = new Button + { + Text = "Button 1", + AutomationId = "Button1", + Margin = new Thickness(5), + WidthRequest = 100 + }; + var button2 = new Button + { + Text = "Button 2", + AutomationId = "Button2", + Margin = new Thickness(5), + WidthRequest = 100 + }; + var button3 = new Button + { + Text = "Button 3", + AutomationId = "Button3", + Margin = new Thickness(5), + WidthRequest = 100 + }; + + _testFlexLayout.Children.Add(button1); + _testFlexLayout.Children.Add(button2); + _testFlexLayout.Children.Add(button3); + stackLayout.Children.Add(_testFlexLayout); + + _statusLabel = new Label + { + AutomationId = "StatusLabel", + Text = "Status: Ready to test", + Margin = new Thickness(0, 10, 0, 0), + TextColor = Colors.DarkGreen + }; + stackLayout.Children.Add(_statusLabel); + + Content = stackLayout; + } + + private void OnToggleFontClicked(object sender, EventArgs e) + { + _fontToggled = !_fontToggled; + + foreach (var child in _testFlexLayout.Children) + { + if (child is Button button) + { + button.FontSize = _fontToggled ? 14.1 : 14.0; + + if (_fontToggled) + button.Text = button.Text.Replace("Button", "Btn", StringComparison.Ordinal); + else + button.Text = button.Text.Replace("Btn", "Button", StringComparison.Ordinal); + } + } + + _statusLabel.Text = $"Status: Font toggled {(_fontToggled ? "ON" : "OFF")}"; + } + } +} diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs new file mode 100644 index 000000000000..877a56b9dd00 --- /dev/null +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs @@ -0,0 +1,47 @@ +using NUnit.Framework; +using UITest.Appium; +using UITest.Core; + +namespace Microsoft.Maui.TestCases.Tests.Issues +{ + public class Issue30957 : _IssuesUITest + { + public Issue30957(TestDevice testDevice) : base(testDevice) + { + } + + public override string Issue => "FlexLayout Wrap Misalignment with Dynamically-Sized Buttons in .NET MAUI"; + + [Test] + [Category(UITestCategories.Layout)] + public void FlexLayoutWrappingWithToleranceWorksCorrectly() + { + App.WaitForElement("ToggleFontButton"); + App.WaitForElement("Button1"); + App.WaitForElement("Button2"); + App.WaitForElement("Button3"); + + var button1Initial = App.WaitForElement("Button1").GetRect(); + var button2Initial = App.WaitForElement("Button2").GetRect(); + var button3Initial = App.WaitForElement("Button3").GetRect(); + + Assert.That(button2Initial.X, Is.GreaterThan(button1Initial.X), + "Button2 should be positioned to the right of Button1 initially"); + Assert.That(button3Initial.X, Is.GreaterThan(button2Initial.X), + "Button3 should be positioned to the right of Button2 initially"); + + App.Tap("ToggleFontButton"); + + var button1Final = App.WaitForElement("Button1").GetRect(); + var button2Final = App.WaitForElement("Button2").GetRect(); + var button3Final = App.WaitForElement("Button3").GetRect(); + + Assert.That(button2Final.X, Is.GreaterThan(button1Final.X), + "After font toggle, Button2 should still be to the right of Button1"); + + var statusText = App.WaitForElement("StatusLabel").GetText(); + Assert.That(statusText, Does.Contain("Font toggled"), + "Status should show font was toggled"); + } + } +} From ea29df02f7c6078823d06dee8abf14b9a1aade63 Mon Sep 17 00:00:00 2001 From: SuthiYuvaraj <92777079+SuthiYuvaraj@users.noreply.github.com> Date: Tue, 12 Aug 2025 17:41:30 +0530 Subject: [PATCH 04/13] Update Issue30957.cs --- .../TestCases.HostApp/Issues/Issue30957.cs | 221 ++++++++++-------- 1 file changed, 122 insertions(+), 99 deletions(-) diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs index 562125ca98ca..81e4e0a380d4 100644 --- a/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs +++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs @@ -2,102 +2,125 @@ namespace Maui.Controls.Sample.Issues { - [Issue(IssueTracker.Github, 30957, "FlexLayout Wrap Misalignment with Dynamically-Sized Buttons in .NET MAUI", PlatformAffected.All)] - public class Issue30957 : ContentPage - { - private bool _fontToggled = false; - private FlexLayout _testFlexLayout; - private Label _statusLabel; - - public Issue30957() - { - Title = "Issue30957"; - - var stackLayout = new StackLayout { Padding = new Thickness(20) }; - - // Instructions - var instructionsLabel = new Label - { - Text = "This test validates the Windows tolerance fix for FlexLayout wrapping precision issues. Click toggle to test.", - Margin = new Thickness(0, 0, 0, 20) - }; - stackLayout.Children.Add(instructionsLabel); - - var toggleButton = new Button - { - Text = "Toggle Font", - AutomationId = "ToggleFontButton", - BackgroundColor = Colors.LightBlue, - Margin = new Thickness(0, 0, 0, 10) - }; - toggleButton.Clicked += OnToggleFontClicked; - stackLayout.Children.Add(toggleButton); - - _testFlexLayout = new FlexLayout - { - Direction = FlexDirection.Row, - Wrap = FlexWrap.Wrap, - BackgroundColor = Colors.LightGray, - Padding = new Thickness(10) - }; - - var button1 = new Button - { - Text = "Button 1", - AutomationId = "Button1", - Margin = new Thickness(5), - WidthRequest = 100 - }; - var button2 = new Button - { - Text = "Button 2", - AutomationId = "Button2", - Margin = new Thickness(5), - WidthRequest = 100 - }; - var button3 = new Button - { - Text = "Button 3", - AutomationId = "Button3", - Margin = new Thickness(5), - WidthRequest = 100 - }; - - _testFlexLayout.Children.Add(button1); - _testFlexLayout.Children.Add(button2); - _testFlexLayout.Children.Add(button3); - stackLayout.Children.Add(_testFlexLayout); - - _statusLabel = new Label - { - AutomationId = "StatusLabel", - Text = "Status: Ready to test", - Margin = new Thickness(0, 10, 0, 0), - TextColor = Colors.DarkGreen - }; - stackLayout.Children.Add(_statusLabel); - - Content = stackLayout; - } - - private void OnToggleFontClicked(object sender, EventArgs e) - { - _fontToggled = !_fontToggled; - - foreach (var child in _testFlexLayout.Children) - { - if (child is Button button) - { - button.FontSize = _fontToggled ? 14.1 : 14.0; - - if (_fontToggled) - button.Text = button.Text.Replace("Button", "Btn", StringComparison.Ordinal); - else - button.Text = button.Text.Replace("Btn", "Button", StringComparison.Ordinal); - } - } - - _statusLabel.Text = $"Status: Font toggled {(_fontToggled ? "ON" : "OFF")}"; - } - } -} + [Issue(IssueTracker.Github, 30957, "FlexLayout Wrap Misalignment with Dynamically-Sized Buttons in .NET MAUI", PlatformAffected.All)] + public class Issue30957 : ContentPage + { + private FlexLayout _testFlexLayout; + private Label _statusLabel; + private Button _toggleButton1, _toggleButton2, _toggleButton3; + private bool _isToggled = false; + + public Issue30957() + { + Title = "Issue30957"; + + var stackLayout = new StackLayout { Padding = new Thickness(20) }; + + var instructionsLabel = new Label + { + AutomationId = "Issue30957FirstLabel" + Text = "This reproduces FlexLayout wrapping issue with font family switching. Click 'Toggle Font' to trigger precision issues.", + Margin = new Thickness(0, 0, 0, 20) + }; + stackLayout.Children.Add(instructionsLabel); + + var toggleAllButton = new Button + { + Text = "Toggle Font Family", + AutomationId = "Issue30957ToggleButton", + BackgroundColor = Colors.LightBlue, + Margin = new Thickness(0, 0, 0, 10) + }; + toggleAllButton.Clicked += OnToggleFontClicked; + stackLayout.Children.Add(toggleAllButton); + + var border = new Border + { + Stroke = Colors.Black, + StrokeThickness = 1, + BackgroundColor = Colors.White, + HorizontalOptions = LayoutOptions.Start, + Padding = new Thickness(4) + }; + + _testFlexLayout = new FlexLayout + { + Wrap = FlexWrap.Wrap + }; + + _toggleButton1 = new Button + { + Text = "Button1", + AutomationId = "Issue30957Button1", + BackgroundColor = Colors.White, + FontFamily = "OpenSansRegular", + CornerRadius = 0, + FontSize = 16, + TextColor = Colors.Black + }; + + _toggleButton2 = new Button + { + Text = "Button2", + AutomationId = "Issue30957Button2", + BackgroundColor = Colors.White, + FontFamily = "OpenSansRegular", + CornerRadius = 0, + FontSize = 16, + TextColor = Colors.Black + }; + + _toggleButton3 = new Button + { + Text = "Button3", + AutomationId = "Issue30957Button3", + BackgroundColor = Colors.White, + FontFamily = "OpenSansRegular", + CornerRadius = 0, + FontSize = 16, + TextColor = Colors.Black + }; + + _testFlexLayout.Children.Add(_toggleButton1); + _testFlexLayout.Children.Add(_toggleButton2); + _testFlexLayout.Children.Add(_toggleButton3); + + border.Content = _testFlexLayout; + stackLayout.Children.Add(border); + + _statusLabel = new Label + { + AutomationId = "Issue30957StatusLabel", + Text = "Status: Ready to test - Click 'Toggle Font Family' to trigger precision issue", + Margin = new Thickness(0, 10, 0, 0), + TextColor = Colors.DarkGreen + }; + stackLayout.Children.Add(_statusLabel); + + Content = stackLayout; + } + + private void OnToggleFontClicked(object sender, EventArgs e) + { + _isToggled = !_isToggled; + + string fontFamily = _isToggled ? "OpenSansSemibold" : "OpenSansRegular"; + Color backgroundColor = _isToggled ? Colors.Black : Colors.White; + Color textColor = _isToggled ? Colors.White : Colors.Black; + + _toggleButton1.FontFamily = fontFamily; + _toggleButton1.BackgroundColor = backgroundColor; + _toggleButton1.TextColor = textColor; + + _toggleButton2.FontFamily = fontFamily; + _toggleButton2.BackgroundColor = backgroundColor; + _toggleButton2.TextColor = textColor; + + _toggleButton3.FontFamily = fontFamily; + _toggleButton3.BackgroundColor = backgroundColor; + _toggleButton3.TextColor = textColor; + + _statusLabel.Text = $"Status: Font toggled to {fontFamily} - This triggers precision issue that tolerance fix addresses"; + } + } +} \ No newline at end of file From daf447916800b9f722b0b1dc827b5ce877408322 Mon Sep 17 00:00:00 2001 From: SuthiYuvaraj <92777079+SuthiYuvaraj@users.noreply.github.com> Date: Tue, 12 Aug 2025 18:10:54 +0530 Subject: [PATCH 05/13] Testcases updated --- .../TestCases.HostApp/Issues/Issue30957.cs | 242 +++++++++--------- .../Tests/Issues/Issue30957.cs | 44 +++- 2 files changed, 151 insertions(+), 135 deletions(-) diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs index 81e4e0a380d4..6f9f39cb596f 100644 --- a/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs +++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs @@ -2,125 +2,125 @@ namespace Maui.Controls.Sample.Issues { - [Issue(IssueTracker.Github, 30957, "FlexLayout Wrap Misalignment with Dynamically-Sized Buttons in .NET MAUI", PlatformAffected.All)] - public class Issue30957 : ContentPage - { - private FlexLayout _testFlexLayout; - private Label _statusLabel; - private Button _toggleButton1, _toggleButton2, _toggleButton3; - private bool _isToggled = false; - - public Issue30957() - { - Title = "Issue30957"; - - var stackLayout = new StackLayout { Padding = new Thickness(20) }; - - var instructionsLabel = new Label - { - AutomationId = "Issue30957FirstLabel" - Text = "This reproduces FlexLayout wrapping issue with font family switching. Click 'Toggle Font' to trigger precision issues.", - Margin = new Thickness(0, 0, 0, 20) - }; - stackLayout.Children.Add(instructionsLabel); - - var toggleAllButton = new Button - { - Text = "Toggle Font Family", - AutomationId = "Issue30957ToggleButton", - BackgroundColor = Colors.LightBlue, - Margin = new Thickness(0, 0, 0, 10) - }; - toggleAllButton.Clicked += OnToggleFontClicked; - stackLayout.Children.Add(toggleAllButton); - - var border = new Border - { - Stroke = Colors.Black, - StrokeThickness = 1, - BackgroundColor = Colors.White, - HorizontalOptions = LayoutOptions.Start, - Padding = new Thickness(4) - }; - - _testFlexLayout = new FlexLayout - { - Wrap = FlexWrap.Wrap - }; - - _toggleButton1 = new Button - { - Text = "Button1", - AutomationId = "Issue30957Button1", - BackgroundColor = Colors.White, - FontFamily = "OpenSansRegular", - CornerRadius = 0, - FontSize = 16, - TextColor = Colors.Black - }; - - _toggleButton2 = new Button - { - Text = "Button2", - AutomationId = "Issue30957Button2", - BackgroundColor = Colors.White, - FontFamily = "OpenSansRegular", - CornerRadius = 0, - FontSize = 16, - TextColor = Colors.Black - }; - - _toggleButton3 = new Button - { - Text = "Button3", - AutomationId = "Issue30957Button3", - BackgroundColor = Colors.White, - FontFamily = "OpenSansRegular", - CornerRadius = 0, - FontSize = 16, - TextColor = Colors.Black - }; - - _testFlexLayout.Children.Add(_toggleButton1); - _testFlexLayout.Children.Add(_toggleButton2); - _testFlexLayout.Children.Add(_toggleButton3); - - border.Content = _testFlexLayout; - stackLayout.Children.Add(border); - - _statusLabel = new Label - { - AutomationId = "Issue30957StatusLabel", - Text = "Status: Ready to test - Click 'Toggle Font Family' to trigger precision issue", - Margin = new Thickness(0, 10, 0, 0), - TextColor = Colors.DarkGreen - }; - stackLayout.Children.Add(_statusLabel); - - Content = stackLayout; - } - - private void OnToggleFontClicked(object sender, EventArgs e) - { - _isToggled = !_isToggled; - - string fontFamily = _isToggled ? "OpenSansSemibold" : "OpenSansRegular"; - Color backgroundColor = _isToggled ? Colors.Black : Colors.White; - Color textColor = _isToggled ? Colors.White : Colors.Black; - - _toggleButton1.FontFamily = fontFamily; - _toggleButton1.BackgroundColor = backgroundColor; - _toggleButton1.TextColor = textColor; - - _toggleButton2.FontFamily = fontFamily; - _toggleButton2.BackgroundColor = backgroundColor; - _toggleButton2.TextColor = textColor; - - _toggleButton3.FontFamily = fontFamily; - _toggleButton3.BackgroundColor = backgroundColor; - _toggleButton3.TextColor = textColor; - - _statusLabel.Text = $"Status: Font toggled to {fontFamily} - This triggers precision issue that tolerance fix addresses"; - } - } + [Issue(IssueTracker.Github, 30957, "FlexLayout Wrap Misalignment with Dynamically-Sized Buttons in .NET MAUI", PlatformAffected.All)] + public class Issue30957 : ContentPage + { + private FlexLayout _testFlexLayout; + private Label _statusLabel; + private Button _toggleButton1, _toggleButton2, _toggleButton3; + private bool _isToggled = false; + + public Issue30957() + { + Title = "Issue30957"; + + var stackLayout = new StackLayout { Padding = new Thickness(20) }; + + var instructionsLabel = new Label + { + AutomationId = "Issue30957FirstLabel", + Text = "This reproduces FlexLayout wrapping issue with font family switching. Click 'Toggle Font' to trigger precision issues.", + Margin = new Thickness(0, 0, 0, 20) + }; + stackLayout.Children.Add(instructionsLabel); + + var toggleAllButton = new Button + { + Text = "Toggle Font Family", + AutomationId = "Issue30957ToggleButton", + BackgroundColor = Colors.LightBlue, + Margin = new Thickness(0, 0, 0, 10) + }; + toggleAllButton.Clicked += OnToggleFontClicked; + stackLayout.Children.Add(toggleAllButton); + + var border = new Border + { + Stroke = Colors.Black, + StrokeThickness = 1, + BackgroundColor = Colors.White, + HorizontalOptions = LayoutOptions.Start, + Padding = new Thickness(4) + }; + + _testFlexLayout = new FlexLayout + { + Wrap = FlexWrap.Wrap + }; + + _toggleButton1 = new Button + { + Text = "Button1", + AutomationId = "Issue30957Button1", + BackgroundColor = Colors.White, + FontFamily = "OpenSansRegular", + CornerRadius = 0, + FontSize = 16, + TextColor = Colors.Black + }; + + _toggleButton2 = new Button + { + Text = "Button2", + AutomationId = "Issue30957Button2", + BackgroundColor = Colors.White, + FontFamily = "OpenSansRegular", + CornerRadius = 0, + FontSize = 16, + TextColor = Colors.Black + }; + + _toggleButton3 = new Button + { + Text = "Button3", + AutomationId = "Issue30957Button3", + BackgroundColor = Colors.White, + FontFamily = "OpenSansRegular", + CornerRadius = 0, + FontSize = 16, + TextColor = Colors.Black + }; + + _testFlexLayout.Children.Add(_toggleButton1); + _testFlexLayout.Children.Add(_toggleButton2); + _testFlexLayout.Children.Add(_toggleButton3); + + border.Content = _testFlexLayout; + stackLayout.Children.Add(border); + + _statusLabel = new Label + { + AutomationId = "Issue30957StatusLabel", + Text = "Status: Ready to test - Click 'Toggle Font Family' to trigger precision issue", + Margin = new Thickness(0, 10, 0, 0), + TextColor = Colors.DarkGreen + }; + stackLayout.Children.Add(_statusLabel); + + Content = stackLayout; + } + + private void OnToggleFontClicked(object sender, EventArgs e) + { + _isToggled = !_isToggled; + + string fontFamily = _isToggled ? "OpenSansSemibold" : "OpenSansRegular"; + Color backgroundColor = _isToggled ? Colors.Black : Colors.White; + Color textColor = _isToggled ? Colors.White : Colors.Black; + + _toggleButton1.FontFamily = fontFamily; + _toggleButton1.BackgroundColor = backgroundColor; + _toggleButton1.TextColor = textColor; + + _toggleButton2.FontFamily = fontFamily; + _toggleButton2.BackgroundColor = backgroundColor; + _toggleButton2.TextColor = textColor; + + _toggleButton3.FontFamily = fontFamily; + _toggleButton3.BackgroundColor = backgroundColor; + _toggleButton3.TextColor = textColor; + + _statusLabel.Text = $"Status: Font toggled to {fontFamily} - This triggers precision issue that tolerance fix addresses"; + } + } } \ No newline at end of file diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs index 877a56b9dd00..bc2495ef1595 100644 --- a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs @@ -16,32 +16,48 @@ public Issue30957(TestDevice testDevice) : base(testDevice) [Category(UITestCategories.Layout)] public void FlexLayoutWrappingWithToleranceWorksCorrectly() { - App.WaitForElement("ToggleFontButton"); - App.WaitForElement("Button1"); - App.WaitForElement("Button2"); - App.WaitForElement("Button3"); - var button1Initial = App.WaitForElement("Button1").GetRect(); - var button2Initial = App.WaitForElement("Button2").GetRect(); - var button3Initial = App.WaitForElement("Button3").GetRect(); + App.WaitForElement("Issue30957ToggleButton"); + App.WaitForElement("Issue30957Button1"); + App.WaitForElement("Issue30957Button2"); + App.WaitForElement("Issue30957Button3"); + + var button1Initial = App.WaitForElement("Issue30957Button1").GetRect(); + var button2Initial = App.WaitForElement("Issue30957Button2").GetRect(); + var button3Initial = App.WaitForElement("Issue30957Button3").GetRect(); Assert.That(button2Initial.X, Is.GreaterThan(button1Initial.X), "Button2 should be positioned to the right of Button1 initially"); Assert.That(button3Initial.X, Is.GreaterThan(button2Initial.X), "Button3 should be positioned to the right of Button2 initially"); - App.Tap("ToggleFontButton"); + Assert.That(Math.Abs(button1Initial.Y - button2Initial.Y), Is.LessThan(10), + "Button1 and Button2 should be on same row initially"); + Assert.That(Math.Abs(button2Initial.Y - button3Initial.Y), Is.LessThan(10), + "Button2 and Button3 should be on same row initially"); + + + App.Tap("Issue30957ToggleButton"); + + var button1Final = App.WaitForElement("Issue30957Button1").GetRect(); + var button2Final = App.WaitForElement("Issue30957Button2").GetRect(); + var button3Final = App.WaitForElement("Issue30957Button3").GetRect(); - var button1Final = App.WaitForElement("Button1").GetRect(); - var button2Final = App.WaitForElement("Button2").GetRect(); - var button3Final = App.WaitForElement("Button3").GetRect(); + Assert.That(Math.Abs(button1Final.Y - button2Final.Y), Is.LessThan(10), + "CRITICAL: After font change, Button1 and Button2 should STILL be on same row (tolerance fix prevents unwanted wrapping)"); + Assert.That(Math.Abs(button1Final.Y - button3Final.Y), Is.LessThan(10), + "CRITICAL: After font change, Button1 and Button3 should STILL be on same row (tolerance fix prevents unwanted wrapping)"); + Assert.That(Math.Abs(button2Final.Y - button3Final.Y), Is.LessThan(10), + "CRITICAL: After font change, Button2 and Button3 should STILL be on same row (tolerance fix prevents unwanted wrapping)"); Assert.That(button2Final.X, Is.GreaterThan(button1Final.X), - "After font toggle, Button2 should still be to the right of Button1"); + "After font change, Button2 should still be to the right of Button1"); + Assert.That(button3Final.X, Is.GreaterThan(button2Final.X), + "After font change, Button3 should still be to the right of Button2"); - var statusText = App.WaitForElement("StatusLabel").GetText(); + var statusText = App.WaitForElement("Issue30957StatusLabel").GetText(); Assert.That(statusText, Does.Contain("Font toggled"), "Status should show font was toggled"); } } -} +} \ No newline at end of file From 0aafc4b28c99dfdda7742fe3bb94f46427c677b1 Mon Sep 17 00:00:00 2001 From: SuthiYuvaraj <92777079+SuthiYuvaraj@users.noreply.github.com> Date: Wed, 13 Aug 2025 16:39:18 +0530 Subject: [PATCH 06/13] Testcase changes --- .../tests/TestCases.HostApp/Issues/Issue30957.cs | 10 +++++----- .../TestCases.Shared.Tests/Tests/Issues/Issue30957.cs | 3 --- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs index 6f9f39cb596f..3a41d07e4f0f 100644 --- a/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs +++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs @@ -5,10 +5,10 @@ namespace Maui.Controls.Sample.Issues [Issue(IssueTracker.Github, 30957, "FlexLayout Wrap Misalignment with Dynamically-Sized Buttons in .NET MAUI", PlatformAffected.All)] public class Issue30957 : ContentPage { - private FlexLayout _testFlexLayout; - private Label _statusLabel; - private Button _toggleButton1, _toggleButton2, _toggleButton3; - private bool _isToggled = false; + FlexLayout _testFlexLayout; + Label _statusLabel; + Button _toggleButton1, _toggleButton2, _toggleButton3; + bool _isToggled = false; public Issue30957() { @@ -100,7 +100,7 @@ public Issue30957() Content = stackLayout; } - private void OnToggleFontClicked(object sender, EventArgs e) + void OnToggleFontClicked(object sender, EventArgs e) { _isToggled = !_isToggled; diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs index bc2495ef1595..578976bca467 100644 --- a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs @@ -18,9 +18,6 @@ public void FlexLayoutWrappingWithToleranceWorksCorrectly() { App.WaitForElement("Issue30957ToggleButton"); - App.WaitForElement("Issue30957Button1"); - App.WaitForElement("Issue30957Button2"); - App.WaitForElement("Issue30957Button3"); var button1Initial = App.WaitForElement("Issue30957Button1").GetRect(); var button2Initial = App.WaitForElement("Issue30957Button2").GetRect(); From a7885aa7f8696e346fda5eb78fedba03216c2946 Mon Sep 17 00:00:00 2001 From: SuthiYuvaraj <92777079+SuthiYuvaraj@users.noreply.github.com> Date: Thu, 21 Aug 2025 18:03:23 +0530 Subject: [PATCH 07/13] Update Issue30957.cs --- .../Tests/Issues/Issue30957.cs | 52 ++++++++----------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs index 578976bca467..36a0e7e5d548 100644 --- a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs @@ -19,42 +19,34 @@ public void FlexLayoutWrappingWithToleranceWorksCorrectly() App.WaitForElement("Issue30957ToggleButton"); - var button1Initial = App.WaitForElement("Issue30957Button1").GetRect(); - var button2Initial = App.WaitForElement("Issue30957Button2").GetRect(); - var button3Initial = App.WaitForElement("Issue30957Button3").GetRect(); - - Assert.That(button2Initial.X, Is.GreaterThan(button1Initial.X), - "Button2 should be positioned to the right of Button1 initially"); - Assert.That(button3Initial.X, Is.GreaterThan(button2Initial.X), - "Button3 should be positioned to the right of Button2 initially"); - - Assert.That(Math.Abs(button1Initial.Y - button2Initial.Y), Is.LessThan(10), - "Button1 and Button2 should be on same row initially"); - Assert.That(Math.Abs(button2Initial.Y - button3Initial.Y), Is.LessThan(10), - "Button2 and Button3 should be on same row initially"); - + var buttonRectsInitial = new[] { + App.WaitForElement("Issue30957Button1").GetRect(), + App.WaitForElement("Issue30957Button2").GetRect(), + App.WaitForElement("Issue30957Button3").GetRect() + }; + + for (int i = 0; i < buttonRectsInitial.Length - 1; i++) + { + Assert.That(buttonRectsInitial[i+1].X, Is.GreaterThan(buttonRectsInitial[i].X), $"Button{i+2} should be right of Button{i+1} (initial)"); + Assert.That(Math.Abs(buttonRectsInitial[i].Y - buttonRectsInitial[i+1].Y), Is.LessThan(10), $"Button{i+1} and Button{i+2} should be on the same row (initial)"); + } App.Tap("Issue30957ToggleButton"); - var button1Final = App.WaitForElement("Issue30957Button1").GetRect(); - var button2Final = App.WaitForElement("Issue30957Button2").GetRect(); - var button3Final = App.WaitForElement("Issue30957Button3").GetRect(); - - Assert.That(Math.Abs(button1Final.Y - button2Final.Y), Is.LessThan(10), - "CRITICAL: After font change, Button1 and Button2 should STILL be on same row (tolerance fix prevents unwanted wrapping)"); - Assert.That(Math.Abs(button1Final.Y - button3Final.Y), Is.LessThan(10), - "CRITICAL: After font change, Button1 and Button3 should STILL be on same row (tolerance fix prevents unwanted wrapping)"); - Assert.That(Math.Abs(button2Final.Y - button3Final.Y), Is.LessThan(10), - "CRITICAL: After font change, Button2 and Button3 should STILL be on same row (tolerance fix prevents unwanted wrapping)"); + var buttonRectsFinal = new[] { + App.WaitForElement("Issue30957Button1").GetRect(), + App.WaitForElement("Issue30957Button2").GetRect(), + App.WaitForElement("Issue30957Button3").GetRect() + }; - Assert.That(button2Final.X, Is.GreaterThan(button1Final.X), - "After font change, Button2 should still be to the right of Button1"); - Assert.That(button3Final.X, Is.GreaterThan(button2Final.X), - "After font change, Button3 should still be to the right of Button2"); + for (int i = 0; i < buttonRectsFinal.Length - 1; i++) + { + Assert.That(Math.Abs(buttonRectsFinal[i].Y - buttonRectsFinal[i+1].Y), Is.LessThan(10), $"Button{i+1} and Button{i+2} should remain on the same row after font change"); + Assert.That(buttonRectsFinal[i+1].X, Is.GreaterThan(buttonRectsFinal[i].X), $"Button{i+2} should be right of Button{i+1} after font change"); + } var statusText = App.WaitForElement("Issue30957StatusLabel").GetText(); - Assert.That(statusText, Does.Contain("Font toggled"), - "Status should show font was toggled"); + Assert.That(statusText, Does.Contain("Font toggled"), "Status label should indicate font was toggled"); } } } \ No newline at end of file From 8e476405908174c887efc7fb881fb1405a010e18 Mon Sep 17 00:00:00 2001 From: SuthiYuvaraj <92777079+SuthiYuvaraj@users.noreply.github.com> Date: Tue, 26 Aug 2025 13:30:03 +0530 Subject: [PATCH 08/13] Update Flex.cs --- src/Core/src/Layouts/Flex.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Core/src/Layouts/Flex.cs b/src/Core/src/Layouts/Flex.cs index 3950aa5511d8..d0a0e4a4fee7 100644 --- a/src/Core/src/Layouts/Flex.cs +++ b/src/Core/src/Layouts/Flex.cs @@ -532,16 +532,16 @@ static void layout_item(Item item, float width, float height, bool inMeasureMode basis *= (layout.vertical ? height : width); child.Frame[layout.frame_size_i] = basis - child.MarginThickness(layout.vertical); } + + float flex_tolerance = layout.flex_dim; #if WINDOWS // Windows requires tolerance for floating-point precision issues in flex wrapping - const float wrap_tolerance = 0.1f; -#else - const float wrap_tolerance = 0.00f; + flex_tolerance += 0.1f; #endif float child_size = child.Frame[layout.frame_size_i]; if (layout.wrap) { - if (layout.flex_dim + wrap_tolerance < child_size) + if (flex_tolerance < child_size) { // Not enough space for this child on this line, layout the // remaining items and move it to a new line. From d183cca0cc250339be47b56ca8e0ab0375e557f4 Mon Sep 17 00:00:00 2001 From: SuthiYuvaraj <92777079+SuthiYuvaraj@users.noreply.github.com> Date: Fri, 24 Oct 2025 13:13:43 +0530 Subject: [PATCH 09/13] Testcases changes --- ...outWrappingWithToleranceWorksCorrectly.png | Bin 0 -> 61211 bytes .../Tests/Issues/Issue30957.cs | 32 +++--------------- ...outWrappingWithToleranceWorksCorrectly.png | Bin 0 -> 70395 bytes 3 files changed, 4 insertions(+), 28 deletions(-) create mode 100644 src/Controls/tests/TestCases.Android.Tests/snapshots/android/FlexLayoutWrappingWithToleranceWorksCorrectly.png create mode 100644 src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/FlexLayoutWrappingWithToleranceWorksCorrectly.png diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/FlexLayoutWrappingWithToleranceWorksCorrectly.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/FlexLayoutWrappingWithToleranceWorksCorrectly.png new file mode 100644 index 0000000000000000000000000000000000000000..72bd847bc140420b99ebce0d023cc05a72dbffc5 GIT binary patch literal 61211 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 BcU1rY literal 0 HcmV?d00001 diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs index 36a0e7e5d548..2ed64ed5045e 100644 --- a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs @@ -18,35 +18,11 @@ public void FlexLayoutWrappingWithToleranceWorksCorrectly() { App.WaitForElement("Issue30957ToggleButton"); - - var buttonRectsInitial = new[] { - App.WaitForElement("Issue30957Button1").GetRect(), - App.WaitForElement("Issue30957Button2").GetRect(), - App.WaitForElement("Issue30957Button3").GetRect() - }; - - for (int i = 0; i < buttonRectsInitial.Length - 1; i++) - { - Assert.That(buttonRectsInitial[i+1].X, Is.GreaterThan(buttonRectsInitial[i].X), $"Button{i+2} should be right of Button{i+1} (initial)"); - Assert.That(Math.Abs(buttonRectsInitial[i].Y - buttonRectsInitial[i+1].Y), Is.LessThan(10), $"Button{i+1} and Button{i+2} should be on the same row (initial)"); - } - App.Tap("Issue30957ToggleButton"); - - var buttonRectsFinal = new[] { - App.WaitForElement("Issue30957Button1").GetRect(), - App.WaitForElement("Issue30957Button2").GetRect(), - App.WaitForElement("Issue30957Button3").GetRect() - }; - - for (int i = 0; i < buttonRectsFinal.Length - 1; i++) - { - Assert.That(Math.Abs(buttonRectsFinal[i].Y - buttonRectsFinal[i+1].Y), Is.LessThan(10), $"Button{i+1} and Button{i+2} should remain on the same row after font change"); - Assert.That(buttonRectsFinal[i+1].X, Is.GreaterThan(buttonRectsFinal[i].X), $"Button{i+2} should be right of Button{i+1} after font change"); - } - - var statusText = App.WaitForElement("Issue30957StatusLabel").GetText(); - Assert.That(statusText, Does.Contain("Font toggled"), "Status label should indicate font was toggled"); + App.WaitForElement("Issue30957Button1"); + App.WaitForElement("Issue30957Button2"); + App.WaitForElement("Issue30957Button3"); + VerifyScreenshot(); } } } \ No newline at end of file diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/FlexLayoutWrappingWithToleranceWorksCorrectly.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/FlexLayoutWrappingWithToleranceWorksCorrectly.png new file mode 100644 index 0000000000000000000000000000000000000000..d8724306afd457fcdca9b7cc4cb9757aefc8517c GIT binary patch literal 70395 zcmeFZWmuK%x-P8K4n##oK|rOXrKL>}Dd`TSTe`t61eBCkN$Kto6_6058x$Op0|e=E zpW~f#uDRw~dwoB?ee8eR_c-7cVKAQix$o;b>w2Evke4FcOSN~)mMvt`*RCjS*|Obe z%a+~KyZ?r-e2m_$flsFluPMoG+2YQ$Wy_rhTehs?OLxY$Y;iibWy^%YmMy}swrrui z9aW+zihtO7OGfI-mOrHbUY92Y;VZiwrRA>f8sB?-7xUI<

L;r{z`l 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 XzCPh4fk?bzgVjm9?< Date: Mon, 12 Jan 2026 10:45:12 +0530 Subject: [PATCH 10/13] Update Flex.cs --- src/Core/src/Layouts/Flex.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Core/src/Layouts/Flex.cs b/src/Core/src/Layouts/Flex.cs index d0a0e4a4fee7..8c96ca040991 100644 --- a/src/Core/src/Layouts/Flex.cs +++ b/src/Core/src/Layouts/Flex.cs @@ -534,10 +534,10 @@ static void layout_item(Item item, float width, float height, bool inMeasureMode } float flex_tolerance = layout.flex_dim; -#if WINDOWS - // Windows requires tolerance for floating-point precision issues in flex wrapping + + // Minimum tolerance for floating-point precision issues in flex wrapping flex_tolerance += 0.1f; -#endif + float child_size = child.Frame[layout.frame_size_i]; if (layout.wrap) { From 52ffd1d16b5880d1c40d4c9899ac1c25a57914d6 Mon Sep 17 00:00:00 2001 From: SuthiYuvaraj <92777079+SuthiYuvaraj@users.noreply.github.com> Date: Mon, 16 Feb 2026 15:24:51 +0530 Subject: [PATCH 11/13] Update Flex.cs --- src/Core/src/Layouts/Flex.cs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/Core/src/Layouts/Flex.cs b/src/Core/src/Layouts/Flex.cs index 8c96ca040991..e8769d393154 100644 --- a/src/Core/src/Layouts/Flex.cs +++ b/src/Core/src/Layouts/Flex.cs @@ -373,6 +373,15 @@ public int Order /// The default value for this property is NoWrap. public Wrap Wrap { get; set; } = Wrap.NoWrap; + + ///

+ /// A small tolerance value used to account for floating-point precision errors + /// when determining whether a child item fits on the current line during flex wrapping. + /// Without this tolerance, items that should fit may be incorrectly wrapped to a new line + /// due to minor rounding discrepancies in size calculations. + /// + private const float FlexWrapTolerance = 0.1f; + /// /// Initializes a new instance of the class. /// @@ -533,10 +542,13 @@ static void layout_item(Item item, float width, float height, bool inMeasureMode child.Frame[layout.frame_size_i] = basis - child.MarginThickness(layout.vertical); } - float flex_tolerance = layout.flex_dim; - // Minimum tolerance for floating-point precision issues in flex wrapping - flex_tolerance += 0.1f; + // The issue was originally reported on Windows and related to device + // density or scaling factor. In a few scenarios, the same issue has also + // been reproduced on Android due to device density variations. The tolerance value + // is applied unconditionally across all platforms as a safer fix, since it has no + // adverse effects on layout behavior.Hence, minimum tolerance for floating-point precision issues in flex wrapping + float flex_tolerance = layout.flex_dim + FlexWrapTolerance; float child_size = child.Frame[layout.frame_size_i]; if (layout.wrap) From 243f142ed17cd3085a7ef0972409d72aa0a7113b Mon Sep 17 00:00:00 2001 From: SuthiYuvaraj <92777079+SuthiYuvaraj@users.noreply.github.com> Date: Fri, 20 Feb 2026 10:06:35 +0530 Subject: [PATCH 12/13] commit for review --- ...outWrappingWithToleranceWorksCorrectly.png | Bin 61211 -> 0 bytes .../Tests/Issues/Issue30957.cs | 43 ++++++++++-------- ...outWrappingWithToleranceWorksCorrectly.png | Bin 70395 -> 0 bytes src/Core/src/Layouts/Flex.cs | 22 ++++----- 4 files changed, 36 insertions(+), 29 deletions(-) delete mode 100644 src/Controls/tests/TestCases.Android.Tests/snapshots/android/FlexLayoutWrappingWithToleranceWorksCorrectly.png delete mode 100644 src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/FlexLayoutWrappingWithToleranceWorksCorrectly.png diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/FlexLayoutWrappingWithToleranceWorksCorrectly.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/FlexLayoutWrappingWithToleranceWorksCorrectly.png deleted file mode 100644 index 72bd847bc140420b99ebce0d023cc05a72dbffc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61211 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
tAoE$RIL;^HOy1QJ4jAg)x3{VN+SoDWB z8MK=qk~Y%#M@L&{Pp`%{fIx^8#I`mq^M*#iIjhtRSMoGe^3hpu+Pmb*Go}=^vm=hU zU0=XTRZ*vb>m?+~fVih!I>F}`okSA!lMJDyX_r3BK=Z9Tn668_X~WpbJ`v;k&^ z4~$62<3`;6f@}5zYqyFn6w6xsmt?Liugz~$)jLlM>rG#&@G}t(% zm>{bTVwlT~%ah#KwX60&ECAjIFsA-ro+bny+fDaZ8s*)43Zow|_?HSQr8at#rcbtt zY|ntZLYh!5AD>DPypF>>+M!dBk!S<2*Er(T z(J@CFC&Fxy<8F*-m3=>OK{5S%rd1JJKK2fA(!kVgm*y7P*9yd}+Z=VE%>HLktTjCD zXgfLHE&Ogxb`v8rc>s>lbr^< z9>m`+8TrO^aT1$l}N8lGn*VJ}{Ez-(DC4L{QsKg@b_Ue%g>9 zRSUzOfve*nIgAyX?aI+kEwoj0(FZbhF)U%@>q_2F(~3JkC7$+7QOe8N?8yoEJRnfP z)m&!)ZH-I$(Qc`B7`_UTUHfK$11f`xzqXn$4bspkGNlqJ2cx>k*^itG>GW)8?g;;F zoDvIN2lg%qar2NdlZ9m!YvmgO0ReHAfxTsztQ^Z7vz<57s&CQIFgHCtx9`aVf6nvgYdR_$ z<}=(Br3Xmik{mlEg@js9Jy-z#zt&B#^j9b&Nkc;em0IErZb&d7oKvb~ZyL~6d~A)m zASg&&@d3t@BD;vVJ!ie3`Qo?yFuI?3&rU%qhPoB+ROOeTwV&UIQs)xiNKm_oOQP8iYTfc71*&WB5Dj zVchd>0~7I?{Xg7Pd*%H*0b?>@olR#(-1i7?Z^Ur3?O$56ODi+f(Mg7`M}V{nM@=ms z7080hB@I|v^smg9jb({H)Sqw;p5Wt~@1hO;>Uot~Qqo;AGI|T<(!qgUDNsd(7X10# z^DX}SyI6txL>hv;3TLWv`$9I3Ha=eHK#??;;N#0`>_5S_hr3sS1+nCCt{|S}4T_6G zWWVkDmL+*iOa?kBTV(KH4!UL1;0xlvS%y%={@w4+iHNi>h*A-U!iQFX?a443IoBs4t?3n5Cjh|*QsEShJ!LW*E#OuJ_85fh_aNgmt&pM7^cHW5tZHnB z5n%^x=nS;(yQzmnv>NTi!36&_4>$zDI7_2B#OaC{FbtX-8^>q*?qEC@g|sJLd#s9&0A`_9 zv{oq#YOBorcM((it6bv^Re}vk5%vyGaIe|#FTCW-g<2Zm3M2Nw-Hb!NB>}M|cK6F} zP#!XXWCARRoQJVmC&{dM(Gq4s-^LElsGt5yV_41qXf_R~s7aP2^3 zf{rZ+)Ujj?Jm>&An_Ex`d3ks=fg3|C9Ck1~fwYL{I5~A;Fdq?Zpv2dX0JRXySa&k7 zyldkM@Vn4E=>l^;usP+9nDs%{%YFWQA28cIa&lGVgZ>?JvXcW_ODOXm0LftU^-&%I zQl#KPkMPjBJg;SkNlLjs_@59-5F7%Xphm$mApWQDX6R#0;h7+^L^;2Rw657JP=FB6 z6=?L8a}9h5d*&r3Nx+-_pWRW+!vAnbxrB65J7GGt8qD$VC=F!d5izl_MA(yyY}%5Q z08)XyIt+CGLZ5Xvb6QDy`b8Mn<7)}%;Qsr7ExYgG{pSHIE;IZ;nYapxq`Q3cwF4wI zbm61&djT%VCt&yaieWPBU$(11W~BbR?MlC-?4HGHv9p{{>#&0LeuC7lgJ29817gfp(f-A8+IE7jH2$iO;hg4E9*DaBBdxuvTW_+gL%JcM5bSqgwMGUMJz z{Qg!#8>-{ds-66nfCfy@lu;v%7l0B|4n>p!7_S|Jndzl5-z7wZo+7L}AZNd}M9OPv zq7~*xB~ARm^-%^@qWrBxYr`Dv)ubmUJg5M1shfEW?qQSlHqdG;;f&jaAb}4RU_NN>)grOmSdj7QF?2z811$RSwv^+W8o9AdVtVDI=|A zq<)y8e4u{3WNUt-_u+T_KvD=&^()HUW`D{95++cv&=Pil*r6u#RPr7$&#+sa!wRGO z5D-1rPXeAe3!ddct3E6z8l=&}3)6L=g_GdSSH#*${D;?tlJ&ROML<8kvbl`~j6dO! ze|ih;f)s)~R;6lz3|fQn(|2Hui+-PjTNejEO;fxS>68>#c+e@K>jN9ZD5Nm~i&DGj z4aNUrhoQemwsr=H3FkTqk#0bUM-&AMo40Uo6++l^pfcZrw8iFz4~D%1y+9Pkao|B2 zeU2K}H%xJW;eQYGQX4?E0$vh)E-Jt>`1TCop2Pd0N6i5`#I`Y#pUv!RK0L4lKCK2L zlUcZndJ!-WO=S76?x@RXaBv}S1GlTxXez@(jZ>kK2L9mIM($N=g4}$v2m<{$NkqZZCcD)xh;CT)Rh}v9GjAL1{m@Z#4yQQo=M_$O@f}8Ff%4h*@2}opE zwUeX2_WpL}l#{W9I#zb}{=2S{mo9yeUj3>MZvt)CdrPKLjfI-w0$Bi(Zovbuzi$tO z(i1T7*|W6KL>sbA0Zn~l({!sDIkx%}w~=r-_QxMP=dh1;0o{&Up6UJc**mx(G{V!a zvj|}*-@Jjbh(jvNo&UPj6Cd-_=_pR+6lBa>e;(_l?k)~SpZ7I0Qdy0BRE`-AnjjtB z);0fKn_b9r8-Sg)gPD4m#GY`iL}D5y#A`o}m`wXuLEFKz?Z187ZwK8>i0|^t180kfTARM$Uj=aSudDUKgLMafp|!PR``y-( zDm)+uvftSZi<578v{QFWD$)6$QTXR`;$V?~e~~#q{pI3$@GoNz*p`s5PfPnA{{DvU zf8O-}@DjMd)7-W?e%N-^zch-^%GLMu38TfDIPaCz{JpsbU(fRNp3Y6am?r%5eR#~N zq;E4@t;L@~I$f`k*&-Z_kTlVfzxw;}f-R0$xTwiBc0c`}T;;A=UT3E52yS?G!Jdy- z+tAcJG3@u#3a?(}QdG3A{c->N&1X}uSb>pDe_-7<9F~%4@4QEn=l9>-trI9>;v%Ab zL;Ty(Ho>0{_;@)>en+8ya_@zxq7xB&Bu~p8`?w?6hl$sdf6wpF9Jas&^}4?kZm9>P z4-aQ6iN%y8gL&%rKb{$770A$foF&mx|H0%I{S|e+4q;>DiIH@4Y!9=j1c{C(_x*=V zFg}UM^B(EwuC^SgSs#X96HY?yk=+0LwcR!7 zwFYHP`JIcIw$=w0a#wY4dPIl5KNo0W6%DqiP_7{5VBP4XWt-C5HQ}2d!H9Cwq~E=ldMoidREBy8E)jP86EvikuPG5^9cQiK5rfZ`LKb zm-=Fo_*%-JGU|wnE|xG|OJVT(nOt*|SCF&bKp@xVcGA=JR`gseOB%1O*f|~rq2`Bh z5m_JNTp(l!S0S06QOdM&wK3K-j2bt=#aQmXLW_+pH|6-8k)8X-+-k?%tVjfdnvqw5 z!R#A#T`}=`d5zO_SLuFV{M7_V;Sr>O{*`ldbnE;6?O~tnus&5UUhUJ@)5@l=Rp6DB zRy{g+*Vfi8E4Mx+w3q&bUPtD8f|dF4K-J*R*DKaF@=y5ANvj6sTI!<8T#L%g_9Qg_ zyv!q`**eHCv}tZ3R(6~GqZrV4@99*{dMD;nEE(O;A3m*r_iWg*Q?$&LP-dpsX!j?u zVJGUu_=FTrJ81$H?$G1+&LXz;?*3Nh*ds|_FQ%QV{?c)&*p}H;a(QglTFQF#*TPMC zU+jbT@xzY77dKP3pE zwnw47PXi>v<5{y7x-ZsX!$)EjqMCI&$2>fPq*14jvZuaL5@J5ilw&<&RhL)xzu0^8 zXsG-De^`56Eh?4ll}ZSeHQUrxxDc|-T1i64o@J<1%36eMP1*O!zEcSoVlehGBw-k1 zow3ZAncwr>=li?Q@0|Oe`<(lGe)k{uuXC<*m0`T+^?tsd%j^AEK55$Lk-hTsoBwSn zk4`%!b5^#~Ox4nym^R8U9AhhcVya}z9nLr-FD2{N_q_^df)pwF7CoIMc7OeH+{&@I z4T-mg4^BSDl{5ESK|mba-7+m+O|kiE2%zup#Lau%Hgaf2Y5GmpWJYR_lH%PqiBEEm!gGF#Lf9vg(0r-&M=?RpyW z{?(%i#+jVYsV0*u=L&T?T=3I%d#*(2zLxH>Fd$rcw2kA7xEKe=Sd!v7O|G4%-@81s za;cb2O4QMN-q^^GeAxDvnb{r8V$FxwEAQ{uao`Srq@9^HqN#r+-RWlHR67S5#hIiSDJQ*AcLRpP$5rnjMBdK(xdQK?U3~M&-esr ztbZb2clBOv<&8U-mT)aP;`UPl@$jPu;-X@IOTRqr@3qf=_MTb+Y{iJltHinKD^WZt zr)M4-FYaJN=cvJXfa8hYWO}pHb%XpO%b~9HYiEoVjc+-PeCO1D)jwGJctYLvpMX;L zU1z=N-`UaB>rEPg-h0IJTzki(9aC}~hwfWmuT($X;%MZae^>ZhpFm#4bVRqP8*j?; zt$0>3U0tB^rk(PqsJ}Sz|Nb_EU)0VsbrbUC*({M+3K#dL=kMw%c-)tJCaSS-aIXLL zGOvJmp1$3+nAGGu$UQ8|S!#BB73GP%zpALSFZuzc=x*6)5L{h%?^TQrR}JfNk)vu# z^`OAdEass*2XqA9J=|Wwn?zLfD>4t!&I=!KIn~%GBPn4$B?ne%jW*PTNau-+uJ*55|D0~u&28X;-H@gZb0e#-7hZlLq?nVnbq<+XQ<$~edWuu z*PT4IlHZQOz2;5ex34X<%P8sdQcutdjlB7HdI^5O=;imIe!i?B%6)Tljwh%6plJ*^ zr`nU_=CIW4u7-}0I~te$Ikms{+PINjid@P$eFus?mN#50lKi>lZ@-7{W~MSBrWcaW zT_l>B%2$_SD-DE_tFs|RSKkHUr$cb#mjpKq%n2WT_G;h23iZ|`dVNmU@()Gr-HG%X zj}2}_)wgrQIUga{N7ku*#sD2q|E;pMz}2z8sF)Z1D7Uw_@q|i$T9!tMg${;Q+BYoy zDQAc{V|JKz>C)xS-p0Ec`U$I6*)kELJX8vuR_s{BQ?J!@;5%^J#EGlaSG%Bpk%eFkb$D|G#~i}FX$#KxBI z^h+QA+d0@V$x>C5i{pzm=_|}533I>AE~6;8d2j8S&e*)77>=jylzzxr<`?ch`6h7S z#btB9%kN5gzTj7Oj#1*gG2#o<`(^3nR~eE6X1|+}0 zqx9LFuYDsF@m(L}C!BXZpvBk!o+$K~9QG<4$-|k*%H-q>Id6|WRWmepHogXbyUBiI zApNPMD8ofFOKi50N$KaMkR8_A*^PfTi4 zp|ZSw{!f-eZD@&gC&#Z1nSR*j)fyL0H1oI&PrXR2SE(xV^B;W`wp(6h%i8_Wp-WL8 zweLNCKOo=t2js)|;p^KAAu79gD0^@>-yE$WUnV_B%c~-oDsRS)y_l43uJ>L|44oF& z{6a+qdWKxY(sYd7JV!a#HQ^ef#`TYuDv7 z!g5-o-BwYW-QGQMQ0!v|*6KxCo2u2ZS;++tR#fU03cdT{1E@!)-n{(Ya!y6kV9#4! zwU;5SJX3F`@2uHjU*9(9?n)0Ui)dC5hJIjpdMQyWTzbT4XN_OkE{-lX(!#7?C%91i z_K)u0YBtt;-n4}9o{slWa?Y|Z@Sr*0zM5AtkQ6YZqxZ6YbPiVCOQHO#YmX}&8|Bsi zw#|cbnR)9@*Wps+i91@y&g^dKMIGm~yjvpTzDSJl{E3kV{+y#jClUo5;(GmRrWZ*E z79QYb>#-{Mg3%8?8$D|xOHTvNG{TefhQ#C#*$<;~o@K<%c<1q1IX;rj8=5G4lmGpF z;F4J6>6Gm3?)B2gFM@`{&PZQuCN;esU-E0)NZg6fljHc)kgZ=&YY&(>MA=97{@G}v z8^w1Sw?^hm>NxbOT;+mavU(U~`EvPtgwQrWW!l3RLe?2G;Zl)KK`=Af{^fFHK<0s~ zn_5=z$N`;K`Y2y*HJVO`SfTTU%(RYIuD&`=5FEKJAHQVH)NSE-5R6cjM1~KTzvmYi z?~8ckc;mUl!KUg=oXc}EZ-;!-(%Vkmti!aIpg^mRPU2%^-me&#P}sf=wlC{JdP^yG zk{02|HhN78UrfNqmVxX8l)l&cx*6&kywa_`va)2OGsx8PV~)M`JjaQ1R@n|0>gq3? zINOtl^Yy+OZ=QM5+1O<4!K~NY;TBOtSWI~>C%zl<#oKJ_+T(8{XcQse&gX_k#(Iy^ zA`FjuspHOur2lw+e1+P^tlb1fedHwJCzoUep_dr=&)=mNzuYr@c{V^!;+`7Xux50N zofoF=!&^b_j768`GbEQQx)2O0ex@Z3>Jgu;r?fvW!jnL~Zvv5mv1!NcA2;}_WW=^p z#gBKY-7%+cBpTR9#eXA)oRBjX2-H?$};%Bo7#x6?cfCf*&V4H05q9F?W? zF9j^9HuDrFyOduJyz+NEy8^b{x%>-3)9FuN69ex<+ttCFc=$+36g+mNKbt<0VsLwx zJ?*!9jZWR|o@&w#uK7pMo2AP=t@t^}X|uBL?r9CRbF=tj8$7AF&&i5|gS{s}d=JOL zVi+kCn@f+!9L5%fjij>{KDK?vA^r(m#vG{t~+*mH4pL|M0RyR$#S^B|I%0B$u zog8BQR-}ZvmF5r2+$3fHHnWQUFnDL-ZT8{?E5*}l!qInS6;#bVUS_OrFc@vfQ^Da# zpJ>7B*ln@C)L%$R9(lTl;^(k0JfipLEr(1~>C>&8w&Ocrc=XW(R;edpY9{Rq4&TZV zAjY<=lEmFGE|s=C5F+DtOD2c<#*4;c_&NYNABc=u2XZUq<0GY zUq_j^=^!QTFCT>?P@t)m=O(;%R;1h7vGyGBY?+;y-OKH0(Y)6|#f59vS;#M1`wQ<^ zopF{D+iS)W5G^nn?)oQ9N?q5n_T`!H*}0!IUCOB8OLMeeqHRM#AM}u7;F*-;iDZJV z|73z(I7MJ&NzN935)BR89e?`Fb;a0&LrZ6}3v+G}LM3z4%U6bOzzE@>=azAH{|%WB zej@6Mv4dabqT&Z0K&SVomvAeBMgvoyoe&&zl;KeSUH!QebPpk9dASN|R-A6k4B zMM8B{a7~tFa%e!^lUy&_w}oRagKc?o3&$2i>#^+pEnyJ8R~rwf9i4a>#AQ0xo1Z$X zNU6D*<0qAQP@>YT04k`?@i!me9k`Fm$#(7e)FWoxEAM;s&1WQ{3!J-Na&gN@%GTop z+^UFBUb~*|jm`Y368uyuGOy1Y2KV=kpYH6rm}z>2|LO(77S`TaWW@%1*AMtR!70b= zBZo2wVMjQau}%4&y}L=Fk)Sig7urVVgG7-1ThD)M$|UUw#}#gVmkJF1HN878By?-a zcKAZi-BYm#{|s~cC6VzDow#}t(v4{Mq2^UdXeT%E7Z1RgI=lQs#+JCI7wgS9&;W_c z#PLS@VN^%_eV_K*p=ZkWQ<|f9o0tfhiZ^K}#tIUa6ZM1J3t*bX4~jpHJ96|>@B7_q z0g3g{KgaI4bw&K(H~yZ~xqY@zx+|h=E=1UDDq6GL!r_DnD49Ma+&Y!8qFP7=J ztp}ZbBe$Gv&70ALOjZGz%*b(Kehv9u#dKypBOJI4_AEnLVN1^-h%w&ff z?BLkVa|d(4k!QZiY3DVr)QB;qnpP;<9Qki2FP`lf%Kb^&znx>ZHR7`|*h&5RXW)4E zem6zgqA*d{PyhFU8#m2=*c%3a$jM!4U*(_@KR-X7(NezeFS2`$SE{nY{ewW?1gZ-M zhlOUir{kjlZK+Tgc&#o6Jb{}r`_QW{mpAc<;M7eBqT=YgGGBy`>k~WXOdUQ_ml;yQwX|f}>7sl|hUUBsYc5>|2L5^n1ks3{$7L&OwtPfiln*Mh%szDVz zO~`d}cOWE$InLew47qpLN1x`bGY{^$Gk8Mb@NYN>IY-;ZF~|XSAx|j$5XF;OhSdjN zMHtx&+gB2Mh9ERmZMtWiMCu0xpL`%cFmIq|-iL#}wE8U^wSPnIzpV|o)NkS5>tDht zy!_l5uqtXVLfXgQ@LF|<<+&Q@+ocSYNSf8DaHtseb*0a$4`dl`$mKx;8={r_Sat`; zPg$@s@m@nqf1T{RruJ0#KUODKDJ!^*SC2z{V?&#!GM`~JM}Ojp;u_Eh6FDgJ|g{?we;+YZ0u z7dS+^_n)_tiB1!SjQ;n>m~k$^0KG|viTEhjGvUTROV(uwr&1lqlle*a*25bq-f#%E z+XmVC<*Aq8xM1i1JaWD6?)m)wK3$W)?~yt_^oaciq&JK_Fw%0E;FxQDhjT;iN3DwqDaqM{=tma!F6#jK4WT*=K6-&JbF|wj1GlTDPbv zjjXYb{QPsp9G`N6p1b||>y>~0fA@UB{v+2g-2*<%AI3&Q=_pAILC!zm7Go{WeA{@|+ zF2d6bdfgtbvj{sHq#|wt9uB-0@_@n!%I09WvyEN{-vxvYM3xBthZuhVTWM>`d5$Ym z2Y>F~(!io&y;eHpeQG|mPa43F!$WFM#JGo0t`o#&i~#`dFv;r43wVZ0jl~A2A$rYc zbrRD7X@5l|$0jXs)dr!$)YA%F9YFL1IG+F1uuYAO9suN#J|V=;23394u2xEXHil{H z1fBnKJ3O=Po@WDtuN#CasYzp->OkY?^mO0CG3p+YouM6HeWofVCZ>)Re%gYi3=pZh z&Mctqtt|wx{e8^M&A+S#W9pgbfzi)|r<+yn?d=g078VwKi=MPKp;>$O<_6&H7hE1b zq|(i>)^)=wAY%F?tEPc@6UCUuxdyKAVafKuFlJ<-m=0g?Bk@A6pn+3!rYc_2YM2a( z`zxqgFfBnS7pT`;5P1>UKmCCI-4+*Tv-yjg_u}2>MFC^zwHZ*fQ)O75I}UJPpwJ0Q zSXCPVCGDy1f%EFj(kzhBu>yrChqX0eWFj6L@WdYxDq#b);ihZ-MkdI>w7tP$ZeE3N z24)W;-$`Lv{}(YC#57Kx{JQQBEY^AubOOOaHBRNlD<5MxIY>LVL>@#WRO&z!oWc@3 zb}SPlI1oZF$dAj(e)e#8r+(Wjg_t*NfhXgpHU+>^;cMqqp}sNQUoaZjSqP*APvEf3 z02H$iXl;|81`(9!be>__3Y*!$w*Sioks5RD zVlx`pcz}Tjkcgy;Y|JMsRM2V(CgB+$z~ZE87oQ<|BnTd(c?>Ade<2i9`sOqWAZRBw z5ixTbAP#51^=LoUg@dE|FiG-seGkS)e`5$2*iW&Ca8sO1WJs}>rM3{F0Ig$aUP~z? z5^zJb=~fZUT}$>PFe}O7YB$D9{>y&VSygQ#IZMVR)JHd4fI&i zAiypX0s6Chy`CD6gh&nspe*wcRJJxCenvzVHXgIlBo%n44Fhg0y8=*tD--)cp5ma` z`?KYkYA|m=;3Ysl9Hy=TaPwrB<~8|m-+uI!=j3RD+*QADlyWNQZKa?f*fp;U>7yt! zpF#u;K;x@u6M}RGFnkNk(jck%8Q~e7*HBlV%}jEE=U^ZA_Uic~;5MCL7b%;1OMvR! zgG*tpH6TKfJnaab4ro2w>clyoNFMx2n*L)<;qKysctS}bjBynBB>-38x)s=6(EG4~ zM|-To7{aqzb(SFimN{tyVh7gf`6g}~840~)g^OJ^TcvKID0Z+}GbaK3l}W&X3}d48 zEdYuqqJjcH`oO@n!+LaK8YDag@a}+h4k07vF#uR@UIqqp8Keei@F4;~>DJa4^iU9^ zpVNqxL1tD8;*EgoOpw+9Bz^NT&=|Zxhr&9jPzfY2`Vq1;P@fU48(@g{15L{lh+zmg z4K&79#q@wVbVFVdLFEJb>&8qChsry?Qv28UQz}`Z=}&f+sN!c>i^D{;mIc5%>K0cEImwMg#5vAf&&H6M^sK zV2&_LOflOyw*T{S?CsLg=AVo6B|v$dpPITqQ39Vrps?cc(p|hyEkM@mw34P7g$N|N z`yvo(-7u;HLwbM#X22(tiLmNMxbpr0C!J4DPIg)Ig)7a(u{Ll)-rDX`z-J;dIzIq_ zn%J=3Bt^Fr1U+1xnFF31a|@_m97`W1ed*E&V3L|~fJ&)T?Ldj{P&`P9G z>=hK-mR^W>XKj(HP+>0Zw0*>}`)F-y53VCg9(VktWi&vYxJair`XKC$orj9mz(ynu z1n3m4qyYXSPxOo_2bDUhfbqR5^hkiKqe15fk76xx;vdkQ5!Eq^F?yVJ5R-Pre($sG zG`uQp1tb~}xO?DKXA0Si7tmz3=BfY$MHO?SuQN;am~&y}hM$FiF}=LN!C@9+YDBNX zqA5<9lOSh7rvO!V^bcdg7f3moTfTVD4Ss@!wXO0Bcs&|eh_DMa0Bc$auv4&Pk&!{l z2BLk3Kzl$A0$?Y{4U0g|Y8IsX!{CcF5WgnoF_Qt9jIb|lA9cYlnSl)gFsU8@%_1A& z1xP`YrEV2pM-m=ufz86Xwru_Snm&Y@od&HsTXO(i*Vz$XF5E<2YY035`m&~0Ua>_1 z;Dm&Lwc{T0ar_j1I{)`CaadWJJ(vrPAeT7f0qEO#$T1CGMb3-~oWnfGfe@jlX5t_( zR5vnl9UWc`;7*t61-NA;iVLAU%sCH~d)E+(i3<~S2P(me?t%Fls6o$r`Tjf_`;-1D z&;V6K2P~!=a43!wSOAXPYJH!9=cL8Zhlcb37U>T_>r%v6B|y0hT4A6JVT^I04yy7q`-+F2&3wWNF|VmI7s@ebsewgk=4JMbJjt*n1;C;G2 z^ZWf)17w2iH<`dK>4E=v-ze|mcpSx{vAY`93-Lnmt79S9H7uKs^#fVEZ7H4&?}5FD z2&LIp)z;P$HUXgeM@COT$@{pxFnEy|03!*I@->?e0l){sO7#c$>mAQ4rRbt*c{Y?)4`^@(0ODV5g{9z8nW@`o(w^jLApGTkIZsQo zJ7BRujE2=(9PoTWA9XD)5Z1y3DpVVY90Mg;w6Yt3(m~9DpgvH`CDV*5IG%ht^`#pJ z0Xc(ceU$=X78H&Yx>}dQKpyIS90n{2u_y*K0q^6W(Hf%IL(VfL6z1k$k`MuPF0rtK zr=euuLcw;+YXJEifbYt(R)d8$uK@OT2HpI1;m^w|092f9fJ%>;#5jQ4U))13j-M8_ zsfVAj)`HlkNbOPDw1HL$L4reZAcINM01$f4Xd;Gk09(f5(DNR{pYL4z=<_wJIa0uB z(;5)eU?(+3#ub8~254`n%M-xJ;#OQ?`TnYY{fR^7*%+(6G&8P+&x^5~0@uuYNA3b_a)9 zFvJ_+m}g7H?Ev(Sh;$(c1CD4e`|j zATQsxACM(M>~pt#$UC>cw@waAeM%uY3$1 zJ|y{ujfg|9ctB3FTHd z^78WhYxm=DfY}Gg?pQKYRP4pt7yFA)zL02qRJjOE9em)5C)FLjx7KftnvS~JG%q*ef$S_Sdz^nA*( zs}#{saQF81{uuLH8Ys~+b$Lne-w#eWKR#gH4_=tI(9%}_zhF&Gl!T~ZV< z^@9h^TEV!=uWXwO`Om906PFobr>)#u&mi8FANOuo_z3V?ygQlW_NQzR&;XiQv-|z~ z_oGxXZ{FPI<^Nn-`fh%5QFJzI?O9QvD)7wc^F9qu=Mlk6#DNC%YXrJHzw-9#E$pym zQq_TElar+h!2nGZ2Wjh;1Bl5|<|NpJc#}&h>fnMSNV>N+4D{ZJF~FaKNc<@*3V8AZ z;$mXCjm}%@uP{qpnVUWF_30QEHA}r>6Bt~GOAd&>cwE8nAVY_xk3@wRI4mNfnw6Di zh%edzCgRnrn*dfW;wN1N@iQwp+vvcc#!3UARq!T*;>7zn7=5;-%vn1TK372ouVpJzg$U1EhB60D*Jhjx#}(WmXeJTeQ$$ICS^-Ud4bcxen~Pp&1VA^u zA|e>(#MK9iWl*m1#T6@qYg7+tP7%6T_#}|pH9?hUe$^kk!Zh%9?KUd}fp$dOl*Zbk zqQ)$>XVwBelvdHe)BzlLw0Wi=8l)_#AdkmSlV7@{fKH}?tz8av=)%J8^BLSN1zOo6n1H)~To0kX-^?QDYHD^%*N+XD6t7;WXUKpvo?r$8GE?T{0(5PN zsU5VBM-LtP1ceHQOY`L_S2Wq88kw(SW6x+pn~8^NO+`KeaHHf3{GqIpHBj`oIpaPc z;)iAs##YDmuV=%Cc47VipSjSZ;^Cg!JxI=myyyU&4wcbS&`NZ^xZC#JC*-@J#s}pf zQlpR);!Yz5RtN?fkuGPBa|T_Y-OvPDG>DsJYY6%xe1qmO8#K)r8BzoFlsG=_8ae3* z-GGbcJc!a@QNpcpD4g=j4a`a&kl~p^>?I+qKs{hAFrek6s9KnsP9xgH3`kTi;B@0s z^8ryp)2(2aVbKM|az0+(5fChyPfX-pL+q$#rV&9k9~iJ}aEP@}3I+p2SO1C{(4!@? zp(7*iJ$9bti2^2pi#Z#38Y{C3EJza4=y^zFF4(qfKwK`07#<#e5|3lCt}*9Ov=szq9KfP0vjOCskwg{x`t`;8r#{bm0E@T_Y&X0>e*ixQZAUiD`Q&JA$&1wq705{s zyjBLzkV1loeoFW1F?w;}P5C51YHJAH0Yewngt#g^CS{#(RpXt&5(M*A&@e%&CRk`m zcdVY$M9wJS^%0jZW*k=*VL#%)&^Q}d5C}g9k-4mVf5G&`z z#6(5QX;2ZM&*%l^g00XD95YyF6@W+<93bGUy~wb?2+W3(uQ)%(Wldy?L&)?|3-!~@_NjC82LX5MU{$E({FCl-cegRXrWB>KIhC^uY3`YxWxc{8Mb8!6Jb)bSEwsiO^2Z!^5 z=Jl&almngs(?$N!pIue|^LXe9<Y8QPQx$n2*ENyz_(u&MEhnpXLwq4E7tXI!lD`Y*a z`gFES^HPp$u6)Kq2!?UzW6Y6*E!vSzOcqV-yhLwRs7Gj6DE{O3tBHyMxspO2RjJAP zPjyoz9u>^-E#u~zoTX+{8W%`CZ{ug@hkPm+?3}Qy@RfmArH7vCx`YI{?cW`@;(g69 zcvN-0JcCgCu-8s2QfIZbh*GHhB9&E%yW&bq;%FK72%!mKnIYCgOQDIxj+8?Av*>VE z10NfOo+*}U1p{@(p~aqQA$F}8Sq!9M2UwG`XvqZ+aHZ#{qu%)%LhoE&AThzRvRXI5 zs8+CQ^$^;A+~30{;rKNXcAaw+u(;icPHxTF4 zjV(|)Yr#h6-4B0%$Jd-;>pL68*hf`s*!`%slA?y5l(Nxxwso!`2fDMkh_vaNQpW`` z=FB`wRPItaQIXq8(y`^WK=blu(aPk$6&sVCbjBh60R02!EIwQCJn)t$Gq8a+>=JrV zwN*uKy%s89C4^391ogGK7WRHW$+azI^W$AwS#iTjwxV|`^|?dU&w#5i4e;&lU;f?h zWdC_y`e6REiay7;vHm8rVL_XzFhQRdJ$p*sCWT>aCCd`C%e*IcO8M`MzKk|h0v1)j zrXg@n5k6`lc?G6Wzts=+1Qn|xpZl1?jWIC0?6HX#J0sWR$~Zz=;Pm#;!1cvWVCTB+ zo71EAcozHr;GTR^yhAB=O9i1|7i;wii#m!4Z&16O=7}#&^6ab3gFt$dJDcaZK60lH z)`y}}XBur}W}Yq1n*OUG=w4msJ)J#Nm+d=jEX5gI%UF-SB9gu7pJGaK-s&&Ba>|VdPyUzo93404ZQx}C4Z&Akichelc4i@OgGHa`rR`QcTMMS{D?W1iJ5t+ z?Q(&&x`1WYSauX%S@?_NOXE`X1ifE->{1+exW&hyfC(Xio${wee;mrhb~1CVnbW2b zB9oY8_I36KJ!q$&>DEXmyRkPx#JwKRMO99w@JXAcqT;gtY%5r-iN9NKfeb61W|7S)iNrJ2iMVNZ5Oa8dGvQr{PNS(ZNq^9HKBRt%@zaOY#@eoQ8xRF%GI zR6}(mX>MVZWreM0Q-WQ|kW~JOetCL-_qG*5lKa@0%4VS)|HuhVtqAQtc`W^Y7P()p zf3`0L>qx0D8-}o!?6)+6t^YD>|3GrL2em1|#>m9cBz|nIcPfk87HKMT);2uw^Y2|q z`k^aqXxmw3u$GokrS3Q_fy+VHxpO7YLHZQl72f;p_1?03%ZD?Xvb?GyBs3}>^o<%v zrx)?qdNDF8w4=R`&G&{8tb60qER2jy(g(B6boejnW7-+Xs?efSc4p5yUnYefC6u0u z8XkW9D9w79743}~F8I}UcmIv!*{zLdord1oReS#`i%v(?GIpg%DoJS4XOppxkB1*M z08zQX>vspy)p0BVo$H!E@G<>rn?Pb7vP!UrsC0)P{+QY8ZFMX+(_m3OwatJ9u%+^)x0c^W!H^w2Z7%u1ktr-c;lV zICG~P$mJ_yN{g4xeTTB!6)h_&22^b*9vUsF6$6)oe%sizwND8rmASALLH6}4mnR{d z@Y~VbVe&()pT}C#u!mn1?47PJ&!4slMCV!9kL2bxTiNk)rFZvb_xYQWCk3R)|858? zn!4#axH%+7%Qh+OdU07X@V6!Y5Yq)ytEBko$KX|3rzGf=h?McMi4bhXr_C>VrOKv=kJW+Wmg!X zH*o`-mh9?Hn=@s}Z#dcOk3z_G=tXBDbGpWB_E!!V+)nMrH;gSV_<1g+30P+%0a_}g zBOS-4RR{IqT<8h%Az3NkT~G7kzpGZS>$i{YM>{aI{YWoDjEt;%XB0(?MCq;5K|OYh zq$QmwvJHzR6`ihD6;`^5i6g&_7wnE%P#&7Gm*n$GKvIy-HZNK^zh?%PP%0K>Zk1n^ z?a%UyGMO{)o>4^7e94+>UKJ`S@0vZQX0+=1=&rPxs;sFac&DSo(9%xCF@id4kFZ%7HO`V#TKT}4XeN6sZaf8jK z5E}Y|aTVKD>OF_zsSEO(H7@K4%CK=|9^QF0aE9Wy+$mBcfKS8PHRi5pii=}oo%vp( z>sB`$F&4MnBv$NLnrJDh2JmE|7c==3u&@ucaBO-ma(KE8VHqWel|60Mi0CwlR$ zz7U3P=A-ImA3y!dNyIvDdcog1$1R7#n(nB=m()l6!}lp-Y$#ibH6AwXUb-UJ?kw$s z7ng)y#* zUU}h~*sSN6msd@QnYgXSoYz9)*!L3bRMv8A1F3mz^g-?faMe139?UPP?sDR5i-{e$ z;<}8D#kOyIrtwch>aSZxT6x;ElD^R~WgFNkQ&B0{4cqCp%h5h_-!59M#x6By=OU*zI*U&qjXSc_Z{S8?)oOe-rIm0aBK0|G`{cdf@BI=jA$+hZ3|TZ| z(zQM5@i;V`=Bw+M3>%d%%T*C~(=8%hx^?tMj`S|rS)^zf(~PT^<@whU%vyE6Jt5K+ zU&~Ig-!6}+4E(|m_YF;}`sr4%SSC=)l!$T0c4@Ikr@3sb#L-@ql39MozOo&SUhz^Xg1Ri4Edm!$*y#6rsG? z3hdEXZig9LZ9*UMkp`}1`13WswpowFiVgetWe%t3o)2c5wOx7_OUKnKiZpD3jHbmp zXOMirZ_sfM4z6to0`dy zLS^LK!l*nQghDMCz`Ba$FU=l|Jp0ywPOWamjfSSu0*F0vDQUe8k(Hx-JcQ}2Y7;-( zH9q=k`MG7EXcw8OAO0Y3vS3vZFVWnShz(GQPS>pV)wHnB6RY^RXMo~8pH zu|ai$flGJLFoI}GL}ZJ|sdUfBa<>i_-{G%OP1ZBN z_OfP=j-hMM+A*}AVR7a;<@1)4Ws~N0K4tZcHlGOQV|s8F4H_gPE1QCxTZS}bBE6h8 zjeH+$6+b9unI6-_Xs0sP7e6cMab8+eQ({=PnTNjZu86*CY^v2+!jta}Mj!CKTf^O&rcMdFJ*>aM&jz~j@O@P^p4C2~#9@$6l zR5w{6ez!-rHSf5fc*=ameafM+Lhe0pllWS`OyHW@Wm1P6`mM%}rXBRYY8#$*d7U~< z*8t{z9X{2L!TWb_q|SdpS0L|^(iu0N2d3A^90Y}PqSl>EwLp4{3&a~5FrFc`s0~$j z7m^y$^*!&QXwTC1Y?eKZ?U}?M)&wf0N0rqoWNg>*@;d;1F+eYb7#*Y{t2boJ)JH&&H_L5sGxf12NU zSv9&Cpem@EJgzv9kRXk@JZ*_h@VIYhQxl=zHsFKSD$^^UQA}$77ZVYl7geRGJ4k!J z-m_}sxICaPzlP3sFU0ej2j)2{cLn74KNY^KUlcT#-*UHPKItfn5>tiwzQEpKkl5|4 zq9soG$P!k7i88Bs!tU~s+dtATcGqYukceqM{Qd0Dq>8Hzidiaw@e^TkwP|O=bE&^9 zI!Uk7_Qs=1#_eYAD!J~wxg0af7 zPP>6J^nilnRqY9}^*If4o zli5pN{k`8N%LdH-UrcouIk)`s?MybGE=?hLMSf~IP_R6y zsb*=2wlw!>m8pu-%8Qc;^#;mQ2CnT|b(?Ln)`}Hm{)UY<*ICQ>ha=7t3IWrNVJr%# z4f9&cbQNi&&?A6WVk2QG)g=G5)UjL4WrHr^^?_QV<`q^+{a1VMfPH65m8DruZ?$Nn zUrn@0A4@OCW^B@XWx%y?EiZ#Ft!m*~tW!$=`^k7`<3-g=RuPh3cdDjw0`Bz3Jef${IV)Sx3JauvWexH`~Clv1Wbu z8Bp=H8ed+j5ftL{CVn0zkcaD?lB-*yqeiUQziBTb{&tp|uXanZZ?k#WZmn(7D-^gq zE@t5!VH{~!NuYj00>g!T6FGpk5_O3XEXUKmOne+QQ7=xO_x}h_sL$aJ!ZP7AazHT{AFUD4A6(n8CuMl@Irm*h~no69H zVY3NJCMF(ZAz}o%&xhKj@Q**r^uPLYsEG9Fm5|Wl#QR6%&nthC#P4QB_?WvS770a0 zNG~Wz`?0fqMwUhdj#go`g90k*x%!OTTex=^ zUu@Y`@&$2++5DUr6DZ+R2UtJ8M$qemy%n+_`7VdIUZgX-;osHg8HdKF()rsT^w-`} zTNs|NpahD032Cb|G{3)SudXb;n(&R*%pX!utr?!k3YV&#P(ZIzAJghg_o4_D3-xvl zY#rm)0jJB>Uc+d9*r;ewC5R+GmYy;1y$TUH%XAd*Bb6%ImOB7b0G$E z?0dte1);HHA7uY4ZHd^}f&g z3x6Y7?qcL|zw65E)fMs0vWzm&5PQwt+;EVyVf9gX;svqM1iJ1GjC5W0>B1knt+}6D zO#Hvc`>eZvnj5A6C~#}>@cGUnP=pv%qKG%)ZpENC)44rR@(rDznh^Z!a|*AI!ADi{ zs%SN9Op`64XyRA1pLeY*V3ch}gbCnx<$)Z0zW2-|GAJIthz}$${i%ZP7Td zD(XzxJ%-9^V^PuP`*(~?jZGgCOLGSZ6RP~&(_=n?b$CygfvTb8v4?8;q{nTavF2JG zXrbI5a;Yrjj-5LrGn_}!E9;{l7n;^~qNUXJ_yyus0~|INxY!m7?ei}Qq*B;TSI{;du<+Kr)E(Zb1E4z8T*ZchcDk1475LOxNoHJ^WxMvMIU%kg*I zetfY7`RY0MS*Rllj$ib}sWt6_Aq~1AUc5AaXN$6kPA4zPWWJA=1x*aZUy!ODd46@wDhX9? z?1weSI=s;@L*#uivBl8n-OtOVMDQN=5jXAf2#IJJ}E!KZd^i zfp^77d1;DkX)T^5C_VM#)vH$_HvS4blTjyLrpTTzAA7{m8k^iH!H}F6@lbVGeEu*@ zf+-u5v1#&tDic!LkZbAt%Rcw7x2Sg%n;_flynixXdRi6#+jZS6;8g7a=dj>e5f7Au z_rgw-<+5U`?|y5)>5TV`nGrah=Chr#os=gPUkw(y=@ic6VShx@)YO=}`MPL}x<_|c z`6YZg_AsHC4ojq9-F9b4?~X*IQ>?js!7RW?l{l5+2N2(b^UUa1{r{t}jSp)LpxE_}%@%$4L1S{-I!3m*Nfq>gLvReFr%nnI=V z>f+=R*l2U3idO=1BPYEFAB8APhGl(E-thR{FAQ){w>evZ^vGail4eSqA~GTyix_( za{c@DjD8)Seu7hRpM#CpEhN!gF2tKmFMV;`ln_H|O+YUxIz-B$r^o_!zeH}lxQEFi z-2ci)8-q_<3YP_HGsgNXS8bDY${?HlV0yZYH&mB8_sQvwGJjVtcJ1BEmb*Lm>MmjhD-MT!RDElr(}i*MyR&45_*mgIa~a z)`13rTHA?wyH6*zrGi;WR4Gfz$-#4F?#|-kb(B0k(F(gsv%n7DS{V^-%;z$8v$nM> z1dW}UD|S!+b9A2_Qrol&@%`UnA@~*In2zPUtkEC48Q#4m^uYk(*u7k!nYvp28&xsCzbYzR*$~3(-(yn z`r6Q6lvop>aeWp^r6J)F9EYMt<1P8pC% z{z-~+zS|`i{MP`MK42VSE?Jh7n;VKQAIf^fjI(!fSbVsgq0n3=Dz;&sQ*#TacE8WjZfq$qrb+aZAR#KYV9?8M4kD zf+@zprM<0aGjZkdt)rQ^gwdam->drjjsJdf=#b6e^4=Hi|LbZE%S``gwR)F6XIeOK zYl-Bem{A4V?3o++kJl!A_-HlUD9g=5_zd~vLtdCcM`VallMR~jDUCy-CfT@7?H~4mfL~KY$By7K!-EZQCH(Cq2-sti4a@W5 zNFULwgu{$7@qR(pvm3I_6%Ff@ZP?eTR--=`EU8^;OLc?>Q)+C&p+hYTegWOJ z^8u_*zv-2j2Ijqtg`n&BX5%w9;w=mA0o3`Td(727r+VHrkw}-twZOmy+{9DUxXnX; zqiZSil~QHFqt!p0R4&UZmH51lgtr&<{+ya)%a_KTU&%uTYuZ z_TW|>Nk*6}^Tw-`pem0MxnJdqa7H=R5h}!_X}FDV(^maZx=_xLT(g>LKd?I8tYSLN z9CRfx|B83z540V*u=#Q_lvNqk+;qoO=-4&3Y$<8X9+zZAR!(wfC^^>}cDH=1_aONE zW$$b=oVQTN>%Zv|^rHClq1}1f~UOm@nss(4LmHb%QBW993 zT3V2gIq1HUAnR%pK#p^5au#;6m|+NYm%1UnHA9Xv5$8H$us%wMrm(4ydyaPi<%=#* zy0&lwEfQHXU%5V{f)d{(sG`?iy9SOY?H@G({}O&x>Y^h1rVt(b$!$hB{#c=q%1_c@ zI^nDu{vGT$gR1h_$-&iFEhHnE2X=VX=8HA3rxzxYYdT*Kt;7rM^-=cG=oT`x8CnwW z&N9WMI*66IQgH{zV| zCiX21{Ag5Kp^6x?=*OYOr_S_=3|BY^A=R8+yM|eBX=k7F)3}{h$k)_m8zLz`*3mz7 zzS@gqvU`WdK9y6@NqOeitX6lYR;z8UKM~^2RPi4xnOHqk!Ck+=avBJdU@iVDl*(>q zrg^pZFE#IS{Vt4EF(B`)EsRo=om?HTcA_ZwuEk71C3*eo73_r5$RNcp`!gF^ii;aD ztxI#2_Mnb9FjaeUx``<@CN!bS%Z*$gT53q1?%XAHfd1oZk^Vpgv}y@UQ|a;(P<4+< zwD0AtdsJon+2%O=?|_MB*X!R?Q-{HHX1&8S(C|~Y!CbVk)NA_|6+Ubo+x!Q^)0*FX z^5oJBiH3u_9{OCNl6r+RJCk`inbV(AeVz@FYppGPzInYsRkjsCwDGT;r(Md0R4N`- zb!q1Z)P?(y>yc}^+8}hqe|1P&b&RpnUFcPFe672(a-vGfF~V~a8XOoknsh`)k6={T zB^U3sJ1_ZYp@@ zv|PE|eAO_(8;@(oG|;9MmJ@|-S&<(b9(MM_xIlW?fu3V6~j)l_gd?D{?ppK%U3kCLIm8!k1Z&pztVG1 z&@TC*@IV#?pX6S~>;a|6mq}%+q=a?3e70_C)RC~Nnp@%UfRHV8A8wcGXk{K%RE|D( zgLtv}p`ZJW96-(=M!P%b0Cq#PZEuMfv4Du3fR~V?MjQ?Mek(CHGFWeodh__qG4W0b zN})*h=32{m4pnuV;>K{iALm#;PC2AGzk+Lg{byzSdF7=|mh{Px78zx^%vt#);VO}i z!=kV+4w@wOzi*pga$gp8k+|YJ(?U*Ri21(w%w>hB?RU-liBYK2+}v){EBg$UTwi`c z2^X!=`VU5A(J`j@7iC-;PchRzQn7I{O;U&v9#_4?`R&`UR5(LbZcKN_a7#6sqO?fu z9{PytvHqNl3@dNzgg!qPEkh~%^Lta{Owml`5T{ckU{R^n{ z5U}&+yi;A7bPbO1Xc>8`%aAjXDVc?xL z;3rJT5-;|a#(5wS2P~6+9gdnGb}`@|798jZ{ag@%MR{!T^jmZ!eI_rLKIcA-cPK*F zgPt~O(^aoUY{lfko<`ivygf@VfBG?3MHxZ|*i{uFOsW@X%4On{H`hnj8@4Dau&nha z7y6c`A`LGZZ@((20h*apaFO$U);Iq3t?5--^^)Tv`YVLl5qK)f?OQ($APHN(aN&qr zXLQBUuf2UIxaoahaW%vg2OhA{98!w*8lFSQU0t~plXEoky4g;Ty5Aq;cOMCE05%L~ z_r<5CYIsYYz)F{vF4>AKQeO*ty_Rr$h{1jrs2IPV-N!c@=!; zH10O|s*PNO6e6HZ2h~&8drM24TwE|e1JLrZr$I*G5b}6~@p^$tzAd0T^q1xinTn`Q z-!3I4>}~mCsx6p}GG6OqfU=2r%DNIs!rL(dLpfaLh(3{4kyC3!aE_-&a}zlXOn;xX zhq7t-OTYS&mtZC5OzdPN(xe@FwW)38m()KGy)kpT!D3;VH=u#4<`l}iIb*ZVCzzb| zvS7}CoX~4yY+zGAN_ia}DzK@(PHBqPCS)v_d%Z3P6ex=CRY^Q(nOM4bt1GjmF8oOP zYT|dDY>C%{8SHe|Z%IzRGuQ8P4Ek(D{P3*k)m(iiAkEc`n$&+m|KW9Y&5eDQN`}ml zB-VI(MBnqJTpE26VJ#S6^DB~Bxlj@(IGfni?vFHEp(pwX_v^*1zgc{Xw`F@`B4UHc zkC1F#?b!L%625Pbtoyz;?HyDU(AORXza8`qL4 z3V6#@t1Q87k517r1y%wGnE(fw>^Dpi`}8b zbWF{6HQmpzIp)!77JfUE{K!-WH@y{7mr#K}2z#MppnbNpwp$;dN164>VPo$(gH2q5 z1ID5eXfrm^h>+$|dd*wRL#{=t?(xe-pCg8Nr>0tim7va{ogCUYZ6Ao#Nntnf*26OK z)&9BRg}oErXl-F=citzvmz6y^Qs$l>4nc;zh1`wm{)@&?eq9dpHm-ZqS~ooq(YRpd z^?F_u#3Z8BMTQlF#R{HN+HOp3?^h?kkpY|2qP83j z4SC2FIXOeixR|-k@9m^VJHFE9fIF`h91~o5k@4#XXO%2*jKHYrIAY%=!=giH7(;b2 z9ZL78SJ<3ns!(X?^6Ho@KEt&*vppNYbj55X z>%qyjoPvR(k2`ztBh!ec7+5aKfX3`!ga}bcuaf#P4SB-#+jmk0*(eE@8ubn#qZN8Z zsR`=LJ%JX=D{+8BzCr7!|N6l<$G3mEDF+T2><6S=L03Y^r~jv?Llstx4WBf@8!o2k z(X5Xx&-@7Zt(4T@PvCuf)s4On2%1_AV!cO|WK~j=O=f{C;QAu+9D8;23iZeP##{P6pWjk0|Omv=+iZ(}mx9a4TQ-o3s3bM@UQ z`O+ugPE1nYB!4IkU-BBTp?)BBb5I|iJ8KmU&viJdeh54d$!Q7qk{o^o;K zpvwW=Nj0_P*i|{h;zYl4=G)*1AR*B5-0d|y2n!P-zC8^}&iwGJA0UvMS7A?JF&GkM z*oyk7uGDr<#^JWfUnc?!k+knqrF((GRLAzLZ-a_j6j{ZkEtMswXkFrkEEp6@Ju{Xw z8oz={-gaPN48`*M3{*Y`>`NG&kn-^5ar5yvP#`wjc)d?fuJIDq?j$l{{6Cr(hE8g2 zWn=(E<;2&y`T_K==r3wzGw+Wa*Wos!1Ch$IotxjlqoM{zu)SNBN%*%3SlU9W33f4V zYfD$sd1Fvks^H)ceh1hyfkREAuHVv z=Fz7TXV61e8oI)@T-(01cq~3QN0kmWc=k3yQR=&k?_BqF0bizc#qW6bjrwrR&*RUD zQ_6Nl`ufGFlvk#B*e8aYOqjt9%ILs2_lxg0n{g=T3?=Pa_uV>7T#NRIb*lx>%X#y} zQeC_yM$z#3%*<3Jb}f76FH%1@y5K&BdVMHX9M9Us=~^>YyXb!u$$0+rv%2`RwT)aR zSI46ydMR)5ZG&w&)44g>td??G4gDl0u)l~zz0oEXAqj}ewIsLUvrykvF`UwipT14B zp?XSv`4zY%qvf9YyZvZR9dQx6JyQxyud(IrlR7!X-qbE?lUiCW(xe_N(`$m)tol5%hvL!b~F|<_P`6|862MR)a+%$csF6 zr{%dh9fn>==GbFXR5;rW=Mst&w?^G0?DLDH{+4a=+y_qd;-9#^Wo3wLSc@G4?Xu%c z>JEww78M0yIPW`2>AGZNjBEw!a~Bz0Q>5snxqark3XYuQp2_5%$5G2v!vEOWv?i4*d zTB~WQ^N7=1=+L`%EF7(<-g!7T@Ny0uPt(x0^UA^}cl}Dhe#ISe{i@J;AJq zHlPGjw%5nNlisfL?ehlw(OwGFt~H#T9JEVl*3!ZgIUUaY;y303#)CzIZ+~V1A3pX>8azFpImud0nogHS94@L75VO=H0^nz!^wj9 z8@N!s?Q|k78@l=?l~2G$6mB92S^L*9*u+k+_v_d;+uXT!F4?l!kS@jAaXz1 zTH+fUIu=sv#@Je1w5Ib`a?oJDIx@nX0P;i2@U9BkwwCpA#7+&YqTH^N#toNvby}{8 zOe&W^ZSaWv{VyD`9G<<^LTwfF6;)0j37m}z_)J9p!vq!hE?^(MA%ePF?dmd|x$F3OAhrw5!ODsahVWaf8LsSfmJ%VkY$(W9UmVgbN}>>LnVqBW zV!fxtwo#-Y?x6-7d?U>Id$8gWdjZ~XE3>%}VE(ACtr^|Ut7TIFXfQseq$Qi8ZW(&MKP=lIG{59SV@Qc8c z1*c0wI*=H5pMtOQ4^(ql9zs%PX1L&ap?%E}!Q4bQiJ|-0dy9J&g_(ROP&!nx6m=0@ zpmC=1&>&+h!CSk4w8*vAO>lP%u-E8tFnx+WKe!cP>3w$hBbph^ZLI>b3Td`+y7OpE z3jF%e?7@x(l&K{Y6aSQAB#_lGtLIsd;w6nbV{_-wE~Y{g#N0+7Av`jPFOZy*Pzr#-xx<>@#z3#>CV~EaWt^o4xKaVsrH4DikES{fLd-DorpOYzu88mrZW-;L#v$!Eg2uwd65wq7z`hl%k zose4C&>WN{ocz6w|F{VZo$7btTzNj3LGBk0(+3v2qebSKp)Pu5O=C!<>er`<@IM%Pk10+a-Jo! z>#Y4ixzC)Pn~o||q2ouGnLT`jGY@-49D6aVg;*n@w8&=!e zD0qY;9+PZ+7aK-xIkkq=rDDHD`#I@SoJ3~&R$yizfp>aB=;G<=$tBe+d(YIb^4h?d z&?ciuKw?5GSjP6Bk6P6sDj;9B0TnrFb6uSnAu9-*qe7()`bf6oMCbS;^$*Cm!d@GP zA9V}NUpB5Ac%9RDEnM1pY^50}p+kB&_C(0?jyWVNFmE=;hc>LH4yfD9t_#o2 z@jt;8e-6Q0ZaCO^Uz$g!)xV19OOw^w`Rgl}c%jX7%#?W}Xgcyp=0 zO9;-;)&hpA?7ltSG*m)mkJ_c7Pc#5&AZkp{Wvu-m7G613G+49AdmU?jqqiUC=V2i~o}DafM+&)9-1R0|fTE zgktw?x2AnuK%*K)>D3Mz`D-<)#RXvY5vFbQEQTfoSup5#G%f{(7#r4b3bU`=g_4Em z)0kHsc_Gth1OENG@;$c4258VJ1DgFV75Iagevxp1--nQNy+`vxa&Q&D5rLD7&LrS@ zg{A23dqscRQ(aQSdFuxdNmego?_RdGvyXFN@?b{+n?bwpq zl&Pwk1TW}$1om4vw&8&gX_zRmC1{=n5?42_60#weS!DS}^WSy6unGU3!=lXLGzplK zf^Py`FJ%|wV`|cMm{C75vQ`QgP0O-{U4Z0%bQN}YBnUfyHz*5XgMa7n- zVsvboiDzRI-@ZOE-{kp_QAuqY|RGAee zzw&9BI(rPsD};N}uC;oTH}E;76)cifqv5EO_=!6ymjgrzOyHvzW!4JU{dv@>7&rJStZPf8y%=f zU#xa~W*C{;`ieO;zCg$oyT7b^lq$2_yvC=%xYk?(@iO39)z``~!p{A~ot#M2J5TzLSRAwrvT~#|o4?yQ|Al zqspMx?SNWm`U6Pxnrcn@6oPnM7Xnd7A~sv-bo_Vh3!RY>)LbDiN;#iCmG><;i|N$2 zYplBj;g?W+giaWYuFM=`>V!VV0dFaNE!I`}%*Nvh|1D2vUMq0p++vYH)jhk+h3aJy zdD+8gsN-q+!@O&7!Q9zhFqVbHi6m9y4$DOe8;vb5N(HM&YWYp(E)II1 zLZy931d-GRHuA=m=4X+JWgL3`EpQWI#+MF6w(O9SHiPga{-ei6VZL(=NF5=+1HAwA z$6?^XQbzm-$5kk}iO#=lJ!mkTXSIZlwMMqLBi|5y5qQ@4<7yx%p68L?zxHwIhoxpt zg|J++JW&qy>?1+|KS#jujT#bR943X$xu~`DkGG4f+`8yH&QB zSb@N-qUc;lDuZKdAi0*E>0d&WpCp`M0Gy*tuWAodDirvAbTjEg;^}}lMOWKAJe_9V z$GB*Yy~j4jhaF}j{?oIeF_LdR@l|74qQ zhL@S4fhQV2fXTWc0#nG_$w%R@ZRyUpxo$^d{*m=^n-e&LR7zjXVe5yp1_3EqQapu+ z^FqNON>PVPeJ=Tw6u6~Ys8}S2TG}xf3z#v~Ojc+2v2+c1rm!mTd&&DH`txNpNbtaX zRuI?PQk=u+K=jE0e))@y2q@KHEt7GV&=D{?-9;ar@aF*GS<9oLp(cD3ar2?`Yk&7; zM$i)4RW~K$TgQjd!a&wWh^(Rx!gOOIU@M*Vpz42~<=Z#yXXw2v4q6_P1qR^=xg-)f z$H$0SwTa?2hRd>njj@iwYLm}!(z#;QEw;@J7Nq|*Y>aaXR$3d|EiOteACJ`Xr@g!% zCDG(6HlXlahD)MXm|N@pbCl0cdJvYqUHbl(rWyYxI?gE$*3h&SY<64yZ`33(N~I(R z{vokD|1;)+Bp|~KZ|Ak9Ngj!>+lJj+J@tH%4=C&HO}bK(=;tI4L2pa8n={!0|NfSD z3VX6_81W0{IT+GwmJYV4)$J}cHDsd^Xs#f_1yB10NGRp@i|Ue^p&kDaPl>AmXZ|z2 zqJ4LKVY7ijqQscDg+R#6Rbn8bQ+Kh%SEj08$YmCjF`kl^WU>nfz?`ao4{W(VSr+)U zfyBy#e*rcf^?EF4jOW99F?&`r7$+>Ge#F2?4=VkpH z_oEJ8#WP+2Q&^>HG+L(|C=2tZ6PYr&s>t7==ZYA{a=u{P-v@Rmc(<7a zcUQG-?U=4~$y)AE9F|2%)eQ0>D6k|^CX|7|66fysq4l3Rn*{rN;*i_JdY#s?MkYX5 zdSx@S@D6|1j~TYD<6%j62<&z0X?Os>V}4;gT<}jp$Oi7E@!x2kCo@&tSC2m| zV0&)r41VRJdTj;q46Y%#`Gz-hmjKc|vRr{r?s@|BT6A{wS+mGwgQvHfV@3> zg}w1fxkqbxYB5wxOVPAcMk}+|y5!Ew=}xFlPtX%mdVzDef~+f7mSnfA%De-#)%};9 zI_OVeB6na0^*~RA>w3{>6e2sbr@=yN_gWB0#fB*l&5QeongJTH$tvu7%~F1J4Rn)- z9z*4)z=jM6%=VK=imk$Lm2m@&X(bV(ab>*ua|E!C$1GFjb+b@DY2me_bYEbd`;rF} zw88qeqh^5??7ZS99M`4>Z;Y6L?5bm4u(Cb_fXO=mOonBfyjuLf!X&W0bjLz9YQIeT z&GHBg5JSUFSQWh0os#TN9FJcBgL+3W9zoPcdml{aTAJ;~ND2%!XP>eIrXh*Kd=dh< z_fvgd-TXov2qyG@zahb5LY$49$AJ9 z%NPT;E}8CTWZ%!(0xAC|vg-X=%Vibo14bvIBzjqVE7}aCwA~V(hB(5N1~dJ0AKjIc z`+o(p^4F67Ok@!&_gjM7G{U08>p6zX5G!$Eq@1XP=#)cuZhu#A+82jpw<)75HMZ({ zLz=#zS3Cvi;$gJul~?l~pE71rygDsd93Z4aw;!Ym=liFFQi>G}KO=kvbJ^X$oCIoT z>7pmQ{{*M)_SG3RzxsxhWu^B1$xXN4JKahb8swYhEfw`Mc)zg%W zeQsqvJ=HX{#1xJfu|OUkJ52%^!z42xBQ#RK7W4sJ?mJt#MSD~kaUU|h@uVVP3ur0_ z!$^~CG3(}M?RUQOQQs_2@OqFxn^Zl%Jq4&<94YJ7x1b_Q8Vyt_2X*ELY-*YzsC@aq5 z#Ia)GTyE4_6nVV84$2h-)71pM&B|kbU>{{YJIwi8jr=eT#@H`*>CgnEsY{FhYSOyq zxWG%8FBm>34XRvg9P+?r5{(iZ`&(I+=$nXcA*wgCPP8HpWx|yHQc4peYKQO`jH# z>SOpIcB&88e>cZlEXvo6t+D|<52jshCCqXo-Wh3Kt}=9P{%2HalJqs2{u ze&`x{HV5pgv|3T9FN0~B!4Ap=05Aty>-rszAi%Bx7;fpG3aM9FNw|S(F_US@8)&`0 zRlr^9Ox&5t_X8jgMoD+WG@cQZ+cQlZ8}spN*^+yA{w2fHL@)?G6V(5lM@o_0KN1sg z0j6a#*WE|?#M@sZNDuygq4mQbIWIF_DBE>6 zwqz|V)znPt$Ex2Zz!=4e+%bNLFTC-g{@wG}!GCp8GVyer!-HU0)L9GepL5w z2ZTl33JOU2-w(+8tn+hlz=?l;LTpf&e@v`TSmghH4CP1>2^=GJ$;$ph!?!p8_Func BcU1rY diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs index 2ed64ed5045e..110443ba9e77 100644 --- a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs @@ -4,25 +4,32 @@ namespace Microsoft.Maui.TestCases.Tests.Issues { - public class Issue30957 : _IssuesUITest - { - public Issue30957(TestDevice testDevice) : base(testDevice) - { - } + public class Issue30957 : _IssuesUITest + { + public Issue30957(TestDevice testDevice) : base(testDevice) + { + } - public override string Issue => "FlexLayout Wrap Misalignment with Dynamically-Sized Buttons in .NET MAUI"; + public override string Issue => "FlexLayout Wrap Misalignment with Dynamically-Sized Buttons in .NET MAUI"; - [Test] - [Category(UITestCategories.Layout)] - public void FlexLayoutWrappingWithToleranceWorksCorrectly() - { + [Test] + [Category(UITestCategories.Layout)] + public void FlexLayoutWrappingWithToleranceWorksCorrectly() + { + App.WaitForElement("Issue30957ToggleButton"); + App.Tap("Issue30957ToggleButton"); - App.WaitForElement("Issue30957ToggleButton"); - App.Tap("Issue30957ToggleButton"); - App.WaitForElement("Issue30957Button1"); - App.WaitForElement("Issue30957Button2"); - App.WaitForElement("Issue30957Button3"); - VerifyScreenshot(); - } - } + var button1Rect = App.WaitForElement("Issue30957Button1").GetRect(); + var button2Rect = App.WaitForElement("Issue30957Button2").GetRect(); + var button3Rect = App.WaitForElement("Issue30957Button3").GetRect(); + + // All three buttons should be on the same row (same Y position) + Assert.That(button2Rect.Y, Is.EqualTo(button1Rect.Y), "Button1 and Button2 should have the same Y position (same row)"); + Assert.That(button3Rect.Y, Is.EqualTo(button1Rect.Y), "Button1 and Button3 should have the same Y position (same row)"); + + // Buttons should be laid out horizontally: each subsequent button starts after the previous one + Assert.That(button2Rect.X, Is.GreaterThan(button1Rect.X), "Button2 should be to the right of Button1"); + Assert.That(button3Rect.X, Is.GreaterThan(button2Rect.X), "Button3 should be to the right of Button2"); + } + } } \ No newline at end of file diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/FlexLayoutWrappingWithToleranceWorksCorrectly.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/FlexLayoutWrappingWithToleranceWorksCorrectly.png deleted file mode 100644 index d8724306afd457fcdca9b7cc4cb9757aefc8517c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70395 zcmeFZWmuK%x-P8K4n##oK|rOXrKL>}Dd`TSTe`t61eBCkN$Kto6_6058x$Op0|e=E zpW~f#uDRw~dwoB?ee8eR_c-7cVKAQix$o;b>w2Evke4FcOSN~)mMvt`*RCjS*|Obe z%a+~KyZ?r-e2m_$flsFluPMoG+2YQ$Wy_rhTehs?OLxY$Y;iibWy^%YmMy}swrrui z9aW+zihtO7OGfI-mOrHbUY92Y;VZiwrRA>f8sB?-7xUI<

L;r{z`l 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 XzCPh4fk?bzgVjm9?<The default value for this property is NoWrap. public Wrap Wrap { get; set; } = Wrap.NoWrap; - - ///

- /// A small tolerance value used to account for floating-point precision errors - /// when determining whether a child item fits on the current line during flex wrapping. - /// Without this tolerance, items that should fit may be incorrectly wrapped to a new line - /// due to minor rounding discrepancies in size calculations. - /// - private const float FlexWrapTolerance = 0.1f; - /// /// Initializes a new instance of the class. /// @@ -542,14 +533,23 @@ static void layout_item(Item item, float width, float height, bool inMeasureMode child.Frame[layout.frame_size_i] = basis - child.MarginThickness(layout.vertical); } +#if ANDROID || WINDOWS + // A small tolerance value used to account for floating-point precision errors + // when determining whether a child item fits on the current line during flex wrapping. + // Without this tolerance, items that should fit may be incorrectly wrapped to a new line + // due to minor rounding discrepancies in size calculations. + const float FlexWrapTolerance = 0.1f; // The issue was originally reported on Windows and related to device // density or scaling factor. In a few scenarios, the same issue has also // been reproduced on Android due to device density variations. The tolerance value // is applied unconditionally across all platforms as a safer fix, since it has no - // adverse effects on layout behavior.Hence, minimum tolerance for floating-point precision issues in flex wrapping + // adverse effects on layout behavior. Applied as a minimum tolerance to handle floating-point precision issues in flex wrapping. float flex_tolerance = layout.flex_dim + FlexWrapTolerance; - +#else + // On other platforms, we haven't observed the same precision issues, so we can use the actual available space as the tolerance. + float flex_tolerance = layout.flex_dim; +#endif float child_size = child.Frame[layout.frame_size_i]; if (layout.wrap) { From 784a5f7dfa3022b9e18bc4583580c36ca349b6bd Mon Sep 17 00:00:00 2001 From: SuthiYuvaraj <92777079+SuthiYuvaraj@users.noreply.github.com> Date: Mon, 23 Mar 2026 10:49:07 +0530 Subject: [PATCH 13/13] Review changes --- .../tests/TestCases.HostApp/Issues/Issue30957.cs | 2 +- .../Tests/Issues/Issue30957.cs | 2 +- src/Core/src/Layouts/Flex.cs | 14 ++++++++------ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs index 3a41d07e4f0f..a3d4f4d58fb3 100644 --- a/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs +++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue30957.cs @@ -123,4 +123,4 @@ void OnToggleFontClicked(object sender, EventArgs e) _statusLabel.Text = $"Status: Font toggled to {fontFamily} - This triggers precision issue that tolerance fix addresses"; } } -} \ No newline at end of file +} diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs index 110443ba9e77..c3582cc5ce3c 100644 --- a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue30957.cs @@ -32,4 +32,4 @@ public void FlexLayoutWrappingWithToleranceWorksCorrectly() Assert.That(button3Rect.X, Is.GreaterThan(button2Rect.X), "Button3 should be to the right of Button2"); } } -} \ No newline at end of file +} diff --git a/src/Core/src/Layouts/Flex.cs b/src/Core/src/Layouts/Flex.cs index 6f97792712f3..31f4d1557777 100644 --- a/src/Core/src/Layouts/Flex.cs +++ b/src/Core/src/Layouts/Flex.cs @@ -538,18 +538,20 @@ static void layout_item(Item item, float width, float height, bool inMeasureMode // when determining whether a child item fits on the current line during flex wrapping. // Without this tolerance, items that should fit may be incorrectly wrapped to a new line // due to minor rounding discrepancies in size calculations. + // 0.1f accounts for sub-pixel rounding errors introduced by DPI scaling factors + // (e.g., 1.25x on Windows, 2.625x density on Android). Values below 1.0f have + // no meaningful effect on intentional layout gaps which are always >= 1dp. const float FlexWrapTolerance = 0.1f; - // The issue was originally reported on Windows and related to device - // density or scaling factor. In a few scenarios, the same issue has also - // been reproduced on Android due to device density variations. The tolerance value - // is applied unconditionally across all platforms as a safer fix, since it has no - // adverse effects on layout behavior. Applied as a minimum tolerance to handle floating-point precision issues in flex wrapping. + // The issue was originally reported on Windows, related to device density or + // scaling factor. It has also been reproduced on Android due to density variations. + // The tolerance is applied unconditionally across all platforms as a conservative fix; + // it has no adverse effects on layout behavior. float flex_tolerance = layout.flex_dim + FlexWrapTolerance; #else // On other platforms, we haven't observed the same precision issues, so we can use the actual available space as the tolerance. float flex_tolerance = layout.flex_dim; -#endif +#endif float child_size = child.Frame[layout.frame_size_i]; if (layout.wrap) {