I-Synergy.Framework.UI.Maui
2025.11029.11433.38-preview
Prefix Reserved
See the version list below for details.
dotnet add package I-Synergy.Framework.UI.Maui --version 2025.11029.11433.38-preview
NuGet\Install-Package I-Synergy.Framework.UI.Maui -Version 2025.11029.11433.38-preview
<PackageReference Include="I-Synergy.Framework.UI.Maui" Version="2025.11029.11433.38-preview" />
<PackageVersion Include="I-Synergy.Framework.UI.Maui" Version="2025.11029.11433.38-preview" />
<PackageReference Include="I-Synergy.Framework.UI.Maui" />
paket add I-Synergy.Framework.UI.Maui --version 2025.11029.11433.38-preview
#r "nuget: I-Synergy.Framework.UI.Maui, 2025.11029.11433.38-preview"
#:package I-Synergy.Framework.UI.Maui@2025.11029.11433.38-preview
#addin nuget:?package=I-Synergy.Framework.UI.Maui&version=2025.11029.11433.38-preview&prerelease
#tool nuget:?package=I-Synergy.Framework.UI.Maui&version=2025.11029.11433.38-preview&prerelease
I-Synergy Framework UI MAUI
Cross-platform .NET MAUI UI framework for building modern applications on Windows, Android, iOS, and macOS. This package provides a complete MAUI implementation of the I-Synergy Framework UI services, controls, and patterns.
Features
- Cross-platform support for Android, iOS, Windows, and macOS
- Dialog service with robust error handling and fallback mechanisms
- Navigation service with page and modal navigation
- Theme service with dynamic color palettes and light/dark mode
- File service with platform-specific pickers
- Clipboard service for text and data operations
- Camera service for photo capture and gallery access
- Custom controls (NavigationMenu, ImageBrowser, ErrorPresenter, TabbedView)
- Value converters for all common data types
- Behaviors (SelectAllOnFocusBehavior)
- Platform extensions for Windows-specific features
- Dynamic theme system with 40+ built-in color palettes
- Token storage with secure platform-specific implementations
Installation
Install the package via NuGet:
dotnet add package I-Synergy.Framework.UI.Maui
Quick Start
1. Configure MauiProgram
Setup your MAUI application with I-Synergy Framework services:
using ISynergy.Framework.UI.Extensions;
using Microsoft.Extensions.Logging;
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureLogging((appBuilder, logging) =>
{
#if DEBUG
logging.AddDebug();
logging.SetMinimumLevel(LogLevel.Trace);
#endif
})
.ConfigureServices<App, AppContext, CommonServices, SettingsService, Resources>(
appBuilder =>
{
// Register additional services here
appBuilder.Services.AddScoped<IProductService, ProductService>();
appBuilder.Services.AddTransient<MainViewModel>();
},
Assembly.GetExecutingAssembly(),
assemblyName => assemblyName.Name.StartsWith("MyApp")
);
return builder.Build();
}
}
2. Create XAML Views with ViewModels
<?xml version="1.0" encoding="utf-8" ?>
<ui:View xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:ui="clr-namespace:ISynergy.Framework.UI.Controls;assembly=ISynergy.Framework.UI.Maui"
xmlns:vm="clr-namespace:MyApp.ViewModels"
x:Class="MyApp.Views.ProductListView"
x:DataType="vm:ProductListViewModel"
Title="{Binding Title}">
<Grid RowDefinitions="Auto,*">
<HorizontalStackLayout Grid.Row="0" Padding="10">
<Button Text="Add Product"
Command="{Binding AddProductCommand}" />
<Button Text="Refresh"
Command="{Binding RefreshCommand}" />
</HorizontalStackLayout>
<CollectionView Grid.Row="1"
ItemsSource="{Binding Products}"
SelectionMode="Single"
SelectedItem="{Binding SelectedProduct}">
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid Padding="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Text="{Binding Name}"
FontSize="16"
FontAttributes="Bold" />
<Label Grid.Column="1"
Text="{Binding Price, StringFormat='{0:C}'}"
VerticalOptions="Center" />
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</Grid>
</ui:View>
using ISynergy.Framework.Mvvm.ViewModels;
public partial class ProductListView : View
{
public ProductListView()
{
InitializeComponent();
}
}
3. Use Dialog Service
The MAUI dialog service provides comprehensive error handling and fallback mechanisms:
using ISynergy.Framework.Mvvm.ViewModels;
using ISynergy.Framework.Mvvm.Commands;
public class ProductListViewModel : ViewModelNavigation<Product>
{
private readonly IProductService _productService;
public ObservableCollection<Product> Products { get; } = new();
public AsyncRelayCommand AddProductCommand { get; }
public AsyncRelayCommand RefreshCommand { get; }
public AsyncRelayCommand<Product> DeleteProductCommand { get; }
public ProductListViewModel(
ICommonServices commonServices,
IProductService productService,
ILogger<ProductListViewModel> logger)
: base(commonServices, logger)
{
_productService = productService;
Title = "Products";
AddProductCommand = new AsyncRelayCommand(AddProductAsync);
RefreshCommand = new AsyncRelayCommand(RefreshAsync);
DeleteProductCommand = new AsyncRelayCommand<Product>(DeleteProductAsync);
}
public override async Task InitializeAsync()
{
await base.InitializeAsync();
await RefreshAsync();
IsInitialized = true;
}
private async Task AddProductAsync()
{
await CommonServices.DialogService
.ShowDialogAsync<ProductEditWindow, ProductEditViewModel, Product>();
await RefreshAsync();
}
private async Task RefreshAsync()
{
try
{
CommonServices.BusyService.StartBusy("Loading products...");
var products = await _productService.GetAllAsync();
Products.Clear();
foreach (var product in products)
{
Products.Add(product);
}
}
catch (Exception ex)
{
await CommonServices.DialogService.ShowErrorAsync(ex, "Error");
}
finally
{
CommonServices.BusyService.StopBusy();
}
}
private async Task DeleteProductAsync(Product product)
{
var result = await CommonServices.DialogService.ShowMessageAsync(
$"Are you sure you want to delete {product.Name}?",
"Confirm Delete",
MessageBoxButtons.YesNo);
if (result == MessageBoxResult.Yes)
{
try
{
await _productService.DeleteAsync(product.Id);
Products.Remove(product);
await CommonServices.DialogService.ShowInformationAsync(
"Product deleted successfully",
"Success");
}
catch (Exception ex)
{
await CommonServices.DialogService.ShowErrorAsync(ex, "Error");
}
}
}
}
4. Navigation Service
Navigate between pages using the navigation service:
using ISynergy.Framework.Mvvm.Abstractions.Services;
public class MainViewModel : ViewModel
{
private readonly INavigationService _navigationService;
public AsyncRelayCommand NavigateToProductsCommand { get; }
public AsyncRelayCommand NavigateToSettingsCommand { get; }
public MainViewModel(
ICommonServices commonServices,
INavigationService navigationService,
ILogger<MainViewModel> logger)
: base(commonServices, logger)
{
_navigationService = navigationService;
NavigateToProductsCommand = new AsyncRelayCommand(NavigateToProductsAsync);
NavigateToSettingsCommand = new AsyncRelayCommand(NavigateToSettingsAsync);
}
private async Task NavigateToProductsAsync()
{
await _navigationService.NavigateAsync<ProductListViewModel>();
}
private async Task NavigateToSettingsAsync()
{
await _navigationService.NavigateAsync<SettingsViewModel>();
}
// Navigate with parameters
private async Task NavigateToProductDetailAsync(Product product)
{
await _navigationService.NavigateAsync<ProductDetailViewModel>(product);
}
// Modal navigation
private async Task ShowModalAsync()
{
await _navigationService.NavigateModalAsync<ModalViewModel>();
}
}
5. Theme Service
Apply dynamic themes with custom accent colors:
using ISynergy.Framework.Mvvm.Abstractions.Services;
using ISynergy.Framework.Core.Enumerations;
// Theme service is automatically configured during startup
// It reads theme preferences from ISettingsService
// To show theme selection to users:
public class SettingsViewModel : ViewModel
{
public AsyncRelayCommand ChangeThemeCommand { get; }
public SettingsViewModel(
ICommonServices commonServices,
ILogger<SettingsViewModel> logger)
: base(commonServices, logger)
{
ChangeThemeCommand = new AsyncRelayCommand(ChangeThemeAsync);
}
private async Task ChangeThemeAsync()
{
await CommonServices.DialogService
.ShowDialogAsync<ThemeWindow, ThemeViewModel, ThemeStyle>();
}
}
The theme service supports:
- Light and dark modes
- 40+ built-in accent colors
- Dynamic theme switching
- Platform-specific customization (Windows title bar, Android status bar)
6. Use Custom Controls
NavigationMenu
<ui:NavigationMenu ItemsSource="{Binding MenuItems}"
SelectedItem="{Binding SelectedMenuItem}"
IsExpanded="{Binding IsMenuExpanded}" />
ImageBrowser
<controls:ImageBrowser Images="{Binding ProductImages}"
SelectedImage="{Binding SelectedImage}"
AllowAdd="True"
AllowRemove="True" />
ErrorPresenter
<controls:ErrorPresenter Errors="{Binding ValidationErrors}"
IsVisible="{Binding HasErrors}" />
TabbedView
<ui:TabbedView>
<ui:TabbedView.Items>
<TabViewItem Title="General">
<local:GeneralSettingsView />
</TabViewItem>
<TabViewItem Title="Security">
<local:SecuritySettingsView />
</TabViewItem>
</ui:TabbedView.Items>
</ui:TabbedView>
Platform-Specific Features
Windows Integration
The MAUI framework provides Windows-specific extensions:
// In Platforms/Windows folder
using ISynergy.Framework.UI.Platforms.Windows.Extensions;
// Customize app window
var window = GetAppWindow();
window.SetIcon("Assets/icon.ico");
window.SetTitle("My Application");
// Apply theme colors to title bar
_themeService.ApplyTheme(); // Automatically updates title bar
Android Integration
Theme colors are automatically applied to Android status bar and action bar.
iOS/macOS Integration
Native navigation bar and status bar colors are synchronized with theme.
Value Converters
The MAUI framework includes 20+ value converters:
<Label IsVisible="{Binding IsActive, Converter={StaticResource BoolToVisibilityConverter}}" />
<Label Text="{Binding IsEnabled, Converter={StaticResource BoolToYesNoConverter}}" />
<Label Text="{Binding Amount, Converter={StaticResource DecimalToCurrencyConverter}}" />
<Label Text="{Binding Quantity, Converter={StaticResource IntegerToStringConverter}}" />
<Label Text="{Binding CreatedDate, Converter={StaticResource DateTimeToStringConverter}}" />
<Label Text="{Binding UpdatedDate, Converter={StaticResource DateTimeOffsetToLocalStringConverter}}" />
<Label IsVisible="{Binding Name, Converter={StaticResource StringNullOrEmptyToBoolConverter}}" />
<Label Text="{Binding Description, Converter={StaticResource StringToUpperConverter}}" />
<Label IsVisible="{Binding Items, Converter={StaticResource CollectionNullOrEmptyToBoolConverter}}" />
<Label Text="{Binding Items, Converter={StaticResource CollectionCountConverter}}" />
<BoxView Color="{Binding HexColor, Converter={StaticResource StringToColorConverter}}" />
<Picker ItemsSource="{Binding Source={StaticResource OrderStatusEnum}}"
SelectedItem="{Binding Status, Converter={StaticResource EnumToStringConverter}}" />
<Label Text="{Binding Id, Converter={StaticResource GuidToStringConverter}}" />
File Operations
File Service
using ISynergy.Framework.Mvvm.Abstractions.Services;
using ISynergy.Framework.Core.Models.Results;
public class DocumentViewModel : ViewModel
{
private readonly IFileService<FileResult> _fileService;
public DocumentViewModel(
ICommonServices commonServices,
IFileService<FileResult> fileService,
ILogger<DocumentViewModel> logger)
: base(commonServices, logger)
{
_fileService = fileService;
OpenFileCommand = new AsyncRelayCommand(OpenFileAsync);
SaveFileCommand = new AsyncRelayCommand(SaveFileAsync);
}
public AsyncRelayCommand OpenFileCommand { get; }
public AsyncRelayCommand SaveFileCommand { get; }
private async Task OpenFileAsync()
{
var file = await _fileService.BrowseFileAsync(
new[] { ".pdf", ".docx", ".txt" });
if (file is not null)
{
// Read file content
using var stream = await file.OpenReadAsync();
// Process file...
}
}
private async Task SaveFileAsync()
{
var file = await _fileService.SaveFileAsync(
"document.pdf",
"Documents",
new[] { ".pdf" });
if (file is not null)
{
// Write file content
using var stream = await file.OpenWriteAsync();
// Save content...
}
}
}
Camera Service
using ISynergy.Framework.Mvvm.Abstractions.Services;
public class ProfileViewModel : ViewModel
{
private readonly ICameraService _cameraService;
public AsyncRelayCommand TakePhotoCommand { get; }
public AsyncRelayCommand PickPhotoCommand { get; }
public ImageSource ProfileImage
{
get => GetValue<ImageSource>();
set => SetValue(value);
}
public ProfileViewModel(
ICommonServices commonServices,
ICameraService cameraService,
ILogger<ProfileViewModel> logger)
: base(commonServices, logger)
{
_cameraService = cameraService;
TakePhotoCommand = new AsyncRelayCommand(TakePhotoAsync);
PickPhotoCommand = new AsyncRelayCommand(PickPhotoAsync);
}
private async Task TakePhotoAsync()
{
var photo = await _cameraService.TakePhotoAsync();
if (photo is not null)
{
ProfileImage = ImageSource.FromStream(() => photo.OpenReadAsync().Result);
}
}
private async Task PickPhotoAsync()
{
var photo = await _cameraService.PickPhotoAsync();
if (photo is not null)
{
ProfileImage = ImageSource.FromStream(() => photo.OpenReadAsync().Result);
}
}
}
Behaviors
SelectAllOnFocusBehavior
<Entry Text="{Binding SearchText}">
<Entry.Behaviors>
<behaviors:SelectAllOnFocusBehavior />
</Entry.Behaviors>
</Entry>
Configuration
Application Features
Configure optional application features:
{
"ApplicationFeatures": {
"EnableAnalytics": true,
"EnableCrashReporting": true,
"EnableNotifications": true
},
"ClientApplicationOptions": {
"ApplicationName": "My Application",
"BaseUrl": "https://api.myapp.com",
"ApiVersion": "v1"
}
}
Font Configuration
The framework automatically configures multiple fonts:
- Segoe UI (Regular, Bold, SemiBold, Light, SemiLight)
- Open Sans (Regular, Medium, SemiBold)
- OpenDyslexic (Regular, Bold)
- Segoe MDL2 Assets (Icon font)
Best Practices
Use NavigateAsync for standard navigation and NavigateModalAsync for dialogs and overlays.
Always dispose ViewModels and unsubscribe from events in the Cleanup method to prevent memory leaks.
The dialog service implements circuit breaker pattern with automatic fallback to console/debug output if UI is not available.
Dialog Service Usage
- Always use dialog service instead of platform-specific alerts
- Dialog service includes comprehensive error handling
- Supports graceful degradation with multiple fallback mechanisms
- Prevents concurrent dialogs with semaphore locking
- Includes timeout and retry logic
Navigation Patterns
- Use
NavigateAsync<TViewModel>()for page navigation - Use
NavigateModalAsync<TViewModel>()for modals - Pass parameters through navigation methods
- Call
InitializeAsync()after navigation completes - Clean up resources in
OnNavigatedFrom()
Theme Management
- Theme is automatically applied on startup
- Theme changes are persisted in settings
- Platform-specific colors are synchronized
- Support both light and dark modes
- Use ThemeWindow for user selection
Performance Tips
- Use CollectionView instead of ListView for better performance
- Implement virtualization for large lists
- Dispose images and streams properly
- Use async/await for all I/O operations
- Leverage compiled bindings with x:DataType
Dependencies
- I-Synergy.Framework.UI - Base UI abstractions
- I-Synergy.Framework.Mvvm - MVVM framework
- Microsoft.Maui.Controls - MAUI controls
- Microsoft.Extensions.DependencyInjection - DI container
- Microsoft.Extensions.Configuration.Json - Configuration
- SkiaSharp - 2D graphics
Platform Requirements
- Android: API 21 (Lollipop) or higher
- iOS: iOS 11.0 or higher
- macOS: macOS 10.15 (Catalina) or higher
- Windows: Windows 10.0.19041.0 or higher
Documentation
For more information about the I-Synergy Framework:
Related Packages
- I-Synergy.Framework.UI - Base UI abstractions
- I-Synergy.Framework.Core - Core framework
- I-Synergy.Framework.Mvvm - MVVM framework
- I-Synergy.Framework.UI.WPF - WPF implementation
- I-Synergy.Framework.UI.WinUI - WinUI implementation
- I-Synergy.Framework.UI.Blazor - Blazor implementation
Support
For issues, questions, or contributions, please visit the GitHub repository.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0-android36.0 is compatible. net10.0-ios26.0 is compatible. net10.0-maccatalyst26.0 is compatible. net10.0-windows10.0.19041 is compatible. |
-
net10.0-android36.0
- I-Synergy.Framework.Mvvm (>= 2025.11029.11433.38-preview)
- I-Synergy.Framework.UI (>= 2025.11029.11433.38-preview)
- Microsoft.Extensions.Configuration (>= 10.0.0-rc.2.25502.107)
- Microsoft.Extensions.Configuration.Json (>= 10.0.0-rc.2.25502.107)
- Microsoft.Extensions.DependencyInjection (>= 10.0.0-rc.2.25502.107)
- Microsoft.Extensions.Logging (>= 10.0.0-rc.2.25502.107)
- Microsoft.Extensions.Logging.Debug (>= 10.0.0-rc.2.25502.107)
- Microsoft.Maui.Controls (>= 10.0.0-rc.2.25504.7)
- Microsoft.Maui.Controls.Compatibility (>= 10.0.0-rc.2.25504.7)
- SkiaSharp (>= 3.119.1)
- Xamarin.AndroidX.Lifecycle.Common.Java8 (>= 2.9.3)
- Xamarin.AndroidX.Lifecycle.LiveData (>= 2.9.3)
- Xamarin.AndroidX.Lifecycle.LiveData.Core (>= 2.9.3)
- Xamarin.AndroidX.Lifecycle.LiveData.Core.Ktx (>= 2.9.3)
- Xamarin.AndroidX.Lifecycle.Process (>= 2.9.3)
- Xamarin.AndroidX.Lifecycle.Runtime (>= 2.9.3)
- Xamarin.AndroidX.Lifecycle.Runtime.Android (>= 2.9.3)
- Xamarin.AndroidX.Lifecycle.Runtime.Ktx (>= 2.9.3)
- Xamarin.AndroidX.Lifecycle.Runtime.Ktx.Android (>= 2.9.3)
- Xamarin.AndroidX.Lifecycle.ViewModel.Ktx (>= 2.9.3)
- Xamarin.AndroidX.Lifecycle.ViewModelSavedState (>= 2.9.3)
- Xamarin.AndroidX.Lifecycle.ViewModelSavedState.Android (>= 2.9.3)
- Xamarin.AndroidX.SavedState.SavedState.Ktx (>= 1.3.2)
-
net10.0-ios26.0
- I-Synergy.Framework.Mvvm (>= 2025.11029.11433.38-preview)
- I-Synergy.Framework.UI (>= 2025.11029.11433.38-preview)
- Microsoft.Extensions.Configuration (>= 10.0.0-rc.2.25502.107)
- Microsoft.Extensions.Configuration.Json (>= 10.0.0-rc.2.25502.107)
- Microsoft.Extensions.DependencyInjection (>= 10.0.0-rc.2.25502.107)
- Microsoft.Extensions.Logging (>= 10.0.0-rc.2.25502.107)
- Microsoft.Extensions.Logging.Debug (>= 10.0.0-rc.2.25502.107)
- Microsoft.Maui.Controls (>= 10.0.0-rc.2.25504.7)
- Microsoft.Maui.Controls.Compatibility (>= 10.0.0-rc.2.25504.7)
- SkiaSharp (>= 3.119.1)
-
net10.0-maccatalyst26.0
- I-Synergy.Framework.Mvvm (>= 2025.11029.11433.38-preview)
- I-Synergy.Framework.UI (>= 2025.11029.11433.38-preview)
- Microsoft.Extensions.Configuration (>= 10.0.0-rc.2.25502.107)
- Microsoft.Extensions.Configuration.Json (>= 10.0.0-rc.2.25502.107)
- Microsoft.Extensions.DependencyInjection (>= 10.0.0-rc.2.25502.107)
- Microsoft.Extensions.Logging (>= 10.0.0-rc.2.25502.107)
- Microsoft.Extensions.Logging.Debug (>= 10.0.0-rc.2.25502.107)
- Microsoft.Maui.Controls (>= 10.0.0-rc.2.25504.7)
- Microsoft.Maui.Controls.Compatibility (>= 10.0.0-rc.2.25504.7)
- SkiaSharp (>= 3.119.1)
-
net10.0-windows10.0.19041
- I-Synergy.Framework.Mvvm (>= 2025.11029.11433.38-preview)
- I-Synergy.Framework.UI (>= 2025.11029.11433.38-preview)
- Microsoft.Extensions.Configuration (>= 10.0.0-rc.2.25502.107)
- Microsoft.Extensions.Configuration.Json (>= 10.0.0-rc.2.25502.107)
- Microsoft.Extensions.DependencyInjection (>= 10.0.0-rc.2.25502.107)
- Microsoft.Extensions.Logging (>= 10.0.0-rc.2.25502.107)
- Microsoft.Extensions.Logging.Debug (>= 10.0.0-rc.2.25502.107)
- Microsoft.Maui.Controls (>= 10.0.0-rc.2.25504.7)
- Microsoft.Maui.Controls.Compatibility (>= 10.0.0-rc.2.25504.7)
- SkiaSharp (>= 3.119.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on I-Synergy.Framework.UI.Maui:
| Package | Downloads |
|---|---|
|
I-Synergy.Framework.Synchronization.Maui
I-Synergy Synchronization Client Framework for .Net Maui |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2025.11102.11228.52-preview | 0 | 11/2/2025 |
| 2025.11102.10309.42-preview | 0 | 11/2/2025 |
| 2025.11029.11433.38-preview | 109 | 10/29/2025 |
| 2025.11029.10201.38-preview | 115 | 10/29/2025 |
| 2025.11027.11947.55-preview | 119 | 10/27/2025 |
| 2025.11022.12207.12-preview | 111 | 10/22/2025 |
| 2025.11019.12053.37-preview | 121 | 10/19/2025 |
| 2025.11016.11750.24-preview | 111 | 10/16/2025 |
| 2025.11015.10219.44-preview | 117 | 10/15/2025 |
| 2025.11014.10245.12-preview | 121 | 10/14/2025 |
| 2025.11012.10130.11-preview | 61 | 10/12/2025 |
| 2025.11010.10052.52-preview | 116 | 10/9/2025 |
| 2024.1339.1 | 239 | 12/4/2024 |
| 2024.1336.1 | 213 | 12/1/2024 |
| 2024.1332.1 | 223 | 11/27/2024 |
| 2024.1330.1 | 197 | 11/25/2024 |
| 2024.1328.1 | 230 | 11/23/2024 |
| 2024.1325.1 | 203 | 11/20/2024 |
| 2024.1323.1 | 181 | 11/18/2024 |
| 2024.1316.1 | 150 | 11/11/2024 |
| 2024.1307.1 | 166 | 11/2/2024 |
| 2024.1300.1 | 152 | 10/26/2024 |
| 2024.1294.1 | 173 | 10/20/2024 |
| 2024.1290.1 | 182 | 10/16/2024 |
| 2024.1283.1 | 182 | 10/8/2024 |
| 2024.1282.1 | 195 | 10/8/2024 |
| 2024.1278.1 | 199 | 10/4/2024 |
| 2024.1277.1 | 206 | 10/3/2024 |
| 2024.1275.2 | 181 | 10/1/2024 |
| 2024.1275.1 | 210 | 10/1/2024 |
| 2024.1274.1 | 207 | 9/30/2024 |
| 2024.1263.1 | 209 | 9/19/2024 |
| 2024.1261.1 | 203 | 9/17/2024 |
| 2024.1258.1 | 196 | 9/13/2024 |
| 2024.1257.1 | 214 | 9/13/2024 |
| 2024.1256.1 | 175 | 9/12/2024 |
| 2024.1254.1 | 219 | 9/10/2024 |
| 2024.1250.1 | 254 | 9/6/2024 |
| 2024.1249.1 | 214 | 9/5/2024 |
| 2024.1246.1 | 204 | 9/2/2024 |
| 2024.1245.1 | 225 | 9/1/2024 |
| 2024.1237.1 | 216 | 8/24/2024 |
| 2024.1235.0.1-preview | 180 | 8/23/2024 |
| 2024.1230.1 | 246 | 8/18/2024 |
| 2024.1229.1 | 229 | 8/16/2024 |
| 2024.1228.1 | 244 | 8/15/2024 |
| 2024.1222.1 | 195 | 8/8/2024 |
| 2024.1221.1 | 156 | 8/7/2024 |
| 2024.1221.0.2-preview | 145 | 8/8/2024 |
| 2024.1221.0.1-preview | 170 | 8/8/2024 |
| 2024.1220.1 | 154 | 8/7/2024 |
| 2024.1219.0.2-preview | 124 | 8/6/2024 |
| 2024.1219.0.1-preview | 111 | 8/6/2024 |
| 2024.1217.0.2-preview | 118 | 8/4/2024 |
| 2024.1217.0.1-preview | 127 | 8/4/2024 |
| 2024.1216.0.2-preview | 102 | 8/3/2024 |
| 2024.1216.0.1-preview | 116 | 8/3/2024 |
| 2024.1208.0.1-preview | 163 | 7/26/2024 |
| 2024.1207.0.7-preview | 125 | 7/25/2024 |
| 2024.1207.0.5-preview | 133 | 7/25/2024 |
| 2024.1166.1 | 212 | 6/14/2024 |
| 2024.1165.1 | 177 | 6/13/2024 |
| 2024.1164.1 | 192 | 6/12/2024 |
| 2024.1162.1 | 191 | 6/10/2024 |
| 2024.1158.1 | 217 | 6/6/2024 |
| 2024.1156.1 | 194 | 6/4/2024 |
| 2024.1152.1 | 221 | 5/31/2024 |
| 2024.1151.1 | 210 | 5/29/2024 |
| 2024.1150.2 | 183 | 5/29/2024 |
| 2024.1150.1 | 178 | 5/29/2024 |
| 2024.1149.1 | 178 | 5/28/2024 |
| 2024.1147.1 | 176 | 5/26/2024 |
| 2024.1146.2 | 177 | 5/25/2024 |
| 2024.1146.1 | 209 | 5/25/2024 |
| 2024.1145.1 | 208 | 5/24/2024 |
| 2024.1135.2 | 203 | 5/14/2024 |
| 2024.1135.1 | 185 | 5/14/2024 |
| 2024.1134.1 | 193 | 5/13/2024 |
| 2024.1130.1 | 188 | 5/9/2024 |
| 2024.1123.1 | 160 | 5/2/2024 |
| 2024.1121.1 | 175 | 4/30/2024 |
| 2024.1114.1 | 224 | 4/22/2024 |
| 2024.1113.0.5-preview | 155 | 4/22/2024 |
| 2024.1113.0.3-preview | 147 | 4/22/2024 |
| 2024.1113.0.2-preview | 162 | 4/22/2024 |
| 2024.1113.0.1-preview | 139 | 4/22/2024 |
| 2024.1108.0.1-preview | 166 | 4/17/2024 |
| 2024.1107.0.1-preview | 140 | 4/16/2024 |
| 2024.1094.2 | 200 | 4/3/2024 |
| 2024.1094.1 | 162 | 4/3/2024 |
| 2024.1092.1 | 181 | 4/1/2024 |
| 2024.1088.1 | 216 | 3/28/2024 |
| 2024.1085.1 | 193 | 3/25/2024 |
| 2024.1080.2 | 205 | 3/20/2024 |
| 2024.1080.1 | 184 | 3/20/2024 |
| 2024.1078.1 | 205 | 3/18/2024 |
| 2024.1077.1 | 184 | 3/17/2024 |
| 2024.1073.1 | 208 | 3/13/2024 |
| 2024.1070.1 | 228 | 3/10/2024 |
| 2024.1069.1 | 218 | 3/9/2024 |
| 2024.1068.1 | 214 | 3/8/2024 |
| 2024.1066.2 | 204 | 3/6/2024 |
| 2024.1066.1 | 184 | 3/6/2024 |
| 2024.1065.1 | 211 | 3/5/2024 |
| 2024.1065.0.1-preview | 169 | 3/5/2024 |
| 2024.1063.2 | 197 | 3/3/2024 |
| 2024.1063.1 | 210 | 3/3/2024 |
| 2024.1062.1 | 192 | 3/2/2024 |
| 2024.1061.2 | 196 | 3/1/2024 |
| 2024.1061.1 | 203 | 3/1/2024 |
| 2024.1060.2 | 209 | 2/29/2024 |
| 2024.1060.1 | 212 | 2/29/2024 |
| 2024.1060.0.5-preview | 160 | 2/29/2024 |
| 2024.1060.0.3-preview | 151 | 2/29/2024 |
| 2024.1059.0.1-preview | 154 | 2/28/2024 |
| 2024.1058.1 | 200 | 2/27/2024 |
| 2024.1056.1 | 179 | 2/25/2024 |
| 2024.1055.1 | 210 | 2/24/2024 |
| 2024.1052.1 | 202 | 2/21/2024 |
| 2024.1050.2 | 228 | 2/20/2024 |
| 2024.1050.1 | 201 | 2/19/2024 |
| 2024.1049.1 | 215 | 2/18/2024 |
| 2024.1048.1 | 173 | 2/17/2024 |
| 2024.1047.1 | 172 | 2/16/2024 |
| 2024.1035.1 | 215 | 2/4/2024 |
| 2024.1034.2 | 196 | 2/3/2024 |
| 2024.1029.1 | 192 | 1/29/2024 |
| 2024.1023.1 | 197 | 1/23/2024 |
| 2024.1022.1 | 204 | 1/22/2024 |
| 2024.1020.1 | 172 | 1/20/2024 |
| 2024.1019.1 | 177 | 1/19/2024 |
| 2024.1017.1 | 183 | 1/17/2024 |
| 2024.1012.1 | 222 | 1/12/2024 |
| 2024.1010.1 | 205 | 1/10/2024 |
| 2024.1008.1 | 216 | 1/8/2024 |
| 2024.1007.1 | 245 | 1/7/2024 |
| 2024.1005.1 | 197 | 1/5/2024 |
| 2024.1004.1 | 228 | 1/4/2024 |
| 2023.1365.1 | 203 | 12/31/2023 |
| 2023.1362.1 | 208 | 12/28/2023 |
| 2023.1361.1 | 164 | 12/27/2023 |
| 2023.1359.1 | 216 | 12/25/2023 |
| 2023.1358.1 | 186 | 12/24/2023 |
| 2023.1357.1 | 198 | 12/23/2023 |
| 2023.1342.1 | 239 | 12/8/2023 |
| 2023.1336.1 | 176 | 12/2/2023 |
| 2023.1332.1 | 177 | 11/28/2023 |
| 2023.1330.1 | 195 | 11/26/2023 |
| 2023.1325.1 | 201 | 11/21/2023 |
| 2023.1323.1 | 163 | 11/19/2023 |
| 2023.1320.1 | 189 | 11/17/2023 |
| 2023.1318.1 | 155 | 11/15/2023 |
| 2023.1317.1 | 126 | 11/13/2023 |
| 2023.1307.1 | 139 | 11/3/2023 |
| 2023.1305.1 | 144 | 11/1/2023 |
| 2023.1304.1 | 139 | 10/31/2023 |
| 2023.1294.1 | 131 | 10/21/2023 |
| 2023.1290.1 | 129 | 10/16/2023 |
| 2023.1289.1 | 164 | 10/16/2023 |
| 2023.1284.1 | 167 | 10/11/2023 |
| 2023.1276.1 | 157 | 10/3/2023 |
| 2023.1275.1 | 169 | 10/2/2023 |
| 2023.1272.1 | 154 | 9/29/2023 |
| 2023.1269.1 | 111 | 9/26/2023 |
| 2023.1242.1 | 217 | 8/30/2023 |
| 2023.1231.1 | 245 | 8/19/2023 |
| 2023.1229.1 | 210 | 8/17/2023 |
| 2023.1228.1 | 208 | 8/16/2023 |
| 2023.1227.1 | 215 | 8/15/2023 |
| 2023.1224.2 | 219 | 8/12/2023 |
| 2023.1224.1 | 221 | 8/12/2023 |
| 2023.1213.2 | 240 | 8/1/2023 |
| 2023.1213.1 | 267 | 8/1/2023 |
| 2023.1209.1 | 240 | 7/27/2023 |
| 2023.1201.1 | 252 | 7/20/2023 |
| 2023.1197.1 | 243 | 7/16/2023 |
| 2023.1178.1 | 214 | 6/27/2023 |
| 2023.1175.1 | 233 | 6/24/2023 |
| 2023.1174.1 | 216 | 6/22/2023 |
| 2023.1169.1 | 234 | 6/18/2023 |
| 2023.1165.1 | 218 | 6/14/2023 |
| 2023.1161.1 | 244 | 6/11/2023 |
| 2023.1159.1 | 230 | 6/7/2023 |
| 2023.1157.1 | 265 | 6/6/2023 |
| 2023.1146.1 | 246 | 5/27/2023 |
| 2023.1139.1 | 244 | 5/19/2023 |
| 2023.1137.1 | 249 | 5/17/2023 |
| 2023.1136.1 | 272 | 5/16/2023 |
| 2023.1118.1 | 277 | 4/28/2023 |
| 2023.1111.1 | 283 | 4/21/2023 |
| 2023.1110.1 | 264 | 4/20/2023 |
| 2023.1105.1 | 267 | 4/15/2023 |
| 2023.1103.1 | 283 | 4/13/2023 |
| 2023.1102.1 | 315 | 4/12/2023 |
| 2023.1101.1 | 320 | 4/11/2023 |
| 2023.1090.1 | 294 | 3/31/2023 |
| 2023.1089.1 | 303 | 3/30/2023 |
| 2023.1088.1 | 288 | 3/29/2023 |
| 2023.1082.1 | 332 | 3/23/2023 |
| 2023.1078.1 | 328 | 3/19/2023 |
| 2023.1075.1 | 330 | 3/16/2023 |
| 2023.1070.1 | 346 | 3/11/2023 |
| 2023.1069.1 | 311 | 3/10/2023 |
| 2023.1064.1 | 355 | 3/5/2023 |
| 2023.1060.1 | 337 | 3/1/2023 |
| 2023.1057.1 | 366 | 2/26/2023 |
| 2023.1046.1 | 337 | 2/15/2023 |
| 2023.1043.2 | 365 | 2/12/2023 |
| 2023.1043.1 | 357 | 2/12/2023 |
| 2023.1042.1 | 370 | 2/11/2023 |
| 2023.1041.1 | 364 | 2/10/2023 |
| 2023.1039.1 | 382 | 2/8/2023 |
| 2023.1036.1 | 365 | 2/5/2023 |
| 2023.1035.1 | 396 | 2/4/2023 |
| 2023.1033.1 | 391 | 2/2/2023 |
| 2023.1030.1 | 405 | 1/30/2023 |
| 2023.1028.1 | 397 | 1/28/2023 |
| 2023.1026.1 | 397 | 1/26/2023 |
| 2023.1025.1 | 413 | 1/25/2023 |
| 2023.1024.1 | 409 | 1/24/2023 |
| 2023.1023.1 | 385 | 1/23/2023 |