diff --git a/Components/Layout/NavMenu.razor b/Components/Layout/NavMenu.razor
index 0435cef..167e0a9 100644
--- a/Components/Layout/NavMenu.razor
+++ b/Components/Layout/NavMenu.razor
@@ -6,5 +6,15 @@
Feiertage
Urlaubs-Maximizer
Einstellungen
+
+
+
+
+
+ @context.User.Identity?.Name
+
+ Abmelden
+
+
diff --git a/Components/Pages/Feiertage.razor b/Components/Pages/Feiertage.razor
index 63253b6..47da8fe 100644
--- a/Components/Pages/Feiertage.razor
+++ b/Components/Pages/Feiertage.razor
@@ -1,5 +1,6 @@
@page "/feiertage"
@rendermode InteractiveServer
+@attribute [Authorize]
@inject HolidayService HolidayService
Feiertage – Timetracker
diff --git a/Components/Pages/Home.razor b/Components/Pages/Home.razor
index 4e8b15a..a58555e 100644
--- a/Components/Pages/Home.razor
+++ b/Components/Pages/Home.razor
@@ -1,8 +1,10 @@
@page "/"
@rendermode InteractiveServer
+@attribute [Authorize]
@inject TimetrackerService TrackerService
@inject HolidayService HolidayService
@inject ISnackbar Snackbar
+@inject AuthenticationStateProvider AuthStateProvider
KW @_kw – Wochenübersicht – Timetracker
@@ -332,6 +334,7 @@ else
private static readonly System.Globalization.CultureInfo _deCulture = new("de-DE");
private bool _loading = true;
+ private int _userId;
private DateOnly _monday;
private List _days = [];
private AppSettings _settings = new();
@@ -349,10 +352,14 @@ else
protected override async Task OnInitializedAsync()
{
+ var authState = await AuthStateProvider.GetAuthenticationStateAsync();
+ var claim = authState.User.FindFirst(ClaimTypes.NameIdentifier);
+ if (claim == null) return; // Prerender-Pass – Circuit noch nicht authentifiziert
+ _userId = int.Parse(claim.Value);
_monday = GetMonday(DateOnly.FromDateTime(DateTime.Today));
- _settings = await TrackerService.GetSettingsAsync();
+ _settings = await TrackerService.GetSettingsAsync(_userId);
await LoadWeek();
- _totalOvertime = await TrackerService.GetTotalOvertimeAsync(_settings);
+ _totalOvertime = await TrackerService.GetTotalOvertimeAsync(_userId, _settings);
_loading = false;
}
@@ -364,11 +371,11 @@ else
_holidays = list.ToDictionary(h => h.Date, h => h.Name);
_holidayYear = _monday.Year;
}
- var dbDays = await TrackerService.GetWeekAsync(_monday);
+ var dbDays = await TrackerService.GetWeekAsync(_userId, _monday);
_days = Enumerable.Range(0, 7).Select(i =>
{
var date = _monday.AddDays(i);
- return DayVm.From(dbDays.FirstOrDefault(d => d.Date == date), date);
+ return DayVm.From(dbDays.FirstOrDefault(d => d.Date == date), date, _userId);
}).ToList();
BuildWeekLabels();
}
@@ -421,7 +428,7 @@ else
private async Task SaveDay(DayVm day)
{
await TrackerService.UpsertWorkDayAsync(day.ToWorkDay());
- _totalOvertime = await TrackerService.GetTotalOvertimeAsync(_settings);
+ _totalOvertime = await TrackerService.GetTotalOvertimeAsync(_userId, _settings);
BuildWeekLabels();
}
@@ -486,6 +493,7 @@ else
private sealed class DayVm
{
public int Id { get; set; }
+ public int UserId { get; set; }
public DateOnly Date { get; set; }
public TimeSpan? Start { get; set; }
public TimeSpan? End { get; set; }
@@ -500,9 +508,10 @@ else
public TimeSpan? NetWork => GrossWork.HasValue ? GrossWork.Value - TotalBreakTime : null;
- public static DayVm From(WorkDay? wd, DateOnly date) => new()
+ public static DayVm From(WorkDay? wd, DateOnly date, int userId) => new()
{
Id = wd?.Id ?? 0,
+ UserId = wd?.UserId ?? userId,
Date = date,
Start = wd?.StartTime?.ToTimeSpan(),
End = wd?.EndTime?.ToTimeSpan(),
@@ -517,6 +526,7 @@ else
public WorkDay ToWorkDay() => new()
{
Id = Id,
+ UserId = UserId,
Date = Date,
StartTime = Start.HasValue ? TimeOnly.FromTimeSpan(Start.Value) : null,
EndTime = End.HasValue ? TimeOnly.FromTimeSpan(End.Value) : null,
diff --git a/Components/Pages/Login.razor b/Components/Pages/Login.razor
new file mode 100644
index 0000000..0f76d72
--- /dev/null
+++ b/Components/Pages/Login.razor
@@ -0,0 +1,130 @@
+@page "/login"
+@rendermode InteractiveServer
+@attribute [AllowAnonymous]
+@inject NavigationManager Nav
+@inject ISnackbar Snackbar
+
+Anmelden – Timetracker
+
+
+
+
+ @* ── Logo / Header ── *@
+
+
+ Timetracker
+
+
+
+
+
+ @* ── Login ── *@
+
+
+ @if (_error != null && _activeTab == 0)
+ {
+ @_error
+ }
+
+
+
+
+ @* ── Registrieren ── *@
+
+
+ @if (_error != null && _activeTab == 1)
+ {
+ @_error
+ }
+
+
+
+
+
+
+
+
+
+@code {
+ private int _activeTab = 0;
+ private string? _error;
+ private string _loginUsername = "";
+ private string _loginPassword = "";
+ private string _regUsername = "";
+ private string _regPassword = "";
+ private bool _showLoginPw;
+ private bool _showRegPw;
+
+ [SupplyParameterFromQuery(Name = "error")]
+ public string? ErrorParam { get; set; }
+
+ [SupplyParameterFromQuery(Name = "tab")]
+ public string? TabParam { get; set; }
+
+ protected override void OnParametersSet()
+ {
+ _error = ErrorParam switch
+ {
+ "invalid" => "Benutzername oder Passwort falsch.",
+ not null => Uri.UnescapeDataString(ErrorParam),
+ _ => null
+ };
+ _activeTab = TabParam == "register" ? 1 : 0;
+ }
+}
diff --git a/Components/Pages/Month.razor b/Components/Pages/Month.razor
index beeb807..c5bfab4 100644
--- a/Components/Pages/Month.razor
+++ b/Components/Pages/Month.razor
@@ -1,7 +1,9 @@
@page "/month"
@rendermode InteractiveServer
+@attribute [Authorize]
@inject TimetrackerService TrackerService
@inject HolidayService HolidayService
+@inject AuthenticationStateProvider AuthStateProvider
@_deCulture.DateTimeFormat.GetMonthName(_month) @_year – Monatsübersicht – Timetracker
@@ -150,6 +152,7 @@ else
private static readonly System.Globalization.CultureInfo _deCulture = new("de-DE");
private bool _loading = true;
+ private int _userId;
private int _year = DateTime.Today.Year;
private int _month = DateTime.Today.Month;
private List _days = [];
@@ -167,16 +170,20 @@ else
protected override async Task OnInitializedAsync()
{
- _settings = await TrackerService.GetSettingsAsync();
+ var authState = await AuthStateProvider.GetAuthenticationStateAsync();
+ var claim = authState.User.FindFirst(ClaimTypes.NameIdentifier);
+ if (claim == null) return;
+ _userId = int.Parse(claim.Value);
+ _settings = await TrackerService.GetSettingsAsync(_userId);
await LoadMonth();
_loading = false;
}
private async Task LoadMonth()
{
- var workDays = await TrackerService.GetMonthAsync(_year, _month);
+ var workDays = await TrackerService.GetMonthAsync(_userId, _year, _month);
var holidays = await HolidayService.GetHolidaysAsync(_year);
- var vacations = await TrackerService.GetVacationDaysAsync(_year);
+ var vacations = await TrackerService.GetVacationDaysAsync(_userId, _year);
var holidayMap = holidays.ToDictionary(h => h.Date, h => h.Name);
var vacationSet = vacations.Select(v => v.Date).ToHashSet();
diff --git a/Components/Pages/Settings.razor b/Components/Pages/Settings.razor
index c6add43..d847733 100644
--- a/Components/Pages/Settings.razor
+++ b/Components/Pages/Settings.razor
@@ -1,8 +1,10 @@
@page "/settings"
@rendermode InteractiveServer
+@attribute [Authorize]
@inject TimetrackerService TrackerService
@inject HolidayService HolidayService
@inject ISnackbar Snackbar
+@inject AuthenticationStateProvider AuthStateProvider
Einstellungen – Timetracker
@@ -375,6 +377,7 @@ else
private static readonly System.Globalization.CultureInfo _deCulture = new("de-DE");
private AppSettings? _settings;
+ private int _userId;
private int _vacYear = DateTime.Today.Year;
private List _vacationDays = [];
private DateTime? _newVacDateFrom;
@@ -402,14 +405,18 @@ else
protected override async Task OnInitializedAsync()
{
- _settings = await TrackerService.GetSettingsAsync();
+ var authState = await AuthStateProvider.GetAuthenticationStateAsync();
+ var claim = authState.User.FindFirst(ClaimTypes.NameIdentifier);
+ if (claim == null) return;
+ _userId = int.Parse(claim.Value);
+ _settings = await TrackerService.GetSettingsAsync(_userId);
await LoadVacations();
_holHolidays = await HolidayService.GetHolidaysAsync(_holYear);
}
private async Task LoadVacations()
{
- _vacationDays = await TrackerService.GetVacationDaysAsync(_vacYear);
+ _vacationDays = await TrackerService.GetVacationDaysAsync(_userId, _vacYear);
}
private async Task ChangeYear(int delta)
@@ -438,7 +445,7 @@ else
{
if (_settings!.IsWorkDay(current.DayOfWeek))
{
- await TrackerService.AddVacationDayAsync(new VacationDay { Date = current, Note = note });
+ await TrackerService.AddVacationDayAsync(new VacationDay { UserId = _userId, Date = current, Note = note });
added++;
}
current = current.AddDays(1);
@@ -452,7 +459,7 @@ else
private async Task RemoveVacation(int id)
{
- await TrackerService.RemoveVacationDayAsync(id);
+ await TrackerService.RemoveVacationDayAsync(_userId, id);
await LoadVacations();
Snackbar.Add("Urlaubstag entfernt", Severity.Info);
}
diff --git a/Components/Pages/UrlaubsMaximizer.razor b/Components/Pages/UrlaubsMaximizer.razor
index 826e84d..d3af9e6 100644
--- a/Components/Pages/UrlaubsMaximizer.razor
+++ b/Components/Pages/UrlaubsMaximizer.razor
@@ -1,8 +1,10 @@
@page "/urlaub-maximizer"
@rendermode InteractiveServer
+@attribute [Authorize]
@inject TimetrackerService TrackerService
@inject HolidayService HolidayService
@inject ISnackbar Snackbar
+@inject AuthenticationStateProvider AuthStateProvider
Urlaubs-Maximizer – Timetracker
@@ -232,10 +234,15 @@ else
private int _remainingDays;
private List _suggestions = [];
private string _subLabel = "";
+ private int _userId;
protected override async Task OnInitializedAsync()
{
- _settings = await TrackerService.GetSettingsAsync();
+ var authState = await AuthStateProvider.GetAuthenticationStateAsync();
+ var claim = authState.User.FindFirst(ClaimTypes.NameIdentifier);
+ if (claim == null) return;
+ _userId = int.Parse(claim.Value);
+ _settings = await TrackerService.GetSettingsAsync(_userId);
await LoadYear();
_loading = false;
}
@@ -243,7 +250,7 @@ else
private async Task LoadYear()
{
var holidays = await HolidayService.GetHolidaysAsync(_year);
- var vacations = await TrackerService.GetVacationDaysAsync(_year);
+ var vacations = await TrackerService.GetVacationDaysAsync(_userId, _year);
_holidays = holidays.ToDictionary(h => h.Date, h => h.Name);
_vacationSet = vacations.Select(v => v.Date).ToHashSet();
_remainingDays = Math.Max(0, _settings.VacationDaysPerYear - vacations.Count);
@@ -262,7 +269,7 @@ else
private async Task TakeSuggestion(Suggestion s)
{
foreach (var d in s.VacationDaysToTake.Where(d => !_vacationSet.Contains(d)))
- await TrackerService.AddVacationDayAsync(new VacationDay { Date = d, Note = "Urlaubs-Maximizer" });
+ await TrackerService.AddVacationDayAsync(new VacationDay { UserId = _userId, Date = d, Note = "Urlaubs-Maximizer" });
await LoadYear();
var word = s.VacationDaysNeeded == 1 ? "Urlaubstag" : "Urlaubstage";
Snackbar.Add($"{s.VacationDaysNeeded} {word} eingetragen – {s.TotalFreeDays} Tage frei!", Severity.Success);
diff --git a/Components/RedirectToLogin.razor b/Components/RedirectToLogin.razor
new file mode 100644
index 0000000..0ec1d2f
--- /dev/null
+++ b/Components/RedirectToLogin.razor
@@ -0,0 +1,9 @@
+@inject NavigationManager Nav
+
+@code {
+ protected override void OnInitialized()
+ {
+ var returnUrl = Uri.EscapeDataString(Nav.Uri);
+ Nav.NavigateTo($"/login?returnUrl={returnUrl}", forceLoad: true);
+ }
+}
diff --git a/Components/Routes.razor b/Components/Routes.razor
index 6c8eb35..ae21609 100644
--- a/Components/Routes.razor
+++ b/Components/Routes.razor
@@ -2,7 +2,11 @@
-
+
+
+
+
+
diff --git a/Components/_Imports.razor b/Components/_Imports.razor
index 364f4bc..622292a 100644
--- a/Components/_Imports.razor
+++ b/Components/_Imports.razor
@@ -1,5 +1,8 @@
@using System.Net.Http
@using System.Net.Http.Json
+@using System.Security.Claims
+@using Microsoft.AspNetCore.Authorization
+@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
diff --git a/Data/AppSettings.cs b/Data/AppSettings.cs
index eafe92e..8faeb18 100644
--- a/Data/AppSettings.cs
+++ b/Data/AppSettings.cs
@@ -3,6 +3,7 @@ namespace timetracker.Data;
public class AppSettings
{
public int Id { get; set; }
+ public int UserId { get; set; }
public double DailyTargetHours { get; set; } = 7.5;
public int MinimumBreakMinutes { get; set; } = 30;
public int VacationDaysPerYear { get; set; } = 30;
diff --git a/Data/AuthService.cs b/Data/AuthService.cs
new file mode 100644
index 0000000..fd025ab
--- /dev/null
+++ b/Data/AuthService.cs
@@ -0,0 +1,57 @@
+using System.Security.Cryptography;
+using System.Text;
+using Microsoft.EntityFrameworkCore;
+
+namespace timetracker.Data;
+
+public class AuthService(IDbContextFactory factory)
+{
+ public async Task LoginAsync(string username, string password)
+ {
+ await using var db = await factory.CreateDbContextAsync();
+ var user = await db.Users
+ .FirstOrDefaultAsync(u => u.Username == username);
+ if (user == null) return null;
+ return VerifyPassword(password, user.PasswordHash, user.PasswordSalt) ? user : null;
+ }
+
+ public async Task<(User? User, string? Error)> RegisterAsync(string username, string password)
+ {
+ if (string.IsNullOrWhiteSpace(username) || username.Length < 3)
+ return (null, "Benutzername muss mindestens 3 Zeichen lang sein.");
+ if (string.IsNullOrWhiteSpace(password) || password.Length < 6)
+ return (null, "Passwort muss mindestens 6 Zeichen lang sein.");
+
+ await using var db = await factory.CreateDbContextAsync();
+ if (await db.Users.AnyAsync(u => u.Username == username))
+ return (null, "Benutzername bereits vergeben.");
+
+ var (hash, salt) = HashPassword(password);
+ var user = new User { Username = username, PasswordHash = hash, PasswordSalt = salt };
+ db.Users.Add(user);
+ await db.SaveChangesAsync();
+ return (user, null);
+ }
+
+ private static (string hash, string salt) HashPassword(string password)
+ {
+ var saltBytes = RandomNumberGenerator.GetBytes(32);
+ var salt = Convert.ToBase64String(saltBytes);
+ var hash = ComputeHash(password, salt);
+ return (hash, salt);
+ }
+
+ private static bool VerifyPassword(string password, string hash, string salt)
+ => ComputeHash(password, salt) == hash;
+
+ private static string ComputeHash(string password, string salt)
+ {
+ var hash = Rfc2898DeriveBytes.Pbkdf2(
+ Encoding.UTF8.GetBytes(password),
+ Convert.FromBase64String(salt),
+ iterations: 200_000,
+ HashAlgorithmName.SHA256,
+ outputLength: 32);
+ return Convert.ToBase64String(hash);
+ }
+}
diff --git a/Data/Migrations/20260522081459_AddMultiUser.Designer.cs b/Data/Migrations/20260522081459_AddMultiUser.Designer.cs
new file mode 100644
index 0000000..bdb438d
--- /dev/null
+++ b/Data/Migrations/20260522081459_AddMultiUser.Designer.cs
@@ -0,0 +1,191 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using timetracker.Data;
+
+#nullable disable
+
+namespace timetracker.Data.Migrations
+{
+ [DbContext(typeof(TimetrackerDbContext))]
+ [Migration("20260522081459_AddMultiUser")]
+ partial class AddMultiUser
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder.HasAnnotation("ProductVersion", "10.0.8");
+
+ modelBuilder.Entity("timetracker.Data.AppSettings", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("DailyTargetHours")
+ .HasColumnType("REAL");
+
+ b.Property("MinimumBreakMinutes")
+ .HasColumnType("INTEGER");
+
+ b.Property("UserId")
+ .HasColumnType("INTEGER");
+
+ b.Property("VacationDaysPerYear")
+ .HasColumnType("INTEGER");
+
+ b.Property("WorkFriday")
+ .HasColumnType("INTEGER");
+
+ b.Property("WorkMonday")
+ .HasColumnType("INTEGER");
+
+ b.Property("WorkSaturday")
+ .HasColumnType("INTEGER");
+
+ b.Property("WorkSunday")
+ .HasColumnType("INTEGER");
+
+ b.Property("WorkThursday")
+ .HasColumnType("INTEGER");
+
+ b.Property("WorkTuesday")
+ .HasColumnType("INTEGER");
+
+ b.Property("WorkWednesday")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.ToTable("AppSettings");
+ });
+
+ modelBuilder.Entity("timetracker.Data.BreakEntry", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("EndTime")
+ .HasColumnType("TEXT");
+
+ b.Property("StartTime")
+ .HasColumnType("TEXT");
+
+ b.Property("WorkDayId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("WorkDayId");
+
+ b.ToTable("BreakEntries");
+ });
+
+ modelBuilder.Entity("timetracker.Data.PublicHoliday", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Date")
+ .HasColumnType("TEXT");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.ToTable("PublicHolidays");
+ });
+
+ modelBuilder.Entity("timetracker.Data.User", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("PasswordHash")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("PasswordSalt")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Username")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.ToTable("Users");
+ });
+
+ modelBuilder.Entity("timetracker.Data.VacationDay", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Date")
+ .HasColumnType("TEXT");
+
+ b.Property("Note")
+ .HasColumnType("TEXT");
+
+ b.Property("UserId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.ToTable("VacationDays");
+ });
+
+ modelBuilder.Entity("timetracker.Data.WorkDay", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Date")
+ .HasColumnType("TEXT");
+
+ b.Property("EndTime")
+ .HasColumnType("TEXT");
+
+ b.Property("StartTime")
+ .HasColumnType("TEXT");
+
+ b.Property("UserId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.ToTable("WorkDays");
+ });
+
+ modelBuilder.Entity("timetracker.Data.BreakEntry", b =>
+ {
+ b.HasOne("timetracker.Data.WorkDay", "WorkDay")
+ .WithMany("Breaks")
+ .HasForeignKey("WorkDayId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WorkDay");
+ });
+
+ modelBuilder.Entity("timetracker.Data.WorkDay", b =>
+ {
+ b.Navigation("Breaks");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/Data/Migrations/20260522081459_AddMultiUser.cs b/Data/Migrations/20260522081459_AddMultiUser.cs
new file mode 100644
index 0000000..44a676b
--- /dev/null
+++ b/Data/Migrations/20260522081459_AddMultiUser.cs
@@ -0,0 +1,69 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace timetracker.Data.Migrations
+{
+ ///
+ public partial class AddMultiUser : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AddColumn(
+ name: "UserId",
+ table: "WorkDays",
+ type: "INTEGER",
+ nullable: false,
+ defaultValue: 0);
+
+ migrationBuilder.AddColumn(
+ name: "UserId",
+ table: "VacationDays",
+ type: "INTEGER",
+ nullable: false,
+ defaultValue: 0);
+
+ migrationBuilder.AddColumn(
+ name: "UserId",
+ table: "AppSettings",
+ type: "INTEGER",
+ nullable: false,
+ defaultValue: 0);
+
+ migrationBuilder.CreateTable(
+ name: "Users",
+ columns: table => new
+ {
+ Id = table.Column(type: "INTEGER", nullable: false)
+ .Annotation("Sqlite:Autoincrement", true),
+ Username = table.Column(type: "TEXT", nullable: false),
+ PasswordHash = table.Column(type: "TEXT", nullable: false),
+ PasswordSalt = table.Column(type: "TEXT", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Users", x => x.Id);
+ });
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "Users");
+
+ migrationBuilder.DropColumn(
+ name: "UserId",
+ table: "WorkDays");
+
+ migrationBuilder.DropColumn(
+ name: "UserId",
+ table: "VacationDays");
+
+ migrationBuilder.DropColumn(
+ name: "UserId",
+ table: "AppSettings");
+ }
+ }
+}
diff --git a/Data/Migrations/TimetrackerDbContextModelSnapshot.cs b/Data/Migrations/TimetrackerDbContextModelSnapshot.cs
index a7c0b94..84530f8 100644
--- a/Data/Migrations/TimetrackerDbContextModelSnapshot.cs
+++ b/Data/Migrations/TimetrackerDbContextModelSnapshot.cs
@@ -29,6 +29,9 @@ namespace timetracker.Data.Migrations
b.Property("MinimumBreakMinutes")
.HasColumnType("INTEGER");
+ b.Property("UserId")
+ .HasColumnType("INTEGER");
+
b.Property("VacationDaysPerYear")
.HasColumnType("INTEGER");
@@ -58,24 +61,6 @@ namespace timetracker.Data.Migrations
b.ToTable("AppSettings");
});
- modelBuilder.Entity("timetracker.Data.PublicHoliday", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("INTEGER");
-
- b.Property("Date")
- .HasColumnType("TEXT");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.HasKey("Id");
-
- b.ToTable("PublicHolidays");
- });
-
modelBuilder.Entity("timetracker.Data.BreakEntry", b =>
{
b.Property("Id")
@@ -98,6 +83,47 @@ namespace timetracker.Data.Migrations
b.ToTable("BreakEntries");
});
+ modelBuilder.Entity("timetracker.Data.PublicHoliday", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Date")
+ .HasColumnType("TEXT");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.ToTable("PublicHolidays");
+ });
+
+ modelBuilder.Entity("timetracker.Data.User", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("PasswordHash")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("PasswordSalt")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Username")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.ToTable("Users");
+ });
+
modelBuilder.Entity("timetracker.Data.VacationDay", b =>
{
b.Property("Id")
@@ -110,6 +136,9 @@ namespace timetracker.Data.Migrations
b.Property("Note")
.HasColumnType("TEXT");
+ b.Property("UserId")
+ .HasColumnType("INTEGER");
+
b.HasKey("Id");
b.ToTable("VacationDays");
@@ -130,6 +159,9 @@ namespace timetracker.Data.Migrations
b.Property("StartTime")
.HasColumnType("TEXT");
+ b.Property("UserId")
+ .HasColumnType("INTEGER");
+
b.HasKey("Id");
b.ToTable("WorkDays");
diff --git a/Data/TimetrackerDbContext.cs b/Data/TimetrackerDbContext.cs
index eae77dd..bb04343 100644
--- a/Data/TimetrackerDbContext.cs
+++ b/Data/TimetrackerDbContext.cs
@@ -4,6 +4,7 @@ namespace timetracker.Data;
public class TimetrackerDbContext(DbContextOptions options) : DbContext(options)
{
+ public DbSet Users => Set();
public DbSet WorkDays => Set();
public DbSet BreakEntries => Set();
public DbSet AppSettings => Set();
diff --git a/Data/TimetrackerService.cs b/Data/TimetrackerService.cs
index 00fe751..9920f40 100644
--- a/Data/TimetrackerService.cs
+++ b/Data/TimetrackerService.cs
@@ -4,12 +4,12 @@ namespace timetracker.Data;
public class TimetrackerService(IDbContextFactory factory)
{
- public async Task> GetWeekAsync(DateOnly monday)
+ public async Task> GetWeekAsync(int userId, DateOnly monday)
{
await using var db = await factory.CreateDbContextAsync();
return await db.WorkDays
.Include(w => w.Breaks)
- .Where(w => w.Date >= monday && w.Date < monday.AddDays(7))
+ .Where(w => w.UserId == userId && w.Date >= monday && w.Date < monday.AddDays(7))
.OrderBy(w => w.Date)
.ToListAsync();
}
@@ -19,7 +19,7 @@ public class TimetrackerService(IDbContextFactory factory)
await using var db = await factory.CreateDbContextAsync();
var existing = await db.WorkDays
.Include(w => w.Breaks)
- .FirstOrDefaultAsync(w => w.Date == workDay.Date);
+ .FirstOrDefaultAsync(w => w.UserId == workDay.UserId && w.Date == workDay.Date);
if (existing == null)
{
@@ -45,17 +45,17 @@ public class TimetrackerService(IDbContextFactory factory)
await db.SaveChangesAsync();
}
- public async Task GetSettingsAsync()
+ public async Task GetSettingsAsync(int userId)
{
await using var db = await factory.CreateDbContextAsync();
- return await db.AppSettings.FindAsync(1) ?? new AppSettings { Id = 1 };
+ return await db.AppSettings.FirstOrDefaultAsync(s => s.UserId == userId)
+ ?? new AppSettings { UserId = userId };
}
public async Task SaveSettingsAsync(AppSettings settings)
{
await using var db = await factory.CreateDbContextAsync();
- settings.Id = 1;
- var existing = await db.AppSettings.FindAsync(1);
+ var existing = await db.AppSettings.FirstOrDefaultAsync(s => s.UserId == settings.UserId);
if (existing == null)
db.AppSettings.Add(settings);
else
@@ -75,11 +75,11 @@ public class TimetrackerService(IDbContextFactory factory)
}
// ── Urlaub ────────────────────────────────────────────────────────────
- public async Task> GetVacationDaysAsync(int year)
+ public async Task> GetVacationDaysAsync(int userId, int year)
{
await using var db = await factory.CreateDbContextAsync();
return await db.VacationDays
- .Where(v => v.Date.Year == year)
+ .Where(v => v.UserId == userId && v.Date.Year == year)
.OrderBy(v => v.Date)
.ToListAsync();
}
@@ -87,7 +87,7 @@ public class TimetrackerService(IDbContextFactory factory)
public async Task AddVacationDayAsync(VacationDay vacationDay)
{
await using var db = await factory.CreateDbContextAsync();
- var exists = await db.VacationDays.AnyAsync(v => v.Date == vacationDay.Date);
+ var exists = await db.VacationDays.AnyAsync(v => v.UserId == vacationDay.UserId && v.Date == vacationDay.Date);
if (!exists)
{
vacationDay.Id = 0;
@@ -96,10 +96,10 @@ public class TimetrackerService(IDbContextFactory factory)
}
}
- public async Task RemoveVacationDayAsync(int id)
+ public async Task RemoveVacationDayAsync(int userId, int id)
{
await using var db = await factory.CreateDbContextAsync();
- var v = await db.VacationDays.FindAsync(id);
+ var v = await db.VacationDays.FirstOrDefaultAsync(v => v.Id == id && v.UserId == userId);
if (v != null)
{
db.VacationDays.Remove(v);
@@ -108,12 +108,12 @@ public class TimetrackerService(IDbContextFactory factory)
}
// ── Gleitzeitkonto ───────────────────────────────────────────────────
- public async Task GetTotalOvertimeAsync(AppSettings settings)
+ public async Task GetTotalOvertimeAsync(int userId, AppSettings settings)
{
await using var db = await factory.CreateDbContextAsync();
var allDays = await db.WorkDays
.Include(w => w.Breaks)
- .Where(w => w.StartTime != null && w.EndTime != null)
+ .Where(w => w.UserId == userId && w.StartTime != null && w.EndTime != null)
.ToListAsync();
var total = TimeSpan.Zero;
@@ -132,14 +132,14 @@ public class TimetrackerService(IDbContextFactory factory)
}
// ── Monatsübersicht ───────────────────────────────────────────────────
- public async Task> GetMonthAsync(int year, int month)
+ public async Task> GetMonthAsync(int userId, int year, int month)
{
await using var db = await factory.CreateDbContextAsync();
var from = new DateOnly(year, month, 1);
var to = from.AddMonths(1);
return await db.WorkDays
.Include(w => w.Breaks)
- .Where(w => w.Date >= from && w.Date < to)
+ .Where(w => w.UserId == userId && w.Date >= from && w.Date < to)
.OrderBy(w => w.Date)
.ToListAsync();
}
diff --git a/Data/User.cs b/Data/User.cs
new file mode 100644
index 0000000..5b64987
--- /dev/null
+++ b/Data/User.cs
@@ -0,0 +1,9 @@
+namespace timetracker.Data;
+
+public class User
+{
+ public int Id { get; set; }
+ public string Username { get; set; } = "";
+ public string PasswordHash { get; set; } = "";
+ public string PasswordSalt { get; set; } = "";
+}
diff --git a/Data/VacationDay.cs b/Data/VacationDay.cs
index c213b4d..6dd019c 100644
--- a/Data/VacationDay.cs
+++ b/Data/VacationDay.cs
@@ -3,6 +3,7 @@ namespace timetracker.Data;
public class VacationDay
{
public int Id { get; set; }
+ public int UserId { get; set; }
public DateOnly Date { get; set; }
public string? Note { get; set; }
}
diff --git a/Data/WorkDay.cs b/Data/WorkDay.cs
index 1e3f727..dcaa71c 100644
--- a/Data/WorkDay.cs
+++ b/Data/WorkDay.cs
@@ -3,6 +3,7 @@ namespace timetracker.Data;
public class WorkDay
{
public int Id { get; set; }
+ public int UserId { get; set; }
public DateOnly Date { get; set; }
public TimeOnly? StartTime { get; set; }
public TimeOnly? EndTime { get; set; }
diff --git a/Program.cs b/Program.cs
index 1bd9eee..0dc7ac3 100644
--- a/Program.cs
+++ b/Program.cs
@@ -1,3 +1,6 @@
+using System.Security.Claims;
+using Microsoft.AspNetCore.Authentication;
+using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.EntityFrameworkCore;
using MudBlazor.Services;
using timetracker.Components;
@@ -5,6 +8,19 @@ using timetracker.Data;
var builder = WebApplication.CreateBuilder(args);
+builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
+ .AddCookie(options =>
+ {
+ options.LoginPath = "/login";
+ options.LogoutPath = "/auth/logout";
+ options.ExpireTimeSpan = TimeSpan.FromDays(30);
+ options.SlidingExpiration = true;
+ });
+builder.Services.AddAuthorization();
+builder.Services.AddCascadingAuthenticationState();
+builder.Services.AddHttpContextAccessor();
+builder.Services.AddScoped();
+
// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
@@ -39,10 +55,60 @@ if (app.Configuration.GetValue("EnableHttpsRedirect", !app.Environment.IsDevelop
app.UseHttpsRedirection();
}
+app.UseAuthentication();
+app.UseAuthorization();
+
app.UseAntiforgery();
app.MapStaticAssets();
app.MapRazorComponents()
.AddInteractiveServerRenderMode();
+// ── Auth-Endpoints ────────────────────────────────────────────────────────────
+app.MapPost("/auth/login", async (HttpContext ctx, AuthService authService) =>
+{
+ var form = await ctx.Request.ReadFormAsync();
+ var username = form["username"].ToString();
+ var password = form["password"].ToString();
+ var user = await authService.LoginAsync(username, password);
+ if (user == null)
+ return Results.Redirect("/login?error=invalid");
+
+ var claims = new[] {
+ new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
+ new Claim(ClaimTypes.Name, user.Username)
+ };
+ var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
+ await ctx.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,
+ new ClaimsPrincipal(identity),
+ new AuthenticationProperties { IsPersistent = true });
+ return Results.Redirect("/");
+}).DisableAntiforgery();
+
+app.MapPost("/auth/register", async (HttpContext ctx, AuthService authService) =>
+{
+ var form = await ctx.Request.ReadFormAsync();
+ var username = form["username"].ToString();
+ var password = form["password"].ToString();
+ var (user, error) = await authService.RegisterAsync(username, password);
+ if (user == null)
+ return Results.Redirect($"/login?tab=register&error={Uri.EscapeDataString(error!)}");
+
+ var claims = new[] {
+ new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
+ new Claim(ClaimTypes.Name, user.Username)
+ };
+ var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
+ await ctx.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,
+ new ClaimsPrincipal(identity),
+ new AuthenticationProperties { IsPersistent = true });
+ return Results.Redirect("/");
+}).DisableAntiforgery();
+
+app.MapGet("/auth/logout", async (HttpContext ctx) =>
+{
+ await ctx.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
+ return Results.Redirect("/login");
+});
+
app.Run();
diff --git a/bin/Debug/net10.0/timetracker.dll b/bin/Debug/net10.0/timetracker.dll
index 1fd16a1..3c0f2bc 100644
Binary files a/bin/Debug/net10.0/timetracker.dll and b/bin/Debug/net10.0/timetracker.dll differ
diff --git a/bin/Debug/net10.0/timetracker.exe b/bin/Debug/net10.0/timetracker.exe
index 7fc3575..9f016fd 100644
Binary files a/bin/Debug/net10.0/timetracker.exe and b/bin/Debug/net10.0/timetracker.exe differ
diff --git a/bin/Debug/net10.0/timetracker.pdb b/bin/Debug/net10.0/timetracker.pdb
index cc020f8..c05e4bd 100644
Binary files a/bin/Debug/net10.0/timetracker.pdb and b/bin/Debug/net10.0/timetracker.pdb differ
diff --git a/obj/Debug/net10.0/apphost.exe b/obj/Debug/net10.0/apphost.exe
index 7fc3575..9f016fd 100644
Binary files a/obj/Debug/net10.0/apphost.exe and b/obj/Debug/net10.0/apphost.exe differ
diff --git a/obj/Debug/net10.0/ref/timetracker.dll b/obj/Debug/net10.0/ref/timetracker.dll
index 2392dc0..561cc19 100644
Binary files a/obj/Debug/net10.0/ref/timetracker.dll and b/obj/Debug/net10.0/ref/timetracker.dll differ
diff --git a/obj/Debug/net10.0/refint/timetracker.dll b/obj/Debug/net10.0/refint/timetracker.dll
index 2392dc0..561cc19 100644
Binary files a/obj/Debug/net10.0/refint/timetracker.dll and b/obj/Debug/net10.0/refint/timetracker.dll differ
diff --git a/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json b/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json
index 9bed84d..af61938 100644
--- a/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json
+++ b/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json
@@ -1 +1 @@
-{"GlobalPropertiesHash":"N2len2uEF6pGj8Qv3c4lMAeSFUjWl3rJ1rxPPY4/gB8=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["ovSerYHPMi4ExhJn2xU4WmJOZFaSXPk63P4ISGtQoag=","t8/S/iqD\u002BWOqoqxZIUWy\u002B0CcyTxhFe\u002B2vqS6syOPh/g=","mVmHEtzmBWHAiYW83bThvmsAmJe7oQFzJayYA2a6PXk=","DJbjU5RSeu8ssKk6\u002BU9qcxdWKLA7PaURGpcwMtU1cds=","6VuM8RXxuOppytZc57Uu0vfEpQ9I3GXlnrIiYTN3XfE=","qujjEy2OAvAD8tqujNixipvOC/CDKEPXWqs9\u002BY4LFaE=","7WuNDk23eyfNe62PHykuRmy3161tRcARFgNWu/aCgOU=","jurLJARZjB7Fe9JZEUjWenuLIUJ/sw\u002Bx/o88BnaFTQM=","AgpupSW\u002BrcNbe52yu92bURql10h5\u002BRXymMC1zzF8wBM=","n2t0OoSd\u002B9NIbEadHYn7A7hwpWm6gJFg2djhVViRYng=","Sd/GZUkwZ4Q8w0TCBY95I\u002BxxWZm7Xp3xfksG3IkBDbA=","2IBypkfqBOLTlleDMyYeWTHw1dZ5UaSN8Vi9nmT2J4Q=","Lnw840ru88dnnZSKFinR4LTzOZNDJZ89SuvDs3LG5dY=","xLaUDp7TmLTsx9D\u002BuLLhgqu\u002BJtD5qDLs78ujVLoNhD8=","SgpHkk6QnWRH2tChObAeejM8HLdc51H8B4SCozq1l9g=","cWbFJtEIrIyk935jQQFMHU54PZ9RdwmE1BHwt0UobPU=","R0BAVdym78gDoKsSMzBsb6x2W951BlKFN0FNFYCsCX0=","E2ywdGQj0a0y7VMb8A2SagnNbmvdgNrFzjMdvqqV\u002BwY=","eKWaGHod6XeCFKA2syO4b5bjGd52KeRMe2lxebLpbr0=","6Gt\u002BhW0YD4AIfi3\u002B0JWOcj5ZoRHBh\u002Bd/73EHzLb9ZFo=","E/hX5PlBL0xni6OyXeL\u002BzEtGzj0DfWxsFDaHAUwGu0g=","I4pM727TacYD1RDXN0wzY1zglsMaABlr19WVkApraeA=","q4hWoO1ud\u002BwqFwmCG1nzekXs8nQ7QQMO9l3OKCx3XQo=","M6YvTp/SYon85swfQmM8j\u002BpvvhMDCpXhh\u002BS\u002B62d/V8A=","xmR8fiTLL43ux/I8xI3x9qDZOQjmbEpSVczpZKX/o\u002BU=","rPWN7AcG4RCNgoc7gqqe5bzu2fZeRHANU4G5mRmf4X4=","4YEeh/h12kH0FUGdt8/sHDJmg4zYunaXhfW6POiKYQg=","I/B2gPx/d6O7VA7kVp3syVfL8hMvYHhkflGDSPirAUY=","zJOxsbpIjQOhSWamGE9OKGXBGWjYSnpjnXmsdC56bzo=","6MXGnBspymDhNbACXBV1es99mw15UCxkoq0pSEcWwck=","vwqCCdlnynihoratP5HTjoE6JShLlWi4O5KC5cFdw2s=","ScQoTm373N8A9VaM33H8osIAb0hMiQB3cU1gvaxCLMg=","5Wb9KEGOvI68lY1zg533rWI/3u1c2pizlvhvFBW\u002BT\u002BU=","crQzyJw61YMAO/5cQfffHdBTSXO4POIRR3UPwYueZfY=","WA6BQ4K/xJ4kSdHf0dPt16vUqlYSHp\u002BquO1y\u002Br4idlU=","X\u002ByfyT2MuAWgf9UmpGLy/DJi6r3xLJ7R0fjn\u002BO3\u002BR\u002Bo=","n\u002BDKXe9Y3zHWEn4UB/eNHQTMuhDctkV5BDSwuliCKYo=","tUzryyDyISAnyr1e7ujmEglKl80GaEbNkw0uWsRegIM=","T1MNLl33nCZGSd4XbUBoRmZ1fyK\u002BBWsY0O4NHWiadQ0=","1GJdKBhQwxAongm2xWk7yLdbPyYKlYs\u002BByo/FSwa2Og=","QaD0ihDfiZcRw8Fa5XSqStAEkcFjb0xglTXrbeJN4a8=","ajlLSJ\u002BIWKj8EKV35W1hH4reyjN9/r1Ch8e1dBNjBSw=","DcApRy4nhjlP662diHmukEKqYuyoe0KHyOxGVdr9PyM=","zl\u002BzcRoxnXPakxxXJN6l9VLMwGk\u002By/SQT8B0WSnZMvM=","DiVsG2cevQdVuEwxHL\u002BgPGxh9fRtM3xn1Ix89OU01l4=","UKin6fGxIhO8Gs7LkLmN4kuS0Kl9uZWqgc6x7t2/xf0=","ejq560JF7/oAnu6I4VFt5f2wcSlzaEHpYTqsRh06o9A=","GDvNJZr3M2dgiymsy98U2bIMNajpHpIqUgn3VJu89NQ=","niE7G3oChy6PoSAzXj1Gj8yXNzqzO2SehGWXSGOs3ws=","TWCaa80sCF0UE7aeFJzSDp8vXtYi5Kf\u002Bv1v39TnyKs0=","SOIv4cDkxXKCivZ9A4sABqxsRRoomBeZ1nfsqaqq3aA=","GU6fHRhkxloPnx/L5QeYxDIprNNXbhjKzwM35bIsSdo=","2ioxqlu0rAxIbeWDbnlN9oLjD\u002BeRmektYla3y9AGc88=","ZWzbAgAFew9xp1iyo7knZbDaqWIv4Hm\u002BwCk9vPDUBSE=","pk1NXMdmexfgnN111i\u002B2VCt\u002Bh5FN6lNCwX\u002Bg5BR1Sgs=","SQ6Z3ikpNt1Ct\u002BC2yaguToCnzonqjZYbVGooOo7AY7Q=","gqFfW6e8\u002B0CzyL\u002BpttrsEfJhuLIlj/roGVa/T1vbFPo=","4C0vqrvHlqVp8iL/TwMg3WbaKZg8CIdmSCdnkCW3QT8=","hAhu8xNV6mIq4BPbje7mtlaB6rB9cnfpIkWsJTknocg=","EMmFm2Rvgw9UN/m5beCrxZ/0gK4sFx1rwrh4gdgnDSU=","Tp7HhdwydIvOa6w2bZfuPkEodLiDolooQOMj/RIqWD0=","BFYbEU1ne8O3890ApBmMSlCeMI8nMAZQEuo2W9qZIkw=","cehF2zRSp8AwpZ6pXjkx2ZvmkJBSnSNmX9eeZ8\u002B6O6w=","ak2/1eDOLIr8FN405ijsTWdZezAB4g53eQWw0BRWqpE=","iW599fFesdQ0y47pwj/FPUlHI/BG3klZVY4mfV97P7E=","XmS3sUENiF0muPKWCBQatKsMlhE11bSuzQjyQAwIqKY=","S84gXGiw17\u002BKUQqQ8WJGAEK7hmpmAFWuyw442W9m9vg=","Q0c94I84UXhvgssxmoOEeZZVYCQJZjts/ihDLFaCiss=","NH/A6t7u0uFF9sN6qoIt8K8nBlLJTutXBZ9u64pFEkc=","k37rU8U3X6kHrF9mPvy\u002B6vGHN\u002BmRwd1Rsu9i5oc6XJ4="],"CachedAssets":{},"CachedCopyCandidates":{}}
\ No newline at end of file
+{"GlobalPropertiesHash":"N2len2uEF6pGj8Qv3c4lMAeSFUjWl3rJ1rxPPY4/gB8=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["ovSerYHPMi4ExhJn2xU4WmJOZFaSXPk63P4ISGtQoag=","t8/S/iqD\u002BWOqoqxZIUWy\u002B0CcyTxhFe\u002B2vqS6syOPh/g=","mVmHEtzmBWHAiYW83bThvmsAmJe7oQFzJayYA2a6PXk=","DJbjU5RSeu8ssKk6\u002BU9qcxdWKLA7PaURGpcwMtU1cds=","6VuM8RXxuOppytZc57Uu0vfEpQ9I3GXlnrIiYTN3XfE=","qujjEy2OAvAD8tqujNixipvOC/CDKEPXWqs9\u002BY4LFaE=","7WuNDk23eyfNe62PHykuRmy3161tRcARFgNWu/aCgOU=","jurLJARZjB7Fe9JZEUjWenuLIUJ/sw\u002Bx/o88BnaFTQM=","AgpupSW\u002BrcNbe52yu92bURql10h5\u002BRXymMC1zzF8wBM=","n2t0OoSd\u002B9NIbEadHYn7A7hwpWm6gJFg2djhVViRYng=","Sd/GZUkwZ4Q8w0TCBY95I\u002BxxWZm7Xp3xfksG3IkBDbA=","2IBypkfqBOLTlleDMyYeWTHw1dZ5UaSN8Vi9nmT2J4Q=","Lnw840ru88dnnZSKFinR4LTzOZNDJZ89SuvDs3LG5dY=","xLaUDp7TmLTsx9D\u002BuLLhgqu\u002BJtD5qDLs78ujVLoNhD8=","SgpHkk6QnWRH2tChObAeejM8HLdc51H8B4SCozq1l9g=","cWbFJtEIrIyk935jQQFMHU54PZ9RdwmE1BHwt0UobPU=","R0BAVdym78gDoKsSMzBsb6x2W951BlKFN0FNFYCsCX0=","E2ywdGQj0a0y7VMb8A2SagnNbmvdgNrFzjMdvqqV\u002BwY=","eKWaGHod6XeCFKA2syO4b5bjGd52KeRMe2lxebLpbr0=","6Gt\u002BhW0YD4AIfi3\u002B0JWOcj5ZoRHBh\u002Bd/73EHzLb9ZFo=","E/hX5PlBL0xni6OyXeL\u002BzEtGzj0DfWxsFDaHAUwGu0g=","I4pM727TacYD1RDXN0wzY1zglsMaABlr19WVkApraeA=","q4hWoO1ud\u002BwqFwmCG1nzekXs8nQ7QQMO9l3OKCx3XQo=","M6YvTp/SYon85swfQmM8j\u002BpvvhMDCpXhh\u002BS\u002B62d/V8A=","xmR8fiTLL43ux/I8xI3x9qDZOQjmbEpSVczpZKX/o\u002BU=","rPWN7AcG4RCNgoc7gqqe5bzu2fZeRHANU4G5mRmf4X4=","4YEeh/h12kH0FUGdt8/sHDJmg4zYunaXhfW6POiKYQg=","I/B2gPx/d6O7VA7kVp3syVfL8hMvYHhkflGDSPirAUY=","zJOxsbpIjQOhSWamGE9OKGXBGWjYSnpjnXmsdC56bzo=","6MXGnBspymDhNbACXBV1es99mw15UCxkoq0pSEcWwck=","vwqCCdlnynihoratP5HTjoE6JShLlWi4O5KC5cFdw2s=","ScQoTm373N8A9VaM33H8osIAb0hMiQB3cU1gvaxCLMg=","5Wb9KEGOvI68lY1zg533rWI/3u1c2pizlvhvFBW\u002BT\u002BU=","crQzyJw61YMAO/5cQfffHdBTSXO4POIRR3UPwYueZfY=","WA6BQ4K/xJ4kSdHf0dPt16vUqlYSHp\u002BquO1y\u002Br4idlU=","X\u002ByfyT2MuAWgf9UmpGLy/DJi6r3xLJ7R0fjn\u002BO3\u002BR\u002Bo=","n\u002BDKXe9Y3zHWEn4UB/eNHQTMuhDctkV5BDSwuliCKYo=","tUzryyDyISAnyr1e7ujmEglKl80GaEbNkw0uWsRegIM=","T1MNLl33nCZGSd4XbUBoRmZ1fyK\u002BBWsY0O4NHWiadQ0=","1GJdKBhQwxAongm2xWk7yLdbPyYKlYs\u002BByo/FSwa2Og=","QaD0ihDfiZcRw8Fa5XSqStAEkcFjb0xglTXrbeJN4a8=","ajlLSJ\u002BIWKj8EKV35W1hH4reyjN9/r1Ch8e1dBNjBSw=","DcApRy4nhjlP662diHmukEKqYuyoe0KHyOxGVdr9PyM=","zl\u002BzcRoxnXPakxxXJN6l9VLMwGk\u002By/SQT8B0WSnZMvM=","DiVsG2cevQdVuEwxHL\u002BgPGxh9fRtM3xn1Ix89OU01l4=","UKin6fGxIhO8Gs7LkLmN4kuS0Kl9uZWqgc6x7t2/xf0=","ejq560JF7/oAnu6I4VFt5f2wcSlzaEHpYTqsRh06o9A=","GDvNJZr3M2dgiymsy98U2bIMNajpHpIqUgn3VJu89NQ=","niE7G3oChy6PoSAzXj1Gj8yXNzqzO2SehGWXSGOs3ws=","TWCaa80sCF0UE7aeFJzSDp8vXtYi5Kf\u002Bv1v39TnyKs0=","SOIv4cDkxXKCivZ9A4sABqxsRRoomBeZ1nfsqaqq3aA=","ai1CABE7/c47ypIkjaDit5lzyUBLWjvvNxLvrggAohE=","2ioxqlu0rAxIbeWDbnlN9oLjD\u002BeRmektYla3y9AGc88=","ZWzbAgAFew9xp1iyo7knZbDaqWIv4Hm\u002BwCk9vPDUBSE=","HgxqJP3ldiIafkTvBBwB/28T3diIAJ7oN3hqfgQ9Kxc=","7Z/Bc6UO\u002BnTwEF1Bhi8coKTRrhvPdjnS5KhFbJHZyuI=","6xvIcY53zw\u002BouYBppzZhf9j631lueCP4AepKDpPFZLc=","EaULMAdq/h9gJo6D9j18s/QsIn1pfuMmdztg65lz1Ic=","4C0vqrvHlqVp8iL/TwMg3WbaKZg8CIdmSCdnkCW3QT8=","5l59oONcKS8dt7eCb1Jl1KQROo0JXt5brXo7D3UUbv8=","lH\u002BcYGTeSlITi8crNUIH4\u002BRxQRiRY4e88TocOvh0vng=","Px5vA8TGJcLr\u002B5y3yqjtCpTe0UN6tqKi1yvSSXfLG6I=","goCVUGyC8XonApSLTimnDrBuNidRio0jhkIWxhk4Xlg=","jwwQYOC\u002BEmbB37rtLRETqMKE04p34z68esNM1UGKNQ4=","cehF2zRSp8AwpZ6pXjkx2ZvmkJBSnSNmX9eeZ8\u002B6O6w=","ak2/1eDOLIr8FN405ijsTWdZezAB4g53eQWw0BRWqpE=","iW599fFesdQ0y47pwj/FPUlHI/BG3klZVY4mfV97P7E=","Xwav5bMzoofa3AJS3UwHS/0N9gwOFGAK98BOj3jfn80=","XmS3sUENiF0muPKWCBQatKsMlhE11bSuzQjyQAwIqKY=","InRyq0ks64otvGQeyZQtrNoJRijr\u002BqZrEZL1\u002BpkYfhw=","K1H3JdbP4eHxUIKs1pVHYY0V7FP9LHPqx7K7y49dPXQ=","Ta1VuT\u002BOsmwHcct1mkKNQFmnN9jyEmAro7m0MKhdrgA=","oYS18mLC1AdNbT1PoZ\u002BP0XsiXBf25aLmQ6kPJTnwMwg=","SSPxff1jRa3LUTShzcYBoRc9exs3wQiF68G/b6uxivE=","k37rU8U3X6kHrF9mPvy\u002B6vGHN\u002BmRwd1Rsu9i5oc6XJ4="],"CachedAssets":{},"CachedCopyCandidates":{}}
\ No newline at end of file
diff --git a/obj/Debug/net10.0/rjsmrazor.dswa.cache.json b/obj/Debug/net10.0/rjsmrazor.dswa.cache.json
index 3f2fb1c..afe7fd7 100644
--- a/obj/Debug/net10.0/rjsmrazor.dswa.cache.json
+++ b/obj/Debug/net10.0/rjsmrazor.dswa.cache.json
@@ -1 +1 @@
-{"GlobalPropertiesHash":"byWqKuSx1f2vxGHl3jLmGrDGSjG9+QUusOxZF5wXRRM=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["ovSerYHPMi4ExhJn2xU4WmJOZFaSXPk63P4ISGtQoag=","t8/S/iqD\u002BWOqoqxZIUWy\u002B0CcyTxhFe\u002B2vqS6syOPh/g=","mVmHEtzmBWHAiYW83bThvmsAmJe7oQFzJayYA2a6PXk=","DJbjU5RSeu8ssKk6\u002BU9qcxdWKLA7PaURGpcwMtU1cds=","6VuM8RXxuOppytZc57Uu0vfEpQ9I3GXlnrIiYTN3XfE=","qujjEy2OAvAD8tqujNixipvOC/CDKEPXWqs9\u002BY4LFaE=","7WuNDk23eyfNe62PHykuRmy3161tRcARFgNWu/aCgOU=","jurLJARZjB7Fe9JZEUjWenuLIUJ/sw\u002Bx/o88BnaFTQM=","AgpupSW\u002BrcNbe52yu92bURql10h5\u002BRXymMC1zzF8wBM=","n2t0OoSd\u002B9NIbEadHYn7A7hwpWm6gJFg2djhVViRYng=","Sd/GZUkwZ4Q8w0TCBY95I\u002BxxWZm7Xp3xfksG3IkBDbA=","2IBypkfqBOLTlleDMyYeWTHw1dZ5UaSN8Vi9nmT2J4Q=","Lnw840ru88dnnZSKFinR4LTzOZNDJZ89SuvDs3LG5dY=","xLaUDp7TmLTsx9D\u002BuLLhgqu\u002BJtD5qDLs78ujVLoNhD8=","SgpHkk6QnWRH2tChObAeejM8HLdc51H8B4SCozq1l9g=","cWbFJtEIrIyk935jQQFMHU54PZ9RdwmE1BHwt0UobPU=","R0BAVdym78gDoKsSMzBsb6x2W951BlKFN0FNFYCsCX0=","E2ywdGQj0a0y7VMb8A2SagnNbmvdgNrFzjMdvqqV\u002BwY=","eKWaGHod6XeCFKA2syO4b5bjGd52KeRMe2lxebLpbr0=","6Gt\u002BhW0YD4AIfi3\u002B0JWOcj5ZoRHBh\u002Bd/73EHzLb9ZFo=","E/hX5PlBL0xni6OyXeL\u002BzEtGzj0DfWxsFDaHAUwGu0g=","I4pM727TacYD1RDXN0wzY1zglsMaABlr19WVkApraeA=","q4hWoO1ud\u002BwqFwmCG1nzekXs8nQ7QQMO9l3OKCx3XQo=","M6YvTp/SYon85swfQmM8j\u002BpvvhMDCpXhh\u002BS\u002B62d/V8A=","xmR8fiTLL43ux/I8xI3x9qDZOQjmbEpSVczpZKX/o\u002BU=","rPWN7AcG4RCNgoc7gqqe5bzu2fZeRHANU4G5mRmf4X4=","4YEeh/h12kH0FUGdt8/sHDJmg4zYunaXhfW6POiKYQg=","I/B2gPx/d6O7VA7kVp3syVfL8hMvYHhkflGDSPirAUY=","zJOxsbpIjQOhSWamGE9OKGXBGWjYSnpjnXmsdC56bzo=","6MXGnBspymDhNbACXBV1es99mw15UCxkoq0pSEcWwck=","vwqCCdlnynihoratP5HTjoE6JShLlWi4O5KC5cFdw2s=","ScQoTm373N8A9VaM33H8osIAb0hMiQB3cU1gvaxCLMg=","5Wb9KEGOvI68lY1zg533rWI/3u1c2pizlvhvFBW\u002BT\u002BU=","crQzyJw61YMAO/5cQfffHdBTSXO4POIRR3UPwYueZfY=","WA6BQ4K/xJ4kSdHf0dPt16vUqlYSHp\u002BquO1y\u002Br4idlU=","X\u002ByfyT2MuAWgf9UmpGLy/DJi6r3xLJ7R0fjn\u002BO3\u002BR\u002Bo=","n\u002BDKXe9Y3zHWEn4UB/eNHQTMuhDctkV5BDSwuliCKYo=","tUzryyDyISAnyr1e7ujmEglKl80GaEbNkw0uWsRegIM=","T1MNLl33nCZGSd4XbUBoRmZ1fyK\u002BBWsY0O4NHWiadQ0=","1GJdKBhQwxAongm2xWk7yLdbPyYKlYs\u002BByo/FSwa2Og=","QaD0ihDfiZcRw8Fa5XSqStAEkcFjb0xglTXrbeJN4a8=","ajlLSJ\u002BIWKj8EKV35W1hH4reyjN9/r1Ch8e1dBNjBSw=","DcApRy4nhjlP662diHmukEKqYuyoe0KHyOxGVdr9PyM=","zl\u002BzcRoxnXPakxxXJN6l9VLMwGk\u002By/SQT8B0WSnZMvM=","DiVsG2cevQdVuEwxHL\u002BgPGxh9fRtM3xn1Ix89OU01l4=","UKin6fGxIhO8Gs7LkLmN4kuS0Kl9uZWqgc6x7t2/xf0=","ejq560JF7/oAnu6I4VFt5f2wcSlzaEHpYTqsRh06o9A=","GDvNJZr3M2dgiymsy98U2bIMNajpHpIqUgn3VJu89NQ=","niE7G3oChy6PoSAzXj1Gj8yXNzqzO2SehGWXSGOs3ws=","TWCaa80sCF0UE7aeFJzSDp8vXtYi5Kf\u002Bv1v39TnyKs0=","SOIv4cDkxXKCivZ9A4sABqxsRRoomBeZ1nfsqaqq3aA=","GU6fHRhkxloPnx/L5QeYxDIprNNXbhjKzwM35bIsSdo=","2ioxqlu0rAxIbeWDbnlN9oLjD\u002BeRmektYla3y9AGc88=","ZWzbAgAFew9xp1iyo7knZbDaqWIv4Hm\u002BwCk9vPDUBSE=","pk1NXMdmexfgnN111i\u002B2VCt\u002Bh5FN6lNCwX\u002Bg5BR1Sgs=","SQ6Z3ikpNt1Ct\u002BC2yaguToCnzonqjZYbVGooOo7AY7Q=","gqFfW6e8\u002B0CzyL\u002BpttrsEfJhuLIlj/roGVa/T1vbFPo=","4C0vqrvHlqVp8iL/TwMg3WbaKZg8CIdmSCdnkCW3QT8=","hAhu8xNV6mIq4BPbje7mtlaB6rB9cnfpIkWsJTknocg=","EMmFm2Rvgw9UN/m5beCrxZ/0gK4sFx1rwrh4gdgnDSU=","Tp7HhdwydIvOa6w2bZfuPkEodLiDolooQOMj/RIqWD0=","BFYbEU1ne8O3890ApBmMSlCeMI8nMAZQEuo2W9qZIkw=","cehF2zRSp8AwpZ6pXjkx2ZvmkJBSnSNmX9eeZ8\u002B6O6w=","ak2/1eDOLIr8FN405ijsTWdZezAB4g53eQWw0BRWqpE=","iW599fFesdQ0y47pwj/FPUlHI/BG3klZVY4mfV97P7E=","XmS3sUENiF0muPKWCBQatKsMlhE11bSuzQjyQAwIqKY=","S84gXGiw17\u002BKUQqQ8WJGAEK7hmpmAFWuyw442W9m9vg=","Q0c94I84UXhvgssxmoOEeZZVYCQJZjts/ihDLFaCiss=","NH/A6t7u0uFF9sN6qoIt8K8nBlLJTutXBZ9u64pFEkc=","k37rU8U3X6kHrF9mPvy\u002B6vGHN\u002BmRwd1Rsu9i5oc6XJ4="],"CachedAssets":{"XmS3sUENiF0muPKWCBQatKsMlhE11bSuzQjyQAwIqKY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\Components\\Layout\\ReconnectModal.razor.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\","BasePath":"/","RelativePath":"Components/Layout/ReconnectModal#[.{fingerprint}]?.razor.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"abdmv1u4y3","Integrity":"5u\u002Bv90fOttEFzE2qHMGMOXmy93Ik/BaGqLrrnu6mdGU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"Components\\Layout\\ReconnectModal.razor.js","FileLength":2448,"LastWriteTime":"2026-05-20T13:00:29.0736022+00:00"}},"CachedCopyCandidates":{}}
\ No newline at end of file
+{"GlobalPropertiesHash":"byWqKuSx1f2vxGHl3jLmGrDGSjG9+QUusOxZF5wXRRM=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["ovSerYHPMi4ExhJn2xU4WmJOZFaSXPk63P4ISGtQoag=","t8/S/iqD\u002BWOqoqxZIUWy\u002B0CcyTxhFe\u002B2vqS6syOPh/g=","mVmHEtzmBWHAiYW83bThvmsAmJe7oQFzJayYA2a6PXk=","DJbjU5RSeu8ssKk6\u002BU9qcxdWKLA7PaURGpcwMtU1cds=","6VuM8RXxuOppytZc57Uu0vfEpQ9I3GXlnrIiYTN3XfE=","qujjEy2OAvAD8tqujNixipvOC/CDKEPXWqs9\u002BY4LFaE=","7WuNDk23eyfNe62PHykuRmy3161tRcARFgNWu/aCgOU=","jurLJARZjB7Fe9JZEUjWenuLIUJ/sw\u002Bx/o88BnaFTQM=","AgpupSW\u002BrcNbe52yu92bURql10h5\u002BRXymMC1zzF8wBM=","n2t0OoSd\u002B9NIbEadHYn7A7hwpWm6gJFg2djhVViRYng=","Sd/GZUkwZ4Q8w0TCBY95I\u002BxxWZm7Xp3xfksG3IkBDbA=","2IBypkfqBOLTlleDMyYeWTHw1dZ5UaSN8Vi9nmT2J4Q=","Lnw840ru88dnnZSKFinR4LTzOZNDJZ89SuvDs3LG5dY=","xLaUDp7TmLTsx9D\u002BuLLhgqu\u002BJtD5qDLs78ujVLoNhD8=","SgpHkk6QnWRH2tChObAeejM8HLdc51H8B4SCozq1l9g=","cWbFJtEIrIyk935jQQFMHU54PZ9RdwmE1BHwt0UobPU=","R0BAVdym78gDoKsSMzBsb6x2W951BlKFN0FNFYCsCX0=","E2ywdGQj0a0y7VMb8A2SagnNbmvdgNrFzjMdvqqV\u002BwY=","eKWaGHod6XeCFKA2syO4b5bjGd52KeRMe2lxebLpbr0=","6Gt\u002BhW0YD4AIfi3\u002B0JWOcj5ZoRHBh\u002Bd/73EHzLb9ZFo=","E/hX5PlBL0xni6OyXeL\u002BzEtGzj0DfWxsFDaHAUwGu0g=","I4pM727TacYD1RDXN0wzY1zglsMaABlr19WVkApraeA=","q4hWoO1ud\u002BwqFwmCG1nzekXs8nQ7QQMO9l3OKCx3XQo=","M6YvTp/SYon85swfQmM8j\u002BpvvhMDCpXhh\u002BS\u002B62d/V8A=","xmR8fiTLL43ux/I8xI3x9qDZOQjmbEpSVczpZKX/o\u002BU=","rPWN7AcG4RCNgoc7gqqe5bzu2fZeRHANU4G5mRmf4X4=","4YEeh/h12kH0FUGdt8/sHDJmg4zYunaXhfW6POiKYQg=","I/B2gPx/d6O7VA7kVp3syVfL8hMvYHhkflGDSPirAUY=","zJOxsbpIjQOhSWamGE9OKGXBGWjYSnpjnXmsdC56bzo=","6MXGnBspymDhNbACXBV1es99mw15UCxkoq0pSEcWwck=","vwqCCdlnynihoratP5HTjoE6JShLlWi4O5KC5cFdw2s=","ScQoTm373N8A9VaM33H8osIAb0hMiQB3cU1gvaxCLMg=","5Wb9KEGOvI68lY1zg533rWI/3u1c2pizlvhvFBW\u002BT\u002BU=","crQzyJw61YMAO/5cQfffHdBTSXO4POIRR3UPwYueZfY=","WA6BQ4K/xJ4kSdHf0dPt16vUqlYSHp\u002BquO1y\u002Br4idlU=","X\u002ByfyT2MuAWgf9UmpGLy/DJi6r3xLJ7R0fjn\u002BO3\u002BR\u002Bo=","n\u002BDKXe9Y3zHWEn4UB/eNHQTMuhDctkV5BDSwuliCKYo=","tUzryyDyISAnyr1e7ujmEglKl80GaEbNkw0uWsRegIM=","T1MNLl33nCZGSd4XbUBoRmZ1fyK\u002BBWsY0O4NHWiadQ0=","1GJdKBhQwxAongm2xWk7yLdbPyYKlYs\u002BByo/FSwa2Og=","QaD0ihDfiZcRw8Fa5XSqStAEkcFjb0xglTXrbeJN4a8=","ajlLSJ\u002BIWKj8EKV35W1hH4reyjN9/r1Ch8e1dBNjBSw=","DcApRy4nhjlP662diHmukEKqYuyoe0KHyOxGVdr9PyM=","zl\u002BzcRoxnXPakxxXJN6l9VLMwGk\u002By/SQT8B0WSnZMvM=","DiVsG2cevQdVuEwxHL\u002BgPGxh9fRtM3xn1Ix89OU01l4=","UKin6fGxIhO8Gs7LkLmN4kuS0Kl9uZWqgc6x7t2/xf0=","ejq560JF7/oAnu6I4VFt5f2wcSlzaEHpYTqsRh06o9A=","GDvNJZr3M2dgiymsy98U2bIMNajpHpIqUgn3VJu89NQ=","niE7G3oChy6PoSAzXj1Gj8yXNzqzO2SehGWXSGOs3ws=","TWCaa80sCF0UE7aeFJzSDp8vXtYi5Kf\u002Bv1v39TnyKs0=","SOIv4cDkxXKCivZ9A4sABqxsRRoomBeZ1nfsqaqq3aA=","ai1CABE7/c47ypIkjaDit5lzyUBLWjvvNxLvrggAohE=","2ioxqlu0rAxIbeWDbnlN9oLjD\u002BeRmektYla3y9AGc88=","ZWzbAgAFew9xp1iyo7knZbDaqWIv4Hm\u002BwCk9vPDUBSE=","HgxqJP3ldiIafkTvBBwB/28T3diIAJ7oN3hqfgQ9Kxc=","7Z/Bc6UO\u002BnTwEF1Bhi8coKTRrhvPdjnS5KhFbJHZyuI=","6xvIcY53zw\u002BouYBppzZhf9j631lueCP4AepKDpPFZLc=","EaULMAdq/h9gJo6D9j18s/QsIn1pfuMmdztg65lz1Ic=","4C0vqrvHlqVp8iL/TwMg3WbaKZg8CIdmSCdnkCW3QT8=","5l59oONcKS8dt7eCb1Jl1KQROo0JXt5brXo7D3UUbv8=","lH\u002BcYGTeSlITi8crNUIH4\u002BRxQRiRY4e88TocOvh0vng=","Px5vA8TGJcLr\u002B5y3yqjtCpTe0UN6tqKi1yvSSXfLG6I=","goCVUGyC8XonApSLTimnDrBuNidRio0jhkIWxhk4Xlg=","jwwQYOC\u002BEmbB37rtLRETqMKE04p34z68esNM1UGKNQ4=","cehF2zRSp8AwpZ6pXjkx2ZvmkJBSnSNmX9eeZ8\u002B6O6w=","ak2/1eDOLIr8FN405ijsTWdZezAB4g53eQWw0BRWqpE=","iW599fFesdQ0y47pwj/FPUlHI/BG3klZVY4mfV97P7E=","Xwav5bMzoofa3AJS3UwHS/0N9gwOFGAK98BOj3jfn80=","XmS3sUENiF0muPKWCBQatKsMlhE11bSuzQjyQAwIqKY=","InRyq0ks64otvGQeyZQtrNoJRijr\u002BqZrEZL1\u002BpkYfhw=","K1H3JdbP4eHxUIKs1pVHYY0V7FP9LHPqx7K7y49dPXQ=","Ta1VuT\u002BOsmwHcct1mkKNQFmnN9jyEmAro7m0MKhdrgA=","oYS18mLC1AdNbT1PoZ\u002BP0XsiXBf25aLmQ6kPJTnwMwg=","SSPxff1jRa3LUTShzcYBoRc9exs3wQiF68G/b6uxivE=","k37rU8U3X6kHrF9mPvy\u002B6vGHN\u002BmRwd1Rsu9i5oc6XJ4="],"CachedAssets":{"XmS3sUENiF0muPKWCBQatKsMlhE11bSuzQjyQAwIqKY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\Components\\Layout\\ReconnectModal.razor.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\","BasePath":"/","RelativePath":"Components/Layout/ReconnectModal#[.{fingerprint}]?.razor.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"abdmv1u4y3","Integrity":"5u\u002Bv90fOttEFzE2qHMGMOXmy93Ik/BaGqLrrnu6mdGU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"Components\\Layout\\ReconnectModal.razor.js","FileLength":2448,"LastWriteTime":"2026-05-20T13:00:29.0736022+00:00"}},"CachedCopyCandidates":{}}
\ No newline at end of file
diff --git a/obj/Debug/net10.0/rpswa.dswa.cache.json b/obj/Debug/net10.0/rpswa.dswa.cache.json
index 4ea2603..ff6ecf0 100644
--- a/obj/Debug/net10.0/rpswa.dswa.cache.json
+++ b/obj/Debug/net10.0/rpswa.dswa.cache.json
@@ -1 +1 @@
-{"GlobalPropertiesHash":"/uMkUb0sqJNKdpUEZJImZl22+O7IzLoiXx8m0phzS5Y=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["ovSerYHPMi4ExhJn2xU4WmJOZFaSXPk63P4ISGtQoag=","t8/S/iqD\u002BWOqoqxZIUWy\u002B0CcyTxhFe\u002B2vqS6syOPh/g=","mVmHEtzmBWHAiYW83bThvmsAmJe7oQFzJayYA2a6PXk=","DJbjU5RSeu8ssKk6\u002BU9qcxdWKLA7PaURGpcwMtU1cds=","6VuM8RXxuOppytZc57Uu0vfEpQ9I3GXlnrIiYTN3XfE=","qujjEy2OAvAD8tqujNixipvOC/CDKEPXWqs9\u002BY4LFaE=","7WuNDk23eyfNe62PHykuRmy3161tRcARFgNWu/aCgOU=","jurLJARZjB7Fe9JZEUjWenuLIUJ/sw\u002Bx/o88BnaFTQM=","AgpupSW\u002BrcNbe52yu92bURql10h5\u002BRXymMC1zzF8wBM=","n2t0OoSd\u002B9NIbEadHYn7A7hwpWm6gJFg2djhVViRYng=","Sd/GZUkwZ4Q8w0TCBY95I\u002BxxWZm7Xp3xfksG3IkBDbA=","2IBypkfqBOLTlleDMyYeWTHw1dZ5UaSN8Vi9nmT2J4Q=","Lnw840ru88dnnZSKFinR4LTzOZNDJZ89SuvDs3LG5dY=","xLaUDp7TmLTsx9D\u002BuLLhgqu\u002BJtD5qDLs78ujVLoNhD8=","SgpHkk6QnWRH2tChObAeejM8HLdc51H8B4SCozq1l9g=","cWbFJtEIrIyk935jQQFMHU54PZ9RdwmE1BHwt0UobPU=","R0BAVdym78gDoKsSMzBsb6x2W951BlKFN0FNFYCsCX0=","E2ywdGQj0a0y7VMb8A2SagnNbmvdgNrFzjMdvqqV\u002BwY=","eKWaGHod6XeCFKA2syO4b5bjGd52KeRMe2lxebLpbr0=","6Gt\u002BhW0YD4AIfi3\u002B0JWOcj5ZoRHBh\u002Bd/73EHzLb9ZFo=","E/hX5PlBL0xni6OyXeL\u002BzEtGzj0DfWxsFDaHAUwGu0g=","I4pM727TacYD1RDXN0wzY1zglsMaABlr19WVkApraeA=","q4hWoO1ud\u002BwqFwmCG1nzekXs8nQ7QQMO9l3OKCx3XQo=","M6YvTp/SYon85swfQmM8j\u002BpvvhMDCpXhh\u002BS\u002B62d/V8A=","xmR8fiTLL43ux/I8xI3x9qDZOQjmbEpSVczpZKX/o\u002BU=","rPWN7AcG4RCNgoc7gqqe5bzu2fZeRHANU4G5mRmf4X4=","4YEeh/h12kH0FUGdt8/sHDJmg4zYunaXhfW6POiKYQg=","I/B2gPx/d6O7VA7kVp3syVfL8hMvYHhkflGDSPirAUY=","zJOxsbpIjQOhSWamGE9OKGXBGWjYSnpjnXmsdC56bzo=","6MXGnBspymDhNbACXBV1es99mw15UCxkoq0pSEcWwck=","vwqCCdlnynihoratP5HTjoE6JShLlWi4O5KC5cFdw2s=","ScQoTm373N8A9VaM33H8osIAb0hMiQB3cU1gvaxCLMg=","5Wb9KEGOvI68lY1zg533rWI/3u1c2pizlvhvFBW\u002BT\u002BU=","crQzyJw61YMAO/5cQfffHdBTSXO4POIRR3UPwYueZfY=","WA6BQ4K/xJ4kSdHf0dPt16vUqlYSHp\u002BquO1y\u002Br4idlU=","X\u002ByfyT2MuAWgf9UmpGLy/DJi6r3xLJ7R0fjn\u002BO3\u002BR\u002Bo=","n\u002BDKXe9Y3zHWEn4UB/eNHQTMuhDctkV5BDSwuliCKYo=","tUzryyDyISAnyr1e7ujmEglKl80GaEbNkw0uWsRegIM=","T1MNLl33nCZGSd4XbUBoRmZ1fyK\u002BBWsY0O4NHWiadQ0=","1GJdKBhQwxAongm2xWk7yLdbPyYKlYs\u002BByo/FSwa2Og=","QaD0ihDfiZcRw8Fa5XSqStAEkcFjb0xglTXrbeJN4a8=","ajlLSJ\u002BIWKj8EKV35W1hH4reyjN9/r1Ch8e1dBNjBSw=","DcApRy4nhjlP662diHmukEKqYuyoe0KHyOxGVdr9PyM=","zl\u002BzcRoxnXPakxxXJN6l9VLMwGk\u002By/SQT8B0WSnZMvM=","DiVsG2cevQdVuEwxHL\u002BgPGxh9fRtM3xn1Ix89OU01l4=","UKin6fGxIhO8Gs7LkLmN4kuS0Kl9uZWqgc6x7t2/xf0=","ejq560JF7/oAnu6I4VFt5f2wcSlzaEHpYTqsRh06o9A=","GDvNJZr3M2dgiymsy98U2bIMNajpHpIqUgn3VJu89NQ=","niE7G3oChy6PoSAzXj1Gj8yXNzqzO2SehGWXSGOs3ws=","TWCaa80sCF0UE7aeFJzSDp8vXtYi5Kf\u002Bv1v39TnyKs0=","SOIv4cDkxXKCivZ9A4sABqxsRRoomBeZ1nfsqaqq3aA=","GU6fHRhkxloPnx/L5QeYxDIprNNXbhjKzwM35bIsSdo=","2ioxqlu0rAxIbeWDbnlN9oLjD\u002BeRmektYla3y9AGc88=","ZWzbAgAFew9xp1iyo7knZbDaqWIv4Hm\u002BwCk9vPDUBSE=","pk1NXMdmexfgnN111i\u002B2VCt\u002Bh5FN6lNCwX\u002Bg5BR1Sgs=","SQ6Z3ikpNt1Ct\u002BC2yaguToCnzonqjZYbVGooOo7AY7Q=","gqFfW6e8\u002B0CzyL\u002BpttrsEfJhuLIlj/roGVa/T1vbFPo=","4C0vqrvHlqVp8iL/TwMg3WbaKZg8CIdmSCdnkCW3QT8=","hAhu8xNV6mIq4BPbje7mtlaB6rB9cnfpIkWsJTknocg=","EMmFm2Rvgw9UN/m5beCrxZ/0gK4sFx1rwrh4gdgnDSU=","Tp7HhdwydIvOa6w2bZfuPkEodLiDolooQOMj/RIqWD0=","BFYbEU1ne8O3890ApBmMSlCeMI8nMAZQEuo2W9qZIkw=","cehF2zRSp8AwpZ6pXjkx2ZvmkJBSnSNmX9eeZ8\u002B6O6w=","ak2/1eDOLIr8FN405ijsTWdZezAB4g53eQWw0BRWqpE=","iW599fFesdQ0y47pwj/FPUlHI/BG3klZVY4mfV97P7E="],"CachedAssets":{"ovSerYHPMi4ExhJn2xU4WmJOZFaSXPk63P4ISGtQoag=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\app.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"app#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"zhpirmksq2","Integrity":"aVs2q7lpDiDfjxp0TyLLSFm7W3Uj6h82MKPlGVssfE0=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\app.css","FileLength":2172,"LastWriteTime":"2026-05-20T13:13:23.5863493+00:00"},"DJbjU5RSeu8ssKk6\u002BU9qcxdWKLA7PaURGpcwMtU1cds=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"bqjiyaj88i","Integrity":"Yy5/hBqRmmU2MJ1TKwP2aXoTO6\u002BOjzrLmJIsC2Wy4H8=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.css","FileLength":70329,"LastWriteTime":"2026-05-20T13:00:28.5512686+00:00"},"6VuM8RXxuOppytZc57Uu0vfEpQ9I3GXlnrIiYTN3XfE=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"c2jlpeoesf","Integrity":"xAT\u002Bn25FE5hvOjj2fG4YdOwr1bl4IlAJBNg6PbhLT2E=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.css.map","FileLength":203221,"LastWriteTime":"2026-05-20T13:00:28.5727798+00:00"},"qujjEy2OAvAD8tqujNixipvOC/CDKEPXWqs9\u002BY4LFaE=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"erw9l3u2r3","Integrity":"5nDHMGiyfZHl3UXePuhLDQR9ncPfBR1HJeZLXyJNV24=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.min.css","FileLength":51795,"LastWriteTime":"2026-05-20T13:00:28.5727798+00:00"},"7WuNDk23eyfNe62PHykuRmy3161tRcARFgNWu/aCgOU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"aexeepp0ev","Integrity":"kgL\u002BxwVmM8IOs15lnoHt9daR2LRMiBG/cYgUPcKQOY4=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.min.css.map","FileLength":115986,"LastWriteTime":"2026-05-20T13:00:28.5888342+00:00"},"jurLJARZjB7Fe9JZEUjWenuLIUJ/sw\u002Bx/o88BnaFTQM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.rtl#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"d7shbmvgxk","Integrity":"CZxoF8zjaLlyVkcvVCDlc8CeQR1w1RMrvgYx30cs8kM=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.css","FileLength":70403,"LastWriteTime":"2026-05-20T13:00:28.5989136+00:00"},"AgpupSW\u002BrcNbe52yu92bURql10h5\u002BRXymMC1zzF8wBM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"ausgxo2sd3","Integrity":"/siQUA8yX830j\u002BcL4amKHY3yBtn3n8z3Eg\u002BVZ15f90k=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.css.map","FileLength":203225,"LastWriteTime":"2026-05-20T13:00:28.6243226+00:00"},"n2t0OoSd\u002B9NIbEadHYn7A7hwpWm6gJFg2djhVViRYng=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"k8d9w2qqmf","Integrity":"vMxTcvkC4Ly7LiAT3G8yEy9EpTr7Fge4SczWp07/p3k=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.min.css","FileLength":51870,"LastWriteTime":"2026-05-20T13:00:28.6470877+00:00"},"Sd/GZUkwZ4Q8w0TCBY95I\u002BxxWZm7Xp3xfksG3IkBDbA=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"cosvhxvwiu","Integrity":"7GdOlw7U/wgyaeUtFmxPz5/MphdvVSPtVOOlTn9c33Q=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.min.css.map","FileLength":116063,"LastWriteTime":"2026-05-20T13:00:28.6572385+00:00"},"2IBypkfqBOLTlleDMyYeWTHw1dZ5UaSN8Vi9nmT2J4Q=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"ub07r2b239","Integrity":"lo9YI82OF03vojdu\u002BXOR3\u002BDRrLIpMhpzZNmHbM5CDMA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.css","FileLength":12065,"LastWriteTime":"2026-05-20T13:00:28.6798889+00:00"},"Lnw840ru88dnnZSKFinR4LTzOZNDJZ89SuvDs3LG5dY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"fvhpjtyr6v","Integrity":"RXJ/QZiBfHXoPtXR2EgC\u002BbFo2pe3GtbZO722RtiLGzQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.css.map","FileLength":129371,"LastWriteTime":"2026-05-20T13:00:28.6935976+00:00"},"xLaUDp7TmLTsx9D\u002BuLLhgqu\u002BJtD5qDLs78ujVLoNhD8=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"b7pk76d08c","Integrity":"l8vt5oozv958eMd9TFsPAWgl9JJK9YKfbVSs8mchQ84=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.min.css","FileLength":10126,"LastWriteTime":"2026-05-20T13:00:28.6935976+00:00"},"SgpHkk6QnWRH2tChObAeejM8HLdc51H8B4SCozq1l9g=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"fsbi9cje9m","Integrity":"0eqVT62kqRLJh9oTqLeIH4UnQskqVjib8hl2fXxl4lg=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.min.css.map","FileLength":51369,"LastWriteTime":"2026-05-20T13:00:28.7096015+00:00"},"cWbFJtEIrIyk935jQQFMHU54PZ9RdwmE1BHwt0UobPU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"rzd6atqjts","Integrity":"V8psnHoJS/MPlCXWwc/J3tGtp9c3gGFRmqsIQgpn\u002BGg=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.css","FileLength":12058,"LastWriteTime":"2026-05-20T13:00:28.7096015+00:00"},"R0BAVdym78gDoKsSMzBsb6x2W951BlKFN0FNFYCsCX0=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"ee0r1s7dh0","Integrity":"OoQVwh7Arp7bVoK2ZiTx2S//KrnPrSPzPZ93CqCMhe8=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.css.map","FileLength":129386,"LastWriteTime":"2026-05-20T13:00:28.7252957+00:00"},"E2ywdGQj0a0y7VMb8A2SagnNbmvdgNrFzjMdvqqV\u002BwY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"dxx9fxp4il","Integrity":"/8jh8hcEMFKyS6goWqnNu7t3EzZPCGdQZgO6sCkI8tI=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.min.css","FileLength":10198,"LastWriteTime":"2026-05-20T13:00:28.7279863+00:00"},"eKWaGHod6XeCFKA2syO4b5bjGd52KeRMe2lxebLpbr0=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"jd9uben2k1","Integrity":"910zw\u002BrMdcg0Ls48ATp65vEn8rd5HvPxOKm2x3/CBII=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.min.css.map","FileLength":63943,"LastWriteTime":"2026-05-20T13:00:28.7279863+00:00"},"6Gt\u002BhW0YD4AIfi3\u002B0JWOcj5ZoRHBh\u002Bd/73EHzLb9ZFo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"khv3u5hwcm","Integrity":"2BubgNUPlQSF/0wLFcRXQ/Yjzk9vsUbDAeK2QM\u002Bh\u002Byo=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.css","FileLength":107823,"LastWriteTime":"2026-05-20T13:00:28.7413395+00:00"},"E/hX5PlBL0xni6OyXeL\u002BzEtGzj0DfWxsFDaHAUwGu0g=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"r4e9w2rdcm","Integrity":"Nfjrc4Ur9Fv2oBEswQWIyBnNDP99q\u002BLhL\u002Bz9553O0cY=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.css.map","FileLength":267535,"LastWriteTime":"2026-05-20T13:00:28.7471362+00:00"},"I4pM727TacYD1RDXN0wzY1zglsMaABlr19WVkApraeA=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"lcd1t2u6c8","Integrity":"KyE9xbKO9CuYx0HXpIKgsWIvXkAfITtiQ172j26wmRs=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.min.css","FileLength":85352,"LastWriteTime":"2026-05-20T13:00:28.7512991+00:00"},"q4hWoO1ud\u002BwqFwmCG1nzekXs8nQ7QQMO9l3OKCx3XQo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"c2oey78nd0","Integrity":"rHDmip4JZzuaGOcSQ1QSQrIbG0Eb3Zja9whqSF1zYIU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.min.css.map","FileLength":180381,"LastWriteTime":"2026-05-20T13:00:28.7732126+00:00"},"M6YvTp/SYon85swfQmM8j\u002BpvvhMDCpXhh\u002BS\u002B62d/V8A=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"tdbxkamptv","Integrity":"H6wkBbSwjua2veJoThJo4uy161jp\u002BDOiZTloUlcZ6qQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.css","FileLength":107691,"LastWriteTime":"2026-05-20T13:00:28.7732126+00:00"},"xmR8fiTLL43ux/I8xI3x9qDZOQjmbEpSVczpZKX/o\u002BU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"j5mq2jizvt","Integrity":"p0BVq5Ve/dohBIdfbrZsoQNu02JSsKh1g0wbyiQiUaU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.css.map","FileLength":267476,"LastWriteTime":"2026-05-20T13:00:28.7732126+00:00"},"rPWN7AcG4RCNgoc7gqqe5bzu2fZeRHANU4G5mRmf4X4=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"06098lyss8","Integrity":"GAUum6FjwQ8HrXGaoFRnHTqQQLpljXGavT7mBX8E9qU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.min.css","FileLength":85281,"LastWriteTime":"2026-05-20T13:00:28.788869+00:00"},"4YEeh/h12kH0FUGdt8/sHDJmg4zYunaXhfW6POiKYQg=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"nvvlpmu67g","Integrity":"o8XK32mcY/FfcOQ1D2HJvVuZ0YTXSURZDLXCK0fnQeA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.min.css.map","FileLength":180217,"LastWriteTime":"2026-05-20T13:00:28.7962157+00:00"},"I/B2gPx/d6O7VA7kVp3syVfL8hMvYHhkflGDSPirAUY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"s35ty4nyc5","Integrity":"GKEF18s44B5e0MolXAkpkqLiEbOVlKf6VyYr/G/E6pw=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.css","FileLength":281046,"LastWriteTime":"2026-05-20T13:00:28.8211312+00:00"},"zJOxsbpIjQOhSWamGE9OKGXBGWjYSnpjnXmsdC56bzo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"pj5nd1wqec","Integrity":"KzNVR3p7UZGba94dnCtlc6jXjK5urSPiZ/eNnKTmDkw=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.css.map","FileLength":679755,"LastWriteTime":"2026-05-20T13:00:28.8211312+00:00"},"6MXGnBspymDhNbACXBV1es99mw15UCxkoq0pSEcWwck=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"46ein0sx1k","Integrity":"PI8n5gCcz9cQqQXm3PEtDuPG8qx9oFsFctPg0S5zb8g=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.min.css","FileLength":232803,"LastWriteTime":"2026-05-20T13:00:28.8544118+00:00"},"vwqCCdlnynihoratP5HTjoE6JShLlWi4O5KC5cFdw2s=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"v0zj4ognzu","Integrity":"8SM4U2NQpCLGTQLW5D/x3qSTwxVq2CP\u002BGXYc3V1WwFs=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.min.css.map","FileLength":589892,"LastWriteTime":"2026-05-20T13:00:28.8640202+00:00"},"ScQoTm373N8A9VaM33H8osIAb0hMiQB3cU1gvaxCLMg=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.rtl#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"37tfw0ft22","Integrity":"j5E4XIj1p1kNnDi0x1teX9RXoh1/FNlPvCML9YmRh2Q=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.css","FileLength":280259,"LastWriteTime":"2026-05-20T13:00:28.886874+00:00"},"5Wb9KEGOvI68lY1zg533rWI/3u1c2pizlvhvFBW\u002BT\u002BU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.rtl.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"hrwsygsryq","Integrity":"3bYWUiiVYMZfv2wq5JnXIsHlQKgSKs/VcRivgjgZ1ho=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.css.map","FileLength":679615,"LastWriteTime":"2026-05-20T13:00:28.8999809+00:00"},"crQzyJw61YMAO/5cQfffHdBTSXO4POIRR3UPwYueZfY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.rtl.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"pk9g2wxc8p","Integrity":"h5lE7Nm8SkeIpBHHYxN99spP3VuGFKl5NZgsocil7zk=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.min.css","FileLength":232911,"LastWriteTime":"2026-05-20T13:00:28.9171977+00:00"},"WA6BQ4K/xJ4kSdHf0dPt16vUqlYSHp\u002BquO1y\u002Br4idlU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.rtl.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"ft3s53vfgj","Integrity":"rTzXlnepcb/vgFAiB\u002BU7ODQAfOlJLfM3gY6IU7eIANk=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.min.css.map","FileLength":589087,"LastWriteTime":"2026-05-20T13:00:28.9171977+00:00"},"X\u002ByfyT2MuAWgf9UmpGLy/DJi6r3xLJ7R0fjn\u002BO3\u002BR\u002Bo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.bundle#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"6cfz1n2cew","Integrity":"mkoRoV24jV\u002BrCPWcHDR5awPx8VuzzJKN0ibhxZ9/WaM=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.js","FileLength":207819,"LastWriteTime":"2026-05-20T13:00:28.9496198+00:00"},"n\u002BDKXe9Y3zHWEn4UB/eNHQTMuhDctkV5BDSwuliCKYo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.bundle.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"6pdc2jztkx","Integrity":"Wq4aWW1rQdJ\u002B6oAgy1JQc9IBjHL9T3MKfXTBNqOv02c=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.js.map","FileLength":444579,"LastWriteTime":"2026-05-20T13:00:28.9496198+00:00"},"tUzryyDyISAnyr1e7ujmEglKl80GaEbNkw0uWsRegIM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.min.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.bundle.min#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"493y06b0oq","Integrity":"CDOy6cOibCWEdsRiZuaHf8dSGGJRYuBGC\u002BmjoJimHGw=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.min.js","FileLength":80721,"LastWriteTime":"2026-05-20T13:00:28.9630083+00:00"},"T1MNLl33nCZGSd4XbUBoRmZ1fyK\u002BBWsY0O4NHWiadQ0=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.min.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.bundle.min.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"iovd86k7lj","Integrity":"Xj4HYxZBQ7qqHKBwa2EAugRS\u002BRHWzpcTtI49vgezUSU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.min.js.map","FileLength":332090,"LastWriteTime":"2026-05-20T13:00:28.9858184+00:00"},"1GJdKBhQwxAongm2xWk7yLdbPyYKlYs\u002BByo/FSwa2Og=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.esm#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"vr1egmr9el","Integrity":"exiXZNJDwucXfuje3CbXPbuS6\u002BEry3z9sP\u002Bpgmvh8nA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.js","FileLength":135829,"LastWriteTime":"2026-05-20T13:00:28.9947916+00:00"},"QaD0ihDfiZcRw8Fa5XSqStAEkcFjb0xglTXrbeJN4a8=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.esm.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"kbrnm935zg","Integrity":"EPRLgpqWkahLxEn6CUjdM76RIYIw1xdHwTbeHssuj/4=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.js.map","FileLength":305438,"LastWriteTime":"2026-05-20T13:00:29.0026177+00:00"},"ajlLSJ\u002BIWKj8EKV35W1hH4reyjN9/r1Ch8e1dBNjBSw=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.min.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.esm.min#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"jj8uyg4cgr","Integrity":"QZdFT1ZNdly4rmgUBtXmXFS9BU1FTa\u002BsPe6h794sFRQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.min.js","FileLength":73935,"LastWriteTime":"2026-05-20T13:00:29.0106326+00:00"},"DcApRy4nhjlP662diHmukEKqYuyoe0KHyOxGVdr9PyM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.min.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.esm.min.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"y7v9cxd14o","Integrity":"Tsbv8z6VlNgVET8xvz/yLo/v5iJHTAj2J4hkhjP1rHM=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.min.js.map","FileLength":222455,"LastWriteTime":"2026-05-20T13:00:29.0165672+00:00"},"zl\u002BzcRoxnXPakxxXJN6l9VLMwGk\u002By/SQT8B0WSnZMvM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"notf2xhcfb","Integrity":"\u002BUW802wgVfnjaSbdwyHLlU7AVplb0WToOlvN1CnzIac=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.js","FileLength":145401,"LastWriteTime":"2026-05-20T13:00:29.0263236+00:00"},"DiVsG2cevQdVuEwxHL\u002BgPGxh9fRtM3xn1Ix89OU01l4=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"h1s4sie4z3","Integrity":"9Wr7Hxe8gCJDoIHh5xP29ldXvC3kN2GkifQj9c8vYx4=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.js.map","FileLength":306606,"LastWriteTime":"2026-05-20T13:00:29.0324073+00:00"},"UKin6fGxIhO8Gs7LkLmN4kuS0Kl9uZWqgc6x7t2/xf0=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.min.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.min#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"63fj8s7r0e","Integrity":"3gQJhtmj7YnV1fmtbVcnAV6eI4ws0Tr48bVZCThtCGQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.min.js","FileLength":60635,"LastWriteTime":"2026-05-20T13:00:29.0344119+00:00"},"ejq560JF7/oAnu6I4VFt5f2wcSlzaEHpYTqsRh06o9A=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.min.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.min.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"0j3bgjxly4","Integrity":"ZI01e/ns473GKvACG4McggJdxvFfFIw4xspwQiG8Ye4=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.min.js.map","FileLength":220561,"LastWriteTime":"2026-05-20T13:00:29.0441717+00:00"},"mVmHEtzmBWHAiYW83bThvmsAmJe7oQFzJayYA2a6PXk=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\favicon.svg","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"favicon#[.{fingerprint}]?.svg","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"c1x271fjrj","Integrity":"wM4nl2JSrFpWkKkZbbxY5MJFs8LW1lv3lvltPn9fy3g=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\favicon.svg","FileLength":1138,"LastWriteTime":"2026-05-21T13:43:16.4498124+00:00"},"t8/S/iqD\u002BWOqoqxZIUWy\u002B0CcyTxhFe\u002B2vqS6syOPh/g=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\favicon.png","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"favicon#[.{fingerprint}]?.png","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"g5dz11g438","Integrity":"VHI6wtx09cZx75cKj/yP4Y6/hI0/\u002BbNsMdMfq7R\u002BVgQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\favicon.png","FileLength":4237,"LastWriteTime":"2026-05-22T06:57:55.920896+00:00"}},"CachedCopyCandidates":{}}
\ No newline at end of file
+{"GlobalPropertiesHash":"/uMkUb0sqJNKdpUEZJImZl22+O7IzLoiXx8m0phzS5Y=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["ovSerYHPMi4ExhJn2xU4WmJOZFaSXPk63P4ISGtQoag=","t8/S/iqD\u002BWOqoqxZIUWy\u002B0CcyTxhFe\u002B2vqS6syOPh/g=","mVmHEtzmBWHAiYW83bThvmsAmJe7oQFzJayYA2a6PXk=","DJbjU5RSeu8ssKk6\u002BU9qcxdWKLA7PaURGpcwMtU1cds=","6VuM8RXxuOppytZc57Uu0vfEpQ9I3GXlnrIiYTN3XfE=","qujjEy2OAvAD8tqujNixipvOC/CDKEPXWqs9\u002BY4LFaE=","7WuNDk23eyfNe62PHykuRmy3161tRcARFgNWu/aCgOU=","jurLJARZjB7Fe9JZEUjWenuLIUJ/sw\u002Bx/o88BnaFTQM=","AgpupSW\u002BrcNbe52yu92bURql10h5\u002BRXymMC1zzF8wBM=","n2t0OoSd\u002B9NIbEadHYn7A7hwpWm6gJFg2djhVViRYng=","Sd/GZUkwZ4Q8w0TCBY95I\u002BxxWZm7Xp3xfksG3IkBDbA=","2IBypkfqBOLTlleDMyYeWTHw1dZ5UaSN8Vi9nmT2J4Q=","Lnw840ru88dnnZSKFinR4LTzOZNDJZ89SuvDs3LG5dY=","xLaUDp7TmLTsx9D\u002BuLLhgqu\u002BJtD5qDLs78ujVLoNhD8=","SgpHkk6QnWRH2tChObAeejM8HLdc51H8B4SCozq1l9g=","cWbFJtEIrIyk935jQQFMHU54PZ9RdwmE1BHwt0UobPU=","R0BAVdym78gDoKsSMzBsb6x2W951BlKFN0FNFYCsCX0=","E2ywdGQj0a0y7VMb8A2SagnNbmvdgNrFzjMdvqqV\u002BwY=","eKWaGHod6XeCFKA2syO4b5bjGd52KeRMe2lxebLpbr0=","6Gt\u002BhW0YD4AIfi3\u002B0JWOcj5ZoRHBh\u002Bd/73EHzLb9ZFo=","E/hX5PlBL0xni6OyXeL\u002BzEtGzj0DfWxsFDaHAUwGu0g=","I4pM727TacYD1RDXN0wzY1zglsMaABlr19WVkApraeA=","q4hWoO1ud\u002BwqFwmCG1nzekXs8nQ7QQMO9l3OKCx3XQo=","M6YvTp/SYon85swfQmM8j\u002BpvvhMDCpXhh\u002BS\u002B62d/V8A=","xmR8fiTLL43ux/I8xI3x9qDZOQjmbEpSVczpZKX/o\u002BU=","rPWN7AcG4RCNgoc7gqqe5bzu2fZeRHANU4G5mRmf4X4=","4YEeh/h12kH0FUGdt8/sHDJmg4zYunaXhfW6POiKYQg=","I/B2gPx/d6O7VA7kVp3syVfL8hMvYHhkflGDSPirAUY=","zJOxsbpIjQOhSWamGE9OKGXBGWjYSnpjnXmsdC56bzo=","6MXGnBspymDhNbACXBV1es99mw15UCxkoq0pSEcWwck=","vwqCCdlnynihoratP5HTjoE6JShLlWi4O5KC5cFdw2s=","ScQoTm373N8A9VaM33H8osIAb0hMiQB3cU1gvaxCLMg=","5Wb9KEGOvI68lY1zg533rWI/3u1c2pizlvhvFBW\u002BT\u002BU=","crQzyJw61YMAO/5cQfffHdBTSXO4POIRR3UPwYueZfY=","WA6BQ4K/xJ4kSdHf0dPt16vUqlYSHp\u002BquO1y\u002Br4idlU=","X\u002ByfyT2MuAWgf9UmpGLy/DJi6r3xLJ7R0fjn\u002BO3\u002BR\u002Bo=","n\u002BDKXe9Y3zHWEn4UB/eNHQTMuhDctkV5BDSwuliCKYo=","tUzryyDyISAnyr1e7ujmEglKl80GaEbNkw0uWsRegIM=","T1MNLl33nCZGSd4XbUBoRmZ1fyK\u002BBWsY0O4NHWiadQ0=","1GJdKBhQwxAongm2xWk7yLdbPyYKlYs\u002BByo/FSwa2Og=","QaD0ihDfiZcRw8Fa5XSqStAEkcFjb0xglTXrbeJN4a8=","ajlLSJ\u002BIWKj8EKV35W1hH4reyjN9/r1Ch8e1dBNjBSw=","DcApRy4nhjlP662diHmukEKqYuyoe0KHyOxGVdr9PyM=","zl\u002BzcRoxnXPakxxXJN6l9VLMwGk\u002By/SQT8B0WSnZMvM=","DiVsG2cevQdVuEwxHL\u002BgPGxh9fRtM3xn1Ix89OU01l4=","UKin6fGxIhO8Gs7LkLmN4kuS0Kl9uZWqgc6x7t2/xf0=","ejq560JF7/oAnu6I4VFt5f2wcSlzaEHpYTqsRh06o9A=","GDvNJZr3M2dgiymsy98U2bIMNajpHpIqUgn3VJu89NQ=","niE7G3oChy6PoSAzXj1Gj8yXNzqzO2SehGWXSGOs3ws=","TWCaa80sCF0UE7aeFJzSDp8vXtYi5Kf\u002Bv1v39TnyKs0=","SOIv4cDkxXKCivZ9A4sABqxsRRoomBeZ1nfsqaqq3aA=","ai1CABE7/c47ypIkjaDit5lzyUBLWjvvNxLvrggAohE=","2ioxqlu0rAxIbeWDbnlN9oLjD\u002BeRmektYla3y9AGc88=","ZWzbAgAFew9xp1iyo7knZbDaqWIv4Hm\u002BwCk9vPDUBSE=","HgxqJP3ldiIafkTvBBwB/28T3diIAJ7oN3hqfgQ9Kxc=","7Z/Bc6UO\u002BnTwEF1Bhi8coKTRrhvPdjnS5KhFbJHZyuI=","6xvIcY53zw\u002BouYBppzZhf9j631lueCP4AepKDpPFZLc=","EaULMAdq/h9gJo6D9j18s/QsIn1pfuMmdztg65lz1Ic=","4C0vqrvHlqVp8iL/TwMg3WbaKZg8CIdmSCdnkCW3QT8=","5l59oONcKS8dt7eCb1Jl1KQROo0JXt5brXo7D3UUbv8=","lH\u002BcYGTeSlITi8crNUIH4\u002BRxQRiRY4e88TocOvh0vng=","Px5vA8TGJcLr\u002B5y3yqjtCpTe0UN6tqKi1yvSSXfLG6I=","goCVUGyC8XonApSLTimnDrBuNidRio0jhkIWxhk4Xlg=","jwwQYOC\u002BEmbB37rtLRETqMKE04p34z68esNM1UGKNQ4=","cehF2zRSp8AwpZ6pXjkx2ZvmkJBSnSNmX9eeZ8\u002B6O6w=","ak2/1eDOLIr8FN405ijsTWdZezAB4g53eQWw0BRWqpE=","iW599fFesdQ0y47pwj/FPUlHI/BG3klZVY4mfV97P7E="],"CachedAssets":{"ovSerYHPMi4ExhJn2xU4WmJOZFaSXPk63P4ISGtQoag=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\app.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"app#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"zhpirmksq2","Integrity":"aVs2q7lpDiDfjxp0TyLLSFm7W3Uj6h82MKPlGVssfE0=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\app.css","FileLength":2172,"LastWriteTime":"2026-05-20T13:13:23.5863493+00:00"},"DJbjU5RSeu8ssKk6\u002BU9qcxdWKLA7PaURGpcwMtU1cds=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"bqjiyaj88i","Integrity":"Yy5/hBqRmmU2MJ1TKwP2aXoTO6\u002BOjzrLmJIsC2Wy4H8=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.css","FileLength":70329,"LastWriteTime":"2026-05-20T13:00:28.5512686+00:00"},"6VuM8RXxuOppytZc57Uu0vfEpQ9I3GXlnrIiYTN3XfE=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"c2jlpeoesf","Integrity":"xAT\u002Bn25FE5hvOjj2fG4YdOwr1bl4IlAJBNg6PbhLT2E=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.css.map","FileLength":203221,"LastWriteTime":"2026-05-20T13:00:28.5727798+00:00"},"qujjEy2OAvAD8tqujNixipvOC/CDKEPXWqs9\u002BY4LFaE=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"erw9l3u2r3","Integrity":"5nDHMGiyfZHl3UXePuhLDQR9ncPfBR1HJeZLXyJNV24=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.min.css","FileLength":51795,"LastWriteTime":"2026-05-20T13:00:28.5727798+00:00"},"7WuNDk23eyfNe62PHykuRmy3161tRcARFgNWu/aCgOU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"aexeepp0ev","Integrity":"kgL\u002BxwVmM8IOs15lnoHt9daR2LRMiBG/cYgUPcKQOY4=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.min.css.map","FileLength":115986,"LastWriteTime":"2026-05-20T13:00:28.5888342+00:00"},"jurLJARZjB7Fe9JZEUjWenuLIUJ/sw\u002Bx/o88BnaFTQM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.rtl#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"d7shbmvgxk","Integrity":"CZxoF8zjaLlyVkcvVCDlc8CeQR1w1RMrvgYx30cs8kM=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.css","FileLength":70403,"LastWriteTime":"2026-05-20T13:00:28.5989136+00:00"},"AgpupSW\u002BrcNbe52yu92bURql10h5\u002BRXymMC1zzF8wBM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"ausgxo2sd3","Integrity":"/siQUA8yX830j\u002BcL4amKHY3yBtn3n8z3Eg\u002BVZ15f90k=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.css.map","FileLength":203225,"LastWriteTime":"2026-05-20T13:00:28.6243226+00:00"},"n2t0OoSd\u002B9NIbEadHYn7A7hwpWm6gJFg2djhVViRYng=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"k8d9w2qqmf","Integrity":"vMxTcvkC4Ly7LiAT3G8yEy9EpTr7Fge4SczWp07/p3k=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.min.css","FileLength":51870,"LastWriteTime":"2026-05-20T13:00:28.6470877+00:00"},"Sd/GZUkwZ4Q8w0TCBY95I\u002BxxWZm7Xp3xfksG3IkBDbA=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"cosvhxvwiu","Integrity":"7GdOlw7U/wgyaeUtFmxPz5/MphdvVSPtVOOlTn9c33Q=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.min.css.map","FileLength":116063,"LastWriteTime":"2026-05-20T13:00:28.6572385+00:00"},"2IBypkfqBOLTlleDMyYeWTHw1dZ5UaSN8Vi9nmT2J4Q=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"ub07r2b239","Integrity":"lo9YI82OF03vojdu\u002BXOR3\u002BDRrLIpMhpzZNmHbM5CDMA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.css","FileLength":12065,"LastWriteTime":"2026-05-20T13:00:28.6798889+00:00"},"Lnw840ru88dnnZSKFinR4LTzOZNDJZ89SuvDs3LG5dY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"fvhpjtyr6v","Integrity":"RXJ/QZiBfHXoPtXR2EgC\u002BbFo2pe3GtbZO722RtiLGzQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.css.map","FileLength":129371,"LastWriteTime":"2026-05-20T13:00:28.6935976+00:00"},"xLaUDp7TmLTsx9D\u002BuLLhgqu\u002BJtD5qDLs78ujVLoNhD8=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"b7pk76d08c","Integrity":"l8vt5oozv958eMd9TFsPAWgl9JJK9YKfbVSs8mchQ84=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.min.css","FileLength":10126,"LastWriteTime":"2026-05-20T13:00:28.6935976+00:00"},"SgpHkk6QnWRH2tChObAeejM8HLdc51H8B4SCozq1l9g=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"fsbi9cje9m","Integrity":"0eqVT62kqRLJh9oTqLeIH4UnQskqVjib8hl2fXxl4lg=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.min.css.map","FileLength":51369,"LastWriteTime":"2026-05-20T13:00:28.7096015+00:00"},"cWbFJtEIrIyk935jQQFMHU54PZ9RdwmE1BHwt0UobPU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"rzd6atqjts","Integrity":"V8psnHoJS/MPlCXWwc/J3tGtp9c3gGFRmqsIQgpn\u002BGg=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.css","FileLength":12058,"LastWriteTime":"2026-05-20T13:00:28.7096015+00:00"},"R0BAVdym78gDoKsSMzBsb6x2W951BlKFN0FNFYCsCX0=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"ee0r1s7dh0","Integrity":"OoQVwh7Arp7bVoK2ZiTx2S//KrnPrSPzPZ93CqCMhe8=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.css.map","FileLength":129386,"LastWriteTime":"2026-05-20T13:00:28.7252957+00:00"},"E2ywdGQj0a0y7VMb8A2SagnNbmvdgNrFzjMdvqqV\u002BwY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"dxx9fxp4il","Integrity":"/8jh8hcEMFKyS6goWqnNu7t3EzZPCGdQZgO6sCkI8tI=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.min.css","FileLength":10198,"LastWriteTime":"2026-05-20T13:00:28.7279863+00:00"},"eKWaGHod6XeCFKA2syO4b5bjGd52KeRMe2lxebLpbr0=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"jd9uben2k1","Integrity":"910zw\u002BrMdcg0Ls48ATp65vEn8rd5HvPxOKm2x3/CBII=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.min.css.map","FileLength":63943,"LastWriteTime":"2026-05-20T13:00:28.7279863+00:00"},"6Gt\u002BhW0YD4AIfi3\u002B0JWOcj5ZoRHBh\u002Bd/73EHzLb9ZFo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"khv3u5hwcm","Integrity":"2BubgNUPlQSF/0wLFcRXQ/Yjzk9vsUbDAeK2QM\u002Bh\u002Byo=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.css","FileLength":107823,"LastWriteTime":"2026-05-20T13:00:28.7413395+00:00"},"E/hX5PlBL0xni6OyXeL\u002BzEtGzj0DfWxsFDaHAUwGu0g=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"r4e9w2rdcm","Integrity":"Nfjrc4Ur9Fv2oBEswQWIyBnNDP99q\u002BLhL\u002Bz9553O0cY=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.css.map","FileLength":267535,"LastWriteTime":"2026-05-20T13:00:28.7471362+00:00"},"I4pM727TacYD1RDXN0wzY1zglsMaABlr19WVkApraeA=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"lcd1t2u6c8","Integrity":"KyE9xbKO9CuYx0HXpIKgsWIvXkAfITtiQ172j26wmRs=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.min.css","FileLength":85352,"LastWriteTime":"2026-05-20T13:00:28.7512991+00:00"},"q4hWoO1ud\u002BwqFwmCG1nzekXs8nQ7QQMO9l3OKCx3XQo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"c2oey78nd0","Integrity":"rHDmip4JZzuaGOcSQ1QSQrIbG0Eb3Zja9whqSF1zYIU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.min.css.map","FileLength":180381,"LastWriteTime":"2026-05-20T13:00:28.7732126+00:00"},"M6YvTp/SYon85swfQmM8j\u002BpvvhMDCpXhh\u002BS\u002B62d/V8A=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"tdbxkamptv","Integrity":"H6wkBbSwjua2veJoThJo4uy161jp\u002BDOiZTloUlcZ6qQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.css","FileLength":107691,"LastWriteTime":"2026-05-20T13:00:28.7732126+00:00"},"xmR8fiTLL43ux/I8xI3x9qDZOQjmbEpSVczpZKX/o\u002BU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"j5mq2jizvt","Integrity":"p0BVq5Ve/dohBIdfbrZsoQNu02JSsKh1g0wbyiQiUaU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.css.map","FileLength":267476,"LastWriteTime":"2026-05-20T13:00:28.7732126+00:00"},"rPWN7AcG4RCNgoc7gqqe5bzu2fZeRHANU4G5mRmf4X4=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"06098lyss8","Integrity":"GAUum6FjwQ8HrXGaoFRnHTqQQLpljXGavT7mBX8E9qU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.min.css","FileLength":85281,"LastWriteTime":"2026-05-20T13:00:28.788869+00:00"},"4YEeh/h12kH0FUGdt8/sHDJmg4zYunaXhfW6POiKYQg=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"nvvlpmu67g","Integrity":"o8XK32mcY/FfcOQ1D2HJvVuZ0YTXSURZDLXCK0fnQeA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.min.css.map","FileLength":180217,"LastWriteTime":"2026-05-20T13:00:28.7962157+00:00"},"I/B2gPx/d6O7VA7kVp3syVfL8hMvYHhkflGDSPirAUY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"s35ty4nyc5","Integrity":"GKEF18s44B5e0MolXAkpkqLiEbOVlKf6VyYr/G/E6pw=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.css","FileLength":281046,"LastWriteTime":"2026-05-20T13:00:28.8211312+00:00"},"zJOxsbpIjQOhSWamGE9OKGXBGWjYSnpjnXmsdC56bzo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"pj5nd1wqec","Integrity":"KzNVR3p7UZGba94dnCtlc6jXjK5urSPiZ/eNnKTmDkw=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.css.map","FileLength":679755,"LastWriteTime":"2026-05-20T13:00:28.8211312+00:00"},"6MXGnBspymDhNbACXBV1es99mw15UCxkoq0pSEcWwck=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"46ein0sx1k","Integrity":"PI8n5gCcz9cQqQXm3PEtDuPG8qx9oFsFctPg0S5zb8g=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.min.css","FileLength":232803,"LastWriteTime":"2026-05-20T13:00:28.8544118+00:00"},"vwqCCdlnynihoratP5HTjoE6JShLlWi4O5KC5cFdw2s=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"v0zj4ognzu","Integrity":"8SM4U2NQpCLGTQLW5D/x3qSTwxVq2CP\u002BGXYc3V1WwFs=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.min.css.map","FileLength":589892,"LastWriteTime":"2026-05-20T13:00:28.8640202+00:00"},"ScQoTm373N8A9VaM33H8osIAb0hMiQB3cU1gvaxCLMg=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.rtl#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"37tfw0ft22","Integrity":"j5E4XIj1p1kNnDi0x1teX9RXoh1/FNlPvCML9YmRh2Q=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.css","FileLength":280259,"LastWriteTime":"2026-05-20T13:00:28.886874+00:00"},"5Wb9KEGOvI68lY1zg533rWI/3u1c2pizlvhvFBW\u002BT\u002BU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.rtl.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"hrwsygsryq","Integrity":"3bYWUiiVYMZfv2wq5JnXIsHlQKgSKs/VcRivgjgZ1ho=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.css.map","FileLength":679615,"LastWriteTime":"2026-05-20T13:00:28.8999809+00:00"},"crQzyJw61YMAO/5cQfffHdBTSXO4POIRR3UPwYueZfY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.rtl.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"pk9g2wxc8p","Integrity":"h5lE7Nm8SkeIpBHHYxN99spP3VuGFKl5NZgsocil7zk=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.min.css","FileLength":232911,"LastWriteTime":"2026-05-20T13:00:28.9171977+00:00"},"WA6BQ4K/xJ4kSdHf0dPt16vUqlYSHp\u002BquO1y\u002Br4idlU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.rtl.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"ft3s53vfgj","Integrity":"rTzXlnepcb/vgFAiB\u002BU7ODQAfOlJLfM3gY6IU7eIANk=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.min.css.map","FileLength":589087,"LastWriteTime":"2026-05-20T13:00:28.9171977+00:00"},"X\u002ByfyT2MuAWgf9UmpGLy/DJi6r3xLJ7R0fjn\u002BO3\u002BR\u002Bo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.bundle#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"6cfz1n2cew","Integrity":"mkoRoV24jV\u002BrCPWcHDR5awPx8VuzzJKN0ibhxZ9/WaM=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.js","FileLength":207819,"LastWriteTime":"2026-05-20T13:00:28.9496198+00:00"},"n\u002BDKXe9Y3zHWEn4UB/eNHQTMuhDctkV5BDSwuliCKYo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.bundle.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"6pdc2jztkx","Integrity":"Wq4aWW1rQdJ\u002B6oAgy1JQc9IBjHL9T3MKfXTBNqOv02c=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.js.map","FileLength":444579,"LastWriteTime":"2026-05-20T13:00:28.9496198+00:00"},"tUzryyDyISAnyr1e7ujmEglKl80GaEbNkw0uWsRegIM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.min.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.bundle.min#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"493y06b0oq","Integrity":"CDOy6cOibCWEdsRiZuaHf8dSGGJRYuBGC\u002BmjoJimHGw=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.min.js","FileLength":80721,"LastWriteTime":"2026-05-20T13:00:28.9630083+00:00"},"T1MNLl33nCZGSd4XbUBoRmZ1fyK\u002BBWsY0O4NHWiadQ0=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.min.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.bundle.min.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"iovd86k7lj","Integrity":"Xj4HYxZBQ7qqHKBwa2EAugRS\u002BRHWzpcTtI49vgezUSU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.min.js.map","FileLength":332090,"LastWriteTime":"2026-05-20T13:00:28.9858184+00:00"},"1GJdKBhQwxAongm2xWk7yLdbPyYKlYs\u002BByo/FSwa2Og=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.esm#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"vr1egmr9el","Integrity":"exiXZNJDwucXfuje3CbXPbuS6\u002BEry3z9sP\u002Bpgmvh8nA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.js","FileLength":135829,"LastWriteTime":"2026-05-20T13:00:28.9947916+00:00"},"QaD0ihDfiZcRw8Fa5XSqStAEkcFjb0xglTXrbeJN4a8=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.esm.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"kbrnm935zg","Integrity":"EPRLgpqWkahLxEn6CUjdM76RIYIw1xdHwTbeHssuj/4=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.js.map","FileLength":305438,"LastWriteTime":"2026-05-20T13:00:29.0026177+00:00"},"ajlLSJ\u002BIWKj8EKV35W1hH4reyjN9/r1Ch8e1dBNjBSw=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.min.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.esm.min#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"jj8uyg4cgr","Integrity":"QZdFT1ZNdly4rmgUBtXmXFS9BU1FTa\u002BsPe6h794sFRQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.min.js","FileLength":73935,"LastWriteTime":"2026-05-20T13:00:29.0106326+00:00"},"DcApRy4nhjlP662diHmukEKqYuyoe0KHyOxGVdr9PyM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.min.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.esm.min.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"y7v9cxd14o","Integrity":"Tsbv8z6VlNgVET8xvz/yLo/v5iJHTAj2J4hkhjP1rHM=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.min.js.map","FileLength":222455,"LastWriteTime":"2026-05-20T13:00:29.0165672+00:00"},"zl\u002BzcRoxnXPakxxXJN6l9VLMwGk\u002By/SQT8B0WSnZMvM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"notf2xhcfb","Integrity":"\u002BUW802wgVfnjaSbdwyHLlU7AVplb0WToOlvN1CnzIac=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.js","FileLength":145401,"LastWriteTime":"2026-05-20T13:00:29.0263236+00:00"},"DiVsG2cevQdVuEwxHL\u002BgPGxh9fRtM3xn1Ix89OU01l4=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"h1s4sie4z3","Integrity":"9Wr7Hxe8gCJDoIHh5xP29ldXvC3kN2GkifQj9c8vYx4=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.js.map","FileLength":306606,"LastWriteTime":"2026-05-20T13:00:29.0324073+00:00"},"UKin6fGxIhO8Gs7LkLmN4kuS0Kl9uZWqgc6x7t2/xf0=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.min.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.min#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"63fj8s7r0e","Integrity":"3gQJhtmj7YnV1fmtbVcnAV6eI4ws0Tr48bVZCThtCGQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.min.js","FileLength":60635,"LastWriteTime":"2026-05-20T13:00:29.0344119+00:00"},"ejq560JF7/oAnu6I4VFt5f2wcSlzaEHpYTqsRh06o9A=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.min.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.min.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"0j3bgjxly4","Integrity":"ZI01e/ns473GKvACG4McggJdxvFfFIw4xspwQiG8Ye4=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.min.js.map","FileLength":220561,"LastWriteTime":"2026-05-20T13:00:29.0441717+00:00"},"mVmHEtzmBWHAiYW83bThvmsAmJe7oQFzJayYA2a6PXk=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\favicon.svg","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"favicon#[.{fingerprint}]?.svg","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"c1x271fjrj","Integrity":"wM4nl2JSrFpWkKkZbbxY5MJFs8LW1lv3lvltPn9fy3g=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\favicon.svg","FileLength":1138,"LastWriteTime":"2026-05-21T13:43:16.4498124+00:00"},"t8/S/iqD\u002BWOqoqxZIUWy\u002B0CcyTxhFe\u002B2vqS6syOPh/g=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\favicon.png","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"favicon#[.{fingerprint}]?.png","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"g5dz11g438","Integrity":"VHI6wtx09cZx75cKj/yP4Y6/hI0/\u002BbNsMdMfq7R\u002BVgQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\favicon.png","FileLength":4237,"LastWriteTime":"2026-05-22T06:57:55.920896+00:00"}},"CachedCopyCandidates":{}}
\ No newline at end of file
diff --git a/obj/Debug/net10.0/timetracker.AssemblyInfo.cs b/obj/Debug/net10.0/timetracker.AssemblyInfo.cs
index 0830129..2142c9d 100644
--- a/obj/Debug/net10.0/timetracker.AssemblyInfo.cs
+++ b/obj/Debug/net10.0/timetracker.AssemblyInfo.cs
@@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("timetracker")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0467f450368a3b05b63a5d2a2cc8779571042711")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+64c5f6aa2c77c868467dca487ae6b581bca6862d")]
[assembly: System.Reflection.AssemblyProductAttribute("timetracker")]
[assembly: System.Reflection.AssemblyTitleAttribute("timetracker")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
diff --git a/obj/Debug/net10.0/timetracker.AssemblyInfoInputs.cache b/obj/Debug/net10.0/timetracker.AssemblyInfoInputs.cache
index 3552a3b..905ac0b 100644
--- a/obj/Debug/net10.0/timetracker.AssemblyInfoInputs.cache
+++ b/obj/Debug/net10.0/timetracker.AssemblyInfoInputs.cache
@@ -1 +1 @@
-d82bd1af2676da228608191aea963cac3166fa85ba461e9bcfa8554e5f0bdffb
+452eedcfc45da63be9bf8c68bebf3387bcd4a96ecf3b483a73c4affbb5b93b4e
diff --git a/obj/Debug/net10.0/timetracker.GeneratedMSBuildEditorConfig.editorconfig b/obj/Debug/net10.0/timetracker.GeneratedMSBuildEditorConfig.editorconfig
index b321f1b..46249c9 100644
--- a/obj/Debug/net10.0/timetracker.GeneratedMSBuildEditorConfig.editorconfig
+++ b/obj/Debug/net10.0/timetracker.GeneratedMSBuildEditorConfig.editorconfig
@@ -50,6 +50,10 @@ build_metadata.AdditionalFiles.CssScope =
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xIb21lLnJhem9y
build_metadata.AdditionalFiles.CssScope =
+[C:/DEVQPDC_MW/Uni/Timetracker/timetracker/Components/Pages/Login.razor]
+build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xMb2dpbi5yYXpvcg==
+build_metadata.AdditionalFiles.CssScope =
+
[C:/DEVQPDC_MW/Uni/Timetracker/timetracker/Components/Pages/Month.razor]
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xNb250aC5yYXpvcg==
build_metadata.AdditionalFiles.CssScope =
@@ -66,6 +70,10 @@ build_metadata.AdditionalFiles.CssScope =
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xVcmxhdWJzTWF4aW1pemVyLnJhem9y
build_metadata.AdditionalFiles.CssScope =
+[C:/DEVQPDC_MW/Uni/Timetracker/timetracker/Components/RedirectToLogin.razor]
+build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xSZWRpcmVjdFRvTG9naW4ucmF6b3I=
+build_metadata.AdditionalFiles.CssScope =
+
[C:/DEVQPDC_MW/Uni/Timetracker/timetracker/Components/Routes.razor]
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xSb3V0ZXMucmF6b3I=
build_metadata.AdditionalFiles.CssScope =
diff --git a/obj/Debug/net10.0/timetracker.csproj.CoreCompileInputs.cache b/obj/Debug/net10.0/timetracker.csproj.CoreCompileInputs.cache
index d6d2c35..1f50e09 100644
--- a/obj/Debug/net10.0/timetracker.csproj.CoreCompileInputs.cache
+++ b/obj/Debug/net10.0/timetracker.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
-ec4c252fd2023b232a1f6088ccec5cbdd1025e488be8a7c43e01c6aa2c479e89
+73be10256eedd125d5f8f4d2e9dd0d1388a3fccf5758d7c2e52426f3812e17fd
diff --git a/obj/Debug/net10.0/timetracker.dll b/obj/Debug/net10.0/timetracker.dll
index 1fd16a1..3c0f2bc 100644
Binary files a/obj/Debug/net10.0/timetracker.dll and b/obj/Debug/net10.0/timetracker.dll differ
diff --git a/obj/Debug/net10.0/timetracker.pdb b/obj/Debug/net10.0/timetracker.pdb
index cc020f8..c05e4bd 100644
Binary files a/obj/Debug/net10.0/timetracker.pdb and b/obj/Debug/net10.0/timetracker.pdb differ
diff --git a/timetracker.db b/timetracker.db
index 44a67dc..e607692 100644
Binary files a/timetracker.db and b/timetracker.db differ
diff --git a/timetracker.db-shm b/timetracker.db-shm
new file mode 100644
index 0000000..3ea5acc
Binary files /dev/null and b/timetracker.db-shm differ
diff --git a/timetracker.db-wal b/timetracker.db-wal
new file mode 100644
index 0000000..4cde839
Binary files /dev/null and b/timetracker.db-wal differ