diff --git a/Geesemon.DataAccess.Dapper/Extensions/ServiceCollectionExtensions.cs b/Geesemon.DataAccess.Dapper/Extensions/ServiceCollectionExtensions.cs index 72f4bfc..96f935e 100644 --- a/Geesemon.DataAccess.Dapper/Extensions/ServiceCollectionExtensions.cs +++ b/Geesemon.DataAccess.Dapper/Extensions/ServiceCollectionExtensions.cs @@ -16,7 +16,7 @@ public static IServiceCollection AddDapperServices(this IServiceCollection servi private static IServiceCollection AddProviders(this IServiceCollection services) { - services.AddScoped(); + services.AddSingleton(); return services; diff --git a/Geesemon.DataAccess.Dapper/Providers/BaseProvider.cs b/Geesemon.DataAccess.Dapper/Providers/BaseProvider.cs index dcad5a6..31f7bd1 100644 --- a/Geesemon.DataAccess.Dapper/Providers/BaseProvider.cs +++ b/Geesemon.DataAccess.Dapper/Providers/BaseProvider.cs @@ -1,6 +1,7 @@ using Dapper; using Geesemon.Model.Common; +using Geesemon.Model.Models; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; @@ -18,19 +19,19 @@ public BaseProvider(DapperConnection dapperConnection) this.dapperConnection = dapperConnection; } - public async Task CreateAsync(T entity) + public async Task CreateAsync(T entity) { using var connection = dapperConnection.Open(); int rowsEffected = 0; var tableName = GetTableName(); - var columns = GetColumns(excludeKey: true); - var properties = GetPropertyNames(excludeKey: true); + var columns = GetColumns(); + var properties = GetPropertyNames(); var query = $"INSERT INTO {tableName} ({columns}) VALUES ({properties})"; rowsEffected = await connection.ExecuteAsync(query, entity); - return rowsEffected > 0 ? true : false; + return rowsEffected > 0 ? entity : throw new Exception($"Failed to create {nameof(T)} entity in database."); } public async Task RemoveAsync(T entity) @@ -77,7 +78,32 @@ public async Task GetByIdAsync(Guid Id) return result.FirstOrDefault(); } - public async Task UpdateAsync(T entity) + public async Task> GetByIdsAsync(Guid[] Ids) + { + if (Ids.Length == 0) + return Enumerable.Empty(); + + using var connection = dapperConnection.Open(); + IEnumerable result = null; + + var tableName = GetTableName(); + var keyColumn = GetKeyColumnName(); + + var whereParts = Ids.Select(id => $"{keyColumn} = '{id}'"); + + var query = $"SELECT * FROM {tableName} WHERE " + string.Join(" OR ", whereParts); + + result = await connection.QueryAsync(query); + + return result; + } + + public Task> GetByIdsAsync(IEnumerable Ids) + { + return GetByIdsAsync(Ids.ToArray()); + } + + public async Task UpdateAsync(T entity) { using var connection = dapperConnection.Open(); int rowsEffected = 0; @@ -106,7 +132,7 @@ public async Task UpdateAsync(T entity) rowsEffected = await connection.ExecuteAsync(query.ToString(), entity); - return rowsEffected > 0 ? true : false; + return rowsEffected > 0 ? entity : throw new Exception($"Failed to create {nameof(T)} entity in database."); } protected string GetTableName() @@ -125,11 +151,11 @@ protected string GetColumns(bool excludeKey = false) { var type = typeof(T); var columns = string.Join(", ", type.GetProperties() - .Where(p => !excludeKey || !p.IsDefined(typeof(KeyAttribute))) + .Where(p => !p.IsDefined(typeof(NotMappedAttribute)) && !p.IsDefined(typeof(DapperNotMappedAttribute)) && (!excludeKey || !p.IsDefined(typeof(KeyAttribute)))) .Select(p => { var columnAttr = p.GetCustomAttribute(); - return columnAttr != null ? columnAttr.Name : p.Name; + return columnAttr != null ? GetTableName() + '.' + columnAttr.Name : p.Name; })); return columns; @@ -138,7 +164,7 @@ protected string GetColumns(bool excludeKey = false) protected string GetPropertyNames(bool excludeKey = false) { var properties = typeof(T).GetProperties() - .Where(p => !excludeKey || p.GetCustomAttribute() == null); + .Where(p => !p.IsDefined(typeof(NotMappedAttribute)) && !p.IsDefined(typeof(DapperNotMappedAttribute)) && (!excludeKey || p.GetCustomAttribute() == null)); var values = string.Join(", ", properties.Select(p => { @@ -151,7 +177,7 @@ protected string GetPropertyNames(bool excludeKey = false) protected IEnumerable GetProperties(bool excludeKey = false) { var properties = typeof(T).GetProperties() - .Where(p => !excludeKey || p.GetCustomAttribute() == null); + .Where(p => !p.IsDefined(typeof(NotMappedAttribute)) && !p.IsDefined(typeof(DapperNotMappedAttribute)) && (!excludeKey || p.GetCustomAttribute() == null)); return properties; } @@ -194,12 +220,5 @@ protected static string GetKeyColumnName() return null; } - - protected static string GetColumnName(PropertyInfo property) - { - var columnAttr = property.GetCustomAttribute(); - - return columnAttr != null ? columnAttr.Name : property.Name; - } } diff --git a/Geesemon.DataAccess.Dapper/Providers/UserProvider.cs b/Geesemon.DataAccess.Dapper/Providers/UserProvider.cs index 773c9cf..9d8f17f 100644 --- a/Geesemon.DataAccess.Dapper/Providers/UserProvider.cs +++ b/Geesemon.DataAccess.Dapper/Providers/UserProvider.cs @@ -12,7 +12,6 @@ public UserProvider(DapperConnection dapperConnection) public async Task> GetAsync(int take, int skip, string searchQuery, Guid? currentUserId = null) { using var connection = dapperConnection.Open(); - IEnumerable result = null; var tableName = GetTableName(); var query = @@ -22,7 +21,81 @@ public async Task> GetAsync(int take, int skip, string searchQuery, G OFFSET @skip ROWS FETCH NEXT @take ROWS ONLY;"; - result = await connection.QueryAsync(query, new { take, skip, searchQuery, currentUserId }); + var result = await connection.QueryAsync(query, new { take, skip, searchQuery, currentUserId }); + + return result.ToList(); + } + + public async Task GetByIdentifierAsync(string identifier) + { + using var connection = dapperConnection.Open(); + + var tableName = GetTableName(); + var query = $"SELECT * FROM {tableName} WHERE Identifier = @identifier"; + + return await connection.QuerySingleOrDefaultAsync(query, new { identifier }); + } + + public async Task GetByEmailAsync(string email) + { + using var connection = dapperConnection.Open(); + + var tableName = GetTableName(); + var query = $"SELECT * FROM {tableName} WHERE Identifier = @email"; + + return await connection.QuerySingleOrDefaultAsync(query, new { email }); + } + + public async Task> GetReadByAsync(Guid messageId, int skip, int take) + { + using var connection = dapperConnection.Open(); + + var tableName = GetTableName(); + var columns = GetColumns(); + var query = + $@"SELECT {columns}, ReadMessages.[CreatedAt] FROM ReadMessages + INNER JOIN {tableName} + ON {tableName}.Id = ReadMessages.ReadById + WHERE(MessageId = @messageId) + ORDER BY ReadMessages.[CreatedAt] desc + OFFSET @skip ROWS + FETCH NEXT @take ROWS ONLY;"; + + var result = await connection.QueryAsync(query, new { take, skip, messageId }); + + return result.ToList(); + } + + public async Task GetReadByCountByAsync(Guid messageId) + { + using var connection = dapperConnection.Open(); + + var tableName = GetTableName(); + var query = + $@"SELECT COUNT(*) FROM ReadMessages + INNER JOIN {tableName} + ON {tableName}.Id = ReadMessages.ReadById + WHERE(MessageId = @messageId)"; + + var result = await connection.ExecuteScalarAsync(query, new { messageId }); + + return result; + } + + public async Task> GetAsync(Guid chatId) + { + using var connection = dapperConnection.Open(); + + var tableName = GetTableName(); + var columns = GetColumns(); + var query = + $@"SELECT {columns} FROM UserChats + INNER JOIN {tableName} + ON {tableName}.Id = UserChats.UserId + WHERE(ChatId = @chatId) + "; + + var result = await connection.QueryAsync(query, new { chatId }); return result.ToList(); } diff --git a/Geesemon.DataAccess/AppDbContext.cs b/Geesemon.DataAccess/AppDbContext.cs index 310aa37..62f229d 100644 --- a/Geesemon.DataAccess/AppDbContext.cs +++ b/Geesemon.DataAccess/AppDbContext.cs @@ -58,13 +58,13 @@ private void InitEntities() if (entity is Chat) { var chat = (Chat)entity; - chat.ImageColor = colors[rnd.Next(0, colors.Count - 1)]; + chat.ImageColor = ColorGenerator.GetRandomColor(); } if (entity is User) { var user = (User)entity; - user.AvatarColor = colors[rnd.Next(0, colors.Count - 1)]; + user.AvatarColor = ColorGenerator.GetRandomColor(); } } } diff --git a/Geesemon.DataAccess/Extensions/ServiceCollectionExtensions.cs b/Geesemon.DataAccess/Extensions/ServiceCollectionExtensions.cs index cf1f486..4ce7ebc 100644 --- a/Geesemon.DataAccess/Extensions/ServiceCollectionExtensions.cs +++ b/Geesemon.DataAccess/Extensions/ServiceCollectionExtensions.cs @@ -1,4 +1,5 @@ using Geesemon.DataAccess.Managers; + using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; @@ -12,7 +13,6 @@ public static IServiceCollection AddMsSql(this IServiceCollection services, stri options.UseSqlServer(connectionString ?? AppDbContext.DefaultConnectionString, b => b.MigrationsAssembly("Geesemon.DataAccess")); }); - services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); diff --git a/Geesemon.DataAccess/Managers/UserManager.cs b/Geesemon.DataAccess/Managers/UserManager.cs index e466a10..4849b35 100644 --- a/Geesemon.DataAccess/Managers/UserManager.cs +++ b/Geesemon.DataAccess/Managers/UserManager.cs @@ -1,13 +1,9 @@ -using Geesemon.DataAccess.Providers.UserProvider; -using Geesemon.Model.Enums; -using Geesemon.Model.Models; - -namespace Geesemon.DataAccess.Managers +namespace Geesemon.DataAccess.Managers { - public class UserManager : UserProvider, IManager - { - public UserManager(AppDbContext appContext) - : base(appContext) - { } - } + //public class UserManager : UserProvider, IManager + //{ + // public UserManager(AppDbContext appContext) + // : base(appContext) + // { } + //} } diff --git a/Geesemon.DataAccess/Providers/UserProvider/UserProvider.cs b/Geesemon.DataAccess/Providers/UserProvider/UserProvider.cs index 497c0ab..85029fe 100644 --- a/Geesemon.DataAccess/Providers/UserProvider/UserProvider.cs +++ b/Geesemon.DataAccess/Providers/UserProvider/UserProvider.cs @@ -1,67 +1,67 @@ -using Geesemon.Model.Models; +//using Geesemon.Model.Models; -using Microsoft.EntityFrameworkCore; +//using Microsoft.EntityFrameworkCore; -using System.Linq.Expressions; +//using System.Linq.Expressions; -namespace Geesemon.DataAccess.Providers.UserProvider -{ - public class UserProvider : ProviderBase - { +//namespace Geesemon.DataAccess.Providers.UserProvider +//{ +// public class UserProvider : ProviderBase +// { - public UserProvider(AppDbContext appDbContext) - : base(appDbContext) - { - } +// public UserProvider(AppDbContext appDbContext) +// : base(appDbContext) +// { +// } - public Task> GetReadByAsync(Guid messageId, int skip, int take) - { - return context.ReadMessages - .Include(rm => rm.ReadBy) - .Where(rm => rm.MessageId == messageId) - .OrderByDescending(rm => rm.CreatedAt) - .Skip(skip) - .Take(take) - .Select(rm => rm.ReadBy) - .ToListAsync(); - } +// public Task> GetReadByAsync(Guid messageId, int skip, int take) +// { +// return context.ReadMessages +// .Include(rm => rm.ReadBy) +// .Where(rm => rm.MessageId == messageId) +// .OrderByDescending(rm => rm.CreatedAt) +// .Skip(skip) +// .Take(take) +// .Select(rm => rm.ReadBy) +// .ToListAsync(); +// } - public Task GetReadByCountByAsync(Guid messageId) - { - return context.ReadMessages - .CountAsync(rm => rm.MessageId == messageId); - } +// public Task GetReadByCountByAsync(Guid messageId) +// { +// return context.ReadMessages +// .CountAsync(rm => rm.MessageId == messageId); +// } - public virtual Task GetByIdentifierAsync(string identifier, params Expression>[] includes) - { - return includes.Aggregate(context.Users.AsQueryable(), - (current, include) => current.Include(include)) - .FirstOrDefaultAsync(e => e.Identifier == identifier); - } +// public virtual Task GetByIdentifierAsync(string identifier, params Expression>[] includes) +// { +// return includes.Aggregate(context.Users.AsQueryable(), +// (current, include) => current.Include(include)) +// .FirstOrDefaultAsync(e => e.Identifier == identifier); +// } - public virtual Task GetByEmailAsync(string email, params Expression>[] includes) - { - return includes.Aggregate(context.Users.AsQueryable(), - (current, include) => current.Include(include)) - .FirstOrDefaultAsync(e => e.Email == email); - } +// public virtual Task GetByEmailAsync(string email, params Expression>[] includes) +// { +// return includes.Aggregate(context.Users.AsQueryable(), +// (current, include) => current.Include(include)) +// .FirstOrDefaultAsync(e => e.Email == email); +// } - public Task> GetAsync(Guid chatId) - { - return context.Users.Include(c => c.UserChats) - .Where(c => c.UserChats.Any(uc => uc.ChatId == chatId)) - .ToListAsync(); - } +// public Task> GetAsync(Guid chatId) +// { +// return context.Users.Include(c => c.UserChats) +// .Where(c => c.UserChats.Any(uc => uc.ChatId == chatId)) +// .ToListAsync(); +// } - public Task> GetAsync(int take, int skip, string q, Guid? currentUserId = null) - { - return context.Users - .Where(u => (u.Identifier.Contains(q) || (u.Email != null && u.Email.Contains(q))) && u.Id != currentUserId) - .OrderBy(u => u.FirstName) - .ThenBy(u => u.LastName) - .Skip(skip) - .Take(take) - .ToListAsync(); - } - } -} +// public Task> GetAsync(int take, int skip, string q, Guid? currentUserId = null) +// { +// return context.Users +// .Where(u => (u.Identifier.Contains(q) || (u.Email != null && u.Email.Contains(q))) && u.Id != currentUserId) +// .OrderBy(u => u.FirstName) +// .ThenBy(u => u.LastName) +// .Skip(skip) +// .Take(take) +// .ToListAsync(); +// } +// } +//} diff --git a/Geesemon.Model/Common/ColorGenerator.cs b/Geesemon.Model/Common/ColorGenerator.cs new file mode 100644 index 0000000..1bfe57d --- /dev/null +++ b/Geesemon.Model/Common/ColorGenerator.cs @@ -0,0 +1,19 @@ +namespace Geesemon.Model.Common; +public static class ColorGenerator +{ + public static string GetRandomColor() + { + var rnd = new Random(); + + return colors[rnd.Next(0, colors.Count - 1)]; + } + + + public static readonly List colors = new List() + { + "#1abc9c", "#2ecc71", "#3498db", "#9b59b6", + "#16a085", "#27ae60", "#2980b9", "#8e44ad", + "#f1c40f", "#e67e22", "#e74c3c", "#f39c12", + "#d35400", "#c0392b", "#6ab04c", "#be2edd", + }; +} diff --git a/Geesemon.Model/Common/Entity.cs b/Geesemon.Model/Common/Entity.cs index 8667f25..e57c796 100644 --- a/Geesemon.Model/Common/Entity.cs +++ b/Geesemon.Model/Common/Entity.cs @@ -7,11 +7,11 @@ public abstract class Entity { [Key] [Column("Id")] - public Guid Id { get; set; } + public Guid Id { get; set; } = Guid.NewGuid(); - private DateTime createdAt; + private DateTime createdAt = DateTime.UtcNow; - private DateTime updatedAt; + private DateTime updatedAt = DateTime.UtcNow; [Column("CreatedAt")] public DateTime CreatedAt { get => DateTime.SpecifyKind(createdAt, DateTimeKind.Utc); set => createdAt = value; } diff --git a/Geesemon.Model/Models/Chat.cs b/Geesemon.Model/Models/Chat.cs index a265f76..ac58156 100644 --- a/Geesemon.Model/Models/Chat.cs +++ b/Geesemon.Model/Models/Chat.cs @@ -1,5 +1,6 @@ using Geesemon.Model.Common; using Geesemon.Model.Enums; + using System.ComponentModel.DataAnnotations.Schema; namespace Geesemon.Model.Models; @@ -21,8 +22,8 @@ public class Chat : Entity [NotMapped] public int NotReadMessagesCount { get; set; } - public Guid? CreatorId { get; set; } - public User? Creator { get; set; } + public Guid CreatorId { get; set; } + public User Creator { get; set; } public List? Messages { get; set; } diff --git a/Geesemon.Model/Models/Session.cs b/Geesemon.Model/Models/Session.cs index 5279334..8cf837c 100644 --- a/Geesemon.Model/Models/Session.cs +++ b/Geesemon.Model/Models/Session.cs @@ -5,7 +5,7 @@ public class Session : Entity { public string Token { get; set; } public bool IsOnline { get; set; } - public DateTime LastTimeOnline { get; set; } + public DateTime LastTimeOnline { get; set; } = DateTime.UtcNow; public string IpAddress { get; set; } public string UserAgent { get; set; } public string Location { get; set; } diff --git a/Geesemon.Model/Models/User.cs b/Geesemon.Model/Models/User.cs index 4150ca5..20fb5c1 100644 --- a/Geesemon.Model/Models/User.cs +++ b/Geesemon.Model/Models/User.cs @@ -47,19 +47,28 @@ public class User : Entity public string? ImageUrl { get; set; } [Column("AvatarColor")] - public string AvatarColor { get; set; } = "#000000"; + public string AvatarColor { get; set; } = ColorGenerator.GetRandomColor(); [NotMapped] - public DateTime LastTimeOnline { get; set; } + public DateTime LastTimeOnline { get; set; } = DateTime.UtcNow; [NotMapped] public bool IsOnline { get; set; } + [DapperNotMapped] public List? Messages { get; set; } + [DapperNotMapped] public List? AuthoredChats { get; set; } + [DapperNotMapped] public List? UserChats { get; set; } + + [DapperNotMapped] public List? Sessions { get; set; } + + [DapperNotMapped] public List? ReadMessages { get; set; } } + +public class DapperNotMappedAttribute : Attribute; diff --git a/Geesemon.Web/Extensions/ChatExtensions.cs b/Geesemon.Web/Extensions/ChatExtensions.cs index 4f4d131..062740c 100644 --- a/Geesemon.Web/Extensions/ChatExtensions.cs +++ b/Geesemon.Web/Extensions/ChatExtensions.cs @@ -1,4 +1,5 @@ -using Geesemon.DataAccess.Managers; +using Geesemon.DataAccess.Dapper.Providers; +using Geesemon.DataAccess.Managers; using Geesemon.Model.Enums; using Geesemon.Model.Models; @@ -9,19 +10,19 @@ public static class ChatExtensions public static async Task MapForUserAsync(this Chat chat, Guid currentUserId, IServiceProvider serviceProvider) { using var scope = serviceProvider.CreateScope(); - var userManager = scope.ServiceProvider.GetRequiredService(); var messageManager = scope.ServiceProvider.GetRequiredService(); + var userProvider = scope.ServiceProvider.GetRequiredService(); switch (chat.Type) { case ChatKind.Personal: - var oppositeUser = await userManager.GetByIdAsync(chat.UserChats.FirstOrDefault(uc => uc.UserId != currentUserId).UserId); + var oppositeUser = await userProvider.GetByIdAsync(chat.UserChats.FirstOrDefault(uc => uc.UserId != currentUserId).UserId); chat.Name = oppositeUser.FullName; chat.Identifier = oppositeUser.Identifier; chat.ImageColor = oppositeUser.AvatarColor; chat.ImageUrl = oppositeUser.ImageUrl; break; case ChatKind.Saved: - var user = await userManager.GetByIdAsync(chat.CreatorId); + var user = await userProvider.GetByIdAsync(chat.CreatorId); chat.Name = "Saved Messages"; chat.Identifier = user.Identifier; chat.ImageColor = user.AvatarColor; @@ -31,7 +32,7 @@ public static async Task MapForUserAsync(this Chat chat, Guid currentUserI chat.NotReadMessagesCount = await messageManager.GetNotReadMessagesCount(chat.Id, currentUserId); return chat; } - + public static Chat MapWithUser(this Chat chat, User user, ChatKind chatKind) { chat.Name = chatKind == ChatKind.Saved ? "Saved Messages" : user.FullName; @@ -39,9 +40,10 @@ public static Chat MapWithUser(this Chat chat, User user, ChatKind chatKind) chat.ImageColor = user.AvatarColor; chat.ImageUrl = user.ImageUrl; chat.Type = chatKind; + chat.Id = Guid.Empty; return chat; } - + public static async Task> MapForUserAsync(this IEnumerable chats, Guid currentUserId, IServiceProvider serviceProvider) { await Parallel.ForEachAsync(chats, async (chat, token) => diff --git a/Geesemon.Web/GraphQL/DataLoaders/UserLoader.cs b/Geesemon.Web/GraphQL/DataLoaders/UserLoader.cs index a655adb..809c13a 100644 --- a/Geesemon.Web/GraphQL/DataLoaders/UserLoader.cs +++ b/Geesemon.Web/GraphQL/DataLoaders/UserLoader.cs @@ -1,5 +1,4 @@ - -using Geesemon.DataAccess.Managers; +using Geesemon.DataAccess.Dapper.Providers; using Geesemon.Model.Models; using GraphQL.DataLoader; @@ -10,11 +9,13 @@ public class UserLoader { private readonly IDataLoaderContextAccessor loaderContextAccessor; private readonly IServiceProvider serviceProvider; + private readonly UserProvider userProvider; - public UserLoader(IDataLoaderContextAccessor loaderContextAccessor, IServiceProvider serviceProvider) + public UserLoader(IDataLoaderContextAccessor loaderContextAccessor, IServiceProvider serviceProvider, UserProvider userProvider) { this.loaderContextAccessor = loaderContextAccessor; this.serviceProvider = serviceProvider; + this.userProvider = userProvider; } public IDataLoaderResult Load(Guid userId) @@ -25,7 +26,7 @@ public IDataLoaderResult Load(Guid userId) private async Task> FetchAsync(IEnumerable ids) { using var scope = serviceProvider.CreateScope(); - var users = await scope.ServiceProvider.GetRequiredService().GetByIdsAsync(ids); + var users = await userProvider.GetByIdsAsync(ids); return users.ToDictionary(u => u.Id); } } diff --git a/Geesemon.Web/GraphQL/Mutations/AuthMutation.cs b/Geesemon.Web/GraphQL/Mutations/AuthMutation.cs index 0d974ba..490d388 100644 --- a/Geesemon.Web/GraphQL/Mutations/AuthMutation.cs +++ b/Geesemon.Web/GraphQL/Mutations/AuthMutation.cs @@ -1,19 +1,24 @@ using FluentValidation; + +using Geesemon.DataAccess.Dapper.Providers; using Geesemon.DataAccess.Managers; using Geesemon.Model.Enums; using Geesemon.Model.Models; using Geesemon.Web.Extensions; -using Geesemon.Web.Geesetext; using Geesemon.Web.GraphQL.Auth; using Geesemon.Web.GraphQL.Types; using Geesemon.Web.Services; using Geesemon.Web.Services.ChatActivitySubscription; using Geesemon.Web.Services.FileManagers; using Geesemon.Web.Services.LoginViaTokenSubscription; + using GraphQL; using GraphQL.Types; + using Microsoft.Net.Http.Headers; + using Newtonsoft.Json; + using System.Text; namespace Geesemon.Web.GraphQL.Mutations @@ -22,7 +27,7 @@ public class AuthMutation : ObjectGraphType { public AuthMutation( AuthService authService, - UserManager userManager, + UserProvider userProvider, SessionManager sessionManager, IFileManagerService fileManagerService, IHttpContextAccessor httpContextAccessor, @@ -41,18 +46,18 @@ ILoginViaTokenSubscriptionService loginViaTokenSubscriptionService var authRegisterInput = context.GetArgument("input"); authRegisterInputValidator.ValidateAndThrow(authRegisterInput); - var user = await userManager.GetByIdentifierAsync(authRegisterInput.Identifier); + var user = await userProvider.GetByIdentifierAsync(authRegisterInput.Identifier); if (user != null) throw new Exception($"User with login '{authRegisterInput.Identifier}' already exist."); - user = await userManager.GetByEmailAsync(authRegisterInput.Email); + user = await userProvider.GetByEmailAsync(authRegisterInput.Email); if (user != null) throw new Exception($"User with email '{authRegisterInput.Email}' already exist."); var userId = Guid.NewGuid(); var saltedPassword = authRegisterInput.Password + userId; - var newUser = await userManager.CreateAsync(new User + var newUser = await userProvider.CreateAsync(new User { Id = userId, Identifier = authRegisterInput.Identifier, @@ -86,7 +91,7 @@ ILoginViaTokenSubscriptionService loginViaTokenSubscriptionService var authLoginInput = context.GetArgument("input"); authLoginInputValidator.ValidateAndThrow(authLoginInput); - var user = await userManager.GetByIdentifierAsync(authLoginInput.Identifier); + var user = await userProvider.GetByIdentifierAsync(authLoginInput.Identifier); if (user == null) throw new Exception("Login or password not valid."); @@ -177,12 +182,12 @@ ILoginViaTokenSubscriptionService loginViaTokenSubscriptionService imageUrl = authUpdateProfile.ImageUrl; var currentUserId = httpContextAccessor.HttpContext.User.Claims.GetUserId(); - var currentUser = await userManager.GetByIdAsync(currentUserId); + var currentUser = await userProvider.GetByIdAsync(currentUserId); currentUser.FirstName = authUpdateProfile.Firstname; currentUser.LastName = authUpdateProfile.Lastname; currentUser.Identifier = authUpdateProfile.Identifier; currentUser.ImageUrl = imageUrl; - currentUser = await userManager.UpdateAsync(currentUser); + currentUser = await userProvider.UpdateAsync(currentUser); await chatActivitySubscriptionService.Notify(currentUser.Id); return currentUser; @@ -219,7 +224,7 @@ ILoginViaTokenSubscriptionService loginViaTokenSubscriptionService throw new ExecutionError("Token is not valid"); var identifier = httpContextAccessor.HttpContext.User.Claims.GetIdentifier(); - var user = await userManager.GetByIdentifierAsync(identifier); + var user = await userProvider.GetByIdentifierAsync(identifier); if (user == null) throw new Exception("User does not exists."); diff --git a/Geesemon.Web/GraphQL/Mutations/ChatMutation.cs b/Geesemon.Web/GraphQL/Mutations/ChatMutation.cs index 17ff8d7..530d721 100644 --- a/Geesemon.Web/GraphQL/Mutations/ChatMutation.cs +++ b/Geesemon.Web/GraphQL/Mutations/ChatMutation.cs @@ -1,4 +1,6 @@ using FluentValidation; + +using Geesemon.DataAccess.Dapper.Providers; using Geesemon.DataAccess.Managers; using Geesemon.Model.Enums; using Geesemon.Model.Models; @@ -8,9 +10,9 @@ using Geesemon.Web.Services.ChatActionsSubscription; using Geesemon.Web.Services.FileManagers; using Geesemon.Web.Services.MessageSubscription; + using GraphQL; using GraphQL.Types; -using static System.Net.Mime.MediaTypeNames; namespace Geesemon.Web.GraphQL.Mutations { @@ -23,7 +25,7 @@ public class ChatMutation : ObjectGraphType private readonly IChatMembersSubscriptionService chatMembersSubscriptionService; private readonly ChatManager chatManager; private readonly UserChatManager userChatManager; - private readonly UserManager userManager; + private readonly UserProvider userProvider; private readonly IServiceProvider serviceProvider; private readonly IValidator createGroupChatInputValidator; private readonly IValidator updateChatInputValidator; @@ -37,7 +39,7 @@ public ChatMutation( IChatMembersSubscriptionService chatMembersSubscriptionService, ChatManager chatManager, UserChatManager userChatManager, - UserManager userManager, + UserProvider userProvider, IServiceProvider serviceProvider, IValidator createGroupChatInputValidator, IValidator updateChatInputValidator, @@ -67,13 +69,13 @@ MessageManager messageManager .Argument("Input", "Chat input for updating chat.") .ResolveAsync(ResolveUpdate) .AuthorizeWith(AuthPolicies.Authenticated); - + Field>, IEnumerable>() .Name("AddMembers") .Argument, ChatsAddMembersInput>("Input", "") .ResolveAsync(ResolveAddMembers) .AuthorizeWith(AuthPolicies.Authenticated); - + Field>, IEnumerable>() .Name("RemoveMembers") .Argument, ChatsAddMembersInput>("Input", "") @@ -93,7 +95,7 @@ MessageManager messageManager this.chatMembersSubscriptionService = chatMembersSubscriptionService; this.chatManager = chatManager; this.userChatManager = userChatManager; - this.userManager = userManager; + this.userProvider = userProvider; this.serviceProvider = serviceProvider; this.createGroupChatInputValidator = createGroupChatInputValidator; this.updateChatInputValidator = updateChatInputValidator; @@ -109,7 +111,7 @@ MessageManager messageManager if (checkChat != null) throw new Exception("Personal chat already exists"); - var oppositeUser = await userManager.GetByIdentifierAsync(chatInp.Identifier); + var oppositeUser = await userProvider.GetByIdentifierAsync(chatInp.Identifier); var chat = new Chat { @@ -119,7 +121,7 @@ MessageManager messageManager chat = await chatManager.CreateAsync(chat); var userChat = new List - { + { new UserChat { UserId = currentUserId, ChatId = chat.Id }, }; if (oppositeUser.Id != currentUserId) @@ -135,7 +137,6 @@ MessageManager messageManager { var chatManager = context.RequestServices.GetRequiredService(); var userChatManager = context.RequestServices.GetRequiredService(); - var userManager = context.RequestServices.GetRequiredService(); var currentUserId = httpContextAccessor.HttpContext.User.Claims.GetUserId(); var currentUserIdentifier = httpContextAccessor.HttpContext.User.Claims.GetIdentifier(); var chatInput = context.GetArgument("Input"); @@ -213,14 +214,14 @@ private async Task ResolveDelete(IResolveFieldContext context) chat.ImageUrl = await fileManagerService.UploadFileAsync(FileManagerConstants.GroupImagesFolder, chatUpdateInput.Image); chat.Name = chatUpdateInput.Name; - chat.Identifier = chatUpdateInput.Identifier ; + chat.Identifier = chatUpdateInput.Identifier; await chatManager.UpdateAsync(chat); var userChats = await userChatManager.Get(chat.Id); chatActionSubscriptionService.Notify(chat, ChatActionKind.Update, userChats.Select(uc => uc.UserId)); return chat; } - + private async Task> ResolveAddMembers(IResolveFieldContext context) { var chatsAddMembersInput = context.GetArgument("Input"); @@ -236,14 +237,14 @@ private async Task> ResolveAddMembers(IResolveFieldContext con throw exception; var newUserChats = new List(); - foreach(var userId in chatsAddMembersInput.UserIds) + foreach (var userId in chatsAddMembersInput.UserIds) { - var user = await userManager.GetByIdAsync(userId); + var user = await userProvider.GetByIdAsync(userId); if (user == null) throw new ExecutionError($"User with id {user.Id} not found"); var userChat = await userChatManager.Get(chatsAddMembersInput.ChatId, userId); - if(userChat == null) + if (userChat == null) newUserChats.Add(new UserChat { ChatId = chatsAddMembersInput.ChatId, @@ -270,7 +271,7 @@ private async Task> ResolveAddMembers(IResolveFieldContext con } return newUserChats.Select(uc => uc.User); } - + private async Task> ResolveRemoveMembers(IResolveFieldContext context) { var chatsAddMembersInput = context.GetArgument("Input"); @@ -282,9 +283,9 @@ private async Task> ResolveRemoveMembers(IResolveFieldContext throw new Exception("User can update only group chats he own."); var removeUserChats = new List(); - foreach(var userId in chatsAddMembersInput.UserIds) + foreach (var userId in chatsAddMembersInput.UserIds) { - var user = await userManager.GetByIdAsync(userId); + var user = await userProvider.GetByIdAsync(userId); if (user == null) throw new ExecutionError($"User with id {user.Id} not found"); @@ -306,7 +307,7 @@ private async Task> ResolveRemoveMembers(IResolveFieldContext ChatId = chatsAddMembersInput.ChatId, Text = "RemovedFromChatMessage", Type = MessageKind.SystemGeeseText, - GeeseTextArguments = new[] { "@" + currentIdentifier, "@" + userChat.User.Identifier} + GeeseTextArguments = new[] { "@" + currentIdentifier, "@" + userChat.User.Identifier } }; newMessage = await messageManager.CreateAsync(newMessage); messageSubscriptionService.Notify(newMessage, MessageActionKind.Create); @@ -325,7 +326,7 @@ private async Task ResolveLeaveChat(IResolveFieldContext context) if (chat == null || !await chatManager.IsUserInChat(currentUserId, chat.Id) || chat.Type != ChatKind.Group) throw new Exception("User can leave only chats that he is in."); - chatActionSubscriptionService.Notify(chat, ChatActionKind.Delete, new List{ currentUserId }); + chatActionSubscriptionService.Notify(chat, ChatActionKind.Delete, new List { currentUserId }); var userChat = new UserChat() { ChatId = chat.Id, UserId = currentUserId }; diff --git a/Geesemon.Web/GraphQL/Queries/ChatQuery.cs b/Geesemon.Web/GraphQL/Queries/ChatQuery.cs index 893d3a1..83618dd 100644 --- a/Geesemon.Web/GraphQL/Queries/ChatQuery.cs +++ b/Geesemon.Web/GraphQL/Queries/ChatQuery.cs @@ -1,9 +1,11 @@ -using Geesemon.DataAccess.Managers; +using Geesemon.DataAccess.Dapper.Providers; +using Geesemon.DataAccess.Managers; using Geesemon.Model.Enums; using Geesemon.Model.Models; using Geesemon.Web.Extensions; using Geesemon.Web.GraphQL.Auth; using Geesemon.Web.GraphQL.Types; + using GraphQL; using GraphQL.Types; @@ -11,7 +13,7 @@ namespace Geesemon.Web.GraphQL.Queries { public class ChatQuery : ObjectGraphType { - public ChatQuery(IHttpContextAccessor httpContextAccessor, ChatManager chatManager, IServiceProvider serviceProvider, UserManager userManager) + public ChatQuery(IHttpContextAccessor httpContextAccessor, ChatManager chatManager, IServiceProvider serviceProvider, UserProvider userProvider) { Field>, IEnumerable>() .Name("Get") @@ -28,7 +30,7 @@ public ChatQuery(IHttpContextAccessor httpContextAccessor, ChatManager chatManag return chats; }) .AuthorizeWith(AuthPolicies.Authenticated); - + Field() .Name("GetByIdentifier") .Argument, string>("Identifier", "") @@ -38,9 +40,9 @@ public ChatQuery(IHttpContextAccessor httpContextAccessor, ChatManager chatManag var currentUserId = httpContextAccessor.HttpContext.User.Claims.GetUserId(); var currentIdentifier = httpContextAccessor.HttpContext.User.Claims.GetIdentifier(); var chat = await chatManager.GetByIdentifierAsync(identifier, currentUserId); - if(chat == null) + if (chat == null) { - var user = await userManager.GetByIdentifierAsync(identifier); + var user = await userProvider.GetByIdentifierAsync(identifier); if (user == null) return null; diff --git a/Geesemon.Web/GraphQL/Queries/UserQuery.cs b/Geesemon.Web/GraphQL/Queries/UserQuery.cs index c93b729..d69d02e 100644 --- a/Geesemon.Web/GraphQL/Queries/UserQuery.cs +++ b/Geesemon.Web/GraphQL/Queries/UserQuery.cs @@ -1,5 +1,4 @@ using Geesemon.DataAccess.Dapper.Providers; -using Geesemon.DataAccess.Managers; using Geesemon.Model.Models; using Geesemon.Web.GraphQL.Auth; using Geesemon.Web.GraphQL.Types; @@ -11,7 +10,7 @@ namespace Geesemon.Web.GraphQL.Queries { public class UserQuery : ObjectGraphType { - public UserQuery(UserManager userManager, IHttpContextAccessor httpContextAccessor, UserProvider userProvider) + public UserQuery(IHttpContextAccessor httpContextAccessor, UserProvider userProvider) { Field>, List>() .Name("Get") @@ -43,7 +42,7 @@ public UserQuery(UserManager userManager, IHttpContextAccessor httpContextAccess var skip = context.GetArgument("Skip"); var take = context.GetArgument("Take"); var messageId = context.GetArgument("MessageId"); - return await userManager.GetReadByAsync(messageId, skip, take ?? 30); + return await userProvider.GetReadByAsync(messageId, skip, take ?? 30); }) .AuthorizeWith(AuthPolicies.Authenticated); } diff --git a/Geesemon.Web/GraphQL/Types/Auth/AuthUpdateProfileType.cs b/Geesemon.Web/GraphQL/Types/Auth/AuthUpdateProfileType.cs index 5b3e834..f639adc 100644 --- a/Geesemon.Web/GraphQL/Types/Auth/AuthUpdateProfileType.cs +++ b/Geesemon.Web/GraphQL/Types/Auth/AuthUpdateProfileType.cs @@ -1,8 +1,10 @@ using FluentValidation; + +using Geesemon.DataAccess.Dapper.Providers; using Geesemon.DataAccess.Managers; + using GraphQL.Types; using GraphQL.Upload.AspNetCore; -using Microsoft.AspNetCore.Http; namespace Geesemon.Web.GraphQL.Types; @@ -14,7 +16,7 @@ public AuthUpdateProfileType() Field, string>() .Name("Firstname") .Resolve(context => context.Source.Firstname); - + Field() .Name("Lastname") .Resolve(context => context.Source.Lastname); @@ -22,11 +24,11 @@ public AuthUpdateProfileType() Field, string>() .Name("Identifier") .Resolve(context => context.Source.Identifier); - + Field() .Name("ImageUrl") .Resolve(context => context.Source.ImageUrl); - + Field() .Name("Image") .Resolve(context => context.Source.Image); @@ -44,16 +46,16 @@ public class AuthUpdateProfile public class AuthUpdateProfileValidator : AbstractValidator { - public AuthUpdateProfileValidator(IHttpContextAccessor httpContextAccessor, ChatManager chatManager, UserManager userManager) + public AuthUpdateProfileValidator(IHttpContextAccessor httpContextAccessor, ChatManager chatManager, UserProvider userProvider) { RuleFor(r => r.Firstname) .NotEmpty() .NotNull() .MaximumLength(100); - + RuleFor(r => r.Lastname) .MaximumLength(100); - + RuleFor(r => r.Identifier) .NotEmpty() .NotNull() @@ -62,7 +64,7 @@ public AuthUpdateProfileValidator(IHttpContextAccessor httpContextAccessor, Chat { var currentUserId = httpContextAccessor.HttpContext.User.Claims.GetUserId(); var chat = await chatManager.GetByIdentifierAsync(identifier); - var user = await userManager.GetByIdentifierAsync(identifier); + var user = await userProvider.GetByIdentifierAsync(identifier); return chat == null && (user == null || user.Id == currentUserId); }).WithMessage("Identifier already taken"); diff --git a/Geesemon.Web/GraphQL/Types/Chat/ChatType.cs b/Geesemon.Web/GraphQL/Types/Chat/ChatType.cs index 7d91220..5c74003 100644 --- a/Geesemon.Web/GraphQL/Types/Chat/ChatType.cs +++ b/Geesemon.Web/GraphQL/Types/Chat/ChatType.cs @@ -1,6 +1,8 @@ -using Geesemon.DataAccess.Managers; +using Geesemon.DataAccess.Dapper.Providers; +using Geesemon.DataAccess.Managers; using Geesemon.Model.Enums; using Geesemon.Model.Models; +using Geesemon.Web.Services.FileManagers; using GraphQL; using GraphQL.Types; @@ -9,7 +11,7 @@ namespace Geesemon.Web.GraphQL.Types { public class ChatType : EntityType { - public ChatType(IServiceProvider serviceProvider) + public ChatType(IServiceProvider serviceProvider, UserProvider userProvider, IFileManagerService fileManagerService) { Field, string>() .Name("Name") @@ -33,8 +35,7 @@ public ChatType(IServiceProvider serviceProvider) using var scope = serviceProvider.CreateScope(); var request = scope.ServiceProvider.GetRequiredService().HttpContext.Request; - var protocol = request.IsHttps ? "https" : "http"; - return $"{protocol}://{request.Host}{context.Source.ImageUrl}"; + return fileManagerService.FormatUrl(context.Source.ImageUrl); }); Field() @@ -84,8 +85,7 @@ public ChatType(IServiceProvider serviceProvider) return new List(); using var scope = serviceProvider.CreateScope(); - var userManager = scope.ServiceProvider.GetRequiredService(); - return await userManager.GetAsync(chatId); + return await userProvider.GetAsync(chatId); }); Field>, IList>() diff --git a/Geesemon.Web/GraphQL/Types/Chat/CreateGroupChatInputType.cs b/Geesemon.Web/GraphQL/Types/Chat/CreateGroupChatInputType.cs index c42b470..917fbdf 100644 --- a/Geesemon.Web/GraphQL/Types/Chat/CreateGroupChatInputType.cs +++ b/Geesemon.Web/GraphQL/Types/Chat/CreateGroupChatInputType.cs @@ -1,5 +1,8 @@ using FluentValidation; + +using Geesemon.DataAccess.Dapper.Providers; using Geesemon.DataAccess.Managers; + using GraphQL.Types; using GraphQL.Upload.AspNetCore; @@ -16,7 +19,7 @@ public CreateGroupChatInputType() Field, string>() .Name("Name") .Resolve(context => context.Source.Name); - + Field, string>() .Name("Identifier") .Resolve(context => context.Source.Identifier); @@ -37,15 +40,15 @@ public class CreateGroupChatInput public class CreateGroupChatInputValidation : AbstractValidator { - public CreateGroupChatInputValidation(ChatManager chatManager, UserManager userManager, IHttpContextAccessor httpContextAccessor) + public CreateGroupChatInputValidation(ChatManager chatManager, UserProvider userProvider, IHttpContextAccessor httpContextAccessor) { RuleFor(r => r.UsersId) .NotNull() .MustAsync(async (usersId, cancellation) => { - foreach(var userId in usersId) + foreach (var userId in usersId) { - var user = await userManager.GetByIdAsync(userId); + var user = await userProvider.GetByIdAsync(userId); if (user == null) return false; } @@ -56,7 +59,7 @@ public CreateGroupChatInputValidation(ChatManager chatManager, UserManager userM .NotEmpty() .NotNull() .MaximumLength(100); - + RuleFor(r => r.Identifier) .NotEmpty() .NotNull() diff --git a/Geesemon.Web/GraphQL/Types/Chat/UserChatType.cs b/Geesemon.Web/GraphQL/Types/Chat/UserChatType.cs index cc5b2aa..82ed37f 100644 --- a/Geesemon.Web/GraphQL/Types/Chat/UserChatType.cs +++ b/Geesemon.Web/GraphQL/Types/Chat/UserChatType.cs @@ -1,12 +1,14 @@ -using Geesemon.DataAccess.Managers; +using Geesemon.DataAccess.Dapper.Providers; +using Geesemon.DataAccess.Managers; using Geesemon.Model.Models; + using GraphQL.Types; namespace Geesemon.Web.GraphQL.Types { public class UserChatType : ObjectGraphType { - public UserChatType(IServiceProvider serviceProvider) + public UserChatType(IServiceProvider serviceProvider, UserProvider userProvider) { Field, Guid>() @@ -35,8 +37,7 @@ public UserChatType(IServiceProvider serviceProvider) if (context.Source.User != null) return context.Source.User; using var scope = serviceProvider.CreateScope(); - var userManager = scope.ServiceProvider.GetRequiredService(); - return await userManager.GetByIdAsync(context.Source.UserId); + return await userProvider.GetByIdAsync(context.Source.UserId); }); } } diff --git a/Geesemon.Web/GraphQL/Types/Message/MessageType.cs b/Geesemon.Web/GraphQL/Types/Message/MessageType.cs index 62c1212..fff7b98 100644 --- a/Geesemon.Web/GraphQL/Types/Message/MessageType.cs +++ b/Geesemon.Web/GraphQL/Types/Message/MessageType.cs @@ -1,4 +1,4 @@ -using Geesemon.DataAccess.Managers; +using Geesemon.DataAccess.Dapper.Providers; using Geesemon.Model.Common; using Geesemon.Model.Enums; using Geesemon.Model.Models; @@ -16,7 +16,8 @@ public MessageType( IServiceProvider serviceProvider, IFileManagerService fileManagerService, UserLoader userLoader, - MessageLoader messageLoader) + MessageLoader messageLoader, + UserProvider userProvider) { Field() .Name("Text") @@ -69,12 +70,11 @@ public MessageType( .ResolveAsync(async context => { using var scope = serviceProvider.CreateScope(); - var userManager = scope.ServiceProvider.GetRequiredService(); var skip = context.GetArgument("Skip"); var take = context.GetArgument("Take"); var messageId = context.Source.Id; - return await userManager.GetReadByAsync(messageId, skip, take ?? 30); ; + return await userProvider.GetReadByAsync(messageId, skip, take ?? 30); ; }); Field, int>() @@ -82,9 +82,8 @@ public MessageType( .ResolveAsync(async context => { using var scope = serviceProvider.CreateScope(); - var userManager = scope.ServiceProvider.GetRequiredService(); var messageId = context.Source.Id; - return await userManager.GetReadByCountByAsync(messageId); + return await userProvider.GetReadByCountByAsync(messageId); }); Field() diff --git a/Geesemon.Web/Services/ChatActivitySubscription/ChatActivitySubscriptionService.cs b/Geesemon.Web/Services/ChatActivitySubscription/ChatActivitySubscriptionService.cs index 908180d..ef66253 100644 --- a/Geesemon.Web/Services/ChatActivitySubscription/ChatActivitySubscriptionService.cs +++ b/Geesemon.Web/Services/ChatActivitySubscription/ChatActivitySubscriptionService.cs @@ -1,5 +1,7 @@ -using Geesemon.DataAccess.Managers; +using Geesemon.DataAccess.Dapper.Providers; +using Geesemon.DataAccess.Managers; using Geesemon.Model.Models; + using System.Reactive.Linq; using System.Reactive.Subjects; @@ -9,19 +11,20 @@ public class ChatActivitySubscriptionService : IChatActivitySubscriptionService { private readonly ISubject userChatActivityStream = new Subject(); private readonly IServiceProvider serviceProvider; + private readonly UserProvider userProvider; - public ChatActivitySubscriptionService(IServiceProvider serviceProvider) + public ChatActivitySubscriptionService(IServiceProvider serviceProvider, UserProvider userProvider) { this.serviceProvider = serviceProvider; + this.userProvider = userProvider; } public async Task Notify(Guid userId) { using var scope = serviceProvider.CreateScope(); var chatManager = scope.ServiceProvider.GetRequiredService(); - var userManager = scope.ServiceProvider.GetRequiredService(); var relatedToUserChats = await chatManager.GetAllForUserAsync(userId); - var user = await userManager.GetByIdAsync(userId); + var user = await userProvider.GetByIdAsync(userId); foreach (var chat in relatedToUserChats) { userChatActivityStream.OnNext(new UserChat diff --git a/Geesemon.Web/wwwroot/asset-manifest.json b/Geesemon.Web/wwwroot/asset-manifest.json index 4caac59..ccae767 100644 --- a/Geesemon.Web/wwwroot/asset-manifest.json +++ b/Geesemon.Web/wwwroot/asset-manifest.json @@ -1,7 +1,7 @@ { "files": { "main.css": "/static/css/main.d5bb6875.css", - "main.js": "/static/js/main.ef66e41e.js", + "main.js": "/static/js/main.28f2434e.js", "static/media/exit.svg": "/static/media/exit.f677459ab0bd060121fc5df5a1808023.svg", "static/media/settings.svg": "/static/media/settings.5ce75b923316447e65b4193b76a349b5.svg", "static/media/microphone.svg": "/static/media/microphone.0ee15e41889ee128084bfb787e311b3c.svg", @@ -40,10 +40,10 @@ "static/media/logout.svg": "/static/media/logout.a7631ed82996a1e1ee28481503244e15.svg", "static/media/threeDots.svg": "/static/media/threeDots.687e2c923110b3319185cb227236b412.svg", "main.d5bb6875.css.map": "/static/css/main.d5bb6875.css.map", - "main.ef66e41e.js.map": "/static/js/main.ef66e41e.js.map" + "main.28f2434e.js.map": "/static/js/main.28f2434e.js.map" }, "entrypoints": [ "static/css/main.d5bb6875.css", - "static/js/main.ef66e41e.js" + "static/js/main.28f2434e.js" ] } \ No newline at end of file diff --git a/Geesemon.Web/wwwroot/index.html b/Geesemon.Web/wwwroot/index.html index 41ef69d..7cc6ac0 100644 --- a/Geesemon.Web/wwwroot/index.html +++ b/Geesemon.Web/wwwroot/index.html @@ -1 +1 @@ -Geesemon
\ No newline at end of file +Geesemon
\ No newline at end of file diff --git a/Geesemon.Web/wwwroot/static/js/main.ef66e41e.js b/Geesemon.Web/wwwroot/static/js/main.28f2434e.js similarity index 90% rename from Geesemon.Web/wwwroot/static/js/main.ef66e41e.js rename to Geesemon.Web/wwwroot/static/js/main.28f2434e.js index 9f8777a..32ebce1 100644 --- a/Geesemon.Web/wwwroot/static/js/main.ef66e41e.js +++ b/Geesemon.Web/wwwroot/static/js/main.28f2434e.js @@ -1,3 +1,3 @@ -/*! For license information please see main.ef66e41e.js.LICENSE.txt */ -(()=>{var e={3135:(e,t,n)=>{"use strict";n.d(t,{g7:()=>u});var r=null,a={},i=1,o="@wry/context:Slot",s=Array,u=s[o]||function(){var e=function(){function e(){this.id=["slot",i++,Date.now(),Math.random().toString(36).slice(2)].join(":")}return e.prototype.hasValue=function(){for(var e=r;e;e=e.parent)if(this.id in e.slots){var t=e.slots[this.id];if(t===a)break;return e!==r&&(r.slots[this.id]=t),!0}return r&&(r.slots[this.id]=a),!1},e.prototype.getValue=function(){if(this.hasValue())return r.slots[this.id]},e.prototype.withValue=function(e,t,n,a){var i,o=((i={__proto__:null})[this.id]=e,i),s=r;r={parent:s,slots:o};try{return t.apply(a,n)}finally{r=s}},e.bind=function(e){var t=r;return function(){var n=r;try{return r=t,e.apply(this,arguments)}finally{r=n}}},e.noContext=function(e,t,n){if(!r)return e.apply(n,t);var a=r;try{return r=null,e.apply(n,t)}finally{r=a}},e}();try{Object.defineProperty(s,o,{value:s[o]=e,enumerable:!1,writable:!1,configurable:!1})}finally{return e}}();u.bind,u.noContext},5970:(e,t,n)=>{"use strict";n.d(t,{D:()=>u});var r=Object.prototype,a=r.toString,i=r.hasOwnProperty,o=Function.prototype.toString,s=new Map;function u(e,t){try{return f(e,t)}finally{s.clear()}}function f(e,t){if(e===t)return!0;var n=a.call(e);if(n!==a.call(t))return!1;switch(n){case"[object Array]":if(e.length!==t.length)return!1;case"[object Object]":if(h(e,t))return!0;var r=c(e),s=c(t),u=r.length;if(u!==s.length)return!1;for(var l=0;l=0&&e.indexOf(t,n)===n}(E,d)}return!1}function c(e){return Object.keys(e).filter(l,e)}function l(e){return void 0!==this[e]}var d="{ [native code] }";function h(e,t){var n=s.get(e);if(n){if(n.has(t))return!0}else s.set(e,n=new Set);return n.add(t),!1}},3819:(e,t,n)=>{"use strict";n.d(t,{B:()=>s});var r=function(){return Object.create(null)},a=Array.prototype,i=a.forEach,o=a.slice,s=function(){function e(e,t){void 0===e&&(e=!0),void 0===t&&(t=r),this.weakness=e,this.makeData=t}return e.prototype.lookup=function(){for(var e=[],t=0;t{"use strict";const{ApolloLink:r,Observable:a}=n(2535),{createSignalIfSupported:i,fallbackHttpConfig:o,parseAndCheckHttpResponse:s,rewriteURIForGET:u,selectHttpOptionsAndBody:f,selectURI:c,serializeFetchParameter:l}=n(9318),d=n(3119),h=n(2713),p=n(6289);e.exports=function(){let{uri:e="/graphql",useGETForQueries:t,isExtractableFile:n=p,FormData:m,formDataAppendFile:g=h,fetch:v,fetchOptions:y,credentials:b,headers:w,includeExtensions:_}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const E={http:{includeExtensions:_},options:y,credentials:b,headers:w};return new r((r=>{const h=r.getContext(),{clientAwareness:{name:p,version:y}={},headers:b}=h,w={http:h.http,options:h.fetchOptions,credentials:h.credentials,headers:{...p&&{"apollographql-client-name":p},...y&&{"apollographql-client-version":y},...b}},{options:_,body:C}=f(r,o,E,w),{clone:S,files:k}=d(C,"",n);let x=c(r,e);if(k.size){delete _.headers["content-type"];const e=new(m||FormData);e.append("operations",l(S,"Payload"));const t={};let n=0;k.forEach((e=>{t[++n]=e})),e.append("map",JSON.stringify(t)),n=0,k.forEach(((t,r)=>{g(e,++n,r)})),_.body=e}else if(t&&!r.query.definitions.some((e=>"OperationDefinition"===e.kind&&"mutation"===e.operation))&&(_.method="GET"),"GET"===_.method){const{newURI:e,parseError:t}=u(x,C);if(t)return new a((e=>{e.error(t)}));x=e}else _.body=l(S,"Payload");const{controller:A}=i();A&&(_.signal&&(_.signal.aborted?A.abort():_.signal.addEventListener("abort",(()=>{A.abort()}),{once:!0})),_.signal=A.signal);const O=v||fetch;return new a((e=>{let t;return O(x,_).then((e=>(r.setContext({response:e}),e))).then(s(r)).then((t=>{e.next(t),e.complete()})).catch((n=>{t||(n.result&&n.result.errors&&n.result.data&&e.next(n.result),e.error(n))})),()=>{t=!0,A&&A.abort()}}))}))}},2713:e=>{"use strict";e.exports=function(e,t,n){e.append(t,n,n.name)}},6289:(e,t,n)=>{"use strict";e.exports=n(6195)},8077:e=>{function t(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}e.exports=t,t.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-n:e+n}return 0|Math.min(e,this.max)},t.prototype.reset=function(){this.attempts=0},t.prototype.setMin=function(e){this.ms=e},t.prototype.setMax=function(e){this.max=e},t.prototype.setJitter=function(e){this.jitter=e}},1694:(e,t)=>{var n;!function(){"use strict";var r={}.hasOwnProperty;function a(){for(var e=[],t=0;t{"use strict";e.exports=class{constructor(e){let{uri:t,name:n,type:r}=e;this.uri=t,this.name=n,this.type=r}}},3119:(e,t,n)=>{"use strict";const r=n(6195);e.exports=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r;const a=new Map,i=new Map;function o(e,t,r){let s=e;if(n(e)){s=null;const n=a.get(e);n?n.push(t):a.set(e,[t])}else{const n=Array.isArray(e)||"undefined"!==typeof FileList&&e instanceof FileList,a=e&&e.constructor===Object;if(n||a){const a=i.has(e);if(a?s=i.get(e):(s=n?[]:{},i.set(e,s)),!r.has(e)){const i=t?"".concat(t,"."):"",u=new Set(r).add(e);if(n){let t=0;for(const n of e){const e=o(n,i+t++,u);a||s.push(e)}}else for(const t in e){const n=o(e[t],i+t,u);a||(s[t]=n)}}}}return s}return{clone:o(e,t,new Set),files:a}}},6195:(e,t,n)=>{"use strict";const r=n(6616);e.exports=function(e){return"undefined"!==typeof File&&e instanceof File||"undefined"!==typeof Blob&&e instanceof Blob||e instanceof r}},7743:(e,t,n)=>{"use strict";n.d(t,{J9:()=>Z,_t:()=>X,wO:()=>K,Ps:()=>Q,HW:()=>$});var r=n(9388);function a(e,t){if(!Boolean(e))throw new Error(null!=t?t:"Unexpected invariant triggered.")}const i=/\r\n|[\n\r]/g;function o(e,t){let n=0,r=1;for(const o of e.body.matchAll(i)){if("number"===typeof o.index||a(!1),o.index>=t)break;n=o.index+o[0].length,r+=1}return{line:r,column:t+1-n}}function s(e,t){const n=e.locationOffset.column-1,r="".padStart(n)+e.body,a=t.line-1,i=e.locationOffset.line-1,o=t.line+i,s=1===t.line?n:0,f=t.column+s,c="".concat(e.name,":").concat(o,":").concat(f,"\n"),l=r.split(/\r\n|[\n\r]/g),d=l[a];if(d.length>120){const e=Math.floor(f/80),t=f%80,n=[];for(let r=0;r["|",e])),["|","^".padStart(t)],["|",n[e+1]]])}return c+u([["".concat(o-1," |"),l[a-1]],["".concat(o," |"),d],["|","^".padStart(f)],["".concat(o+1," |"),l[a+1]]])}function u(e){const t=e.filter((e=>{let[t,n]=e;return void 0!==n})),n=Math.max(...t.map((e=>{let[t]=e;return t.length})));return t.map((e=>{let[t,r]=e;return t.padStart(n)+(r?" "+r:"")})).join("\n")}class f extends Error{constructor(e){for(var t,n,r,a=arguments.length,i=new Array(a>1?a-1:0),s=1;se.loc)).filter((e=>null!=e)));this.source=null!==l&&void 0!==l?l:null===g||void 0===g||null===(n=g[0])||void 0===n?void 0:n.source,this.positions=null!==d&&void 0!==d?d:null===g||void 0===g?void 0:g.map((e=>e.start)),this.locations=d&&l?d.map((e=>o(l,e))):null===g||void 0===g?void 0:g.map((e=>o(e.source,e.start)));const v="object"==typeof(y=null===p||void 0===p?void 0:p.extensions)&&null!==y?null===p||void 0===p?void 0:p.extensions:void 0;var y;this.extensions=null!==(r=null!==m&&void 0!==m?m:v)&&void 0!==r?r:Object.create(null),Object.defineProperties(this,{message:{writable:!0,enumerable:!0},name:{enumerable:!1},nodes:{enumerable:!1},source:{enumerable:!1},positions:{enumerable:!1},originalError:{enumerable:!1}}),null!==p&&void 0!==p&&p.stack?Object.defineProperty(this,"stack",{value:p.stack,writable:!0,configurable:!0}):Error.captureStackTrace?Error.captureStackTrace(this,f):Object.defineProperty(this,"stack",{value:Error().stack,writable:!0,configurable:!0})}get[Symbol.toStringTag](){return"GraphQLError"}toString(){let e=this.message;if(this.nodes)for(const n of this.nodes)n.loc&&(e+="\n\n"+s((t=n.loc).source,o(t.source,t.start)));else if(this.source&&this.locations)for(const n of this.locations)e+="\n\n"+s(this.source,n);var t;return e}toJSON(){const e={message:this.message};return null!=this.locations&&(e.locations=this.locations),null!=this.path&&(e.path=this.path),null!=this.extensions&&Object.keys(this.extensions).length>0&&(e.extensions=this.extensions),e}}function c(e){return void 0===e||0===e.length?void 0:e}function l(e,t,n){return new f("Syntax Error: ".concat(n),{source:e,positions:[t]})}var d,h=n(365);!function(e){e.QUERY="QUERY",e.MUTATION="MUTATION",e.SUBSCRIPTION="SUBSCRIPTION",e.FIELD="FIELD",e.FRAGMENT_DEFINITION="FRAGMENT_DEFINITION",e.FRAGMENT_SPREAD="FRAGMENT_SPREAD",e.INLINE_FRAGMENT="INLINE_FRAGMENT",e.VARIABLE_DEFINITION="VARIABLE_DEFINITION",e.SCHEMA="SCHEMA",e.SCALAR="SCALAR",e.OBJECT="OBJECT",e.FIELD_DEFINITION="FIELD_DEFINITION",e.ARGUMENT_DEFINITION="ARGUMENT_DEFINITION",e.INTERFACE="INTERFACE",e.UNION="UNION",e.ENUM="ENUM",e.ENUM_VALUE="ENUM_VALUE",e.INPUT_OBJECT="INPUT_OBJECT",e.INPUT_FIELD_DEFINITION="INPUT_FIELD_DEFINITION"}(d||(d={}));var p,m=n(3208),g=n(7810),v=n(610);!function(e){e.SOF="",e.EOF="",e.BANG="!",e.DOLLAR="$",e.AMP="&",e.PAREN_L="(",e.PAREN_R=")",e.SPREAD="...",e.COLON=":",e.EQUALS="=",e.AT="@",e.BRACKET_L="[",e.BRACKET_R="]",e.BRACE_L="{",e.PIPE="|",e.BRACE_R="}",e.NAME="Name",e.INT="Int",e.FLOAT="Float",e.STRING="String",e.BLOCK_STRING="BlockString",e.COMMENT="Comment"}(p||(p={}));class y{constructor(e){const t=new h.WU(p.SOF,0,0,0,0);this.source=e,this.lastToken=t,this.token=t,this.line=1,this.lineStart=0}get[Symbol.toStringTag](){return"Lexer"}advance(){this.lastToken=this.token;return this.token=this.lookahead()}lookahead(){let e=this.token;if(e.kind!==p.EOF)do{if(e.next)e=e.next;else{const t=k(this,e.end);e.next=t,t.prev=e,e=t}}while(e.kind===p.COMMENT);return e}}function b(e){return e>=0&&e<=55295||e>=57344&&e<=1114111}function w(e,t){return _(e.charCodeAt(t))&&E(e.charCodeAt(t+1))}function _(e){return e>=55296&&e<=56319}function E(e){return e>=56320&&e<=57343}function C(e,t){const n=e.source.body.codePointAt(t);if(void 0===n)return p.EOF;if(n>=32&&n<=126){const e=String.fromCodePoint(n);return'"'===e?"'\"'":'"'.concat(e,'"')}return"U+"+n.toString(16).toUpperCase().padStart(4,"0")}function S(e,t,n,r,a){const i=e.line,o=1+n-e.lineStart;return new h.WU(t,n,r,i,o,a)}function k(e,t){const n=e.source.body,r=n.length;let a=t;for(;a=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:-1}function N(e,t){const n=e.source.body;switch(n.charCodeAt(t+1)){case 34:return{value:'"',size:2};case 92:return{value:"\\",size:2};case 47:return{value:"/",size:2};case 98:return{value:"\b",size:2};case 102:return{value:"\f",size:2};case 110:return{value:"\n",size:2};case 114:return{value:"\r",size:2};case 116:return{value:"\t",size:2}}throw l(e.source,t,'Invalid character escape sequence: "'.concat(n.slice(t,t+2),'".'))}function D(e,t){const n=e.source.body,r=n.length;let a=e.lineStart,i=t+3,o=i,s="";const u=[];for(;i1&&void 0!==arguments[1]?arguments[1]:{};const n=(0,F.T)(e)?e:new F.H(e);this._lexer=new y(n),this._options=t,this._tokenCounter=0}parseName(){const e=this.expectToken(p.NAME);return this.node(e,{kind:m.h.NAME,value:e.value})}parseDocument(){return this.node(this._lexer.token,{kind:m.h.DOCUMENT,definitions:this.many(p.SOF,this.parseDefinition,p.EOF)})}parseDefinition(){if(this.peek(p.BRACE_L))return this.parseOperationDefinition();const e=this.peekDescription(),t=e?this._lexer.lookahead():this._lexer.token;if(t.kind===p.NAME){switch(t.value){case"schema":return this.parseSchemaDefinition();case"scalar":return this.parseScalarTypeDefinition();case"type":return this.parseObjectTypeDefinition();case"interface":return this.parseInterfaceTypeDefinition();case"union":return this.parseUnionTypeDefinition();case"enum":return this.parseEnumTypeDefinition();case"input":return this.parseInputObjectTypeDefinition();case"directive":return this.parseDirectiveDefinition()}if(e)throw l(this._lexer.source,this._lexer.token.start,"Unexpected description, descriptions are supported only on type definitions.");switch(t.value){case"query":case"mutation":case"subscription":return this.parseOperationDefinition();case"fragment":return this.parseFragmentDefinition();case"extend":return this.parseTypeSystemExtension()}}throw this.unexpected(t)}parseOperationDefinition(){const e=this._lexer.token;if(this.peek(p.BRACE_L))return this.node(e,{kind:m.h.OPERATION_DEFINITION,operation:h.ku.QUERY,name:void 0,variableDefinitions:[],directives:[],selectionSet:this.parseSelectionSet()});const t=this.parseOperationType();let n;return this.peek(p.NAME)&&(n=this.parseName()),this.node(e,{kind:m.h.OPERATION_DEFINITION,operation:t,name:n,variableDefinitions:this.parseVariableDefinitions(),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseOperationType(){const e=this.expectToken(p.NAME);switch(e.value){case"query":return h.ku.QUERY;case"mutation":return h.ku.MUTATION;case"subscription":return h.ku.SUBSCRIPTION}throw this.unexpected(e)}parseVariableDefinitions(){return this.optionalMany(p.PAREN_L,this.parseVariableDefinition,p.PAREN_R)}parseVariableDefinition(){return this.node(this._lexer.token,{kind:m.h.VARIABLE_DEFINITION,variable:this.parseVariable(),type:(this.expectToken(p.COLON),this.parseTypeReference()),defaultValue:this.expectOptionalToken(p.EQUALS)?this.parseConstValueLiteral():void 0,directives:this.parseConstDirectives()})}parseVariable(){const e=this._lexer.token;return this.expectToken(p.DOLLAR),this.node(e,{kind:m.h.VARIABLE,name:this.parseName()})}parseSelectionSet(){return this.node(this._lexer.token,{kind:m.h.SELECTION_SET,selections:this.many(p.BRACE_L,this.parseSelection,p.BRACE_R)})}parseSelection(){return this.peek(p.SPREAD)?this.parseFragment():this.parseField()}parseField(){const e=this._lexer.token,t=this.parseName();let n,r;return this.expectOptionalToken(p.COLON)?(n=t,r=this.parseName()):r=t,this.node(e,{kind:m.h.FIELD,alias:n,name:r,arguments:this.parseArguments(!1),directives:this.parseDirectives(!1),selectionSet:this.peek(p.BRACE_L)?this.parseSelectionSet():void 0})}parseArguments(e){const t=e?this.parseConstArgument:this.parseArgument;return this.optionalMany(p.PAREN_L,t,p.PAREN_R)}parseArgument(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=this._lexer.token,n=this.parseName();return this.expectToken(p.COLON),this.node(t,{kind:m.h.ARGUMENT,name:n,value:this.parseValueLiteral(e)})}parseConstArgument(){return this.parseArgument(!0)}parseFragment(){const e=this._lexer.token;this.expectToken(p.SPREAD);const t=this.expectOptionalKeyword("on");return!t&&this.peek(p.NAME)?this.node(e,{kind:m.h.FRAGMENT_SPREAD,name:this.parseFragmentName(),directives:this.parseDirectives(!1)}):this.node(e,{kind:m.h.INLINE_FRAGMENT,typeCondition:t?this.parseNamedType():void 0,directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseFragmentDefinition(){const e=this._lexer.token;return this.expectKeyword("fragment"),!0===this._options.allowLegacyFragmentVariables?this.node(e,{kind:m.h.FRAGMENT_DEFINITION,name:this.parseFragmentName(),variableDefinitions:this.parseVariableDefinitions(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()}):this.node(e,{kind:m.h.FRAGMENT_DEFINITION,name:this.parseFragmentName(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseFragmentName(){if("on"===this._lexer.token.value)throw this.unexpected();return this.parseName()}parseValueLiteral(e){const t=this._lexer.token;switch(t.kind){case p.BRACKET_L:return this.parseList(e);case p.BRACE_L:return this.parseObject(e);case p.INT:return this.advanceLexer(),this.node(t,{kind:m.h.INT,value:t.value});case p.FLOAT:return this.advanceLexer(),this.node(t,{kind:m.h.FLOAT,value:t.value});case p.STRING:case p.BLOCK_STRING:return this.parseStringLiteral();case p.NAME:switch(this.advanceLexer(),t.value){case"true":return this.node(t,{kind:m.h.BOOLEAN,value:!0});case"false":return this.node(t,{kind:m.h.BOOLEAN,value:!1});case"null":return this.node(t,{kind:m.h.NULL});default:return this.node(t,{kind:m.h.ENUM,value:t.value})}case p.DOLLAR:if(e){if(this.expectToken(p.DOLLAR),this._lexer.token.kind===p.NAME){const e=this._lexer.token.value;throw l(this._lexer.source,t.start,'Unexpected variable "$'.concat(e,'" in constant value.'))}throw this.unexpected(t)}return this.parseVariable();default:throw this.unexpected()}}parseConstValueLiteral(){return this.parseValueLiteral(!0)}parseStringLiteral(){const e=this._lexer.token;return this.advanceLexer(),this.node(e,{kind:m.h.STRING,value:e.value,block:e.kind===p.BLOCK_STRING})}parseList(e){return this.node(this._lexer.token,{kind:m.h.LIST,values:this.any(p.BRACKET_L,(()=>this.parseValueLiteral(e)),p.BRACKET_R)})}parseObject(e){return this.node(this._lexer.token,{kind:m.h.OBJECT,fields:this.any(p.BRACE_L,(()=>this.parseObjectField(e)),p.BRACE_R)})}parseObjectField(e){const t=this._lexer.token,n=this.parseName();return this.expectToken(p.COLON),this.node(t,{kind:m.h.OBJECT_FIELD,name:n,value:this.parseValueLiteral(e)})}parseDirectives(e){const t=[];for(;this.peek(p.AT);)t.push(this.parseDirective(e));return t}parseConstDirectives(){return this.parseDirectives(!0)}parseDirective(e){const t=this._lexer.token;return this.expectToken(p.AT),this.node(t,{kind:m.h.DIRECTIVE,name:this.parseName(),arguments:this.parseArguments(e)})}parseTypeReference(){const e=this._lexer.token;let t;if(this.expectOptionalToken(p.BRACKET_L)){const n=this.parseTypeReference();this.expectToken(p.BRACKET_R),t=this.node(e,{kind:m.h.LIST_TYPE,type:n})}else t=this.parseNamedType();return this.expectOptionalToken(p.BANG)?this.node(e,{kind:m.h.NON_NULL_TYPE,type:t}):t}parseNamedType(){return this.node(this._lexer.token,{kind:m.h.NAMED_TYPE,name:this.parseName()})}peekDescription(){return this.peek(p.STRING)||this.peek(p.BLOCK_STRING)}parseDescription(){if(this.peekDescription())return this.parseStringLiteral()}parseSchemaDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("schema");const n=this.parseConstDirectives(),r=this.many(p.BRACE_L,this.parseOperationTypeDefinition,p.BRACE_R);return this.node(e,{kind:m.h.SCHEMA_DEFINITION,description:t,directives:n,operationTypes:r})}parseOperationTypeDefinition(){const e=this._lexer.token,t=this.parseOperationType();this.expectToken(p.COLON);const n=this.parseNamedType();return this.node(e,{kind:m.h.OPERATION_TYPE_DEFINITION,operation:t,type:n})}parseScalarTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("scalar");const n=this.parseName(),r=this.parseConstDirectives();return this.node(e,{kind:m.h.SCALAR_TYPE_DEFINITION,description:t,name:n,directives:r})}parseObjectTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("type");const n=this.parseName(),r=this.parseImplementsInterfaces(),a=this.parseConstDirectives(),i=this.parseFieldsDefinition();return this.node(e,{kind:m.h.OBJECT_TYPE_DEFINITION,description:t,name:n,interfaces:r,directives:a,fields:i})}parseImplementsInterfaces(){return this.expectOptionalKeyword("implements")?this.delimitedMany(p.AMP,this.parseNamedType):[]}parseFieldsDefinition(){return this.optionalMany(p.BRACE_L,this.parseFieldDefinition,p.BRACE_R)}parseFieldDefinition(){const e=this._lexer.token,t=this.parseDescription(),n=this.parseName(),r=this.parseArgumentDefs();this.expectToken(p.COLON);const a=this.parseTypeReference(),i=this.parseConstDirectives();return this.node(e,{kind:m.h.FIELD_DEFINITION,description:t,name:n,arguments:r,type:a,directives:i})}parseArgumentDefs(){return this.optionalMany(p.PAREN_L,this.parseInputValueDef,p.PAREN_R)}parseInputValueDef(){const e=this._lexer.token,t=this.parseDescription(),n=this.parseName();this.expectToken(p.COLON);const r=this.parseTypeReference();let a;this.expectOptionalToken(p.EQUALS)&&(a=this.parseConstValueLiteral());const i=this.parseConstDirectives();return this.node(e,{kind:m.h.INPUT_VALUE_DEFINITION,description:t,name:n,type:r,defaultValue:a,directives:i})}parseInterfaceTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("interface");const n=this.parseName(),r=this.parseImplementsInterfaces(),a=this.parseConstDirectives(),i=this.parseFieldsDefinition();return this.node(e,{kind:m.h.INTERFACE_TYPE_DEFINITION,description:t,name:n,interfaces:r,directives:a,fields:i})}parseUnionTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("union");const n=this.parseName(),r=this.parseConstDirectives(),a=this.parseUnionMemberTypes();return this.node(e,{kind:m.h.UNION_TYPE_DEFINITION,description:t,name:n,directives:r,types:a})}parseUnionMemberTypes(){return this.expectOptionalToken(p.EQUALS)?this.delimitedMany(p.PIPE,this.parseNamedType):[]}parseEnumTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("enum");const n=this.parseName(),r=this.parseConstDirectives(),a=this.parseEnumValuesDefinition();return this.node(e,{kind:m.h.ENUM_TYPE_DEFINITION,description:t,name:n,directives:r,values:a})}parseEnumValuesDefinition(){return this.optionalMany(p.BRACE_L,this.parseEnumValueDefinition,p.BRACE_R)}parseEnumValueDefinition(){const e=this._lexer.token,t=this.parseDescription(),n=this.parseEnumValueName(),r=this.parseConstDirectives();return this.node(e,{kind:m.h.ENUM_VALUE_DEFINITION,description:t,name:n,directives:r})}parseEnumValueName(){if("true"===this._lexer.token.value||"false"===this._lexer.token.value||"null"===this._lexer.token.value)throw l(this._lexer.source,this._lexer.token.start,"".concat(B(this._lexer.token)," is reserved and cannot be used for an enum value."));return this.parseName()}parseInputObjectTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("input");const n=this.parseName(),r=this.parseConstDirectives(),a=this.parseInputFieldsDefinition();return this.node(e,{kind:m.h.INPUT_OBJECT_TYPE_DEFINITION,description:t,name:n,directives:r,fields:a})}parseInputFieldsDefinition(){return this.optionalMany(p.BRACE_L,this.parseInputValueDef,p.BRACE_R)}parseTypeSystemExtension(){const e=this._lexer.lookahead();if(e.kind===p.NAME)switch(e.value){case"schema":return this.parseSchemaExtension();case"scalar":return this.parseScalarTypeExtension();case"type":return this.parseObjectTypeExtension();case"interface":return this.parseInterfaceTypeExtension();case"union":return this.parseUnionTypeExtension();case"enum":return this.parseEnumTypeExtension();case"input":return this.parseInputObjectTypeExtension()}throw this.unexpected(e)}parseSchemaExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("schema");const t=this.parseConstDirectives(),n=this.optionalMany(p.BRACE_L,this.parseOperationTypeDefinition,p.BRACE_R);if(0===t.length&&0===n.length)throw this.unexpected();return this.node(e,{kind:m.h.SCHEMA_EXTENSION,directives:t,operationTypes:n})}parseScalarTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("scalar");const t=this.parseName(),n=this.parseConstDirectives();if(0===n.length)throw this.unexpected();return this.node(e,{kind:m.h.SCALAR_TYPE_EXTENSION,name:t,directives:n})}parseObjectTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("type");const t=this.parseName(),n=this.parseImplementsInterfaces(),r=this.parseConstDirectives(),a=this.parseFieldsDefinition();if(0===n.length&&0===r.length&&0===a.length)throw this.unexpected();return this.node(e,{kind:m.h.OBJECT_TYPE_EXTENSION,name:t,interfaces:n,directives:r,fields:a})}parseInterfaceTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("interface");const t=this.parseName(),n=this.parseImplementsInterfaces(),r=this.parseConstDirectives(),a=this.parseFieldsDefinition();if(0===n.length&&0===r.length&&0===a.length)throw this.unexpected();return this.node(e,{kind:m.h.INTERFACE_TYPE_EXTENSION,name:t,interfaces:n,directives:r,fields:a})}parseUnionTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("union");const t=this.parseName(),n=this.parseConstDirectives(),r=this.parseUnionMemberTypes();if(0===n.length&&0===r.length)throw this.unexpected();return this.node(e,{kind:m.h.UNION_TYPE_EXTENSION,name:t,directives:n,types:r})}parseEnumTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("enum");const t=this.parseName(),n=this.parseConstDirectives(),r=this.parseEnumValuesDefinition();if(0===n.length&&0===r.length)throw this.unexpected();return this.node(e,{kind:m.h.ENUM_TYPE_EXTENSION,name:t,directives:n,values:r})}parseInputObjectTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("input");const t=this.parseName(),n=this.parseConstDirectives(),r=this.parseInputFieldsDefinition();if(0===n.length&&0===r.length)throw this.unexpected();return this.node(e,{kind:m.h.INPUT_OBJECT_TYPE_EXTENSION,name:t,directives:n,fields:r})}parseDirectiveDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("directive"),this.expectToken(p.AT);const n=this.parseName(),r=this.parseArgumentDefs(),a=this.expectOptionalKeyword("repeatable");this.expectKeyword("on");const i=this.parseDirectiveLocations();return this.node(e,{kind:m.h.DIRECTIVE_DEFINITION,description:t,name:n,arguments:r,repeatable:a,locations:i})}parseDirectiveLocations(){return this.delimitedMany(p.PIPE,this.parseDirectiveLocation)}parseDirectiveLocation(){const e=this._lexer.token,t=this.parseName();if(Object.prototype.hasOwnProperty.call(d,t.value))return t;throw this.unexpected(e)}node(e,t){return!0!==this._options.noLocation&&(t.loc=new h.Ye(e,this._lexer.lastToken,this._lexer.source)),t}peek(e){return this._lexer.token.kind===e}expectToken(e){const t=this._lexer.token;if(t.kind===e)return this.advanceLexer(),t;throw l(this._lexer.source,t.start,"Expected ".concat(V(e),", found ").concat(B(t),"."))}expectOptionalToken(e){return this._lexer.token.kind===e&&(this.advanceLexer(),!0)}expectKeyword(e){const t=this._lexer.token;if(t.kind!==p.NAME||t.value!==e)throw l(this._lexer.source,t.start,'Expected "'.concat(e,'", found ').concat(B(t),"."));this.advanceLexer()}expectOptionalKeyword(e){const t=this._lexer.token;return t.kind===p.NAME&&t.value===e&&(this.advanceLexer(),!0)}unexpected(e){const t=null!==e&&void 0!==e?e:this._lexer.token;return l(this._lexer.source,t.start,"Unexpected ".concat(B(t),"."))}any(e,t,n){this.expectToken(e);const r=[];for(;!this.expectOptionalToken(n);)r.push(t.call(this));return r}optionalMany(e,t,n){if(this.expectOptionalToken(e)){const e=[];do{e.push(t.call(this))}while(!this.expectOptionalToken(n));return e}return[]}many(e,t,n){this.expectToken(e);const r=[];do{r.push(t.call(this))}while(!this.expectOptionalToken(n));return r}delimitedMany(e,t){this.expectOptionalToken(e);const n=[];do{n.push(t.call(this))}while(this.expectOptionalToken(e));return n}advanceLexer(){const{maxTokens:e}=this._options,t=this._lexer.advance();if(void 0!==e&&t.kind!==p.EOF&&(++this._tokenCounter,this._tokenCounter>e))throw l(this._lexer.source,t.start,"Document contains more that ".concat(e," tokens. Parsing aborted."))}}function B(e){const t=e.value;return V(e.kind)+(null!=t?' "'.concat(t,'"'):"")}function V(e){return function(e){return e===p.BANG||e===p.DOLLAR||e===p.AMP||e===p.PAREN_L||e===p.PAREN_R||e===p.SPREAD||e===p.COLON||e===p.EQUALS||e===p.AT||e===p.BRACKET_L||e===p.BRACKET_R||e===p.BRACE_L||e===p.PIPE||e===p.BRACE_R}(e)?'"'.concat(e,'"'):e}var U=new Map,z=new Map,H=!0,G=!1;function W(e){return e.replace(/[\s,]+/g," ").trim()}function q(e){var t=new Set,n=[];return e.definitions.forEach((function(e){if("FragmentDefinition"===e.kind){var r=e.name.value,a=W((o=e.loc).source.body.substring(o.start,o.end)),i=z.get(r);i&&!i.has(a)?H&&console.warn("Warning: fragment with name "+r+" already exists.\ngraphql-tag enforces all fragment names across your application to be unique; read more about\nthis in the docs: http://dev.apollodata.com/core/fragments.html#unique-names"):i||z.set(r,i=new Set),i.add(a),t.has(a)||(t.add(a),n.push(e))}else n.push(e);var o})),(0,r.pi)((0,r.pi)({},e),{definitions:n})}function Y(e){var t=W(e);if(!U.has(t)){var n=function(e,t){return new L(e,t).parseDocument()}(e,{experimentalFragmentVariables:G,allowLegacyFragmentVariables:G});if(!n||"Document"!==n.kind)throw new Error("Not a valid GraphQL document.");U.set(t,function(e){var t=new Set(e.definitions);t.forEach((function(e){e.loc&&delete e.loc,Object.keys(e).forEach((function(n){var r=e[n];r&&"object"===typeof r&&t.add(r)}))}));var n=e.loc;return n&&(delete n.startToken,delete n.endToken),e}(q(n)))}return U.get(t)}function Q(e){for(var t=[],n=1;n{"use strict";var r=n(8309),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function u(e){return r.isMemo(e)?o:s[e.$$typeof]||a}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=o;var f=Object.defineProperty,c=Object.getOwnPropertyNames,l=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,h=Object.getPrototypeOf,p=Object.prototype;e.exports=function e(t,n,r){if("string"!==typeof n){if(p){var a=h(n);a&&a!==p&&e(t,a,r)}var o=c(n);l&&(o=o.concat(l(n)));for(var s=u(t),m=u(n),g=0;g{"use strict";var n="function"===typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,i=n?Symbol.for("react.fragment"):60107,o=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,u=n?Symbol.for("react.provider"):60109,f=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,l=n?Symbol.for("react.concurrent_mode"):60111,d=n?Symbol.for("react.forward_ref"):60112,h=n?Symbol.for("react.suspense"):60113,p=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,y=n?Symbol.for("react.fundamental"):60117,b=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function _(e){if("object"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case l:case i:case s:case o:case h:return e;default:switch(e=e&&e.$$typeof){case f:case d:case g:case m:case u:return e;default:return t}}case a:return t}}}function E(e){return _(e)===l}t.AsyncMode=c,t.ConcurrentMode=l,t.ContextConsumer=f,t.ContextProvider=u,t.Element=r,t.ForwardRef=d,t.Fragment=i,t.Lazy=g,t.Memo=m,t.Portal=a,t.Profiler=s,t.StrictMode=o,t.Suspense=h,t.isAsyncMode=function(e){return E(e)||_(e)===c},t.isConcurrentMode=E,t.isContextConsumer=function(e){return _(e)===f},t.isContextProvider=function(e){return _(e)===u},t.isElement=function(e){return"object"===typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return _(e)===d},t.isFragment=function(e){return _(e)===i},t.isLazy=function(e){return _(e)===g},t.isMemo=function(e){return _(e)===m},t.isPortal=function(e){return _(e)===a},t.isProfiler=function(e){return _(e)===s},t.isStrictMode=function(e){return _(e)===o},t.isSuspense=function(e){return _(e)===h},t.isValidElementType=function(e){return"string"===typeof e||"function"===typeof e||e===i||e===l||e===s||e===o||e===h||e===p||"object"===typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===u||e.$$typeof===f||e.$$typeof===d||e.$$typeof===y||e.$$typeof===b||e.$$typeof===w||e.$$typeof===v)},t.typeOf=_},8309:(e,t,n)=>{"use strict";e.exports=n(746)},908:(e,t,n)=>{var r=n(8136)(n(7009),"DataView");e.exports=r},9676:(e,t,n)=>{var r=n(5403),a=n(2747),i=n(6037),o=n(4154),s=n(7728);function u(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(3894),a=n(8699),i=n(4957),o=n(7184),s=n(7109);function u(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(8136)(n(7009),"Map");e.exports=r},8059:(e,t,n)=>{var r=n(4086),a=n(9255),i=n(9186),o=n(3423),s=n(3739);function u(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(8136)(n(7009),"Promise");e.exports=r},3924:(e,t,n)=>{var r=n(8136)(n(7009),"Set");e.exports=r},692:(e,t,n)=>{var r=n(8059),a=n(5774),i=n(1596);function o(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t{var r=n(8384),a=n(511),i=n(835),o=n(707),s=n(8832),u=n(5077);function f(e){var t=this.__data__=new r(e);this.size=t.size}f.prototype.clear=a,f.prototype.delete=i,f.prototype.get=o,f.prototype.has=s,f.prototype.set=u,e.exports=f},7197:(e,t,n)=>{var r=n(7009).Symbol;e.exports=r},6219:(e,t,n)=>{var r=n(7009).Uint8Array;e.exports=r},7091:(e,t,n)=>{var r=n(8136)(n(7009),"WeakMap");e.exports=r},4903:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,a=0,i=[];++n{var r=n(6478),a=n(4963),i=n(3629),o=n(5174),s=n(6800),u=n(9102),f=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=i(e),c=!n&&a(e),l=!n&&!c&&o(e),d=!n&&!c&&!l&&u(e),h=n||c||l||d,p=h?r(e.length,String):[],m=p.length;for(var g in e)!t&&!f.call(e,g)||h&&("length"==g||l&&("offset"==g||"parent"==g)||d&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||s(g,m))||p.push(g);return p}},8950:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,a=Array(r);++n{e.exports=function(e,t){for(var n=-1,r=t.length,a=e.length;++n{e.exports=function(e,t,n,r){var a=-1,i=null==e?0:e.length;for(r&&i&&(n=e[++a]);++a{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n{e.exports=function(e){return e.split("")}},240:e=>{var t=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;e.exports=function(e){return e.match(t)||[]}},7112:(e,t,n)=>{var r=n(9231);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},2526:(e,t,n)=>{var r=n(8528);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},5099:(e,t,n)=>{var r=n(372)();e.exports=r},5358:(e,t,n)=>{var r=n(5099),a=n(2742);e.exports=function(e,t){return e&&r(e,t,a)}},8667:(e,t,n)=>{var r=n(3082),a=n(9793);e.exports=function(e,t){for(var n=0,i=(t=r(t,e)).length;null!=e&&n{var r=n(1705),a=n(3629);e.exports=function(e,t,n){var i=t(e);return a(e)?i:r(i,n(e))}},9066:(e,t,n)=>{var r=n(7197),a=n(1587),i=n(3581),o=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":o&&o in Object(e)?a(e):i(e)}},7852:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e,n){return null!=e&&t.call(e,n)}},529:e=>{e.exports=function(e,t){return null!=e&&t in Object(e)}},4906:(e,t,n)=>{var r=n(9066),a=n(3141);e.exports=function(e){return a(e)&&"[object Arguments]"==r(e)}},1848:(e,t,n)=>{var r=n(3355),a=n(3141);e.exports=function e(t,n,i,o,s){return t===n||(null==t||null==n||!a(t)&&!a(n)?t!==t&&n!==n:r(t,n,i,o,e,s))}},3355:(e,t,n)=>{var r=n(2854),a=n(5305),i=n(2206),o=n(8078),s=n(8383),u=n(3629),f=n(5174),c=n(9102),l="[object Arguments]",d="[object Array]",h="[object Object]",p=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,m,g,v){var y=u(e),b=u(t),w=y?d:s(e),_=b?d:s(t),E=(w=w==l?h:w)==h,C=(_=_==l?h:_)==h,S=w==_;if(S&&f(e)){if(!f(t))return!1;y=!0,E=!1}if(S&&!E)return v||(v=new r),y||c(e)?a(e,t,n,m,g,v):i(e,t,w,n,m,g,v);if(!(1&n)){var k=E&&p.call(e,"__wrapped__"),x=C&&p.call(t,"__wrapped__");if(k||x){var A=k?e.value():e,O=x?t.value():t;return v||(v=new r),g(A,O,n,m,v)}}return!!S&&(v||(v=new r),o(e,t,n,m,g,v))}},8856:(e,t,n)=>{var r=n(2854),a=n(1848);e.exports=function(e,t,n,i){var o=n.length,s=o,u=!i;if(null==e)return!s;for(e=Object(e);o--;){var f=n[o];if(u&&f[2]?f[1]!==e[f[0]]:!(f[0]in e))return!1}for(;++o{var r=n(4786),a=n(257),i=n(8092),o=n(7907),s=/^\[object .+?Constructor\]$/,u=Function.prototype,f=Object.prototype,c=u.toString,l=f.hasOwnProperty,d=RegExp("^"+c.call(l).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!i(e)||a(e))&&(r(e)?d:s).test(o(e))}},8150:(e,t,n)=>{var r=n(9066),a=n(4635),i=n(3141),o={};o["[object Float32Array]"]=o["[object Float64Array]"]=o["[object Int8Array]"]=o["[object Int16Array]"]=o["[object Int32Array]"]=o["[object Uint8Array]"]=o["[object Uint8ClampedArray]"]=o["[object Uint16Array]"]=o["[object Uint32Array]"]=!0,o["[object Arguments]"]=o["[object Array]"]=o["[object ArrayBuffer]"]=o["[object Boolean]"]=o["[object DataView]"]=o["[object Date]"]=o["[object Error]"]=o["[object Function]"]=o["[object Map]"]=o["[object Number]"]=o["[object Object]"]=o["[object RegExp]"]=o["[object Set]"]=o["[object String]"]=o["[object WeakMap]"]=!1,e.exports=function(e){return i(e)&&a(e.length)&&!!o[r(e)]}},6025:(e,t,n)=>{var r=n(7080),a=n(4322),i=n(2100),o=n(3629),s=n(38);e.exports=function(e){return"function"==typeof e?e:null==e?i:"object"==typeof e?o(e)?a(e[0],e[1]):r(e):s(e)}},3654:(e,t,n)=>{var r=n(2936),a=n(8836),i=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return a(e);var t=[];for(var n in Object(e))i.call(e,n)&&"constructor"!=n&&t.push(n);return t}},7080:(e,t,n)=>{var r=n(8856),a=n(9091),i=n(284);e.exports=function(e){var t=a(e);return 1==t.length&&t[0][2]?i(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},4322:(e,t,n)=>{var r=n(1848),a=n(6181),i=n(5658),o=n(5823),s=n(5072),u=n(284),f=n(9793);e.exports=function(e,t){return o(e)&&s(t)?u(f(e),t):function(n){var o=a(n,e);return void 0===o&&o===t?i(n,e):r(t,o,3)}}},9586:e=>{e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},4084:(e,t,n)=>{var r=n(8667);e.exports=function(e){return function(t){return r(t,e)}}},4632:e=>{e.exports=function(e){return function(t){return null==e?void 0:e[t]}}},2646:e=>{e.exports=function(e,t,n){var r=-1,a=e.length;t<0&&(t=-t>a?0:a+t),(n=n>a?a:n)<0&&(n+=a),a=t>n?0:n-t>>>0,t>>>=0;for(var i=Array(a);++r{e.exports=function(e,t){for(var n=-1,r=Array(e);++n{var r=n(7197),a=n(8950),i=n(3629),o=n(152),s=r?r.prototype:void 0,u=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(i(t))return a(t,e)+"";if(o(t))return u?u.call(t):"";var n=t+"";return"0"==n&&1/t==-Infinity?"-0":n}},6194:e=>{e.exports=function(e){return function(t){return e(t)}}},75:e=>{e.exports=function(e,t){return e.has(t)}},3082:(e,t,n)=>{var r=n(3629),a=n(5823),i=n(170),o=n(3518);e.exports=function(e,t){return r(e)?e:a(e,t)?[e]:i(o(e))}},9813:(e,t,n)=>{var r=n(2646);e.exports=function(e,t,n){var a=e.length;return n=void 0===n?a:n,!t&&n>=a?e:r(e,t,n)}},5525:(e,t,n)=>{var r=n(7009)["__core-js_shared__"];e.exports=r},372:e=>{e.exports=function(e){return function(t,n,r){for(var a=-1,i=Object(t),o=r(t),s=o.length;s--;){var u=o[e?s:++a];if(!1===n(i[u],u,i))break}return t}}},322:(e,t,n)=>{var r=n(9813),a=n(7302),i=n(7580),o=n(3518);e.exports=function(e){return function(t){t=o(t);var n=a(t)?i(t):void 0,s=n?n[0]:t.charAt(0),u=n?r(n,1).join(""):t.slice(1);return s[e]()+u}}},2099:(e,t,n)=>{var r=n(2095),a=n(4857),i=n(5660),o=RegExp("['\u2019]","g");e.exports=function(e){return function(t){return r(i(a(t).replace(o,"")),e,"")}}},5868:(e,t,n)=>{var r=n(4632)({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"});e.exports=r},8528:(e,t,n)=>{var r=n(8136),a=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();e.exports=a},5305:(e,t,n)=>{var r=n(692),a=n(7897),i=n(75);e.exports=function(e,t,n,o,s,u){var f=1&n,c=e.length,l=t.length;if(c!=l&&!(f&&l>c))return!1;var d=u.get(e),h=u.get(t);if(d&&h)return d==t&&h==e;var p=-1,m=!0,g=2&n?new r:void 0;for(u.set(e,t),u.set(t,e);++p{var r=n(7197),a=n(6219),i=n(9231),o=n(5305),s=n(234),u=n(2230),f=r?r.prototype:void 0,c=f?f.valueOf:void 0;e.exports=function(e,t,n,r,f,l,d){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!l(new a(e),new a(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return i(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var h=s;case"[object Set]":var p=1&r;if(h||(h=u),e.size!=t.size&&!p)return!1;var m=d.get(e);if(m)return m==t;r|=2,d.set(e,t);var g=o(h(e),h(t),r,f,l,d);return d.delete(e),g;case"[object Symbol]":if(c)return c.call(e)==c.call(t)}return!1}},8078:(e,t,n)=>{var r=n(8248),a=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,i,o,s){var u=1&n,f=r(e),c=f.length;if(c!=r(t).length&&!u)return!1;for(var l=c;l--;){var d=f[l];if(!(u?d in t:a.call(t,d)))return!1}var h=s.get(e),p=s.get(t);if(h&&p)return h==t&&p==e;var m=!0;s.set(e,t),s.set(t,e);for(var g=u;++l{var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},8248:(e,t,n)=>{var r=n(1986),a=n(5918),i=n(2742);e.exports=function(e){return r(e,i,a)}},2799:(e,t,n)=>{var r=n(5964);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},9091:(e,t,n)=>{var r=n(5072),a=n(2742);e.exports=function(e){for(var t=a(e),n=t.length;n--;){var i=t[n],o=e[i];t[n]=[i,o,r(o)]}return t}},8136:(e,t,n)=>{var r=n(6703),a=n(40);e.exports=function(e,t){var n=a(e,t);return r(n)?n:void 0}},1587:(e,t,n)=>{var r=n(7197),a=Object.prototype,i=a.hasOwnProperty,o=a.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=i.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch(u){}var a=o.call(e);return r&&(t?e[s]=n:delete e[s]),a}},5918:(e,t,n)=>{var r=n(4903),a=n(8174),i=Object.prototype.propertyIsEnumerable,o=Object.getOwnPropertySymbols,s=o?function(e){return null==e?[]:(e=Object(e),r(o(e),(function(t){return i.call(e,t)})))}:a;e.exports=s},8383:(e,t,n)=>{var r=n(908),a=n(5797),i=n(8319),o=n(3924),s=n(7091),u=n(9066),f=n(7907),c="[object Map]",l="[object Promise]",d="[object Set]",h="[object WeakMap]",p="[object DataView]",m=f(r),g=f(a),v=f(i),y=f(o),b=f(s),w=u;(r&&w(new r(new ArrayBuffer(1)))!=p||a&&w(new a)!=c||i&&w(i.resolve())!=l||o&&w(new o)!=d||s&&w(new s)!=h)&&(w=function(e){var t=u(e),n="[object Object]"==t?e.constructor:void 0,r=n?f(n):"";if(r)switch(r){case m:return p;case g:return c;case v:return l;case y:return d;case b:return h}return t}),e.exports=w},40:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},6417:(e,t,n)=>{var r=n(3082),a=n(4963),i=n(3629),o=n(6800),s=n(4635),u=n(9793);e.exports=function(e,t,n){for(var f=-1,c=(t=r(t,e)).length,l=!1;++f{var t=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");e.exports=function(e){return t.test(e)}},7137:e=>{var t=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;e.exports=function(e){return t.test(e)}},5403:(e,t,n)=>{var r=n(9620);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},2747:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},6037:(e,t,n)=>{var r=n(9620),a=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return a.call(t,e)?t[e]:void 0}},4154:(e,t,n)=>{var r=n(9620),a=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:a.call(t,e)}},7728:(e,t,n)=>{var r=n(9620);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},6800:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,n){var r=typeof e;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&t.test(e))&&e>-1&&e%1==0&&e{var r=n(3629),a=n(152),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,o=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!a(e))||(o.test(e)||!i.test(e)||null!=t&&e in Object(t))}},5964:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},257:(e,t,n)=>{var r=n(5525),a=function(){var e=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();e.exports=function(e){return!!a&&a in e}},2936:e=>{var t=Object.prototype;e.exports=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||t)}},5072:(e,t,n)=>{var r=n(8092);e.exports=function(e){return e===e&&!r(e)}},3894:e=>{e.exports=function(){this.__data__=[],this.size=0}},8699:(e,t,n)=>{var r=n(7112),a=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():a.call(t,n,1),--this.size,!0)}},4957:(e,t,n)=>{var r=n(7112);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},7184:(e,t,n)=>{var r=n(7112);e.exports=function(e){return r(this.__data__,e)>-1}},7109:(e,t,n)=>{var r=n(7112);e.exports=function(e,t){var n=this.__data__,a=r(n,e);return a<0?(++this.size,n.push([e,t])):n[a][1]=t,this}},4086:(e,t,n)=>{var r=n(9676),a=n(8384),i=n(5797);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||a),string:new r}}},9255:(e,t,n)=>{var r=n(2799);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},9186:(e,t,n)=>{var r=n(2799);e.exports=function(e){return r(this,e).get(e)}},3423:(e,t,n)=>{var r=n(2799);e.exports=function(e){return r(this,e).has(e)}},3739:(e,t,n)=>{var r=n(2799);e.exports=function(e,t){var n=r(this,e),a=n.size;return n.set(e,t),this.size+=n.size==a?0:1,this}},234:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},284:e=>{e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},4634:(e,t,n)=>{var r=n(9151);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},9620:(e,t,n)=>{var r=n(8136)(Object,"create");e.exports=r},8836:(e,t,n)=>{var r=n(2709)(Object.keys,Object);e.exports=r},9494:(e,t,n)=>{e=n.nmd(e);var r=n(1032),a=t&&!t.nodeType&&t,i=a&&e&&!e.nodeType&&e,o=i&&i.exports===a&&r.process,s=function(){try{var e=i&&i.require&&i.require("util").types;return e||o&&o.binding&&o.binding("util")}catch(t){}}();e.exports=s},3581:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},2709:e=>{e.exports=function(e,t){return function(n){return e(t(n))}}},7009:(e,t,n)=>{var r=n(1032),a="object"==typeof self&&self&&self.Object===Object&&self,i=r||a||Function("return this")();e.exports=i},5774:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},1596:e=>{e.exports=function(e){return this.__data__.has(e)}},2230:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},511:(e,t,n)=>{var r=n(8384);e.exports=function(){this.__data__=new r,this.size=0}},835:e=>{e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},707:e=>{e.exports=function(e){return this.__data__.get(e)}},8832:e=>{e.exports=function(e){return this.__data__.has(e)}},5077:(e,t,n)=>{var r=n(8384),a=n(5797),i=n(8059);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var o=n.__data__;if(!a||o.length<199)return o.push([e,t]),this.size=++n.size,this;n=this.__data__=new i(o)}return n.set(e,t),this.size=n.size,this}},7580:(e,t,n)=>{var r=n(4622),a=n(7302),i=n(2129);e.exports=function(e){return a(e)?i(e):r(e)}},170:(e,t,n)=>{var r=n(4634),a=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,i=/\\(\\)?/g,o=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(a,(function(e,n,r,a){t.push(r?a.replace(i,"$1"):n||e)})),t}));e.exports=o},9793:(e,t,n)=>{var r=n(152);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-Infinity?"-0":t}},7907:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(n){}try{return e+""}catch(n){}}return""}},2129:e=>{var t="[\\ud800-\\udfff]",n="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",r="\\ud83c[\\udffb-\\udfff]",a="[^\\ud800-\\udfff]",i="(?:\\ud83c[\\udde6-\\uddff]){2}",o="[\\ud800-\\udbff][\\udc00-\\udfff]",s="(?:"+n+"|"+r+")"+"?",u="[\\ufe0e\\ufe0f]?",f=u+s+("(?:\\u200d(?:"+[a,i,o].join("|")+")"+u+s+")*"),c="(?:"+[a+n+"?",n,i,o,t].join("|")+")",l=RegExp(r+"(?="+r+")|"+c+f,"g");e.exports=function(e){return e.match(l)||[]}},1029:e=>{var t="\\u2700-\\u27bf",n="a-z\\xdf-\\xf6\\xf8-\\xff",r="A-Z\\xc0-\\xd6\\xd8-\\xde",a="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",i="["+a+"]",o="\\d+",s="[\\u2700-\\u27bf]",u="["+n+"]",f="[^\\ud800-\\udfff"+a+o+t+n+r+"]",c="(?:\\ud83c[\\udde6-\\uddff]){2}",l="[\\ud800-\\udbff][\\udc00-\\udfff]",d="["+r+"]",h="(?:"+u+"|"+f+")",p="(?:"+d+"|"+f+")",m="(?:['\u2019](?:d|ll|m|re|s|t|ve))?",g="(?:['\u2019](?:D|LL|M|RE|S|T|VE))?",v="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",y="[\\ufe0e\\ufe0f]?",b=y+v+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",c,l].join("|")+")"+y+v+")*"),w="(?:"+[s,c,l].join("|")+")"+b,_=RegExp([d+"?"+u+"+"+m+"(?="+[i,d,"$"].join("|")+")",p+"+"+g+"(?="+[i,d+h,"$"].join("|")+")",d+"?"+h+"+"+m,d+"+"+g,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",o,w].join("|"),"g");e.exports=function(e){return e.match(_)||[]}},567:(e,t,n)=>{var r=n(3131),a=n(2099)((function(e,t,n){return t=t.toLowerCase(),e+(n?r(t):t)}));e.exports=a},3131:(e,t,n)=>{var r=n(3518),a=n(2085);e.exports=function(e){return a(r(e).toLowerCase())}},4857:(e,t,n)=>{var r=n(5868),a=n(3518),i=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,o=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");e.exports=function(e){return(e=a(e))&&e.replace(i,r).replace(o,"")}},9231:e=>{e.exports=function(e,t){return e===t||e!==e&&t!==t}},6181:(e,t,n)=>{var r=n(8667);e.exports=function(e,t,n){var a=null==e?void 0:r(e,t);return void 0===a?n:a}},7805:(e,t,n)=>{var r=n(7852),a=n(6417);e.exports=function(e,t){return null!=e&&a(e,t,r)}},5658:(e,t,n)=>{var r=n(529),a=n(6417);e.exports=function(e,t){return null!=e&&a(e,t,r)}},2100:e=>{e.exports=function(e){return e}},4963:(e,t,n)=>{var r=n(4906),a=n(3141),i=Object.prototype,o=i.hasOwnProperty,s=i.propertyIsEnumerable,u=r(function(){return arguments}())?r:function(e){return a(e)&&o.call(e,"callee")&&!s.call(e,"callee")};e.exports=u},3629:e=>{var t=Array.isArray;e.exports=t},1473:(e,t,n)=>{var r=n(4786),a=n(4635);e.exports=function(e){return null!=e&&a(e.length)&&!r(e)}},5174:(e,t,n)=>{e=n.nmd(e);var r=n(7009),a=n(9488),i=t&&!t.nodeType&&t,o=i&&e&&!e.nodeType&&e,s=o&&o.exports===i?r.Buffer:void 0,u=(s?s.isBuffer:void 0)||a;e.exports=u},4786:(e,t,n)=>{var r=n(9066),a=n(8092);e.exports=function(e){if(!a(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},4635:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},8092:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},3141:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},152:(e,t,n)=>{var r=n(9066),a=n(3141);e.exports=function(e){return"symbol"==typeof e||a(e)&&"[object Symbol]"==r(e)}},9102:(e,t,n)=>{var r=n(8150),a=n(6194),i=n(9494),o=i&&i.isTypedArray,s=o?a(o):r;e.exports=s},2742:(e,t,n)=>{var r=n(7538),a=n(3654),i=n(1473);e.exports=function(e){return i(e)?r(e):a(e)}},9029:(e,t,n)=>{var r=n(2526),a=n(5358),i=n(6025);e.exports=function(e,t){var n={};return t=i(t,3),a(e,(function(e,a,i){r(n,t(e,a,i),e)})),n}},7702:(e,t,n)=>{var r=n(2526),a=n(5358),i=n(6025);e.exports=function(e,t){var n={};return t=i(t,3),a(e,(function(e,a,i){r(n,a,t(e,a,i))})),n}},9151:(e,t,n)=>{var r=n(8059);function a(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,a=t?t.apply(this,r):r[0],i=n.cache;if(i.has(a))return i.get(a);var o=e.apply(this,r);return n.cache=i.set(a,o)||i,o};return n.cache=new(a.Cache||r),n}a.Cache=r,e.exports=a},38:(e,t,n)=>{var r=n(9586),a=n(4084),i=n(5823),o=n(9793);e.exports=function(e){return i(e)?r(o(e)):a(e)}},7499:(e,t,n)=>{var r=n(2099)((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));e.exports=r},8174:e=>{e.exports=function(){return[]}},9488:e=>{e.exports=function(){return!1}},3518:(e,t,n)=>{var r=n(2446);e.exports=function(e){return null==e?"":r(e)}},2085:(e,t,n)=>{var r=n(322)("toUpperCase");e.exports=r},5660:(e,t,n)=>{var r=n(240),a=n(7137),i=n(3518),o=n(1029);e.exports=function(e,t,n){return e=i(e),void 0===(t=n?void 0:t)?a(e)?o(e):r(e):e.match(t)||[]}},2426:function(e,t,n){(e=n.nmd(e)).exports=function(){"use strict";var t,n;function r(){return t.apply(null,arguments)}function a(e){t=e}function i(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function o(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function u(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(s(e,t))return!1;return!0}function f(e){return void 0===e}function c(e){return"number"===typeof e||"[object Number]"===Object.prototype.toString.call(e)}function l(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function d(e,t){var n,r=[],a=e.length;for(n=0;n>>0;for(t=0;t0)for(n=0;n=0?n?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+r}var j=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,F=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,L={},B={};function V(e,t,n,r){var a=r;"string"===typeof r&&(a=function(){return this[r]()}),e&&(B[e]=a),t&&(B[t[0]]=function(){return D(a.apply(this,arguments),t[1],t[2])}),n&&(B[n]=function(){return this.localeData().ordinal(a.apply(this,arguments),e)})}function U(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function z(e){var t,n,r=e.match(j);for(t=0,n=r.length;t=0&&F.test(e);)e=e.replace(F,r),F.lastIndex=0,n-=1;return e}var W={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function q(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(j).map((function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e})).join(""),this._longDateFormat[e])}var Y="Invalid date";function Q(){return this._invalidDate}var $="%d",X=/\d{1,2}/;function K(e){return this._ordinal.replace("%d",e)}var Z={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function J(e,t,n,r){var a=this._relativeTime[n];return T(a)?a(e,t,n,r):a.replace(/%d/i,e)}function ee(e,t){var n=this._relativeTime[e>0?"future":"past"];return T(n)?n(t):n.replace(/%s/i,t)}var te={};function ne(e,t){var n=e.toLowerCase();te[n]=te[n+"s"]=te[t]=e}function re(e){return"string"===typeof e?te[e]||te[e.toLowerCase()]:void 0}function ae(e){var t,n,r={};for(n in e)s(e,n)&&(t=re(n))&&(r[t]=e[n]);return r}var ie={};function oe(e,t){ie[e]=t}function se(e){var t,n=[];for(t in e)s(e,t)&&n.push({unit:t,priority:ie[t]});return n.sort((function(e,t){return e.priority-t.priority})),n}function ue(e){return e%4===0&&e%100!==0||e%400===0}function fe(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function ce(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=fe(t)),n}function le(e,t){return function(n){return null!=n?(he(this,e,n),r.updateOffset(this,t),this):de(this,e)}}function de(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function he(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&ue(e.year())&&1===e.month()&&29===e.date()?(n=ce(n),e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Je(n,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function pe(e){return T(this[e=re(e)])?this[e]():this}function me(e,t){if("object"===typeof e){var n,r=se(e=ae(e)),a=r.length;for(n=0;n68?1900:2e3)};var gt=le("FullYear",!0);function vt(){return ue(this.year())}function yt(e,t,n,r,a,i,o){var s;return e<100&&e>=0?(s=new Date(e+400,t,n,r,a,i,o),isFinite(s.getFullYear())&&s.setFullYear(e)):s=new Date(e,t,n,r,a,i,o),s}function bt(e){var t,n;return e<100&&e>=0?((n=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function wt(e,t,n){var r=7+t-n;return-(7+bt(e,0,r).getUTCDay()-t)%7+r-1}function _t(e,t,n,r,a){var i,o,s=1+7*(t-1)+(7+n-r)%7+wt(e,r,a);return s<=0?o=mt(i=e-1)+s:s>mt(e)?(i=e+1,o=s-mt(e)):(i=e,o=s),{year:i,dayOfYear:o}}function Et(e,t,n){var r,a,i=wt(e.year(),t,n),o=Math.floor((e.dayOfYear()-i-1)/7)+1;return o<1?r=o+Ct(a=e.year()-1,t,n):o>Ct(e.year(),t,n)?(r=o-Ct(e.year(),t,n),a=e.year()+1):(a=e.year(),r=o),{week:r,year:a}}function Ct(e,t,n){var r=wt(e,t,n),a=wt(e+1,t,n);return(mt(e)-r+a)/7}function St(e){return Et(e,this._week.dow,this._week.doy).week}V("w",["ww",2],"wo","week"),V("W",["WW",2],"Wo","isoWeek"),ne("week","w"),ne("isoWeek","W"),oe("week",5),oe("isoWeek",5),Ne("w",Ee),Ne("ww",Ee,ye),Ne("W",Ee),Ne("WW",Ee,ye),Ve(["w","ww","W","WW"],(function(e,t,n,r){t[r.substr(0,1)]=ce(e)}));var kt={dow:0,doy:6};function xt(){return this._week.dow}function At(){return this._week.doy}function Ot(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")}function Tt(e){var t=Et(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")}function It(e,t){return"string"!==typeof e?e:isNaN(e)?"number"===typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}function Pt(e,t){return"string"===typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Rt(e,t){return e.slice(t,7).concat(e.slice(0,t))}V("d",0,"do","day"),V("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),V("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),V("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),V("e",0,0,"weekday"),V("E",0,0,"isoWeekday"),ne("day","d"),ne("weekday","e"),ne("isoWeekday","E"),oe("day",11),oe("weekday",11),oe("isoWeekday",11),Ne("d",Ee),Ne("e",Ee),Ne("E",Ee),Ne("dd",(function(e,t){return t.weekdaysMinRegex(e)})),Ne("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),Ne("dddd",(function(e,t){return t.weekdaysRegex(e)})),Ve(["dd","ddd","dddd"],(function(e,t,n,r){var a=n._locale.weekdaysParse(e,r,n._strict);null!=a?t.d=a:g(n).invalidWeekday=e})),Ve(["d","e","E"],(function(e,t,n,r){t[r]=ce(e)}));var Mt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Nt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Dt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),jt=Me,Ft=Me,Lt=Me;function Bt(e,t){var n=i(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Rt(n,this._week.dow):e?n[e.day()]:n}function Vt(e){return!0===e?Rt(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Ut(e){return!0===e?Rt(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function zt(e,t,n){var r,a,i,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)i=p([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(i,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(i,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(i,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(a=ze.call(this._weekdaysParse,o))?a:null:"ddd"===t?-1!==(a=ze.call(this._shortWeekdaysParse,o))?a:null:-1!==(a=ze.call(this._minWeekdaysParse,o))?a:null:"dddd"===t?-1!==(a=ze.call(this._weekdaysParse,o))||-1!==(a=ze.call(this._shortWeekdaysParse,o))||-1!==(a=ze.call(this._minWeekdaysParse,o))?a:null:"ddd"===t?-1!==(a=ze.call(this._shortWeekdaysParse,o))||-1!==(a=ze.call(this._weekdaysParse,o))||-1!==(a=ze.call(this._minWeekdaysParse,o))?a:null:-1!==(a=ze.call(this._minWeekdaysParse,o))||-1!==(a=ze.call(this._weekdaysParse,o))||-1!==(a=ze.call(this._shortWeekdaysParse,o))?a:null}function Ht(e,t,n){var r,a,i;if(this._weekdaysParseExact)return zt.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(a=p([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(a,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(a,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(a,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(i="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,""),this._weekdaysParse[r]=new RegExp(i.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[r].test(e))return r;if(n&&"ddd"===t&&this._shortWeekdaysParse[r].test(e))return r;if(n&&"dd"===t&&this._minWeekdaysParse[r].test(e))return r;if(!n&&this._weekdaysParse[r].test(e))return r}}function Gt(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=It(e,this.localeData()),this.add(e-t,"d")):t}function Wt(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")}function qt(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=Pt(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7}function Yt(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Xt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(s(this,"_weekdaysRegex")||(this._weekdaysRegex=jt),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function Qt(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Xt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(s(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ft),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function $t(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Xt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(s(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Lt),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Xt(){function e(e,t){return t.length-e.length}var t,n,r,a,i,o=[],s=[],u=[],f=[];for(t=0;t<7;t++)n=p([2e3,1]).day(t),r=Fe(this.weekdaysMin(n,"")),a=Fe(this.weekdaysShort(n,"")),i=Fe(this.weekdays(n,"")),o.push(r),s.push(a),u.push(i),f.push(r),f.push(a),f.push(i);o.sort(e),s.sort(e),u.sort(e),f.sort(e),this._weekdaysRegex=new RegExp("^("+f.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Kt(){return this.hours()%12||12}function Zt(){return this.hours()||24}function Jt(e,t){V(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function en(e,t){return t._meridiemParse}function tn(e){return"p"===(e+"").toLowerCase().charAt(0)}V("H",["HH",2],0,"hour"),V("h",["hh",2],0,Kt),V("k",["kk",2],0,Zt),V("hmm",0,0,(function(){return""+Kt.apply(this)+D(this.minutes(),2)})),V("hmmss",0,0,(function(){return""+Kt.apply(this)+D(this.minutes(),2)+D(this.seconds(),2)})),V("Hmm",0,0,(function(){return""+this.hours()+D(this.minutes(),2)})),V("Hmmss",0,0,(function(){return""+this.hours()+D(this.minutes(),2)+D(this.seconds(),2)})),Jt("a",!0),Jt("A",!1),ne("hour","h"),oe("hour",13),Ne("a",en),Ne("A",en),Ne("H",Ee),Ne("h",Ee),Ne("k",Ee),Ne("HH",Ee,ye),Ne("hh",Ee,ye),Ne("kk",Ee,ye),Ne("hmm",Ce),Ne("hmmss",Se),Ne("Hmm",Ce),Ne("Hmmss",Se),Be(["H","HH"],qe),Be(["k","kk"],(function(e,t,n){var r=ce(e);t[qe]=24===r?0:r})),Be(["a","A"],(function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e})),Be(["h","hh"],(function(e,t,n){t[qe]=ce(e),g(n).bigHour=!0})),Be("hmm",(function(e,t,n){var r=e.length-2;t[qe]=ce(e.substr(0,r)),t[Ye]=ce(e.substr(r)),g(n).bigHour=!0})),Be("hmmss",(function(e,t,n){var r=e.length-4,a=e.length-2;t[qe]=ce(e.substr(0,r)),t[Ye]=ce(e.substr(r,2)),t[Qe]=ce(e.substr(a)),g(n).bigHour=!0})),Be("Hmm",(function(e,t,n){var r=e.length-2;t[qe]=ce(e.substr(0,r)),t[Ye]=ce(e.substr(r))})),Be("Hmmss",(function(e,t,n){var r=e.length-4,a=e.length-2;t[qe]=ce(e.substr(0,r)),t[Ye]=ce(e.substr(r,2)),t[Qe]=ce(e.substr(a))}));var nn=/[ap]\.?m?\.?/i,rn=le("Hours",!0);function an(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"}var on,sn={calendar:M,longDateFormat:W,invalidDate:Y,ordinal:$,dayOfMonthOrdinalParse:X,relativeTime:Z,months:et,monthsShort:tt,week:kt,weekdays:Mt,weekdaysMin:Dt,weekdaysShort:Nt,meridiemParse:nn},un={},fn={};function cn(e,t){var n,r=Math.min(e.length,t.length);for(n=0;n0;){if(r=pn(a.slice(0,t).join("-")))return r;if(n&&n.length>=t&&cn(a,n)>=t-1)break;t--}i++}return on}function hn(e){return null!=e.match("^[^/\\\\]*$")}function pn(t){var n=null;if(void 0===un[t]&&e&&e.exports&&hn(t))try{n=on._abbr,Object(function(){var e=new Error("Cannot find module 'undefined'");throw e.code="MODULE_NOT_FOUND",e}()),mn(n)}catch(r){un[t]=null}return un[t]}function mn(e,t){var n;return e&&((n=f(t)?yn(e):gn(e,t))?on=n:"undefined"!==typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),on._abbr}function gn(e,t){if(null!==t){var n,r=sn;if(t.abbr=e,null!=un[e])O("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=un[e]._config;else if(null!=t.parentLocale)if(null!=un[t.parentLocale])r=un[t.parentLocale]._config;else{if(null==(n=pn(t.parentLocale)))return fn[t.parentLocale]||(fn[t.parentLocale]=[]),fn[t.parentLocale].push({name:e,config:t}),null;r=n._config}return un[e]=new R(P(r,t)),fn[e]&&fn[e].forEach((function(e){gn(e.name,e.config)})),mn(e),un[e]}return delete un[e],null}function vn(e,t){if(null!=t){var n,r,a=sn;null!=un[e]&&null!=un[e].parentLocale?un[e].set(P(un[e]._config,t)):(null!=(r=pn(e))&&(a=r._config),t=P(a,t),null==r&&(t.abbr=e),(n=new R(t)).parentLocale=un[e],un[e]=n),mn(e)}else null!=un[e]&&(null!=un[e].parentLocale?(un[e]=un[e].parentLocale,e===mn()&&mn(e)):null!=un[e]&&delete un[e]);return un[e]}function yn(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return on;if(!i(e)){if(t=pn(e))return t;e=[e]}return dn(e)}function bn(){return x(un)}function wn(e){var t,n=e._a;return n&&-2===g(e).overflow&&(t=n[Ge]<0||n[Ge]>11?Ge:n[We]<1||n[We]>Je(n[He],n[Ge])?We:n[qe]<0||n[qe]>24||24===n[qe]&&(0!==n[Ye]||0!==n[Qe]||0!==n[$e])?qe:n[Ye]<0||n[Ye]>59?Ye:n[Qe]<0||n[Qe]>59?Qe:n[$e]<0||n[$e]>999?$e:-1,g(e)._overflowDayOfYear&&(tWe)&&(t=We),g(e)._overflowWeeks&&-1===t&&(t=Xe),g(e)._overflowWeekday&&-1===t&&(t=Ke),g(e).overflow=t),e}var _n=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,En=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Cn=/Z|[+-]\d\d(?::?\d\d)?/,Sn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],kn=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],xn=/^\/?Date\((-?\d+)/i,An=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,On={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Tn(e){var t,n,r,a,i,o,s=e._i,u=_n.exec(s)||En.exec(s),f=Sn.length,c=kn.length;if(u){for(g(e).iso=!0,t=0,n=f;tmt(i)||0===e._dayOfYear)&&(g(e)._overflowDayOfYear=!0),n=bt(i,0,e._dayOfYear),e._a[Ge]=n.getUTCMonth(),e._a[We]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=o[t]=r[t];for(;t<7;t++)e._a[t]=o[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[qe]&&0===e._a[Ye]&&0===e._a[Qe]&&0===e._a[$e]&&(e._nextDay=!0,e._a[qe]=0),e._d=(e._useUTC?bt:yt).apply(null,o),a=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[qe]=24),e._w&&"undefined"!==typeof e._w.d&&e._w.d!==a&&(g(e).weekdayMismatch=!0)}}function Vn(e){var t,n,r,a,i,o,s,u,f;null!=(t=e._w).GG||null!=t.W||null!=t.E?(i=1,o=4,n=Fn(t.GG,e._a[He],Et($n(),1,4).year),r=Fn(t.W,1),((a=Fn(t.E,1))<1||a>7)&&(u=!0)):(i=e._locale._week.dow,o=e._locale._week.doy,f=Et($n(),i,o),n=Fn(t.gg,e._a[He],f.year),r=Fn(t.w,f.week),null!=t.d?((a=t.d)<0||a>6)&&(u=!0):null!=t.e?(a=t.e+i,(t.e<0||t.e>6)&&(u=!0)):a=i),r<1||r>Ct(n,i,o)?g(e)._overflowWeeks=!0:null!=u?g(e)._overflowWeekday=!0:(s=_t(n,r,a,i,o),e._a[He]=s.year,e._dayOfYear=s.dayOfYear)}function Un(e){if(e._f!==r.ISO_8601)if(e._f!==r.RFC_2822){e._a=[],g(e).empty=!0;var t,n,a,i,o,s,u,f=""+e._i,c=f.length,l=0;for(u=(a=G(e._f,e._locale).match(j)||[]).length,t=0;t0&&g(e).unusedInput.push(o),f=f.slice(f.indexOf(n)+n.length),l+=n.length),B[i]?(n?g(e).empty=!1:g(e).unusedTokens.push(i),Ue(i,n,e)):e._strict&&!n&&g(e).unusedTokens.push(i);g(e).charsLeftOver=c-l,f.length>0&&g(e).unusedInput.push(f),e._a[qe]<=12&&!0===g(e).bigHour&&e._a[qe]>0&&(g(e).bigHour=void 0),g(e).parsedDateParts=e._a.slice(0),g(e).meridiem=e._meridiem,e._a[qe]=zn(e._locale,e._a[qe],e._meridiem),null!==(s=g(e).era)&&(e._a[He]=e._locale.erasConvertYear(s,e._a[He])),Bn(e),wn(e)}else Dn(e);else Tn(e)}function zn(e,t,n){var r;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((r=e.isPM(n))&&t<12&&(t+=12),r||12!==t||(t=0),t):t}function Hn(e){var t,n,r,a,i,o,s=!1,u=e._f.length;if(0===u)return g(e).invalidFormat=!0,void(e._d=new Date(NaN));for(a=0;athis?this:e:y()}));function Zn(e,t){var n,r;if(1===t.length&&i(t[0])&&(t=t[0]),!t.length)return $n();for(n=t[0],r=1;rthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Er(){if(!f(this._isDSTShifted))return this._isDSTShifted;var e,t={};return _(t,this),(t=qn(t))._a?(e=t._isUTC?p(t._a):$n(t._a),this._isDSTShifted=this.isValid()&&fr(t._a,e.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function Cr(){return!!this.isValid()&&!this._isUTC}function Sr(){return!!this.isValid()&&this._isUTC}function kr(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var xr=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Ar=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Or(e,t){var n,r,a,i=e,o=null;return sr(e)?i={ms:e._milliseconds,d:e._days,M:e._months}:c(e)||!isNaN(+e)?(i={},t?i[t]=+e:i.milliseconds=+e):(o=xr.exec(e))?(n="-"===o[1]?-1:1,i={y:0,d:ce(o[We])*n,h:ce(o[qe])*n,m:ce(o[Ye])*n,s:ce(o[Qe])*n,ms:ce(ur(1e3*o[$e]))*n}):(o=Ar.exec(e))?(n="-"===o[1]?-1:1,i={y:Tr(o[2],n),M:Tr(o[3],n),w:Tr(o[4],n),d:Tr(o[5],n),h:Tr(o[6],n),m:Tr(o[7],n),s:Tr(o[8],n)}):null==i?i={}:"object"===typeof i&&("from"in i||"to"in i)&&(a=Pr($n(i.from),$n(i.to)),(i={}).ms=a.milliseconds,i.M=a.months),r=new or(i),sr(e)&&s(e,"_locale")&&(r._locale=e._locale),sr(e)&&s(e,"_isValid")&&(r._isValid=e._isValid),r}function Tr(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Ir(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function Pr(e,t){var n;return e.isValid()&&t.isValid()?(t=hr(t,e),e.isBefore(t)?n=Ir(e,t):((n=Ir(t,e)).milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function Rr(e,t){return function(n,r){var a;return null===r||isNaN(+r)||(O(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),a=n,n=r,r=a),Mr(this,Or(n,r),e),this}}function Mr(e,t,n,a){var i=t._milliseconds,o=ur(t._days),s=ur(t._months);e.isValid()&&(a=null==a||a,s&&ft(e,de(e,"Month")+s*n),o&&he(e,"Date",de(e,"Date")+o*n),i&&e._d.setTime(e._d.valueOf()+i*n),a&&r.updateOffset(e,o||s))}Or.fn=or.prototype,Or.invalid=ir;var Nr=Rr(1,"add"),Dr=Rr(-1,"subtract");function jr(e){return"string"===typeof e||e instanceof String}function Fr(e){return C(e)||l(e)||jr(e)||c(e)||Br(e)||Lr(e)||null===e||void 0===e}function Lr(e){var t,n,r=o(e)&&!u(e),a=!1,i=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],f=i.length;for(t=0;tn.valueOf():n.valueOf()9999?H(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):T(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",H(n,"Z")):H(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function ea(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,n,r,a="moment",i="";return this.isLocal()||(a=0===this.utcOffset()?"moment.utc":"moment.parseZone",i="Z"),e="["+a+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n="-MM-DD[T]HH:mm:ss.SSS",r=i+'[")]',this.format(e+t+n+r)}function ta(e){e||(e=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var t=H(this,e);return this.localeData().postformat(t)}function na(e,t){return this.isValid()&&(C(e)&&e.isValid()||$n(e).isValid())?Or({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function ra(e){return this.from($n(),e)}function aa(e,t){return this.isValid()&&(C(e)&&e.isValid()||$n(e).isValid())?Or({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function ia(e){return this.to($n(),e)}function oa(e){var t;return void 0===e?this._locale._abbr:(null!=(t=yn(e))&&(this._locale=t),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var sa=k("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(e){return void 0===e?this.localeData():this.locale(e)}));function ua(){return this._locale}var fa=1e3,ca=60*fa,la=60*ca,da=3506328*la;function ha(e,t){return(e%t+t)%t}function pa(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-da:new Date(e,t,n).valueOf()}function ma(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-da:Date.UTC(e,t,n)}function ga(e){var t,n;if(void 0===(e=re(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?ma:pa,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=ha(t+(this._isUTC?0:this.utcOffset()*ca),la);break;case"minute":t=this._d.valueOf(),t-=ha(t,ca);break;case"second":t=this._d.valueOf(),t-=ha(t,fa)}return this._d.setTime(t),r.updateOffset(this,!0),this}function va(e){var t,n;if(void 0===(e=re(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?ma:pa,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=la-ha(t+(this._isUTC?0:this.utcOffset()*ca),la)-1;break;case"minute":t=this._d.valueOf(),t+=ca-ha(t,ca)-1;break;case"second":t=this._d.valueOf(),t+=fa-ha(t,fa)-1}return this._d.setTime(t),r.updateOffset(this,!0),this}function ya(){return this._d.valueOf()-6e4*(this._offset||0)}function ba(){return Math.floor(this.valueOf()/1e3)}function wa(){return new Date(this.valueOf())}function _a(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function Ea(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function Ca(){return this.isValid()?this.toISOString():null}function Sa(){return v(this)}function ka(){return h({},g(this))}function xa(){return g(this).overflow}function Aa(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Oa(e,t){var n,a,i,o=this._eras||yn("en")._eras;for(n=0,a=o.length;n=0)return u[r]}function Ia(e,t){var n=e.since<=e.until?1:-1;return void 0===t?r(e.since).year():r(e.since).year()+(t-e.offset)*n}function Pa(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;e(i=Ct(e,r,a))&&(t=i),Ka.call(this,e,t,n,r,a))}function Ka(e,t,n,r,a){var i=_t(e,t,n,r,a),o=bt(i.year,0,i.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}function Za(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)}V("N",0,0,"eraAbbr"),V("NN",0,0,"eraAbbr"),V("NNN",0,0,"eraAbbr"),V("NNNN",0,0,"eraName"),V("NNNNN",0,0,"eraNarrow"),V("y",["y",1],"yo","eraYear"),V("y",["yy",2],0,"eraYear"),V("y",["yyy",3],0,"eraYear"),V("y",["yyyy",4],0,"eraYear"),Ne("N",La),Ne("NN",La),Ne("NNN",La),Ne("NNNN",Ba),Ne("NNNNN",Va),Be(["N","NN","NNN","NNNN","NNNNN"],(function(e,t,n,r){var a=n._locale.erasParse(e,r,n._strict);a?g(n).era=a:g(n).invalidEra=e})),Ne("y",Oe),Ne("yy",Oe),Ne("yyy",Oe),Ne("yyyy",Oe),Ne("yo",Ua),Be(["y","yy","yyy","yyyy"],He),Be(["yo"],(function(e,t,n,r){var a;n._locale._eraYearOrdinalRegex&&(a=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[He]=n._locale.eraYearOrdinalParse(e,a):t[He]=parseInt(e,10)})),V(0,["gg",2],0,(function(){return this.weekYear()%100})),V(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),Ha("gggg","weekYear"),Ha("ggggg","weekYear"),Ha("GGGG","isoWeekYear"),Ha("GGGGG","isoWeekYear"),ne("weekYear","gg"),ne("isoWeekYear","GG"),oe("weekYear",1),oe("isoWeekYear",1),Ne("G",Te),Ne("g",Te),Ne("GG",Ee,ye),Ne("gg",Ee,ye),Ne("GGGG",xe,we),Ne("gggg",xe,we),Ne("GGGGG",Ae,_e),Ne("ggggg",Ae,_e),Ve(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,n,r){t[r.substr(0,2)]=ce(e)})),Ve(["gg","GG"],(function(e,t,n,a){t[a]=r.parseTwoDigitYear(e)})),V("Q",0,"Qo","quarter"),ne("quarter","Q"),oe("quarter",7),Ne("Q",ve),Be("Q",(function(e,t){t[Ge]=3*(ce(e)-1)})),V("D",["DD",2],"Do","date"),ne("date","D"),oe("date",9),Ne("D",Ee),Ne("DD",Ee,ye),Ne("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),Be(["D","DD"],We),Be("Do",(function(e,t){t[We]=ce(e.match(Ee)[0])}));var Ja=le("Date",!0);function ei(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")}V("DDD",["DDDD",3],"DDDo","dayOfYear"),ne("dayOfYear","DDD"),oe("dayOfYear",4),Ne("DDD",ke),Ne("DDDD",be),Be(["DDD","DDDD"],(function(e,t,n){n._dayOfYear=ce(e)})),V("m",["mm",2],0,"minute"),ne("minute","m"),oe("minute",14),Ne("m",Ee),Ne("mm",Ee,ye),Be(["m","mm"],Ye);var ti=le("Minutes",!1);V("s",["ss",2],0,"second"),ne("second","s"),oe("second",15),Ne("s",Ee),Ne("ss",Ee,ye),Be(["s","ss"],Qe);var ni,ri,ai=le("Seconds",!1);for(V("S",0,0,(function(){return~~(this.millisecond()/100)})),V(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),V(0,["SSS",3],0,"millisecond"),V(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),V(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),V(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),V(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),V(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),V(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),ne("millisecond","ms"),oe("millisecond",16),Ne("S",ke,ve),Ne("SS",ke,ye),Ne("SSS",ke,be),ni="SSSS";ni.length<=9;ni+="S")Ne(ni,Oe);function ii(e,t){t[$e]=ce(1e3*("0."+e))}for(ni="S";ni.length<=9;ni+="S")Be(ni,ii);function oi(){return this._isUTC?"UTC":""}function si(){return this._isUTC?"Coordinated Universal Time":""}ri=le("Milliseconds",!1),V("z",0,0,"zoneAbbr"),V("zz",0,0,"zoneName");var ui=E.prototype;function fi(e){return $n(1e3*e)}function ci(){return $n.apply(null,arguments).parseZone()}function li(e){return e}ui.add=Nr,ui.calendar=zr,ui.clone=Hr,ui.diff=Xr,ui.endOf=va,ui.format=ta,ui.from=na,ui.fromNow=ra,ui.to=aa,ui.toNow=ia,ui.get=pe,ui.invalidAt=xa,ui.isAfter=Gr,ui.isBefore=Wr,ui.isBetween=qr,ui.isSame=Yr,ui.isSameOrAfter=Qr,ui.isSameOrBefore=$r,ui.isValid=Sa,ui.lang=sa,ui.locale=oa,ui.localeData=ua,ui.max=Kn,ui.min=Xn,ui.parsingFlags=ka,ui.set=me,ui.startOf=ga,ui.subtract=Dr,ui.toArray=_a,ui.toObject=Ea,ui.toDate=wa,ui.toISOString=Jr,ui.inspect=ea,"undefined"!==typeof Symbol&&null!=Symbol.for&&(ui[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),ui.toJSON=Ca,ui.toString=Zr,ui.unix=ba,ui.valueOf=ya,ui.creationData=Aa,ui.eraName=Pa,ui.eraNarrow=Ra,ui.eraAbbr=Ma,ui.eraYear=Na,ui.year=gt,ui.isLeapYear=vt,ui.weekYear=Ga,ui.isoWeekYear=Wa,ui.quarter=ui.quarters=Za,ui.month=ct,ui.daysInMonth=lt,ui.week=ui.weeks=Ot,ui.isoWeek=ui.isoWeeks=Tt,ui.weeksInYear=Qa,ui.weeksInWeekYear=$a,ui.isoWeeksInYear=qa,ui.isoWeeksInISOWeekYear=Ya,ui.date=Ja,ui.day=ui.days=Gt,ui.weekday=Wt,ui.isoWeekday=qt,ui.dayOfYear=ei,ui.hour=ui.hours=rn,ui.minute=ui.minutes=ti,ui.second=ui.seconds=ai,ui.millisecond=ui.milliseconds=ri,ui.utcOffset=mr,ui.utc=vr,ui.local=yr,ui.parseZone=br,ui.hasAlignedHourOffset=wr,ui.isDST=_r,ui.isLocal=Cr,ui.isUtcOffset=Sr,ui.isUtc=kr,ui.isUTC=kr,ui.zoneAbbr=oi,ui.zoneName=si,ui.dates=k("dates accessor is deprecated. Use date instead.",Ja),ui.months=k("months accessor is deprecated. Use month instead",ct),ui.years=k("years accessor is deprecated. Use year instead",gt),ui.zone=k("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",gr),ui.isDSTShifted=k("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Er);var di=R.prototype;function hi(e,t,n,r){var a=yn(),i=p().set(r,t);return a[n](i,e)}function pi(e,t,n){if(c(e)&&(t=e,e=void 0),e=e||"",null!=t)return hi(e,t,n,"month");var r,a=[];for(r=0;r<12;r++)a[r]=hi(e,r,n,"month");return a}function mi(e,t,n,r){"boolean"===typeof e?(c(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,c(t)&&(n=t,t=void 0),t=t||"");var a,i=yn(),o=e?i._week.dow:0,s=[];if(null!=n)return hi(t,(n+o)%7,r,"day");for(a=0;a<7;a++)s[a]=hi(t,(a+o)%7,r,"day");return s}function gi(e,t){return pi(e,t,"months")}function vi(e,t){return pi(e,t,"monthsShort")}function yi(e,t,n){return mi(e,t,n,"weekdays")}function bi(e,t,n){return mi(e,t,n,"weekdaysShort")}function wi(e,t,n){return mi(e,t,n,"weekdaysMin")}di.calendar=N,di.longDateFormat=q,di.invalidDate=Q,di.ordinal=K,di.preparse=li,di.postformat=li,di.relativeTime=J,di.pastFuture=ee,di.set=I,di.eras=Oa,di.erasParse=Ta,di.erasConvertYear=Ia,di.erasAbbrRegex=ja,di.erasNameRegex=Da,di.erasNarrowRegex=Fa,di.months=it,di.monthsShort=ot,di.monthsParse=ut,di.monthsRegex=ht,di.monthsShortRegex=dt,di.week=St,di.firstDayOfYear=At,di.firstDayOfWeek=xt,di.weekdays=Bt,di.weekdaysMin=Ut,di.weekdaysShort=Vt,di.weekdaysParse=Ht,di.weekdaysRegex=Yt,di.weekdaysShortRegex=Qt,di.weekdaysMinRegex=$t,di.isPM=tn,di.meridiem=an,mn("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===ce(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),r.lang=k("moment.lang is deprecated. Use moment.locale instead.",mn),r.langData=k("moment.langData is deprecated. Use moment.localeData instead.",yn);var _i=Math.abs;function Ei(){var e=this._data;return this._milliseconds=_i(this._milliseconds),this._days=_i(this._days),this._months=_i(this._months),e.milliseconds=_i(e.milliseconds),e.seconds=_i(e.seconds),e.minutes=_i(e.minutes),e.hours=_i(e.hours),e.months=_i(e.months),e.years=_i(e.years),this}function Ci(e,t,n,r){var a=Or(t,n);return e._milliseconds+=r*a._milliseconds,e._days+=r*a._days,e._months+=r*a._months,e._bubble()}function Si(e,t){return Ci(this,e,t,1)}function ki(e,t){return Ci(this,e,t,-1)}function xi(e){return e<0?Math.floor(e):Math.ceil(e)}function Ai(){var e,t,n,r,a,i=this._milliseconds,o=this._days,s=this._months,u=this._data;return i>=0&&o>=0&&s>=0||i<=0&&o<=0&&s<=0||(i+=864e5*xi(Ti(s)+o),o=0,s=0),u.milliseconds=i%1e3,e=fe(i/1e3),u.seconds=e%60,t=fe(e/60),u.minutes=t%60,n=fe(t/60),u.hours=n%24,o+=fe(n/24),s+=a=fe(Oi(o)),o-=xi(Ti(a)),r=fe(s/12),s%=12,u.days=o,u.months=s,u.years=r,this}function Oi(e){return 4800*e/146097}function Ti(e){return 146097*e/4800}function Ii(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;if("month"===(e=re(e))||"quarter"===e||"year"===e)switch(t=this._days+r/864e5,n=this._months+Oi(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Ti(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return 24*t+r/36e5;case"minute":return 1440*t+r/6e4;case"second":return 86400*t+r/1e3;case"millisecond":return Math.floor(864e5*t)+r;default:throw new Error("Unknown unit "+e)}}function Pi(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*ce(this._months/12):NaN}function Ri(e){return function(){return this.as(e)}}var Mi=Ri("ms"),Ni=Ri("s"),Di=Ri("m"),ji=Ri("h"),Fi=Ri("d"),Li=Ri("w"),Bi=Ri("M"),Vi=Ri("Q"),Ui=Ri("y");function zi(){return Or(this)}function Hi(e){return e=re(e),this.isValid()?this[e+"s"]():NaN}function Gi(e){return function(){return this.isValid()?this._data[e]:NaN}}var Wi=Gi("milliseconds"),qi=Gi("seconds"),Yi=Gi("minutes"),Qi=Gi("hours"),$i=Gi("days"),Xi=Gi("months"),Ki=Gi("years");function Zi(){return fe(this.days()/7)}var Ji=Math.round,eo={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function to(e,t,n,r,a){return a.relativeTime(t||1,!!n,e,r)}function no(e,t,n,r){var a=Or(e).abs(),i=Ji(a.as("s")),o=Ji(a.as("m")),s=Ji(a.as("h")),u=Ji(a.as("d")),f=Ji(a.as("M")),c=Ji(a.as("w")),l=Ji(a.as("y")),d=i<=n.ss&&["s",i]||i0,d[4]=r,to.apply(null,d)}function ro(e){return void 0===e?Ji:"function"===typeof e&&(Ji=e,!0)}function ao(e,t){return void 0!==eo[e]&&(void 0===t?eo[e]:(eo[e]=t,"s"===e&&(eo.ss=t-1),!0))}function io(e,t){if(!this.isValid())return this.localeData().invalidDate();var n,r,a=!1,i=eo;return"object"===typeof e&&(t=e,e=!1),"boolean"===typeof e&&(a=e),"object"===typeof t&&(i=Object.assign({},eo,t),null!=t.s&&null==t.ss&&(i.ss=t.s-1)),r=no(this,!a,i,n=this.localeData()),a&&(r=n.pastFuture(+this,r)),n.postformat(r)}var oo=Math.abs;function so(e){return(e>0)-(e<0)||+e}function uo(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n,r,a,i,o,s,u=oo(this._milliseconds)/1e3,f=oo(this._days),c=oo(this._months),l=this.asSeconds();return l?(e=fe(u/60),t=fe(e/60),u%=60,e%=60,n=fe(c/12),c%=12,r=u?u.toFixed(3).replace(/\.?0+$/,""):"",a=l<0?"-":"",i=so(this._months)!==so(l)?"-":"",o=so(this._days)!==so(l)?"-":"",s=so(this._milliseconds)!==so(l)?"-":"",a+"P"+(n?i+n+"Y":"")+(c?i+c+"M":"")+(f?o+f+"D":"")+(t||e||u?"T":"")+(t?s+t+"H":"")+(e?s+e+"M":"")+(u?s+r+"S":"")):"P0D"}var fo=or.prototype;return fo.isValid=ar,fo.abs=Ei,fo.add=Si,fo.subtract=ki,fo.as=Ii,fo.asMilliseconds=Mi,fo.asSeconds=Ni,fo.asMinutes=Di,fo.asHours=ji,fo.asDays=Fi,fo.asWeeks=Li,fo.asMonths=Bi,fo.asQuarters=Vi,fo.asYears=Ui,fo.valueOf=Pi,fo._bubble=Ai,fo.clone=zi,fo.get=Hi,fo.milliseconds=Wi,fo.seconds=qi,fo.minutes=Yi,fo.hours=Qi,fo.days=$i,fo.weeks=Zi,fo.months=Xi,fo.years=Ki,fo.humanize=io,fo.toISOString=uo,fo.toString=uo,fo.toJSON=uo,fo.locale=oa,fo.localeData=ua,fo.toIsoString=k("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",uo),fo.lang=sa,V("X",0,0,"unix"),V("x",0,0,"valueOf"),Ne("x",Te),Ne("X",Re),Be("X",(function(e,t,n){n._d=new Date(1e3*parseFloat(e))})),Be("x",(function(e,t,n){n._d=new Date(ce(e))})),r.version="2.29.4",a($n),r.fn=ui,r.min=Jn,r.max=er,r.now=tr,r.utc=p,r.unix=fi,r.months=gi,r.isDate=l,r.locale=mn,r.invalid=y,r.duration=Or,r.isMoment=C,r.weekdays=yi,r.parseZone=ci,r.localeData=yn,r.isDuration=sr,r.monthsShort=vi,r.weekdaysMin=wi,r.defineLocale=gn,r.updateLocale=vn,r.locales=bn,r.weekdaysShort=bi,r.normalizeUnits=re,r.relativeTimeRounding=ro,r.relativeTimeThreshold=ao,r.calendarFormat=Ur,r.prototype=ui,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r}()},1386:(e,t,n)=>{"use strict";n.d(t,{dP:()=>O,re:()=>P});var r=n(3819),a=n(3135);function i(){}var o,s=function(){function e(e,t){void 0===e&&(e=1/0),void 0===t&&(t=i),this.max=e,this.dispose=t,this.map=new Map,this.newest=null,this.oldest=null}return e.prototype.has=function(e){return this.map.has(e)},e.prototype.get=function(e){var t=this.getNode(e);return t&&t.value},e.prototype.getNode=function(e){var t=this.map.get(e);if(t&&t!==this.newest){var n=t.older,r=t.newer;r&&(r.older=n),n&&(n.newer=r),t.older=this.newest,t.older.newer=t,t.newer=null,this.newest=t,t===this.oldest&&(this.oldest=r)}return t},e.prototype.set=function(e,t){var n=this.getNode(e);return n?n.value=t:(n={key:e,value:t,newer:null,older:this.newest},this.newest&&(this.newest.newer=n),this.newest=n,this.oldest=this.oldest||n,this.map.set(e,n),n.value)},e.prototype.clean=function(){for(;this.oldest&&this.map.size>this.max;)this.delete(this.oldest.key)},e.prototype.delete=function(e){var t=this.map.get(e);return!!t&&(t===this.newest&&(this.newest=t.older),t===this.oldest&&(this.oldest=t.newer),t.newer&&(t.newer.older=t.older),t.older&&(t.older.newer=t.newer),this.map.delete(e),this.dispose(t.value,e),!0)},e}(),u=new a.g7,f=Object.prototype.hasOwnProperty,c=void 0===(o=Array.from)?function(e){var t=[];return e.forEach((function(e){return t.push(e)})),t}:o;function l(e){var t=e.unsubscribe;"function"===typeof t&&(e.unsubscribe=void 0,t())}var d=[];function h(e,t){if(!e)throw new Error(t||"assertion failure")}function p(e){switch(e.length){case 0:throw new Error("unknown value");case 1:return e[0];case 2:throw e[1]}}var m=function(){function e(t){this.fn=t,this.parents=new Set,this.childValues=new Map,this.dirtyChildren=null,this.dirty=!0,this.recomputing=!1,this.value=[],this.deps=null,++e.count}return e.prototype.peek=function(){if(1===this.value.length&&!y(this))return g(this),this.value[0]},e.prototype.recompute=function(e){return h(!this.recomputing,"already recomputing"),g(this),y(this)?function(e,t){k(e),u.withValue(e,v,[e,t]),function(e,t){if("function"===typeof e.subscribe)try{l(e),e.unsubscribe=e.subscribe.apply(null,t)}catch(n){return e.setDirty(),!1}return!0}(e,t)&&function(e){if(e.dirty=!1,y(e))return;w(e)}(e);return p(e.value)}(this,e):p(this.value)},e.prototype.setDirty=function(){this.dirty||(this.dirty=!0,this.value.length=0,b(this),l(this))},e.prototype.dispose=function(){var e=this;this.setDirty(),k(this),_(this,(function(t,n){t.setDirty(),x(t,e)}))},e.prototype.forget=function(){this.dispose()},e.prototype.dependOn=function(e){e.add(this),this.deps||(this.deps=d.pop()||new Set),this.deps.add(e)},e.prototype.forgetDeps=function(){var e=this;this.deps&&(c(this.deps).forEach((function(t){return t.delete(e)})),this.deps.clear(),d.push(this.deps),this.deps=null)},e.count=0,e}();function g(e){var t=u.getValue();if(t)return e.parents.add(t),t.childValues.has(e)||t.childValues.set(e,[]),y(e)?E(t,e):C(t,e),t}function v(e,t){e.recomputing=!0,e.value.length=0;try{e.value[0]=e.fn.apply(null,t)}catch(n){e.value[1]=n}e.recomputing=!1}function y(e){return e.dirty||!(!e.dirtyChildren||!e.dirtyChildren.size)}function b(e){_(e,E)}function w(e){_(e,C)}function _(e,t){var n=e.parents.size;if(n)for(var r=c(e.parents),a=0;a0&&n===t.length&&e[n-1]===t[n-1]}(n,t.value)||e.setDirty(),S(e,t),y(e)||w(e)}function S(e,t){var n=e.dirtyChildren;n&&(n.delete(t),0===n.size&&(d.length<100&&d.push(n),e.dirtyChildren=null))}function k(e){e.childValues.size>0&&e.childValues.forEach((function(t,n){x(e,n)})),e.forgetDeps(),h(null===e.dirtyChildren)}function x(e,t){t.parents.delete(e),e.childValues.delete(t),S(e,t)}var A={setDirty:!0,dispose:!0,forget:!0};function O(e){var t=new Map,n=e&&e.subscribe;function r(e){var r=u.getValue();if(r){var a=t.get(e);a||t.set(e,a=new Set),r.dependOn(a),"function"===typeof n&&(l(a),a.unsubscribe=n(e))}}return r.dirty=function(e,n){var r=t.get(e);if(r){var a=n&&f.call(A,n)?n:"setDirty";c(r).forEach((function(e){return e[a]()})),t.delete(e),l(r)}},r}function T(){var e=new r.B("function"===typeof WeakMap);return function(){return e.lookupArray(arguments)}}T();var I=new Set;function P(e,t){void 0===t&&(t=Object.create(null));var n=new s(t.max||Math.pow(2,16),(function(e){return e.dispose()})),r=t.keyArgs,a=t.makeCacheKey||T(),i=function(){var i=a.apply(null,r?r.apply(null,arguments):arguments);if(void 0===i)return e.apply(null,arguments);var o=n.get(i);o||(n.set(i,o=new m(e)),o.subscribe=t.subscribe,o.forget=function(){return n.delete(i)});var s=o.recompute(Array.prototype.slice.call(arguments));return n.set(i,o),I.add(n),u.hasValue()||(I.forEach((function(e){return e.clean()})),I.clear()),s};function o(e){var t=n.get(e);t&&t.setDirty()}function f(e){var t=n.get(e);if(t)return t.peek()}function c(e){return n.delete(e)}return Object.defineProperty(i,"size",{get:function(){return n.map.size},configurable:!1,enumerable:!1}),i.dirtyKey=o,i.dirty=function(){o(a.apply(null,arguments))},i.peekKey=f,i.peek=function(){return f(a.apply(null,arguments))},i.forgetKey=c,i.forget=function(){return c(a.apply(null,arguments))},i.makeCacheKey=a,i.getKey=r?function(){return a.apply(null,r.apply(null,arguments))}:a,Object.freeze(i)}},2758:e=>{"use strict";function t(e){this._maxSize=e,this.clear()}t.prototype.clear=function(){this._size=0,this._values=Object.create(null)},t.prototype.get=function(e){return this._values[e]},t.prototype.set=function(e,t){return this._size>=this._maxSize&&this.clear(),e in this._values||this._size++,this._values[e]=t};var n=/[^.^\]^[]+|(?=\[\]|\.\.)/g,r=/^\d+$/,a=/^\d/,i=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,o=/^\s*(['"]?)(.*?)(\1)\s*$/,s=new t(512),u=new t(512),f=new t(512);function c(e){return s.get(e)||s.set(e,l(e).map((function(e){return e.replace(o,"$2")})))}function l(e){return e.match(n)||[""]}function d(e){return"string"===typeof e&&e&&-1!==["'",'"'].indexOf(e.charAt(0))}function h(e){return!d(e)&&(function(e){return e.match(a)&&!e.match(r)}(e)||function(e){return i.test(e)}(e))}e.exports={Cache:t,split:l,normalizePath:c,setter:function(e){var t=c(e);return u.get(e)||u.set(e,(function(e,n){for(var r=0,a=t.length,i=e;r{"use strict";var n="function"===typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,i=n?Symbol.for("react.fragment"):60107,o=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,u=n?Symbol.for("react.provider"):60109,f=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,l=n?Symbol.for("react.concurrent_mode"):60111,d=n?Symbol.for("react.forward_ref"):60112,h=n?Symbol.for("react.suspense"):60113,p=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,y=n?Symbol.for("react.fundamental"):60117,b=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function _(e){if("object"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case l:case i:case s:case o:case h:return e;default:switch(e=e&&e.$$typeof){case f:case d:case g:case m:case u:return e;default:return t}}case a:return t}}}function E(e){return _(e)===l}t.isFragment=function(e){return _(e)===i},t.isMemo=function(e){return _(e)===m}},3873:(e,t,n)=>{"use strict";e.exports=n(4501)},4463:(e,t,n)=>{"use strict";var r=n(2791),a=n(5296);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n