3 Commits
0.3.0 ... 0.3.1

Author SHA1 Message Date
3bd307fa9d version bump
Some checks failed
.NET Build and Publish to Gitea / build (push) Has been cancelled
2025-10-24 03:55:23 +01:00
8900955521 XIVAuth no longer experimental 2025-10-24 03:54:42 +01:00
b268571907 Syncshell and user ID colours 2025-10-24 03:04:11 +01:00
12 changed files with 265 additions and 225 deletions

View File

@@ -3,8 +3,10 @@
namespace MareSynchronos.API.Data; namespace MareSynchronos.API.Data;
[MessagePackObject(keyAsPropertyName: true)] [MessagePackObject(keyAsPropertyName: true)]
public record GroupData(string GID, string? Alias = null) public record GroupData(string GID, string? Alias = null, string? HexString = null)
{ {
[IgnoreMember] [IgnoreMember]
public string AliasOrGID => string.IsNullOrWhiteSpace(Alias) ? GID : Alias; public string AliasOrGID => string.IsNullOrWhiteSpace(Alias) ? GID : Alias;
[IgnoreMember]
public string? DisplayColour => string.IsNullOrWhiteSpace(HexString) ? null : HexString;
} }

View File

@@ -3,8 +3,10 @@
namespace MareSynchronos.API.Data; namespace MareSynchronos.API.Data;
[MessagePackObject(keyAsPropertyName: true)] [MessagePackObject(keyAsPropertyName: true)]
public record UserData(string UID, string? Alias = null) public record UserData(string UID, string? Alias = null, string? HexString = null)
{ {
[IgnoreMember] [IgnoreMember]
public string AliasOrUID => string.IsNullOrWhiteSpace(Alias) ? UID : Alias; public string AliasOrUID => string.IsNullOrWhiteSpace(Alias) ? UID : Alias;
[IgnoreMember]
public string? DisplayColour => string.IsNullOrWhiteSpace(HexString) ? null : HexString;
} }

View File

@@ -2,7 +2,7 @@
<Project Sdk="Dalamud.NET.Sdk/13.1.0"> <Project Sdk="Dalamud.NET.Sdk/13.1.0">
<PropertyGroup> <PropertyGroup>
<AssemblyName>Snowcloak</AssemblyName> <AssemblyName>Snowcloak</AssemblyName>
<Version>0.3.0</Version> <Version>0.3.1</Version>
<PackageProjectUrl>https://git.snowcloak-sync.com/Eauldane/SnowcloakClient/</PackageProjectUrl> <PackageProjectUrl>https://git.snowcloak-sync.com/Eauldane/SnowcloakClient/</PackageProjectUrl>
</PropertyGroup> </PropertyGroup>
@@ -15,18 +15,18 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Chaos.NaCl.Standard" Version="1.0.0" /> <PackageReference Include="Chaos.NaCl.Standard" Version="1.0.0" />
<PackageReference Include="Downloader" Version="4.0.3" /> <PackageReference Include="Downloader" Version="4.0.3" />
<PackageReference Include="Glamourer.Api" Version="2.6.0" /> <PackageReference Include="Glamourer.Api" Version="2.7.0" />
<PackageReference Include="K4os.Compression.LZ4.Legacy" Version="1.3.8" /> <PackageReference Include="K4os.Compression.LZ4.Legacy" Version="1.3.8" />
<PackageReference Include="K4os.Compression.LZ4.Streams" Version="1.3.8" /> <PackageReference Include="K4os.Compression.LZ4.Streams" Version="1.3.8" />
<PackageReference Include="MessagePack" Version="3.1.4" /> <PackageReference Include="MessagePack" Version="3.1.4" />
<PackageReference Include="MessagePack.Annotations" Version="3.1.4" /> <PackageReference Include="MessagePack.Annotations" Version="3.1.4" />
<PackageReference Include="Meziantou.Analyzer" Version="2.0.219"> <PackageReference Include="Meziantou.Analyzer" Version="2.0.231">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="9.0.9" /> <PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="9.0.10" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="9.0.9" /> <PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="9.0.10" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.9" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.10" />
<PackageReference Include="Penumbra.Api" Version="5.12.0" /> <PackageReference Include="Penumbra.Api" Version="5.12.0" />
<PackageReference Include="SonarAnalyzer.CSharp" Version="10.15.0.120848"> <PackageReference Include="SonarAnalyzer.CSharp" Version="10.15.0.120848">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
@@ -34,7 +34,8 @@
</PackageReference> </PackageReference>
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.14.0" /> <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.14.0" />
<PackageReference Update="DalamudPackager" Version="13.1.0" /> <PackageReference Update="DalamudPackager" Version="13.1.0" />
<PackageReference Include="System.IO.Pipelines" Version="9.0.9" /> <PackageReference Include="System.IO.Pipelines" Version="9.0.10" />
<PackageReference Update="DotNet.ReproducibleBuilds" Version="1.2.39" />
</ItemGroup> </ItemGroup>
<PropertyGroup> <PropertyGroup>

View File

@@ -15,6 +15,7 @@ using MareSynchronos.Services.ServerConfiguration;
using MareSynchronos.Utils; using MareSynchronos.Utils;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Numerics;
namespace MareSynchronos.PlayerData.Pairs; namespace MareSynchronos.PlayerData.Pairs;
@@ -27,6 +28,7 @@ public class Pair : DisposableMediatorSubscriberBase
private readonly ServerConfigurationManager _serverConfigurationManager; private readonly ServerConfigurationManager _serverConfigurationManager;
private CancellationTokenSource _applicationCts = new(); private CancellationTokenSource _applicationCts = new();
private OnlineUserIdentDto? _onlineUserIdentDto = null; private OnlineUserIdentDto? _onlineUserIdentDto = null;
public Vector4 PairColour;
public Pair(ILogger<Pair> logger, UserData userData, PairHandlerFactory cachedPlayerFactory, public Pair(ILogger<Pair> logger, UserData userData, PairHandlerFactory cachedPlayerFactory,
MareMediator mediator, MareConfigService mareConfig, ServerConfigurationManager serverConfigurationManager) MareMediator mediator, MareConfigService mareConfig, ServerConfigurationManager serverConfigurationManager)
@@ -38,6 +40,7 @@ public class Pair : DisposableMediatorSubscriberBase
_serverConfigurationManager = serverConfigurationManager; _serverConfigurationManager = serverConfigurationManager;
UserData = userData; UserData = userData;
PairColour = SnowcloakSync.Utils.Colours.Hex2Vector4(UserData.DisplayColour);
Mediator.SubscribeKeyed<HoldPairApplicationMessage>(this, UserData.UID, (msg) => HoldApplication(msg.Source)); Mediator.SubscribeKeyed<HoldPairApplicationMessage>(this, UserData.UID, (msg) => HoldApplication(msg.Source));
Mediator.SubscribeKeyed<UnholdPairApplicationMessage>(this, UserData.UID, (msg) => UnholdApplication(msg.Source)); Mediator.SubscribeKeyed<UnholdPairApplicationMessage>(this, UserData.UID, (msg) => UnholdApplication(msg.Source));

View File

@@ -372,7 +372,7 @@ public class CompactUi : WindowMediatorSubscriberBase
if (keys.Any()) if (keys.Any())
{ {
if (_secretKeyIdx == -1) _secretKeyIdx = keys.First().Key; if (_secretKeyIdx == -1) _secretKeyIdx = keys.First().Key;
if (_uiSharedService.IconTextButton(FontAwesomeIcon.Plus, "Log in with XIVAuth (experimental)")) if (_uiSharedService.IconTextButton(FontAwesomeIcon.Plus, "Log in with XIVAuth"))
{ {
_registrationInProgress = true; _registrationInProgress = true;
_ = Task.Run(async () => { _ = Task.Run(async () => {
@@ -697,11 +697,21 @@ public class CompactUi : WindowMediatorSubscriberBase
private Vector4 GetUidColor() private Vector4 GetUidColor()
{ {
var uidCol = _apiController.DisplayColour;
Vector4 uidColour;
if (uidCol.IsNullOrEmpty())
{
uidColour = UiSharedService.AccentColor;
} else
{
uidColour = SnowcloakSync.Utils.Colours.Hex2Vector4(uidCol);
}
return _apiController.ServerState switch return _apiController.ServerState switch
{ {
ServerState.Connecting => ImGuiColors.DalamudYellow, ServerState.Connecting => ImGuiColors.DalamudYellow,
ServerState.Reconnecting => ImGuiColors.DalamudRed, ServerState.Reconnecting => ImGuiColors.DalamudRed,
ServerState.Connected => UiSharedService.AccentColor, ServerState.Connected => uidColour,
ServerState.Disconnected => ImGuiColors.DalamudYellow, ServerState.Disconnected => ImGuiColors.DalamudYellow,
ServerState.Disconnecting => ImGuiColors.DalamudYellow, ServerState.Disconnecting => ImGuiColors.DalamudYellow,
ServerState.Unauthorized => ImGuiColors.DalamudRed, ServerState.Unauthorized => ImGuiColors.DalamudRed,

View File

@@ -250,7 +250,7 @@ internal sealed class GroupPanel
} }
if (textIsGid) ImGui.PushFont(UiBuilder.MonoFont); if (textIsGid) ImGui.PushFont(UiBuilder.MonoFont);
ImGui.SameLine(); ImGui.SameLine();
ImGui.TextUnformatted(groupName); ImGui.TextColored(SnowcloakSync.Utils.Colours.Hex2Vector4(groupDto.Group.DisplayColour), groupName);
if (textIsGid) ImGui.PopFont(); if (textIsGid) ImGui.PopFont();
UiSharedService.AttachToolTip("Left click to switch between GID display and comment" + Environment.NewLine + UiSharedService.AttachToolTip("Left click to switch between GID display and comment" + Environment.NewLine +
"Right click to change comment for " + groupName + Environment.NewLine + Environment.NewLine "Right click to change comment for " + groupName + Environment.NewLine + Environment.NewLine

View File

@@ -1,11 +1,13 @@
using Dalamud.Bindings.ImGui; using Dalamud.Bindings.ImGui;
using Dalamud.Interface; using Dalamud.Interface;
using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Utility.Raii;
using Lumina.Data.Parsing;
using MareSynchronos.MareConfiguration; using MareSynchronos.MareConfiguration;
using MareSynchronos.PlayerData.Pairs; using MareSynchronos.PlayerData.Pairs;
using MareSynchronos.Services.Mediator; using MareSynchronos.Services.Mediator;
using MareSynchronos.Services.ServerConfiguration; using MareSynchronos.Services.ServerConfiguration;
using MareSynchronos.UI.Components; using MareSynchronos.UI.Components;
using System.Numerics;
namespace MareSynchronos.UI.Handlers; namespace MareSynchronos.UI.Handlers;
@@ -63,9 +65,8 @@ public class UidDisplayHandler
if (!string.Equals(_editNickEntry, pair.UserData.UID, StringComparison.Ordinal)) if (!string.Equals(_editNickEntry, pair.UserData.UID, StringComparison.Ordinal))
{ {
ImGui.SetCursorPosY(originalY); ImGui.SetCursorPosY(originalY);
Vector4 pairColour = SnowcloakSync.Utils.Colours.Hex2Vector4(pair.UserData.DisplayColour);
using (ImRaii.PushFont(UiBuilder.MonoFont, textIsUid)) ImGui.TextUnformatted(playerText); using (ImRaii.PushFont(UiBuilder.MonoFont, textIsUid)) ImGui.TextColored(pairColour, playerText);
if (ImGui.IsItemHovered()) if (ImGui.IsItemHovered())
{ {
if (!string.Equals(_lastMouseOverUid, id)) if (!string.Equals(_lastMouseOverUid, id))

View File

@@ -263,7 +263,7 @@ public partial class IntroUi : WindowMediatorSubscriberBase
ImGui.BeginDisabled(_registrationInProgress || _registrationSuccess || _secretKey.Length > 0); ImGui.BeginDisabled(_registrationInProgress || _registrationSuccess || _secretKey.Length > 0);
ImGui.Separator(); ImGui.Separator();
ImGui.TextUnformatted("If you have not used Snowcloak before, click below to register a new account."); ImGui.TextUnformatted("If you have not used Snowcloak before, click below to register a new account.");
if (_uiShared.IconTextButton(FontAwesomeIcon.Plus, "Log in with XIVAuth (experimental)")) if (_uiShared.IconTextButton(FontAwesomeIcon.Plus, "Log in with XIVAuth"))
{ {
_registrationInProgress = true; _registrationInProgress = true;
_ = Task.Run(async () => { _ = Task.Run(async () => {
@@ -296,7 +296,7 @@ public partial class IntroUi : WindowMediatorSubscriberBase
}); });
} }
ImGui.SameLine(); ImGui.SameLine();
if (_uiShared.IconTextButton(FontAwesomeIcon.Plus, "Register a new Snowcloak account")) if (_uiShared.IconTextButton(FontAwesomeIcon.Plus, "Register new Snowcloak account (legacy method)"))
{ {
_registrationInProgress = true; _registrationInProgress = true;
_ = Task.Run(async () => { _ = Task.Run(async () => {

View File

@@ -1752,7 +1752,7 @@ public class SettingsUi : WindowMediatorSubscriberBase
if (true) // Enable registration button for all servers if (true) // Enable registration button for all servers
{ {
ImGui.SameLine(); ImGui.SameLine();
if (_uiShared.IconTextButton(FontAwesomeIcon.Plus, "Register a new Snowcloak account")) if (_uiShared.IconTextButton(FontAwesomeIcon.Plus, "Register a Snowcloak account (legacy method)"))
{ {
_registrationInProgress = true; _registrationInProgress = true;
_ = Task.Run(async () => { _ = Task.Run(async () => {

View File

@@ -73,6 +73,8 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IM
public Version CurrentClientVersion => _connectionDto?.CurrentClientVersion ?? new Version(0, 0, 0); public Version CurrentClientVersion => _connectionDto?.CurrentClientVersion ?? new Version(0, 0, 0);
public string DisplayName => _connectionDto?.User.AliasOrUID ?? string.Empty; public string DisplayName => _connectionDto?.User.AliasOrUID ?? string.Empty;
public string DisplayColour => _connectionDto?.User.DisplayColour ?? string.Empty;
public bool IsConnected => ServerState == ServerState.Connected; public bool IsConnected => ServerState == ServerState.Connected;

View File

@@ -16,9 +16,9 @@
}, },
"DotNet.ReproducibleBuilds": { "DotNet.ReproducibleBuilds": {
"type": "Direct", "type": "Direct",
"requested": "[1.2.25, )", "requested": "[1.2.39, )",
"resolved": "1.2.25", "resolved": "1.2.39",
"contentHash": "xCXiw7BCxHJ8pF6wPepRUddlh2dlQlbr81gXA72hdk4FLHkKXas7EH/n+fk5UCA/YfMqG1Z6XaPiUjDbUNBUzg==" "contentHash": "fcFN01tDTIQqDuTwr1jUQK/geofiwjG5DycJQOnC72i1SsLAk1ELe+apBOuZ11UMQG8YKFZG1FgvjZPbqHyatg=="
}, },
"Downloader": { "Downloader": {
"type": "Direct", "type": "Direct",
@@ -31,9 +31,9 @@
}, },
"Glamourer.Api": { "Glamourer.Api": {
"type": "Direct", "type": "Direct",
"requested": "[2.6.0, )", "requested": "[2.7.0, )",
"resolved": "2.6.0", "resolved": "2.7.0",
"contentHash": "zysCZgNBRm3k3qvibyw/31MmEckX0Uh0ZsT+Sax3ZHnYIRELr9Qhbz3cjJz7u0RHGIrNJiRpktu/LxgHEqDItw==" "contentHash": "H4yRNEhdSQ+YkZlnE7qRM67GaNieb9Xe9Vpj3rvHvcSB0eWgMF1nHqCvkBNb4L38AV4WyWTzwtXh6+Rv5GuVTw=="
}, },
"K4os.Compression.LZ4.Legacy": { "K4os.Compression.LZ4.Legacy": {
"type": "Direct", "type": "Direct",
@@ -74,58 +74,58 @@
}, },
"Meziantou.Analyzer": { "Meziantou.Analyzer": {
"type": "Direct", "type": "Direct",
"requested": "[2.0.219, )", "requested": "[2.0.231, )",
"resolved": "2.0.219", "resolved": "2.0.231",
"contentHash": "vknqxTO59DkRmsuyA3GoQ8zLODHTVrt2enVozcRLY22D3LRJm3qRNYIkpFl1lfejOsahrMwObtYzKLmWf7/XTQ==" "contentHash": "h5FQkDk22R291JofPXFDxrgNyk1RGCqeIQKcrCRXYz+p5v2Ade2C9PpRiatasVqSDPyFk2q/B5AflWM2a9TVwQ=="
}, },
"Microsoft.AspNetCore.SignalR.Client": { "Microsoft.AspNetCore.SignalR.Client": {
"type": "Direct", "type": "Direct",
"requested": "[9.0.9, )", "requested": "[9.0.10, )",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "xx1VCb/cxdOgKg+dQuTpZ3xR2/qpKvwD4iLIjFD+gDgsanVFtm/hEyfRg2nUUqF0UD9kyW0YUz2dsEL3GKjCGg==", "contentHash": "TQDXsU5mTtI1el77bS55FoNYi1CPIuPoKUDp6W/j22FA/ajHMjgmeikC87UPiZkdiJDjNyCehj91YMGNi3xCDg==",
"dependencies": { "dependencies": {
"Microsoft.AspNetCore.Http.Connections.Client": "9.0.9", "Microsoft.AspNetCore.Http.Connections.Client": "9.0.10",
"Microsoft.AspNetCore.SignalR.Client.Core": "9.0.9" "Microsoft.AspNetCore.SignalR.Client.Core": "9.0.10"
} }
}, },
"Microsoft.AspNetCore.SignalR.Protocols.MessagePack": { "Microsoft.AspNetCore.SignalR.Protocols.MessagePack": {
"type": "Direct", "type": "Direct",
"requested": "[9.0.9, )", "requested": "[9.0.10, )",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "OgsyQ8NgbWvkMV+Gqr0gVhOXw2AQuIZk/wN2KdnIyzj4I7qImHLPzGh31gc2Hns8T3n0UaJgBayFWLOOHV81mg==", "contentHash": "VXD6Blc5YIqi/ZwJhkaD7wWIdcq2mIe2vuj9aqbQPVLlAKU/t/l/zf4ZqXAacyUMRTPGuHXQJzsRWQ6bytVQFQ==",
"dependencies": { "dependencies": {
"MessagePack": "2.5.187", "MessagePack": "2.5.187",
"Microsoft.AspNetCore.SignalR.Common": "9.0.9" "Microsoft.AspNetCore.SignalR.Common": "9.0.10"
} }
}, },
"Microsoft.Extensions.Hosting": { "Microsoft.Extensions.Hosting": {
"type": "Direct", "type": "Direct",
"requested": "[9.0.9, )", "requested": "[9.0.10, )",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "DmRsWH3g8yZGho/pLQ79hxhM2ctE1eDTZ/HbAnrD/uw8m+P2pRRJOoBVxlrhbhMP3/y3oAJoy0yITasfmilbTg==", "contentHash": "63yDlitelCBNl1unJsnEWVUCZHOtxbVTbTODi7cszQJBG9bIfdPYIpB9w0UIcoqVSP1C9P6THXgukx8APWRzMw==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Configuration": "9.0.9", "Microsoft.Extensions.Configuration": "9.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "9.0.9", "Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.Configuration.Binder": "9.0.9", "Microsoft.Extensions.Configuration.Binder": "9.0.10",
"Microsoft.Extensions.Configuration.CommandLine": "9.0.9", "Microsoft.Extensions.Configuration.CommandLine": "9.0.10",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "9.0.9", "Microsoft.Extensions.Configuration.EnvironmentVariables": "9.0.10",
"Microsoft.Extensions.Configuration.FileExtensions": "9.0.9", "Microsoft.Extensions.Configuration.FileExtensions": "9.0.10",
"Microsoft.Extensions.Configuration.Json": "9.0.9", "Microsoft.Extensions.Configuration.Json": "9.0.10",
"Microsoft.Extensions.Configuration.UserSecrets": "9.0.9", "Microsoft.Extensions.Configuration.UserSecrets": "9.0.10",
"Microsoft.Extensions.DependencyInjection": "9.0.9", "Microsoft.Extensions.DependencyInjection": "9.0.10",
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9", "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Diagnostics": "9.0.9", "Microsoft.Extensions.Diagnostics": "9.0.10",
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.9", "Microsoft.Extensions.FileProviders.Abstractions": "9.0.10",
"Microsoft.Extensions.FileProviders.Physical": "9.0.9", "Microsoft.Extensions.FileProviders.Physical": "9.0.10",
"Microsoft.Extensions.Hosting.Abstractions": "9.0.9", "Microsoft.Extensions.Hosting.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.9", "Microsoft.Extensions.Logging": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.9", "Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging.Configuration": "9.0.9", "Microsoft.Extensions.Logging.Configuration": "9.0.10",
"Microsoft.Extensions.Logging.Console": "9.0.9", "Microsoft.Extensions.Logging.Console": "9.0.10",
"Microsoft.Extensions.Logging.Debug": "9.0.9", "Microsoft.Extensions.Logging.Debug": "9.0.10",
"Microsoft.Extensions.Logging.EventLog": "9.0.9", "Microsoft.Extensions.Logging.EventLog": "9.0.10",
"Microsoft.Extensions.Logging.EventSource": "9.0.9", "Microsoft.Extensions.Logging.EventSource": "9.0.10",
"Microsoft.Extensions.Options": "9.0.9" "Microsoft.Extensions.Options": "9.0.10"
} }
}, },
"Penumbra.Api": { "Penumbra.Api": {
@@ -152,9 +152,9 @@
}, },
"System.IO.Pipelines": { "System.IO.Pipelines": {
"type": "Direct", "type": "Direct",
"requested": "[9.0.9, )", "requested": "[9.0.10, )",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "VySjpsCLprojvat550Flrm3NQB982CPuDzILajqjQihFmrQXZPdQyktIbcpVPJyaExFYtAfY1DpwMdWQuS0kbw==" "contentHash": "lwI0mhHcCxMtNSxB5ate9Gc9petWovRBUprtjz2yiIDDZPGBIaUiqNzQHJzjPuzTnvNbEMilpAXjDguKsU/2Fg=="
}, },
"K4os.Compression.LZ4": { "K4os.Compression.LZ4": {
"type": "Transitive", "type": "Transitive",
@@ -173,313 +173,313 @@
}, },
"Microsoft.AspNetCore.Connections.Abstractions": { "Microsoft.AspNetCore.Connections.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "bb9kWEjwFHfOxcflTdFjcYY0Cnvc0iqnEt5qQ3O73iKPx8v1jkc/LU5wohOCzIrhWsXREaLtQV1Y15SBISNJiA==", "contentHash": "z0sD3sBAgWNZ0omLYUvEO5vmec5NV7tvfMBfrhByRfLd7YLkzGxOZN/KvEWzH4Ifg6dBcHLZ+4cbJoFJHXrUUA==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Features": "9.0.9" "Microsoft.Extensions.Features": "9.0.10"
} }
}, },
"Microsoft.AspNetCore.Http.Connections.Client": { "Microsoft.AspNetCore.Http.Connections.Client": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "Ciahjlswi4hylLMfI/gNhNYPuBp0BMP2E/vcG3J7U+wZqSSq8tEeHahEG6h9RF5zPFEISroGOIM6l1uxCP1BfA==", "contentHash": "wHXxSYZnXYom4sHWZMzGgngIpHBIG0M1/i5HfLF6tQjBpx399OdTwC+BO1yYjbTr6RyWHx4UglRGYNs+6fpUkA==",
"dependencies": { "dependencies": {
"Microsoft.AspNetCore.Http.Connections.Common": "9.0.9", "Microsoft.AspNetCore.Http.Connections.Common": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.9", "Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.9", "Microsoft.Extensions.Options": "9.0.10",
"System.Net.ServerSentEvents": "9.0.9" "System.Net.ServerSentEvents": "9.0.10"
} }
}, },
"Microsoft.AspNetCore.Http.Connections.Common": { "Microsoft.AspNetCore.Http.Connections.Common": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "S9ssCBd7Kc0sZN5kiHgvikyNqSI5bMyWYxrfl/Hu1S8ymwEhXFiDf2yFhgkapIiIHOXHjF7mgma2Gqmglivo5g==", "contentHash": "EARfS3nepXK/b3P3ROPKV4euaHuBRFpa63dmy9TSN0qS8Dp/lQAR+RB/Yhlm5CMXvvyr42Ue1QV/dN8XeGXD3w==",
"dependencies": { "dependencies": {
"Microsoft.AspNetCore.Connections.Abstractions": "9.0.9" "Microsoft.AspNetCore.Connections.Abstractions": "9.0.10"
} }
}, },
"Microsoft.AspNetCore.SignalR.Client.Core": { "Microsoft.AspNetCore.SignalR.Client.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "DRSFXVLcgCkYGBb6vtBgYUec+QnCbtQnMabk4p5zbtrqsJ19Uvfk36zNeJKgsBGmNt5HouWPuuB7KJP+IHDAOw==", "contentHash": "LxnasvhMSG7L+asb88VN7Z6yr0PJTdOdN8UnGtZClySbiSIQGMtsaoCNmQxT9AA6Yvb7QBA0/H+4AGDrT34Xew==",
"dependencies": { "dependencies": {
"Microsoft.AspNetCore.SignalR.Common": "9.0.9", "Microsoft.AspNetCore.SignalR.Common": "9.0.10",
"Microsoft.AspNetCore.SignalR.Protocols.Json": "9.0.9", "Microsoft.AspNetCore.SignalR.Protocols.Json": "9.0.10",
"Microsoft.Extensions.DependencyInjection": "9.0.9", "Microsoft.Extensions.DependencyInjection": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.9", "Microsoft.Extensions.Logging": "9.0.10",
"System.Threading.Channels": "9.0.9" "System.Threading.Channels": "9.0.10"
} }
}, },
"Microsoft.AspNetCore.SignalR.Common": { "Microsoft.AspNetCore.SignalR.Common": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "Fv/0TLXCOSpLsgHvL/tMJh4RpU/Ew7p9xET5VGOFjyCLkeZTNeZivzdZ0lHgKpSsQPmxvS45Csuj3qbr1O8zSw==", "contentHash": "jwoS5gG0GNwSXX8Fyn7m1sEUzeH/W9q8wqAJs4v2a6ffKBnqjcG4YiiPZDyN7UhJCWAjeU2low+XjJ3YfN7iHQ==",
"dependencies": { "dependencies": {
"Microsoft.AspNetCore.Connections.Abstractions": "9.0.9", "Microsoft.AspNetCore.Connections.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.9" "Microsoft.Extensions.Options": "9.0.10"
} }
}, },
"Microsoft.AspNetCore.SignalR.Protocols.Json": { "Microsoft.AspNetCore.SignalR.Protocols.Json": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "8X46a+p6AHdMDs1gNxTzQ+8rzb+/GetBmWgymUCbS8sNi2XQLlPg2jNRWykhIxqIh3UbDYV9cKe4SDLsFYSRtw==", "contentHash": "AhBUSG98Us2LLW3FjhtAaa6x0zL1jyjjYYZ0CSCoi9fmIuOLl/5WxXOP48VsrChi6NpZ3C31yHpScl4vqLdPcA==",
"dependencies": { "dependencies": {
"Microsoft.AspNetCore.SignalR.Common": "9.0.9" "Microsoft.AspNetCore.SignalR.Common": "9.0.10"
} }
}, },
"Microsoft.Extensions.Configuration": { "Microsoft.Extensions.Configuration": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "w87wF/90/VI0ZQBhf4rbMEeyEy0vi2WKjFmACsNAKNaorY+ZlVz7ddyXkbADvaWouMKffNmR0yQOGcrvSSvKGg==", "contentHash": "UAm3SLGAMlJdowbN+/xnh2UGJkdJoXVm4MsdhZ60dAMS8jteoyCx5WfIab5DKv0TCYpdhVecLJVUjEO3abs9UQ==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "9.0.9", "Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.Primitives": "9.0.9" "Microsoft.Extensions.Primitives": "9.0.10"
} }
}, },
"Microsoft.Extensions.Configuration.Abstractions": { "Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "p5RKAY9POvs3axwA/AQRuJeM8AHuE8h4qbP1NxQeGm0ep46aXz1oCLAp/oOYxX1GsjStgdhHrN3XXLLXr0+b3w==", "contentHash": "ad3JxmFj0uxuFa1CT6oxTCC1lQ0xeRuOvzBRFT/I/ofIXVOnNsH/v2GZkAJWhlpZqKUvSexQZzp3EEAB2CdtJg==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Primitives": "9.0.9" "Microsoft.Extensions.Primitives": "9.0.10"
} }
}, },
"Microsoft.Extensions.Configuration.Binder": { "Microsoft.Extensions.Configuration.Binder": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "6SIp/6Bngk4jm2W36JekZbiIbFPdE/eMUtrJEqIqHGpd1zar3jvgnwxnpWQfzUiGrkyY8q8s6V82zkkEZozghA==", "contentHash": "D6Kng+9I+w1SQPxJybc6wzw9nnnyUQPutycjtI0svv1RHaWOpUk9PPlwIRfhhoQZ3yihejkEI2wNv/7VnVtkGA==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "9.0.9" "Microsoft.Extensions.Configuration.Abstractions": "9.0.10"
} }
}, },
"Microsoft.Extensions.Configuration.CommandLine": { "Microsoft.Extensions.Configuration.CommandLine": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "9bzGOcHoTi8ijrj0MHh5qUY6n9CuittZUqEOj5iE0ZJoSCfG0BI9nhcpd8MC9bOOgjZW5OeizKO8rgta9lSVyA==", "contentHash": "Sg400UyKl33kOpqklEg1MIM3lpY/aWi7QZTB2JfFpKgxnSRQl9J6tHiKYll+Rd603P+71YsDy/zqBYUE/3Xeag==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Configuration": "9.0.9", "Microsoft.Extensions.Configuration": "9.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "9.0.9" "Microsoft.Extensions.Configuration.Abstractions": "9.0.10"
} }
}, },
"Microsoft.Extensions.Configuration.EnvironmentVariables": { "Microsoft.Extensions.Configuration.EnvironmentVariables": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "AB8suTh4STAMGDkPer5vL0YNp09eplvbkIbOfFJ1z8D1zOiFF8Hipk9FhCLU4Ea6TosWmGrK30ZIUO9KvAeFcg==", "contentHash": "Nje8x5JDRi7uzf2q3NpXiBleRRJAxJMnHcJTi0tLyqd6eGIICRuF6qxgZssMS1r8xXDoaUr/2ZLQ6Cui1Io+Qw==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Configuration": "9.0.9", "Microsoft.Extensions.Configuration": "9.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "9.0.9" "Microsoft.Extensions.Configuration.Abstractions": "9.0.10"
} }
}, },
"Microsoft.Extensions.Configuration.FileExtensions": { "Microsoft.Extensions.Configuration.FileExtensions": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "fvgubCs++wTowHWuQ5TAyZV0S6ldA59U+tBVqFr4/WLd0oEf6ESbdBN2CFaVdn4sZqnarqMnl2O3++RG/Jrf/w==", "contentHash": "kYWY9VRoCKQJCLKAA4Wqn74FVnytqosF7vFq1chJ8st9mGZS6SQrkoZg7GmcpqrRRUWmWDOZI4nFdoFnxsI/Ug==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Configuration": "9.0.9", "Microsoft.Extensions.Configuration": "9.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "9.0.9", "Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.9", "Microsoft.Extensions.FileProviders.Abstractions": "9.0.10",
"Microsoft.Extensions.FileProviders.Physical": "9.0.9", "Microsoft.Extensions.FileProviders.Physical": "9.0.10",
"Microsoft.Extensions.Primitives": "9.0.9" "Microsoft.Extensions.Primitives": "9.0.10"
} }
}, },
"Microsoft.Extensions.Configuration.Json": { "Microsoft.Extensions.Configuration.Json": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "PiPYo1GTinR2ECM80zYdZUIFmde6jj5DryXUcOJg3yIjh+KQMQr42e+COD03QUsUiqNkJk511wVTnVpTm2AVZA==", "contentHash": "bn+qnwuOaDelax8PUw30UTjLOuEd0lGWqUG4Z+oVr4D/gEWouCWOyvCVkyn+PWbftPlnmAmWxd4J+7ljwE8wVw==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Configuration": "9.0.9", "Microsoft.Extensions.Configuration": "9.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "9.0.9", "Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.Configuration.FileExtensions": "9.0.9", "Microsoft.Extensions.Configuration.FileExtensions": "9.0.10",
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.9" "Microsoft.Extensions.FileProviders.Abstractions": "9.0.10"
} }
}, },
"Microsoft.Extensions.Configuration.UserSecrets": { "Microsoft.Extensions.Configuration.UserSecrets": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "bFaNxfU8gQJX3K/Dd6XT0YIJ5ZVihdAY6Z02p2nVTUHjUsaWflLIucZOgB/ecSNnN3zbbBEf1oFC7q5NHTZIHw==", "contentHash": "l7em+qNfEdGlwRm8Qk2rkzqjT8xWb/EosoQeTvJ3kZYiRo5inMj0nNcZw51dUKwGO/LW7uNMdqNNU3P0pB5JqA==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "9.0.9", "Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.Configuration.Json": "9.0.9", "Microsoft.Extensions.Configuration.Json": "9.0.10",
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.9", "Microsoft.Extensions.FileProviders.Abstractions": "9.0.10",
"Microsoft.Extensions.FileProviders.Physical": "9.0.9" "Microsoft.Extensions.FileProviders.Physical": "9.0.10"
} }
}, },
"Microsoft.Extensions.DependencyInjection": { "Microsoft.Extensions.DependencyInjection": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "zQV2WOSP+3z1EuK91ULxfGgo2Y75bTRnmJHp08+w/YXAyekZutX/qCd88/HOMNh35MDW9mJJJxPpMPS+1Rww8A==", "contentHash": "iEtXCkNd5XhjNJAOb/wO4IhDRdLIE2CsPxZggZQWJ/q2+sa8dmEPC393nnsiqdH8/4KV8Xn25IzgKPR1UEQ0og==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9" "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10"
} }
}, },
"Microsoft.Extensions.DependencyInjection.Abstractions": { "Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "/hymojfWbE9AlDOa0mczR44m00Jj+T3+HZO0ZnVTI032fVycI0ZbNOVFP6kqZMcXiLSYXzR2ilcwaRi6dzeGyA==" "contentHash": "r9waLiOPe9ZF1PvzUT+RDoHvpMmY8MW+lb4lqjYGObwKpnyPMLI3odVvlmshwuZcdoHynsGWOrCPA0hxZ63lIA=="
}, },
"Microsoft.Extensions.Diagnostics": { "Microsoft.Extensions.Diagnostics": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "gtzl9SD6CvFYOb92qEF41Z9rICzYniM342TWbbJwN3eLS6a5fCLFvO1pQGtpMSnP3h1zHXupMEeKSA9musWYCQ==", "contentHash": "01x2vz0AbIdfNUzEVYFq2HSeq1BmrSDpiG7nTmwjfd0d39sahQ8T7dhSXhH+YnZyaLWyMBudOq0vVa/voyNWjg==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Configuration": "9.0.9", "Microsoft.Extensions.Configuration": "9.0.10",
"Microsoft.Extensions.Diagnostics.Abstractions": "9.0.9", "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.10",
"Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.9" "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.10"
} }
}, },
"Microsoft.Extensions.Diagnostics.Abstractions": { "Microsoft.Extensions.Diagnostics.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "YHGmxccrVZ2Ar3eI+/NdbOHkd1/HzrHvmQ5yBsp0Gl7jTyBe6qcXNYjUt9v9JIO+Z14la44+YYEe63JSqs1fYg==", "contentHash": "iwVnYi+gNKrr5riw8YFCoLCN4s0dmHtzfUmV99RIhrz8R4d6C/bsKzXhIhZWDIxJOhVzB+idSOQeRGj1/oMF+Q==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9", "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.9" "Microsoft.Extensions.Options": "9.0.10"
} }
}, },
"Microsoft.Extensions.Features": { "Microsoft.Extensions.Features": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "0MPp/tJ9cFsJCzEKG5g4fUSpwG7bAt9JGADPx5eAThWa9ii2wfOa6f3yxi1IoXWsWqVcq4xlRGrdUAZlpIYalw==" "contentHash": "/94E6QLu+0jOWRzcaq80a0/7EmOzuwDWDNOyVYezMTeX4BzhXCfAsUrZi9Lg+4VP2J+21sTa+AaCgMdXiG/cpw=="
}, },
"Microsoft.Extensions.FileProviders.Abstractions": { "Microsoft.Extensions.FileProviders.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "M1ZhL9QkBQ/k6l/Wjgcli5zrV86HzytQ+gQiNtk9vs9Ge1fb17KKZil9T6jd15p2x/BGfXpup7Hg55CC0kkfig==", "contentHash": "3+cLxZKUWBbpfIXLLuKcEok9C91PsV1h5xxfUsEnLSXXLNMiPDfrhpb1xajNFcejFPs9Ck/Fi3z71hYDqFBwYg==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Primitives": "9.0.9" "Microsoft.Extensions.Primitives": "9.0.10"
} }
}, },
"Microsoft.Extensions.FileProviders.Physical": { "Microsoft.Extensions.FileProviders.Physical": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "sRrPtEwbK23OCFOQ36Xn6ofiB0/nl54/BOdR7lJ/Vwg3XlyvUdmyXvFUS1EU5ltn+sQtbcPuy1l0hsysO8++SQ==", "contentHash": "Eg3YOEMpHWZzAgPD9YvGkQSv97AtG3II6maRQV/voDRORh4bRiyl0mVtT2PKnu1JoD9rJeYgjGCwRvVWMBaqgQ==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.9", "Microsoft.Extensions.FileProviders.Abstractions": "9.0.10",
"Microsoft.Extensions.FileSystemGlobbing": "9.0.9", "Microsoft.Extensions.FileSystemGlobbing": "9.0.10",
"Microsoft.Extensions.Primitives": "9.0.9" "Microsoft.Extensions.Primitives": "9.0.10"
} }
}, },
"Microsoft.Extensions.FileSystemGlobbing": { "Microsoft.Extensions.FileSystemGlobbing": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "iQAgORaVIlkhcpxFnVEfjqNWfQCwBEEH7x2IanTwGafA6Tb4xiBoDWySTxUo3MV2NUV/PmwS/8OhT/elPnJCnw==" "contentHash": "KdZAM2YMYBipVp/4tSEWPLnrocd17SL4iaXdgXjR5/nheBXbfR5QfPWYoTyh6C6IW3uKR7TRMwQr2qCvtaCTiA=="
}, },
"Microsoft.Extensions.Hosting.Abstractions": { "Microsoft.Extensions.Hosting.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "ORA4dICNz7cuwupPkjXpSuoiK6GMg0aygInBIQCCFEimwoHntRKdJqB59faxq2HHJuTPW3NsZm5EjN5P5Zh6nQ==", "contentHash": "spfXydiEQENFwxdgr3Y57wwys/FRjfmq5VjHGPh6ct1FJK7X+qNEWYbnZJCMqq0B0oJTMvnItAReOv4mi2Idog==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "9.0.9", "Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9", "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Diagnostics.Abstractions": "9.0.9", "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.10",
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.9", "Microsoft.Extensions.FileProviders.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.9" "Microsoft.Extensions.Logging.Abstractions": "9.0.10"
} }
}, },
"Microsoft.Extensions.Logging": { "Microsoft.Extensions.Logging": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "MaCB0Y9hNDs4YLu3HCJbo199WnJT8xSgajG1JYGANz9FkseQ5f3v/llu3HxLI6mjDlu7pa7ps9BLPWjKzsAAzQ==", "contentHash": "UBXHqE9vyptVhaFnT1R7YJKCve7TqVI10yjjUZBNGMlW2lZ4c031Slt9hxsOzWCzlpPxxIFyf1Yk4a6Iubxx7w==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection": "9.0.9", "Microsoft.Extensions.DependencyInjection": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.9", "Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.9" "Microsoft.Extensions.Options": "9.0.10"
} }
}, },
"Microsoft.Extensions.Logging.Abstractions": { "Microsoft.Extensions.Logging.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "FEgpSF+Z9StMvrsSViaybOBwR0f0ZZxDm8xV5cSOFiXN/t+ys+rwAlTd/6yG7Ld1gfppgvLcMasZry3GsI9lGA==", "contentHash": "MFUPv/nN1rAQ19w43smm6bbf0JDYN/1HEPHoiMYY50pvDMFpglzWAuoTavByDmZq7UuhjaxwrET3joU69ZHoHQ==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9" "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10"
} }
}, },
"Microsoft.Extensions.Logging.Configuration": { "Microsoft.Extensions.Logging.Configuration": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "Abuo+S0Sg+Ke6vzSh5Ell+lwJJM+CEIqg1ImtWnnqF6a/ibJkQnmFJi4/ekEw/0uAcdFKJXtGV7w6cFN0nyXeg==", "contentHash": "qwTRpxrmLOXZrbgQHRZ9wS2AtVa/61DFIYk8k1rBCCgA5qW0MBxxQC4BjkaI0wSoHHOv/IUXBeFNK+Y59qe/Ug==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Configuration": "9.0.9", "Microsoft.Extensions.Configuration": "9.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "9.0.9", "Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.Configuration.Binder": "9.0.9", "Microsoft.Extensions.Configuration.Binder": "9.0.10",
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9", "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.9", "Microsoft.Extensions.Logging": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.9", "Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.9", "Microsoft.Extensions.Options": "9.0.10",
"Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.9" "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.10"
} }
}, },
"Microsoft.Extensions.Logging.Console": { "Microsoft.Extensions.Logging.Console": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "x3+W7IfW9Tg3sV+sU9N1039M4CqklaAecwhz9qNtjOCBdmg7h96JaL+NAvhYgZgweVJTJaxAvuO8I+ZZehE7Pg==", "contentHash": "ponA8k4E4S0LlQ8J4ce4Yp1NND8rxww0lbADK9yL3omRpnnawiENb7W/CTgZUIZVJxKcmIwhm1IbUCRk6RLocQ==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9", "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.9", "Microsoft.Extensions.Logging": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.9", "Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging.Configuration": "9.0.9", "Microsoft.Extensions.Logging.Configuration": "9.0.10",
"Microsoft.Extensions.Options": "9.0.9" "Microsoft.Extensions.Options": "9.0.10"
} }
}, },
"Microsoft.Extensions.Logging.Debug": { "Microsoft.Extensions.Logging.Debug": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "q8IbjIzTjfaGfuf9LAuG3X9BytAWj2hWhLU61rEkit847oaSSbcdx/yybY3yL9RgVG1u9ctk7kbCv18M+7Fi6Q==", "contentHash": "Uj4YMaMMLawIkpHYnDWsR2/pufV/8X3dDT1/RNhkmt8RRf6/SriyA2gxH6I6bj4gFx6yMuFWZhCgFLy3wcSGTw==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9", "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.9", "Microsoft.Extensions.Logging": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.9" "Microsoft.Extensions.Logging.Abstractions": "9.0.10"
} }
}, },
"Microsoft.Extensions.Logging.EventLog": { "Microsoft.Extensions.Logging.EventLog": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "1SX5+mv16SBb5NrtLNxIvUt8PHbdvDloZazQdxz1CNM39jG7yeF6olH3sceQ4ONF0oVD5mVUsTag0iVX4xgyog==", "contentHash": "Son+9zr7gnuYv1CcuZ8b6XhZK/UQRG88Ku1iSUvAQSZ1cFjYC+lDYRD6nBVXF2QIQyv0jhjt/MPKD7sA+323TQ==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9", "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.9", "Microsoft.Extensions.Logging": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.9", "Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.9", "Microsoft.Extensions.Options": "9.0.10",
"System.Diagnostics.EventLog": "9.0.9" "System.Diagnostics.EventLog": "9.0.10"
} }
}, },
"Microsoft.Extensions.Logging.EventSource": { "Microsoft.Extensions.Logging.EventSource": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "rGQi5mImot7tTFxj1tQWknWjOBHX1+gsX1WLmQNl5WHr4Sx1kXUBGDuRUjfx4c8pe/hcYHdalAmgk7RdusW6Jw==", "contentHash": "qhqkUWsf/CVyQ9V98n5uWSQcvy7HbyRkhyhpK75OKojWuaNKoEIfBmrHRiahmdGJDuh2Qz/nDpFOjQOi/ERtZQ==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9", "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.9", "Microsoft.Extensions.Logging": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.9", "Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.9", "Microsoft.Extensions.Options": "9.0.10",
"Microsoft.Extensions.Primitives": "9.0.9" "Microsoft.Extensions.Primitives": "9.0.10"
} }
}, },
"Microsoft.Extensions.Options": { "Microsoft.Extensions.Options": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "loxGGHE1FC2AefwPHzrjPq7X92LQm64qnU/whKfo6oWaceewPUVYQJBJs3S3E2qlWwnCpeZ+dGCPTX+5dgVAuQ==", "contentHash": "zMNABt8eBv0B0XrWjFy9nZNgddavaOeq3ZdaD5IlHhRH65MrU7HM+Hd8GjWE3e2VDGFPZFfSAc6XVXC17f9fOA==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9", "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Primitives": "9.0.9" "Microsoft.Extensions.Primitives": "9.0.10"
} }
}, },
"Microsoft.Extensions.Options.ConfigurationExtensions": { "Microsoft.Extensions.Options.ConfigurationExtensions": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "n4DCdnn2qs6V5U06Sx62FySEAZsJiJJgOzrPHDh9hPK7c2W8hEabC76F3Re3tGPjpiKa02RvB6FxZyxo8iICzg==", "contentHash": "wLsf2TyVFFxWQPv0PRJj365it1ngIt8utlHJWSZ9OJ2k+NDa/PtBIRsGlF/NkoLwm1m+1vOePNl2MiKfk6lYfQ==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "9.0.9", "Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.Configuration.Binder": "9.0.9", "Microsoft.Extensions.Configuration.Binder": "9.0.10",
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9", "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.9", "Microsoft.Extensions.Options": "9.0.10",
"Microsoft.Extensions.Primitives": "9.0.9" "Microsoft.Extensions.Primitives": "9.0.10"
} }
}, },
"Microsoft.Extensions.Primitives": { "Microsoft.Extensions.Primitives": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "z4pyMePOrl733ltTowbN565PxBw1oAr8IHmIXNDiDqd22nFpYltX9KhrNC/qBWAG1/Zx5MHX+cOYhWJQYCO/iw==" "contentHash": "3pl8D1O5ZwMpDkZAT2uXrhQ6NipkwEgDLMFuURiHTf72TvkoMP61QYH3Vk1yrzVHnHBdNZk3cQACz8Zc7YGNhQ=="
}, },
"Microsoft.IdentityModel.Abstractions": { "Microsoft.IdentityModel.Abstractions": {
"type": "Transitive", "type": "Transitive",
@@ -518,18 +518,18 @@
}, },
"System.Diagnostics.EventLog": { "System.Diagnostics.EventLog": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "wpsUfnyv8E5K4WQaok6weewvAbQhcLwXFcHBm5U0gdEaBs85N//ssuYvRPFWwz2rO/9/DFP3A1sGMzUFBj8y3w==" "contentHash": "Jc+az1pTMujPLDn2j5eqSfzlO7j/T1K/LB7THxdfRWOxujE4zaitUqBs7sv1t6/xmmvpU6Xx3IofCs4owYH0yQ=="
}, },
"System.Net.ServerSentEvents": { "System.Net.ServerSentEvents": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "zEISfefh8BYD5m+GMsYJnodiTaz2fDBEOrLgYH7VsQhMIzNkcuSsg9Df/d3zywYX5ohCyCJ5AOax50XLKnXyjw==" "contentHash": "PuUpJ0Hl37jY8lTY9+A1zyE+KxHIkomBJ9K8iMoDEeHiSN4BKModSeC6mopzEsw7hdhEv6upSpuT+wKE6HGuHw=="
}, },
"System.Threading.Channels": { "System.Threading.Channels": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.9", "resolved": "9.0.10",
"contentHash": "AEgG1sVSp3H7oNYoXi350GeUnZdnP38EQHNK0kN5HCC6KoVoEkuTVr40lrVag99pd/NBr3tdNjPFElLLPI5BQg==" "contentHash": "2skUPYIRYwMyOg+BQkHaUDc3mOjHmIqT6U67+oIiRJVVtDrkCG2GZxceui6bos18kosyIE0Eg6FyJWgNsc+6og=="
}, },
"maresynchronos.api": { "maresynchronos.api": {
"type": "Project", "type": "Project",

View File

@@ -1,9 +1,28 @@
using System.Numerics; using System.Globalization;
using System.Numerics;
namespace SnowcloakSync.Utils namespace SnowcloakSync.Utils
{ {
public static class Colours public static class Colours
{ {
public static readonly Vector4 _snowcloakOnline = new(0.4275f, 0.6863f, 1f, 1f); public static readonly Vector4 _snowcloakOnline = new(0.4275f, 0.6863f, 1f, 1f);
public static Vector4 Hex2Vector4(string? hex)
{
if (hex == null || hex.Length != 6)
{
return new Vector4(255f, 255f, 255f, 1f);
}
else
{
byte r = byte.Parse(hex.Substring(0, 2), NumberStyles.HexNumber);
byte g = byte.Parse(hex.Substring(2, 2), NumberStyles.HexNumber);
byte b = byte.Parse(hex.Substring(4, 2), NumberStyles.HexNumber);
return new Vector4(r / 255f, g / 255f, b / 255f, 1f);
} }
} }
}
}