diff --git a/XP.Common/Controls/ImageHistogram/ChartRenderer.cs b/XP.Common/Controls/ImageHistogram/ChartRenderer.cs
new file mode 100644
index 0000000..bf242a4
--- /dev/null
+++ b/XP.Common/Controls/ImageHistogram/ChartRenderer.cs
@@ -0,0 +1,245 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Telerik.Windows.Controls;
+using Telerik.Windows.Controls.ChartView;
+
+namespace XP.Common.Controls.ImageHistogram
+{
+ ///
+ /// RadChartView 渲染适配器 | RadChartView rendering adapter
+ /// 负责将直方图频次数据渲染到 Telerik RadCartesianChart 控件
+ ///
+ internal sealed class ChartRenderer
+ {
+ private readonly RadCartesianChart _chart;
+ private readonly BarSeries _barSeries;
+ private readonly LinearAxis _xAxis;
+
+ ///
+ /// 16 位数据聚合因子 | 16-bit data aggregation factor
+ ///
+ private const int AggregationFactor = 256;
+
+ ///
+ /// 构造函数,接收 RadCartesianChart 实例 | Constructor, receives RadCartesianChart instance
+ ///
+ /// 图表控件实例 | Chart control instance
+ /// 柱状图系列 | Bar series
+ /// X 轴 | X axis
+ public ChartRenderer(RadCartesianChart chart, BarSeries barSeries, LinearAxis xAxis)
+ {
+ _chart = chart ?? throw new ArgumentNullException(nameof(chart));
+ _barSeries = barSeries ?? throw new ArgumentNullException(nameof(barSeries));
+ _xAxis = xAxis ?? throw new ArgumentNullException(nameof(xAxis));
+ }
+
+ ///
+ /// 更新直方图数据 | Update histogram data
+ ///
+ /// 频次数组(256 或 65536 长度)| Frequency array (256 or 65536 length)
+ /// 是否使用对数 Y 轴 | Whether to use logarithmic Y axis
+ public void UpdateData(long[] histogram, bool isLogarithmic)
+ {
+ if (histogram == null || histogram.Length == 0)
+ return;
+
+ // 确定是否需要聚合(16 位数据)| Determine if aggregation needed (16-bit data)
+ long[] displayData;
+ int xAxisMax;
+
+ if (histogram.Length == 65536)
+ {
+ // 16 位数据聚合为 256 个柱体 | Aggregate 16-bit data to 256 bars
+ displayData = Aggregate16BitHistogram(histogram);
+ xAxisMax = 65535;
+ }
+ else
+ {
+ // 8 位数据直接显示 | Display 8-bit data directly
+ displayData = histogram;
+ xAxisMax = 255;
+ }
+
+ // 设置 X 轴范围 | Set X axis range
+ _xAxis.Minimum = 0;
+ _xAxis.Maximum = xAxisMax;
+
+ // 构建数据点 | Build data points
+ var dataPoints = new List();
+
+ if (isLogarithmic)
+ {
+ // 对数模式:频次为 0 的不绘制 | Logarithmic mode: skip zero frequency
+ for (int i = 0; i < displayData.Length; i++)
+ {
+ if (displayData[i] > 0)
+ {
+ double xValue = histogram.Length == 65536
+ ? i * AggregationFactor + AggregationFactor / 2.0
+ : i;
+ dataPoints.Add(new HistogramDataPoint
+ {
+ GrayLevel = xValue,
+ Frequency = displayData[i]
+ });
+ }
+ }
+ }
+ else
+ {
+ // 线性模式:所有灰度级别都绘制 | Linear mode: draw all gray levels
+ for (int i = 0; i < displayData.Length; i++)
+ {
+ double xValue = histogram.Length == 65536
+ ? i * AggregationFactor + AggregationFactor / 2.0
+ : i;
+ dataPoints.Add(new HistogramDataPoint
+ {
+ GrayLevel = xValue,
+ Frequency = displayData[i]
+ });
+ }
+ }
+
+ // 更新图表数据 | Update chart data
+ _barSeries.ItemsSource = dataPoints;
+
+ // 设置 Y 轴范围 | Set Y axis range
+ UpdateYAxis(displayData, isLogarithmic);
+ }
+
+ ///
+ /// 清空图表,恢复初始状态 | Clear chart, restore initial state
+ ///
+ public void Clear()
+ {
+ _barSeries.ItemsSource = null;
+
+ // X 轴范围重置为 0-255 | Reset X axis range to 0-255
+ _xAxis.Minimum = 0;
+ _xAxis.Maximum = 255;
+
+ // Y 轴范围重置为 0-1 | Reset Y axis range to 0-1
+ SetYAxisRange(0, 1, isLogarithmic: false);
+ }
+
+ ///
+ /// 获取当前数据点数量 | Get current data point count
+ ///
+ public int DataPointCount
+ {
+ get
+ {
+ if (_barSeries.ItemsSource is ICollection collection)
+ return collection.Count;
+ if (_barSeries.ItemsSource is IEnumerable enumerable)
+ return enumerable.Count();
+ return 0;
+ }
+ }
+
+ ///
+ /// 将 65536 长度的频次数组聚合为 256 个柱体 | Aggregate 65536-length array to 256 bars
+ ///
+ private static long[] Aggregate16BitHistogram(long[] histogram)
+ {
+ var aggregated = new long[256];
+ for (int i = 0; i < 256; i++)
+ {
+ long sum = 0;
+ int startIndex = i * AggregationFactor;
+ for (int j = 0; j < AggregationFactor; j++)
+ {
+ sum += histogram[startIndex + j];
+ }
+ aggregated[i] = sum;
+ }
+ return aggregated;
+ }
+
+ ///
+ /// 更新 Y 轴范围 | Update Y axis range
+ ///
+ private void UpdateYAxis(long[] displayData, bool isLogarithmic)
+ {
+ long maxValue = 0;
+ for (int i = 0; i < displayData.Length; i++)
+ {
+ if (displayData[i] > maxValue)
+ maxValue = displayData[i];
+ }
+
+ if (maxValue == 0)
+ maxValue = 1;
+
+ SetYAxisRange(0, maxValue, isLogarithmic);
+ }
+
+ ///
+ /// 设置 Y 轴范围和刻度类型 | Set Y axis range and scale type
+ ///
+ private void SetYAxisRange(double minimum, double maximum, bool isLogarithmic)
+ {
+ // 获取或创建 Y 轴 | Get or create Y axis
+ var verticalAxis = _chart.VerticalAxis;
+
+ if (isLogarithmic)
+ {
+ // 对数刻度 | Logarithmic scale
+ if (verticalAxis is LogarithmicAxis logAxis)
+ {
+ logAxis.Minimum = 1;
+ logAxis.Maximum = maximum;
+ logAxis.LogarithmBase = 10;
+ }
+ else
+ {
+ // 需要切换为对数轴 | Need to switch to logarithmic axis
+ var newLogAxis = new LogarithmicAxis
+ {
+ Minimum = 1,
+ Maximum = maximum,
+ LogarithmBase = 10
+ };
+ _chart.VerticalAxis = newLogAxis;
+ }
+ }
+ else
+ {
+ // 线性刻度 | Linear scale
+ if (verticalAxis is LinearAxis linearAxis)
+ {
+ linearAxis.Minimum = minimum;
+ linearAxis.Maximum = maximum;
+ }
+ else
+ {
+ // 需要切换为线性轴 | Need to switch to linear axis
+ var newLinearAxis = new LinearAxis
+ {
+ Minimum = minimum,
+ Maximum = maximum
+ };
+ _chart.VerticalAxis = newLinearAxis;
+ }
+ }
+ }
+ }
+
+ ///
+ /// 直方图数据点模型 | Histogram data point model
+ ///
+ internal class HistogramDataPoint
+ {
+ ///
+ /// 灰度级别(X 轴值)| Gray level (X axis value)
+ ///
+ public double GrayLevel { get; set; }
+
+ ///
+ /// 像素频次(Y 轴值)| Pixel frequency (Y axis value)
+ ///
+ public long Frequency { get; set; }
+ }
+}
diff --git a/XP.Common/Controls/ImageHistogram/FrameThrottler.cs b/XP.Common/Controls/ImageHistogram/FrameThrottler.cs
new file mode 100644
index 0000000..bb3c598
--- /dev/null
+++ b/XP.Common/Controls/ImageHistogram/FrameThrottler.cs
@@ -0,0 +1,207 @@
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace XP.Common.Controls.ImageHistogram
+{
+ ///
+ /// 帧率限流器,确保计算频率不超过 MaxFrameRate | Frame rate throttler
+ /// 支持从任意线程调用,使用 lock 保护内部状态
+ ///
+ internal sealed class FrameThrottler : IDisposable
+ {
+ private readonly object _lock = new();
+ private DateTime _lastProcessTime = DateTime.MinValue;
+ private Action? _pendingAction;
+ private CancellationTokenSource? _delayCts;
+ private bool _isProcessing;
+ private bool _disposed;
+ private int _maxFrameRate = 15;
+
+ ///
+ /// 最大刷新帧率(fps),有效范围 1-60,超出范围自动钳位 | Max frame rate (fps), valid range 1-60, auto-clamped
+ ///
+ public int MaxFrameRate
+ {
+ get => _maxFrameRate;
+ set => _maxFrameRate = Math.Clamp(value, 1, 60);
+ }
+
+ ///
+ /// 获取当前帧间隔(毫秒)| Get current frame interval (ms)
+ ///
+ private double FrameIntervalMs => 1000.0 / _maxFrameRate;
+
+ ///
+ /// 提交一帧计算动作 | Submit a frame compute action
+ /// 若未超过帧率限制则立即执行,否则缓存最新帧并延迟触发
+ ///
+ /// 计算动作 | Compute action
+ /// 是否被立即接受处理 | Whether it was immediately accepted
+ public bool TrySubmit(Action computeAction)
+ {
+ if (_disposed || computeAction == null)
+ return false;
+
+ lock (_lock)
+ {
+ var now = DateTime.UtcNow;
+ var elapsed = (now - _lastProcessTime).TotalMilliseconds;
+
+ if (elapsed >= FrameIntervalMs && !_isProcessing)
+ {
+ // 已超过间隔且无正在处理的任务,立即执行 | Interval exceeded and no processing, execute immediately
+ _isProcessing = true;
+ _lastProcessTime = now;
+ ExecuteAction(computeAction);
+ return true;
+ }
+ else
+ {
+ // 未超过间隔或正在处理中,缓存最新帧(丢弃之前的中间帧)| Cache latest frame, discard previous
+ _pendingAction = computeAction;
+ ScheduleDelayedExecution(elapsed);
+ return false;
+ }
+ }
+ }
+
+ ///
+ /// 执行计算动作(异步,完成后检查待处理帧)| Execute compute action asynchronously
+ ///
+ private void ExecuteAction(Action action)
+ {
+ Task.Run(() =>
+ {
+ try
+ {
+ action.Invoke();
+ }
+ catch
+ {
+ // 异常不外抛 | Do not propagate exceptions
+ }
+ finally
+ {
+ OnActionCompleted();
+ }
+ });
+ }
+
+ ///
+ /// 计算动作完成后的回调 | Callback after compute action completes
+ ///
+ private void OnActionCompleted()
+ {
+ Action? nextAction = null;
+
+ lock (_lock)
+ {
+ _isProcessing = false;
+
+ if (_pendingAction != null && !_disposed)
+ {
+ var now = DateTime.UtcNow;
+ var elapsed = (now - _lastProcessTime).TotalMilliseconds;
+
+ if (elapsed >= FrameIntervalMs)
+ {
+ // 间隔已到,立即执行待处理帧 | Interval reached, execute pending frame
+ nextAction = _pendingAction;
+ _pendingAction = null;
+ _isProcessing = true;
+ _lastProcessTime = now;
+ }
+ // 否则等待延迟触发 | Otherwise wait for delayed trigger
+ }
+ }
+
+ if (nextAction != null)
+ {
+ ExecuteAction(nextAction);
+ }
+ }
+
+ ///
+ /// 安排延迟执行(等待帧间隔到期后处理最新帧)| Schedule delayed execution
+ ///
+ private void ScheduleDelayedExecution(double elapsedMs)
+ {
+ // 取消之前的延迟任务 | Cancel previous delay task
+ _delayCts?.Cancel();
+ _delayCts?.Dispose();
+ _delayCts = new CancellationTokenSource();
+ var token = _delayCts.Token;
+
+ var delayMs = Math.Max(0, FrameIntervalMs - elapsedMs);
+
+ Task.Run(async () =>
+ {
+ try
+ {
+ await Task.Delay((int)delayMs, token);
+
+ if (token.IsCancellationRequested)
+ return;
+
+ Action? actionToExecute = null;
+
+ lock (_lock)
+ {
+ if (_pendingAction != null && !_isProcessing && !_disposed)
+ {
+ actionToExecute = _pendingAction;
+ _pendingAction = null;
+ _isProcessing = true;
+ _lastProcessTime = DateTime.UtcNow;
+ }
+ }
+
+ if (actionToExecute != null)
+ {
+ ExecuteAction(actionToExecute);
+ }
+ }
+ catch (OperationCanceledException)
+ {
+ // 延迟被取消,正常情况 | Delay cancelled, normal case
+ }
+ catch
+ {
+ // 异常不外抛 | Do not propagate exceptions
+ }
+ });
+ }
+
+ ///
+ /// 取消所有待处理任务 | Cancel all pending tasks
+ ///
+ public void Cancel()
+ {
+ lock (_lock)
+ {
+ _pendingAction = null;
+ _delayCts?.Cancel();
+ _delayCts?.Dispose();
+ _delayCts = null;
+ }
+ }
+
+ ///
+ /// 释放所有资源 | Dispose all resources
+ ///
+ public void Dispose()
+ {
+ if (_disposed) return;
+ _disposed = true;
+
+ lock (_lock)
+ {
+ _pendingAction = null;
+ _delayCts?.Cancel();
+ _delayCts?.Dispose();
+ _delayCts = null;
+ }
+ }
+ }
+}
diff --git a/XP.Common/Controls/ImageHistogram/HistogramEngine.cs b/XP.Common/Controls/ImageHistogram/HistogramEngine.cs
new file mode 100644
index 0000000..cafa8c7
--- /dev/null
+++ b/XP.Common/Controls/ImageHistogram/HistogramEngine.cs
@@ -0,0 +1,211 @@
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using SixLabors.ImageSharp;
+using SixLabors.ImageSharp.PixelFormats;
+
+namespace XP.Common.Controls.ImageHistogram
+{
+ ///
+ /// 直方图后台计算引擎 | Histogram background computation engine
+ /// 负责在后台线程中执行灰度值遍历和统计计算
+ ///
+ internal sealed class HistogramEngine : IDisposable
+ {
+ ///
+ /// 单帧计算超时时间(毫秒)| Single frame computation timeout (ms)
+ ///
+ private const int ComputeTimeoutMs = 5000;
+
+ private CancellationTokenSource? _timeoutCts;
+ private readonly object _lock = new();
+ private bool _disposed;
+
+ ///
+ /// 从 Image<Rgba32> 计算灰度直方图 | Compute histogram from Image<Rgba32>
+ /// 使用 ITU-R BT.601 亮度公式:Gray = 0.299R + 0.587G + 0.114B
+ ///
+ /// 输入图像 | Input image
+ /// 取消令牌 | Cancellation token
+ /// 256 长度的频次数组,失败返回 null | 256-length frequency array, null on failure
+ public Task ComputeAsync(Image image, CancellationToken ct)
+ {
+ if (image == null)
+ return Task.FromResult(null);
+
+ // 创建超时令牌 | Create timeout token
+ var linkedCts = CreateLinkedTimeoutToken(ct);
+ var linkedToken = linkedCts.Token;
+
+ return Task.Run(() =>
+ {
+ try
+ {
+ var width = image.Width;
+ var height = image.Height;
+ var histogram = new long[256];
+
+ // 遍历像素,使用亮度公式计算灰度值 | Iterate pixels, compute grayscale using luminance formula
+ for (int y = 0; y < height; y++)
+ {
+ linkedToken.ThrowIfCancellationRequested();
+
+ for (int x = 0; x < width; x++)
+ {
+ var pixel = image[x, y];
+ // ITU-R BT.601 亮度公式 | ITU-R BT.601 luminance formula
+ var gray = (int)(0.299 * pixel.R + 0.587 * pixel.G + 0.114 * pixel.B);
+ // 钳位到 0-255 范围 | Clamp to 0-255 range
+ gray = Math.Clamp(gray, 0, 255);
+ histogram[gray]++;
+ }
+ }
+
+ return (long[]?)histogram;
+ }
+ catch (OperationCanceledException)
+ {
+ // 超时或取消,返回 null | Timeout or cancelled, return null
+ return null;
+ }
+ catch
+ {
+ // 所有异常内部捕获,不向外抛出 | Catch all exceptions internally
+ return null;
+ }
+ finally
+ {
+ linkedCts.Dispose();
+ }
+ }, linkedToken);
+ }
+
+ ///
+ /// 从原始字节数组计算灰度直方图 | Compute histogram from raw byte array
+ ///
+ /// 原始像素数据 | Raw pixel data
+ /// 图像宽度 | Image width
+ /// 图像高度 | Image height
+ /// 位深度(8 或 16)| Bit depth (8 or 16)
+ /// 取消令牌 | Cancellation token
+ /// 频次数组(8位:256长度,16位:65536长度),失败返回 null | Frequency array, null on failure
+ public Task ComputeAsync(byte[] rawData, int width, int height, int bitDepth, CancellationToken ct)
+ {
+ // 参数有效性验证 | Parameter validation
+ if (rawData == null || width <= 0 || height <= 0)
+ return Task.FromResult(null);
+
+ if (bitDepth != 8 && bitDepth != 16)
+ return Task.FromResult(null);
+
+ int expectedLength = bitDepth == 8 ? width * height : width * height * 2;
+ if (rawData.Length != expectedLength)
+ return Task.FromResult(null);
+
+ // 创建超时令牌 | Create timeout token
+ var linkedCts = CreateLinkedTimeoutToken(ct);
+ var linkedToken = linkedCts.Token;
+
+ return Task.Run(() =>
+ {
+ try
+ {
+ if (bitDepth == 8)
+ {
+ return ComputeHistogram8Bit(rawData, width, height, linkedToken);
+ }
+ else
+ {
+ return ComputeHistogram16Bit(rawData, width, height, linkedToken);
+ }
+ }
+ catch (OperationCanceledException)
+ {
+ return null;
+ }
+ catch
+ {
+ return null;
+ }
+ finally
+ {
+ linkedCts.Dispose();
+ }
+ }, linkedToken);
+ }
+
+ ///
+ /// 计算 8 位灰度直方图 | Compute 8-bit grayscale histogram
+ ///
+ private static long[]? ComputeHistogram8Bit(byte[] rawData, int width, int height, CancellationToken ct)
+ {
+ var histogram = new long[256];
+ int totalPixels = width * height;
+
+ for (int i = 0; i < totalPixels; i++)
+ {
+ if (i % 65536 == 0)
+ ct.ThrowIfCancellationRequested();
+
+ histogram[rawData[i]]++;
+ }
+
+ return histogram;
+ }
+
+ ///
+ /// 计算 16 位灰度直方图 | Compute 16-bit grayscale histogram
+ ///
+ private static long[]? ComputeHistogram16Bit(byte[] rawData, int width, int height, CancellationToken ct)
+ {
+ var histogram = new long[65536];
+ int totalPixels = width * height;
+
+ for (int i = 0; i < totalPixels; i++)
+ {
+ if (i % 65536 == 0)
+ ct.ThrowIfCancellationRequested();
+
+ // 小端序读取 16 位值 | Read 16-bit value in little-endian
+ int offset = i * 2;
+ ushort value = (ushort)(rawData[offset] | (rawData[offset + 1] << 8));
+ histogram[value]++;
+ }
+
+ return histogram;
+ }
+
+ ///
+ /// 创建带超时的链接取消令牌 | Create linked cancellation token with timeout
+ ///
+ private CancellationTokenSource CreateLinkedTimeoutToken(CancellationToken externalToken)
+ {
+ var timeoutCts = new CancellationTokenSource(ComputeTimeoutMs);
+ var linkedCts = CancellationTokenSource.CreateLinkedTokenSource(externalToken, timeoutCts.Token);
+
+ lock (_lock)
+ {
+ _timeoutCts?.Dispose();
+ _timeoutCts = timeoutCts;
+ }
+
+ return linkedCts;
+ }
+
+ ///
+ /// 释放资源 | Dispose resources
+ ///
+ public void Dispose()
+ {
+ if (_disposed) return;
+ _disposed = true;
+
+ lock (_lock)
+ {
+ _timeoutCts?.Cancel();
+ _timeoutCts?.Dispose();
+ _timeoutCts = null;
+ }
+ }
+ }
+}
diff --git a/XP.Common/Controls/ImageHistogram/ImageHistogramControl.xaml b/XP.Common/Controls/ImageHistogram/ImageHistogramControl.xaml
new file mode 100644
index 0000000..4000334
--- /dev/null
+++ b/XP.Common/Controls/ImageHistogram/ImageHistogramControl.xaml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/XP.Common/Controls/ImageHistogram/ImageHistogramControl.xaml.cs b/XP.Common/Controls/ImageHistogram/ImageHistogramControl.xaml.cs
new file mode 100644
index 0000000..a02cb15
--- /dev/null
+++ b/XP.Common/Controls/ImageHistogram/ImageHistogramControl.xaml.cs
@@ -0,0 +1,331 @@
+using System;
+using System.Threading;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Threading;
+using Prism.Ioc;
+using SixLabors.ImageSharp;
+using SixLabors.ImageSharp.PixelFormats;
+using XP.Common.Logging.Interfaces;
+
+namespace XP.Common.Controls.ImageHistogram
+{
+ ///
+ /// 图像灰度直方图通用控件 | Image grayscale histogram control
+ /// 支持单帧静态图像和高频流式图像输入,使用 Telerik RadChartView 进行可视化渲染
+ ///
+ public partial class ImageHistogramControl : UserControl
+ {
+ #region 依赖属性 | Dependency Properties
+
+ ///
+ /// 最大刷新帧率依赖属性 | MaxFrameRate dependency property
+ ///
+ public static readonly DependencyProperty MaxFrameRateProperty =
+ DependencyProperty.Register(
+ nameof(MaxFrameRate),
+ typeof(int),
+ typeof(ImageHistogramControl),
+ new PropertyMetadata(15, OnMaxFrameRateChanged, CoerceMaxFrameRate));
+
+ ///
+ /// 是否使用对数 Y 轴依赖属性 | IsLogarithmic dependency property
+ ///
+ public static readonly DependencyProperty IsLogarithmicProperty =
+ DependencyProperty.Register(
+ nameof(IsLogarithmic),
+ typeof(bool),
+ typeof(ImageHistogramControl),
+ new PropertyMetadata(false));
+
+ ///
+ /// 最大刷新帧率(fps),有效范围 1-60,默认 15 | Max frame rate (fps), valid range 1-60, default 15
+ ///
+ public int MaxFrameRate
+ {
+ get => (int)GetValue(MaxFrameRateProperty);
+ set => SetValue(MaxFrameRateProperty, value);
+ }
+
+ ///
+ /// 是否使用对数 Y 轴,默认 false | Whether to use logarithmic Y axis, default false
+ ///
+ public bool IsLogarithmic
+ {
+ get => (bool)GetValue(IsLogarithmicProperty);
+ set => SetValue(IsLogarithmicProperty, value);
+ }
+
+ private static void OnMaxFrameRateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
+ {
+ if (d is ImageHistogramControl control)
+ {
+ var newValue = (int)e.NewValue;
+ control._frameThrottler.MaxFrameRate = newValue;
+ }
+ }
+
+ private static object CoerceMaxFrameRate(DependencyObject d, object baseValue)
+ {
+ var value = (int)baseValue;
+ var clamped = Math.Clamp(value, 1, 60);
+
+ if (clamped != value && d is ImageHistogramControl control)
+ {
+ control._logger?.Warn(
+ "MaxFrameRate 值 {Value} 超出有效范围,已钳位为 {Clamped} | MaxFrameRate value {Value} out of range, clamped to {Clamped}",
+ value, clamped);
+ }
+
+ return clamped;
+ }
+
+ #endregion
+
+ #region 私有字段 | Private Fields
+
+ private readonly FrameThrottler _frameThrottler;
+ private readonly HistogramEngine _histogramEngine;
+ private ChartRenderer? _chartRenderer;
+ private ILoggerService? _logger;
+ private CancellationTokenSource? _currentCts;
+ private readonly object _ctsLock = new();
+
+ #endregion
+
+ #region 构造函数 | Constructor
+
+ ///
+ /// 构造函数 | Constructor
+ ///
+ public ImageHistogramControl()
+ {
+ InitializeComponent();
+
+ // 初始化内部组件 | Initialize internal components
+ _frameThrottler = new FrameThrottler();
+ _histogramEngine = new HistogramEngine();
+
+ // 尝试解析日志服务 | Try to resolve logger service
+ try
+ {
+ var loggerService = ContainerLocator.Current?.Resolve();
+ _logger = loggerService?.ForModule();
+ }
+ catch
+ {
+ // 日志服务不可用,静默降级 | Logger service unavailable, silent degradation
+ _logger = null;
+ }
+
+ // 订阅 Loaded 事件初始化 ChartRenderer | Subscribe Loaded event to initialize ChartRenderer
+ Loaded += OnLoaded;
+ Unloaded += OnUnloaded;
+ }
+
+ private void OnLoaded(object sender, RoutedEventArgs e)
+ {
+ // 初始化 ChartRenderer | Initialize ChartRenderer
+ _chartRenderer = new ChartRenderer(HistogramChart, HistogramBarSeries, XAxis);
+ }
+
+ #endregion
+
+ #region 公共 API | Public API
+
+ ///
+ /// 传入 ImageSharp 图像对象,计算并显示灰度直方图 | Update histogram from ImageSharp image
+ ///
+ /// ImageSharp 图像对象 | ImageSharp image object
+ public void UpdateImage(Image image)
+ {
+ try
+ {
+ if (image == null)
+ {
+ _logger?.Warn("UpdateImage 收到 null 图像,已忽略 | UpdateImage received null image, ignored");
+ return;
+ }
+
+ SubmitComputation(() => _histogramEngine.ComputeAsync(image, GetOrCreateCancellationToken()));
+ }
+ catch (Exception ex)
+ {
+ _logger?.Error(ex, "UpdateImage(Image) 异常:{Message} | UpdateImage(Image) error: {Message}", ex.Message);
+ }
+ }
+
+ ///
+ /// 传入原始像素数组,计算并显示灰度直方图 | Update histogram from raw byte array
+ ///
+ /// 原始像素数据 | Raw pixel data
+ /// 图像宽度 | Image width
+ /// 图像高度 | Image height
+ /// 位深度(8 或 16)| Bit depth (8 or 16)
+ public void UpdateImage(byte[] rawData, int width, int height, int bitDepth)
+ {
+ try
+ {
+ // 参数有效性验证 | Parameter validation
+ if (rawData == null)
+ {
+ _logger?.Warn("UpdateImage 收到 null rawData,已忽略 | UpdateImage received null rawData, ignored");
+ return;
+ }
+
+ if (width <= 0 || height <= 0)
+ {
+ _logger?.Warn(
+ "UpdateImage 参数无效:width={Width}, height={Height} | Invalid params: width={Width}, height={Height}",
+ width, height);
+ return;
+ }
+
+ if (bitDepth != 8 && bitDepth != 16)
+ {
+ _logger?.Warn(
+ "UpdateImage 参数无效:bitDepth={BitDepth},仅支持 8 或 16 | Invalid bitDepth={BitDepth}, only 8 or 16 supported",
+ bitDepth);
+ return;
+ }
+
+ int expectedLength = bitDepth == 8 ? width * height : width * height * 2;
+ if (rawData.Length != expectedLength)
+ {
+ _logger?.Warn(
+ "UpdateImage 参数无效:rawData.Length={Length}, 预期={Expected} | Invalid params: rawData.Length={Length}, expected={Expected}",
+ rawData.Length, expectedLength);
+ return;
+ }
+
+ SubmitComputation(() => _histogramEngine.ComputeAsync(rawData, width, height, bitDepth, GetOrCreateCancellationToken()));
+ }
+ catch (Exception ex)
+ {
+ _logger?.Error(ex, "UpdateImage(byte[]) 异常:{Message} | UpdateImage(byte[]) error: {Message}", ex.Message);
+ }
+ }
+
+ ///
+ /// 清空直方图显示,恢复初始空白状态 | Clear histogram display, restore initial blank state
+ ///
+ public void Clear()
+ {
+ try
+ {
+ // 取消正在执行的后台任务 | Cancel running background task
+ CancelCurrentComputation();
+
+ // 取消帧率限流器中的待处理任务 | Cancel pending tasks in throttler
+ _frameThrottler.Cancel();
+
+ // 清空图表 | Clear chart
+ if (_chartRenderer != null)
+ {
+ Dispatcher.InvokeAsync(() => _chartRenderer.Clear());
+ }
+ }
+ catch (Exception ex)
+ {
+ _logger?.Error(ex, "Clear() 异常:{Message} | Clear() error: {Message}", ex.Message);
+ }
+ }
+
+ #endregion
+
+ #region 私有方法 | Private Methods
+
+ ///
+ /// 通过帧率限流器提交计算任务 | Submit computation through frame throttler
+ ///
+ private void SubmitComputation(Func> computeFunc)
+ {
+ _frameThrottler.TrySubmit(() =>
+ {
+ try
+ {
+ var task = computeFunc();
+ task.ContinueWith(t =>
+ {
+ if (t.IsCompletedSuccessfully && t.Result != null)
+ {
+ var histogram = t.Result;
+ var isLog = false;
+
+ // 在 UI 线程获取 IsLogarithmic 值并更新图表 | Get IsLogarithmic on UI thread and update chart
+ Dispatcher.InvokeAsync(() =>
+ {
+ try
+ {
+ isLog = IsLogarithmic;
+ _chartRenderer?.UpdateData(histogram, isLog);
+ }
+ catch (Exception ex)
+ {
+ _logger?.Error(ex, "图表更新异常:{Message} | Chart update error: {Message}", ex.Message);
+ }
+ });
+ }
+ else if (t.IsFaulted)
+ {
+ _logger?.Error(t.Exception, "直方图计算异常:{Message} | Histogram computation error: {Message}",
+ t.Exception?.InnerException?.Message ?? "Unknown");
+ }
+ }, System.Threading.Tasks.TaskScheduler.Default);
+ }
+ catch (Exception ex)
+ {
+ _logger?.Error(ex, "提交计算任务异常:{Message} | Submit computation error: {Message}", ex.Message);
+ }
+ });
+ }
+
+ ///
+ /// 获取或创建取消令牌(取消上一个)| Get or create cancellation token (cancel previous)
+ ///
+ private CancellationToken GetOrCreateCancellationToken()
+ {
+ lock (_ctsLock)
+ {
+ _currentCts?.Cancel();
+ _currentCts?.Dispose();
+ _currentCts = new CancellationTokenSource();
+ return _currentCts.Token;
+ }
+ }
+
+ ///
+ /// 取消当前计算 | Cancel current computation
+ ///
+ private void CancelCurrentComputation()
+ {
+ lock (_ctsLock)
+ {
+ _currentCts?.Cancel();
+ _currentCts?.Dispose();
+ _currentCts = null;
+ }
+ }
+
+ ///
+ /// Unloaded 事件处理:释放所有资源 | Unloaded event handler: release all resources
+ ///
+ private void OnUnloaded(object sender, RoutedEventArgs e)
+ {
+ // 取消所有后台任务 | Cancel all background tasks
+ CancelCurrentComputation();
+
+ // 释放帧率限流器 | Dispose frame throttler
+ _frameThrottler.Cancel();
+ _frameThrottler.Dispose();
+
+ // 释放计算引擎 | Dispose histogram engine
+ _histogramEngine.Dispose();
+
+ // 清空引用 | Clear references
+ _chartRenderer = null;
+ }
+
+ #endregion
+ }
+}
diff --git a/XP.Common/XP.Common.csproj b/XP.Common/XP.Common.csproj
index 50c0aa6..4e9ab0c 100644
--- a/XP.Common/XP.Common.csproj
+++ b/XP.Common/XP.Common.csproj
@@ -27,6 +27,7 @@
+
diff --git a/XP.Hardware.Detector/bin/Debug/net8.0-windows7.0/XP.Hardware.Detector.deps.json b/XP.Hardware.Detector/bin/Debug/net8.0-windows7.0/XP.Hardware.Detector.deps.json
index 8d2b10c..fb5a616 100644
--- a/XP.Hardware.Detector/bin/Debug/net8.0-windows7.0/XP.Hardware.Detector.deps.json
+++ b/XP.Hardware.Detector/bin/Debug/net8.0-windows7.0/XP.Hardware.Detector.deps.json
@@ -29,6 +29,9 @@
},
"Emgu.CV/4.10.0.5680": {
"dependencies": {
+ "System.Drawing.Primitives": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.InteropServices.RuntimeInformation": "4.3.0",
"System.Text.Json": "10.0.0"
},
"runtime": {
@@ -77,9 +80,13 @@
"Microsoft.Bcl.AsyncInterfaces": "1.1.1",
"Microsoft.Bcl.HashCode": "1.1.0",
"Microsoft.EntityFrameworkCore.Abstractions": "3.1.5",
+ "Microsoft.EntityFrameworkCore.Analyzers": "3.1.5",
"Microsoft.Extensions.Caching.Memory": "3.1.5",
"Microsoft.Extensions.DependencyInjection": "3.1.5",
- "Microsoft.Extensions.Logging": "3.1.5"
+ "Microsoft.Extensions.Logging": "3.1.5",
+ "System.Collections.Immutable": "1.7.1",
+ "System.ComponentModel.Annotations": "4.7.0",
+ "System.Diagnostics.DiagnosticSource": "4.7.1"
},
"runtime": {
"lib/netstandard2.0/Microsoft.EntityFrameworkCore.dll": {
@@ -96,6 +103,7 @@
}
}
},
+ "Microsoft.EntityFrameworkCore.Analyzers/3.1.5": {},
"Microsoft.Extensions.Caching.Abstractions/3.1.5": {
"dependencies": {
"Microsoft.Extensions.Primitives": "10.0.0"
@@ -229,6 +237,8 @@
}
}
},
+ "Microsoft.NETCore.Platforms/2.0.0": {},
+ "Microsoft.NETCore.Targets/1.1.3": {},
"Microsoft.OData.Client/7.8.3": {
"dependencies": {
"Microsoft.OData.Core": "7.8.3"
@@ -271,6 +281,14 @@
}
}
},
+ "Microsoft.Win32.Primitives/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "Microsoft.Win32.SystemEvents/6.0.0": {},
"Microsoft.Xaml.Behaviors.Wpf/1.1.122": {
"runtime": {
"lib/net6.0-windows7.0/Microsoft.Xaml.Behaviors.dll": {
@@ -279,6 +297,54 @@
}
}
},
+ "NETStandard.Library/1.6.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.Win32.Primitives": "4.3.0",
+ "System.AppContext": "4.3.0",
+ "System.Collections": "4.3.0",
+ "System.Collections.Concurrent": "4.3.0",
+ "System.Console": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Diagnostics.Tools": "4.3.0",
+ "System.Diagnostics.Tracing": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.Globalization.Calendars": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.IO.Compression": "4.3.0",
+ "System.IO.Compression.ZipFile": "4.3.0",
+ "System.IO.FileSystem": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Linq": "4.3.0",
+ "System.Linq.Expressions": "4.3.0",
+ "System.Net.Http": "4.3.0",
+ "System.Net.Primitives": "4.3.0",
+ "System.Net.Sockets": "4.3.0",
+ "System.ObjectModel": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Extensions": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Runtime.InteropServices.RuntimeInformation": "4.3.0",
+ "System.Runtime.Numerics": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Security.Cryptography.X509Certificates": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Text.Encoding.Extensions": "4.3.0",
+ "System.Text.RegularExpressions": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Threading.Tasks": "4.3.0",
+ "System.Threading.Timer": "4.3.0",
+ "System.Xml.ReaderWriter": "4.3.0",
+ "System.Xml.XDocument": "4.3.0"
+ }
+ },
"Prism.Container.Abstractions/9.0.106": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.1"
@@ -322,6 +388,54 @@
}
}
},
+ "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+ "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+ "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+ "runtime.native.System/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3"
+ }
+ },
+ "runtime.native.System.IO.Compression/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3"
+ }
+ },
+ "runtime.native.System.Net.Http/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3"
+ }
+ },
+ "runtime.native.System.Security.Cryptography.Apple/4.3.0": {
+ "dependencies": {
+ "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
+ }
+ },
+ "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
+ "dependencies": {
+ "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
+ "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+ "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+ "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {},
+ "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+ "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+ "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+ "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+ "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
"Serilog/4.3.1": {
"runtime": {
"lib/net8.0/Serilog.dll": {
@@ -366,6 +480,9 @@
}
},
"SharpDX/4.2.0": {
+ "dependencies": {
+ "NETStandard.Library": "1.6.1"
+ },
"runtime": {
"lib/netstandard1.1/SharpDX.dll": {
"assemblyVersion": "4.2.0.0",
@@ -375,6 +492,7 @@
},
"SharpDX.D3DCompiler/4.2.0": {
"dependencies": {
+ "NETStandard.Library": "1.6.1",
"SharpDX": "4.2.0"
},
"runtime": {
@@ -386,6 +504,7 @@
},
"SharpDX.Direct2D1/4.2.0": {
"dependencies": {
+ "NETStandard.Library": "1.6.1",
"SharpDX": "4.2.0",
"SharpDX.DXGI": "4.2.0"
},
@@ -398,6 +517,7 @@
},
"SharpDX.Direct3D10/4.2.0": {
"dependencies": {
+ "NETStandard.Library": "1.6.1",
"SharpDX": "4.2.0",
"SharpDX.D3DCompiler": "4.2.0",
"SharpDX.DXGI": "4.2.0"
@@ -411,6 +531,7 @@
},
"SharpDX.Direct3D9/4.2.0": {
"dependencies": {
+ "NETStandard.Library": "1.6.1",
"SharpDX": "4.2.0"
},
"runtime": {
@@ -422,6 +543,7 @@
},
"SharpDX.DXGI/4.2.0": {
"dependencies": {
+ "NETStandard.Library": "1.6.1",
"SharpDX": "4.2.0"
},
"runtime": {
@@ -433,6 +555,7 @@
},
"SharpDX.Mathematics/4.2.0": {
"dependencies": {
+ "NETStandard.Library": "1.6.1",
"SharpDX": "4.2.0"
},
"runtime": {
@@ -442,6 +565,14 @@
}
}
},
+ "SixLabors.ImageSharp/3.1.12": {
+ "runtime": {
+ "lib/net6.0/SixLabors.ImageSharp.dll": {
+ "assemblyVersion": "3.0.0.0",
+ "fileVersion": "3.1.12.0"
+ }
+ }
+ },
"SQLitePCLRaw.bundle_e_sqlite3/2.1.11": {
"dependencies": {
"SQLitePCLRaw.lib.e_sqlite3": "2.1.11",
@@ -455,6 +586,9 @@
}
},
"SQLitePCLRaw.core/2.1.11": {
+ "dependencies": {
+ "System.Memory": "4.5.3"
+ },
"runtime": {
"lib/netstandard2.0/SQLitePCLRaw.core.dll": {
"assemblyVersion": "2.1.11.2622",
@@ -592,7 +726,63 @@
}
}
},
+ "System.AppContext/4.3.0": {
+ "dependencies": {
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Buffers/4.3.0": {
+ "dependencies": {
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Diagnostics.Tracing": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Threading": "4.3.0"
+ }
+ },
+ "System.Collections/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Collections.Concurrent/4.3.0": {
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Diagnostics.Tracing": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.Collections.Immutable/1.7.1": {},
+ "System.ComponentModel.Annotations/4.7.0": {},
+ "System.Configuration.ConfigurationManager/6.0.0": {
+ "dependencies": {
+ "System.Security.Cryptography.ProtectedData": "6.0.0",
+ "System.Security.Permissions": "6.0.0"
+ }
+ },
+ "System.Console/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.IO": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Text.Encoding": "4.3.0"
+ }
+ },
"System.Data.OleDb/6.0.0": {
+ "dependencies": {
+ "System.Configuration.ConfigurationManager": "6.0.0",
+ "System.Diagnostics.PerformanceCounter": "6.0.0"
+ },
"runtime": {
"lib/net6.0/System.Data.OleDb.dll": {
"assemblyVersion": "6.0.0.0",
@@ -608,6 +798,127 @@
}
}
},
+ "System.Diagnostics.Debug/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Diagnostics.DiagnosticSource/4.7.1": {},
+ "System.Diagnostics.PerformanceCounter/6.0.0": {
+ "dependencies": {
+ "System.Configuration.ConfigurationManager": "6.0.0"
+ }
+ },
+ "System.Diagnostics.Tools/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Diagnostics.Tracing/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Drawing.Common/6.0.0": {
+ "dependencies": {
+ "Microsoft.Win32.SystemEvents": "6.0.0"
+ }
+ },
+ "System.Drawing.Primitives/4.3.0": {
+ "dependencies": {
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0"
+ }
+ },
+ "System.Globalization/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Globalization.Calendars/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Globalization": "4.3.0",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Globalization.Extensions/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "System.Globalization": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0"
+ }
+ },
+ "System.IO/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Runtime": "4.3.1",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.IO.Compression/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "System.Buffers": "4.3.0",
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Threading.Tasks": "4.3.0",
+ "runtime.native.System": "4.3.0",
+ "runtime.native.System.IO.Compression": "4.3.0"
+ }
+ },
+ "System.IO.Compression.ZipFile/4.3.0": {
+ "dependencies": {
+ "System.Buffers": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.IO.Compression": "4.3.0",
+ "System.IO.FileSystem": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Text.Encoding": "4.3.0"
+ }
+ },
+ "System.IO.FileSystem/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.IO": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.IO.FileSystem.Primitives/4.3.0": {
+ "dependencies": {
+ "System.Runtime": "4.3.1"
+ }
+ },
"System.IO.Pipelines/10.0.0": {
"runtime": {
"lib/net8.0/System.IO.Pipelines.dll": {
@@ -616,7 +927,100 @@
}
}
},
+ "System.Linq/4.3.0": {
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0"
+ }
+ },
+ "System.Linq.Expressions/4.3.0": {
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Linq": "4.3.0",
+ "System.ObjectModel": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Emit": "4.3.0",
+ "System.Reflection.Emit.ILGeneration": "4.3.0",
+ "System.Reflection.Emit.Lightweight": "4.3.0",
+ "System.Reflection.Extensions": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Reflection.TypeExtensions": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Threading": "4.3.0"
+ }
+ },
+ "System.Memory/4.5.3": {},
+ "System.Net.Http/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Diagnostics.DiagnosticSource": "4.7.1",
+ "System.Diagnostics.Tracing": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.Globalization.Extensions": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.IO.FileSystem": "4.3.0",
+ "System.Net.Primitives": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.OpenSsl": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Security.Cryptography.X509Certificates": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Threading.Tasks": "4.3.0",
+ "runtime.native.System": "4.3.0",
+ "runtime.native.System.Net.Http": "4.3.0",
+ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "System.Net.Primitives/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Handles": "4.3.0"
+ }
+ },
+ "System.Net.Sockets/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.IO": "4.3.0",
+ "System.Net.Primitives": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.ObjectModel/4.3.0": {
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Threading": "4.3.0"
+ }
+ },
"System.Private.ServiceModel/4.7.0": {
+ "dependencies": {
+ "System.Reflection.DispatchProxy": "4.5.0",
+ "System.Security.Cryptography.Xml": "4.5.0",
+ "System.Security.Principal.Windows": "4.5.0"
+ },
"runtime": {
"lib/netstandard2.0/System.Private.ServiceModel.dll": {
"assemblyVersion": "4.7.0.0",
@@ -624,6 +1028,252 @@
}
}
},
+ "System.Reflection/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.IO": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Reflection.DispatchProxy/4.5.0": {},
+ "System.Reflection.Emit/4.3.0": {
+ "dependencies": {
+ "System.IO": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Emit.ILGeneration": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration/4.3.0": {
+ "dependencies": {
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Reflection.Emit.Lightweight/4.3.0": {
+ "dependencies": {
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Emit.ILGeneration": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Reflection.Extensions/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Reflection": "4.3.0",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Reflection.Primitives/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Reflection.TypeExtensions/4.3.0": {
+ "dependencies": {
+ "System.Reflection": "4.3.0",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Resources.ResourceManager/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Globalization": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Runtime/4.3.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3"
+ }
+ },
+ "System.Runtime.Extensions/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Runtime.Handles/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Runtime.InteropServices/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Handles": "4.3.0"
+ }
+ },
+ "System.Runtime.InteropServices.RuntimeInformation/4.3.0": {
+ "dependencies": {
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Extensions": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Threading": "4.3.0",
+ "runtime.native.System": "4.3.0"
+ }
+ },
+ "System.Runtime.Numerics/4.3.0": {
+ "dependencies": {
+ "System.Globalization": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0"
+ }
+ },
+ "System.Security.AccessControl/6.0.0": {},
+ "System.Security.Cryptography.Algorithms/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "System.Collections": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Runtime.Numerics": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "runtime.native.System.Security.Cryptography.Apple": "4.3.0",
+ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.Cng/4.5.0": {},
+ "System.Security.Cryptography.Csp/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "System.IO": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.Encoding/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "System.Collections": "4.3.0",
+ "System.Collections.Concurrent": "4.3.0",
+ "System.Linq": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.OpenSsl/4.3.0": {
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Runtime.Numerics": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.Pkcs/4.5.0": {
+ "dependencies": {
+ "System.Security.Cryptography.Cng": "4.5.0"
+ }
+ },
+ "System.Security.Cryptography.Primitives/4.3.0": {
+ "dependencies": {
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Threading": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.ProtectedData/6.0.0": {},
+ "System.Security.Cryptography.X509Certificates/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.Globalization.Calendars": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.IO.FileSystem": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.Handles": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Runtime.Numerics": "4.3.0",
+ "System.Security.Cryptography.Algorithms": "4.3.0",
+ "System.Security.Cryptography.Cng": "4.5.0",
+ "System.Security.Cryptography.Csp": "4.3.0",
+ "System.Security.Cryptography.Encoding": "4.3.0",
+ "System.Security.Cryptography.OpenSsl": "4.3.0",
+ "System.Security.Cryptography.Primitives": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading": "4.3.0",
+ "runtime.native.System": "4.3.0",
+ "runtime.native.System.Net.Http": "4.3.0",
+ "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
+ }
+ },
+ "System.Security.Cryptography.Xml/4.5.0": {
+ "dependencies": {
+ "System.Security.Cryptography.Pkcs": "4.5.0",
+ "System.Security.Permissions": "6.0.0"
+ }
+ },
+ "System.Security.Permissions/6.0.0": {
+ "dependencies": {
+ "System.Security.AccessControl": "6.0.0",
+ "System.Windows.Extensions": "6.0.0"
+ }
+ },
+ "System.Security.Principal.Windows/4.5.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0"
+ }
+ },
"System.ServiceModel.Http/4.7.0": {
"dependencies": {
"System.Private.ServiceModel": "4.7.0",
@@ -651,6 +1301,21 @@
}
}
},
+ "System.Text.Encoding/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Text.Encoding.Extensions/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Runtime": "4.3.1",
+ "System.Text.Encoding": "4.3.0"
+ }
+ },
"System.Text.Encodings.Web/10.0.0": {
"runtime": {
"lib/net8.0/System.Text.Encodings.Web.dll": {
@@ -679,6 +1344,78 @@
}
}
},
+ "System.Text.RegularExpressions/4.3.0": {
+ "dependencies": {
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Threading/4.3.0": {
+ "dependencies": {
+ "System.Runtime": "4.3.1",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.Threading.Tasks/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Threading.Tasks.Extensions/4.3.0": {
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.Threading.Timer/4.3.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.0.0",
+ "Microsoft.NETCore.Targets": "1.1.3",
+ "System.Runtime": "4.3.1"
+ }
+ },
+ "System.Windows.Extensions/6.0.0": {
+ "dependencies": {
+ "System.Drawing.Common": "6.0.0"
+ }
+ },
+ "System.Xml.ReaderWriter/4.3.0": {
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.IO.FileSystem": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Text.Encoding.Extensions": "4.3.0",
+ "System.Text.RegularExpressions": "4.3.0",
+ "System.Threading.Tasks": "4.3.0",
+ "System.Threading.Tasks.Extensions": "4.3.0"
+ }
+ },
+ "System.Xml.XDocument/4.3.0": {
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Diagnostics.Tools": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.IO": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.1",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading": "4.3.0",
+ "System.Xml.ReaderWriter": "4.3.0"
+ }
+ },
"Telerik.UI.for.Wpf.NetCore.Xaml/2024.1.408": {
"dependencies": {
"Microsoft.EntityFrameworkCore": "3.1.5",
@@ -690,6 +1427,7 @@
"SharpDX.Direct3D9": "4.2.0",
"SharpDX.Mathematics": "4.2.0",
"System.Data.OleDb": "6.0.0",
+ "System.Drawing.Common": "6.0.0",
"System.ServiceModel.Http": "4.7.0"
},
"runtime": {
@@ -972,6 +1710,7 @@
"Serilog.Settings.Configuration": "10.0.0",
"Serilog.Sinks.Console": "6.1.1",
"Serilog.Sinks.File": "7.0.0",
+ "SixLabors.ImageSharp": "3.1.12",
"Telerik.UI.for.Wpf.NetCore.Xaml": "2024.1.408"
},
"runtime": {
@@ -1049,6 +1788,13 @@
"path": "microsoft.entityframeworkcore.abstractions/3.1.5",
"hashPath": "microsoft.entityframeworkcore.abstractions.3.1.5.nupkg.sha512"
},
+ "Microsoft.EntityFrameworkCore.Analyzers/3.1.5": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-NhxlI6Qj/QUt79ApeBrpKo+a5TGt/UCddxd9rLHD7Zd6yLyfkDOMiyu4oPqhnMhpqmzo/gd79tW7BMwIxgEZCw==",
+ "path": "microsoft.entityframeworkcore.analyzers/3.1.5",
+ "hashPath": "microsoft.entityframeworkcore.analyzers.3.1.5.nupkg.sha512"
+ },
"Microsoft.Extensions.Caching.Abstractions/3.1.5": {
"type": "package",
"serviceable": true,
@@ -1133,6 +1879,20 @@
"path": "microsoft.extensions.primitives/10.0.0",
"hashPath": "microsoft.extensions.primitives.10.0.0.nupkg.sha512"
},
+ "Microsoft.NETCore.Platforms/2.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-VdLJOCXhZaEMY7Hm2GKiULmn7IEPFE4XC5LPSfBVCUIA8YLZVh846gtfBJalsPQF2PlzdD7ecX7DZEulJ402ZQ==",
+ "path": "microsoft.netcore.platforms/2.0.0",
+ "hashPath": "microsoft.netcore.platforms.2.0.0.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Targets/1.1.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ==",
+ "path": "microsoft.netcore.targets/1.1.3",
+ "hashPath": "microsoft.netcore.targets.1.1.3.nupkg.sha512"
+ },
"Microsoft.OData.Client/7.8.3": {
"type": "package",
"serviceable": true,
@@ -1161,6 +1921,20 @@
"path": "microsoft.spatial/7.8.3",
"hashPath": "microsoft.spatial.7.8.3.nupkg.sha512"
},
+ "Microsoft.Win32.Primitives/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==",
+ "path": "microsoft.win32.primitives/4.3.0",
+ "hashPath": "microsoft.win32.primitives.4.3.0.nupkg.sha512"
+ },
+ "Microsoft.Win32.SystemEvents/6.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-hqTM5628jSsQiv+HGpiq3WKBl2c8v1KZfby2J6Pr7pEPlK9waPdgEO6b8A/+/xn/yZ9ulv8HuqK71ONy2tg67A==",
+ "path": "microsoft.win32.systemevents/6.0.0",
+ "hashPath": "microsoft.win32.systemevents.6.0.0.nupkg.sha512"
+ },
"Microsoft.Xaml.Behaviors.Wpf/1.1.122": {
"type": "package",
"serviceable": true,
@@ -1168,6 +1942,13 @@
"path": "microsoft.xaml.behaviors.wpf/1.1.122",
"hashPath": "microsoft.xaml.behaviors.wpf.1.1.122.nupkg.sha512"
},
+ "NETStandard.Library/1.6.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==",
+ "path": "netstandard.library/1.6.1",
+ "hashPath": "netstandard.library.1.6.1.nupkg.sha512"
+ },
"Prism.Container.Abstractions/9.0.106": {
"type": "package",
"serviceable": true,
@@ -1196,6 +1977,118 @@
"path": "prism.wpf/9.0.537",
"hashPath": "prism.wpf.9.0.537.nupkg.sha512"
},
+ "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q==",
+ "path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
+ "hashPath": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
+ },
+ "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA==",
+ "path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
+ "hashPath": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
+ },
+ "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw==",
+ "path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
+ "hashPath": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
+ },
+ "runtime.native.System/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
+ "path": "runtime.native.system/4.3.0",
+ "hashPath": "runtime.native.system.4.3.0.nupkg.sha512"
+ },
+ "runtime.native.System.IO.Compression/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==",
+ "path": "runtime.native.system.io.compression/4.3.0",
+ "hashPath": "runtime.native.system.io.compression.4.3.0.nupkg.sha512"
+ },
+ "runtime.native.System.Net.Http/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
+ "path": "runtime.native.system.net.http/4.3.0",
+ "hashPath": "runtime.native.system.net.http.4.3.0.nupkg.sha512"
+ },
+ "runtime.native.System.Security.Cryptography.Apple/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
+ "path": "runtime.native.system.security.cryptography.apple/4.3.0",
+ "hashPath": "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512"
+ },
+ "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==",
+ "path": "runtime.native.system.security.cryptography.openssl/4.3.0",
+ "hashPath": "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
+ },
+ "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A==",
+ "path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
+ "hashPath": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
+ },
+ "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ==",
+ "path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
+ "hashPath": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
+ },
+ "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==",
+ "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0",
+ "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512"
+ },
+ "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g==",
+ "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
+ "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
+ },
+ "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg==",
+ "path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
+ "hashPath": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
+ },
+ "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ==",
+ "path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
+ "hashPath": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
+ },
+ "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A==",
+ "path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
+ "hashPath": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
+ },
+ "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg==",
+ "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
+ "hashPath": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
+ },
"Serilog/4.3.1": {
"type": "package",
"serviceable": true,
@@ -1273,6 +2166,13 @@
"path": "sharpdx.mathematics/4.2.0",
"hashPath": "sharpdx.mathematics.4.2.0.nupkg.sha512"
},
+ "SixLabors.ImageSharp/3.1.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-iAg6zifihXEFS/t7fiHhZBGAdCp3FavsF4i2ZIDp0JfeYeDVzvmlbY1CNhhIKimaIzrzSi5M/NBFcWvZT2rB/A==",
+ "path": "sixlabors.imagesharp/3.1.12",
+ "hashPath": "sixlabors.imagesharp.3.1.12.nupkg.sha512"
+ },
"SQLitePCLRaw.bundle_e_sqlite3/2.1.11": {
"type": "package",
"serviceable": true,
@@ -1301,6 +2201,62 @@
"path": "sqlitepclraw.provider.e_sqlite3/2.1.11",
"hashPath": "sqlitepclraw.provider.e_sqlite3.2.1.11.nupkg.sha512"
},
+ "System.AppContext/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==",
+ "path": "system.appcontext/4.3.0",
+ "hashPath": "system.appcontext.4.3.0.nupkg.sha512"
+ },
+ "System.Buffers/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ratu44uTIHgeBeI0dE8DWvmXVBSo4u7ozRZZHOMmK/JPpYyo0dAfgSiHlpiObMQ5lEtEyIXA40sKRYg5J6A8uQ==",
+ "path": "system.buffers/4.3.0",
+ "hashPath": "system.buffers.4.3.0.nupkg.sha512"
+ },
+ "System.Collections/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
+ "path": "system.collections/4.3.0",
+ "hashPath": "system.collections.4.3.0.nupkg.sha512"
+ },
+ "System.Collections.Concurrent/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
+ "path": "system.collections.concurrent/4.3.0",
+ "hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512"
+ },
+ "System.Collections.Immutable/1.7.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-B43Zsz5EfMwyEbnObwRxW5u85fzJma3lrDeGcSAV1qkhSRTNY5uXAByTn9h9ddNdhM+4/YoLc/CI43umjwIl9Q==",
+ "path": "system.collections.immutable/1.7.1",
+ "hashPath": "system.collections.immutable.1.7.1.nupkg.sha512"
+ },
+ "System.ComponentModel.Annotations/4.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-0YFqjhp/mYkDGpU0Ye1GjE53HMp9UVfGN7seGpAMttAC0C40v5gw598jCgpbBLMmCo0E5YRLBv5Z2doypO49ZQ==",
+ "path": "system.componentmodel.annotations/4.7.0",
+ "hashPath": "system.componentmodel.annotations.4.7.0.nupkg.sha512"
+ },
+ "System.Configuration.ConfigurationManager/6.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-7T+m0kDSlIPTHIkPMIu6m6tV6qsMqJpvQWW2jIc2qi7sn40qxFo0q+7mEQAhMPXZHMKnWrnv47ntGlM/ejvw3g==",
+ "path": "system.configuration.configurationmanager/6.0.0",
+ "hashPath": "system.configuration.configurationmanager.6.0.0.nupkg.sha512"
+ },
+ "System.Console/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==",
+ "path": "system.console/4.3.0",
+ "hashPath": "system.console.4.3.0.nupkg.sha512"
+ },
"System.Data.OleDb/6.0.0": {
"type": "package",
"serviceable": true,
@@ -1308,6 +2264,111 @@
"path": "system.data.oledb/6.0.0",
"hashPath": "system.data.oledb.6.0.0.nupkg.sha512"
},
+ "System.Diagnostics.Debug/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
+ "path": "system.diagnostics.debug/4.3.0",
+ "hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512"
+ },
+ "System.Diagnostics.DiagnosticSource/4.7.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-j81Lovt90PDAq8kLpaJfJKV/rWdWuEk6jfV+MBkee33vzYLEUsy4gXK8laa9V2nZlLM9VM9yA/OOQxxPEJKAMw==",
+ "path": "system.diagnostics.diagnosticsource/4.7.1",
+ "hashPath": "system.diagnostics.diagnosticsource.4.7.1.nupkg.sha512"
+ },
+ "System.Diagnostics.PerformanceCounter/6.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gbeE5tNp/oB7O8kTTLh3wPPJCxpNOphXPTWVs1BsYuFOYapFijWuh0LYw1qnDo4gwDUYPXOmpTIhvtxisGsYOQ==",
+ "path": "system.diagnostics.performancecounter/6.0.0",
+ "hashPath": "system.diagnostics.performancecounter.6.0.0.nupkg.sha512"
+ },
+ "System.Diagnostics.Tools/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==",
+ "path": "system.diagnostics.tools/4.3.0",
+ "hashPath": "system.diagnostics.tools.4.3.0.nupkg.sha512"
+ },
+ "System.Diagnostics.Tracing/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
+ "path": "system.diagnostics.tracing/4.3.0",
+ "hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512"
+ },
+ "System.Drawing.Common/6.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-NfuoKUiP2nUWwKZN6twGqXioIe1zVD0RIj2t976A+czLHr2nY454RwwXs6JU9Htc6mwqL6Dn/nEL3dpVf2jOhg==",
+ "path": "system.drawing.common/6.0.0",
+ "hashPath": "system.drawing.common.6.0.0.nupkg.sha512"
+ },
+ "System.Drawing.Primitives/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-1QU/c35gwdhvj77fkScXQQbjiVAqIL3fEYn/19NE0CV/ic5TN5PyWAft8HsrbRd4SBLEoErNCkWSzMDc0MmbRw==",
+ "path": "system.drawing.primitives/4.3.0",
+ "hashPath": "system.drawing.primitives.4.3.0.nupkg.sha512"
+ },
+ "System.Globalization/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
+ "path": "system.globalization/4.3.0",
+ "hashPath": "system.globalization.4.3.0.nupkg.sha512"
+ },
+ "System.Globalization.Calendars/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
+ "path": "system.globalization.calendars/4.3.0",
+ "hashPath": "system.globalization.calendars.4.3.0.nupkg.sha512"
+ },
+ "System.Globalization.Extensions/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
+ "path": "system.globalization.extensions/4.3.0",
+ "hashPath": "system.globalization.extensions.4.3.0.nupkg.sha512"
+ },
+ "System.IO/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
+ "path": "system.io/4.3.0",
+ "hashPath": "system.io.4.3.0.nupkg.sha512"
+ },
+ "System.IO.Compression/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==",
+ "path": "system.io.compression/4.3.0",
+ "hashPath": "system.io.compression.4.3.0.nupkg.sha512"
+ },
+ "System.IO.Compression.ZipFile/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==",
+ "path": "system.io.compression.zipfile/4.3.0",
+ "hashPath": "system.io.compression.zipfile.4.3.0.nupkg.sha512"
+ },
+ "System.IO.FileSystem/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
+ "path": "system.io.filesystem/4.3.0",
+ "hashPath": "system.io.filesystem.4.3.0.nupkg.sha512"
+ },
+ "System.IO.FileSystem.Primitives/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
+ "path": "system.io.filesystem.primitives/4.3.0",
+ "hashPath": "system.io.filesystem.primitives.4.3.0.nupkg.sha512"
+ },
"System.IO.Pipelines/10.0.0": {
"type": "package",
"serviceable": true,
@@ -1315,6 +2376,55 @@
"path": "system.io.pipelines/10.0.0",
"hashPath": "system.io.pipelines.10.0.0.nupkg.sha512"
},
+ "System.Linq/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
+ "path": "system.linq/4.3.0",
+ "hashPath": "system.linq.4.3.0.nupkg.sha512"
+ },
+ "System.Linq.Expressions/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==",
+ "path": "system.linq.expressions/4.3.0",
+ "hashPath": "system.linq.expressions.4.3.0.nupkg.sha512"
+ },
+ "System.Memory/4.5.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==",
+ "path": "system.memory/4.5.3",
+ "hashPath": "system.memory.4.5.3.nupkg.sha512"
+ },
+ "System.Net.Http/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==",
+ "path": "system.net.http/4.3.0",
+ "hashPath": "system.net.http.4.3.0.nupkg.sha512"
+ },
+ "System.Net.Primitives/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
+ "path": "system.net.primitives/4.3.0",
+ "hashPath": "system.net.primitives.4.3.0.nupkg.sha512"
+ },
+ "System.Net.Sockets/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==",
+ "path": "system.net.sockets/4.3.0",
+ "hashPath": "system.net.sockets.4.3.0.nupkg.sha512"
+ },
+ "System.ObjectModel/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==",
+ "path": "system.objectmodel/4.3.0",
+ "hashPath": "system.objectmodel.4.3.0.nupkg.sha512"
+ },
"System.Private.ServiceModel/4.7.0": {
"type": "package",
"serviceable": true,
@@ -1322,6 +2432,202 @@
"path": "system.private.servicemodel/4.7.0",
"hashPath": "system.private.servicemodel.4.7.0.nupkg.sha512"
},
+ "System.Reflection/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
+ "path": "system.reflection/4.3.0",
+ "hashPath": "system.reflection.4.3.0.nupkg.sha512"
+ },
+ "System.Reflection.DispatchProxy/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-+UW1hq11TNSeb+16rIk8hRQ02o339NFyzMc4ma/FqmxBzM30l1c2IherBB4ld1MNcenS48fz8tbt50OW4rVULA==",
+ "path": "system.reflection.dispatchproxy/4.5.0",
+ "hashPath": "system.reflection.dispatchproxy.4.5.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==",
+ "path": "system.reflection.emit/4.3.0",
+ "hashPath": "system.reflection.emit.4.3.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit.ILGeneration/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==",
+ "path": "system.reflection.emit.ilgeneration/4.3.0",
+ "hashPath": "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit.Lightweight/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==",
+ "path": "system.reflection.emit.lightweight/4.3.0",
+ "hashPath": "system.reflection.emit.lightweight.4.3.0.nupkg.sha512"
+ },
+ "System.Reflection.Extensions/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==",
+ "path": "system.reflection.extensions/4.3.0",
+ "hashPath": "system.reflection.extensions.4.3.0.nupkg.sha512"
+ },
+ "System.Reflection.Primitives/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
+ "path": "system.reflection.primitives/4.3.0",
+ "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512"
+ },
+ "System.Reflection.TypeExtensions/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==",
+ "path": "system.reflection.typeextensions/4.3.0",
+ "hashPath": "system.reflection.typeextensions.4.3.0.nupkg.sha512"
+ },
+ "System.Resources.ResourceManager/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
+ "path": "system.resources.resourcemanager/4.3.0",
+ "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512"
+ },
+ "System.Runtime/4.3.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-abhfv1dTK6NXOmu4bgHIONxHyEqFjW8HwXPmpY9gmll+ix9UNo4XDcmzJn6oLooftxNssVHdJC1pGT9jkSynQg==",
+ "path": "system.runtime/4.3.1",
+ "hashPath": "system.runtime.4.3.1.nupkg.sha512"
+ },
+ "System.Runtime.Extensions/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==",
+ "path": "system.runtime.extensions/4.3.0",
+ "hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512"
+ },
+ "System.Runtime.Handles/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
+ "path": "system.runtime.handles/4.3.0",
+ "hashPath": "system.runtime.handles.4.3.0.nupkg.sha512"
+ },
+ "System.Runtime.InteropServices/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
+ "path": "system.runtime.interopservices/4.3.0",
+ "hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512"
+ },
+ "System.Runtime.InteropServices.RuntimeInformation/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==",
+ "path": "system.runtime.interopservices.runtimeinformation/4.3.0",
+ "hashPath": "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512"
+ },
+ "System.Runtime.Numerics/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
+ "path": "system.runtime.numerics/4.3.0",
+ "hashPath": "system.runtime.numerics.4.3.0.nupkg.sha512"
+ },
+ "System.Security.AccessControl/6.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-AUADIc0LIEQe7MzC+I0cl0rAT8RrTAKFHl53yHjEUzNVIaUlhFY11vc2ebiVJzVBuOzun6F7FBA+8KAbGTTedQ==",
+ "path": "system.security.accesscontrol/6.0.0",
+ "hashPath": "system.security.accesscontrol.6.0.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Algorithms/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
+ "path": "system.security.cryptography.algorithms/4.3.0",
+ "hashPath": "system.security.cryptography.algorithms.4.3.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Cng/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-WG3r7EyjUe9CMPFSs6bty5doUqT+q9pbI80hlNzo2SkPkZ4VTuZkGWjpp77JB8+uaL4DFPRdBsAY+DX3dBK92A==",
+ "path": "system.security.cryptography.cng/4.5.0",
+ "hashPath": "system.security.cryptography.cng.4.5.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Csp/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
+ "path": "system.security.cryptography.csp/4.3.0",
+ "hashPath": "system.security.cryptography.csp.4.3.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Encoding/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
+ "path": "system.security.cryptography.encoding/4.3.0",
+ "hashPath": "system.security.cryptography.encoding.4.3.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.OpenSsl/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
+ "path": "system.security.cryptography.openssl/4.3.0",
+ "hashPath": "system.security.cryptography.openssl.4.3.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Pkcs/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TGQX51gxpY3K3I6LJlE2LAftVlIMqJf0cBGhz68Y89jjk3LJCB6SrwiD+YN1fkqemBvWGs+GjyMJukl6d6goyQ==",
+ "path": "system.security.cryptography.pkcs/4.5.0",
+ "hashPath": "system.security.cryptography.pkcs.4.5.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Primitives/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
+ "path": "system.security.cryptography.primitives/4.3.0",
+ "hashPath": "system.security.cryptography.primitives.4.3.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.ProtectedData/6.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rp1gMNEZpvx9vP0JW0oHLxlf8oSiQgtno77Y4PLUBjSiDYoD77Y8uXHr1Ea5XG4/pIKhqAdxZ8v8OTUtqo9PeQ==",
+ "path": "system.security.cryptography.protecteddata/6.0.0",
+ "hashPath": "system.security.cryptography.protecteddata.6.0.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.X509Certificates/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
+ "path": "system.security.cryptography.x509certificates/4.3.0",
+ "hashPath": "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Xml/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i2Jn6rGXR63J0zIklImGRkDIJL4b1NfPSEbIVHBlqoIb12lfXIigCbDRpDmIEzwSo/v1U5y/rYJdzZYSyCWxvg==",
+ "path": "system.security.cryptography.xml/4.5.0",
+ "hashPath": "system.security.cryptography.xml.4.5.0.nupkg.sha512"
+ },
+ "System.Security.Permissions/6.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-T/uuc7AklkDoxmcJ7LGkyX1CcSviZuLCa4jg3PekfJ7SU0niF0IVTXwUiNVP9DSpzou2PpxJ+eNY2IfDM90ZCg==",
+ "path": "system.security.permissions/6.0.0",
+ "hashPath": "system.security.permissions.6.0.0.nupkg.sha512"
+ },
+ "System.Security.Principal.Windows/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U77HfRXlZlOeIXd//Yoj6Jnk8AXlbeisf1oq1os+hxOGVnuG+lGSfGqTwTZBoORFF6j/0q7HXIl8cqwQ9aUGqQ==",
+ "path": "system.security.principal.windows/4.5.0",
+ "hashPath": "system.security.principal.windows.4.5.0.nupkg.sha512"
+ },
"System.ServiceModel.Http/4.7.0": {
"type": "package",
"serviceable": true,
@@ -1336,6 +2642,20 @@
"path": "system.servicemodel.primitives/4.7.0",
"hashPath": "system.servicemodel.primitives.4.7.0.nupkg.sha512"
},
+ "System.Text.Encoding/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
+ "path": "system.text.encoding/4.3.0",
+ "hashPath": "system.text.encoding.4.3.0.nupkg.sha512"
+ },
+ "System.Text.Encoding.Extensions/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==",
+ "path": "system.text.encoding.extensions/4.3.0",
+ "hashPath": "system.text.encoding.extensions.4.3.0.nupkg.sha512"
+ },
"System.Text.Encodings.Web/10.0.0": {
"type": "package",
"serviceable": true,
@@ -1350,6 +2670,62 @@
"path": "system.text.json/10.0.0",
"hashPath": "system.text.json.10.0.0.nupkg.sha512"
},
+ "System.Text.RegularExpressions/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==",
+ "path": "system.text.regularexpressions/4.3.0",
+ "hashPath": "system.text.regularexpressions.4.3.0.nupkg.sha512"
+ },
+ "System.Threading/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
+ "path": "system.threading/4.3.0",
+ "hashPath": "system.threading.4.3.0.nupkg.sha512"
+ },
+ "System.Threading.Tasks/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
+ "path": "system.threading.tasks/4.3.0",
+ "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512"
+ },
+ "System.Threading.Tasks.Extensions/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==",
+ "path": "system.threading.tasks.extensions/4.3.0",
+ "hashPath": "system.threading.tasks.extensions.4.3.0.nupkg.sha512"
+ },
+ "System.Threading.Timer/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==",
+ "path": "system.threading.timer/4.3.0",
+ "hashPath": "system.threading.timer.4.3.0.nupkg.sha512"
+ },
+ "System.Windows.Extensions/6.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-IXoJOXIqc39AIe+CIR7koBtRGMiCt/LPM3lI+PELtDIy9XdyeSrwXFdWV9dzJ2Awl0paLWUaknLxFQ5HpHZUog==",
+ "path": "system.windows.extensions/6.0.0",
+ "hashPath": "system.windows.extensions.6.0.0.nupkg.sha512"
+ },
+ "System.Xml.ReaderWriter/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==",
+ "path": "system.xml.readerwriter/4.3.0",
+ "hashPath": "system.xml.readerwriter.4.3.0.nupkg.sha512"
+ },
+ "System.Xml.XDocument/4.3.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==",
+ "path": "system.xml.xdocument/4.3.0",
+ "hashPath": "system.xml.xdocument.4.3.0.nupkg.sha512"
+ },
"Telerik.UI.for.Wpf.NetCore.Xaml/2024.1.408": {
"type": "package",
"serviceable": true,